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

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

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

51:                                               ; preds = %10
  %52 = load ptr, ptr %21, align 8, !tbaa !5
  store i64 -1, ptr %52, align 8, !tbaa !9
  br label %76

53:                                               ; preds = %10
  %54 = load ptr, ptr %13, align 8, !tbaa !5
  %55 = load i64, ptr %54, align 8, !tbaa !9
  %56 = icmp slt i64 %55, 0
  br i1 %56, label %57, label %59

57:                                               ; preds = %53
  %58 = load ptr, ptr %21, align 8, !tbaa !5
  store i64 -2, ptr %58, align 8, !tbaa !9
  br label %75

59:                                               ; preds = %53
  %60 = load ptr, ptr %15, align 8, !tbaa !5
  %61 = load i64, ptr %60, align 8, !tbaa !9
  %62 = load ptr, ptr %12, align 8, !tbaa !5
  %63 = load i64, ptr %62, align 8, !tbaa !9
  %64 = icmp sge i64 1, %63
  br i1 %64, label %65, label %66

65:                                               ; preds = %59
  br label %69

66:                                               ; preds = %59
  %67 = load ptr, ptr %12, align 8, !tbaa !5
  %68 = load i64, ptr %67, align 8, !tbaa !9
  br label %69

69:                                               ; preds = %66, %65
  %70 = phi i64 [ 1, %65 ], [ %68, %66 ]
  %71 = icmp slt i64 %61, %70
  br i1 %71, label %72, label %74

72:                                               ; preds = %69
  %73 = load ptr, ptr %21, align 8, !tbaa !5
  store i64 -4, ptr %73, align 8, !tbaa !9
  br label %74

74:                                               ; preds = %72, %69
  br label %75

75:                                               ; preds = %74, %57
  br label %76

76:                                               ; preds = %75, %51
  %77 = load ptr, ptr %21, align 8, !tbaa !5
  %78 = load i64, ptr %77, align 8, !tbaa !9
  %79 = icmp slt i64 %78, 0
  br i1 %79, label %80, label %85

80:                                               ; preds = %76
  %81 = load ptr, ptr %21, align 8, !tbaa !5
  %82 = load i64, ptr %81, align 8, !tbaa !9
  %83 = sub nsw i64 0, %82
  store i64 %83, ptr %24, align 8, !tbaa !9
  %84 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %24)
  store i32 0, ptr %11, align 4
  store i32 1, ptr %28, align 4
  br label %540

85:                                               ; preds = %76
  %86 = load ptr, ptr %12, align 8, !tbaa !5
  %87 = load i64, ptr %86, align 8, !tbaa !9
  %88 = load ptr, ptr %13, align 8, !tbaa !5
  %89 = load i64, ptr %88, align 8, !tbaa !9
  %90 = icmp sge i64 %87, %89
  br i1 %90, label %91, label %315

91:                                               ; preds = %85
  %92 = load ptr, ptr %13, align 8, !tbaa !5
  %93 = load i64, ptr %92, align 8, !tbaa !9
  store i64 %93, ptr %24, align 8, !tbaa !9
  store i64 1, ptr %27, align 8, !tbaa !9
  br label %94

94:                                               ; preds = %311, %91
  %95 = load i64, ptr %27, align 8, !tbaa !9
  %96 = load i64, ptr %24, align 8, !tbaa !9
  %97 = icmp sle i64 %95, %96
  br i1 %97, label %98, label %314

98:                                               ; preds = %94
  %99 = load ptr, ptr %12, align 8, !tbaa !5
  %100 = load i64, ptr %99, align 8, !tbaa !9
  %101 = load i64, ptr %27, align 8, !tbaa !9
  %102 = sub nsw i64 %100, %101
  %103 = add nsw i64 %102, 1
  store i64 %103, ptr %25, align 8, !tbaa !9
  %104 = load i64, ptr %27, align 8, !tbaa !9
  %105 = add nsw i64 %104, 1
  store i64 %105, ptr %26, align 8, !tbaa !9
  %106 = load ptr, ptr %14, align 8, !tbaa !5
  %107 = load i64, ptr %27, align 8, !tbaa !9
  %108 = load i64, ptr %27, align 8, !tbaa !9
  %109 = load i64, ptr %22, align 8, !tbaa !9
  %110 = mul nsw i64 %108, %109
  %111 = add nsw i64 %107, %110
  %112 = getelementptr inbounds double, ptr %106, i64 %111
  %113 = load ptr, ptr %14, align 8, !tbaa !5
  %114 = load i64, ptr %26, align 8, !tbaa !9
  %115 = load ptr, ptr %12, align 8, !tbaa !5
  %116 = load i64, ptr %115, align 8, !tbaa !9
  %117 = icmp sle i64 %114, %116
  br i1 %117, label %118, label %120

118:                                              ; preds = %98
  %119 = load i64, ptr %26, align 8, !tbaa !9
  br label %123

120:                                              ; preds = %98
  %121 = load ptr, ptr %12, align 8, !tbaa !5
  %122 = load i64, ptr %121, align 8, !tbaa !9
  br label %123

123:                                              ; preds = %120, %118
  %124 = phi i64 [ %119, %118 ], [ %122, %120 ]
  %125 = load i64, ptr %27, align 8, !tbaa !9
  %126 = load i64, ptr %22, align 8, !tbaa !9
  %127 = mul nsw i64 %125, %126
  %128 = add nsw i64 %124, %127
  %129 = getelementptr inbounds double, ptr %113, i64 %128
  %130 = load ptr, ptr %18, align 8, !tbaa !5
  %131 = load i64, ptr %27, align 8, !tbaa !9
  %132 = getelementptr inbounds double, ptr %130, i64 %131
  %133 = call i32 @dlarfg_(ptr noundef %25, ptr noundef %112, ptr noundef %129, ptr noundef @c__1, ptr noundef %132)
  %134 = load ptr, ptr %14, align 8, !tbaa !5
  %135 = load i64, ptr %27, align 8, !tbaa !9
  %136 = load i64, ptr %27, align 8, !tbaa !9
  %137 = load i64, ptr %22, align 8, !tbaa !9
  %138 = mul nsw i64 %136, %137
  %139 = add nsw i64 %135, %138
  %140 = getelementptr inbounds double, ptr %134, i64 %139
  %141 = load double, ptr %140, align 8, !tbaa !11
  %142 = load ptr, ptr %16, align 8, !tbaa !5
  %143 = load i64, ptr %27, align 8, !tbaa !9
  %144 = getelementptr inbounds double, ptr %142, i64 %143
  store double %141, ptr %144, align 8, !tbaa !11
  %145 = load ptr, ptr %14, align 8, !tbaa !5
  %146 = load i64, ptr %27, align 8, !tbaa !9
  %147 = load i64, ptr %27, align 8, !tbaa !9
  %148 = load i64, ptr %22, align 8, !tbaa !9
  %149 = mul nsw i64 %147, %148
  %150 = add nsw i64 %146, %149
  %151 = getelementptr inbounds double, ptr %145, i64 %150
  store double 1.000000e+00, ptr %151, align 8, !tbaa !11
  %152 = load i64, ptr %27, align 8, !tbaa !9
  %153 = load ptr, ptr %13, align 8, !tbaa !5
  %154 = load i64, ptr %153, align 8, !tbaa !9
  %155 = icmp slt i64 %152, %154
  br i1 %155, label %156, label %188

156:                                              ; preds = %123
  %157 = load ptr, ptr %12, align 8, !tbaa !5
  %158 = load i64, ptr %157, align 8, !tbaa !9
  %159 = load i64, ptr %27, align 8, !tbaa !9
  %160 = sub nsw i64 %158, %159
  %161 = add nsw i64 %160, 1
  store i64 %161, ptr %25, align 8, !tbaa !9
  %162 = load ptr, ptr %13, align 8, !tbaa !5
  %163 = load i64, ptr %162, align 8, !tbaa !9
  %164 = load i64, ptr %27, align 8, !tbaa !9
  %165 = sub nsw i64 %163, %164
  store i64 %165, ptr %26, align 8, !tbaa !9
  %166 = load ptr, ptr %14, align 8, !tbaa !5
  %167 = load i64, ptr %27, align 8, !tbaa !9
  %168 = load i64, ptr %27, align 8, !tbaa !9
  %169 = load i64, ptr %22, align 8, !tbaa !9
  %170 = mul nsw i64 %168, %169
  %171 = add nsw i64 %167, %170
  %172 = getelementptr inbounds double, ptr %166, i64 %171
  %173 = load ptr, ptr %18, align 8, !tbaa !5
  %174 = load i64, ptr %27, align 8, !tbaa !9
  %175 = getelementptr inbounds double, ptr %173, i64 %174
  %176 = load ptr, ptr %14, align 8, !tbaa !5
  %177 = load i64, ptr %27, align 8, !tbaa !9
  %178 = load i64, ptr %27, align 8, !tbaa !9
  %179 = add nsw i64 %178, 1
  %180 = load i64, ptr %22, align 8, !tbaa !9
  %181 = mul nsw i64 %179, %180
  %182 = add nsw i64 %177, %181
  %183 = getelementptr inbounds double, ptr %176, i64 %182
  %184 = load ptr, ptr %15, align 8, !tbaa !5
  %185 = load ptr, ptr %20, align 8, !tbaa !5
  %186 = getelementptr inbounds double, ptr %185, i64 1
  %187 = call i32 @dlarf_(ptr noundef @.str.1, ptr noundef %25, ptr noundef %26, ptr noundef %172, ptr noundef @c__1, ptr noundef %175, ptr noundef %183, ptr noundef %184, ptr noundef %186)
  br label %188

188:                                              ; preds = %156, %123
  %189 = load ptr, ptr %16, align 8, !tbaa !5
  %190 = load i64, ptr %27, align 8, !tbaa !9
  %191 = getelementptr inbounds double, ptr %189, i64 %190
  %192 = load double, ptr %191, align 8, !tbaa !11
  %193 = load ptr, ptr %14, align 8, !tbaa !5
  %194 = load i64, ptr %27, align 8, !tbaa !9
  %195 = load i64, ptr %27, align 8, !tbaa !9
  %196 = load i64, ptr %22, align 8, !tbaa !9
  %197 = mul nsw i64 %195, %196
  %198 = add nsw i64 %194, %197
  %199 = getelementptr inbounds double, ptr %193, i64 %198
  store double %192, ptr %199, align 8, !tbaa !11
  %200 = load i64, ptr %27, align 8, !tbaa !9
  %201 = load ptr, ptr %13, align 8, !tbaa !5
  %202 = load i64, ptr %201, align 8, !tbaa !9
  %203 = icmp slt i64 %200, %202
  br i1 %203, label %204, label %306

204:                                              ; preds = %188
  %205 = load ptr, ptr %13, align 8, !tbaa !5
  %206 = load i64, ptr %205, align 8, !tbaa !9
  %207 = load i64, ptr %27, align 8, !tbaa !9
  %208 = sub nsw i64 %206, %207
  store i64 %208, ptr %25, align 8, !tbaa !9
  %209 = load i64, ptr %27, align 8, !tbaa !9
  %210 = add nsw i64 %209, 2
  store i64 %210, ptr %26, align 8, !tbaa !9
  %211 = load ptr, ptr %14, align 8, !tbaa !5
  %212 = load i64, ptr %27, align 8, !tbaa !9
  %213 = load i64, ptr %27, align 8, !tbaa !9
  %214 = add nsw i64 %213, 1
  %215 = load i64, ptr %22, align 8, !tbaa !9
  %216 = mul nsw i64 %214, %215
  %217 = add nsw i64 %212, %216
  %218 = getelementptr inbounds double, ptr %211, i64 %217
  %219 = load ptr, ptr %14, align 8, !tbaa !5
  %220 = load i64, ptr %27, align 8, !tbaa !9
  %221 = load i64, ptr %26, align 8, !tbaa !9
  %222 = load ptr, ptr %13, align 8, !tbaa !5
  %223 = load i64, ptr %222, align 8, !tbaa !9
  %224 = icmp sle i64 %221, %223
  br i1 %224, label %225, label %227

225:                                              ; preds = %204
  %226 = load i64, ptr %26, align 8, !tbaa !9
  br label %230

227:                                              ; preds = %204
  %228 = load ptr, ptr %13, align 8, !tbaa !5
  %229 = load i64, ptr %228, align 8, !tbaa !9
  br label %230

230:                                              ; preds = %227, %225
  %231 = phi i64 [ %226, %225 ], [ %229, %227 ]
  %232 = load i64, ptr %22, align 8, !tbaa !9
  %233 = mul nsw i64 %231, %232
  %234 = add nsw i64 %220, %233
  %235 = getelementptr inbounds double, ptr %219, i64 %234
  %236 = load ptr, ptr %15, align 8, !tbaa !5
  %237 = load ptr, ptr %19, align 8, !tbaa !5
  %238 = load i64, ptr %27, align 8, !tbaa !9
  %239 = getelementptr inbounds double, ptr %237, i64 %238
  %240 = call i32 @dlarfg_(ptr noundef %25, ptr noundef %218, ptr noundef %235, ptr noundef %236, ptr noundef %239)
  %241 = load ptr, ptr %14, align 8, !tbaa !5
  %242 = load i64, ptr %27, align 8, !tbaa !9
  %243 = load i64, ptr %27, align 8, !tbaa !9
  %244 = add nsw i64 %243, 1
  %245 = load i64, ptr %22, align 8, !tbaa !9
  %246 = mul nsw i64 %244, %245
  %247 = add nsw i64 %242, %246
  %248 = getelementptr inbounds double, ptr %241, i64 %247
  %249 = load double, ptr %248, align 8, !tbaa !11
  %250 = load ptr, ptr %17, align 8, !tbaa !5
  %251 = load i64, ptr %27, align 8, !tbaa !9
  %252 = getelementptr inbounds double, ptr %250, i64 %251
  store double %249, ptr %252, align 8, !tbaa !11
  %253 = load ptr, ptr %14, align 8, !tbaa !5
  %254 = load i64, ptr %27, align 8, !tbaa !9
  %255 = load i64, ptr %27, align 8, !tbaa !9
  %256 = add nsw i64 %255, 1
  %257 = load i64, ptr %22, align 8, !tbaa !9
  %258 = mul nsw i64 %256, %257
  %259 = add nsw i64 %254, %258
  %260 = getelementptr inbounds double, ptr %253, i64 %259
  store double 1.000000e+00, ptr %260, align 8, !tbaa !11
  %261 = load ptr, ptr %12, align 8, !tbaa !5
  %262 = load i64, ptr %261, align 8, !tbaa !9
  %263 = load i64, ptr %27, align 8, !tbaa !9
  %264 = sub nsw i64 %262, %263
  store i64 %264, ptr %25, align 8, !tbaa !9
  %265 = load ptr, ptr %13, align 8, !tbaa !5
  %266 = load i64, ptr %265, align 8, !tbaa !9
  %267 = load i64, ptr %27, align 8, !tbaa !9
  %268 = sub nsw i64 %266, %267
  store i64 %268, ptr %26, align 8, !tbaa !9
  %269 = load ptr, ptr %14, align 8, !tbaa !5
  %270 = load i64, ptr %27, align 8, !tbaa !9
  %271 = load i64, ptr %27, align 8, !tbaa !9
  %272 = add nsw i64 %271, 1
  %273 = load i64, ptr %22, align 8, !tbaa !9
  %274 = mul nsw i64 %272, %273
  %275 = add nsw i64 %270, %274
  %276 = getelementptr inbounds double, ptr %269, i64 %275
  %277 = load ptr, ptr %15, align 8, !tbaa !5
  %278 = load ptr, ptr %19, align 8, !tbaa !5
  %279 = load i64, ptr %27, align 8, !tbaa !9
  %280 = getelementptr inbounds double, ptr %278, i64 %279
  %281 = load ptr, ptr %14, align 8, !tbaa !5
  %282 = load i64, ptr %27, align 8, !tbaa !9
  %283 = add nsw i64 %282, 1
  %284 = load i64, ptr %27, align 8, !tbaa !9
  %285 = add nsw i64 %284, 1
  %286 = load i64, ptr %22, align 8, !tbaa !9
  %287 = mul nsw i64 %285, %286
  %288 = add nsw i64 %283, %287
  %289 = getelementptr inbounds double, ptr %281, i64 %288
  %290 = load ptr, ptr %15, align 8, !tbaa !5
  %291 = load ptr, ptr %20, align 8, !tbaa !5
  %292 = getelementptr inbounds double, ptr %291, i64 1
  %293 = call i32 @dlarf_(ptr noundef @.str.2, ptr noundef %25, ptr noundef %26, ptr noundef %276, ptr noundef %277, ptr noundef %280, ptr noundef %289, ptr noundef %290, ptr noundef %292)
  %294 = load ptr, ptr %17, align 8, !tbaa !5
  %295 = load i64, ptr %27, align 8, !tbaa !9
  %296 = getelementptr inbounds double, ptr %294, i64 %295
  %297 = load double, ptr %296, align 8, !tbaa !11
  %298 = load ptr, ptr %14, align 8, !tbaa !5
  %299 = load i64, ptr %27, align 8, !tbaa !9
  %300 = load i64, ptr %27, align 8, !tbaa !9
  %301 = add nsw i64 %300, 1
  %302 = load i64, ptr %22, align 8, !tbaa !9
  %303 = mul nsw i64 %301, %302
  %304 = add nsw i64 %299, %303
  %305 = getelementptr inbounds double, ptr %298, i64 %304
  store double %297, ptr %305, align 8, !tbaa !11
  br label %310

306:                                              ; preds = %188
  %307 = load ptr, ptr %19, align 8, !tbaa !5
  %308 = load i64, ptr %27, align 8, !tbaa !9
  %309 = getelementptr inbounds double, ptr %307, i64 %308
  store double 0.000000e+00, ptr %309, align 8, !tbaa !11
  br label %310

310:                                              ; preds = %306, %230
  br label %311

311:                                              ; preds = %310
  %312 = load i64, ptr %27, align 8, !tbaa !9
  %313 = add nsw i64 %312, 1
  store i64 %313, ptr %27, align 8, !tbaa !9
  br label %94, !llvm.loop !13

314:                                              ; preds = %94
  br label %539

315:                                              ; preds = %85
  %316 = load ptr, ptr %12, align 8, !tbaa !5
  %317 = load i64, ptr %316, align 8, !tbaa !9
  store i64 %317, ptr %24, align 8, !tbaa !9
  store i64 1, ptr %27, align 8, !tbaa !9
  br label %318

318:                                              ; preds = %535, %315
  %319 = load i64, ptr %27, align 8, !tbaa !9
  %320 = load i64, ptr %24, align 8, !tbaa !9
  %321 = icmp sle i64 %319, %320
  br i1 %321, label %322, label %538

322:                                              ; preds = %318
  %323 = load ptr, ptr %13, align 8, !tbaa !5
  %324 = load i64, ptr %323, align 8, !tbaa !9
  %325 = load i64, ptr %27, align 8, !tbaa !9
  %326 = sub nsw i64 %324, %325
  %327 = add nsw i64 %326, 1
  store i64 %327, ptr %25, align 8, !tbaa !9
  %328 = load i64, ptr %27, align 8, !tbaa !9
  %329 = add nsw i64 %328, 1
  store i64 %329, ptr %26, align 8, !tbaa !9
  %330 = load ptr, ptr %14, align 8, !tbaa !5
  %331 = load i64, ptr %27, align 8, !tbaa !9
  %332 = load i64, ptr %27, align 8, !tbaa !9
  %333 = load i64, ptr %22, align 8, !tbaa !9
  %334 = mul nsw i64 %332, %333
  %335 = add nsw i64 %331, %334
  %336 = getelementptr inbounds double, ptr %330, i64 %335
  %337 = load ptr, ptr %14, align 8, !tbaa !5
  %338 = load i64, ptr %27, align 8, !tbaa !9
  %339 = load i64, ptr %26, align 8, !tbaa !9
  %340 = load ptr, ptr %13, align 8, !tbaa !5
  %341 = load i64, ptr %340, align 8, !tbaa !9
  %342 = icmp sle i64 %339, %341
  br i1 %342, label %343, label %345

343:                                              ; preds = %322
  %344 = load i64, ptr %26, align 8, !tbaa !9
  br label %348

345:                                              ; preds = %322
  %346 = load ptr, ptr %13, align 8, !tbaa !5
  %347 = load i64, ptr %346, align 8, !tbaa !9
  br label %348

348:                                              ; preds = %345, %343
  %349 = phi i64 [ %344, %343 ], [ %347, %345 ]
  %350 = load i64, ptr %22, align 8, !tbaa !9
  %351 = mul nsw i64 %349, %350
  %352 = add nsw i64 %338, %351
  %353 = getelementptr inbounds double, ptr %337, i64 %352
  %354 = load ptr, ptr %15, align 8, !tbaa !5
  %355 = load ptr, ptr %19, align 8, !tbaa !5
  %356 = load i64, ptr %27, align 8, !tbaa !9
  %357 = getelementptr inbounds double, ptr %355, i64 %356
  %358 = call i32 @dlarfg_(ptr noundef %25, ptr noundef %336, ptr noundef %353, ptr noundef %354, ptr noundef %357)
  %359 = load ptr, ptr %14, align 8, !tbaa !5
  %360 = load i64, ptr %27, align 8, !tbaa !9
  %361 = load i64, ptr %27, align 8, !tbaa !9
  %362 = load i64, ptr %22, align 8, !tbaa !9
  %363 = mul nsw i64 %361, %362
  %364 = add nsw i64 %360, %363
  %365 = getelementptr inbounds double, ptr %359, i64 %364
  %366 = load double, ptr %365, align 8, !tbaa !11
  %367 = load ptr, ptr %16, align 8, !tbaa !5
  %368 = load i64, ptr %27, align 8, !tbaa !9
  %369 = getelementptr inbounds double, ptr %367, i64 %368
  store double %366, ptr %369, align 8, !tbaa !11
  %370 = load ptr, ptr %14, align 8, !tbaa !5
  %371 = load i64, ptr %27, align 8, !tbaa !9
  %372 = load i64, ptr %27, align 8, !tbaa !9
  %373 = load i64, ptr %22, align 8, !tbaa !9
  %374 = mul nsw i64 %372, %373
  %375 = add nsw i64 %371, %374
  %376 = getelementptr inbounds double, ptr %370, i64 %375
  store double 1.000000e+00, ptr %376, align 8, !tbaa !11
  %377 = load i64, ptr %27, align 8, !tbaa !9
  %378 = load ptr, ptr %12, align 8, !tbaa !5
  %379 = load i64, ptr %378, align 8, !tbaa !9
  %380 = icmp slt i64 %377, %379
  br i1 %380, label %381, label %414

381:                                              ; preds = %348
  %382 = load ptr, ptr %12, align 8, !tbaa !5
  %383 = load i64, ptr %382, align 8, !tbaa !9
  %384 = load i64, ptr %27, align 8, !tbaa !9
  %385 = sub nsw i64 %383, %384
  store i64 %385, ptr %25, align 8, !tbaa !9
  %386 = load ptr, ptr %13, align 8, !tbaa !5
  %387 = load i64, ptr %386, align 8, !tbaa !9
  %388 = load i64, ptr %27, align 8, !tbaa !9
  %389 = sub nsw i64 %387, %388
  %390 = add nsw i64 %389, 1
  store i64 %390, ptr %26, align 8, !tbaa !9
  %391 = load ptr, ptr %14, align 8, !tbaa !5
  %392 = load i64, ptr %27, align 8, !tbaa !9
  %393 = load i64, ptr %27, align 8, !tbaa !9
  %394 = load i64, ptr %22, align 8, !tbaa !9
  %395 = mul nsw i64 %393, %394
  %396 = add nsw i64 %392, %395
  %397 = getelementptr inbounds double, ptr %391, i64 %396
  %398 = load ptr, ptr %15, align 8, !tbaa !5
  %399 = load ptr, ptr %19, align 8, !tbaa !5
  %400 = load i64, ptr %27, align 8, !tbaa !9
  %401 = getelementptr inbounds double, ptr %399, i64 %400
  %402 = load ptr, ptr %14, align 8, !tbaa !5
  %403 = load i64, ptr %27, align 8, !tbaa !9
  %404 = add nsw i64 %403, 1
  %405 = load i64, ptr %27, align 8, !tbaa !9
  %406 = load i64, ptr %22, align 8, !tbaa !9
  %407 = mul nsw i64 %405, %406
  %408 = add nsw i64 %404, %407
  %409 = getelementptr inbounds double, ptr %402, i64 %408
  %410 = load ptr, ptr %15, align 8, !tbaa !5
  %411 = load ptr, ptr %20, align 8, !tbaa !5
  %412 = getelementptr inbounds double, ptr %411, i64 1
  %413 = call i32 @dlarf_(ptr noundef @.str.2, ptr noundef %25, ptr noundef %26, ptr noundef %397, ptr noundef %398, ptr noundef %401, ptr noundef %409, ptr noundef %410, ptr noundef %412)
  br label %414

414:                                              ; preds = %381, %348
  %415 = load ptr, ptr %16, align 8, !tbaa !5
  %416 = load i64, ptr %27, align 8, !tbaa !9
  %417 = getelementptr inbounds double, ptr %415, i64 %416
  %418 = load double, ptr %417, align 8, !tbaa !11
  %419 = load ptr, ptr %14, align 8, !tbaa !5
  %420 = load i64, ptr %27, align 8, !tbaa !9
  %421 = load i64, ptr %27, align 8, !tbaa !9
  %422 = load i64, ptr %22, align 8, !tbaa !9
  %423 = mul nsw i64 %421, %422
  %424 = add nsw i64 %420, %423
  %425 = getelementptr inbounds double, ptr %419, i64 %424
  store double %418, ptr %425, align 8, !tbaa !11
  %426 = load i64, ptr %27, align 8, !tbaa !9
  %427 = load ptr, ptr %12, align 8, !tbaa !5
  %428 = load i64, ptr %427, align 8, !tbaa !9
  %429 = icmp slt i64 %426, %428
  br i1 %429, label %430, label %530

430:                                              ; preds = %414
  %431 = load ptr, ptr %12, align 8, !tbaa !5
  %432 = load i64, ptr %431, align 8, !tbaa !9
  %433 = load i64, ptr %27, align 8, !tbaa !9
  %434 = sub nsw i64 %432, %433
  store i64 %434, ptr %25, align 8, !tbaa !9
  %435 = load i64, ptr %27, align 8, !tbaa !9
  %436 = add nsw i64 %435, 2
  store i64 %436, ptr %26, align 8, !tbaa !9
  %437 = load ptr, ptr %14, align 8, !tbaa !5
  %438 = load i64, ptr %27, align 8, !tbaa !9
  %439 = add nsw i64 %438, 1
  %440 = load i64, ptr %27, align 8, !tbaa !9
  %441 = load i64, ptr %22, align 8, !tbaa !9
  %442 = mul nsw i64 %440, %441
  %443 = add nsw i64 %439, %442
  %444 = getelementptr inbounds double, ptr %437, i64 %443
  %445 = load ptr, ptr %14, align 8, !tbaa !5
  %446 = load i64, ptr %26, align 8, !tbaa !9
  %447 = load ptr, ptr %12, align 8, !tbaa !5
  %448 = load i64, ptr %447, align 8, !tbaa !9
  %449 = icmp sle i64 %446, %448
  br i1 %449, label %450, label %452

450:                                              ; preds = %430
  %451 = load i64, ptr %26, align 8, !tbaa !9
  br label %455

452:                                              ; preds = %430
  %453 = load ptr, ptr %12, align 8, !tbaa !5
  %454 = load i64, ptr %453, align 8, !tbaa !9
  br label %455

455:                                              ; preds = %452, %450
  %456 = phi i64 [ %451, %450 ], [ %454, %452 ]
  %457 = load i64, ptr %27, align 8, !tbaa !9
  %458 = load i64, ptr %22, align 8, !tbaa !9
  %459 = mul nsw i64 %457, %458
  %460 = add nsw i64 %456, %459
  %461 = getelementptr inbounds double, ptr %445, i64 %460
  %462 = load ptr, ptr %18, align 8, !tbaa !5
  %463 = load i64, ptr %27, align 8, !tbaa !9
  %464 = getelementptr inbounds double, ptr %462, i64 %463
  %465 = call i32 @dlarfg_(ptr noundef %25, ptr noundef %444, ptr noundef %461, ptr noundef @c__1, ptr noundef %464)
  %466 = load ptr, ptr %14, align 8, !tbaa !5
  %467 = load i64, ptr %27, align 8, !tbaa !9
  %468 = add nsw i64 %467, 1
  %469 = load i64, ptr %27, align 8, !tbaa !9
  %470 = load i64, ptr %22, align 8, !tbaa !9
  %471 = mul nsw i64 %469, %470
  %472 = add nsw i64 %468, %471
  %473 = getelementptr inbounds double, ptr %466, i64 %472
  %474 = load double, ptr %473, align 8, !tbaa !11
  %475 = load ptr, ptr %17, align 8, !tbaa !5
  %476 = load i64, ptr %27, align 8, !tbaa !9
  %477 = getelementptr inbounds double, ptr %475, i64 %476
  store double %474, ptr %477, align 8, !tbaa !11
  %478 = load ptr, ptr %14, align 8, !tbaa !5
  %479 = load i64, ptr %27, align 8, !tbaa !9
  %480 = add nsw i64 %479, 1
  %481 = load i64, ptr %27, align 8, !tbaa !9
  %482 = load i64, ptr %22, align 8, !tbaa !9
  %483 = mul nsw i64 %481, %482
  %484 = add nsw i64 %480, %483
  %485 = getelementptr inbounds double, ptr %478, i64 %484
  store double 1.000000e+00, ptr %485, align 8, !tbaa !11
  %486 = load ptr, ptr %12, align 8, !tbaa !5
  %487 = load i64, ptr %486, align 8, !tbaa !9
  %488 = load i64, ptr %27, align 8, !tbaa !9
  %489 = sub nsw i64 %487, %488
  store i64 %489, ptr %25, align 8, !tbaa !9
  %490 = load ptr, ptr %13, align 8, !tbaa !5
  %491 = load i64, ptr %490, align 8, !tbaa !9
  %492 = load i64, ptr %27, align 8, !tbaa !9
  %493 = sub nsw i64 %491, %492
  store i64 %493, ptr %26, align 8, !tbaa !9
  %494 = load ptr, ptr %14, align 8, !tbaa !5
  %495 = load i64, ptr %27, align 8, !tbaa !9
  %496 = add nsw i64 %495, 1
  %497 = load i64, ptr %27, align 8, !tbaa !9
  %498 = load i64, ptr %22, align 8, !tbaa !9
  %499 = mul nsw i64 %497, %498
  %500 = add nsw i64 %496, %499
  %501 = getelementptr inbounds double, ptr %494, i64 %500
  %502 = load ptr, ptr %18, align 8, !tbaa !5
  %503 = load i64, ptr %27, align 8, !tbaa !9
  %504 = getelementptr inbounds double, ptr %502, i64 %503
  %505 = load ptr, ptr %14, align 8, !tbaa !5
  %506 = load i64, ptr %27, align 8, !tbaa !9
  %507 = add nsw i64 %506, 1
  %508 = load i64, ptr %27, align 8, !tbaa !9
  %509 = add nsw i64 %508, 1
  %510 = load i64, ptr %22, align 8, !tbaa !9
  %511 = mul nsw i64 %509, %510
  %512 = add nsw i64 %507, %511
  %513 = getelementptr inbounds double, ptr %505, i64 %512
  %514 = load ptr, ptr %15, align 8, !tbaa !5
  %515 = load ptr, ptr %20, align 8, !tbaa !5
  %516 = getelementptr inbounds double, ptr %515, i64 1
  %517 = call i32 @dlarf_(ptr noundef @.str.1, ptr noundef %25, ptr noundef %26, ptr noundef %501, ptr noundef @c__1, ptr noundef %504, ptr noundef %513, ptr noundef %514, ptr noundef %516)
  %518 = load ptr, ptr %17, align 8, !tbaa !5
  %519 = load i64, ptr %27, align 8, !tbaa !9
  %520 = getelementptr inbounds double, ptr %518, i64 %519
  %521 = load double, ptr %520, align 8, !tbaa !11
  %522 = load ptr, ptr %14, align 8, !tbaa !5
  %523 = load i64, ptr %27, align 8, !tbaa !9
  %524 = add nsw i64 %523, 1
  %525 = load i64, ptr %27, align 8, !tbaa !9
  %526 = load i64, ptr %22, align 8, !tbaa !9
  %527 = mul nsw i64 %525, %526
  %528 = add nsw i64 %524, %527
  %529 = getelementptr inbounds double, ptr %522, i64 %528
  store double %521, ptr %529, align 8, !tbaa !11
  br label %534

530:                                              ; preds = %414
  %531 = load ptr, ptr %18, align 8, !tbaa !5
  %532 = load i64, ptr %27, align 8, !tbaa !9
  %533 = getelementptr inbounds double, ptr %531, i64 %532
  store double 0.000000e+00, ptr %533, align 8, !tbaa !11
  br label %534

534:                                              ; preds = %530, %455
  br label %535

535:                                              ; preds = %534
  %536 = load i64, ptr %27, align 8, !tbaa !9
  %537 = add nsw i64 %536, 1
  store i64 %537, ptr %27, align 8, !tbaa !9
  br label %318, !llvm.loop !15

538:                                              ; preds = %318
  br label %539

539:                                              ; preds = %538, %314
  store i32 0, ptr %11, align 4
  store i32 1, ptr %28, align 4
  br label %540

540:                                              ; preds = %539, %80
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #3
  %541 = load i32, ptr %11, align 4
  ret i32 %541
}

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

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

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

declare i32 @dlarf_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, 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}


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

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @dgebd2_(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1, ptr noundef %2, ptr noundef %3, ptr nocapture noundef %4, ptr nocapture noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr nocapture noundef writeonly %9) local_unnamed_addr #0 {
  %11 = alloca i64, align 8
  %12 = alloca i64, align 8
  %13 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #4
  %14 = load i64, ptr %3, align 8, !tbaa !5
  %15 = xor i64 %14, -1
  %16 = getelementptr inbounds double, ptr %2, i64 %15
  %17 = getelementptr inbounds i8, ptr %4, i64 -8
  %18 = getelementptr inbounds i8, ptr %5, i64 -8
  %19 = getelementptr inbounds i8, ptr %6, i64 -8
  %20 = getelementptr inbounds i8, ptr %7, i64 -8
  store i64 0, ptr %9, align 8, !tbaa !5
  %21 = load i64, ptr %0, align 8, !tbaa !5
  %22 = icmp slt i64 %21, 0
  br i1 %22, label %.thread, label %23

23:                                               ; preds = %10
  %24 = load i64, ptr %1, align 8, !tbaa !5
  %25 = icmp slt i64 %24, 0
  br i1 %25, label %.thread, label %26

26:                                               ; preds = %23
  %27 = load i64, ptr %3, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %21, i64 1)
  %28 = icmp slt i64 %27, %spec.select
  br i1 %28, label %.thread, label %30

.thread:                                          ; preds = %26, %23, %10
  %.sink = phi i64 [ -1, %10 ], [ -2, %23 ], [ -4, %26 ]
  %.neg = phi i64 [ 1, %10 ], [ 2, %23 ], [ 4, %26 ]
  store i64 %.sink, ptr %9, align 8, !tbaa !5
  store i64 %.neg, ptr %11, align 8, !tbaa !5
  %29 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %11) #4
  br label %.loopexit

30:                                               ; preds = %26
  %.not = icmp ult i64 %21, %24
  br i1 %.not, label %80, label %31

31:                                               ; preds = %30
  %.not247254 = icmp eq i64 %24, 0
  br i1 %.not247254, label %.loopexit, label %.lr.ph

.lr.ph:                                           ; preds = %31, %79
  %.0.neg256 = phi i64 [ %.0.neg, %79 ], [ -1, %31 ]
  %.0255 = phi i64 [ %35, %79 ], [ 1, %31 ]
  %32 = load i64, ptr %0, align 8, !tbaa !5
  %33 = add nsw i64 %.0.neg256, 1
  %34 = add i64 %33, %32
  store i64 %34, ptr %12, align 8, !tbaa !5
  %35 = add nuw nsw i64 %.0255, 1
  store i64 %35, ptr %13, align 8, !tbaa !5
  %36 = mul nsw i64 %.0255, %14
  %37 = getelementptr double, ptr %16, i64 %.0255
  %38 = getelementptr double, ptr %37, i64 %36
  %.not248.not = icmp slt i64 %.0255, %32
  %. = select i1 %.not248.not, i64 %35, i64 %32
  %39 = getelementptr double, ptr %16, i64 %.
  %40 = getelementptr double, ptr %39, i64 %36
  %41 = getelementptr inbounds double, ptr %19, i64 %.0255
  %42 = call i32 @dlarfg_(ptr noundef nonnull %12, ptr noundef %38, ptr noundef %40, ptr noundef nonnull @c__1, ptr noundef nonnull %41) #4
  %43 = load double, ptr %38, align 8, !tbaa !9
  %44 = getelementptr inbounds double, ptr %17, i64 %.0255
  store double %43, ptr %44, align 8, !tbaa !9
  store double 1.000000e+00, ptr %38, align 8, !tbaa !9
  %45 = load i64, ptr %1, align 8, !tbaa !5
  %46 = icmp slt i64 %.0255, %45
  br i1 %46, label %47, label %54

47:                                               ; preds = %.lr.ph
  %48 = load i64, ptr %0, align 8, !tbaa !5
  %49 = add i64 %33, %48
  store i64 %49, ptr %12, align 8, !tbaa !5
  %50 = sub nsw i64 %45, %.0255
  store i64 %50, ptr %13, align 8, !tbaa !5
  %51 = mul nsw i64 %35, %14
  %52 = getelementptr double, ptr %37, i64 %51
  %53 = call i32 @dlarf_(ptr noundef nonnull @.str.1, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %38, ptr noundef nonnull @c__1, ptr noundef nonnull %41, ptr noundef %52, ptr noundef nonnull %3, ptr noundef %8) #4
  %.pre = load i64, ptr %1, align 8, !tbaa !5
  br label %54

54:                                               ; preds = %47, %.lr.ph
  %55 = phi i64 [ %.pre, %47 ], [ %45, %.lr.ph ]
  %56 = load double, ptr %44, align 8, !tbaa !9
  store double %56, ptr %38, align 8, !tbaa !9
  %57 = icmp slt i64 %.0255, %55
  br i1 %57, label %58, label %77

58:                                               ; preds = %54
  %59 = sub nsw i64 %55, %.0255
  store i64 %59, ptr %12, align 8, !tbaa !5
  %60 = add nuw nsw i64 %.0255, 2
  store i64 %60, ptr %13, align 8, !tbaa !5
  %61 = mul nsw i64 %35, %14
  %62 = getelementptr double, ptr %37, i64 %61
  %.250 = call i64 @llvm.smin.i64(i64 %60, i64 %55)
  %63 = mul nsw i64 %.250, %14
  %64 = getelementptr double, ptr %37, i64 %63
  %65 = getelementptr inbounds double, ptr %20, i64 %.0255
  %66 = call i32 @dlarfg_(ptr noundef nonnull %12, ptr noundef %62, ptr noundef %64, ptr noundef nonnull %3, ptr noundef nonnull %65) #4
  %67 = load double, ptr %62, align 8, !tbaa !9
  %68 = getelementptr inbounds double, ptr %18, i64 %.0255
  store double %67, ptr %68, align 8, !tbaa !9
  store double 1.000000e+00, ptr %62, align 8, !tbaa !9
  %69 = load i64, ptr %0, align 8, !tbaa !5
  %70 = sub nsw i64 %69, %.0255
  store i64 %70, ptr %12, align 8, !tbaa !5
  %71 = load i64, ptr %1, align 8, !tbaa !5
  %72 = sub nsw i64 %71, %.0255
  store i64 %72, ptr %13, align 8, !tbaa !5
  %73 = getelementptr double, ptr %16, i64 %35
  %74 = getelementptr double, ptr %73, i64 %61
  %75 = call i32 @dlarf_(ptr noundef nonnull @.str.2, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %62, ptr noundef nonnull %3, ptr noundef nonnull %65, ptr noundef %74, ptr noundef nonnull %3, ptr noundef %8) #4
  %76 = load double, ptr %68, align 8, !tbaa !9
  store double %76, ptr %62, align 8, !tbaa !9
  br label %79

77:                                               ; preds = %54
  %78 = getelementptr inbounds double, ptr %20, i64 %.0255
  store double 0.000000e+00, ptr %78, align 8, !tbaa !9
  br label %79

79:                                               ; preds = %58, %77
  %.0.neg = xor i64 %.0255, -1
  %.not247.not = icmp slt i64 %.0255, %24
  br i1 %.not247.not, label %.lr.ph, label %.loopexit, !llvm.loop !11

80:                                               ; preds = %30
  %.not244257 = icmp eq i64 %21, 0
  br i1 %.not244257, label %.loopexit, label %.lr.ph260

.lr.ph260:                                        ; preds = %80
  %81 = add i64 %14, 1
  br label %82

82:                                               ; preds = %.lr.ph260, %130
  %.1.neg259 = phi i64 [ -1, %.lr.ph260 ], [ %.1.neg, %130 ]
  %.1258 = phi i64 [ 1, %.lr.ph260 ], [ %86, %130 ]
  %83 = load i64, ptr %1, align 8, !tbaa !5
  %84 = add nsw i64 %.1.neg259, 1
  %85 = add i64 %84, %83
  store i64 %85, ptr %12, align 8, !tbaa !5
  %86 = add nuw nsw i64 %.1258, 1
  store i64 %86, ptr %13, align 8, !tbaa !5
  %87 = mul nsw i64 %.1258, %14
  %88 = getelementptr double, ptr %16, i64 %.1258
  %89 = getelementptr double, ptr %88, i64 %87
  %.not245.not = icmp slt i64 %.1258, %83
  %.251 = select i1 %.not245.not, i64 %86, i64 %83
  %90 = mul nsw i64 %.251, %14
  %91 = getelementptr double, ptr %88, i64 %90
  %92 = getelementptr inbounds double, ptr %20, i64 %.1258
  %93 = call i32 @dlarfg_(ptr noundef nonnull %12, ptr noundef %89, ptr noundef %91, ptr noundef nonnull %3, ptr noundef nonnull %92) #4
  %94 = load double, ptr %89, align 8, !tbaa !9
  %95 = getelementptr inbounds double, ptr %17, i64 %.1258
  store double %94, ptr %95, align 8, !tbaa !9
  store double 1.000000e+00, ptr %89, align 8, !tbaa !9
  %96 = load i64, ptr %0, align 8, !tbaa !5
  %97 = icmp slt i64 %.1258, %96
  br i1 %97, label %98, label %105

98:                                               ; preds = %82
  %99 = sub nsw i64 %96, %.1258
  store i64 %99, ptr %12, align 8, !tbaa !5
  %100 = load i64, ptr %1, align 8, !tbaa !5
  %101 = add i64 %84, %100
  store i64 %101, ptr %13, align 8, !tbaa !5
  %102 = getelementptr double, ptr %16, i64 %86
  %103 = getelementptr double, ptr %102, i64 %87
  %104 = call i32 @dlarf_(ptr noundef nonnull @.str.2, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %89, ptr noundef nonnull %3, ptr noundef nonnull %92, ptr noundef %103, ptr noundef nonnull %3, ptr noundef %8) #4
  %.pre262 = load i64, ptr %0, align 8, !tbaa !5
  br label %105

105:                                              ; preds = %98, %82
  %106 = phi i64 [ %.pre262, %98 ], [ %96, %82 ]
  %107 = load double, ptr %95, align 8, !tbaa !9
  store double %107, ptr %89, align 8, !tbaa !9
  %108 = icmp slt i64 %.1258, %106
  br i1 %108, label %109, label %128

109:                                              ; preds = %105
  %110 = sub nsw i64 %106, %.1258
  store i64 %110, ptr %12, align 8, !tbaa !5
  %111 = add nuw nsw i64 %.1258, 2
  store i64 %111, ptr %13, align 8, !tbaa !5
  %112 = getelementptr double, ptr %16, i64 %86
  %113 = getelementptr double, ptr %112, i64 %87
  %.252 = call i64 @llvm.smin.i64(i64 %111, i64 %106)
  %114 = getelementptr double, ptr %16, i64 %.252
  %115 = getelementptr double, ptr %114, i64 %87
  %116 = getelementptr inbounds double, ptr %19, i64 %.1258
  %117 = call i32 @dlarfg_(ptr noundef nonnull %12, ptr noundef %113, ptr noundef %115, ptr noundef nonnull @c__1, ptr noundef nonnull %116) #4
  %118 = load double, ptr %113, align 8, !tbaa !9
  %119 = getelementptr inbounds double, ptr %18, i64 %.1258
  store double %118, ptr %119, align 8, !tbaa !9
  store double 1.000000e+00, ptr %113, align 8, !tbaa !9
  %120 = load i64, ptr %0, align 8, !tbaa !5
  %121 = sub nsw i64 %120, %.1258
  store i64 %121, ptr %12, align 8, !tbaa !5
  %122 = load i64, ptr %1, align 8, !tbaa !5
  %123 = sub nsw i64 %122, %.1258
  store i64 %123, ptr %13, align 8, !tbaa !5
  %124 = mul i64 %86, %81
  %125 = getelementptr inbounds double, ptr %16, i64 %124
  %126 = call i32 @dlarf_(ptr noundef nonnull @.str.1, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %113, ptr noundef nonnull @c__1, ptr noundef nonnull %116, ptr noundef %125, ptr noundef nonnull %3, ptr noundef %8) #4
  %127 = load double, ptr %119, align 8, !tbaa !9
  store double %127, ptr %113, align 8, !tbaa !9
  br label %130

128:                                              ; preds = %105
  %129 = getelementptr inbounds double, ptr %19, i64 %.1258
  store double 0.000000e+00, ptr %129, align 8, !tbaa !9
  br label %130

130:                                              ; preds = %109, %128
  %.1.neg = xor i64 %.1258, -1
  %.not244.not = icmp slt i64 %.1258, %21
  br i1 %.not244.not, label %82, label %.loopexit, !llvm.loop !13

.loopexit:                                        ; preds = %79, %130, %31, %80, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #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 i32 @xerbla_(ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare i32 @dlarf_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, 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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.smin.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}


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