; LLVM IR from OpenMathLib/OpenBLAS :: lapack-netlib/SRC (dlasr)

; 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
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @dlasr_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8) #0 {
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca double, align 8
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  %29 = alloca i32, align 4
  store ptr %0, ptr %10, align 8, !tbaa !5
  store ptr %1, ptr %11, align 8, !tbaa !5
  store ptr %2, ptr %12, align 8, !tbaa !5
  store ptr %3, ptr %13, align 8, !tbaa !5
  store ptr %4, ptr %14, align 8, !tbaa !5
  store ptr %5, ptr %15, align 8, !tbaa !5
  store ptr %6, ptr %16, align 8, !tbaa !5
  store ptr %7, ptr %17, align 8, !tbaa !5
  store ptr %8, ptr %18, align 8, !tbaa !5
  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 4, ptr %21) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #4
  %30 = load ptr, ptr %15, align 8, !tbaa !5
  %31 = getelementptr inbounds double, ptr %30, i32 -1
  store ptr %31, ptr %15, align 8, !tbaa !5
  %32 = load ptr, ptr %16, align 8, !tbaa !5
  %33 = getelementptr inbounds double, ptr %32, i32 -1
  store ptr %33, ptr %16, align 8, !tbaa !5
  %34 = load ptr, ptr %18, align 8, !tbaa !5
  %35 = load i32, ptr %34, align 4, !tbaa !9
  store i32 %35, ptr %19, align 4, !tbaa !9
  %36 = load i32, ptr %19, align 4, !tbaa !9
  %37 = mul nsw i32 %36, 1
  %38 = add nsw i32 1, %37
  store i32 %38, ptr %20, align 4, !tbaa !9
  %39 = load i32, ptr %20, align 4, !tbaa !9
  %40 = load ptr, ptr %17, align 8, !tbaa !5
  %41 = sext i32 %39 to i64
  %42 = sub i64 0, %41
  %43 = getelementptr inbounds double, ptr %40, i64 %42
  store ptr %43, ptr %17, align 8, !tbaa !5
  store i32 0, ptr %23, align 4, !tbaa !9
  %44 = load ptr, ptr %10, align 8, !tbaa !5
  %45 = call i32 @lsame_(ptr noundef %44, ptr noundef @.str)
  %46 = icmp ne i32 %45, 0
  br i1 %46, label %52, label %47

47:                                               ; preds = %9
  %48 = load ptr, ptr %10, align 8, !tbaa !5
  %49 = call i32 @lsame_(ptr noundef %48, ptr noundef @.str.1)
  %50 = icmp ne i32 %49, 0
  br i1 %50, label %52, label %51

51:                                               ; preds = %47
  store i32 1, ptr %23, align 4, !tbaa !9
  br label %103

52:                                               ; preds = %47, %9
  %53 = load ptr, ptr %11, align 8, !tbaa !5
  %54 = call i32 @lsame_(ptr noundef %53, ptr noundef @.str.2)
  %55 = icmp ne i32 %54, 0
  br i1 %55, label %65, label %56

56:                                               ; preds = %52
  %57 = load ptr, ptr %11, align 8, !tbaa !5
  %58 = call i32 @lsame_(ptr noundef %57, ptr noundef @.str.3)
  %59 = icmp ne i32 %58, 0
  br i1 %59, label %65, label %60

60:                                               ; preds = %56
  %61 = load ptr, ptr %11, align 8, !tbaa !5
  %62 = call i32 @lsame_(ptr noundef %61, ptr noundef @.str.4)
  %63 = icmp ne i32 %62, 0
  br i1 %63, label %65, label %64

64:                                               ; preds = %60
  store i32 2, ptr %23, align 4, !tbaa !9
  br label %102

65:                                               ; preds = %60, %56, %52
  %66 = load ptr, ptr %12, align 8, !tbaa !5
  %67 = call i32 @lsame_(ptr noundef %66, ptr noundef @.str.5)
  %68 = icmp ne i32 %67, 0
  br i1 %68, label %74, label %69

69:                                               ; preds = %65
  %70 = load ptr, ptr %12, align 8, !tbaa !5
  %71 = call i32 @lsame_(ptr noundef %70, ptr noundef @.str.4)
  %72 = icmp ne i32 %71, 0
  br i1 %72, label %74, label %73

73:                                               ; preds = %69
  store i32 3, ptr %23, align 4, !tbaa !9
  br label %101

74:                                               ; preds = %69, %65
  %75 = load ptr, ptr %13, align 8, !tbaa !5
  %76 = load i32, ptr %75, align 4, !tbaa !9
  %77 = icmp slt i32 %76, 0
  br i1 %77, label %78, label %79

78:                                               ; preds = %74
  store i32 4, ptr %23, align 4, !tbaa !9
  br label %100

79:                                               ; preds = %74
  %80 = load ptr, ptr %14, align 8, !tbaa !5
  %81 = load i32, ptr %80, align 4, !tbaa !9
  %82 = icmp slt i32 %81, 0
  br i1 %82, label %83, label %84

83:                                               ; preds = %79
  store i32 5, ptr %23, align 4, !tbaa !9
  br label %99

84:                                               ; preds = %79
  %85 = load ptr, ptr %18, align 8, !tbaa !5
  %86 = load i32, ptr %85, align 4, !tbaa !9
  %87 = load ptr, ptr %13, align 8, !tbaa !5
  %88 = load i32, ptr %87, align 4, !tbaa !9
  %89 = icmp sge i32 1, %88
  br i1 %89, label %90, label %91

90:                                               ; preds = %84
  br label %94

91:                                               ; preds = %84
  %92 = load ptr, ptr %13, align 8, !tbaa !5
  %93 = load i32, ptr %92, align 4, !tbaa !9
  br label %94

94:                                               ; preds = %91, %90
  %95 = phi i32 [ 1, %90 ], [ %93, %91 ]
  %96 = icmp slt i32 %86, %95
  br i1 %96, label %97, label %98

97:                                               ; preds = %94
  store i32 9, ptr %23, align 4, !tbaa !9
  br label %98

98:                                               ; preds = %97, %94
  br label %99

99:                                               ; preds = %98, %83
  br label %100

100:                                              ; preds = %99, %78
  br label %101

101:                                              ; preds = %100, %73
  br label %102

102:                                              ; preds = %101, %64
  br label %103

103:                                              ; preds = %102, %51
  %104 = load i32, ptr %23, align 4, !tbaa !9
  %105 = icmp ne i32 %104, 0
  br i1 %105, label %106, label %108

106:                                              ; preds = %103
  %107 = call i32 @xerbla_(ptr noundef @.str.6, ptr noundef %23, i32 noundef 6)
  store i32 1, ptr %29, align 4
  br label %1357

108:                                              ; preds = %103
  %109 = load ptr, ptr %13, align 8, !tbaa !5
  %110 = load i32, ptr %109, align 4, !tbaa !9
  %111 = icmp eq i32 %110, 0
  br i1 %111, label %116, label %112

112:                                              ; preds = %108
  %113 = load ptr, ptr %14, align 8, !tbaa !5
  %114 = load i32, ptr %113, align 4, !tbaa !9
  %115 = icmp eq i32 %114, 0
  br i1 %115, label %116, label %117

116:                                              ; preds = %112, %108
  store i32 1, ptr %29, align 4
  br label %1357

117:                                              ; preds = %112
  %118 = load ptr, ptr %10, align 8, !tbaa !5
  %119 = call i32 @lsame_(ptr noundef %118, ptr noundef @.str)
  %120 = icmp ne i32 %119, 0
  br i1 %120, label %121, label %739

121:                                              ; preds = %117
  %122 = load ptr, ptr %11, align 8, !tbaa !5
  %123 = call i32 @lsame_(ptr noundef %122, ptr noundef @.str.2)
  %124 = icmp ne i32 %123, 0
  br i1 %124, label %125, label %328

125:                                              ; preds = %121
  %126 = load ptr, ptr %12, align 8, !tbaa !5
  %127 = call i32 @lsame_(ptr noundef %126, ptr noundef @.str.5)
  %128 = icmp ne i32 %127, 0
  br i1 %128, label %129, label %226

129:                                              ; preds = %125
  %130 = load ptr, ptr %13, align 8, !tbaa !5
  %131 = load i32, ptr %130, align 4, !tbaa !9
  %132 = sub nsw i32 %131, 1
  store i32 %132, ptr %21, align 4, !tbaa !9
  store i32 1, ptr %26, align 4, !tbaa !9
  br label %133

133:                                              ; preds = %222, %129
  %134 = load i32, ptr %26, align 4, !tbaa !9
  %135 = load i32, ptr %21, align 4, !tbaa !9
  %136 = icmp sle i32 %134, %135
  br i1 %136, label %137, label %225

137:                                              ; preds = %133
  %138 = load ptr, ptr %15, align 8, !tbaa !5
  %139 = load i32, ptr %26, align 4, !tbaa !9
  %140 = sext i32 %139 to i64
  %141 = getelementptr inbounds double, ptr %138, i64 %140
  %142 = load double, ptr %141, align 8, !tbaa !11
  store double %142, ptr %27, align 8, !tbaa !11
  %143 = load ptr, ptr %16, align 8, !tbaa !5
  %144 = load i32, ptr %26, align 4, !tbaa !9
  %145 = sext i32 %144 to i64
  %146 = getelementptr inbounds double, ptr %143, i64 %145
  %147 = load double, ptr %146, align 8, !tbaa !11
  store double %147, ptr %28, align 8, !tbaa !11
  %148 = load double, ptr %27, align 8, !tbaa !11
  %149 = fcmp une double %148, 1.000000e+00
  br i1 %149, label %153, label %150

150:                                              ; preds = %137
  %151 = load double, ptr %28, align 8, !tbaa !11
  %152 = fcmp une double %151, 0.000000e+00
  br i1 %152, label %153, label %221

153:                                              ; preds = %150, %137
  %154 = load ptr, ptr %14, align 8, !tbaa !5
  %155 = load i32, ptr %154, align 4, !tbaa !9
  store i32 %155, ptr %22, align 4, !tbaa !9
  store i32 1, ptr %25, align 4, !tbaa !9
  br label %156

156:                                              ; preds = %217, %153
  %157 = load i32, ptr %25, align 4, !tbaa !9
  %158 = load i32, ptr %22, align 4, !tbaa !9
  %159 = icmp sle i32 %157, %158
  br i1 %159, label %160, label %220

160:                                              ; preds = %156
  %161 = load ptr, ptr %17, align 8, !tbaa !5
  %162 = load i32, ptr %26, align 4, !tbaa !9
  %163 = add nsw i32 %162, 1
  %164 = load i32, ptr %25, align 4, !tbaa !9
  %165 = load i32, ptr %19, align 4, !tbaa !9
  %166 = mul nsw i32 %164, %165
  %167 = add nsw i32 %163, %166
  %168 = sext i32 %167 to i64
  %169 = getelementptr inbounds double, ptr %161, i64 %168
  %170 = load double, ptr %169, align 8, !tbaa !11
  store double %170, ptr %24, align 8, !tbaa !11
  %171 = load double, ptr %27, align 8, !tbaa !11
  %172 = load double, ptr %24, align 8, !tbaa !11
  %173 = load double, ptr %28, align 8, !tbaa !11
  %174 = load ptr, ptr %17, align 8, !tbaa !5
  %175 = load i32, ptr %26, align 4, !tbaa !9
  %176 = load i32, ptr %25, align 4, !tbaa !9
  %177 = load i32, ptr %19, align 4, !tbaa !9
  %178 = mul nsw i32 %176, %177
  %179 = add nsw i32 %175, %178
  %180 = sext i32 %179 to i64
  %181 = getelementptr inbounds double, ptr %174, i64 %180
  %182 = load double, ptr %181, align 8, !tbaa !11
  %183 = fmul double %173, %182
  %184 = fneg double %183
  %185 = call double @llvm.fmuladd.f64(double %171, double %172, double %184)
  %186 = load ptr, ptr %17, align 8, !tbaa !5
  %187 = load i32, ptr %26, align 4, !tbaa !9
  %188 = add nsw i32 %187, 1
  %189 = load i32, ptr %25, align 4, !tbaa !9
  %190 = load i32, ptr %19, align 4, !tbaa !9
  %191 = mul nsw i32 %189, %190
  %192 = add nsw i32 %188, %191
  %193 = sext i32 %192 to i64
  %194 = getelementptr inbounds double, ptr %186, i64 %193
  store double %185, ptr %194, align 8, !tbaa !11
  %195 = load double, ptr %28, align 8, !tbaa !11
  %196 = load double, ptr %24, align 8, !tbaa !11
  %197 = load double, ptr %27, align 8, !tbaa !11
  %198 = load ptr, ptr %17, align 8, !tbaa !5
  %199 = load i32, ptr %26, align 4, !tbaa !9
  %200 = load i32, ptr %25, align 4, !tbaa !9
  %201 = load i32, ptr %19, align 4, !tbaa !9
  %202 = mul nsw i32 %200, %201
  %203 = add nsw i32 %199, %202
  %204 = sext i32 %203 to i64
  %205 = getelementptr inbounds double, ptr %198, i64 %204
  %206 = load double, ptr %205, align 8, !tbaa !11
  %207 = fmul double %197, %206
  %208 = call double @llvm.fmuladd.f64(double %195, double %196, double %207)
  %209 = load ptr, ptr %17, align 8, !tbaa !5
  %210 = load i32, ptr %26, align 4, !tbaa !9
  %211 = load i32, ptr %25, align 4, !tbaa !9
  %212 = load i32, ptr %19, align 4, !tbaa !9
  %213 = mul nsw i32 %211, %212
  %214 = add nsw i32 %210, %213
  %215 = sext i32 %214 to i64
  %216 = getelementptr inbounds double, ptr %209, i64 %215
  store double %208, ptr %216, align 8, !tbaa !11
  br label %217

217:                                              ; preds = %160
  %218 = load i32, ptr %25, align 4, !tbaa !9
  %219 = add nsw i32 %218, 1
  store i32 %219, ptr %25, align 4, !tbaa !9
  br label %156, !llvm.loop !13

220:                                              ; preds = %156
  br label %221

221:                                              ; preds = %220, %150
  br label %222

222:                                              ; preds = %221
  %223 = load i32, ptr %26, align 4, !tbaa !9
  %224 = add nsw i32 %223, 1
  store i32 %224, ptr %26, align 4, !tbaa !9
  br label %133, !llvm.loop !15

225:                                              ; preds = %133
  br label %327

226:                                              ; preds = %125
  %227 = load ptr, ptr %12, align 8, !tbaa !5
  %228 = call i32 @lsame_(ptr noundef %227, ptr noundef @.str.4)
  %229 = icmp ne i32 %228, 0
  br i1 %229, label %230, label %326

230:                                              ; preds = %226
  %231 = load ptr, ptr %13, align 8, !tbaa !5
  %232 = load i32, ptr %231, align 4, !tbaa !9
  %233 = sub nsw i32 %232, 1
  store i32 %233, ptr %26, align 4, !tbaa !9
  br label %234

234:                                              ; preds = %322, %230
  %235 = load i32, ptr %26, align 4, !tbaa !9
  %236 = icmp sge i32 %235, 1
  br i1 %236, label %237, label %325

237:                                              ; preds = %234
  %238 = load ptr, ptr %15, align 8, !tbaa !5
  %239 = load i32, ptr %26, align 4, !tbaa !9
  %240 = sext i32 %239 to i64
  %241 = getelementptr inbounds double, ptr %238, i64 %240
  %242 = load double, ptr %241, align 8, !tbaa !11
  store double %242, ptr %27, align 8, !tbaa !11
  %243 = load ptr, ptr %16, align 8, !tbaa !5
  %244 = load i32, ptr %26, align 4, !tbaa !9
  %245 = sext i32 %244 to i64
  %246 = getelementptr inbounds double, ptr %243, i64 %245
  %247 = load double, ptr %246, align 8, !tbaa !11
  store double %247, ptr %28, align 8, !tbaa !11
  %248 = load double, ptr %27, align 8, !tbaa !11
  %249 = fcmp une double %248, 1.000000e+00
  br i1 %249, label %253, label %250

250:                                              ; preds = %237
  %251 = load double, ptr %28, align 8, !tbaa !11
  %252 = fcmp une double %251, 0.000000e+00
  br i1 %252, label %253, label %321

253:                                              ; preds = %250, %237
  %254 = load ptr, ptr %14, align 8, !tbaa !5
  %255 = load i32, ptr %254, align 4, !tbaa !9
  store i32 %255, ptr %21, align 4, !tbaa !9
  store i32 1, ptr %25, align 4, !tbaa !9
  br label %256

256:                                              ; preds = %317, %253
  %257 = load i32, ptr %25, align 4, !tbaa !9
  %258 = load i32, ptr %21, align 4, !tbaa !9
  %259 = icmp sle i32 %257, %258
  br i1 %259, label %260, label %320

260:                                              ; preds = %256
  %261 = load ptr, ptr %17, align 8, !tbaa !5
  %262 = load i32, ptr %26, align 4, !tbaa !9
  %263 = add nsw i32 %262, 1
  %264 = load i32, ptr %25, align 4, !tbaa !9
  %265 = load i32, ptr %19, align 4, !tbaa !9
  %266 = mul nsw i32 %264, %265
  %267 = add nsw i32 %263, %266
  %268 = sext i32 %267 to i64
  %269 = getelementptr inbounds double, ptr %261, i64 %268
  %270 = load double, ptr %269, align 8, !tbaa !11
  store double %270, ptr %24, align 8, !tbaa !11
  %271 = load double, ptr %27, align 8, !tbaa !11
  %272 = load double, ptr %24, align 8, !tbaa !11
  %273 = load double, ptr %28, align 8, !tbaa !11
  %274 = load ptr, ptr %17, align 8, !tbaa !5
  %275 = load i32, ptr %26, align 4, !tbaa !9
  %276 = load i32, ptr %25, align 4, !tbaa !9
  %277 = load i32, ptr %19, align 4, !tbaa !9
  %278 = mul nsw i32 %276, %277
  %279 = add nsw i32 %275, %278
  %280 = sext i32 %279 to i64
  %281 = getelementptr inbounds double, ptr %274, i64 %280
  %282 = load double, ptr %281, align 8, !tbaa !11
  %283 = fmul double %273, %282
  %284 = fneg double %283
  %285 = call double @llvm.fmuladd.f64(double %271, double %272, double %284)
  %286 = load ptr, ptr %17, align 8, !tbaa !5
  %287 = load i32, ptr %26, align 4, !tbaa !9
  %288 = add nsw i32 %287, 1
  %289 = load i32, ptr %25, align 4, !tbaa !9
  %290 = load i32, ptr %19, align 4, !tbaa !9
  %291 = mul nsw i32 %289, %290
  %292 = add nsw i32 %288, %291
  %293 = sext i32 %292 to i64
  %294 = getelementptr inbounds double, ptr %286, i64 %293
  store double %285, ptr %294, align 8, !tbaa !11
  %295 = load double, ptr %28, align 8, !tbaa !11
  %296 = load double, ptr %24, align 8, !tbaa !11
  %297 = load double, ptr %27, align 8, !tbaa !11
  %298 = load ptr, ptr %17, align 8, !tbaa !5
  %299 = load i32, ptr %26, align 4, !tbaa !9
  %300 = load i32, ptr %25, align 4, !tbaa !9
  %301 = load i32, ptr %19, align 4, !tbaa !9
  %302 = mul nsw i32 %300, %301
  %303 = add nsw i32 %299, %302
  %304 = sext i32 %303 to i64
  %305 = getelementptr inbounds double, ptr %298, i64 %304
  %306 = load double, ptr %305, align 8, !tbaa !11
  %307 = fmul double %297, %306
  %308 = call double @llvm.fmuladd.f64(double %295, double %296, double %307)
  %309 = load ptr, ptr %17, align 8, !tbaa !5
  %310 = load i32, ptr %26, align 4, !tbaa !9
  %311 = load i32, ptr %25, align 4, !tbaa !9
  %312 = load i32, ptr %19, align 4, !tbaa !9
  %313 = mul nsw i32 %311, %312
  %314 = add nsw i32 %310, %313
  %315 = sext i32 %314 to i64
  %316 = getelementptr inbounds double, ptr %309, i64 %315
  store double %308, ptr %316, align 8, !tbaa !11
  br label %317

317:                                              ; preds = %260
  %318 = load i32, ptr %25, align 4, !tbaa !9
  %319 = add nsw i32 %318, 1
  store i32 %319, ptr %25, align 4, !tbaa !9
  br label %256, !llvm.loop !16

320:                                              ; preds = %256
  br label %321

321:                                              ; preds = %320, %250
  br label %322

322:                                              ; preds = %321
  %323 = load i32, ptr %26, align 4, !tbaa !9
  %324 = add nsw i32 %323, -1
  store i32 %324, ptr %26, align 4, !tbaa !9
  br label %234, !llvm.loop !17

325:                                              ; preds = %234
  br label %326

326:                                              ; preds = %325, %226
  br label %327

327:                                              ; preds = %326, %225
  br label %738

328:                                              ; preds = %121
  %329 = load ptr, ptr %11, align 8, !tbaa !5
  %330 = call i32 @lsame_(ptr noundef %329, ptr noundef @.str.3)
  %331 = icmp ne i32 %330, 0
  br i1 %331, label %332, label %527

332:                                              ; preds = %328
  %333 = load ptr, ptr %12, align 8, !tbaa !5
  %334 = call i32 @lsame_(ptr noundef %333, ptr noundef @.str.5)
  %335 = icmp ne i32 %334, 0
  br i1 %335, label %336, label %429

336:                                              ; preds = %332
  %337 = load ptr, ptr %13, align 8, !tbaa !5
  %338 = load i32, ptr %337, align 4, !tbaa !9
  store i32 %338, ptr %21, align 4, !tbaa !9
  store i32 2, ptr %26, align 4, !tbaa !9
  br label %339

339:                                              ; preds = %425, %336
  %340 = load i32, ptr %26, align 4, !tbaa !9
  %341 = load i32, ptr %21, align 4, !tbaa !9
  %342 = icmp sle i32 %340, %341
  br i1 %342, label %343, label %428

343:                                              ; preds = %339
  %344 = load ptr, ptr %15, align 8, !tbaa !5
  %345 = load i32, ptr %26, align 4, !tbaa !9
  %346 = sub nsw i32 %345, 1
  %347 = sext i32 %346 to i64
  %348 = getelementptr inbounds double, ptr %344, i64 %347
  %349 = load double, ptr %348, align 8, !tbaa !11
  store double %349, ptr %27, align 8, !tbaa !11
  %350 = load ptr, ptr %16, align 8, !tbaa !5
  %351 = load i32, ptr %26, align 4, !tbaa !9
  %352 = sub nsw i32 %351, 1
  %353 = sext i32 %352 to i64
  %354 = getelementptr inbounds double, ptr %350, i64 %353
  %355 = load double, ptr %354, align 8, !tbaa !11
  store double %355, ptr %28, align 8, !tbaa !11
  %356 = load double, ptr %27, align 8, !tbaa !11
  %357 = fcmp une double %356, 1.000000e+00
  br i1 %357, label %361, label %358

358:                                              ; preds = %343
  %359 = load double, ptr %28, align 8, !tbaa !11
  %360 = fcmp une double %359, 0.000000e+00
  br i1 %360, label %361, label %424

361:                                              ; preds = %358, %343
  %362 = load ptr, ptr %14, align 8, !tbaa !5
  %363 = load i32, ptr %362, align 4, !tbaa !9
  store i32 %363, ptr %22, align 4, !tbaa !9
  store i32 1, ptr %25, align 4, !tbaa !9
  br label %364

364:                                              ; preds = %420, %361
  %365 = load i32, ptr %25, align 4, !tbaa !9
  %366 = load i32, ptr %22, align 4, !tbaa !9
  %367 = icmp sle i32 %365, %366
  br i1 %367, label %368, label %423

368:                                              ; preds = %364
  %369 = load ptr, ptr %17, align 8, !tbaa !5
  %370 = load i32, ptr %26, align 4, !tbaa !9
  %371 = load i32, ptr %25, align 4, !tbaa !9
  %372 = load i32, ptr %19, align 4, !tbaa !9
  %373 = mul nsw i32 %371, %372
  %374 = add nsw i32 %370, %373
  %375 = sext i32 %374 to i64
  %376 = getelementptr inbounds double, ptr %369, i64 %375
  %377 = load double, ptr %376, align 8, !tbaa !11
  store double %377, ptr %24, align 8, !tbaa !11
  %378 = load double, ptr %27, align 8, !tbaa !11
  %379 = load double, ptr %24, align 8, !tbaa !11
  %380 = load double, ptr %28, align 8, !tbaa !11
  %381 = load ptr, ptr %17, align 8, !tbaa !5
  %382 = load i32, ptr %25, align 4, !tbaa !9
  %383 = load i32, ptr %19, align 4, !tbaa !9
  %384 = mul nsw i32 %382, %383
  %385 = add nsw i32 %384, 1
  %386 = sext i32 %385 to i64
  %387 = getelementptr inbounds double, ptr %381, i64 %386
  %388 = load double, ptr %387, align 8, !tbaa !11
  %389 = fmul double %380, %388
  %390 = fneg double %389
  %391 = call double @llvm.fmuladd.f64(double %378, double %379, double %390)
  %392 = load ptr, ptr %17, align 8, !tbaa !5
  %393 = load i32, ptr %26, align 4, !tbaa !9
  %394 = load i32, ptr %25, align 4, !tbaa !9
  %395 = load i32, ptr %19, align 4, !tbaa !9
  %396 = mul nsw i32 %394, %395
  %397 = add nsw i32 %393, %396
  %398 = sext i32 %397 to i64
  %399 = getelementptr inbounds double, ptr %392, i64 %398
  store double %391, ptr %399, align 8, !tbaa !11
  %400 = load double, ptr %28, align 8, !tbaa !11
  %401 = load double, ptr %24, align 8, !tbaa !11
  %402 = load double, ptr %27, align 8, !tbaa !11
  %403 = load ptr, ptr %17, align 8, !tbaa !5
  %404 = load i32, ptr %25, align 4, !tbaa !9
  %405 = load i32, ptr %19, align 4, !tbaa !9
  %406 = mul nsw i32 %404, %405
  %407 = add nsw i32 %406, 1
  %408 = sext i32 %407 to i64
  %409 = getelementptr inbounds double, ptr %403, i64 %408
  %410 = load double, ptr %409, align 8, !tbaa !11
  %411 = fmul double %402, %410
  %412 = call double @llvm.fmuladd.f64(double %400, double %401, double %411)
  %413 = load ptr, ptr %17, align 8, !tbaa !5
  %414 = load i32, ptr %25, align 4, !tbaa !9
  %415 = load i32, ptr %19, align 4, !tbaa !9
  %416 = mul nsw i32 %414, %415
  %417 = add nsw i32 %416, 1
  %418 = sext i32 %417 to i64
  %419 = getelementptr inbounds double, ptr %413, i64 %418
  store double %412, ptr %419, align 8, !tbaa !11
  br label %420

420:                                              ; preds = %368
  %421 = load i32, ptr %25, align 4, !tbaa !9
  %422 = add nsw i32 %421, 1
  store i32 %422, ptr %25, align 4, !tbaa !9
  br label %364, !llvm.loop !18

423:                                              ; preds = %364
  br label %424

424:                                              ; preds = %423, %358
  br label %425

425:                                              ; preds = %424
  %426 = load i32, ptr %26, align 4, !tbaa !9
  %427 = add nsw i32 %426, 1
  store i32 %427, ptr %26, align 4, !tbaa !9
  br label %339, !llvm.loop !19

428:                                              ; preds = %339
  br label %526

429:                                              ; preds = %332
  %430 = load ptr, ptr %12, align 8, !tbaa !5
  %431 = call i32 @lsame_(ptr noundef %430, ptr noundef @.str.4)
  %432 = icmp ne i32 %431, 0
  br i1 %432, label %433, label %525

433:                                              ; preds = %429
  %434 = load ptr, ptr %13, align 8, !tbaa !5
  %435 = load i32, ptr %434, align 4, !tbaa !9
  store i32 %435, ptr %26, align 4, !tbaa !9
  br label %436

436:                                              ; preds = %521, %433
  %437 = load i32, ptr %26, align 4, !tbaa !9
  %438 = icmp sge i32 %437, 2
  br i1 %438, label %439, label %524

439:                                              ; preds = %436
  %440 = load ptr, ptr %15, align 8, !tbaa !5
  %441 = load i32, ptr %26, align 4, !tbaa !9
  %442 = sub nsw i32 %441, 1
  %443 = sext i32 %442 to i64
  %444 = getelementptr inbounds double, ptr %440, i64 %443
  %445 = load double, ptr %444, align 8, !tbaa !11
  store double %445, ptr %27, align 8, !tbaa !11
  %446 = load ptr, ptr %16, align 8, !tbaa !5
  %447 = load i32, ptr %26, align 4, !tbaa !9
  %448 = sub nsw i32 %447, 1
  %449 = sext i32 %448 to i64
  %450 = getelementptr inbounds double, ptr %446, i64 %449
  %451 = load double, ptr %450, align 8, !tbaa !11
  store double %451, ptr %28, align 8, !tbaa !11
  %452 = load double, ptr %27, align 8, !tbaa !11
  %453 = fcmp une double %452, 1.000000e+00
  br i1 %453, label %457, label %454

454:                                              ; preds = %439
  %455 = load double, ptr %28, align 8, !tbaa !11
  %456 = fcmp une double %455, 0.000000e+00
  br i1 %456, label %457, label %520

457:                                              ; preds = %454, %439
  %458 = load ptr, ptr %14, align 8, !tbaa !5
  %459 = load i32, ptr %458, align 4, !tbaa !9
  store i32 %459, ptr %21, align 4, !tbaa !9
  store i32 1, ptr %25, align 4, !tbaa !9
  br label %460

460:                                              ; preds = %516, %457
  %461 = load i32, ptr %25, align 4, !tbaa !9
  %462 = load i32, ptr %21, align 4, !tbaa !9
  %463 = icmp sle i32 %461, %462
  br i1 %463, label %464, label %519

464:                                              ; preds = %460
  %465 = load ptr, ptr %17, align 8, !tbaa !5
  %466 = load i32, ptr %26, align 4, !tbaa !9
  %467 = load i32, ptr %25, align 4, !tbaa !9
  %468 = load i32, ptr %19, align 4, !tbaa !9
  %469 = mul nsw i32 %467, %468
  %470 = add nsw i32 %466, %469
  %471 = sext i32 %470 to i64
  %472 = getelementptr inbounds double, ptr %465, i64 %471
  %473 = load double, ptr %472, align 8, !tbaa !11
  store double %473, ptr %24, align 8, !tbaa !11
  %474 = load double, ptr %27, align 8, !tbaa !11
  %475 = load double, ptr %24, align 8, !tbaa !11
  %476 = load double, ptr %28, align 8, !tbaa !11
  %477 = load ptr, ptr %17, align 8, !tbaa !5
  %478 = load i32, ptr %25, align 4, !tbaa !9
  %479 = load i32, ptr %19, align 4, !tbaa !9
  %480 = mul nsw i32 %478, %479
  %481 = add nsw i32 %480, 1
  %482 = sext i32 %481 to i64
  %483 = getelementptr inbounds double, ptr %477, i64 %482
  %484 = load double, ptr %483, align 8, !tbaa !11
  %485 = fmul double %476, %484
  %486 = fneg double %485
  %487 = call double @llvm.fmuladd.f64(double %474, double %475, double %486)
  %488 = load ptr, ptr %17, align 8, !tbaa !5
  %489 = load i32, ptr %26, align 4, !tbaa !9
  %490 = load i32, ptr %25, align 4, !tbaa !9
  %491 = load i32, ptr %19, align 4, !tbaa !9
  %492 = mul nsw i32 %490, %491
  %493 = add nsw i32 %489, %492
  %494 = sext i32 %493 to i64
  %495 = getelementptr inbounds double, ptr %488, i64 %494
  store double %487, ptr %495, align 8, !tbaa !11
  %496 = load double, ptr %28, align 8, !tbaa !11
  %497 = load double, ptr %24, align 8, !tbaa !11
  %498 = load double, ptr %27, align 8, !tbaa !11
  %499 = load ptr, ptr %17, align 8, !tbaa !5
  %500 = load i32, ptr %25, align 4, !tbaa !9
  %501 = load i32, ptr %19, align 4, !tbaa !9
  %502 = mul nsw i32 %500, %501
  %503 = add nsw i32 %502, 1
  %504 = sext i32 %503 to i64
  %505 = getelementptr inbounds double, ptr %499, i64 %504
  %506 = load double, ptr %505, align 8, !tbaa !11
  %507 = fmul double %498, %506
  %508 = call double @llvm.fmuladd.f64(double %496, double %497, double %507)
  %509 = load ptr, ptr %17, align 8, !tbaa !5
  %510 = load i32, ptr %25, align 4, !tbaa !9
  %511 = load i32, ptr %19, align 4, !tbaa !9
  %512 = mul nsw i32 %510, %511
  %513 = add nsw i32 %512, 1
  %514 = sext i32 %513 to i64
  %515 = getelementptr inbounds double, ptr %509, i64 %514
  store double %508, ptr %515, align 8, !tbaa !11
  br label %516

516:                                              ; preds = %464
  %517 = load i32, ptr %25, align 4, !tbaa !9
  %518 = add nsw i32 %517, 1
  store i32 %518, ptr %25, align 4, !tbaa !9
  br label %460, !llvm.loop !20

519:                                              ; preds = %460
  br label %520

520:                                              ; preds = %519, %454
  br label %521

521:                                              ; preds = %520
  %522 = load i32, ptr %26, align 4, !tbaa !9
  %523 = add nsw i32 %522, -1
  store i32 %523, ptr %26, align 4, !tbaa !9
  br label %436, !llvm.loop !21

524:                                              ; preds = %436
  br label %525

525:                                              ; preds = %524, %429
  br label %526

526:                                              ; preds = %525, %428
  br label %737

527:                                              ; preds = %328
  %528 = load ptr, ptr %11, align 8, !tbaa !5
  %529 = call i32 @lsame_(ptr noundef %528, ptr noundef @.str.4)
  %530 = icmp ne i32 %529, 0
  br i1 %530, label %531, label %736

531:                                              ; preds = %527
  %532 = load ptr, ptr %12, align 8, !tbaa !5
  %533 = call i32 @lsame_(ptr noundef %532, ptr noundef @.str.5)
  %534 = icmp ne i32 %533, 0
  br i1 %534, label %535, label %633

535:                                              ; preds = %531
  %536 = load ptr, ptr %13, align 8, !tbaa !5
  %537 = load i32, ptr %536, align 4, !tbaa !9
  %538 = sub nsw i32 %537, 1
  store i32 %538, ptr %21, align 4, !tbaa !9
  store i32 1, ptr %26, align 4, !tbaa !9
  br label %539

539:                                              ; preds = %629, %535
  %540 = load i32, ptr %26, align 4, !tbaa !9
  %541 = load i32, ptr %21, align 4, !tbaa !9
  %542 = icmp sle i32 %540, %541
  br i1 %542, label %543, label %632

543:                                              ; preds = %539
  %544 = load ptr, ptr %15, align 8, !tbaa !5
  %545 = load i32, ptr %26, align 4, !tbaa !9
  %546 = sext i32 %545 to i64
  %547 = getelementptr inbounds double, ptr %544, i64 %546
  %548 = load double, ptr %547, align 8, !tbaa !11
  store double %548, ptr %27, align 8, !tbaa !11
  %549 = load ptr, ptr %16, align 8, !tbaa !5
  %550 = load i32, ptr %26, align 4, !tbaa !9
  %551 = sext i32 %550 to i64
  %552 = getelementptr inbounds double, ptr %549, i64 %551
  %553 = load double, ptr %552, align 8, !tbaa !11
  store double %553, ptr %28, align 8, !tbaa !11
  %554 = load double, ptr %27, align 8, !tbaa !11
  %555 = fcmp une double %554, 1.000000e+00
  br i1 %555, label %559, label %556

556:                                              ; preds = %543
  %557 = load double, ptr %28, align 8, !tbaa !11
  %558 = fcmp une double %557, 0.000000e+00
  br i1 %558, label %559, label %628

559:                                              ; preds = %556, %543
  %560 = load ptr, ptr %14, align 8, !tbaa !5
  %561 = load i32, ptr %560, align 4, !tbaa !9
  store i32 %561, ptr %22, align 4, !tbaa !9
  store i32 1, ptr %25, align 4, !tbaa !9
  br label %562

562:                                              ; preds = %624, %559
  %563 = load i32, ptr %25, align 4, !tbaa !9
  %564 = load i32, ptr %22, align 4, !tbaa !9
  %565 = icmp sle i32 %563, %564
  br i1 %565, label %566, label %627

566:                                              ; preds = %562
  %567 = load ptr, ptr %17, align 8, !tbaa !5
  %568 = load i32, ptr %26, align 4, !tbaa !9
  %569 = load i32, ptr %25, align 4, !tbaa !9
  %570 = load i32, ptr %19, align 4, !tbaa !9
  %571 = mul nsw i32 %569, %570
  %572 = add nsw i32 %568, %571
  %573 = sext i32 %572 to i64
  %574 = getelementptr inbounds double, ptr %567, i64 %573
  %575 = load double, ptr %574, align 8, !tbaa !11
  store double %575, ptr %24, align 8, !tbaa !11
  %576 = load double, ptr %28, align 8, !tbaa !11
  %577 = load ptr, ptr %17, align 8, !tbaa !5
  %578 = load ptr, ptr %13, align 8, !tbaa !5
  %579 = load i32, ptr %578, align 4, !tbaa !9
  %580 = load i32, ptr %25, align 4, !tbaa !9
  %581 = load i32, ptr %19, align 4, !tbaa !9
  %582 = mul nsw i32 %580, %581
  %583 = add nsw i32 %579, %582
  %584 = sext i32 %583 to i64
  %585 = getelementptr inbounds double, ptr %577, i64 %584
  %586 = load double, ptr %585, align 8, !tbaa !11
  %587 = load double, ptr %27, align 8, !tbaa !11
  %588 = load double, ptr %24, align 8, !tbaa !11
  %589 = fmul double %587, %588
  %590 = call double @llvm.fmuladd.f64(double %576, double %586, double %589)
  %591 = load ptr, ptr %17, align 8, !tbaa !5
  %592 = load i32, ptr %26, align 4, !tbaa !9
  %593 = load i32, ptr %25, align 4, !tbaa !9
  %594 = load i32, ptr %19, align 4, !tbaa !9
  %595 = mul nsw i32 %593, %594
  %596 = add nsw i32 %592, %595
  %597 = sext i32 %596 to i64
  %598 = getelementptr inbounds double, ptr %591, i64 %597
  store double %590, ptr %598, align 8, !tbaa !11
  %599 = load double, ptr %27, align 8, !tbaa !11
  %600 = load ptr, ptr %17, align 8, !tbaa !5
  %601 = load ptr, ptr %13, align 8, !tbaa !5
  %602 = load i32, ptr %601, align 4, !tbaa !9
  %603 = load i32, ptr %25, align 4, !tbaa !9
  %604 = load i32, ptr %19, align 4, !tbaa !9
  %605 = mul nsw i32 %603, %604
  %606 = add nsw i32 %602, %605
  %607 = sext i32 %606 to i64
  %608 = getelementptr inbounds double, ptr %600, i64 %607
  %609 = load double, ptr %608, align 8, !tbaa !11
  %610 = load double, ptr %28, align 8, !tbaa !11
  %611 = load double, ptr %24, align 8, !tbaa !11
  %612 = fmul double %610, %611
  %613 = fneg double %612
  %614 = call double @llvm.fmuladd.f64(double %599, double %609, double %613)
  %615 = load ptr, ptr %17, align 8, !tbaa !5
  %616 = load ptr, ptr %13, align 8, !tbaa !5
  %617 = load i32, ptr %616, align 4, !tbaa !9
  %618 = load i32, ptr %25, align 4, !tbaa !9
  %619 = load i32, ptr %19, align 4, !tbaa !9
  %620 = mul nsw i32 %618, %619
  %621 = add nsw i32 %617, %620
  %622 = sext i32 %621 to i64
  %623 = getelementptr inbounds double, ptr %615, i64 %622
  store double %614, ptr %623, align 8, !tbaa !11
  br label %624

624:                                              ; preds = %566
  %625 = load i32, ptr %25, align 4, !tbaa !9
  %626 = add nsw i32 %625, 1
  store i32 %626, ptr %25, align 4, !tbaa !9
  br label %562, !llvm.loop !22

627:                                              ; preds = %562
  br label %628

628:                                              ; preds = %627, %556
  br label %629

629:                                              ; preds = %628
  %630 = load i32, ptr %26, align 4, !tbaa !9
  %631 = add nsw i32 %630, 1
  store i32 %631, ptr %26, align 4, !tbaa !9
  br label %539, !llvm.loop !23

632:                                              ; preds = %539
  br label %735

633:                                              ; preds = %531
  %634 = load ptr, ptr %12, align 8, !tbaa !5
  %635 = call i32 @lsame_(ptr noundef %634, ptr noundef @.str.4)
  %636 = icmp ne i32 %635, 0
  br i1 %636, label %637, label %734

637:                                              ; preds = %633
  %638 = load ptr, ptr %13, align 8, !tbaa !5
  %639 = load i32, ptr %638, align 4, !tbaa !9
  %640 = sub nsw i32 %639, 1
  store i32 %640, ptr %26, align 4, !tbaa !9
  br label %641

641:                                              ; preds = %730, %637
  %642 = load i32, ptr %26, align 4, !tbaa !9
  %643 = icmp sge i32 %642, 1
  br i1 %643, label %644, label %733

644:                                              ; preds = %641
  %645 = load ptr, ptr %15, align 8, !tbaa !5
  %646 = load i32, ptr %26, align 4, !tbaa !9
  %647 = sext i32 %646 to i64
  %648 = getelementptr inbounds double, ptr %645, i64 %647
  %649 = load double, ptr %648, align 8, !tbaa !11
  store double %649, ptr %27, align 8, !tbaa !11
  %650 = load ptr, ptr %16, align 8, !tbaa !5
  %651 = load i32, ptr %26, align 4, !tbaa !9
  %652 = sext i32 %651 to i64
  %653 = getelementptr inbounds double, ptr %650, i64 %652
  %654 = load double, ptr %653, align 8, !tbaa !11
  store double %654, ptr %28, align 8, !tbaa !11
  %655 = load double, ptr %27, align 8, !tbaa !11
  %656 = fcmp une double %655, 1.000000e+00
  br i1 %656, label %660, label %657

657:                                              ; preds = %644
  %658 = load double, ptr %28, align 8, !tbaa !11
  %659 = fcmp une double %658, 0.000000e+00
  br i1 %659, label %660, label %729

660:                                              ; preds = %657, %644
  %661 = load ptr, ptr %14, align 8, !tbaa !5
  %662 = load i32, ptr %661, align 4, !tbaa !9
  store i32 %662, ptr %21, align 4, !tbaa !9
  store i32 1, ptr %25, align 4, !tbaa !9
  br label %663

663:                                              ; preds = %725, %660
  %664 = load i32, ptr %25, align 4, !tbaa !9
  %665 = load i32, ptr %21, align 4, !tbaa !9
  %666 = icmp sle i32 %664, %665
  br i1 %666, label %667, label %728

667:                                              ; preds = %663
  %668 = load ptr, ptr %17, align 8, !tbaa !5
  %669 = load i32, ptr %26, align 4, !tbaa !9
  %670 = load i32, ptr %25, align 4, !tbaa !9
  %671 = load i32, ptr %19, align 4, !tbaa !9
  %672 = mul nsw i32 %670, %671
  %673 = add nsw i32 %669, %672
  %674 = sext i32 %673 to i64
  %675 = getelementptr inbounds double, ptr %668, i64 %674
  %676 = load double, ptr %675, align 8, !tbaa !11
  store double %676, ptr %24, align 8, !tbaa !11
  %677 = load double, ptr %28, align 8, !tbaa !11
  %678 = load ptr, ptr %17, align 8, !tbaa !5
  %679 = load ptr, ptr %13, align 8, !tbaa !5
  %680 = load i32, ptr %679, align 4, !tbaa !9
  %681 = load i32, ptr %25, align 4, !tbaa !9
  %682 = load i32, ptr %19, align 4, !tbaa !9
  %683 = mul nsw i32 %681, %682
  %684 = add nsw i32 %680, %683
  %685 = sext i32 %684 to i64
  %686 = getelementptr inbounds double, ptr %678, i64 %685
  %687 = load double, ptr %686, align 8, !tbaa !11
  %688 = load double, ptr %27, align 8, !tbaa !11
  %689 = load double, ptr %24, align 8, !tbaa !11
  %690 = fmul double %688, %689
  %691 = call double @llvm.fmuladd.f64(double %677, double %687, double %690)
  %692 = load ptr, ptr %17, align 8, !tbaa !5
  %693 = load i32, ptr %26, align 4, !tbaa !9
  %694 = load i32, ptr %25, align 4, !tbaa !9
  %695 = load i32, ptr %19, align 4, !tbaa !9
  %696 = mul nsw i32 %694, %695
  %697 = add nsw i32 %693, %696
  %698 = sext i32 %697 to i64
  %699 = getelementptr inbounds double, ptr %692, i64 %698
  store double %691, ptr %699, align 8, !tbaa !11
  %700 = load double, ptr %27, align 8, !tbaa !11
  %701 = load ptr, ptr %17, align 8, !tbaa !5
  %702 = load ptr, ptr %13, align 8, !tbaa !5
  %703 = load i32, ptr %702, align 4, !tbaa !9
  %704 = load i32, ptr %25, align 4, !tbaa !9
  %705 = load i32, ptr %19, align 4, !tbaa !9
  %706 = mul nsw i32 %704, %705
  %707 = add nsw i32 %703, %706
  %708 = sext i32 %707 to i64
  %709 = getelementptr inbounds double, ptr %701, i64 %708
  %710 = load double, ptr %709, align 8, !tbaa !11
  %711 = load double, ptr %28, align 8, !tbaa !11
  %712 = load double, ptr %24, align 8, !tbaa !11
  %713 = fmul double %711, %712
  %714 = fneg double %713
  %715 = call double @llvm.fmuladd.f64(double %700, double %710, double %714)
  %716 = load ptr, ptr %17, align 8, !tbaa !5
  %717 = load ptr, ptr %13, align 8, !tbaa !5
  %718 = load i32, ptr %717, align 4, !tbaa !9
  %719 = load i32, ptr %25, align 4, !tbaa !9
  %720 = load i32, ptr %19, align 4, !tbaa !9
  %721 = mul nsw i32 %719, %720
  %722 = add nsw i32 %718, %721
  %723 = sext i32 %722 to i64
  %724 = getelementptr inbounds double, ptr %716, i64 %723
  store double %715, ptr %724, align 8, !tbaa !11
  br label %725

725:                                              ; preds = %667
  %726 = load i32, ptr %25, align 4, !tbaa !9
  %727 = add nsw i32 %726, 1
  store i32 %727, ptr %25, align 4, !tbaa !9
  br label %663, !llvm.loop !24

728:                                              ; preds = %663
  br label %729

729:                                              ; preds = %728, %657
  br label %730

730:                                              ; preds = %729
  %731 = load i32, ptr %26, align 4, !tbaa !9
  %732 = add nsw i32 %731, -1
  store i32 %732, ptr %26, align 4, !tbaa !9
  br label %641, !llvm.loop !25

733:                                              ; preds = %641
  br label %734

734:                                              ; preds = %733, %633
  br label %735

735:                                              ; preds = %734, %632
  br label %736

736:                                              ; preds = %735, %527
  br label %737

737:                                              ; preds = %736, %526
  br label %738

738:                                              ; preds = %737, %327
  br label %1356

739:                                              ; preds = %117
  %740 = load ptr, ptr %10, align 8, !tbaa !5
  %741 = call i32 @lsame_(ptr noundef %740, ptr noundef @.str.1)
  %742 = icmp ne i32 %741, 0
  br i1 %742, label %743, label %1355

743:                                              ; preds = %739
  %744 = load ptr, ptr %11, align 8, !tbaa !5
  %745 = call i32 @lsame_(ptr noundef %744, ptr noundef @.str.2)
  %746 = icmp ne i32 %745, 0
  br i1 %746, label %747, label %950

747:                                              ; preds = %743
  %748 = load ptr, ptr %12, align 8, !tbaa !5
  %749 = call i32 @lsame_(ptr noundef %748, ptr noundef @.str.5)
  %750 = icmp ne i32 %749, 0
  br i1 %750, label %751, label %848

751:                                              ; preds = %747
  %752 = load ptr, ptr %14, align 8, !tbaa !5
  %753 = load i32, ptr %752, align 4, !tbaa !9
  %754 = sub nsw i32 %753, 1
  store i32 %754, ptr %21, align 4, !tbaa !9
  store i32 1, ptr %26, align 4, !tbaa !9
  br label %755

755:                                              ; preds = %844, %751
  %756 = load i32, ptr %26, align 4, !tbaa !9
  %757 = load i32, ptr %21, align 4, !tbaa !9
  %758 = icmp sle i32 %756, %757
  br i1 %758, label %759, label %847

759:                                              ; preds = %755
  %760 = load ptr, ptr %15, align 8, !tbaa !5
  %761 = load i32, ptr %26, align 4, !tbaa !9
  %762 = sext i32 %761 to i64
  %763 = getelementptr inbounds double, ptr %760, i64 %762
  %764 = load double, ptr %763, align 8, !tbaa !11
  store double %764, ptr %27, align 8, !tbaa !11
  %765 = load ptr, ptr %16, align 8, !tbaa !5
  %766 = load i32, ptr %26, align 4, !tbaa !9
  %767 = sext i32 %766 to i64
  %768 = getelementptr inbounds double, ptr %765, i64 %767
  %769 = load double, ptr %768, align 8, !tbaa !11
  store double %769, ptr %28, align 8, !tbaa !11
  %770 = load double, ptr %27, align 8, !tbaa !11
  %771 = fcmp une double %770, 1.000000e+00
  br i1 %771, label %775, label %772

772:                                              ; preds = %759
  %773 = load double, ptr %28, align 8, !tbaa !11
  %774 = fcmp une double %773, 0.000000e+00
  br i1 %774, label %775, label %843

775:                                              ; preds = %772, %759
  %776 = load ptr, ptr %13, align 8, !tbaa !5
  %777 = load i32, ptr %776, align 4, !tbaa !9
  store i32 %777, ptr %22, align 4, !tbaa !9
  store i32 1, ptr %25, align 4, !tbaa !9
  br label %778

778:                                              ; preds = %839, %775
  %779 = load i32, ptr %25, align 4, !tbaa !9
  %780 = load i32, ptr %22, align 4, !tbaa !9
  %781 = icmp sle i32 %779, %780
  br i1 %781, label %782, label %842

782:                                              ; preds = %778
  %783 = load ptr, ptr %17, align 8, !tbaa !5
  %784 = load i32, ptr %25, align 4, !tbaa !9
  %785 = load i32, ptr %26, align 4, !tbaa !9
  %786 = add nsw i32 %785, 1
  %787 = load i32, ptr %19, align 4, !tbaa !9
  %788 = mul nsw i32 %786, %787
  %789 = add nsw i32 %784, %788
  %790 = sext i32 %789 to i64
  %791 = getelementptr inbounds double, ptr %783, i64 %790
  %792 = load double, ptr %791, align 8, !tbaa !11
  store double %792, ptr %24, align 8, !tbaa !11
  %793 = load double, ptr %27, align 8, !tbaa !11
  %794 = load double, ptr %24, align 8, !tbaa !11
  %795 = load double, ptr %28, align 8, !tbaa !11
  %796 = load ptr, ptr %17, align 8, !tbaa !5
  %797 = load i32, ptr %25, align 4, !tbaa !9
  %798 = load i32, ptr %26, align 4, !tbaa !9
  %799 = load i32, ptr %19, align 4, !tbaa !9
  %800 = mul nsw i32 %798, %799
  %801 = add nsw i32 %797, %800
  %802 = sext i32 %801 to i64
  %803 = getelementptr inbounds double, ptr %796, i64 %802
  %804 = load double, ptr %803, align 8, !tbaa !11
  %805 = fmul double %795, %804
  %806 = fneg double %805
  %807 = call double @llvm.fmuladd.f64(double %793, double %794, double %806)
  %808 = load ptr, ptr %17, align 8, !tbaa !5
  %809 = load i32, ptr %25, align 4, !tbaa !9
  %810 = load i32, ptr %26, align 4, !tbaa !9
  %811 = add nsw i32 %810, 1
  %812 = load i32, ptr %19, align 4, !tbaa !9
  %813 = mul nsw i32 %811, %812
  %814 = add nsw i32 %809, %813
  %815 = sext i32 %814 to i64
  %816 = getelementptr inbounds double, ptr %808, i64 %815
  store double %807, ptr %816, align 8, !tbaa !11
  %817 = load double, ptr %28, align 8, !tbaa !11
  %818 = load double, ptr %24, align 8, !tbaa !11
  %819 = load double, ptr %27, align 8, !tbaa !11
  %820 = load ptr, ptr %17, align 8, !tbaa !5
  %821 = load i32, ptr %25, align 4, !tbaa !9
  %822 = load i32, ptr %26, align 4, !tbaa !9
  %823 = load i32, ptr %19, align 4, !tbaa !9
  %824 = mul nsw i32 %822, %823
  %825 = add nsw i32 %821, %824
  %826 = sext i32 %825 to i64
  %827 = getelementptr inbounds double, ptr %820, i64 %826
  %828 = load double, ptr %827, align 8, !tbaa !11
  %829 = fmul double %819, %828
  %830 = call double @llvm.fmuladd.f64(double %817, double %818, double %829)
  %831 = load ptr, ptr %17, align 8, !tbaa !5
  %832 = load i32, ptr %25, align 4, !tbaa !9
  %833 = load i32, ptr %26, align 4, !tbaa !9
  %834 = load i32, ptr %19, align 4, !tbaa !9
  %835 = mul nsw i32 %833, %834
  %836 = add nsw i32 %832, %835
  %837 = sext i32 %836 to i64
  %838 = getelementptr inbounds double, ptr %831, i64 %837
  store double %830, ptr %838, align 8, !tbaa !11
  br label %839

839:                                              ; preds = %782
  %840 = load i32, ptr %25, align 4, !tbaa !9
  %841 = add nsw i32 %840, 1
  store i32 %841, ptr %25, align 4, !tbaa !9
  br label %778, !llvm.loop !26

842:                                              ; preds = %778
  br label %843

843:                                              ; preds = %842, %772
  br label %844

844:                                              ; preds = %843
  %845 = load i32, ptr %26, align 4, !tbaa !9
  %846 = add nsw i32 %845, 1
  store i32 %846, ptr %26, align 4, !tbaa !9
  br label %755, !llvm.loop !27

847:                                              ; preds = %755
  br label %949

848:                                              ; preds = %747
  %849 = load ptr, ptr %12, align 8, !tbaa !5
  %850 = call i32 @lsame_(ptr noundef %849, ptr noundef @.str.4)
  %851 = icmp ne i32 %850, 0
  br i1 %851, label %852, label %948

852:                                              ; preds = %848
  %853 = load ptr, ptr %14, align 8, !tbaa !5
  %854 = load i32, ptr %853, align 4, !tbaa !9
  %855 = sub nsw i32 %854, 1
  store i32 %855, ptr %26, align 4, !tbaa !9
  br label %856

856:                                              ; preds = %944, %852
  %857 = load i32, ptr %26, align 4, !tbaa !9
  %858 = icmp sge i32 %857, 1
  br i1 %858, label %859, label %947

859:                                              ; preds = %856
  %860 = load ptr, ptr %15, align 8, !tbaa !5
  %861 = load i32, ptr %26, align 4, !tbaa !9
  %862 = sext i32 %861 to i64
  %863 = getelementptr inbounds double, ptr %860, i64 %862
  %864 = load double, ptr %863, align 8, !tbaa !11
  store double %864, ptr %27, align 8, !tbaa !11
  %865 = load ptr, ptr %16, align 8, !tbaa !5
  %866 = load i32, ptr %26, align 4, !tbaa !9
  %867 = sext i32 %866 to i64
  %868 = getelementptr inbounds double, ptr %865, i64 %867
  %869 = load double, ptr %868, align 8, !tbaa !11
  store double %869, ptr %28, align 8, !tbaa !11
  %870 = load double, ptr %27, align 8, !tbaa !11
  %871 = fcmp une double %870, 1.000000e+00
  br i1 %871, label %875, label %872

872:                                              ; preds = %859
  %873 = load double, ptr %28, align 8, !tbaa !11
  %874 = fcmp une double %873, 0.000000e+00
  br i1 %874, label %875, label %943

875:                                              ; preds = %872, %859
  %876 = load ptr, ptr %13, align 8, !tbaa !5
  %877 = load i32, ptr %876, align 4, !tbaa !9
  store i32 %877, ptr %21, align 4, !tbaa !9
  store i32 1, ptr %25, align 4, !tbaa !9
  br label %878

878:                                              ; preds = %939, %875
  %879 = load i32, ptr %25, align 4, !tbaa !9
  %880 = load i32, ptr %21, align 4, !tbaa !9
  %881 = icmp sle i32 %879, %880
  br i1 %881, label %882, label %942

882:                                              ; preds = %878
  %883 = load ptr, ptr %17, align 8, !tbaa !5
  %884 = load i32, ptr %25, align 4, !tbaa !9
  %885 = load i32, ptr %26, align 4, !tbaa !9
  %886 = add nsw i32 %885, 1
  %887 = load i32, ptr %19, align 4, !tbaa !9
  %888 = mul nsw i32 %886, %887
  %889 = add nsw i32 %884, %888
  %890 = sext i32 %889 to i64
  %891 = getelementptr inbounds double, ptr %883, i64 %890
  %892 = load double, ptr %891, align 8, !tbaa !11
  store double %892, ptr %24, align 8, !tbaa !11
  %893 = load double, ptr %27, align 8, !tbaa !11
  %894 = load double, ptr %24, align 8, !tbaa !11
  %895 = load double, ptr %28, align 8, !tbaa !11
  %896 = load ptr, ptr %17, align 8, !tbaa !5
  %897 = load i32, ptr %25, align 4, !tbaa !9
  %898 = load i32, ptr %26, align 4, !tbaa !9
  %899 = load i32, ptr %19, align 4, !tbaa !9
  %900 = mul nsw i32 %898, %899
  %901 = add nsw i32 %897, %900
  %902 = sext i32 %901 to i64
  %903 = getelementptr inbounds double, ptr %896, i64 %902
  %904 = load double, ptr %903, align 8, !tbaa !11
  %905 = fmul double %895, %904
  %906 = fneg double %905
  %907 = call double @llvm.fmuladd.f64(double %893, double %894, double %906)
  %908 = load ptr, ptr %17, align 8, !tbaa !5
  %909 = load i32, ptr %25, align 4, !tbaa !9
  %910 = load i32, ptr %26, align 4, !tbaa !9
  %911 = add nsw i32 %910, 1
  %912 = load i32, ptr %19, align 4, !tbaa !9
  %913 = mul nsw i32 %911, %912
  %914 = add nsw i32 %909, %913
  %915 = sext i32 %914 to i64
  %916 = getelementptr inbounds double, ptr %908, i64 %915
  store double %907, ptr %916, align 8, !tbaa !11
  %917 = load double, ptr %28, align 8, !tbaa !11
  %918 = load double, ptr %24, align 8, !tbaa !11
  %919 = load double, ptr %27, align 8, !tbaa !11
  %920 = load ptr, ptr %17, align 8, !tbaa !5
  %921 = load i32, ptr %25, align 4, !tbaa !9
  %922 = load i32, ptr %26, align 4, !tbaa !9
  %923 = load i32, ptr %19, align 4, !tbaa !9
  %924 = mul nsw i32 %922, %923
  %925 = add nsw i32 %921, %924
  %926 = sext i32 %925 to i64
  %927 = getelementptr inbounds double, ptr %920, i64 %926
  %928 = load double, ptr %927, align 8, !tbaa !11
  %929 = fmul double %919, %928
  %930 = call double @llvm.fmuladd.f64(double %917, double %918, double %929)
  %931 = load ptr, ptr %17, align 8, !tbaa !5
  %932 = load i32, ptr %25, align 4, !tbaa !9
  %933 = load i32, ptr %26, align 4, !tbaa !9
  %934 = load i32, ptr %19, align 4, !tbaa !9
  %935 = mul nsw i32 %933, %934
  %936 = add nsw i32 %932, %935
  %937 = sext i32 %936 to i64
  %938 = getelementptr inbounds double, ptr %931, i64 %937
  store double %930, ptr %938, align 8, !tbaa !11
  br label %939

939:                                              ; preds = %882
  %940 = load i32, ptr %25, align 4, !tbaa !9
  %941 = add nsw i32 %940, 1
  store i32 %941, ptr %25, align 4, !tbaa !9
  br label %878, !llvm.loop !28

942:                                              ; preds = %878
  br label %943

943:                                              ; preds = %942, %872
  br label %944

944:                                              ; preds = %943
  %945 = load i32, ptr %26, align 4, !tbaa !9
  %946 = add nsw i32 %945, -1
  store i32 %946, ptr %26, align 4, !tbaa !9
  br label %856, !llvm.loop !29

947:                                              ; preds = %856
  br label %948

948:                                              ; preds = %947, %848
  br label %949

949:                                              ; preds = %948, %847
  br label %1354

950:                                              ; preds = %743
  %951 = load ptr, ptr %11, align 8, !tbaa !5
  %952 = call i32 @lsame_(ptr noundef %951, ptr noundef @.str.3)
  %953 = icmp ne i32 %952, 0
  br i1 %953, label %954, label %1143

954:                                              ; preds = %950
  %955 = load ptr, ptr %12, align 8, !tbaa !5
  %956 = call i32 @lsame_(ptr noundef %955, ptr noundef @.str.5)
  %957 = icmp ne i32 %956, 0
  br i1 %957, label %958, label %1048

958:                                              ; preds = %954
  %959 = load ptr, ptr %14, align 8, !tbaa !5
  %960 = load i32, ptr %959, align 4, !tbaa !9
  store i32 %960, ptr %21, align 4, !tbaa !9
  store i32 2, ptr %26, align 4, !tbaa !9
  br label %961

961:                                              ; preds = %1044, %958
  %962 = load i32, ptr %26, align 4, !tbaa !9
  %963 = load i32, ptr %21, align 4, !tbaa !9
  %964 = icmp sle i32 %962, %963
  br i1 %964, label %965, label %1047

965:                                              ; preds = %961
  %966 = load ptr, ptr %15, align 8, !tbaa !5
  %967 = load i32, ptr %26, align 4, !tbaa !9
  %968 = sub nsw i32 %967, 1
  %969 = sext i32 %968 to i64
  %970 = getelementptr inbounds double, ptr %966, i64 %969
  %971 = load double, ptr %970, align 8, !tbaa !11
  store double %971, ptr %27, align 8, !tbaa !11
  %972 = load ptr, ptr %16, align 8, !tbaa !5
  %973 = load i32, ptr %26, align 4, !tbaa !9
  %974 = sub nsw i32 %973, 1
  %975 = sext i32 %974 to i64
  %976 = getelementptr inbounds double, ptr %972, i64 %975
  %977 = load double, ptr %976, align 8, !tbaa !11
  store double %977, ptr %28, align 8, !tbaa !11
  %978 = load double, ptr %27, align 8, !tbaa !11
  %979 = fcmp une double %978, 1.000000e+00
  br i1 %979, label %983, label %980

980:                                              ; preds = %965
  %981 = load double, ptr %28, align 8, !tbaa !11
  %982 = fcmp une double %981, 0.000000e+00
  br i1 %982, label %983, label %1043

983:                                              ; preds = %980, %965
  %984 = load ptr, ptr %13, align 8, !tbaa !5
  %985 = load i32, ptr %984, align 4, !tbaa !9
  store i32 %985, ptr %22, align 4, !tbaa !9
  store i32 1, ptr %25, align 4, !tbaa !9
  br label %986

986:                                              ; preds = %1039, %983
  %987 = load i32, ptr %25, align 4, !tbaa !9
  %988 = load i32, ptr %22, align 4, !tbaa !9
  %989 = icmp sle i32 %987, %988
  br i1 %989, label %990, label %1042

990:                                              ; preds = %986
  %991 = load ptr, ptr %17, align 8, !tbaa !5
  %992 = load i32, ptr %25, align 4, !tbaa !9
  %993 = load i32, ptr %26, align 4, !tbaa !9
  %994 = load i32, ptr %19, align 4, !tbaa !9
  %995 = mul nsw i32 %993, %994
  %996 = add nsw i32 %992, %995
  %997 = sext i32 %996 to i64
  %998 = getelementptr inbounds double, ptr %991, i64 %997
  %999 = load double, ptr %998, align 8, !tbaa !11
  store double %999, ptr %24, align 8, !tbaa !11
  %1000 = load double, ptr %27, align 8, !tbaa !11
  %1001 = load double, ptr %24, align 8, !tbaa !11
  %1002 = load double, ptr %28, align 8, !tbaa !11
  %1003 = load ptr, ptr %17, align 8, !tbaa !5
  %1004 = load i32, ptr %25, align 4, !tbaa !9
  %1005 = load i32, ptr %19, align 4, !tbaa !9
  %1006 = add nsw i32 %1004, %1005
  %1007 = sext i32 %1006 to i64
  %1008 = getelementptr inbounds double, ptr %1003, i64 %1007
  %1009 = load double, ptr %1008, align 8, !tbaa !11
  %1010 = fmul double %1002, %1009
  %1011 = fneg double %1010
  %1012 = call double @llvm.fmuladd.f64(double %1000, double %1001, double %1011)
  %1013 = load ptr, ptr %17, align 8, !tbaa !5
  %1014 = load i32, ptr %25, align 4, !tbaa !9
  %1015 = load i32, ptr %26, align 4, !tbaa !9
  %1016 = load i32, ptr %19, align 4, !tbaa !9
  %1017 = mul nsw i32 %1015, %1016
  %1018 = add nsw i32 %1014, %1017
  %1019 = sext i32 %1018 to i64
  %1020 = getelementptr inbounds double, ptr %1013, i64 %1019
  store double %1012, ptr %1020, align 8, !tbaa !11
  %1021 = load double, ptr %28, align 8, !tbaa !11
  %1022 = load double, ptr %24, align 8, !tbaa !11
  %1023 = load double, ptr %27, align 8, !tbaa !11
  %1024 = load ptr, ptr %17, align 8, !tbaa !5
  %1025 = load i32, ptr %25, align 4, !tbaa !9
  %1026 = load i32, ptr %19, align 4, !tbaa !9
  %1027 = add nsw i32 %1025, %1026
  %1028 = sext i32 %1027 to i64
  %1029 = getelementptr inbounds double, ptr %1024, i64 %1028
  %1030 = load double, ptr %1029, align 8, !tbaa !11
  %1031 = fmul double %1023, %1030
  %1032 = call double @llvm.fmuladd.f64(double %1021, double %1022, double %1031)
  %1033 = load ptr, ptr %17, align 8, !tbaa !5
  %1034 = load i32, ptr %25, align 4, !tbaa !9
  %1035 = load i32, ptr %19, align 4, !tbaa !9
  %1036 = add nsw i32 %1034, %1035
  %1037 = sext i32 %1036 to i64
  %1038 = getelementptr inbounds double, ptr %1033, i64 %1037
  store double %1032, ptr %1038, align 8, !tbaa !11
  br label %1039

1039:                                             ; preds = %990
  %1040 = load i32, ptr %25, align 4, !tbaa !9
  %1041 = add nsw i32 %1040, 1
  store i32 %1041, ptr %25, align 4, !tbaa !9
  br label %986, !llvm.loop !30

1042:                                             ; preds = %986
  br label %1043

1043:                                             ; preds = %1042, %980
  br label %1044

1044:                                             ; preds = %1043
  %1045 = load i32, ptr %26, align 4, !tbaa !9
  %1046 = add nsw i32 %1045, 1
  store i32 %1046, ptr %26, align 4, !tbaa !9
  br label %961, !llvm.loop !31

1047:                                             ; preds = %961
  br label %1142

1048:                                             ; preds = %954
  %1049 = load ptr, ptr %12, align 8, !tbaa !5
  %1050 = call i32 @lsame_(ptr noundef %1049, ptr noundef @.str.4)
  %1051 = icmp ne i32 %1050, 0
  br i1 %1051, label %1052, label %1141

1052:                                             ; preds = %1048
  %1053 = load ptr, ptr %14, align 8, !tbaa !5
  %1054 = load i32, ptr %1053, align 4, !tbaa !9
  store i32 %1054, ptr %26, align 4, !tbaa !9
  br label %1055

1055:                                             ; preds = %1137, %1052
  %1056 = load i32, ptr %26, align 4, !tbaa !9
  %1057 = icmp sge i32 %1056, 2
  br i1 %1057, label %1058, label %1140

1058:                                             ; preds = %1055
  %1059 = load ptr, ptr %15, align 8, !tbaa !5
  %1060 = load i32, ptr %26, align 4, !tbaa !9
  %1061 = sub nsw i32 %1060, 1
  %1062 = sext i32 %1061 to i64
  %1063 = getelementptr inbounds double, ptr %1059, i64 %1062
  %1064 = load double, ptr %1063, align 8, !tbaa !11
  store double %1064, ptr %27, align 8, !tbaa !11
  %1065 = load ptr, ptr %16, align 8, !tbaa !5
  %1066 = load i32, ptr %26, align 4, !tbaa !9
  %1067 = sub nsw i32 %1066, 1
  %1068 = sext i32 %1067 to i64
  %1069 = getelementptr inbounds double, ptr %1065, i64 %1068
  %1070 = load double, ptr %1069, align 8, !tbaa !11
  store double %1070, ptr %28, align 8, !tbaa !11
  %1071 = load double, ptr %27, align 8, !tbaa !11
  %1072 = fcmp une double %1071, 1.000000e+00
  br i1 %1072, label %1076, label %1073

1073:                                             ; preds = %1058
  %1074 = load double, ptr %28, align 8, !tbaa !11
  %1075 = fcmp une double %1074, 0.000000e+00
  br i1 %1075, label %1076, label %1136

1076:                                             ; preds = %1073, %1058
  %1077 = load ptr, ptr %13, align 8, !tbaa !5
  %1078 = load i32, ptr %1077, align 4, !tbaa !9
  store i32 %1078, ptr %21, align 4, !tbaa !9
  store i32 1, ptr %25, align 4, !tbaa !9
  br label %1079

1079:                                             ; preds = %1132, %1076
  %1080 = load i32, ptr %25, align 4, !tbaa !9
  %1081 = load i32, ptr %21, align 4, !tbaa !9
  %1082 = icmp sle i32 %1080, %1081
  br i1 %1082, label %1083, label %1135

1083:                                             ; preds = %1079
  %1084 = load ptr, ptr %17, align 8, !tbaa !5
  %1085 = load i32, ptr %25, align 4, !tbaa !9
  %1086 = load i32, ptr %26, align 4, !tbaa !9
  %1087 = load i32, ptr %19, align 4, !tbaa !9
  %1088 = mul nsw i32 %1086, %1087
  %1089 = add nsw i32 %1085, %1088
  %1090 = sext i32 %1089 to i64
  %1091 = getelementptr inbounds double, ptr %1084, i64 %1090
  %1092 = load double, ptr %1091, align 8, !tbaa !11
  store double %1092, ptr %24, align 8, !tbaa !11
  %1093 = load double, ptr %27, align 8, !tbaa !11
  %1094 = load double, ptr %24, align 8, !tbaa !11
  %1095 = load double, ptr %28, align 8, !tbaa !11
  %1096 = load ptr, ptr %17, align 8, !tbaa !5
  %1097 = load i32, ptr %25, align 4, !tbaa !9
  %1098 = load i32, ptr %19, align 4, !tbaa !9
  %1099 = add nsw i32 %1097, %1098
  %1100 = sext i32 %1099 to i64
  %1101 = getelementptr inbounds double, ptr %1096, i64 %1100
  %1102 = load double, ptr %1101, align 8, !tbaa !11
  %1103 = fmul double %1095, %1102
  %1104 = fneg double %1103
  %1105 = call double @llvm.fmuladd.f64(double %1093, double %1094, double %1104)
  %1106 = load ptr, ptr %17, align 8, !tbaa !5
  %1107 = load i32, ptr %25, align 4, !tbaa !9
  %1108 = load i32, ptr %26, align 4, !tbaa !9
  %1109 = load i32, ptr %19, align 4, !tbaa !9
  %1110 = mul nsw i32 %1108, %1109
  %1111 = add nsw i32 %1107, %1110
  %1112 = sext i32 %1111 to i64
  %1113 = getelementptr inbounds double, ptr %1106, i64 %1112
  store double %1105, ptr %1113, align 8, !tbaa !11
  %1114 = load double, ptr %28, align 8, !tbaa !11
  %1115 = load double, ptr %24, align 8, !tbaa !11
  %1116 = load double, ptr %27, align 8, !tbaa !11
  %1117 = load ptr, ptr %17, align 8, !tbaa !5
  %1118 = load i32, ptr %25, align 4, !tbaa !9
  %1119 = load i32, ptr %19, align 4, !tbaa !9
  %1120 = add nsw i32 %1118, %1119
  %1121 = sext i32 %1120 to i64
  %1122 = getelementptr inbounds double, ptr %1117, i64 %1121
  %1123 = load double, ptr %1122, align 8, !tbaa !11
  %1124 = fmul double %1116, %1123
  %1125 = call double @llvm.fmuladd.f64(double %1114, double %1115, double %1124)
  %1126 = load ptr, ptr %17, align 8, !tbaa !5
  %1127 = load i32, ptr %25, align 4, !tbaa !9
  %1128 = load i32, ptr %19, align 4, !tbaa !9
  %1129 = add nsw i32 %1127, %1128
  %1130 = sext i32 %1129 to i64
  %1131 = getelementptr inbounds double, ptr %1126, i64 %1130
  store double %1125, ptr %1131, align 8, !tbaa !11
  br label %1132

1132:                                             ; preds = %1083
  %1133 = load i32, ptr %25, align 4, !tbaa !9
  %1134 = add nsw i32 %1133, 1
  store i32 %1134, ptr %25, align 4, !tbaa !9
  br label %1079, !llvm.loop !32

1135:                                             ; preds = %1079
  br label %1136

1136:                                             ; preds = %1135, %1073
  br label %1137

1137:                                             ; preds = %1136
  %1138 = load i32, ptr %26, align 4, !tbaa !9
  %1139 = add nsw i32 %1138, -1
  store i32 %1139, ptr %26, align 4, !tbaa !9
  br label %1055, !llvm.loop !33

1140:                                             ; preds = %1055
  br label %1141

1141:                                             ; preds = %1140, %1048
  br label %1142

1142:                                             ; preds = %1141, %1047
  br label %1353

1143:                                             ; preds = %950
  %1144 = load ptr, ptr %11, align 8, !tbaa !5
  %1145 = call i32 @lsame_(ptr noundef %1144, ptr noundef @.str.4)
  %1146 = icmp ne i32 %1145, 0
  br i1 %1146, label %1147, label %1352

1147:                                             ; preds = %1143
  %1148 = load ptr, ptr %12, align 8, !tbaa !5
  %1149 = call i32 @lsame_(ptr noundef %1148, ptr noundef @.str.5)
  %1150 = icmp ne i32 %1149, 0
  br i1 %1150, label %1151, label %1249

1151:                                             ; preds = %1147
  %1152 = load ptr, ptr %14, align 8, !tbaa !5
  %1153 = load i32, ptr %1152, align 4, !tbaa !9
  %1154 = sub nsw i32 %1153, 1
  store i32 %1154, ptr %21, align 4, !tbaa !9
  store i32 1, ptr %26, align 4, !tbaa !9
  br label %1155

1155:                                             ; preds = %1245, %1151
  %1156 = load i32, ptr %26, align 4, !tbaa !9
  %1157 = load i32, ptr %21, align 4, !tbaa !9
  %1158 = icmp sle i32 %1156, %1157
  br i1 %1158, label %1159, label %1248

1159:                                             ; preds = %1155
  %1160 = load ptr, ptr %15, align 8, !tbaa !5
  %1161 = load i32, ptr %26, align 4, !tbaa !9
  %1162 = sext i32 %1161 to i64
  %1163 = getelementptr inbounds double, ptr %1160, i64 %1162
  %1164 = load double, ptr %1163, align 8, !tbaa !11
  store double %1164, ptr %27, align 8, !tbaa !11
  %1165 = load ptr, ptr %16, align 8, !tbaa !5
  %1166 = load i32, ptr %26, align 4, !tbaa !9
  %1167 = sext i32 %1166 to i64
  %1168 = getelementptr inbounds double, ptr %1165, i64 %1167
  %1169 = load double, ptr %1168, align 8, !tbaa !11
  store double %1169, ptr %28, align 8, !tbaa !11
  %1170 = load double, ptr %27, align 8, !tbaa !11
  %1171 = fcmp une double %1170, 1.000000e+00
  br i1 %1171, label %1175, label %1172

1172:                                             ; preds = %1159
  %1173 = load double, ptr %28, align 8, !tbaa !11
  %1174 = fcmp une double %1173, 0.000000e+00
  br i1 %1174, label %1175, label %1244

1175:                                             ; preds = %1172, %1159
  %1176 = load ptr, ptr %13, align 8, !tbaa !5
  %1177 = load i32, ptr %1176, align 4, !tbaa !9
  store i32 %1177, ptr %22, align 4, !tbaa !9
  store i32 1, ptr %25, align 4, !tbaa !9
  br label %1178

1178:                                             ; preds = %1240, %1175
  %1179 = load i32, ptr %25, align 4, !tbaa !9
  %1180 = load i32, ptr %22, align 4, !tbaa !9
  %1181 = icmp sle i32 %1179, %1180
  br i1 %1181, label %1182, label %1243

1182:                                             ; preds = %1178
  %1183 = load ptr, ptr %17, align 8, !tbaa !5
  %1184 = load i32, ptr %25, align 4, !tbaa !9
  %1185 = load i32, ptr %26, align 4, !tbaa !9
  %1186 = load i32, ptr %19, align 4, !tbaa !9
  %1187 = mul nsw i32 %1185, %1186
  %1188 = add nsw i32 %1184, %1187
  %1189 = sext i32 %1188 to i64
  %1190 = getelementptr inbounds double, ptr %1183, i64 %1189
  %1191 = load double, ptr %1190, align 8, !tbaa !11
  store double %1191, ptr %24, align 8, !tbaa !11
  %1192 = load double, ptr %28, align 8, !tbaa !11
  %1193 = load ptr, ptr %17, align 8, !tbaa !5
  %1194 = load i32, ptr %25, align 4, !tbaa !9
  %1195 = load ptr, ptr %14, align 8, !tbaa !5
  %1196 = load i32, ptr %1195, align 4, !tbaa !9
  %1197 = load i32, ptr %19, align 4, !tbaa !9
  %1198 = mul nsw i32 %1196, %1197
  %1199 = add nsw i32 %1194, %1198
  %1200 = sext i32 %1199 to i64
  %1201 = getelementptr inbounds double, ptr %1193, i64 %1200
  %1202 = load double, ptr %1201, align 8, !tbaa !11
  %1203 = load double, ptr %27, align 8, !tbaa !11
  %1204 = load double, ptr %24, align 8, !tbaa !11
  %1205 = fmul double %1203, %1204
  %1206 = call double @llvm.fmuladd.f64(double %1192, double %1202, double %1205)
  %1207 = load ptr, ptr %17, align 8, !tbaa !5
  %1208 = load i32, ptr %25, align 4, !tbaa !9
  %1209 = load i32, ptr %26, align 4, !tbaa !9
  %1210 = load i32, ptr %19, align 4, !tbaa !9
  %1211 = mul nsw i32 %1209, %1210
  %1212 = add nsw i32 %1208, %1211
  %1213 = sext i32 %1212 to i64
  %1214 = getelementptr inbounds double, ptr %1207, i64 %1213
  store double %1206, ptr %1214, align 8, !tbaa !11
  %1215 = load double, ptr %27, align 8, !tbaa !11
  %1216 = load ptr, ptr %17, align 8, !tbaa !5
  %1217 = load i32, ptr %25, align 4, !tbaa !9
  %1218 = load ptr, ptr %14, align 8, !tbaa !5
  %1219 = load i32, ptr %1218, align 4, !tbaa !9
  %1220 = load i32, ptr %19, align 4, !tbaa !9
  %1221 = mul nsw i32 %1219, %1220
  %1222 = add nsw i32 %1217, %1221
  %1223 = sext i32 %1222 to i64
  %1224 = getelementptr inbounds double, ptr %1216, i64 %1223
  %1225 = load double, ptr %1224, align 8, !tbaa !11
  %1226 = load double, ptr %28, align 8, !tbaa !11
  %1227 = load double, ptr %24, align 8, !tbaa !11
  %1228 = fmul double %1226, %1227
  %1229 = fneg double %1228
  %1230 = call double @llvm.fmuladd.f64(double %1215, double %1225, double %1229)
  %1231 = load ptr, ptr %17, align 8, !tbaa !5
  %1232 = load i32, ptr %25, align 4, !tbaa !9
  %1233 = load ptr, ptr %14, align 8, !tbaa !5
  %1234 = load i32, ptr %1233, align 4, !tbaa !9
  %1235 = load i32, ptr %19, align 4, !tbaa !9
  %1236 = mul nsw i32 %1234, %1235
  %1237 = add nsw i32 %1232, %1236
  %1238 = sext i32 %1237 to i64
  %1239 = getelementptr inbounds double, ptr %1231, i64 %1238
  store double %1230, ptr %1239, align 8, !tbaa !11
  br label %1240

1240:                                             ; preds = %1182
  %1241 = load i32, ptr %25, align 4, !tbaa !9
  %1242 = add nsw i32 %1241, 1
  store i32 %1242, ptr %25, align 4, !tbaa !9
  br label %1178, !llvm.loop !34

1243:                                             ; preds = %1178
  br label %1244

1244:                                             ; preds = %1243, %1172
  br label %1245

1245:                                             ; preds = %1244
  %1246 = load i32, ptr %26, align 4, !tbaa !9
  %1247 = add nsw i32 %1246, 1
  store i32 %1247, ptr %26, align 4, !tbaa !9
  br label %1155, !llvm.loop !35

1248:                                             ; preds = %1155
  br label %1351

1249:                                             ; preds = %1147
  %1250 = load ptr, ptr %12, align 8, !tbaa !5
  %1251 = call i32 @lsame_(ptr noundef %1250, ptr noundef @.str.4)
  %1252 = icmp ne i32 %1251, 0
  br i1 %1252, label %1253, label %1350

1253:                                             ; preds = %1249
  %1254 = load ptr, ptr %14, align 8, !tbaa !5
  %1255 = load i32, ptr %1254, align 4, !tbaa !9
  %1256 = sub nsw i32 %1255, 1
  store i32 %1256, ptr %26, align 4, !tbaa !9
  br label %1257

1257:                                             ; preds = %1346, %1253
  %1258 = load i32, ptr %26, align 4, !tbaa !9
  %1259 = icmp sge i32 %1258, 1
  br i1 %1259, label %1260, label %1349

1260:                                             ; preds = %1257
  %1261 = load ptr, ptr %15, align 8, !tbaa !5
  %1262 = load i32, ptr %26, align 4, !tbaa !9
  %1263 = sext i32 %1262 to i64
  %1264 = getelementptr inbounds double, ptr %1261, i64 %1263
  %1265 = load double, ptr %1264, align 8, !tbaa !11
  store double %1265, ptr %27, align 8, !tbaa !11
  %1266 = load ptr, ptr %16, align 8, !tbaa !5
  %1267 = load i32, ptr %26, align 4, !tbaa !9
  %1268 = sext i32 %1267 to i64
  %1269 = getelementptr inbounds double, ptr %1266, i64 %1268
  %1270 = load double, ptr %1269, align 8, !tbaa !11
  store double %1270, ptr %28, align 8, !tbaa !11
  %1271 = load double, ptr %27, align 8, !tbaa !11
  %1272 = fcmp une double %1271, 1.000000e+00
  br i1 %1272, label %1276, label %1273

1273:                                             ; preds = %1260
  %1274 = load double, ptr %28, align 8, !tbaa !11
  %1275 = fcmp une double %1274, 0.000000e+00
  br i1 %1275, label %1276, label %1345

1276:                                             ; preds = %1273, %1260
  %1277 = load ptr, ptr %13, align 8, !tbaa !5
  %1278 = load i32, ptr %1277, align 4, !tbaa !9
  store i32 %1278, ptr %21, align 4, !tbaa !9
  store i32 1, ptr %25, align 4, !tbaa !9
  br label %1279

1279:                                             ; preds = %1341, %1276
  %1280 = load i32, ptr %25, align 4, !tbaa !9
  %1281 = load i32, ptr %21, align 4, !tbaa !9
  %1282 = icmp sle i32 %1280, %1281
  br i1 %1282, label %1283, label %1344

1283:                                             ; preds = %1279
  %1284 = load ptr, ptr %17, align 8, !tbaa !5
  %1285 = load i32, ptr %25, align 4, !tbaa !9
  %1286 = load i32, ptr %26, align 4, !tbaa !9
  %1287 = load i32, ptr %19, align 4, !tbaa !9
  %1288 = mul nsw i32 %1286, %1287
  %1289 = add nsw i32 %1285, %1288
  %1290 = sext i32 %1289 to i64
  %1291 = getelementptr inbounds double, ptr %1284, i64 %1290
  %1292 = load double, ptr %1291, align 8, !tbaa !11
  store double %1292, ptr %24, align 8, !tbaa !11
  %1293 = load double, ptr %28, align 8, !tbaa !11
  %1294 = load ptr, ptr %17, align 8, !tbaa !5
  %1295 = load i32, ptr %25, align 4, !tbaa !9
  %1296 = load ptr, ptr %14, align 8, !tbaa !5
  %1297 = load i32, ptr %1296, align 4, !tbaa !9
  %1298 = load i32, ptr %19, align 4, !tbaa !9
  %1299 = mul nsw i32 %1297, %1298
  %1300 = add nsw i32 %1295, %1299
  %1301 = sext i32 %1300 to i64
  %1302 = getelementptr inbounds double, ptr %1294, i64 %1301
  %1303 = load double, ptr %1302, align 8, !tbaa !11
  %1304 = load double, ptr %27, align 8, !tbaa !11
  %1305 = load double, ptr %24, align 8, !tbaa !11
  %1306 = fmul double %1304, %1305
  %1307 = call double @llvm.fmuladd.f64(double %1293, double %1303, double %1306)
  %1308 = load ptr, ptr %17, align 8, !tbaa !5
  %1309 = load i32, ptr %25, align 4, !tbaa !9
  %1310 = load i32, ptr %26, align 4, !tbaa !9
  %1311 = load i32, ptr %19, align 4, !tbaa !9
  %1312 = mul nsw i32 %1310, %1311
  %1313 = add nsw i32 %1309, %1312
  %1314 = sext i32 %1313 to i64
  %1315 = getelementptr inbounds double, ptr %1308, i64 %1314
  store double %1307, ptr %1315, align 8, !tbaa !11
  %1316 = load double, ptr %27, align 8, !tbaa !11
  %1317 = load ptr, ptr %17, align 8, !tbaa !5
  %1318 = load i32, ptr %25, align 4, !tbaa !9
  %1319 = load ptr, ptr %14, align 8, !tbaa !5
  %1320 = load i32, ptr %1319, align 4, !tbaa !9
  %1321 = load i32, ptr %19, align 4, !tbaa !9
  %1322 = mul nsw i32 %1320, %1321
  %1323 = add nsw i32 %1318, %1322
  %1324 = sext i32 %1323 to i64
  %1325 = getelementptr inbounds double, ptr %1317, i64 %1324
  %1326 = load double, ptr %1325, align 8, !tbaa !11
  %1327 = load double, ptr %28, align 8, !tbaa !11
  %1328 = load double, ptr %24, align 8, !tbaa !11
  %1329 = fmul double %1327, %1328
  %1330 = fneg double %1329
  %1331 = call double @llvm.fmuladd.f64(double %1316, double %1326, double %1330)
  %1332 = load ptr, ptr %17, align 8, !tbaa !5
  %1333 = load i32, ptr %25, align 4, !tbaa !9
  %1334 = load ptr, ptr %14, align 8, !tbaa !5
  %1335 = load i32, ptr %1334, align 4, !tbaa !9
  %1336 = load i32, ptr %19, align 4, !tbaa !9
  %1337 = mul nsw i32 %1335, %1336
  %1338 = add nsw i32 %1333, %1337
  %1339 = sext i32 %1338 to i64
  %1340 = getelementptr inbounds double, ptr %1332, i64 %1339
  store double %1331, ptr %1340, align 8, !tbaa !11
  br label %1341

1341:                                             ; preds = %1283
  %1342 = load i32, ptr %25, align 4, !tbaa !9
  %1343 = add nsw i32 %1342, 1
  store i32 %1343, ptr %25, align 4, !tbaa !9
  br label %1279, !llvm.loop !36

1344:                                             ; preds = %1279
  br label %1345

1345:                                             ; preds = %1344, %1273
  br label %1346

1346:                                             ; preds = %1345
  %1347 = load i32, ptr %26, align 4, !tbaa !9
  %1348 = add nsw i32 %1347, -1
  store i32 %1348, ptr %26, align 4, !tbaa !9
  br label %1257, !llvm.loop !37

1349:                                             ; preds = %1257
  br label %1350

1350:                                             ; preds = %1349, %1249
  br label %1351

1351:                                             ; preds = %1350, %1248
  br label %1352

1352:                                             ; preds = %1351, %1143
  br label %1353

1353:                                             ; preds = %1352, %1142
  br label %1354

1354:                                             ; preds = %1353, %949
  br label %1355

1355:                                             ; preds = %1354, %739
  br label %1356

1356:                                             ; preds = %1355, %738
  store i32 1, ptr %29, align 4
  br label %1357

1357:                                             ; preds = %1356, %116, %106
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 4, 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
  ret void
}

; 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 @xerbla_(ptr noundef, ptr noundef, i32 noundef) #2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = distinct !{!22, !14}
!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}


; 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
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @dlasr_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr nocapture noundef readonly %3, ptr nocapture noundef readonly %4, ptr nocapture noundef readonly %5, ptr nocapture noundef readonly %6, ptr nocapture noundef %7, ptr nocapture noundef readonly %8) local_unnamed_addr #0 {
  %10 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #5
  %11 = getelementptr inbounds i8, ptr %5, i64 -8
  %12 = getelementptr inbounds i8, ptr %6, i64 -8
  %13 = load i32, ptr %8, align 4, !tbaa !5
  %narrow = xor i32 %13, -1
  %14 = sext i32 %narrow to i64
  %15 = getelementptr inbounds double, ptr %7, i64 %14
  store i32 0, ptr %10, align 4, !tbaa !5
  %16 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %.not = icmp eq i32 %16, 0
  br i1 %.not, label %17, label %20

17:                                               ; preds = %9
  %18 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #5
  %.not537 = icmp eq i32 %18, 0
  br i1 %.not537, label %19, label %20

19:                                               ; preds = %17
  store i32 1, ptr %10, align 4, !tbaa !5
  br label %.thread

20:                                               ; preds = %17, %9
  %21 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #5
  %.not538 = icmp eq i32 %21, 0
  br i1 %.not538, label %22, label %27

22:                                               ; preds = %20
  %23 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #5
  %.not539 = icmp eq i32 %23, 0
  br i1 %.not539, label %24, label %27

24:                                               ; preds = %22
  %25 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #5
  %.not540 = icmp eq i32 %25, 0
  br i1 %.not540, label %26, label %27

26:                                               ; preds = %24
  store i32 2, ptr %10, align 4, !tbaa !5
  br label %.thread

27:                                               ; preds = %24, %22, %20
  %28 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.5) #5
  %.not541 = icmp eq i32 %28, 0
  br i1 %.not541, label %29, label %32

29:                                               ; preds = %27
  %30 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.4) #5
  %.not542 = icmp eq i32 %30, 0
  br i1 %.not542, label %31, label %32

31:                                               ; preds = %29
  store i32 3, ptr %10, align 4, !tbaa !5
  br label %.thread

32:                                               ; preds = %29, %27
  %33 = load i32, ptr %3, align 4, !tbaa !5
  %34 = icmp slt i32 %33, 0
  br i1 %34, label %35, label %36

35:                                               ; preds = %32
  store i32 4, ptr %10, align 4, !tbaa !5
  br label %.thread

36:                                               ; preds = %32
  %37 = load i32, ptr %4, align 4, !tbaa !5
  %38 = icmp slt i32 %37, 0
  br i1 %38, label %39, label %40

39:                                               ; preds = %36
  store i32 5, ptr %10, align 4, !tbaa !5
  br label %.thread

40:                                               ; preds = %36
  %41 = load i32, ptr %8, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %33, i32 1)
  %42 = icmp slt i32 %41, %spec.select
  br i1 %42, label %43, label %45

43:                                               ; preds = %40
  store i32 9, ptr %10, align 4, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %19, %31, %39, %43, %35, %26
  %44 = call i32 @xerbla_(ptr noundef nonnull @.str.6, ptr noundef nonnull %10, i32 noundef 6) #5
  br label %.loopexit583

45:                                               ; preds = %40
  %46 = icmp eq i32 %33, 0
  %47 = icmp eq i32 %37, 0
  %or.cond855 = or i1 %46, %47
  br i1 %or.cond855, label %.loopexit583, label %48

48:                                               ; preds = %45
  %49 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %.not544 = icmp eq i32 %49, 0
  br i1 %.not544, label %399, label %50

50:                                               ; preds = %48
  %51 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #5
  %.not564 = icmp eq i32 %51, 0
  br i1 %.not564, label %238, label %52

52:                                               ; preds = %50
  %53 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.5) #5
  %.not577 = icmp eq i32 %53, 0
  br i1 %.not577, label %145, label %54

54:                                               ; preds = %52
  %55 = load i32, ptr %3, align 4, !tbaa !5
  %.not580.not608 = icmp sgt i32 %55, 1
  br i1 %.not580.not608, label %.lr.ph611.preheader, label %.loopexit583

.lr.ph611.preheader:                              ; preds = %54
  %56 = sext i32 %13 to i64
  %wide.trip.count700 = zext nneg i32 %55 to i64
  %invariant.gep813 = getelementptr i8, ptr %15, i64 8
  %ident.check1193.not = icmp eq i32 %13, 1
  br label %.lr.ph611

.lr.ph611:                                        ; preds = %.lr.ph611.preheader, %.loopexit604
  %indvar1197 = phi i64 [ 0, %.lr.ph611.preheader ], [ %indvar.next1198, %.loopexit604 ]
  %indvars.iv697 = phi i64 [ 1, %.lr.ph611.preheader ], [ %indvars.iv.next698, %.loopexit604 ]
  %57 = shl nuw nsw i64 %indvar1197, 3
  %scevgep1199 = getelementptr i8, ptr %7, i64 %57
  %58 = getelementptr inbounds double, ptr %11, i64 %indvars.iv697
  %59 = load double, ptr %58, align 8, !tbaa !9
  %60 = getelementptr inbounds double, ptr %12, i64 %indvars.iv697
  %61 = load double, ptr %60, align 8, !tbaa !9
  %62 = fcmp une double %59, 1.000000e+00
  %63 = fcmp une double %61, 0.000000e+00
  %or.cond = select i1 %62, i1 true, i1 %63
  br i1 %or.cond, label %64, label %.loopexit604

64:                                               ; preds = %.lr.ph611
  %65 = load i32, ptr %4, align 4, !tbaa !5
  %.not581606 = icmp slt i32 %65, 1
  br i1 %.not581606, label %.loopexit604, label %.lver.check1194

.lver.check1194:                                  ; preds = %64
  %66 = fneg double %61
  %gep814 = getelementptr double, ptr %invariant.gep813, i64 %indvars.iv697
  %invariant.gep811 = getelementptr double, ptr %15, i64 %indvars.iv697
  br i1 %ident.check1193.not, label %.ph1195, label %.ph1195.lver.orig.preheader

.ph1195.lver.orig.preheader:                      ; preds = %.lver.check1194
  %67 = zext nneg i32 %65 to i64
  %xtraiter = and i64 %67, 1
  %68 = icmp eq i32 %65, 1
  br i1 %68, label %.loopexit604.loopexit1217.unr-lcssa, label %.ph1195.lver.orig.preheader.new

.ph1195.lver.orig.preheader.new:                  ; preds = %.ph1195.lver.orig.preheader
  %unroll_iter = and i64 %67, 2147483646
  %69 = insertelement <2 x double> poison, double %59, i64 0
  %70 = insertelement <2 x double> %69, double %66, i64 1
  %71 = insertelement <2 x double> poison, double %61, i64 0
  %72 = insertelement <2 x double> %71, double %59, i64 1
  %73 = insertelement <2 x double> poison, double %59, i64 0
  %74 = insertelement <2 x double> %73, double %66, i64 1
  %75 = insertelement <2 x double> poison, double %61, i64 0
  %76 = insertelement <2 x double> %75, double %59, i64 1
  br label %.ph1195.lver.orig

.ph1195.lver.orig:                                ; preds = %.ph1195.lver.orig, %.ph1195.lver.orig.preheader.new
  %indvars.iv.lver.orig = phi i64 [ 1, %.ph1195.lver.orig.preheader.new ], [ %indvars.iv.next.lver.orig.1, %.ph1195.lver.orig ]
  %niter = phi i64 [ 0, %.ph1195.lver.orig.preheader.new ], [ %niter.next.1, %.ph1195.lver.orig ]
  %77 = mul nsw i64 %indvars.iv.lver.orig, %56
  %78 = getelementptr double, ptr %gep814, i64 %77
  %79 = load double, ptr %78, align 8, !tbaa !9
  %gep812.lver.orig = getelementptr double, ptr %invariant.gep811, i64 %77
  %80 = load double, ptr %gep812.lver.orig, align 8, !tbaa !9
  %81 = insertelement <2 x double> poison, double %80, i64 0
  %82 = shufflevector <2 x double> %81, <2 x double> poison, <2 x i32> zeroinitializer
  %83 = fmul <2 x double> %70, %82
  %84 = insertelement <2 x double> poison, double %79, i64 0
  %85 = shufflevector <2 x double> %84, <2 x double> poison, <2 x i32> zeroinitializer
  %86 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %72, <2 x double> %85, <2 x double> %83)
  store <2 x double> %86, ptr %gep812.lver.orig, align 8, !tbaa !9
  %indvars.iv.next.lver.orig = add nuw nsw i64 %indvars.iv.lver.orig, 1
  %87 = mul nsw i64 %indvars.iv.next.lver.orig, %56
  %88 = getelementptr double, ptr %gep814, i64 %87
  %89 = load double, ptr %88, align 8, !tbaa !9
  %gep812.lver.orig.1 = getelementptr double, ptr %invariant.gep811, i64 %87
  %90 = load double, ptr %gep812.lver.orig.1, align 8, !tbaa !9
  %91 = insertelement <2 x double> poison, double %90, i64 0
  %92 = shufflevector <2 x double> %91, <2 x double> poison, <2 x i32> zeroinitializer
  %93 = fmul <2 x double> %74, %92
  %94 = insertelement <2 x double> poison, double %89, i64 0
  %95 = shufflevector <2 x double> %94, <2 x double> poison, <2 x i32> zeroinitializer
  %96 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %76, <2 x double> %95, <2 x double> %93)
  store <2 x double> %96, ptr %gep812.lver.orig.1, align 8, !tbaa !9
  %indvars.iv.next.lver.orig.1 = add nuw nsw i64 %indvars.iv.lver.orig, 2
  %niter.next.1 = add nuw i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %.loopexit604.loopexit1217.unr-lcssa, label %.ph1195.lver.orig, !llvm.loop !11

.ph1195:                                          ; preds = %.lver.check1194
  %load_initial1200 = load double, ptr %scevgep1199, align 8
  %97 = insertelement <2 x double> poison, double %61, i64 0
  %98 = insertelement <2 x double> %97, double %59, i64 1
  %99 = insertelement <2 x double> poison, double %59, i64 0
  %100 = insertelement <2 x double> %99, double %66, i64 1
  %101 = zext nneg i32 %65 to i64
  %xtraiter1219 = and i64 %101, 1
  %102 = icmp eq i32 %65, 1
  br i1 %102, label %.loopexit604.loopexit.unr-lcssa, label %.ph1195.new

.ph1195.new:                                      ; preds = %.ph1195
  %unroll_iter1221 = and i64 %101, 2147483646
  br label %103

103:                                              ; preds = %103, %.ph1195.new
  %store_forwarded1201 = phi double [ %load_initial1200, %.ph1195.new ], [ %121, %103 ]
  %indvars.iv = phi i64 [ 1, %.ph1195.new ], [ %indvars.iv.next.1, %103 ]
  %niter1222 = phi i64 [ 0, %.ph1195.new ], [ %niter1222.next.1, %103 ]
  %104 = mul nuw nsw i64 %indvars.iv, %56
  %105 = getelementptr double, ptr %gep814, i64 %104
  %106 = load double, ptr %105, align 8, !tbaa !9
  %gep812 = getelementptr double, ptr %invariant.gep811, i64 %104
  %107 = insertelement <2 x double> poison, double %store_forwarded1201, i64 0
  %108 = shufflevector <2 x double> %107, <2 x double> poison, <2 x i32> zeroinitializer
  %109 = fmul <2 x double> %100, %108
  %110 = insertelement <2 x double> poison, double %106, i64 0
  %111 = shufflevector <2 x double> %110, <2 x double> poison, <2 x i32> zeroinitializer
  %112 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %98, <2 x double> %111, <2 x double> %109)
  store <2 x double> %112, ptr %gep812, align 8, !tbaa !9
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %113 = mul nuw nsw i64 %indvars.iv.next, %56
  %114 = getelementptr double, ptr %gep814, i64 %113
  %115 = load double, ptr %114, align 8, !tbaa !9
  %gep812.1 = getelementptr double, ptr %invariant.gep811, i64 %113
  %116 = shufflevector <2 x double> %112, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %117 = fmul <2 x double> %100, %116
  %118 = insertelement <2 x double> poison, double %115, i64 0
  %119 = shufflevector <2 x double> %118, <2 x double> poison, <2 x i32> zeroinitializer
  %120 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %98, <2 x double> %119, <2 x double> %117)
  store <2 x double> %120, ptr %gep812.1, align 8, !tbaa !9
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %121 = extractelement <2 x double> %120, i64 1
  %niter1222.next.1 = add i64 %niter1222, 2
  %niter1222.ncmp.1 = icmp eq i64 %niter1222.next.1, %unroll_iter1221
  br i1 %niter1222.ncmp.1, label %.loopexit604.loopexit.unr-lcssa, label %103, !llvm.loop !11

.loopexit604.loopexit.unr-lcssa:                  ; preds = %103, %.ph1195
  %store_forwarded1201.unr = phi double [ %load_initial1200, %.ph1195 ], [ %121, %103 ]
  %indvars.iv.unr = phi i64 [ 1, %.ph1195 ], [ %indvars.iv.next.1, %103 ]
  %lcmp.mod1220.not = icmp eq i64 %xtraiter1219, 0
  br i1 %lcmp.mod1220.not, label %.loopexit604, label %.loopexit604.loopexit.epilog-lcssa

.loopexit604.loopexit.epilog-lcssa:               ; preds = %.loopexit604.loopexit.unr-lcssa
  %122 = mul nuw nsw i64 %indvars.iv.unr, %56
  %123 = getelementptr double, ptr %gep814, i64 %122
  %124 = load double, ptr %123, align 8, !tbaa !9
  %gep812.epil = getelementptr double, ptr %invariant.gep811, i64 %122
  %125 = insertelement <2 x double> poison, double %store_forwarded1201.unr, i64 0
  %126 = shufflevector <2 x double> %125, <2 x double> poison, <2 x i32> zeroinitializer
  %127 = fmul <2 x double> %100, %126
  %128 = insertelement <2 x double> poison, double %124, i64 0
  %129 = shufflevector <2 x double> %128, <2 x double> poison, <2 x i32> zeroinitializer
  %130 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %98, <2 x double> %129, <2 x double> %127)
  store <2 x double> %130, ptr %gep812.epil, align 8, !tbaa !9
  br label %.loopexit604

.loopexit604.loopexit1217.unr-lcssa:              ; preds = %.ph1195.lver.orig, %.ph1195.lver.orig.preheader
  %indvars.iv.lver.orig.unr = phi i64 [ 1, %.ph1195.lver.orig.preheader ], [ %indvars.iv.next.lver.orig.1, %.ph1195.lver.orig ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.loopexit604, label %.ph1195.lver.orig.epil

.ph1195.lver.orig.epil:                           ; preds = %.loopexit604.loopexit1217.unr-lcssa
  %131 = mul nsw i64 %indvars.iv.lver.orig.unr, %56
  %132 = getelementptr double, ptr %gep814, i64 %131
  %133 = load double, ptr %132, align 8, !tbaa !9
  %gep812.lver.orig.epil = getelementptr double, ptr %invariant.gep811, i64 %131
  %134 = load double, ptr %gep812.lver.orig.epil, align 8, !tbaa !9
  %135 = insertelement <2 x double> poison, double %59, i64 0
  %136 = insertelement <2 x double> %135, double %66, i64 1
  %137 = insertelement <2 x double> poison, double %134, i64 0
  %138 = shufflevector <2 x double> %137, <2 x double> poison, <2 x i32> zeroinitializer
  %139 = fmul <2 x double> %136, %138
  %140 = insertelement <2 x double> poison, double %61, i64 0
  %141 = insertelement <2 x double> %140, double %59, i64 1
  %142 = insertelement <2 x double> poison, double %133, i64 0
  %143 = shufflevector <2 x double> %142, <2 x double> poison, <2 x i32> zeroinitializer
  %144 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %141, <2 x double> %143, <2 x double> %139)
  store <2 x double> %144, ptr %gep812.lver.orig.epil, align 8, !tbaa !9
  br label %.loopexit604

.loopexit604:                                     ; preds = %.ph1195.lver.orig.epil, %.loopexit604.loopexit1217.unr-lcssa, %.loopexit604.loopexit.epilog-lcssa, %.loopexit604.loopexit.unr-lcssa, %64, %.lr.ph611
  %indvars.iv.next698 = add nuw nsw i64 %indvars.iv697, 1
  %exitcond701.not = icmp eq i64 %indvars.iv.next698, %wide.trip.count700
  %indvar.next1198 = add i64 %indvar1197, 1
  br i1 %exitcond701.not, label %.loopexit583, label %.lr.ph611, !llvm.loop !13

145:                                              ; preds = %52
  %146 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.4) #5
  %.not578 = icmp eq i32 %146, 0
  br i1 %.not578, label %.loopexit583, label %147

147:                                              ; preds = %145
  %148 = load i32, ptr %3, align 4, !tbaa !5
  %149 = icmp sgt i32 %148, 1
  br i1 %149, label %.lr.ph618.preheader, label %.loopexit583

.lr.ph618.preheader:                              ; preds = %147
  %150 = sext i32 %13 to i64
  %151 = zext nneg i32 %148 to i64
  %152 = shl nuw nsw i64 %151, 3
  %153 = add nsw i64 %152, -16
  %ident.check1188.not = icmp eq i32 %13, 1
  br label %.lr.ph618

.lr.ph618:                                        ; preds = %.lr.ph618.preheader, %.loopexit602
  %indvar1190 = phi i64 [ 0, %.lr.ph618.preheader ], [ %indvar.next1191, %.loopexit602 ]
  %indvars.iv707 = phi i64 [ %151, %.lr.ph618.preheader ], [ %indvars.iv.next708, %.loopexit602 ]
  %154 = shl i64 %indvar1190, 3
  %155 = sub i64 %153, %154
  %scevgep1192 = getelementptr i8, ptr %7, i64 %155
  %indvars.iv.next708 = add nsw i64 %indvars.iv707, -1
  %156 = getelementptr inbounds double, ptr %11, i64 %indvars.iv.next708
  %157 = load double, ptr %156, align 8, !tbaa !9
  %158 = getelementptr inbounds double, ptr %12, i64 %indvars.iv.next708
  %159 = load double, ptr %158, align 8, !tbaa !9
  %160 = fcmp une double %157, 1.000000e+00
  %161 = fcmp une double %159, 0.000000e+00
  %or.cond3 = select i1 %160, i1 true, i1 %161
  br i1 %or.cond3, label %162, label %.loopexit602

162:                                              ; preds = %.lr.ph618
  %163 = load i32, ptr %4, align 4, !tbaa !5
  %.not579612 = icmp slt i32 %163, 1
  br i1 %.not579612, label %.loopexit602, label %.lver.check

.lver.check:                                      ; preds = %162
  %164 = fneg double %159
  %invariant.gep815 = getelementptr double, ptr %15, i64 %indvars.iv707
  %invariant.gep817 = getelementptr double, ptr %15, i64 %indvars.iv.next708
  br i1 %ident.check1188.not, label %.ph, label %.ph.lver.orig.preheader

.ph.lver.orig.preheader:                          ; preds = %.lver.check
  %165 = zext nneg i32 %163 to i64
  %xtraiter1223 = and i64 %165, 1
  %166 = icmp eq i32 %163, 1
  br i1 %166, label %.loopexit602.loopexit1215.unr-lcssa, label %.ph.lver.orig.preheader.new

.ph.lver.orig.preheader.new:                      ; preds = %.ph.lver.orig.preheader
  %unroll_iter1225 = and i64 %165, 2147483646
  %167 = insertelement <2 x double> poison, double %157, i64 0
  %168 = insertelement <2 x double> %167, double %164, i64 1
  %169 = insertelement <2 x double> poison, double %159, i64 0
  %170 = insertelement <2 x double> %169, double %157, i64 1
  %171 = insertelement <2 x double> poison, double %157, i64 0
  %172 = insertelement <2 x double> %171, double %164, i64 1
  %173 = insertelement <2 x double> poison, double %159, i64 0
  %174 = insertelement <2 x double> %173, double %157, i64 1
  br label %.ph.lver.orig

.ph.lver.orig:                                    ; preds = %.ph.lver.orig, %.ph.lver.orig.preheader.new
  %indvars.iv702.lver.orig = phi i64 [ 1, %.ph.lver.orig.preheader.new ], [ %indvars.iv.next703.lver.orig.1, %.ph.lver.orig ]
  %niter1226 = phi i64 [ 0, %.ph.lver.orig.preheader.new ], [ %niter1226.next.1, %.ph.lver.orig ]
  %175 = mul nsw i64 %indvars.iv702.lver.orig, %150
  %gep816.lver.orig = getelementptr double, ptr %invariant.gep815, i64 %175
  %176 = load double, ptr %gep816.lver.orig, align 8, !tbaa !9
  %gep818.lver.orig = getelementptr double, ptr %invariant.gep817, i64 %175
  %177 = load double, ptr %gep818.lver.orig, align 8, !tbaa !9
  %178 = insertelement <2 x double> poison, double %177, i64 0
  %179 = shufflevector <2 x double> %178, <2 x double> poison, <2 x i32> zeroinitializer
  %180 = fmul <2 x double> %168, %179
  %181 = insertelement <2 x double> poison, double %176, i64 0
  %182 = shufflevector <2 x double> %181, <2 x double> poison, <2 x i32> zeroinitializer
  %183 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %170, <2 x double> %182, <2 x double> %180)
  store <2 x double> %183, ptr %gep818.lver.orig, align 8, !tbaa !9
  %indvars.iv.next703.lver.orig = add nuw nsw i64 %indvars.iv702.lver.orig, 1
  %184 = mul nsw i64 %indvars.iv.next703.lver.orig, %150
  %gep816.lver.orig.1 = getelementptr double, ptr %invariant.gep815, i64 %184
  %185 = load double, ptr %gep816.lver.orig.1, align 8, !tbaa !9
  %gep818.lver.orig.1 = getelementptr double, ptr %invariant.gep817, i64 %184
  %186 = load double, ptr %gep818.lver.orig.1, align 8, !tbaa !9
  %187 = insertelement <2 x double> poison, double %186, i64 0
  %188 = shufflevector <2 x double> %187, <2 x double> poison, <2 x i32> zeroinitializer
  %189 = fmul <2 x double> %172, %188
  %190 = insertelement <2 x double> poison, double %185, i64 0
  %191 = shufflevector <2 x double> %190, <2 x double> poison, <2 x i32> zeroinitializer
  %192 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %174, <2 x double> %191, <2 x double> %189)
  store <2 x double> %192, ptr %gep818.lver.orig.1, align 8, !tbaa !9
  %indvars.iv.next703.lver.orig.1 = add nuw nsw i64 %indvars.iv702.lver.orig, 2
  %niter1226.next.1 = add nuw i64 %niter1226, 2
  %niter1226.ncmp.1 = icmp eq i64 %niter1226.next.1, %unroll_iter1225
  br i1 %niter1226.ncmp.1, label %.loopexit602.loopexit1215.unr-lcssa, label %.ph.lver.orig, !llvm.loop !14

.ph:                                              ; preds = %.lver.check
  %load_initial = load double, ptr %scevgep1192, align 8
  %193 = insertelement <2 x double> poison, double %159, i64 0
  %194 = insertelement <2 x double> %193, double %157, i64 1
  %195 = insertelement <2 x double> poison, double %157, i64 0
  %196 = insertelement <2 x double> %195, double %164, i64 1
  %197 = zext nneg i32 %163 to i64
  %xtraiter1228 = and i64 %197, 1
  %198 = icmp eq i32 %163, 1
  br i1 %198, label %.loopexit602.loopexit.unr-lcssa, label %.ph.new

.ph.new:                                          ; preds = %.ph
  %unroll_iter1230 = and i64 %197, 2147483646
  br label %199

199:                                              ; preds = %199, %.ph.new
  %store_forwarded = phi double [ %load_initial, %.ph.new ], [ %215, %199 ]
  %indvars.iv702 = phi i64 [ 1, %.ph.new ], [ %indvars.iv.next703.1, %199 ]
  %niter1231 = phi i64 [ 0, %.ph.new ], [ %niter1231.next.1, %199 ]
  %200 = mul nuw nsw i64 %indvars.iv702, %150
  %gep816 = getelementptr double, ptr %invariant.gep815, i64 %200
  %201 = load double, ptr %gep816, align 8, !tbaa !9
  %gep818 = getelementptr double, ptr %invariant.gep817, i64 %200
  %202 = insertelement <2 x double> poison, double %store_forwarded, i64 0
  %203 = shufflevector <2 x double> %202, <2 x double> poison, <2 x i32> zeroinitializer
  %204 = fmul <2 x double> %196, %203
  %205 = insertelement <2 x double> poison, double %201, i64 0
  %206 = shufflevector <2 x double> %205, <2 x double> poison, <2 x i32> zeroinitializer
  %207 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %194, <2 x double> %206, <2 x double> %204)
  store <2 x double> %207, ptr %gep818, align 8, !tbaa !9
  %indvars.iv.next703 = add nuw nsw i64 %indvars.iv702, 1
  %208 = mul nuw nsw i64 %indvars.iv.next703, %150
  %gep816.1 = getelementptr double, ptr %invariant.gep815, i64 %208
  %209 = load double, ptr %gep816.1, align 8, !tbaa !9
  %gep818.1 = getelementptr double, ptr %invariant.gep817, i64 %208
  %210 = shufflevector <2 x double> %207, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %211 = fmul <2 x double> %196, %210
  %212 = insertelement <2 x double> poison, double %209, i64 0
  %213 = shufflevector <2 x double> %212, <2 x double> poison, <2 x i32> zeroinitializer
  %214 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %194, <2 x double> %213, <2 x double> %211)
  store <2 x double> %214, ptr %gep818.1, align 8, !tbaa !9
  %indvars.iv.next703.1 = add nuw nsw i64 %indvars.iv702, 2
  %215 = extractelement <2 x double> %214, i64 1
  %niter1231.next.1 = add i64 %niter1231, 2
  %niter1231.ncmp.1 = icmp eq i64 %niter1231.next.1, %unroll_iter1230
  br i1 %niter1231.ncmp.1, label %.loopexit602.loopexit.unr-lcssa, label %199, !llvm.loop !14

.loopexit602.loopexit.unr-lcssa:                  ; preds = %199, %.ph
  %store_forwarded.unr = phi double [ %load_initial, %.ph ], [ %215, %199 ]
  %indvars.iv702.unr = phi i64 [ 1, %.ph ], [ %indvars.iv.next703.1, %199 ]
  %lcmp.mod1229.not = icmp eq i64 %xtraiter1228, 0
  br i1 %lcmp.mod1229.not, label %.loopexit602, label %.loopexit602.loopexit.epilog-lcssa

.loopexit602.loopexit.epilog-lcssa:               ; preds = %.loopexit602.loopexit.unr-lcssa
  %216 = mul nuw nsw i64 %indvars.iv702.unr, %150
  %gep816.epil = getelementptr double, ptr %invariant.gep815, i64 %216
  %217 = load double, ptr %gep816.epil, align 8, !tbaa !9
  %gep818.epil = getelementptr double, ptr %invariant.gep817, i64 %216
  %218 = insertelement <2 x double> poison, double %store_forwarded.unr, i64 0
  %219 = shufflevector <2 x double> %218, <2 x double> poison, <2 x i32> zeroinitializer
  %220 = fmul <2 x double> %196, %219
  %221 = insertelement <2 x double> poison, double %217, i64 0
  %222 = shufflevector <2 x double> %221, <2 x double> poison, <2 x i32> zeroinitializer
  %223 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %194, <2 x double> %222, <2 x double> %220)
  store <2 x double> %223, ptr %gep818.epil, align 8, !tbaa !9
  br label %.loopexit602

.loopexit602.loopexit1215.unr-lcssa:              ; preds = %.ph.lver.orig, %.ph.lver.orig.preheader
  %indvars.iv702.lver.orig.unr = phi i64 [ 1, %.ph.lver.orig.preheader ], [ %indvars.iv.next703.lver.orig.1, %.ph.lver.orig ]
  %lcmp.mod1224.not = icmp eq i64 %xtraiter1223, 0
  br i1 %lcmp.mod1224.not, label %.loopexit602, label %.ph.lver.orig.epil

.ph.lver.orig.epil:                               ; preds = %.loopexit602.loopexit1215.unr-lcssa
  %224 = mul nsw i64 %indvars.iv702.lver.orig.unr, %150
  %gep816.lver.orig.epil = getelementptr double, ptr %invariant.gep815, i64 %224
  %225 = load double, ptr %gep816.lver.orig.epil, align 8, !tbaa !9
  %gep818.lver.orig.epil = getelementptr double, ptr %invariant.gep817, i64 %224
  %226 = load double, ptr %gep818.lver.orig.epil, align 8, !tbaa !9
  %227 = insertelement <2 x double> poison, double %157, i64 0
  %228 = insertelement <2 x double> %227, double %164, i64 1
  %229 = insertelement <2 x double> poison, double %226, i64 0
  %230 = shufflevector <2 x double> %229, <2 x double> poison, <2 x i32> zeroinitializer
  %231 = fmul <2 x double> %228, %230
  %232 = insertelement <2 x double> poison, double %159, i64 0
  %233 = insertelement <2 x double> %232, double %157, i64 1
  %234 = insertelement <2 x double> poison, double %225, i64 0
  %235 = shufflevector <2 x double> %234, <2 x double> poison, <2 x i32> zeroinitializer
  %236 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %233, <2 x double> %235, <2 x double> %231)
  store <2 x double> %236, ptr %gep818.lver.orig.epil, align 8, !tbaa !9
  br label %.loopexit602

.loopexit602:                                     ; preds = %.ph.lver.orig.epil, %.loopexit602.loopexit1215.unr-lcssa, %.loopexit602.loopexit.epilog-lcssa, %.loopexit602.loopexit.unr-lcssa, %162, %.lr.ph618
  %237 = icmp sgt i64 %indvars.iv707, 2
  %indvar.next1191 = add i64 %indvar1190, 1
  br i1 %237, label %.lr.ph618, label %.loopexit583, !llvm.loop !15

238:                                              ; preds = %50
  %239 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #5
  %.not565 = icmp eq i32 %239, 0
  br i1 %.not565, label %318, label %240

240:                                              ; preds = %238
  %241 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.5) #5
  %.not572 = icmp eq i32 %241, 0
  br i1 %.not572, label %276, label %242

242:                                              ; preds = %240
  %243 = load i32, ptr %3, align 4, !tbaa !5
  %.not575622 = icmp slt i32 %243, 2
  br i1 %.not575622, label %.loopexit583, label %.lr.ph625

.lr.ph625:                                        ; preds = %242
  %invariant.gep = getelementptr i8, ptr %15, i64 8
  %244 = sext i32 %13 to i64
  %245 = add nuw i32 %243, 1
  %wide.trip.count718 = zext i32 %245 to i64
  %scevgep869 = getelementptr i8, ptr %7, i64 -8
  %invariant.gep1233 = getelementptr i8, ptr %7, i64 8
  %ident.check.not = icmp eq i32 %13, 1
  br label %246

246:                                              ; preds = %.lr.ph625, %.loopexit600
  %indvar = phi i64 [ 0, %.lr.ph625 ], [ %indvar.next, %.loopexit600 ]
  %indvars.iv715 = phi i64 [ 2, %.lr.ph625 ], [ %indvars.iv.next716, %.loopexit600 ]
  %247 = shl nuw nsw i64 %indvar, 3
  %gep1234 = getelementptr i8, ptr %invariant.gep1233, i64 %247
  %scevgep867 = getelementptr i8, ptr %7, i64 %247
  %248 = add nsw i64 %indvars.iv715, -1
  %249 = getelementptr inbounds double, ptr %11, i64 %248
  %250 = load double, ptr %249, align 8, !tbaa !9
  %251 = getelementptr inbounds double, ptr %12, i64 %248
  %252 = load double, ptr %251, align 8, !tbaa !9
  %253 = fcmp une double %250, 1.000000e+00
  %254 = fcmp une double %252, 0.000000e+00
  %or.cond5 = select i1 %253, i1 true, i1 %254
  br i1 %or.cond5, label %255, label %.loopexit600

255:                                              ; preds = %246
  %256 = load i32, ptr %4, align 4, !tbaa !5
  %.not576619 = icmp slt i32 %256, 1
  br i1 %.not576619, label %.loopexit600, label %.lr.ph621

.lr.ph621:                                        ; preds = %255
  %257 = fneg double %252
  %258 = add nuw i32 %256, 1
  %wide.trip.count713 = zext i32 %258 to i64
  %invariant.gep819 = getelementptr double, ptr %15, i64 %indvars.iv715
  %259 = zext nneg i32 %256 to i64
  %min.iters.check = icmp ne i32 %256, 1
  %or.cond1202 = select i1 %min.iters.check, i1 %ident.check.not, i1 false
  br i1 %or.cond1202, label %vector.memcheck, label %scalar.ph.preheader

vector.memcheck:                                  ; preds = %.lr.ph621
  %260 = shl nuw nsw i64 %wide.trip.count713, 3
  %scevgep868 = getelementptr i8, ptr %scevgep867, i64 %260
  %scevgep870 = getelementptr i8, ptr %scevgep869, i64 %260
  %bound0 = icmp ult ptr %gep1234, %scevgep870
  %bound1 = icmp ugt ptr %scevgep868, %7
  %found.conflict = and i1 %bound0, %bound1
  br i1 %found.conflict, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %259, 2147483646
  %ind.end = or i64 %259, 1
  %broadcast.splatinsert = insertelement <2 x double> poison, double %257, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert872 = insertelement <2 x double> poison, double %250, i64 0
  %broadcast.splat873 = shufflevector <2 x double> %broadcast.splatinsert872, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert875 = insertelement <2 x double> poison, double %252, i64 0
  %broadcast.splat876 = shufflevector <2 x double> %broadcast.splatinsert875, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = or disjoint i64 %index, 1
  %261 = getelementptr double, ptr %invariant.gep819, i64 %offset.idx
  %wide.load = load <2 x double>, ptr %261, align 8, !tbaa !9, !alias.scope !16, !noalias !19
  %262 = getelementptr double, ptr %invariant.gep, i64 %offset.idx
  %wide.load871 = load <2 x double>, ptr %262, align 8, !tbaa !9, !alias.scope !19
  %263 = fmul <2 x double> %wide.load871, %broadcast.splat
  %264 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat873, <2 x double> %wide.load, <2 x double> %263)
  store <2 x double> %264, ptr %261, align 8, !tbaa !9, !alias.scope !16, !noalias !19
  %265 = fmul <2 x double> %broadcast.splat873, %wide.load871
  %266 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat876, <2 x double> %wide.load, <2 x double> %265)
  store <2 x double> %266, ptr %262, align 8, !tbaa !9, !alias.scope !19
  %index.next = add nuw i64 %index, 2
  %267 = icmp eq i64 %index.next, %n.vec
  br i1 %267, label %middle.block, label %vector.body, !llvm.loop !21

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %259
  br i1 %cmp.n, label %.loopexit600, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph621
  %indvars.iv710.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph621 ], [ %ind.end, %middle.block ]
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %indvars.iv710 = phi i64 [ %indvars.iv.next711, %scalar.ph ], [ %indvars.iv710.ph, %scalar.ph.preheader ]
  %268 = mul nsw i64 %indvars.iv710, %244
  %gep820 = getelementptr double, ptr %invariant.gep819, i64 %268
  %269 = load double, ptr %gep820, align 8, !tbaa !9
  %gep = getelementptr double, ptr %invariant.gep, i64 %268
  %270 = load double, ptr %gep, align 8, !tbaa !9
  %271 = fmul double %270, %257
  %272 = tail call double @llvm.fmuladd.f64(double %250, double %269, double %271)
  store double %272, ptr %gep820, align 8, !tbaa !9
  %273 = load double, ptr %gep, align 8, !tbaa !9
  %274 = fmul double %250, %273
  %275 = tail call double @llvm.fmuladd.f64(double %252, double %269, double %274)
  store double %275, ptr %gep, align 8, !tbaa !9
  %indvars.iv.next711 = add nuw nsw i64 %indvars.iv710, 1
  %exitcond714.not = icmp eq i64 %indvars.iv.next711, %wide.trip.count713
  br i1 %exitcond714.not, label %.loopexit600, label %scalar.ph, !llvm.loop !24

.loopexit600:                                     ; preds = %scalar.ph, %middle.block, %255, %246
  %indvars.iv.next716 = add nuw nsw i64 %indvars.iv715, 1
  %exitcond719.not = icmp eq i64 %indvars.iv.next716, %wide.trip.count718
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond719.not, label %.loopexit583, label %246, !llvm.loop !25

276:                                              ; preds = %240
  %277 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.4) #5
  %.not573 = icmp eq i32 %277, 0
  br i1 %.not573, label %.loopexit583, label %278

278:                                              ; preds = %276
  %279 = load i32, ptr %3, align 4, !tbaa !5
  %280 = icmp sgt i32 %279, 1
  br i1 %280, label %.lr.ph632, label %.loopexit583

.lr.ph632:                                        ; preds = %278
  %invariant.gep626 = getelementptr i8, ptr %15, i64 8
  %281 = sext i32 %13 to i64
  %282 = zext nneg i32 %279 to i64
  %283 = shl nuw nsw i64 %282, 3
  %scevgep885 = getelementptr i8, ptr %7, i64 -8
  %284 = getelementptr i8, ptr %7, i64 %283
  %285 = getelementptr i8, ptr %284, i64 -8
  %286 = getelementptr i8, ptr %7, i64 %283
  %287 = getelementptr i8, ptr %286, i64 -16
  %ident.check878.not = icmp eq i32 %13, 1
  br label %288

288:                                              ; preds = %.lr.ph632, %.loopexit598
  %indvar880 = phi i64 [ 0, %.lr.ph632 ], [ %indvar.next881, %.loopexit598 ]
  %indvars.iv725 = phi i64 [ %282, %.lr.ph632 ], [ %indvars.iv.next726, %.loopexit598 ]
  %289 = mul nsw i64 %indvar880, -8
  %scevgep882 = getelementptr i8, ptr %285, i64 %289
  %scevgep883 = getelementptr i8, ptr %287, i64 %289
  %indvars.iv.next726 = add nsw i64 %indvars.iv725, -1
  %290 = getelementptr inbounds double, ptr %11, i64 %indvars.iv.next726
  %291 = load double, ptr %290, align 8, !tbaa !9
  %292 = getelementptr inbounds double, ptr %12, i64 %indvars.iv.next726
  %293 = load double, ptr %292, align 8, !tbaa !9
  %294 = fcmp une double %291, 1.000000e+00
  %295 = fcmp une double %293, 0.000000e+00
  %or.cond7 = select i1 %294, i1 true, i1 %295
  br i1 %or.cond7, label %296, label %.loopexit598

296:                                              ; preds = %288
  %297 = load i32, ptr %4, align 4, !tbaa !5
  %.not574628 = icmp slt i32 %297, 1
  br i1 %.not574628, label %.loopexit598, label %.lr.ph630

.lr.ph630:                                        ; preds = %296
  %298 = fneg double %293
  %299 = add nuw i32 %297, 1
  %wide.trip.count723 = zext i32 %299 to i64
  %invariant.gep821 = getelementptr double, ptr %15, i64 %indvars.iv725
  %300 = zext nneg i32 %297 to i64
  %min.iters.check892 = icmp ne i32 %297, 1
  %or.cond1203 = select i1 %min.iters.check892, i1 %ident.check878.not, i1 false
  br i1 %or.cond1203, label %vector.memcheck879, label %scalar.ph891.preheader

vector.memcheck879:                               ; preds = %.lr.ph630
  %301 = shl nuw nsw i64 %wide.trip.count723, 3
  %scevgep884 = getelementptr i8, ptr %scevgep883, i64 %301
  %scevgep886 = getelementptr i8, ptr %scevgep885, i64 %301
  %bound0887 = icmp ult ptr %scevgep882, %scevgep886
  %bound1888 = icmp ugt ptr %scevgep884, %7
  %found.conflict889 = and i1 %bound0887, %bound1888
  br i1 %found.conflict889, label %scalar.ph891.preheader, label %vector.ph893

vector.ph893:                                     ; preds = %vector.memcheck879
  %n.vec895 = and i64 %300, 2147483646
  %ind.end896 = or i64 %300, 1
  %broadcast.splatinsert903 = insertelement <2 x double> poison, double %298, i64 0
  %broadcast.splat904 = shufflevector <2 x double> %broadcast.splatinsert903, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert905 = insertelement <2 x double> poison, double %291, i64 0
  %broadcast.splat906 = shufflevector <2 x double> %broadcast.splatinsert905, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert908 = insertelement <2 x double> poison, double %293, i64 0
  %broadcast.splat909 = shufflevector <2 x double> %broadcast.splatinsert908, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body898

vector.body898:                                   ; preds = %vector.body898, %vector.ph893
  %index899 = phi i64 [ 0, %vector.ph893 ], [ %index.next910, %vector.body898 ]
  %offset.idx900 = or disjoint i64 %index899, 1
  %302 = getelementptr double, ptr %invariant.gep821, i64 %offset.idx900
  %wide.load901 = load <2 x double>, ptr %302, align 8, !tbaa !9, !alias.scope !26, !noalias !29
  %303 = getelementptr double, ptr %invariant.gep626, i64 %offset.idx900
  %wide.load902 = load <2 x double>, ptr %303, align 8, !tbaa !9, !alias.scope !29
  %304 = fmul <2 x double> %wide.load902, %broadcast.splat904
  %305 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat906, <2 x double> %wide.load901, <2 x double> %304)
  store <2 x double> %305, ptr %302, align 8, !tbaa !9, !alias.scope !26, !noalias !29
  %306 = fmul <2 x double> %broadcast.splat906, %wide.load902
  %307 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat909, <2 x double> %wide.load901, <2 x double> %306)
  store <2 x double> %307, ptr %303, align 8, !tbaa !9, !alias.scope !29
  %index.next910 = add nuw i64 %index899, 2
  %308 = icmp eq i64 %index.next910, %n.vec895
  br i1 %308, label %middle.block890, label %vector.body898, !llvm.loop !31

middle.block890:                                  ; preds = %vector.body898
  %cmp.n911 = icmp eq i64 %n.vec895, %300
  br i1 %cmp.n911, label %.loopexit598, label %scalar.ph891.preheader

scalar.ph891.preheader:                           ; preds = %middle.block890, %vector.memcheck879, %.lr.ph630
  %indvars.iv720.ph = phi i64 [ 1, %vector.memcheck879 ], [ 1, %.lr.ph630 ], [ %ind.end896, %middle.block890 ]
  br label %scalar.ph891

scalar.ph891:                                     ; preds = %scalar.ph891.preheader, %scalar.ph891
  %indvars.iv720 = phi i64 [ %indvars.iv.next721, %scalar.ph891 ], [ %indvars.iv720.ph, %scalar.ph891.preheader ]
  %309 = mul nsw i64 %indvars.iv720, %281
  %gep822 = getelementptr double, ptr %invariant.gep821, i64 %309
  %310 = load double, ptr %gep822, align 8, !tbaa !9
  %gep627 = getelementptr double, ptr %invariant.gep626, i64 %309
  %311 = load double, ptr %gep627, align 8, !tbaa !9
  %312 = fmul double %311, %298
  %313 = tail call double @llvm.fmuladd.f64(double %291, double %310, double %312)
  store double %313, ptr %gep822, align 8, !tbaa !9
  %314 = load double, ptr %gep627, align 8, !tbaa !9
  %315 = fmul double %291, %314
  %316 = tail call double @llvm.fmuladd.f64(double %293, double %310, double %315)
  store double %316, ptr %gep627, align 8, !tbaa !9
  %indvars.iv.next721 = add nuw nsw i64 %indvars.iv720, 1
  %exitcond724.not = icmp eq i64 %indvars.iv.next721, %wide.trip.count723
  br i1 %exitcond724.not, label %.loopexit598, label %scalar.ph891, !llvm.loop !32

.loopexit598:                                     ; preds = %scalar.ph891, %middle.block890, %296, %288
  %317 = icmp sgt i64 %indvars.iv725, 2
  %indvar.next881 = add i64 %indvar880, 1
  br i1 %317, label %288, label %.loopexit583, !llvm.loop !33

318:                                              ; preds = %238
  %319 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #5
  %.not566 = icmp eq i32 %319, 0
  br i1 %.not566, label %.loopexit583, label %320

320:                                              ; preds = %318
  %321 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.5) #5
  %.not567 = icmp eq i32 %321, 0
  br i1 %.not567, label %357, label %322

322:                                              ; preds = %320
  %323 = load i32, ptr %3, align 4, !tbaa !5
  %.not570.not636 = icmp sgt i32 %323, 1
  br i1 %.not570.not636, label %.lr.ph639.preheader, label %.loopexit583

.lr.ph639.preheader:                              ; preds = %322
  %324 = sext i32 %13 to i64
  %325 = zext nneg i32 %323 to i64
  %wide.trip.count736 = zext nneg i32 %323 to i64
  %invariant.gep825 = getelementptr double, ptr %15, i64 %325
  %326 = shl nuw nsw i64 %wide.trip.count736, 3
  %327 = getelementptr i8, ptr %7, i64 %326
  %scevgep920 = getelementptr i8, ptr %327, i64 -8
  %328 = getelementptr i8, ptr %7, i64 %326
  %scevgep921 = getelementptr i8, ptr %328, i64 -16
  %invariant.gep1235 = getelementptr i8, ptr %7, i64 -8
  %ident.check913.not = icmp eq i32 %13, 1
  br label %.lr.ph639

.lr.ph639:                                        ; preds = %.lr.ph639.preheader, %.loopexit596
  %indvar915 = phi i64 [ 0, %.lr.ph639.preheader ], [ %indvar.next916, %.loopexit596 ]
  %indvars.iv733 = phi i64 [ 1, %.lr.ph639.preheader ], [ %indvars.iv.next734, %.loopexit596 ]
  %329 = shl nuw nsw i64 %indvar915, 3
  %scevgep917 = getelementptr i8, ptr %7, i64 %329
  %gep1236 = getelementptr i8, ptr %invariant.gep1235, i64 %329
  %330 = getelementptr inbounds double, ptr %11, i64 %indvars.iv733
  %331 = load double, ptr %330, align 8, !tbaa !9
  %332 = getelementptr inbounds double, ptr %12, i64 %indvars.iv733
  %333 = load double, ptr %332, align 8, !tbaa !9
  %334 = fcmp une double %331, 1.000000e+00
  %335 = fcmp une double %333, 0.000000e+00
  %or.cond9 = select i1 %334, i1 true, i1 %335
  br i1 %or.cond9, label %336, label %.loopexit596

336:                                              ; preds = %.lr.ph639
  %337 = load i32, ptr %4, align 4, !tbaa !5
  %.not571633 = icmp slt i32 %337, 1
  br i1 %.not571633, label %.loopexit596, label %.lr.ph635

.lr.ph635:                                        ; preds = %336
  %338 = fneg double %333
  %339 = add nuw i32 %337, 1
  %wide.trip.count731 = zext i32 %339 to i64
  %invariant.gep823 = getelementptr double, ptr %15, i64 %indvars.iv733
  %340 = zext nneg i32 %337 to i64
  %min.iters.check928 = icmp ne i32 %337, 1
  %or.cond1204 = select i1 %min.iters.check928, i1 %ident.check913.not, i1 false
  br i1 %or.cond1204, label %vector.memcheck914, label %scalar.ph927.preheader

vector.memcheck914:                               ; preds = %.lr.ph635
  %341 = shl nuw nsw i64 %wide.trip.count731, 3
  %scevgep919 = getelementptr i8, ptr %gep1236, i64 %341
  %scevgep922 = getelementptr i8, ptr %scevgep921, i64 %341
  %bound0923 = icmp ult ptr %scevgep917, %scevgep922
  %bound1924 = icmp ult ptr %scevgep920, %scevgep919
  %found.conflict925 = and i1 %bound0923, %bound1924
  br i1 %found.conflict925, label %scalar.ph927.preheader, label %vector.ph929

vector.ph929:                                     ; preds = %vector.memcheck914
  %n.vec931 = and i64 %340, 2147483646
  %ind.end932 = or i64 %340, 1
  %broadcast.splatinsert939 = insertelement <2 x double> poison, double %331, i64 0
  %broadcast.splat940 = shufflevector <2 x double> %broadcast.splatinsert939, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert941 = insertelement <2 x double> poison, double %333, i64 0
  %broadcast.splat942 = shufflevector <2 x double> %broadcast.splatinsert941, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert944 = insertelement <2 x double> poison, double %338, i64 0
  %broadcast.splat945 = shufflevector <2 x double> %broadcast.splatinsert944, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body934

vector.body934:                                   ; preds = %vector.body934, %vector.ph929
  %index935 = phi i64 [ 0, %vector.ph929 ], [ %index.next946, %vector.body934 ]
  %offset.idx936 = or disjoint i64 %index935, 1
  %342 = getelementptr double, ptr %invariant.gep823, i64 %offset.idx936
  %wide.load937 = load <2 x double>, ptr %342, align 8, !tbaa !9, !alias.scope !34, !noalias !37
  %343 = getelementptr double, ptr %invariant.gep825, i64 %offset.idx936
  %wide.load938 = load <2 x double>, ptr %343, align 8, !tbaa !9, !alias.scope !37
  %344 = fmul <2 x double> %broadcast.splat940, %wide.load937
  %345 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat942, <2 x double> %wide.load938, <2 x double> %344)
  store <2 x double> %345, ptr %342, align 8, !tbaa !9, !alias.scope !34, !noalias !37
  %346 = fmul <2 x double> %wide.load937, %broadcast.splat945
  %347 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat940, <2 x double> %wide.load938, <2 x double> %346)
  store <2 x double> %347, ptr %343, align 8, !tbaa !9, !alias.scope !37
  %index.next946 = add nuw i64 %index935, 2
  %348 = icmp eq i64 %index.next946, %n.vec931
  br i1 %348, label %middle.block926, label %vector.body934, !llvm.loop !39

middle.block926:                                  ; preds = %vector.body934
  %cmp.n947 = icmp eq i64 %n.vec931, %340
  br i1 %cmp.n947, label %.loopexit596, label %scalar.ph927.preheader

scalar.ph927.preheader:                           ; preds = %middle.block926, %vector.memcheck914, %.lr.ph635
  %indvars.iv728.ph = phi i64 [ 1, %vector.memcheck914 ], [ 1, %.lr.ph635 ], [ %ind.end932, %middle.block926 ]
  br label %scalar.ph927

scalar.ph927:                                     ; preds = %scalar.ph927.preheader, %scalar.ph927
  %indvars.iv728 = phi i64 [ %indvars.iv.next729, %scalar.ph927 ], [ %indvars.iv728.ph, %scalar.ph927.preheader ]
  %349 = mul nsw i64 %indvars.iv728, %324
  %gep824 = getelementptr double, ptr %invariant.gep823, i64 %349
  %350 = load double, ptr %gep824, align 8, !tbaa !9
  %gep826 = getelementptr double, ptr %invariant.gep825, i64 %349
  %351 = load double, ptr %gep826, align 8, !tbaa !9
  %352 = fmul double %331, %350
  %353 = tail call double @llvm.fmuladd.f64(double %333, double %351, double %352)
  store double %353, ptr %gep824, align 8, !tbaa !9
  %354 = load double, ptr %gep826, align 8, !tbaa !9
  %355 = fmul double %350, %338
  %356 = tail call double @llvm.fmuladd.f64(double %331, double %354, double %355)
  store double %356, ptr %gep826, align 8, !tbaa !9
  %indvars.iv.next729 = add nuw nsw i64 %indvars.iv728, 1
  %exitcond732.not = icmp eq i64 %indvars.iv.next729, %wide.trip.count731
  br i1 %exitcond732.not, label %.loopexit596, label %scalar.ph927, !llvm.loop !40

.loopexit596:                                     ; preds = %scalar.ph927, %middle.block926, %336, %.lr.ph639
  %indvars.iv.next734 = add nuw nsw i64 %indvars.iv733, 1
  %exitcond737.not = icmp eq i64 %indvars.iv.next734, %wide.trip.count736
  %indvar.next916 = add i64 %indvar915, 1
  br i1 %exitcond737.not, label %.loopexit583, label %.lr.ph639, !llvm.loop !41

357:                                              ; preds = %320
  %358 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.4) #5
  %.not568 = icmp eq i32 %358, 0
  br i1 %.not568, label %.loopexit583, label %359

359:                                              ; preds = %357
  %360 = load i32, ptr %3, align 4, !tbaa !5
  %361 = icmp sgt i32 %360, 1
  br i1 %361, label %.lr.ph645.preheader, label %.loopexit583

.lr.ph645.preheader:                              ; preds = %359
  %362 = sext i32 %13 to i64
  %363 = zext nneg i32 %360 to i64
  %invariant.gep829 = getelementptr double, ptr %15, i64 %363
  %364 = shl nuw nsw i64 %363, 3
  %365 = add nsw i64 %364, -16
  %366 = getelementptr i8, ptr %7, i64 %364
  %scevgep956 = getelementptr i8, ptr %366, i64 -8
  %scevgep957 = getelementptr i8, ptr %7, i64 %365
  %367 = getelementptr i8, ptr %7, i64 %365
  %368 = getelementptr i8, ptr %7, i64 %364
  %369 = getelementptr i8, ptr %368, i64 -24
  %ident.check949.not = icmp eq i32 %13, 1
  br label %.lr.ph645

.lr.ph645:                                        ; preds = %.lr.ph645.preheader, %.loopexit594
  %indvar951 = phi i64 [ 0, %.lr.ph645.preheader ], [ %indvar.next952, %.loopexit594 ]
  %indvars.iv743 = phi i64 [ %363, %.lr.ph645.preheader ], [ %indvars.iv.next744, %.loopexit594 ]
  %370 = mul nsw i64 %indvar951, -8
  %scevgep953 = getelementptr i8, ptr %367, i64 %370
  %scevgep954 = getelementptr i8, ptr %369, i64 %370
  %indvars.iv.next744 = add nsw i64 %indvars.iv743, -1
  %371 = getelementptr inbounds double, ptr %11, i64 %indvars.iv.next744
  %372 = load double, ptr %371, align 8, !tbaa !9
  %373 = getelementptr inbounds double, ptr %12, i64 %indvars.iv.next744
  %374 = load double, ptr %373, align 8, !tbaa !9
  %375 = fcmp une double %372, 1.000000e+00
  %376 = fcmp une double %374, 0.000000e+00
  %or.cond11 = select i1 %375, i1 true, i1 %376
  br i1 %or.cond11, label %377, label %.loopexit594

377:                                              ; preds = %.lr.ph645
  %378 = load i32, ptr %4, align 4, !tbaa !5
  %.not569640 = icmp slt i32 %378, 1
  br i1 %.not569640, label %.loopexit594, label %.lr.ph642

.lr.ph642:                                        ; preds = %377
  %379 = fneg double %374
  %380 = add nuw i32 %378, 1
  %wide.trip.count741 = zext i32 %380 to i64
  %invariant.gep827 = getelementptr double, ptr %15, i64 %indvars.iv.next744
  %381 = zext nneg i32 %378 to i64
  %min.iters.check964 = icmp ne i32 %378, 1
  %or.cond1205 = select i1 %min.iters.check964, i1 %ident.check949.not, i1 false
  br i1 %or.cond1205, label %vector.memcheck950, label %scalar.ph963.preheader

vector.memcheck950:                               ; preds = %.lr.ph642
  %382 = shl nuw nsw i64 %wide.trip.count741, 3
  %scevgep955 = getelementptr i8, ptr %scevgep954, i64 %382
  %scevgep958 = getelementptr i8, ptr %scevgep957, i64 %382
  %bound0959 = icmp ult ptr %scevgep953, %scevgep958
  %bound1960 = icmp ult ptr %scevgep956, %scevgep955
  %found.conflict961 = and i1 %bound0959, %bound1960
  br i1 %found.conflict961, label %scalar.ph963.preheader, label %vector.ph965

vector.ph965:                                     ; preds = %vector.memcheck950
  %n.vec967 = and i64 %381, 2147483646
  %ind.end968 = or i64 %381, 1
  %broadcast.splatinsert975 = insertelement <2 x double> poison, double %372, i64 0
  %broadcast.splat976 = shufflevector <2 x double> %broadcast.splatinsert975, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert977 = insertelement <2 x double> poison, double %374, i64 0
  %broadcast.splat978 = shufflevector <2 x double> %broadcast.splatinsert977, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert980 = insertelement <2 x double> poison, double %379, i64 0
  %broadcast.splat981 = shufflevector <2 x double> %broadcast.splatinsert980, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body970

vector.body970:                                   ; preds = %vector.body970, %vector.ph965
  %index971 = phi i64 [ 0, %vector.ph965 ], [ %index.next982, %vector.body970 ]
  %offset.idx972 = or disjoint i64 %index971, 1
  %383 = getelementptr double, ptr %invariant.gep827, i64 %offset.idx972
  %wide.load973 = load <2 x double>, ptr %383, align 8, !tbaa !9, !alias.scope !42, !noalias !45
  %384 = getelementptr double, ptr %invariant.gep829, i64 %offset.idx972
  %wide.load974 = load <2 x double>, ptr %384, align 8, !tbaa !9, !alias.scope !45
  %385 = fmul <2 x double> %broadcast.splat976, %wide.load973
  %386 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat978, <2 x double> %wide.load974, <2 x double> %385)
  store <2 x double> %386, ptr %383, align 8, !tbaa !9, !alias.scope !42, !noalias !45
  %387 = fmul <2 x double> %wide.load973, %broadcast.splat981
  %388 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat976, <2 x double> %wide.load974, <2 x double> %387)
  store <2 x double> %388, ptr %384, align 8, !tbaa !9, !alias.scope !45
  %index.next982 = add nuw i64 %index971, 2
  %389 = icmp eq i64 %index.next982, %n.vec967
  br i1 %389, label %middle.block962, label %vector.body970, !llvm.loop !47

middle.block962:                                  ; preds = %vector.body970
  %cmp.n983 = icmp eq i64 %n.vec967, %381
  br i1 %cmp.n983, label %.loopexit594, label %scalar.ph963.preheader

scalar.ph963.preheader:                           ; preds = %middle.block962, %vector.memcheck950, %.lr.ph642
  %indvars.iv738.ph = phi i64 [ 1, %vector.memcheck950 ], [ 1, %.lr.ph642 ], [ %ind.end968, %middle.block962 ]
  br label %scalar.ph963

scalar.ph963:                                     ; preds = %scalar.ph963.preheader, %scalar.ph963
  %indvars.iv738 = phi i64 [ %indvars.iv.next739, %scalar.ph963 ], [ %indvars.iv738.ph, %scalar.ph963.preheader ]
  %390 = mul nsw i64 %indvars.iv738, %362
  %gep828 = getelementptr double, ptr %invariant.gep827, i64 %390
  %391 = load double, ptr %gep828, align 8, !tbaa !9
  %gep830 = getelementptr double, ptr %invariant.gep829, i64 %390
  %392 = load double, ptr %gep830, align 8, !tbaa !9
  %393 = fmul double %372, %391
  %394 = tail call double @llvm.fmuladd.f64(double %374, double %392, double %393)
  store double %394, ptr %gep828, align 8, !tbaa !9
  %395 = load double, ptr %gep830, align 8, !tbaa !9
  %396 = fmul double %391, %379
  %397 = tail call double @llvm.fmuladd.f64(double %372, double %395, double %396)
  store double %397, ptr %gep830, align 8, !tbaa !9
  %indvars.iv.next739 = add nuw nsw i64 %indvars.iv738, 1
  %exitcond742.not = icmp eq i64 %indvars.iv.next739, %wide.trip.count741
  br i1 %exitcond742.not, label %.loopexit594, label %scalar.ph963, !llvm.loop !48

.loopexit594:                                     ; preds = %scalar.ph963, %middle.block962, %377, %.lr.ph645
  %398 = icmp sgt i64 %indvars.iv743, 2
  %indvar.next952 = add i64 %indvar951, 1
  br i1 %398, label %.lr.ph645, label %.loopexit583, !llvm.loop !49

399:                                              ; preds = %48
  %400 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #5
  %.not545 = icmp eq i32 %400, 0
  br i1 %.not545, label %.loopexit583, label %401

401:                                              ; preds = %399
  %402 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #5
  %.not546 = icmp eq i32 %402, 0
  br i1 %.not546, label %501, label %403

403:                                              ; preds = %401
  %404 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.5) #5
  %.not559 = icmp eq i32 %404, 0
  br i1 %.not559, label %450, label %405

405:                                              ; preds = %403
  %406 = load i32, ptr %4, align 4, !tbaa !5
  %.not562.not649 = icmp sgt i32 %406, 1
  br i1 %.not562.not649, label %.lr.ph652.preheader, label %.loopexit583

.lr.ph652.preheader:                              ; preds = %405
  %407 = sext i32 %13 to i64
  %wide.trip.count754 = zext nneg i32 %406 to i64
  %408 = shl nsw i64 %407, 4
  %409 = shl nsw i64 %14, 3
  %410 = add nsw i64 %408, %409
  %411 = shl nsw i64 %407, 3
  %412 = add nsw i64 %407, %14
  %413 = shl nsw i64 %412, 3
  %414 = getelementptr i8, ptr %7, i64 %410
  %415 = getelementptr i8, ptr %414, i64 8
  %416 = getelementptr i8, ptr %7, i64 %410
  %417 = getelementptr i8, ptr %7, i64 %413
  %418 = getelementptr i8, ptr %417, i64 8
  %419 = getelementptr i8, ptr %7, i64 %413
  br label %.lr.ph652

.lr.ph652:                                        ; preds = %.lr.ph652.preheader, %.loopexit592
  %indvar985 = phi i64 [ 0, %.lr.ph652.preheader ], [ %indvar.next986, %.loopexit592 ]
  %indvars.iv751 = phi i64 [ 1, %.lr.ph652.preheader ], [ %indvars.iv.next752, %.loopexit592 ]
  %420 = mul i64 %411, %indvar985
  %scevgep987 = getelementptr i8, ptr %415, i64 %420
  %scevgep988 = getelementptr i8, ptr %416, i64 %420
  %scevgep990 = getelementptr i8, ptr %418, i64 %420
  %scevgep991 = getelementptr i8, ptr %419, i64 %420
  %421 = getelementptr inbounds double, ptr %11, i64 %indvars.iv751
  %422 = load double, ptr %421, align 8, !tbaa !9
  %423 = getelementptr inbounds double, ptr %12, i64 %indvars.iv751
  %424 = load double, ptr %423, align 8, !tbaa !9
  %425 = fcmp une double %422, 1.000000e+00
  %426 = fcmp une double %424, 0.000000e+00
  %or.cond13 = select i1 %425, i1 true, i1 %426
  br i1 %or.cond13, label %427, label %.loopexit592

427:                                              ; preds = %.lr.ph652
  %428 = load i32, ptr %3, align 4, !tbaa !5
  %.not563646 = icmp slt i32 %428, 1
  br i1 %.not563646, label %.loopexit592, label %.lr.ph648

.lr.ph648:                                        ; preds = %427
  %429 = add nuw nsw i64 %indvars.iv751, 1
  %430 = mul nsw i64 %429, %407
  %431 = mul nsw i64 %indvars.iv751, %407
  %432 = fneg double %424
  %433 = add nuw i32 %428, 1
  %wide.trip.count749 = zext i32 %433 to i64
  %invariant.gep831 = getelementptr double, ptr %15, i64 %430
  %invariant.gep833 = getelementptr double, ptr %15, i64 %431
  %434 = zext nneg i32 %428 to i64
  %min.iters.check998 = icmp eq i32 %428, 1
  br i1 %min.iters.check998, label %scalar.ph997.preheader, label %vector.memcheck984

vector.memcheck984:                               ; preds = %.lr.ph648
  %435 = shl nuw nsw i64 %wide.trip.count749, 3
  %scevgep989 = getelementptr i8, ptr %scevgep988, i64 %435
  %scevgep992 = getelementptr i8, ptr %scevgep991, i64 %435
  %bound0993 = icmp ult ptr %scevgep987, %scevgep992
  %bound1994 = icmp ult ptr %scevgep990, %scevgep989
  %found.conflict995 = and i1 %bound0993, %bound1994
  br i1 %found.conflict995, label %scalar.ph997.preheader, label %vector.ph999

vector.ph999:                                     ; preds = %vector.memcheck984
  %n.vec1001 = and i64 %434, 2147483646
  %ind.end1002 = or i64 %434, 1
  %broadcast.splatinsert1009 = insertelement <2 x double> poison, double %432, i64 0
  %broadcast.splat1010 = shufflevector <2 x double> %broadcast.splatinsert1009, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert1011 = insertelement <2 x double> poison, double %422, i64 0
  %broadcast.splat1012 = shufflevector <2 x double> %broadcast.splatinsert1011, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert1014 = insertelement <2 x double> poison, double %424, i64 0
  %broadcast.splat1015 = shufflevector <2 x double> %broadcast.splatinsert1014, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1004

vector.body1004:                                  ; preds = %vector.body1004, %vector.ph999
  %index1005 = phi i64 [ 0, %vector.ph999 ], [ %index.next1016, %vector.body1004 ]
  %offset.idx1006 = or disjoint i64 %index1005, 1
  %436 = getelementptr double, ptr %invariant.gep831, i64 %offset.idx1006
  %wide.load1007 = load <2 x double>, ptr %436, align 8, !tbaa !9, !alias.scope !50, !noalias !53
  %437 = getelementptr double, ptr %invariant.gep833, i64 %offset.idx1006
  %wide.load1008 = load <2 x double>, ptr %437, align 8, !tbaa !9, !alias.scope !53
  %438 = fmul <2 x double> %wide.load1008, %broadcast.splat1010
  %439 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat1012, <2 x double> %wide.load1007, <2 x double> %438)
  store <2 x double> %439, ptr %436, align 8, !tbaa !9, !alias.scope !50, !noalias !53
  %440 = fmul <2 x double> %broadcast.splat1012, %wide.load1008
  %441 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat1015, <2 x double> %wide.load1007, <2 x double> %440)
  store <2 x double> %441, ptr %437, align 8, !tbaa !9, !alias.scope !53
  %index.next1016 = add nuw i64 %index1005, 2
  %442 = icmp eq i64 %index.next1016, %n.vec1001
  br i1 %442, label %middle.block996, label %vector.body1004, !llvm.loop !55

middle.block996:                                  ; preds = %vector.body1004
  %cmp.n1017 = icmp eq i64 %n.vec1001, %434
  br i1 %cmp.n1017, label %.loopexit592, label %scalar.ph997.preheader

scalar.ph997.preheader:                           ; preds = %middle.block996, %vector.memcheck984, %.lr.ph648
  %indvars.iv746.ph = phi i64 [ 1, %vector.memcheck984 ], [ 1, %.lr.ph648 ], [ %ind.end1002, %middle.block996 ]
  br label %scalar.ph997

scalar.ph997:                                     ; preds = %scalar.ph997.preheader, %scalar.ph997
  %indvars.iv746 = phi i64 [ %indvars.iv.next747, %scalar.ph997 ], [ %indvars.iv746.ph, %scalar.ph997.preheader ]
  %gep832 = getelementptr double, ptr %invariant.gep831, i64 %indvars.iv746
  %443 = load double, ptr %gep832, align 8, !tbaa !9
  %gep834 = getelementptr double, ptr %invariant.gep833, i64 %indvars.iv746
  %444 = load double, ptr %gep834, align 8, !tbaa !9
  %445 = fmul double %444, %432
  %446 = tail call double @llvm.fmuladd.f64(double %422, double %443, double %445)
  store double %446, ptr %gep832, align 8, !tbaa !9
  %447 = load double, ptr %gep834, align 8, !tbaa !9
  %448 = fmul double %422, %447
  %449 = tail call double @llvm.fmuladd.f64(double %424, double %443, double %448)
  store double %449, ptr %gep834, align 8, !tbaa !9
  %indvars.iv.next747 = add nuw nsw i64 %indvars.iv746, 1
  %exitcond750.not = icmp eq i64 %indvars.iv.next747, %wide.trip.count749
  br i1 %exitcond750.not, label %.loopexit592, label %scalar.ph997, !llvm.loop !56

.loopexit592:                                     ; preds = %scalar.ph997, %middle.block996, %427, %.lr.ph652
  %indvars.iv.next752 = add nuw nsw i64 %indvars.iv751, 1
  %exitcond755.not = icmp eq i64 %indvars.iv.next752, %wide.trip.count754
  %indvar.next986 = add i64 %indvar985, 1
  br i1 %exitcond755.not, label %.loopexit583, label %.lr.ph652, !llvm.loop !57

450:                                              ; preds = %403
  %451 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.4) #5
  %.not560 = icmp eq i32 %451, 0
  br i1 %.not560, label %.loopexit583, label %452

452:                                              ; preds = %450
  %453 = load i32, ptr %4, align 4, !tbaa !5
  %454 = icmp sgt i32 %453, 1
  br i1 %454, label %.lr.ph659.preheader, label %.loopexit583

.lr.ph659.preheader:                              ; preds = %452
  %455 = zext nneg i32 %453 to i64
  %456 = sext i32 %13 to i64
  %457 = mul nsw i64 %456, %455
  %458 = add i64 %457, %14
  %459 = shl i64 %458, 3
  %460 = mul nsw i64 %456, -8
  %461 = add nuw nsw i64 %455, 2305843009213693951
  %462 = mul i64 %461, %456
  %463 = add i64 %462, %14
  %464 = shl i64 %463, 3
  %465 = getelementptr i8, ptr %7, i64 %459
  %466 = getelementptr i8, ptr %465, i64 8
  %467 = getelementptr i8, ptr %7, i64 %459
  %468 = getelementptr i8, ptr %7, i64 %464
  %469 = getelementptr i8, ptr %468, i64 8
  %470 = getelementptr i8, ptr %7, i64 %464
  br label %.lr.ph659

.lr.ph659:                                        ; preds = %.lr.ph659.preheader, %.loopexit590
  %indvar1019 = phi i64 [ 0, %.lr.ph659.preheader ], [ %indvar.next1020, %.loopexit590 ]
  %indvars.iv761 = phi i64 [ %455, %.lr.ph659.preheader ], [ %indvars.iv.next762, %.loopexit590 ]
  %471 = mul i64 %460, %indvar1019
  %scevgep1021 = getelementptr i8, ptr %466, i64 %471
  %scevgep1022 = getelementptr i8, ptr %467, i64 %471
  %scevgep1024 = getelementptr i8, ptr %469, i64 %471
  %scevgep1025 = getelementptr i8, ptr %470, i64 %471
  %indvars.iv.next762 = add nsw i64 %indvars.iv761, -1
  %472 = getelementptr inbounds double, ptr %11, i64 %indvars.iv.next762
  %473 = load double, ptr %472, align 8, !tbaa !9
  %474 = getelementptr inbounds double, ptr %12, i64 %indvars.iv.next762
  %475 = load double, ptr %474, align 8, !tbaa !9
  %476 = fcmp une double %473, 1.000000e+00
  %477 = fcmp une double %475, 0.000000e+00
  %or.cond15 = select i1 %476, i1 true, i1 %477
  br i1 %or.cond15, label %478, label %.loopexit590

478:                                              ; preds = %.lr.ph659
  %479 = load i32, ptr %3, align 4, !tbaa !5
  %.not561653 = icmp slt i32 %479, 1
  br i1 %.not561653, label %.loopexit590, label %.lr.ph655

.lr.ph655:                                        ; preds = %478
  %480 = mul nsw i64 %indvars.iv761, %456
  %481 = mul nsw i64 %indvars.iv.next762, %456
  %482 = fneg double %475
  %483 = add nuw i32 %479, 1
  %wide.trip.count759 = zext i32 %483 to i64
  %invariant.gep835 = getelementptr double, ptr %15, i64 %480
  %invariant.gep837 = getelementptr double, ptr %15, i64 %481
  %484 = zext nneg i32 %479 to i64
  %min.iters.check1032 = icmp eq i32 %479, 1
  br i1 %min.iters.check1032, label %scalar.ph1031.preheader, label %vector.memcheck1018

vector.memcheck1018:                              ; preds = %.lr.ph655
  %485 = shl nuw nsw i64 %wide.trip.count759, 3
  %scevgep1023 = getelementptr i8, ptr %scevgep1022, i64 %485
  %scevgep1026 = getelementptr i8, ptr %scevgep1025, i64 %485
  %bound01027 = icmp ult ptr %scevgep1021, %scevgep1026
  %bound11028 = icmp ult ptr %scevgep1024, %scevgep1023
  %found.conflict1029 = and i1 %bound01027, %bound11028
  br i1 %found.conflict1029, label %scalar.ph1031.preheader, label %vector.ph1033

vector.ph1033:                                    ; preds = %vector.memcheck1018
  %n.vec1035 = and i64 %484, 2147483646
  %ind.end1036 = or i64 %484, 1
  %broadcast.splatinsert1043 = insertelement <2 x double> poison, double %482, i64 0
  %broadcast.splat1044 = shufflevector <2 x double> %broadcast.splatinsert1043, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert1045 = insertelement <2 x double> poison, double %473, i64 0
  %broadcast.splat1046 = shufflevector <2 x double> %broadcast.splatinsert1045, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert1048 = insertelement <2 x double> poison, double %475, i64 0
  %broadcast.splat1049 = shufflevector <2 x double> %broadcast.splatinsert1048, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1038

vector.body1038:                                  ; preds = %vector.body1038, %vector.ph1033
  %index1039 = phi i64 [ 0, %vector.ph1033 ], [ %index.next1050, %vector.body1038 ]
  %offset.idx1040 = or disjoint i64 %index1039, 1
  %486 = getelementptr double, ptr %invariant.gep835, i64 %offset.idx1040
  %wide.load1041 = load <2 x double>, ptr %486, align 8, !tbaa !9, !alias.scope !58, !noalias !61
  %487 = getelementptr double, ptr %invariant.gep837, i64 %offset.idx1040
  %wide.load1042 = load <2 x double>, ptr %487, align 8, !tbaa !9, !alias.scope !61
  %488 = fmul <2 x double> %wide.load1042, %broadcast.splat1044
  %489 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat1046, <2 x double> %wide.load1041, <2 x double> %488)
  store <2 x double> %489, ptr %486, align 8, !tbaa !9, !alias.scope !58, !noalias !61
  %490 = fmul <2 x double> %broadcast.splat1046, %wide.load1042
  %491 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat1049, <2 x double> %wide.load1041, <2 x double> %490)
  store <2 x double> %491, ptr %487, align 8, !tbaa !9, !alias.scope !61
  %index.next1050 = add nuw i64 %index1039, 2
  %492 = icmp eq i64 %index.next1050, %n.vec1035
  br i1 %492, label %middle.block1030, label %vector.body1038, !llvm.loop !63

middle.block1030:                                 ; preds = %vector.body1038
  %cmp.n1051 = icmp eq i64 %n.vec1035, %484
  br i1 %cmp.n1051, label %.loopexit590, label %scalar.ph1031.preheader

scalar.ph1031.preheader:                          ; preds = %middle.block1030, %vector.memcheck1018, %.lr.ph655
  %indvars.iv756.ph = phi i64 [ 1, %vector.memcheck1018 ], [ 1, %.lr.ph655 ], [ %ind.end1036, %middle.block1030 ]
  br label %scalar.ph1031

scalar.ph1031:                                    ; preds = %scalar.ph1031.preheader, %scalar.ph1031
  %indvars.iv756 = phi i64 [ %indvars.iv.next757, %scalar.ph1031 ], [ %indvars.iv756.ph, %scalar.ph1031.preheader ]
  %gep836 = getelementptr double, ptr %invariant.gep835, i64 %indvars.iv756
  %493 = load double, ptr %gep836, align 8, !tbaa !9
  %gep838 = getelementptr double, ptr %invariant.gep837, i64 %indvars.iv756
  %494 = load double, ptr %gep838, align 8, !tbaa !9
  %495 = fmul double %494, %482
  %496 = tail call double @llvm.fmuladd.f64(double %473, double %493, double %495)
  store double %496, ptr %gep836, align 8, !tbaa !9
  %497 = load double, ptr %gep838, align 8, !tbaa !9
  %498 = fmul double %473, %497
  %499 = tail call double @llvm.fmuladd.f64(double %475, double %493, double %498)
  store double %499, ptr %gep838, align 8, !tbaa !9
  %indvars.iv.next757 = add nuw nsw i64 %indvars.iv756, 1
  %exitcond760.not = icmp eq i64 %indvars.iv.next757, %wide.trip.count759
  br i1 %exitcond760.not, label %.loopexit590, label %scalar.ph1031, !llvm.loop !64

.loopexit590:                                     ; preds = %scalar.ph1031, %middle.block1030, %478, %.lr.ph659
  %500 = icmp sgt i64 %indvars.iv761, 2
  %indvar.next1020 = add i64 %indvar1019, 1
  br i1 %500, label %.lr.ph659, label %.loopexit583, !llvm.loop !65

501:                                              ; preds = %401
  %502 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #5
  %.not547 = icmp eq i32 %502, 0
  br i1 %.not547, label %594, label %503

503:                                              ; preds = %501
  %504 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.5) #5
  %.not554 = icmp eq i32 %504, 0
  br i1 %.not554, label %548, label %505

505:                                              ; preds = %503
  %506 = load i32, ptr %4, align 4, !tbaa !5
  %.not557663 = icmp slt i32 %506, 2
  br i1 %.not557663, label %.loopexit583, label %.lr.ph666.preheader

.lr.ph666.preheader:                              ; preds = %505
  %507 = sext i32 %13 to i64
  %508 = add nuw i32 %506, 1
  %wide.trip.count772 = zext i32 %508 to i64
  %invariant.gep841 = getelementptr double, ptr %15, i64 %507
  %509 = shl nsw i64 %507, 4
  %510 = shl nsw i64 %14, 3
  %511 = add nsw i64 %509, %510
  %512 = shl nsw i64 %507, 3
  %513 = add nsw i64 %507, %14
  %514 = shl nsw i64 %513, 3
  %515 = getelementptr i8, ptr %7, i64 %514
  %scevgep1058 = getelementptr i8, ptr %515, i64 8
  %scevgep1059 = getelementptr i8, ptr %7, i64 %514
  %516 = getelementptr i8, ptr %7, i64 %511
  %517 = getelementptr i8, ptr %516, i64 8
  %518 = getelementptr i8, ptr %7, i64 %511
  br label %.lr.ph666

.lr.ph666:                                        ; preds = %.lr.ph666.preheader, %.loopexit588
  %indvar1053 = phi i64 [ 0, %.lr.ph666.preheader ], [ %indvar.next1054, %.loopexit588 ]
  %indvars.iv769 = phi i64 [ 2, %.lr.ph666.preheader ], [ %indvars.iv.next770, %.loopexit588 ]
  %519 = mul i64 %512, %indvar1053
  %scevgep1055 = getelementptr i8, ptr %517, i64 %519
  %scevgep1056 = getelementptr i8, ptr %518, i64 %519
  %520 = add nsw i64 %indvars.iv769, -1
  %521 = getelementptr inbounds double, ptr %11, i64 %520
  %522 = load double, ptr %521, align 8, !tbaa !9
  %523 = getelementptr inbounds double, ptr %12, i64 %520
  %524 = load double, ptr %523, align 8, !tbaa !9
  %525 = fcmp une double %522, 1.000000e+00
  %526 = fcmp une double %524, 0.000000e+00
  %or.cond17 = select i1 %525, i1 true, i1 %526
  br i1 %or.cond17, label %527, label %.loopexit588

527:                                              ; preds = %.lr.ph666
  %528 = load i32, ptr %3, align 4, !tbaa !5
  %.not558660 = icmp slt i32 %528, 1
  br i1 %.not558660, label %.loopexit588, label %.lr.ph662

.lr.ph662:                                        ; preds = %527
  %529 = mul nsw i64 %indvars.iv769, %507
  %530 = fneg double %524
  %531 = add nuw i32 %528, 1
  %wide.trip.count767 = zext i32 %531 to i64
  %invariant.gep839 = getelementptr double, ptr %15, i64 %529
  %532 = zext nneg i32 %528 to i64
  %min.iters.check1066 = icmp eq i32 %528, 1
  br i1 %min.iters.check1066, label %scalar.ph1065.preheader, label %vector.memcheck1052

vector.memcheck1052:                              ; preds = %.lr.ph662
  %533 = shl nuw nsw i64 %wide.trip.count767, 3
  %scevgep1057 = getelementptr i8, ptr %scevgep1056, i64 %533
  %scevgep1060 = getelementptr i8, ptr %scevgep1059, i64 %533
  %bound01061 = icmp ult ptr %scevgep1055, %scevgep1060
  %bound11062 = icmp ult ptr %scevgep1058, %scevgep1057
  %found.conflict1063 = and i1 %bound01061, %bound11062
  br i1 %found.conflict1063, label %scalar.ph1065.preheader, label %vector.ph1067

vector.ph1067:                                    ; preds = %vector.memcheck1052
  %n.vec1069 = and i64 %532, 2147483646
  %ind.end1070 = or i64 %532, 1
  %broadcast.splatinsert1077 = insertelement <2 x double> poison, double %530, i64 0
  %broadcast.splat1078 = shufflevector <2 x double> %broadcast.splatinsert1077, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert1079 = insertelement <2 x double> poison, double %522, i64 0
  %broadcast.splat1080 = shufflevector <2 x double> %broadcast.splatinsert1079, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert1082 = insertelement <2 x double> poison, double %524, i64 0
  %broadcast.splat1083 = shufflevector <2 x double> %broadcast.splatinsert1082, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1072

vector.body1072:                                  ; preds = %vector.body1072, %vector.ph1067
  %index1073 = phi i64 [ 0, %vector.ph1067 ], [ %index.next1084, %vector.body1072 ]
  %offset.idx1074 = or disjoint i64 %index1073, 1
  %534 = getelementptr double, ptr %invariant.gep839, i64 %offset.idx1074
  %wide.load1075 = load <2 x double>, ptr %534, align 8, !tbaa !9, !alias.scope !66, !noalias !69
  %535 = getelementptr double, ptr %invariant.gep841, i64 %offset.idx1074
  %wide.load1076 = load <2 x double>, ptr %535, align 8, !tbaa !9, !alias.scope !69
  %536 = fmul <2 x double> %wide.load1076, %broadcast.splat1078
  %537 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat1080, <2 x double> %wide.load1075, <2 x double> %536)
  store <2 x double> %537, ptr %534, align 8, !tbaa !9, !alias.scope !66, !noalias !69
  %538 = fmul <2 x double> %broadcast.splat1080, %wide.load1076
  %539 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat1083, <2 x double> %wide.load1075, <2 x double> %538)
  store <2 x double> %539, ptr %535, align 8, !tbaa !9, !alias.scope !69
  %index.next1084 = add nuw i64 %index1073, 2
  %540 = icmp eq i64 %index.next1084, %n.vec1069
  br i1 %540, label %middle.block1064, label %vector.body1072, !llvm.loop !71

middle.block1064:                                 ; preds = %vector.body1072
  %cmp.n1085 = icmp eq i64 %n.vec1069, %532
  br i1 %cmp.n1085, label %.loopexit588, label %scalar.ph1065.preheader

scalar.ph1065.preheader:                          ; preds = %middle.block1064, %vector.memcheck1052, %.lr.ph662
  %indvars.iv764.ph = phi i64 [ 1, %vector.memcheck1052 ], [ 1, %.lr.ph662 ], [ %ind.end1070, %middle.block1064 ]
  br label %scalar.ph1065

scalar.ph1065:                                    ; preds = %scalar.ph1065.preheader, %scalar.ph1065
  %indvars.iv764 = phi i64 [ %indvars.iv.next765, %scalar.ph1065 ], [ %indvars.iv764.ph, %scalar.ph1065.preheader ]
  %gep840 = getelementptr double, ptr %invariant.gep839, i64 %indvars.iv764
  %541 = load double, ptr %gep840, align 8, !tbaa !9
  %gep842 = getelementptr double, ptr %invariant.gep841, i64 %indvars.iv764
  %542 = load double, ptr %gep842, align 8, !tbaa !9
  %543 = fmul double %542, %530
  %544 = tail call double @llvm.fmuladd.f64(double %522, double %541, double %543)
  store double %544, ptr %gep840, align 8, !tbaa !9
  %545 = load double, ptr %gep842, align 8, !tbaa !9
  %546 = fmul double %522, %545
  %547 = tail call double @llvm.fmuladd.f64(double %524, double %541, double %546)
  store double %547, ptr %gep842, align 8, !tbaa !9
  %indvars.iv.next765 = add nuw nsw i64 %indvars.iv764, 1
  %exitcond768.not = icmp eq i64 %indvars.iv.next765, %wide.trip.count767
  br i1 %exitcond768.not, label %.loopexit588, label %scalar.ph1065, !llvm.loop !72

.loopexit588:                                     ; preds = %scalar.ph1065, %middle.block1064, %527, %.lr.ph666
  %indvars.iv.next770 = add nuw nsw i64 %indvars.iv769, 1
  %exitcond773.not = icmp eq i64 %indvars.iv.next770, %wide.trip.count772
  %indvar.next1054 = add i64 %indvar1053, 1
  br i1 %exitcond773.not, label %.loopexit583, label %.lr.ph666, !llvm.loop !73

548:                                              ; preds = %503
  %549 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.4) #5
  %.not555 = icmp eq i32 %549, 0
  br i1 %.not555, label %.loopexit583, label %550

550:                                              ; preds = %548
  %551 = load i32, ptr %4, align 4, !tbaa !5
  %552 = icmp sgt i32 %551, 1
  br i1 %552, label %.lr.ph671.preheader, label %.loopexit583

.lr.ph671.preheader:                              ; preds = %550
  %553 = sext i32 %13 to i64
  %554 = zext nneg i32 %551 to i64
  %invariant.gep845 = getelementptr double, ptr %15, i64 %553
  %555 = mul nsw i64 %553, %554
  %556 = add i64 %555, %14
  %557 = shl i64 %556, 3
  %558 = mul nsw i64 %553, -8
  %559 = add nsw i64 %553, %14
  %560 = shl nsw i64 %559, 3
  %561 = getelementptr i8, ptr %7, i64 %560
  %scevgep1092 = getelementptr i8, ptr %561, i64 8
  %scevgep1093 = getelementptr i8, ptr %7, i64 %560
  %562 = getelementptr i8, ptr %7, i64 %557
  %563 = getelementptr i8, ptr %562, i64 8
  %564 = getelementptr i8, ptr %7, i64 %557
  br label %.lr.ph671

.lr.ph671:                                        ; preds = %.lr.ph671.preheader, %.loopexit586
  %indvar1087 = phi i64 [ 0, %.lr.ph671.preheader ], [ %indvar.next1088, %.loopexit586 ]
  %indvars.iv779 = phi i64 [ %554, %.lr.ph671.preheader ], [ %indvars.iv.next780, %.loopexit586 ]
  %565 = mul i64 %558, %indvar1087
  %scevgep1089 = getelementptr i8, ptr %563, i64 %565
  %scevgep1090 = getelementptr i8, ptr %564, i64 %565
  %indvars.iv.next780 = add nsw i64 %indvars.iv779, -1
  %566 = getelementptr inbounds double, ptr %11, i64 %indvars.iv.next780
  %567 = load double, ptr %566, align 8, !tbaa !9
  %568 = getelementptr inbounds double, ptr %12, i64 %indvars.iv.next780
  %569 = load double, ptr %568, align 8, !tbaa !9
  %570 = fcmp une double %567, 1.000000e+00
  %571 = fcmp une double %569, 0.000000e+00
  %or.cond19 = select i1 %570, i1 true, i1 %571
  br i1 %or.cond19, label %572, label %.loopexit586

572:                                              ; preds = %.lr.ph671
  %573 = load i32, ptr %3, align 4, !tbaa !5
  %.not556667 = icmp slt i32 %573, 1
  br i1 %.not556667, label %.loopexit586, label %.lr.ph669

.lr.ph669:                                        ; preds = %572
  %574 = mul nsw i64 %indvars.iv779, %553
  %575 = fneg double %569
  %576 = add nuw i32 %573, 1
  %wide.trip.count777 = zext i32 %576 to i64
  %invariant.gep843 = getelementptr double, ptr %15, i64 %574
  %577 = zext nneg i32 %573 to i64
  %min.iters.check1100 = icmp eq i32 %573, 1
  br i1 %min.iters.check1100, label %scalar.ph1099.preheader, label %vector.memcheck1086

vector.memcheck1086:                              ; preds = %.lr.ph669
  %578 = shl nuw nsw i64 %wide.trip.count777, 3
  %scevgep1091 = getelementptr i8, ptr %scevgep1090, i64 %578
  %scevgep1094 = getelementptr i8, ptr %scevgep1093, i64 %578
  %bound01095 = icmp ult ptr %scevgep1089, %scevgep1094
  %bound11096 = icmp ult ptr %scevgep1092, %scevgep1091
  %found.conflict1097 = and i1 %bound01095, %bound11096
  br i1 %found.conflict1097, label %scalar.ph1099.preheader, label %vector.ph1101

vector.ph1101:                                    ; preds = %vector.memcheck1086
  %n.vec1103 = and i64 %577, 2147483646
  %ind.end1104 = or i64 %577, 1
  %broadcast.splatinsert1111 = insertelement <2 x double> poison, double %575, i64 0
  %broadcast.splat1112 = shufflevector <2 x double> %broadcast.splatinsert1111, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert1113 = insertelement <2 x double> poison, double %567, i64 0
  %broadcast.splat1114 = shufflevector <2 x double> %broadcast.splatinsert1113, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert1116 = insertelement <2 x double> poison, double %569, i64 0
  %broadcast.splat1117 = shufflevector <2 x double> %broadcast.splatinsert1116, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1106

vector.body1106:                                  ; preds = %vector.body1106, %vector.ph1101
  %index1107 = phi i64 [ 0, %vector.ph1101 ], [ %index.next1118, %vector.body1106 ]
  %offset.idx1108 = or disjoint i64 %index1107, 1
  %579 = getelementptr double, ptr %invariant.gep843, i64 %offset.idx1108
  %wide.load1109 = load <2 x double>, ptr %579, align 8, !tbaa !9, !alias.scope !74, !noalias !77
  %580 = getelementptr double, ptr %invariant.gep845, i64 %offset.idx1108
  %wide.load1110 = load <2 x double>, ptr %580, align 8, !tbaa !9, !alias.scope !77
  %581 = fmul <2 x double> %wide.load1110, %broadcast.splat1112
  %582 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat1114, <2 x double> %wide.load1109, <2 x double> %581)
  store <2 x double> %582, ptr %579, align 8, !tbaa !9, !alias.scope !74, !noalias !77
  %583 = fmul <2 x double> %broadcast.splat1114, %wide.load1110
  %584 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat1117, <2 x double> %wide.load1109, <2 x double> %583)
  store <2 x double> %584, ptr %580, align 8, !tbaa !9, !alias.scope !77
  %index.next1118 = add nuw i64 %index1107, 2
  %585 = icmp eq i64 %index.next1118, %n.vec1103
  br i1 %585, label %middle.block1098, label %vector.body1106, !llvm.loop !79

middle.block1098:                                 ; preds = %vector.body1106
  %cmp.n1119 = icmp eq i64 %n.vec1103, %577
  br i1 %cmp.n1119, label %.loopexit586, label %scalar.ph1099.preheader

scalar.ph1099.preheader:                          ; preds = %middle.block1098, %vector.memcheck1086, %.lr.ph669
  %indvars.iv774.ph = phi i64 [ 1, %vector.memcheck1086 ], [ 1, %.lr.ph669 ], [ %ind.end1104, %middle.block1098 ]
  br label %scalar.ph1099

scalar.ph1099:                                    ; preds = %scalar.ph1099.preheader, %scalar.ph1099
  %indvars.iv774 = phi i64 [ %indvars.iv.next775, %scalar.ph1099 ], [ %indvars.iv774.ph, %scalar.ph1099.preheader ]
  %gep844 = getelementptr double, ptr %invariant.gep843, i64 %indvars.iv774
  %586 = load double, ptr %gep844, align 8, !tbaa !9
  %gep846 = getelementptr double, ptr %invariant.gep845, i64 %indvars.iv774
  %587 = load double, ptr %gep846, align 8, !tbaa !9
  %588 = fmul double %587, %575
  %589 = tail call double @llvm.fmuladd.f64(double %567, double %586, double %588)
  store double %589, ptr %gep844, align 8, !tbaa !9
  %590 = load double, ptr %gep846, align 8, !tbaa !9
  %591 = fmul double %567, %590
  %592 = tail call double @llvm.fmuladd.f64(double %569, double %586, double %591)
  store double %592, ptr %gep846, align 8, !tbaa !9
  %indvars.iv.next775 = add nuw nsw i64 %indvars.iv774, 1
  %exitcond778.not = icmp eq i64 %indvars.iv.next775, %wide.trip.count777
  br i1 %exitcond778.not, label %.loopexit586, label %scalar.ph1099, !llvm.loop !80

.loopexit586:                                     ; preds = %scalar.ph1099, %middle.block1098, %572, %.lr.ph671
  %593 = icmp sgt i64 %indvars.iv779, 2
  %indvar.next1088 = add i64 %indvar1087, 1
  br i1 %593, label %.lr.ph671, label %.loopexit583, !llvm.loop !81

594:                                              ; preds = %501
  %595 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #5
  %.not548 = icmp eq i32 %595, 0
  br i1 %.not548, label %.loopexit583, label %596

596:                                              ; preds = %594
  %597 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.5) #5
  %.not549 = icmp eq i32 %597, 0
  br i1 %.not549, label %641, label %598

598:                                              ; preds = %596
  %599 = load i32, ptr %4, align 4, !tbaa !5
  %.not552.not675 = icmp sgt i32 %599, 1
  br i1 %.not552.not675, label %.lr.ph678, label %.loopexit583

.lr.ph678:                                        ; preds = %598
  %600 = mul i32 %599, %13
  %601 = sext i32 %600 to i64
  %602 = sext i32 %13 to i64
  %wide.trip.count790 = zext nneg i32 %599 to i64
  %invariant.gep849 = getelementptr double, ptr %15, i64 %601
  %603 = add nsw i64 %602, %14
  %604 = shl nsw i64 %603, 3
  %605 = shl nsw i64 %602, 3
  %606 = add nsw i64 %601, %14
  %607 = shl nsw i64 %606, 3
  %608 = getelementptr i8, ptr %7, i64 %607
  %scevgep1126 = getelementptr i8, ptr %608, i64 8
  %scevgep1127 = getelementptr i8, ptr %7, i64 %607
  %609 = getelementptr i8, ptr %7, i64 %604
  %610 = getelementptr i8, ptr %609, i64 8
  %611 = getelementptr i8, ptr %7, i64 %604
  br label %612

612:                                              ; preds = %.lr.ph678, %.loopexit584
  %indvar1121 = phi i64 [ 0, %.lr.ph678 ], [ %indvar.next1122, %.loopexit584 ]
  %indvars.iv787 = phi i64 [ 1, %.lr.ph678 ], [ %indvars.iv.next788, %.loopexit584 ]
  %613 = mul i64 %605, %indvar1121
  %scevgep1123 = getelementptr i8, ptr %610, i64 %613
  %scevgep1124 = getelementptr i8, ptr %611, i64 %613
  %614 = getelementptr inbounds double, ptr %11, i64 %indvars.iv787
  %615 = load double, ptr %614, align 8, !tbaa !9
  %616 = getelementptr inbounds double, ptr %12, i64 %indvars.iv787
  %617 = load double, ptr %616, align 8, !tbaa !9
  %618 = fcmp une double %615, 1.000000e+00
  %619 = fcmp une double %617, 0.000000e+00
  %or.cond21 = select i1 %618, i1 true, i1 %619
  br i1 %or.cond21, label %620, label %.loopexit584

620:                                              ; preds = %612
  %621 = load i32, ptr %3, align 4, !tbaa !5
  %.not553672 = icmp slt i32 %621, 1
  br i1 %.not553672, label %.loopexit584, label %.lr.ph674

.lr.ph674:                                        ; preds = %620
  %622 = mul nsw i64 %indvars.iv787, %602
  %623 = fneg double %617
  %624 = add nuw i32 %621, 1
  %wide.trip.count785 = zext i32 %624 to i64
  %invariant.gep847 = getelementptr double, ptr %15, i64 %622
  %625 = zext nneg i32 %621 to i64
  %min.iters.check1134 = icmp eq i32 %621, 1
  br i1 %min.iters.check1134, label %scalar.ph1133.preheader, label %vector.memcheck1120

vector.memcheck1120:                              ; preds = %.lr.ph674
  %626 = shl nuw nsw i64 %wide.trip.count785, 3
  %scevgep1125 = getelementptr i8, ptr %scevgep1124, i64 %626
  %scevgep1128 = getelementptr i8, ptr %scevgep1127, i64 %626
  %bound01129 = icmp ult ptr %scevgep1123, %scevgep1128
  %bound11130 = icmp ult ptr %scevgep1126, %scevgep1125
  %found.conflict1131 = and i1 %bound01129, %bound11130
  br i1 %found.conflict1131, label %scalar.ph1133.preheader, label %vector.ph1135

vector.ph1135:                                    ; preds = %vector.memcheck1120
  %n.vec1137 = and i64 %625, 2147483646
  %ind.end1138 = or i64 %625, 1
  %broadcast.splatinsert1145 = insertelement <2 x double> poison, double %615, i64 0
  %broadcast.splat1146 = shufflevector <2 x double> %broadcast.splatinsert1145, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert1147 = insertelement <2 x double> poison, double %617, i64 0
  %broadcast.splat1148 = shufflevector <2 x double> %broadcast.splatinsert1147, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert1150 = insertelement <2 x double> poison, double %623, i64 0
  %broadcast.splat1151 = shufflevector <2 x double> %broadcast.splatinsert1150, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1140

vector.body1140:                                  ; preds = %vector.body1140, %vector.ph1135
  %index1141 = phi i64 [ 0, %vector.ph1135 ], [ %index.next1152, %vector.body1140 ]
  %offset.idx1142 = or disjoint i64 %index1141, 1
  %627 = getelementptr double, ptr %invariant.gep847, i64 %offset.idx1142
  %wide.load1143 = load <2 x double>, ptr %627, align 8, !tbaa !9, !alias.scope !82, !noalias !85
  %628 = getelementptr double, ptr %invariant.gep849, i64 %offset.idx1142
  %wide.load1144 = load <2 x double>, ptr %628, align 8, !tbaa !9, !alias.scope !85
  %629 = fmul <2 x double> %broadcast.splat1146, %wide.load1143
  %630 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat1148, <2 x double> %wide.load1144, <2 x double> %629)
  store <2 x double> %630, ptr %627, align 8, !tbaa !9, !alias.scope !82, !noalias !85
  %631 = fmul <2 x double> %wide.load1143, %broadcast.splat1151
  %632 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat1146, <2 x double> %wide.load1144, <2 x double> %631)
  store <2 x double> %632, ptr %628, align 8, !tbaa !9, !alias.scope !85
  %index.next1152 = add nuw i64 %index1141, 2
  %633 = icmp eq i64 %index.next1152, %n.vec1137
  br i1 %633, label %middle.block1132, label %vector.body1140, !llvm.loop !87

middle.block1132:                                 ; preds = %vector.body1140
  %cmp.n1153 = icmp eq i64 %n.vec1137, %625
  br i1 %cmp.n1153, label %.loopexit584, label %scalar.ph1133.preheader

scalar.ph1133.preheader:                          ; preds = %middle.block1132, %vector.memcheck1120, %.lr.ph674
  %indvars.iv782.ph = phi i64 [ 1, %vector.memcheck1120 ], [ 1, %.lr.ph674 ], [ %ind.end1138, %middle.block1132 ]
  br label %scalar.ph1133

scalar.ph1133:                                    ; preds = %scalar.ph1133.preheader, %scalar.ph1133
  %indvars.iv782 = phi i64 [ %indvars.iv.next783, %scalar.ph1133 ], [ %indvars.iv782.ph, %scalar.ph1133.preheader ]
  %gep848 = getelementptr double, ptr %invariant.gep847, i64 %indvars.iv782
  %634 = load double, ptr %gep848, align 8, !tbaa !9
  %gep850 = getelementptr double, ptr %invariant.gep849, i64 %indvars.iv782
  %635 = load double, ptr %gep850, align 8, !tbaa !9
  %636 = fmul double %615, %634
  %637 = tail call double @llvm.fmuladd.f64(double %617, double %635, double %636)
  store double %637, ptr %gep848, align 8, !tbaa !9
  %638 = load double, ptr %gep850, align 8, !tbaa !9
  %639 = fmul double %634, %623
  %640 = tail call double @llvm.fmuladd.f64(double %615, double %638, double %639)
  store double %640, ptr %gep850, align 8, !tbaa !9
  %indvars.iv.next783 = add nuw nsw i64 %indvars.iv782, 1
  %exitcond786.not = icmp eq i64 %indvars.iv.next783, %wide.trip.count785
  br i1 %exitcond786.not, label %.loopexit584, label %scalar.ph1133, !llvm.loop !88

.loopexit584:                                     ; preds = %scalar.ph1133, %middle.block1132, %620, %612
  %indvars.iv.next788 = add nuw nsw i64 %indvars.iv787, 1
  %exitcond791.not = icmp eq i64 %indvars.iv.next788, %wide.trip.count790
  %indvar.next1122 = add i64 %indvar1121, 1
  br i1 %exitcond791.not, label %.loopexit583, label %612, !llvm.loop !89

641:                                              ; preds = %596
  %642 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.4) #5
  %.not550 = icmp eq i32 %642, 0
  br i1 %.not550, label %.loopexit583, label %643

643:                                              ; preds = %641
  %644 = load i32, ptr %4, align 4, !tbaa !5
  %645 = icmp sgt i32 %644, 1
  br i1 %645, label %.lr.ph684, label %.loopexit583

.lr.ph684:                                        ; preds = %643
  %646 = mul i32 %644, %13
  %647 = sext i32 %646 to i64
  %648 = zext nneg i32 %644 to i64
  %649 = sext i32 %13 to i64
  %invariant.gep853 = getelementptr double, ptr %15, i64 %647
  %650 = add nuw nsw i64 %648, 2305843009213693951
  %651 = mul i64 %650, %649
  %652 = add i64 %651, %14
  %653 = shl i64 %652, 3
  %654 = mul nsw i64 %649, -8
  %655 = add nsw i64 %647, %14
  %656 = shl nsw i64 %655, 3
  %657 = getelementptr i8, ptr %7, i64 %656
  %scevgep1160 = getelementptr i8, ptr %657, i64 8
  %scevgep1161 = getelementptr i8, ptr %7, i64 %656
  %658 = getelementptr i8, ptr %7, i64 %653
  %659 = getelementptr i8, ptr %658, i64 8
  %660 = getelementptr i8, ptr %7, i64 %653
  br label %661

661:                                              ; preds = %.lr.ph684, %.loopexit
  %indvar1155 = phi i64 [ 0, %.lr.ph684 ], [ %indvar.next1156, %.loopexit ]
  %indvars.iv797 = phi i64 [ %648, %.lr.ph684 ], [ %indvars.iv.next798, %.loopexit ]
  %662 = mul i64 %654, %indvar1155
  %scevgep1157 = getelementptr i8, ptr %659, i64 %662
  %scevgep1158 = getelementptr i8, ptr %660, i64 %662
  %indvars.iv.next798 = add nsw i64 %indvars.iv797, -1
  %663 = getelementptr inbounds double, ptr %11, i64 %indvars.iv.next798
  %664 = load double, ptr %663, align 8, !tbaa !9
  %665 = getelementptr inbounds double, ptr %12, i64 %indvars.iv.next798
  %666 = load double, ptr %665, align 8, !tbaa !9
  %667 = fcmp une double %664, 1.000000e+00
  %668 = fcmp une double %666, 0.000000e+00
  %or.cond23 = select i1 %667, i1 true, i1 %668
  br i1 %or.cond23, label %669, label %.loopexit

669:                                              ; preds = %661
  %670 = load i32, ptr %3, align 4, !tbaa !5
  %.not551679 = icmp slt i32 %670, 1
  br i1 %.not551679, label %.loopexit, label %.lr.ph681

.lr.ph681:                                        ; preds = %669
  %671 = mul nsw i64 %indvars.iv.next798, %649
  %672 = fneg double %666
  %673 = add nuw i32 %670, 1
  %wide.trip.count795 = zext i32 %673 to i64
  %invariant.gep851 = getelementptr double, ptr %15, i64 %671
  %674 = zext nneg i32 %670 to i64
  %min.iters.check1168 = icmp eq i32 %670, 1
  br i1 %min.iters.check1168, label %scalar.ph1167.preheader, label %vector.memcheck1154

vector.memcheck1154:                              ; preds = %.lr.ph681
  %675 = shl nuw nsw i64 %wide.trip.count795, 3
  %scevgep1159 = getelementptr i8, ptr %scevgep1158, i64 %675
  %scevgep1162 = getelementptr i8, ptr %scevgep1161, i64 %675
  %bound01163 = icmp ult ptr %scevgep1157, %scevgep1162
  %bound11164 = icmp ult ptr %scevgep1160, %scevgep1159
  %found.conflict1165 = and i1 %bound01163, %bound11164
  br i1 %found.conflict1165, label %scalar.ph1167.preheader, label %vector.ph1169

vector.ph1169:                                    ; preds = %vector.memcheck1154
  %n.vec1171 = and i64 %674, 2147483646
  %ind.end1172 = or i64 %674, 1
  %broadcast.splatinsert1179 = insertelement <2 x double> poison, double %664, i64 0
  %broadcast.splat1180 = shufflevector <2 x double> %broadcast.splatinsert1179, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert1181 = insertelement <2 x double> poison, double %666, i64 0
  %broadcast.splat1182 = shufflevector <2 x double> %broadcast.splatinsert1181, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert1184 = insertelement <2 x double> poison, double %672, i64 0
  %broadcast.splat1185 = shufflevector <2 x double> %broadcast.splatinsert1184, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1174

vector.body1174:                                  ; preds = %vector.body1174, %vector.ph1169
  %index1175 = phi i64 [ 0, %vector.ph1169 ], [ %index.next1186, %vector.body1174 ]
  %offset.idx1176 = or disjoint i64 %index1175, 1
  %676 = getelementptr double, ptr %invariant.gep851, i64 %offset.idx1176
  %wide.load1177 = load <2 x double>, ptr %676, align 8, !tbaa !9, !alias.scope !90, !noalias !93
  %677 = getelementptr double, ptr %invariant.gep853, i64 %offset.idx1176
  %wide.load1178 = load <2 x double>, ptr %677, align 8, !tbaa !9, !alias.scope !93
  %678 = fmul <2 x double> %broadcast.splat1180, %wide.load1177
  %679 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat1182, <2 x double> %wide.load1178, <2 x double> %678)
  store <2 x double> %679, ptr %676, align 8, !tbaa !9, !alias.scope !90, !noalias !93
  %680 = fmul <2 x double> %wide.load1177, %broadcast.splat1185
  %681 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat1180, <2 x double> %wide.load1178, <2 x double> %680)
  store <2 x double> %681, ptr %677, align 8, !tbaa !9, !alias.scope !93
  %index.next1186 = add nuw i64 %index1175, 2
  %682 = icmp eq i64 %index.next1186, %n.vec1171
  br i1 %682, label %middle.block1166, label %vector.body1174, !llvm.loop !95

middle.block1166:                                 ; preds = %vector.body1174
  %cmp.n1187 = icmp eq i64 %n.vec1171, %674
  br i1 %cmp.n1187, label %.loopexit, label %scalar.ph1167.preheader

scalar.ph1167.preheader:                          ; preds = %middle.block1166, %vector.memcheck1154, %.lr.ph681
  %indvars.iv792.ph = phi i64 [ 1, %vector.memcheck1154 ], [ 1, %.lr.ph681 ], [ %ind.end1172, %middle.block1166 ]
  br label %scalar.ph1167

scalar.ph1167:                                    ; preds = %scalar.ph1167.preheader, %scalar.ph1167
  %indvars.iv792 = phi i64 [ %indvars.iv.next793, %scalar.ph1167 ], [ %indvars.iv792.ph, %scalar.ph1167.preheader ]
  %gep852 = getelementptr double, ptr %invariant.gep851, i64 %indvars.iv792
  %683 = load double, ptr %gep852, align 8, !tbaa !9
  %gep854 = getelementptr double, ptr %invariant.gep853, i64 %indvars.iv792
  %684 = load double, ptr %gep854, align 8, !tbaa !9
  %685 = fmul double %664, %683
  %686 = tail call double @llvm.fmuladd.f64(double %666, double %684, double %685)
  store double %686, ptr %gep852, align 8, !tbaa !9
  %687 = load double, ptr %gep854, align 8, !tbaa !9
  %688 = fmul double %683, %672
  %689 = tail call double @llvm.fmuladd.f64(double %664, double %687, double %688)
  store double %689, ptr %gep854, align 8, !tbaa !9
  %indvars.iv.next793 = add nuw nsw i64 %indvars.iv792, 1
  %exitcond796.not = icmp eq i64 %indvars.iv.next793, %wide.trip.count795
  br i1 %exitcond796.not, label %.loopexit, label %scalar.ph1167, !llvm.loop !96

.loopexit:                                        ; preds = %scalar.ph1167, %middle.block1166, %669, %661
  %690 = icmp sgt i64 %indvars.iv797, 2
  %indvar.next1156 = add i64 %indvar1155, 1
  br i1 %690, label %661, label %.loopexit583, !llvm.loop !97

.loopexit583:                                     ; preds = %.loopexit604, %.loopexit602, %.loopexit600, %.loopexit598, %.loopexit596, %.loopexit594, %.loopexit592, %.loopexit590, %.loopexit588, %.loopexit586, %.loopexit584, %.loopexit, %54, %147, %242, %278, %322, %359, %405, %452, %505, %550, %598, %643, %276, %357, %318, %145, %450, %594, %641, %548, %399, %45, %.thread
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #5
  ret void
}

; 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 @xerbla_(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #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 nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.umax.i32(i32, i32) #4

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x double> @llvm.fmuladd.v2f64(<2 x double>, <2 x double>, <2 x double>) #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 nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = !{!17}
!17 = distinct !{!17, !18}
!18 = distinct !{!18, !"LVerDomain"}
!19 = !{!20}
!20 = distinct !{!20, !18}
!21 = distinct !{!21, !12, !22, !23}
!22 = !{!"llvm.loop.isvectorized", i32 1}
!23 = !{!"llvm.loop.unroll.runtime.disable"}
!24 = distinct !{!24, !12, !22}
!25 = distinct !{!25, !12}
!26 = !{!27}
!27 = distinct !{!27, !28}
!28 = distinct !{!28, !"LVerDomain"}
!29 = !{!30}
!30 = distinct !{!30, !28}
!31 = distinct !{!31, !12, !22, !23}
!32 = distinct !{!32, !12, !22}
!33 = distinct !{!33, !12}
!34 = !{!35}
!35 = distinct !{!35, !36}
!36 = distinct !{!36, !"LVerDomain"}
!37 = !{!38}
!38 = distinct !{!38, !36}
!39 = distinct !{!39, !12, !22, !23}
!40 = distinct !{!40, !12, !22}
!41 = distinct !{!41, !12}
!42 = !{!43}
!43 = distinct !{!43, !44}
!44 = distinct !{!44, !"LVerDomain"}
!45 = !{!46}
!46 = distinct !{!46, !44}
!47 = distinct !{!47, !12, !22, !23}
!48 = distinct !{!48, !12, !22}
!49 = distinct !{!49, !12}
!50 = !{!51}
!51 = distinct !{!51, !52}
!52 = distinct !{!52, !"LVerDomain"}
!53 = !{!54}
!54 = distinct !{!54, !52}
!55 = distinct !{!55, !12, !22, !23}
!56 = distinct !{!56, !12, !22}
!57 = distinct !{!57, !12}
!58 = !{!59}
!59 = distinct !{!59, !60}
!60 = distinct !{!60, !"LVerDomain"}
!61 = !{!62}
!62 = distinct !{!62, !60}
!63 = distinct !{!63, !12, !22, !23}
!64 = distinct !{!64, !12, !22}
!65 = distinct !{!65, !12}
!66 = !{!67}
!67 = distinct !{!67, !68}
!68 = distinct !{!68, !"LVerDomain"}
!69 = !{!70}
!70 = distinct !{!70, !68}
!71 = distinct !{!71, !12, !22, !23}
!72 = distinct !{!72, !12, !22}
!73 = distinct !{!73, !12}
!74 = !{!75}
!75 = distinct !{!75, !76}
!76 = distinct !{!76, !"LVerDomain"}
!77 = !{!78}
!78 = distinct !{!78, !76}
!79 = distinct !{!79, !12, !22, !23}
!80 = distinct !{!80, !12, !22}
!81 = distinct !{!81, !12}
!82 = !{!83}
!83 = distinct !{!83, !84}
!84 = distinct !{!84, !"LVerDomain"}
!85 = !{!86}
!86 = distinct !{!86, !84}
!87 = distinct !{!87, !12, !22, !23}
!88 = distinct !{!88, !12, !22}
!89 = distinct !{!89, !12}
!90 = !{!91}
!91 = distinct !{!91, !92}
!92 = distinct !{!92, !"LVerDomain"}
!93 = !{!94}
!94 = distinct !{!94, !92}
!95 = distinct !{!95, !12, !22, !23}
!96 = distinct !{!96, !12, !22}
!97 = distinct !{!97, !12}


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