; LLVM IR from OpenMathLib/OpenBLAS :: lapack-netlib/SRC (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 i32, align 4

; 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 i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca double, align 8
  %16 = alloca double, align 8
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca double, align 8
  %22 = alloca [2 x double], align 16
  %23 = alloca double, align 8
  %24 = alloca [2 x double], align 16
  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 4, ptr %13) #4
  call void @llvm.lifetime.start.p0(i64 4, 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 4, ptr %17) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr %22) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr %24) #4
  %25 = load ptr, ptr %12, align 8, !tbaa !5
  %26 = getelementptr inbounds double, ptr %25, i32 -1
  store ptr %26, ptr %12, align 8, !tbaa !5
  %27 = load ptr, ptr %11, align 8, !tbaa !5
  %28 = getelementptr inbounds double, ptr %27, i32 -1
  store ptr %28, ptr %11, align 8, !tbaa !5
  %29 = load ptr, ptr %10, align 8, !tbaa !5
  %30 = load i32, ptr %29, align 4, !tbaa !9
  %31 = icmp eq i32 %30, 0
  br i1 %31, label %32, label %33

32:                                               ; preds = %6
  store double 0.000000e+00, ptr %21, align 8, !tbaa !11
  br label %933

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

37:                                               ; preds = %33
  store i32 1, ptr %19, align 4, !tbaa !9
  %38 = load ptr, ptr %9, align 8, !tbaa !5
  %39 = call i32 @lsame_(ptr noundef %38, ptr noundef @.str.1)
  %40 = icmp ne i32 %39, 0
  br i1 %40, label %41, label %157

41:                                               ; preds = %37
  store double 1.000000e+00, ptr %21, align 8, !tbaa !11
  %42 = load ptr, ptr %8, align 8, !tbaa !5
  %43 = call i32 @lsame_(ptr noundef %42, ptr noundef @.str.1)
  %44 = icmp ne i32 %43, 0
  br i1 %44, label %45, label %97

45:                                               ; preds = %41
  %46 = load ptr, ptr %10, align 8, !tbaa !5
  %47 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %47, ptr %13, align 4, !tbaa !9
  store i32 1, ptr %18, align 4, !tbaa !9
  br label %48

48:                                               ; preds = %93, %45
  %49 = load i32, ptr %18, align 4, !tbaa !9
  %50 = load i32, ptr %13, align 4, !tbaa !9
  %51 = icmp sle i32 %49, %50
  br i1 %51, label %52, label %96

52:                                               ; preds = %48
  %53 = load i32, ptr %19, align 4, !tbaa !9
  %54 = load i32, ptr %18, align 4, !tbaa !9
  %55 = add nsw i32 %53, %54
  %56 = sub nsw i32 %55, 2
  store i32 %56, ptr %14, align 4, !tbaa !9
  %57 = load i32, ptr %19, align 4, !tbaa !9
  store i32 %57, ptr %17, align 4, !tbaa !9
  br label %58

58:                                               ; preds = %86, %52
  %59 = load i32, ptr %17, align 4, !tbaa !9
  %60 = load i32, ptr %14, align 4, !tbaa !9
  %61 = icmp sle i32 %59, %60
  br i1 %61, label %62, label %89

62:                                               ; preds = %58
  %63 = load ptr, ptr %11, align 8, !tbaa !5
  %64 = load i32, ptr %17, align 4, !tbaa !9
  %65 = sext i32 %64 to i64
  %66 = getelementptr inbounds double, ptr %63, i64 %65
  %67 = load double, ptr %66, align 8, !tbaa !11
  store double %67, ptr %16, align 8, !tbaa !11
  %68 = load double, ptr %16, align 8, !tbaa !11
  %69 = fcmp oge double %68, 0.000000e+00
  br i1 %69, label %70, label %72

70:                                               ; preds = %62
  %71 = load double, ptr %16, align 8, !tbaa !11
  br label %75

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

75:                                               ; preds = %72, %70
  %76 = phi double [ %71, %70 ], [ %74, %72 ]
  store double %76, ptr %23, align 8, !tbaa !11
  %77 = load double, ptr %21, align 8, !tbaa !11
  %78 = load double, ptr %23, align 8, !tbaa !11
  %79 = fcmp olt double %77, %78
  br i1 %79, label %83, label %80

80:                                               ; preds = %75
  %81 = call i32 @disnan_(ptr noundef %23)
  %82 = icmp ne i32 %81, 0
  br i1 %82, label %83, label %85

83:                                               ; preds = %80, %75
  %84 = load double, ptr %23, align 8, !tbaa !11
  store double %84, ptr %21, align 8, !tbaa !11
  br label %85

85:                                               ; preds = %83, %80
  br label %86

86:                                               ; preds = %85
  %87 = load i32, ptr %17, align 4, !tbaa !9
  %88 = add nsw i32 %87, 1
  store i32 %88, ptr %17, align 4, !tbaa !9
  br label %58, !llvm.loop !13

89:                                               ; preds = %58
  %90 = load i32, ptr %18, align 4, !tbaa !9
  %91 = load i32, ptr %19, align 4, !tbaa !9
  %92 = add nsw i32 %91, %90
  store i32 %92, ptr %19, align 4, !tbaa !9
  br label %93

93:                                               ; preds = %89
  %94 = load i32, ptr %18, align 4, !tbaa !9
  %95 = add nsw i32 %94, 1
  store i32 %95, ptr %18, align 4, !tbaa !9
  br label %48, !llvm.loop !15

96:                                               ; preds = %48
  br label %156

97:                                               ; preds = %41
  %98 = load ptr, ptr %10, align 8, !tbaa !5
  %99 = load i32, ptr %98, align 4, !tbaa !9
  store i32 %99, ptr %13, align 4, !tbaa !9
  store i32 1, ptr %18, align 4, !tbaa !9
  br label %100

100:                                              ; preds = %152, %97
  %101 = load i32, ptr %18, align 4, !tbaa !9
  %102 = load i32, ptr %13, align 4, !tbaa !9
  %103 = icmp sle i32 %101, %102
  br i1 %103, label %104, label %155

104:                                              ; preds = %100
  %105 = load i32, ptr %19, align 4, !tbaa !9
  %106 = load ptr, ptr %10, align 8, !tbaa !5
  %107 = load i32, ptr %106, align 4, !tbaa !9
  %108 = add nsw i32 %105, %107
  %109 = load i32, ptr %18, align 4, !tbaa !9
  %110 = sub nsw i32 %108, %109
  store i32 %110, ptr %14, align 4, !tbaa !9
  %111 = load i32, ptr %19, align 4, !tbaa !9
  %112 = add nsw i32 %111, 1
  store i32 %112, ptr %17, align 4, !tbaa !9
  br label %113

113:                                              ; preds = %141, %104
  %114 = load i32, ptr %17, align 4, !tbaa !9
  %115 = load i32, ptr %14, align 4, !tbaa !9
  %116 = icmp sle i32 %114, %115
  br i1 %116, label %117, label %144

117:                                              ; preds = %113
  %118 = load ptr, ptr %11, align 8, !tbaa !5
  %119 = load i32, ptr %17, align 4, !tbaa !9
  %120 = sext i32 %119 to i64
  %121 = getelementptr inbounds double, ptr %118, i64 %120
  %122 = load double, ptr %121, align 8, !tbaa !11
  store double %122, ptr %16, align 8, !tbaa !11
  %123 = load double, ptr %16, align 8, !tbaa !11
  %124 = fcmp oge double %123, 0.000000e+00
  br i1 %124, label %125, label %127

125:                                              ; preds = %117
  %126 = load double, ptr %16, align 8, !tbaa !11
  br label %130

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

130:                                              ; preds = %127, %125
  %131 = phi double [ %126, %125 ], [ %129, %127 ]
  store double %131, ptr %23, align 8, !tbaa !11
  %132 = load double, ptr %21, align 8, !tbaa !11
  %133 = load double, ptr %23, align 8, !tbaa !11
  %134 = fcmp olt double %132, %133
  br i1 %134, label %138, label %135

135:                                              ; preds = %130
  %136 = call i32 @disnan_(ptr noundef %23)
  %137 = icmp ne i32 %136, 0
  br i1 %137, label %138, label %140

138:                                              ; preds = %135, %130
  %139 = load double, ptr %23, align 8, !tbaa !11
  store double %139, ptr %21, align 8, !tbaa !11
  br label %140

140:                                              ; preds = %138, %135
  br label %141

141:                                              ; preds = %140
  %142 = load i32, ptr %17, align 4, !tbaa !9
  %143 = add nsw i32 %142, 1
  store i32 %143, ptr %17, align 4, !tbaa !9
  br label %113, !llvm.loop !16

144:                                              ; preds = %113
  %145 = load i32, ptr %19, align 4, !tbaa !9
  %146 = load ptr, ptr %10, align 8, !tbaa !5
  %147 = load i32, ptr %146, align 4, !tbaa !9
  %148 = add nsw i32 %145, %147
  %149 = load i32, ptr %18, align 4, !tbaa !9
  %150 = sub nsw i32 %148, %149
  %151 = add nsw i32 %150, 1
  store i32 %151, ptr %19, align 4, !tbaa !9
  br label %152

152:                                              ; preds = %144
  %153 = load i32, ptr %18, align 4, !tbaa !9
  %154 = add nsw i32 %153, 1
  store i32 %154, ptr %18, align 4, !tbaa !9
  br label %100, !llvm.loop !17

155:                                              ; preds = %100
  br label %156

156:                                              ; preds = %155, %96
  br label %272

157:                                              ; preds = %37
  store double 0.000000e+00, ptr %21, align 8, !tbaa !11
  %158 = load ptr, ptr %8, align 8, !tbaa !5
  %159 = call i32 @lsame_(ptr noundef %158, ptr noundef @.str.1)
  %160 = icmp ne i32 %159, 0
  br i1 %160, label %161, label %213

161:                                              ; preds = %157
  %162 = load ptr, ptr %10, align 8, !tbaa !5
  %163 = load i32, ptr %162, align 4, !tbaa !9
  store i32 %163, ptr %13, align 4, !tbaa !9
  store i32 1, ptr %18, align 4, !tbaa !9
  br label %164

164:                                              ; preds = %209, %161
  %165 = load i32, ptr %18, align 4, !tbaa !9
  %166 = load i32, ptr %13, align 4, !tbaa !9
  %167 = icmp sle i32 %165, %166
  br i1 %167, label %168, label %212

168:                                              ; preds = %164
  %169 = load i32, ptr %19, align 4, !tbaa !9
  %170 = load i32, ptr %18, align 4, !tbaa !9
  %171 = add nsw i32 %169, %170
  %172 = sub nsw i32 %171, 1
  store i32 %172, ptr %14, align 4, !tbaa !9
  %173 = load i32, ptr %19, align 4, !tbaa !9
  store i32 %173, ptr %17, align 4, !tbaa !9
  br label %174

174:                                              ; preds = %202, %168
  %175 = load i32, ptr %17, align 4, !tbaa !9
  %176 = load i32, ptr %14, align 4, !tbaa !9
  %177 = icmp sle i32 %175, %176
  br i1 %177, label %178, label %205

178:                                              ; preds = %174
  %179 = load ptr, ptr %11, align 8, !tbaa !5
  %180 = load i32, ptr %17, align 4, !tbaa !9
  %181 = sext i32 %180 to i64
  %182 = getelementptr inbounds double, ptr %179, i64 %181
  %183 = load double, ptr %182, align 8, !tbaa !11
  store double %183, ptr %16, align 8, !tbaa !11
  %184 = load double, ptr %16, align 8, !tbaa !11
  %185 = fcmp oge double %184, 0.000000e+00
  br i1 %185, label %186, label %188

186:                                              ; preds = %178
  %187 = load double, ptr %16, align 8, !tbaa !11
  br label %191

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

191:                                              ; preds = %188, %186
  %192 = phi double [ %187, %186 ], [ %190, %188 ]
  store double %192, ptr %23, align 8, !tbaa !11
  %193 = load double, ptr %21, align 8, !tbaa !11
  %194 = load double, ptr %23, align 8, !tbaa !11
  %195 = fcmp olt double %193, %194
  br i1 %195, label %199, label %196

196:                                              ; preds = %191
  %197 = call i32 @disnan_(ptr noundef %23)
  %198 = icmp ne i32 %197, 0
  br i1 %198, label %199, label %201

199:                                              ; preds = %196, %191
  %200 = load double, ptr %23, align 8, !tbaa !11
  store double %200, ptr %21, align 8, !tbaa !11
  br label %201

201:                                              ; preds = %199, %196
  br label %202

202:                                              ; preds = %201
  %203 = load i32, ptr %17, align 4, !tbaa !9
  %204 = add nsw i32 %203, 1
  store i32 %204, ptr %17, align 4, !tbaa !9
  br label %174, !llvm.loop !18

205:                                              ; preds = %174
  %206 = load i32, ptr %18, align 4, !tbaa !9
  %207 = load i32, ptr %19, align 4, !tbaa !9
  %208 = add nsw i32 %207, %206
  store i32 %208, ptr %19, align 4, !tbaa !9
  br label %209

209:                                              ; preds = %205
  %210 = load i32, ptr %18, align 4, !tbaa !9
  %211 = add nsw i32 %210, 1
  store i32 %211, ptr %18, align 4, !tbaa !9
  br label %164, !llvm.loop !19

212:                                              ; preds = %164
  br label %271

213:                                              ; preds = %157
  %214 = load ptr, ptr %10, align 8, !tbaa !5
  %215 = load i32, ptr %214, align 4, !tbaa !9
  store i32 %215, ptr %13, align 4, !tbaa !9
  store i32 1, ptr %18, align 4, !tbaa !9
  br label %216

216:                                              ; preds = %267, %213
  %217 = load i32, ptr %18, align 4, !tbaa !9
  %218 = load i32, ptr %13, align 4, !tbaa !9
  %219 = icmp sle i32 %217, %218
  br i1 %219, label %220, label %270

220:                                              ; preds = %216
  %221 = load i32, ptr %19, align 4, !tbaa !9
  %222 = load ptr, ptr %10, align 8, !tbaa !5
  %223 = load i32, ptr %222, align 4, !tbaa !9
  %224 = add nsw i32 %221, %223
  %225 = load i32, ptr %18, align 4, !tbaa !9
  %226 = sub nsw i32 %224, %225
  store i32 %226, ptr %14, align 4, !tbaa !9
  %227 = load i32, ptr %19, align 4, !tbaa !9
  store i32 %227, ptr %17, align 4, !tbaa !9
  br label %228

228:                                              ; preds = %256, %220
  %229 = load i32, ptr %17, align 4, !tbaa !9
  %230 = load i32, ptr %14, align 4, !tbaa !9
  %231 = icmp sle i32 %229, %230
  br i1 %231, label %232, label %259

232:                                              ; preds = %228
  %233 = load ptr, ptr %11, align 8, !tbaa !5
  %234 = load i32, ptr %17, align 4, !tbaa !9
  %235 = sext i32 %234 to i64
  %236 = getelementptr inbounds double, ptr %233, i64 %235
  %237 = load double, ptr %236, align 8, !tbaa !11
  store double %237, ptr %16, align 8, !tbaa !11
  %238 = load double, ptr %16, align 8, !tbaa !11
  %239 = fcmp oge double %238, 0.000000e+00
  br i1 %239, label %240, label %242

240:                                              ; preds = %232
  %241 = load double, ptr %16, align 8, !tbaa !11
  br label %245

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

245:                                              ; preds = %242, %240
  %246 = phi double [ %241, %240 ], [ %244, %242 ]
  store double %246, ptr %23, align 8, !tbaa !11
  %247 = load double, ptr %21, align 8, !tbaa !11
  %248 = load double, ptr %23, align 8, !tbaa !11
  %249 = fcmp olt double %247, %248
  br i1 %249, label %253, label %250

250:                                              ; preds = %245
  %251 = call i32 @disnan_(ptr noundef %23)
  %252 = icmp ne i32 %251, 0
  br i1 %252, label %253, label %255

253:                                              ; preds = %250, %245
  %254 = load double, ptr %23, align 8, !tbaa !11
  store double %254, ptr %21, align 8, !tbaa !11
  br label %255

255:                                              ; preds = %253, %250
  br label %256

256:                                              ; preds = %255
  %257 = load i32, ptr %17, align 4, !tbaa !9
  %258 = add nsw i32 %257, 1
  store i32 %258, ptr %17, align 4, !tbaa !9
  br label %228, !llvm.loop !20

259:                                              ; preds = %228
  %260 = load i32, ptr %19, align 4, !tbaa !9
  %261 = load ptr, ptr %10, align 8, !tbaa !5
  %262 = load i32, ptr %261, align 4, !tbaa !9
  %263 = add nsw i32 %260, %262
  %264 = load i32, ptr %18, align 4, !tbaa !9
  %265 = sub nsw i32 %263, %264
  %266 = add nsw i32 %265, 1
  store i32 %266, ptr %19, align 4, !tbaa !9
  br label %267

267:                                              ; preds = %259
  %268 = load i32, ptr %18, align 4, !tbaa !9
  %269 = add nsw i32 %268, 1
  store i32 %269, ptr %18, align 4, !tbaa !9
  br label %216, !llvm.loop !21

270:                                              ; preds = %216
  br label %271

271:                                              ; preds = %270, %212
  br label %272

272:                                              ; preds = %271, %156
  br label %932

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

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

282:                                              ; preds = %277, %273
  store double 0.000000e+00, ptr %21, align 8, !tbaa !11
  store i32 1, ptr %19, align 4, !tbaa !9
  %283 = load ptr, ptr %9, align 8, !tbaa !5
  %284 = call i32 @lsame_(ptr noundef %283, ptr noundef @.str.1)
  store i32 %284, ptr %20, align 4, !tbaa !9
  %285 = load ptr, ptr %8, align 8, !tbaa !5
  %286 = call i32 @lsame_(ptr noundef %285, ptr noundef @.str.1)
  %287 = icmp ne i32 %286, 0
  br i1 %287, label %288, label %377

288:                                              ; preds = %282
  %289 = load ptr, ptr %10, align 8, !tbaa !5
  %290 = load i32, ptr %289, align 4, !tbaa !9
  store i32 %290, ptr %13, align 4, !tbaa !9
  store i32 1, ptr %18, align 4, !tbaa !9
  br label %291

291:                                              ; preds = %373, %288
  %292 = load i32, ptr %18, align 4, !tbaa !9
  %293 = load i32, ptr %13, align 4, !tbaa !9
  %294 = icmp sle i32 %292, %293
  br i1 %294, label %295, label %376

295:                                              ; preds = %291
  %296 = load i32, ptr %20, align 4, !tbaa !9
  %297 = icmp ne i32 %296, 0
  br i1 %297, label %298, label %329

298:                                              ; preds = %295
  store double 1.000000e+00, ptr %23, align 8, !tbaa !11
  %299 = load i32, ptr %19, align 4, !tbaa !9
  %300 = load i32, ptr %18, align 4, !tbaa !9
  %301 = add nsw i32 %299, %300
  %302 = sub nsw i32 %301, 2
  store i32 %302, ptr %14, align 4, !tbaa !9
  %303 = load i32, ptr %19, align 4, !tbaa !9
  store i32 %303, ptr %17, align 4, !tbaa !9
  br label %304

304:                                              ; preds = %325, %298
  %305 = load i32, ptr %17, align 4, !tbaa !9
  %306 = load i32, ptr %14, align 4, !tbaa !9
  %307 = icmp sle i32 %305, %306
  br i1 %307, label %308, label %328

308:                                              ; preds = %304
  %309 = load ptr, ptr %11, align 8, !tbaa !5
  %310 = load i32, ptr %17, align 4, !tbaa !9
  %311 = sext i32 %310 to i64
  %312 = getelementptr inbounds double, ptr %309, 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 = %308
  %317 = load double, ptr %16, align 8, !tbaa !11
  br label %321

318:                                              ; preds = %308
  %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 %23, align 8, !tbaa !11
  %324 = fadd double %323, %322
  store double %324, ptr %23, align 8, !tbaa !11
  br label %325

325:                                              ; preds = %321
  %326 = load i32, ptr %17, align 4, !tbaa !9
  %327 = add nsw i32 %326, 1
  store i32 %327, ptr %17, align 4, !tbaa !9
  br label %304, !llvm.loop !23

328:                                              ; preds = %304
  br label %360

329:                                              ; preds = %295
  store double 0.000000e+00, ptr %23, align 8, !tbaa !11
  %330 = load i32, ptr %19, align 4, !tbaa !9
  %331 = load i32, ptr %18, align 4, !tbaa !9
  %332 = add nsw i32 %330, %331
  %333 = sub nsw i32 %332, 1
  store i32 %333, ptr %14, align 4, !tbaa !9
  %334 = load i32, ptr %19, align 4, !tbaa !9
  store i32 %334, ptr %17, align 4, !tbaa !9
  br label %335

335:                                              ; preds = %356, %329
  %336 = load i32, ptr %17, align 4, !tbaa !9
  %337 = load i32, ptr %14, align 4, !tbaa !9
  %338 = icmp sle i32 %336, %337
  br i1 %338, label %339, label %359

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

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

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

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

356:                                              ; preds = %352
  %357 = load i32, ptr %17, align 4, !tbaa !9
  %358 = add nsw i32 %357, 1
  store i32 %358, ptr %17, align 4, !tbaa !9
  br label %335, !llvm.loop !24

359:                                              ; preds = %335
  br label %360

360:                                              ; preds = %359, %328
  %361 = load i32, ptr %18, align 4, !tbaa !9
  %362 = load i32, ptr %19, align 4, !tbaa !9
  %363 = add nsw i32 %362, %361
  store i32 %363, ptr %19, align 4, !tbaa !9
  %364 = load double, ptr %21, align 8, !tbaa !11
  %365 = load double, ptr %23, align 8, !tbaa !11
  %366 = fcmp olt double %364, %365
  br i1 %366, label %370, label %367

367:                                              ; preds = %360
  %368 = call i32 @disnan_(ptr noundef %23)
  %369 = icmp ne i32 %368, 0
  br i1 %369, label %370, label %372

370:                                              ; preds = %367, %360
  %371 = load double, ptr %23, align 8, !tbaa !11
  store double %371, ptr %21, align 8, !tbaa !11
  br label %372

372:                                              ; preds = %370, %367
  br label %373

373:                                              ; preds = %372
  %374 = load i32, ptr %18, align 4, !tbaa !9
  %375 = add nsw i32 %374, 1
  store i32 %375, ptr %18, align 4, !tbaa !9
  br label %291, !llvm.loop !25

376:                                              ; preds = %291
  br label %475

377:                                              ; preds = %282
  %378 = load ptr, ptr %10, align 8, !tbaa !5
  %379 = load i32, ptr %378, align 4, !tbaa !9
  store i32 %379, ptr %13, align 4, !tbaa !9
  store i32 1, ptr %18, align 4, !tbaa !9
  br label %380

380:                                              ; preds = %471, %377
  %381 = load i32, ptr %18, align 4, !tbaa !9
  %382 = load i32, ptr %13, align 4, !tbaa !9
  %383 = icmp sle i32 %381, %382
  br i1 %383, label %384, label %474

384:                                              ; preds = %380
  %385 = load i32, ptr %20, align 4, !tbaa !9
  %386 = icmp ne i32 %385, 0
  br i1 %386, label %387, label %421

387:                                              ; preds = %384
  store double 1.000000e+00, ptr %23, align 8, !tbaa !11
  %388 = load i32, ptr %19, align 4, !tbaa !9
  %389 = load ptr, ptr %10, align 8, !tbaa !5
  %390 = load i32, ptr %389, align 4, !tbaa !9
  %391 = add nsw i32 %388, %390
  %392 = load i32, ptr %18, align 4, !tbaa !9
  %393 = sub nsw i32 %391, %392
  store i32 %393, ptr %14, align 4, !tbaa !9
  %394 = load i32, ptr %19, align 4, !tbaa !9
  %395 = add nsw i32 %394, 1
  store i32 %395, ptr %17, align 4, !tbaa !9
  br label %396

396:                                              ; preds = %417, %387
  %397 = load i32, ptr %17, align 4, !tbaa !9
  %398 = load i32, ptr %14, align 4, !tbaa !9
  %399 = icmp sle i32 %397, %398
  br i1 %399, label %400, label %420

400:                                              ; preds = %396
  %401 = load ptr, ptr %11, align 8, !tbaa !5
  %402 = load i32, ptr %17, align 4, !tbaa !9
  %403 = sext i32 %402 to i64
  %404 = getelementptr inbounds double, ptr %401, i64 %403
  %405 = load double, ptr %404, align 8, !tbaa !11
  store double %405, ptr %16, align 8, !tbaa !11
  %406 = load double, ptr %16, align 8, !tbaa !11
  %407 = fcmp oge double %406, 0.000000e+00
  br i1 %407, label %408, label %410

408:                                              ; preds = %400
  %409 = load double, ptr %16, align 8, !tbaa !11
  br label %413

410:                                              ; preds = %400
  %411 = load double, ptr %16, align 8, !tbaa !11
  %412 = fneg double %411
  br label %413

413:                                              ; preds = %410, %408
  %414 = phi double [ %409, %408 ], [ %412, %410 ]
  %415 = load double, ptr %23, align 8, !tbaa !11
  %416 = fadd double %415, %414
  store double %416, ptr %23, align 8, !tbaa !11
  br label %417

417:                                              ; preds = %413
  %418 = load i32, ptr %17, align 4, !tbaa !9
  %419 = add nsw i32 %418, 1
  store i32 %419, ptr %17, align 4, !tbaa !9
  br label %396, !llvm.loop !26

420:                                              ; preds = %396
  br label %454

421:                                              ; preds = %384
  store double 0.000000e+00, ptr %23, align 8, !tbaa !11
  %422 = load i32, ptr %19, align 4, !tbaa !9
  %423 = load ptr, ptr %10, align 8, !tbaa !5
  %424 = load i32, ptr %423, align 4, !tbaa !9
  %425 = add nsw i32 %422, %424
  %426 = load i32, ptr %18, align 4, !tbaa !9
  %427 = sub nsw i32 %425, %426
  store i32 %427, ptr %14, align 4, !tbaa !9
  %428 = load i32, ptr %19, align 4, !tbaa !9
  store i32 %428, ptr %17, align 4, !tbaa !9
  br label %429

429:                                              ; preds = %450, %421
  %430 = load i32, ptr %17, align 4, !tbaa !9
  %431 = load i32, ptr %14, align 4, !tbaa !9
  %432 = icmp sle i32 %430, %431
  br i1 %432, label %433, label %453

433:                                              ; preds = %429
  %434 = load ptr, ptr %11, align 8, !tbaa !5
  %435 = load i32, ptr %17, align 4, !tbaa !9
  %436 = sext i32 %435 to i64
  %437 = getelementptr inbounds double, ptr %434, i64 %436
  %438 = load double, ptr %437, align 8, !tbaa !11
  store double %438, ptr %16, align 8, !tbaa !11
  %439 = load double, ptr %16, align 8, !tbaa !11
  %440 = fcmp oge double %439, 0.000000e+00
  br i1 %440, label %441, label %443

441:                                              ; preds = %433
  %442 = load double, ptr %16, align 8, !tbaa !11
  br label %446

443:                                              ; preds = %433
  %444 = load double, ptr %16, align 8, !tbaa !11
  %445 = fneg double %444
  br label %446

446:                                              ; preds = %443, %441
  %447 = phi double [ %442, %441 ], [ %445, %443 ]
  %448 = load double, ptr %23, align 8, !tbaa !11
  %449 = fadd double %448, %447
  store double %449, ptr %23, align 8, !tbaa !11
  br label %450

450:                                              ; preds = %446
  %451 = load i32, ptr %17, align 4, !tbaa !9
  %452 = add nsw i32 %451, 1
  store i32 %452, ptr %17, align 4, !tbaa !9
  br label %429, !llvm.loop !27

453:                                              ; preds = %429
  br label %454

454:                                              ; preds = %453, %420
  %455 = load i32, ptr %19, align 4, !tbaa !9
  %456 = load ptr, ptr %10, align 8, !tbaa !5
  %457 = load i32, ptr %456, align 4, !tbaa !9
  %458 = add nsw i32 %455, %457
  %459 = load i32, ptr %18, align 4, !tbaa !9
  %460 = sub nsw i32 %458, %459
  %461 = add nsw i32 %460, 1
  store i32 %461, ptr %19, align 4, !tbaa !9
  %462 = load double, ptr %21, align 8, !tbaa !11
  %463 = load double, ptr %23, align 8, !tbaa !11
  %464 = fcmp olt double %462, %463
  br i1 %464, label %468, label %465

465:                                              ; preds = %454
  %466 = call i32 @disnan_(ptr noundef %23)
  %467 = icmp ne i32 %466, 0
  br i1 %467, label %468, label %470

468:                                              ; preds = %465, %454
  %469 = load double, ptr %23, align 8, !tbaa !11
  store double %469, ptr %21, align 8, !tbaa !11
  br label %470

470:                                              ; preds = %468, %465
  br label %471

471:                                              ; preds = %470
  %472 = load i32, ptr %18, align 4, !tbaa !9
  %473 = add nsw i32 %472, 1
  store i32 %473, ptr %18, align 4, !tbaa !9
  br label %380, !llvm.loop !28

474:                                              ; preds = %380
  br label %475

475:                                              ; preds = %474, %376
  br label %931

476:                                              ; preds = %277
  %477 = load ptr, ptr %7, align 8, !tbaa !5
  %478 = call i32 @lsame_(ptr noundef %477, ptr noundef @.str.3)
  %479 = icmp ne i32 %478, 0
  br i1 %479, label %480, label %766

480:                                              ; preds = %476
  store i32 1, ptr %19, align 4, !tbaa !9
  %481 = load ptr, ptr %8, align 8, !tbaa !5
  %482 = call i32 @lsame_(ptr noundef %481, ptr noundef @.str.1)
  %483 = icmp ne i32 %482, 0
  br i1 %483, label %484, label %610

484:                                              ; preds = %480
  %485 = load ptr, ptr %9, align 8, !tbaa !5
  %486 = call i32 @lsame_(ptr noundef %485, ptr noundef @.str.1)
  %487 = icmp ne i32 %486, 0
  br i1 %487, label %488, label %550

488:                                              ; preds = %484
  %489 = load ptr, ptr %10, align 8, !tbaa !5
  %490 = load i32, ptr %489, align 4, !tbaa !9
  store i32 %490, ptr %13, align 4, !tbaa !9
  store i32 1, ptr %17, align 4, !tbaa !9
  br label %491

491:                                              ; preds = %500, %488
  %492 = load i32, ptr %17, align 4, !tbaa !9
  %493 = load i32, ptr %13, align 4, !tbaa !9
  %494 = icmp sle i32 %492, %493
  br i1 %494, label %495, label %503

495:                                              ; preds = %491
  %496 = load ptr, ptr %12, align 8, !tbaa !5
  %497 = load i32, ptr %17, align 4, !tbaa !9
  %498 = sext i32 %497 to i64
  %499 = getelementptr inbounds double, ptr %496, i64 %498
  store double 1.000000e+00, ptr %499, align 8, !tbaa !11
  br label %500

500:                                              ; preds = %495
  %501 = load i32, ptr %17, align 4, !tbaa !9
  %502 = add nsw i32 %501, 1
  store i32 %502, ptr %17, align 4, !tbaa !9
  br label %491, !llvm.loop !29

503:                                              ; preds = %491
  %504 = load ptr, ptr %10, align 8, !tbaa !5
  %505 = load i32, ptr %504, align 4, !tbaa !9
  store i32 %505, ptr %13, align 4, !tbaa !9
  store i32 1, ptr %18, align 4, !tbaa !9
  br label %506

506:                                              ; preds = %546, %503
  %507 = load i32, ptr %18, align 4, !tbaa !9
  %508 = load i32, ptr %13, align 4, !tbaa !9
  %509 = icmp sle i32 %507, %508
  br i1 %509, label %510, label %549

510:                                              ; preds = %506
  %511 = load i32, ptr %18, align 4, !tbaa !9
  %512 = sub nsw i32 %511, 1
  store i32 %512, ptr %14, align 4, !tbaa !9
  store i32 1, ptr %17, align 4, !tbaa !9
  br label %513

513:                                              ; preds = %540, %510
  %514 = load i32, ptr %17, align 4, !tbaa !9
  %515 = load i32, ptr %14, align 4, !tbaa !9
  %516 = icmp sle i32 %514, %515
  br i1 %516, label %517, label %543

517:                                              ; preds = %513
  %518 = load ptr, ptr %11, align 8, !tbaa !5
  %519 = load i32, ptr %19, align 4, !tbaa !9
  %520 = sext i32 %519 to i64
  %521 = getelementptr inbounds double, ptr %518, i64 %520
  %522 = load double, ptr %521, align 8, !tbaa !11
  store double %522, ptr %16, align 8, !tbaa !11
  %523 = load double, ptr %16, align 8, !tbaa !11
  %524 = fcmp oge double %523, 0.000000e+00
  br i1 %524, label %525, label %527

525:                                              ; preds = %517
  %526 = load double, ptr %16, align 8, !tbaa !11
  br label %530

527:                                              ; preds = %517
  %528 = load double, ptr %16, align 8, !tbaa !11
  %529 = fneg double %528
  br label %530

530:                                              ; preds = %527, %525
  %531 = phi double [ %526, %525 ], [ %529, %527 ]
  %532 = load ptr, ptr %12, align 8, !tbaa !5
  %533 = load i32, ptr %17, align 4, !tbaa !9
  %534 = sext i32 %533 to i64
  %535 = getelementptr inbounds double, ptr %532, i64 %534
  %536 = load double, ptr %535, align 8, !tbaa !11
  %537 = fadd double %536, %531
  store double %537, ptr %535, align 8, !tbaa !11
  %538 = load i32, ptr %19, align 4, !tbaa !9
  %539 = add nsw i32 %538, 1
  store i32 %539, ptr %19, align 4, !tbaa !9
  br label %540

540:                                              ; preds = %530
  %541 = load i32, ptr %17, align 4, !tbaa !9
  %542 = add nsw i32 %541, 1
  store i32 %542, ptr %17, align 4, !tbaa !9
  br label %513, !llvm.loop !30

543:                                              ; preds = %513
  %544 = load i32, ptr %19, align 4, !tbaa !9
  %545 = add nsw i32 %544, 1
  store i32 %545, ptr %19, align 4, !tbaa !9
  br label %546

546:                                              ; preds = %543
  %547 = load i32, ptr %18, align 4, !tbaa !9
  %548 = add nsw i32 %547, 1
  store i32 %548, ptr %18, align 4, !tbaa !9
  br label %506, !llvm.loop !31

549:                                              ; preds = %506
  br label %609

550:                                              ; preds = %484
  %551 = load ptr, ptr %10, align 8, !tbaa !5
  %552 = load i32, ptr %551, align 4, !tbaa !9
  store i32 %552, ptr %13, align 4, !tbaa !9
  store i32 1, ptr %17, align 4, !tbaa !9
  br label %553

553:                                              ; preds = %562, %550
  %554 = load i32, ptr %17, align 4, !tbaa !9
  %555 = load i32, ptr %13, align 4, !tbaa !9
  %556 = icmp sle i32 %554, %555
  br i1 %556, label %557, label %565

557:                                              ; preds = %553
  %558 = load ptr, ptr %12, align 8, !tbaa !5
  %559 = load i32, ptr %17, align 4, !tbaa !9
  %560 = sext i32 %559 to i64
  %561 = getelementptr inbounds double, ptr %558, i64 %560
  store double 0.000000e+00, ptr %561, align 8, !tbaa !11
  br label %562

562:                                              ; preds = %557
  %563 = load i32, ptr %17, align 4, !tbaa !9
  %564 = add nsw i32 %563, 1
  store i32 %564, ptr %17, align 4, !tbaa !9
  br label %553, !llvm.loop !32

565:                                              ; preds = %553
  %566 = load ptr, ptr %10, align 8, !tbaa !5
  %567 = load i32, ptr %566, align 4, !tbaa !9
  store i32 %567, ptr %13, align 4, !tbaa !9
  store i32 1, ptr %18, align 4, !tbaa !9
  br label %568

568:                                              ; preds = %605, %565
  %569 = load i32, ptr %18, align 4, !tbaa !9
  %570 = load i32, ptr %13, align 4, !tbaa !9
  %571 = icmp sle i32 %569, %570
  br i1 %571, label %572, label %608

572:                                              ; preds = %568
  %573 = load i32, ptr %18, align 4, !tbaa !9
  store i32 %573, ptr %14, align 4, !tbaa !9
  store i32 1, ptr %17, align 4, !tbaa !9
  br label %574

574:                                              ; preds = %601, %572
  %575 = load i32, ptr %17, align 4, !tbaa !9
  %576 = load i32, ptr %14, align 4, !tbaa !9
  %577 = icmp sle i32 %575, %576
  br i1 %577, label %578, label %604

578:                                              ; preds = %574
  %579 = load ptr, ptr %11, align 8, !tbaa !5
  %580 = load i32, ptr %19, align 4, !tbaa !9
  %581 = sext i32 %580 to i64
  %582 = getelementptr inbounds double, ptr %579, i64 %581
  %583 = load double, ptr %582, align 8, !tbaa !11
  store double %583, ptr %16, align 8, !tbaa !11
  %584 = load double, ptr %16, align 8, !tbaa !11
  %585 = fcmp oge double %584, 0.000000e+00
  br i1 %585, label %586, label %588

586:                                              ; preds = %578
  %587 = load double, ptr %16, align 8, !tbaa !11
  br label %591

588:                                              ; preds = %578
  %589 = load double, ptr %16, align 8, !tbaa !11
  %590 = fneg double %589
  br label %591

591:                                              ; preds = %588, %586
  %592 = phi double [ %587, %586 ], [ %590, %588 ]
  %593 = load ptr, ptr %12, align 8, !tbaa !5
  %594 = load i32, ptr %17, align 4, !tbaa !9
  %595 = sext i32 %594 to i64
  %596 = getelementptr inbounds double, ptr %593, i64 %595
  %597 = load double, ptr %596, align 8, !tbaa !11
  %598 = fadd double %597, %592
  store double %598, ptr %596, align 8, !tbaa !11
  %599 = load i32, ptr %19, align 4, !tbaa !9
  %600 = add nsw i32 %599, 1
  store i32 %600, ptr %19, align 4, !tbaa !9
  br label %601

601:                                              ; preds = %591
  %602 = load i32, ptr %17, align 4, !tbaa !9
  %603 = add nsw i32 %602, 1
  store i32 %603, ptr %17, align 4, !tbaa !9
  br label %574, !llvm.loop !33

604:                                              ; preds = %574
  br label %605

605:                                              ; preds = %604
  %606 = load i32, ptr %18, align 4, !tbaa !9
  %607 = add nsw i32 %606, 1
  store i32 %607, ptr %18, align 4, !tbaa !9
  br label %568, !llvm.loop !34

608:                                              ; preds = %568
  br label %609

609:                                              ; preds = %608, %549
  br label %740

610:                                              ; preds = %480
  %611 = load ptr, ptr %9, align 8, !tbaa !5
  %612 = call i32 @lsame_(ptr noundef %611, ptr noundef @.str.1)
  %613 = icmp ne i32 %612, 0
  br i1 %613, label %614, label %678

614:                                              ; preds = %610
  %615 = load ptr, ptr %10, align 8, !tbaa !5
  %616 = load i32, ptr %615, align 4, !tbaa !9
  store i32 %616, ptr %13, align 4, !tbaa !9
  store i32 1, ptr %17, align 4, !tbaa !9
  br label %617

617:                                              ; preds = %626, %614
  %618 = load i32, ptr %17, align 4, !tbaa !9
  %619 = load i32, ptr %13, align 4, !tbaa !9
  %620 = icmp sle i32 %618, %619
  br i1 %620, label %621, label %629

621:                                              ; preds = %617
  %622 = load ptr, ptr %12, align 8, !tbaa !5
  %623 = load i32, ptr %17, align 4, !tbaa !9
  %624 = sext i32 %623 to i64
  %625 = getelementptr inbounds double, ptr %622, i64 %624
  store double 1.000000e+00, ptr %625, align 8, !tbaa !11
  br label %626

626:                                              ; preds = %621
  %627 = load i32, ptr %17, align 4, !tbaa !9
  %628 = add nsw i32 %627, 1
  store i32 %628, ptr %17, align 4, !tbaa !9
  br label %617, !llvm.loop !35

629:                                              ; preds = %617
  %630 = load ptr, ptr %10, align 8, !tbaa !5
  %631 = load i32, ptr %630, align 4, !tbaa !9
  store i32 %631, ptr %13, align 4, !tbaa !9
  store i32 1, ptr %18, align 4, !tbaa !9
  br label %632

632:                                              ; preds = %674, %629
  %633 = load i32, ptr %18, align 4, !tbaa !9
  %634 = load i32, ptr %13, align 4, !tbaa !9
  %635 = icmp sle i32 %633, %634
  br i1 %635, label %636, label %677

636:                                              ; preds = %632
  %637 = load i32, ptr %19, align 4, !tbaa !9
  %638 = add nsw i32 %637, 1
  store i32 %638, ptr %19, align 4, !tbaa !9
  %639 = load ptr, ptr %10, align 8, !tbaa !5
  %640 = load i32, ptr %639, align 4, !tbaa !9
  store i32 %640, ptr %14, align 4, !tbaa !9
  %641 = load i32, ptr %18, align 4, !tbaa !9
  %642 = add nsw i32 %641, 1
  store i32 %642, ptr %17, align 4, !tbaa !9
  br label %643

643:                                              ; preds = %670, %636
  %644 = load i32, ptr %17, align 4, !tbaa !9
  %645 = load i32, ptr %14, align 4, !tbaa !9
  %646 = icmp sle i32 %644, %645
  br i1 %646, label %647, label %673

647:                                              ; preds = %643
  %648 = load ptr, ptr %11, align 8, !tbaa !5
  %649 = load i32, ptr %19, align 4, !tbaa !9
  %650 = sext i32 %649 to i64
  %651 = getelementptr inbounds double, ptr %648, i64 %650
  %652 = load double, ptr %651, align 8, !tbaa !11
  store double %652, ptr %16, align 8, !tbaa !11
  %653 = load double, ptr %16, align 8, !tbaa !11
  %654 = fcmp oge double %653, 0.000000e+00
  br i1 %654, label %655, label %657

655:                                              ; preds = %647
  %656 = load double, ptr %16, align 8, !tbaa !11
  br label %660

657:                                              ; preds = %647
  %658 = load double, ptr %16, align 8, !tbaa !11
  %659 = fneg double %658
  br label %660

660:                                              ; preds = %657, %655
  %661 = phi double [ %656, %655 ], [ %659, %657 ]
  %662 = load ptr, ptr %12, align 8, !tbaa !5
  %663 = load i32, ptr %17, align 4, !tbaa !9
  %664 = sext i32 %663 to i64
  %665 = getelementptr inbounds double, ptr %662, i64 %664
  %666 = load double, ptr %665, align 8, !tbaa !11
  %667 = fadd double %666, %661
  store double %667, ptr %665, align 8, !tbaa !11
  %668 = load i32, ptr %19, align 4, !tbaa !9
  %669 = add nsw i32 %668, 1
  store i32 %669, ptr %19, align 4, !tbaa !9
  br label %670

670:                                              ; preds = %660
  %671 = load i32, ptr %17, align 4, !tbaa !9
  %672 = add nsw i32 %671, 1
  store i32 %672, ptr %17, align 4, !tbaa !9
  br label %643, !llvm.loop !36

673:                                              ; preds = %643
  br label %674

674:                                              ; preds = %673
  %675 = load i32, ptr %18, align 4, !tbaa !9
  %676 = add nsw i32 %675, 1
  store i32 %676, ptr %18, align 4, !tbaa !9
  br label %632, !llvm.loop !37

677:                                              ; preds = %632
  br label %739

678:                                              ; preds = %610
  %679 = load ptr, ptr %10, align 8, !tbaa !5
  %680 = load i32, ptr %679, align 4, !tbaa !9
  store i32 %680, ptr %13, align 4, !tbaa !9
  store i32 1, ptr %17, align 4, !tbaa !9
  br label %681

681:                                              ; preds = %690, %678
  %682 = load i32, ptr %17, align 4, !tbaa !9
  %683 = load i32, ptr %13, align 4, !tbaa !9
  %684 = icmp sle i32 %682, %683
  br i1 %684, label %685, label %693

685:                                              ; preds = %681
  %686 = load ptr, ptr %12, align 8, !tbaa !5
  %687 = load i32, ptr %17, align 4, !tbaa !9
  %688 = sext i32 %687 to i64
  %689 = getelementptr inbounds double, ptr %686, i64 %688
  store double 0.000000e+00, ptr %689, align 8, !tbaa !11
  br label %690

690:                                              ; preds = %685
  %691 = load i32, ptr %17, align 4, !tbaa !9
  %692 = add nsw i32 %691, 1
  store i32 %692, ptr %17, align 4, !tbaa !9
  br label %681, !llvm.loop !38

693:                                              ; preds = %681
  %694 = load ptr, ptr %10, align 8, !tbaa !5
  %695 = load i32, ptr %694, align 4, !tbaa !9
  store i32 %695, ptr %13, align 4, !tbaa !9
  store i32 1, ptr %18, align 4, !tbaa !9
  br label %696

696:                                              ; preds = %735, %693
  %697 = load i32, ptr %18, align 4, !tbaa !9
  %698 = load i32, ptr %13, align 4, !tbaa !9
  %699 = icmp sle i32 %697, %698
  br i1 %699, label %700, label %738

700:                                              ; preds = %696
  %701 = load ptr, ptr %10, align 8, !tbaa !5
  %702 = load i32, ptr %701, align 4, !tbaa !9
  store i32 %702, ptr %14, align 4, !tbaa !9
  %703 = load i32, ptr %18, align 4, !tbaa !9
  store i32 %703, ptr %17, align 4, !tbaa !9
  br label %704

704:                                              ; preds = %731, %700
  %705 = load i32, ptr %17, align 4, !tbaa !9
  %706 = load i32, ptr %14, align 4, !tbaa !9
  %707 = icmp sle i32 %705, %706
  br i1 %707, label %708, label %734

708:                                              ; preds = %704
  %709 = load ptr, ptr %11, align 8, !tbaa !5
  %710 = load i32, ptr %19, align 4, !tbaa !9
  %711 = sext i32 %710 to i64
  %712 = getelementptr inbounds double, ptr %709, i64 %711
  %713 = load double, ptr %712, align 8, !tbaa !11
  store double %713, ptr %16, align 8, !tbaa !11
  %714 = load double, ptr %16, align 8, !tbaa !11
  %715 = fcmp oge double %714, 0.000000e+00
  br i1 %715, label %716, label %718

716:                                              ; preds = %708
  %717 = load double, ptr %16, align 8, !tbaa !11
  br label %721

718:                                              ; preds = %708
  %719 = load double, ptr %16, align 8, !tbaa !11
  %720 = fneg double %719
  br label %721

721:                                              ; preds = %718, %716
  %722 = phi double [ %717, %716 ], [ %720, %718 ]
  %723 = load ptr, ptr %12, align 8, !tbaa !5
  %724 = load i32, ptr %17, align 4, !tbaa !9
  %725 = sext i32 %724 to i64
  %726 = getelementptr inbounds double, ptr %723, i64 %725
  %727 = load double, ptr %726, align 8, !tbaa !11
  %728 = fadd double %727, %722
  store double %728, ptr %726, align 8, !tbaa !11
  %729 = load i32, ptr %19, align 4, !tbaa !9
  %730 = add nsw i32 %729, 1
  store i32 %730, ptr %19, align 4, !tbaa !9
  br label %731

731:                                              ; preds = %721
  %732 = load i32, ptr %17, align 4, !tbaa !9
  %733 = add nsw i32 %732, 1
  store i32 %733, ptr %17, align 4, !tbaa !9
  br label %704, !llvm.loop !39

734:                                              ; preds = %704
  br label %735

735:                                              ; preds = %734
  %736 = load i32, ptr %18, align 4, !tbaa !9
  %737 = add nsw i32 %736, 1
  store i32 %737, ptr %18, align 4, !tbaa !9
  br label %696, !llvm.loop !40

738:                                              ; preds = %696
  br label %739

739:                                              ; preds = %738, %677
  br label %740

740:                                              ; preds = %739, %609
  store double 0.000000e+00, ptr %21, align 8, !tbaa !11
  %741 = load ptr, ptr %10, align 8, !tbaa !5
  %742 = load i32, ptr %741, align 4, !tbaa !9
  store i32 %742, ptr %13, align 4, !tbaa !9
  store i32 1, ptr %17, align 4, !tbaa !9
  br label %743

743:                                              ; preds = %762, %740
  %744 = load i32, ptr %17, align 4, !tbaa !9
  %745 = load i32, ptr %13, align 4, !tbaa !9
  %746 = icmp sle i32 %744, %745
  br i1 %746, label %747, label %765

747:                                              ; preds = %743
  %748 = load ptr, ptr %12, align 8, !tbaa !5
  %749 = load i32, ptr %17, align 4, !tbaa !9
  %750 = sext i32 %749 to i64
  %751 = getelementptr inbounds double, ptr %748, i64 %750
  %752 = load double, ptr %751, align 8, !tbaa !11
  store double %752, ptr %23, align 8, !tbaa !11
  %753 = load double, ptr %21, align 8, !tbaa !11
  %754 = load double, ptr %23, align 8, !tbaa !11
  %755 = fcmp olt double %753, %754
  br i1 %755, label %759, label %756

756:                                              ; preds = %747
  %757 = call i32 @disnan_(ptr noundef %23)
  %758 = icmp ne i32 %757, 0
  br i1 %758, label %759, label %761

759:                                              ; preds = %756, %747
  %760 = load double, ptr %23, align 8, !tbaa !11
  store double %760, ptr %21, align 8, !tbaa !11
  br label %761

761:                                              ; preds = %759, %756
  br label %762

762:                                              ; preds = %761
  %763 = load i32, ptr %17, align 4, !tbaa !9
  %764 = add nsw i32 %763, 1
  store i32 %764, ptr %17, align 4, !tbaa !9
  br label %743, !llvm.loop !41

765:                                              ; preds = %743
  br label %930

766:                                              ; preds = %476
  %767 = load ptr, ptr %7, align 8, !tbaa !5
  %768 = call i32 @lsame_(ptr noundef %767, ptr noundef @.str.4)
  %769 = icmp ne i32 %768, 0
  br i1 %769, label %774, label %770

770:                                              ; preds = %766
  %771 = load ptr, ptr %7, align 8, !tbaa !5
  %772 = call i32 @lsame_(ptr noundef %771, ptr noundef @.str.5)
  %773 = icmp ne i32 %772, 0
  br i1 %773, label %774, label %929

774:                                              ; preds = %770, %766
  %775 = load ptr, ptr %8, align 8, !tbaa !5
  %776 = call i32 @lsame_(ptr noundef %775, ptr noundef @.str.1)
  %777 = icmp ne i32 %776, 0
  br i1 %777, label %778, label %842

778:                                              ; preds = %774
  %779 = load ptr, ptr %9, align 8, !tbaa !5
  %780 = call i32 @lsame_(ptr noundef %779, ptr noundef @.str.1)
  %781 = icmp ne i32 %780, 0
  br i1 %781, label %782, label %814

782:                                              ; preds = %778
  %783 = getelementptr inbounds [2 x double], ptr %24, i64 0, i64 0
  store double 1.000000e+00, ptr %783, align 16, !tbaa !11
  %784 = load ptr, ptr %10, align 8, !tbaa !5
  %785 = load i32, ptr %784, align 4, !tbaa !9
  %786 = sitofp i32 %785 to double
  %787 = getelementptr inbounds [2 x double], ptr %24, i64 0, i64 1
  store double %786, ptr %787, align 8, !tbaa !11
  store i32 2, ptr %19, align 4, !tbaa !9
  %788 = load ptr, ptr %10, align 8, !tbaa !5
  %789 = load i32, ptr %788, align 4, !tbaa !9
  store i32 %789, ptr %13, align 4, !tbaa !9
  store i32 2, ptr %18, align 4, !tbaa !9
  br label %790

790:                                              ; preds = %810, %782
  %791 = load i32, ptr %18, align 4, !tbaa !9
  %792 = load i32, ptr %13, align 4, !tbaa !9
  %793 = icmp sle i32 %791, %792
  br i1 %793, label %794, label %813

794:                                              ; preds = %790
  %795 = getelementptr inbounds [2 x double], ptr %22, i64 0, i64 0
  store double 0.000000e+00, ptr %795, align 16, !tbaa !11
  %796 = getelementptr inbounds [2 x double], ptr %22, i64 0, i64 1
  store double 1.000000e+00, ptr %796, align 8, !tbaa !11
  %797 = load i32, ptr %18, align 4, !tbaa !9
  %798 = sub nsw i32 %797, 1
  store i32 %798, ptr %14, align 4, !tbaa !9
  %799 = load ptr, ptr %11, align 8, !tbaa !5
  %800 = load i32, ptr %19, align 4, !tbaa !9
  %801 = sext i32 %800 to i64
  %802 = getelementptr inbounds double, ptr %799, i64 %801
  %803 = getelementptr inbounds [2 x double], ptr %22, i64 0, i64 0
  %804 = getelementptr inbounds [2 x double], ptr %22, i64 0, i64 1
  call void @dlassq_(ptr noundef %14, ptr noundef %802, ptr noundef @c__1, ptr noundef %803, ptr noundef %804)
  %805 = getelementptr inbounds [2 x double], ptr %24, i64 0, i64 0
  %806 = getelementptr inbounds [2 x double], ptr %22, i64 0, i64 0
  call void @dcombssq_(ptr noundef %805, ptr noundef %806)
  %807 = load i32, ptr %18, align 4, !tbaa !9
  %808 = load i32, ptr %19, align 4, !tbaa !9
  %809 = add nsw i32 %808, %807
  store i32 %809, ptr %19, align 4, !tbaa !9
  br label %810

810:                                              ; preds = %794
  %811 = load i32, ptr %18, align 4, !tbaa !9
  %812 = add nsw i32 %811, 1
  store i32 %812, ptr %18, align 4, !tbaa !9
  br label %790, !llvm.loop !42

813:                                              ; preds = %790
  br label %841

814:                                              ; preds = %778
  %815 = getelementptr inbounds [2 x double], ptr %24, i64 0, i64 0
  store double 0.000000e+00, ptr %815, align 16, !tbaa !11
  %816 = getelementptr inbounds [2 x double], ptr %24, i64 0, i64 1
  store double 1.000000e+00, ptr %816, align 8, !tbaa !11
  store i32 1, ptr %19, align 4, !tbaa !9
  %817 = load ptr, ptr %10, align 8, !tbaa !5
  %818 = load i32, ptr %817, align 4, !tbaa !9
  store i32 %818, ptr %13, align 4, !tbaa !9
  store i32 1, ptr %18, align 4, !tbaa !9
  br label %819

819:                                              ; preds = %837, %814
  %820 = load i32, ptr %18, align 4, !tbaa !9
  %821 = load i32, ptr %13, align 4, !tbaa !9
  %822 = icmp sle i32 %820, %821
  br i1 %822, label %823, label %840

823:                                              ; preds = %819
  %824 = getelementptr inbounds [2 x double], ptr %22, i64 0, i64 0
  store double 0.000000e+00, ptr %824, align 16, !tbaa !11
  %825 = getelementptr inbounds [2 x double], ptr %22, i64 0, i64 1
  store double 1.000000e+00, ptr %825, align 8, !tbaa !11
  %826 = load ptr, ptr %11, align 8, !tbaa !5
  %827 = load i32, ptr %19, align 4, !tbaa !9
  %828 = sext i32 %827 to i64
  %829 = getelementptr inbounds double, ptr %826, i64 %828
  %830 = getelementptr inbounds [2 x double], ptr %22, i64 0, i64 0
  %831 = getelementptr inbounds [2 x double], ptr %22, i64 0, i64 1
  call void @dlassq_(ptr noundef %18, ptr noundef %829, ptr noundef @c__1, ptr noundef %830, ptr noundef %831)
  %832 = getelementptr inbounds [2 x double], ptr %24, i64 0, i64 0
  %833 = getelementptr inbounds [2 x double], ptr %22, i64 0, i64 0
  call void @dcombssq_(ptr noundef %832, ptr noundef %833)
  %834 = load i32, ptr %18, align 4, !tbaa !9
  %835 = load i32, ptr %19, align 4, !tbaa !9
  %836 = add nsw i32 %835, %834
  store i32 %836, ptr %19, align 4, !tbaa !9
  br label %837

837:                                              ; preds = %823
  %838 = load i32, ptr %18, align 4, !tbaa !9
  %839 = add nsw i32 %838, 1
  store i32 %839, ptr %18, align 4, !tbaa !9
  br label %819, !llvm.loop !43

840:                                              ; preds = %819
  br label %841

841:                                              ; preds = %840, %813
  br label %922

842:                                              ; preds = %774
  %843 = load ptr, ptr %9, align 8, !tbaa !5
  %844 = call i32 @lsame_(ptr noundef %843, ptr noundef @.str.1)
  %845 = icmp ne i32 %844, 0
  br i1 %845, label %846, label %885

846:                                              ; preds = %842
  %847 = getelementptr inbounds [2 x double], ptr %24, i64 0, i64 0
  store double 1.000000e+00, ptr %847, align 16, !tbaa !11
  %848 = load ptr, ptr %10, align 8, !tbaa !5
  %849 = load i32, ptr %848, align 4, !tbaa !9
  %850 = sitofp i32 %849 to double
  %851 = getelementptr inbounds [2 x double], ptr %24, i64 0, i64 1
  store double %850, ptr %851, align 8, !tbaa !11
  store i32 2, ptr %19, align 4, !tbaa !9
  %852 = load ptr, ptr %10, align 8, !tbaa !5
  %853 = load i32, ptr %852, align 4, !tbaa !9
  %854 = sub nsw i32 %853, 1
  store i32 %854, ptr %13, align 4, !tbaa !9
  store i32 1, ptr %18, align 4, !tbaa !9
  br label %855

855:                                              ; preds = %881, %846
  %856 = load i32, ptr %18, align 4, !tbaa !9
  %857 = load i32, ptr %13, align 4, !tbaa !9
  %858 = icmp sle i32 %856, %857
  br i1 %858, label %859, label %884

859:                                              ; preds = %855
  %860 = getelementptr inbounds [2 x double], ptr %22, i64 0, i64 0
  store double 0.000000e+00, ptr %860, align 16, !tbaa !11
  %861 = getelementptr inbounds [2 x double], ptr %22, i64 0, i64 1
  store double 1.000000e+00, ptr %861, align 8, !tbaa !11
  %862 = load ptr, ptr %10, align 8, !tbaa !5
  %863 = load i32, ptr %862, align 4, !tbaa !9
  %864 = load i32, ptr %18, align 4, !tbaa !9
  %865 = sub nsw i32 %863, %864
  store i32 %865, ptr %14, align 4, !tbaa !9
  %866 = load ptr, ptr %11, align 8, !tbaa !5
  %867 = load i32, ptr %19, align 4, !tbaa !9
  %868 = sext i32 %867 to i64
  %869 = getelementptr inbounds double, ptr %866, i64 %868
  %870 = getelementptr inbounds [2 x double], ptr %22, i64 0, i64 0
  %871 = getelementptr inbounds [2 x double], ptr %22, i64 0, i64 1
  call void @dlassq_(ptr noundef %14, ptr noundef %869, ptr noundef @c__1, ptr noundef %870, ptr noundef %871)
  %872 = getelementptr inbounds [2 x double], ptr %24, i64 0, i64 0
  %873 = getelementptr inbounds [2 x double], ptr %22, i64 0, i64 0
  call void @dcombssq_(ptr noundef %872, ptr noundef %873)
  %874 = load i32, ptr %19, align 4, !tbaa !9
  %875 = load ptr, ptr %10, align 8, !tbaa !5
  %876 = load i32, ptr %875, align 4, !tbaa !9
  %877 = add nsw i32 %874, %876
  %878 = load i32, ptr %18, align 4, !tbaa !9
  %879 = sub nsw i32 %877, %878
  %880 = add nsw i32 %879, 1
  store i32 %880, ptr %19, align 4, !tbaa !9
  br label %881

881:                                              ; preds = %859
  %882 = load i32, ptr %18, align 4, !tbaa !9
  %883 = add nsw i32 %882, 1
  store i32 %883, ptr %18, align 4, !tbaa !9
  br label %855, !llvm.loop !44

884:                                              ; preds = %855
  br label %921

885:                                              ; preds = %842
  %886 = getelementptr inbounds [2 x double], ptr %24, i64 0, i64 0
  store double 0.000000e+00, ptr %886, align 16, !tbaa !11
  %887 = getelementptr inbounds [2 x double], ptr %24, i64 0, i64 1
  store double 1.000000e+00, ptr %887, align 8, !tbaa !11
  store i32 1, ptr %19, align 4, !tbaa !9
  %888 = load ptr, ptr %10, align 8, !tbaa !5
  %889 = load i32, ptr %888, align 4, !tbaa !9
  store i32 %889, ptr %13, align 4, !tbaa !9
  store i32 1, ptr %18, align 4, !tbaa !9
  br label %890

890:                                              ; preds = %917, %885
  %891 = load i32, ptr %18, align 4, !tbaa !9
  %892 = load i32, ptr %13, align 4, !tbaa !9
  %893 = icmp sle i32 %891, %892
  br i1 %893, label %894, label %920

894:                                              ; preds = %890
  %895 = getelementptr inbounds [2 x double], ptr %22, i64 0, i64 0
  store double 0.000000e+00, ptr %895, align 16, !tbaa !11
  %896 = getelementptr inbounds [2 x double], ptr %22, i64 0, i64 1
  store double 1.000000e+00, ptr %896, align 8, !tbaa !11
  %897 = load ptr, ptr %10, align 8, !tbaa !5
  %898 = load i32, ptr %897, align 4, !tbaa !9
  %899 = load i32, ptr %18, align 4, !tbaa !9
  %900 = sub nsw i32 %898, %899
  %901 = add nsw i32 %900, 1
  store i32 %901, ptr %14, align 4, !tbaa !9
  %902 = load ptr, ptr %11, align 8, !tbaa !5
  %903 = load i32, ptr %19, align 4, !tbaa !9
  %904 = sext i32 %903 to i64
  %905 = getelementptr inbounds double, ptr %902, i64 %904
  %906 = getelementptr inbounds [2 x double], ptr %22, i64 0, i64 0
  %907 = getelementptr inbounds [2 x double], ptr %22, i64 0, i64 1
  call void @dlassq_(ptr noundef %14, ptr noundef %905, ptr noundef @c__1, ptr noundef %906, ptr noundef %907)
  %908 = getelementptr inbounds [2 x double], ptr %24, i64 0, i64 0
  %909 = getelementptr inbounds [2 x double], ptr %22, i64 0, i64 0
  call void @dcombssq_(ptr noundef %908, ptr noundef %909)
  %910 = load i32, ptr %19, align 4, !tbaa !9
  %911 = load ptr, ptr %10, align 8, !tbaa !5
  %912 = load i32, ptr %911, align 4, !tbaa !9
  %913 = add nsw i32 %910, %912
  %914 = load i32, ptr %18, align 4, !tbaa !9
  %915 = sub nsw i32 %913, %914
  %916 = add nsw i32 %915, 1
  store i32 %916, ptr %19, align 4, !tbaa !9
  br label %917

917:                                              ; preds = %894
  %918 = load i32, ptr %18, align 4, !tbaa !9
  %919 = add nsw i32 %918, 1
  store i32 %919, ptr %18, align 4, !tbaa !9
  br label %890, !llvm.loop !45

920:                                              ; preds = %890
  br label %921

921:                                              ; preds = %920, %884
  br label %922

922:                                              ; preds = %921, %841
  %923 = getelementptr inbounds [2 x double], ptr %24, i64 0, i64 0
  %924 = load double, ptr %923, align 16, !tbaa !11
  %925 = getelementptr inbounds [2 x double], ptr %24, i64 0, i64 1
  %926 = load double, ptr %925, align 8, !tbaa !11
  %927 = call double @sqrt(double noundef %926) #4
  %928 = fmul double %924, %927
  store double %928, ptr %21, align 8, !tbaa !11
  br label %929

929:                                              ; preds = %922, %770
  br label %930

930:                                              ; preds = %929, %765
  br label %931

931:                                              ; preds = %930, %475
  br label %932

932:                                              ; preds = %931, %272
  br label %933

933:                                              ; preds = %932, %32
  %934 = load double, ptr %21, align 8, !tbaa !11
  store double %934, ptr %15, align 8, !tbaa !11
  %935 = load double, ptr %15, align 8, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #4
  ret double %935
}

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

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

declare i32 @disnan_(ptr noundef) #2

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

declare void @dcombssq_(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 = !{!"int", !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 i32, align 4

; 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 i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca [2 x double], align 16
  %10 = alloca double, align 8
  %11 = alloca [2 x double], align 16
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #5
  %12 = getelementptr inbounds i8, ptr %5, i64 -8
  %13 = getelementptr inbounds i8, ptr %4, i64 -8
  %14 = load i32, ptr %3, align 4, !tbaa !5
  %15 = icmp eq i32 %14, 0
  br i1 %15, label %.loopexit347, label %16

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

18:                                               ; preds = %16
  %19 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.1) #5
  %.not324 = icmp eq i32 %19, 0
  %20 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #5
  %.not325 = icmp eq i32 %20, 0
  %21 = load i32, ptr %3, align 4, !tbaa !5
  %.not327413 = icmp slt i32 %21, 1
  br i1 %.not324, label %61, label %22

22:                                               ; preds = %18
  br i1 %.not325, label %40, label %23

23:                                               ; preds = %22
  br i1 %.not327413, label %.loopexit347, label %.lr.ph375

.lr.ph375:                                        ; preds = %23, %._crit_edge
  %.0373 = phi double [ %.1.lcssa, %._crit_edge ], [ 1.000000e+00, %23 ]
  %.0235372 = phi i32 [ %38, %._crit_edge ], [ 1, %23 ]
  %24 = phi i32 [ %39, %._crit_edge ], [ 1, %23 ]
  %25 = add nsw i32 %24, -2
  %26 = add i32 %25, %.0235372
  %.not341367 = icmp sgt i32 %.0235372, %26
  br i1 %.not341367, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %.lr.ph375
  %27 = zext nneg i32 %.0235372 to i64
  %28 = sext i32 %26 to i64
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %37
  %indvars.iv = phi i64 [ %27, %.lr.ph.preheader ], [ %indvars.iv.next, %37 ]
  %.1369 = phi double [ %.0373, %.lr.ph.preheader ], [ %.2, %37 ]
  %29 = getelementptr inbounds double, ptr %13, i64 %indvars.iv
  %30 = load double, ptr %29, align 8, !tbaa !9
  %31 = fcmp oge double %30, 0.000000e+00
  %32 = fneg double %30
  %33 = select i1 %31, double %30, double %32
  store double %33, ptr %10, align 8, !tbaa !9
  %34 = fcmp olt double %.1369, %33
  br i1 %34, label %37, label %35

35:                                               ; preds = %.lr.ph
  %36 = call i32 @disnan_(ptr noundef nonnull %10) #5
  %.not342 = icmp eq i32 %36, 0
  br i1 %.not342, label %37, label %._crit_edge677

._crit_edge677:                                   ; preds = %35
  %.pre = load double, ptr %10, align 8, !tbaa !9
  br label %37

37:                                               ; preds = %.lr.ph, %._crit_edge677, %35
  %.2 = phi double [ %.1369, %35 ], [ %.pre, %._crit_edge677 ], [ %33, %.lr.ph ]
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %.not341.not = icmp slt i64 %indvars.iv, %28
  br i1 %.not341.not, label %.lr.ph, label %._crit_edge, !llvm.loop !11

._crit_edge:                                      ; preds = %37, %.lr.ph375
  %.1.lcssa = phi double [ %.0373, %.lr.ph375 ], [ %.2, %37 ]
  %38 = add nuw nsw i32 %24, %.0235372
  %39 = add nuw nsw i32 %24, 1
  %.not340.not = icmp slt i32 %24, %21
  br i1 %.not340.not, label %.lr.ph375, label %.loopexit347, !llvm.loop !13

40:                                               ; preds = %22
  br i1 %.not327413, label %.loopexit347, label %.lr.ph390

.lr.ph390:                                        ; preds = %40, %._crit_edge383
  %41 = phi i32 [ %60, %._crit_edge383 ], [ 1, %40 ]
  %42 = phi i32 [ %56, %._crit_edge383 ], [ %21, %40 ]
  %.3388 = phi double [ %.4.lcssa, %._crit_edge383 ], [ 1.000000e+00, %40 ]
  %.1236387 = phi i32 [ %59, %._crit_edge383 ], [ 1, %40 ]
  %storemerge335386.neg = phi i32 [ %.neg550, %._crit_edge383 ], [ -1, %40 ]
  %43 = add i32 %.1236387, %storemerge335386.neg
  %44 = add i32 %43, %42
  %.not337.not378 = icmp slt i32 %.1236387, %44
  br i1 %.not337.not378, label %.lr.ph382.preheader, label %._crit_edge383

.lr.ph382.preheader:                              ; preds = %.lr.ph390
  %45 = sext i32 %.1236387 to i64
  %46 = sext i32 %44 to i64
  br label %.lr.ph382

.lr.ph382:                                        ; preds = %.lr.ph382.preheader, %55
  %indvars.iv574 = phi i64 [ %45, %.lr.ph382.preheader ], [ %indvars.iv.next575, %55 ]
  %.4379 = phi double [ %.3388, %.lr.ph382.preheader ], [ %.5, %55 ]
  %indvars.iv.next575 = add nsw i64 %indvars.iv574, 1
  %47 = getelementptr double, ptr %4, i64 %indvars.iv574
  %48 = load double, ptr %47, align 8, !tbaa !9
  %49 = fcmp oge double %48, 0.000000e+00
  %50 = fneg double %48
  %51 = select i1 %49, double %48, double %50
  store double %51, ptr %10, align 8, !tbaa !9
  %52 = fcmp olt double %.4379, %51
  br i1 %52, label %55, label %53

53:                                               ; preds = %.lr.ph382
  %54 = call i32 @disnan_(ptr noundef nonnull %10) #5
  %.not338 = icmp eq i32 %54, 0
  br i1 %.not338, label %55, label %._crit_edge678

._crit_edge678:                                   ; preds = %53
  %.pre679 = load double, ptr %10, align 8, !tbaa !9
  br label %55

55:                                               ; preds = %.lr.ph382, %._crit_edge678, %53
  %.5 = phi double [ %.4379, %53 ], [ %.pre679, %._crit_edge678 ], [ %51, %.lr.ph382 ]
  %.not337.not = icmp slt i64 %indvars.iv.next575, %46
  br i1 %.not337.not, label %.lr.ph382, label %._crit_edge383.loopexit, !llvm.loop !14

._crit_edge383.loopexit:                          ; preds = %55
  %.pre680 = load i32, ptr %3, align 4, !tbaa !5
  br label %._crit_edge383

._crit_edge383:                                   ; preds = %._crit_edge383.loopexit, %.lr.ph390
  %56 = phi i32 [ %42, %.lr.ph390 ], [ %.pre680, %._crit_edge383.loopexit ]
  %.4.lcssa = phi double [ %.3388, %.lr.ph390 ], [ %.5, %._crit_edge383.loopexit ]
  %57 = add i32 %.1236387, 1
  %58 = add i32 %57, %56
  %59 = sub i32 %58, %41
  %.neg550 = xor i32 %41, -1
  %60 = add nuw nsw i32 %41, 1
  %.not336.not = icmp slt i32 %41, %21
  br i1 %.not336.not, label %.lr.ph390, label %.loopexit347, !llvm.loop !15

61:                                               ; preds = %18
  br i1 %.not325, label %78, label %62

62:                                               ; preds = %61
  br i1 %.not327413, label %.loopexit347, label %.lr.ph404

.lr.ph404:                                        ; preds = %62, %._crit_edge397
  %63 = phi i32 [ %77, %._crit_edge397 ], [ 1, %62 ]
  %.6402 = phi double [ %.7.lcssa, %._crit_edge397 ], [ 0.000000e+00, %62 ]
  %.2237401 = phi i32 [ %76, %._crit_edge397 ], [ 1, %62 ]
  %storemerge330400 = phi i32 [ %63, %._crit_edge397 ], [ 0, %62 ]
  %64 = add nuw i32 %storemerge330400, %.2237401
  %.not332392 = icmp sgt i32 %.2237401, %64
  br i1 %.not332392, label %._crit_edge397, label %.lr.ph396.preheader

.lr.ph396.preheader:                              ; preds = %.lr.ph404
  %65 = zext nneg i32 %.2237401 to i64
  %66 = sext i32 %64 to i64
  br label %.lr.ph396

.lr.ph396:                                        ; preds = %.lr.ph396.preheader, %75
  %indvars.iv577 = phi i64 [ %65, %.lr.ph396.preheader ], [ %indvars.iv.next578, %75 ]
  %.7394 = phi double [ %.6402, %.lr.ph396.preheader ], [ %.8, %75 ]
  %67 = getelementptr inbounds double, ptr %13, i64 %indvars.iv577
  %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
  store double %71, ptr %10, align 8, !tbaa !9
  %72 = fcmp olt double %.7394, %71
  br i1 %72, label %75, label %73

73:                                               ; preds = %.lr.ph396
  %74 = call i32 @disnan_(ptr noundef nonnull %10) #5
  %.not333 = icmp eq i32 %74, 0
  br i1 %.not333, label %75, label %._crit_edge681

._crit_edge681:                                   ; preds = %73
  %.pre682 = load double, ptr %10, align 8, !tbaa !9
  br label %75

75:                                               ; preds = %.lr.ph396, %._crit_edge681, %73
  %.8 = phi double [ %.7394, %73 ], [ %.pre682, %._crit_edge681 ], [ %71, %.lr.ph396 ]
  %indvars.iv.next578 = add nuw nsw i64 %indvars.iv577, 1
  %.not332.not = icmp slt i64 %indvars.iv577, %66
  br i1 %.not332.not, label %.lr.ph396, label %._crit_edge397, !llvm.loop !16

._crit_edge397:                                   ; preds = %75, %.lr.ph404
  %.7.lcssa = phi double [ %.6402, %.lr.ph404 ], [ %.8, %75 ]
  %76 = add nuw nsw i32 %63, %.2237401
  %77 = add nuw nsw i32 %63, 1
  %.not331.not = icmp slt i32 %63, %21
  br i1 %.not331.not, label %.lr.ph404, label %.loopexit347, !llvm.loop !17

78:                                               ; preds = %61
  br i1 %.not327413, label %.loopexit347, label %.lr.ph418

.lr.ph418:                                        ; preds = %78, %._crit_edge411
  %79 = phi i32 [ %98, %._crit_edge411 ], [ 1, %78 ]
  %80 = phi i32 [ %94, %._crit_edge411 ], [ %21, %78 ]
  %.9416 = phi double [ %.10.lcssa, %._crit_edge411 ], [ 0.000000e+00, %78 ]
  %.3238415 = phi i32 [ %97, %._crit_edge411 ], [ 1, %78 ]
  %storemerge326414.neg = phi i32 [ %.neg, %._crit_edge411 ], [ -1, %78 ]
  %81 = add i32 %.3238415, %storemerge326414.neg
  %82 = add i32 %81, %80
  %.not328406 = icmp sgt i32 %.3238415, %82
  br i1 %.not328406, label %._crit_edge411, label %.lr.ph410.preheader

.lr.ph410.preheader:                              ; preds = %.lr.ph418
  %83 = sext i32 %.3238415 to i64
  %84 = sext i32 %82 to i64
  br label %.lr.ph410

.lr.ph410:                                        ; preds = %.lr.ph410.preheader, %93
  %indvars.iv580 = phi i64 [ %83, %.lr.ph410.preheader ], [ %indvars.iv.next581, %93 ]
  %.10408 = phi double [ %.9416, %.lr.ph410.preheader ], [ %.11, %93 ]
  %85 = getelementptr inbounds double, ptr %13, i64 %indvars.iv580
  %86 = load double, ptr %85, align 8, !tbaa !9
  %87 = fcmp oge double %86, 0.000000e+00
  %88 = fneg double %86
  %89 = select i1 %87, double %86, double %88
  store double %89, ptr %10, align 8, !tbaa !9
  %90 = fcmp olt double %.10408, %89
  br i1 %90, label %93, label %91

91:                                               ; preds = %.lr.ph410
  %92 = call i32 @disnan_(ptr noundef nonnull %10) #5
  %.not329 = icmp eq i32 %92, 0
  br i1 %.not329, label %93, label %._crit_edge683

._crit_edge683:                                   ; preds = %91
  %.pre684 = load double, ptr %10, align 8, !tbaa !9
  br label %93

93:                                               ; preds = %.lr.ph410, %._crit_edge683, %91
  %.11 = phi double [ %.10408, %91 ], [ %.pre684, %._crit_edge683 ], [ %89, %.lr.ph410 ]
  %indvars.iv.next581 = add nsw i64 %indvars.iv580, 1
  %.not328.not = icmp slt i64 %indvars.iv580, %84
  br i1 %.not328.not, label %.lr.ph410, label %._crit_edge411.loopexit, !llvm.loop !18

._crit_edge411.loopexit:                          ; preds = %93
  %.pre685 = load i32, ptr %3, align 4, !tbaa !5
  br label %._crit_edge411

._crit_edge411:                                   ; preds = %._crit_edge411.loopexit, %.lr.ph418
  %94 = phi i32 [ %80, %.lr.ph418 ], [ %.pre685, %._crit_edge411.loopexit ]
  %.10.lcssa = phi double [ %.9416, %.lr.ph418 ], [ %.11, %._crit_edge411.loopexit ]
  %95 = add i32 %.3238415, 1
  %96 = add i32 %95, %94
  %97 = sub i32 %96, %79
  %.neg = xor i32 %79, -1
  %98 = add nuw nsw i32 %79, 1
  %.not327.not = icmp slt i32 %79, %21
  br i1 %.not327.not, label %.lr.ph418, label %.loopexit347, !llvm.loop !19

99:                                               ; preds = %16
  %100 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #5
  %.not276 = icmp eq i32 %100, 0
  br i1 %.not276, label %101, label %104

101:                                              ; preds = %99
  %102 = load i8, ptr %0, align 1, !tbaa !20
  %103 = icmp eq i8 %102, 49
  br i1 %103, label %104, label %221

104:                                              ; preds = %101, %99
  %105 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.1) #5
  %106 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #5
  %.not311 = icmp eq i32 %106, 0
  %107 = load i32, ptr %3, align 4, !tbaa !5
  %.not313542 = icmp slt i32 %107, 1
  br i1 %.not311, label %153, label %108

108:                                              ; preds = %104
  br i1 %.not313542, label %.loopexit347, label %.lr.ph528

.lr.ph528:                                        ; preds = %108
  %.not320 = icmp eq i32 %105, 0
  br label %109

109:                                              ; preds = %.lr.ph528, %151
  %indvar883 = phi i32 [ 0, %.lr.ph528 ], [ %indvar.next884, %151 ]
  %.12526 = phi double [ 0.000000e+00, %.lr.ph528 ], [ %.13, %151 ]
  %.4239524 = phi i32 [ 1, %.lr.ph528 ], [ %.pre-phi, %151 ]
  %110 = phi i32 [ 1, %.lr.ph528 ], [ %152, %151 ]
  br i1 %.not320, label %.lr.ph520.preheader, label %111

111:                                              ; preds = %109
  store double 1.000000e+00, ptr %10, align 8, !tbaa !9
  %112 = add nsw i32 %.4239524, %110
  %113 = add nsw i32 %112, -2
  %.not322511 = icmp sgt i32 %.4239524, %113
  br i1 %.not322511, label %.loopexit348, label %.lr.ph514.preheader

.lr.ph514.preheader:                              ; preds = %111
  %114 = sext i32 %.4239524 to i64
  %115 = add nsw i32 %110, -1
  %116 = add i32 %115, %.4239524
  %xtraiter885 = and i32 %indvar883, 1
  %lcmp.mod886.not = icmp eq i32 %xtraiter885, 0
  br i1 %lcmp.mod886.not, label %.lr.ph514.prol.loopexit, label %.lr.ph514.prol

.lr.ph514.prol:                                   ; preds = %.lr.ph514.preheader
  %117 = getelementptr inbounds double, ptr %13, i64 %114
  %118 = load double, ptr %117, align 8, !tbaa !9
  %119 = fcmp oge double %118, 0.000000e+00
  %120 = fneg double %118
  %121 = select i1 %119, double %118, double %120
  %122 = fadd double %121, 1.000000e+00
  %indvars.iv.next661.prol = add nsw i64 %114, 1
  br label %.lr.ph514.prol.loopexit

.lr.ph514.prol.loopexit:                          ; preds = %.lr.ph514.prol, %.lr.ph514.preheader
  %.lcssa856.unr = phi double [ poison, %.lr.ph514.preheader ], [ %122, %.lr.ph514.prol ]
  %indvars.iv660.unr = phi i64 [ %114, %.lr.ph514.preheader ], [ %indvars.iv.next661.prol, %.lr.ph514.prol ]
  %.unr = phi double [ 1.000000e+00, %.lr.ph514.preheader ], [ %122, %.lr.ph514.prol ]
  %123 = icmp eq i32 %indvar883, 1
  br i1 %123, label %..loopexit349_crit_edge, label %.lr.ph514

.lr.ph514:                                        ; preds = %.lr.ph514.prol.loopexit, %.lr.ph514
  %indvars.iv660 = phi i64 [ %indvars.iv.next661.1, %.lr.ph514 ], [ %indvars.iv660.unr, %.lr.ph514.prol.loopexit ]
  %124 = phi double [ %136, %.lr.ph514 ], [ %.unr, %.lr.ph514.prol.loopexit ]
  %125 = getelementptr inbounds double, ptr %13, i64 %indvars.iv660
  %126 = load double, ptr %125, align 8, !tbaa !9
  %127 = fcmp oge double %126, 0.000000e+00
  %128 = fneg double %126
  %129 = select i1 %127, double %126, double %128
  %130 = fadd double %124, %129
  %131 = getelementptr double, ptr %4, i64 %indvars.iv660
  %132 = load double, ptr %131, align 8, !tbaa !9
  %133 = fcmp oge double %132, 0.000000e+00
  %134 = fneg double %132
  %135 = select i1 %133, double %132, double %134
  %136 = fadd double %130, %135
  %indvars.iv.next661.1 = add nsw i64 %indvars.iv660, 2
  %lftr.wideiv.1 = trunc i64 %indvars.iv.next661.1 to i32
  %exitcond663.not.1 = icmp eq i32 %116, %lftr.wideiv.1
  br i1 %exitcond663.not.1, label %..loopexit349_crit_edge, label %.lr.ph514, !llvm.loop !21

.lr.ph520.preheader:                              ; preds = %109
  %137 = add nsw i32 %.4239524, %110
  %138 = sext i32 %.4239524 to i64
  %139 = sext i32 %137 to i64
  br label %.lr.ph520

.lr.ph520:                                        ; preds = %.lr.ph520.preheader, %.lr.ph520
  %indvars.iv664 = phi i64 [ %138, %.lr.ph520.preheader ], [ %indvars.iv.next665, %.lr.ph520 ]
  %140 = phi double [ 0.000000e+00, %.lr.ph520.preheader ], [ %146, %.lr.ph520 ]
  %141 = getelementptr inbounds double, ptr %13, i64 %indvars.iv664
  %142 = load double, ptr %141, align 8, !tbaa !9
  %143 = fcmp oge double %142, 0.000000e+00
  %144 = fneg double %142
  %145 = select i1 %143, double %142, double %144
  %146 = fadd double %140, %145
  %indvars.iv.next665 = add nsw i64 %indvars.iv664, 1
  %.not321.not = icmp slt i64 %indvars.iv.next665, %139
  br i1 %.not321.not, label %.lr.ph520, label %..loopexit348_crit_edge, !llvm.loop !22

..loopexit348_crit_edge:                          ; preds = %.lr.ph520
  store double %146, ptr %10, align 8, !tbaa !9
  br label %.loopexit348

..loopexit349_crit_edge:                          ; preds = %.lr.ph514, %.lr.ph514.prol.loopexit
  %.lcssa856 = phi double [ %.lcssa856.unr, %.lr.ph514.prol.loopexit ], [ %136, %.lr.ph514 ]
  store double %.lcssa856, ptr %10, align 8, !tbaa !9
  br label %.loopexit348

.loopexit348:                                     ; preds = %111, %..loopexit349_crit_edge, %..loopexit348_crit_edge
  %.pre-phi = phi i32 [ %112, %111 ], [ %112, %..loopexit349_crit_edge ], [ %137, %..loopexit348_crit_edge ]
  %147 = phi double [ 1.000000e+00, %111 ], [ %.lcssa856, %..loopexit349_crit_edge ], [ %146, %..loopexit348_crit_edge ]
  %148 = fcmp olt double %.12526, %147
  br i1 %148, label %151, label %149

149:                                              ; preds = %.loopexit348
  %150 = call i32 @disnan_(ptr noundef nonnull %10) #5
  %.not323 = icmp eq i32 %150, 0
  br i1 %.not323, label %151, label %._crit_edge688

._crit_edge688:                                   ; preds = %149
  %.pre689 = load double, ptr %10, align 8, !tbaa !9
  br label %151

151:                                              ; preds = %.loopexit348, %._crit_edge688, %149
  %.13 = phi double [ %.12526, %149 ], [ %.pre689, %._crit_edge688 ], [ %147, %.loopexit348 ]
  %152 = add nuw nsw i32 %110, 1
  %.not319.not = icmp slt i32 %110, %107
  %indvar.next884 = add i32 %indvar883, 1
  br i1 %.not319.not, label %109, label %.loopexit347, !llvm.loop !23

153:                                              ; preds = %104
  br i1 %.not313542, label %.loopexit347, label %.lr.ph548

.lr.ph548:                                        ; preds = %153
  %.not314 = icmp eq i32 %105, 0
  %invariant.gep909 = getelementptr i8, ptr %4, i64 8
  br label %154

154:                                              ; preds = %.lr.ph548, %219
  %indvar890 = phi i32 [ 0, %.lr.ph548 ], [ %indvar.next891, %219 ]
  %155 = phi i32 [ 1, %.lr.ph548 ], [ %220, %219 ]
  %storemerge312.neg546 = phi i32 [ -1, %.lr.ph548 ], [ %storemerge312.neg, %219 ]
  %.14545 = phi double [ 0.000000e+00, %.lr.ph548 ], [ %.15, %219 ]
  %.5240543 = phi i32 [ 1, %.lr.ph548 ], [ %215, %219 ]
  %156 = add i32 %.5240543, %storemerge312.neg546
  br i1 %.not314, label %182, label %157

157:                                              ; preds = %154
  store double 1.000000e+00, ptr %10, align 8, !tbaa !9
  %158 = load i32, ptr %3, align 4, !tbaa !5
  %159 = add i32 %156, %158
  %.not316.not531 = icmp slt i32 %.5240543, %159
  br i1 %.not316.not531, label %.lr.ph534.preheader, label %.loopexit

.lr.ph534.preheader:                              ; preds = %157
  %160 = sext i32 %.5240543 to i64
  %wide.trip.count670 = sext i32 %159 to i64
  %161 = sub nsw i64 %wide.trip.count670, %160
  %xtraiter887 = and i64 %161, 1
  %lcmp.mod888.not = icmp eq i64 %xtraiter887, 0
  br i1 %lcmp.mod888.not, label %.lr.ph534.prol.loopexit, label %.lr.ph534.prol

.lr.ph534.prol:                                   ; preds = %.lr.ph534.preheader
  %indvars.iv.next668.prol = add nsw i64 %160, 1
  %162 = getelementptr double, ptr %4, i64 %160
  %163 = load double, ptr %162, align 8, !tbaa !9
  %164 = fcmp oge double %163, 0.000000e+00
  %165 = fneg double %163
  %166 = select i1 %164, double %163, double %165
  %167 = fadd double %166, 1.000000e+00
  br label %.lr.ph534.prol.loopexit

.lr.ph534.prol.loopexit:                          ; preds = %.lr.ph534.prol, %.lr.ph534.preheader
  %.lcssa.unr = phi double [ poison, %.lr.ph534.preheader ], [ %167, %.lr.ph534.prol ]
  %indvars.iv667.unr = phi i64 [ %160, %.lr.ph534.preheader ], [ %indvars.iv.next668.prol, %.lr.ph534.prol ]
  %.unr889 = phi double [ 1.000000e+00, %.lr.ph534.preheader ], [ %167, %.lr.ph534.prol ]
  %168 = add nsw i64 %wide.trip.count670, -1
  %169 = icmp eq i64 %168, %160
  br i1 %169, label %..loopexit346_crit_edge, label %.lr.ph534

.lr.ph534:                                        ; preds = %.lr.ph534.prol.loopexit, %.lr.ph534
  %indvars.iv667 = phi i64 [ %indvars.iv.next668.1, %.lr.ph534 ], [ %indvars.iv667.unr, %.lr.ph534.prol.loopexit ]
  %170 = phi double [ %181, %.lr.ph534 ], [ %.unr889, %.lr.ph534.prol.loopexit ]
  %171 = getelementptr double, ptr %4, i64 %indvars.iv667
  %172 = load double, ptr %171, align 8, !tbaa !9
  %173 = fcmp oge double %172, 0.000000e+00
  %174 = fneg double %172
  %175 = select i1 %173, double %172, double %174
  %176 = fadd double %170, %175
  %indvars.iv.next668.1 = add nsw i64 %indvars.iv667, 2
  %gep910 = getelementptr double, ptr %invariant.gep909, i64 %indvars.iv667
  %177 = load double, ptr %gep910, align 8, !tbaa !9
  %178 = fcmp oge double %177, 0.000000e+00
  %179 = fneg double %177
  %180 = select i1 %178, double %177, double %179
  %181 = fadd double %176, %180
  %exitcond671.not.1 = icmp eq i64 %indvars.iv.next668.1, %wide.trip.count670
  br i1 %exitcond671.not.1, label %..loopexit346_crit_edge, label %.lr.ph534, !llvm.loop !24

182:                                              ; preds = %154
  store double 0.000000e+00, ptr %10, align 8, !tbaa !9
  %183 = load i32, ptr %3, align 4, !tbaa !5
  %184 = add i32 %156, %183
  %.not315537 = icmp sgt i32 %.5240543, %184
  br i1 %.not315537, label %.loopexit, label %.lr.ph540.preheader

.lr.ph540.preheader:                              ; preds = %182
  %185 = sext i32 %.5240543 to i64
  %186 = add i32 %storemerge312.neg546, 1
  %187 = add i32 %186, %.5240543
  %188 = add i32 %187, %183
  %189 = sub i32 %183, %indvar890
  %xtraiter892 = and i32 %189, 1
  %lcmp.mod893.not = icmp eq i32 %xtraiter892, 0
  br i1 %lcmp.mod893.not, label %.lr.ph540.prol.loopexit, label %.lr.ph540.prol

.lr.ph540.prol:                                   ; preds = %.lr.ph540.preheader
  %190 = getelementptr inbounds double, ptr %13, i64 %185
  %191 = load double, ptr %190, align 8, !tbaa !9
  %192 = fcmp oge double %191, 0.000000e+00
  %193 = fneg double %191
  %194 = select i1 %192, double %191, double %193
  %195 = fadd double %194, 0.000000e+00
  %indvars.iv.next673.prol = add nsw i64 %185, 1
  br label %.lr.ph540.prol.loopexit

.lr.ph540.prol.loopexit:                          ; preds = %.lr.ph540.prol, %.lr.ph540.preheader
  %.lcssa854.unr = phi double [ poison, %.lr.ph540.preheader ], [ %195, %.lr.ph540.prol ]
  %indvars.iv672.unr = phi i64 [ %185, %.lr.ph540.preheader ], [ %indvars.iv.next673.prol, %.lr.ph540.prol ]
  %.unr894 = phi double [ 0.000000e+00, %.lr.ph540.preheader ], [ %195, %.lr.ph540.prol ]
  %196 = sub i32 0, %storemerge312.neg546
  %197 = icmp eq i32 %183, %196
  br i1 %197, label %..loopexit_crit_edge, label %.lr.ph540

.lr.ph540:                                        ; preds = %.lr.ph540.prol.loopexit, %.lr.ph540
  %indvars.iv672 = phi i64 [ %indvars.iv.next673.1, %.lr.ph540 ], [ %indvars.iv672.unr, %.lr.ph540.prol.loopexit ]
  %198 = phi double [ %210, %.lr.ph540 ], [ %.unr894, %.lr.ph540.prol.loopexit ]
  %199 = getelementptr inbounds double, ptr %13, i64 %indvars.iv672
  %200 = load double, ptr %199, align 8, !tbaa !9
  %201 = fcmp oge double %200, 0.000000e+00
  %202 = fneg double %200
  %203 = select i1 %201, double %200, double %202
  %204 = fadd double %198, %203
  %205 = getelementptr double, ptr %4, i64 %indvars.iv672
  %206 = load double, ptr %205, align 8, !tbaa !9
  %207 = fcmp oge double %206, 0.000000e+00
  %208 = fneg double %206
  %209 = select i1 %207, double %206, double %208
  %210 = fadd double %204, %209
  %indvars.iv.next673.1 = add nsw i64 %indvars.iv672, 2
  %lftr.wideiv675.1 = trunc i64 %indvars.iv.next673.1 to i32
  %exitcond676.not.1 = icmp eq i32 %188, %lftr.wideiv675.1
  br i1 %exitcond676.not.1, label %..loopexit_crit_edge, label %.lr.ph540, !llvm.loop !25

..loopexit_crit_edge:                             ; preds = %.lr.ph540, %.lr.ph540.prol.loopexit
  %.lcssa854 = phi double [ %.lcssa854.unr, %.lr.ph540.prol.loopexit ], [ %210, %.lr.ph540 ]
  store double %.lcssa854, ptr %10, align 8, !tbaa !9
  br label %.loopexit

..loopexit346_crit_edge:                          ; preds = %.lr.ph534, %.lr.ph534.prol.loopexit
  %.lcssa = phi double [ %.lcssa.unr, %.lr.ph534.prol.loopexit ], [ %181, %.lr.ph534 ]
  store double %.lcssa, ptr %10, align 8, !tbaa !9
  br label %.loopexit

.loopexit:                                        ; preds = %157, %..loopexit346_crit_edge, %182, %..loopexit_crit_edge
  %211 = phi double [ 1.000000e+00, %157 ], [ %.lcssa, %..loopexit346_crit_edge ], [ 0.000000e+00, %182 ], [ %.lcssa854, %..loopexit_crit_edge ]
  %212 = phi i32 [ %158, %157 ], [ %158, %..loopexit346_crit_edge ], [ %183, %182 ], [ %183, %..loopexit_crit_edge ]
  %213 = add i32 %storemerge312.neg546, 1
  %214 = add i32 %213, %.5240543
  %215 = add i32 %214, %212
  %216 = fcmp olt double %.14545, %211
  br i1 %216, label %219, label %217

217:                                              ; preds = %.loopexit
  %218 = call i32 @disnan_(ptr noundef nonnull %10) #5
  %.not317 = icmp eq i32 %218, 0
  br i1 %.not317, label %219, label %._crit_edge690

._crit_edge690:                                   ; preds = %217
  %.pre691 = load double, ptr %10, align 8, !tbaa !9
  br label %219

219:                                              ; preds = %.loopexit, %._crit_edge690, %217
  %.15 = phi double [ %.14545, %217 ], [ %.pre691, %._crit_edge690 ], [ %211, %.loopexit ]
  %220 = add nuw i32 %155, 1
  %storemerge312.neg = xor i32 %155, -1
  %.not313.not = icmp slt i32 %155, %107
  %indvar.next891 = add i32 %indvar890, 1
  br i1 %.not313.not, label %154, label %.loopexit347, !llvm.loop !26

221:                                              ; preds = %101
  %222 = tail call i32 @lsame_(ptr noundef nonnull %0, ptr noundef nonnull @.str.3) #5
  %.not277 = icmp eq i32 %222, 0
  br i1 %.not277, label %449, label %223

223:                                              ; preds = %221
  %224 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #5
  %.not290 = icmp eq i32 %224, 0
  %225 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.1) #5
  %.not291 = icmp eq i32 %225, 0
  %226 = load i32, ptr %3, align 4, !tbaa !5
  %.not292471 = icmp slt i32 %226, 1
  br i1 %.not290, label %328, label %227

227:                                              ; preds = %223
  br i1 %.not291, label %279, label %228

228:                                              ; preds = %227
  br i1 %.not292471, label %.loopexit356, label %.lr.ph423.preheader

.lr.ph423.preheader:                              ; preds = %228
  %229 = add nuw i32 %226, 1
  %wide.trip.count = zext i32 %229 to i64
  %230 = zext nneg i32 %226 to i64
  %min.iters.check = icmp ult i32 %226, 4
  br i1 %min.iters.check, label %.lr.ph423.preheader872, label %vector.ph

.lr.ph423.preheader872:                           ; preds = %middle.block, %.lr.ph423.preheader
  %indvars.iv583.ph = phi i64 [ 1, %.lr.ph423.preheader ], [ %ind.end, %middle.block ]
  br label %.lr.ph423

vector.ph:                                        ; preds = %.lr.ph423.preheader
  %n.vec = and i64 %230, 2147483644
  %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 ]
  %231 = getelementptr double, ptr %5, i64 %index
  %232 = getelementptr inbounds i8, ptr %231, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %231, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %232, align 8, !tbaa !9
  %index.next = add nuw i64 %index, 4
  %233 = icmp eq i64 %index.next, %n.vec
  br i1 %233, label %middle.block, label %vector.body, !llvm.loop !27

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %230
  br i1 %cmp.n, label %.preheader361, label %.lr.ph423.preheader872

.preheader361:                                    ; preds = %.lr.ph423, %middle.block
  br i1 %.not292471, label %.loopexit356, label %.lr.ph434.preheader

.lr.ph434.preheader:                              ; preds = %.preheader361
  %234 = add nuw i32 %226, 1
  %wide.trip.count598 = zext i32 %234 to i64
  %scevgep721 = getelementptr i8, ptr %4, i64 -8
  %invariant.gep899 = getelementptr i8, ptr %4, i64 -8
  br label %.lr.ph434

.lr.ph423:                                        ; preds = %.lr.ph423.preheader872, %.lr.ph423
  %indvars.iv583 = phi i64 [ %indvars.iv.next584, %.lr.ph423 ], [ %indvars.iv583.ph, %.lr.ph423.preheader872 ]
  %235 = getelementptr inbounds double, ptr %12, i64 %indvars.iv583
  store double 1.000000e+00, ptr %235, align 8, !tbaa !9
  %indvars.iv.next584 = add nuw nsw i64 %indvars.iv583, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next584, %wide.trip.count
  br i1 %exitcond.not, label %.preheader361, label %.lr.ph423, !llvm.loop !30

.lr.ph434:                                        ; preds = %.lr.ph434.preheader, %._crit_edge429
  %indvar = phi i64 [ 0, %.lr.ph434.preheader ], [ %indvar.next, %._crit_edge429 ]
  %indvars.iv595 = phi i64 [ 1, %.lr.ph434.preheader ], [ %indvars.iv.next596, %._crit_edge429 ]
  %.6241433 = phi i32 [ 1, %.lr.ph434.preheader ], [ %278, %._crit_edge429 ]
  %236 = shl nuw nsw i64 %indvar, 3
  %scevgep = getelementptr i8, ptr %5, i64 %236
  %gep900 = getelementptr i8, ptr %invariant.gep899, i64 %236
  %.not310.not424 = icmp ugt i64 %indvars.iv595, 1
  br i1 %.not310.not424, label %.lr.ph428.preheader, label %._crit_edge429

.lr.ph428.preheader:                              ; preds = %.lr.ph434
  %237 = sext i32 %.6241433 to i64
  %min.iters.check727 = icmp ult i64 %indvar, 4
  br i1 %min.iters.check727, label %.lr.ph428.preheader869, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph428.preheader
  %238 = shl nsw i64 %237, 3
  %scevgep722 = getelementptr i8, ptr %scevgep721, i64 %238
  %scevgep724 = getelementptr i8, ptr %gep900, i64 %238
  %bound0 = icmp ugt ptr %scevgep724, %5
  %bound1 = icmp ult ptr %scevgep722, %scevgep
  %found.conflict = and i1 %bound0, %bound1
  br i1 %found.conflict, label %.lr.ph428.preheader869, label %vector.ph728

vector.ph728:                                     ; preds = %vector.memcheck
  %n.vec730 = and i64 %indvar, -4
  %ind.end731 = or disjoint i64 %n.vec730, 1
  %ind.end733 = add i64 %n.vec730, %237
  %invariant.gep = getelementptr double, ptr %13, i64 %237
  br label %vector.body735

vector.body735:                                   ; preds = %vector.body735, %vector.ph728
  %index736 = phi i64 [ 0, %vector.ph728 ], [ %index.next742, %vector.body735 ]
  %gep = getelementptr double, ptr %invariant.gep, i64 %index736
  %239 = getelementptr inbounds i8, ptr %gep, i64 16
  %wide.load = load <2 x double>, ptr %gep, align 8, !tbaa !9, !alias.scope !31
  %wide.load739 = load <2 x double>, ptr %239, align 8, !tbaa !9, !alias.scope !31
  %240 = fcmp oge <2 x double> %wide.load, zeroinitializer
  %241 = fcmp oge <2 x double> %wide.load739, zeroinitializer
  %242 = fneg <2 x double> %wide.load
  %243 = fneg <2 x double> %wide.load739
  %244 = select <2 x i1> %240, <2 x double> %wide.load, <2 x double> %242
  %245 = select <2 x i1> %241, <2 x double> %wide.load739, <2 x double> %243
  %246 = getelementptr double, ptr %5, i64 %index736
  %247 = getelementptr inbounds i8, ptr %246, i64 16
  %wide.load740 = load <2 x double>, ptr %246, align 8, !tbaa !9, !alias.scope !34, !noalias !31
  %wide.load741 = load <2 x double>, ptr %247, align 8, !tbaa !9, !alias.scope !34, !noalias !31
  %248 = fadd <2 x double> %wide.load740, %244
  %249 = fadd <2 x double> %wide.load741, %245
  store <2 x double> %248, ptr %246, align 8, !tbaa !9, !alias.scope !34, !noalias !31
  store <2 x double> %249, ptr %247, align 8, !tbaa !9, !alias.scope !34, !noalias !31
  %index.next742 = add nuw i64 %index736, 4
  %250 = icmp eq i64 %index.next742, %n.vec730
  br i1 %250, label %middle.block725, label %vector.body735, !llvm.loop !36

middle.block725:                                  ; preds = %vector.body735
  %cmp.n743 = icmp eq i64 %indvar, %n.vec730
  br i1 %cmp.n743, label %._crit_edge429.loopexit, label %.lr.ph428.preheader869

.lr.ph428.preheader869:                           ; preds = %middle.block725, %vector.memcheck, %.lr.ph428.preheader
  %indvars.iv588.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph428.preheader ], [ %ind.end731, %middle.block725 ]
  %indvars.iv586.ph = phi i64 [ %237, %vector.memcheck ], [ %237, %.lr.ph428.preheader ], [ %ind.end733, %middle.block725 ]
  %251 = and i64 %indvars.iv595, 1
  %lcmp.mod.not.not = icmp eq i64 %251, 0
  br i1 %lcmp.mod.not.not, label %.lr.ph428.prol, label %.lr.ph428.prol.loopexit

.lr.ph428.prol:                                   ; preds = %.lr.ph428.preheader869
  %252 = getelementptr inbounds double, ptr %13, i64 %indvars.iv586.ph
  %253 = load double, ptr %252, align 8, !tbaa !9
  %254 = fcmp oge double %253, 0.000000e+00
  %255 = fneg double %253
  %256 = select i1 %254, double %253, double %255
  %257 = getelementptr inbounds double, ptr %12, i64 %indvars.iv588.ph
  %258 = load double, ptr %257, align 8, !tbaa !9
  %259 = fadd double %258, %256
  store double %259, ptr %257, align 8, !tbaa !9
  %indvars.iv.next587.prol = add nsw i64 %indvars.iv586.ph, 1
  %indvars.iv.next589.prol = add nuw nsw i64 %indvars.iv588.ph, 1
  br label %.lr.ph428.prol.loopexit

.lr.ph428.prol.loopexit:                          ; preds = %.lr.ph428.prol, %.lr.ph428.preheader869
  %indvars.iv.next587.lcssa871.unr = phi i64 [ poison, %.lr.ph428.preheader869 ], [ %indvars.iv.next587.prol, %.lr.ph428.prol ]
  %indvars.iv588.unr = phi i64 [ %indvars.iv588.ph, %.lr.ph428.preheader869 ], [ %indvars.iv.next589.prol, %.lr.ph428.prol ]
  %indvars.iv586.unr = phi i64 [ %indvars.iv586.ph, %.lr.ph428.preheader869 ], [ %indvars.iv.next587.prol, %.lr.ph428.prol ]
  %260 = icmp eq i64 %indvar, %indvars.iv588.ph
  br i1 %260, label %._crit_edge429.loopexit, label %.lr.ph428

.lr.ph428:                                        ; preds = %.lr.ph428.prol.loopexit, %.lr.ph428
  %indvars.iv588 = phi i64 [ %indvars.iv.next589.1, %.lr.ph428 ], [ %indvars.iv588.unr, %.lr.ph428.prol.loopexit ]
  %indvars.iv586 = phi i64 [ %indvars.iv.next587.1, %.lr.ph428 ], [ %indvars.iv586.unr, %.lr.ph428.prol.loopexit ]
  %261 = getelementptr inbounds double, ptr %13, i64 %indvars.iv586
  %262 = load double, ptr %261, align 8, !tbaa !9
  %263 = fcmp oge double %262, 0.000000e+00
  %264 = fneg double %262
  %265 = select i1 %263, double %262, double %264
  %266 = getelementptr inbounds double, ptr %12, i64 %indvars.iv588
  %267 = load double, ptr %266, align 8, !tbaa !9
  %268 = fadd double %267, %265
  store double %268, ptr %266, align 8, !tbaa !9
  %269 = getelementptr double, ptr %4, i64 %indvars.iv586
  %270 = load double, ptr %269, align 8, !tbaa !9
  %271 = fcmp oge double %270, 0.000000e+00
  %272 = fneg double %270
  %273 = select i1 %271, double %270, double %272
  %274 = getelementptr double, ptr %5, i64 %indvars.iv588
  %275 = load double, ptr %274, align 8, !tbaa !9
  %276 = fadd double %275, %273
  store double %276, ptr %274, align 8, !tbaa !9
  %indvars.iv.next587.1 = add nsw i64 %indvars.iv586, 2
  %indvars.iv.next589.1 = add nuw nsw i64 %indvars.iv588, 2
  %exitcond594.not.1 = icmp eq i64 %indvars.iv.next589.1, %indvars.iv595
  br i1 %exitcond594.not.1, label %._crit_edge429.loopexit, label %.lr.ph428, !llvm.loop !37

._crit_edge429.loopexit:                          ; preds = %.lr.ph428.prol.loopexit, %.lr.ph428, %middle.block725
  %indvars.iv.next587.lcssa = phi i64 [ %ind.end733, %middle.block725 ], [ %indvars.iv.next587.lcssa871.unr, %.lr.ph428.prol.loopexit ], [ %indvars.iv.next587.1, %.lr.ph428 ]
  %277 = trunc nsw i64 %indvars.iv.next587.lcssa to i32
  br label %._crit_edge429

._crit_edge429:                                   ; preds = %._crit_edge429.loopexit, %.lr.ph434
  %.7242.lcssa = phi i32 [ %.6241433, %.lr.ph434 ], [ %277, %._crit_edge429.loopexit ]
  %278 = add nsw i32 %.7242.lcssa, 1
  %indvars.iv.next596 = add nuw nsw i64 %indvars.iv595, 1
  %exitcond599.not = icmp eq i64 %indvars.iv.next596, %wide.trip.count598
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond599.not, label %.loopexit356, label %.lr.ph434, !llvm.loop !38

279:                                              ; preds = %227
  br i1 %.not292471, label %.loopexit356, label %.lr.ph448.preheader

.lr.ph448.preheader:                              ; preds = %279
  %280 = zext nneg i32 %226 to i64
  %281 = shl nuw nsw i64 %280, 3
  tail call void @llvm.memset.p0.i64(ptr align 8 %5, i8 0, i64 %281, i1 false), !tbaa !9
  %282 = add nuw i32 %226, 2
  %wide.trip.count617 = zext i32 %282 to i64
  %scevgep748 = getelementptr i8, ptr %4, i64 -8
  %invariant.gep901 = getelementptr i8, ptr %5, i64 8
  br label %.lr.ph448

.lr.ph448:                                        ; preds = %.lr.ph448.preheader, %.loopexit853
  %indvar745 = phi i64 [ 0, %.lr.ph448.preheader ], [ %indvar.next746, %.loopexit853 ]
  %indvars.iv614 = phi i64 [ 2, %.lr.ph448.preheader ], [ %indvars.iv.next615, %.loopexit853 ]
  %.8243447 = phi i64 [ 1, %.lr.ph448.preheader ], [ %indvars.iv.next604.lcssa, %.loopexit853 ]
  %283 = add i64 %indvar745, 1
  %284 = add i64 %indvar745, 1
  %sext = shl i64 %.8243447, 32
  %285 = ashr exact i64 %sext, 32
  %min.iters.check757 = icmp ult i64 %284, 4
  br i1 %min.iters.check757, label %scalar.ph756.preheader, label %vector.memcheck744

vector.memcheck744:                               ; preds = %.lr.ph448
  %286 = shl nuw nsw i64 %indvar745, 3
  %scevgep750 = getelementptr i8, ptr %4, i64 %286
  %gep902 = getelementptr i8, ptr %invariant.gep901, i64 %286
  %287 = ashr exact i64 %sext, 29
  %scevgep749 = getelementptr i8, ptr %scevgep748, i64 %287
  %scevgep751 = getelementptr i8, ptr %scevgep750, i64 %287
  %bound0752 = icmp ugt ptr %scevgep751, %5
  %bound1753 = icmp ult ptr %scevgep749, %gep902
  %found.conflict754 = and i1 %bound0752, %bound1753
  br i1 %found.conflict754, label %scalar.ph756.preheader, label %vector.ph758

vector.ph758:                                     ; preds = %vector.memcheck744
  %n.vec760 = and i64 %284, -4
  %ind.end761 = or disjoint i64 %n.vec760, 1
  %ind.end763 = add i64 %285, %n.vec760
  %288 = getelementptr double, ptr %13, i64 %285
  br label %vector.body765

vector.body765:                                   ; preds = %vector.body765, %vector.ph758
  %index766 = phi i64 [ 0, %vector.ph758 ], [ %index.next773, %vector.body765 ]
  %289 = getelementptr double, ptr %288, i64 %index766
  %290 = getelementptr inbounds i8, ptr %289, i64 16
  %wide.load769 = load <2 x double>, ptr %289, align 8, !tbaa !9, !alias.scope !39
  %wide.load770 = load <2 x double>, ptr %290, align 8, !tbaa !9, !alias.scope !39
  %291 = fcmp oge <2 x double> %wide.load769, zeroinitializer
  %292 = fcmp oge <2 x double> %wide.load770, zeroinitializer
  %293 = fneg <2 x double> %wide.load769
  %294 = fneg <2 x double> %wide.load770
  %295 = select <2 x i1> %291, <2 x double> %wide.load769, <2 x double> %293
  %296 = select <2 x i1> %292, <2 x double> %wide.load770, <2 x double> %294
  %297 = getelementptr double, ptr %5, i64 %index766
  %298 = getelementptr inbounds i8, ptr %297, i64 16
  %wide.load771 = load <2 x double>, ptr %297, align 8, !tbaa !9, !alias.scope !42, !noalias !39
  %wide.load772 = load <2 x double>, ptr %298, align 8, !tbaa !9, !alias.scope !42, !noalias !39
  %299 = fadd <2 x double> %wide.load771, %295
  %300 = fadd <2 x double> %wide.load772, %296
  store <2 x double> %299, ptr %297, align 8, !tbaa !9, !alias.scope !42, !noalias !39
  store <2 x double> %300, ptr %298, align 8, !tbaa !9, !alias.scope !42, !noalias !39
  %index.next773 = add nuw i64 %index766, 4
  %301 = icmp eq i64 %index.next773, %n.vec760
  br i1 %301, label %middle.block755, label %vector.body765, !llvm.loop !44

middle.block755:                                  ; preds = %vector.body765
  %cmp.n774 = icmp eq i64 %284, %n.vec760
  br i1 %cmp.n774, label %.loopexit853, label %scalar.ph756.preheader

scalar.ph756.preheader:                           ; preds = %middle.block755, %vector.memcheck744, %.lr.ph448
  %indvars.iv605.ph = phi i64 [ 1, %vector.memcheck744 ], [ 1, %.lr.ph448 ], [ %ind.end761, %middle.block755 ]
  %indvars.iv603.ph = phi i64 [ %285, %vector.memcheck744 ], [ %285, %.lr.ph448 ], [ %ind.end763, %middle.block755 ]
  %302 = and i64 %indvars.iv614, 1
  %lcmp.mod878.not.not = icmp eq i64 %302, 0
  br i1 %lcmp.mod878.not.not, label %scalar.ph756.prol, label %scalar.ph756.prol.loopexit

scalar.ph756.prol:                                ; preds = %scalar.ph756.preheader
  %303 = getelementptr inbounds double, ptr %13, i64 %indvars.iv603.ph
  %304 = load double, ptr %303, align 8, !tbaa !9
  %305 = fcmp oge double %304, 0.000000e+00
  %306 = fneg double %304
  %307 = select i1 %305, double %304, double %306
  %308 = getelementptr inbounds double, ptr %12, i64 %indvars.iv605.ph
  %309 = load double, ptr %308, align 8, !tbaa !9
  %310 = fadd double %309, %307
  store double %310, ptr %308, align 8, !tbaa !9
  %indvars.iv.next604.prol = add nsw i64 %indvars.iv603.ph, 1
  %indvars.iv.next606.prol = add nuw nsw i64 %indvars.iv605.ph, 1
  br label %scalar.ph756.prol.loopexit

scalar.ph756.prol.loopexit:                       ; preds = %scalar.ph756.prol, %scalar.ph756.preheader
  %indvars.iv.next604.lcssa868.unr = phi i64 [ poison, %scalar.ph756.preheader ], [ %indvars.iv.next604.prol, %scalar.ph756.prol ]
  %indvars.iv605.unr = phi i64 [ %indvars.iv605.ph, %scalar.ph756.preheader ], [ %indvars.iv.next606.prol, %scalar.ph756.prol ]
  %indvars.iv603.unr = phi i64 [ %indvars.iv603.ph, %scalar.ph756.preheader ], [ %indvars.iv.next604.prol, %scalar.ph756.prol ]
  %311 = icmp eq i64 %283, %indvars.iv605.ph
  br i1 %311, label %.loopexit853, label %scalar.ph756

scalar.ph756:                                     ; preds = %scalar.ph756.prol.loopexit, %scalar.ph756
  %indvars.iv605 = phi i64 [ %indvars.iv.next606.1, %scalar.ph756 ], [ %indvars.iv605.unr, %scalar.ph756.prol.loopexit ]
  %indvars.iv603 = phi i64 [ %indvars.iv.next604.1, %scalar.ph756 ], [ %indvars.iv603.unr, %scalar.ph756.prol.loopexit ]
  %312 = getelementptr inbounds double, ptr %13, i64 %indvars.iv603
  %313 = load double, ptr %312, align 8, !tbaa !9
  %314 = fcmp oge double %313, 0.000000e+00
  %315 = fneg double %313
  %316 = select i1 %314, double %313, double %315
  %317 = getelementptr inbounds double, ptr %12, i64 %indvars.iv605
  %318 = load double, ptr %317, align 8, !tbaa !9
  %319 = fadd double %318, %316
  store double %319, ptr %317, align 8, !tbaa !9
  %320 = getelementptr double, ptr %4, i64 %indvars.iv603
  %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 %indvars.iv605
  %326 = load double, ptr %325, align 8, !tbaa !9
  %327 = fadd double %326, %324
  store double %327, ptr %325, align 8, !tbaa !9
  %indvars.iv.next604.1 = add nsw i64 %indvars.iv603, 2
  %indvars.iv.next606.1 = add nuw nsw i64 %indvars.iv605, 2
  %exitcond613.not.1 = icmp eq i64 %indvars.iv.next606.1, %indvars.iv614
  br i1 %exitcond613.not.1, label %.loopexit853, label %scalar.ph756, !llvm.loop !45

.loopexit853:                                     ; preds = %scalar.ph756.prol.loopexit, %scalar.ph756, %middle.block755
  %indvars.iv.next604.lcssa = phi i64 [ %ind.end763, %middle.block755 ], [ %indvars.iv.next604.lcssa868.unr, %scalar.ph756.prol.loopexit ], [ %indvars.iv.next604.1, %scalar.ph756 ]
  %indvars.iv.next615 = add nuw nsw i64 %indvars.iv614, 1
  %exitcond618.not = icmp eq i64 %indvars.iv.next615, %wide.trip.count617
  %indvar.next746 = add i64 %indvar745, 1
  br i1 %exitcond618.not, label %.loopexit356, label %.lr.ph448, !llvm.loop !46

328:                                              ; preds = %223
  br i1 %.not291, label %386, label %329

329:                                              ; preds = %328
  br i1 %.not292471, label %.loopexit356, label %.lr.ph454.preheader

.lr.ph454.preheader:                              ; preds = %329
  %330 = add nuw i32 %226, 1
  %wide.trip.count622 = zext i32 %330 to i64
  %331 = zext nneg i32 %226 to i64
  %min.iters.check777 = icmp ult i32 %226, 4
  br i1 %min.iters.check777, label %.lr.ph454.preheader866, label %vector.ph778

.lr.ph454.preheader866:                           ; preds = %middle.block775, %.lr.ph454.preheader
  %indvars.iv619.ph = phi i64 [ 1, %.lr.ph454.preheader ], [ %ind.end781, %middle.block775 ]
  br label %.lr.ph454

vector.ph778:                                     ; preds = %.lr.ph454.preheader
  %n.vec780 = and i64 %331, 2147483644
  %ind.end781 = or disjoint i64 %n.vec780, 1
  br label %vector.body783

vector.body783:                                   ; preds = %vector.body783, %vector.ph778
  %index784 = phi i64 [ 0, %vector.ph778 ], [ %index.next786, %vector.body783 ]
  %332 = getelementptr double, ptr %5, i64 %index784
  %333 = getelementptr inbounds i8, ptr %332, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %332, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %333, align 8, !tbaa !9
  %index.next786 = add nuw i64 %index784, 4
  %334 = icmp eq i64 %index.next786, %n.vec780
  br i1 %334, label %middle.block775, label %vector.body783, !llvm.loop !47

middle.block775:                                  ; preds = %vector.body783
  %cmp.n787 = icmp eq i64 %n.vec780, %331
  br i1 %cmp.n787, label %.preheader357, label %.lr.ph454.preheader866

.preheader357:                                    ; preds = %.lr.ph454, %middle.block775
  br i1 %.not292471, label %.loopexit356, label %.lr.ph468.preheader

.lr.ph468.preheader:                              ; preds = %.preheader357
  %335 = add nuw i32 %226, 1
  %wide.trip.count636 = zext i32 %335 to i64
  %wide.trip.count633 = zext nneg i32 %226 to i64
  %336 = shl nuw nsw i64 %wide.trip.count633, 3
  %scevgep792 = getelementptr i8, ptr %5, i64 %336
  %scevgep793 = getelementptr i8, ptr %4, i64 -8
  %337 = add nsw i64 %336, -16
  %invariant.gep907 = getelementptr i8, ptr %5, i64 8
  %338 = add nsw i64 %331, -1
  %invariant.gep905 = getelementptr i8, ptr %5, i64 8
  br label %.lr.ph468

.lr.ph454:                                        ; preds = %.lr.ph454.preheader866, %.lr.ph454
  %indvars.iv619 = phi i64 [ %indvars.iv.next620, %.lr.ph454 ], [ %indvars.iv619.ph, %.lr.ph454.preheader866 ]
  %339 = getelementptr inbounds double, ptr %12, i64 %indvars.iv619
  store double 1.000000e+00, ptr %339, align 8, !tbaa !9
  %indvars.iv.next620 = add nuw nsw i64 %indvars.iv619, 1
  %exitcond623.not = icmp eq i64 %indvars.iv.next620, %wide.trip.count622
  br i1 %exitcond623.not, label %.preheader357, label %.lr.ph454, !llvm.loop !48

.lr.ph468:                                        ; preds = %.lr.ph468.preheader, %._crit_edge461
  %indvar789 = phi i64 [ 0, %.lr.ph468.preheader ], [ %indvar.next790, %._crit_edge461 ]
  %indvars.iv626 = phi i64 [ 1, %.lr.ph468.preheader ], [ %indvars.iv.next627, %._crit_edge461 ]
  %.10245467 = phi i32 [ 1, %.lr.ph468.preheader ], [ %.11246.lcssa, %._crit_edge461 ]
  %340 = xor i64 %indvar789, -1
  %341 = add i64 %340, %wide.trip.count633
  %342 = shl nuw nsw i64 %indvar789, 3
  %gep908 = getelementptr i8, ptr %invariant.gep907, i64 %342
  %343 = shl i64 %indvar789, 3
  %344 = sub i64 %337, %343
  %scevgep795 = getelementptr i8, ptr %4, i64 %344
  %indvars635 = trunc i64 %indvars.iv626 to i32
  %.11246455 = add i32 %.10245467, 1
  %.not299.not456 = icmp sgt i32 %226, %indvars635
  br i1 %.not299.not456, label %.lr.ph460.preheader, label %._crit_edge461

.lr.ph460.preheader:                              ; preds = %.lr.ph468
  %345 = sext i32 %.11246455 to i64
  %min.iters.check802 = icmp ult i64 %341, 4
  br i1 %min.iters.check802, label %.lr.ph460.preheader863, label %vector.memcheck788

vector.memcheck788:                               ; preds = %.lr.ph460.preheader
  %346 = shl nsw i64 %345, 3
  %scevgep794 = getelementptr i8, ptr %scevgep793, i64 %346
  %scevgep796 = getelementptr i8, ptr %scevgep795, i64 %346
  %bound0797 = icmp ult ptr %gep908, %scevgep796
  %bound1798 = icmp ult ptr %scevgep794, %scevgep792
  %found.conflict799 = and i1 %bound0797, %bound1798
  br i1 %found.conflict799, label %.lr.ph460.preheader863, label %vector.ph803

vector.ph803:                                     ; preds = %vector.memcheck788
  %n.vec805 = and i64 %341, -4
  %ind.end806 = add i64 %indvars.iv626, %n.vec805
  %ind.end808 = add i64 %n.vec805, %345
  %invariant.gep903 = getelementptr double, ptr %13, i64 %345
  %347 = getelementptr double, ptr %5, i64 %indvars.iv626
  br label %vector.body810

vector.body810:                                   ; preds = %vector.body810, %vector.ph803
  %index811 = phi i64 [ 0, %vector.ph803 ], [ %index.next818, %vector.body810 ]
  %gep904 = getelementptr double, ptr %invariant.gep903, i64 %index811
  %348 = getelementptr inbounds i8, ptr %gep904, i64 16
  %wide.load814 = load <2 x double>, ptr %gep904, align 8, !tbaa !9, !alias.scope !49
  %wide.load815 = load <2 x double>, ptr %348, align 8, !tbaa !9, !alias.scope !49
  %349 = fcmp oge <2 x double> %wide.load814, zeroinitializer
  %350 = fcmp oge <2 x double> %wide.load815, zeroinitializer
  %351 = fneg <2 x double> %wide.load814
  %352 = fneg <2 x double> %wide.load815
  %353 = select <2 x i1> %349, <2 x double> %wide.load814, <2 x double> %351
  %354 = select <2 x i1> %350, <2 x double> %wide.load815, <2 x double> %352
  %355 = getelementptr double, ptr %347, i64 %index811
  %356 = getelementptr i8, ptr %355, i64 16
  %wide.load816 = load <2 x double>, ptr %355, align 8, !tbaa !9, !alias.scope !52, !noalias !49
  %wide.load817 = load <2 x double>, ptr %356, align 8, !tbaa !9, !alias.scope !52, !noalias !49
  %357 = fadd <2 x double> %wide.load816, %353
  %358 = fadd <2 x double> %wide.load817, %354
  store <2 x double> %357, ptr %355, align 8, !tbaa !9, !alias.scope !52, !noalias !49
  store <2 x double> %358, ptr %356, align 8, !tbaa !9, !alias.scope !52, !noalias !49
  %index.next818 = add nuw i64 %index811, 4
  %359 = icmp eq i64 %index.next818, %n.vec805
  br i1 %359, label %middle.block800, label %vector.body810, !llvm.loop !54

middle.block800:                                  ; preds = %vector.body810
  %cmp.n819 = icmp eq i64 %341, %n.vec805
  br i1 %cmp.n819, label %._crit_edge461.loopexit, label %.lr.ph460.preheader863

.lr.ph460.preheader863:                           ; preds = %middle.block800, %vector.memcheck788, %.lr.ph460.preheader
  %indvars.iv628.ph = phi i64 [ %indvars.iv626, %vector.memcheck788 ], [ %indvars.iv626, %.lr.ph460.preheader ], [ %ind.end806, %middle.block800 ]
  %indvars.iv624.ph = phi i64 [ %345, %vector.memcheck788 ], [ %345, %.lr.ph460.preheader ], [ %ind.end808, %middle.block800 ]
  %360 = sub i64 %331, %indvars.iv628.ph
  %xtraiter879 = and i64 %360, 1
  %lcmp.mod880.not = icmp eq i64 %xtraiter879, 0
  br i1 %lcmp.mod880.not, label %.lr.ph460.prol.loopexit, label %.lr.ph460.prol

.lr.ph460.prol:                                   ; preds = %.lr.ph460.preheader863
  %indvars.iv.next629.prol = add nuw nsw i64 %indvars.iv628.ph, 1
  %361 = getelementptr inbounds double, ptr %13, i64 %indvars.iv624.ph
  %362 = load double, ptr %361, align 8, !tbaa !9
  %363 = fcmp oge double %362, 0.000000e+00
  %364 = fneg double %362
  %365 = select i1 %363, double %362, double %364
  %366 = getelementptr double, ptr %5, i64 %indvars.iv628.ph
  %367 = load double, ptr %366, align 8, !tbaa !9
  %368 = fadd double %367, %365
  store double %368, ptr %366, align 8, !tbaa !9
  %indvars.iv.next625.prol = add nsw i64 %indvars.iv624.ph, 1
  br label %.lr.ph460.prol.loopexit

.lr.ph460.prol.loopexit:                          ; preds = %.lr.ph460.prol, %.lr.ph460.preheader863
  %indvars.iv.next625.lcssa865.unr = phi i64 [ poison, %.lr.ph460.preheader863 ], [ %indvars.iv.next625.prol, %.lr.ph460.prol ]
  %indvars.iv628.unr = phi i64 [ %indvars.iv628.ph, %.lr.ph460.preheader863 ], [ %indvars.iv.next629.prol, %.lr.ph460.prol ]
  %indvars.iv624.unr = phi i64 [ %indvars.iv624.ph, %.lr.ph460.preheader863 ], [ %indvars.iv.next625.prol, %.lr.ph460.prol ]
  %369 = icmp eq i64 %indvars.iv628.ph, %338
  br i1 %369, label %._crit_edge461.loopexit, label %.lr.ph460

.lr.ph460:                                        ; preds = %.lr.ph460.prol.loopexit, %.lr.ph460
  %indvars.iv628 = phi i64 [ %indvars.iv.next629.1, %.lr.ph460 ], [ %indvars.iv628.unr, %.lr.ph460.prol.loopexit ]
  %indvars.iv624 = phi i64 [ %indvars.iv.next625.1, %.lr.ph460 ], [ %indvars.iv624.unr, %.lr.ph460.prol.loopexit ]
  %370 = getelementptr inbounds double, ptr %13, i64 %indvars.iv624
  %371 = load double, ptr %370, align 8, !tbaa !9
  %372 = fcmp oge double %371, 0.000000e+00
  %373 = fneg double %371
  %374 = select i1 %372, double %371, double %373
  %375 = getelementptr double, ptr %5, i64 %indvars.iv628
  %376 = load double, ptr %375, align 8, !tbaa !9
  %377 = fadd double %376, %374
  store double %377, ptr %375, align 8, !tbaa !9
  %indvars.iv.next629.1 = add nuw nsw i64 %indvars.iv628, 2
  %378 = getelementptr double, ptr %4, i64 %indvars.iv624
  %379 = load double, ptr %378, align 8, !tbaa !9
  %380 = fcmp oge double %379, 0.000000e+00
  %381 = fneg double %379
  %382 = select i1 %380, double %379, double %381
  %gep906 = getelementptr double, ptr %invariant.gep905, i64 %indvars.iv628
  %383 = load double, ptr %gep906, align 8, !tbaa !9
  %384 = fadd double %383, %382
  store double %384, ptr %gep906, align 8, !tbaa !9
  %indvars.iv.next625.1 = add nsw i64 %indvars.iv624, 2
  %exitcond634.not.1 = icmp eq i64 %indvars.iv.next629.1, %wide.trip.count633
  br i1 %exitcond634.not.1, label %._crit_edge461.loopexit, label %.lr.ph460, !llvm.loop !55

._crit_edge461.loopexit:                          ; preds = %.lr.ph460.prol.loopexit, %.lr.ph460, %middle.block800
  %indvars.iv.next625.lcssa = phi i64 [ %ind.end808, %middle.block800 ], [ %indvars.iv.next625.lcssa865.unr, %.lr.ph460.prol.loopexit ], [ %indvars.iv.next625.1, %.lr.ph460 ]
  %385 = trunc nsw i64 %indvars.iv.next625.lcssa to i32
  br label %._crit_edge461

._crit_edge461:                                   ; preds = %._crit_edge461.loopexit, %.lr.ph468
  %.11246.lcssa = phi i32 [ %.11246455, %.lr.ph468 ], [ %385, %._crit_edge461.loopexit ]
  %indvars.iv.next627 = add nuw nsw i64 %indvars.iv626, 1
  %exitcond637.not = icmp eq i64 %indvars.iv.next627, %wide.trip.count636
  %indvar.next790 = add i64 %indvar789, 1
  br i1 %exitcond637.not, label %.loopexit356, label %.lr.ph468, !llvm.loop !56

386:                                              ; preds = %328
  br i1 %.not292471, label %.loopexit356, label %.lr.ph482.preheader

.lr.ph482.preheader:                              ; preds = %386
  %387 = zext nneg i32 %226 to i64
  %388 = shl nuw nsw i64 %387, 3
  tail call void @llvm.memset.p0.i64(ptr align 8 %5, i8 0, i64 %388, i1 false), !tbaa !9
  %389 = add nuw i32 %226, 1
  %wide.trip.count653 = zext i32 %389 to i64
  %390 = shl nuw nsw i64 %wide.trip.count653, 3
  %391 = getelementptr i8, ptr %5, i64 %390
  %scevgep824 = getelementptr i8, ptr %391, i64 -8
  %scevgep825 = getelementptr i8, ptr %4, i64 -8
  %392 = add nsw i64 %390, -16
  %393 = zext nneg i32 %226 to i64
  %394 = zext nneg i32 %226 to i64
  br label %.lr.ph482

.lr.ph482:                                        ; preds = %.lr.ph482.preheader, %.loopexit852
  %indvar821 = phi i64 [ 0, %.lr.ph482.preheader ], [ %indvar.next822, %.loopexit852 ]
  %indvars.iv643 = phi i64 [ 1, %.lr.ph482.preheader ], [ %indvars.iv.next644, %.loopexit852 ]
  %.12247481 = phi i64 [ 1, %.lr.ph482.preheader ], [ %indvars.iv.next642.lcssa, %.loopexit852 ]
  %395 = sub i64 %393, %indvar821
  %sext693 = shl i64 %.12247481, 32
  %396 = ashr exact i64 %sext693, 32
  %min.iters.check834 = icmp ult i64 %395, 4
  br i1 %min.iters.check834, label %scalar.ph833.preheader, label %vector.memcheck820

vector.memcheck820:                               ; preds = %.lr.ph482
  %397 = shl i64 %indvar821, 3
  %398 = sub i64 %392, %397
  %scevgep827 = getelementptr i8, ptr %4, i64 %398
  %399 = shl nuw nsw i64 %indvar821, 3
  %scevgep823 = getelementptr i8, ptr %5, i64 %399
  %400 = ashr exact i64 %sext693, 29
  %scevgep826 = getelementptr i8, ptr %scevgep825, i64 %400
  %scevgep828 = getelementptr i8, ptr %scevgep827, i64 %400
  %bound0829 = icmp ult ptr %scevgep823, %scevgep828
  %bound1830 = icmp ult ptr %scevgep826, %scevgep824
  %found.conflict831 = and i1 %bound0829, %bound1830
  br i1 %found.conflict831, label %scalar.ph833.preheader, label %vector.ph835

vector.ph835:                                     ; preds = %vector.memcheck820
  %n.vec837 = and i64 %395, -4
  %ind.end838 = add i64 %indvars.iv643, %n.vec837
  %ind.end840 = add i64 %396, %n.vec837
  %401 = getelementptr double, ptr %13, i64 %396
  %402 = getelementptr double, ptr %12, i64 %indvars.iv643
  br label %vector.body842

vector.body842:                                   ; preds = %vector.body842, %vector.ph835
  %index843 = phi i64 [ 0, %vector.ph835 ], [ %index.next850, %vector.body842 ]
  %403 = getelementptr double, ptr %401, i64 %index843
  %404 = getelementptr inbounds i8, ptr %403, i64 16
  %wide.load846 = load <2 x double>, ptr %403, align 8, !tbaa !9, !alias.scope !57
  %wide.load847 = load <2 x double>, ptr %404, align 8, !tbaa !9, !alias.scope !57
  %405 = fcmp oge <2 x double> %wide.load846, zeroinitializer
  %406 = fcmp oge <2 x double> %wide.load847, zeroinitializer
  %407 = fneg <2 x double> %wide.load846
  %408 = fneg <2 x double> %wide.load847
  %409 = select <2 x i1> %405, <2 x double> %wide.load846, <2 x double> %407
  %410 = select <2 x i1> %406, <2 x double> %wide.load847, <2 x double> %408
  %411 = getelementptr double, ptr %402, i64 %index843
  %412 = getelementptr inbounds i8, ptr %411, i64 16
  %wide.load848 = load <2 x double>, ptr %411, align 8, !tbaa !9, !alias.scope !60, !noalias !57
  %wide.load849 = load <2 x double>, ptr %412, align 8, !tbaa !9, !alias.scope !60, !noalias !57
  %413 = fadd <2 x double> %wide.load848, %409
  %414 = fadd <2 x double> %wide.load849, %410
  store <2 x double> %413, ptr %411, align 8, !tbaa !9, !alias.scope !60, !noalias !57
  store <2 x double> %414, ptr %412, align 8, !tbaa !9, !alias.scope !60, !noalias !57
  %index.next850 = add nuw i64 %index843, 4
  %415 = icmp eq i64 %index.next850, %n.vec837
  br i1 %415, label %middle.block832, label %vector.body842, !llvm.loop !62

middle.block832:                                  ; preds = %vector.body842
  %cmp.n851 = icmp eq i64 %395, %n.vec837
  br i1 %cmp.n851, label %.loopexit852, label %scalar.ph833.preheader

scalar.ph833.preheader:                           ; preds = %middle.block832, %vector.memcheck820, %.lr.ph482
  %indvars.iv645.ph = phi i64 [ %indvars.iv643, %vector.memcheck820 ], [ %indvars.iv643, %.lr.ph482 ], [ %ind.end838, %middle.block832 ]
  %indvars.iv641.ph = phi i64 [ %396, %vector.memcheck820 ], [ %396, %.lr.ph482 ], [ %ind.end840, %middle.block832 ]
  %416 = sub i64 %wide.trip.count653, %indvars.iv645.ph
  %xtraiter881 = and i64 %416, 1
  %lcmp.mod882.not = icmp eq i64 %xtraiter881, 0
  br i1 %lcmp.mod882.not, label %scalar.ph833.prol.loopexit, label %scalar.ph833.prol

scalar.ph833.prol:                                ; preds = %scalar.ph833.preheader
  %417 = getelementptr inbounds double, ptr %13, i64 %indvars.iv641.ph
  %418 = load double, ptr %417, align 8, !tbaa !9
  %419 = fcmp oge double %418, 0.000000e+00
  %420 = fneg double %418
  %421 = select i1 %419, double %418, double %420
  %422 = getelementptr inbounds double, ptr %12, i64 %indvars.iv645.ph
  %423 = load double, ptr %422, align 8, !tbaa !9
  %424 = fadd double %423, %421
  store double %424, ptr %422, align 8, !tbaa !9
  %indvars.iv.next642.prol = add nsw i64 %indvars.iv641.ph, 1
  %indvars.iv.next646.prol = add nuw nsw i64 %indvars.iv645.ph, 1
  br label %scalar.ph833.prol.loopexit

scalar.ph833.prol.loopexit:                       ; preds = %scalar.ph833.prol, %scalar.ph833.preheader
  %indvars.iv.next642.lcssa862.unr = phi i64 [ poison, %scalar.ph833.preheader ], [ %indvars.iv.next642.prol, %scalar.ph833.prol ]
  %indvars.iv645.unr = phi i64 [ %indvars.iv645.ph, %scalar.ph833.preheader ], [ %indvars.iv.next646.prol, %scalar.ph833.prol ]
  %indvars.iv641.unr = phi i64 [ %indvars.iv641.ph, %scalar.ph833.preheader ], [ %indvars.iv.next642.prol, %scalar.ph833.prol ]
  %425 = icmp eq i64 %indvars.iv645.ph, %394
  br i1 %425, label %.loopexit852, label %scalar.ph833

scalar.ph833:                                     ; preds = %scalar.ph833.prol.loopexit, %scalar.ph833
  %indvars.iv645 = phi i64 [ %indvars.iv.next646.1, %scalar.ph833 ], [ %indvars.iv645.unr, %scalar.ph833.prol.loopexit ]
  %indvars.iv641 = phi i64 [ %indvars.iv.next642.1, %scalar.ph833 ], [ %indvars.iv641.unr, %scalar.ph833.prol.loopexit ]
  %426 = getelementptr inbounds double, ptr %13, i64 %indvars.iv641
  %427 = load double, ptr %426, align 8, !tbaa !9
  %428 = fcmp oge double %427, 0.000000e+00
  %429 = fneg double %427
  %430 = select i1 %428, double %427, double %429
  %431 = getelementptr inbounds double, ptr %12, i64 %indvars.iv645
  %432 = load double, ptr %431, align 8, !tbaa !9
  %433 = fadd double %432, %430
  store double %433, ptr %431, align 8, !tbaa !9
  %434 = getelementptr double, ptr %4, i64 %indvars.iv641
  %435 = load double, ptr %434, align 8, !tbaa !9
  %436 = fcmp oge double %435, 0.000000e+00
  %437 = fneg double %435
  %438 = select i1 %436, double %435, double %437
  %439 = getelementptr double, ptr %5, i64 %indvars.iv645
  %440 = load double, ptr %439, align 8, !tbaa !9
  %441 = fadd double %440, %438
  store double %441, ptr %439, align 8, !tbaa !9
  %indvars.iv.next642.1 = add nsw i64 %indvars.iv641, 2
  %indvars.iv.next646.1 = add nuw nsw i64 %indvars.iv645, 2
  %exitcond651.not.1 = icmp eq i64 %indvars.iv.next646.1, %wide.trip.count653
  br i1 %exitcond651.not.1, label %.loopexit852, label %scalar.ph833, !llvm.loop !63

.loopexit852:                                     ; preds = %scalar.ph833.prol.loopexit, %scalar.ph833, %middle.block832
  %indvars.iv.next642.lcssa = phi i64 [ %ind.end840, %middle.block832 ], [ %indvars.iv.next642.lcssa862.unr, %scalar.ph833.prol.loopexit ], [ %indvars.iv.next642.1, %scalar.ph833 ]
  %indvars.iv.next644 = add nuw nsw i64 %indvars.iv643, 1
  %exitcond654.not = icmp eq i64 %indvars.iv.next644, %wide.trip.count653
  %indvar.next822 = add i64 %indvar821, 1
  br i1 %exitcond654.not, label %.loopexit356, label %.lr.ph482, !llvm.loop !64

.loopexit356:                                     ; preds = %._crit_edge429, %.loopexit853, %._crit_edge461, %.loopexit852, %.preheader361, %228, %279, %.preheader357, %329, %386
  %.not308485 = icmp slt i32 %226, 1
  br i1 %.not308485, label %.loopexit347, label %.lr.ph489.preheader

.lr.ph489.preheader:                              ; preds = %.loopexit356
  %442 = add nuw i32 %226, 1
  %wide.trip.count658 = zext i32 %442 to i64
  br label %.lr.ph489

.lr.ph489:                                        ; preds = %.lr.ph489.preheader, %448
  %indvars.iv655 = phi i64 [ 1, %.lr.ph489.preheader ], [ %indvars.iv.next656, %448 ]
  %.16487 = phi double [ 0.000000e+00, %.lr.ph489.preheader ], [ %.17, %448 ]
  %443 = getelementptr inbounds double, ptr %12, i64 %indvars.iv655
  %444 = load double, ptr %443, align 8, !tbaa !9
  store double %444, ptr %10, align 8, !tbaa !9
  %445 = fcmp olt double %.16487, %444
  br i1 %445, label %448, label %446

446:                                              ; preds = %.lr.ph489
  %447 = call i32 @disnan_(ptr noundef nonnull %10) #5
  %.not309 = icmp eq i32 %447, 0
  br i1 %.not309, label %448, label %._crit_edge686

._crit_edge686:                                   ; preds = %446
  %.pre687 = load double, ptr %10, align 8, !tbaa !9
  br label %448

448:                                              ; preds = %.lr.ph489, %._crit_edge686, %446
  %.17 = phi double [ %.16487, %446 ], [ %.pre687, %._crit_edge686 ], [ %444, %.lr.ph489 ]
  %indvars.iv.next656 = add nuw nsw i64 %indvars.iv655, 1
  %exitcond659.not = icmp eq i64 %indvars.iv.next656, %wide.trip.count658
  br i1 %exitcond659.not, label %.loopexit347, label %.lr.ph489, !llvm.loop !65

449:                                              ; preds = %221
  %450 = tail call i32 @lsame_(ptr noundef nonnull %0, ptr noundef nonnull @.str.4) #5
  %.not278 = icmp eq i32 %450, 0
  br i1 %.not278, label %451, label %453

451:                                              ; preds = %449
  %452 = tail call i32 @lsame_(ptr noundef nonnull %0, ptr noundef nonnull @.str.5) #5
  %.not279 = icmp eq i32 %452, 0
  br i1 %.not279, label %.loopexit347, label %453

453:                                              ; preds = %451, %449
  %454 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #5
  %.not280 = icmp eq i32 %454, 0
  %455 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.1) #5
  %.not281 = icmp eq i32 %455, 0
  br i1 %.not280, label %477, label %456

456:                                              ; preds = %453
  br i1 %.not281, label %468, label %457

457:                                              ; preds = %456
  store double 1.000000e+00, ptr %11, align 16, !tbaa !9
  %458 = load i32, ptr %3, align 4, !tbaa !5
  %459 = sitofp i32 %458 to double
  %460 = getelementptr inbounds i8, ptr %11, i64 8
  store double %459, ptr %460, align 8, !tbaa !9
  %.not289491 = icmp slt i32 %458, 2
  br i1 %.not289491, label %.loopexit351, label %.lr.ph495

.lr.ph495:                                        ; preds = %457
  %461 = getelementptr inbounds i8, ptr %9, i64 8
  br label %462

462:                                              ; preds = %.lr.ph495, %462
  %463 = phi i32 [ 2, %.lr.ph495 ], [ %467, %462 ]
  %.14249493 = phi i32 [ 2, %.lr.ph495 ], [ %466, %462 ]
  %storemerge288492 = phi i32 [ 1, %.lr.ph495 ], [ %463, %462 ]
  store <2 x double> <double 0.000000e+00, double 1.000000e+00>, ptr %9, align 16, !tbaa !9
  store i32 %storemerge288492, ptr %7, align 4, !tbaa !5
  %464 = zext nneg i32 %.14249493 to i64
  %465 = getelementptr inbounds double, ptr %13, i64 %464
  call void @dlassq_(ptr noundef nonnull %7, ptr noundef nonnull %465, ptr noundef nonnull @c__1, ptr noundef nonnull %9, ptr noundef nonnull %461) #5
  call void @dcombssq_(ptr noundef nonnull %11, ptr noundef nonnull %9) #5
  %466 = add nuw nsw i32 %463, %.14249493
  %467 = add nuw nsw i32 %463, 1
  %.not289.not = icmp slt i32 %463, %458
  br i1 %.not289.not, label %462, label %.loopexit351, !llvm.loop !66

468:                                              ; preds = %456
  store <2 x double> <double 0.000000e+00, double 1.000000e+00>, ptr %11, align 16, !tbaa !9
  %469 = load i32, ptr %3, align 4, !tbaa !5
  store i32 1, ptr %8, align 4, !tbaa !5
  %.not287496 = icmp slt i32 %469, 1
  br i1 %.not287496, label %.loopexit351, label %.lr.ph499

.lr.ph499:                                        ; preds = %468
  %470 = getelementptr inbounds i8, ptr %9, i64 8
  br label %471

471:                                              ; preds = %.lr.ph499, %471
  %.15250497 = phi i32 [ 1, %.lr.ph499 ], [ %475, %471 ]
  store <2 x double> <double 0.000000e+00, double 1.000000e+00>, ptr %9, align 16, !tbaa !9
  %472 = sext i32 %.15250497 to i64
  %473 = getelementptr inbounds double, ptr %13, i64 %472
  call void @dlassq_(ptr noundef nonnull %8, ptr noundef nonnull %473, ptr noundef nonnull @c__1, ptr noundef nonnull %9, ptr noundef nonnull %470) #5
  call void @dcombssq_(ptr noundef nonnull %11, ptr noundef nonnull %9) #5
  %474 = load i32, ptr %8, align 4, !tbaa !5
  %475 = add nsw i32 %474, %.15250497
  %476 = add nsw i32 %474, 1
  store i32 %476, ptr %8, align 4, !tbaa !5
  %.not287.not = icmp slt i32 %474, %469
  br i1 %.not287.not, label %471, label %.loopexit351, !llvm.loop !67

477:                                              ; preds = %453
  br i1 %.not281, label %494, label %478

478:                                              ; preds = %477
  store double 1.000000e+00, ptr %11, align 16, !tbaa !9
  %479 = load i32, ptr %3, align 4, !tbaa !5
  %480 = sitofp i32 %479 to double
  %481 = getelementptr inbounds i8, ptr %11, i64 8
  store double %480, ptr %481, align 8, !tbaa !9
  %.not284.not500 = icmp sgt i32 %479, 1
  br i1 %.not284.not500, label %.lr.ph504, label %.loopexit351

.lr.ph504:                                        ; preds = %478
  %482 = getelementptr inbounds i8, ptr %9, i64 8
  br label %483

483:                                              ; preds = %.lr.ph504, %483
  %484 = phi i32 [ %479, %.lr.ph504 ], [ %489, %483 ]
  %.16251502 = phi i32 [ 2, %.lr.ph504 ], [ %492, %483 ]
  %485 = phi i32 [ 1, %.lr.ph504 ], [ %493, %483 ]
  store <2 x double> <double 0.000000e+00, double 1.000000e+00>, ptr %9, align 16, !tbaa !9
  %486 = sub nsw i32 %484, %485
  store i32 %486, ptr %7, align 4, !tbaa !5
  %487 = sext i32 %.16251502 to i64
  %488 = getelementptr inbounds double, ptr %13, i64 %487
  call void @dlassq_(ptr noundef nonnull %7, ptr noundef nonnull %488, ptr noundef nonnull @c__1, ptr noundef nonnull %9, ptr noundef nonnull %482) #5
  call void @dcombssq_(ptr noundef nonnull %11, ptr noundef nonnull %9) #5
  %489 = load i32, ptr %3, align 4, !tbaa !5
  %490 = add i32 %.16251502, 1
  %491 = add i32 %490, %489
  %492 = sub i32 %491, %485
  %493 = add nuw nsw i32 %485, 1
  %.not284.not = icmp slt i32 %493, %479
  br i1 %.not284.not, label %483, label %.loopexit351, !llvm.loop !68

494:                                              ; preds = %477
  store <2 x double> <double 0.000000e+00, double 1.000000e+00>, ptr %11, align 16, !tbaa !9
  %495 = load i32, ptr %3, align 4, !tbaa !5
  %.not282505 = icmp slt i32 %495, 1
  br i1 %.not282505, label %.loopexit351, label %.lr.ph509

.lr.ph509:                                        ; preds = %494
  %496 = getelementptr inbounds i8, ptr %9, i64 8
  br label %497

497:                                              ; preds = %.lr.ph509, %497
  %498 = phi i32 [ 1, %.lr.ph509 ], [ %508, %497 ]
  %499 = phi i32 [ %495, %.lr.ph509 ], [ %504, %497 ]
  %.17252507 = phi i32 [ 1, %.lr.ph509 ], [ %507, %497 ]
  %storemerge506.neg = phi i32 [ -1, %.lr.ph509 ], [ %.neg551, %497 ]
  store <2 x double> <double 0.000000e+00, double 1.000000e+00>, ptr %9, align 16, !tbaa !9
  %500 = add i32 %storemerge506.neg, 1
  %501 = add i32 %500, %499
  store i32 %501, ptr %7, align 4, !tbaa !5
  %502 = sext i32 %.17252507 to i64
  %503 = getelementptr inbounds double, ptr %13, i64 %502
  call void @dlassq_(ptr noundef nonnull %7, ptr noundef nonnull %503, ptr noundef nonnull @c__1, ptr noundef nonnull %9, ptr noundef nonnull %496) #5
  call void @dcombssq_(ptr noundef nonnull %11, ptr noundef nonnull %9) #5
  %504 = load i32, ptr %3, align 4, !tbaa !5
  %505 = add i32 %.17252507, 1
  %506 = add i32 %505, %504
  %507 = sub i32 %506, %498
  %.neg551 = xor i32 %498, -1
  %508 = add nuw nsw i32 %498, 1
  %.not282.not = icmp slt i32 %498, %495
  br i1 %.not282.not, label %497, label %.loopexit351, !llvm.loop !69

.loopexit351:                                     ; preds = %462, %471, %483, %497, %457, %468, %478, %494
  %509 = load double, ptr %11, align 16, !tbaa !9
  %510 = getelementptr inbounds i8, ptr %11, i64 8
  %511 = load double, ptr %510, align 8, !tbaa !9
  %512 = call double @sqrt(double noundef %511) #5
  %513 = fmul double %509, %512
  br label %.loopexit347

.loopexit347:                                     ; preds = %._crit_edge, %._crit_edge383, %._crit_edge397, %._crit_edge411, %448, %151, %219, %23, %40, %62, %78, %.loopexit356, %108, %153, %6, %.loopexit351, %451
  %.18 = phi double [ %513, %.loopexit351 ], [ undef, %451 ], [ 0.000000e+00, %6 ], [ 0.000000e+00, %153 ], [ 0.000000e+00, %108 ], [ 0.000000e+00, %.loopexit356 ], [ 0.000000e+00, %78 ], [ 0.000000e+00, %62 ], [ 1.000000e+00, %40 ], [ 1.000000e+00, %23 ], [ %.15, %219 ], [ %.13, %151 ], [ %.17, %448 ], [ %.10.lcssa, %._crit_edge411 ], [ %.7.lcssa, %._crit_edge397 ], [ %.4.lcssa, %._crit_edge383 ], [ %.1.lcssa, %._crit_edge ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #5
  ret double %.18
}

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

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

declare i32 @disnan_(ptr noundef) local_unnamed_addr #2

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

declare void @dcombssq_(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

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 = { 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 = !{!"int", !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}


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