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

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

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

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

49:                                               ; preds = %8
  store double 0.000000e+00, ptr %30, align 8, !tbaa !11
  br label %1179

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

54:                                               ; preds = %50
  %55 = load ptr, ptr %11, align 8, !tbaa !5
  %56 = call i32 @lsame_(ptr noundef %55, ptr noundef @.str.1)
  %57 = icmp ne i32 %56, 0
  br i1 %57, label %58, label %190

58:                                               ; preds = %54
  store double 1.000000e+00, ptr %30, align 8, !tbaa !11
  %59 = load ptr, ptr %10, align 8, !tbaa !5
  %60 = call i32 @lsame_(ptr noundef %59, ptr noundef @.str.1)
  %61 = icmp ne i32 %60, 0
  br i1 %61, label %62, label %124

62:                                               ; preds = %58
  %63 = load ptr, ptr %12, align 8, !tbaa !5
  %64 = load i32, ptr %63, align 4, !tbaa !9
  store i32 %64, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %27, align 4, !tbaa !9
  br label %65

65:                                               ; preds = %120, %62
  %66 = load i32, ptr %27, align 4, !tbaa !9
  %67 = load i32, ptr %19, align 4, !tbaa !9
  %68 = icmp sle i32 %66, %67
  br i1 %68, label %69, label %123

69:                                               ; preds = %65
  %70 = load ptr, ptr %13, align 8, !tbaa !5
  %71 = load i32, ptr %70, align 4, !tbaa !9
  %72 = add nsw i32 %71, 2
  %73 = load i32, ptr %27, align 4, !tbaa !9
  %74 = sub nsw i32 %72, %73
  store i32 %74, ptr %20, align 4, !tbaa !9
  %75 = load ptr, ptr %13, align 8, !tbaa !5
  %76 = load i32, ptr %75, align 4, !tbaa !9
  store i32 %76, ptr %21, align 4, !tbaa !9
  %77 = load i32, ptr %20, align 4, !tbaa !9
  %78 = icmp sge i32 %77, 1
  br i1 %78, label %79, label %81

79:                                               ; preds = %69
  %80 = load i32, ptr %20, align 4, !tbaa !9
  br label %82

81:                                               ; preds = %69
  br label %82

82:                                               ; preds = %81, %79
  %83 = phi i32 [ %80, %79 ], [ 1, %81 ]
  store i32 %83, ptr %26, align 4, !tbaa !9
  br label %84

84:                                               ; preds = %116, %82
  %85 = load i32, ptr %26, align 4, !tbaa !9
  %86 = load i32, ptr %21, align 4, !tbaa !9
  %87 = icmp sle i32 %85, %86
  br i1 %87, label %88, label %119

88:                                               ; preds = %84
  %89 = load ptr, ptr %14, align 8, !tbaa !5
  %90 = load i32, ptr %26, align 4, !tbaa !9
  %91 = load i32, ptr %27, align 4, !tbaa !9
  %92 = load i32, ptr %17, align 4, !tbaa !9
  %93 = mul nsw i32 %91, %92
  %94 = add nsw i32 %90, %93
  %95 = sext i32 %94 to i64
  %96 = getelementptr inbounds double, ptr %89, i64 %95
  %97 = load double, ptr %96, align 8, !tbaa !11
  store double %97, ptr %25, align 8, !tbaa !11
  %98 = load double, ptr %25, align 8, !tbaa !11
  %99 = fcmp oge double %98, 0.000000e+00
  br i1 %99, label %100, label %102

100:                                              ; preds = %88
  %101 = load double, ptr %25, align 8, !tbaa !11
  br label %105

102:                                              ; preds = %88
  %103 = load double, ptr %25, align 8, !tbaa !11
  %104 = fneg double %103
  br label %105

105:                                              ; preds = %102, %100
  %106 = phi double [ %101, %100 ], [ %104, %102 ]
  store double %106, ptr %32, align 8, !tbaa !11
  %107 = load double, ptr %30, align 8, !tbaa !11
  %108 = load double, ptr %32, align 8, !tbaa !11
  %109 = fcmp olt double %107, %108
  br i1 %109, label %113, label %110

110:                                              ; preds = %105
  %111 = call i32 @disnan_(ptr noundef %32)
  %112 = icmp ne i32 %111, 0
  br i1 %112, label %113, label %115

113:                                              ; preds = %110, %105
  %114 = load double, ptr %32, align 8, !tbaa !11
  store double %114, ptr %30, align 8, !tbaa !11
  br label %115

115:                                              ; preds = %113, %110
  br label %116

116:                                              ; preds = %115
  %117 = load i32, ptr %26, align 4, !tbaa !9
  %118 = add nsw i32 %117, 1
  store i32 %118, ptr %26, align 4, !tbaa !9
  br label %84, !llvm.loop !13

119:                                              ; preds = %84
  br label %120

120:                                              ; preds = %119
  %121 = load i32, ptr %27, align 4, !tbaa !9
  %122 = add nsw i32 %121, 1
  store i32 %122, ptr %27, align 4, !tbaa !9
  br label %65, !llvm.loop !15

123:                                              ; preds = %65
  br label %189

124:                                              ; preds = %58
  %125 = load ptr, ptr %12, align 8, !tbaa !5
  %126 = load i32, ptr %125, align 4, !tbaa !9
  store i32 %126, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %27, align 4, !tbaa !9
  br label %127

127:                                              ; preds = %185, %124
  %128 = load i32, ptr %27, align 4, !tbaa !9
  %129 = load i32, ptr %19, align 4, !tbaa !9
  %130 = icmp sle i32 %128, %129
  br i1 %130, label %131, label %188

131:                                              ; preds = %127
  %132 = load ptr, ptr %12, align 8, !tbaa !5
  %133 = load i32, ptr %132, align 4, !tbaa !9
  %134 = add nsw i32 %133, 1
  %135 = load i32, ptr %27, align 4, !tbaa !9
  %136 = sub nsw i32 %134, %135
  store i32 %136, ptr %20, align 4, !tbaa !9
  %137 = load ptr, ptr %13, align 8, !tbaa !5
  %138 = load i32, ptr %137, align 4, !tbaa !9
  %139 = add nsw i32 %138, 1
  store i32 %139, ptr %22, align 4, !tbaa !9
  %140 = load i32, ptr %20, align 4, !tbaa !9
  %141 = load i32, ptr %22, align 4, !tbaa !9
  %142 = icmp sle i32 %140, %141
  br i1 %142, label %143, label %145

143:                                              ; preds = %131
  %144 = load i32, ptr %20, align 4, !tbaa !9
  br label %147

145:                                              ; preds = %131
  %146 = load i32, ptr %22, align 4, !tbaa !9
  br label %147

147:                                              ; preds = %145, %143
  %148 = phi i32 [ %144, %143 ], [ %146, %145 ]
  store i32 %148, ptr %21, align 4, !tbaa !9
  store i32 2, ptr %26, align 4, !tbaa !9
  br label %149

149:                                              ; preds = %181, %147
  %150 = load i32, ptr %26, align 4, !tbaa !9
  %151 = load i32, ptr %21, align 4, !tbaa !9
  %152 = icmp sle i32 %150, %151
  br i1 %152, label %153, label %184

153:                                              ; preds = %149
  %154 = load ptr, ptr %14, align 8, !tbaa !5
  %155 = load i32, ptr %26, align 4, !tbaa !9
  %156 = load i32, ptr %27, align 4, !tbaa !9
  %157 = load i32, ptr %17, align 4, !tbaa !9
  %158 = mul nsw i32 %156, %157
  %159 = add nsw i32 %155, %158
  %160 = sext i32 %159 to i64
  %161 = getelementptr inbounds double, ptr %154, i64 %160
  %162 = load double, ptr %161, align 8, !tbaa !11
  store double %162, ptr %25, align 8, !tbaa !11
  %163 = load double, ptr %25, align 8, !tbaa !11
  %164 = fcmp oge double %163, 0.000000e+00
  br i1 %164, label %165, label %167

165:                                              ; preds = %153
  %166 = load double, ptr %25, align 8, !tbaa !11
  br label %170

167:                                              ; preds = %153
  %168 = load double, ptr %25, align 8, !tbaa !11
  %169 = fneg double %168
  br label %170

170:                                              ; preds = %167, %165
  %171 = phi double [ %166, %165 ], [ %169, %167 ]
  store double %171, ptr %32, align 8, !tbaa !11
  %172 = load double, ptr %30, align 8, !tbaa !11
  %173 = load double, ptr %32, align 8, !tbaa !11
  %174 = fcmp olt double %172, %173
  br i1 %174, label %178, label %175

175:                                              ; preds = %170
  %176 = call i32 @disnan_(ptr noundef %32)
  %177 = icmp ne i32 %176, 0
  br i1 %177, label %178, label %180

178:                                              ; preds = %175, %170
  %179 = load double, ptr %32, align 8, !tbaa !11
  store double %179, ptr %30, align 8, !tbaa !11
  br label %180

180:                                              ; preds = %178, %175
  br label %181

181:                                              ; preds = %180
  %182 = load i32, ptr %26, align 4, !tbaa !9
  %183 = add nsw i32 %182, 1
  store i32 %183, ptr %26, align 4, !tbaa !9
  br label %149, !llvm.loop !16

184:                                              ; preds = %149
  br label %185

185:                                              ; preds = %184
  %186 = load i32, ptr %27, align 4, !tbaa !9
  %187 = add nsw i32 %186, 1
  store i32 %187, ptr %27, align 4, !tbaa !9
  br label %127, !llvm.loop !17

188:                                              ; preds = %127
  br label %189

189:                                              ; preds = %188, %123
  br label %323

190:                                              ; preds = %54
  store double 0.000000e+00, ptr %30, align 8, !tbaa !11
  %191 = load ptr, ptr %10, align 8, !tbaa !5
  %192 = call i32 @lsame_(ptr noundef %191, ptr noundef @.str.1)
  %193 = icmp ne i32 %192, 0
  br i1 %193, label %194, label %257

194:                                              ; preds = %190
  %195 = load ptr, ptr %12, align 8, !tbaa !5
  %196 = load i32, ptr %195, align 4, !tbaa !9
  store i32 %196, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %27, align 4, !tbaa !9
  br label %197

197:                                              ; preds = %253, %194
  %198 = load i32, ptr %27, align 4, !tbaa !9
  %199 = load i32, ptr %19, align 4, !tbaa !9
  %200 = icmp sle i32 %198, %199
  br i1 %200, label %201, label %256

201:                                              ; preds = %197
  %202 = load ptr, ptr %13, align 8, !tbaa !5
  %203 = load i32, ptr %202, align 4, !tbaa !9
  %204 = add nsw i32 %203, 2
  %205 = load i32, ptr %27, align 4, !tbaa !9
  %206 = sub nsw i32 %204, %205
  store i32 %206, ptr %21, align 4, !tbaa !9
  %207 = load ptr, ptr %13, align 8, !tbaa !5
  %208 = load i32, ptr %207, align 4, !tbaa !9
  %209 = add nsw i32 %208, 1
  store i32 %209, ptr %20, align 4, !tbaa !9
  %210 = load i32, ptr %21, align 4, !tbaa !9
  %211 = icmp sge i32 %210, 1
  br i1 %211, label %212, label %214

212:                                              ; preds = %201
  %213 = load i32, ptr %21, align 4, !tbaa !9
  br label %215

214:                                              ; preds = %201
  br label %215

215:                                              ; preds = %214, %212
  %216 = phi i32 [ %213, %212 ], [ 1, %214 ]
  store i32 %216, ptr %26, align 4, !tbaa !9
  br label %217

217:                                              ; preds = %249, %215
  %218 = load i32, ptr %26, align 4, !tbaa !9
  %219 = load i32, ptr %20, align 4, !tbaa !9
  %220 = icmp sle i32 %218, %219
  br i1 %220, label %221, label %252

221:                                              ; preds = %217
  %222 = load ptr, ptr %14, align 8, !tbaa !5
  %223 = load i32, ptr %26, align 4, !tbaa !9
  %224 = load i32, ptr %27, align 4, !tbaa !9
  %225 = load i32, ptr %17, align 4, !tbaa !9
  %226 = mul nsw i32 %224, %225
  %227 = add nsw i32 %223, %226
  %228 = sext i32 %227 to i64
  %229 = getelementptr inbounds double, ptr %222, i64 %228
  %230 = load double, ptr %229, align 8, !tbaa !11
  store double %230, ptr %25, align 8, !tbaa !11
  %231 = load double, ptr %25, align 8, !tbaa !11
  %232 = fcmp oge double %231, 0.000000e+00
  br i1 %232, label %233, label %235

233:                                              ; preds = %221
  %234 = load double, ptr %25, align 8, !tbaa !11
  br label %238

235:                                              ; preds = %221
  %236 = load double, ptr %25, align 8, !tbaa !11
  %237 = fneg double %236
  br label %238

238:                                              ; preds = %235, %233
  %239 = phi double [ %234, %233 ], [ %237, %235 ]
  store double %239, ptr %32, align 8, !tbaa !11
  %240 = load double, ptr %30, align 8, !tbaa !11
  %241 = load double, ptr %32, align 8, !tbaa !11
  %242 = fcmp olt double %240, %241
  br i1 %242, label %246, label %243

243:                                              ; preds = %238
  %244 = call i32 @disnan_(ptr noundef %32)
  %245 = icmp ne i32 %244, 0
  br i1 %245, label %246, label %248

246:                                              ; preds = %243, %238
  %247 = load double, ptr %32, align 8, !tbaa !11
  store double %247, ptr %30, align 8, !tbaa !11
  br label %248

248:                                              ; preds = %246, %243
  br label %249

249:                                              ; preds = %248
  %250 = load i32, ptr %26, align 4, !tbaa !9
  %251 = add nsw i32 %250, 1
  store i32 %251, ptr %26, align 4, !tbaa !9
  br label %217, !llvm.loop !18

252:                                              ; preds = %217
  br label %253

253:                                              ; preds = %252
  %254 = load i32, ptr %27, align 4, !tbaa !9
  %255 = add nsw i32 %254, 1
  store i32 %255, ptr %27, align 4, !tbaa !9
  br label %197, !llvm.loop !19

256:                                              ; preds = %197
  br label %322

257:                                              ; preds = %190
  %258 = load ptr, ptr %12, align 8, !tbaa !5
  %259 = load i32, ptr %258, align 4, !tbaa !9
  store i32 %259, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %27, align 4, !tbaa !9
  br label %260

260:                                              ; preds = %318, %257
  %261 = load i32, ptr %27, align 4, !tbaa !9
  %262 = load i32, ptr %19, align 4, !tbaa !9
  %263 = icmp sle i32 %261, %262
  br i1 %263, label %264, label %321

264:                                              ; preds = %260
  %265 = load ptr, ptr %12, align 8, !tbaa !5
  %266 = load i32, ptr %265, align 4, !tbaa !9
  %267 = add nsw i32 %266, 1
  %268 = load i32, ptr %27, align 4, !tbaa !9
  %269 = sub nsw i32 %267, %268
  store i32 %269, ptr %21, align 4, !tbaa !9
  %270 = load ptr, ptr %13, align 8, !tbaa !5
  %271 = load i32, ptr %270, align 4, !tbaa !9
  %272 = add nsw i32 %271, 1
  store i32 %272, ptr %22, align 4, !tbaa !9
  %273 = load i32, ptr %21, align 4, !tbaa !9
  %274 = load i32, ptr %22, align 4, !tbaa !9
  %275 = icmp sle i32 %273, %274
  br i1 %275, label %276, label %278

276:                                              ; preds = %264
  %277 = load i32, ptr %21, align 4, !tbaa !9
  br label %280

278:                                              ; preds = %264
  %279 = load i32, ptr %22, align 4, !tbaa !9
  br label %280

280:                                              ; preds = %278, %276
  %281 = phi i32 [ %277, %276 ], [ %279, %278 ]
  store i32 %281, ptr %20, align 4, !tbaa !9
  store i32 1, ptr %26, align 4, !tbaa !9
  br label %282

282:                                              ; preds = %314, %280
  %283 = load i32, ptr %26, align 4, !tbaa !9
  %284 = load i32, ptr %20, align 4, !tbaa !9
  %285 = icmp sle i32 %283, %284
  br i1 %285, label %286, label %317

286:                                              ; preds = %282
  %287 = load ptr, ptr %14, align 8, !tbaa !5
  %288 = load i32, ptr %26, align 4, !tbaa !9
  %289 = load i32, ptr %27, align 4, !tbaa !9
  %290 = load i32, ptr %17, 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 %287, i64 %293
  %295 = load double, ptr %294, align 8, !tbaa !11
  store double %295, ptr %25, align 8, !tbaa !11
  %296 = load double, ptr %25, align 8, !tbaa !11
  %297 = fcmp oge double %296, 0.000000e+00
  br i1 %297, label %298, label %300

298:                                              ; preds = %286
  %299 = load double, ptr %25, align 8, !tbaa !11
  br label %303

300:                                              ; preds = %286
  %301 = load double, ptr %25, align 8, !tbaa !11
  %302 = fneg double %301
  br label %303

303:                                              ; preds = %300, %298
  %304 = phi double [ %299, %298 ], [ %302, %300 ]
  store double %304, ptr %32, align 8, !tbaa !11
  %305 = load double, ptr %30, align 8, !tbaa !11
  %306 = load double, ptr %32, align 8, !tbaa !11
  %307 = fcmp olt double %305, %306
  br i1 %307, label %311, label %308

308:                                              ; preds = %303
  %309 = call i32 @disnan_(ptr noundef %32)
  %310 = icmp ne i32 %309, 0
  br i1 %310, label %311, label %313

311:                                              ; preds = %308, %303
  %312 = load double, ptr %32, align 8, !tbaa !11
  store double %312, ptr %30, align 8, !tbaa !11
  br label %313

313:                                              ; preds = %311, %308
  br label %314

314:                                              ; preds = %313
  %315 = load i32, ptr %26, align 4, !tbaa !9
  %316 = add nsw i32 %315, 1
  store i32 %316, ptr %26, align 4, !tbaa !9
  br label %282, !llvm.loop !20

317:                                              ; preds = %282
  br label %318

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

321:                                              ; preds = %260
  br label %322

322:                                              ; preds = %321, %256
  br label %323

323:                                              ; preds = %322, %189
  br label %1178

324:                                              ; preds = %50
  %325 = load ptr, ptr %9, align 8, !tbaa !5
  %326 = call i32 @lsame_(ptr noundef %325, ptr noundef @.str.2)
  %327 = icmp ne i32 %326, 0
  br i1 %327, label %333, label %328

328:                                              ; preds = %324
  %329 = load ptr, ptr %9, align 8, !tbaa !5
  %330 = load i8, ptr %329, align 1, !tbaa !22
  %331 = zext i8 %330 to i32
  %332 = icmp eq i32 %331, 49
  br i1 %332, label %333, label %571

333:                                              ; preds = %328, %324
  store double 0.000000e+00, ptr %30, align 8, !tbaa !11
  %334 = load ptr, ptr %11, align 8, !tbaa !5
  %335 = call i32 @lsame_(ptr noundef %334, ptr noundef @.str.1)
  store i32 %335, ptr %29, align 4, !tbaa !9
  %336 = load ptr, ptr %10, align 8, !tbaa !5
  %337 = call i32 @lsame_(ptr noundef %336, ptr noundef @.str.1)
  %338 = icmp ne i32 %337, 0
  br i1 %338, label %339, label %452

339:                                              ; preds = %333
  %340 = load ptr, ptr %12, align 8, !tbaa !5
  %341 = load i32, ptr %340, align 4, !tbaa !9
  store i32 %341, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %27, align 4, !tbaa !9
  br label %342

342:                                              ; preds = %448, %339
  %343 = load i32, ptr %27, align 4, !tbaa !9
  %344 = load i32, ptr %19, align 4, !tbaa !9
  %345 = icmp sle i32 %343, %344
  br i1 %345, label %346, label %451

346:                                              ; preds = %342
  %347 = load i32, ptr %29, align 4, !tbaa !9
  %348 = icmp ne i32 %347, 0
  br i1 %348, label %349, label %393

349:                                              ; preds = %346
  store double 1.000000e+00, ptr %32, align 8, !tbaa !11
  %350 = load ptr, ptr %13, align 8, !tbaa !5
  %351 = load i32, ptr %350, align 4, !tbaa !9
  %352 = add nsw i32 %351, 2
  %353 = load i32, ptr %27, align 4, !tbaa !9
  %354 = sub nsw i32 %352, %353
  store i32 %354, ptr %20, align 4, !tbaa !9
  %355 = load ptr, ptr %13, align 8, !tbaa !5
  %356 = load i32, ptr %355, align 4, !tbaa !9
  store i32 %356, ptr %21, align 4, !tbaa !9
  %357 = load i32, ptr %20, align 4, !tbaa !9
  %358 = icmp sge i32 %357, 1
  br i1 %358, label %359, label %361

359:                                              ; preds = %349
  %360 = load i32, ptr %20, align 4, !tbaa !9
  br label %362

361:                                              ; preds = %349
  br label %362

362:                                              ; preds = %361, %359
  %363 = phi i32 [ %360, %359 ], [ 1, %361 ]
  store i32 %363, ptr %26, align 4, !tbaa !9
  br label %364

364:                                              ; preds = %389, %362
  %365 = load i32, ptr %26, align 4, !tbaa !9
  %366 = load i32, ptr %21, align 4, !tbaa !9
  %367 = icmp sle i32 %365, %366
  br i1 %367, label %368, label %392

368:                                              ; preds = %364
  %369 = load ptr, ptr %14, align 8, !tbaa !5
  %370 = load i32, ptr %26, align 4, !tbaa !9
  %371 = load i32, ptr %27, align 4, !tbaa !9
  %372 = load i32, ptr %17, 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 %25, align 8, !tbaa !11
  %378 = load double, ptr %25, align 8, !tbaa !11
  %379 = fcmp oge double %378, 0.000000e+00
  br i1 %379, label %380, label %382

380:                                              ; preds = %368
  %381 = load double, ptr %25, align 8, !tbaa !11
  br label %385

382:                                              ; preds = %368
  %383 = load double, ptr %25, align 8, !tbaa !11
  %384 = fneg double %383
  br label %385

385:                                              ; preds = %382, %380
  %386 = phi double [ %381, %380 ], [ %384, %382 ]
  %387 = load double, ptr %32, align 8, !tbaa !11
  %388 = fadd double %387, %386
  store double %388, ptr %32, align 8, !tbaa !11
  br label %389

389:                                              ; preds = %385
  %390 = load i32, ptr %26, align 4, !tbaa !9
  %391 = add nsw i32 %390, 1
  store i32 %391, ptr %26, align 4, !tbaa !9
  br label %364, !llvm.loop !23

392:                                              ; preds = %364
  br label %438

393:                                              ; preds = %346
  store double 0.000000e+00, ptr %32, align 8, !tbaa !11
  %394 = load ptr, ptr %13, align 8, !tbaa !5
  %395 = load i32, ptr %394, align 4, !tbaa !9
  %396 = add nsw i32 %395, 2
  %397 = load i32, ptr %27, align 4, !tbaa !9
  %398 = sub nsw i32 %396, %397
  store i32 %398, ptr %21, align 4, !tbaa !9
  %399 = load ptr, ptr %13, align 8, !tbaa !5
  %400 = load i32, ptr %399, align 4, !tbaa !9
  %401 = add nsw i32 %400, 1
  store i32 %401, ptr %20, align 4, !tbaa !9
  %402 = load i32, ptr %21, align 4, !tbaa !9
  %403 = icmp sge i32 %402, 1
  br i1 %403, label %404, label %406

404:                                              ; preds = %393
  %405 = load i32, ptr %21, align 4, !tbaa !9
  br label %407

406:                                              ; preds = %393
  br label %407

407:                                              ; preds = %406, %404
  %408 = phi i32 [ %405, %404 ], [ 1, %406 ]
  store i32 %408, ptr %26, align 4, !tbaa !9
  br label %409

409:                                              ; preds = %434, %407
  %410 = load i32, ptr %26, align 4, !tbaa !9
  %411 = load i32, ptr %20, align 4, !tbaa !9
  %412 = icmp sle i32 %410, %411
  br i1 %412, label %413, label %437

413:                                              ; preds = %409
  %414 = load ptr, ptr %14, align 8, !tbaa !5
  %415 = load i32, ptr %26, align 4, !tbaa !9
  %416 = load i32, ptr %27, align 4, !tbaa !9
  %417 = load i32, ptr %17, align 4, !tbaa !9
  %418 = mul nsw i32 %416, %417
  %419 = add nsw i32 %415, %418
  %420 = sext i32 %419 to i64
  %421 = getelementptr inbounds double, ptr %414, i64 %420
  %422 = load double, ptr %421, align 8, !tbaa !11
  store double %422, ptr %25, align 8, !tbaa !11
  %423 = load double, ptr %25, align 8, !tbaa !11
  %424 = fcmp oge double %423, 0.000000e+00
  br i1 %424, label %425, label %427

425:                                              ; preds = %413
  %426 = load double, ptr %25, align 8, !tbaa !11
  br label %430

427:                                              ; preds = %413
  %428 = load double, ptr %25, align 8, !tbaa !11
  %429 = fneg double %428
  br label %430

430:                                              ; preds = %427, %425
  %431 = phi double [ %426, %425 ], [ %429, %427 ]
  %432 = load double, ptr %32, align 8, !tbaa !11
  %433 = fadd double %432, %431
  store double %433, ptr %32, align 8, !tbaa !11
  br label %434

434:                                              ; preds = %430
  %435 = load i32, ptr %26, align 4, !tbaa !9
  %436 = add nsw i32 %435, 1
  store i32 %436, ptr %26, align 4, !tbaa !9
  br label %409, !llvm.loop !24

437:                                              ; preds = %409
  br label %438

438:                                              ; preds = %437, %392
  %439 = load double, ptr %30, align 8, !tbaa !11
  %440 = load double, ptr %32, align 8, !tbaa !11
  %441 = fcmp olt double %439, %440
  br i1 %441, label %445, label %442

442:                                              ; preds = %438
  %443 = call i32 @disnan_(ptr noundef %32)
  %444 = icmp ne i32 %443, 0
  br i1 %444, label %445, label %447

445:                                              ; preds = %442, %438
  %446 = load double, ptr %32, align 8, !tbaa !11
  store double %446, ptr %30, align 8, !tbaa !11
  br label %447

447:                                              ; preds = %445, %442
  br label %448

448:                                              ; preds = %447
  %449 = load i32, ptr %27, align 4, !tbaa !9
  %450 = add nsw i32 %449, 1
  store i32 %450, ptr %27, align 4, !tbaa !9
  br label %342, !llvm.loop !25

451:                                              ; preds = %342
  br label %570

452:                                              ; preds = %333
  %453 = load ptr, ptr %12, align 8, !tbaa !5
  %454 = load i32, ptr %453, align 4, !tbaa !9
  store i32 %454, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %27, align 4, !tbaa !9
  br label %455

455:                                              ; preds = %566, %452
  %456 = load i32, ptr %27, align 4, !tbaa !9
  %457 = load i32, ptr %19, align 4, !tbaa !9
  %458 = icmp sle i32 %456, %457
  br i1 %458, label %459, label %569

459:                                              ; preds = %455
  %460 = load i32, ptr %29, align 4, !tbaa !9
  %461 = icmp ne i32 %460, 0
  br i1 %461, label %462, label %509

462:                                              ; preds = %459
  store double 1.000000e+00, ptr %32, align 8, !tbaa !11
  %463 = load ptr, ptr %12, align 8, !tbaa !5
  %464 = load i32, ptr %463, align 4, !tbaa !9
  %465 = add nsw i32 %464, 1
  %466 = load i32, ptr %27, align 4, !tbaa !9
  %467 = sub nsw i32 %465, %466
  store i32 %467, ptr %21, align 4, !tbaa !9
  %468 = load ptr, ptr %13, align 8, !tbaa !5
  %469 = load i32, ptr %468, align 4, !tbaa !9
  %470 = add nsw i32 %469, 1
  store i32 %470, ptr %22, align 4, !tbaa !9
  %471 = load i32, ptr %21, align 4, !tbaa !9
  %472 = load i32, ptr %22, align 4, !tbaa !9
  %473 = icmp sle i32 %471, %472
  br i1 %473, label %474, label %476

474:                                              ; preds = %462
  %475 = load i32, ptr %21, align 4, !tbaa !9
  br label %478

476:                                              ; preds = %462
  %477 = load i32, ptr %22, align 4, !tbaa !9
  br label %478

478:                                              ; preds = %476, %474
  %479 = phi i32 [ %475, %474 ], [ %477, %476 ]
  store i32 %479, ptr %20, align 4, !tbaa !9
  store i32 2, ptr %26, align 4, !tbaa !9
  br label %480

480:                                              ; preds = %505, %478
  %481 = load i32, ptr %26, align 4, !tbaa !9
  %482 = load i32, ptr %20, align 4, !tbaa !9
  %483 = icmp sle i32 %481, %482
  br i1 %483, label %484, label %508

484:                                              ; preds = %480
  %485 = load ptr, ptr %14, align 8, !tbaa !5
  %486 = load i32, ptr %26, align 4, !tbaa !9
  %487 = load i32, ptr %27, align 4, !tbaa !9
  %488 = load i32, ptr %17, align 4, !tbaa !9
  %489 = mul nsw i32 %487, %488
  %490 = add nsw i32 %486, %489
  %491 = sext i32 %490 to i64
  %492 = getelementptr inbounds double, ptr %485, i64 %491
  %493 = load double, ptr %492, align 8, !tbaa !11
  store double %493, ptr %25, align 8, !tbaa !11
  %494 = load double, ptr %25, align 8, !tbaa !11
  %495 = fcmp oge double %494, 0.000000e+00
  br i1 %495, label %496, label %498

496:                                              ; preds = %484
  %497 = load double, ptr %25, align 8, !tbaa !11
  br label %501

498:                                              ; preds = %484
  %499 = load double, ptr %25, align 8, !tbaa !11
  %500 = fneg double %499
  br label %501

501:                                              ; preds = %498, %496
  %502 = phi double [ %497, %496 ], [ %500, %498 ]
  %503 = load double, ptr %32, align 8, !tbaa !11
  %504 = fadd double %503, %502
  store double %504, ptr %32, align 8, !tbaa !11
  br label %505

505:                                              ; preds = %501
  %506 = load i32, ptr %26, align 4, !tbaa !9
  %507 = add nsw i32 %506, 1
  store i32 %507, ptr %26, align 4, !tbaa !9
  br label %480, !llvm.loop !26

508:                                              ; preds = %480
  br label %556

509:                                              ; preds = %459
  store double 0.000000e+00, ptr %32, align 8, !tbaa !11
  %510 = load ptr, ptr %12, align 8, !tbaa !5
  %511 = load i32, ptr %510, align 4, !tbaa !9
  %512 = add nsw i32 %511, 1
  %513 = load i32, ptr %27, align 4, !tbaa !9
  %514 = sub nsw i32 %512, %513
  store i32 %514, ptr %21, align 4, !tbaa !9
  %515 = load ptr, ptr %13, align 8, !tbaa !5
  %516 = load i32, ptr %515, align 4, !tbaa !9
  %517 = add nsw i32 %516, 1
  store i32 %517, ptr %22, align 4, !tbaa !9
  %518 = load i32, ptr %21, align 4, !tbaa !9
  %519 = load i32, ptr %22, align 4, !tbaa !9
  %520 = icmp sle i32 %518, %519
  br i1 %520, label %521, label %523

521:                                              ; preds = %509
  %522 = load i32, ptr %21, align 4, !tbaa !9
  br label %525

523:                                              ; preds = %509
  %524 = load i32, ptr %22, align 4, !tbaa !9
  br label %525

525:                                              ; preds = %523, %521
  %526 = phi i32 [ %522, %521 ], [ %524, %523 ]
  store i32 %526, ptr %20, align 4, !tbaa !9
  store i32 1, ptr %26, align 4, !tbaa !9
  br label %527

527:                                              ; preds = %552, %525
  %528 = load i32, ptr %26, align 4, !tbaa !9
  %529 = load i32, ptr %20, align 4, !tbaa !9
  %530 = icmp sle i32 %528, %529
  br i1 %530, label %531, label %555

531:                                              ; preds = %527
  %532 = load ptr, ptr %14, align 8, !tbaa !5
  %533 = load i32, ptr %26, align 4, !tbaa !9
  %534 = load i32, ptr %27, align 4, !tbaa !9
  %535 = load i32, ptr %17, align 4, !tbaa !9
  %536 = mul nsw i32 %534, %535
  %537 = add nsw i32 %533, %536
  %538 = sext i32 %537 to i64
  %539 = getelementptr inbounds double, ptr %532, i64 %538
  %540 = load double, ptr %539, align 8, !tbaa !11
  store double %540, ptr %25, align 8, !tbaa !11
  %541 = load double, ptr %25, align 8, !tbaa !11
  %542 = fcmp oge double %541, 0.000000e+00
  br i1 %542, label %543, label %545

543:                                              ; preds = %531
  %544 = load double, ptr %25, align 8, !tbaa !11
  br label %548

545:                                              ; preds = %531
  %546 = load double, ptr %25, align 8, !tbaa !11
  %547 = fneg double %546
  br label %548

548:                                              ; preds = %545, %543
  %549 = phi double [ %544, %543 ], [ %547, %545 ]
  %550 = load double, ptr %32, align 8, !tbaa !11
  %551 = fadd double %550, %549
  store double %551, ptr %32, align 8, !tbaa !11
  br label %552

552:                                              ; preds = %548
  %553 = load i32, ptr %26, align 4, !tbaa !9
  %554 = add nsw i32 %553, 1
  store i32 %554, ptr %26, align 4, !tbaa !9
  br label %527, !llvm.loop !27

555:                                              ; preds = %527
  br label %556

556:                                              ; preds = %555, %508
  %557 = load double, ptr %30, align 8, !tbaa !11
  %558 = load double, ptr %32, align 8, !tbaa !11
  %559 = fcmp olt double %557, %558
  br i1 %559, label %563, label %560

560:                                              ; preds = %556
  %561 = call i32 @disnan_(ptr noundef %32)
  %562 = icmp ne i32 %561, 0
  br i1 %562, label %563, label %565

563:                                              ; preds = %560, %556
  %564 = load double, ptr %32, align 8, !tbaa !11
  store double %564, ptr %30, align 8, !tbaa !11
  br label %565

565:                                              ; preds = %563, %560
  br label %566

566:                                              ; preds = %565
  %567 = load i32, ptr %27, align 4, !tbaa !9
  %568 = add nsw i32 %567, 1
  store i32 %568, ptr %27, align 4, !tbaa !9
  br label %455, !llvm.loop !28

569:                                              ; preds = %455
  br label %570

570:                                              ; preds = %569, %451
  br label %1177

571:                                              ; preds = %328
  %572 = load ptr, ptr %9, align 8, !tbaa !5
  %573 = call i32 @lsame_(ptr noundef %572, ptr noundef @.str.3)
  %574 = icmp ne i32 %573, 0
  br i1 %574, label %575, label %939

575:                                              ; preds = %571
  store double 0.000000e+00, ptr %30, align 8, !tbaa !11
  %576 = load ptr, ptr %10, align 8, !tbaa !5
  %577 = call i32 @lsame_(ptr noundef %576, ptr noundef @.str.1)
  %578 = icmp ne i32 %577, 0
  br i1 %578, label %579, label %747

579:                                              ; preds = %575
  %580 = load ptr, ptr %11, align 8, !tbaa !5
  %581 = call i32 @lsame_(ptr noundef %580, ptr noundef @.str.1)
  %582 = icmp ne i32 %581, 0
  br i1 %582, label %583, label %665

583:                                              ; preds = %579
  %584 = load ptr, ptr %12, align 8, !tbaa !5
  %585 = load i32, ptr %584, align 4, !tbaa !9
  store i32 %585, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %26, align 4, !tbaa !9
  br label %586

586:                                              ; preds = %595, %583
  %587 = load i32, ptr %26, align 4, !tbaa !9
  %588 = load i32, ptr %19, align 4, !tbaa !9
  %589 = icmp sle i32 %587, %588
  br i1 %589, label %590, label %598

590:                                              ; preds = %586
  %591 = load ptr, ptr %16, align 8, !tbaa !5
  %592 = load i32, ptr %26, align 4, !tbaa !9
  %593 = sext i32 %592 to i64
  %594 = getelementptr inbounds double, ptr %591, i64 %593
  store double 1.000000e+00, ptr %594, align 8, !tbaa !11
  br label %595

595:                                              ; preds = %590
  %596 = load i32, ptr %26, align 4, !tbaa !9
  %597 = add nsw i32 %596, 1
  store i32 %597, ptr %26, align 4, !tbaa !9
  br label %586, !llvm.loop !29

598:                                              ; preds = %586
  %599 = load ptr, ptr %12, align 8, !tbaa !5
  %600 = load i32, ptr %599, align 4, !tbaa !9
  store i32 %600, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %27, align 4, !tbaa !9
  br label %601

601:                                              ; preds = %661, %598
  %602 = load i32, ptr %27, align 4, !tbaa !9
  %603 = load i32, ptr %19, align 4, !tbaa !9
  %604 = icmp sle i32 %602, %603
  br i1 %604, label %605, label %664

605:                                              ; preds = %601
  %606 = load ptr, ptr %13, align 8, !tbaa !5
  %607 = load i32, ptr %606, align 4, !tbaa !9
  %608 = add nsw i32 %607, 1
  %609 = load i32, ptr %27, align 4, !tbaa !9
  %610 = sub nsw i32 %608, %609
  store i32 %610, ptr %28, align 4, !tbaa !9
  store i32 1, ptr %20, align 4, !tbaa !9
  %611 = load i32, ptr %27, align 4, !tbaa !9
  %612 = load ptr, ptr %13, align 8, !tbaa !5
  %613 = load i32, ptr %612, align 4, !tbaa !9
  %614 = sub nsw i32 %611, %613
  store i32 %614, ptr %21, align 4, !tbaa !9
  %615 = load i32, ptr %27, align 4, !tbaa !9
  %616 = sub nsw i32 %615, 1
  store i32 %616, ptr %22, align 4, !tbaa !9
  %617 = load i32, ptr %20, align 4, !tbaa !9
  %618 = load i32, ptr %21, align 4, !tbaa !9
  %619 = icmp sge i32 %617, %618
  br i1 %619, label %620, label %622

620:                                              ; preds = %605
  %621 = load i32, ptr %20, align 4, !tbaa !9
  br label %624

622:                                              ; preds = %605
  %623 = load i32, ptr %21, align 4, !tbaa !9
  br label %624

624:                                              ; preds = %622, %620
  %625 = phi i32 [ %621, %620 ], [ %623, %622 ]
  store i32 %625, ptr %26, align 4, !tbaa !9
  br label %626

626:                                              ; preds = %657, %624
  %627 = load i32, ptr %26, align 4, !tbaa !9
  %628 = load i32, ptr %22, align 4, !tbaa !9
  %629 = icmp sle i32 %627, %628
  br i1 %629, label %630, label %660

630:                                              ; preds = %626
  %631 = load ptr, ptr %14, align 8, !tbaa !5
  %632 = load i32, ptr %28, align 4, !tbaa !9
  %633 = load i32, ptr %26, align 4, !tbaa !9
  %634 = add nsw i32 %632, %633
  %635 = load i32, ptr %27, align 4, !tbaa !9
  %636 = load i32, ptr %17, align 4, !tbaa !9
  %637 = mul nsw i32 %635, %636
  %638 = add nsw i32 %634, %637
  %639 = sext i32 %638 to i64
  %640 = getelementptr inbounds double, ptr %631, i64 %639
  %641 = load double, ptr %640, align 8, !tbaa !11
  store double %641, ptr %25, align 8, !tbaa !11
  %642 = load double, ptr %25, align 8, !tbaa !11
  %643 = fcmp oge double %642, 0.000000e+00
  br i1 %643, label %644, label %646

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

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

649:                                              ; preds = %646, %644
  %650 = phi double [ %645, %644 ], [ %648, %646 ]
  %651 = load ptr, ptr %16, align 8, !tbaa !5
  %652 = load i32, ptr %26, align 4, !tbaa !9
  %653 = sext i32 %652 to i64
  %654 = getelementptr inbounds double, ptr %651, i64 %653
  %655 = load double, ptr %654, align 8, !tbaa !11
  %656 = fadd double %655, %650
  store double %656, ptr %654, align 8, !tbaa !11
  br label %657

657:                                              ; preds = %649
  %658 = load i32, ptr %26, align 4, !tbaa !9
  %659 = add nsw i32 %658, 1
  store i32 %659, ptr %26, align 4, !tbaa !9
  br label %626, !llvm.loop !30

660:                                              ; preds = %626
  br label %661

661:                                              ; preds = %660
  %662 = load i32, ptr %27, align 4, !tbaa !9
  %663 = add nsw i32 %662, 1
  store i32 %663, ptr %27, align 4, !tbaa !9
  br label %601, !llvm.loop !31

664:                                              ; preds = %601
  br label %746

665:                                              ; preds = %579
  %666 = load ptr, ptr %12, align 8, !tbaa !5
  %667 = load i32, ptr %666, align 4, !tbaa !9
  store i32 %667, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %26, align 4, !tbaa !9
  br label %668

668:                                              ; preds = %677, %665
  %669 = load i32, ptr %26, align 4, !tbaa !9
  %670 = load i32, ptr %19, align 4, !tbaa !9
  %671 = icmp sle i32 %669, %670
  br i1 %671, label %672, label %680

672:                                              ; preds = %668
  %673 = load ptr, ptr %16, align 8, !tbaa !5
  %674 = load i32, ptr %26, align 4, !tbaa !9
  %675 = sext i32 %674 to i64
  %676 = getelementptr inbounds double, ptr %673, i64 %675
  store double 0.000000e+00, ptr %676, align 8, !tbaa !11
  br label %677

677:                                              ; preds = %672
  %678 = load i32, ptr %26, align 4, !tbaa !9
  %679 = add nsw i32 %678, 1
  store i32 %679, ptr %26, align 4, !tbaa !9
  br label %668, !llvm.loop !32

680:                                              ; preds = %668
  %681 = load ptr, ptr %12, align 8, !tbaa !5
  %682 = load i32, ptr %681, align 4, !tbaa !9
  store i32 %682, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %27, align 4, !tbaa !9
  br label %683

683:                                              ; preds = %742, %680
  %684 = load i32, ptr %27, align 4, !tbaa !9
  %685 = load i32, ptr %19, align 4, !tbaa !9
  %686 = icmp sle i32 %684, %685
  br i1 %686, label %687, label %745

687:                                              ; preds = %683
  %688 = load ptr, ptr %13, align 8, !tbaa !5
  %689 = load i32, ptr %688, align 4, !tbaa !9
  %690 = add nsw i32 %689, 1
  %691 = load i32, ptr %27, align 4, !tbaa !9
  %692 = sub nsw i32 %690, %691
  store i32 %692, ptr %28, align 4, !tbaa !9
  store i32 1, ptr %22, align 4, !tbaa !9
  %693 = load i32, ptr %27, align 4, !tbaa !9
  %694 = load ptr, ptr %13, align 8, !tbaa !5
  %695 = load i32, ptr %694, align 4, !tbaa !9
  %696 = sub nsw i32 %693, %695
  store i32 %696, ptr %20, align 4, !tbaa !9
  %697 = load i32, ptr %27, align 4, !tbaa !9
  store i32 %697, ptr %21, align 4, !tbaa !9
  %698 = load i32, ptr %22, align 4, !tbaa !9
  %699 = load i32, ptr %20, align 4, !tbaa !9
  %700 = icmp sge i32 %698, %699
  br i1 %700, label %701, label %703

701:                                              ; preds = %687
  %702 = load i32, ptr %22, align 4, !tbaa !9
  br label %705

703:                                              ; preds = %687
  %704 = load i32, ptr %20, align 4, !tbaa !9
  br label %705

705:                                              ; preds = %703, %701
  %706 = phi i32 [ %702, %701 ], [ %704, %703 ]
  store i32 %706, ptr %26, align 4, !tbaa !9
  br label %707

707:                                              ; preds = %738, %705
  %708 = load i32, ptr %26, align 4, !tbaa !9
  %709 = load i32, ptr %21, align 4, !tbaa !9
  %710 = icmp sle i32 %708, %709
  br i1 %710, label %711, label %741

711:                                              ; preds = %707
  %712 = load ptr, ptr %14, align 8, !tbaa !5
  %713 = load i32, ptr %28, align 4, !tbaa !9
  %714 = load i32, ptr %26, align 4, !tbaa !9
  %715 = add nsw i32 %713, %714
  %716 = load i32, ptr %27, align 4, !tbaa !9
  %717 = load i32, ptr %17, align 4, !tbaa !9
  %718 = mul nsw i32 %716, %717
  %719 = add nsw i32 %715, %718
  %720 = sext i32 %719 to i64
  %721 = getelementptr inbounds double, ptr %712, i64 %720
  %722 = load double, ptr %721, align 8, !tbaa !11
  store double %722, ptr %25, align 8, !tbaa !11
  %723 = load double, ptr %25, align 8, !tbaa !11
  %724 = fcmp oge double %723, 0.000000e+00
  br i1 %724, label %725, label %727

725:                                              ; preds = %711
  %726 = load double, ptr %25, align 8, !tbaa !11
  br label %730

727:                                              ; preds = %711
  %728 = load double, ptr %25, align 8, !tbaa !11
  %729 = fneg double %728
  br label %730

730:                                              ; preds = %727, %725
  %731 = phi double [ %726, %725 ], [ %729, %727 ]
  %732 = load ptr, ptr %16, align 8, !tbaa !5
  %733 = load i32, ptr %26, align 4, !tbaa !9
  %734 = sext i32 %733 to i64
  %735 = getelementptr inbounds double, ptr %732, i64 %734
  %736 = load double, ptr %735, align 8, !tbaa !11
  %737 = fadd double %736, %731
  store double %737, ptr %735, align 8, !tbaa !11
  br label %738

738:                                              ; preds = %730
  %739 = load i32, ptr %26, align 4, !tbaa !9
  %740 = add nsw i32 %739, 1
  store i32 %740, ptr %26, align 4, !tbaa !9
  br label %707, !llvm.loop !33

741:                                              ; preds = %707
  br label %742

742:                                              ; preds = %741
  %743 = load i32, ptr %27, align 4, !tbaa !9
  %744 = add nsw i32 %743, 1
  store i32 %744, ptr %27, align 4, !tbaa !9
  br label %683, !llvm.loop !34

745:                                              ; preds = %683
  br label %746

746:                                              ; preds = %745, %664
  br label %913

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

751:                                              ; preds = %747
  %752 = load ptr, ptr %12, align 8, !tbaa !5
  %753 = load i32, ptr %752, align 4, !tbaa !9
  store i32 %753, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %26, align 4, !tbaa !9
  br label %754

754:                                              ; preds = %763, %751
  %755 = load i32, ptr %26, align 4, !tbaa !9
  %756 = load i32, ptr %19, align 4, !tbaa !9
  %757 = icmp sle i32 %755, %756
  br i1 %757, label %758, label %766

758:                                              ; preds = %754
  %759 = load ptr, ptr %16, align 8, !tbaa !5
  %760 = load i32, ptr %26, align 4, !tbaa !9
  %761 = sext i32 %760 to i64
  %762 = getelementptr inbounds double, ptr %759, i64 %761
  store double 1.000000e+00, ptr %762, align 8, !tbaa !11
  br label %763

763:                                              ; preds = %758
  %764 = load i32, ptr %26, align 4, !tbaa !9
  %765 = add nsw i32 %764, 1
  store i32 %765, ptr %26, align 4, !tbaa !9
  br label %754, !llvm.loop !35

766:                                              ; preds = %754
  %767 = load ptr, ptr %12, align 8, !tbaa !5
  %768 = load i32, ptr %767, align 4, !tbaa !9
  store i32 %768, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %27, align 4, !tbaa !9
  br label %769

769:                                              ; preds = %828, %766
  %770 = load i32, ptr %27, align 4, !tbaa !9
  %771 = load i32, ptr %19, align 4, !tbaa !9
  %772 = icmp sle i32 %770, %771
  br i1 %772, label %773, label %831

773:                                              ; preds = %769
  %774 = load i32, ptr %27, align 4, !tbaa !9
  %775 = sub nsw i32 1, %774
  store i32 %775, ptr %28, align 4, !tbaa !9
  %776 = load ptr, ptr %12, align 8, !tbaa !5
  %777 = load i32, ptr %776, align 4, !tbaa !9
  store i32 %777, ptr %22, align 4, !tbaa !9
  %778 = load i32, ptr %27, align 4, !tbaa !9
  %779 = load ptr, ptr %13, align 8, !tbaa !5
  %780 = load i32, ptr %779, align 4, !tbaa !9
  %781 = add nsw i32 %778, %780
  store i32 %781, ptr %20, align 4, !tbaa !9
  %782 = load i32, ptr %22, align 4, !tbaa !9
  %783 = load i32, ptr %20, align 4, !tbaa !9
  %784 = icmp sle i32 %782, %783
  br i1 %784, label %785, label %787

785:                                              ; preds = %773
  %786 = load i32, ptr %22, align 4, !tbaa !9
  br label %789

787:                                              ; preds = %773
  %788 = load i32, ptr %20, align 4, !tbaa !9
  br label %789

789:                                              ; preds = %787, %785
  %790 = phi i32 [ %786, %785 ], [ %788, %787 ]
  store i32 %790, ptr %21, align 4, !tbaa !9
  %791 = load i32, ptr %27, align 4, !tbaa !9
  %792 = add nsw i32 %791, 1
  store i32 %792, ptr %26, align 4, !tbaa !9
  br label %793

793:                                              ; preds = %824, %789
  %794 = load i32, ptr %26, align 4, !tbaa !9
  %795 = load i32, ptr %21, align 4, !tbaa !9
  %796 = icmp sle i32 %794, %795
  br i1 %796, label %797, label %827

797:                                              ; preds = %793
  %798 = load ptr, ptr %14, align 8, !tbaa !5
  %799 = load i32, ptr %28, align 4, !tbaa !9
  %800 = load i32, ptr %26, align 4, !tbaa !9
  %801 = add nsw i32 %799, %800
  %802 = load i32, ptr %27, align 4, !tbaa !9
  %803 = load i32, ptr %17, align 4, !tbaa !9
  %804 = mul nsw i32 %802, %803
  %805 = add nsw i32 %801, %804
  %806 = sext i32 %805 to i64
  %807 = getelementptr inbounds double, ptr %798, i64 %806
  %808 = load double, ptr %807, align 8, !tbaa !11
  store double %808, ptr %25, align 8, !tbaa !11
  %809 = load double, ptr %25, align 8, !tbaa !11
  %810 = fcmp oge double %809, 0.000000e+00
  br i1 %810, label %811, label %813

811:                                              ; preds = %797
  %812 = load double, ptr %25, align 8, !tbaa !11
  br label %816

813:                                              ; preds = %797
  %814 = load double, ptr %25, align 8, !tbaa !11
  %815 = fneg double %814
  br label %816

816:                                              ; preds = %813, %811
  %817 = phi double [ %812, %811 ], [ %815, %813 ]
  %818 = load ptr, ptr %16, align 8, !tbaa !5
  %819 = load i32, ptr %26, align 4, !tbaa !9
  %820 = sext i32 %819 to i64
  %821 = getelementptr inbounds double, ptr %818, i64 %820
  %822 = load double, ptr %821, align 8, !tbaa !11
  %823 = fadd double %822, %817
  store double %823, ptr %821, align 8, !tbaa !11
  br label %824

824:                                              ; preds = %816
  %825 = load i32, ptr %26, align 4, !tbaa !9
  %826 = add nsw i32 %825, 1
  store i32 %826, ptr %26, align 4, !tbaa !9
  br label %793, !llvm.loop !36

827:                                              ; preds = %793
  br label %828

828:                                              ; preds = %827
  %829 = load i32, ptr %27, align 4, !tbaa !9
  %830 = add nsw i32 %829, 1
  store i32 %830, ptr %27, align 4, !tbaa !9
  br label %769, !llvm.loop !37

831:                                              ; preds = %769
  br label %912

832:                                              ; preds = %747
  %833 = load ptr, ptr %12, align 8, !tbaa !5
  %834 = load i32, ptr %833, align 4, !tbaa !9
  store i32 %834, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %26, align 4, !tbaa !9
  br label %835

835:                                              ; preds = %844, %832
  %836 = load i32, ptr %26, align 4, !tbaa !9
  %837 = load i32, ptr %19, align 4, !tbaa !9
  %838 = icmp sle i32 %836, %837
  br i1 %838, label %839, label %847

839:                                              ; preds = %835
  %840 = load ptr, ptr %16, align 8, !tbaa !5
  %841 = load i32, ptr %26, align 4, !tbaa !9
  %842 = sext i32 %841 to i64
  %843 = getelementptr inbounds double, ptr %840, i64 %842
  store double 0.000000e+00, ptr %843, align 8, !tbaa !11
  br label %844

844:                                              ; preds = %839
  %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 %835, !llvm.loop !38

847:                                              ; preds = %835
  %848 = load ptr, ptr %12, align 8, !tbaa !5
  %849 = load i32, ptr %848, align 4, !tbaa !9
  store i32 %849, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %27, align 4, !tbaa !9
  br label %850

850:                                              ; preds = %908, %847
  %851 = load i32, ptr %27, align 4, !tbaa !9
  %852 = load i32, ptr %19, align 4, !tbaa !9
  %853 = icmp sle i32 %851, %852
  br i1 %853, label %854, label %911

854:                                              ; preds = %850
  %855 = load i32, ptr %27, align 4, !tbaa !9
  %856 = sub nsw i32 1, %855
  store i32 %856, ptr %28, align 4, !tbaa !9
  %857 = load ptr, ptr %12, align 8, !tbaa !5
  %858 = load i32, ptr %857, align 4, !tbaa !9
  store i32 %858, ptr %22, align 4, !tbaa !9
  %859 = load i32, ptr %27, align 4, !tbaa !9
  %860 = load ptr, ptr %13, align 8, !tbaa !5
  %861 = load i32, ptr %860, align 4, !tbaa !9
  %862 = add nsw i32 %859, %861
  store i32 %862, ptr %20, align 4, !tbaa !9
  %863 = load i32, ptr %22, align 4, !tbaa !9
  %864 = load i32, ptr %20, align 4, !tbaa !9
  %865 = icmp sle i32 %863, %864
  br i1 %865, label %866, label %868

866:                                              ; preds = %854
  %867 = load i32, ptr %22, align 4, !tbaa !9
  br label %870

868:                                              ; preds = %854
  %869 = load i32, ptr %20, align 4, !tbaa !9
  br label %870

870:                                              ; preds = %868, %866
  %871 = phi i32 [ %867, %866 ], [ %869, %868 ]
  store i32 %871, ptr %21, align 4, !tbaa !9
  %872 = load i32, ptr %27, align 4, !tbaa !9
  store i32 %872, ptr %26, align 4, !tbaa !9
  br label %873

873:                                              ; preds = %904, %870
  %874 = load i32, ptr %26, align 4, !tbaa !9
  %875 = load i32, ptr %21, align 4, !tbaa !9
  %876 = icmp sle i32 %874, %875
  br i1 %876, label %877, label %907

877:                                              ; preds = %873
  %878 = load ptr, ptr %14, align 8, !tbaa !5
  %879 = load i32, ptr %28, align 4, !tbaa !9
  %880 = load i32, ptr %26, align 4, !tbaa !9
  %881 = add nsw i32 %879, %880
  %882 = load i32, ptr %27, align 4, !tbaa !9
  %883 = load i32, ptr %17, align 4, !tbaa !9
  %884 = mul nsw i32 %882, %883
  %885 = add nsw i32 %881, %884
  %886 = sext i32 %885 to i64
  %887 = getelementptr inbounds double, ptr %878, i64 %886
  %888 = load double, ptr %887, align 8, !tbaa !11
  store double %888, ptr %25, align 8, !tbaa !11
  %889 = load double, ptr %25, align 8, !tbaa !11
  %890 = fcmp oge double %889, 0.000000e+00
  br i1 %890, label %891, label %893

891:                                              ; preds = %877
  %892 = load double, ptr %25, align 8, !tbaa !11
  br label %896

893:                                              ; preds = %877
  %894 = load double, ptr %25, align 8, !tbaa !11
  %895 = fneg double %894
  br label %896

896:                                              ; preds = %893, %891
  %897 = phi double [ %892, %891 ], [ %895, %893 ]
  %898 = load ptr, ptr %16, align 8, !tbaa !5
  %899 = load i32, ptr %26, align 4, !tbaa !9
  %900 = sext i32 %899 to i64
  %901 = getelementptr inbounds double, ptr %898, i64 %900
  %902 = load double, ptr %901, align 8, !tbaa !11
  %903 = fadd double %902, %897
  store double %903, ptr %901, align 8, !tbaa !11
  br label %904

904:                                              ; preds = %896
  %905 = load i32, ptr %26, align 4, !tbaa !9
  %906 = add nsw i32 %905, 1
  store i32 %906, ptr %26, align 4, !tbaa !9
  br label %873, !llvm.loop !39

907:                                              ; preds = %873
  br label %908

908:                                              ; preds = %907
  %909 = load i32, ptr %27, align 4, !tbaa !9
  %910 = add nsw i32 %909, 1
  store i32 %910, ptr %27, align 4, !tbaa !9
  br label %850, !llvm.loop !40

911:                                              ; preds = %850
  br label %912

912:                                              ; preds = %911, %831
  br label %913

913:                                              ; preds = %912, %746
  %914 = load ptr, ptr %12, align 8, !tbaa !5
  %915 = load i32, ptr %914, align 4, !tbaa !9
  store i32 %915, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %26, align 4, !tbaa !9
  br label %916

916:                                              ; preds = %935, %913
  %917 = load i32, ptr %26, align 4, !tbaa !9
  %918 = load i32, ptr %19, align 4, !tbaa !9
  %919 = icmp sle i32 %917, %918
  br i1 %919, label %920, label %938

920:                                              ; preds = %916
  %921 = load ptr, ptr %16, align 8, !tbaa !5
  %922 = load i32, ptr %26, align 4, !tbaa !9
  %923 = sext i32 %922 to i64
  %924 = getelementptr inbounds double, ptr %921, i64 %923
  %925 = load double, ptr %924, align 8, !tbaa !11
  store double %925, ptr %32, align 8, !tbaa !11
  %926 = load double, ptr %30, align 8, !tbaa !11
  %927 = load double, ptr %32, align 8, !tbaa !11
  %928 = fcmp olt double %926, %927
  br i1 %928, label %932, label %929

929:                                              ; preds = %920
  %930 = call i32 @disnan_(ptr noundef %32)
  %931 = icmp ne i32 %930, 0
  br i1 %931, label %932, label %934

932:                                              ; preds = %929, %920
  %933 = load double, ptr %32, align 8, !tbaa !11
  store double %933, ptr %30, align 8, !tbaa !11
  br label %934

934:                                              ; preds = %932, %929
  br label %935

935:                                              ; preds = %934
  %936 = load i32, ptr %26, align 4, !tbaa !9
  %937 = add nsw i32 %936, 1
  store i32 %937, ptr %26, align 4, !tbaa !9
  br label %916, !llvm.loop !41

938:                                              ; preds = %916
  br label %1176

939:                                              ; preds = %571
  %940 = load ptr, ptr %9, align 8, !tbaa !5
  %941 = call i32 @lsame_(ptr noundef %940, ptr noundef @.str.4)
  %942 = icmp ne i32 %941, 0
  br i1 %942, label %947, label %943

943:                                              ; preds = %939
  %944 = load ptr, ptr %9, align 8, !tbaa !5
  %945 = call i32 @lsame_(ptr noundef %944, ptr noundef @.str.5)
  %946 = icmp ne i32 %945, 0
  br i1 %946, label %947, label %1175

947:                                              ; preds = %943, %939
  %948 = load ptr, ptr %10, align 8, !tbaa !5
  %949 = call i32 @lsame_(ptr noundef %948, ptr noundef @.str.1)
  %950 = icmp ne i32 %949, 0
  br i1 %950, label %951, label %1068

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

955:                                              ; preds = %951
  %956 = getelementptr inbounds [2 x double], ptr %33, i64 0, i64 0
  store double 1.000000e+00, ptr %956, align 16, !tbaa !11
  %957 = load ptr, ptr %12, align 8, !tbaa !5
  %958 = load i32, ptr %957, align 4, !tbaa !9
  %959 = sitofp i32 %958 to double
  %960 = getelementptr inbounds [2 x double], ptr %33, i64 0, i64 1
  store double %959, ptr %960, align 8, !tbaa !11
  %961 = load ptr, ptr %13, align 8, !tbaa !5
  %962 = load i32, ptr %961, align 4, !tbaa !9
  %963 = icmp sgt i32 %962, 0
  br i1 %963, label %964, label %1014

964:                                              ; preds = %955
  %965 = load ptr, ptr %12, align 8, !tbaa !5
  %966 = load i32, ptr %965, align 4, !tbaa !9
  store i32 %966, ptr %19, align 4, !tbaa !9
  store i32 2, ptr %27, align 4, !tbaa !9
  br label %967

967:                                              ; preds = %1010, %964
  %968 = load i32, ptr %27, align 4, !tbaa !9
  %969 = load i32, ptr %19, align 4, !tbaa !9
  %970 = icmp sle i32 %968, %969
  br i1 %970, label %971, label %1013

971:                                              ; preds = %967
  %972 = getelementptr inbounds [2 x double], ptr %31, i64 0, i64 0
  store double 0.000000e+00, ptr %972, align 16, !tbaa !11
  %973 = getelementptr inbounds [2 x double], ptr %31, i64 0, i64 1
  store double 1.000000e+00, ptr %973, align 8, !tbaa !11
  %974 = load i32, ptr %27, align 4, !tbaa !9
  %975 = sub nsw i32 %974, 1
  store i32 %975, ptr %22, align 4, !tbaa !9
  %976 = load i32, ptr %22, align 4, !tbaa !9
  %977 = load ptr, ptr %13, align 8, !tbaa !5
  %978 = load i32, ptr %977, align 4, !tbaa !9
  %979 = icmp sle i32 %976, %978
  br i1 %979, label %980, label %982

980:                                              ; preds = %971
  %981 = load i32, ptr %22, align 4, !tbaa !9
  br label %985

982:                                              ; preds = %971
  %983 = load ptr, ptr %13, align 8, !tbaa !5
  %984 = load i32, ptr %983, align 4, !tbaa !9
  br label %985

985:                                              ; preds = %982, %980
  %986 = phi i32 [ %981, %980 ], [ %984, %982 ]
  store i32 %986, ptr %21, align 4, !tbaa !9
  %987 = load ptr, ptr %13, align 8, !tbaa !5
  %988 = load i32, ptr %987, align 4, !tbaa !9
  %989 = add nsw i32 %988, 2
  %990 = load i32, ptr %27, align 4, !tbaa !9
  %991 = sub nsw i32 %989, %990
  store i32 %991, ptr %20, align 4, !tbaa !9
  %992 = load ptr, ptr %14, align 8, !tbaa !5
  %993 = load i32, ptr %20, align 4, !tbaa !9
  %994 = icmp sge i32 %993, 1
  br i1 %994, label %995, label %997

995:                                              ; preds = %985
  %996 = load i32, ptr %20, align 4, !tbaa !9
  br label %998

997:                                              ; preds = %985
  br label %998

998:                                              ; preds = %997, %995
  %999 = phi i32 [ %996, %995 ], [ 1, %997 ]
  %1000 = load i32, ptr %27, align 4, !tbaa !9
  %1001 = load i32, ptr %17, align 4, !tbaa !9
  %1002 = mul nsw i32 %1000, %1001
  %1003 = add nsw i32 %999, %1002
  %1004 = sext i32 %1003 to i64
  %1005 = getelementptr inbounds double, ptr %992, i64 %1004
  %1006 = getelementptr inbounds [2 x double], ptr %31, i64 0, i64 0
  %1007 = getelementptr inbounds [2 x double], ptr %31, i64 0, i64 1
  call void @dlassq_(ptr noundef %21, ptr noundef %1005, ptr noundef @c__1, ptr noundef %1006, ptr noundef %1007)
  %1008 = getelementptr inbounds [2 x double], ptr %33, i64 0, i64 0
  %1009 = getelementptr inbounds [2 x double], ptr %31, i64 0, i64 0
  call void @dcombssq_(ptr noundef %1008, ptr noundef %1009)
  br label %1010

1010:                                             ; preds = %998
  %1011 = load i32, ptr %27, align 4, !tbaa !9
  %1012 = add nsw i32 %1011, 1
  store i32 %1012, ptr %27, align 4, !tbaa !9
  br label %967, !llvm.loop !42

1013:                                             ; preds = %967
  br label %1014

1014:                                             ; preds = %1013, %955
  br label %1067

1015:                                             ; preds = %951
  %1016 = getelementptr inbounds [2 x double], ptr %33, i64 0, i64 0
  store double 0.000000e+00, ptr %1016, align 16, !tbaa !11
  %1017 = getelementptr inbounds [2 x double], ptr %33, i64 0, i64 1
  store double 1.000000e+00, ptr %1017, align 8, !tbaa !11
  %1018 = load ptr, ptr %12, align 8, !tbaa !5
  %1019 = load i32, ptr %1018, align 4, !tbaa !9
  store i32 %1019, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %27, align 4, !tbaa !9
  br label %1020

1020:                                             ; preds = %1063, %1015
  %1021 = load i32, ptr %27, align 4, !tbaa !9
  %1022 = load i32, ptr %19, align 4, !tbaa !9
  %1023 = icmp sle i32 %1021, %1022
  br i1 %1023, label %1024, label %1066

1024:                                             ; preds = %1020
  %1025 = getelementptr inbounds [2 x double], ptr %31, i64 0, i64 0
  store double 0.000000e+00, ptr %1025, align 16, !tbaa !11
  %1026 = getelementptr inbounds [2 x double], ptr %31, i64 0, i64 1
  store double 1.000000e+00, ptr %1026, align 8, !tbaa !11
  %1027 = load i32, ptr %27, align 4, !tbaa !9
  store i32 %1027, ptr %22, align 4, !tbaa !9
  %1028 = load ptr, ptr %13, align 8, !tbaa !5
  %1029 = load i32, ptr %1028, align 4, !tbaa !9
  %1030 = add nsw i32 %1029, 1
  store i32 %1030, ptr %20, align 4, !tbaa !9
  %1031 = load i32, ptr %22, align 4, !tbaa !9
  %1032 = load i32, ptr %20, align 4, !tbaa !9
  %1033 = icmp sle i32 %1031, %1032
  br i1 %1033, label %1034, label %1036

1034:                                             ; preds = %1024
  %1035 = load i32, ptr %22, align 4, !tbaa !9
  br label %1038

1036:                                             ; preds = %1024
  %1037 = load i32, ptr %20, align 4, !tbaa !9
  br label %1038

1038:                                             ; preds = %1036, %1034
  %1039 = phi i32 [ %1035, %1034 ], [ %1037, %1036 ]
  store i32 %1039, ptr %21, align 4, !tbaa !9
  %1040 = load ptr, ptr %13, align 8, !tbaa !5
  %1041 = load i32, ptr %1040, align 4, !tbaa !9
  %1042 = add nsw i32 %1041, 2
  %1043 = load i32, ptr %27, align 4, !tbaa !9
  %1044 = sub nsw i32 %1042, %1043
  store i32 %1044, ptr %23, align 4, !tbaa !9
  %1045 = load ptr, ptr %14, align 8, !tbaa !5
  %1046 = load i32, ptr %23, align 4, !tbaa !9
  %1047 = icmp sge i32 %1046, 1
  br i1 %1047, label %1048, label %1050

1048:                                             ; preds = %1038
  %1049 = load i32, ptr %23, align 4, !tbaa !9
  br label %1051

1050:                                             ; preds = %1038
  br label %1051

1051:                                             ; preds = %1050, %1048
  %1052 = phi i32 [ %1049, %1048 ], [ 1, %1050 ]
  %1053 = load i32, ptr %27, align 4, !tbaa !9
  %1054 = load i32, ptr %17, align 4, !tbaa !9
  %1055 = mul nsw i32 %1053, %1054
  %1056 = add nsw i32 %1052, %1055
  %1057 = sext i32 %1056 to i64
  %1058 = getelementptr inbounds double, ptr %1045, i64 %1057
  %1059 = getelementptr inbounds [2 x double], ptr %31, i64 0, i64 0
  %1060 = getelementptr inbounds [2 x double], ptr %31, i64 0, i64 1
  call void @dlassq_(ptr noundef %21, ptr noundef %1058, ptr noundef @c__1, ptr noundef %1059, ptr noundef %1060)
  %1061 = getelementptr inbounds [2 x double], ptr %33, i64 0, i64 0
  %1062 = getelementptr inbounds [2 x double], ptr %31, i64 0, i64 0
  call void @dcombssq_(ptr noundef %1061, ptr noundef %1062)
  br label %1063

1063:                                             ; preds = %1051
  %1064 = load i32, ptr %27, align 4, !tbaa !9
  %1065 = add nsw i32 %1064, 1
  store i32 %1065, ptr %27, align 4, !tbaa !9
  br label %1020, !llvm.loop !43

1066:                                             ; preds = %1020
  br label %1067

1067:                                             ; preds = %1066, %1014
  br label %1168

1068:                                             ; preds = %947
  %1069 = load ptr, ptr %11, align 8, !tbaa !5
  %1070 = call i32 @lsame_(ptr noundef %1069, ptr noundef @.str.1)
  %1071 = icmp ne i32 %1070, 0
  br i1 %1071, label %1072, label %1123

1072:                                             ; preds = %1068
  %1073 = getelementptr inbounds [2 x double], ptr %33, i64 0, i64 0
  store double 1.000000e+00, ptr %1073, align 16, !tbaa !11
  %1074 = load ptr, ptr %12, align 8, !tbaa !5
  %1075 = load i32, ptr %1074, align 4, !tbaa !9
  %1076 = sitofp i32 %1075 to double
  %1077 = getelementptr inbounds [2 x double], ptr %33, i64 0, i64 1
  store double %1076, ptr %1077, align 8, !tbaa !11
  %1078 = load ptr, ptr %13, align 8, !tbaa !5
  %1079 = load i32, ptr %1078, align 4, !tbaa !9
  %1080 = icmp sgt i32 %1079, 0
  br i1 %1080, label %1081, label %1122

1081:                                             ; preds = %1072
  %1082 = load ptr, ptr %12, align 8, !tbaa !5
  %1083 = load i32, ptr %1082, align 4, !tbaa !9
  %1084 = sub nsw i32 %1083, 1
  store i32 %1084, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %27, align 4, !tbaa !9
  br label %1085

1085:                                             ; preds = %1118, %1081
  %1086 = load i32, ptr %27, align 4, !tbaa !9
  %1087 = load i32, ptr %19, align 4, !tbaa !9
  %1088 = icmp sle i32 %1086, %1087
  br i1 %1088, label %1089, label %1121

1089:                                             ; preds = %1085
  %1090 = getelementptr inbounds [2 x double], ptr %31, i64 0, i64 0
  store double 0.000000e+00, ptr %1090, align 16, !tbaa !11
  %1091 = getelementptr inbounds [2 x double], ptr %31, i64 0, i64 1
  store double 1.000000e+00, ptr %1091, align 8, !tbaa !11
  %1092 = load ptr, ptr %12, align 8, !tbaa !5
  %1093 = load i32, ptr %1092, align 4, !tbaa !9
  %1094 = load i32, ptr %27, align 4, !tbaa !9
  %1095 = sub nsw i32 %1093, %1094
  store i32 %1095, ptr %22, align 4, !tbaa !9
  %1096 = load i32, ptr %22, align 4, !tbaa !9
  %1097 = load ptr, ptr %13, align 8, !tbaa !5
  %1098 = load i32, ptr %1097, align 4, !tbaa !9
  %1099 = icmp sle i32 %1096, %1098
  br i1 %1099, label %1100, label %1102

1100:                                             ; preds = %1089
  %1101 = load i32, ptr %22, align 4, !tbaa !9
  br label %1105

1102:                                             ; preds = %1089
  %1103 = load ptr, ptr %13, align 8, !tbaa !5
  %1104 = load i32, ptr %1103, align 4, !tbaa !9
  br label %1105

1105:                                             ; preds = %1102, %1100
  %1106 = phi i32 [ %1101, %1100 ], [ %1104, %1102 ]
  store i32 %1106, ptr %21, align 4, !tbaa !9
  %1107 = load ptr, ptr %14, align 8, !tbaa !5
  %1108 = load i32, ptr %27, align 4, !tbaa !9
  %1109 = load i32, ptr %17, align 4, !tbaa !9
  %1110 = mul nsw i32 %1108, %1109
  %1111 = add nsw i32 %1110, 2
  %1112 = sext i32 %1111 to i64
  %1113 = getelementptr inbounds double, ptr %1107, i64 %1112
  %1114 = getelementptr inbounds [2 x double], ptr %31, i64 0, i64 0
  %1115 = getelementptr inbounds [2 x double], ptr %31, i64 0, i64 1
  call void @dlassq_(ptr noundef %21, ptr noundef %1113, ptr noundef @c__1, ptr noundef %1114, ptr noundef %1115)
  %1116 = getelementptr inbounds [2 x double], ptr %33, i64 0, i64 0
  %1117 = getelementptr inbounds [2 x double], ptr %31, i64 0, i64 0
  call void @dcombssq_(ptr noundef %1116, ptr noundef %1117)
  br label %1118

1118:                                             ; preds = %1105
  %1119 = load i32, ptr %27, align 4, !tbaa !9
  %1120 = add nsw i32 %1119, 1
  store i32 %1120, ptr %27, align 4, !tbaa !9
  br label %1085, !llvm.loop !44

1121:                                             ; preds = %1085
  br label %1122

1122:                                             ; preds = %1121, %1072
  br label %1167

1123:                                             ; preds = %1068
  %1124 = getelementptr inbounds [2 x double], ptr %33, i64 0, i64 0
  store double 0.000000e+00, ptr %1124, align 16, !tbaa !11
  %1125 = getelementptr inbounds [2 x double], ptr %33, i64 0, i64 1
  store double 1.000000e+00, ptr %1125, align 8, !tbaa !11
  %1126 = load ptr, ptr %12, align 8, !tbaa !5
  %1127 = load i32, ptr %1126, align 4, !tbaa !9
  store i32 %1127, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %27, align 4, !tbaa !9
  br label %1128

1128:                                             ; preds = %1163, %1123
  %1129 = load i32, ptr %27, align 4, !tbaa !9
  %1130 = load i32, ptr %19, align 4, !tbaa !9
  %1131 = icmp sle i32 %1129, %1130
  br i1 %1131, label %1132, label %1166

1132:                                             ; preds = %1128
  %1133 = getelementptr inbounds [2 x double], ptr %31, i64 0, i64 0
  store double 0.000000e+00, ptr %1133, align 16, !tbaa !11
  %1134 = getelementptr inbounds [2 x double], ptr %31, i64 0, i64 1
  store double 1.000000e+00, ptr %1134, align 8, !tbaa !11
  %1135 = load ptr, ptr %12, align 8, !tbaa !5
  %1136 = load i32, ptr %1135, align 4, !tbaa !9
  %1137 = load i32, ptr %27, align 4, !tbaa !9
  %1138 = sub nsw i32 %1136, %1137
  %1139 = add nsw i32 %1138, 1
  store i32 %1139, ptr %22, align 4, !tbaa !9
  %1140 = load ptr, ptr %13, align 8, !tbaa !5
  %1141 = load i32, ptr %1140, align 4, !tbaa !9
  %1142 = add nsw i32 %1141, 1
  store i32 %1142, ptr %20, align 4, !tbaa !9
  %1143 = load i32, ptr %22, align 4, !tbaa !9
  %1144 = load i32, ptr %20, align 4, !tbaa !9
  %1145 = icmp sle i32 %1143, %1144
  br i1 %1145, label %1146, label %1148

1146:                                             ; preds = %1132
  %1147 = load i32, ptr %22, align 4, !tbaa !9
  br label %1150

1148:                                             ; preds = %1132
  %1149 = load i32, ptr %20, align 4, !tbaa !9
  br label %1150

1150:                                             ; preds = %1148, %1146
  %1151 = phi i32 [ %1147, %1146 ], [ %1149, %1148 ]
  store i32 %1151, ptr %21, align 4, !tbaa !9
  %1152 = load ptr, ptr %14, align 8, !tbaa !5
  %1153 = load i32, ptr %27, align 4, !tbaa !9
  %1154 = load i32, ptr %17, align 4, !tbaa !9
  %1155 = mul nsw i32 %1153, %1154
  %1156 = add nsw i32 %1155, 1
  %1157 = sext i32 %1156 to i64
  %1158 = getelementptr inbounds double, ptr %1152, i64 %1157
  %1159 = getelementptr inbounds [2 x double], ptr %31, i64 0, i64 0
  %1160 = getelementptr inbounds [2 x double], ptr %31, i64 0, i64 1
  call void @dlassq_(ptr noundef %21, ptr noundef %1158, ptr noundef @c__1, ptr noundef %1159, ptr noundef %1160)
  %1161 = getelementptr inbounds [2 x double], ptr %33, i64 0, i64 0
  %1162 = getelementptr inbounds [2 x double], ptr %31, i64 0, i64 0
  call void @dcombssq_(ptr noundef %1161, ptr noundef %1162)
  br label %1163

1163:                                             ; preds = %1150
  %1164 = load i32, ptr %27, align 4, !tbaa !9
  %1165 = add nsw i32 %1164, 1
  store i32 %1165, ptr %27, align 4, !tbaa !9
  br label %1128, !llvm.loop !45

1166:                                             ; preds = %1128
  br label %1167

1167:                                             ; preds = %1166, %1122
  br label %1168

1168:                                             ; preds = %1167, %1067
  %1169 = getelementptr inbounds [2 x double], ptr %33, i64 0, i64 0
  %1170 = load double, ptr %1169, align 16, !tbaa !11
  %1171 = getelementptr inbounds [2 x double], ptr %33, i64 0, i64 1
  %1172 = load double, ptr %1171, align 8, !tbaa !11
  %1173 = call double @sqrt(double noundef %1172) #4
  %1174 = fmul double %1170, %1173
  store double %1174, ptr %30, align 8, !tbaa !11
  br label %1175

1175:                                             ; preds = %1168, %943
  br label %1176

1176:                                             ; preds = %1175, %938
  br label %1177

1177:                                             ; preds = %1176, %570
  br label %1178

1178:                                             ; preds = %1177, %323
  br label %1179

1179:                                             ; preds = %1178, %49
  %1180 = load double, ptr %30, align 8, !tbaa !11
  store double %1180, ptr %24, align 8, !tbaa !11
  %1181 = load double, ptr %24, align 8, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 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
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #4
  ret double %1181
}

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

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

declare i32 @disnan_(ptr noundef) #2

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

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

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

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind }

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

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


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

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

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

19:                                               ; preds = %8
  %20 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %.not = icmp eq i32 %20, 0
  br i1 %.not, label %108, label %21

21:                                               ; preds = %19
  %22 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.1) #6
  %.not448 = icmp eq i32 %22, 0
  %23 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %.not449 = icmp eq i32 %23, 0
  %24 = load i32, ptr %3, align 4, !tbaa !5
  %.not450532 = icmp slt i32 %24, 1
  br i1 %.not448, label %66, label %25

25:                                               ; preds = %21
  br i1 %.not449, label %46, label %26

26:                                               ; preds = %25
  br i1 %.not450532, label %.loopexit467, label %.lr.ph497.preheader

.lr.ph497.preheader:                              ; preds = %26
  %27 = sext i32 %13 to i64
  %28 = add nuw i32 %24, 1
  %wide.trip.count = zext i32 %28 to i64
  br label %.lr.ph497

.lr.ph497:                                        ; preds = %.lr.ph497.preheader, %._crit_edge
  %indvars.iv690 = phi i64 [ 1, %.lr.ph497.preheader ], [ %indvars.iv.next691, %._crit_edge ]
  %indvars.iv = phi i32 [ 1, %.lr.ph497.preheader ], [ %indvars.iv.next, %._crit_edge ]
  %.0495 = phi double [ 1.000000e+00, %.lr.ph497.preheader ], [ %.1.lcssa, %._crit_edge ]
  %29 = load i32, ptr %4, align 4, !tbaa !5
  %30 = trunc nuw nsw i64 %indvars.iv690 to i32
  %reass.sub657 = sub i32 %29, %30
  %31 = add i32 %reass.sub657, 2
  %32 = call i32 @llvm.smax.i32(i32 %31, i32 1)
  %.not463490 = icmp sgt i32 %32, %29
  br i1 %.not463490, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph497
  %33 = mul nsw i64 %indvars.iv690, %27
  %34 = add i32 %29, %indvars.iv
  %smax = call i32 @llvm.smax.i32(i32 %34, i32 1)
  %35 = zext nneg i32 %smax to i64
  %invariant.gep843 = getelementptr double, ptr %15, i64 %33
  %36 = sext i32 %29 to i64
  br label %37

37:                                               ; preds = %.lr.ph, %45
  %indvars.iv687 = phi i64 [ %35, %.lr.ph ], [ %indvars.iv.next688, %45 ]
  %.1492 = phi double [ %.0495, %.lr.ph ], [ %.2, %45 ]
  %gep844 = getelementptr double, ptr %invariant.gep843, i64 %indvars.iv687
  %38 = load double, ptr %gep844, align 8, !tbaa !9
  %39 = fcmp oge double %38, 0.000000e+00
  %40 = fneg double %38
  %41 = select i1 %39, double %38, double %40
  store double %41, ptr %11, align 8, !tbaa !9
  %42 = fcmp olt double %.1492, %41
  br i1 %42, label %45, label %43

43:                                               ; preds = %37
  %44 = call i32 @disnan_(ptr noundef nonnull %11) #6
  %.not464 = icmp eq i32 %44, 0
  br i1 %.not464, label %45, label %._crit_edge818

._crit_edge818:                                   ; preds = %43
  %.pre = load double, ptr %11, align 8, !tbaa !9
  br label %45

45:                                               ; preds = %37, %._crit_edge818, %43
  %.2 = phi double [ %.1492, %43 ], [ %.pre, %._crit_edge818 ], [ %41, %37 ]
  %indvars.iv.next688 = add nuw nsw i64 %indvars.iv687, 1
  %.not463.not = icmp slt i64 %indvars.iv687, %36
  br i1 %.not463.not, label %37, label %._crit_edge, !llvm.loop !11

._crit_edge:                                      ; preds = %45, %.lr.ph497
  %.1.lcssa = phi double [ %.0495, %.lr.ph497 ], [ %.2, %45 ]
  %indvars.iv.next691 = add nuw nsw i64 %indvars.iv690, 1
  %indvars.iv.next = add nsw i32 %indvars.iv, -1
  %exitcond.not = icmp eq i64 %indvars.iv.next691, %wide.trip.count
  br i1 %exitcond.not, label %.loopexit467, label %.lr.ph497, !llvm.loop !13

46:                                               ; preds = %25
  br i1 %.not450532, label %.loopexit467, label %.lr.ph510.preheader

.lr.ph510.preheader:                              ; preds = %46
  %47 = sext i32 %13 to i64
  %48 = add nuw i32 %24, 1
  %wide.trip.count699 = zext i32 %48 to i64
  br label %.lr.ph510

.lr.ph510:                                        ; preds = %.lr.ph510.preheader, %._crit_edge504
  %indvars.iv696 = phi i64 [ 1, %.lr.ph510.preheader ], [ %indvars.iv.next697, %._crit_edge504 ]
  %.3508 = phi double [ 1.000000e+00, %.lr.ph510.preheader ], [ %.4.lcssa, %._crit_edge504 ]
  %49 = load i32, ptr %3, align 4, !tbaa !5
  %50 = trunc nuw nsw i64 %indvars.iv696 to i32
  %reass.sub658 = sub i32 %49, %50
  %51 = add i32 %reass.sub658, 1
  %52 = load i32, ptr %4, align 4, !tbaa !5
  %53 = add nsw i32 %52, 1
  %54 = call i32 @llvm.smin.i32(i32 %51, i32 %53)
  %.not460499 = icmp slt i32 %54, 2
  br i1 %.not460499, label %._crit_edge504, label %.lr.ph503

.lr.ph503:                                        ; preds = %.lr.ph510
  %55 = mul nsw i64 %indvars.iv696, %47
  %invariant.gep845 = getelementptr double, ptr %15, i64 %55
  %56 = zext nneg i32 %54 to i64
  br label %57

57:                                               ; preds = %.lr.ph503, %65
  %indvars.iv693 = phi i64 [ 2, %.lr.ph503 ], [ %indvars.iv.next694, %65 ]
  %.4501 = phi double [ %.3508, %.lr.ph503 ], [ %.5, %65 ]
  %gep846 = getelementptr double, ptr %invariant.gep845, i64 %indvars.iv693
  %58 = load double, ptr %gep846, align 8, !tbaa !9
  %59 = fcmp oge double %58, 0.000000e+00
  %60 = fneg double %58
  %61 = select i1 %59, double %58, double %60
  store double %61, ptr %11, align 8, !tbaa !9
  %62 = fcmp olt double %.4501, %61
  br i1 %62, label %65, label %63

63:                                               ; preds = %57
  %64 = call i32 @disnan_(ptr noundef nonnull %11) #6
  %.not461 = icmp eq i32 %64, 0
  br i1 %.not461, label %65, label %._crit_edge819

._crit_edge819:                                   ; preds = %63
  %.pre820 = load double, ptr %11, align 8, !tbaa !9
  br label %65

65:                                               ; preds = %57, %._crit_edge819, %63
  %.5 = phi double [ %.4501, %63 ], [ %.pre820, %._crit_edge819 ], [ %61, %57 ]
  %indvars.iv.next694 = add nuw nsw i64 %indvars.iv693, 1
  %.not460.not = icmp ult i64 %indvars.iv693, %56
  br i1 %.not460.not, label %57, label %._crit_edge504, !llvm.loop !14

._crit_edge504:                                   ; preds = %65, %.lr.ph510
  %.4.lcssa = phi double [ %.3508, %.lr.ph510 ], [ %.5, %65 ]
  %indvars.iv.next697 = add nuw nsw i64 %indvars.iv696, 1
  %exitcond700.not = icmp eq i64 %indvars.iv.next697, %wide.trip.count699
  br i1 %exitcond700.not, label %.loopexit467, label %.lr.ph510, !llvm.loop !15

66:                                               ; preds = %21
  br i1 %.not449, label %88, label %67

67:                                               ; preds = %66
  br i1 %.not450532, label %.loopexit467, label %.lr.ph523.preheader

.lr.ph523.preheader:                              ; preds = %67
  %68 = sext i32 %13 to i64
  %69 = add nuw i32 %24, 1
  %wide.trip.count710 = zext i32 %69 to i64
  br label %.lr.ph523

.lr.ph523:                                        ; preds = %.lr.ph523.preheader, %._crit_edge517
  %indvars.iv707 = phi i64 [ 1, %.lr.ph523.preheader ], [ %indvars.iv.next708, %._crit_edge517 ]
  %indvars.iv701 = phi i32 [ 1, %.lr.ph523.preheader ], [ %indvars.iv.next702, %._crit_edge517 ]
  %.6521 = phi double [ 0.000000e+00, %.lr.ph523.preheader ], [ %.7.lcssa, %._crit_edge517 ]
  %70 = load i32, ptr %4, align 4, !tbaa !5
  %71 = trunc nuw nsw i64 %indvars.iv707 to i32
  %reass.sub659 = sub i32 %70, %71
  %72 = add i32 %reass.sub659, 2
  %73 = add nsw i32 %70, 1
  %74 = call i32 @llvm.smax.i32(i32 %72, i32 1)
  %.not455512 = icmp sgt i32 %74, %73
  br i1 %.not455512, label %._crit_edge517, label %.lr.ph516

.lr.ph516:                                        ; preds = %.lr.ph523
  %75 = mul nsw i64 %indvars.iv707, %68
  %76 = add i32 %70, %indvars.iv701
  %smax703 = call i32 @llvm.smax.i32(i32 %76, i32 1)
  %77 = zext nneg i32 %smax703 to i64
  %78 = zext nneg i32 %70 to i64
  %invariant.gep847 = getelementptr double, ptr %15, i64 %75
  br label %79

79:                                               ; preds = %.lr.ph516, %87
  %indvars.iv704 = phi i64 [ %77, %.lr.ph516 ], [ %indvars.iv.next705, %87 ]
  %.7514 = phi double [ %.6521, %.lr.ph516 ], [ %.8, %87 ]
  %gep848 = getelementptr double, ptr %invariant.gep847, i64 %indvars.iv704
  %80 = load double, ptr %gep848, align 8, !tbaa !9
  %81 = fcmp oge double %80, 0.000000e+00
  %82 = fneg double %80
  %83 = select i1 %81, double %80, double %82
  store double %83, ptr %11, align 8, !tbaa !9
  %84 = fcmp olt double %.7514, %83
  br i1 %84, label %87, label %85

85:                                               ; preds = %79
  %86 = call i32 @disnan_(ptr noundef nonnull %11) #6
  %.not456 = icmp eq i32 %86, 0
  br i1 %.not456, label %87, label %._crit_edge821

._crit_edge821:                                   ; preds = %85
  %.pre822 = load double, ptr %11, align 8, !tbaa !9
  br label %87

87:                                               ; preds = %79, %._crit_edge821, %85
  %.8 = phi double [ %.7514, %85 ], [ %.pre822, %._crit_edge821 ], [ %83, %79 ]
  %indvars.iv.next705 = add nuw nsw i64 %indvars.iv704, 1
  %.not455 = icmp ugt i64 %indvars.iv704, %78
  br i1 %.not455, label %._crit_edge517, label %79, !llvm.loop !16

._crit_edge517:                                   ; preds = %87, %.lr.ph523
  %.7.lcssa = phi double [ %.6521, %.lr.ph523 ], [ %.8, %87 ]
  %indvars.iv.next708 = add nuw nsw i64 %indvars.iv707, 1
  %indvars.iv.next702 = add nsw i32 %indvars.iv701, -1
  %exitcond711.not = icmp eq i64 %indvars.iv.next708, %wide.trip.count710
  br i1 %exitcond711.not, label %.loopexit467, label %.lr.ph523, !llvm.loop !17

88:                                               ; preds = %66
  br i1 %.not450532, label %.loopexit467, label %.lr.ph536.preheader

.lr.ph536.preheader:                              ; preds = %88
  %89 = sext i32 %13 to i64
  %90 = add nuw i32 %24, 1
  %wide.trip.count718 = zext i32 %90 to i64
  br label %.lr.ph536

.lr.ph536:                                        ; preds = %.lr.ph536.preheader, %._crit_edge530
  %indvars.iv715 = phi i64 [ 1, %.lr.ph536.preheader ], [ %indvars.iv.next716, %._crit_edge530 ]
  %.9534 = phi double [ 0.000000e+00, %.lr.ph536.preheader ], [ %.10.lcssa, %._crit_edge530 ]
  %91 = load i32, ptr %3, align 4, !tbaa !5
  %92 = trunc nuw nsw i64 %indvars.iv715 to i32
  %reass.sub660 = sub i32 %91, %92
  %93 = add i32 %reass.sub660, 1
  %94 = load i32, ptr %4, align 4, !tbaa !5
  %95 = add nsw i32 %94, 1
  %96 = call i32 @llvm.smin.i32(i32 %93, i32 %95)
  %.not452525 = icmp slt i32 %96, 1
  br i1 %.not452525, label %._crit_edge530, label %.lr.ph529

.lr.ph529:                                        ; preds = %.lr.ph536
  %97 = mul nsw i64 %indvars.iv715, %89
  %98 = zext nneg i32 %96 to i64
  %invariant.gep849 = getelementptr double, ptr %15, i64 %97
  br label %99

99:                                               ; preds = %.lr.ph529, %107
  %indvars.iv712 = phi i64 [ 1, %.lr.ph529 ], [ %indvars.iv.next713, %107 ]
  %.10527 = phi double [ %.9534, %.lr.ph529 ], [ %.11, %107 ]
  %gep850 = getelementptr double, ptr %invariant.gep849, i64 %indvars.iv712
  %100 = load double, ptr %gep850, align 8, !tbaa !9
  %101 = fcmp oge double %100, 0.000000e+00
  %102 = fneg double %100
  %103 = select i1 %101, double %100, double %102
  store double %103, ptr %11, align 8, !tbaa !9
  %104 = fcmp olt double %.10527, %103
  br i1 %104, label %107, label %105

105:                                              ; preds = %99
  %106 = call i32 @disnan_(ptr noundef nonnull %11) #6
  %.not453 = icmp eq i32 %106, 0
  br i1 %.not453, label %107, label %._crit_edge823

._crit_edge823:                                   ; preds = %105
  %.pre824 = load double, ptr %11, align 8, !tbaa !9
  br label %107

107:                                              ; preds = %99, %._crit_edge823, %105
  %.11 = phi double [ %.10527, %105 ], [ %.pre824, %._crit_edge823 ], [ %103, %99 ]
  %indvars.iv.next713 = add nuw nsw i64 %indvars.iv712, 1
  %.not452.not = icmp ult i64 %indvars.iv712, %98
  br i1 %.not452.not, label %99, label %._crit_edge530, !llvm.loop !18

._crit_edge530:                                   ; preds = %107, %.lr.ph536
  %.10.lcssa = phi double [ %.9534, %.lr.ph536 ], [ %.11, %107 ]
  %indvars.iv.next716 = add nuw nsw i64 %indvars.iv715, 1
  %exitcond719.not = icmp eq i64 %indvars.iv.next716, %wide.trip.count718
  br i1 %exitcond719.not, label %.loopexit467, label %.lr.ph536, !llvm.loop !19

108:                                              ; preds = %19
  %109 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #6
  %.not400 = icmp eq i32 %109, 0
  br i1 %.not400, label %110, label %113

110:                                              ; preds = %108
  %111 = load i8, ptr %0, align 1, !tbaa !20
  %112 = icmp eq i8 %111, 49
  br i1 %112, label %113, label %225

113:                                              ; preds = %110, %108
  %114 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.1) #6
  %115 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %.not435 = icmp eq i32 %115, 0
  %116 = load i32, ptr %3, align 4, !tbaa !5
  %.not436649 = icmp slt i32 %116, 1
  br i1 %.not435, label %160, label %117

117:                                              ; preds = %113
  br i1 %.not436649, label %.loopexit467, label %.lr.ph635

.lr.ph635:                                        ; preds = %117
  %.not444 = icmp eq i32 %114, 0
  %118 = sext i32 %13 to i64
  %119 = add nuw i32 %116, 1
  %wide.trip.count804 = zext i32 %119 to i64
  br label %120

120:                                              ; preds = %.lr.ph635, %157
  %indvars.iv800 = phi i64 [ 1, %.lr.ph635 ], [ %indvars.iv.next801, %157 ]
  %indvars.iv790 = phi i32 [ 1, %.lr.ph635 ], [ %indvars.iv.next791, %157 ]
  %.4369.neg633 = phi i32 [ -1, %.lr.ph635 ], [ %159, %157 ]
  %.12632 = phi double [ 0.000000e+00, %.lr.ph635 ], [ %.13, %157 ]
  %121 = add nsw i32 %.4369.neg633, 2
  br i1 %.not444, label %137, label %122

122:                                              ; preds = %120
  store double 1.000000e+00, ptr %11, align 8, !tbaa !9
  %123 = load i32, ptr %4, align 4, !tbaa !5
  %124 = add i32 %121, %123
  %125 = call i32 @llvm.smax.i32(i32 %124, i32 1)
  %.not446618 = icmp sgt i32 %125, %123
  br i1 %.not446618, label %.loopexit468, label %.lr.ph621

.lr.ph621:                                        ; preds = %122
  %126 = mul nsw i64 %indvars.iv800, %118
  %127 = add i32 %123, %indvars.iv790
  %smax792 = call i32 @llvm.smax.i32(i32 %127, i32 1)
  %128 = zext nneg i32 %smax792 to i64
  %129 = zext nneg i32 %123 to i64
  %invariant.gep851 = getelementptr double, ptr %15, i64 %126
  br label %130

130:                                              ; preds = %.lr.ph621, %130
  %indvars.iv793 = phi i64 [ %128, %.lr.ph621 ], [ %indvars.iv.next794, %130 ]
  %131 = phi double [ 1.000000e+00, %.lr.ph621 ], [ %136, %130 ]
  %gep852 = getelementptr double, ptr %invariant.gep851, i64 %indvars.iv793
  %132 = load double, ptr %gep852, align 8, !tbaa !9
  %133 = fcmp oge double %132, 0.000000e+00
  %134 = fneg double %132
  %135 = select i1 %133, double %132, double %134
  %136 = fadd double %131, %135
  %indvars.iv.next794 = add nuw nsw i64 %indvars.iv793, 1
  %.not446.not = icmp ult i64 %indvars.iv793, %129
  br i1 %.not446.not, label %130, label %..loopexit469_crit_edge, !llvm.loop !21

137:                                              ; preds = %120
  store double 0.000000e+00, ptr %11, align 8, !tbaa !9
  %138 = load i32, ptr %4, align 4, !tbaa !5
  %139 = add i32 %121, %138
  %140 = add nsw i32 %138, 1
  %141 = call i32 @llvm.smax.i32(i32 %139, i32 1)
  %.not445624 = icmp sgt i32 %141, %140
  br i1 %.not445624, label %.loopexit468, label %.lr.ph627

.lr.ph627:                                        ; preds = %137
  %142 = mul nsw i64 %indvars.iv800, %118
  %143 = add i32 %138, %indvars.iv790
  %smax796 = call i32 @llvm.smax.i32(i32 %143, i32 1)
  %144 = zext nneg i32 %smax796 to i64
  %145 = zext nneg i32 %138 to i64
  %invariant.gep853 = getelementptr double, ptr %15, i64 %142
  br label %146

146:                                              ; preds = %.lr.ph627, %146
  %indvars.iv797 = phi i64 [ %144, %.lr.ph627 ], [ %indvars.iv.next798, %146 ]
  %147 = phi double [ 0.000000e+00, %.lr.ph627 ], [ %152, %146 ]
  %gep854 = getelementptr double, ptr %invariant.gep853, i64 %indvars.iv797
  %148 = load double, ptr %gep854, align 8, !tbaa !9
  %149 = fcmp oge double %148, 0.000000e+00
  %150 = fneg double %148
  %151 = select i1 %149, double %148, double %150
  %152 = fadd double %147, %151
  %indvars.iv.next798 = add nuw nsw i64 %indvars.iv797, 1
  %.not445 = icmp ugt i64 %indvars.iv797, %145
  br i1 %.not445, label %..loopexit468_crit_edge, label %146, !llvm.loop !22

..loopexit468_crit_edge:                          ; preds = %146
  store double %152, ptr %11, align 8, !tbaa !9
  br label %.loopexit468

..loopexit469_crit_edge:                          ; preds = %130
  store double %136, ptr %11, align 8, !tbaa !9
  br label %.loopexit468

.loopexit468:                                     ; preds = %122, %..loopexit469_crit_edge, %137, %..loopexit468_crit_edge
  %153 = phi double [ 1.000000e+00, %122 ], [ %136, %..loopexit469_crit_edge ], [ 0.000000e+00, %137 ], [ %152, %..loopexit468_crit_edge ]
  %154 = fcmp olt double %.12632, %153
  br i1 %154, label %157, label %155

155:                                              ; preds = %.loopexit468
  %156 = call i32 @disnan_(ptr noundef nonnull %11) #6
  %.not447 = icmp eq i32 %156, 0
  br i1 %.not447, label %157, label %._crit_edge827

._crit_edge827:                                   ; preds = %155
  %.pre828 = load double, ptr %11, align 8, !tbaa !9
  br label %157

157:                                              ; preds = %.loopexit468, %._crit_edge827, %155
  %.13 = phi double [ %.12632, %155 ], [ %.pre828, %._crit_edge827 ], [ %153, %.loopexit468 ]
  %indvars.iv.next801 = add nuw nsw i64 %indvars.iv800, 1
  %indvars.iv.next791 = add nsw i32 %indvars.iv790, -1
  %158 = trunc i64 %indvars.iv800 to i32
  %159 = xor i32 %158, -1
  %exitcond805.not = icmp eq i64 %indvars.iv.next801, %wide.trip.count804
  br i1 %exitcond805.not, label %.loopexit467, label %120, !llvm.loop !23

160:                                              ; preds = %113
  br i1 %.not436649, label %.loopexit467, label %.lr.ph655

.lr.ph655:                                        ; preds = %160
  %.not437 = icmp eq i32 %114, 0
  %161 = sext i32 %13 to i64
  %162 = add nuw i32 %116, 1
  %wide.trip.count816 = zext i32 %162 to i64
  br label %163

163:                                              ; preds = %.lr.ph655, %222
  %indvars.iv812 = phi i64 [ 1, %.lr.ph655 ], [ %indvars.iv.next813, %222 ]
  %.5370.neg653 = phi i32 [ -1, %.lr.ph655 ], [ %224, %222 ]
  %.14652 = phi double [ 0.000000e+00, %.lr.ph655 ], [ %.15, %222 ]
  %164 = add nsw i32 %.5370.neg653, 1
  br i1 %.not437, label %187, label %165

165:                                              ; preds = %163
  store double 1.000000e+00, ptr %11, align 8, !tbaa !9
  %166 = load i32, ptr %3, align 4, !tbaa !5
  %167 = add i32 %164, %166
  %168 = load i32, ptr %4, align 4, !tbaa !5
  %169 = add nsw i32 %168, 1
  %170 = call i32 @llvm.smin.i32(i32 %167, i32 %169)
  %.not441638 = icmp slt i32 %170, 2
  br i1 %.not441638, label %.loopexit, label %.lr.ph641

.lr.ph641:                                        ; preds = %165
  %171 = mul nsw i64 %indvars.iv812, %161
  %172 = zext nneg i32 %170 to i64
  %invariant.gep855 = getelementptr double, ptr %15, i64 %171
  %173 = add nsw i64 %172, -1
  %xtraiter = and i64 %173, 1
  %174 = icmp eq i32 %170, 2
  br i1 %174, label %..loopexit466_crit_edge.unr-lcssa, label %.lr.ph641.new

.lr.ph641.new:                                    ; preds = %.lr.ph641
  %unroll_iter = and i64 %173, -2
  br label %175

175:                                              ; preds = %175, %.lr.ph641.new
  %indvars.iv806 = phi i64 [ 2, %.lr.ph641.new ], [ %indvars.iv.next807.1, %175 ]
  %176 = phi double [ 1.000000e+00, %.lr.ph641.new ], [ %186, %175 ]
  %niter = phi i64 [ 0, %.lr.ph641.new ], [ %niter.next.1, %175 ]
  %gep856 = getelementptr double, ptr %invariant.gep855, i64 %indvars.iv806
  %177 = load double, ptr %gep856, align 8, !tbaa !9
  %178 = fcmp oge double %177, 0.000000e+00
  %179 = fneg double %177
  %180 = select i1 %178, double %177, double %179
  %181 = fadd double %176, %180
  %indvars.iv.next807 = or disjoint i64 %indvars.iv806, 1
  %gep856.1 = getelementptr double, ptr %invariant.gep855, i64 %indvars.iv.next807
  %182 = load double, ptr %gep856.1, align 8, !tbaa !9
  %183 = fcmp oge double %182, 0.000000e+00
  %184 = fneg double %182
  %185 = select i1 %183, double %182, double %184
  %186 = fadd double %181, %185
  %indvars.iv.next807.1 = add nuw nsw i64 %indvars.iv806, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1.not = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1.not, label %..loopexit466_crit_edge.unr-lcssa, label %175, !llvm.loop !24

187:                                              ; preds = %163
  store double 0.000000e+00, ptr %11, align 8, !tbaa !9
  %188 = load i32, ptr %3, align 4, !tbaa !5
  %189 = add i32 %164, %188
  %190 = load i32, ptr %4, align 4, !tbaa !5
  %191 = add nsw i32 %190, 1
  %192 = call i32 @llvm.smin.i32(i32 %189, i32 %191)
  %.not439644 = icmp slt i32 %192, 1
  br i1 %.not439644, label %.loopexit, label %.lr.ph647

.lr.ph647:                                        ; preds = %187
  %193 = mul nsw i64 %indvars.iv812, %161
  %194 = zext nneg i32 %192 to i64
  %invariant.gep857 = getelementptr double, ptr %15, i64 %193
  %xtraiter1044 = and i64 %194, 1
  %195 = icmp eq i32 %192, 1
  br i1 %195, label %..loopexit_crit_edge.unr-lcssa, label %.lr.ph647.new

.lr.ph647.new:                                    ; preds = %.lr.ph647
  %unroll_iter1048 = and i64 %194, 2147483646
  %invariant.gep1062 = getelementptr i8, ptr %invariant.gep857, i64 8
  br label %196

196:                                              ; preds = %196, %.lr.ph647.new
  %indvars.iv809 = phi i64 [ 1, %.lr.ph647.new ], [ %indvars.iv.next810.1, %196 ]
  %197 = phi double [ 0.000000e+00, %.lr.ph647.new ], [ %207, %196 ]
  %niter1049 = phi i64 [ 0, %.lr.ph647.new ], [ %niter1049.next.1, %196 ]
  %gep858 = getelementptr double, ptr %invariant.gep857, i64 %indvars.iv809
  %198 = load double, ptr %gep858, align 8, !tbaa !9
  %199 = fcmp oge double %198, 0.000000e+00
  %200 = fneg double %198
  %201 = select i1 %199, double %198, double %200
  %202 = fadd double %197, %201
  %gep1063 = getelementptr double, ptr %invariant.gep1062, i64 %indvars.iv809
  %203 = load double, ptr %gep1063, align 8, !tbaa !9
  %204 = fcmp oge double %203, 0.000000e+00
  %205 = fneg double %203
  %206 = select i1 %204, double %203, double %205
  %207 = fadd double %202, %206
  %indvars.iv.next810.1 = add nuw nsw i64 %indvars.iv809, 2
  %niter1049.next.1 = add i64 %niter1049, 2
  %niter1049.ncmp.1.not = icmp eq i64 %niter1049.next.1, %unroll_iter1048
  br i1 %niter1049.ncmp.1.not, label %..loopexit_crit_edge.unr-lcssa, label %196, !llvm.loop !25

..loopexit_crit_edge.unr-lcssa:                   ; preds = %196, %.lr.ph647
  %.lcssa1025.ph = phi double [ poison, %.lr.ph647 ], [ %207, %196 ]
  %indvars.iv809.unr = phi i64 [ 1, %.lr.ph647 ], [ %indvars.iv.next810.1, %196 ]
  %.unr1045 = phi double [ 0.000000e+00, %.lr.ph647 ], [ %207, %196 ]
  %lcmp.mod1046.not = icmp eq i64 %xtraiter1044, 0
  br i1 %lcmp.mod1046.not, label %..loopexit_crit_edge, label %..loopexit_crit_edge.epilog-lcssa

..loopexit_crit_edge.epilog-lcssa:                ; preds = %..loopexit_crit_edge.unr-lcssa
  %gep858.epil = getelementptr double, ptr %invariant.gep857, i64 %indvars.iv809.unr
  %208 = load double, ptr %gep858.epil, align 8, !tbaa !9
  %209 = fcmp oge double %208, 0.000000e+00
  %210 = fneg double %208
  %211 = select i1 %209, double %208, double %210
  %212 = fadd double %.unr1045, %211
  br label %..loopexit_crit_edge

..loopexit_crit_edge:                             ; preds = %..loopexit_crit_edge.unr-lcssa, %..loopexit_crit_edge.epilog-lcssa
  %.lcssa1025 = phi double [ %.lcssa1025.ph, %..loopexit_crit_edge.unr-lcssa ], [ %212, %..loopexit_crit_edge.epilog-lcssa ]
  store double %.lcssa1025, ptr %11, align 8, !tbaa !9
  br label %.loopexit

..loopexit466_crit_edge.unr-lcssa:                ; preds = %175, %.lr.ph641
  %.lcssa.ph = phi double [ poison, %.lr.ph641 ], [ %186, %175 ]
  %indvars.iv806.unr = phi i64 [ 2, %.lr.ph641 ], [ %indvars.iv.next807.1, %175 ]
  %.unr = phi double [ 1.000000e+00, %.lr.ph641 ], [ %186, %175 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %..loopexit466_crit_edge, label %..loopexit466_crit_edge.epilog-lcssa

..loopexit466_crit_edge.epilog-lcssa:             ; preds = %..loopexit466_crit_edge.unr-lcssa
  %gep856.epil = getelementptr double, ptr %invariant.gep855, i64 %indvars.iv806.unr
  %213 = load double, ptr %gep856.epil, align 8, !tbaa !9
  %214 = fcmp oge double %213, 0.000000e+00
  %215 = fneg double %213
  %216 = select i1 %214, double %213, double %215
  %217 = fadd double %.unr, %216
  br label %..loopexit466_crit_edge

..loopexit466_crit_edge:                          ; preds = %..loopexit466_crit_edge.unr-lcssa, %..loopexit466_crit_edge.epilog-lcssa
  %.lcssa = phi double [ %.lcssa.ph, %..loopexit466_crit_edge.unr-lcssa ], [ %217, %..loopexit466_crit_edge.epilog-lcssa ]
  store double %.lcssa, ptr %11, align 8, !tbaa !9
  br label %.loopexit

.loopexit:                                        ; preds = %165, %..loopexit466_crit_edge, %187, %..loopexit_crit_edge
  %218 = phi double [ 1.000000e+00, %165 ], [ %.lcssa, %..loopexit466_crit_edge ], [ 0.000000e+00, %187 ], [ %.lcssa1025, %..loopexit_crit_edge ]
  %219 = fcmp olt double %.14652, %218
  br i1 %219, label %222, label %220

220:                                              ; preds = %.loopexit
  %221 = call i32 @disnan_(ptr noundef nonnull %11) #6
  %.not442 = icmp eq i32 %221, 0
  br i1 %.not442, label %222, label %._crit_edge829

._crit_edge829:                                   ; preds = %220
  %.pre830 = load double, ptr %11, align 8, !tbaa !9
  br label %222

222:                                              ; preds = %.loopexit, %._crit_edge829, %220
  %.15 = phi double [ %.14652, %220 ], [ %.pre830, %._crit_edge829 ], [ %218, %.loopexit ]
  %indvars.iv.next813 = add nuw nsw i64 %indvars.iv812, 1
  %223 = trunc i64 %indvars.iv812 to i32
  %224 = xor i32 %223, -1
  %exitcond817.not = icmp eq i64 %indvars.iv.next813, %wide.trip.count816
  br i1 %exitcond817.not, label %.loopexit467, label %163, !llvm.loop !26

225:                                              ; preds = %110
  %226 = tail call i32 @lsame_(ptr noundef nonnull %0, ptr noundef nonnull @.str.3) #6
  %.not401 = icmp eq i32 %226, 0
  br i1 %.not401, label %537, label %227

227:                                              ; preds = %225
  %228 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %.not415 = icmp eq i32 %228, 0
  %229 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.1) #6
  %.not416 = icmp eq i32 %229, 0
  %230 = load i32, ptr %3, align 4, !tbaa !5
  %.not417580 = icmp slt i32 %230, 1
  br i1 %.not415, label %370, label %231

231:                                              ; preds = %227
  br i1 %.not416, label %306, label %232

232:                                              ; preds = %231
  br i1 %.not417580, label %.loopexit478, label %.lr.ph541.preheader

.lr.ph541.preheader:                              ; preds = %232
  %233 = add nuw i32 %230, 1
  %wide.trip.count723 = zext i32 %233 to i64
  %234 = zext nneg i32 %230 to i64
  %min.iters.check = icmp ult i32 %230, 4
  br i1 %min.iters.check, label %.lr.ph541.preheader1037, label %vector.ph

.lr.ph541.preheader1037:                          ; preds = %middle.block, %.lr.ph541.preheader
  %indvars.iv720.ph = phi i64 [ 1, %.lr.ph541.preheader ], [ %ind.end, %middle.block ]
  br label %.lr.ph541

vector.ph:                                        ; preds = %.lr.ph541.preheader
  %n.vec = and i64 %234, 2147483644
  %ind.end = or disjoint i64 %n.vec, 1
  br label %vector.body

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

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %234
  br i1 %cmp.n, label %.preheader484, label %.lr.ph541.preheader1037

.preheader484:                                    ; preds = %.lr.ph541, %middle.block
  br i1 %.not417580, label %.loopexit478, label %.lr.ph549

.lr.ph549:                                        ; preds = %.preheader484
  %238 = load i32, ptr %4, align 4, !tbaa !5
  %239 = sub i32 1, %238
  %240 = add nuw i32 %230, 1
  %wide.trip.count734 = zext i32 %240 to i64
  %.6371548662 = add i32 %13, -1
  %241 = add i32 %13, %238
  %scevgep = getelementptr i8, ptr %7, i64 -8
  %242 = shl nsw i64 %14, 3
  %scevgep878 = getelementptr i8, ptr %5, i64 %242
  %243 = getelementptr i8, ptr %5, i64 %242
  %244 = getelementptr i8, ptr %243, i64 8
  br label %246

.lr.ph541:                                        ; preds = %.lr.ph541.preheader1037, %.lr.ph541
  %indvars.iv720 = phi i64 [ %indvars.iv.next721, %.lr.ph541 ], [ %indvars.iv720.ph, %.lr.ph541.preheader1037 ]
  %245 = getelementptr inbounds double, ptr %16, i64 %indvars.iv720
  store double 1.000000e+00, ptr %245, 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 %.preheader484, label %.lr.ph541, !llvm.loop !30

246:                                              ; preds = %.lr.ph549, %._crit_edge546
  %indvar = phi i64 [ 0, %.lr.ph549 ], [ %indvar.next, %._crit_edge546 ]
  %indvars.iv731 = phi i64 [ 1, %.lr.ph549 ], [ %indvars.iv.next732, %._crit_edge546 ]
  %indvars.iv725 = phi i32 [ %239, %.lr.ph549 ], [ %indvars.iv.next726, %._crit_edge546 ]
  %smax882 = tail call i32 @llvm.smax.i32(i32 %indvars.iv725, i32 1)
  %247 = zext nneg i32 %smax882 to i64
  %248 = sub nsw i64 %indvars.iv731, %247
  %smax875 = tail call i32 @llvm.smax.i32(i32 %indvars.iv725, i32 1)
  %249 = zext nneg i32 %smax875 to i64
  %250 = shl nuw nsw i64 %249, 3
  %scevgep876 = getelementptr i8, ptr %scevgep, i64 %250
  %251 = shl nuw nsw i64 %indvar, 3
  %scevgep877 = getelementptr i8, ptr %7, i64 %251
  %252 = trunc i64 %indvar to i32
  %253 = mul i32 %.6371548662, %252
  %254 = add i32 %253, %241
  %255 = add i32 %smax875, %254
  %256 = sext i32 %255 to i64
  %257 = shl nsw i64 %256, 3
  %scevgep879 = getelementptr i8, ptr %scevgep878, i64 %257
  %scevgep880 = getelementptr i8, ptr %244, i64 %251
  %258 = sub nsw i64 %257, %250
  %scevgep881 = getelementptr i8, ptr %scevgep880, i64 %258
  %smax874 = tail call i32 @llvm.smax.i32(i32 %indvars.iv725, i32 1)
  %259 = zext nneg i32 %smax874 to i64
  %260 = sub i64 %indvar, %259
  %261 = trunc i64 %indvar to i32
  %262 = mul i32 %.6371548662, %261
  %263 = add i32 %262, %241
  %264 = add i32 %smax874, %263
  %265 = trunc i64 %indvars.iv731 to i32
  %266 = sub i32 %265, %238
  %267 = tail call i32 @llvm.smax.i32(i32 %266, i32 1)
  %268 = zext nneg i32 %267 to i64
  %.not434.not542 = icmp ugt i64 %indvars.iv731, %268
  br i1 %.not434.not542, label %.lr.ph545, label %._crit_edge546

.lr.ph545:                                        ; preds = %246
  %smax727 = tail call i32 @llvm.smax.i32(i32 %indvars.iv725, i32 1)
  %269 = zext nneg i32 %smax727 to i64
  %270 = trunc nuw nsw i64 %indvars.iv731 to i32
  %reass.sub661 = mul i32 %.6371548662, %270
  %271 = add i32 %reass.sub661, 1
  %272 = add i32 %271, %238
  %min.iters.check885 = icmp ult i64 %248, 4
  br i1 %min.iters.check885, label %scalar.ph884.preheader, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %.lr.ph545
  %273 = trunc i64 %260 to i32
  %274 = add i32 %264, %273
  %275 = icmp slt i32 %274, %264
  %276 = icmp ugt i64 %260, 4294967295
  %277 = or i1 %275, %276
  br i1 %277, label %scalar.ph884.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %vector.scevcheck
  %bound0 = icmp ult ptr %scevgep876, %scevgep881
  %bound1 = icmp ult ptr %scevgep879, %scevgep877
  %found.conflict = and i1 %bound0, %bound1
  br i1 %found.conflict, label %scalar.ph884.preheader, label %vector.ph886

vector.ph886:                                     ; preds = %vector.memcheck
  %n.vec888 = and i64 %248, -4
  %ind.end889 = add i64 %n.vec888, %269
  %invariant.gep1054 = getelementptr double, ptr %16, i64 %269
  br label %vector.body891

vector.body891:                                   ; preds = %vector.body891, %vector.ph886
  %index892 = phi i64 [ 0, %vector.ph886 ], [ %index.next898, %vector.body891 ]
  %278 = trunc i64 %index892 to i32
  %279 = add i32 %smax727, %278
  %280 = add i32 %272, %279
  %281 = sext i32 %280 to i64
  %282 = getelementptr inbounds double, ptr %15, i64 %281
  %283 = getelementptr inbounds i8, ptr %282, i64 16
  %wide.load = load <2 x double>, ptr %282, align 8, !tbaa !9, !alias.scope !31
  %wide.load895 = load <2 x double>, ptr %283, align 8, !tbaa !9, !alias.scope !31
  %284 = fcmp oge <2 x double> %wide.load, zeroinitializer
  %285 = fcmp oge <2 x double> %wide.load895, zeroinitializer
  %286 = fneg <2 x double> %wide.load
  %287 = fneg <2 x double> %wide.load895
  %288 = select <2 x i1> %284, <2 x double> %wide.load, <2 x double> %286
  %289 = select <2 x i1> %285, <2 x double> %wide.load895, <2 x double> %287
  %gep1055 = getelementptr double, ptr %invariant.gep1054, i64 %index892
  %290 = getelementptr inbounds i8, ptr %gep1055, i64 16
  %wide.load896 = load <2 x double>, ptr %gep1055, align 8, !tbaa !9, !alias.scope !34, !noalias !31
  %wide.load897 = load <2 x double>, ptr %290, align 8, !tbaa !9, !alias.scope !34, !noalias !31
  %291 = fadd <2 x double> %wide.load896, %288
  %292 = fadd <2 x double> %wide.load897, %289
  store <2 x double> %291, ptr %gep1055, align 8, !tbaa !9, !alias.scope !34, !noalias !31
  store <2 x double> %292, ptr %290, align 8, !tbaa !9, !alias.scope !34, !noalias !31
  %index.next898 = add nuw i64 %index892, 4
  %293 = icmp eq i64 %index.next898, %n.vec888
  br i1 %293, label %middle.block883, label %vector.body891, !llvm.loop !36

middle.block883:                                  ; preds = %vector.body891
  %cmp.n899 = icmp eq i64 %248, %n.vec888
  br i1 %cmp.n899, label %._crit_edge546, label %scalar.ph884.preheader

scalar.ph884.preheader:                           ; preds = %middle.block883, %vector.memcheck, %vector.scevcheck, %.lr.ph545
  %indvars.iv728.ph = phi i64 [ %269, %vector.memcheck ], [ %269, %vector.scevcheck ], [ %269, %.lr.ph545 ], [ %ind.end889, %middle.block883 ]
  br label %scalar.ph884

scalar.ph884:                                     ; preds = %scalar.ph884.preheader, %scalar.ph884
  %indvars.iv728 = phi i64 [ %indvars.iv.next729, %scalar.ph884 ], [ %indvars.iv728.ph, %scalar.ph884.preheader ]
  %294 = trunc nuw nsw i64 %indvars.iv728 to i32
  %295 = add i32 %272, %294
  %296 = sext i32 %295 to i64
  %297 = getelementptr inbounds double, ptr %15, i64 %296
  %298 = load double, ptr %297, align 8, !tbaa !9
  %299 = fcmp oge double %298, 0.000000e+00
  %300 = fneg double %298
  %301 = select i1 %299, double %298, double %300
  %302 = getelementptr inbounds double, ptr %16, i64 %indvars.iv728
  %303 = load double, ptr %302, align 8, !tbaa !9
  %304 = fadd double %303, %301
  store double %304, ptr %302, align 8, !tbaa !9
  %indvars.iv.next729 = add nuw nsw i64 %indvars.iv728, 1
  %305 = icmp ult i64 %indvars.iv.next729, %indvars.iv731
  br i1 %305, label %scalar.ph884, label %._crit_edge546, !llvm.loop !37

._crit_edge546:                                   ; preds = %scalar.ph884, %middle.block883, %246
  %indvars.iv.next732 = add nuw nsw i64 %indvars.iv731, 1
  %indvars.iv.next726 = add i32 %indvars.iv725, 1
  %exitcond735.not = icmp eq i64 %indvars.iv.next732, %wide.trip.count734
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond735.not, label %.loopexit478, label %246, !llvm.loop !38

306:                                              ; preds = %231
  br i1 %.not417580, label %.loopexit478, label %.lr.ph564

.lr.ph564:                                        ; preds = %306
  %307 = zext nneg i32 %230 to i64
  %308 = shl nuw nsw i64 %307, 3
  tail call void @llvm.memset.p0.i64(ptr align 8 %7, i8 0, i64 %308, i1 false), !tbaa !9
  %309 = load i32, ptr %4, align 4, !tbaa !5
  %310 = sub i32 1, %309
  %311 = add nuw i32 %230, 1
  %wide.trip.count748 = zext i32 %311 to i64
  %.not429555 = icmp slt i32 %309, 0
  %.7372563664 = add i32 %13, -1
  %312 = add i32 %13, %309
  %scevgep905 = getelementptr i8, ptr %7, i64 -8
  %313 = shl nsw i64 %14, 3
  %scevgep910 = getelementptr i8, ptr %5, i64 %313
  %314 = getelementptr i8, ptr %5, i64 %313
  %scevgep912 = getelementptr i8, ptr %314, i64 8
  br label %315

315:                                              ; preds = %.lr.ph564, %._crit_edge559
  %indvar902 = phi i32 [ 0, %.lr.ph564 ], [ %indvar.next903, %._crit_edge559 ]
  %indvars.iv745 = phi i64 [ 1, %.lr.ph564 ], [ %indvars.iv.next746, %._crit_edge559 ]
  %indvars.iv739 = phi i32 [ %310, %.lr.ph564 ], [ %indvars.iv.next740, %._crit_edge559 ]
  %smax917 = tail call i32 @llvm.smax.i32(i32 %indvars.iv739, i32 1)
  %316 = zext nneg i32 %smax917 to i64
  %umax918 = tail call i64 @llvm.umax.i64(i64 %indvars.iv745, i64 %316)
  %317 = add nuw i64 %umax918, 1
  %318 = sub i64 %317, %316
  %smax906 = tail call i32 @llvm.smax.i32(i32 %indvars.iv739, i32 1)
  %319 = zext nneg i32 %smax906 to i64
  %320 = shl nuw nsw i64 %319, 3
  %scevgep907 = getelementptr i8, ptr %scevgep905, i64 %320
  %umax908 = tail call i64 @llvm.umax.i64(i64 %indvars.iv745, i64 %319)
  %321 = shl nuw nsw i64 %umax908, 3
  %scevgep909 = getelementptr i8, ptr %7, i64 %321
  %322 = mul i32 %.7372563664, %indvar902
  %323 = add i32 %312, %322
  %324 = add i32 %smax906, %323
  %325 = sext i32 %324 to i64
  %326 = shl nsw i64 %325, 3
  %scevgep911 = getelementptr i8, ptr %scevgep910, i64 %326
  %327 = add i64 %321, %326
  %328 = sub i64 %327, %320
  %scevgep913 = getelementptr i8, ptr %scevgep912, i64 %328
  %smax901 = tail call i32 @llvm.smax.i32(i32 %indvars.iv739, i32 1)
  %329 = zext nneg i32 %smax901 to i64
  %330 = tail call i64 @llvm.usub.sat.i64(i64 %indvars.iv745, i64 %329)
  %331 = mul i32 %.7372563664, %indvar902
  %332 = add i32 %312, %331
  %333 = add i32 %smax901, %332
  br i1 %.not429555, label %._crit_edge559, label %.lr.ph558

.lr.ph558:                                        ; preds = %315
  %smax741 = tail call i32 @llvm.smax.i32(i32 %indvars.iv739, i32 1)
  %334 = zext nneg i32 %smax741 to i64
  %335 = trunc nuw nsw i64 %indvars.iv745 to i32
  %reass.sub663 = mul i32 %.7372563664, %335
  %336 = add i32 %reass.sub663, 1
  %337 = add i32 %336, %309
  %min.iters.check921 = icmp ult i64 %318, 4
  br i1 %min.iters.check921, label %scalar.ph920.preheader, label %vector.scevcheck900

vector.scevcheck900:                              ; preds = %.lr.ph558
  %338 = trunc i64 %330 to i32
  %339 = add i32 %333, %338
  %340 = icmp slt i32 %339, %333
  %341 = icmp ugt i64 %330, 4294967295
  %342 = or i1 %340, %341
  br i1 %342, label %scalar.ph920.preheader, label %vector.memcheck904

vector.memcheck904:                               ; preds = %vector.scevcheck900
  %bound0914 = icmp ult ptr %scevgep907, %scevgep913
  %bound1915 = icmp ult ptr %scevgep911, %scevgep909
  %found.conflict916 = and i1 %bound0914, %bound1915
  br i1 %found.conflict916, label %scalar.ph920.preheader, label %vector.ph922

vector.ph922:                                     ; preds = %vector.memcheck904
  %n.vec924 = and i64 %318, -4
  %ind.end925 = add i64 %n.vec924, %334
  %invariant.gep1056 = getelementptr double, ptr %16, i64 %334
  br label %vector.body927

vector.body927:                                   ; preds = %vector.body927, %vector.ph922
  %index928 = phi i64 [ 0, %vector.ph922 ], [ %index.next935, %vector.body927 ]
  %343 = trunc i64 %index928 to i32
  %344 = add i32 %smax741, %343
  %345 = add i32 %337, %344
  %346 = sext i32 %345 to i64
  %347 = getelementptr inbounds double, ptr %15, i64 %346
  %348 = getelementptr inbounds i8, ptr %347, i64 16
  %wide.load931 = load <2 x double>, ptr %347, align 8, !tbaa !9, !alias.scope !39
  %wide.load932 = load <2 x double>, ptr %348, align 8, !tbaa !9, !alias.scope !39
  %349 = fcmp oge <2 x double> %wide.load931, zeroinitializer
  %350 = fcmp oge <2 x double> %wide.load932, zeroinitializer
  %351 = fneg <2 x double> %wide.load931
  %352 = fneg <2 x double> %wide.load932
  %353 = select <2 x i1> %349, <2 x double> %wide.load931, <2 x double> %351
  %354 = select <2 x i1> %350, <2 x double> %wide.load932, <2 x double> %352
  %gep1057 = getelementptr double, ptr %invariant.gep1056, i64 %index928
  %355 = getelementptr inbounds i8, ptr %gep1057, i64 16
  %wide.load933 = load <2 x double>, ptr %gep1057, align 8, !tbaa !9, !alias.scope !42, !noalias !39
  %wide.load934 = load <2 x double>, ptr %355, align 8, !tbaa !9, !alias.scope !42, !noalias !39
  %356 = fadd <2 x double> %wide.load933, %353
  %357 = fadd <2 x double> %wide.load934, %354
  store <2 x double> %356, ptr %gep1057, align 8, !tbaa !9, !alias.scope !42, !noalias !39
  store <2 x double> %357, ptr %355, align 8, !tbaa !9, !alias.scope !42, !noalias !39
  %index.next935 = add nuw i64 %index928, 4
  %358 = icmp eq i64 %index.next935, %n.vec924
  br i1 %358, label %middle.block919, label %vector.body927, !llvm.loop !44

middle.block919:                                  ; preds = %vector.body927
  %cmp.n936 = icmp eq i64 %318, %n.vec924
  br i1 %cmp.n936, label %._crit_edge559, label %scalar.ph920.preheader

scalar.ph920.preheader:                           ; preds = %middle.block919, %vector.memcheck904, %vector.scevcheck900, %.lr.ph558
  %indvars.iv742.ph = phi i64 [ %334, %vector.memcheck904 ], [ %334, %vector.scevcheck900 ], [ %334, %.lr.ph558 ], [ %ind.end925, %middle.block919 ]
  br label %scalar.ph920

scalar.ph920:                                     ; preds = %scalar.ph920.preheader, %scalar.ph920
  %indvars.iv742 = phi i64 [ %indvars.iv.next743, %scalar.ph920 ], [ %indvars.iv742.ph, %scalar.ph920.preheader ]
  %359 = trunc nuw nsw i64 %indvars.iv742 to i32
  %360 = add i32 %337, %359
  %361 = sext i32 %360 to i64
  %362 = getelementptr inbounds double, ptr %15, i64 %361
  %363 = load double, ptr %362, align 8, !tbaa !9
  %364 = fcmp oge double %363, 0.000000e+00
  %365 = fneg double %363
  %366 = select i1 %364, double %363, double %365
  %367 = getelementptr inbounds double, ptr %16, i64 %indvars.iv742
  %368 = load double, ptr %367, align 8, !tbaa !9
  %369 = fadd double %368, %366
  store double %369, ptr %367, align 8, !tbaa !9
  %indvars.iv.next743 = add nuw nsw i64 %indvars.iv742, 1
  %.not429.not = icmp ult i64 %indvars.iv742, %indvars.iv745
  br i1 %.not429.not, label %scalar.ph920, label %._crit_edge559, !llvm.loop !45

._crit_edge559:                                   ; preds = %scalar.ph920, %middle.block919, %315
  %indvars.iv.next746 = add nuw nsw i64 %indvars.iv745, 1
  %indvars.iv.next740 = add i32 %indvars.iv739, 1
  %exitcond749.not = icmp eq i64 %indvars.iv.next746, %wide.trip.count748
  %indvar.next903 = add i32 %indvar902, 1
  br i1 %exitcond749.not, label %.loopexit478, label %315, !llvm.loop !46

370:                                              ; preds = %227
  br i1 %.not416, label %453, label %371

371:                                              ; preds = %370
  br i1 %.not417580, label %.loopexit478, label %.lr.ph569.preheader

.lr.ph569.preheader:                              ; preds = %371
  %372 = add nuw i32 %230, 1
  %wide.trip.count753 = zext i32 %372 to i64
  %373 = zext nneg i32 %230 to i64
  %min.iters.check939 = icmp ult i32 %230, 4
  br i1 %min.iters.check939, label %.lr.ph569.preheader1034, label %vector.ph940

.lr.ph569.preheader1034:                          ; preds = %middle.block937, %.lr.ph569.preheader
  %indvars.iv750.ph = phi i64 [ 1, %.lr.ph569.preheader ], [ %ind.end943, %middle.block937 ]
  br label %.lr.ph569

vector.ph940:                                     ; preds = %.lr.ph569.preheader
  %n.vec942 = and i64 %373, 2147483644
  %ind.end943 = or disjoint i64 %n.vec942, 1
  br label %vector.body945

vector.body945:                                   ; preds = %vector.body945, %vector.ph940
  %index946 = phi i64 [ 0, %vector.ph940 ], [ %index.next948, %vector.body945 ]
  %374 = getelementptr double, ptr %7, i64 %index946
  %375 = getelementptr inbounds i8, ptr %374, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %374, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %375, align 8, !tbaa !9
  %index.next948 = add nuw i64 %index946, 4
  %376 = icmp eq i64 %index.next948, %n.vec942
  br i1 %376, label %middle.block937, label %vector.body945, !llvm.loop !47

middle.block937:                                  ; preds = %vector.body945
  %cmp.n949 = icmp eq i64 %n.vec942, %373
  br i1 %cmp.n949, label %.preheader480, label %.lr.ph569.preheader1034

.preheader480:                                    ; preds = %.lr.ph569, %middle.block937
  br i1 %.not417580, label %.loopexit478, label %.lr.ph578

.lr.ph578:                                        ; preds = %.preheader480
  %377 = load i32, ptr %4, align 4, !tbaa !5
  %.8373577666 = add i32 %13, -1
  %378 = add nuw i32 %230, 1
  %379 = sext i32 %377 to i64
  %380 = add nsw i64 %379, 1
  %381 = zext nneg i32 %230 to i64
  %382 = add i32 %13, 2
  %scevgep955 = getelementptr i8, ptr %7, i64 -8
  %383 = sext i32 %377 to i64
  %384 = add nsw i64 %383, 1
  %385 = zext nneg i32 %230 to i64
  %386 = shl nsw i64 %14, 3
  %scevgep960 = getelementptr i8, ptr %5, i64 %386
  %387 = add i32 %13, 2
  %388 = getelementptr i8, ptr %5, i64 %386
  %scevgep962 = getelementptr i8, ptr %388, i64 8
  %389 = sext i32 %377 to i64
  %390 = add nsw i64 %389, 1
  %391 = zext nneg i32 %230 to i64
  br label %393

.lr.ph569:                                        ; preds = %.lr.ph569.preheader1034, %.lr.ph569
  %indvars.iv750 = phi i64 [ %indvars.iv.next751, %.lr.ph569 ], [ %indvars.iv750.ph, %.lr.ph569.preheader1034 ]
  %392 = getelementptr inbounds double, ptr %16, i64 %indvars.iv750
  store double 1.000000e+00, ptr %392, align 8, !tbaa !9
  %indvars.iv.next751 = add nuw nsw i64 %indvars.iv750, 1
  %exitcond754.not = icmp eq i64 %indvars.iv.next751, %wide.trip.count753
  br i1 %exitcond754.not, label %.preheader480, label %.lr.ph569, !llvm.loop !48

.loopexit479:                                     ; preds = %scalar.ph970, %middle.block969, %393
  %indvars.iv.next756 = add nuw i32 %indvars.iv755, 1
  %exitcond760.not = icmp eq i32 %indvars.iv755, %378
  %indvar.next952 = add i64 %indvar951, 1
  br i1 %exitcond760.not, label %.loopexit478, label %393, !llvm.loop !49

393:                                              ; preds = %.lr.ph578, %.loopexit479
  %indvar951 = phi i64 [ 0, %.lr.ph578 ], [ %indvar.next952, %.loopexit479 ]
  %indvars.iv755 = phi i32 [ 2, %.lr.ph578 ], [ %indvars.iv.next756, %.loopexit479 ]
  %.8373577 = phi i32 [ 1, %.lr.ph578 ], [ %417, %.loopexit479 ]
  %394 = add i64 %390, %indvar951
  %smin967 = tail call i64 @llvm.smin.i64(i64 %394, i64 %391)
  %395 = sext i32 %indvars.iv755 to i64
  %smax968 = tail call i64 @llvm.smax.i64(i64 %smin967, i64 %395)
  %396 = add i64 %smax968, 1
  %397 = sub i64 %396, %395
  %398 = sext i32 %indvars.iv755 to i64
  %399 = shl nsw i64 %398, 3
  %scevgep956 = getelementptr i8, ptr %scevgep955, i64 %399
  %400 = add i64 %384, %indvar951
  %smin957 = tail call i64 @llvm.smin.i64(i64 %400, i64 %385)
  %smax958 = tail call i64 @llvm.smax.i64(i64 %smin957, i64 %398)
  %401 = shl nsw i64 %smax958, 3
  %scevgep959 = getelementptr i8, ptr %7, i64 %401
  %402 = trunc i64 %indvar951 to i32
  %403 = mul i32 %13, %402
  %404 = add i32 %403, %387
  %405 = sext i32 %404 to i64
  %406 = shl nsw i64 %405, 3
  %scevgep961 = getelementptr i8, ptr %scevgep960, i64 %406
  %407 = add i64 %401, %406
  %408 = sub i64 %407, %399
  %scevgep963 = getelementptr i8, ptr %scevgep962, i64 %408
  %409 = add i64 %380, %indvar951
  %smin = tail call i64 @llvm.smin.i64(i64 %409, i64 %381)
  %410 = sext i32 %indvars.iv755 to i64
  %smax953 = tail call i64 @llvm.smax.i64(i64 %smin, i64 %410)
  %411 = sub i64 %smax953, %410
  %412 = trunc i64 %indvar951 to i32
  %413 = mul i32 %13, %412
  %414 = add i32 %413, %382
  %415 = add nsw i32 %377, %.8373577
  %416 = tail call i32 @llvm.smin.i32(i32 %230, i32 %415)
  %417 = add nuw nsw i32 %.8373577, 1
  %.not424570.not = icmp slt i32 %.8373577, %416
  br i1 %.not424570.not, label %.lr.ph573, label %.loopexit479

.lr.ph573:                                        ; preds = %393
  %418 = sext i32 %indvars.iv755 to i64
  %reass.sub665 = mul i32 %.8373577, %.8373577666
  %419 = add i32 %reass.sub665, 1
  %420 = sext i32 %416 to i64
  %min.iters.check971 = icmp ult i64 %397, 4
  br i1 %min.iters.check971, label %scalar.ph970.preheader, label %vector.scevcheck950

vector.scevcheck950:                              ; preds = %.lr.ph573
  %421 = trunc i64 %411 to i32
  %422 = add i32 %414, %421
  %423 = icmp slt i32 %422, %414
  %424 = icmp ugt i64 %411, 4294967295
  %425 = or i1 %423, %424
  br i1 %425, label %scalar.ph970.preheader, label %vector.memcheck954

vector.memcheck954:                               ; preds = %vector.scevcheck950
  %bound0964 = icmp ult ptr %scevgep956, %scevgep963
  %bound1965 = icmp ult ptr %scevgep961, %scevgep959
  %found.conflict966 = and i1 %bound0964, %bound1965
  br i1 %found.conflict966, label %scalar.ph970.preheader, label %vector.ph972

vector.ph972:                                     ; preds = %vector.memcheck954
  %n.vec974 = and i64 %397, -4
  %ind.end975 = add i64 %n.vec974, %418
  %invariant.gep1058 = getelementptr double, ptr %16, i64 %418
  br label %vector.body977

vector.body977:                                   ; preds = %vector.body977, %vector.ph972
  %index978 = phi i64 [ 0, %vector.ph972 ], [ %index.next985, %vector.body977 ]
  %426 = trunc i64 %index978 to i32
  %427 = add i32 %indvars.iv755, %426
  %428 = add i32 %419, %427
  %429 = sext i32 %428 to i64
  %430 = getelementptr inbounds double, ptr %15, i64 %429
  %431 = getelementptr inbounds i8, ptr %430, i64 16
  %wide.load981 = load <2 x double>, ptr %430, align 8, !tbaa !9, !alias.scope !50
  %wide.load982 = load <2 x double>, ptr %431, align 8, !tbaa !9, !alias.scope !50
  %432 = fcmp oge <2 x double> %wide.load981, zeroinitializer
  %433 = fcmp oge <2 x double> %wide.load982, zeroinitializer
  %434 = fneg <2 x double> %wide.load981
  %435 = fneg <2 x double> %wide.load982
  %436 = select <2 x i1> %432, <2 x double> %wide.load981, <2 x double> %434
  %437 = select <2 x i1> %433, <2 x double> %wide.load982, <2 x double> %435
  %gep1059 = getelementptr double, ptr %invariant.gep1058, i64 %index978
  %438 = getelementptr inbounds i8, ptr %gep1059, i64 16
  %wide.load983 = load <2 x double>, ptr %gep1059, align 8, !tbaa !9, !alias.scope !53, !noalias !50
  %wide.load984 = load <2 x double>, ptr %438, align 8, !tbaa !9, !alias.scope !53, !noalias !50
  %439 = fadd <2 x double> %wide.load983, %436
  %440 = fadd <2 x double> %wide.load984, %437
  store <2 x double> %439, ptr %gep1059, align 8, !tbaa !9, !alias.scope !53, !noalias !50
  store <2 x double> %440, ptr %438, align 8, !tbaa !9, !alias.scope !53, !noalias !50
  %index.next985 = add nuw i64 %index978, 4
  %441 = icmp eq i64 %index.next985, %n.vec974
  br i1 %441, label %middle.block969, label %vector.body977, !llvm.loop !55

middle.block969:                                  ; preds = %vector.body977
  %cmp.n986 = icmp eq i64 %397, %n.vec974
  br i1 %cmp.n986, label %.loopexit479, label %scalar.ph970.preheader

scalar.ph970.preheader:                           ; preds = %middle.block969, %vector.memcheck954, %vector.scevcheck950, %.lr.ph573
  %indvars.iv757.ph = phi i64 [ %418, %vector.memcheck954 ], [ %418, %vector.scevcheck950 ], [ %418, %.lr.ph573 ], [ %ind.end975, %middle.block969 ]
  br label %scalar.ph970

scalar.ph970:                                     ; preds = %scalar.ph970.preheader, %scalar.ph970
  %indvars.iv757 = phi i64 [ %indvars.iv.next758, %scalar.ph970 ], [ %indvars.iv757.ph, %scalar.ph970.preheader ]
  %442 = trunc nsw i64 %indvars.iv757 to i32
  %443 = add i32 %419, %442
  %444 = sext i32 %443 to i64
  %445 = getelementptr inbounds double, ptr %15, i64 %444
  %446 = load double, ptr %445, align 8, !tbaa !9
  %447 = fcmp oge double %446, 0.000000e+00
  %448 = fneg double %446
  %449 = select i1 %447, double %446, double %448
  %450 = getelementptr inbounds double, ptr %16, i64 %indvars.iv757
  %451 = load double, ptr %450, align 8, !tbaa !9
  %452 = fadd double %451, %449
  store double %452, ptr %450, align 8, !tbaa !9
  %indvars.iv.next758 = add nuw nsw i64 %indvars.iv757, 1
  %.not424.not = icmp slt i64 %indvars.iv757, %420
  br i1 %.not424.not, label %scalar.ph970, label %.loopexit479, !llvm.loop !56

453:                                              ; preds = %370
  br i1 %.not417580, label %.loopexit478, label %.lr.ph593

.lr.ph593:                                        ; preds = %453
  %454 = zext nneg i32 %230 to i64
  %455 = shl nuw nsw i64 %454, 3
  tail call void @llvm.memset.p0.i64(ptr align 8 %7, i8 0, i64 %455, i1 false), !tbaa !9
  %456 = load i32, ptr %4, align 4, !tbaa !5
  %457 = add nuw i32 %230, 1
  %wide.trip.count771 = zext i32 %457 to i64
  %.9374592668 = add i32 %13, -1
  %458 = zext nneg i32 %230 to i64
  %459 = add nsw i32 %456, 1
  %460 = add i32 %13, 1
  %461 = zext nneg i32 %230 to i64
  %462 = zext i32 %456 to i64
  %463 = add nuw nsw i64 %462, 1
  %464 = shl nsw i64 %14, 3
  %scevgep998 = getelementptr i8, ptr %5, i64 %464
  %465 = add i32 %13, 1
  %466 = getelementptr i8, ptr %5, i64 %464
  %scevgep1000 = getelementptr i8, ptr %466, i64 8
  %467 = zext nneg i32 %230 to i64
  %468 = zext i32 %456 to i64
  %469 = add nuw nsw i64 %468, 1
  %invariant.gep1060 = getelementptr i8, ptr %7, i64 8
  br label %470

470:                                              ; preds = %.lr.ph593, %._crit_edge588
  %indvar991 = phi i64 [ 0, %.lr.ph593 ], [ %indvar.next992, %._crit_edge588 ]
  %indvar988 = phi i32 [ 0, %.lr.ph593 ], [ %indvar.next989, %._crit_edge588 ]
  %indvars.iv764 = phi i64 [ 1, %.lr.ph593 ], [ %indvars.iv.next765, %._crit_edge588 ]
  %471 = add i64 %469, %indvar991
  %sext = shl i64 %471, 32
  %472 = ashr exact i64 %sext, 32
  %smin1005 = tail call i64 @llvm.smin.i64(i64 %467, i64 %472)
  %473 = sub i64 %smin1005, %indvar991
  %474 = shl nuw nsw i64 %indvar991, 3
  %scevgep994 = getelementptr i8, ptr %7, i64 %474
  %gep1061 = getelementptr i8, ptr %invariant.gep1060, i64 %474
  %475 = add i64 %463, %indvar991
  %sext1024 = shl i64 %475, 32
  %476 = ashr exact i64 %sext1024, 32
  %smin996 = tail call i64 @llvm.smin.i64(i64 %461, i64 %476)
  %477 = xor i64 %indvar991, -1
  %478 = add i64 %smin996, %477
  %479 = shl nsw i64 %478, 3
  %scevgep997 = getelementptr i8, ptr %gep1061, i64 %479
  %480 = trunc i64 %indvar991 to i32
  %481 = mul i32 %13, %480
  %482 = add i32 %481, %465
  %483 = sext i32 %482 to i64
  %484 = shl nsw i64 %483, 3
  %scevgep999 = getelementptr i8, ptr %scevgep998, i64 %484
  %485 = getelementptr i8, ptr %scevgep1000, i64 %479
  %scevgep1001 = getelementptr i8, ptr %485, i64 %484
  %486 = add i32 %459, %indvar988
  %487 = sext i32 %486 to i64
  %smin990 = tail call i64 @llvm.smin.i64(i64 %458, i64 %487)
  %488 = xor i64 %indvar991, -1
  %489 = add i64 %smin990, %488
  %490 = trunc i64 %indvar991 to i32
  %491 = mul i32 %13, %490
  %492 = add i32 %491, %460
  %indvars770 = trunc i64 %indvars.iv764 to i32
  %493 = add nsw i32 %456, %indvars770
  %494 = tail call i32 @llvm.smin.i32(i32 %230, i32 %493)
  %.not420584 = icmp slt i32 %494, %indvars770
  br i1 %.not420584, label %._crit_edge588, label %.lr.ph587

.lr.ph587:                                        ; preds = %470
  %reass.sub667 = mul i32 %.9374592668, %indvars770
  %495 = add i32 %reass.sub667, 1
  %496 = sext i32 %494 to i64
  %min.iters.check1008 = icmp ult i64 %473, 4
  br i1 %min.iters.check1008, label %scalar.ph1007.preheader, label %vector.scevcheck987

vector.scevcheck987:                              ; preds = %.lr.ph587
  %497 = trunc i64 %489 to i32
  %498 = add i32 %492, %497
  %499 = icmp slt i32 %498, %492
  %500 = icmp ugt i64 %489, 4294967295
  %501 = or i1 %499, %500
  br i1 %501, label %scalar.ph1007.preheader, label %vector.memcheck993

vector.memcheck993:                               ; preds = %vector.scevcheck987
  %bound01002 = icmp ult ptr %scevgep994, %scevgep1001
  %bound11003 = icmp ult ptr %scevgep999, %scevgep997
  %found.conflict1004 = and i1 %bound01002, %bound11003
  br i1 %found.conflict1004, label %scalar.ph1007.preheader, label %vector.ph1009

vector.ph1009:                                    ; preds = %vector.memcheck993
  %n.vec1011 = and i64 %473, -4
  %ind.end1012 = add i64 %indvars.iv764, %n.vec1011
  %502 = getelementptr double, ptr %16, i64 %indvars.iv764
  br label %vector.body1014

vector.body1014:                                  ; preds = %vector.body1014, %vector.ph1009
  %index1015 = phi i64 [ 0, %vector.ph1009 ], [ %index.next1022, %vector.body1014 ]
  %offset.idx1017 = add i64 %indvars.iv764, %index1015
  %503 = trunc i64 %offset.idx1017 to i32
  %504 = add i32 %495, %503
  %505 = sext i32 %504 to i64
  %506 = getelementptr inbounds double, ptr %15, i64 %505
  %507 = getelementptr inbounds i8, ptr %506, i64 16
  %wide.load1018 = load <2 x double>, ptr %506, align 8, !tbaa !9, !alias.scope !57
  %wide.load1019 = load <2 x double>, ptr %507, align 8, !tbaa !9, !alias.scope !57
  %508 = fcmp oge <2 x double> %wide.load1018, zeroinitializer
  %509 = fcmp oge <2 x double> %wide.load1019, zeroinitializer
  %510 = fneg <2 x double> %wide.load1018
  %511 = fneg <2 x double> %wide.load1019
  %512 = select <2 x i1> %508, <2 x double> %wide.load1018, <2 x double> %510
  %513 = select <2 x i1> %509, <2 x double> %wide.load1019, <2 x double> %511
  %514 = getelementptr double, ptr %502, i64 %index1015
  %515 = getelementptr inbounds i8, ptr %514, i64 16
  %wide.load1020 = load <2 x double>, ptr %514, align 8, !tbaa !9, !alias.scope !60, !noalias !57
  %wide.load1021 = load <2 x double>, ptr %515, align 8, !tbaa !9, !alias.scope !60, !noalias !57
  %516 = fadd <2 x double> %wide.load1020, %512
  %517 = fadd <2 x double> %wide.load1021, %513
  store <2 x double> %516, ptr %514, align 8, !tbaa !9, !alias.scope !60, !noalias !57
  store <2 x double> %517, ptr %515, align 8, !tbaa !9, !alias.scope !60, !noalias !57
  %index.next1022 = add nuw i64 %index1015, 4
  %518 = icmp eq i64 %index.next1022, %n.vec1011
  br i1 %518, label %middle.block1006, label %vector.body1014, !llvm.loop !62

middle.block1006:                                 ; preds = %vector.body1014
  %cmp.n1023 = icmp eq i64 %473, %n.vec1011
  br i1 %cmp.n1023, label %._crit_edge588, label %scalar.ph1007.preheader

scalar.ph1007.preheader:                          ; preds = %middle.block1006, %vector.memcheck993, %vector.scevcheck987, %.lr.ph587
  %indvars.iv766.ph = phi i64 [ %indvars.iv764, %vector.memcheck993 ], [ %indvars.iv764, %vector.scevcheck987 ], [ %indvars.iv764, %.lr.ph587 ], [ %ind.end1012, %middle.block1006 ]
  br label %scalar.ph1007

scalar.ph1007:                                    ; preds = %scalar.ph1007.preheader, %scalar.ph1007
  %indvars.iv766 = phi i64 [ %indvars.iv.next767, %scalar.ph1007 ], [ %indvars.iv766.ph, %scalar.ph1007.preheader ]
  %519 = trunc nuw nsw i64 %indvars.iv766 to i32
  %520 = add i32 %495, %519
  %521 = sext i32 %520 to i64
  %522 = getelementptr inbounds double, ptr %15, i64 %521
  %523 = load double, ptr %522, align 8, !tbaa !9
  %524 = fcmp oge double %523, 0.000000e+00
  %525 = fneg double %523
  %526 = select i1 %524, double %523, double %525
  %527 = getelementptr inbounds double, ptr %16, i64 %indvars.iv766
  %528 = load double, ptr %527, align 8, !tbaa !9
  %529 = fadd double %528, %526
  store double %529, ptr %527, align 8, !tbaa !9
  %indvars.iv.next767 = add nuw nsw i64 %indvars.iv766, 1
  %.not420.not = icmp slt i64 %indvars.iv766, %496
  br i1 %.not420.not, label %scalar.ph1007, label %._crit_edge588, !llvm.loop !63

._crit_edge588:                                   ; preds = %scalar.ph1007, %middle.block1006, %470
  %indvars.iv.next765 = add nuw nsw i64 %indvars.iv764, 1
  %exitcond772.not = icmp eq i64 %indvars.iv.next765, %wide.trip.count771
  %indvar.next989 = add i32 %indvar988, 1
  %indvar.next992 = add i64 %indvar991, 1
  br i1 %exitcond772.not, label %.loopexit478, label %470, !llvm.loop !64

.loopexit478:                                     ; preds = %._crit_edge546, %._crit_edge559, %.loopexit479, %._crit_edge588, %.preheader484, %232, %306, %.preheader480, %371, %453
  %.not432595 = icmp slt i32 %230, 1
  br i1 %.not432595, label %.loopexit467, label %.lr.ph599.preheader

.lr.ph599.preheader:                              ; preds = %.loopexit478
  %530 = add nuw i32 %230, 1
  %wide.trip.count776 = zext i32 %530 to i64
  br label %.lr.ph599

.lr.ph599:                                        ; preds = %.lr.ph599.preheader, %536
  %indvars.iv773 = phi i64 [ 1, %.lr.ph599.preheader ], [ %indvars.iv.next774, %536 ]
  %.16597 = phi double [ 0.000000e+00, %.lr.ph599.preheader ], [ %.17, %536 ]
  %531 = getelementptr inbounds double, ptr %16, i64 %indvars.iv773
  %532 = load double, ptr %531, align 8, !tbaa !9
  store double %532, ptr %11, align 8, !tbaa !9
  %533 = fcmp olt double %.16597, %532
  br i1 %533, label %536, label %534

534:                                              ; preds = %.lr.ph599
  %535 = call i32 @disnan_(ptr noundef nonnull %11) #6
  %.not433 = icmp eq i32 %535, 0
  br i1 %.not433, label %536, label %._crit_edge825

._crit_edge825:                                   ; preds = %534
  %.pre826 = load double, ptr %11, align 8, !tbaa !9
  br label %536

536:                                              ; preds = %.lr.ph599, %._crit_edge825, %534
  %.17 = phi double [ %.16597, %534 ], [ %.pre826, %._crit_edge825 ], [ %532, %.lr.ph599 ]
  %indvars.iv.next774 = add nuw nsw i64 %indvars.iv773, 1
  %exitcond777.not = icmp eq i64 %indvars.iv.next774, %wide.trip.count776
  br i1 %exitcond777.not, label %.loopexit467, label %.lr.ph599, !llvm.loop !65

537:                                              ; preds = %225
  %538 = tail call i32 @lsame_(ptr noundef nonnull %0, ptr noundef nonnull @.str.4) #6
  %.not402 = icmp eq i32 %538, 0
  br i1 %.not402, label %539, label %541

539:                                              ; preds = %537
  %540 = tail call i32 @lsame_(ptr noundef nonnull %0, ptr noundef nonnull @.str.5) #6
  %.not403 = icmp eq i32 %540, 0
  br i1 %.not403, label %.loopexit467, label %541

541:                                              ; preds = %539, %537
  %542 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %.not404 = icmp eq i32 %542, 0
  %543 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.1) #6
  %.not405 = icmp eq i32 %543, 0
  br i1 %.not404, label %576, label %544

544:                                              ; preds = %541
  br i1 %.not405, label %562, label %545

545:                                              ; preds = %544
  store double 1.000000e+00, ptr %12, align 16, !tbaa !9
  %546 = load i32, ptr %3, align 4, !tbaa !5
  %547 = sitofp i32 %546 to double
  %548 = getelementptr inbounds i8, ptr %12, i64 8
  store double %547, ptr %548, align 8, !tbaa !9
  %549 = load i32, ptr %4, align 4, !tbaa !5
  %550 = icmp slt i32 %549, 1
  %.not413601 = icmp slt i32 %546, 2
  %or.cond = select i1 %550, i1 true, i1 %.not413601
  br i1 %or.cond, label %.loopexit471, label %.lr.ph603

.lr.ph603:                                        ; preds = %545
  %551 = getelementptr inbounds i8, ptr %10, i64 8
  br label %552

552:                                              ; preds = %.lr.ph603, %552
  %.10375602 = phi i32 [ 2, %.lr.ph603 ], [ %561, %552 ]
  store <2 x double> <double 0.000000e+00, double 1.000000e+00>, ptr %10, align 16, !tbaa !9
  %553 = add nsw i32 %.10375602, -1
  %554 = load i32, ptr %4, align 4, !tbaa !5
  %. = call i32 @llvm.smin.i32(i32 %553, i32 %554)
  store i32 %., ptr %9, align 4, !tbaa !5
  %reass.sub = sub i32 %554, %.10375602
  %555 = add i32 %reass.sub, 2
  %556 = call i32 @llvm.smax.i32(i32 %555, i32 1)
  %557 = mul nsw i32 %.10375602, %13
  %558 = add nsw i32 %556, %557
  %559 = sext i32 %558 to i64
  %560 = getelementptr inbounds double, ptr %15, i64 %559
  call void @dlassq_(ptr noundef nonnull %9, ptr noundef %560, ptr noundef nonnull @c__1, ptr noundef nonnull %10, ptr noundef nonnull %551) #6
  call void @dcombssq_(ptr noundef nonnull %12, ptr noundef nonnull %10) #6
  %561 = add nuw i32 %.10375602, 1
  %exitcond778.not = icmp eq i32 %.10375602, %546
  br i1 %exitcond778.not, label %.loopexit471, label %552, !llvm.loop !66

562:                                              ; preds = %544
  store <2 x double> <double 0.000000e+00, double 1.000000e+00>, ptr %12, align 16, !tbaa !9
  %563 = load i32, ptr %3, align 4, !tbaa !5
  %.not411604 = icmp slt i32 %563, 1
  br i1 %.not411604, label %.loopexit471, label %.lr.ph607

.lr.ph607:                                        ; preds = %562
  %564 = getelementptr inbounds i8, ptr %10, i64 8
  br label %565

565:                                              ; preds = %.lr.ph607, %565
  %.11376605 = phi i32 [ 1, %.lr.ph607 ], [ %575, %565 ]
  store <2 x double> <double 0.000000e+00, double 1.000000e+00>, ptr %10, align 16, !tbaa !9
  %566 = load i32, ptr %4, align 4, !tbaa !5
  %567 = add nsw i32 %566, 1
  %568 = call i32 @llvm.smin.i32(i32 %.11376605, i32 %567)
  store i32 %568, ptr %9, align 4, !tbaa !5
  %reass.sub669 = sub i32 %566, %.11376605
  %569 = add i32 %reass.sub669, 2
  %570 = call i32 @llvm.smax.i32(i32 %569, i32 1)
  %571 = mul nsw i32 %.11376605, %13
  %572 = add nsw i32 %570, %571
  %573 = sext i32 %572 to i64
  %574 = getelementptr inbounds double, ptr %15, i64 %573
  call void @dlassq_(ptr noundef nonnull %9, ptr noundef %574, ptr noundef nonnull @c__1, ptr noundef nonnull %10, ptr noundef nonnull %564) #6
  call void @dcombssq_(ptr noundef nonnull %12, ptr noundef nonnull %10) #6
  %575 = add nuw i32 %.11376605, 1
  %exitcond779.not = icmp eq i32 %.11376605, %563
  br i1 %exitcond779.not, label %.loopexit471, label %565, !llvm.loop !67

576:                                              ; preds = %541
  br i1 %.not405, label %591, label %577

577:                                              ; preds = %576
  store double 1.000000e+00, ptr %12, align 16, !tbaa !9
  %578 = load i32, ptr %3, align 4, !tbaa !5
  %579 = sitofp i32 %578 to double
  %580 = getelementptr inbounds i8, ptr %12, i64 8
  store double %579, ptr %580, align 8, !tbaa !9
  %581 = load i32, ptr %4, align 4, !tbaa !5
  %582 = icmp sgt i32 %581, 0
  br i1 %582, label %.preheader, label %.loopexit471

.preheader:                                       ; preds = %577
  %invariant.gep = getelementptr i8, ptr %15, i64 16
  %.not408.not608 = icmp sgt i32 %578, 1
  br i1 %.not408.not608, label %.lr.ph610, label %.loopexit471

.lr.ph610:                                        ; preds = %.preheader
  %583 = getelementptr inbounds i8, ptr %10, i64 8
  %584 = sext i32 %13 to i64
  %wide.trip.count783 = zext nneg i32 %578 to i64
  br label %585

585:                                              ; preds = %.lr.ph610, %585
  %indvars.iv780 = phi i64 [ 1, %.lr.ph610 ], [ %indvars.iv.next781, %585 ]
  store <2 x double> <double 0.000000e+00, double 1.000000e+00>, ptr %10, align 16, !tbaa !9
  %586 = load i32, ptr %3, align 4, !tbaa !5
  %587 = trunc nuw nsw i64 %indvars.iv780 to i32
  %588 = sub nsw i32 %586, %587
  %589 = load i32, ptr %4, align 4, !tbaa !5
  %.465 = call i32 @llvm.smin.i32(i32 %588, i32 %589)
  store i32 %.465, ptr %9, align 4, !tbaa !5
  %590 = mul nsw i64 %indvars.iv780, %584
  %gep = getelementptr double, ptr %invariant.gep, i64 %590
  call void @dlassq_(ptr noundef nonnull %9, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef nonnull %10, ptr noundef nonnull %583) #6
  call void @dcombssq_(ptr noundef nonnull %12, ptr noundef nonnull %10) #6
  %indvars.iv.next781 = add nuw nsw i64 %indvars.iv780, 1
  %exitcond784.not = icmp eq i64 %indvars.iv.next781, %wide.trip.count783
  br i1 %exitcond784.not, label %.loopexit471, label %585, !llvm.loop !68

591:                                              ; preds = %576
  store <2 x double> <double 0.000000e+00, double 1.000000e+00>, ptr %12, align 16, !tbaa !9
  %592 = load i32, ptr %3, align 4, !tbaa !5
  %invariant.gep611 = getelementptr i8, ptr %15, i64 8
  %.not406613 = icmp slt i32 %592, 1
  br i1 %.not406613, label %.loopexit471, label %.lr.ph616

.lr.ph616:                                        ; preds = %591
  %593 = getelementptr inbounds i8, ptr %10, i64 8
  %594 = sext i32 %13 to i64
  %595 = add nuw i32 %592, 1
  %wide.trip.count788 = zext i32 %595 to i64
  br label %596

596:                                              ; preds = %.lr.ph616, %596
  %indvars.iv785 = phi i64 [ 1, %.lr.ph616 ], [ %indvars.iv.next786, %596 ]
  store <2 x double> <double 0.000000e+00, double 1.000000e+00>, ptr %10, align 16, !tbaa !9
  %597 = load i32, ptr %3, align 4, !tbaa !5
  %598 = trunc nuw nsw i64 %indvars.iv785 to i32
  %reass.sub670 = sub i32 %597, %598
  %599 = add i32 %reass.sub670, 1
  %600 = load i32, ptr %4, align 4, !tbaa !5
  %601 = add nsw i32 %600, 1
  %602 = call i32 @llvm.smin.i32(i32 %599, i32 %601)
  store i32 %602, ptr %9, align 4, !tbaa !5
  %603 = mul nsw i64 %indvars.iv785, %594
  %gep612 = getelementptr double, ptr %invariant.gep611, i64 %603
  call void @dlassq_(ptr noundef nonnull %9, ptr noundef %gep612, ptr noundef nonnull @c__1, ptr noundef nonnull %10, ptr noundef nonnull %593) #6
  call void @dcombssq_(ptr noundef nonnull %12, ptr noundef nonnull %10) #6
  %indvars.iv.next786 = add nuw nsw i64 %indvars.iv785, 1
  %exitcond789.not = icmp eq i64 %indvars.iv.next786, %wide.trip.count788
  br i1 %exitcond789.not, label %.loopexit471, label %596, !llvm.loop !69

.loopexit471:                                     ; preds = %552, %565, %585, %596, %562, %.preheader, %591, %577, %545
  %604 = load double, ptr %12, align 16, !tbaa !9
  %605 = getelementptr inbounds i8, ptr %12, i64 8
  %606 = load double, ptr %605, align 8, !tbaa !9
  %607 = call double @sqrt(double noundef %606) #6
  %608 = fmul double %604, %607
  br label %.loopexit467

.loopexit467:                                     ; preds = %._crit_edge, %._crit_edge504, %._crit_edge517, %._crit_edge530, %536, %157, %222, %26, %46, %67, %88, %.loopexit478, %117, %160, %8, %.loopexit471, %539
  %.18 = phi double [ %608, %.loopexit471 ], [ undef, %539 ], [ 0.000000e+00, %8 ], [ 0.000000e+00, %160 ], [ 0.000000e+00, %117 ], [ 0.000000e+00, %.loopexit478 ], [ 0.000000e+00, %88 ], [ 0.000000e+00, %67 ], [ 1.000000e+00, %46 ], [ 1.000000e+00, %26 ], [ %.15, %222 ], [ %.13, %157 ], [ %.17, %536 ], [ %.10.lcssa, %._crit_edge530 ], [ %.7.lcssa, %._crit_edge517 ], [ %.4.lcssa, %._crit_edge504 ], [ %.1.lcssa, %._crit_edge ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #6
  ret double %.18
}

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

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

declare i32 @disnan_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nofree nounwind willreturn memory(write) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #6 = { nounwind }

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

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


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