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

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

; Function Attrs: nounwind uwtable
define dso_local i32 @dlahr2_(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 i64, align 8
  %29 = alloca i64, align 8
  %30 = alloca i64, align 8
  %31 = alloca double, align 8
  %32 = alloca i64, align 8
  %33 = alloca double, align 8
  %34 = 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
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #3
  %35 = load ptr, ptr %17, align 8, !tbaa !5
  %36 = getelementptr inbounds double, ptr %35, i32 -1
  store ptr %36, ptr %17, align 8, !tbaa !5
  %37 = load ptr, ptr %16, align 8, !tbaa !5
  %38 = load i64, ptr %37, align 8, !tbaa !9
  store i64 %38, ptr %22, align 8, !tbaa !9
  %39 = load i64, ptr %22, align 8, !tbaa !9
  %40 = add nsw i64 1, %39
  store i64 %40, ptr %23, align 8, !tbaa !9
  %41 = load i64, ptr %23, align 8, !tbaa !9
  %42 = load ptr, ptr %15, align 8, !tbaa !5
  %43 = sub i64 0, %41
  %44 = getelementptr inbounds double, ptr %42, i64 %43
  store ptr %44, ptr %15, align 8, !tbaa !5
  %45 = load ptr, ptr %19, align 8, !tbaa !5
  %46 = load i64, ptr %45, align 8, !tbaa !9
  store i64 %46, ptr %24, align 8, !tbaa !9
  %47 = load i64, ptr %24, align 8, !tbaa !9
  %48 = add nsw i64 1, %47
  store i64 %48, ptr %25, align 8, !tbaa !9
  %49 = load i64, ptr %25, align 8, !tbaa !9
  %50 = load ptr, ptr %18, align 8, !tbaa !5
  %51 = sub i64 0, %49
  %52 = getelementptr inbounds double, ptr %50, i64 %51
  store ptr %52, ptr %18, align 8, !tbaa !5
  %53 = load ptr, ptr %21, align 8, !tbaa !5
  %54 = load i64, ptr %53, align 8, !tbaa !9
  store i64 %54, ptr %26, align 8, !tbaa !9
  %55 = load i64, ptr %26, align 8, !tbaa !9
  %56 = add nsw i64 1, %55
  store i64 %56, ptr %27, align 8, !tbaa !9
  %57 = load i64, ptr %27, align 8, !tbaa !9
  %58 = load ptr, ptr %20, align 8, !tbaa !5
  %59 = sub i64 0, %57
  %60 = getelementptr inbounds double, ptr %58, i64 %59
  store ptr %60, ptr %20, align 8, !tbaa !5
  %61 = load ptr, ptr %12, align 8, !tbaa !5
  %62 = load i64, ptr %61, align 8, !tbaa !9
  %63 = icmp sle i64 %62, 1
  br i1 %63, label %64, label %65

64:                                               ; preds = %10
  store i32 0, ptr %11, align 4
  store i32 1, ptr %34, align 4
  br label %620

65:                                               ; preds = %10
  %66 = load ptr, ptr %14, align 8, !tbaa !5
  %67 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %67, ptr %28, align 8, !tbaa !9
  store i64 1, ptr %32, align 8, !tbaa !9
  br label %68

68:                                               ; preds = %519, %65
  %69 = load i64, ptr %32, align 8, !tbaa !9
  %70 = load i64, ptr %28, align 8, !tbaa !9
  %71 = icmp sle i64 %69, %70
  br i1 %71, label %72, label %522

72:                                               ; preds = %68
  %73 = load i64, ptr %32, align 8, !tbaa !9
  %74 = icmp sgt i64 %73, 1
  br i1 %74, label %75, label %286

75:                                               ; preds = %72
  %76 = load ptr, ptr %12, align 8, !tbaa !5
  %77 = load i64, ptr %76, align 8, !tbaa !9
  %78 = load ptr, ptr %13, align 8, !tbaa !5
  %79 = load i64, ptr %78, align 8, !tbaa !9
  %80 = sub nsw i64 %77, %79
  store i64 %80, ptr %29, align 8, !tbaa !9
  %81 = load i64, ptr %32, align 8, !tbaa !9
  %82 = sub nsw i64 %81, 1
  store i64 %82, ptr %30, align 8, !tbaa !9
  %83 = load ptr, ptr %20, align 8, !tbaa !5
  %84 = load ptr, ptr %13, align 8, !tbaa !5
  %85 = load i64, ptr %84, align 8, !tbaa !9
  %86 = add nsw i64 %85, 1
  %87 = load i64, ptr %26, align 8, !tbaa !9
  %88 = add nsw i64 %86, %87
  %89 = getelementptr inbounds double, ptr %83, i64 %88
  %90 = load ptr, ptr %21, align 8, !tbaa !5
  %91 = load ptr, ptr %15, align 8, !tbaa !5
  %92 = load ptr, ptr %13, align 8, !tbaa !5
  %93 = load i64, ptr %92, align 8, !tbaa !9
  %94 = load i64, ptr %32, align 8, !tbaa !9
  %95 = add nsw i64 %93, %94
  %96 = sub nsw i64 %95, 1
  %97 = load i64, ptr %22, align 8, !tbaa !9
  %98 = add nsw i64 %96, %97
  %99 = getelementptr inbounds double, ptr %91, i64 %98
  %100 = load ptr, ptr %16, align 8, !tbaa !5
  %101 = load ptr, ptr %15, align 8, !tbaa !5
  %102 = load ptr, ptr %13, align 8, !tbaa !5
  %103 = load i64, ptr %102, align 8, !tbaa !9
  %104 = add nsw i64 %103, 1
  %105 = load i64, ptr %32, align 8, !tbaa !9
  %106 = load i64, ptr %22, align 8, !tbaa !9
  %107 = mul nsw i64 %105, %106
  %108 = add nsw i64 %104, %107
  %109 = getelementptr inbounds double, ptr %101, i64 %108
  %110 = call i32 @f2c_dgemv(ptr noundef @.str, ptr noundef %29, ptr noundef %30, ptr noundef @c_b4, ptr noundef %89, ptr noundef %90, ptr noundef %99, ptr noundef %100, ptr noundef @c_b5, ptr noundef %109, ptr noundef @c__1)
  %111 = load i64, ptr %32, align 8, !tbaa !9
  %112 = sub nsw i64 %111, 1
  store i64 %112, ptr %29, align 8, !tbaa !9
  %113 = load ptr, ptr %15, align 8, !tbaa !5
  %114 = load ptr, ptr %13, align 8, !tbaa !5
  %115 = load i64, ptr %114, align 8, !tbaa !9
  %116 = add nsw i64 %115, 1
  %117 = load i64, ptr %32, align 8, !tbaa !9
  %118 = load i64, ptr %22, align 8, !tbaa !9
  %119 = mul nsw i64 %117, %118
  %120 = add nsw i64 %116, %119
  %121 = getelementptr inbounds double, ptr %113, i64 %120
  %122 = load ptr, ptr %18, align 8, !tbaa !5
  %123 = load ptr, ptr %14, align 8, !tbaa !5
  %124 = load i64, ptr %123, align 8, !tbaa !9
  %125 = load i64, ptr %24, align 8, !tbaa !9
  %126 = mul nsw i64 %124, %125
  %127 = add nsw i64 %126, 1
  %128 = getelementptr inbounds double, ptr %122, i64 %127
  %129 = call i32 @f2c_dcopy(ptr noundef %29, ptr noundef %121, ptr noundef @c__1, ptr noundef %128, ptr noundef @c__1)
  %130 = load i64, ptr %32, align 8, !tbaa !9
  %131 = sub nsw i64 %130, 1
  store i64 %131, ptr %29, align 8, !tbaa !9
  %132 = load ptr, ptr %15, align 8, !tbaa !5
  %133 = load ptr, ptr %13, align 8, !tbaa !5
  %134 = load i64, ptr %133, align 8, !tbaa !9
  %135 = add nsw i64 %134, 1
  %136 = load i64, ptr %22, align 8, !tbaa !9
  %137 = add nsw i64 %135, %136
  %138 = getelementptr inbounds double, ptr %132, i64 %137
  %139 = load ptr, ptr %16, align 8, !tbaa !5
  %140 = load ptr, ptr %18, align 8, !tbaa !5
  %141 = load ptr, ptr %14, align 8, !tbaa !5
  %142 = load i64, ptr %141, align 8, !tbaa !9
  %143 = load i64, ptr %24, align 8, !tbaa !9
  %144 = mul nsw i64 %142, %143
  %145 = add nsw i64 %144, 1
  %146 = getelementptr inbounds double, ptr %140, i64 %145
  %147 = call i32 @f2c_dtrmv(ptr noundef @.str.1, ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef %29, ptr noundef %138, ptr noundef %139, ptr noundef %146, ptr noundef @c__1)
  %148 = load ptr, ptr %12, align 8, !tbaa !5
  %149 = load i64, ptr %148, align 8, !tbaa !9
  %150 = load ptr, ptr %13, align 8, !tbaa !5
  %151 = load i64, ptr %150, align 8, !tbaa !9
  %152 = sub nsw i64 %149, %151
  %153 = load i64, ptr %32, align 8, !tbaa !9
  %154 = sub nsw i64 %152, %153
  %155 = add nsw i64 %154, 1
  store i64 %155, ptr %29, align 8, !tbaa !9
  %156 = load i64, ptr %32, align 8, !tbaa !9
  %157 = sub nsw i64 %156, 1
  store i64 %157, ptr %30, align 8, !tbaa !9
  %158 = load ptr, ptr %15, align 8, !tbaa !5
  %159 = load ptr, ptr %13, align 8, !tbaa !5
  %160 = load i64, ptr %159, align 8, !tbaa !9
  %161 = load i64, ptr %32, align 8, !tbaa !9
  %162 = add nsw i64 %160, %161
  %163 = load i64, ptr %22, align 8, !tbaa !9
  %164 = add nsw i64 %162, %163
  %165 = getelementptr inbounds double, ptr %158, i64 %164
  %166 = load ptr, ptr %16, align 8, !tbaa !5
  %167 = load ptr, ptr %15, align 8, !tbaa !5
  %168 = load ptr, ptr %13, align 8, !tbaa !5
  %169 = load i64, ptr %168, align 8, !tbaa !9
  %170 = load i64, ptr %32, align 8, !tbaa !9
  %171 = add nsw i64 %169, %170
  %172 = load i64, ptr %32, align 8, !tbaa !9
  %173 = load i64, ptr %22, align 8, !tbaa !9
  %174 = mul nsw i64 %172, %173
  %175 = add nsw i64 %171, %174
  %176 = getelementptr inbounds double, ptr %167, i64 %175
  %177 = load ptr, ptr %18, align 8, !tbaa !5
  %178 = load ptr, ptr %14, align 8, !tbaa !5
  %179 = load i64, ptr %178, align 8, !tbaa !9
  %180 = load i64, ptr %24, align 8, !tbaa !9
  %181 = mul nsw i64 %179, %180
  %182 = add nsw i64 %181, 1
  %183 = getelementptr inbounds double, ptr %177, i64 %182
  %184 = call i32 @f2c_dgemv(ptr noundef @.str.2, ptr noundef %29, ptr noundef %30, ptr noundef @c_b5, ptr noundef %165, ptr noundef %166, ptr noundef %176, ptr noundef @c__1, ptr noundef @c_b5, ptr noundef %183, ptr noundef @c__1)
  %185 = load i64, ptr %32, align 8, !tbaa !9
  %186 = sub nsw i64 %185, 1
  store i64 %186, ptr %29, align 8, !tbaa !9
  %187 = load ptr, ptr %18, align 8, !tbaa !5
  %188 = load i64, ptr %25, align 8, !tbaa !9
  %189 = getelementptr inbounds double, ptr %187, i64 %188
  %190 = load ptr, ptr %19, align 8, !tbaa !5
  %191 = load ptr, ptr %18, align 8, !tbaa !5
  %192 = load ptr, ptr %14, align 8, !tbaa !5
  %193 = load i64, ptr %192, align 8, !tbaa !9
  %194 = load i64, ptr %24, align 8, !tbaa !9
  %195 = mul nsw i64 %193, %194
  %196 = add nsw i64 %195, 1
  %197 = getelementptr inbounds double, ptr %191, i64 %196
  %198 = call i32 @f2c_dtrmv(ptr noundef @.str.4, ptr noundef @.str.2, ptr noundef @.str.5, ptr noundef %29, ptr noundef %189, ptr noundef %190, ptr noundef %197, ptr noundef @c__1)
  %199 = load ptr, ptr %12, align 8, !tbaa !5
  %200 = load i64, ptr %199, align 8, !tbaa !9
  %201 = load ptr, ptr %13, align 8, !tbaa !5
  %202 = load i64, ptr %201, align 8, !tbaa !9
  %203 = sub nsw i64 %200, %202
  %204 = load i64, ptr %32, align 8, !tbaa !9
  %205 = sub nsw i64 %203, %204
  %206 = add nsw i64 %205, 1
  store i64 %206, ptr %29, align 8, !tbaa !9
  %207 = load i64, ptr %32, align 8, !tbaa !9
  %208 = sub nsw i64 %207, 1
  store i64 %208, ptr %30, align 8, !tbaa !9
  %209 = load ptr, ptr %15, align 8, !tbaa !5
  %210 = load ptr, ptr %13, align 8, !tbaa !5
  %211 = load i64, ptr %210, align 8, !tbaa !9
  %212 = load i64, ptr %32, align 8, !tbaa !9
  %213 = add nsw i64 %211, %212
  %214 = load i64, ptr %22, align 8, !tbaa !9
  %215 = add nsw i64 %213, %214
  %216 = getelementptr inbounds double, ptr %209, i64 %215
  %217 = load ptr, ptr %16, align 8, !tbaa !5
  %218 = load ptr, ptr %18, align 8, !tbaa !5
  %219 = load ptr, ptr %14, align 8, !tbaa !5
  %220 = load i64, ptr %219, align 8, !tbaa !9
  %221 = load i64, ptr %24, align 8, !tbaa !9
  %222 = mul nsw i64 %220, %221
  %223 = add nsw i64 %222, 1
  %224 = getelementptr inbounds double, ptr %218, i64 %223
  %225 = load ptr, ptr %15, align 8, !tbaa !5
  %226 = load ptr, ptr %13, align 8, !tbaa !5
  %227 = load i64, ptr %226, align 8, !tbaa !9
  %228 = load i64, ptr %32, align 8, !tbaa !9
  %229 = add nsw i64 %227, %228
  %230 = load i64, ptr %32, align 8, !tbaa !9
  %231 = load i64, ptr %22, align 8, !tbaa !9
  %232 = mul nsw i64 %230, %231
  %233 = add nsw i64 %229, %232
  %234 = getelementptr inbounds double, ptr %225, i64 %233
  %235 = call i32 @f2c_dgemv(ptr noundef @.str, ptr noundef %29, ptr noundef %30, ptr noundef @c_b4, ptr noundef %216, ptr noundef %217, ptr noundef %224, ptr noundef @c__1, ptr noundef @c_b5, ptr noundef %234, ptr noundef @c__1)
  %236 = load i64, ptr %32, align 8, !tbaa !9
  %237 = sub nsw i64 %236, 1
  store i64 %237, ptr %29, align 8, !tbaa !9
  %238 = load ptr, ptr %15, align 8, !tbaa !5
  %239 = load ptr, ptr %13, align 8, !tbaa !5
  %240 = load i64, ptr %239, align 8, !tbaa !9
  %241 = add nsw i64 %240, 1
  %242 = load i64, ptr %22, align 8, !tbaa !9
  %243 = add nsw i64 %241, %242
  %244 = getelementptr inbounds double, ptr %238, i64 %243
  %245 = load ptr, ptr %16, align 8, !tbaa !5
  %246 = load ptr, ptr %18, align 8, !tbaa !5
  %247 = load ptr, ptr %14, align 8, !tbaa !5
  %248 = load i64, ptr %247, align 8, !tbaa !9
  %249 = load i64, ptr %24, align 8, !tbaa !9
  %250 = mul nsw i64 %248, %249
  %251 = add nsw i64 %250, 1
  %252 = getelementptr inbounds double, ptr %246, i64 %251
  %253 = call i32 @f2c_dtrmv(ptr noundef @.str.1, ptr noundef @.str, ptr noundef @.str.3, ptr noundef %29, ptr noundef %244, ptr noundef %245, ptr noundef %252, ptr noundef @c__1)
  %254 = load i64, ptr %32, align 8, !tbaa !9
  %255 = sub nsw i64 %254, 1
  store i64 %255, ptr %29, align 8, !tbaa !9
  %256 = load ptr, ptr %18, align 8, !tbaa !5
  %257 = load ptr, ptr %14, align 8, !tbaa !5
  %258 = load i64, ptr %257, align 8, !tbaa !9
  %259 = load i64, ptr %24, align 8, !tbaa !9
  %260 = mul nsw i64 %258, %259
  %261 = add nsw i64 %260, 1
  %262 = getelementptr inbounds double, ptr %256, i64 %261
  %263 = load ptr, ptr %15, align 8, !tbaa !5
  %264 = load ptr, ptr %13, align 8, !tbaa !5
  %265 = load i64, ptr %264, align 8, !tbaa !9
  %266 = add nsw i64 %265, 1
  %267 = load i64, ptr %32, align 8, !tbaa !9
  %268 = load i64, ptr %22, align 8, !tbaa !9
  %269 = mul nsw i64 %267, %268
  %270 = add nsw i64 %266, %269
  %271 = getelementptr inbounds double, ptr %263, i64 %270
  %272 = call i32 @f2c_daxpy(ptr noundef %29, ptr noundef @c_b4, ptr noundef %262, ptr noundef @c__1, ptr noundef %271, ptr noundef @c__1)
  %273 = load double, ptr %33, align 8, !tbaa !11
  %274 = load ptr, ptr %15, align 8, !tbaa !5
  %275 = load ptr, ptr %13, align 8, !tbaa !5
  %276 = load i64, ptr %275, align 8, !tbaa !9
  %277 = load i64, ptr %32, align 8, !tbaa !9
  %278 = add nsw i64 %276, %277
  %279 = sub nsw i64 %278, 1
  %280 = load i64, ptr %32, align 8, !tbaa !9
  %281 = sub nsw i64 %280, 1
  %282 = load i64, ptr %22, align 8, !tbaa !9
  %283 = mul nsw i64 %281, %282
  %284 = add nsw i64 %279, %283
  %285 = getelementptr inbounds double, ptr %274, i64 %284
  store double %273, ptr %285, align 8, !tbaa !11
  br label %286

286:                                              ; preds = %75, %72
  %287 = load ptr, ptr %12, align 8, !tbaa !5
  %288 = load i64, ptr %287, align 8, !tbaa !9
  %289 = load ptr, ptr %13, align 8, !tbaa !5
  %290 = load i64, ptr %289, align 8, !tbaa !9
  %291 = sub nsw i64 %288, %290
  %292 = load i64, ptr %32, align 8, !tbaa !9
  %293 = sub nsw i64 %291, %292
  %294 = add nsw i64 %293, 1
  store i64 %294, ptr %29, align 8, !tbaa !9
  %295 = load ptr, ptr %13, align 8, !tbaa !5
  %296 = load i64, ptr %295, align 8, !tbaa !9
  %297 = load i64, ptr %32, align 8, !tbaa !9
  %298 = add nsw i64 %296, %297
  %299 = add nsw i64 %298, 1
  store i64 %299, ptr %30, align 8, !tbaa !9
  %300 = load ptr, ptr %15, align 8, !tbaa !5
  %301 = load ptr, ptr %13, align 8, !tbaa !5
  %302 = load i64, ptr %301, align 8, !tbaa !9
  %303 = load i64, ptr %32, align 8, !tbaa !9
  %304 = add nsw i64 %302, %303
  %305 = load i64, ptr %32, align 8, !tbaa !9
  %306 = load i64, ptr %22, align 8, !tbaa !9
  %307 = mul nsw i64 %305, %306
  %308 = add nsw i64 %304, %307
  %309 = getelementptr inbounds double, ptr %300, i64 %308
  %310 = load ptr, ptr %15, align 8, !tbaa !5
  %311 = load i64, ptr %30, align 8, !tbaa !9
  %312 = load ptr, ptr %12, align 8, !tbaa !5
  %313 = load i64, ptr %312, align 8, !tbaa !9
  %314 = icmp sle i64 %311, %313
  br i1 %314, label %315, label %317

315:                                              ; preds = %286
  %316 = load i64, ptr %30, align 8, !tbaa !9
  br label %320

317:                                              ; preds = %286
  %318 = load ptr, ptr %12, align 8, !tbaa !5
  %319 = load i64, ptr %318, align 8, !tbaa !9
  br label %320

320:                                              ; preds = %317, %315
  %321 = phi i64 [ %316, %315 ], [ %319, %317 ]
  %322 = load i64, ptr %32, align 8, !tbaa !9
  %323 = load i64, ptr %22, align 8, !tbaa !9
  %324 = mul nsw i64 %322, %323
  %325 = add nsw i64 %321, %324
  %326 = getelementptr inbounds double, ptr %310, i64 %325
  %327 = load ptr, ptr %17, align 8, !tbaa !5
  %328 = load i64, ptr %32, align 8, !tbaa !9
  %329 = getelementptr inbounds double, ptr %327, i64 %328
  %330 = call i32 @dlarfg_(ptr noundef %29, ptr noundef %309, ptr noundef %326, ptr noundef @c__1, ptr noundef %329)
  %331 = load ptr, ptr %15, align 8, !tbaa !5
  %332 = load ptr, ptr %13, align 8, !tbaa !5
  %333 = load i64, ptr %332, align 8, !tbaa !9
  %334 = load i64, ptr %32, align 8, !tbaa !9
  %335 = add nsw i64 %333, %334
  %336 = load i64, ptr %32, align 8, !tbaa !9
  %337 = load i64, ptr %22, align 8, !tbaa !9
  %338 = mul nsw i64 %336, %337
  %339 = add nsw i64 %335, %338
  %340 = getelementptr inbounds double, ptr %331, i64 %339
  %341 = load double, ptr %340, align 8, !tbaa !11
  store double %341, ptr %33, align 8, !tbaa !11
  %342 = load ptr, ptr %15, align 8, !tbaa !5
  %343 = load ptr, ptr %13, align 8, !tbaa !5
  %344 = load i64, ptr %343, align 8, !tbaa !9
  %345 = load i64, ptr %32, align 8, !tbaa !9
  %346 = add nsw i64 %344, %345
  %347 = load i64, ptr %32, align 8, !tbaa !9
  %348 = load i64, ptr %22, align 8, !tbaa !9
  %349 = mul nsw i64 %347, %348
  %350 = add nsw i64 %346, %349
  %351 = getelementptr inbounds double, ptr %342, i64 %350
  store double 1.000000e+00, ptr %351, align 8, !tbaa !11
  %352 = load ptr, ptr %12, align 8, !tbaa !5
  %353 = load i64, ptr %352, align 8, !tbaa !9
  %354 = load ptr, ptr %13, align 8, !tbaa !5
  %355 = load i64, ptr %354, align 8, !tbaa !9
  %356 = sub nsw i64 %353, %355
  store i64 %356, ptr %29, align 8, !tbaa !9
  %357 = load ptr, ptr %12, align 8, !tbaa !5
  %358 = load i64, ptr %357, align 8, !tbaa !9
  %359 = load ptr, ptr %13, align 8, !tbaa !5
  %360 = load i64, ptr %359, align 8, !tbaa !9
  %361 = sub nsw i64 %358, %360
  %362 = load i64, ptr %32, align 8, !tbaa !9
  %363 = sub nsw i64 %361, %362
  %364 = add nsw i64 %363, 1
  store i64 %364, ptr %30, align 8, !tbaa !9
  %365 = load ptr, ptr %15, align 8, !tbaa !5
  %366 = load ptr, ptr %13, align 8, !tbaa !5
  %367 = load i64, ptr %366, align 8, !tbaa !9
  %368 = add nsw i64 %367, 1
  %369 = load i64, ptr %32, align 8, !tbaa !9
  %370 = add nsw i64 %369, 1
  %371 = load i64, ptr %22, align 8, !tbaa !9
  %372 = mul nsw i64 %370, %371
  %373 = add nsw i64 %368, %372
  %374 = getelementptr inbounds double, ptr %365, i64 %373
  %375 = load ptr, ptr %16, align 8, !tbaa !5
  %376 = load ptr, ptr %15, align 8, !tbaa !5
  %377 = load ptr, ptr %13, align 8, !tbaa !5
  %378 = load i64, ptr %377, align 8, !tbaa !9
  %379 = load i64, ptr %32, align 8, !tbaa !9
  %380 = add nsw i64 %378, %379
  %381 = load i64, ptr %32, align 8, !tbaa !9
  %382 = load i64, ptr %22, align 8, !tbaa !9
  %383 = mul nsw i64 %381, %382
  %384 = add nsw i64 %380, %383
  %385 = getelementptr inbounds double, ptr %376, i64 %384
  %386 = load ptr, ptr %20, align 8, !tbaa !5
  %387 = load ptr, ptr %13, align 8, !tbaa !5
  %388 = load i64, ptr %387, align 8, !tbaa !9
  %389 = add nsw i64 %388, 1
  %390 = load i64, ptr %32, align 8, !tbaa !9
  %391 = load i64, ptr %26, align 8, !tbaa !9
  %392 = mul nsw i64 %390, %391
  %393 = add nsw i64 %389, %392
  %394 = getelementptr inbounds double, ptr %386, i64 %393
  %395 = call i32 @f2c_dgemv(ptr noundef @.str, ptr noundef %29, ptr noundef %30, ptr noundef @c_b5, ptr noundef %374, ptr noundef %375, ptr noundef %385, ptr noundef @c__1, ptr noundef @c_b38, ptr noundef %394, ptr noundef @c__1)
  %396 = load ptr, ptr %12, align 8, !tbaa !5
  %397 = load i64, ptr %396, align 8, !tbaa !9
  %398 = load ptr, ptr %13, align 8, !tbaa !5
  %399 = load i64, ptr %398, align 8, !tbaa !9
  %400 = sub nsw i64 %397, %399
  %401 = load i64, ptr %32, align 8, !tbaa !9
  %402 = sub nsw i64 %400, %401
  %403 = add nsw i64 %402, 1
  store i64 %403, ptr %29, align 8, !tbaa !9
  %404 = load i64, ptr %32, align 8, !tbaa !9
  %405 = sub nsw i64 %404, 1
  store i64 %405, ptr %30, align 8, !tbaa !9
  %406 = load ptr, ptr %15, align 8, !tbaa !5
  %407 = load ptr, ptr %13, align 8, !tbaa !5
  %408 = load i64, ptr %407, align 8, !tbaa !9
  %409 = load i64, ptr %32, align 8, !tbaa !9
  %410 = add nsw i64 %408, %409
  %411 = load i64, ptr %22, align 8, !tbaa !9
  %412 = add nsw i64 %410, %411
  %413 = getelementptr inbounds double, ptr %406, i64 %412
  %414 = load ptr, ptr %16, align 8, !tbaa !5
  %415 = load ptr, ptr %15, align 8, !tbaa !5
  %416 = load ptr, ptr %13, align 8, !tbaa !5
  %417 = load i64, ptr %416, align 8, !tbaa !9
  %418 = load i64, ptr %32, align 8, !tbaa !9
  %419 = add nsw i64 %417, %418
  %420 = load i64, ptr %32, align 8, !tbaa !9
  %421 = load i64, ptr %22, align 8, !tbaa !9
  %422 = mul nsw i64 %420, %421
  %423 = add nsw i64 %419, %422
  %424 = getelementptr inbounds double, ptr %415, i64 %423
  %425 = load ptr, ptr %18, align 8, !tbaa !5
  %426 = load i64, ptr %32, align 8, !tbaa !9
  %427 = load i64, ptr %24, align 8, !tbaa !9
  %428 = mul nsw i64 %426, %427
  %429 = add nsw i64 %428, 1
  %430 = getelementptr inbounds double, ptr %425, i64 %429
  %431 = call i32 @f2c_dgemv(ptr noundef @.str.2, ptr noundef %29, ptr noundef %30, ptr noundef @c_b5, ptr noundef %413, ptr noundef %414, ptr noundef %424, ptr noundef @c__1, ptr noundef @c_b38, ptr noundef %430, ptr noundef @c__1)
  %432 = load ptr, ptr %12, align 8, !tbaa !5
  %433 = load i64, ptr %432, align 8, !tbaa !9
  %434 = load ptr, ptr %13, align 8, !tbaa !5
  %435 = load i64, ptr %434, align 8, !tbaa !9
  %436 = sub nsw i64 %433, %435
  store i64 %436, ptr %29, align 8, !tbaa !9
  %437 = load i64, ptr %32, align 8, !tbaa !9
  %438 = sub nsw i64 %437, 1
  store i64 %438, ptr %30, align 8, !tbaa !9
  %439 = load ptr, ptr %20, align 8, !tbaa !5
  %440 = load ptr, ptr %13, align 8, !tbaa !5
  %441 = load i64, ptr %440, align 8, !tbaa !9
  %442 = add nsw i64 %441, 1
  %443 = load i64, ptr %26, align 8, !tbaa !9
  %444 = add nsw i64 %442, %443
  %445 = getelementptr inbounds double, ptr %439, i64 %444
  %446 = load ptr, ptr %21, align 8, !tbaa !5
  %447 = load ptr, ptr %18, align 8, !tbaa !5
  %448 = load i64, ptr %32, align 8, !tbaa !9
  %449 = load i64, ptr %24, align 8, !tbaa !9
  %450 = mul nsw i64 %448, %449
  %451 = add nsw i64 %450, 1
  %452 = getelementptr inbounds double, ptr %447, i64 %451
  %453 = load ptr, ptr %20, align 8, !tbaa !5
  %454 = load ptr, ptr %13, align 8, !tbaa !5
  %455 = load i64, ptr %454, align 8, !tbaa !9
  %456 = add nsw i64 %455, 1
  %457 = load i64, ptr %32, align 8, !tbaa !9
  %458 = load i64, ptr %26, align 8, !tbaa !9
  %459 = mul nsw i64 %457, %458
  %460 = add nsw i64 %456, %459
  %461 = getelementptr inbounds double, ptr %453, i64 %460
  %462 = call i32 @f2c_dgemv(ptr noundef @.str, ptr noundef %29, ptr noundef %30, ptr noundef @c_b4, ptr noundef %445, ptr noundef %446, ptr noundef %452, ptr noundef @c__1, ptr noundef @c_b5, ptr noundef %461, ptr noundef @c__1)
  %463 = load ptr, ptr %12, align 8, !tbaa !5
  %464 = load i64, ptr %463, align 8, !tbaa !9
  %465 = load ptr, ptr %13, align 8, !tbaa !5
  %466 = load i64, ptr %465, align 8, !tbaa !9
  %467 = sub nsw i64 %464, %466
  store i64 %467, ptr %29, align 8, !tbaa !9
  %468 = load ptr, ptr %17, align 8, !tbaa !5
  %469 = load i64, ptr %32, align 8, !tbaa !9
  %470 = getelementptr inbounds double, ptr %468, i64 %469
  %471 = load ptr, ptr %20, align 8, !tbaa !5
  %472 = load ptr, ptr %13, align 8, !tbaa !5
  %473 = load i64, ptr %472, align 8, !tbaa !9
  %474 = add nsw i64 %473, 1
  %475 = load i64, ptr %32, align 8, !tbaa !9
  %476 = load i64, ptr %26, align 8, !tbaa !9
  %477 = mul nsw i64 %475, %476
  %478 = add nsw i64 %474, %477
  %479 = getelementptr inbounds double, ptr %471, i64 %478
  %480 = call i32 @f2c_dscal(ptr noundef %29, ptr noundef %470, ptr noundef %479, ptr noundef @c__1)
  %481 = load i64, ptr %32, align 8, !tbaa !9
  %482 = sub nsw i64 %481, 1
  store i64 %482, ptr %29, align 8, !tbaa !9
  %483 = load ptr, ptr %17, align 8, !tbaa !5
  %484 = load i64, ptr %32, align 8, !tbaa !9
  %485 = getelementptr inbounds double, ptr %483, i64 %484
  %486 = load double, ptr %485, align 8, !tbaa !11
  %487 = fneg double %486
  store double %487, ptr %31, align 8, !tbaa !11
  %488 = load ptr, ptr %18, align 8, !tbaa !5
  %489 = load i64, ptr %32, align 8, !tbaa !9
  %490 = load i64, ptr %24, align 8, !tbaa !9
  %491 = mul nsw i64 %489, %490
  %492 = add nsw i64 %491, 1
  %493 = getelementptr inbounds double, ptr %488, i64 %492
  %494 = call i32 @f2c_dscal(ptr noundef %29, ptr noundef %31, ptr noundef %493, ptr noundef @c__1)
  %495 = load i64, ptr %32, align 8, !tbaa !9
  %496 = sub nsw i64 %495, 1
  store i64 %496, ptr %29, align 8, !tbaa !9
  %497 = load ptr, ptr %18, align 8, !tbaa !5
  %498 = load i64, ptr %25, align 8, !tbaa !9
  %499 = getelementptr inbounds double, ptr %497, i64 %498
  %500 = load ptr, ptr %19, align 8, !tbaa !5
  %501 = load ptr, ptr %18, align 8, !tbaa !5
  %502 = load i64, ptr %32, align 8, !tbaa !9
  %503 = load i64, ptr %24, align 8, !tbaa !9
  %504 = mul nsw i64 %502, %503
  %505 = add nsw i64 %504, 1
  %506 = getelementptr inbounds double, ptr %501, i64 %505
  %507 = call i32 @f2c_dtrmv(ptr noundef @.str.4, ptr noundef @.str.6, ptr noundef @.str.5, ptr noundef %29, ptr noundef %499, ptr noundef %500, ptr noundef %506, ptr noundef @c__1)
  %508 = load ptr, ptr %17, align 8, !tbaa !5
  %509 = load i64, ptr %32, align 8, !tbaa !9
  %510 = getelementptr inbounds double, ptr %508, i64 %509
  %511 = load double, ptr %510, align 8, !tbaa !11
  %512 = load ptr, ptr %18, align 8, !tbaa !5
  %513 = load i64, ptr %32, align 8, !tbaa !9
  %514 = load i64, ptr %32, align 8, !tbaa !9
  %515 = load i64, ptr %24, align 8, !tbaa !9
  %516 = mul nsw i64 %514, %515
  %517 = add nsw i64 %513, %516
  %518 = getelementptr inbounds double, ptr %512, i64 %517
  store double %511, ptr %518, align 8, !tbaa !11
  br label %519

519:                                              ; preds = %320
  %520 = load i64, ptr %32, align 8, !tbaa !9
  %521 = add nsw i64 %520, 1
  store i64 %521, ptr %32, align 8, !tbaa !9
  br label %68, !llvm.loop !13

522:                                              ; preds = %68
  %523 = load double, ptr %33, align 8, !tbaa !11
  %524 = load ptr, ptr %15, align 8, !tbaa !5
  %525 = load ptr, ptr %13, align 8, !tbaa !5
  %526 = load i64, ptr %525, align 8, !tbaa !9
  %527 = load ptr, ptr %14, align 8, !tbaa !5
  %528 = load i64, ptr %527, align 8, !tbaa !9
  %529 = add nsw i64 %526, %528
  %530 = load ptr, ptr %14, align 8, !tbaa !5
  %531 = load i64, ptr %530, align 8, !tbaa !9
  %532 = load i64, ptr %22, align 8, !tbaa !9
  %533 = mul nsw i64 %531, %532
  %534 = add nsw i64 %529, %533
  %535 = getelementptr inbounds double, ptr %524, i64 %534
  store double %523, ptr %535, align 8, !tbaa !11
  %536 = load ptr, ptr %13, align 8, !tbaa !5
  %537 = load ptr, ptr %14, align 8, !tbaa !5
  %538 = load ptr, ptr %15, align 8, !tbaa !5
  %539 = load i64, ptr %22, align 8, !tbaa !9
  %540 = shl i64 %539, 1
  %541 = add nsw i64 %540, 1
  %542 = getelementptr inbounds double, ptr %538, i64 %541
  %543 = load ptr, ptr %16, align 8, !tbaa !5
  %544 = load ptr, ptr %20, align 8, !tbaa !5
  %545 = load i64, ptr %27, align 8, !tbaa !9
  %546 = getelementptr inbounds double, ptr %544, i64 %545
  %547 = load ptr, ptr %21, align 8, !tbaa !5
  %548 = call i32 @dlacpy_(ptr noundef @.str.7, ptr noundef %536, ptr noundef %537, ptr noundef %542, ptr noundef %543, ptr noundef %546, ptr noundef %547)
  %549 = load ptr, ptr %13, align 8, !tbaa !5
  %550 = load ptr, ptr %14, align 8, !tbaa !5
  %551 = load ptr, ptr %15, align 8, !tbaa !5
  %552 = load ptr, ptr %13, align 8, !tbaa !5
  %553 = load i64, ptr %552, align 8, !tbaa !9
  %554 = add nsw i64 %553, 1
  %555 = load i64, ptr %22, align 8, !tbaa !9
  %556 = add nsw i64 %554, %555
  %557 = getelementptr inbounds double, ptr %551, i64 %556
  %558 = load ptr, ptr %16, align 8, !tbaa !5
  %559 = load ptr, ptr %20, align 8, !tbaa !5
  %560 = load i64, ptr %27, align 8, !tbaa !9
  %561 = getelementptr inbounds double, ptr %559, i64 %560
  %562 = load ptr, ptr %21, align 8, !tbaa !5
  %563 = call i32 @f2c_dtrmm(ptr noundef @.str.8, ptr noundef @.str.1, ptr noundef @.str, ptr noundef @.str.3, ptr noundef %549, ptr noundef %550, ptr noundef @c_b5, ptr noundef %557, ptr noundef %558, ptr noundef %561, ptr noundef %562)
  %564 = load ptr, ptr %12, align 8, !tbaa !5
  %565 = load i64, ptr %564, align 8, !tbaa !9
  %566 = load ptr, ptr %13, align 8, !tbaa !5
  %567 = load i64, ptr %566, align 8, !tbaa !9
  %568 = load ptr, ptr %14, align 8, !tbaa !5
  %569 = load i64, ptr %568, align 8, !tbaa !9
  %570 = add nsw i64 %567, %569
  %571 = icmp sgt i64 %565, %570
  br i1 %571, label %572, label %608

572:                                              ; preds = %522
  %573 = load ptr, ptr %12, align 8, !tbaa !5
  %574 = load i64, ptr %573, align 8, !tbaa !9
  %575 = load ptr, ptr %13, align 8, !tbaa !5
  %576 = load i64, ptr %575, align 8, !tbaa !9
  %577 = sub nsw i64 %574, %576
  %578 = load ptr, ptr %14, align 8, !tbaa !5
  %579 = load i64, ptr %578, align 8, !tbaa !9
  %580 = sub nsw i64 %577, %579
  store i64 %580, ptr %28, align 8, !tbaa !9
  %581 = load ptr, ptr %13, align 8, !tbaa !5
  %582 = load ptr, ptr %14, align 8, !tbaa !5
  %583 = load ptr, ptr %15, align 8, !tbaa !5
  %584 = load ptr, ptr %14, align 8, !tbaa !5
  %585 = load i64, ptr %584, align 8, !tbaa !9
  %586 = add nsw i64 %585, 2
  %587 = load i64, ptr %22, align 8, !tbaa !9
  %588 = mul nsw i64 %586, %587
  %589 = add nsw i64 %588, 1
  %590 = getelementptr inbounds double, ptr %583, i64 %589
  %591 = load ptr, ptr %16, align 8, !tbaa !5
  %592 = load ptr, ptr %15, align 8, !tbaa !5
  %593 = load ptr, ptr %13, align 8, !tbaa !5
  %594 = load i64, ptr %593, align 8, !tbaa !9
  %595 = add nsw i64 %594, 1
  %596 = load ptr, ptr %14, align 8, !tbaa !5
  %597 = load i64, ptr %596, align 8, !tbaa !9
  %598 = add nsw i64 %595, %597
  %599 = load i64, ptr %22, align 8, !tbaa !9
  %600 = add nsw i64 %598, %599
  %601 = getelementptr inbounds double, ptr %592, i64 %600
  %602 = load ptr, ptr %16, align 8, !tbaa !5
  %603 = load ptr, ptr %20, align 8, !tbaa !5
  %604 = load i64, ptr %27, align 8, !tbaa !9
  %605 = getelementptr inbounds double, ptr %603, i64 %604
  %606 = load ptr, ptr %21, align 8, !tbaa !5
  %607 = call i32 @f2c_dgemm(ptr noundef @.str, ptr noundef @.str, ptr noundef %581, ptr noundef %582, ptr noundef %28, ptr noundef @c_b5, ptr noundef %590, ptr noundef %591, ptr noundef %601, ptr noundef %602, ptr noundef @c_b5, ptr noundef %605, ptr noundef %606)
  br label %608

608:                                              ; preds = %572, %522
  %609 = load ptr, ptr %13, align 8, !tbaa !5
  %610 = load ptr, ptr %14, align 8, !tbaa !5
  %611 = load ptr, ptr %18, align 8, !tbaa !5
  %612 = load i64, ptr %25, align 8, !tbaa !9
  %613 = getelementptr inbounds double, ptr %611, i64 %612
  %614 = load ptr, ptr %19, align 8, !tbaa !5
  %615 = load ptr, ptr %20, align 8, !tbaa !5
  %616 = load i64, ptr %27, align 8, !tbaa !9
  %617 = getelementptr inbounds double, ptr %615, i64 %616
  %618 = load ptr, ptr %21, align 8, !tbaa !5
  %619 = call i32 @f2c_dtrmm(ptr noundef @.str.8, ptr noundef @.str.4, ptr noundef @.str, ptr noundef @.str.5, ptr noundef %609, ptr noundef %610, ptr noundef @c_b5, ptr noundef %613, ptr noundef %614, ptr noundef %617, ptr noundef %618)
  store i32 0, ptr %11, align 4
  store i32 1, ptr %34, align 4
  br label %620

620:                                              ; preds = %608, %64
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #3
  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
  %621 = load i32, ptr %11, align 4
  ret i32 %621
}

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

declare i32 @f2c_dgemv(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_dcopy(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

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

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

declare i32 @f2c_dtrmm(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_dgemm(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

; 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"}


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

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

27:                                               ; preds = %10
  %28 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %28, ptr %11, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %18, i64 8
  %invariant.gep279 = getelementptr i8, ptr %21, i64 8
  %invariant.gep297 = getelementptr i8, ptr %24, i64 8
  %.not301 = icmp slt i64 %28, 1
  br i1 %.not301, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %27, %93
  %.0303 = phi double [ %111, %93 ], [ undef, %27 ]
  %.0268302 = phi i64 [ %117, %93 ], [ 1, %27 ]
  %29 = icmp ugt i64 %.0268302, 1
  %.pre304 = load i64, ptr %0, align 8, !tbaa !5
  %.pre305 = load i64, ptr %1, align 8, !tbaa !5
  br i1 %29, label %30, label %.lr.ph._crit_edge

.lr.ph._crit_edge:                                ; preds = %.lr.ph
  %.pre307 = mul nuw nsw i64 %.0268302, %16
  br label %93

30:                                               ; preds = %.lr.ph
  %31 = sub nsw i64 %.pre304, %.pre305
  store i64 %31, ptr %12, align 8, !tbaa !5
  %32 = add nsw i64 %.0268302, -1
  store i64 %32, ptr %13, align 8, !tbaa !5
  %33 = getelementptr inbounds double, ptr %8, i64 %.pre305
  %34 = getelementptr double, ptr %18, i64 %.pre305
  %35 = getelementptr double, ptr %34, i64 %.0268302
  %36 = getelementptr i8, ptr %35, i64 -8
  %37 = getelementptr double, ptr %36, i64 %16
  %38 = mul nsw i64 %.0268302, %16
  %39 = getelementptr i8, ptr %34, i64 8
  %40 = getelementptr double, ptr %39, i64 %38
  %41 = call i32 @f2c_dgemv(ptr noundef nonnull @.str, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull @c_b4, ptr noundef %33, ptr noundef nonnull %9, ptr noundef %37, ptr noundef nonnull %4, ptr noundef nonnull @c_b5, ptr noundef %40, ptr noundef nonnull @c__1) #3
  store i64 %32, ptr %12, align 8, !tbaa !5
  %42 = load i64, ptr %1, align 8, !tbaa !5
  %gep = getelementptr double, ptr %invariant.gep, i64 %42
  %43 = getelementptr double, ptr %gep, i64 %38
  %44 = load i64, ptr %2, align 8, !tbaa !5
  %45 = mul nsw i64 %44, %19
  %gep280 = getelementptr double, ptr %invariant.gep279, i64 %45
  %46 = call i32 @f2c_dcopy(ptr noundef nonnull %12, ptr noundef %43, ptr noundef nonnull @c__1, ptr noundef %gep280, ptr noundef nonnull @c__1) #3
  store i64 %32, ptr %12, align 8, !tbaa !5
  %47 = load i64, ptr %1, align 8, !tbaa !5
  %48 = getelementptr inbounds double, ptr %3, i64 %47
  %49 = load i64, ptr %2, align 8, !tbaa !5
  %50 = mul nsw i64 %49, %19
  %gep282 = getelementptr double, ptr %invariant.gep279, i64 %50
  %51 = call i32 @f2c_dtrmv(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %12, ptr noundef %48, ptr noundef nonnull %4, ptr noundef %gep282, ptr noundef nonnull @c__1) #3
  %52 = load i64, ptr %0, align 8, !tbaa !5
  %53 = load i64, ptr %1, align 8, !tbaa !5
  %54 = add i64 %53, %.0268302
  %55 = add i64 %52, 1
  %56 = sub i64 %55, %54
  store i64 %56, ptr %12, align 8, !tbaa !5
  store i64 %32, ptr %13, align 8, !tbaa !5
  %57 = getelementptr double, ptr %18, i64 %54
  %58 = getelementptr double, ptr %57, i64 %16
  %59 = getelementptr double, ptr %57, i64 %38
  %60 = load i64, ptr %2, align 8, !tbaa !5
  %61 = mul nsw i64 %60, %19
  %gep284 = getelementptr double, ptr %invariant.gep279, i64 %61
  %62 = call i32 @f2c_dgemv(ptr noundef nonnull @.str.2, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull @c_b5, ptr noundef %58, ptr noundef nonnull %4, ptr noundef %59, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b5, ptr noundef %gep284, ptr noundef nonnull @c__1) #3
  store i64 %32, ptr %12, align 8, !tbaa !5
  %63 = load i64, ptr %2, align 8, !tbaa !5
  %64 = mul nsw i64 %63, %19
  %gep286 = getelementptr double, ptr %invariant.gep279, i64 %64
  %65 = call i32 @f2c_dtrmv(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.5, ptr noundef nonnull %12, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %gep286, ptr noundef nonnull @c__1) #3
  %66 = load i64, ptr %0, align 8, !tbaa !5
  %67 = load i64, ptr %1, align 8, !tbaa !5
  %68 = add i64 %67, %.0268302
  %69 = add i64 %66, 1
  %70 = sub i64 %69, %68
  store i64 %70, ptr %12, align 8, !tbaa !5
  store i64 %32, ptr %13, align 8, !tbaa !5
  %71 = getelementptr double, ptr %18, i64 %68
  %72 = getelementptr double, ptr %71, i64 %16
  %73 = load i64, ptr %2, align 8, !tbaa !5
  %74 = mul nsw i64 %73, %19
  %gep288 = getelementptr double, ptr %invariant.gep279, i64 %74
  %75 = getelementptr double, ptr %71, i64 %38
  %76 = call i32 @f2c_dgemv(ptr noundef nonnull @.str, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull @c_b4, ptr noundef %72, ptr noundef nonnull %4, ptr noundef %gep288, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b5, ptr noundef %75, ptr noundef nonnull @c__1) #3
  store i64 %32, ptr %12, align 8, !tbaa !5
  %77 = load i64, ptr %1, align 8, !tbaa !5
  %78 = getelementptr inbounds double, ptr %3, i64 %77
  %79 = load i64, ptr %2, align 8, !tbaa !5
  %80 = mul nsw i64 %79, %19
  %gep290 = getelementptr double, ptr %invariant.gep279, i64 %80
  %81 = call i32 @f2c_dtrmv(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str, ptr noundef nonnull @.str.3, ptr noundef nonnull %12, ptr noundef %78, ptr noundef nonnull %4, ptr noundef %gep290, ptr noundef nonnull @c__1) #3
  store i64 %32, ptr %12, align 8, !tbaa !5
  %82 = load i64, ptr %2, align 8, !tbaa !5
  %83 = mul nsw i64 %82, %19
  %gep292 = getelementptr double, ptr %invariant.gep279, i64 %83
  %84 = load i64, ptr %1, align 8, !tbaa !5
  %gep294 = getelementptr double, ptr %invariant.gep, i64 %84
  %85 = getelementptr double, ptr %gep294, i64 %38
  %86 = call i32 @f2c_daxpy(ptr noundef nonnull %12, ptr noundef nonnull @c_b4, ptr noundef %gep292, ptr noundef nonnull @c__1, ptr noundef %85, ptr noundef nonnull @c__1) #3
  %87 = load i64, ptr %1, align 8, !tbaa !5
  %88 = mul nsw i64 %32, %16
  %89 = getelementptr double, ptr %18, i64 %87
  %90 = getelementptr double, ptr %89, i64 %.0268302
  %91 = getelementptr i8, ptr %90, i64 -8
  %92 = getelementptr double, ptr %91, i64 %88
  store double %.0303, ptr %92, align 8, !tbaa !9
  %.pre = load i64, ptr %0, align 8, !tbaa !5
  br label %93

93:                                               ; preds = %.lr.ph._crit_edge, %30
  %.pre-phi309 = phi i64 [ 0, %.lr.ph._crit_edge ], [ %32, %30 ]
  %.pre-phi = phi i64 [ %.pre307, %.lr.ph._crit_edge ], [ %38, %30 ]
  %94 = phi i64 [ %.pre305, %.lr.ph._crit_edge ], [ %87, %30 ]
  %95 = phi i64 [ %.pre304, %.lr.ph._crit_edge ], [ %.pre, %30 ]
  %96 = add i64 %94, %.0268302
  %97 = add i64 %95, 1
  %98 = sub i64 %97, %96
  store i64 %98, ptr %12, align 8, !tbaa !5
  %99 = add nsw i64 %96, 1
  store i64 %99, ptr %13, align 8, !tbaa !5
  %100 = getelementptr double, ptr %18, i64 %94
  %101 = getelementptr double, ptr %100, i64 %.0268302
  %102 = getelementptr double, ptr %101, i64 %.pre-phi
  %.not273.not = icmp slt i64 %96, %95
  %. = select i1 %.not273.not, i64 %99, i64 %95
  %103 = getelementptr double, ptr %18, i64 %.
  %104 = getelementptr double, ptr %103, i64 %.pre-phi
  %105 = getelementptr inbounds double, ptr %15, i64 %.0268302
  %106 = call i32 @dlarfg_(ptr noundef nonnull %12, ptr noundef %102, ptr noundef %104, ptr noundef nonnull @c__1, ptr noundef nonnull %105) #3
  %107 = load i64, ptr %1, align 8, !tbaa !5
  %108 = getelementptr double, ptr %18, i64 %107
  %109 = getelementptr double, ptr %108, i64 %.0268302
  %110 = getelementptr double, ptr %109, i64 %.pre-phi
  %111 = load double, ptr %110, align 8, !tbaa !9
  store double 1.000000e+00, ptr %110, align 8, !tbaa !9
  %112 = load i64, ptr %0, align 8, !tbaa !5
  %113 = sub nsw i64 %112, %107
  store i64 %113, ptr %12, align 8, !tbaa !5
  %114 = add i64 %.0268302, %107
  %reass.sub = sub i64 %112, %114
  %115 = add i64 %reass.sub, 1
  store i64 %115, ptr %13, align 8, !tbaa !5
  %116 = add nsw i64 %107, 1
  %117 = add nuw nsw i64 %.0268302, 1
  %118 = mul nsw i64 %117, %16
  %119 = getelementptr double, ptr %18, i64 %116
  %120 = getelementptr double, ptr %119, i64 %118
  %121 = mul nsw i64 %.0268302, %22
  %122 = getelementptr double, ptr %24, i64 %116
  %123 = getelementptr double, ptr %122, i64 %121
  %124 = call i32 @f2c_dgemv(ptr noundef nonnull @.str, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull @c_b5, ptr noundef %120, ptr noundef nonnull %4, ptr noundef nonnull %110, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b38, ptr noundef %123, ptr noundef nonnull @c__1) #3
  %125 = load i64, ptr %0, align 8, !tbaa !5
  %126 = load i64, ptr %1, align 8, !tbaa !5
  %127 = add i64 %126, %.0268302
  %128 = add i64 %125, 1
  %129 = sub i64 %128, %127
  store i64 %129, ptr %12, align 8, !tbaa !5
  store i64 %.pre-phi309, ptr %13, align 8, !tbaa !5
  %130 = getelementptr double, ptr %18, i64 %127
  %131 = getelementptr double, ptr %130, i64 %16
  %132 = getelementptr double, ptr %130, i64 %.pre-phi
  %133 = mul nsw i64 %.0268302, %19
  %gep296 = getelementptr double, ptr %invariant.gep279, i64 %133
  %134 = call i32 @f2c_dgemv(ptr noundef nonnull @.str.2, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull @c_b5, ptr noundef %131, ptr noundef nonnull %4, ptr noundef %132, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b38, ptr noundef %gep296, ptr noundef nonnull @c__1) #3
  %135 = load i64, ptr %0, align 8, !tbaa !5
  %136 = load i64, ptr %1, align 8, !tbaa !5
  %137 = sub nsw i64 %135, %136
  store i64 %137, ptr %12, align 8, !tbaa !5
  store i64 %.pre-phi309, ptr %13, align 8, !tbaa !5
  %138 = getelementptr inbounds double, ptr %8, i64 %136
  %gep298 = getelementptr double, ptr %invariant.gep297, i64 %136
  %139 = getelementptr double, ptr %gep298, i64 %121
  %140 = call i32 @f2c_dgemv(ptr noundef nonnull @.str, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull @c_b4, ptr noundef %138, ptr noundef nonnull %9, ptr noundef %gep296, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b5, ptr noundef %139, ptr noundef nonnull @c__1) #3
  %141 = load i64, ptr %0, align 8, !tbaa !5
  %142 = load i64, ptr %1, align 8, !tbaa !5
  %143 = sub nsw i64 %141, %142
  store i64 %143, ptr %12, align 8, !tbaa !5
  %gep300 = getelementptr double, ptr %invariant.gep297, i64 %142
  %144 = getelementptr double, ptr %gep300, i64 %121
  %145 = call i32 @f2c_dscal(ptr noundef nonnull %12, ptr noundef nonnull %105, ptr noundef %144, ptr noundef nonnull @c__1) #3
  store i64 %.pre-phi309, ptr %12, align 8, !tbaa !5
  %146 = load double, ptr %105, align 8, !tbaa !9
  %147 = fneg double %146
  store double %147, ptr %14, align 8, !tbaa !9
  %148 = call i32 @f2c_dscal(ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef %gep296, ptr noundef nonnull @c__1) #3
  store i64 %.pre-phi309, ptr %12, align 8, !tbaa !5
  %149 = call i32 @f2c_dtrmv(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.5, ptr noundef nonnull %12, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %gep296, ptr noundef nonnull @c__1) #3
  %150 = load double, ptr %105, align 8, !tbaa !9
  %151 = getelementptr double, ptr %21, i64 %.0268302
  %152 = getelementptr double, ptr %151, i64 %133
  store double %150, ptr %152, align 8, !tbaa !9
  %.not.not = icmp slt i64 %.0268302, %28
  br i1 %.not.not, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !11

._crit_edge.loopexit:                             ; preds = %93
  %.pre306 = load i64, ptr %2, align 8, !tbaa !5
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %27
  %153 = phi i64 [ %28, %27 ], [ %.pre306, %._crit_edge.loopexit ]
  %.0.lcssa = phi double [ undef, %27 ], [ %111, %._crit_edge.loopexit ]
  %154 = load i64, ptr %1, align 8, !tbaa !5
  %155 = mul nsw i64 %153, %16
  %156 = getelementptr double, ptr %18, i64 %154
  %157 = getelementptr double, ptr %156, i64 %153
  %158 = getelementptr double, ptr %157, i64 %155
  store double %.0.lcssa, ptr %158, align 8, !tbaa !9
  %159 = shl i64 %16, 1
  %160 = or disjoint i64 %159, 1
  %161 = getelementptr inbounds double, ptr %18, i64 %160
  %162 = call i32 @dlacpy_(ptr noundef nonnull @.str.7, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull %161, ptr noundef nonnull %4, ptr noundef %8, ptr noundef nonnull %9) #3
  %163 = load i64, ptr %1, align 8, !tbaa !5
  %164 = getelementptr inbounds double, ptr %3, i64 %163
  %165 = call i32 @f2c_dtrmm(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str, ptr noundef nonnull @.str.3, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull @c_b5, ptr noundef %164, ptr noundef nonnull %4, ptr noundef %8, ptr noundef nonnull %9) #3
  %166 = load i64, ptr %0, align 8, !tbaa !5
  %167 = load i64, ptr %1, align 8, !tbaa !5
  %168 = load i64, ptr %2, align 8, !tbaa !5
  %169 = add nsw i64 %168, %167
  %170 = icmp sgt i64 %166, %169
  br i1 %170, label %171, label %182

171:                                              ; preds = %._crit_edge
  %172 = sub i64 %166, %169
  store i64 %172, ptr %11, align 8, !tbaa !5
  %173 = add nsw i64 %168, 2
  %174 = mul nsw i64 %173, %16
  %175 = getelementptr double, ptr %18, i64 %174
  %176 = getelementptr i8, ptr %175, i64 8
  %177 = getelementptr double, ptr %18, i64 %167
  %178 = getelementptr i8, ptr %177, i64 8
  %179 = getelementptr double, ptr %178, i64 %168
  %180 = getelementptr double, ptr %179, i64 %16
  %181 = call i32 @f2c_dgemm(ptr noundef nonnull @.str, ptr noundef nonnull @.str, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull %11, ptr noundef nonnull @c_b5, ptr noundef %176, ptr noundef nonnull %4, ptr noundef %180, ptr noundef nonnull %4, ptr noundef nonnull @c_b5, ptr noundef %8, ptr noundef nonnull %9) #3
  br label %182

182:                                              ; preds = %171, %._crit_edge
  %183 = call i32 @f2c_dtrmm(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str, ptr noundef nonnull @.str.5, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull @c_b5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9) #3
  br label %184

184:                                              ; preds = %10, %182
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #3
  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 @f2c_dgemv(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_dcopy(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare i32 @f2c_daxpy(ptr noundef, ptr noundef, ptr noundef, ptr noundef, 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 @f2c_dscal(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare i32 @f2c_dtrmm(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_dgemm(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

; Function Attrs: mustprogress 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 = { 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 = { 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"}


; Effective O3 passes: ADCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass