; LLVM IR from niuyishuai/PDCABB :: LAPACK_BLAS/LAPACK (dlantp)

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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8

; Function Attrs: nounwind uwtable
define dso_local double @dlantp_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5) #0 {
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i64, align 8
  %14 = alloca i64, align 8
  %15 = alloca double, align 8
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  %18 = alloca double, align 8
  %19 = alloca i64, align 8
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca i64, align 8
  %25 = alloca double, align 8
  store ptr %0, ptr %7, align 8, !tbaa !5
  store ptr %1, ptr %8, align 8, !tbaa !5
  store ptr %2, ptr %9, align 8, !tbaa !5
  store ptr %3, ptr %10, align 8, !tbaa !5
  store ptr %4, ptr %11, align 8, !tbaa !5
  store ptr %5, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #4
  %26 = load ptr, ptr %12, align 8, !tbaa !5
  %27 = getelementptr inbounds double, ptr %26, i32 -1
  store ptr %27, ptr %12, align 8, !tbaa !5
  %28 = load ptr, ptr %11, align 8, !tbaa !5
  %29 = getelementptr inbounds double, ptr %28, i32 -1
  store ptr %29, ptr %11, align 8, !tbaa !5
  %30 = load ptr, ptr %10, align 8, !tbaa !5
  %31 = load i64, ptr %30, align 8, !tbaa !9
  %32 = icmp eq i64 %31, 0
  br i1 %32, label %33, label %34

33:                                               ; preds = %6
  store double 0.000000e+00, ptr %25, align 8, !tbaa !11
  br label %884

34:                                               ; preds = %6
  %35 = load ptr, ptr %7, align 8, !tbaa !5
  %36 = call i64 @lsame_(ptr noundef %35, ptr noundef @.str)
  %37 = icmp ne i64 %36, 0
  br i1 %37, label %38, label %274

38:                                               ; preds = %34
  store i64 1, ptr %21, align 8, !tbaa !9
  %39 = load ptr, ptr %9, align 8, !tbaa !5
  %40 = call i64 @lsame_(ptr noundef %39, ptr noundef @.str.1)
  %41 = icmp ne i64 %40, 0
  br i1 %41, label %42, label %158

42:                                               ; preds = %38
  store double 1.000000e+00, ptr %25, align 8, !tbaa !11
  %43 = load ptr, ptr %8, align 8, !tbaa !5
  %44 = call i64 @lsame_(ptr noundef %43, ptr noundef @.str.1)
  %45 = icmp ne i64 %44, 0
  br i1 %45, label %46, label %98

46:                                               ; preds = %42
  %47 = load ptr, ptr %10, align 8, !tbaa !5
  %48 = load i64, ptr %47, align 8, !tbaa !9
  store i64 %48, ptr %13, align 8, !tbaa !9
  store i64 1, ptr %20, align 8, !tbaa !9
  br label %49

49:                                               ; preds = %94, %46
  %50 = load i64, ptr %20, align 8, !tbaa !9
  %51 = load i64, ptr %13, align 8, !tbaa !9
  %52 = icmp sle i64 %50, %51
  br i1 %52, label %53, label %97

53:                                               ; preds = %49
  %54 = load i64, ptr %21, align 8, !tbaa !9
  %55 = load i64, ptr %20, align 8, !tbaa !9
  %56 = add nsw i64 %54, %55
  %57 = sub nsw i64 %56, 2
  store i64 %57, ptr %14, align 8, !tbaa !9
  %58 = load i64, ptr %21, align 8, !tbaa !9
  store i64 %58, ptr %19, align 8, !tbaa !9
  br label %59

59:                                               ; preds = %87, %53
  %60 = load i64, ptr %19, align 8, !tbaa !9
  %61 = load i64, ptr %14, align 8, !tbaa !9
  %62 = icmp sle i64 %60, %61
  br i1 %62, label %63, label %90

63:                                               ; preds = %59
  %64 = load double, ptr %25, align 8, !tbaa !11
  store double %64, ptr %17, align 8, !tbaa !11
  %65 = load ptr, ptr %11, align 8, !tbaa !5
  %66 = load i64, ptr %19, align 8, !tbaa !9
  %67 = getelementptr inbounds double, ptr %65, i64 %66
  %68 = load double, ptr %67, align 8, !tbaa !11
  store double %68, ptr %16, align 8, !tbaa !11
  %69 = load double, ptr %16, align 8, !tbaa !11
  %70 = fcmp oge double %69, 0.000000e+00
  br i1 %70, label %71, label %73

71:                                               ; preds = %63
  %72 = load double, ptr %16, align 8, !tbaa !11
  br label %76

73:                                               ; preds = %63
  %74 = load double, ptr %16, align 8, !tbaa !11
  %75 = fneg double %74
  br label %76

76:                                               ; preds = %73, %71
  %77 = phi double [ %72, %71 ], [ %75, %73 ]
  store double %77, ptr %18, align 8, !tbaa !11
  %78 = load double, ptr %17, align 8, !tbaa !11
  %79 = load double, ptr %18, align 8, !tbaa !11
  %80 = fcmp oge double %78, %79
  br i1 %80, label %81, label %83

81:                                               ; preds = %76
  %82 = load double, ptr %17, align 8, !tbaa !11
  br label %85

83:                                               ; preds = %76
  %84 = load double, ptr %18, align 8, !tbaa !11
  br label %85

85:                                               ; preds = %83, %81
  %86 = phi double [ %82, %81 ], [ %84, %83 ]
  store double %86, ptr %25, align 8, !tbaa !11
  br label %87

87:                                               ; preds = %85
  %88 = load i64, ptr %19, align 8, !tbaa !9
  %89 = add nsw i64 %88, 1
  store i64 %89, ptr %19, align 8, !tbaa !9
  br label %59, !llvm.loop !13

90:                                               ; preds = %59
  %91 = load i64, ptr %20, align 8, !tbaa !9
  %92 = load i64, ptr %21, align 8, !tbaa !9
  %93 = add nsw i64 %92, %91
  store i64 %93, ptr %21, align 8, !tbaa !9
  br label %94

94:                                               ; preds = %90
  %95 = load i64, ptr %20, align 8, !tbaa !9
  %96 = add nsw i64 %95, 1
  store i64 %96, ptr %20, align 8, !tbaa !9
  br label %49, !llvm.loop !15

97:                                               ; preds = %49
  br label %157

98:                                               ; preds = %42
  %99 = load ptr, ptr %10, align 8, !tbaa !5
  %100 = load i64, ptr %99, align 8, !tbaa !9
  store i64 %100, ptr %13, align 8, !tbaa !9
  store i64 1, ptr %20, align 8, !tbaa !9
  br label %101

101:                                              ; preds = %153, %98
  %102 = load i64, ptr %20, align 8, !tbaa !9
  %103 = load i64, ptr %13, align 8, !tbaa !9
  %104 = icmp sle i64 %102, %103
  br i1 %104, label %105, label %156

105:                                              ; preds = %101
  %106 = load i64, ptr %21, align 8, !tbaa !9
  %107 = load ptr, ptr %10, align 8, !tbaa !5
  %108 = load i64, ptr %107, align 8, !tbaa !9
  %109 = add nsw i64 %106, %108
  %110 = load i64, ptr %20, align 8, !tbaa !9
  %111 = sub nsw i64 %109, %110
  store i64 %111, ptr %14, align 8, !tbaa !9
  %112 = load i64, ptr %21, align 8, !tbaa !9
  %113 = add nsw i64 %112, 1
  store i64 %113, ptr %19, align 8, !tbaa !9
  br label %114

114:                                              ; preds = %142, %105
  %115 = load i64, ptr %19, align 8, !tbaa !9
  %116 = load i64, ptr %14, align 8, !tbaa !9
  %117 = icmp sle i64 %115, %116
  br i1 %117, label %118, label %145

118:                                              ; preds = %114
  %119 = load double, ptr %25, align 8, !tbaa !11
  store double %119, ptr %17, align 8, !tbaa !11
  %120 = load ptr, ptr %11, align 8, !tbaa !5
  %121 = load i64, ptr %19, align 8, !tbaa !9
  %122 = getelementptr inbounds double, ptr %120, i64 %121
  %123 = load double, ptr %122, align 8, !tbaa !11
  store double %123, ptr %16, align 8, !tbaa !11
  %124 = load double, ptr %16, align 8, !tbaa !11
  %125 = fcmp oge double %124, 0.000000e+00
  br i1 %125, label %126, label %128

126:                                              ; preds = %118
  %127 = load double, ptr %16, align 8, !tbaa !11
  br label %131

128:                                              ; preds = %118
  %129 = load double, ptr %16, align 8, !tbaa !11
  %130 = fneg double %129
  br label %131

131:                                              ; preds = %128, %126
  %132 = phi double [ %127, %126 ], [ %130, %128 ]
  store double %132, ptr %18, align 8, !tbaa !11
  %133 = load double, ptr %17, align 8, !tbaa !11
  %134 = load double, ptr %18, align 8, !tbaa !11
  %135 = fcmp oge double %133, %134
  br i1 %135, label %136, label %138

136:                                              ; preds = %131
  %137 = load double, ptr %17, align 8, !tbaa !11
  br label %140

138:                                              ; preds = %131
  %139 = load double, ptr %18, align 8, !tbaa !11
  br label %140

140:                                              ; preds = %138, %136
  %141 = phi double [ %137, %136 ], [ %139, %138 ]
  store double %141, ptr %25, align 8, !tbaa !11
  br label %142

142:                                              ; preds = %140
  %143 = load i64, ptr %19, align 8, !tbaa !9
  %144 = add nsw i64 %143, 1
  store i64 %144, ptr %19, align 8, !tbaa !9
  br label %114, !llvm.loop !16

145:                                              ; preds = %114
  %146 = load i64, ptr %21, align 8, !tbaa !9
  %147 = load ptr, ptr %10, align 8, !tbaa !5
  %148 = load i64, ptr %147, align 8, !tbaa !9
  %149 = add nsw i64 %146, %148
  %150 = load i64, ptr %20, align 8, !tbaa !9
  %151 = sub nsw i64 %149, %150
  %152 = add nsw i64 %151, 1
  store i64 %152, ptr %21, align 8, !tbaa !9
  br label %153

153:                                              ; preds = %145
  %154 = load i64, ptr %20, align 8, !tbaa !9
  %155 = add nsw i64 %154, 1
  store i64 %155, ptr %20, align 8, !tbaa !9
  br label %101, !llvm.loop !17

156:                                              ; preds = %101
  br label %157

157:                                              ; preds = %156, %97
  br label %273

158:                                              ; preds = %38
  store double 0.000000e+00, ptr %25, align 8, !tbaa !11
  %159 = load ptr, ptr %8, align 8, !tbaa !5
  %160 = call i64 @lsame_(ptr noundef %159, ptr noundef @.str.1)
  %161 = icmp ne i64 %160, 0
  br i1 %161, label %162, label %214

162:                                              ; preds = %158
  %163 = load ptr, ptr %10, align 8, !tbaa !5
  %164 = load i64, ptr %163, align 8, !tbaa !9
  store i64 %164, ptr %13, align 8, !tbaa !9
  store i64 1, ptr %20, align 8, !tbaa !9
  br label %165

165:                                              ; preds = %210, %162
  %166 = load i64, ptr %20, align 8, !tbaa !9
  %167 = load i64, ptr %13, align 8, !tbaa !9
  %168 = icmp sle i64 %166, %167
  br i1 %168, label %169, label %213

169:                                              ; preds = %165
  %170 = load i64, ptr %21, align 8, !tbaa !9
  %171 = load i64, ptr %20, align 8, !tbaa !9
  %172 = add nsw i64 %170, %171
  %173 = sub nsw i64 %172, 1
  store i64 %173, ptr %14, align 8, !tbaa !9
  %174 = load i64, ptr %21, align 8, !tbaa !9
  store i64 %174, ptr %19, align 8, !tbaa !9
  br label %175

175:                                              ; preds = %203, %169
  %176 = load i64, ptr %19, align 8, !tbaa !9
  %177 = load i64, ptr %14, align 8, !tbaa !9
  %178 = icmp sle i64 %176, %177
  br i1 %178, label %179, label %206

179:                                              ; preds = %175
  %180 = load double, ptr %25, align 8, !tbaa !11
  store double %180, ptr %17, align 8, !tbaa !11
  %181 = load ptr, ptr %11, align 8, !tbaa !5
  %182 = load i64, ptr %19, align 8, !tbaa !9
  %183 = getelementptr inbounds double, ptr %181, i64 %182
  %184 = load double, ptr %183, align 8, !tbaa !11
  store double %184, ptr %16, align 8, !tbaa !11
  %185 = load double, ptr %16, align 8, !tbaa !11
  %186 = fcmp oge double %185, 0.000000e+00
  br i1 %186, label %187, label %189

187:                                              ; preds = %179
  %188 = load double, ptr %16, align 8, !tbaa !11
  br label %192

189:                                              ; preds = %179
  %190 = load double, ptr %16, align 8, !tbaa !11
  %191 = fneg double %190
  br label %192

192:                                              ; preds = %189, %187
  %193 = phi double [ %188, %187 ], [ %191, %189 ]
  store double %193, ptr %18, align 8, !tbaa !11
  %194 = load double, ptr %17, align 8, !tbaa !11
  %195 = load double, ptr %18, align 8, !tbaa !11
  %196 = fcmp oge double %194, %195
  br i1 %196, label %197, label %199

197:                                              ; preds = %192
  %198 = load double, ptr %17, align 8, !tbaa !11
  br label %201

199:                                              ; preds = %192
  %200 = load double, ptr %18, align 8, !tbaa !11
  br label %201

201:                                              ; preds = %199, %197
  %202 = phi double [ %198, %197 ], [ %200, %199 ]
  store double %202, ptr %25, align 8, !tbaa !11
  br label %203

203:                                              ; preds = %201
  %204 = load i64, ptr %19, align 8, !tbaa !9
  %205 = add nsw i64 %204, 1
  store i64 %205, ptr %19, align 8, !tbaa !9
  br label %175, !llvm.loop !18

206:                                              ; preds = %175
  %207 = load i64, ptr %20, align 8, !tbaa !9
  %208 = load i64, ptr %21, align 8, !tbaa !9
  %209 = add nsw i64 %208, %207
  store i64 %209, ptr %21, align 8, !tbaa !9
  br label %210

210:                                              ; preds = %206
  %211 = load i64, ptr %20, align 8, !tbaa !9
  %212 = add nsw i64 %211, 1
  store i64 %212, ptr %20, align 8, !tbaa !9
  br label %165, !llvm.loop !19

213:                                              ; preds = %165
  br label %272

214:                                              ; preds = %158
  %215 = load ptr, ptr %10, align 8, !tbaa !5
  %216 = load i64, ptr %215, align 8, !tbaa !9
  store i64 %216, ptr %13, align 8, !tbaa !9
  store i64 1, ptr %20, align 8, !tbaa !9
  br label %217

217:                                              ; preds = %268, %214
  %218 = load i64, ptr %20, align 8, !tbaa !9
  %219 = load i64, ptr %13, align 8, !tbaa !9
  %220 = icmp sle i64 %218, %219
  br i1 %220, label %221, label %271

221:                                              ; preds = %217
  %222 = load i64, ptr %21, align 8, !tbaa !9
  %223 = load ptr, ptr %10, align 8, !tbaa !5
  %224 = load i64, ptr %223, align 8, !tbaa !9
  %225 = add nsw i64 %222, %224
  %226 = load i64, ptr %20, align 8, !tbaa !9
  %227 = sub nsw i64 %225, %226
  store i64 %227, ptr %14, align 8, !tbaa !9
  %228 = load i64, ptr %21, align 8, !tbaa !9
  store i64 %228, ptr %19, align 8, !tbaa !9
  br label %229

229:                                              ; preds = %257, %221
  %230 = load i64, ptr %19, align 8, !tbaa !9
  %231 = load i64, ptr %14, align 8, !tbaa !9
  %232 = icmp sle i64 %230, %231
  br i1 %232, label %233, label %260

233:                                              ; preds = %229
  %234 = load double, ptr %25, align 8, !tbaa !11
  store double %234, ptr %17, align 8, !tbaa !11
  %235 = load ptr, ptr %11, align 8, !tbaa !5
  %236 = load i64, ptr %19, align 8, !tbaa !9
  %237 = getelementptr inbounds double, ptr %235, i64 %236
  %238 = load double, ptr %237, align 8, !tbaa !11
  store double %238, ptr %16, align 8, !tbaa !11
  %239 = load double, ptr %16, align 8, !tbaa !11
  %240 = fcmp oge double %239, 0.000000e+00
  br i1 %240, label %241, label %243

241:                                              ; preds = %233
  %242 = load double, ptr %16, align 8, !tbaa !11
  br label %246

243:                                              ; preds = %233
  %244 = load double, ptr %16, align 8, !tbaa !11
  %245 = fneg double %244
  br label %246

246:                                              ; preds = %243, %241
  %247 = phi double [ %242, %241 ], [ %245, %243 ]
  store double %247, ptr %18, align 8, !tbaa !11
  %248 = load double, ptr %17, align 8, !tbaa !11
  %249 = load double, ptr %18, align 8, !tbaa !11
  %250 = fcmp oge double %248, %249
  br i1 %250, label %251, label %253

251:                                              ; preds = %246
  %252 = load double, ptr %17, align 8, !tbaa !11
  br label %255

253:                                              ; preds = %246
  %254 = load double, ptr %18, align 8, !tbaa !11
  br label %255

255:                                              ; preds = %253, %251
  %256 = phi double [ %252, %251 ], [ %254, %253 ]
  store double %256, ptr %25, align 8, !tbaa !11
  br label %257

257:                                              ; preds = %255
  %258 = load i64, ptr %19, align 8, !tbaa !9
  %259 = add nsw i64 %258, 1
  store i64 %259, ptr %19, align 8, !tbaa !9
  br label %229, !llvm.loop !20

260:                                              ; preds = %229
  %261 = load i64, ptr %21, align 8, !tbaa !9
  %262 = load ptr, ptr %10, align 8, !tbaa !5
  %263 = load i64, ptr %262, align 8, !tbaa !9
  %264 = add nsw i64 %261, %263
  %265 = load i64, ptr %20, align 8, !tbaa !9
  %266 = sub nsw i64 %264, %265
  %267 = add nsw i64 %266, 1
  store i64 %267, ptr %21, align 8, !tbaa !9
  br label %268

268:                                              ; preds = %260
  %269 = load i64, ptr %20, align 8, !tbaa !9
  %270 = add nsw i64 %269, 1
  store i64 %270, ptr %20, align 8, !tbaa !9
  br label %217, !llvm.loop !21

271:                                              ; preds = %217
  br label %272

272:                                              ; preds = %271, %213
  br label %273

273:                                              ; preds = %272, %157
  br label %883

274:                                              ; preds = %34
  %275 = load ptr, ptr %7, align 8, !tbaa !5
  %276 = call i64 @lsame_(ptr noundef %275, ptr noundef @.str.2)
  %277 = icmp ne i64 %276, 0
  br i1 %277, label %283, label %278

278:                                              ; preds = %274
  %279 = load ptr, ptr %7, align 8, !tbaa !5
  %280 = load i8, ptr %279, align 1, !tbaa !22
  %281 = zext i8 %280 to i32
  %282 = icmp eq i32 %281, 49
  br i1 %282, label %283, label %473

283:                                              ; preds = %278, %274
  store double 0.000000e+00, ptr %25, align 8, !tbaa !11
  store i64 1, ptr %21, align 8, !tbaa !9
  %284 = load ptr, ptr %9, align 8, !tbaa !5
  %285 = call i64 @lsame_(ptr noundef %284, ptr noundef @.str.1)
  store i64 %285, ptr %24, align 8, !tbaa !9
  %286 = load ptr, ptr %8, align 8, !tbaa !5
  %287 = call i64 @lsame_(ptr noundef %286, ptr noundef @.str.1)
  %288 = icmp ne i64 %287, 0
  br i1 %288, label %289, label %376

289:                                              ; preds = %283
  %290 = load ptr, ptr %10, align 8, !tbaa !5
  %291 = load i64, ptr %290, align 8, !tbaa !9
  store i64 %291, ptr %13, align 8, !tbaa !9
  store i64 1, ptr %20, align 8, !tbaa !9
  br label %292

292:                                              ; preds = %372, %289
  %293 = load i64, ptr %20, align 8, !tbaa !9
  %294 = load i64, ptr %13, align 8, !tbaa !9
  %295 = icmp sle i64 %293, %294
  br i1 %295, label %296, label %375

296:                                              ; preds = %292
  %297 = load i64, ptr %24, align 8, !tbaa !9
  %298 = icmp ne i64 %297, 0
  br i1 %298, label %299, label %329

299:                                              ; preds = %296
  store double 1.000000e+00, ptr %22, align 8, !tbaa !11
  %300 = load i64, ptr %21, align 8, !tbaa !9
  %301 = load i64, ptr %20, align 8, !tbaa !9
  %302 = add nsw i64 %300, %301
  %303 = sub nsw i64 %302, 2
  store i64 %303, ptr %14, align 8, !tbaa !9
  %304 = load i64, ptr %21, align 8, !tbaa !9
  store i64 %304, ptr %19, align 8, !tbaa !9
  br label %305

305:                                              ; preds = %325, %299
  %306 = load i64, ptr %19, align 8, !tbaa !9
  %307 = load i64, ptr %14, align 8, !tbaa !9
  %308 = icmp sle i64 %306, %307
  br i1 %308, label %309, label %328

309:                                              ; preds = %305
  %310 = load ptr, ptr %11, align 8, !tbaa !5
  %311 = load i64, ptr %19, align 8, !tbaa !9
  %312 = getelementptr inbounds double, ptr %310, i64 %311
  %313 = load double, ptr %312, align 8, !tbaa !11
  store double %313, ptr %16, align 8, !tbaa !11
  %314 = load double, ptr %16, align 8, !tbaa !11
  %315 = fcmp oge double %314, 0.000000e+00
  br i1 %315, label %316, label %318

316:                                              ; preds = %309
  %317 = load double, ptr %16, align 8, !tbaa !11
  br label %321

318:                                              ; preds = %309
  %319 = load double, ptr %16, align 8, !tbaa !11
  %320 = fneg double %319
  br label %321

321:                                              ; preds = %318, %316
  %322 = phi double [ %317, %316 ], [ %320, %318 ]
  %323 = load double, ptr %22, align 8, !tbaa !11
  %324 = fadd double %323, %322
  store double %324, ptr %22, align 8, !tbaa !11
  br label %325

325:                                              ; preds = %321
  %326 = load i64, ptr %19, align 8, !tbaa !9
  %327 = add nsw i64 %326, 1
  store i64 %327, ptr %19, align 8, !tbaa !9
  br label %305, !llvm.loop !23

328:                                              ; preds = %305
  br label %359

329:                                              ; preds = %296
  store double 0.000000e+00, ptr %22, align 8, !tbaa !11
  %330 = load i64, ptr %21, align 8, !tbaa !9
  %331 = load i64, ptr %20, align 8, !tbaa !9
  %332 = add nsw i64 %330, %331
  %333 = sub nsw i64 %332, 1
  store i64 %333, ptr %14, align 8, !tbaa !9
  %334 = load i64, ptr %21, align 8, !tbaa !9
  store i64 %334, ptr %19, align 8, !tbaa !9
  br label %335

335:                                              ; preds = %355, %329
  %336 = load i64, ptr %19, align 8, !tbaa !9
  %337 = load i64, ptr %14, align 8, !tbaa !9
  %338 = icmp sle i64 %336, %337
  br i1 %338, label %339, label %358

339:                                              ; preds = %335
  %340 = load ptr, ptr %11, align 8, !tbaa !5
  %341 = load i64, ptr %19, align 8, !tbaa !9
  %342 = getelementptr inbounds double, ptr %340, i64 %341
  %343 = load double, ptr %342, align 8, !tbaa !11
  store double %343, ptr %16, align 8, !tbaa !11
  %344 = load double, ptr %16, align 8, !tbaa !11
  %345 = fcmp oge double %344, 0.000000e+00
  br i1 %345, label %346, label %348

346:                                              ; preds = %339
  %347 = load double, ptr %16, align 8, !tbaa !11
  br label %351

348:                                              ; preds = %339
  %349 = load double, ptr %16, align 8, !tbaa !11
  %350 = fneg double %349
  br label %351

351:                                              ; preds = %348, %346
  %352 = phi double [ %347, %346 ], [ %350, %348 ]
  %353 = load double, ptr %22, align 8, !tbaa !11
  %354 = fadd double %353, %352
  store double %354, ptr %22, align 8, !tbaa !11
  br label %355

355:                                              ; preds = %351
  %356 = load i64, ptr %19, align 8, !tbaa !9
  %357 = add nsw i64 %356, 1
  store i64 %357, ptr %19, align 8, !tbaa !9
  br label %335, !llvm.loop !24

358:                                              ; preds = %335
  br label %359

359:                                              ; preds = %358, %328
  %360 = load i64, ptr %20, align 8, !tbaa !9
  %361 = load i64, ptr %21, align 8, !tbaa !9
  %362 = add nsw i64 %361, %360
  store i64 %362, ptr %21, align 8, !tbaa !9
  %363 = load double, ptr %25, align 8, !tbaa !11
  %364 = load double, ptr %22, align 8, !tbaa !11
  %365 = fcmp oge double %363, %364
  br i1 %365, label %366, label %368

366:                                              ; preds = %359
  %367 = load double, ptr %25, align 8, !tbaa !11
  br label %370

368:                                              ; preds = %359
  %369 = load double, ptr %22, align 8, !tbaa !11
  br label %370

370:                                              ; preds = %368, %366
  %371 = phi double [ %367, %366 ], [ %369, %368 ]
  store double %371, ptr %25, align 8, !tbaa !11
  br label %372

372:                                              ; preds = %370
  %373 = load i64, ptr %20, align 8, !tbaa !9
  %374 = add nsw i64 %373, 1
  store i64 %374, ptr %20, align 8, !tbaa !9
  br label %292, !llvm.loop !25

375:                                              ; preds = %292
  br label %472

376:                                              ; preds = %283
  %377 = load ptr, ptr %10, align 8, !tbaa !5
  %378 = load i64, ptr %377, align 8, !tbaa !9
  store i64 %378, ptr %13, align 8, !tbaa !9
  store i64 1, ptr %20, align 8, !tbaa !9
  br label %379

379:                                              ; preds = %468, %376
  %380 = load i64, ptr %20, align 8, !tbaa !9
  %381 = load i64, ptr %13, align 8, !tbaa !9
  %382 = icmp sle i64 %380, %381
  br i1 %382, label %383, label %471

383:                                              ; preds = %379
  %384 = load i64, ptr %24, align 8, !tbaa !9
  %385 = icmp ne i64 %384, 0
  br i1 %385, label %386, label %419

386:                                              ; preds = %383
  store double 1.000000e+00, ptr %22, align 8, !tbaa !11
  %387 = load i64, ptr %21, align 8, !tbaa !9
  %388 = load ptr, ptr %10, align 8, !tbaa !5
  %389 = load i64, ptr %388, align 8, !tbaa !9
  %390 = add nsw i64 %387, %389
  %391 = load i64, ptr %20, align 8, !tbaa !9
  %392 = sub nsw i64 %390, %391
  store i64 %392, ptr %14, align 8, !tbaa !9
  %393 = load i64, ptr %21, align 8, !tbaa !9
  %394 = add nsw i64 %393, 1
  store i64 %394, ptr %19, align 8, !tbaa !9
  br label %395

395:                                              ; preds = %415, %386
  %396 = load i64, ptr %19, align 8, !tbaa !9
  %397 = load i64, ptr %14, align 8, !tbaa !9
  %398 = icmp sle i64 %396, %397
  br i1 %398, label %399, label %418

399:                                              ; preds = %395
  %400 = load ptr, ptr %11, align 8, !tbaa !5
  %401 = load i64, ptr %19, align 8, !tbaa !9
  %402 = getelementptr inbounds double, ptr %400, i64 %401
  %403 = load double, ptr %402, align 8, !tbaa !11
  store double %403, ptr %16, align 8, !tbaa !11
  %404 = load double, ptr %16, align 8, !tbaa !11
  %405 = fcmp oge double %404, 0.000000e+00
  br i1 %405, label %406, label %408

406:                                              ; preds = %399
  %407 = load double, ptr %16, align 8, !tbaa !11
  br label %411

408:                                              ; preds = %399
  %409 = load double, ptr %16, align 8, !tbaa !11
  %410 = fneg double %409
  br label %411

411:                                              ; preds = %408, %406
  %412 = phi double [ %407, %406 ], [ %410, %408 ]
  %413 = load double, ptr %22, align 8, !tbaa !11
  %414 = fadd double %413, %412
  store double %414, ptr %22, align 8, !tbaa !11
  br label %415

415:                                              ; preds = %411
  %416 = load i64, ptr %19, align 8, !tbaa !9
  %417 = add nsw i64 %416, 1
  store i64 %417, ptr %19, align 8, !tbaa !9
  br label %395, !llvm.loop !26

418:                                              ; preds = %395
  br label %451

419:                                              ; preds = %383
  store double 0.000000e+00, ptr %22, align 8, !tbaa !11
  %420 = load i64, ptr %21, align 8, !tbaa !9
  %421 = load ptr, ptr %10, align 8, !tbaa !5
  %422 = load i64, ptr %421, align 8, !tbaa !9
  %423 = add nsw i64 %420, %422
  %424 = load i64, ptr %20, align 8, !tbaa !9
  %425 = sub nsw i64 %423, %424
  store i64 %425, ptr %14, align 8, !tbaa !9
  %426 = load i64, ptr %21, align 8, !tbaa !9
  store i64 %426, ptr %19, align 8, !tbaa !9
  br label %427

427:                                              ; preds = %447, %419
  %428 = load i64, ptr %19, align 8, !tbaa !9
  %429 = load i64, ptr %14, align 8, !tbaa !9
  %430 = icmp sle i64 %428, %429
  br i1 %430, label %431, label %450

431:                                              ; preds = %427
  %432 = load ptr, ptr %11, align 8, !tbaa !5
  %433 = load i64, ptr %19, align 8, !tbaa !9
  %434 = getelementptr inbounds double, ptr %432, i64 %433
  %435 = load double, ptr %434, align 8, !tbaa !11
  store double %435, ptr %16, align 8, !tbaa !11
  %436 = load double, ptr %16, align 8, !tbaa !11
  %437 = fcmp oge double %436, 0.000000e+00
  br i1 %437, label %438, label %440

438:                                              ; preds = %431
  %439 = load double, ptr %16, align 8, !tbaa !11
  br label %443

440:                                              ; preds = %431
  %441 = load double, ptr %16, align 8, !tbaa !11
  %442 = fneg double %441
  br label %443

443:                                              ; preds = %440, %438
  %444 = phi double [ %439, %438 ], [ %442, %440 ]
  %445 = load double, ptr %22, align 8, !tbaa !11
  %446 = fadd double %445, %444
  store double %446, ptr %22, align 8, !tbaa !11
  br label %447

447:                                              ; preds = %443
  %448 = load i64, ptr %19, align 8, !tbaa !9
  %449 = add nsw i64 %448, 1
  store i64 %449, ptr %19, align 8, !tbaa !9
  br label %427, !llvm.loop !27

450:                                              ; preds = %427
  br label %451

451:                                              ; preds = %450, %418
  %452 = load i64, ptr %21, align 8, !tbaa !9
  %453 = load ptr, ptr %10, align 8, !tbaa !5
  %454 = load i64, ptr %453, align 8, !tbaa !9
  %455 = add nsw i64 %452, %454
  %456 = load i64, ptr %20, align 8, !tbaa !9
  %457 = sub nsw i64 %455, %456
  %458 = add nsw i64 %457, 1
  store i64 %458, ptr %21, align 8, !tbaa !9
  %459 = load double, ptr %25, align 8, !tbaa !11
  %460 = load double, ptr %22, align 8, !tbaa !11
  %461 = fcmp oge double %459, %460
  br i1 %461, label %462, label %464

462:                                              ; preds = %451
  %463 = load double, ptr %25, align 8, !tbaa !11
  br label %466

464:                                              ; preds = %451
  %465 = load double, ptr %22, align 8, !tbaa !11
  br label %466

466:                                              ; preds = %464, %462
  %467 = phi double [ %463, %462 ], [ %465, %464 ]
  store double %467, ptr %25, align 8, !tbaa !11
  br label %468

468:                                              ; preds = %466
  %469 = load i64, ptr %20, align 8, !tbaa !9
  %470 = add nsw i64 %469, 1
  store i64 %470, ptr %20, align 8, !tbaa !9
  br label %379, !llvm.loop !28

471:                                              ; preds = %379
  br label %472

472:                                              ; preds = %471, %375
  br label %882

473:                                              ; preds = %278
  %474 = load ptr, ptr %7, align 8, !tbaa !5
  %475 = call i64 @lsame_(ptr noundef %474, ptr noundef @.str.3)
  %476 = icmp ne i64 %475, 0
  br i1 %476, label %477, label %751

477:                                              ; preds = %473
  store i64 1, ptr %21, align 8, !tbaa !9
  %478 = load ptr, ptr %8, align 8, !tbaa !5
  %479 = call i64 @lsame_(ptr noundef %478, ptr noundef @.str.1)
  %480 = icmp ne i64 %479, 0
  br i1 %480, label %481, label %601

481:                                              ; preds = %477
  %482 = load ptr, ptr %9, align 8, !tbaa !5
  %483 = call i64 @lsame_(ptr noundef %482, ptr noundef @.str.1)
  %484 = icmp ne i64 %483, 0
  br i1 %484, label %485, label %544

485:                                              ; preds = %481
  %486 = load ptr, ptr %10, align 8, !tbaa !5
  %487 = load i64, ptr %486, align 8, !tbaa !9
  store i64 %487, ptr %13, align 8, !tbaa !9
  store i64 1, ptr %19, align 8, !tbaa !9
  br label %488

488:                                              ; preds = %496, %485
  %489 = load i64, ptr %19, align 8, !tbaa !9
  %490 = load i64, ptr %13, align 8, !tbaa !9
  %491 = icmp sle i64 %489, %490
  br i1 %491, label %492, label %499

492:                                              ; preds = %488
  %493 = load ptr, ptr %12, align 8, !tbaa !5
  %494 = load i64, ptr %19, align 8, !tbaa !9
  %495 = getelementptr inbounds double, ptr %493, i64 %494
  store double 1.000000e+00, ptr %495, align 8, !tbaa !11
  br label %496

496:                                              ; preds = %492
  %497 = load i64, ptr %19, align 8, !tbaa !9
  %498 = add nsw i64 %497, 1
  store i64 %498, ptr %19, align 8, !tbaa !9
  br label %488, !llvm.loop !29

499:                                              ; preds = %488
  %500 = load ptr, ptr %10, align 8, !tbaa !5
  %501 = load i64, ptr %500, align 8, !tbaa !9
  store i64 %501, ptr %13, align 8, !tbaa !9
  store i64 1, ptr %20, align 8, !tbaa !9
  br label %502

502:                                              ; preds = %540, %499
  %503 = load i64, ptr %20, align 8, !tbaa !9
  %504 = load i64, ptr %13, align 8, !tbaa !9
  %505 = icmp sle i64 %503, %504
  br i1 %505, label %506, label %543

506:                                              ; preds = %502
  %507 = load i64, ptr %20, align 8, !tbaa !9
  %508 = sub nsw i64 %507, 1
  store i64 %508, ptr %14, align 8, !tbaa !9
  store i64 1, ptr %19, align 8, !tbaa !9
  br label %509

509:                                              ; preds = %534, %506
  %510 = load i64, ptr %19, align 8, !tbaa !9
  %511 = load i64, ptr %14, align 8, !tbaa !9
  %512 = icmp sle i64 %510, %511
  br i1 %512, label %513, label %537

513:                                              ; preds = %509
  %514 = load ptr, ptr %11, align 8, !tbaa !5
  %515 = load i64, ptr %21, align 8, !tbaa !9
  %516 = getelementptr inbounds double, ptr %514, i64 %515
  %517 = load double, ptr %516, align 8, !tbaa !11
  store double %517, ptr %16, align 8, !tbaa !11
  %518 = load double, ptr %16, align 8, !tbaa !11
  %519 = fcmp oge double %518, 0.000000e+00
  br i1 %519, label %520, label %522

520:                                              ; preds = %513
  %521 = load double, ptr %16, align 8, !tbaa !11
  br label %525

522:                                              ; preds = %513
  %523 = load double, ptr %16, align 8, !tbaa !11
  %524 = fneg double %523
  br label %525

525:                                              ; preds = %522, %520
  %526 = phi double [ %521, %520 ], [ %524, %522 ]
  %527 = load ptr, ptr %12, align 8, !tbaa !5
  %528 = load i64, ptr %19, align 8, !tbaa !9
  %529 = getelementptr inbounds double, ptr %527, i64 %528
  %530 = load double, ptr %529, align 8, !tbaa !11
  %531 = fadd double %530, %526
  store double %531, ptr %529, align 8, !tbaa !11
  %532 = load i64, ptr %21, align 8, !tbaa !9
  %533 = add nsw i64 %532, 1
  store i64 %533, ptr %21, align 8, !tbaa !9
  br label %534

534:                                              ; preds = %525
  %535 = load i64, ptr %19, align 8, !tbaa !9
  %536 = add nsw i64 %535, 1
  store i64 %536, ptr %19, align 8, !tbaa !9
  br label %509, !llvm.loop !30

537:                                              ; preds = %509
  %538 = load i64, ptr %21, align 8, !tbaa !9
  %539 = add nsw i64 %538, 1
  store i64 %539, ptr %21, align 8, !tbaa !9
  br label %540

540:                                              ; preds = %537
  %541 = load i64, ptr %20, align 8, !tbaa !9
  %542 = add nsw i64 %541, 1
  store i64 %542, ptr %20, align 8, !tbaa !9
  br label %502, !llvm.loop !31

543:                                              ; preds = %502
  br label %600

544:                                              ; preds = %481
  %545 = load ptr, ptr %10, align 8, !tbaa !5
  %546 = load i64, ptr %545, align 8, !tbaa !9
  store i64 %546, ptr %13, align 8, !tbaa !9
  store i64 1, ptr %19, align 8, !tbaa !9
  br label %547

547:                                              ; preds = %555, %544
  %548 = load i64, ptr %19, align 8, !tbaa !9
  %549 = load i64, ptr %13, align 8, !tbaa !9
  %550 = icmp sle i64 %548, %549
  br i1 %550, label %551, label %558

551:                                              ; preds = %547
  %552 = load ptr, ptr %12, align 8, !tbaa !5
  %553 = load i64, ptr %19, align 8, !tbaa !9
  %554 = getelementptr inbounds double, ptr %552, i64 %553
  store double 0.000000e+00, ptr %554, align 8, !tbaa !11
  br label %555

555:                                              ; preds = %551
  %556 = load i64, ptr %19, align 8, !tbaa !9
  %557 = add nsw i64 %556, 1
  store i64 %557, ptr %19, align 8, !tbaa !9
  br label %547, !llvm.loop !32

558:                                              ; preds = %547
  %559 = load ptr, ptr %10, align 8, !tbaa !5
  %560 = load i64, ptr %559, align 8, !tbaa !9
  store i64 %560, ptr %13, align 8, !tbaa !9
  store i64 1, ptr %20, align 8, !tbaa !9
  br label %561

561:                                              ; preds = %596, %558
  %562 = load i64, ptr %20, align 8, !tbaa !9
  %563 = load i64, ptr %13, align 8, !tbaa !9
  %564 = icmp sle i64 %562, %563
  br i1 %564, label %565, label %599

565:                                              ; preds = %561
  %566 = load i64, ptr %20, align 8, !tbaa !9
  store i64 %566, ptr %14, align 8, !tbaa !9
  store i64 1, ptr %19, align 8, !tbaa !9
  br label %567

567:                                              ; preds = %592, %565
  %568 = load i64, ptr %19, align 8, !tbaa !9
  %569 = load i64, ptr %14, align 8, !tbaa !9
  %570 = icmp sle i64 %568, %569
  br i1 %570, label %571, label %595

571:                                              ; preds = %567
  %572 = load ptr, ptr %11, align 8, !tbaa !5
  %573 = load i64, ptr %21, align 8, !tbaa !9
  %574 = getelementptr inbounds double, ptr %572, i64 %573
  %575 = load double, ptr %574, align 8, !tbaa !11
  store double %575, ptr %16, align 8, !tbaa !11
  %576 = load double, ptr %16, align 8, !tbaa !11
  %577 = fcmp oge double %576, 0.000000e+00
  br i1 %577, label %578, label %580

578:                                              ; preds = %571
  %579 = load double, ptr %16, align 8, !tbaa !11
  br label %583

580:                                              ; preds = %571
  %581 = load double, ptr %16, align 8, !tbaa !11
  %582 = fneg double %581
  br label %583

583:                                              ; preds = %580, %578
  %584 = phi double [ %579, %578 ], [ %582, %580 ]
  %585 = load ptr, ptr %12, align 8, !tbaa !5
  %586 = load i64, ptr %19, align 8, !tbaa !9
  %587 = getelementptr inbounds double, ptr %585, i64 %586
  %588 = load double, ptr %587, align 8, !tbaa !11
  %589 = fadd double %588, %584
  store double %589, ptr %587, align 8, !tbaa !11
  %590 = load i64, ptr %21, align 8, !tbaa !9
  %591 = add nsw i64 %590, 1
  store i64 %591, ptr %21, align 8, !tbaa !9
  br label %592

592:                                              ; preds = %583
  %593 = load i64, ptr %19, align 8, !tbaa !9
  %594 = add nsw i64 %593, 1
  store i64 %594, ptr %19, align 8, !tbaa !9
  br label %567, !llvm.loop !33

595:                                              ; preds = %567
  br label %596

596:                                              ; preds = %595
  %597 = load i64, ptr %20, align 8, !tbaa !9
  %598 = add nsw i64 %597, 1
  store i64 %598, ptr %20, align 8, !tbaa !9
  br label %561, !llvm.loop !34

599:                                              ; preds = %561
  br label %600

600:                                              ; preds = %599, %543
  br label %725

601:                                              ; preds = %477
  %602 = load ptr, ptr %9, align 8, !tbaa !5
  %603 = call i64 @lsame_(ptr noundef %602, ptr noundef @.str.1)
  %604 = icmp ne i64 %603, 0
  br i1 %604, label %605, label %666

605:                                              ; preds = %601
  %606 = load ptr, ptr %10, align 8, !tbaa !5
  %607 = load i64, ptr %606, align 8, !tbaa !9
  store i64 %607, ptr %13, align 8, !tbaa !9
  store i64 1, ptr %19, align 8, !tbaa !9
  br label %608

608:                                              ; preds = %616, %605
  %609 = load i64, ptr %19, align 8, !tbaa !9
  %610 = load i64, ptr %13, align 8, !tbaa !9
  %611 = icmp sle i64 %609, %610
  br i1 %611, label %612, label %619

612:                                              ; preds = %608
  %613 = load ptr, ptr %12, align 8, !tbaa !5
  %614 = load i64, ptr %19, align 8, !tbaa !9
  %615 = getelementptr inbounds double, ptr %613, i64 %614
  store double 1.000000e+00, ptr %615, align 8, !tbaa !11
  br label %616

616:                                              ; preds = %612
  %617 = load i64, ptr %19, align 8, !tbaa !9
  %618 = add nsw i64 %617, 1
  store i64 %618, ptr %19, align 8, !tbaa !9
  br label %608, !llvm.loop !35

619:                                              ; preds = %608
  %620 = load ptr, ptr %10, align 8, !tbaa !5
  %621 = load i64, ptr %620, align 8, !tbaa !9
  store i64 %621, ptr %13, align 8, !tbaa !9
  store i64 1, ptr %20, align 8, !tbaa !9
  br label %622

622:                                              ; preds = %662, %619
  %623 = load i64, ptr %20, align 8, !tbaa !9
  %624 = load i64, ptr %13, align 8, !tbaa !9
  %625 = icmp sle i64 %623, %624
  br i1 %625, label %626, label %665

626:                                              ; preds = %622
  %627 = load i64, ptr %21, align 8, !tbaa !9
  %628 = add nsw i64 %627, 1
  store i64 %628, ptr %21, align 8, !tbaa !9
  %629 = load ptr, ptr %10, align 8, !tbaa !5
  %630 = load i64, ptr %629, align 8, !tbaa !9
  store i64 %630, ptr %14, align 8, !tbaa !9
  %631 = load i64, ptr %20, align 8, !tbaa !9
  %632 = add nsw i64 %631, 1
  store i64 %632, ptr %19, align 8, !tbaa !9
  br label %633

633:                                              ; preds = %658, %626
  %634 = load i64, ptr %19, align 8, !tbaa !9
  %635 = load i64, ptr %14, align 8, !tbaa !9
  %636 = icmp sle i64 %634, %635
  br i1 %636, label %637, label %661

637:                                              ; preds = %633
  %638 = load ptr, ptr %11, align 8, !tbaa !5
  %639 = load i64, ptr %21, align 8, !tbaa !9
  %640 = getelementptr inbounds double, ptr %638, i64 %639
  %641 = load double, ptr %640, align 8, !tbaa !11
  store double %641, ptr %16, align 8, !tbaa !11
  %642 = load double, ptr %16, align 8, !tbaa !11
  %643 = fcmp oge double %642, 0.000000e+00
  br i1 %643, label %644, label %646

644:                                              ; preds = %637
  %645 = load double, ptr %16, align 8, !tbaa !11
  br label %649

646:                                              ; preds = %637
  %647 = load double, ptr %16, align 8, !tbaa !11
  %648 = fneg double %647
  br label %649

649:                                              ; preds = %646, %644
  %650 = phi double [ %645, %644 ], [ %648, %646 ]
  %651 = load ptr, ptr %12, align 8, !tbaa !5
  %652 = load i64, ptr %19, align 8, !tbaa !9
  %653 = getelementptr inbounds double, ptr %651, i64 %652
  %654 = load double, ptr %653, align 8, !tbaa !11
  %655 = fadd double %654, %650
  store double %655, ptr %653, align 8, !tbaa !11
  %656 = load i64, ptr %21, align 8, !tbaa !9
  %657 = add nsw i64 %656, 1
  store i64 %657, ptr %21, align 8, !tbaa !9
  br label %658

658:                                              ; preds = %649
  %659 = load i64, ptr %19, align 8, !tbaa !9
  %660 = add nsw i64 %659, 1
  store i64 %660, ptr %19, align 8, !tbaa !9
  br label %633, !llvm.loop !36

661:                                              ; preds = %633
  br label %662

662:                                              ; preds = %661
  %663 = load i64, ptr %20, align 8, !tbaa !9
  %664 = add nsw i64 %663, 1
  store i64 %664, ptr %20, align 8, !tbaa !9
  br label %622, !llvm.loop !37

665:                                              ; preds = %622
  br label %724

666:                                              ; preds = %601
  %667 = load ptr, ptr %10, align 8, !tbaa !5
  %668 = load i64, ptr %667, align 8, !tbaa !9
  store i64 %668, ptr %13, align 8, !tbaa !9
  store i64 1, ptr %19, align 8, !tbaa !9
  br label %669

669:                                              ; preds = %677, %666
  %670 = load i64, ptr %19, align 8, !tbaa !9
  %671 = load i64, ptr %13, align 8, !tbaa !9
  %672 = icmp sle i64 %670, %671
  br i1 %672, label %673, label %680

673:                                              ; preds = %669
  %674 = load ptr, ptr %12, align 8, !tbaa !5
  %675 = load i64, ptr %19, align 8, !tbaa !9
  %676 = getelementptr inbounds double, ptr %674, i64 %675
  store double 0.000000e+00, ptr %676, align 8, !tbaa !11
  br label %677

677:                                              ; preds = %673
  %678 = load i64, ptr %19, align 8, !tbaa !9
  %679 = add nsw i64 %678, 1
  store i64 %679, ptr %19, align 8, !tbaa !9
  br label %669, !llvm.loop !38

680:                                              ; preds = %669
  %681 = load ptr, ptr %10, align 8, !tbaa !5
  %682 = load i64, ptr %681, align 8, !tbaa !9
  store i64 %682, ptr %13, align 8, !tbaa !9
  store i64 1, ptr %20, align 8, !tbaa !9
  br label %683

683:                                              ; preds = %720, %680
  %684 = load i64, ptr %20, align 8, !tbaa !9
  %685 = load i64, ptr %13, align 8, !tbaa !9
  %686 = icmp sle i64 %684, %685
  br i1 %686, label %687, label %723

687:                                              ; preds = %683
  %688 = load ptr, ptr %10, align 8, !tbaa !5
  %689 = load i64, ptr %688, align 8, !tbaa !9
  store i64 %689, ptr %14, align 8, !tbaa !9
  %690 = load i64, ptr %20, align 8, !tbaa !9
  store i64 %690, ptr %19, align 8, !tbaa !9
  br label %691

691:                                              ; preds = %716, %687
  %692 = load i64, ptr %19, align 8, !tbaa !9
  %693 = load i64, ptr %14, align 8, !tbaa !9
  %694 = icmp sle i64 %692, %693
  br i1 %694, label %695, label %719

695:                                              ; preds = %691
  %696 = load ptr, ptr %11, align 8, !tbaa !5
  %697 = load i64, ptr %21, align 8, !tbaa !9
  %698 = getelementptr inbounds double, ptr %696, i64 %697
  %699 = load double, ptr %698, align 8, !tbaa !11
  store double %699, ptr %16, align 8, !tbaa !11
  %700 = load double, ptr %16, align 8, !tbaa !11
  %701 = fcmp oge double %700, 0.000000e+00
  br i1 %701, label %702, label %704

702:                                              ; preds = %695
  %703 = load double, ptr %16, align 8, !tbaa !11
  br label %707

704:                                              ; preds = %695
  %705 = load double, ptr %16, align 8, !tbaa !11
  %706 = fneg double %705
  br label %707

707:                                              ; preds = %704, %702
  %708 = phi double [ %703, %702 ], [ %706, %704 ]
  %709 = load ptr, ptr %12, align 8, !tbaa !5
  %710 = load i64, ptr %19, align 8, !tbaa !9
  %711 = getelementptr inbounds double, ptr %709, i64 %710
  %712 = load double, ptr %711, align 8, !tbaa !11
  %713 = fadd double %712, %708
  store double %713, ptr %711, align 8, !tbaa !11
  %714 = load i64, ptr %21, align 8, !tbaa !9
  %715 = add nsw i64 %714, 1
  store i64 %715, ptr %21, align 8, !tbaa !9
  br label %716

716:                                              ; preds = %707
  %717 = load i64, ptr %19, align 8, !tbaa !9
  %718 = add nsw i64 %717, 1
  store i64 %718, ptr %19, align 8, !tbaa !9
  br label %691, !llvm.loop !39

719:                                              ; preds = %691
  br label %720

720:                                              ; preds = %719
  %721 = load i64, ptr %20, align 8, !tbaa !9
  %722 = add nsw i64 %721, 1
  store i64 %722, ptr %20, align 8, !tbaa !9
  br label %683, !llvm.loop !40

723:                                              ; preds = %683
  br label %724

724:                                              ; preds = %723, %665
  br label %725

725:                                              ; preds = %724, %600
  store double 0.000000e+00, ptr %25, align 8, !tbaa !11
  %726 = load ptr, ptr %10, align 8, !tbaa !5
  %727 = load i64, ptr %726, align 8, !tbaa !9
  store i64 %727, ptr %13, align 8, !tbaa !9
  store i64 1, ptr %19, align 8, !tbaa !9
  br label %728

728:                                              ; preds = %747, %725
  %729 = load i64, ptr %19, align 8, !tbaa !9
  %730 = load i64, ptr %13, align 8, !tbaa !9
  %731 = icmp sle i64 %729, %730
  br i1 %731, label %732, label %750

732:                                              ; preds = %728
  %733 = load double, ptr %25, align 8, !tbaa !11
  store double %733, ptr %16, align 8, !tbaa !11
  %734 = load ptr, ptr %12, align 8, !tbaa !5
  %735 = load i64, ptr %19, align 8, !tbaa !9
  %736 = getelementptr inbounds double, ptr %734, i64 %735
  %737 = load double, ptr %736, align 8, !tbaa !11
  store double %737, ptr %17, align 8, !tbaa !11
  %738 = load double, ptr %16, align 8, !tbaa !11
  %739 = load double, ptr %17, align 8, !tbaa !11
  %740 = fcmp oge double %738, %739
  br i1 %740, label %741, label %743

741:                                              ; preds = %732
  %742 = load double, ptr %16, align 8, !tbaa !11
  br label %745

743:                                              ; preds = %732
  %744 = load double, ptr %17, align 8, !tbaa !11
  br label %745

745:                                              ; preds = %743, %741
  %746 = phi double [ %742, %741 ], [ %744, %743 ]
  store double %746, ptr %25, align 8, !tbaa !11
  br label %747

747:                                              ; preds = %745
  %748 = load i64, ptr %19, align 8, !tbaa !9
  %749 = add nsw i64 %748, 1
  store i64 %749, ptr %19, align 8, !tbaa !9
  br label %728, !llvm.loop !41

750:                                              ; preds = %728
  br label %881

751:                                              ; preds = %473
  %752 = load ptr, ptr %7, align 8, !tbaa !5
  %753 = call i64 @lsame_(ptr noundef %752, ptr noundef @.str.4)
  %754 = icmp ne i64 %753, 0
  br i1 %754, label %759, label %755

755:                                              ; preds = %751
  %756 = load ptr, ptr %7, align 8, !tbaa !5
  %757 = call i64 @lsame_(ptr noundef %756, ptr noundef @.str.5)
  %758 = icmp ne i64 %757, 0
  br i1 %758, label %759, label %880

759:                                              ; preds = %755, %751
  %760 = load ptr, ptr %8, align 8, !tbaa !5
  %761 = call i64 @lsame_(ptr noundef %760, ptr noundef @.str.1)
  %762 = icmp ne i64 %761, 0
  br i1 %762, label %763, label %811

763:                                              ; preds = %759
  %764 = load ptr, ptr %9, align 8, !tbaa !5
  %765 = call i64 @lsame_(ptr noundef %764, ptr noundef @.str.1)
  %766 = icmp ne i64 %765, 0
  br i1 %766, label %767, label %791

767:                                              ; preds = %763
  store double 1.000000e+00, ptr %23, align 8, !tbaa !11
  %768 = load ptr, ptr %10, align 8, !tbaa !5
  %769 = load i64, ptr %768, align 8, !tbaa !9
  %770 = sitofp i64 %769 to double
  store double %770, ptr %22, align 8, !tbaa !11
  store i64 2, ptr %21, align 8, !tbaa !9
  %771 = load ptr, ptr %10, align 8, !tbaa !5
  %772 = load i64, ptr %771, align 8, !tbaa !9
  store i64 %772, ptr %13, align 8, !tbaa !9
  store i64 2, ptr %20, align 8, !tbaa !9
  br label %773

773:                                              ; preds = %787, %767
  %774 = load i64, ptr %20, align 8, !tbaa !9
  %775 = load i64, ptr %13, align 8, !tbaa !9
  %776 = icmp sle i64 %774, %775
  br i1 %776, label %777, label %790

777:                                              ; preds = %773
  %778 = load i64, ptr %20, align 8, !tbaa !9
  %779 = sub nsw i64 %778, 1
  store i64 %779, ptr %14, align 8, !tbaa !9
  %780 = load ptr, ptr %11, align 8, !tbaa !5
  %781 = load i64, ptr %21, align 8, !tbaa !9
  %782 = getelementptr inbounds double, ptr %780, i64 %781
  %783 = call i32 @dlassq_(ptr noundef %14, ptr noundef %782, ptr noundef @c__1, ptr noundef %23, ptr noundef %22)
  %784 = load i64, ptr %20, align 8, !tbaa !9
  %785 = load i64, ptr %21, align 8, !tbaa !9
  %786 = add nsw i64 %785, %784
  store i64 %786, ptr %21, align 8, !tbaa !9
  br label %787

787:                                              ; preds = %777
  %788 = load i64, ptr %20, align 8, !tbaa !9
  %789 = add nsw i64 %788, 1
  store i64 %789, ptr %20, align 8, !tbaa !9
  br label %773, !llvm.loop !42

790:                                              ; preds = %773
  br label %810

791:                                              ; preds = %763
  store double 0.000000e+00, ptr %23, align 8, !tbaa !11
  store double 1.000000e+00, ptr %22, align 8, !tbaa !11
  store i64 1, ptr %21, align 8, !tbaa !9
  %792 = load ptr, ptr %10, align 8, !tbaa !5
  %793 = load i64, ptr %792, align 8, !tbaa !9
  store i64 %793, ptr %13, align 8, !tbaa !9
  store i64 1, ptr %20, align 8, !tbaa !9
  br label %794

794:                                              ; preds = %806, %791
  %795 = load i64, ptr %20, align 8, !tbaa !9
  %796 = load i64, ptr %13, align 8, !tbaa !9
  %797 = icmp sle i64 %795, %796
  br i1 %797, label %798, label %809

798:                                              ; preds = %794
  %799 = load ptr, ptr %11, align 8, !tbaa !5
  %800 = load i64, ptr %21, align 8, !tbaa !9
  %801 = getelementptr inbounds double, ptr %799, i64 %800
  %802 = call i32 @dlassq_(ptr noundef %20, ptr noundef %801, ptr noundef @c__1, ptr noundef %23, ptr noundef %22)
  %803 = load i64, ptr %20, align 8, !tbaa !9
  %804 = load i64, ptr %21, align 8, !tbaa !9
  %805 = add nsw i64 %804, %803
  store i64 %805, ptr %21, align 8, !tbaa !9
  br label %806

806:                                              ; preds = %798
  %807 = load i64, ptr %20, align 8, !tbaa !9
  %808 = add nsw i64 %807, 1
  store i64 %808, ptr %20, align 8, !tbaa !9
  br label %794, !llvm.loop !43

809:                                              ; preds = %794
  br label %810

810:                                              ; preds = %809, %790
  br label %875

811:                                              ; preds = %759
  %812 = load ptr, ptr %9, align 8, !tbaa !5
  %813 = call i64 @lsame_(ptr noundef %812, ptr noundef @.str.1)
  %814 = icmp ne i64 %813, 0
  br i1 %814, label %815, label %846

815:                                              ; preds = %811
  store double 1.000000e+00, ptr %23, align 8, !tbaa !11
  %816 = load ptr, ptr %10, align 8, !tbaa !5
  %817 = load i64, ptr %816, align 8, !tbaa !9
  %818 = sitofp i64 %817 to double
  store double %818, ptr %22, align 8, !tbaa !11
  store i64 2, ptr %21, align 8, !tbaa !9
  %819 = load ptr, ptr %10, align 8, !tbaa !5
  %820 = load i64, ptr %819, align 8, !tbaa !9
  %821 = sub nsw i64 %820, 1
  store i64 %821, ptr %13, align 8, !tbaa !9
  store i64 1, ptr %20, align 8, !tbaa !9
  br label %822

822:                                              ; preds = %842, %815
  %823 = load i64, ptr %20, align 8, !tbaa !9
  %824 = load i64, ptr %13, align 8, !tbaa !9
  %825 = icmp sle i64 %823, %824
  br i1 %825, label %826, label %845

826:                                              ; preds = %822
  %827 = load ptr, ptr %10, align 8, !tbaa !5
  %828 = load i64, ptr %827, align 8, !tbaa !9
  %829 = load i64, ptr %20, align 8, !tbaa !9
  %830 = sub nsw i64 %828, %829
  store i64 %830, ptr %14, align 8, !tbaa !9
  %831 = load ptr, ptr %11, align 8, !tbaa !5
  %832 = load i64, ptr %21, align 8, !tbaa !9
  %833 = getelementptr inbounds double, ptr %831, i64 %832
  %834 = call i32 @dlassq_(ptr noundef %14, ptr noundef %833, ptr noundef @c__1, ptr noundef %23, ptr noundef %22)
  %835 = load i64, ptr %21, align 8, !tbaa !9
  %836 = load ptr, ptr %10, align 8, !tbaa !5
  %837 = load i64, ptr %836, align 8, !tbaa !9
  %838 = add nsw i64 %835, %837
  %839 = load i64, ptr %20, align 8, !tbaa !9
  %840 = sub nsw i64 %838, %839
  %841 = add nsw i64 %840, 1
  store i64 %841, ptr %21, align 8, !tbaa !9
  br label %842

842:                                              ; preds = %826
  %843 = load i64, ptr %20, align 8, !tbaa !9
  %844 = add nsw i64 %843, 1
  store i64 %844, ptr %20, align 8, !tbaa !9
  br label %822, !llvm.loop !44

845:                                              ; preds = %822
  br label %874

846:                                              ; preds = %811
  store double 0.000000e+00, ptr %23, align 8, !tbaa !11
  store double 1.000000e+00, ptr %22, align 8, !tbaa !11
  store i64 1, ptr %21, align 8, !tbaa !9
  %847 = load ptr, ptr %10, align 8, !tbaa !5
  %848 = load i64, ptr %847, align 8, !tbaa !9
  store i64 %848, ptr %13, align 8, !tbaa !9
  store i64 1, ptr %20, align 8, !tbaa !9
  br label %849

849:                                              ; preds = %870, %846
  %850 = load i64, ptr %20, align 8, !tbaa !9
  %851 = load i64, ptr %13, align 8, !tbaa !9
  %852 = icmp sle i64 %850, %851
  br i1 %852, label %853, label %873

853:                                              ; preds = %849
  %854 = load ptr, ptr %10, align 8, !tbaa !5
  %855 = load i64, ptr %854, align 8, !tbaa !9
  %856 = load i64, ptr %20, align 8, !tbaa !9
  %857 = sub nsw i64 %855, %856
  %858 = add nsw i64 %857, 1
  store i64 %858, ptr %14, align 8, !tbaa !9
  %859 = load ptr, ptr %11, align 8, !tbaa !5
  %860 = load i64, ptr %21, align 8, !tbaa !9
  %861 = getelementptr inbounds double, ptr %859, i64 %860
  %862 = call i32 @dlassq_(ptr noundef %14, ptr noundef %861, ptr noundef @c__1, ptr noundef %23, ptr noundef %22)
  %863 = load i64, ptr %21, align 8, !tbaa !9
  %864 = load ptr, ptr %10, align 8, !tbaa !5
  %865 = load i64, ptr %864, align 8, !tbaa !9
  %866 = add nsw i64 %863, %865
  %867 = load i64, ptr %20, align 8, !tbaa !9
  %868 = sub nsw i64 %866, %867
  %869 = add nsw i64 %868, 1
  store i64 %869, ptr %21, align 8, !tbaa !9
  br label %870

870:                                              ; preds = %853
  %871 = load i64, ptr %20, align 8, !tbaa !9
  %872 = add nsw i64 %871, 1
  store i64 %872, ptr %20, align 8, !tbaa !9
  br label %849, !llvm.loop !45

873:                                              ; preds = %849
  br label %874

874:                                              ; preds = %873, %845
  br label %875

875:                                              ; preds = %874, %810
  %876 = load double, ptr %23, align 8, !tbaa !11
  %877 = load double, ptr %22, align 8, !tbaa !11
  %878 = call double @sqrt(double noundef %877) #4
  %879 = fmul double %876, %878
  store double %879, ptr %25, align 8, !tbaa !11
  br label %880

880:                                              ; preds = %875, %755
  br label %881

881:                                              ; preds = %880, %750
  br label %882

882:                                              ; preds = %881, %472
  br label %883

883:                                              ; preds = %882, %273
  br label %884

884:                                              ; preds = %883, %33
  %885 = load double, ptr %25, align 8, !tbaa !11
  store double %885, ptr %15, align 8, !tbaa !11
  %886 = load double, ptr %15, align 8, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #4
  ret double %886
}

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

declare i64 @lsame_(ptr noundef, ptr noundef) #2

declare i32 @dlassq_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

; Function Attrs: nounwind
declare double @sqrt(double noundef) #3

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

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 willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !14}
!21 = distinct !{!21, !14}
!22 = !{!7, !7, i64 0}
!23 = distinct !{!23, !14}
!24 = distinct !{!24, !14}
!25 = distinct !{!25, !14}
!26 = distinct !{!26, !14}
!27 = distinct !{!27, !14}
!28 = distinct !{!28, !14}
!29 = distinct !{!29, !14}
!30 = distinct !{!30, !14}
!31 = distinct !{!31, !14}
!32 = distinct !{!32, !14}
!33 = distinct !{!33, !14}
!34 = distinct !{!34, !14}
!35 = distinct !{!35, !14}
!36 = distinct !{!36, !14}
!37 = distinct !{!37, !14}
!38 = distinct !{!38, !14}
!39 = distinct !{!39, !14}
!40 = distinct !{!40, !14}
!41 = distinct !{!41, !14}
!42 = distinct !{!42, !14}
!43 = distinct !{!43, !14}
!44 = distinct !{!44, !14}
!45 = distinct !{!45, !14}


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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8

; Function Attrs: nounwind uwtable
define dso_local double @dlantp_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr nocapture noundef readonly %3, ptr noundef %4, ptr nocapture noundef %5) local_unnamed_addr #0 {
  %7 = alloca i64, align 8
  %8 = alloca i64, align 8
  %9 = alloca double, align 8
  %10 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #6
  %11 = getelementptr inbounds i8, ptr %5, i64 -8
  %12 = getelementptr inbounds i8, ptr %4, i64 -8
  %13 = load i64, ptr %3, align 8, !tbaa !5
  %14 = icmp eq i64 %13, 0
  br i1 %14, label %.loopexit365, label %15

15:                                               ; preds = %6
  %16 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %.not = icmp eq i64 %16, 0
  br i1 %.not, label %90, label %17

17:                                               ; preds = %15
  %18 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.1) #6
  %.not340 = icmp eq i64 %18, 0
  %19 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %.not341 = icmp eq i64 %19, 0
  %20 = load i64, ptr %3, align 8, !tbaa !5
  %.not343430 = icmp slt i64 %20, 1
  br i1 %.not340, label %63, label %21

21:                                               ; preds = %17
  br i1 %.not341, label %51, label %22

22:                                               ; preds = %21
  br i1 %.not343430, label %.loopexit365, label %.lr.ph385

.lr.ph385:                                        ; preds = %22, %._crit_edge
  %indvar846 = phi i64 [ %indvar.next847, %._crit_edge ], [ 0, %22 ]
  %.0383 = phi double [ %.1.lcssa, %._crit_edge ], [ 1.000000e+00, %22 ]
  %.0257382 = phi i64 [ %23, %._crit_edge ], [ 1, %22 ]
  %storemerge352381 = phi i64 [ %50, %._crit_edge ], [ 1, %22 ]
  %23 = add nuw nsw i64 %.0257382, %storemerge352381
  %24 = add nsw i64 %23, -2
  %.not354377 = icmp sgt i64 %.0257382, %24
  br i1 %.not354377, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %.lr.ph385
  %xtraiter = and i64 %indvar846, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph.prol.loopexit, label %.lr.ph.prol

.lr.ph.prol:                                      ; preds = %.lr.ph.preheader
  %25 = getelementptr inbounds double, ptr %12, i64 %.0257382
  %26 = load double, ptr %25, align 8, !tbaa !9
  %27 = fcmp oge double %26, 0.000000e+00
  %28 = fneg double %26
  %29 = select i1 %27, double %26, double %28
  %30 = fcmp oge double %.0383, %29
  %31 = select i1 %30, double %.0383, double %29
  %32 = add nuw nsw i64 %.0257382, 1
  br label %.lr.ph.prol.loopexit

.lr.ph.prol.loopexit:                             ; preds = %.lr.ph.prol, %.lr.ph.preheader
  %.1379.unr = phi double [ %.0383, %.lr.ph.preheader ], [ %31, %.lr.ph.prol ]
  %.0269378.unr = phi i64 [ %.0257382, %.lr.ph.preheader ], [ %32, %.lr.ph.prol ]
  %.lcssa845.unr = phi double [ poison, %.lr.ph.preheader ], [ %31, %.lr.ph.prol ]
  %33 = icmp eq i64 %indvar846, 1
  br i1 %33, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.prol.loopexit, %.lr.ph
  %.1379 = phi double [ %48, %.lr.ph ], [ %.1379.unr, %.lr.ph.prol.loopexit ]
  %.0269378 = phi i64 [ %49, %.lr.ph ], [ %.0269378.unr, %.lr.ph.prol.loopexit ]
  %34 = getelementptr inbounds double, ptr %12, i64 %.0269378
  %35 = load double, ptr %34, align 8, !tbaa !9
  %36 = fcmp oge double %35, 0.000000e+00
  %37 = fneg double %35
  %38 = select i1 %36, double %35, double %37
  %39 = fcmp oge double %.1379, %38
  %40 = select i1 %39, double %.1379, double %38
  %41 = add nuw nsw i64 %.0269378, 1
  %42 = getelementptr double, ptr %4, i64 %.0269378
  %43 = load double, ptr %42, align 8, !tbaa !9
  %44 = fcmp oge double %43, 0.000000e+00
  %45 = fneg double %43
  %46 = select i1 %44, double %43, double %45
  %47 = fcmp oge double %40, %46
  %48 = select i1 %47, double %40, double %46
  %49 = add nuw nsw i64 %.0269378, 2
  %.not354.not.1 = icmp slt i64 %41, %24
  br i1 %.not354.not.1, label %.lr.ph, label %._crit_edge, !llvm.loop !11

._crit_edge:                                      ; preds = %.lr.ph.prol.loopexit, %.lr.ph, %.lr.ph385
  %.1.lcssa = phi double [ %.0383, %.lr.ph385 ], [ %.lcssa845.unr, %.lr.ph.prol.loopexit ], [ %48, %.lr.ph ]
  %50 = add nuw i64 %storemerge352381, 1
  %exitcond.not = icmp eq i64 %storemerge352381, %20
  %indvar.next847 = add i64 %indvar846, 1
  br i1 %exitcond.not, label %.loopexit365, label %.lr.ph385, !llvm.loop !13

51:                                               ; preds = %21
  br i1 %.not343430, label %.loopexit365, label %.lr.ph403

.lr.ph403:                                        ; preds = %51, %._crit_edge394
  %.2401 = phi double [ %.3.lcssa, %._crit_edge394 ], [ 1.000000e+00, %51 ]
  %.1258400 = phi i64 [ %61, %._crit_edge394 ], [ 1, %51 ]
  %storemerge349399 = phi i64 [ %62, %._crit_edge394 ], [ 1, %51 ]
  %52 = sub nsw i64 %20, %storemerge349399
  %53 = add i64 %52, %.1258400
  %.not351.not389 = icmp slt i64 %.1258400, %53
  br i1 %.not351.not389, label %.lr.ph393, label %._crit_edge394

.lr.ph393:                                        ; preds = %.lr.ph403, %.lr.ph393
  %.3391 = phi double [ %60, %.lr.ph393 ], [ %.2401, %.lr.ph403 ]
  %.1270.in390 = phi i64 [ %.1270, %.lr.ph393 ], [ %.1258400, %.lr.ph403 ]
  %.1270 = add nsw i64 %.1270.in390, 1
  %54 = getelementptr double, ptr %4, i64 %.1270.in390
  %55 = load double, ptr %54, align 8, !tbaa !9
  %56 = fcmp oge double %55, 0.000000e+00
  %57 = fneg double %55
  %58 = select i1 %56, double %55, double %57
  %59 = fcmp oge double %.3391, %58
  %60 = select i1 %59, double %.3391, double %58
  %.not351.not = icmp slt i64 %.1270, %53
  br i1 %.not351.not, label %.lr.ph393, label %._crit_edge394, !llvm.loop !14

._crit_edge394:                                   ; preds = %.lr.ph393, %.lr.ph403
  %.3.lcssa = phi double [ %.2401, %.lr.ph403 ], [ %60, %.lr.ph393 ]
  %61 = add nsw i64 %53, 1
  %62 = add nuw i64 %storemerge349399, 1
  %exitcond625.not = icmp eq i64 %storemerge349399, %20
  br i1 %exitcond625.not, label %.loopexit365, label %.lr.ph403, !llvm.loop !15

63:                                               ; preds = %17
  br i1 %.not341, label %77, label %64

64:                                               ; preds = %63
  br i1 %.not343430, label %.loopexit365, label %.lr.ph416

.lr.ph416:                                        ; preds = %64, %75
  %.4414 = phi double [ %73, %75 ], [ 0.000000e+00, %64 ]
  %.2259413 = phi i64 [ %65, %75 ], [ 1, %64 ]
  %storemerge345412 = phi i64 [ %76, %75 ], [ 1, %64 ]
  %65 = add nuw nsw i64 %.2259413, %storemerge345412
  br label %66

66:                                               ; preds = %.lr.ph416, %66
  %.5408 = phi double [ %.4414, %.lr.ph416 ], [ %73, %66 ]
  %.2271407 = phi i64 [ %.2259413, %.lr.ph416 ], [ %74, %66 ]
  %67 = getelementptr inbounds double, ptr %12, i64 %.2271407
  %68 = load double, ptr %67, align 8, !tbaa !9
  %69 = fcmp oge double %68, 0.000000e+00
  %70 = fneg double %68
  %71 = select i1 %69, double %68, double %70
  %72 = fcmp oge double %.5408, %71
  %73 = select i1 %72, double %.5408, double %71
  %74 = add nuw nsw i64 %.2271407, 1
  %.not347.not = icmp ult i64 %74, %65
  br i1 %.not347.not, label %66, label %75, !llvm.loop !16

75:                                               ; preds = %66
  %76 = add nuw i64 %storemerge345412, 1
  %exitcond626.not = icmp eq i64 %storemerge345412, %20
  br i1 %exitcond626.not, label %.loopexit365, label %.lr.ph416, !llvm.loop !17

77:                                               ; preds = %63
  br i1 %.not343430, label %.loopexit365, label %.lr.ph435

.lr.ph435:                                        ; preds = %77, %._crit_edge426
  %.6433 = phi double [ %.7.lcssa, %._crit_edge426 ], [ 0.000000e+00, %77 ]
  %.3260432 = phi i64 [ %88, %._crit_edge426 ], [ 1, %77 ]
  %storemerge342431 = phi i64 [ %89, %._crit_edge426 ], [ 1, %77 ]
  %78 = sub nsw i64 %20, %storemerge342431
  %79 = add i64 %78, %.3260432
  %.not344421 = icmp sgt i64 %.3260432, %79
  br i1 %.not344421, label %._crit_edge426, label %.lr.ph425

.lr.ph425:                                        ; preds = %.lr.ph435, %.lr.ph425
  %.7423 = phi double [ %86, %.lr.ph425 ], [ %.6433, %.lr.ph435 ]
  %.3272422 = phi i64 [ %87, %.lr.ph425 ], [ %.3260432, %.lr.ph435 ]
  %80 = getelementptr inbounds double, ptr %12, i64 %.3272422
  %81 = load double, ptr %80, align 8, !tbaa !9
  %82 = fcmp oge double %81, 0.000000e+00
  %83 = fneg double %81
  %84 = select i1 %82, double %81, double %83
  %85 = fcmp oge double %.7423, %84
  %86 = select i1 %85, double %.7423, double %84
  %87 = add nsw i64 %.3272422, 1
  %.not344.not = icmp slt i64 %.3272422, %79
  br i1 %.not344.not, label %.lr.ph425, label %._crit_edge426, !llvm.loop !18

._crit_edge426:                                   ; preds = %.lr.ph425, %.lr.ph435
  %.7.lcssa = phi double [ %.6433, %.lr.ph435 ], [ %86, %.lr.ph425 ]
  %88 = add nsw i64 %79, 1
  %89 = add nuw i64 %storemerge342431, 1
  %exitcond627.not = icmp eq i64 %storemerge342431, %20
  br i1 %exitcond627.not, label %.loopexit365, label %.lr.ph435, !llvm.loop !19

90:                                               ; preds = %15
  %91 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #6
  %.not295 = icmp eq i64 %91, 0
  br i1 %.not295, label %92, label %95

92:                                               ; preds = %90
  %93 = load i8, ptr %0, align 1, !tbaa !20
  %94 = icmp eq i8 %93, 49
  br i1 %94, label %95, label %167

95:                                               ; preds = %92, %90
  %96 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.1) #6
  %97 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %.not329 = icmp eq i64 %97, 0
  %98 = load i64, ptr %3, align 8, !tbaa !5
  %.not331577 = icmp slt i64 %98, 1
  br i1 %.not329, label %138, label %99

99:                                               ; preds = %95
  br i1 %.not331577, label %.loopexit365, label %.lr.ph553

.lr.ph553:                                        ; preds = %99
  %.not337 = icmp eq i64 %96, 0
  br label %100

100:                                              ; preds = %.lr.ph553, %.loopexit358
  %indvar857 = phi i64 [ 0, %.lr.ph553 ], [ %indvar.next858, %.loopexit358 ]
  %.8551 = phi double [ 0.000000e+00, %.lr.ph553 ], [ %136, %.loopexit358 ]
  %.4261549 = phi i64 [ 1, %.lr.ph553 ], [ %101, %.loopexit358 ]
  %storemerge335548 = phi i64 [ 1, %.lr.ph553 ], [ %137, %.loopexit358 ]
  %101 = add nuw nsw i64 %.4261549, %storemerge335548
  br i1 %.not337, label %.preheader, label %102

102:                                              ; preds = %100
  %103 = add nsw i64 %101, -2
  %.not339534 = icmp sgt i64 %.4261549, %103
  br i1 %.not339534, label %.loopexit358, label %.lr.ph537.preheader

.lr.ph537.preheader:                              ; preds = %102
  %xtraiter859 = and i64 %indvar857, 1
  %lcmp.mod860.not = icmp eq i64 %xtraiter859, 0
  br i1 %lcmp.mod860.not, label %.lr.ph537.prol.loopexit, label %.lr.ph537.prol

.lr.ph537.prol:                                   ; preds = %.lr.ph537.preheader
  %104 = getelementptr inbounds double, ptr %12, i64 %.4261549
  %105 = load double, ptr %104, align 8, !tbaa !9
  %106 = fcmp oge double %105, 0.000000e+00
  %107 = fneg double %105
  %108 = select i1 %106, double %105, double %107
  %109 = fadd double %108, 1.000000e+00
  %110 = add nuw nsw i64 %.4261549, 1
  br label %.lr.ph537.prol.loopexit

.lr.ph537.prol.loopexit:                          ; preds = %.lr.ph537.prol, %.lr.ph537.preheader
  %.4273535.unr = phi i64 [ %.4261549, %.lr.ph537.preheader ], [ %110, %.lr.ph537.prol ]
  %.unr = phi double [ 1.000000e+00, %.lr.ph537.preheader ], [ %109, %.lr.ph537.prol ]
  %.lcssa821.unr = phi double [ poison, %.lr.ph537.preheader ], [ %109, %.lr.ph537.prol ]
  %111 = icmp eq i64 %indvar857, 1
  br i1 %111, label %.loopexit358, label %.lr.ph537

.lr.ph537:                                        ; preds = %.lr.ph537.prol.loopexit, %.lr.ph537
  %.4273535 = phi i64 [ %126, %.lr.ph537 ], [ %.4273535.unr, %.lr.ph537.prol.loopexit ]
  %112 = phi double [ %125, %.lr.ph537 ], [ %.unr, %.lr.ph537.prol.loopexit ]
  %113 = getelementptr inbounds double, ptr %12, i64 %.4273535
  %114 = load double, ptr %113, align 8, !tbaa !9
  %115 = fcmp oge double %114, 0.000000e+00
  %116 = fneg double %114
  %117 = select i1 %115, double %114, double %116
  %118 = fadd double %112, %117
  %119 = add nuw nsw i64 %.4273535, 1
  %120 = getelementptr double, ptr %4, i64 %.4273535
  %121 = load double, ptr %120, align 8, !tbaa !9
  %122 = fcmp oge double %121, 0.000000e+00
  %123 = fneg double %121
  %124 = select i1 %122, double %121, double %123
  %125 = fadd double %118, %124
  %126 = add nuw nsw i64 %.4273535, 2
  %.not339.not.1 = icmp slt i64 %119, %103
  br i1 %.not339.not.1, label %.lr.ph537, label %.loopexit358, !llvm.loop !21

.preheader:                                       ; preds = %100, %.preheader
  %.5274541 = phi i64 [ %134, %.preheader ], [ %.4261549, %100 ]
  %127 = phi double [ %133, %.preheader ], [ 0.000000e+00, %100 ]
  %128 = getelementptr inbounds double, ptr %12, i64 %.5274541
  %129 = load double, ptr %128, align 8, !tbaa !9
  %130 = fcmp oge double %129, 0.000000e+00
  %131 = fneg double %129
  %132 = select i1 %130, double %129, double %131
  %133 = fadd double %127, %132
  %134 = add nuw nsw i64 %.5274541, 1
  %.not338.not = icmp ult i64 %134, %101
  br i1 %.not338.not, label %.preheader, label %.loopexit358, !llvm.loop !22

.loopexit358:                                     ; preds = %.lr.ph537.prol.loopexit, %.lr.ph537, %.preheader, %102
  %.lcssa540543 = phi double [ 1.000000e+00, %102 ], [ %133, %.preheader ], [ %.lcssa821.unr, %.lr.ph537.prol.loopexit ], [ %125, %.lr.ph537 ]
  %135 = fcmp oge double %.8551, %.lcssa540543
  %136 = select i1 %135, double %.8551, double %.lcssa540543
  %137 = add nuw i64 %storemerge335548, 1
  %exitcond637.not = icmp eq i64 %storemerge335548, %98
  %indvar.next858 = add i64 %indvar857, 1
  br i1 %exitcond637.not, label %.loopexit365, label %100, !llvm.loop !23

138:                                              ; preds = %95
  br i1 %.not331577, label %.loopexit365, label %.lr.ph584

.lr.ph584:                                        ; preds = %138
  %.not332 = icmp eq i64 %96, 0
  %139 = add nuw i64 %98, 1
  br label %140

140:                                              ; preds = %.lr.ph584, %.loopexit
  %storemerge330.neg582 = phi i64 [ -1, %.lr.ph584 ], [ %storemerge330.neg, %.loopexit ]
  %.9581 = phi double [ 0.000000e+00, %.lr.ph584 ], [ %165, %.loopexit ]
  %.5262579 = phi i64 [ 1, %.lr.ph584 ], [ %163, %.loopexit ]
  %storemerge330578 = phi i64 [ 1, %.lr.ph584 ], [ %166, %.loopexit ]
  br i1 %.not332, label %151, label %141

141:                                              ; preds = %140
  %142 = add i64 %storemerge330.neg582, %98
  %143 = add i64 %142, %.5262579
  %.not334.not560 = icmp slt i64 %.5262579, %143
  br i1 %.not334.not560, label %.lr.ph563, label %.loopexit

.lr.ph563:                                        ; preds = %141, %.lr.ph563
  %.6275.in561 = phi i64 [ %.6275, %.lr.ph563 ], [ %.5262579, %141 ]
  %144 = phi double [ %150, %.lr.ph563 ], [ 1.000000e+00, %141 ]
  %.6275 = add nsw i64 %.6275.in561, 1
  %145 = getelementptr double, ptr %4, i64 %.6275.in561
  %146 = load double, ptr %145, align 8, !tbaa !9
  %147 = fcmp oge double %146, 0.000000e+00
  %148 = fneg double %146
  %149 = select i1 %147, double %146, double %148
  %150 = fadd double %144, %149
  %.not334.not = icmp slt i64 %.6275, %143
  br i1 %.not334.not, label %.lr.ph563, label %.loopexit, !llvm.loop !24

151:                                              ; preds = %140
  %152 = add nsw i64 %.5262579, %98
  %153 = add i64 %152, %storemerge330.neg582
  %.not333567 = icmp sgt i64 %.5262579, %153
  br i1 %.not333567, label %.loopexit, label %.lr.ph570

.lr.ph570:                                        ; preds = %151, %.lr.ph570
  %.7276568 = phi i64 [ %161, %.lr.ph570 ], [ %.5262579, %151 ]
  %154 = phi double [ %160, %.lr.ph570 ], [ 0.000000e+00, %151 ]
  %155 = getelementptr inbounds double, ptr %12, i64 %.7276568
  %156 = load double, ptr %155, align 8, !tbaa !9
  %157 = fcmp oge double %156, 0.000000e+00
  %158 = fneg double %156
  %159 = select i1 %157, double %156, double %158
  %160 = fadd double %154, %159
  %161 = add nsw i64 %.7276568, 1
  %.not333.not = icmp slt i64 %.7276568, %153
  br i1 %.not333.not, label %.lr.ph570, label %.loopexit, !llvm.loop !25

.loopexit:                                        ; preds = %.lr.ph563, %.lr.ph570, %141, %151
  %.lcssa566573 = phi double [ 0.000000e+00, %151 ], [ 1.000000e+00, %141 ], [ %160, %.lr.ph570 ], [ %150, %.lr.ph563 ]
  %162 = add i64 %139, %storemerge330.neg582
  %163 = add i64 %162, %.5262579
  %164 = fcmp oge double %.9581, %.lcssa566573
  %165 = select i1 %164, double %.9581, double %.lcssa566573
  %166 = add nuw i64 %storemerge330578, 1
  %storemerge330.neg = xor i64 %storemerge330578, -1
  %exitcond638.not = icmp eq i64 %storemerge330578, %98
  br i1 %exitcond638.not, label %.loopexit365, label %140, !llvm.loop !26

167:                                              ; preds = %92
  %168 = tail call i64 @lsame_(ptr noundef nonnull %0, ptr noundef nonnull @.str.3) #6
  %.not296 = icmp eq i64 %168, 0
  br i1 %.not296, label %380, label %169

169:                                              ; preds = %167
  %170 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %.not309 = icmp eq i64 %170, 0
  %171 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.1) #6
  %.not310 = icmp eq i64 %171, 0
  %172 = load i64, ptr %3, align 8, !tbaa !5
  %.not311493 = icmp slt i64 %172, 1
  br i1 %.not309, label %290, label %173

173:                                              ; preds = %169
  br i1 %.not310, label %235, label %174

174:                                              ; preds = %173
  br i1 %.not311493, label %.loopexit366, label %.lr.ph442.preheader

.lr.ph442.preheader:                              ; preds = %174
  %min.iters.check = icmp ult i64 %172, 4
  br i1 %min.iters.check, label %.lr.ph442.preheader837, label %vector.ph

.lr.ph442.preheader837:                           ; preds = %middle.block, %.lr.ph442.preheader
  %.8277440.ph = phi i64 [ 1, %.lr.ph442.preheader ], [ %ind.end, %middle.block ]
  br label %.lr.ph442

vector.ph:                                        ; preds = %.lr.ph442.preheader
  %n.vec = and i64 %172, 9223372036854775804
  %ind.end = or disjoint i64 %n.vec, 1
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %175 = getelementptr double, ptr %5, i64 %index
  %176 = getelementptr inbounds i8, ptr %175, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %175, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %176, align 8, !tbaa !9
  %index.next = add nuw i64 %index, 4
  %177 = icmp eq i64 %index.next, %n.vec
  br i1 %177, label %middle.block, label %vector.body, !llvm.loop !27

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %172, %n.vec
  br i1 %cmp.n, label %.preheader371, label %.lr.ph442.preheader837

.preheader371:                                    ; preds = %.lr.ph442, %middle.block
  br i1 %.not311493, label %.loopexit366, label %.lr.ph455

.lr.ph442:                                        ; preds = %.lr.ph442.preheader837, %.lr.ph442
  %.8277440 = phi i64 [ %179, %.lr.ph442 ], [ %.8277440.ph, %.lr.ph442.preheader837 ]
  %178 = getelementptr inbounds double, ptr %11, i64 %.8277440
  store double 1.000000e+00, ptr %178, align 8, !tbaa !9
  %179 = add nuw i64 %.8277440, 1
  %exitcond628.not = icmp eq i64 %.8277440, %172
  br i1 %exitcond628.not, label %.preheader371, label %.lr.ph442, !llvm.loop !30

.lr.ph455:                                        ; preds = %.preheader371, %._crit_edge448
  %scev.check.iv683 = phi ptr [ %scevgep684, %._crit_edge448 ], [ %4, %.preheader371 ]
  %scev.check.iv = phi ptr [ %scevgep682, %._crit_edge448 ], [ %4, %.preheader371 ]
  %indvars.iv = phi i64 [ %indvars.iv.next, %._crit_edge448 ], [ 0, %.preheader371 ]
  %.6263454 = phi i64 [ %233, %._crit_edge448 ], [ 1, %.preheader371 ]
  %storemerge325453 = phi i64 [ %234, %._crit_edge448 ], [ 1, %.preheader371 ]
  %180 = add nsw i64 %indvars.iv, -1
  %181 = shl i64 %indvars.iv, 3
  %182 = add i64 %181, 16
  %183 = shl i64 %indvars.iv, 3
  %184 = add i64 %183, 8
  %185 = shl i64 %indvars.iv, 3
  %scevgep = getelementptr i8, ptr %5, i64 %185
  %.not328.not443 = icmp ugt i64 %storemerge325453, 1
  br i1 %.not328.not443, label %.lr.ph447.preheader, label %._crit_edge448

.lr.ph447.preheader:                              ; preds = %.lr.ph455
  %186 = add i64 %.6263454, %indvars.iv
  %min.iters.check687 = icmp ult i64 %indvars.iv, 4
  br i1 %min.iters.check687, label %.lr.ph447.preheader835, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph447.preheader
  %bound0 = icmp ugt ptr %scev.check.iv683, %5
  %bound1 = icmp ult ptr %scev.check.iv, %scevgep
  %found.conflict = and i1 %bound0, %bound1
  br i1 %found.conflict, label %.lr.ph447.preheader835, label %vector.ph688

vector.ph688:                                     ; preds = %vector.memcheck
  %n.vec690 = and i64 %indvars.iv, 9223372036854775804
  %ind.end691 = add i64 %.6263454, %n.vec690
  %ind.end693 = or disjoint i64 %n.vec690, 1
  %187 = getelementptr double, ptr %12, i64 %.6263454
  br label %vector.body695

vector.body695:                                   ; preds = %vector.body695, %vector.ph688
  %index696 = phi i64 [ 0, %vector.ph688 ], [ %index.next702, %vector.body695 ]
  %188 = getelementptr double, ptr %187, i64 %index696
  %189 = getelementptr inbounds i8, ptr %188, i64 16
  %wide.load = load <2 x double>, ptr %188, align 8, !tbaa !9, !alias.scope !31
  %wide.load699 = load <2 x double>, ptr %189, align 8, !tbaa !9, !alias.scope !31
  %190 = fcmp oge <2 x double> %wide.load, zeroinitializer
  %191 = fcmp oge <2 x double> %wide.load699, zeroinitializer
  %192 = fneg <2 x double> %wide.load
  %193 = fneg <2 x double> %wide.load699
  %194 = select <2 x i1> %190, <2 x double> %wide.load, <2 x double> %192
  %195 = select <2 x i1> %191, <2 x double> %wide.load699, <2 x double> %193
  %196 = getelementptr double, ptr %5, i64 %index696
  %197 = getelementptr inbounds i8, ptr %196, i64 16
  %wide.load700 = load <2 x double>, ptr %196, align 8, !tbaa !9, !alias.scope !34, !noalias !31
  %wide.load701 = load <2 x double>, ptr %197, align 8, !tbaa !9, !alias.scope !34, !noalias !31
  %198 = fadd <2 x double> %wide.load700, %194
  %199 = fadd <2 x double> %wide.load701, %195
  store <2 x double> %198, ptr %196, align 8, !tbaa !9, !alias.scope !34, !noalias !31
  store <2 x double> %199, ptr %197, align 8, !tbaa !9, !alias.scope !34, !noalias !31
  %index.next702 = add nuw i64 %index696, 4
  %200 = icmp eq i64 %index.next702, %n.vec690
  br i1 %200, label %middle.block685, label %vector.body695, !llvm.loop !36

middle.block685:                                  ; preds = %vector.body695
  %cmp.n703 = icmp eq i64 %indvars.iv, %n.vec690
  br i1 %cmp.n703, label %._crit_edge448, label %.lr.ph447.preheader835

.lr.ph447.preheader835:                           ; preds = %middle.block685, %vector.memcheck, %.lr.ph447.preheader
  %.7264445.ph = phi i64 [ %.6263454, %vector.memcheck ], [ %.6263454, %.lr.ph447.preheader ], [ %ind.end691, %middle.block685 ]
  %.9278444.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph447.preheader ], [ %ind.end693, %middle.block685 ]
  %201 = add i64 %.6263454, %indvars.iv
  %202 = sub i64 %201, %.7264445.ph
  %203 = add i64 %.6263454, %180
  %xtraiter848 = and i64 %202, 1
  %lcmp.mod849.not = icmp eq i64 %xtraiter848, 0
  br i1 %lcmp.mod849.not, label %.lr.ph447.prol.loopexit, label %.lr.ph447.prol

.lr.ph447.prol:                                   ; preds = %.lr.ph447.preheader835
  %204 = getelementptr inbounds double, ptr %12, i64 %.7264445.ph
  %205 = load double, ptr %204, align 8, !tbaa !9
  %206 = fcmp oge double %205, 0.000000e+00
  %207 = fneg double %205
  %208 = select i1 %206, double %205, double %207
  %209 = getelementptr inbounds double, ptr %11, i64 %.9278444.ph
  %210 = load double, ptr %209, align 8, !tbaa !9
  %211 = fadd double %210, %208
  store double %211, ptr %209, align 8, !tbaa !9
  %212 = add i64 %.7264445.ph, 1
  %213 = add nuw nsw i64 %.9278444.ph, 1
  br label %.lr.ph447.prol.loopexit

.lr.ph447.prol.loopexit:                          ; preds = %.lr.ph447.prol, %.lr.ph447.preheader835
  %.7264445.unr = phi i64 [ %.7264445.ph, %.lr.ph447.preheader835 ], [ %212, %.lr.ph447.prol ]
  %.9278444.unr = phi i64 [ %.9278444.ph, %.lr.ph447.preheader835 ], [ %213, %.lr.ph447.prol ]
  %214 = icmp eq i64 %203, %.7264445.ph
  br i1 %214, label %._crit_edge448, label %.lr.ph447

.lr.ph447:                                        ; preds = %.lr.ph447.prol.loopexit, %.lr.ph447
  %.7264445 = phi i64 [ %231, %.lr.ph447 ], [ %.7264445.unr, %.lr.ph447.prol.loopexit ]
  %.9278444 = phi i64 [ %232, %.lr.ph447 ], [ %.9278444.unr, %.lr.ph447.prol.loopexit ]
  %215 = getelementptr inbounds double, ptr %12, i64 %.7264445
  %216 = load double, ptr %215, align 8, !tbaa !9
  %217 = fcmp oge double %216, 0.000000e+00
  %218 = fneg double %216
  %219 = select i1 %217, double %216, double %218
  %220 = getelementptr inbounds double, ptr %11, i64 %.9278444
  %221 = load double, ptr %220, align 8, !tbaa !9
  %222 = fadd double %221, %219
  store double %222, ptr %220, align 8, !tbaa !9
  %223 = getelementptr double, ptr %4, i64 %.7264445
  %224 = load double, ptr %223, align 8, !tbaa !9
  %225 = fcmp oge double %224, 0.000000e+00
  %226 = fneg double %224
  %227 = select i1 %225, double %224, double %226
  %228 = getelementptr double, ptr %5, i64 %.9278444
  %229 = load double, ptr %228, align 8, !tbaa !9
  %230 = fadd double %229, %227
  store double %230, ptr %228, align 8, !tbaa !9
  %231 = add i64 %.7264445, 2
  %232 = add nuw nsw i64 %.9278444, 2
  %exitcond629.not.1 = icmp eq i64 %231, %186
  br i1 %exitcond629.not.1, label %._crit_edge448, label %.lr.ph447, !llvm.loop !37

._crit_edge448:                                   ; preds = %.lr.ph447.prol.loopexit, %.lr.ph447, %middle.block685, %.lr.ph455
  %.7264.lcssa = phi i64 [ %.6263454, %.lr.ph455 ], [ %186, %middle.block685 ], [ %186, %.lr.ph447 ], [ %186, %.lr.ph447.prol.loopexit ]
  %233 = add nsw i64 %.7264.lcssa, 1
  %234 = add nuw nsw i64 %storemerge325453, 1
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond630.not = icmp eq i64 %indvars.iv.next, %172
  %scevgep682 = getelementptr i8, ptr %scev.check.iv, i64 %184
  %scevgep684 = getelementptr i8, ptr %scev.check.iv683, i64 %182
  br i1 %exitcond630.not, label %.loopexit366, label %.lr.ph455, !llvm.loop !38

235:                                              ; preds = %173
  br i1 %.not311493, label %.loopexit366, label %.lr.ph469.preheader

.lr.ph469.preheader:                              ; preds = %235
  %236 = shl nuw i64 %172, 3
  tail call void @llvm.memset.p0.i64(ptr align 8 %5, i8 0, i64 %236, i1 false), !tbaa !9
  %scevgep708 = getelementptr i8, ptr %4, i64 8
  %invariant.gep = getelementptr i8, ptr %5, i64 8
  br label %.lr.ph469

.lr.ph469:                                        ; preds = %.lr.ph469.preheader, %.loopexit815
  %loop-unroll.iv850 = phi i64 [ 1, %.lr.ph469.preheader ], [ %loop-unroll.iv.next851, %.loopexit815 ]
  %loop-unroll.iv = phi i64 [ 2, %.lr.ph469.preheader ], [ %loop-unroll.iv.next, %.loopexit815 ]
  %scev.check.iv709 = phi ptr [ %scevgep708, %.lr.ph469.preheader ], [ %scevgep710, %.loopexit815 ]
  %scev.check.iv706 = phi ptr [ %4, %.lr.ph469.preheader ], [ %scevgep707, %.loopexit815 ]
  %indvar = phi i64 [ 0, %.lr.ph469.preheader ], [ %indvar.next, %.loopexit815 ]
  %.8265468 = phi i64 [ 1, %.lr.ph469.preheader ], [ %243, %.loopexit815 ]
  %storemerge321467 = phi i64 [ 1, %.lr.ph469.preheader ], [ %289, %.loopexit815 ]
  %237 = add i64 %indvar, 2
  %238 = add i64 %indvar, 2
  %239 = shl i64 %indvar, 3
  %240 = add i64 %239, 16
  %241 = shl i64 %indvar, 3
  %242 = add i64 %241, 8
  %243 = add i64 %.8265468, %storemerge321467
  %min.iters.check716 = icmp ult i64 %storemerge321467, 4
  br i1 %min.iters.check716, label %scalar.ph715.preheader, label %vector.memcheck704

vector.memcheck704:                               ; preds = %.lr.ph469
  %244 = shl i64 %indvar, 3
  %gep = getelementptr i8, ptr %invariant.gep, i64 %244
  %bound0711 = icmp ugt ptr %scev.check.iv709, %5
  %bound1712 = icmp ult ptr %scev.check.iv706, %gep
  %found.conflict713 = and i1 %bound0711, %bound1712
  br i1 %found.conflict713, label %scalar.ph715.preheader, label %vector.ph717

vector.ph717:                                     ; preds = %vector.memcheck704
  %n.vec719 = and i64 %storemerge321467, -4
  %ind.end720 = add i64 %.8265468, %n.vec719
  %ind.end722 = or disjoint i64 %n.vec719, 1
  %245 = getelementptr double, ptr %12, i64 %.8265468
  br label %vector.body724

vector.body724:                                   ; preds = %vector.body724, %vector.ph717
  %index725 = phi i64 [ 0, %vector.ph717 ], [ %index.next732, %vector.body724 ]
  %246 = getelementptr double, ptr %245, i64 %index725
  %247 = getelementptr inbounds i8, ptr %246, i64 16
  %wide.load728 = load <2 x double>, ptr %246, align 8, !tbaa !9, !alias.scope !39
  %wide.load729 = load <2 x double>, ptr %247, align 8, !tbaa !9, !alias.scope !39
  %248 = fcmp oge <2 x double> %wide.load728, zeroinitializer
  %249 = fcmp oge <2 x double> %wide.load729, zeroinitializer
  %250 = fneg <2 x double> %wide.load728
  %251 = fneg <2 x double> %wide.load729
  %252 = select <2 x i1> %248, <2 x double> %wide.load728, <2 x double> %250
  %253 = select <2 x i1> %249, <2 x double> %wide.load729, <2 x double> %251
  %254 = getelementptr double, ptr %5, i64 %index725
  %255 = getelementptr inbounds i8, ptr %254, i64 16
  %wide.load730 = load <2 x double>, ptr %254, align 8, !tbaa !9, !alias.scope !42, !noalias !39
  %wide.load731 = load <2 x double>, ptr %255, align 8, !tbaa !9, !alias.scope !42, !noalias !39
  %256 = fadd <2 x double> %wide.load730, %252
  %257 = fadd <2 x double> %wide.load731, %253
  store <2 x double> %256, ptr %254, align 8, !tbaa !9, !alias.scope !42, !noalias !39
  store <2 x double> %257, ptr %255, align 8, !tbaa !9, !alias.scope !42, !noalias !39
  %index.next732 = add nuw i64 %index725, 4
  %258 = icmp eq i64 %index.next732, %n.vec719
  br i1 %258, label %middle.block714, label %vector.body724, !llvm.loop !44

middle.block714:                                  ; preds = %vector.body724
  %cmp.n733 = icmp eq i64 %storemerge321467, %n.vec719
  br i1 %cmp.n733, label %.loopexit815, label %scalar.ph715.preheader

scalar.ph715.preheader:                           ; preds = %middle.block714, %vector.memcheck704, %.lr.ph469
  %.9266463.ph = phi i64 [ %.8265468, %vector.memcheck704 ], [ %.8265468, %.lr.ph469 ], [ %ind.end720, %middle.block714 ]
  %.11280462.ph = phi i64 [ 1, %vector.memcheck704 ], [ 1, %.lr.ph469 ], [ %ind.end722, %middle.block714 ]
  %259 = sub i64 %loop-unroll.iv, %.9266463.ph
  %xtraiter852 = and i64 %259, 1
  %lcmp.mod853.not = icmp eq i64 %xtraiter852, 0
  br i1 %lcmp.mod853.not, label %scalar.ph715.prol.loopexit, label %scalar.ph715.prol

scalar.ph715.prol:                                ; preds = %scalar.ph715.preheader
  %260 = getelementptr inbounds double, ptr %12, i64 %.9266463.ph
  %261 = load double, ptr %260, align 8, !tbaa !9
  %262 = fcmp oge double %261, 0.000000e+00
  %263 = fneg double %261
  %264 = select i1 %262, double %261, double %263
  %265 = getelementptr inbounds double, ptr %11, i64 %.11280462.ph
  %266 = load double, ptr %265, align 8, !tbaa !9
  %267 = fadd double %266, %264
  store double %267, ptr %265, align 8, !tbaa !9
  %268 = add i64 %.9266463.ph, 1
  %269 = add nuw nsw i64 %.11280462.ph, 1
  br label %scalar.ph715.prol.loopexit

scalar.ph715.prol.loopexit:                       ; preds = %scalar.ph715.prol, %scalar.ph715.preheader
  %.9266463.unr = phi i64 [ %.9266463.ph, %scalar.ph715.preheader ], [ %268, %scalar.ph715.prol ]
  %.11280462.unr = phi i64 [ %.11280462.ph, %scalar.ph715.preheader ], [ %269, %scalar.ph715.prol ]
  %270 = icmp eq i64 %loop-unroll.iv850, %.9266463.ph
  br i1 %270, label %.loopexit815, label %scalar.ph715

scalar.ph715:                                     ; preds = %scalar.ph715.prol.loopexit, %scalar.ph715
  %.9266463 = phi i64 [ %287, %scalar.ph715 ], [ %.9266463.unr, %scalar.ph715.prol.loopexit ]
  %.11280462 = phi i64 [ %288, %scalar.ph715 ], [ %.11280462.unr, %scalar.ph715.prol.loopexit ]
  %271 = getelementptr inbounds double, ptr %12, i64 %.9266463
  %272 = load double, ptr %271, align 8, !tbaa !9
  %273 = fcmp oge double %272, 0.000000e+00
  %274 = fneg double %272
  %275 = select i1 %273, double %272, double %274
  %276 = getelementptr inbounds double, ptr %11, i64 %.11280462
  %277 = load double, ptr %276, align 8, !tbaa !9
  %278 = fadd double %277, %275
  store double %278, ptr %276, align 8, !tbaa !9
  %279 = getelementptr double, ptr %4, i64 %.9266463
  %280 = load double, ptr %279, align 8, !tbaa !9
  %281 = fcmp oge double %280, 0.000000e+00
  %282 = fneg double %280
  %283 = select i1 %281, double %280, double %282
  %284 = getelementptr double, ptr %5, i64 %.11280462
  %285 = load double, ptr %284, align 8, !tbaa !9
  %286 = fadd double %285, %283
  store double %286, ptr %284, align 8, !tbaa !9
  %287 = add i64 %.9266463, 2
  %288 = add nuw nsw i64 %.11280462, 2
  %exitcond631.not.1 = icmp eq i64 %287, %243
  br i1 %exitcond631.not.1, label %.loopexit815, label %scalar.ph715, !llvm.loop !45

.loopexit815:                                     ; preds = %scalar.ph715.prol.loopexit, %scalar.ph715, %middle.block714
  %289 = add nuw i64 %storemerge321467, 1
  %exitcond632.not = icmp eq i64 %storemerge321467, %172
  %indvar.next = add i64 %indvar, 1
  %scevgep707 = getelementptr i8, ptr %scev.check.iv706, i64 %242
  %scevgep710 = getelementptr i8, ptr %scev.check.iv709, i64 %240
  %loop-unroll.iv.next = add i64 %loop-unroll.iv, %238
  %loop-unroll.iv.next851 = add i64 %loop-unroll.iv850, %237
  br i1 %exitcond632.not, label %.loopexit366, label %.lr.ph469, !llvm.loop !46

290:                                              ; preds = %169
  br i1 %.not310, label %329, label %291

291:                                              ; preds = %290
  br i1 %.not311493, label %.loopexit366, label %.lr.ph475.preheader

.lr.ph475.preheader:                              ; preds = %291
  %min.iters.check736 = icmp ult i64 %172, 4
  br i1 %min.iters.check736, label %.lr.ph475.preheader833, label %vector.ph737

.lr.ph475.preheader833:                           ; preds = %middle.block734, %.lr.ph475.preheader
  %.12281473.ph = phi i64 [ 1, %.lr.ph475.preheader ], [ %ind.end740, %middle.block734 ]
  br label %.lr.ph475

vector.ph737:                                     ; preds = %.lr.ph475.preheader
  %n.vec739 = and i64 %172, 9223372036854775804
  %ind.end740 = or disjoint i64 %n.vec739, 1
  br label %vector.body742

vector.body742:                                   ; preds = %vector.body742, %vector.ph737
  %index743 = phi i64 [ 0, %vector.ph737 ], [ %index.next745, %vector.body742 ]
  %292 = getelementptr double, ptr %5, i64 %index743
  %293 = getelementptr inbounds i8, ptr %292, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %292, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %293, align 8, !tbaa !9
  %index.next745 = add nuw i64 %index743, 4
  %294 = icmp eq i64 %index.next745, %n.vec739
  br i1 %294, label %middle.block734, label %vector.body742, !llvm.loop !47

middle.block734:                                  ; preds = %vector.body742
  %cmp.n746 = icmp eq i64 %172, %n.vec739
  br i1 %cmp.n746, label %.preheader367, label %.lr.ph475.preheader833

.preheader367:                                    ; preds = %.lr.ph475, %middle.block734
  br i1 %.not311493, label %.loopexit366, label %.lr.ph490.preheader

.lr.ph490.preheader:                              ; preds = %.preheader367
  %295 = shl i64 %172, 3
  %scevgep751 = getelementptr i8, ptr %5, i64 %295
  %296 = add i64 %295, -8
  %invariant.gep875 = getelementptr i8, ptr %5, i64 8
  br label %.lr.ph490

.lr.ph475:                                        ; preds = %.lr.ph475.preheader833, %.lr.ph475
  %.12281473 = phi i64 [ %298, %.lr.ph475 ], [ %.12281473.ph, %.lr.ph475.preheader833 ]
  %297 = getelementptr inbounds double, ptr %11, i64 %.12281473
  store double 1.000000e+00, ptr %297, align 8, !tbaa !9
  %298 = add nuw i64 %.12281473, 1
  %exitcond633.not = icmp eq i64 %.12281473, %172
  br i1 %exitcond633.not, label %.preheader367, label %.lr.ph475, !llvm.loop !48

.lr.ph490:                                        ; preds = %.lr.ph490.preheader, %._crit_edge483
  %indvar748 = phi i64 [ 0, %.lr.ph490.preheader ], [ %indvar.next749, %._crit_edge483 ]
  %.10267489 = phi i64 [ 1, %.lr.ph490.preheader ], [ %.11268.lcssa, %._crit_edge483 ]
  %storemerge316488 = phi i64 [ 1, %.lr.ph490.preheader ], [ %328, %._crit_edge483 ]
  %299 = xor i64 %indvar748, -1
  %300 = add i64 %172, %299
  %301 = shl i64 %indvar748, 3
  %gep876 = getelementptr i8, ptr %invariant.gep875, i64 %301
  %302 = shl i64 %indvar748, 3
  %303 = sub i64 %296, %302
  %scevgep753 = getelementptr i8, ptr %4, i64 %303
  %.11268476 = add nsw i64 %.10267489, 1
  %.not318.not477 = icmp slt i64 %storemerge316488, %172
  br i1 %.not318.not477, label %.lr.ph482.preheader, label %._crit_edge483

.lr.ph482.preheader:                              ; preds = %.lr.ph490
  %min.iters.check760 = icmp ult i64 %300, 4
  br i1 %min.iters.check760, label %.lr.ph482.preheader830, label %vector.memcheck747

vector.memcheck747:                               ; preds = %.lr.ph482.preheader
  %304 = shl i64 %.10267489, 3
  %scevgep752 = getelementptr i8, ptr %4, i64 %304
  %scevgep754 = getelementptr i8, ptr %scevgep753, i64 %304
  %bound0755 = icmp ult ptr %gep876, %scevgep754
  %bound1756 = icmp ult ptr %scevgep752, %scevgep751
  %found.conflict757 = and i1 %bound0755, %bound1756
  br i1 %found.conflict757, label %.lr.ph482.preheader830, label %vector.ph761

vector.ph761:                                     ; preds = %vector.memcheck747
  %n.vec763 = and i64 %300, -4
  %ind.end764 = add i64 %.11268476, %n.vec763
  %ind.end766 = add i64 %.10267489, %n.vec763
  %ind.end768 = add i64 %storemerge316488, %n.vec763
  %305 = getelementptr double, ptr %4, i64 %.10267489
  %306 = getelementptr double, ptr %5, i64 %storemerge316488
  br label %vector.body770

vector.body770:                                   ; preds = %vector.body770, %vector.ph761
  %index771 = phi i64 [ 0, %vector.ph761 ], [ %index.next779, %vector.body770 ]
  %307 = getelementptr double, ptr %305, i64 %index771
  %308 = getelementptr i8, ptr %307, i64 16
  %wide.load775 = load <2 x double>, ptr %307, align 8, !tbaa !9, !alias.scope !49
  %wide.load776 = load <2 x double>, ptr %308, align 8, !tbaa !9, !alias.scope !49
  %309 = fcmp oge <2 x double> %wide.load775, zeroinitializer
  %310 = fcmp oge <2 x double> %wide.load776, zeroinitializer
  %311 = fneg <2 x double> %wide.load775
  %312 = fneg <2 x double> %wide.load776
  %313 = select <2 x i1> %309, <2 x double> %wide.load775, <2 x double> %311
  %314 = select <2 x i1> %310, <2 x double> %wide.load776, <2 x double> %312
  %315 = getelementptr double, ptr %306, i64 %index771
  %316 = getelementptr i8, ptr %315, i64 16
  %wide.load777 = load <2 x double>, ptr %315, align 8, !tbaa !9, !alias.scope !52, !noalias !49
  %wide.load778 = load <2 x double>, ptr %316, align 8, !tbaa !9, !alias.scope !52, !noalias !49
  %317 = fadd <2 x double> %wide.load777, %313
  %318 = fadd <2 x double> %wide.load778, %314
  store <2 x double> %317, ptr %315, align 8, !tbaa !9, !alias.scope !52, !noalias !49
  store <2 x double> %318, ptr %316, align 8, !tbaa !9, !alias.scope !52, !noalias !49
  %index.next779 = add nuw i64 %index771, 4
  %319 = icmp eq i64 %index.next779, %n.vec763
  br i1 %319, label %middle.block758, label %vector.body770, !llvm.loop !54

middle.block758:                                  ; preds = %vector.body770
  %cmp.n780 = icmp eq i64 %300, %n.vec763
  br i1 %cmp.n780, label %._crit_edge483, label %.lr.ph482.preheader830

.lr.ph482.preheader830:                           ; preds = %middle.block758, %vector.memcheck747, %.lr.ph482.preheader
  %.11268480.ph = phi i64 [ %.11268476, %vector.memcheck747 ], [ %.11268476, %.lr.ph482.preheader ], [ %ind.end764, %middle.block758 ]
  %.11268.in479.ph = phi i64 [ %.10267489, %vector.memcheck747 ], [ %.10267489, %.lr.ph482.preheader ], [ %ind.end766, %middle.block758 ]
  %.13282.in478.ph = phi i64 [ %storemerge316488, %vector.memcheck747 ], [ %storemerge316488, %.lr.ph482.preheader ], [ %ind.end768, %middle.block758 ]
  br label %.lr.ph482

.lr.ph482:                                        ; preds = %.lr.ph482.preheader830, %.lr.ph482
  %.11268480 = phi i64 [ %.11268, %.lr.ph482 ], [ %.11268480.ph, %.lr.ph482.preheader830 ]
  %.11268.in479 = phi i64 [ %.11268480, %.lr.ph482 ], [ %.11268.in479.ph, %.lr.ph482.preheader830 ]
  %.13282.in478 = phi i64 [ %.13282, %.lr.ph482 ], [ %.13282.in478.ph, %.lr.ph482.preheader830 ]
  %.13282 = add nuw nsw i64 %.13282.in478, 1
  %320 = getelementptr double, ptr %4, i64 %.11268.in479
  %321 = load double, ptr %320, align 8, !tbaa !9
  %322 = fcmp oge double %321, 0.000000e+00
  %323 = fneg double %321
  %324 = select i1 %322, double %321, double %323
  %325 = getelementptr double, ptr %5, i64 %.13282.in478
  %326 = load double, ptr %325, align 8, !tbaa !9
  %327 = fadd double %326, %324
  store double %327, ptr %325, align 8, !tbaa !9
  %.11268 = add nsw i64 %.11268480, 1
  %.not318.not = icmp slt i64 %.13282, %172
  br i1 %.not318.not, label %.lr.ph482, label %._crit_edge483, !llvm.loop !55

._crit_edge483:                                   ; preds = %.lr.ph482, %middle.block758, %.lr.ph490
  %.11268.lcssa = phi i64 [ %.11268476, %.lr.ph490 ], [ %ind.end764, %middle.block758 ], [ %.11268, %.lr.ph482 ]
  %328 = add nuw i64 %storemerge316488, 1
  %exitcond634.not = icmp eq i64 %storemerge316488, %172
  %indvar.next749 = add i64 %indvar748, 1
  br i1 %exitcond634.not, label %.loopexit366, label %.lr.ph490, !llvm.loop !56

329:                                              ; preds = %290
  br i1 %.not311493, label %.loopexit366, label %.lr.ph504.preheader

.lr.ph504.preheader:                              ; preds = %329
  %330 = shl nuw i64 %172, 3
  tail call void @llvm.memset.p0.i64(ptr align 8 %5, i8 0, i64 %330, i1 false), !tbaa !9
  %scevgep787 = getelementptr i8, ptr %4, i64 -8
  %invariant.gep877 = getelementptr i8, ptr %5, i64 8
  br label %.lr.ph504

.lr.ph504:                                        ; preds = %.lr.ph504.preheader, %.loopexit814
  %indvar782 = phi i64 [ 0, %.lr.ph504.preheader ], [ %indvar.next783, %.loopexit814 ]
  %.12503 = phi i64 [ 1, %.lr.ph504.preheader ], [ %.lcssa676, %.loopexit814 ]
  %storemerge312502 = phi i64 [ 1, %.lr.ph504.preheader ], [ %363, %.loopexit814 ]
  %smax793 = tail call i64 @llvm.smax.i64(i64 %172, i64 %storemerge312502)
  %331 = sub i64 %smax793, %indvar782
  %min.iters.check796 = icmp ult i64 %331, 4
  br i1 %min.iters.check796, label %scalar.ph795.preheader, label %vector.memcheck781

vector.memcheck781:                               ; preds = %.lr.ph504
  %332 = shl i64 %indvar782, 3
  %gep878 = getelementptr i8, ptr %invariant.gep877, i64 %332
  %smax = tail call i64 @llvm.smax.i64(i64 %172, i64 %storemerge312502)
  %333 = xor i64 %indvar782, -1
  %334 = add i64 %smax, %333
  %335 = shl i64 %334, 3
  %scevgep786 = getelementptr i8, ptr %gep878, i64 %335
  %scevgep784 = getelementptr i8, ptr %5, i64 %332
  %336 = shl i64 %.12503, 3
  %scevgep788 = getelementptr i8, ptr %scevgep787, i64 %336
  %337 = getelementptr i8, ptr %4, i64 %336
  %scevgep789 = getelementptr i8, ptr %337, i64 %335
  %bound0790 = icmp ult ptr %scevgep784, %scevgep789
  %bound1791 = icmp ult ptr %scevgep788, %scevgep786
  %found.conflict792 = and i1 %bound0790, %bound1791
  br i1 %found.conflict792, label %scalar.ph795.preheader, label %vector.ph797

vector.ph797:                                     ; preds = %vector.memcheck781
  %n.vec799 = and i64 %331, -4
  %ind.end800 = add i64 %.12503, %n.vec799
  %ind.end802 = add i64 %storemerge312502, %n.vec799
  %338 = getelementptr double, ptr %12, i64 %.12503
  %339 = getelementptr double, ptr %11, i64 %storemerge312502
  br label %vector.body804

vector.body804:                                   ; preds = %vector.body804, %vector.ph797
  %index805 = phi i64 [ 0, %vector.ph797 ], [ %index.next812, %vector.body804 ]
  %340 = getelementptr double, ptr %338, i64 %index805
  %341 = getelementptr inbounds i8, ptr %340, i64 16
  %wide.load808 = load <2 x double>, ptr %340, align 8, !tbaa !9, !alias.scope !57
  %wide.load809 = load <2 x double>, ptr %341, align 8, !tbaa !9, !alias.scope !57
  %342 = fcmp oge <2 x double> %wide.load808, zeroinitializer
  %343 = fcmp oge <2 x double> %wide.load809, zeroinitializer
  %344 = fneg <2 x double> %wide.load808
  %345 = fneg <2 x double> %wide.load809
  %346 = select <2 x i1> %342, <2 x double> %wide.load808, <2 x double> %344
  %347 = select <2 x i1> %343, <2 x double> %wide.load809, <2 x double> %345
  %348 = getelementptr double, ptr %339, i64 %index805
  %349 = getelementptr inbounds i8, ptr %348, i64 16
  %wide.load810 = load <2 x double>, ptr %348, align 8, !tbaa !9, !alias.scope !60, !noalias !57
  %wide.load811 = load <2 x double>, ptr %349, align 8, !tbaa !9, !alias.scope !60, !noalias !57
  %350 = fadd <2 x double> %wide.load810, %346
  %351 = fadd <2 x double> %wide.load811, %347
  store <2 x double> %350, ptr %348, align 8, !tbaa !9, !alias.scope !60, !noalias !57
  store <2 x double> %351, ptr %349, align 8, !tbaa !9, !alias.scope !60, !noalias !57
  %index.next812 = add nuw i64 %index805, 4
  %352 = icmp eq i64 %index.next812, %n.vec799
  br i1 %352, label %middle.block794, label %vector.body804, !llvm.loop !62

middle.block794:                                  ; preds = %vector.body804
  %cmp.n813 = icmp eq i64 %331, %n.vec799
  br i1 %cmp.n813, label %.loopexit814, label %scalar.ph795.preheader

scalar.ph795.preheader:                           ; preds = %middle.block794, %vector.memcheck781, %.lr.ph504
  %.13498.ph = phi i64 [ %.12503, %vector.memcheck781 ], [ %.12503, %.lr.ph504 ], [ %ind.end800, %middle.block794 ]
  %.15284497.ph = phi i64 [ %storemerge312502, %vector.memcheck781 ], [ %storemerge312502, %.lr.ph504 ], [ %ind.end802, %middle.block794 ]
  br label %scalar.ph795

scalar.ph795:                                     ; preds = %scalar.ph795.preheader, %scalar.ph795
  %.13498 = phi i64 [ %361, %scalar.ph795 ], [ %.13498.ph, %scalar.ph795.preheader ]
  %.15284497 = phi i64 [ %362, %scalar.ph795 ], [ %.15284497.ph, %scalar.ph795.preheader ]
  %353 = getelementptr inbounds double, ptr %12, i64 %.13498
  %354 = load double, ptr %353, align 8, !tbaa !9
  %355 = fcmp oge double %354, 0.000000e+00
  %356 = fneg double %354
  %357 = select i1 %355, double %354, double %356
  %358 = getelementptr inbounds double, ptr %11, i64 %.15284497
  %359 = load double, ptr %358, align 8, !tbaa !9
  %360 = fadd double %359, %357
  store double %360, ptr %358, align 8, !tbaa !9
  %361 = add nsw i64 %.13498, 1
  %362 = add nuw nsw i64 %.15284497, 1
  %.not314.not = icmp slt i64 %.15284497, %172
  br i1 %.not314.not, label %scalar.ph795, label %.loopexit814, !llvm.loop !63

.loopexit814:                                     ; preds = %scalar.ph795, %middle.block794
  %.lcssa676 = phi i64 [ %ind.end800, %middle.block794 ], [ %361, %scalar.ph795 ]
  %363 = add nuw i64 %storemerge312502, 1
  %exitcond635.not = icmp eq i64 %storemerge312502, %172
  %indvar.next783 = add i64 %indvar782, 1
  br i1 %exitcond635.not, label %.loopexit366, label %.lr.ph504, !llvm.loop !64

.loopexit366:                                     ; preds = %._crit_edge448, %.loopexit815, %._crit_edge483, %.loopexit814, %.preheader371, %174, %235, %.preheader367, %291, %329
  %.not327507 = icmp slt i64 %172, 1
  br i1 %.not327507, label %.loopexit365, label %.lr.ph511.preheader

.lr.ph511.preheader:                              ; preds = %.loopexit366
  %xtraiter854 = and i64 %172, 3
  %364 = icmp ult i64 %172, 4
  br i1 %364, label %.loopexit365.loopexit827.unr-lcssa, label %.lr.ph511.preheader.new

.lr.ph511.preheader.new:                          ; preds = %.lr.ph511.preheader
  %unroll_iter = and i64 %172, 9223372036854775804
  %invariant.gep879 = getelementptr i8, ptr %11, i64 16
  %invariant.gep881 = getelementptr i8, ptr %11, i64 24
  br label %.lr.ph511

.lr.ph511:                                        ; preds = %.lr.ph511, %.lr.ph511.preheader.new
  %.10509 = phi double [ 0.000000e+00, %.lr.ph511.preheader.new ], [ %378, %.lr.ph511 ]
  %.16285508 = phi i64 [ 1, %.lr.ph511.preheader.new ], [ %379, %.lr.ph511 ]
  %niter = phi i64 [ 0, %.lr.ph511.preheader.new ], [ %niter.next.3, %.lr.ph511 ]
  %365 = getelementptr inbounds double, ptr %11, i64 %.16285508
  %366 = load double, ptr %365, align 8, !tbaa !9
  %367 = fcmp oge double %.10509, %366
  %368 = select i1 %367, double %.10509, double %366
  %369 = getelementptr double, ptr %5, i64 %.16285508
  %370 = load double, ptr %369, align 8, !tbaa !9
  %371 = fcmp oge double %368, %370
  %372 = select i1 %371, double %368, double %370
  %gep880 = getelementptr double, ptr %invariant.gep879, i64 %.16285508
  %373 = load double, ptr %gep880, align 8, !tbaa !9
  %374 = fcmp oge double %372, %373
  %375 = select i1 %374, double %372, double %373
  %gep882 = getelementptr double, ptr %invariant.gep881, i64 %.16285508
  %376 = load double, ptr %gep882, align 8, !tbaa !9
  %377 = fcmp oge double %375, %376
  %378 = select i1 %377, double %375, double %376
  %379 = add nuw i64 %.16285508, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %.loopexit365.loopexit827.unr-lcssa, label %.lr.ph511, !llvm.loop !65

380:                                              ; preds = %167
  %381 = tail call i64 @lsame_(ptr noundef nonnull %0, ptr noundef nonnull @.str.4) #6
  %.not297 = icmp eq i64 %381, 0
  br i1 %.not297, label %382, label %384

382:                                              ; preds = %380
  %383 = tail call i64 @lsame_(ptr noundef nonnull %0, ptr noundef nonnull @.str.5) #6
  %.not298 = icmp eq i64 %383, 0
  br i1 %.not298, label %.loopexit365, label %384

384:                                              ; preds = %382, %380
  %385 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %.not299 = icmp eq i64 %385, 0
  %386 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.1) #6
  %.not300 = icmp eq i64 %386, 0
  br i1 %.not299, label %403, label %387

387:                                              ; preds = %384
  br i1 %.not300, label %396, label %388

388:                                              ; preds = %387
  store double 1.000000e+00, ptr %10, align 8, !tbaa !9
  %389 = load i64, ptr %3, align 8, !tbaa !5
  %390 = sitofp i64 %389 to double
  store double %390, ptr %9, align 8, !tbaa !9
  %.not308513 = icmp slt i64 %389, 2
  br i1 %.not308513, label %.loopexit361, label %.lr.ph517

.lr.ph517:                                        ; preds = %388, %.lr.ph517
  %391 = phi i64 [ %395, %.lr.ph517 ], [ 2, %388 ]
  %.14515 = phi i64 [ %394, %.lr.ph517 ], [ 2, %388 ]
  %storemerge307514 = phi i64 [ %391, %.lr.ph517 ], [ 1, %388 ]
  store i64 %storemerge307514, ptr %7, align 8, !tbaa !5
  %392 = getelementptr inbounds double, ptr %12, i64 %.14515
  %393 = call i32 @dlassq_(ptr noundef nonnull %7, ptr noundef nonnull %392, ptr noundef nonnull @c__1, ptr noundef nonnull %10, ptr noundef nonnull %9) #6
  %394 = add nuw nsw i64 %391, %.14515
  %395 = add nuw nsw i64 %391, 1
  %.not308.not = icmp slt i64 %391, %389
  br i1 %.not308.not, label %.lr.ph517, label %.loopexit361, !llvm.loop !66

396:                                              ; preds = %387
  store double 0.000000e+00, ptr %10, align 8, !tbaa !9
  store double 1.000000e+00, ptr %9, align 8, !tbaa !9
  %397 = load i64, ptr %3, align 8, !tbaa !5
  store i64 1, ptr %8, align 8, !tbaa !5
  %.not306518 = icmp slt i64 %397, 1
  br i1 %.not306518, label %.loopexit361, label %.lr.ph521

.lr.ph521:                                        ; preds = %396, %.lr.ph521
  %.15519 = phi i64 [ %401, %.lr.ph521 ], [ 1, %396 ]
  %398 = getelementptr inbounds double, ptr %12, i64 %.15519
  %399 = call i32 @dlassq_(ptr noundef nonnull %8, ptr noundef nonnull %398, ptr noundef nonnull @c__1, ptr noundef nonnull %10, ptr noundef nonnull %9) #6
  %400 = load i64, ptr %8, align 8, !tbaa !5
  %401 = add nsw i64 %400, %.15519
  %402 = add nsw i64 %400, 1
  store i64 %402, ptr %8, align 8, !tbaa !5
  %.not306.not = icmp slt i64 %400, %397
  br i1 %.not306.not, label %.lr.ph521, label %.loopexit361, !llvm.loop !67

403:                                              ; preds = %384
  br i1 %.not300, label %417, label %404

404:                                              ; preds = %403
  store double 1.000000e+00, ptr %10, align 8, !tbaa !9
  %405 = load i64, ptr %3, align 8, !tbaa !5
  %406 = sitofp i64 %405 to double
  store double %406, ptr %9, align 8, !tbaa !9
  %.not303.not522 = icmp sgt i64 %405, 1
  br i1 %.not303.not522, label %.lr.ph526, label %.loopexit361

.lr.ph526:                                        ; preds = %404, %.lr.ph526
  %407 = phi i64 [ %412, %.lr.ph526 ], [ %405, %404 ]
  %.16524 = phi i64 [ %415, %.lr.ph526 ], [ 2, %404 ]
  %408 = phi i64 [ %416, %.lr.ph526 ], [ 1, %404 ]
  %409 = sub nsw i64 %407, %408
  store i64 %409, ptr %7, align 8, !tbaa !5
  %410 = getelementptr inbounds double, ptr %12, i64 %.16524
  %411 = call i32 @dlassq_(ptr noundef nonnull %7, ptr noundef nonnull %410, ptr noundef nonnull @c__1, ptr noundef nonnull %10, ptr noundef nonnull %9) #6
  %412 = load i64, ptr %3, align 8, !tbaa !5
  %413 = add i64 %.16524, 1
  %414 = add i64 %413, %412
  %415 = sub i64 %414, %408
  %416 = add nuw nsw i64 %408, 1
  %.not303.not = icmp slt i64 %416, %405
  br i1 %.not303.not, label %.lr.ph526, label %.loopexit361, !llvm.loop !68

417:                                              ; preds = %403
  store double 0.000000e+00, ptr %10, align 8, !tbaa !9
  store double 1.000000e+00, ptr %9, align 8, !tbaa !9
  %418 = load i64, ptr %3, align 8, !tbaa !5
  %.not301527 = icmp slt i64 %418, 1
  br i1 %.not301527, label %.loopexit361, label %.lr.ph531

.lr.ph531:                                        ; preds = %417, %.lr.ph531
  %419 = phi i64 [ %429, %.lr.ph531 ], [ 1, %417 ]
  %420 = phi i64 [ %425, %.lr.ph531 ], [ %418, %417 ]
  %.17529 = phi i64 [ %428, %.lr.ph531 ], [ 1, %417 ]
  %storemerge528.neg = phi i64 [ %.neg, %.lr.ph531 ], [ -1, %417 ]
  %421 = add i64 %storemerge528.neg, 1
  %422 = add i64 %421, %420
  store i64 %422, ptr %7, align 8, !tbaa !5
  %423 = getelementptr inbounds double, ptr %12, i64 %.17529
  %424 = call i32 @dlassq_(ptr noundef nonnull %7, ptr noundef nonnull %423, ptr noundef nonnull @c__1, ptr noundef nonnull %10, ptr noundef nonnull %9) #6
  %425 = load i64, ptr %3, align 8, !tbaa !5
  %426 = add i64 %.17529, 1
  %427 = add i64 %426, %425
  %428 = sub i64 %427, %419
  %.neg = xor i64 %419, -1
  %429 = add nuw nsw i64 %419, 1
  %.not301.not = icmp slt i64 %419, %418
  br i1 %.not301.not, label %.lr.ph531, label %.loopexit361, !llvm.loop !69

.loopexit361:                                     ; preds = %.lr.ph517, %.lr.ph521, %.lr.ph526, %.lr.ph531, %388, %396, %404, %417
  %430 = load double, ptr %10, align 8, !tbaa !9
  %431 = load double, ptr %9, align 8, !tbaa !9
  %432 = call double @sqrt(double noundef %431) #6
  %433 = fmul double %430, %432
  br label %.loopexit365

.loopexit365.loopexit827.unr-lcssa:               ; preds = %.lr.ph511, %.lr.ph511.preheader
  %.lcssa828.ph = phi double [ poison, %.lr.ph511.preheader ], [ %378, %.lr.ph511 ]
  %.10509.unr = phi double [ 0.000000e+00, %.lr.ph511.preheader ], [ %378, %.lr.ph511 ]
  %.16285508.unr = phi i64 [ 1, %.lr.ph511.preheader ], [ %379, %.lr.ph511 ]
  %lcmp.mod855.not = icmp eq i64 %xtraiter854, 0
  br i1 %lcmp.mod855.not, label %.loopexit365, label %.lr.ph511.epil

.lr.ph511.epil:                                   ; preds = %.loopexit365.loopexit827.unr-lcssa, %.lr.ph511.epil
  %.10509.epil = phi double [ %437, %.lr.ph511.epil ], [ %.10509.unr, %.loopexit365.loopexit827.unr-lcssa ]
  %.16285508.epil = phi i64 [ %438, %.lr.ph511.epil ], [ %.16285508.unr, %.loopexit365.loopexit827.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph511.epil ], [ 0, %.loopexit365.loopexit827.unr-lcssa ]
  %434 = getelementptr inbounds double, ptr %11, i64 %.16285508.epil
  %435 = load double, ptr %434, align 8, !tbaa !9
  %436 = fcmp oge double %.10509.epil, %435
  %437 = select i1 %436, double %.10509.epil, double %435
  %438 = add nuw i64 %.16285508.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter854
  br i1 %epil.iter.cmp.not, label %.loopexit365, label %.lr.ph511.epil, !llvm.loop !70

.loopexit365:                                     ; preds = %._crit_edge, %._crit_edge394, %75, %._crit_edge426, %.loopexit365.loopexit827.unr-lcssa, %.lr.ph511.epil, %.loopexit358, %.loopexit, %22, %51, %64, %77, %99, %138, %.loopexit366, %6, %.loopexit361, %382
  %.11 = phi double [ %433, %.loopexit361 ], [ undef, %382 ], [ 0.000000e+00, %6 ], [ 0.000000e+00, %.loopexit366 ], [ 0.000000e+00, %138 ], [ 0.000000e+00, %99 ], [ 0.000000e+00, %77 ], [ 0.000000e+00, %64 ], [ 1.000000e+00, %51 ], [ 1.000000e+00, %22 ], [ %165, %.loopexit ], [ %136, %.loopexit358 ], [ %.lcssa828.ph, %.loopexit365.loopexit827.unr-lcssa ], [ %437, %.lr.ph511.epil ], [ %.7.lcssa, %._crit_edge426 ], [ %73, %75 ], [ %.3.lcssa, %._crit_edge394 ], [ %.1.lcssa, %._crit_edge ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #6
  ret double %.11
}

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

declare i64 @lsame_(ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @dlassq_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @sqrt(double noundef) local_unnamed_addr #3

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !12}
!15 = distinct !{!15, !12}
!16 = distinct !{!16, !12}
!17 = distinct !{!17, !12}
!18 = distinct !{!18, !12}
!19 = distinct !{!19, !12}
!20 = !{!7, !7, i64 0}
!21 = distinct !{!21, !12}
!22 = distinct !{!22, !12}
!23 = distinct !{!23, !12}
!24 = distinct !{!24, !12}
!25 = distinct !{!25, !12}
!26 = distinct !{!26, !12}
!27 = distinct !{!27, !12, !28, !29}
!28 = !{!"llvm.loop.isvectorized", i32 1}
!29 = !{!"llvm.loop.unroll.runtime.disable"}
!30 = distinct !{!30, !12, !29, !28}
!31 = !{!32}
!32 = distinct !{!32, !33}
!33 = distinct !{!33, !"LVerDomain"}
!34 = !{!35}
!35 = distinct !{!35, !33}
!36 = distinct !{!36, !12, !28, !29}
!37 = distinct !{!37, !12, !28}
!38 = distinct !{!38, !12}
!39 = !{!40}
!40 = distinct !{!40, !41}
!41 = distinct !{!41, !"LVerDomain"}
!42 = !{!43}
!43 = distinct !{!43, !41}
!44 = distinct !{!44, !12, !28, !29}
!45 = distinct !{!45, !12, !28}
!46 = distinct !{!46, !12}
!47 = distinct !{!47, !12, !28, !29}
!48 = distinct !{!48, !12, !29, !28}
!49 = !{!50}
!50 = distinct !{!50, !51}
!51 = distinct !{!51, !"LVerDomain"}
!52 = !{!53}
!53 = distinct !{!53, !51}
!54 = distinct !{!54, !12, !28, !29}
!55 = distinct !{!55, !12, !28}
!56 = distinct !{!56, !12}
!57 = !{!58}
!58 = distinct !{!58, !59}
!59 = distinct !{!59, !"LVerDomain"}
!60 = !{!61}
!61 = distinct !{!61, !59}
!62 = distinct !{!62, !12, !28, !29}
!63 = distinct !{!63, !12, !28}
!64 = distinct !{!64, !12}
!65 = distinct !{!65, !12}
!66 = distinct !{!66, !12}
!67 = distinct !{!67, !12}
!68 = distinct !{!68, !12}
!69 = distinct !{!69, !12}
!70 = distinct !{!70, !71}
!71 = !{!"llvm.loop.unroll.disable"}


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