; LLVM IR from niuyishuai/PDCABB :: LAPACK_BLAS/BLAS/SRC (dtbsv)

; 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 [7 x i8], align 1

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

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

54:                                               ; preds = %50
  store i64 1, ptr %32, align 8, !tbaa !9
  br label %106

55:                                               ; preds = %50, %9
  %56 = load ptr, ptr %12, align 8, !tbaa !5
  %57 = call i64 @lsame_(ptr noundef %56, ptr noundef @.str.2)
  %58 = icmp ne i64 %57, 0
  br i1 %58, label %68, label %59

59:                                               ; preds = %55
  %60 = load ptr, ptr %12, align 8, !tbaa !5
  %61 = call i64 @lsame_(ptr noundef %60, ptr noundef @.str.3)
  %62 = icmp ne i64 %61, 0
  br i1 %62, label %68, label %63

63:                                               ; preds = %59
  %64 = load ptr, ptr %12, align 8, !tbaa !5
  %65 = call i64 @lsame_(ptr noundef %64, ptr noundef @.str.4)
  %66 = icmp ne i64 %65, 0
  br i1 %66, label %68, label %67

67:                                               ; preds = %63
  store i64 2, ptr %32, align 8, !tbaa !9
  br label %105

68:                                               ; preds = %63, %59, %55
  %69 = load ptr, ptr %13, align 8, !tbaa !5
  %70 = call i64 @lsame_(ptr noundef %69, ptr noundef @.str)
  %71 = icmp ne i64 %70, 0
  br i1 %71, label %77, label %72

72:                                               ; preds = %68
  %73 = load ptr, ptr %13, align 8, !tbaa !5
  %74 = call i64 @lsame_(ptr noundef %73, ptr noundef @.str.2)
  %75 = icmp ne i64 %74, 0
  br i1 %75, label %77, label %76

76:                                               ; preds = %72
  store i64 3, ptr %32, align 8, !tbaa !9
  br label %104

77:                                               ; preds = %72, %68
  %78 = load ptr, ptr %14, align 8, !tbaa !5
  %79 = load i64, ptr %78, align 8, !tbaa !9
  %80 = icmp slt i64 %79, 0
  br i1 %80, label %81, label %82

81:                                               ; preds = %77
  store i64 4, ptr %32, align 8, !tbaa !9
  br label %103

82:                                               ; preds = %77
  %83 = load ptr, ptr %15, align 8, !tbaa !5
  %84 = load i64, ptr %83, align 8, !tbaa !9
  %85 = icmp slt i64 %84, 0
  br i1 %85, label %86, label %87

86:                                               ; preds = %82
  store i64 5, ptr %32, align 8, !tbaa !9
  br label %102

87:                                               ; preds = %82
  %88 = load ptr, ptr %17, align 8, !tbaa !5
  %89 = load i64, ptr %88, align 8, !tbaa !9
  %90 = load ptr, ptr %15, align 8, !tbaa !5
  %91 = load i64, ptr %90, align 8, !tbaa !9
  %92 = add nsw i64 %91, 1
  %93 = icmp slt i64 %89, %92
  br i1 %93, label %94, label %95

94:                                               ; preds = %87
  store i64 7, ptr %32, align 8, !tbaa !9
  br label %101

95:                                               ; preds = %87
  %96 = load ptr, ptr %19, align 8, !tbaa !5
  %97 = load i64, ptr %96, align 8, !tbaa !9
  %98 = icmp eq i64 %97, 0
  br i1 %98, label %99, label %100

99:                                               ; preds = %95
  store i64 9, ptr %32, align 8, !tbaa !9
  br label %100

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

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

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

103:                                              ; preds = %102, %81
  br label %104

104:                                              ; preds = %103, %76
  br label %105

105:                                              ; preds = %104, %67
  br label %106

106:                                              ; preds = %105, %54
  %107 = load i64, ptr %32, align 8, !tbaa !9
  %108 = icmp ne i64 %107, 0
  br i1 %108, label %109, label %111

109:                                              ; preds = %106
  %110 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %32)
  store i32 0, ptr %10, align 4
  store i32 1, ptr %36, align 4
  br label %908

111:                                              ; preds = %106
  %112 = load ptr, ptr %14, align 8, !tbaa !5
  %113 = load i64, ptr %112, align 8, !tbaa !9
  %114 = icmp eq i64 %113, 0
  br i1 %114, label %115, label %116

115:                                              ; preds = %111
  store i32 0, ptr %10, align 4
  store i32 1, ptr %36, align 4
  br label %908

116:                                              ; preds = %111
  %117 = load ptr, ptr %13, align 8, !tbaa !5
  %118 = call i64 @lsame_(ptr noundef %117, ptr noundef @.str.2)
  store i64 %118, ptr %35, align 8, !tbaa !9
  %119 = load ptr, ptr %19, align 8, !tbaa !5
  %120 = load i64, ptr %119, align 8, !tbaa !9
  %121 = icmp sle i64 %120, 0
  br i1 %121, label %122, label %130

122:                                              ; preds = %116
  %123 = load ptr, ptr %14, align 8, !tbaa !5
  %124 = load i64, ptr %123, align 8, !tbaa !9
  %125 = sub nsw i64 %124, 1
  %126 = load ptr, ptr %19, align 8, !tbaa !5
  %127 = load i64, ptr %126, align 8, !tbaa !9
  %128 = mul nsw i64 %125, %127
  %129 = sub nsw i64 1, %128
  store i64 %129, ptr %31, align 8, !tbaa !9
  br label %136

130:                                              ; preds = %116
  %131 = load ptr, ptr %19, align 8, !tbaa !5
  %132 = load i64, ptr %131, align 8, !tbaa !9
  %133 = icmp ne i64 %132, 1
  br i1 %133, label %134, label %135

134:                                              ; preds = %130
  store i64 1, ptr %31, align 8, !tbaa !9
  br label %135

135:                                              ; preds = %134, %130
  br label %136

136:                                              ; preds = %135, %122
  %137 = load ptr, ptr %12, align 8, !tbaa !5
  %138 = call i64 @lsame_(ptr noundef %137, ptr noundef @.str.2)
  %139 = icmp ne i64 %138, 0
  br i1 %139, label %140, label %528

140:                                              ; preds = %136
  %141 = load ptr, ptr %11, align 8, !tbaa !5
  %142 = call i64 @lsame_(ptr noundef %141, ptr noundef @.str)
  %143 = icmp ne i64 %142, 0
  br i1 %143, label %144, label %340

144:                                              ; preds = %140
  %145 = load ptr, ptr %15, align 8, !tbaa !5
  %146 = load i64, ptr %145, align 8, !tbaa !9
  %147 = add nsw i64 %146, 1
  store i64 %147, ptr %34, align 8, !tbaa !9
  %148 = load ptr, ptr %19, align 8, !tbaa !5
  %149 = load i64, ptr %148, align 8, !tbaa !9
  %150 = icmp eq i64 %149, 1
  br i1 %150, label %151, label %234

151:                                              ; preds = %144
  %152 = load ptr, ptr %14, align 8, !tbaa !5
  %153 = load i64, ptr %152, align 8, !tbaa !9
  store i64 %153, ptr %27, align 8, !tbaa !9
  br label %154

154:                                              ; preds = %230, %151
  %155 = load i64, ptr %27, align 8, !tbaa !9
  %156 = icmp sge i64 %155, 1
  br i1 %156, label %157, label %233

157:                                              ; preds = %154
  %158 = load ptr, ptr %18, align 8, !tbaa !5
  %159 = load i64, ptr %27, align 8, !tbaa !9
  %160 = getelementptr inbounds double, ptr %158, i64 %159
  %161 = load double, ptr %160, align 8, !tbaa !11
  %162 = fcmp une double %161, 0.000000e+00
  br i1 %162, label %163, label %229

163:                                              ; preds = %157
  %164 = load i64, ptr %34, align 8, !tbaa !9
  %165 = load i64, ptr %27, align 8, !tbaa !9
  %166 = sub nsw i64 %164, %165
  store i64 %166, ptr %28, align 8, !tbaa !9
  %167 = load i64, ptr %35, align 8, !tbaa !9
  %168 = icmp ne i64 %167, 0
  br i1 %168, label %169, label %183

169:                                              ; preds = %163
  %170 = load ptr, ptr %16, align 8, !tbaa !5
  %171 = load i64, ptr %34, align 8, !tbaa !9
  %172 = load i64, ptr %27, align 8, !tbaa !9
  %173 = load i64, ptr %20, align 8, !tbaa !9
  %174 = mul nsw i64 %172, %173
  %175 = add nsw i64 %171, %174
  %176 = getelementptr inbounds double, ptr %170, i64 %175
  %177 = load double, ptr %176, align 8, !tbaa !11
  %178 = load ptr, ptr %18, align 8, !tbaa !5
  %179 = load i64, ptr %27, align 8, !tbaa !9
  %180 = getelementptr inbounds double, ptr %178, i64 %179
  %181 = load double, ptr %180, align 8, !tbaa !11
  %182 = fdiv double %181, %177
  store double %182, ptr %180, align 8, !tbaa !11
  br label %183

183:                                              ; preds = %169, %163
  %184 = load ptr, ptr %18, align 8, !tbaa !5
  %185 = load i64, ptr %27, align 8, !tbaa !9
  %186 = getelementptr inbounds double, ptr %184, i64 %185
  %187 = load double, ptr %186, align 8, !tbaa !11
  store double %187, ptr %33, align 8, !tbaa !11
  store i64 1, ptr %23, align 8, !tbaa !9
  %188 = load i64, ptr %27, align 8, !tbaa !9
  %189 = load ptr, ptr %15, align 8, !tbaa !5
  %190 = load i64, ptr %189, align 8, !tbaa !9
  %191 = sub nsw i64 %188, %190
  store i64 %191, ptr %24, align 8, !tbaa !9
  %192 = load i64, ptr %23, align 8, !tbaa !9
  %193 = load i64, ptr %24, align 8, !tbaa !9
  %194 = icmp sge i64 %192, %193
  br i1 %194, label %195, label %197

195:                                              ; preds = %183
  %196 = load i64, ptr %23, align 8, !tbaa !9
  br label %199

197:                                              ; preds = %183
  %198 = load i64, ptr %24, align 8, !tbaa !9
  br label %199

199:                                              ; preds = %197, %195
  %200 = phi i64 [ %196, %195 ], [ %198, %197 ]
  store i64 %200, ptr %22, align 8, !tbaa !9
  %201 = load i64, ptr %27, align 8, !tbaa !9
  %202 = sub nsw i64 %201, 1
  store i64 %202, ptr %26, align 8, !tbaa !9
  br label %203

203:                                              ; preds = %225, %199
  %204 = load i64, ptr %26, align 8, !tbaa !9
  %205 = load i64, ptr %22, align 8, !tbaa !9
  %206 = icmp sge i64 %204, %205
  br i1 %206, label %207, label %228

207:                                              ; preds = %203
  %208 = load double, ptr %33, align 8, !tbaa !11
  %209 = load ptr, ptr %16, align 8, !tbaa !5
  %210 = load i64, ptr %28, align 8, !tbaa !9
  %211 = load i64, ptr %26, align 8, !tbaa !9
  %212 = add nsw i64 %210, %211
  %213 = load i64, ptr %27, align 8, !tbaa !9
  %214 = load i64, ptr %20, align 8, !tbaa !9
  %215 = mul nsw i64 %213, %214
  %216 = add nsw i64 %212, %215
  %217 = getelementptr inbounds double, ptr %209, i64 %216
  %218 = load double, ptr %217, align 8, !tbaa !11
  %219 = load ptr, ptr %18, align 8, !tbaa !5
  %220 = load i64, ptr %26, align 8, !tbaa !9
  %221 = getelementptr inbounds double, ptr %219, i64 %220
  %222 = load double, ptr %221, align 8, !tbaa !11
  %223 = fneg double %208
  %224 = call double @llvm.fmuladd.f64(double %223, double %218, double %222)
  store double %224, ptr %221, align 8, !tbaa !11
  br label %225

225:                                              ; preds = %207
  %226 = load i64, ptr %26, align 8, !tbaa !9
  %227 = add nsw i64 %226, -1
  store i64 %227, ptr %26, align 8, !tbaa !9
  br label %203, !llvm.loop !13

228:                                              ; preds = %203
  br label %229

229:                                              ; preds = %228, %157
  br label %230

230:                                              ; preds = %229
  %231 = load i64, ptr %27, align 8, !tbaa !9
  %232 = add nsw i64 %231, -1
  store i64 %232, ptr %27, align 8, !tbaa !9
  br label %154, !llvm.loop !15

233:                                              ; preds = %154
  br label %339

234:                                              ; preds = %144
  %235 = load ptr, ptr %14, align 8, !tbaa !5
  %236 = load i64, ptr %235, align 8, !tbaa !9
  %237 = sub nsw i64 %236, 1
  %238 = load ptr, ptr %19, align 8, !tbaa !5
  %239 = load i64, ptr %238, align 8, !tbaa !9
  %240 = mul nsw i64 %237, %239
  %241 = load i64, ptr %31, align 8, !tbaa !9
  %242 = add nsw i64 %241, %240
  store i64 %242, ptr %31, align 8, !tbaa !9
  %243 = load i64, ptr %31, align 8, !tbaa !9
  store i64 %243, ptr %30, align 8, !tbaa !9
  %244 = load ptr, ptr %14, align 8, !tbaa !5
  %245 = load i64, ptr %244, align 8, !tbaa !9
  store i64 %245, ptr %27, align 8, !tbaa !9
  br label %246

246:                                              ; preds = %335, %234
  %247 = load i64, ptr %27, align 8, !tbaa !9
  %248 = icmp sge i64 %247, 1
  br i1 %248, label %249, label %338

249:                                              ; preds = %246
  %250 = load ptr, ptr %19, align 8, !tbaa !5
  %251 = load i64, ptr %250, align 8, !tbaa !9
  %252 = load i64, ptr %31, align 8, !tbaa !9
  %253 = sub nsw i64 %252, %251
  store i64 %253, ptr %31, align 8, !tbaa !9
  %254 = load ptr, ptr %18, align 8, !tbaa !5
  %255 = load i64, ptr %30, align 8, !tbaa !9
  %256 = getelementptr inbounds double, ptr %254, i64 %255
  %257 = load double, ptr %256, align 8, !tbaa !11
  %258 = fcmp une double %257, 0.000000e+00
  br i1 %258, label %259, label %330

259:                                              ; preds = %249
  %260 = load i64, ptr %31, align 8, !tbaa !9
  store i64 %260, ptr %29, align 8, !tbaa !9
  %261 = load i64, ptr %34, align 8, !tbaa !9
  %262 = load i64, ptr %27, align 8, !tbaa !9
  %263 = sub nsw i64 %261, %262
  store i64 %263, ptr %28, align 8, !tbaa !9
  %264 = load i64, ptr %35, align 8, !tbaa !9
  %265 = icmp ne i64 %264, 0
  br i1 %265, label %266, label %280

266:                                              ; preds = %259
  %267 = load ptr, ptr %16, align 8, !tbaa !5
  %268 = load i64, ptr %34, align 8, !tbaa !9
  %269 = load i64, ptr %27, align 8, !tbaa !9
  %270 = load i64, ptr %20, align 8, !tbaa !9
  %271 = mul nsw i64 %269, %270
  %272 = add nsw i64 %268, %271
  %273 = getelementptr inbounds double, ptr %267, i64 %272
  %274 = load double, ptr %273, align 8, !tbaa !11
  %275 = load ptr, ptr %18, align 8, !tbaa !5
  %276 = load i64, ptr %30, align 8, !tbaa !9
  %277 = getelementptr inbounds double, ptr %275, i64 %276
  %278 = load double, ptr %277, align 8, !tbaa !11
  %279 = fdiv double %278, %274
  store double %279, ptr %277, align 8, !tbaa !11
  br label %280

280:                                              ; preds = %266, %259
  %281 = load ptr, ptr %18, align 8, !tbaa !5
  %282 = load i64, ptr %30, align 8, !tbaa !9
  %283 = getelementptr inbounds double, ptr %281, i64 %282
  %284 = load double, ptr %283, align 8, !tbaa !11
  store double %284, ptr %33, align 8, !tbaa !11
  store i64 1, ptr %23, align 8, !tbaa !9
  %285 = load i64, ptr %27, align 8, !tbaa !9
  %286 = load ptr, ptr %15, align 8, !tbaa !5
  %287 = load i64, ptr %286, align 8, !tbaa !9
  %288 = sub nsw i64 %285, %287
  store i64 %288, ptr %24, align 8, !tbaa !9
  %289 = load i64, ptr %23, align 8, !tbaa !9
  %290 = load i64, ptr %24, align 8, !tbaa !9
  %291 = icmp sge i64 %289, %290
  br i1 %291, label %292, label %294

292:                                              ; preds = %280
  %293 = load i64, ptr %23, align 8, !tbaa !9
  br label %296

294:                                              ; preds = %280
  %295 = load i64, ptr %24, align 8, !tbaa !9
  br label %296

296:                                              ; preds = %294, %292
  %297 = phi i64 [ %293, %292 ], [ %295, %294 ]
  store i64 %297, ptr %22, align 8, !tbaa !9
  %298 = load i64, ptr %27, align 8, !tbaa !9
  %299 = sub nsw i64 %298, 1
  store i64 %299, ptr %26, align 8, !tbaa !9
  br label %300

300:                                              ; preds = %326, %296
  %301 = load i64, ptr %26, align 8, !tbaa !9
  %302 = load i64, ptr %22, align 8, !tbaa !9
  %303 = icmp sge i64 %301, %302
  br i1 %303, label %304, label %329

304:                                              ; preds = %300
  %305 = load double, ptr %33, align 8, !tbaa !11
  %306 = load ptr, ptr %16, align 8, !tbaa !5
  %307 = load i64, ptr %28, align 8, !tbaa !9
  %308 = load i64, ptr %26, align 8, !tbaa !9
  %309 = add nsw i64 %307, %308
  %310 = load i64, ptr %27, align 8, !tbaa !9
  %311 = load i64, ptr %20, align 8, !tbaa !9
  %312 = mul nsw i64 %310, %311
  %313 = add nsw i64 %309, %312
  %314 = getelementptr inbounds double, ptr %306, i64 %313
  %315 = load double, ptr %314, align 8, !tbaa !11
  %316 = load ptr, ptr %18, align 8, !tbaa !5
  %317 = load i64, ptr %29, align 8, !tbaa !9
  %318 = getelementptr inbounds double, ptr %316, i64 %317
  %319 = load double, ptr %318, align 8, !tbaa !11
  %320 = fneg double %305
  %321 = call double @llvm.fmuladd.f64(double %320, double %315, double %319)
  store double %321, ptr %318, align 8, !tbaa !11
  %322 = load ptr, ptr %19, align 8, !tbaa !5
  %323 = load i64, ptr %322, align 8, !tbaa !9
  %324 = load i64, ptr %29, align 8, !tbaa !9
  %325 = sub nsw i64 %324, %323
  store i64 %325, ptr %29, align 8, !tbaa !9
  br label %326

326:                                              ; preds = %304
  %327 = load i64, ptr %26, align 8, !tbaa !9
  %328 = add nsw i64 %327, -1
  store i64 %328, ptr %26, align 8, !tbaa !9
  br label %300, !llvm.loop !16

329:                                              ; preds = %300
  br label %330

330:                                              ; preds = %329, %249
  %331 = load ptr, ptr %19, align 8, !tbaa !5
  %332 = load i64, ptr %331, align 8, !tbaa !9
  %333 = load i64, ptr %30, align 8, !tbaa !9
  %334 = sub nsw i64 %333, %332
  store i64 %334, ptr %30, align 8, !tbaa !9
  br label %335

335:                                              ; preds = %330
  %336 = load i64, ptr %27, align 8, !tbaa !9
  %337 = add nsw i64 %336, -1
  store i64 %337, ptr %27, align 8, !tbaa !9
  br label %246, !llvm.loop !17

338:                                              ; preds = %246
  br label %339

339:                                              ; preds = %338, %233
  br label %527

340:                                              ; preds = %140
  %341 = load ptr, ptr %19, align 8, !tbaa !5
  %342 = load i64, ptr %341, align 8, !tbaa !9
  %343 = icmp eq i64 %342, 1
  br i1 %343, label %344, label %428

344:                                              ; preds = %340
  %345 = load ptr, ptr %14, align 8, !tbaa !5
  %346 = load i64, ptr %345, align 8, !tbaa !9
  store i64 %346, ptr %22, align 8, !tbaa !9
  store i64 1, ptr %27, align 8, !tbaa !9
  br label %347

347:                                              ; preds = %424, %344
  %348 = load i64, ptr %27, align 8, !tbaa !9
  %349 = load i64, ptr %22, align 8, !tbaa !9
  %350 = icmp sle i64 %348, %349
  br i1 %350, label %351, label %427

351:                                              ; preds = %347
  %352 = load ptr, ptr %18, align 8, !tbaa !5
  %353 = load i64, ptr %27, align 8, !tbaa !9
  %354 = getelementptr inbounds double, ptr %352, i64 %353
  %355 = load double, ptr %354, align 8, !tbaa !11
  %356 = fcmp une double %355, 0.000000e+00
  br i1 %356, label %357, label %423

357:                                              ; preds = %351
  %358 = load i64, ptr %27, align 8, !tbaa !9
  %359 = sub nsw i64 1, %358
  store i64 %359, ptr %28, align 8, !tbaa !9
  %360 = load i64, ptr %35, align 8, !tbaa !9
  %361 = icmp ne i64 %360, 0
  br i1 %361, label %362, label %375

362:                                              ; preds = %357
  %363 = load ptr, ptr %16, align 8, !tbaa !5
  %364 = load i64, ptr %27, align 8, !tbaa !9
  %365 = load i64, ptr %20, align 8, !tbaa !9
  %366 = mul nsw i64 %364, %365
  %367 = add nsw i64 %366, 1
  %368 = getelementptr inbounds double, ptr %363, i64 %367
  %369 = load double, ptr %368, align 8, !tbaa !11
  %370 = load ptr, ptr %18, align 8, !tbaa !5
  %371 = load i64, ptr %27, align 8, !tbaa !9
  %372 = getelementptr inbounds double, ptr %370, i64 %371
  %373 = load double, ptr %372, align 8, !tbaa !11
  %374 = fdiv double %373, %369
  store double %374, ptr %372, align 8, !tbaa !11
  br label %375

375:                                              ; preds = %362, %357
  %376 = load ptr, ptr %18, align 8, !tbaa !5
  %377 = load i64, ptr %27, align 8, !tbaa !9
  %378 = getelementptr inbounds double, ptr %376, i64 %377
  %379 = load double, ptr %378, align 8, !tbaa !11
  store double %379, ptr %33, align 8, !tbaa !11
  %380 = load ptr, ptr %14, align 8, !tbaa !5
  %381 = load i64, ptr %380, align 8, !tbaa !9
  store i64 %381, ptr %24, align 8, !tbaa !9
  %382 = load i64, ptr %27, align 8, !tbaa !9
  %383 = load ptr, ptr %15, align 8, !tbaa !5
  %384 = load i64, ptr %383, align 8, !tbaa !9
  %385 = add nsw i64 %382, %384
  store i64 %385, ptr %25, align 8, !tbaa !9
  %386 = load i64, ptr %24, align 8, !tbaa !9
  %387 = load i64, ptr %25, align 8, !tbaa !9
  %388 = icmp sle i64 %386, %387
  br i1 %388, label %389, label %391

389:                                              ; preds = %375
  %390 = load i64, ptr %24, align 8, !tbaa !9
  br label %393

391:                                              ; preds = %375
  %392 = load i64, ptr %25, align 8, !tbaa !9
  br label %393

393:                                              ; preds = %391, %389
  %394 = phi i64 [ %390, %389 ], [ %392, %391 ]
  store i64 %394, ptr %23, align 8, !tbaa !9
  %395 = load i64, ptr %27, align 8, !tbaa !9
  %396 = add nsw i64 %395, 1
  store i64 %396, ptr %26, align 8, !tbaa !9
  br label %397

397:                                              ; preds = %419, %393
  %398 = load i64, ptr %26, align 8, !tbaa !9
  %399 = load i64, ptr %23, align 8, !tbaa !9
  %400 = icmp sle i64 %398, %399
  br i1 %400, label %401, label %422

401:                                              ; preds = %397
  %402 = load double, ptr %33, align 8, !tbaa !11
  %403 = load ptr, ptr %16, align 8, !tbaa !5
  %404 = load i64, ptr %28, align 8, !tbaa !9
  %405 = load i64, ptr %26, align 8, !tbaa !9
  %406 = add nsw i64 %404, %405
  %407 = load i64, ptr %27, align 8, !tbaa !9
  %408 = load i64, ptr %20, align 8, !tbaa !9
  %409 = mul nsw i64 %407, %408
  %410 = add nsw i64 %406, %409
  %411 = getelementptr inbounds double, ptr %403, i64 %410
  %412 = load double, ptr %411, align 8, !tbaa !11
  %413 = load ptr, ptr %18, align 8, !tbaa !5
  %414 = load i64, ptr %26, align 8, !tbaa !9
  %415 = getelementptr inbounds double, ptr %413, i64 %414
  %416 = load double, ptr %415, align 8, !tbaa !11
  %417 = fneg double %402
  %418 = call double @llvm.fmuladd.f64(double %417, double %412, double %416)
  store double %418, ptr %415, align 8, !tbaa !11
  br label %419

419:                                              ; preds = %401
  %420 = load i64, ptr %26, align 8, !tbaa !9
  %421 = add nsw i64 %420, 1
  store i64 %421, ptr %26, align 8, !tbaa !9
  br label %397, !llvm.loop !18

422:                                              ; preds = %397
  br label %423

423:                                              ; preds = %422, %351
  br label %424

424:                                              ; preds = %423
  %425 = load i64, ptr %27, align 8, !tbaa !9
  %426 = add nsw i64 %425, 1
  store i64 %426, ptr %27, align 8, !tbaa !9
  br label %347, !llvm.loop !19

427:                                              ; preds = %347
  br label %526

428:                                              ; preds = %340
  %429 = load i64, ptr %31, align 8, !tbaa !9
  store i64 %429, ptr %30, align 8, !tbaa !9
  %430 = load ptr, ptr %14, align 8, !tbaa !5
  %431 = load i64, ptr %430, align 8, !tbaa !9
  store i64 %431, ptr %22, align 8, !tbaa !9
  store i64 1, ptr %27, align 8, !tbaa !9
  br label %432

432:                                              ; preds = %522, %428
  %433 = load i64, ptr %27, align 8, !tbaa !9
  %434 = load i64, ptr %22, align 8, !tbaa !9
  %435 = icmp sle i64 %433, %434
  br i1 %435, label %436, label %525

436:                                              ; preds = %432
  %437 = load ptr, ptr %19, align 8, !tbaa !5
  %438 = load i64, ptr %437, align 8, !tbaa !9
  %439 = load i64, ptr %31, align 8, !tbaa !9
  %440 = add nsw i64 %439, %438
  store i64 %440, ptr %31, align 8, !tbaa !9
  %441 = load ptr, ptr %18, align 8, !tbaa !5
  %442 = load i64, ptr %30, align 8, !tbaa !9
  %443 = getelementptr inbounds double, ptr %441, i64 %442
  %444 = load double, ptr %443, align 8, !tbaa !11
  %445 = fcmp une double %444, 0.000000e+00
  br i1 %445, label %446, label %517

446:                                              ; preds = %436
  %447 = load i64, ptr %31, align 8, !tbaa !9
  store i64 %447, ptr %29, align 8, !tbaa !9
  %448 = load i64, ptr %27, align 8, !tbaa !9
  %449 = sub nsw i64 1, %448
  store i64 %449, ptr %28, align 8, !tbaa !9
  %450 = load i64, ptr %35, align 8, !tbaa !9
  %451 = icmp ne i64 %450, 0
  br i1 %451, label %452, label %465

452:                                              ; preds = %446
  %453 = load ptr, ptr %16, align 8, !tbaa !5
  %454 = load i64, ptr %27, align 8, !tbaa !9
  %455 = load i64, ptr %20, align 8, !tbaa !9
  %456 = mul nsw i64 %454, %455
  %457 = add nsw i64 %456, 1
  %458 = getelementptr inbounds double, ptr %453, i64 %457
  %459 = load double, ptr %458, align 8, !tbaa !11
  %460 = load ptr, ptr %18, align 8, !tbaa !5
  %461 = load i64, ptr %30, align 8, !tbaa !9
  %462 = getelementptr inbounds double, ptr %460, i64 %461
  %463 = load double, ptr %462, align 8, !tbaa !11
  %464 = fdiv double %463, %459
  store double %464, ptr %462, align 8, !tbaa !11
  br label %465

465:                                              ; preds = %452, %446
  %466 = load ptr, ptr %18, align 8, !tbaa !5
  %467 = load i64, ptr %30, align 8, !tbaa !9
  %468 = getelementptr inbounds double, ptr %466, i64 %467
  %469 = load double, ptr %468, align 8, !tbaa !11
  store double %469, ptr %33, align 8, !tbaa !11
  %470 = load ptr, ptr %14, align 8, !tbaa !5
  %471 = load i64, ptr %470, align 8, !tbaa !9
  store i64 %471, ptr %24, align 8, !tbaa !9
  %472 = load i64, ptr %27, align 8, !tbaa !9
  %473 = load ptr, ptr %15, align 8, !tbaa !5
  %474 = load i64, ptr %473, align 8, !tbaa !9
  %475 = add nsw i64 %472, %474
  store i64 %475, ptr %25, align 8, !tbaa !9
  %476 = load i64, ptr %24, align 8, !tbaa !9
  %477 = load i64, ptr %25, align 8, !tbaa !9
  %478 = icmp sle i64 %476, %477
  br i1 %478, label %479, label %481

479:                                              ; preds = %465
  %480 = load i64, ptr %24, align 8, !tbaa !9
  br label %483

481:                                              ; preds = %465
  %482 = load i64, ptr %25, align 8, !tbaa !9
  br label %483

483:                                              ; preds = %481, %479
  %484 = phi i64 [ %480, %479 ], [ %482, %481 ]
  store i64 %484, ptr %23, align 8, !tbaa !9
  %485 = load i64, ptr %27, align 8, !tbaa !9
  %486 = add nsw i64 %485, 1
  store i64 %486, ptr %26, align 8, !tbaa !9
  br label %487

487:                                              ; preds = %513, %483
  %488 = load i64, ptr %26, align 8, !tbaa !9
  %489 = load i64, ptr %23, align 8, !tbaa !9
  %490 = icmp sle i64 %488, %489
  br i1 %490, label %491, label %516

491:                                              ; preds = %487
  %492 = load double, ptr %33, align 8, !tbaa !11
  %493 = load ptr, ptr %16, align 8, !tbaa !5
  %494 = load i64, ptr %28, align 8, !tbaa !9
  %495 = load i64, ptr %26, align 8, !tbaa !9
  %496 = add nsw i64 %494, %495
  %497 = load i64, ptr %27, align 8, !tbaa !9
  %498 = load i64, ptr %20, align 8, !tbaa !9
  %499 = mul nsw i64 %497, %498
  %500 = add nsw i64 %496, %499
  %501 = getelementptr inbounds double, ptr %493, i64 %500
  %502 = load double, ptr %501, align 8, !tbaa !11
  %503 = load ptr, ptr %18, align 8, !tbaa !5
  %504 = load i64, ptr %29, align 8, !tbaa !9
  %505 = getelementptr inbounds double, ptr %503, i64 %504
  %506 = load double, ptr %505, align 8, !tbaa !11
  %507 = fneg double %492
  %508 = call double @llvm.fmuladd.f64(double %507, double %502, double %506)
  store double %508, ptr %505, align 8, !tbaa !11
  %509 = load ptr, ptr %19, align 8, !tbaa !5
  %510 = load i64, ptr %509, align 8, !tbaa !9
  %511 = load i64, ptr %29, align 8, !tbaa !9
  %512 = add nsw i64 %511, %510
  store i64 %512, ptr %29, align 8, !tbaa !9
  br label %513

513:                                              ; preds = %491
  %514 = load i64, ptr %26, align 8, !tbaa !9
  %515 = add nsw i64 %514, 1
  store i64 %515, ptr %26, align 8, !tbaa !9
  br label %487, !llvm.loop !20

516:                                              ; preds = %487
  br label %517

517:                                              ; preds = %516, %436
  %518 = load ptr, ptr %19, align 8, !tbaa !5
  %519 = load i64, ptr %518, align 8, !tbaa !9
  %520 = load i64, ptr %30, align 8, !tbaa !9
  %521 = add nsw i64 %520, %519
  store i64 %521, ptr %30, align 8, !tbaa !9
  br label %522

522:                                              ; preds = %517
  %523 = load i64, ptr %27, align 8, !tbaa !9
  %524 = add nsw i64 %523, 1
  store i64 %524, ptr %27, align 8, !tbaa !9
  br label %432, !llvm.loop !21

525:                                              ; preds = %432
  br label %526

526:                                              ; preds = %525, %427
  br label %527

527:                                              ; preds = %526, %339
  br label %907

528:                                              ; preds = %136
  %529 = load ptr, ptr %11, align 8, !tbaa !5
  %530 = call i64 @lsame_(ptr noundef %529, ptr noundef @.str)
  %531 = icmp ne i64 %530, 0
  br i1 %531, label %532, label %716

532:                                              ; preds = %528
  %533 = load ptr, ptr %15, align 8, !tbaa !5
  %534 = load i64, ptr %533, align 8, !tbaa !9
  %535 = add nsw i64 %534, 1
  store i64 %535, ptr %34, align 8, !tbaa !9
  %536 = load ptr, ptr %19, align 8, !tbaa !5
  %537 = load i64, ptr %536, align 8, !tbaa !9
  %538 = icmp eq i64 %537, 1
  br i1 %538, label %539, label %617

539:                                              ; preds = %532
  %540 = load ptr, ptr %14, align 8, !tbaa !5
  %541 = load i64, ptr %540, align 8, !tbaa !9
  store i64 %541, ptr %22, align 8, !tbaa !9
  store i64 1, ptr %27, align 8, !tbaa !9
  br label %542

542:                                              ; preds = %613, %539
  %543 = load i64, ptr %27, align 8, !tbaa !9
  %544 = load i64, ptr %22, align 8, !tbaa !9
  %545 = icmp sle i64 %543, %544
  br i1 %545, label %546, label %616

546:                                              ; preds = %542
  %547 = load ptr, ptr %18, align 8, !tbaa !5
  %548 = load i64, ptr %27, align 8, !tbaa !9
  %549 = getelementptr inbounds double, ptr %547, i64 %548
  %550 = load double, ptr %549, align 8, !tbaa !11
  store double %550, ptr %33, align 8, !tbaa !11
  %551 = load i64, ptr %34, align 8, !tbaa !9
  %552 = load i64, ptr %27, align 8, !tbaa !9
  %553 = sub nsw i64 %551, %552
  store i64 %553, ptr %28, align 8, !tbaa !9
  store i64 1, ptr %23, align 8, !tbaa !9
  %554 = load i64, ptr %27, align 8, !tbaa !9
  %555 = load ptr, ptr %15, align 8, !tbaa !5
  %556 = load i64, ptr %555, align 8, !tbaa !9
  %557 = sub nsw i64 %554, %556
  store i64 %557, ptr %24, align 8, !tbaa !9
  %558 = load i64, ptr %27, align 8, !tbaa !9
  %559 = sub nsw i64 %558, 1
  store i64 %559, ptr %25, align 8, !tbaa !9
  %560 = load i64, ptr %23, align 8, !tbaa !9
  %561 = load i64, ptr %24, align 8, !tbaa !9
  %562 = icmp sge i64 %560, %561
  br i1 %562, label %563, label %565

563:                                              ; preds = %546
  %564 = load i64, ptr %23, align 8, !tbaa !9
  br label %567

565:                                              ; preds = %546
  %566 = load i64, ptr %24, align 8, !tbaa !9
  br label %567

567:                                              ; preds = %565, %563
  %568 = phi i64 [ %564, %563 ], [ %566, %565 ]
  store i64 %568, ptr %26, align 8, !tbaa !9
  br label %569

569:                                              ; preds = %591, %567
  %570 = load i64, ptr %26, align 8, !tbaa !9
  %571 = load i64, ptr %25, align 8, !tbaa !9
  %572 = icmp sle i64 %570, %571
  br i1 %572, label %573, label %594

573:                                              ; preds = %569
  %574 = load ptr, ptr %16, align 8, !tbaa !5
  %575 = load i64, ptr %28, align 8, !tbaa !9
  %576 = load i64, ptr %26, align 8, !tbaa !9
  %577 = add nsw i64 %575, %576
  %578 = load i64, ptr %27, align 8, !tbaa !9
  %579 = load i64, ptr %20, align 8, !tbaa !9
  %580 = mul nsw i64 %578, %579
  %581 = add nsw i64 %577, %580
  %582 = getelementptr inbounds double, ptr %574, i64 %581
  %583 = load double, ptr %582, align 8, !tbaa !11
  %584 = load ptr, ptr %18, align 8, !tbaa !5
  %585 = load i64, ptr %26, align 8, !tbaa !9
  %586 = getelementptr inbounds double, ptr %584, i64 %585
  %587 = load double, ptr %586, align 8, !tbaa !11
  %588 = load double, ptr %33, align 8, !tbaa !11
  %589 = fneg double %583
  %590 = call double @llvm.fmuladd.f64(double %589, double %587, double %588)
  store double %590, ptr %33, align 8, !tbaa !11
  br label %591

591:                                              ; preds = %573
  %592 = load i64, ptr %26, align 8, !tbaa !9
  %593 = add nsw i64 %592, 1
  store i64 %593, ptr %26, align 8, !tbaa !9
  br label %569, !llvm.loop !22

594:                                              ; preds = %569
  %595 = load i64, ptr %35, align 8, !tbaa !9
  %596 = icmp ne i64 %595, 0
  br i1 %596, label %597, label %608

597:                                              ; preds = %594
  %598 = load ptr, ptr %16, align 8, !tbaa !5
  %599 = load i64, ptr %34, align 8, !tbaa !9
  %600 = load i64, ptr %27, align 8, !tbaa !9
  %601 = load i64, ptr %20, align 8, !tbaa !9
  %602 = mul nsw i64 %600, %601
  %603 = add nsw i64 %599, %602
  %604 = getelementptr inbounds double, ptr %598, i64 %603
  %605 = load double, ptr %604, align 8, !tbaa !11
  %606 = load double, ptr %33, align 8, !tbaa !11
  %607 = fdiv double %606, %605
  store double %607, ptr %33, align 8, !tbaa !11
  br label %608

608:                                              ; preds = %597, %594
  %609 = load double, ptr %33, align 8, !tbaa !11
  %610 = load ptr, ptr %18, align 8, !tbaa !5
  %611 = load i64, ptr %27, align 8, !tbaa !9
  %612 = getelementptr inbounds double, ptr %610, i64 %611
  store double %609, ptr %612, align 8, !tbaa !11
  br label %613

613:                                              ; preds = %608
  %614 = load i64, ptr %27, align 8, !tbaa !9
  %615 = add nsw i64 %614, 1
  store i64 %615, ptr %27, align 8, !tbaa !9
  br label %542, !llvm.loop !23

616:                                              ; preds = %542
  br label %715

617:                                              ; preds = %532
  %618 = load i64, ptr %31, align 8, !tbaa !9
  store i64 %618, ptr %30, align 8, !tbaa !9
  %619 = load ptr, ptr %14, align 8, !tbaa !5
  %620 = load i64, ptr %619, align 8, !tbaa !9
  store i64 %620, ptr %22, align 8, !tbaa !9
  store i64 1, ptr %27, align 8, !tbaa !9
  br label %621

621:                                              ; preds = %711, %617
  %622 = load i64, ptr %27, align 8, !tbaa !9
  %623 = load i64, ptr %22, align 8, !tbaa !9
  %624 = icmp sle i64 %622, %623
  br i1 %624, label %625, label %714

625:                                              ; preds = %621
  %626 = load ptr, ptr %18, align 8, !tbaa !5
  %627 = load i64, ptr %30, align 8, !tbaa !9
  %628 = getelementptr inbounds double, ptr %626, i64 %627
  %629 = load double, ptr %628, align 8, !tbaa !11
  store double %629, ptr %33, align 8, !tbaa !11
  %630 = load i64, ptr %31, align 8, !tbaa !9
  store i64 %630, ptr %29, align 8, !tbaa !9
  %631 = load i64, ptr %34, align 8, !tbaa !9
  %632 = load i64, ptr %27, align 8, !tbaa !9
  %633 = sub nsw i64 %631, %632
  store i64 %633, ptr %28, align 8, !tbaa !9
  store i64 1, ptr %25, align 8, !tbaa !9
  %634 = load i64, ptr %27, align 8, !tbaa !9
  %635 = load ptr, ptr %15, align 8, !tbaa !5
  %636 = load i64, ptr %635, align 8, !tbaa !9
  %637 = sub nsw i64 %634, %636
  store i64 %637, ptr %23, align 8, !tbaa !9
  %638 = load i64, ptr %27, align 8, !tbaa !9
  %639 = sub nsw i64 %638, 1
  store i64 %639, ptr %24, align 8, !tbaa !9
  %640 = load i64, ptr %25, align 8, !tbaa !9
  %641 = load i64, ptr %23, align 8, !tbaa !9
  %642 = icmp sge i64 %640, %641
  br i1 %642, label %643, label %645

643:                                              ; preds = %625
  %644 = load i64, ptr %25, align 8, !tbaa !9
  br label %647

645:                                              ; preds = %625
  %646 = load i64, ptr %23, align 8, !tbaa !9
  br label %647

647:                                              ; preds = %645, %643
  %648 = phi i64 [ %644, %643 ], [ %646, %645 ]
  store i64 %648, ptr %26, align 8, !tbaa !9
  br label %649

649:                                              ; preds = %675, %647
  %650 = load i64, ptr %26, align 8, !tbaa !9
  %651 = load i64, ptr %24, align 8, !tbaa !9
  %652 = icmp sle i64 %650, %651
  br i1 %652, label %653, label %678

653:                                              ; preds = %649
  %654 = load ptr, ptr %16, align 8, !tbaa !5
  %655 = load i64, ptr %28, align 8, !tbaa !9
  %656 = load i64, ptr %26, align 8, !tbaa !9
  %657 = add nsw i64 %655, %656
  %658 = load i64, ptr %27, align 8, !tbaa !9
  %659 = load i64, ptr %20, align 8, !tbaa !9
  %660 = mul nsw i64 %658, %659
  %661 = add nsw i64 %657, %660
  %662 = getelementptr inbounds double, ptr %654, i64 %661
  %663 = load double, ptr %662, align 8, !tbaa !11
  %664 = load ptr, ptr %18, align 8, !tbaa !5
  %665 = load i64, ptr %29, align 8, !tbaa !9
  %666 = getelementptr inbounds double, ptr %664, i64 %665
  %667 = load double, ptr %666, align 8, !tbaa !11
  %668 = load double, ptr %33, align 8, !tbaa !11
  %669 = fneg double %663
  %670 = call double @llvm.fmuladd.f64(double %669, double %667, double %668)
  store double %670, ptr %33, align 8, !tbaa !11
  %671 = load ptr, ptr %19, align 8, !tbaa !5
  %672 = load i64, ptr %671, align 8, !tbaa !9
  %673 = load i64, ptr %29, align 8, !tbaa !9
  %674 = add nsw i64 %673, %672
  store i64 %674, ptr %29, align 8, !tbaa !9
  br label %675

675:                                              ; preds = %653
  %676 = load i64, ptr %26, align 8, !tbaa !9
  %677 = add nsw i64 %676, 1
  store i64 %677, ptr %26, align 8, !tbaa !9
  br label %649, !llvm.loop !24

678:                                              ; preds = %649
  %679 = load i64, ptr %35, align 8, !tbaa !9
  %680 = icmp ne i64 %679, 0
  br i1 %680, label %681, label %692

681:                                              ; preds = %678
  %682 = load ptr, ptr %16, align 8, !tbaa !5
  %683 = load i64, ptr %34, align 8, !tbaa !9
  %684 = load i64, ptr %27, align 8, !tbaa !9
  %685 = load i64, ptr %20, align 8, !tbaa !9
  %686 = mul nsw i64 %684, %685
  %687 = add nsw i64 %683, %686
  %688 = getelementptr inbounds double, ptr %682, i64 %687
  %689 = load double, ptr %688, align 8, !tbaa !11
  %690 = load double, ptr %33, align 8, !tbaa !11
  %691 = fdiv double %690, %689
  store double %691, ptr %33, align 8, !tbaa !11
  br label %692

692:                                              ; preds = %681, %678
  %693 = load double, ptr %33, align 8, !tbaa !11
  %694 = load ptr, ptr %18, align 8, !tbaa !5
  %695 = load i64, ptr %30, align 8, !tbaa !9
  %696 = getelementptr inbounds double, ptr %694, i64 %695
  store double %693, ptr %696, align 8, !tbaa !11
  %697 = load ptr, ptr %19, align 8, !tbaa !5
  %698 = load i64, ptr %697, align 8, !tbaa !9
  %699 = load i64, ptr %30, align 8, !tbaa !9
  %700 = add nsw i64 %699, %698
  store i64 %700, ptr %30, align 8, !tbaa !9
  %701 = load i64, ptr %27, align 8, !tbaa !9
  %702 = load ptr, ptr %15, align 8, !tbaa !5
  %703 = load i64, ptr %702, align 8, !tbaa !9
  %704 = icmp sgt i64 %701, %703
  br i1 %704, label %705, label %710

705:                                              ; preds = %692
  %706 = load ptr, ptr %19, align 8, !tbaa !5
  %707 = load i64, ptr %706, align 8, !tbaa !9
  %708 = load i64, ptr %31, align 8, !tbaa !9
  %709 = add nsw i64 %708, %707
  store i64 %709, ptr %31, align 8, !tbaa !9
  br label %710

710:                                              ; preds = %705, %692
  br label %711

711:                                              ; preds = %710
  %712 = load i64, ptr %27, align 8, !tbaa !9
  %713 = add nsw i64 %712, 1
  store i64 %713, ptr %27, align 8, !tbaa !9
  br label %621, !llvm.loop !25

714:                                              ; preds = %621
  br label %715

715:                                              ; preds = %714, %616
  br label %906

716:                                              ; preds = %528
  %717 = load ptr, ptr %19, align 8, !tbaa !5
  %718 = load i64, ptr %717, align 8, !tbaa !9
  %719 = icmp eq i64 %718, 1
  br i1 %719, label %720, label %797

720:                                              ; preds = %716
  %721 = load ptr, ptr %14, align 8, !tbaa !5
  %722 = load i64, ptr %721, align 8, !tbaa !9
  store i64 %722, ptr %27, align 8, !tbaa !9
  br label %723

723:                                              ; preds = %793, %720
  %724 = load i64, ptr %27, align 8, !tbaa !9
  %725 = icmp sge i64 %724, 1
  br i1 %725, label %726, label %796

726:                                              ; preds = %723
  %727 = load ptr, ptr %18, align 8, !tbaa !5
  %728 = load i64, ptr %27, align 8, !tbaa !9
  %729 = getelementptr inbounds double, ptr %727, i64 %728
  %730 = load double, ptr %729, align 8, !tbaa !11
  store double %730, ptr %33, align 8, !tbaa !11
  %731 = load i64, ptr %27, align 8, !tbaa !9
  %732 = sub nsw i64 1, %731
  store i64 %732, ptr %28, align 8, !tbaa !9
  %733 = load ptr, ptr %14, align 8, !tbaa !5
  %734 = load i64, ptr %733, align 8, !tbaa !9
  store i64 %734, ptr %22, align 8, !tbaa !9
  %735 = load i64, ptr %27, align 8, !tbaa !9
  %736 = load ptr, ptr %15, align 8, !tbaa !5
  %737 = load i64, ptr %736, align 8, !tbaa !9
  %738 = add nsw i64 %735, %737
  store i64 %738, ptr %24, align 8, !tbaa !9
  %739 = load i64, ptr %27, align 8, !tbaa !9
  %740 = add nsw i64 %739, 1
  store i64 %740, ptr %25, align 8, !tbaa !9
  %741 = load i64, ptr %22, align 8, !tbaa !9
  %742 = load i64, ptr %24, align 8, !tbaa !9
  %743 = icmp sle i64 %741, %742
  br i1 %743, label %744, label %746

744:                                              ; preds = %726
  %745 = load i64, ptr %22, align 8, !tbaa !9
  br label %748

746:                                              ; preds = %726
  %747 = load i64, ptr %24, align 8, !tbaa !9
  br label %748

748:                                              ; preds = %746, %744
  %749 = phi i64 [ %745, %744 ], [ %747, %746 ]
  store i64 %749, ptr %26, align 8, !tbaa !9
  br label %750

750:                                              ; preds = %772, %748
  %751 = load i64, ptr %26, align 8, !tbaa !9
  %752 = load i64, ptr %25, align 8, !tbaa !9
  %753 = icmp sge i64 %751, %752
  br i1 %753, label %754, label %775

754:                                              ; preds = %750
  %755 = load ptr, ptr %16, align 8, !tbaa !5
  %756 = load i64, ptr %28, align 8, !tbaa !9
  %757 = load i64, ptr %26, align 8, !tbaa !9
  %758 = add nsw i64 %756, %757
  %759 = load i64, ptr %27, align 8, !tbaa !9
  %760 = load i64, ptr %20, align 8, !tbaa !9
  %761 = mul nsw i64 %759, %760
  %762 = add nsw i64 %758, %761
  %763 = getelementptr inbounds double, ptr %755, i64 %762
  %764 = load double, ptr %763, align 8, !tbaa !11
  %765 = load ptr, ptr %18, align 8, !tbaa !5
  %766 = load i64, ptr %26, align 8, !tbaa !9
  %767 = getelementptr inbounds double, ptr %765, i64 %766
  %768 = load double, ptr %767, align 8, !tbaa !11
  %769 = load double, ptr %33, align 8, !tbaa !11
  %770 = fneg double %764
  %771 = call double @llvm.fmuladd.f64(double %770, double %768, double %769)
  store double %771, ptr %33, align 8, !tbaa !11
  br label %772

772:                                              ; preds = %754
  %773 = load i64, ptr %26, align 8, !tbaa !9
  %774 = add nsw i64 %773, -1
  store i64 %774, ptr %26, align 8, !tbaa !9
  br label %750, !llvm.loop !26

775:                                              ; preds = %750
  %776 = load i64, ptr %35, align 8, !tbaa !9
  %777 = icmp ne i64 %776, 0
  br i1 %777, label %778, label %788

778:                                              ; preds = %775
  %779 = load ptr, ptr %16, align 8, !tbaa !5
  %780 = load i64, ptr %27, align 8, !tbaa !9
  %781 = load i64, ptr %20, align 8, !tbaa !9
  %782 = mul nsw i64 %780, %781
  %783 = add nsw i64 %782, 1
  %784 = getelementptr inbounds double, ptr %779, i64 %783
  %785 = load double, ptr %784, align 8, !tbaa !11
  %786 = load double, ptr %33, align 8, !tbaa !11
  %787 = fdiv double %786, %785
  store double %787, ptr %33, align 8, !tbaa !11
  br label %788

788:                                              ; preds = %778, %775
  %789 = load double, ptr %33, align 8, !tbaa !11
  %790 = load ptr, ptr %18, align 8, !tbaa !5
  %791 = load i64, ptr %27, align 8, !tbaa !9
  %792 = getelementptr inbounds double, ptr %790, i64 %791
  store double %789, ptr %792, align 8, !tbaa !11
  br label %793

793:                                              ; preds = %788
  %794 = load i64, ptr %27, align 8, !tbaa !9
  %795 = add nsw i64 %794, -1
  store i64 %795, ptr %27, align 8, !tbaa !9
  br label %723, !llvm.loop !27

796:                                              ; preds = %723
  br label %905

797:                                              ; preds = %716
  %798 = load ptr, ptr %14, align 8, !tbaa !5
  %799 = load i64, ptr %798, align 8, !tbaa !9
  %800 = sub nsw i64 %799, 1
  %801 = load ptr, ptr %19, align 8, !tbaa !5
  %802 = load i64, ptr %801, align 8, !tbaa !9
  %803 = mul nsw i64 %800, %802
  %804 = load i64, ptr %31, align 8, !tbaa !9
  %805 = add nsw i64 %804, %803
  store i64 %805, ptr %31, align 8, !tbaa !9
  %806 = load i64, ptr %31, align 8, !tbaa !9
  store i64 %806, ptr %30, align 8, !tbaa !9
  %807 = load ptr, ptr %14, align 8, !tbaa !5
  %808 = load i64, ptr %807, align 8, !tbaa !9
  store i64 %808, ptr %27, align 8, !tbaa !9
  br label %809

809:                                              ; preds = %901, %797
  %810 = load i64, ptr %27, align 8, !tbaa !9
  %811 = icmp sge i64 %810, 1
  br i1 %811, label %812, label %904

812:                                              ; preds = %809
  %813 = load ptr, ptr %18, align 8, !tbaa !5
  %814 = load i64, ptr %30, align 8, !tbaa !9
  %815 = getelementptr inbounds double, ptr %813, i64 %814
  %816 = load double, ptr %815, align 8, !tbaa !11
  store double %816, ptr %33, align 8, !tbaa !11
  %817 = load i64, ptr %31, align 8, !tbaa !9
  store i64 %817, ptr %29, align 8, !tbaa !9
  %818 = load i64, ptr %27, align 8, !tbaa !9
  %819 = sub nsw i64 1, %818
  store i64 %819, ptr %28, align 8, !tbaa !9
  %820 = load ptr, ptr %14, align 8, !tbaa !5
  %821 = load i64, ptr %820, align 8, !tbaa !9
  store i64 %821, ptr %25, align 8, !tbaa !9
  %822 = load i64, ptr %27, align 8, !tbaa !9
  %823 = load ptr, ptr %15, align 8, !tbaa !5
  %824 = load i64, ptr %823, align 8, !tbaa !9
  %825 = add nsw i64 %822, %824
  store i64 %825, ptr %22, align 8, !tbaa !9
  %826 = load i64, ptr %27, align 8, !tbaa !9
  %827 = add nsw i64 %826, 1
  store i64 %827, ptr %24, align 8, !tbaa !9
  %828 = load i64, ptr %25, align 8, !tbaa !9
  %829 = load i64, ptr %22, align 8, !tbaa !9
  %830 = icmp sle i64 %828, %829
  br i1 %830, label %831, label %833

831:                                              ; preds = %812
  %832 = load i64, ptr %25, align 8, !tbaa !9
  br label %835

833:                                              ; preds = %812
  %834 = load i64, ptr %22, align 8, !tbaa !9
  br label %835

835:                                              ; preds = %833, %831
  %836 = phi i64 [ %832, %831 ], [ %834, %833 ]
  store i64 %836, ptr %26, align 8, !tbaa !9
  br label %837

837:                                              ; preds = %863, %835
  %838 = load i64, ptr %26, align 8, !tbaa !9
  %839 = load i64, ptr %24, align 8, !tbaa !9
  %840 = icmp sge i64 %838, %839
  br i1 %840, label %841, label %866

841:                                              ; preds = %837
  %842 = load ptr, ptr %16, align 8, !tbaa !5
  %843 = load i64, ptr %28, align 8, !tbaa !9
  %844 = load i64, ptr %26, align 8, !tbaa !9
  %845 = add nsw i64 %843, %844
  %846 = load i64, ptr %27, align 8, !tbaa !9
  %847 = load i64, ptr %20, align 8, !tbaa !9
  %848 = mul nsw i64 %846, %847
  %849 = add nsw i64 %845, %848
  %850 = getelementptr inbounds double, ptr %842, i64 %849
  %851 = load double, ptr %850, align 8, !tbaa !11
  %852 = load ptr, ptr %18, align 8, !tbaa !5
  %853 = load i64, ptr %29, align 8, !tbaa !9
  %854 = getelementptr inbounds double, ptr %852, i64 %853
  %855 = load double, ptr %854, align 8, !tbaa !11
  %856 = load double, ptr %33, align 8, !tbaa !11
  %857 = fneg double %851
  %858 = call double @llvm.fmuladd.f64(double %857, double %855, double %856)
  store double %858, ptr %33, align 8, !tbaa !11
  %859 = load ptr, ptr %19, align 8, !tbaa !5
  %860 = load i64, ptr %859, align 8, !tbaa !9
  %861 = load i64, ptr %29, align 8, !tbaa !9
  %862 = sub nsw i64 %861, %860
  store i64 %862, ptr %29, align 8, !tbaa !9
  br label %863

863:                                              ; preds = %841
  %864 = load i64, ptr %26, align 8, !tbaa !9
  %865 = add nsw i64 %864, -1
  store i64 %865, ptr %26, align 8, !tbaa !9
  br label %837, !llvm.loop !28

866:                                              ; preds = %837
  %867 = load i64, ptr %35, align 8, !tbaa !9
  %868 = icmp ne i64 %867, 0
  br i1 %868, label %869, label %879

869:                                              ; preds = %866
  %870 = load ptr, ptr %16, align 8, !tbaa !5
  %871 = load i64, ptr %27, align 8, !tbaa !9
  %872 = load i64, ptr %20, align 8, !tbaa !9
  %873 = mul nsw i64 %871, %872
  %874 = add nsw i64 %873, 1
  %875 = getelementptr inbounds double, ptr %870, i64 %874
  %876 = load double, ptr %875, align 8, !tbaa !11
  %877 = load double, ptr %33, align 8, !tbaa !11
  %878 = fdiv double %877, %876
  store double %878, ptr %33, align 8, !tbaa !11
  br label %879

879:                                              ; preds = %869, %866
  %880 = load double, ptr %33, align 8, !tbaa !11
  %881 = load ptr, ptr %18, align 8, !tbaa !5
  %882 = load i64, ptr %30, align 8, !tbaa !9
  %883 = getelementptr inbounds double, ptr %881, i64 %882
  store double %880, ptr %883, align 8, !tbaa !11
  %884 = load ptr, ptr %19, align 8, !tbaa !5
  %885 = load i64, ptr %884, align 8, !tbaa !9
  %886 = load i64, ptr %30, align 8, !tbaa !9
  %887 = sub nsw i64 %886, %885
  store i64 %887, ptr %30, align 8, !tbaa !9
  %888 = load ptr, ptr %14, align 8, !tbaa !5
  %889 = load i64, ptr %888, align 8, !tbaa !9
  %890 = load i64, ptr %27, align 8, !tbaa !9
  %891 = sub nsw i64 %889, %890
  %892 = load ptr, ptr %15, align 8, !tbaa !5
  %893 = load i64, ptr %892, align 8, !tbaa !9
  %894 = icmp sge i64 %891, %893
  br i1 %894, label %895, label %900

895:                                              ; preds = %879
  %896 = load ptr, ptr %19, align 8, !tbaa !5
  %897 = load i64, ptr %896, align 8, !tbaa !9
  %898 = load i64, ptr %31, align 8, !tbaa !9
  %899 = sub nsw i64 %898, %897
  store i64 %899, ptr %31, align 8, !tbaa !9
  br label %900

900:                                              ; preds = %895, %879
  br label %901

901:                                              ; preds = %900
  %902 = load i64, ptr %27, align 8, !tbaa !9
  %903 = add nsw i64 %902, -1
  store i64 %903, ptr %27, align 8, !tbaa !9
  br label %809, !llvm.loop !29

904:                                              ; preds = %809
  br label %905

905:                                              ; preds = %904, %796
  br label %906

906:                                              ; preds = %905, %715
  br label %907

907:                                              ; preds = %906, %527
  store i32 0, ptr %10, align 4
  store i32 1, ptr %36, align 4
  br label %908

908:                                              ; preds = %907, %115, %109
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #4
  %909 = load i32, ptr %10, align 4
  ret i32 %909
}

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

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

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

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

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

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

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

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


; 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 [7 x i8], align 1

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

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

18:                                               ; preds = %16
  store i64 1, ptr %10, align 8, !tbaa !5
  br label %.thread

19:                                               ; preds = %16, %9
  %20 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #5
  %.not388 = icmp eq i64 %20, 0
  br i1 %.not388, label %21, label %26

21:                                               ; preds = %19
  %22 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #5
  %.not389 = icmp eq i64 %22, 0
  br i1 %.not389, label %23, label %26

23:                                               ; preds = %21
  %24 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #5
  %.not390 = icmp eq i64 %24, 0
  br i1 %.not390, label %25, label %26

25:                                               ; preds = %23
  store i64 2, ptr %10, align 8, !tbaa !5
  br label %.thread

26:                                               ; preds = %23, %21, %19
  %27 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str) #5
  %.not391 = icmp eq i64 %27, 0
  br i1 %.not391, label %28, label %31

28:                                               ; preds = %26
  %29 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.2) #5
  %.not392 = icmp eq i64 %29, 0
  br i1 %.not392, label %30, label %31

30:                                               ; preds = %28
  store i64 3, ptr %10, align 8, !tbaa !5
  br label %.thread

31:                                               ; preds = %28, %26
  %32 = load i64, ptr %3, align 8, !tbaa !5
  %33 = icmp slt i64 %32, 0
  br i1 %33, label %34, label %35

34:                                               ; preds = %31
  store i64 4, ptr %10, align 8, !tbaa !5
  br label %.thread

35:                                               ; preds = %31
  %36 = load i64, ptr %4, align 8, !tbaa !5
  %37 = icmp slt i64 %36, 0
  br i1 %37, label %38, label %39

38:                                               ; preds = %35
  store i64 5, ptr %10, align 8, !tbaa !5
  br label %.thread

39:                                               ; preds = %35
  %40 = load i64, ptr %6, align 8, !tbaa !5
  %.not393 = icmp sgt i64 %40, %36
  br i1 %.not393, label %42, label %41

41:                                               ; preds = %39
  store i64 7, ptr %10, align 8, !tbaa !5
  br label %.thread

42:                                               ; preds = %39
  %43 = load i64, ptr %8, align 8, !tbaa !5
  %44 = icmp eq i64 %43, 0
  br i1 %44, label %45, label %47

45:                                               ; preds = %42
  store i64 9, ptr %10, align 8, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %18, %30, %38, %45, %41, %34, %25
  %46 = call i32 @xerbla_(ptr noundef nonnull @.str.5, ptr noundef nonnull %10) #5
  br label %.loopexit

47:                                               ; preds = %42
  %48 = icmp eq i64 %32, 0
  br i1 %48, label %.loopexit, label %49

49:                                               ; preds = %47
  %50 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.2) #5
  %51 = load i64, ptr %8, align 8, !tbaa !5
  %52 = icmp slt i64 %51, 1
  br i1 %52, label %53, label %58

53:                                               ; preds = %49
  %54 = load i64, ptr %3, align 8, !tbaa !5
  %55 = add nsw i64 %54, -1
  %56 = mul nsw i64 %55, %51
  %57 = sub nsw i64 1, %56
  br label %58

58:                                               ; preds = %49, %53
  %.0348 = phi i64 [ %57, %53 ], [ 1, %49 ]
  %59 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #5
  %.not396 = icmp eq i64 %59, 0
  %60 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %.not397 = icmp eq i64 %60, 0
  br i1 %.not396, label %233, label %61

61:                                               ; preds = %58
  br i1 %.not397, label %164, label %62

62:                                               ; preds = %61
  %63 = load i64, ptr %4, align 8, !tbaa !5
  %64 = add nsw i64 %63, 1
  %65 = load i64, ptr %8, align 8, !tbaa !5
  %66 = icmp eq i64 %65, 1
  %67 = load i64, ptr %3, align 8, !tbaa !5
  %68 = icmp sgt i64 %67, 0
  br i1 %66, label %69, label %132

69:                                               ; preds = %62
  br i1 %68, label %.lr.ph454, label %.loopexit

.lr.ph454:                                        ; preds = %69
  %.not423 = icmp eq i64 %50, 0
  %70 = getelementptr double, ptr %13, i64 %64
  %scevgep = getelementptr i8, ptr %7, i64 -8
  %71 = shl i64 %67, 3
  %72 = add i64 %71, -8
  %73 = mul i64 %11, %67
  %74 = add i64 %63, %73
  %75 = shl i64 %11, 3
  %76 = sub i64 %74, %11
  %77 = shl i64 %76, 3
  %78 = sub i64 %77, %71
  %79 = sub i64 8, %75
  %80 = mul i64 %11, -8
  %81 = getelementptr i8, ptr %5, i64 %78
  %82 = getelementptr i8, ptr %5, i64 %77
  br label %83

83:                                               ; preds = %.lr.ph454, %.loopexit435
  %indvar = phi i64 [ 0, %.lr.ph454 ], [ %indvar.next, %.loopexit435 ]
  %.0363452 = phi i64 [ %67, %.lr.ph454 ], [ %130, %.loopexit435 ]
  %84 = add i64 %63, %indvar
  %85 = sub i64 %67, %84
  %smax583 = tail call i64 @llvm.smax.i64(i64 %85, i64 1)
  %86 = xor i64 %indvar, -1
  %87 = add i64 %67, %86
  %smin584 = tail call i64 @llvm.smin.i64(i64 %smax583, i64 %87)
  %88 = sub i64 %.0363452, %smin584
  %89 = add i64 %63, %indvar
  %90 = sub i64 %67, %89
  %smax = tail call i64 @llvm.smax.i64(i64 %90, i64 1)
  %91 = xor i64 %indvar, -1
  %92 = add i64 %67, %91
  %smin = tail call i64 @llvm.smin.i64(i64 %smax, i64 %92)
  %93 = shl i64 %smin, 3
  %scevgep578 = getelementptr i8, ptr %scevgep, i64 %93
  %94 = shl i64 %indvar, 3
  %95 = sub i64 %72, %94
  %scevgep579 = getelementptr i8, ptr %7, i64 %95
  %96 = mul i64 %79, %indvar
  %scevgep580 = getelementptr i8, ptr %81, i64 %96
  %scevgep581 = getelementptr i8, ptr %scevgep580, i64 %93
  %97 = mul i64 %80, %indvar
  %scevgep582 = getelementptr i8, ptr %82, i64 %97
  %98 = getelementptr inbounds double, ptr %14, i64 %.0363452
  %99 = load double, ptr %98, align 8, !tbaa !9
  %100 = fcmp une double %99, 0.000000e+00
  br i1 %100, label %101, label %.loopexit435

101:                                              ; preds = %83
  %102 = sub nsw i64 %64, %.0363452
  br i1 %.not423, label %108, label %103

103:                                              ; preds = %101
  %104 = mul nsw i64 %.0363452, %11
  %105 = getelementptr double, ptr %70, i64 %104
  %106 = load double, ptr %105, align 8, !tbaa !9
  %107 = fdiv double %99, %106
  store double %107, ptr %98, align 8, !tbaa !9
  br label %108

108:                                              ; preds = %103, %101
  %109 = phi double [ %107, %103 ], [ %99, %101 ]
  %110 = sub nsw i64 %.0363452, %63
  %111 = tail call i64 @llvm.smax.i64(i64 %110, i64 1)
  %.not424.not447 = icmp ugt i64 %.0363452, %111
  br i1 %.not424.not447, label %.lr.ph449, label %.loopexit435

.lr.ph449:                                        ; preds = %108
  %112 = mul nsw i64 %.0363452, %11
  %113 = getelementptr double, ptr %13, i64 %102
  %invariant.gep450 = getelementptr double, ptr %113, i64 %112
  %114 = fneg double %109
  %min.iters.check = icmp ult i64 %88, 4
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph449
  %bound0 = icmp ult ptr %scevgep578, %scevgep582
  %bound1 = icmp ult ptr %scevgep581, %scevgep579
  %found.conflict = and i1 %bound0, %bound1
  br i1 %found.conflict, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %88, -4
  %ind.end = sub i64 %.0363452, %n.vec
  %broadcast.splatinsert = insertelement <2 x double> poison, double %114, i64 0
  %115 = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  %116 = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %117 = xor i64 %index, -1
  %118 = add i64 %.0363452, %117
  %119 = getelementptr double, ptr %invariant.gep450, i64 %118
  %120 = getelementptr i8, ptr %119, i64 -8
  %121 = getelementptr i8, ptr %119, i64 -24
  %wide.load = load <2 x double>, ptr %120, align 8, !tbaa !9, !alias.scope !11
  %wide.load585 = load <2 x double>, ptr %121, align 8, !tbaa !9, !alias.scope !11
  %122 = getelementptr inbounds double, ptr %14, i64 %118
  %123 = getelementptr inbounds i8, ptr %122, i64 -8
  %124 = getelementptr inbounds i8, ptr %122, i64 -24
  %wide.load587 = load <2 x double>, ptr %123, align 8, !tbaa !9, !alias.scope !14, !noalias !11
  %wide.load589 = load <2 x double>, ptr %124, align 8, !tbaa !9, !alias.scope !14, !noalias !11
  %reverse591 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %115, <2 x double> %wide.load, <2 x double> %wide.load587)
  store <2 x double> %reverse591, ptr %123, align 8, !tbaa !9, !alias.scope !14, !noalias !11
  %reverse592 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %116, <2 x double> %wide.load585, <2 x double> %wide.load589)
  store <2 x double> %reverse592, ptr %124, align 8, !tbaa !9, !alias.scope !14, !noalias !11
  %index.next = add nuw i64 %index, 4
  %125 = icmp eq i64 %index.next, %n.vec
  br i1 %125, label %middle.block, label %vector.body, !llvm.loop !16

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

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph449
  %.0371.in448.ph = phi i64 [ %.0363452, %vector.memcheck ], [ %.0363452, %.lr.ph449 ], [ %ind.end, %middle.block ]
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %.0371.in448 = phi i64 [ %.0371, %scalar.ph ], [ %.0371.in448.ph, %scalar.ph.preheader ]
  %.0371 = add nsw i64 %.0371.in448, -1
  %gep451 = getelementptr double, ptr %invariant.gep450, i64 %.0371
  %126 = load double, ptr %gep451, align 8, !tbaa !9
  %127 = getelementptr inbounds double, ptr %14, i64 %.0371
  %128 = load double, ptr %127, align 8, !tbaa !9
  %129 = tail call double @llvm.fmuladd.f64(double %114, double %126, double %128)
  store double %129, ptr %127, align 8, !tbaa !9
  %.not424.not = icmp sgt i64 %.0371, %111
  br i1 %.not424.not, label %scalar.ph, label %.loopexit435, !llvm.loop !20

.loopexit435:                                     ; preds = %scalar.ph, %middle.block, %108, %83
  %130 = add nsw i64 %.0363452, -1
  %131 = icmp sgt i64 %.0363452, 1
  %indvar.next = add i64 %indvar, 1
  br i1 %131, label %83, label %.loopexit, !llvm.loop !21

132:                                              ; preds = %62
  br i1 %68, label %.lr.ph446, label %.loopexit

.lr.ph446:                                        ; preds = %132
  %133 = add nsw i64 %67, -1
  %134 = mul nsw i64 %133, %65
  %135 = add nsw i64 %134, %.0348
  %.not421 = icmp eq i64 %50, 0
  %136 = getelementptr double, ptr %13, i64 %64
  br label %137

137:                                              ; preds = %.lr.ph446, %.loopexit437
  %.1349445 = phi i64 [ %135, %.lr.ph446 ], [ %138, %.loopexit437 ]
  %.1364442 = phi i64 [ %67, %.lr.ph446 ], [ %162, %.loopexit437 ]
  %138 = sub nsw i64 %.1349445, %65
  %139 = getelementptr inbounds double, ptr %14, i64 %.1349445
  %140 = load double, ptr %139, align 8, !tbaa !9
  %141 = fcmp une double %140, 0.000000e+00
  br i1 %141, label %142, label %.loopexit437

142:                                              ; preds = %137
  %143 = sub nsw i64 %64, %.1364442
  br i1 %.not421, label %149, label %144

144:                                              ; preds = %142
  %145 = mul nsw i64 %.1364442, %11
  %146 = getelementptr double, ptr %136, i64 %145
  %147 = load double, ptr %146, align 8, !tbaa !9
  %148 = fdiv double %140, %147
  store double %148, ptr %139, align 8, !tbaa !9
  br label %149

149:                                              ; preds = %144, %142
  %150 = phi double [ %148, %144 ], [ %140, %142 ]
  %151 = sub nsw i64 %.1364442, %63
  %152 = tail call i64 @llvm.smax.i64(i64 %151, i64 1)
  %.not422.not439 = icmp ugt i64 %.1364442, %152
  br i1 %.not422.not439, label %.lr.ph, label %.loopexit437

.lr.ph:                                           ; preds = %149
  %153 = mul nsw i64 %.1364442, %11
  %154 = getelementptr double, ptr %13, i64 %143
  %invariant.gep = getelementptr double, ptr %154, i64 %153
  %155 = fneg double %150
  br label %156

156:                                              ; preds = %.lr.ph, %156
  %.0359441 = phi i64 [ %138, %.lr.ph ], [ %161, %156 ]
  %.1372.in440 = phi i64 [ %.1364442, %.lr.ph ], [ %.1372, %156 ]
  %.1372 = add nsw i64 %.1372.in440, -1
  %gep = getelementptr double, ptr %invariant.gep, i64 %.1372
  %157 = load double, ptr %gep, align 8, !tbaa !9
  %158 = getelementptr inbounds double, ptr %14, i64 %.0359441
  %159 = load double, ptr %158, align 8, !tbaa !9
  %160 = tail call double @llvm.fmuladd.f64(double %155, double %157, double %159)
  store double %160, ptr %158, align 8, !tbaa !9
  %161 = sub nsw i64 %.0359441, %65
  %.not422.not = icmp sgt i64 %.1372, %152
  br i1 %.not422.not, label %156, label %.loopexit437, !llvm.loop !22

.loopexit437:                                     ; preds = %156, %149, %137
  %162 = add nsw i64 %.1364442, -1
  %163 = icmp sgt i64 %.1364442, 1
  br i1 %163, label %137, label %.loopexit, !llvm.loop !23

164:                                              ; preds = %61
  %165 = load i64, ptr %8, align 8, !tbaa !5
  %166 = icmp eq i64 %165, 1
  %167 = load i64, ptr %3, align 8, !tbaa !5
  %invariant.gep478 = getelementptr i8, ptr %13, i64 8
  %.not417480 = icmp slt i64 %167, 1
  br i1 %166, label %168, label %207

168:                                              ; preds = %164
  br i1 %.not417480, label %.loopexit, label %.lr.ph483

.lr.ph483:                                        ; preds = %168
  %.not418 = icmp eq i64 %50, 0
  %invariant.gep471 = getelementptr i8, ptr %13, i64 16
  %169 = shl i64 %11, 3
  %invariant.gep686 = getelementptr i8, ptr %7, i64 8
  %invariant.gep688 = getelementptr i8, ptr %5, i64 8
  br label %170

170:                                              ; preds = %.lr.ph483, %.loopexit431
  %indvar628 = phi i64 [ 0, %.lr.ph483 ], [ %indvar.next629, %.loopexit431 ]
  %.2365481 = phi i64 [ 1, %.lr.ph483 ], [ %206, %.loopexit431 ]
  %171 = xor i64 %indvar628, -1
  %172 = shl i64 %indvar628, 3
  %gep687 = getelementptr i8, ptr %invariant.gep686, i64 %172
  %173 = getelementptr i8, ptr %7, i64 %172
  %174 = mul i64 %169, %indvar628
  %gep689 = getelementptr i8, ptr %invariant.gep688, i64 %174
  %175 = getelementptr i8, ptr %5, i64 %174
  %176 = getelementptr inbounds double, ptr %14, i64 %.2365481
  %177 = load double, ptr %176, align 8, !tbaa !9
  %178 = fcmp une double %177, 0.000000e+00
  br i1 %178, label %179, label %.loopexit431

179:                                              ; preds = %170
  br i1 %.not418, label %184, label %180

180:                                              ; preds = %179
  %181 = mul nsw i64 %.2365481, %11
  %gep479 = getelementptr double, ptr %invariant.gep478, i64 %181
  %182 = load double, ptr %gep479, align 8, !tbaa !9
  %183 = fdiv double %177, %182
  store double %183, ptr %176, align 8, !tbaa !9
  br label %184

184:                                              ; preds = %180, %179
  %185 = phi double [ %183, %180 ], [ %177, %179 ]
  %186 = load i64, ptr %4, align 8, !tbaa !5
  %187 = add nsw i64 %186, %.2365481
  %188 = tail call i64 @llvm.smin.i64(i64 %167, i64 %187)
  %.not420.not473 = icmp slt i64 %.2365481, %188
  br i1 %.not420.not473, label %.lr.ph475, label %.loopexit431

.lr.ph475:                                        ; preds = %184
  %189 = mul nsw i64 %.2365481, %11
  %invariant.gep476 = getelementptr double, ptr %invariant.gep471, i64 %189
  %190 = fneg double %185
  %191 = add i64 %188, %171
  %min.iters.check641 = icmp ult i64 %191, 4
  br i1 %min.iters.check641, label %scalar.ph640.preheader, label %vector.memcheck627

vector.memcheck627:                               ; preds = %.lr.ph475
  %reass.sub658 = sub i64 %188, %indvar628
  %192 = shl i64 %reass.sub658, 3
  %scevgep632 = getelementptr i8, ptr %173, i64 %192
  %scevgep635 = getelementptr i8, ptr %175, i64 %192
  %bound0636 = icmp ult ptr %gep687, %scevgep635
  %bound1637 = icmp ult ptr %gep689, %scevgep632
  %found.conflict638 = and i1 %bound0636, %bound1637
  br i1 %found.conflict638, label %scalar.ph640.preheader, label %vector.ph642

vector.ph642:                                     ; preds = %vector.memcheck627
  %n.vec644 = and i64 %191, -4
  %ind.end645 = add i64 %.2365481, %n.vec644
  %broadcast.splatinsert654 = insertelement <2 x double> poison, double %190, i64 0
  %broadcast.splat655 = shufflevector <2 x double> %broadcast.splatinsert654, <2 x double> poison, <2 x i32> zeroinitializer
  %193 = getelementptr double, ptr %7, i64 %.2365481
  br label %vector.body647

vector.body647:                                   ; preds = %vector.body647, %vector.ph642
  %index648 = phi i64 [ 0, %vector.ph642 ], [ %index.next656, %vector.body647 ]
  %194 = getelementptr double, ptr %invariant.gep476, i64 %index648
  %195 = getelementptr i8, ptr %194, i64 16
  %wide.load650 = load <2 x double>, ptr %194, align 8, !tbaa !9, !alias.scope !24
  %wide.load651 = load <2 x double>, ptr %195, align 8, !tbaa !9, !alias.scope !24
  %196 = getelementptr double, ptr %193, i64 %index648
  %197 = getelementptr i8, ptr %196, i64 16
  %wide.load652 = load <2 x double>, ptr %196, align 8, !tbaa !9, !alias.scope !27, !noalias !24
  %wide.load653 = load <2 x double>, ptr %197, align 8, !tbaa !9, !alias.scope !27, !noalias !24
  %198 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat655, <2 x double> %wide.load650, <2 x double> %wide.load652)
  %199 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat655, <2 x double> %wide.load651, <2 x double> %wide.load653)
  store <2 x double> %198, ptr %196, align 8, !tbaa !9, !alias.scope !27, !noalias !24
  store <2 x double> %199, ptr %197, align 8, !tbaa !9, !alias.scope !27, !noalias !24
  %index.next656 = add nuw i64 %index648, 4
  %200 = icmp eq i64 %index.next656, %n.vec644
  br i1 %200, label %middle.block639, label %vector.body647, !llvm.loop !29

middle.block639:                                  ; preds = %vector.body647
  %cmp.n657 = icmp eq i64 %191, %n.vec644
  br i1 %cmp.n657, label %.loopexit431, label %scalar.ph640.preheader

scalar.ph640.preheader:                           ; preds = %middle.block639, %vector.memcheck627, %.lr.ph475
  %.2373.in474.ph = phi i64 [ %.2365481, %vector.memcheck627 ], [ %.2365481, %.lr.ph475 ], [ %ind.end645, %middle.block639 ]
  br label %scalar.ph640

scalar.ph640:                                     ; preds = %scalar.ph640.preheader, %scalar.ph640
  %.2373.in474 = phi i64 [ %.2373, %scalar.ph640 ], [ %.2373.in474.ph, %scalar.ph640.preheader ]
  %.2373 = add nuw nsw i64 %.2373.in474, 1
  %201 = sub nuw nsw i64 %.2373.in474, %.2365481
  %gep477 = getelementptr double, ptr %invariant.gep476, i64 %201
  %202 = load double, ptr %gep477, align 8, !tbaa !9
  %203 = getelementptr double, ptr %7, i64 %.2373.in474
  %204 = load double, ptr %203, align 8, !tbaa !9
  %205 = tail call double @llvm.fmuladd.f64(double %190, double %202, double %204)
  store double %205, ptr %203, align 8, !tbaa !9
  %.not420.not = icmp slt i64 %.2373, %188
  br i1 %.not420.not, label %scalar.ph640, label %.loopexit431, !llvm.loop !30

.loopexit431:                                     ; preds = %scalar.ph640, %middle.block639, %184, %170
  %206 = add nuw i64 %.2365481, 1
  %exitcond555.not = icmp eq i64 %.2365481, %167
  %indvar.next629 = add i64 %indvar628, 1
  br i1 %exitcond555.not, label %.loopexit, label %170, !llvm.loop !31

207:                                              ; preds = %164
  br i1 %.not417480, label %.loopexit, label %.lr.ph470

.lr.ph470:                                        ; preds = %207
  %.not414 = icmp eq i64 %50, 0
  %invariant.gep455 = getelementptr i8, ptr %13, i64 16
  br label %208

208:                                              ; preds = %.lr.ph470, %.loopexit433
  %.2350469 = phi i64 [ %.0348, %.lr.ph470 ], [ %209, %.loopexit433 ]
  %.3366466 = phi i64 [ 1, %.lr.ph470 ], [ %232, %.loopexit433 ]
  %209 = add nsw i64 %.2350469, %165
  %210 = getelementptr inbounds double, ptr %14, i64 %.2350469
  %211 = load double, ptr %210, align 8, !tbaa !9
  %212 = fcmp une double %211, 0.000000e+00
  br i1 %212, label %213, label %.loopexit433

213:                                              ; preds = %208
  br i1 %.not414, label %218, label %214

214:                                              ; preds = %213
  %215 = mul nsw i64 %.3366466, %11
  %gep464 = getelementptr double, ptr %invariant.gep478, i64 %215
  %216 = load double, ptr %gep464, align 8, !tbaa !9
  %217 = fdiv double %211, %216
  store double %217, ptr %210, align 8, !tbaa !9
  br label %218

218:                                              ; preds = %214, %213
  %219 = phi double [ %217, %214 ], [ %211, %213 ]
  %220 = load i64, ptr %4, align 8, !tbaa !5
  %221 = add nsw i64 %220, %.3366466
  %222 = tail call i64 @llvm.smin.i64(i64 %167, i64 %221)
  %.not416.not457 = icmp slt i64 %.3366466, %222
  br i1 %.not416.not457, label %.lr.ph460, label %.loopexit433

.lr.ph460:                                        ; preds = %218
  %223 = mul nsw i64 %.3366466, %11
  %invariant.gep461 = getelementptr double, ptr %invariant.gep455, i64 %223
  %224 = fneg double %219
  br label %225

225:                                              ; preds = %.lr.ph460, %225
  %.1360459 = phi i64 [ %209, %.lr.ph460 ], [ %231, %225 ]
  %.3374.in458 = phi i64 [ %.3366466, %.lr.ph460 ], [ %.3374, %225 ]
  %.3374 = add nuw nsw i64 %.3374.in458, 1
  %226 = sub nuw nsw i64 %.3374.in458, %.3366466
  %gep462 = getelementptr double, ptr %invariant.gep461, i64 %226
  %227 = load double, ptr %gep462, align 8, !tbaa !9
  %228 = getelementptr inbounds double, ptr %14, i64 %.1360459
  %229 = load double, ptr %228, align 8, !tbaa !9
  %230 = tail call double @llvm.fmuladd.f64(double %224, double %227, double %229)
  store double %230, ptr %228, align 8, !tbaa !9
  %231 = add nsw i64 %.1360459, %165
  %.not416.not = icmp slt i64 %.3374, %222
  br i1 %.not416.not, label %225, label %.loopexit433, !llvm.loop !32

.loopexit433:                                     ; preds = %225, %218, %208
  %232 = add nuw i64 %.3366466, 1
  %exitcond.not = icmp eq i64 %.3366466, %167
  br i1 %exitcond.not, label %.loopexit, label %208, !llvm.loop !33

233:                                              ; preds = %58
  br i1 %.not397, label %335, label %234

234:                                              ; preds = %233
  %235 = load i64, ptr %4, align 8, !tbaa !5
  %236 = add nsw i64 %235, 1
  %237 = load i64, ptr %8, align 8, !tbaa !5
  %238 = icmp eq i64 %237, 1
  %239 = load i64, ptr %3, align 8, !tbaa !5
  %.not409506 = icmp slt i64 %239, 1
  br i1 %238, label %240, label %291

240:                                              ; preds = %234
  br i1 %.not409506, label %.loopexit, label %.lr.ph509

.lr.ph509:                                        ; preds = %240
  %.not411 = icmp eq i64 %50, 0
  %241 = getelementptr double, ptr %13, i64 %236
  br label %242

242:                                              ; preds = %.lr.ph509, %289
  %indvar674 = phi i64 [ 0, %.lr.ph509 ], [ %indvar.next675, %289 ]
  %.4367507 = phi i64 [ 1, %.lr.ph509 ], [ %290, %289 ]
  %reass.sub680 = sub i64 %indvar674, %235
  %243 = add i64 %reass.sub680, 1
  %smax676 = tail call i64 @llvm.smax.i64(i64 %243, i64 1)
  %244 = sub i64 %indvar674, %smax676
  %245 = getelementptr inbounds double, ptr %14, i64 %.4367507
  %246 = load double, ptr %245, align 8, !tbaa !9
  %247 = sub nsw i64 %.4367507, %235
  %248 = tail call i64 @llvm.smax.i64(i64 %247, i64 1)
  %.not410.not497 = icmp ult i64 %248, %.4367507
  br i1 %.not410.not497, label %.lr.ph501, label %._crit_edge502

.lr.ph501:                                        ; preds = %242
  %249 = sub i64 %.4367507, %smax676
  %250 = sub nsw i64 %236, %.4367507
  %251 = mul nsw i64 %.4367507, %11
  %252 = getelementptr double, ptr %13, i64 %250
  %invariant.gep504 = getelementptr double, ptr %252, i64 %251
  %xtraiter677 = and i64 %249, 3
  %lcmp.mod678.not = icmp eq i64 %xtraiter677, 0
  br i1 %lcmp.mod678.not, label %.prol.loopexit673, label %.prol.preheader672

.prol.preheader672:                               ; preds = %.lr.ph501, %.prol.preheader672
  %.0347499.prol = phi double [ %257, %.prol.preheader672 ], [ %246, %.lr.ph501 ]
  %.4375498.prol = phi i64 [ %258, %.prol.preheader672 ], [ %248, %.lr.ph501 ]
  %prol.iter = phi i64 [ %prol.iter.next, %.prol.preheader672 ], [ 0, %.lr.ph501 ]
  %gep505.prol = getelementptr double, ptr %invariant.gep504, i64 %.4375498.prol
  %253 = load double, ptr %gep505.prol, align 8, !tbaa !9
  %254 = getelementptr inbounds double, ptr %14, i64 %.4375498.prol
  %255 = load double, ptr %254, align 8, !tbaa !9
  %256 = fneg double %253
  %257 = tail call double @llvm.fmuladd.f64(double %256, double %255, double %.0347499.prol)
  %258 = add nuw nsw i64 %.4375498.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter677
  br i1 %prol.iter.cmp.not, label %.prol.loopexit673, label %.prol.preheader672, !llvm.loop !34

.prol.loopexit673:                                ; preds = %.prol.preheader672, %.lr.ph501
  %.0347499.unr = phi double [ %246, %.lr.ph501 ], [ %257, %.prol.preheader672 ]
  %.4375498.unr = phi i64 [ %248, %.lr.ph501 ], [ %258, %.prol.preheader672 ]
  %.lcssa662.unr = phi double [ poison, %.lr.ph501 ], [ %257, %.prol.preheader672 ]
  %259 = icmp ult i64 %244, 3
  br i1 %259, label %._crit_edge502, label %.lr.ph501.new

.lr.ph501.new:                                    ; preds = %.prol.loopexit673
  %invariant.gep692 = getelementptr i8, ptr %invariant.gep504, i64 8
  br label %260

260:                                              ; preds = %260, %.lr.ph501.new
  %.0347499 = phi double [ %.0347499.unr, %.lr.ph501.new ], [ %282, %260 ]
  %.4375498 = phi i64 [ %.4375498.unr, %.lr.ph501.new ], [ %283, %260 ]
  %gep505 = getelementptr double, ptr %invariant.gep504, i64 %.4375498
  %261 = load double, ptr %gep505, align 8, !tbaa !9
  %262 = getelementptr inbounds double, ptr %14, i64 %.4375498
  %263 = load double, ptr %262, align 8, !tbaa !9
  %264 = fneg double %261
  %265 = tail call double @llvm.fmuladd.f64(double %264, double %263, double %.0347499)
  %gep693 = getelementptr double, ptr %invariant.gep692, i64 %.4375498
  %266 = load double, ptr %gep693, align 8, !tbaa !9
  %267 = getelementptr double, ptr %7, i64 %.4375498
  %268 = load double, ptr %267, align 8, !tbaa !9
  %269 = fneg double %266
  %270 = tail call double @llvm.fmuladd.f64(double %269, double %268, double %265)
  %271 = add nuw nsw i64 %.4375498, 2
  %gep505.2 = getelementptr double, ptr %invariant.gep504, i64 %271
  %272 = load double, ptr %gep505.2, align 8, !tbaa !9
  %273 = getelementptr inbounds double, ptr %14, i64 %271
  %274 = load double, ptr %273, align 8, !tbaa !9
  %275 = fneg double %272
  %276 = tail call double @llvm.fmuladd.f64(double %275, double %274, double %270)
  %277 = add nuw nsw i64 %.4375498, 3
  %gep505.3 = getelementptr double, ptr %invariant.gep504, i64 %277
  %278 = load double, ptr %gep505.3, align 8, !tbaa !9
  %279 = getelementptr inbounds double, ptr %14, i64 %277
  %280 = load double, ptr %279, align 8, !tbaa !9
  %281 = fneg double %278
  %282 = tail call double @llvm.fmuladd.f64(double %281, double %280, double %276)
  %283 = add nuw nsw i64 %.4375498, 4
  %.not410.not.3 = icmp ult i64 %283, %.4367507
  br i1 %.not410.not.3, label %260, label %._crit_edge502, !llvm.loop !36

._crit_edge502:                                   ; preds = %.prol.loopexit673, %260, %242
  %.0347.lcssa = phi double [ %246, %242 ], [ %.lcssa662.unr, %.prol.loopexit673 ], [ %282, %260 ]
  br i1 %.not411, label %289, label %284

284:                                              ; preds = %._crit_edge502
  %285 = mul nsw i64 %.4367507, %11
  %286 = getelementptr double, ptr %241, i64 %285
  %287 = load double, ptr %286, align 8, !tbaa !9
  %288 = fdiv double %.0347.lcssa, %287
  br label %289

289:                                              ; preds = %284, %._crit_edge502
  %.1 = phi double [ %288, %284 ], [ %.0347.lcssa, %._crit_edge502 ]
  store double %.1, ptr %245, align 8, !tbaa !9
  %290 = add nuw i64 %.4367507, 1
  %exitcond557.not = icmp eq i64 %.4367507, %239
  %indvar.next675 = add i64 %indvar674, 1
  br i1 %exitcond557.not, label %.loopexit, label %242, !llvm.loop !37

291:                                              ; preds = %234
  br i1 %.not409506, label %.loopexit, label %.lr.ph496

.lr.ph496:                                        ; preds = %291
  %.not408 = icmp eq i64 %50, 0
  %292 = getelementptr double, ptr %13, i64 %236
  br label %293

293:                                              ; preds = %.lr.ph496, %330
  %indvar669 = phi i64 [ 0, %.lr.ph496 ], [ %indvar.next670, %330 ]
  %.3351494 = phi i64 [ %.0348, %.lr.ph496 ], [ %spec.select425, %330 ]
  %.2357493 = phi i64 [ %.0348, %.lr.ph496 ], [ %331, %330 ]
  %.5368492 = phi i64 [ 1, %.lr.ph496 ], [ %334, %330 ]
  %reass.sub679 = sub i64 %indvar669, %235
  %294 = add i64 %reass.sub679, 1
  %smax671 = tail call i64 @llvm.smax.i64(i64 %294, i64 1)
  %295 = getelementptr inbounds double, ptr %14, i64 %.2357493
  %296 = load double, ptr %295, align 8, !tbaa !9
  %297 = sub nsw i64 %.5368492, %235
  %298 = tail call i64 @llvm.smax.i64(i64 %297, i64 1)
  %.not407.not484 = icmp ult i64 %298, %.5368492
  br i1 %.not407.not484, label %.lr.ph488, label %._crit_edge

.lr.ph488:                                        ; preds = %293
  %299 = sub i64 %.5368492, %smax671
  %300 = sub nsw i64 %236, %.5368492
  %301 = mul nsw i64 %.5368492, %11
  %302 = getelementptr double, ptr %13, i64 %300
  %invariant.gep489 = getelementptr double, ptr %302, i64 %301
  %xtraiter = and i64 %299, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.prol.loopexit, label %.prol.loopexit.unr-lcssa

.prol.loopexit.unr-lcssa:                         ; preds = %.lr.ph488
  %gep490.prol = getelementptr double, ptr %invariant.gep489, i64 %298
  %303 = load double, ptr %gep490.prol, align 8, !tbaa !9
  %304 = getelementptr inbounds double, ptr %14, i64 %.3351494
  %305 = load double, ptr %304, align 8, !tbaa !9
  %306 = fneg double %303
  %307 = tail call double @llvm.fmuladd.f64(double %306, double %305, double %296)
  %308 = add nsw i64 %.3351494, %237
  %309 = add nuw nsw i64 %298, 1
  br label %.prol.loopexit

.prol.loopexit:                                   ; preds = %.prol.loopexit.unr-lcssa, %.lr.ph488
  %.2487.unr = phi double [ %296, %.lr.ph488 ], [ %307, %.prol.loopexit.unr-lcssa ]
  %.2361486.unr = phi i64 [ %.3351494, %.lr.ph488 ], [ %308, %.prol.loopexit.unr-lcssa ]
  %.5376485.unr = phi i64 [ %298, %.lr.ph488 ], [ %309, %.prol.loopexit.unr-lcssa ]
  %.lcssa664.unr = phi double [ poison, %.lr.ph488 ], [ %307, %.prol.loopexit.unr-lcssa ]
  %310 = icmp eq i64 %indvar669, %smax671
  br i1 %310, label %._crit_edge, label %.lr.ph488.new

.lr.ph488.new:                                    ; preds = %.prol.loopexit
  %invariant.gep690 = getelementptr i8, ptr %invariant.gep489, i64 8
  br label %311

311:                                              ; preds = %311, %.lr.ph488.new
  %.2487 = phi double [ %.2487.unr, %.lr.ph488.new ], [ %322, %311 ]
  %.2361486 = phi i64 [ %.2361486.unr, %.lr.ph488.new ], [ %323, %311 ]
  %.5376485 = phi i64 [ %.5376485.unr, %.lr.ph488.new ], [ %324, %311 ]
  %gep490 = getelementptr double, ptr %invariant.gep489, i64 %.5376485
  %312 = load double, ptr %gep490, align 8, !tbaa !9
  %313 = getelementptr inbounds double, ptr %14, i64 %.2361486
  %314 = load double, ptr %313, align 8, !tbaa !9
  %315 = fneg double %312
  %316 = tail call double @llvm.fmuladd.f64(double %315, double %314, double %.2487)
  %317 = add nsw i64 %.2361486, %237
  %gep691 = getelementptr double, ptr %invariant.gep690, i64 %.5376485
  %318 = load double, ptr %gep691, align 8, !tbaa !9
  %319 = getelementptr inbounds double, ptr %14, i64 %317
  %320 = load double, ptr %319, align 8, !tbaa !9
  %321 = fneg double %318
  %322 = tail call double @llvm.fmuladd.f64(double %321, double %320, double %316)
  %323 = add nsw i64 %317, %237
  %324 = add nuw nsw i64 %.5376485, 2
  %.not407.not.1 = icmp ult i64 %324, %.5368492
  br i1 %.not407.not.1, label %311, label %._crit_edge, !llvm.loop !38

._crit_edge:                                      ; preds = %.prol.loopexit, %311, %293
  %.2.lcssa = phi double [ %296, %293 ], [ %.lcssa664.unr, %.prol.loopexit ], [ %322, %311 ]
  br i1 %.not408, label %330, label %325

325:                                              ; preds = %._crit_edge
  %326 = mul nsw i64 %.5368492, %11
  %327 = getelementptr double, ptr %292, i64 %326
  %328 = load double, ptr %327, align 8, !tbaa !9
  %329 = fdiv double %.2.lcssa, %328
  br label %330

330:                                              ; preds = %325, %._crit_edge
  %.3 = phi double [ %329, %325 ], [ %.2.lcssa, %._crit_edge ]
  store double %.3, ptr %295, align 8, !tbaa !9
  %331 = add nsw i64 %.2357493, %237
  %332 = icmp sgt i64 %.5368492, %235
  %333 = select i1 %332, i64 %237, i64 0
  %spec.select425 = add nsw i64 %.3351494, %333
  %334 = add nuw i64 %.5368492, 1
  %exitcond556.not = icmp eq i64 %.5368492, %239
  %indvar.next670 = add i64 %indvar669, 1
  br i1 %exitcond556.not, label %.loopexit, label %293, !llvm.loop !39

335:                                              ; preds = %233
  %336 = load i64, ptr %8, align 8, !tbaa !5
  %337 = icmp eq i64 %336, 1
  %338 = load i64, ptr %3, align 8, !tbaa !5
  %invariant.gep540 = getelementptr i8, ptr %13, i64 8
  %339 = icmp sgt i64 %338, 0
  br i1 %337, label %340, label %362

340:                                              ; preds = %335
  br i1 %339, label %.lr.ph544, label %.loopexit

.lr.ph544:                                        ; preds = %340
  %341 = load i64, ptr %4, align 8, !tbaa !5
  %.not404 = icmp eq i64 %50, 0
  br label %342

342:                                              ; preds = %.lr.ph544, %359
  %.6369542 = phi i64 [ %338, %.lr.ph544 ], [ %360, %359 ]
  %343 = getelementptr inbounds double, ptr %14, i64 %.6369542
  %344 = load double, ptr %343, align 8, !tbaa !9
  %345 = add nsw i64 %341, %.6369542
  %346 = tail call i64 @llvm.smin.i64(i64 %338, i64 %345)
  %.not403.not531 = icmp sgt i64 %346, %.6369542
  br i1 %.not403.not531, label %.lr.ph535, label %._crit_edge536

.lr.ph535:                                        ; preds = %342
  %347 = mul nsw i64 %.6369542, %11
  %invariant.gep538 = getelementptr double, ptr %invariant.gep540, i64 %347
  br label %348

348:                                              ; preds = %.lr.ph535, %348
  %.4533 = phi double [ %344, %.lr.ph535 ], [ %353, %348 ]
  %.6377532 = phi i64 [ %346, %.lr.ph535 ], [ %354, %348 ]
  %reass.sub405 = sub i64 %.6377532, %.6369542
  %gep539 = getelementptr double, ptr %invariant.gep538, i64 %reass.sub405
  %349 = load double, ptr %gep539, align 8, !tbaa !9
  %350 = getelementptr inbounds double, ptr %14, i64 %.6377532
  %351 = load double, ptr %350, align 8, !tbaa !9
  %352 = fneg double %349
  %353 = tail call double @llvm.fmuladd.f64(double %352, double %351, double %.4533)
  %354 = add nsw i64 %.6377532, -1
  %.not403.not = icmp sgt i64 %354, %.6369542
  br i1 %.not403.not, label %348, label %._crit_edge536, !llvm.loop !40

._crit_edge536:                                   ; preds = %348, %342
  %.4.lcssa = phi double [ %344, %342 ], [ %353, %348 ]
  br i1 %.not404, label %359, label %355

355:                                              ; preds = %._crit_edge536
  %356 = mul nsw i64 %.6369542, %11
  %gep541 = getelementptr double, ptr %invariant.gep540, i64 %356
  %357 = load double, ptr %gep541, align 8, !tbaa !9
  %358 = fdiv double %.4.lcssa, %357
  br label %359

359:                                              ; preds = %355, %._crit_edge536
  %.5 = phi double [ %358, %355 ], [ %.4.lcssa, %._crit_edge536 ]
  store double %.5, ptr %343, align 8, !tbaa !9
  %360 = add nsw i64 %.6369542, -1
  %361 = icmp sgt i64 %.6369542, 1
  br i1 %361, label %342, label %.loopexit, !llvm.loop !41

362:                                              ; preds = %335
  br i1 %339, label %.lr.ph528, label %.loopexit

.lr.ph528:                                        ; preds = %362
  %363 = add nsw i64 %338, -1
  %364 = mul nsw i64 %363, %336
  %365 = add nsw i64 %364, %.0348
  %366 = load i64, ptr %4, align 8, !tbaa !5
  %.not400 = icmp eq i64 %50, 0
  br label %367

367:                                              ; preds = %.lr.ph528, %385
  %.5353526 = phi i64 [ %365, %.lr.ph528 ], [ %spec.select426, %385 ]
  %.3358525 = phi i64 [ %365, %.lr.ph528 ], [ %386, %385 ]
  %.7370524 = phi i64 [ %338, %.lr.ph528 ], [ %389, %385 ]
  %368 = getelementptr inbounds double, ptr %14, i64 %.3358525
  %369 = load double, ptr %368, align 8, !tbaa !9
  %370 = add nsw i64 %366, %.7370524
  %371 = tail call i64 @llvm.smin.i64(i64 %338, i64 %370)
  %.not399.not512 = icmp sgt i64 %371, %.7370524
  br i1 %.not399.not512, label %.lr.ph517, label %._crit_edge518

.lr.ph517:                                        ; preds = %367
  %372 = mul nsw i64 %.7370524, %11
  %invariant.gep520 = getelementptr double, ptr %invariant.gep540, i64 %372
  br label %373

373:                                              ; preds = %.lr.ph517, %373
  %.6515 = phi double [ %369, %.lr.ph517 ], [ %378, %373 ]
  %.3362514 = phi i64 [ %.5353526, %.lr.ph517 ], [ %379, %373 ]
  %.7378513 = phi i64 [ %371, %.lr.ph517 ], [ %380, %373 ]
  %reass.sub = sub i64 %.7378513, %.7370524
  %gep521 = getelementptr double, ptr %invariant.gep520, i64 %reass.sub
  %374 = load double, ptr %gep521, align 8, !tbaa !9
  %375 = getelementptr inbounds double, ptr %14, i64 %.3362514
  %376 = load double, ptr %375, align 8, !tbaa !9
  %377 = fneg double %374
  %378 = tail call double @llvm.fmuladd.f64(double %377, double %376, double %.6515)
  %379 = sub nsw i64 %.3362514, %336
  %380 = add nsw i64 %.7378513, -1
  %.not399.not = icmp sgt i64 %380, %.7370524
  br i1 %.not399.not, label %373, label %._crit_edge518, !llvm.loop !42

._crit_edge518:                                   ; preds = %373, %367
  %.6.lcssa = phi double [ %369, %367 ], [ %378, %373 ]
  br i1 %.not400, label %385, label %381

381:                                              ; preds = %._crit_edge518
  %382 = mul nsw i64 %.7370524, %11
  %gep523 = getelementptr double, ptr %invariant.gep540, i64 %382
  %383 = load double, ptr %gep523, align 8, !tbaa !9
  %384 = fdiv double %.6.lcssa, %383
  br label %385

385:                                              ; preds = %381, %._crit_edge518
  %.7 = phi double [ %384, %381 ], [ %.6.lcssa, %._crit_edge518 ]
  store double %.7, ptr %368, align 8, !tbaa !9
  %386 = sub nsw i64 %.3358525, %336
  %387 = sub nuw nsw i64 %338, %.7370524
  %.not401 = icmp slt i64 %387, %366
  %388 = select i1 %.not401, i64 0, i64 %336
  %spec.select426 = sub nsw i64 %.5353526, %388
  %389 = add nsw i64 %.7370524, -1
  %390 = icmp sgt i64 %.7370524, 1
  br i1 %390, label %367, label %.loopexit, !llvm.loop !43

.loopexit:                                        ; preds = %.loopexit437, %.loopexit435, %.loopexit433, %.loopexit431, %330, %289, %385, %359, %132, %69, %207, %168, %291, %240, %362, %340, %47, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #5
  ret i32 0
}

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

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

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

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

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

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

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

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

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


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