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

; 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 [7 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8

; Function Attrs: nounwind uwtable
define dso_local i32 @dlasdq_(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, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15) #0 {
  %17 = alloca i32, align 4
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca i64, align 8
  %35 = alloca i64, align 8
  %36 = alloca i64, align 8
  %37 = alloca i64, align 8
  %38 = alloca i64, align 8
  %39 = alloca i64, align 8
  %40 = alloca i64, align 8
  %41 = alloca i64, align 8
  %42 = alloca i64, align 8
  %43 = alloca i64, align 8
  %44 = alloca double, align 8
  %45 = alloca double, align 8
  %46 = alloca double, align 8
  %47 = alloca i64, align 8
  %48 = alloca i64, align 8
  %49 = alloca double, align 8
  %50 = alloca i64, align 8
  %51 = alloca i64, align 8
  %52 = alloca i64, align 8
  %53 = alloca i32, align 4
  store ptr %0, ptr %18, align 8, !tbaa !5
  store ptr %1, ptr %19, align 8, !tbaa !5
  store ptr %2, ptr %20, align 8, !tbaa !5
  store ptr %3, ptr %21, align 8, !tbaa !5
  store ptr %4, ptr %22, align 8, !tbaa !5
  store ptr %5, ptr %23, align 8, !tbaa !5
  store ptr %6, ptr %24, align 8, !tbaa !5
  store ptr %7, ptr %25, align 8, !tbaa !5
  store ptr %8, ptr %26, align 8, !tbaa !5
  store ptr %9, ptr %27, align 8, !tbaa !5
  store ptr %10, ptr %28, align 8, !tbaa !5
  store ptr %11, ptr %29, align 8, !tbaa !5
  store ptr %12, ptr %30, align 8, !tbaa !5
  store ptr %13, ptr %31, align 8, !tbaa !5
  store ptr %14, ptr %32, align 8, !tbaa !5
  store ptr %15, ptr %33, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #3
  %54 = load ptr, ptr %24, align 8, !tbaa !5
  %55 = getelementptr inbounds double, ptr %54, i32 -1
  store ptr %55, ptr %24, align 8, !tbaa !5
  %56 = load ptr, ptr %25, align 8, !tbaa !5
  %57 = getelementptr inbounds double, ptr %56, i32 -1
  store ptr %57, ptr %25, align 8, !tbaa !5
  %58 = load ptr, ptr %27, align 8, !tbaa !5
  %59 = load i64, ptr %58, align 8, !tbaa !9
  store i64 %59, ptr %38, align 8, !tbaa !9
  %60 = load i64, ptr %38, align 8, !tbaa !9
  %61 = add nsw i64 1, %60
  store i64 %61, ptr %39, align 8, !tbaa !9
  %62 = load i64, ptr %39, align 8, !tbaa !9
  %63 = load ptr, ptr %26, align 8, !tbaa !5
  %64 = sub i64 0, %62
  %65 = getelementptr inbounds double, ptr %63, i64 %64
  store ptr %65, ptr %26, align 8, !tbaa !5
  %66 = load ptr, ptr %29, align 8, !tbaa !5
  %67 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %67, ptr %36, align 8, !tbaa !9
  %68 = load i64, ptr %36, align 8, !tbaa !9
  %69 = add nsw i64 1, %68
  store i64 %69, ptr %37, align 8, !tbaa !9
  %70 = load i64, ptr %37, align 8, !tbaa !9
  %71 = load ptr, ptr %28, align 8, !tbaa !5
  %72 = sub i64 0, %70
  %73 = getelementptr inbounds double, ptr %71, i64 %72
  store ptr %73, ptr %28, align 8, !tbaa !5
  %74 = load ptr, ptr %31, align 8, !tbaa !5
  %75 = load i64, ptr %74, align 8, !tbaa !9
  store i64 %75, ptr %34, align 8, !tbaa !9
  %76 = load i64, ptr %34, align 8, !tbaa !9
  %77 = add nsw i64 1, %76
  store i64 %77, ptr %35, align 8, !tbaa !9
  %78 = load i64, ptr %35, align 8, !tbaa !9
  %79 = load ptr, ptr %30, align 8, !tbaa !5
  %80 = sub i64 0, %78
  %81 = getelementptr inbounds double, ptr %79, i64 %80
  store ptr %81, ptr %30, align 8, !tbaa !5
  %82 = load ptr, ptr %32, align 8, !tbaa !5
  %83 = getelementptr inbounds double, ptr %82, i32 -1
  store ptr %83, ptr %32, align 8, !tbaa !5
  %84 = load ptr, ptr %33, align 8, !tbaa !5
  store i64 0, ptr %84, align 8, !tbaa !9
  store i64 0, ptr %51, align 8, !tbaa !9
  %85 = load ptr, ptr %18, align 8, !tbaa !5
  %86 = call i64 @lsame_(ptr noundef %85, ptr noundef @.str)
  %87 = icmp ne i64 %86, 0
  br i1 %87, label %88, label %89

88:                                               ; preds = %16
  store i64 1, ptr %51, align 8, !tbaa !9
  br label %89

89:                                               ; preds = %88, %16
  %90 = load ptr, ptr %18, align 8, !tbaa !5
  %91 = call i64 @lsame_(ptr noundef %90, ptr noundef @.str.1)
  %92 = icmp ne i64 %91, 0
  br i1 %92, label %93, label %94

93:                                               ; preds = %89
  store i64 2, ptr %51, align 8, !tbaa !9
  br label %94

94:                                               ; preds = %93, %89
  %95 = load i64, ptr %51, align 8, !tbaa !9
  %96 = icmp eq i64 %95, 0
  br i1 %96, label %97, label %99

97:                                               ; preds = %94
  %98 = load ptr, ptr %33, align 8, !tbaa !5
  store i64 -1, ptr %98, align 8, !tbaa !9
  br label %210

99:                                               ; preds = %94
  %100 = load ptr, ptr %19, align 8, !tbaa !5
  %101 = load i64, ptr %100, align 8, !tbaa !9
  %102 = icmp slt i64 %101, 0
  br i1 %102, label %107, label %103

103:                                              ; preds = %99
  %104 = load ptr, ptr %19, align 8, !tbaa !5
  %105 = load i64, ptr %104, align 8, !tbaa !9
  %106 = icmp sgt i64 %105, 1
  br i1 %106, label %107, label %109

107:                                              ; preds = %103, %99
  %108 = load ptr, ptr %33, align 8, !tbaa !5
  store i64 -2, ptr %108, align 8, !tbaa !9
  br label %209

109:                                              ; preds = %103
  %110 = load ptr, ptr %20, align 8, !tbaa !5
  %111 = load i64, ptr %110, align 8, !tbaa !9
  %112 = icmp slt i64 %111, 0
  br i1 %112, label %113, label %115

113:                                              ; preds = %109
  %114 = load ptr, ptr %33, align 8, !tbaa !5
  store i64 -3, ptr %114, align 8, !tbaa !9
  br label %208

115:                                              ; preds = %109
  %116 = load ptr, ptr %21, align 8, !tbaa !5
  %117 = load i64, ptr %116, align 8, !tbaa !9
  %118 = icmp slt i64 %117, 0
  br i1 %118, label %119, label %121

119:                                              ; preds = %115
  %120 = load ptr, ptr %33, align 8, !tbaa !5
  store i64 -4, ptr %120, align 8, !tbaa !9
  br label %207

121:                                              ; preds = %115
  %122 = load ptr, ptr %22, align 8, !tbaa !5
  %123 = load i64, ptr %122, align 8, !tbaa !9
  %124 = icmp slt i64 %123, 0
  br i1 %124, label %125, label %127

125:                                              ; preds = %121
  %126 = load ptr, ptr %33, align 8, !tbaa !5
  store i64 -5, ptr %126, align 8, !tbaa !9
  br label %206

127:                                              ; preds = %121
  %128 = load ptr, ptr %23, align 8, !tbaa !5
  %129 = load i64, ptr %128, align 8, !tbaa !9
  %130 = icmp slt i64 %129, 0
  br i1 %130, label %131, label %133

131:                                              ; preds = %127
  %132 = load ptr, ptr %33, align 8, !tbaa !5
  store i64 -6, ptr %132, align 8, !tbaa !9
  br label %205

133:                                              ; preds = %127
  %134 = load ptr, ptr %21, align 8, !tbaa !5
  %135 = load i64, ptr %134, align 8, !tbaa !9
  %136 = icmp eq i64 %135, 0
  br i1 %136, label %137, label %141

137:                                              ; preds = %133
  %138 = load ptr, ptr %27, align 8, !tbaa !5
  %139 = load i64, ptr %138, align 8, !tbaa !9
  %140 = icmp slt i64 %139, 1
  br i1 %140, label %158, label %141

141:                                              ; preds = %137, %133
  %142 = load ptr, ptr %21, align 8, !tbaa !5
  %143 = load i64, ptr %142, align 8, !tbaa !9
  %144 = icmp sgt i64 %143, 0
  br i1 %144, label %145, label %160

145:                                              ; preds = %141
  %146 = load ptr, ptr %27, align 8, !tbaa !5
  %147 = load i64, ptr %146, align 8, !tbaa !9
  %148 = load ptr, ptr %20, align 8, !tbaa !5
  %149 = load i64, ptr %148, align 8, !tbaa !9
  %150 = icmp sge i64 1, %149
  br i1 %150, label %151, label %152

151:                                              ; preds = %145
  br label %155

152:                                              ; preds = %145
  %153 = load ptr, ptr %20, align 8, !tbaa !5
  %154 = load i64, ptr %153, align 8, !tbaa !9
  br label %155

155:                                              ; preds = %152, %151
  %156 = phi i64 [ 1, %151 ], [ %154, %152 ]
  %157 = icmp slt i64 %147, %156
  br i1 %157, label %158, label %160

158:                                              ; preds = %155, %137
  %159 = load ptr, ptr %33, align 8, !tbaa !5
  store i64 -10, ptr %159, align 8, !tbaa !9
  br label %204

160:                                              ; preds = %155, %141
  %161 = load ptr, ptr %29, align 8, !tbaa !5
  %162 = load i64, ptr %161, align 8, !tbaa !9
  %163 = load ptr, ptr %22, align 8, !tbaa !5
  %164 = load i64, ptr %163, align 8, !tbaa !9
  %165 = icmp sge i64 1, %164
  br i1 %165, label %166, label %167

166:                                              ; preds = %160
  br label %170

167:                                              ; preds = %160
  %168 = load ptr, ptr %22, align 8, !tbaa !5
  %169 = load i64, ptr %168, align 8, !tbaa !9
  br label %170

170:                                              ; preds = %167, %166
  %171 = phi i64 [ 1, %166 ], [ %169, %167 ]
  %172 = icmp slt i64 %162, %171
  br i1 %172, label %173, label %175

173:                                              ; preds = %170
  %174 = load ptr, ptr %33, align 8, !tbaa !5
  store i64 -12, ptr %174, align 8, !tbaa !9
  br label %203

175:                                              ; preds = %170
  %176 = load ptr, ptr %23, align 8, !tbaa !5
  %177 = load i64, ptr %176, align 8, !tbaa !9
  %178 = icmp eq i64 %177, 0
  br i1 %178, label %179, label %183

179:                                              ; preds = %175
  %180 = load ptr, ptr %31, align 8, !tbaa !5
  %181 = load i64, ptr %180, align 8, !tbaa !9
  %182 = icmp slt i64 %181, 1
  br i1 %182, label %200, label %183

183:                                              ; preds = %179, %175
  %184 = load ptr, ptr %23, align 8, !tbaa !5
  %185 = load i64, ptr %184, align 8, !tbaa !9
  %186 = icmp sgt i64 %185, 0
  br i1 %186, label %187, label %202

187:                                              ; preds = %183
  %188 = load ptr, ptr %31, align 8, !tbaa !5
  %189 = load i64, ptr %188, align 8, !tbaa !9
  %190 = load ptr, ptr %20, align 8, !tbaa !5
  %191 = load i64, ptr %190, align 8, !tbaa !9
  %192 = icmp sge i64 1, %191
  br i1 %192, label %193, label %194

193:                                              ; preds = %187
  br label %197

194:                                              ; preds = %187
  %195 = load ptr, ptr %20, align 8, !tbaa !5
  %196 = load i64, ptr %195, align 8, !tbaa !9
  br label %197

197:                                              ; preds = %194, %193
  %198 = phi i64 [ 1, %193 ], [ %196, %194 ]
  %199 = icmp slt i64 %189, %198
  br i1 %199, label %200, label %202

200:                                              ; preds = %197, %179
  %201 = load ptr, ptr %33, align 8, !tbaa !5
  store i64 -14, ptr %201, align 8, !tbaa !9
  br label %202

202:                                              ; preds = %200, %197, %183
  br label %203

203:                                              ; preds = %202, %173
  br label %204

204:                                              ; preds = %203, %158
  br label %205

205:                                              ; preds = %204, %131
  br label %206

206:                                              ; preds = %205, %125
  br label %207

207:                                              ; preds = %206, %119
  br label %208

208:                                              ; preds = %207, %113
  br label %209

209:                                              ; preds = %208, %107
  br label %210

210:                                              ; preds = %209, %97
  %211 = load ptr, ptr %33, align 8, !tbaa !5
  %212 = load i64, ptr %211, align 8, !tbaa !9
  %213 = icmp ne i64 %212, 0
  br i1 %213, label %214, label %219

214:                                              ; preds = %210
  %215 = load ptr, ptr %33, align 8, !tbaa !5
  %216 = load i64, ptr %215, align 8, !tbaa !9
  %217 = sub nsw i64 0, %216
  store i64 %217, ptr %40, align 8, !tbaa !9
  %218 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef %40)
  store i32 0, ptr %17, align 4
  store i32 1, ptr %53, align 4
  br label %665

219:                                              ; preds = %210
  %220 = load ptr, ptr %20, align 8, !tbaa !5
  %221 = load i64, ptr %220, align 8, !tbaa !9
  %222 = icmp eq i64 %221, 0
  br i1 %222, label %223, label %224

223:                                              ; preds = %219
  store i32 0, ptr %17, align 4
  store i32 1, ptr %53, align 4
  br label %665

224:                                              ; preds = %219
  %225 = load ptr, ptr %21, align 8, !tbaa !5
  %226 = load i64, ptr %225, align 8, !tbaa !9
  %227 = icmp sgt i64 %226, 0
  br i1 %227, label %236, label %228

228:                                              ; preds = %224
  %229 = load ptr, ptr %22, align 8, !tbaa !5
  %230 = load i64, ptr %229, align 8, !tbaa !9
  %231 = icmp sgt i64 %230, 0
  br i1 %231, label %236, label %232

232:                                              ; preds = %228
  %233 = load ptr, ptr %23, align 8, !tbaa !5
  %234 = load i64, ptr %233, align 8, !tbaa !9
  %235 = icmp sgt i64 %234, 0
  br label %236

236:                                              ; preds = %232, %228, %224
  %237 = phi i1 [ true, %228 ], [ true, %224 ], [ %235, %232 ]
  %238 = zext i1 %237 to i32
  %239 = sext i32 %238 to i64
  store i64 %239, ptr %52, align 8, !tbaa !9
  %240 = load ptr, ptr %20, align 8, !tbaa !5
  %241 = load i64, ptr %240, align 8, !tbaa !9
  %242 = add nsw i64 %241, 1
  store i64 %242, ptr %47, align 8, !tbaa !9
  %243 = load ptr, ptr %19, align 8, !tbaa !5
  %244 = load i64, ptr %243, align 8, !tbaa !9
  store i64 %244, ptr %50, align 8, !tbaa !9
  %245 = load i64, ptr %51, align 8, !tbaa !9
  %246 = icmp eq i64 %245, 1
  br i1 %246, label %247, label %361

247:                                              ; preds = %236
  %248 = load i64, ptr %50, align 8, !tbaa !9
  %249 = icmp eq i64 %248, 1
  br i1 %249, label %250, label %361

250:                                              ; preds = %247
  %251 = load ptr, ptr %20, align 8, !tbaa !5
  %252 = load i64, ptr %251, align 8, !tbaa !9
  %253 = sub nsw i64 %252, 1
  store i64 %253, ptr %40, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %254

254:                                              ; preds = %306, %250
  %255 = load i64, ptr %42, align 8, !tbaa !9
  %256 = load i64, ptr %40, align 8, !tbaa !9
  %257 = icmp sle i64 %255, %256
  br i1 %257, label %258, label %309

258:                                              ; preds = %254
  %259 = load ptr, ptr %24, align 8, !tbaa !5
  %260 = load i64, ptr %42, align 8, !tbaa !9
  %261 = getelementptr inbounds double, ptr %259, i64 %260
  %262 = load ptr, ptr %25, align 8, !tbaa !5
  %263 = load i64, ptr %42, align 8, !tbaa !9
  %264 = getelementptr inbounds double, ptr %262, i64 %263
  %265 = call i32 @dlartg_(ptr noundef %261, ptr noundef %264, ptr noundef %45, ptr noundef %46, ptr noundef %44)
  %266 = load double, ptr %44, align 8, !tbaa !11
  %267 = load ptr, ptr %24, align 8, !tbaa !5
  %268 = load i64, ptr %42, align 8, !tbaa !9
  %269 = getelementptr inbounds double, ptr %267, i64 %268
  store double %266, ptr %269, align 8, !tbaa !11
  %270 = load double, ptr %46, align 8, !tbaa !11
  %271 = load ptr, ptr %24, align 8, !tbaa !5
  %272 = load i64, ptr %42, align 8, !tbaa !9
  %273 = add nsw i64 %272, 1
  %274 = getelementptr inbounds double, ptr %271, i64 %273
  %275 = load double, ptr %274, align 8, !tbaa !11
  %276 = fmul double %270, %275
  %277 = load ptr, ptr %25, align 8, !tbaa !5
  %278 = load i64, ptr %42, align 8, !tbaa !9
  %279 = getelementptr inbounds double, ptr %277, i64 %278
  store double %276, ptr %279, align 8, !tbaa !11
  %280 = load double, ptr %45, align 8, !tbaa !11
  %281 = load ptr, ptr %24, align 8, !tbaa !5
  %282 = load i64, ptr %42, align 8, !tbaa !9
  %283 = add nsw i64 %282, 1
  %284 = getelementptr inbounds double, ptr %281, i64 %283
  %285 = load double, ptr %284, align 8, !tbaa !11
  %286 = fmul double %280, %285
  %287 = load ptr, ptr %24, align 8, !tbaa !5
  %288 = load i64, ptr %42, align 8, !tbaa !9
  %289 = add nsw i64 %288, 1
  %290 = getelementptr inbounds double, ptr %287, i64 %289
  store double %286, ptr %290, align 8, !tbaa !11
  %291 = load i64, ptr %52, align 8, !tbaa !9
  %292 = icmp ne i64 %291, 0
  br i1 %292, label %293, label %305

293:                                              ; preds = %258
  %294 = load double, ptr %45, align 8, !tbaa !11
  %295 = load ptr, ptr %32, align 8, !tbaa !5
  %296 = load i64, ptr %42, align 8, !tbaa !9
  %297 = getelementptr inbounds double, ptr %295, i64 %296
  store double %294, ptr %297, align 8, !tbaa !11
  %298 = load double, ptr %46, align 8, !tbaa !11
  %299 = load ptr, ptr %32, align 8, !tbaa !5
  %300 = load ptr, ptr %20, align 8, !tbaa !5
  %301 = load i64, ptr %300, align 8, !tbaa !9
  %302 = load i64, ptr %42, align 8, !tbaa !9
  %303 = add nsw i64 %301, %302
  %304 = getelementptr inbounds double, ptr %299, i64 %303
  store double %298, ptr %304, align 8, !tbaa !11
  br label %305

305:                                              ; preds = %293, %258
  br label %306

306:                                              ; preds = %305
  %307 = load i64, ptr %42, align 8, !tbaa !9
  %308 = add nsw i64 %307, 1
  store i64 %308, ptr %42, align 8, !tbaa !9
  br label %254, !llvm.loop !13

309:                                              ; preds = %254
  %310 = load ptr, ptr %24, align 8, !tbaa !5
  %311 = load ptr, ptr %20, align 8, !tbaa !5
  %312 = load i64, ptr %311, align 8, !tbaa !9
  %313 = getelementptr inbounds double, ptr %310, i64 %312
  %314 = load ptr, ptr %25, align 8, !tbaa !5
  %315 = load ptr, ptr %20, align 8, !tbaa !5
  %316 = load i64, ptr %315, align 8, !tbaa !9
  %317 = getelementptr inbounds double, ptr %314, i64 %316
  %318 = call i32 @dlartg_(ptr noundef %313, ptr noundef %317, ptr noundef %45, ptr noundef %46, ptr noundef %44)
  %319 = load double, ptr %44, align 8, !tbaa !11
  %320 = load ptr, ptr %24, align 8, !tbaa !5
  %321 = load ptr, ptr %20, align 8, !tbaa !5
  %322 = load i64, ptr %321, align 8, !tbaa !9
  %323 = getelementptr inbounds double, ptr %320, i64 %322
  store double %319, ptr %323, align 8, !tbaa !11
  %324 = load ptr, ptr %25, align 8, !tbaa !5
  %325 = load ptr, ptr %20, align 8, !tbaa !5
  %326 = load i64, ptr %325, align 8, !tbaa !9
  %327 = getelementptr inbounds double, ptr %324, i64 %326
  store double 0.000000e+00, ptr %327, align 8, !tbaa !11
  %328 = load i64, ptr %52, align 8, !tbaa !9
  %329 = icmp ne i64 %328, 0
  br i1 %329, label %330, label %344

330:                                              ; preds = %309
  %331 = load double, ptr %45, align 8, !tbaa !11
  %332 = load ptr, ptr %32, align 8, !tbaa !5
  %333 = load ptr, ptr %20, align 8, !tbaa !5
  %334 = load i64, ptr %333, align 8, !tbaa !9
  %335 = getelementptr inbounds double, ptr %332, i64 %334
  store double %331, ptr %335, align 8, !tbaa !11
  %336 = load double, ptr %46, align 8, !tbaa !11
  %337 = load ptr, ptr %32, align 8, !tbaa !5
  %338 = load ptr, ptr %20, align 8, !tbaa !5
  %339 = load i64, ptr %338, align 8, !tbaa !9
  %340 = load ptr, ptr %20, align 8, !tbaa !5
  %341 = load i64, ptr %340, align 8, !tbaa !9
  %342 = add nsw i64 %339, %341
  %343 = getelementptr inbounds double, ptr %337, i64 %342
  store double %336, ptr %343, align 8, !tbaa !11
  br label %344

344:                                              ; preds = %330, %309
  store i64 2, ptr %51, align 8, !tbaa !9
  store i64 0, ptr %50, align 8, !tbaa !9
  %345 = load ptr, ptr %21, align 8, !tbaa !5
  %346 = load i64, ptr %345, align 8, !tbaa !9
  %347 = icmp sgt i64 %346, 0
  br i1 %347, label %348, label %360

348:                                              ; preds = %344
  %349 = load ptr, ptr %21, align 8, !tbaa !5
  %350 = load ptr, ptr %32, align 8, !tbaa !5
  %351 = getelementptr inbounds double, ptr %350, i64 1
  %352 = load ptr, ptr %32, align 8, !tbaa !5
  %353 = load i64, ptr %47, align 8, !tbaa !9
  %354 = getelementptr inbounds double, ptr %352, i64 %353
  %355 = load ptr, ptr %26, align 8, !tbaa !5
  %356 = load i64, ptr %39, align 8, !tbaa !9
  %357 = getelementptr inbounds double, ptr %355, i64 %356
  %358 = load ptr, ptr %27, align 8, !tbaa !5
  %359 = call i32 @dlasr_(ptr noundef @.str.1, ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef %47, ptr noundef %349, ptr noundef %351, ptr noundef %354, ptr noundef %357, ptr noundef %358)
  br label %360

360:                                              ; preds = %348, %344
  br label %361

361:                                              ; preds = %360, %247, %236
  %362 = load i64, ptr %51, align 8, !tbaa !9
  %363 = icmp eq i64 %362, 2
  br i1 %363, label %364, label %525

364:                                              ; preds = %361
  %365 = load ptr, ptr %20, align 8, !tbaa !5
  %366 = load i64, ptr %365, align 8, !tbaa !9
  %367 = sub nsw i64 %366, 1
  store i64 %367, ptr %40, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %368

368:                                              ; preds = %420, %364
  %369 = load i64, ptr %42, align 8, !tbaa !9
  %370 = load i64, ptr %40, align 8, !tbaa !9
  %371 = icmp sle i64 %369, %370
  br i1 %371, label %372, label %423

372:                                              ; preds = %368
  %373 = load ptr, ptr %24, align 8, !tbaa !5
  %374 = load i64, ptr %42, align 8, !tbaa !9
  %375 = getelementptr inbounds double, ptr %373, i64 %374
  %376 = load ptr, ptr %25, align 8, !tbaa !5
  %377 = load i64, ptr %42, align 8, !tbaa !9
  %378 = getelementptr inbounds double, ptr %376, i64 %377
  %379 = call i32 @dlartg_(ptr noundef %375, ptr noundef %378, ptr noundef %45, ptr noundef %46, ptr noundef %44)
  %380 = load double, ptr %44, align 8, !tbaa !11
  %381 = load ptr, ptr %24, align 8, !tbaa !5
  %382 = load i64, ptr %42, align 8, !tbaa !9
  %383 = getelementptr inbounds double, ptr %381, i64 %382
  store double %380, ptr %383, align 8, !tbaa !11
  %384 = load double, ptr %46, align 8, !tbaa !11
  %385 = load ptr, ptr %24, align 8, !tbaa !5
  %386 = load i64, ptr %42, align 8, !tbaa !9
  %387 = add nsw i64 %386, 1
  %388 = getelementptr inbounds double, ptr %385, i64 %387
  %389 = load double, ptr %388, align 8, !tbaa !11
  %390 = fmul double %384, %389
  %391 = load ptr, ptr %25, align 8, !tbaa !5
  %392 = load i64, ptr %42, align 8, !tbaa !9
  %393 = getelementptr inbounds double, ptr %391, i64 %392
  store double %390, ptr %393, align 8, !tbaa !11
  %394 = load double, ptr %45, align 8, !tbaa !11
  %395 = load ptr, ptr %24, align 8, !tbaa !5
  %396 = load i64, ptr %42, align 8, !tbaa !9
  %397 = add nsw i64 %396, 1
  %398 = getelementptr inbounds double, ptr %395, i64 %397
  %399 = load double, ptr %398, align 8, !tbaa !11
  %400 = fmul double %394, %399
  %401 = load ptr, ptr %24, align 8, !tbaa !5
  %402 = load i64, ptr %42, align 8, !tbaa !9
  %403 = add nsw i64 %402, 1
  %404 = getelementptr inbounds double, ptr %401, i64 %403
  store double %400, ptr %404, align 8, !tbaa !11
  %405 = load i64, ptr %52, align 8, !tbaa !9
  %406 = icmp ne i64 %405, 0
  br i1 %406, label %407, label %419

407:                                              ; preds = %372
  %408 = load double, ptr %45, align 8, !tbaa !11
  %409 = load ptr, ptr %32, align 8, !tbaa !5
  %410 = load i64, ptr %42, align 8, !tbaa !9
  %411 = getelementptr inbounds double, ptr %409, i64 %410
  store double %408, ptr %411, align 8, !tbaa !11
  %412 = load double, ptr %46, align 8, !tbaa !11
  %413 = load ptr, ptr %32, align 8, !tbaa !5
  %414 = load ptr, ptr %20, align 8, !tbaa !5
  %415 = load i64, ptr %414, align 8, !tbaa !9
  %416 = load i64, ptr %42, align 8, !tbaa !9
  %417 = add nsw i64 %415, %416
  %418 = getelementptr inbounds double, ptr %413, i64 %417
  store double %412, ptr %418, align 8, !tbaa !11
  br label %419

419:                                              ; preds = %407, %372
  br label %420

420:                                              ; preds = %419
  %421 = load i64, ptr %42, align 8, !tbaa !9
  %422 = add nsw i64 %421, 1
  store i64 %422, ptr %42, align 8, !tbaa !9
  br label %368, !llvm.loop !15

423:                                              ; preds = %368
  %424 = load i64, ptr %50, align 8, !tbaa !9
  %425 = icmp eq i64 %424, 1
  br i1 %425, label %426, label %458

426:                                              ; preds = %423
  %427 = load ptr, ptr %24, align 8, !tbaa !5
  %428 = load ptr, ptr %20, align 8, !tbaa !5
  %429 = load i64, ptr %428, align 8, !tbaa !9
  %430 = getelementptr inbounds double, ptr %427, i64 %429
  %431 = load ptr, ptr %25, align 8, !tbaa !5
  %432 = load ptr, ptr %20, align 8, !tbaa !5
  %433 = load i64, ptr %432, align 8, !tbaa !9
  %434 = getelementptr inbounds double, ptr %431, i64 %433
  %435 = call i32 @dlartg_(ptr noundef %430, ptr noundef %434, ptr noundef %45, ptr noundef %46, ptr noundef %44)
  %436 = load double, ptr %44, align 8, !tbaa !11
  %437 = load ptr, ptr %24, align 8, !tbaa !5
  %438 = load ptr, ptr %20, align 8, !tbaa !5
  %439 = load i64, ptr %438, align 8, !tbaa !9
  %440 = getelementptr inbounds double, ptr %437, i64 %439
  store double %436, ptr %440, align 8, !tbaa !11
  %441 = load i64, ptr %52, align 8, !tbaa !9
  %442 = icmp ne i64 %441, 0
  br i1 %442, label %443, label %457

443:                                              ; preds = %426
  %444 = load double, ptr %45, align 8, !tbaa !11
  %445 = load ptr, ptr %32, align 8, !tbaa !5
  %446 = load ptr, ptr %20, align 8, !tbaa !5
  %447 = load i64, ptr %446, align 8, !tbaa !9
  %448 = getelementptr inbounds double, ptr %445, i64 %447
  store double %444, ptr %448, align 8, !tbaa !11
  %449 = load double, ptr %46, align 8, !tbaa !11
  %450 = load ptr, ptr %32, align 8, !tbaa !5
  %451 = load ptr, ptr %20, align 8, !tbaa !5
  %452 = load i64, ptr %451, align 8, !tbaa !9
  %453 = load ptr, ptr %20, align 8, !tbaa !5
  %454 = load i64, ptr %453, align 8, !tbaa !9
  %455 = add nsw i64 %452, %454
  %456 = getelementptr inbounds double, ptr %450, i64 %455
  store double %449, ptr %456, align 8, !tbaa !11
  br label %457

457:                                              ; preds = %443, %426
  br label %458

458:                                              ; preds = %457, %423
  %459 = load ptr, ptr %22, align 8, !tbaa !5
  %460 = load i64, ptr %459, align 8, !tbaa !9
  %461 = icmp sgt i64 %460, 0
  br i1 %461, label %462, label %491

462:                                              ; preds = %458
  %463 = load i64, ptr %50, align 8, !tbaa !9
  %464 = icmp eq i64 %463, 0
  br i1 %464, label %465, label %478

465:                                              ; preds = %462
  %466 = load ptr, ptr %22, align 8, !tbaa !5
  %467 = load ptr, ptr %20, align 8, !tbaa !5
  %468 = load ptr, ptr %32, align 8, !tbaa !5
  %469 = getelementptr inbounds double, ptr %468, i64 1
  %470 = load ptr, ptr %32, align 8, !tbaa !5
  %471 = load i64, ptr %47, align 8, !tbaa !9
  %472 = getelementptr inbounds double, ptr %470, i64 %471
  %473 = load ptr, ptr %28, align 8, !tbaa !5
  %474 = load i64, ptr %37, align 8, !tbaa !9
  %475 = getelementptr inbounds double, ptr %473, i64 %474
  %476 = load ptr, ptr %29, align 8, !tbaa !5
  %477 = call i32 @dlasr_(ptr noundef @.str.5, ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef %466, ptr noundef %467, ptr noundef %469, ptr noundef %472, ptr noundef %475, ptr noundef %476)
  br label %490

478:                                              ; preds = %462
  %479 = load ptr, ptr %22, align 8, !tbaa !5
  %480 = load ptr, ptr %32, align 8, !tbaa !5
  %481 = getelementptr inbounds double, ptr %480, i64 1
  %482 = load ptr, ptr %32, align 8, !tbaa !5
  %483 = load i64, ptr %47, align 8, !tbaa !9
  %484 = getelementptr inbounds double, ptr %482, i64 %483
  %485 = load ptr, ptr %28, align 8, !tbaa !5
  %486 = load i64, ptr %37, align 8, !tbaa !9
  %487 = getelementptr inbounds double, ptr %485, i64 %486
  %488 = load ptr, ptr %29, align 8, !tbaa !5
  %489 = call i32 @dlasr_(ptr noundef @.str.5, ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef %479, ptr noundef %47, ptr noundef %481, ptr noundef %484, ptr noundef %487, ptr noundef %488)
  br label %490

490:                                              ; preds = %478, %465
  br label %491

491:                                              ; preds = %490, %458
  %492 = load ptr, ptr %23, align 8, !tbaa !5
  %493 = load i64, ptr %492, align 8, !tbaa !9
  %494 = icmp sgt i64 %493, 0
  br i1 %494, label %495, label %524

495:                                              ; preds = %491
  %496 = load i64, ptr %50, align 8, !tbaa !9
  %497 = icmp eq i64 %496, 0
  br i1 %497, label %498, label %511

498:                                              ; preds = %495
  %499 = load ptr, ptr %20, align 8, !tbaa !5
  %500 = load ptr, ptr %23, align 8, !tbaa !5
  %501 = load ptr, ptr %32, align 8, !tbaa !5
  %502 = getelementptr inbounds double, ptr %501, i64 1
  %503 = load ptr, ptr %32, align 8, !tbaa !5
  %504 = load i64, ptr %47, align 8, !tbaa !9
  %505 = getelementptr inbounds double, ptr %503, i64 %504
  %506 = load ptr, ptr %30, align 8, !tbaa !5
  %507 = load i64, ptr %35, align 8, !tbaa !9
  %508 = getelementptr inbounds double, ptr %506, i64 %507
  %509 = load ptr, ptr %31, align 8, !tbaa !5
  %510 = call i32 @dlasr_(ptr noundef @.str.1, ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef %499, ptr noundef %500, ptr noundef %502, ptr noundef %505, ptr noundef %508, ptr noundef %509)
  br label %523

511:                                              ; preds = %495
  %512 = load ptr, ptr %23, align 8, !tbaa !5
  %513 = load ptr, ptr %32, align 8, !tbaa !5
  %514 = getelementptr inbounds double, ptr %513, i64 1
  %515 = load ptr, ptr %32, align 8, !tbaa !5
  %516 = load i64, ptr %47, align 8, !tbaa !9
  %517 = getelementptr inbounds double, ptr %515, i64 %516
  %518 = load ptr, ptr %30, align 8, !tbaa !5
  %519 = load i64, ptr %35, align 8, !tbaa !9
  %520 = getelementptr inbounds double, ptr %518, i64 %519
  %521 = load ptr, ptr %31, align 8, !tbaa !5
  %522 = call i32 @dlasr_(ptr noundef @.str.1, ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef %47, ptr noundef %512, ptr noundef %514, ptr noundef %517, ptr noundef %520, ptr noundef %521)
  br label %523

523:                                              ; preds = %511, %498
  br label %524

524:                                              ; preds = %523, %491
  br label %525

525:                                              ; preds = %524, %361
  %526 = load ptr, ptr %20, align 8, !tbaa !5
  %527 = load ptr, ptr %21, align 8, !tbaa !5
  %528 = load ptr, ptr %22, align 8, !tbaa !5
  %529 = load ptr, ptr %23, align 8, !tbaa !5
  %530 = load ptr, ptr %24, align 8, !tbaa !5
  %531 = getelementptr inbounds double, ptr %530, i64 1
  %532 = load ptr, ptr %25, align 8, !tbaa !5
  %533 = getelementptr inbounds double, ptr %532, i64 1
  %534 = load ptr, ptr %26, align 8, !tbaa !5
  %535 = load i64, ptr %39, align 8, !tbaa !9
  %536 = getelementptr inbounds double, ptr %534, i64 %535
  %537 = load ptr, ptr %27, align 8, !tbaa !5
  %538 = load ptr, ptr %28, align 8, !tbaa !5
  %539 = load i64, ptr %37, align 8, !tbaa !9
  %540 = getelementptr inbounds double, ptr %538, i64 %539
  %541 = load ptr, ptr %29, align 8, !tbaa !5
  %542 = load ptr, ptr %30, align 8, !tbaa !5
  %543 = load i64, ptr %35, align 8, !tbaa !9
  %544 = getelementptr inbounds double, ptr %542, i64 %543
  %545 = load ptr, ptr %31, align 8, !tbaa !5
  %546 = load ptr, ptr %32, align 8, !tbaa !5
  %547 = getelementptr inbounds double, ptr %546, i64 1
  %548 = load ptr, ptr %33, align 8, !tbaa !5
  %549 = call i32 @dbdsqr_(ptr noundef @.str, ptr noundef %526, ptr noundef %527, ptr noundef %528, ptr noundef %529, ptr noundef %531, ptr noundef %533, ptr noundef %536, ptr noundef %537, ptr noundef %540, ptr noundef %541, ptr noundef %544, ptr noundef %545, ptr noundef %547, ptr noundef %548)
  %550 = load ptr, ptr %20, align 8, !tbaa !5
  %551 = load i64, ptr %550, align 8, !tbaa !9
  store i64 %551, ptr %40, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %552

552:                                              ; preds = %661, %525
  %553 = load i64, ptr %42, align 8, !tbaa !9
  %554 = load i64, ptr %40, align 8, !tbaa !9
  %555 = icmp sle i64 %553, %554
  br i1 %555, label %556, label %664

556:                                              ; preds = %552
  %557 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %557, ptr %48, align 8, !tbaa !9
  %558 = load ptr, ptr %24, align 8, !tbaa !5
  %559 = load i64, ptr %42, align 8, !tbaa !9
  %560 = getelementptr inbounds double, ptr %558, i64 %559
  %561 = load double, ptr %560, align 8, !tbaa !11
  store double %561, ptr %49, align 8, !tbaa !11
  %562 = load ptr, ptr %20, align 8, !tbaa !5
  %563 = load i64, ptr %562, align 8, !tbaa !9
  store i64 %563, ptr %41, align 8, !tbaa !9
  %564 = load i64, ptr %42, align 8, !tbaa !9
  %565 = add nsw i64 %564, 1
  store i64 %565, ptr %43, align 8, !tbaa !9
  br label %566

566:                                              ; preds = %584, %556
  %567 = load i64, ptr %43, align 8, !tbaa !9
  %568 = load i64, ptr %41, align 8, !tbaa !9
  %569 = icmp sle i64 %567, %568
  br i1 %569, label %570, label %587

570:                                              ; preds = %566
  %571 = load ptr, ptr %24, align 8, !tbaa !5
  %572 = load i64, ptr %43, align 8, !tbaa !9
  %573 = getelementptr inbounds double, ptr %571, i64 %572
  %574 = load double, ptr %573, align 8, !tbaa !11
  %575 = load double, ptr %49, align 8, !tbaa !11
  %576 = fcmp olt double %574, %575
  br i1 %576, label %577, label %583

577:                                              ; preds = %570
  %578 = load i64, ptr %43, align 8, !tbaa !9
  store i64 %578, ptr %48, align 8, !tbaa !9
  %579 = load ptr, ptr %24, align 8, !tbaa !5
  %580 = load i64, ptr %43, align 8, !tbaa !9
  %581 = getelementptr inbounds double, ptr %579, i64 %580
  %582 = load double, ptr %581, align 8, !tbaa !11
  store double %582, ptr %49, align 8, !tbaa !11
  br label %583

583:                                              ; preds = %577, %570
  br label %584

584:                                              ; preds = %583
  %585 = load i64, ptr %43, align 8, !tbaa !9
  %586 = add nsw i64 %585, 1
  store i64 %586, ptr %43, align 8, !tbaa !9
  br label %566, !llvm.loop !16

587:                                              ; preds = %566
  %588 = load i64, ptr %48, align 8, !tbaa !9
  %589 = load i64, ptr %42, align 8, !tbaa !9
  %590 = icmp ne i64 %588, %589
  br i1 %590, label %591, label %660

591:                                              ; preds = %587
  %592 = load ptr, ptr %24, align 8, !tbaa !5
  %593 = load i64, ptr %42, align 8, !tbaa !9
  %594 = getelementptr inbounds double, ptr %592, i64 %593
  %595 = load double, ptr %594, align 8, !tbaa !11
  %596 = load ptr, ptr %24, align 8, !tbaa !5
  %597 = load i64, ptr %48, align 8, !tbaa !9
  %598 = getelementptr inbounds double, ptr %596, i64 %597
  store double %595, ptr %598, align 8, !tbaa !11
  %599 = load double, ptr %49, align 8, !tbaa !11
  %600 = load ptr, ptr %24, align 8, !tbaa !5
  %601 = load i64, ptr %42, align 8, !tbaa !9
  %602 = getelementptr inbounds double, ptr %600, i64 %601
  store double %599, ptr %602, align 8, !tbaa !11
  %603 = load ptr, ptr %21, align 8, !tbaa !5
  %604 = load i64, ptr %603, align 8, !tbaa !9
  %605 = icmp sgt i64 %604, 0
  br i1 %605, label %606, label %621

606:                                              ; preds = %591
  %607 = load ptr, ptr %21, align 8, !tbaa !5
  %608 = load ptr, ptr %26, align 8, !tbaa !5
  %609 = load i64, ptr %48, align 8, !tbaa !9
  %610 = load i64, ptr %38, align 8, !tbaa !9
  %611 = add nsw i64 %609, %610
  %612 = getelementptr inbounds double, ptr %608, i64 %611
  %613 = load ptr, ptr %27, align 8, !tbaa !5
  %614 = load ptr, ptr %26, align 8, !tbaa !5
  %615 = load i64, ptr %42, align 8, !tbaa !9
  %616 = load i64, ptr %38, align 8, !tbaa !9
  %617 = add nsw i64 %615, %616
  %618 = getelementptr inbounds double, ptr %614, i64 %617
  %619 = load ptr, ptr %27, align 8, !tbaa !5
  %620 = call i32 @f2c_dswap(ptr noundef %607, ptr noundef %612, ptr noundef %613, ptr noundef %618, ptr noundef %619)
  br label %621

621:                                              ; preds = %606, %591
  %622 = load ptr, ptr %22, align 8, !tbaa !5
  %623 = load i64, ptr %622, align 8, !tbaa !9
  %624 = icmp sgt i64 %623, 0
  br i1 %624, label %625, label %640

625:                                              ; preds = %621
  %626 = load ptr, ptr %22, align 8, !tbaa !5
  %627 = load ptr, ptr %28, align 8, !tbaa !5
  %628 = load i64, ptr %48, align 8, !tbaa !9
  %629 = load i64, ptr %36, align 8, !tbaa !9
  %630 = mul nsw i64 %628, %629
  %631 = add nsw i64 %630, 1
  %632 = getelementptr inbounds double, ptr %627, i64 %631
  %633 = load ptr, ptr %28, align 8, !tbaa !5
  %634 = load i64, ptr %42, align 8, !tbaa !9
  %635 = load i64, ptr %36, align 8, !tbaa !9
  %636 = mul nsw i64 %634, %635
  %637 = add nsw i64 %636, 1
  %638 = getelementptr inbounds double, ptr %633, i64 %637
  %639 = call i32 @f2c_dswap(ptr noundef %626, ptr noundef %632, ptr noundef @c__1, ptr noundef %638, ptr noundef @c__1)
  br label %640

640:                                              ; preds = %625, %621
  %641 = load ptr, ptr %23, align 8, !tbaa !5
  %642 = load i64, ptr %641, align 8, !tbaa !9
  %643 = icmp sgt i64 %642, 0
  br i1 %643, label %644, label %659

644:                                              ; preds = %640
  %645 = load ptr, ptr %23, align 8, !tbaa !5
  %646 = load ptr, ptr %30, align 8, !tbaa !5
  %647 = load i64, ptr %48, align 8, !tbaa !9
  %648 = load i64, ptr %34, align 8, !tbaa !9
  %649 = add nsw i64 %647, %648
  %650 = getelementptr inbounds double, ptr %646, i64 %649
  %651 = load ptr, ptr %31, align 8, !tbaa !5
  %652 = load ptr, ptr %30, align 8, !tbaa !5
  %653 = load i64, ptr %42, align 8, !tbaa !9
  %654 = load i64, ptr %34, align 8, !tbaa !9
  %655 = add nsw i64 %653, %654
  %656 = getelementptr inbounds double, ptr %652, i64 %655
  %657 = load ptr, ptr %31, align 8, !tbaa !5
  %658 = call i32 @f2c_dswap(ptr noundef %645, ptr noundef %650, ptr noundef %651, ptr noundef %656, ptr noundef %657)
  br label %659

659:                                              ; preds = %644, %640
  br label %660

660:                                              ; preds = %659, %587
  br label %661

661:                                              ; preds = %660
  %662 = load i64, ptr %42, align 8, !tbaa !9
  %663 = add nsw i64 %662, 1
  store i64 %663, ptr %42, align 8, !tbaa !9
  br label %552, !llvm.loop !17

664:                                              ; preds = %552
  store i32 0, ptr %17, align 4
  store i32 1, ptr %53, align 4
  br label %665

665:                                              ; preds = %664, %223, %214
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #3
  %666 = load i32, ptr %17, align 4
  ret i32 %666
}

; 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

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

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

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

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

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

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

!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}


; 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 [7 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @dlasdq_(ptr noundef %0, ptr nocapture noundef readonly %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15) local_unnamed_addr #0 {
  %17 = alloca i64, align 8
  %18 = alloca double, align 8
  %19 = alloca double, align 8
  %20 = alloca double, align 8
  %21 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #4
  %22 = getelementptr inbounds i8, ptr %6, i64 -8
  %23 = getelementptr inbounds i8, ptr %7, i64 -8
  %24 = load i64, ptr %11, align 8, !tbaa !5
  %25 = xor i64 %24, -1
  %26 = getelementptr inbounds double, ptr %10, i64 %25
  %27 = getelementptr inbounds i8, ptr %14, i64 -8
  store i64 0, ptr %15, align 8, !tbaa !5
  %28 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #4
  %.not = icmp ne i64 %28, 0
  %29 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #4
  %.not258 = icmp eq i64 %29, 0
  %not..not258 = xor i1 %.not258, true
  %30 = select i1 %not..not258, i1 true, i1 %.not
  br i1 %30, label %31, label %.thread271.sink.split

31:                                               ; preds = %16
  %32 = load i64, ptr %1, align 8, !tbaa !5
  %or.cond266 = icmp ugt i64 %32, 1
  br i1 %or.cond266, label %.thread271.sink.split, label %33

33:                                               ; preds = %31
  %34 = load i64, ptr %2, align 8, !tbaa !5
  %35 = icmp slt i64 %34, 0
  br i1 %35, label %.thread271.sink.split, label %36

36:                                               ; preds = %33
  %37 = load i64, ptr %3, align 8, !tbaa !5
  %38 = icmp slt i64 %37, 0
  br i1 %38, label %.thread271.sink.split, label %39

39:                                               ; preds = %36
  %40 = load i64, ptr %4, align 8, !tbaa !5
  %41 = icmp slt i64 %40, 0
  br i1 %41, label %.thread271.sink.split, label %42

42:                                               ; preds = %39
  %43 = load i64, ptr %5, align 8, !tbaa !5
  %44 = icmp slt i64 %43, 0
  br i1 %44, label %.thread271.sink.split, label %45

45:                                               ; preds = %42
  %46 = icmp eq i64 %37, 0
  %47 = load i64, ptr %9, align 8, !tbaa !5
  br i1 %46, label %48, label %50

48:                                               ; preds = %45
  %49 = icmp slt i64 %47, 1
  br i1 %49, label %.thread271.sink.split, label %52

50:                                               ; preds = %45
  %spec.select267 = tail call i64 @llvm.umax.i64(i64 %34, i64 1)
  %51 = icmp slt i64 %47, %spec.select267
  br i1 %51, label %.thread271.sink.split, label %52

52:                                               ; preds = %48, %50
  %53 = load i64, ptr %11, align 8, !tbaa !5
  %spec.select268 = tail call i64 @llvm.umax.i64(i64 %40, i64 1)
  %54 = icmp slt i64 %53, %spec.select268
  br i1 %54, label %.thread271.sink.split, label %55

55:                                               ; preds = %52
  %56 = icmp eq i64 %43, 0
  %57 = load i64, ptr %13, align 8, !tbaa !5
  br i1 %56, label %58, label %60

58:                                               ; preds = %55
  %59 = icmp slt i64 %57, 1
  br i1 %59, label %.thread271.sink.split, label %62

60:                                               ; preds = %55
  %spec.select269 = tail call i64 @llvm.umax.i64(i64 %34, i64 1)
  %61 = icmp slt i64 %57, %spec.select269
  br i1 %61, label %.thread271.sink.split, label %62

62:                                               ; preds = %58, %60
  %.pr = load i64, ptr %15, align 8, !tbaa !5
  %.not259 = icmp eq i64 %.pr, 0
  br i1 %.not259, label %66, label %.thread271

.thread271.sink.split:                            ; preds = %58, %60, %52, %48, %50, %42, %39, %36, %33, %31, %16
  %.sink = phi i64 [ -1, %16 ], [ -2, %31 ], [ -3, %33 ], [ -4, %36 ], [ -5, %39 ], [ -6, %42 ], [ -10, %50 ], [ -10, %48 ], [ -12, %52 ], [ -14, %60 ], [ -14, %58 ]
  store i64 %.sink, ptr %15, align 8, !tbaa !5
  br label %.thread271

.thread271:                                       ; preds = %.thread271.sink.split, %62
  %63 = phi i64 [ %.pr, %62 ], [ %.sink, %.thread271.sink.split ]
  %64 = sub nsw i64 0, %63
  store i64 %64, ptr %17, align 8, !tbaa !5
  %65 = call i32 @xerbla_(ptr noundef nonnull @.str.2, ptr noundef nonnull %17) #4
  br label %.loopexit

66:                                               ; preds = %62
  %67 = icmp eq i64 %34, 0
  br i1 %67, label %.loopexit, label %68

68:                                               ; preds = %66
  %69 = or i64 %37, %40
  %70 = or i64 %69, %43
  %.fr325 = freeze i64 %70
  %spec.select.not = icmp eq i64 %.fr325, 0
  %71 = add nuw nsw i64 %34, 1
  store i64 %71, ptr %21, align 8, !tbaa !5
  %72 = select i1 %.not258, i1 %.not, i1 false
  %73 = icmp eq i64 %32, 1
  %or.cond = and i1 %72, %73
  br i1 %or.cond, label %74, label %124

74:                                               ; preds = %68
  %75 = add nsw i64 %34, -1
  %.not260281 = icmp eq i64 %34, 1
  br i1 %.not260281, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %74
  br i1 %spec.select.not, label %.lr.ph.split, label %.lr.ph.split.us

.lr.ph.split.us:                                  ; preds = %.lr.ph, %.lr.ph.split.us
  %.0249282.us = phi i64 [ %81, %.lr.ph.split.us ], [ 1, %.lr.ph ]
  %76 = getelementptr inbounds double, ptr %22, i64 %.0249282.us
  %77 = getelementptr inbounds double, ptr %23, i64 %.0249282.us
  %78 = call i32 @dlartg_(ptr noundef nonnull %76, ptr noundef nonnull %77, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef nonnull %18) #4
  %79 = load double, ptr %18, align 8, !tbaa !9
  store double %79, ptr %76, align 8, !tbaa !9
  %80 = load double, ptr %20, align 8, !tbaa !9
  %81 = add nuw nsw i64 %.0249282.us, 1
  %82 = getelementptr double, ptr %6, i64 %.0249282.us
  %83 = load double, ptr %82, align 8, !tbaa !9
  %84 = fmul double %80, %83
  store double %84, ptr %77, align 8, !tbaa !9
  %85 = load double, ptr %19, align 8, !tbaa !9
  %86 = load double, ptr %82, align 8, !tbaa !9
  %87 = fmul double %85, %86
  store double %87, ptr %82, align 8, !tbaa !9
  %88 = getelementptr inbounds double, ptr %27, i64 %.0249282.us
  store double %85, ptr %88, align 8, !tbaa !9
  %89 = load i64, ptr %2, align 8, !tbaa !5
  %90 = getelementptr double, ptr %27, i64 %89
  %91 = getelementptr double, ptr %90, i64 %.0249282.us
  store double %80, ptr %91, align 8, !tbaa !9
  %.not260.us.not = icmp slt i64 %.0249282.us, %75
  br i1 %.not260.us.not, label %.lr.ph.split.us, label %._crit_edge, !llvm.loop !11

.lr.ph.split:                                     ; preds = %.lr.ph, %.lr.ph.split
  %.0249282 = phi i64 [ %97, %.lr.ph.split ], [ 1, %.lr.ph ]
  %92 = getelementptr inbounds double, ptr %22, i64 %.0249282
  %93 = getelementptr inbounds double, ptr %23, i64 %.0249282
  %94 = call i32 @dlartg_(ptr noundef nonnull %92, ptr noundef nonnull %93, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef nonnull %18) #4
  %95 = load double, ptr %18, align 8, !tbaa !9
  store double %95, ptr %92, align 8, !tbaa !9
  %96 = load double, ptr %20, align 8, !tbaa !9
  %97 = add nuw nsw i64 %.0249282, 1
  %98 = getelementptr double, ptr %6, i64 %.0249282
  %99 = load double, ptr %98, align 8, !tbaa !9
  %100 = fmul double %96, %99
  store double %100, ptr %93, align 8, !tbaa !9
  %101 = load double, ptr %19, align 8, !tbaa !9
  %102 = load double, ptr %98, align 8, !tbaa !9
  %103 = fmul double %101, %102
  store double %103, ptr %98, align 8, !tbaa !9
  %.not260.not = icmp slt i64 %.0249282, %75
  br i1 %.not260.not, label %.lr.ph.split, label %._crit_edge.loopexit311, !llvm.loop !11

._crit_edge.loopexit311:                          ; preds = %.lr.ph.split
  %.pre = load i64, ptr %2, align 8, !tbaa !5
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.split.us, %._crit_edge.loopexit311, %74
  %104 = phi i64 [ %.pre, %._crit_edge.loopexit311 ], [ 1, %74 ], [ %89, %.lr.ph.split.us ]
  %105 = getelementptr inbounds double, ptr %22, i64 %104
  %106 = getelementptr inbounds double, ptr %23, i64 %104
  %107 = call i32 @dlartg_(ptr noundef nonnull %105, ptr noundef nonnull %106, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef nonnull %18) #4
  %108 = load double, ptr %18, align 8, !tbaa !9
  %109 = load i64, ptr %2, align 8, !tbaa !5
  %110 = getelementptr inbounds double, ptr %22, i64 %109
  store double %108, ptr %110, align 8, !tbaa !9
  %111 = getelementptr inbounds double, ptr %23, i64 %109
  store double 0.000000e+00, ptr %111, align 8, !tbaa !9
  br i1 %spec.select.not, label %117, label %112

112:                                              ; preds = %._crit_edge
  %113 = load double, ptr %19, align 8, !tbaa !9
  %114 = getelementptr inbounds double, ptr %27, i64 %109
  store double %113, ptr %114, align 8, !tbaa !9
  %115 = load double, ptr %20, align 8, !tbaa !9
  %.idx = shl nsw i64 %109, 4
  %116 = getelementptr inbounds i8, ptr %27, i64 %.idx
  store double %115, ptr %116, align 8, !tbaa !9
  br label %117

117:                                              ; preds = %112, %._crit_edge
  %118 = load i64, ptr %3, align 8, !tbaa !5
  %119 = icmp sgt i64 %118, 0
  br i1 %119, label %120, label %.thread274

120:                                              ; preds = %117
  %121 = load i64, ptr %21, align 8, !tbaa !5
  %122 = getelementptr inbounds double, ptr %27, i64 %121
  %123 = call i32 @dlasr_(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull %21, ptr noundef nonnull %3, ptr noundef %14, ptr noundef nonnull %122, ptr noundef %8, ptr noundef nonnull %9) #4
  %.pre312 = load i64, ptr %2, align 8, !tbaa !5
  br label %.thread274

124:                                              ; preds = %68
  br i1 %.not258, label %188, label %.thread274

.thread274:                                       ; preds = %117, %120, %124
  %125 = phi i64 [ %34, %124 ], [ %.pre312, %120 ], [ %109, %117 ]
  %.0243277 = phi i64 [ %32, %124 ], [ 0, %120 ], [ 0, %117 ]
  %126 = add nsw i64 %125, -1
  %.not261283 = icmp slt i64 %125, 2
  br i1 %.not261283, label %._crit_edge286, label %.lr.ph285

.lr.ph285:                                        ; preds = %.thread274
  br i1 %spec.select.not, label %.lr.ph285.split, label %.lr.ph285.split.us

.lr.ph285.split.us:                               ; preds = %.lr.ph285, %.lr.ph285.split.us
  %.1250284.us = phi i64 [ %132, %.lr.ph285.split.us ], [ 1, %.lr.ph285 ]
  %127 = getelementptr inbounds double, ptr %22, i64 %.1250284.us
  %128 = getelementptr inbounds double, ptr %23, i64 %.1250284.us
  %129 = call i32 @dlartg_(ptr noundef nonnull %127, ptr noundef nonnull %128, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef nonnull %18) #4
  %130 = load double, ptr %18, align 8, !tbaa !9
  store double %130, ptr %127, align 8, !tbaa !9
  %131 = load double, ptr %20, align 8, !tbaa !9
  %132 = add nuw nsw i64 %.1250284.us, 1
  %133 = getelementptr double, ptr %6, i64 %.1250284.us
  %134 = load double, ptr %133, align 8, !tbaa !9
  %135 = fmul double %131, %134
  store double %135, ptr %128, align 8, !tbaa !9
  %136 = load double, ptr %19, align 8, !tbaa !9
  %137 = load double, ptr %133, align 8, !tbaa !9
  %138 = fmul double %136, %137
  store double %138, ptr %133, align 8, !tbaa !9
  %139 = getelementptr inbounds double, ptr %27, i64 %.1250284.us
  store double %136, ptr %139, align 8, !tbaa !9
  %140 = load i64, ptr %2, align 8, !tbaa !5
  %141 = getelementptr double, ptr %27, i64 %140
  %142 = getelementptr double, ptr %141, i64 %.1250284.us
  store double %131, ptr %142, align 8, !tbaa !9
  %.not261.us.not = icmp slt i64 %.1250284.us, %126
  br i1 %.not261.us.not, label %.lr.ph285.split.us, label %._crit_edge286, !llvm.loop !13

.lr.ph285.split:                                  ; preds = %.lr.ph285, %.lr.ph285.split
  %.1250284 = phi i64 [ %148, %.lr.ph285.split ], [ 1, %.lr.ph285 ]
  %143 = getelementptr inbounds double, ptr %22, i64 %.1250284
  %144 = getelementptr inbounds double, ptr %23, i64 %.1250284
  %145 = call i32 @dlartg_(ptr noundef nonnull %143, ptr noundef nonnull %144, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef nonnull %18) #4
  %146 = load double, ptr %18, align 8, !tbaa !9
  store double %146, ptr %143, align 8, !tbaa !9
  %147 = load double, ptr %20, align 8, !tbaa !9
  %148 = add nuw nsw i64 %.1250284, 1
  %149 = getelementptr double, ptr %6, i64 %.1250284
  %150 = load double, ptr %149, align 8, !tbaa !9
  %151 = fmul double %147, %150
  store double %151, ptr %144, align 8, !tbaa !9
  %152 = load double, ptr %19, align 8, !tbaa !9
  %153 = load double, ptr %149, align 8, !tbaa !9
  %154 = fmul double %152, %153
  store double %154, ptr %149, align 8, !tbaa !9
  %.not261.not = icmp slt i64 %.1250284, %126
  br i1 %.not261.not, label %.lr.ph285.split, label %._crit_edge286, !llvm.loop !13

._crit_edge286:                                   ; preds = %.lr.ph285.split.us, %.lr.ph285.split, %.thread274
  %155 = icmp eq i64 %.0243277, 1
  br i1 %155, label %156, label %169

156:                                              ; preds = %._crit_edge286
  %157 = load i64, ptr %2, align 8, !tbaa !5
  %158 = getelementptr inbounds double, ptr %22, i64 %157
  %159 = getelementptr inbounds double, ptr %23, i64 %157
  %160 = call i32 @dlartg_(ptr noundef nonnull %158, ptr noundef nonnull %159, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef nonnull %18) #4
  %161 = load double, ptr %18, align 8, !tbaa !9
  %162 = load i64, ptr %2, align 8, !tbaa !5
  %163 = getelementptr inbounds double, ptr %22, i64 %162
  store double %161, ptr %163, align 8, !tbaa !9
  br i1 %spec.select.not, label %169, label %164

164:                                              ; preds = %156
  %165 = load double, ptr %19, align 8, !tbaa !9
  %166 = getelementptr inbounds double, ptr %27, i64 %162
  store double %165, ptr %166, align 8, !tbaa !9
  %167 = load double, ptr %20, align 8, !tbaa !9
  %.idx262 = shl nsw i64 %162, 4
  %168 = getelementptr inbounds i8, ptr %27, i64 %.idx262
  store double %167, ptr %168, align 8, !tbaa !9
  br label %169

169:                                              ; preds = %156, %164, %._crit_edge286
  %170 = load i64, ptr %4, align 8, !tbaa !5
  %171 = icmp sgt i64 %170, 0
  br i1 %171, label %172, label %178

172:                                              ; preds = %169
  %173 = icmp eq i64 %.0243277, 0
  %174 = load i64, ptr %21, align 8, !tbaa !5
  %175 = getelementptr inbounds double, ptr %27, i64 %174
  br i1 %173, label %.thread278, label %176

176:                                              ; preds = %172
  %177 = call i32 @dlasr_(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull %4, ptr noundef nonnull %21, ptr noundef %14, ptr noundef nonnull %175, ptr noundef %10, ptr noundef nonnull %11) #4
  br label %178

178:                                              ; preds = %176, %169
  %179 = load i64, ptr %5, align 8, !tbaa !5
  %180 = icmp sgt i64 %179, 0
  br i1 %180, label %184, label %188

.thread278:                                       ; preds = %172
  %181 = call i32 @dlasr_(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull %4, ptr noundef nonnull %2, ptr noundef %14, ptr noundef nonnull %175, ptr noundef %10, ptr noundef nonnull %11) #4
  %182 = load i64, ptr %5, align 8, !tbaa !5
  %183 = icmp sgt i64 %182, 0
  br i1 %183, label %.sink.split, label %188

184:                                              ; preds = %178
  %185 = icmp eq i64 %.0243277, 0
  %spec.select324 = select i1 %185, ptr %2, ptr %21
  br label %.sink.split

.sink.split:                                      ; preds = %.thread278, %184
  %.sink322 = phi ptr [ %spec.select324, %184 ], [ %2, %.thread278 ]
  %.pre314.sink = load i64, ptr %21, align 8, !tbaa !5
  %186 = getelementptr inbounds double, ptr %27, i64 %.pre314.sink
  %187 = call i32 @dlasr_(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull %.sink322, ptr noundef nonnull %5, ptr noundef %14, ptr noundef nonnull %186, ptr noundef %12, ptr noundef nonnull %13) #4
  br label %188

188:                                              ; preds = %.sink.split, %.thread278, %178, %124
  %189 = call i32 @dbdsqr_(ptr noundef nonnull @.str, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %14, ptr noundef nonnull %15) #4
  %190 = load i64, ptr %2, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %8, i64 -8
  %invariant.gep298 = getelementptr i8, ptr %26, i64 8
  %invariant.gep302 = getelementptr i8, ptr %12, i64 -8
  %.not263306 = icmp slt i64 %190, 1
  br i1 %.not263306, label %.loopexit, label %.lr.ph309

.lr.ph309:                                        ; preds = %188, %._crit_edge294.thread
  %.2251307 = phi i64 [ %194, %._crit_edge294.thread ], [ 1, %188 ]
  %191 = getelementptr inbounds double, ptr %22, i64 %.2251307
  %192 = load double, ptr %191, align 8, !tbaa !9
  %193 = load i64, ptr %2, align 8, !tbaa !5
  %194 = add nuw nsw i64 %.2251307, 1
  %.not264288.not = icmp slt i64 %.2251307, %193
  br i1 %.not264288.not, label %.lr.ph293, label %._crit_edge294.thread

.lr.ph293:                                        ; preds = %.lr.ph309, %.lr.ph293
  %.0244291 = phi double [ %.1245, %.lr.ph293 ], [ %192, %.lr.ph309 ]
  %.0246290 = phi i64 [ %.1247, %.lr.ph293 ], [ %.2251307, %.lr.ph309 ]
  %.0248289 = phi i64 [ %198, %.lr.ph293 ], [ %194, %.lr.ph309 ]
  %195 = getelementptr inbounds double, ptr %22, i64 %.0248289
  %196 = load double, ptr %195, align 8, !tbaa !9
  %197 = fcmp olt double %196, %.0244291
  %.1247 = select i1 %197, i64 %.0248289, i64 %.0246290
  %.1245 = select i1 %197, double %196, double %.0244291
  %198 = add nuw nsw i64 %.0248289, 1
  %.not264.not = icmp slt i64 %.0248289, %193
  br i1 %.not264.not, label %.lr.ph293, label %._crit_edge294, !llvm.loop !14

._crit_edge294:                                   ; preds = %.lr.ph293
  %.not265 = icmp eq i64 %.1247, %.2251307
  br i1 %.not265, label %._crit_edge294.thread, label %199

199:                                              ; preds = %._crit_edge294
  %200 = getelementptr inbounds double, ptr %22, i64 %.1247
  store double %192, ptr %200, align 8, !tbaa !9
  store double %.1245, ptr %191, align 8, !tbaa !9
  %201 = load i64, ptr %3, align 8, !tbaa !5
  %202 = icmp sgt i64 %201, 0
  br i1 %202, label %203, label %205

203:                                              ; preds = %199
  %gep = getelementptr double, ptr %invariant.gep, i64 %.1247
  %gep297 = getelementptr double, ptr %invariant.gep, i64 %.2251307
  %204 = call i32 @f2c_dswap(ptr noundef nonnull %3, ptr noundef %gep, ptr noundef nonnull %9, ptr noundef %gep297, ptr noundef nonnull %9) #4
  br label %205

205:                                              ; preds = %203, %199
  %206 = load i64, ptr %4, align 8, !tbaa !5
  %207 = icmp sgt i64 %206, 0
  br i1 %207, label %208, label %212

208:                                              ; preds = %205
  %209 = mul nsw i64 %.1247, %24
  %gep299 = getelementptr double, ptr %invariant.gep298, i64 %209
  %210 = mul nsw i64 %.2251307, %24
  %gep301 = getelementptr double, ptr %invariant.gep298, i64 %210
  %211 = call i32 @f2c_dswap(ptr noundef nonnull %4, ptr noundef %gep299, ptr noundef nonnull @c__1, ptr noundef %gep301, ptr noundef nonnull @c__1) #4
  br label %212

212:                                              ; preds = %208, %205
  %213 = load i64, ptr %5, align 8, !tbaa !5
  %214 = icmp sgt i64 %213, 0
  br i1 %214, label %215, label %._crit_edge294.thread

215:                                              ; preds = %212
  %gep303 = getelementptr double, ptr %invariant.gep302, i64 %.1247
  %gep305 = getelementptr double, ptr %invariant.gep302, i64 %.2251307
  %216 = call i32 @f2c_dswap(ptr noundef nonnull %5, ptr noundef %gep303, ptr noundef nonnull %13, ptr noundef %gep305, ptr noundef nonnull %13) #4
  br label %._crit_edge294.thread

._crit_edge294.thread:                            ; preds = %.lr.ph309, %._crit_edge294, %215, %212
  %.not263.not = icmp slt i64 %.2251307, %190
  br i1 %.not263.not, label %.lr.ph309, label %.loopexit, !llvm.loop !15

.loopexit:                                        ; preds = %._crit_edge294.thread, %188, %66, %.thread271
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #4
  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

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

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

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

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

; 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.umax.i64(i64, i64) #3

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 = { 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 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !12}
!15 = distinct !{!15, !12}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass,TailCallElimPass