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

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

; Function Attrs: nounwind uwtable
define dso_local i32 @dlasda_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef %23) #0 {
  %25 = alloca i32, align 4
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = alloca ptr, align 8
  %48 = alloca ptr, align 8
  %49 = alloca ptr, align 8
  %50 = alloca i64, align 8
  %51 = alloca i64, align 8
  %52 = alloca i64, align 8
  %53 = alloca i64, align 8
  %54 = alloca i64, align 8
  %55 = alloca i64, align 8
  %56 = alloca i64, align 8
  %57 = alloca i64, align 8
  %58 = alloca i64, align 8
  %59 = alloca i64, align 8
  %60 = alloca i64, align 8
  %61 = alloca i64, align 8
  %62 = alloca i64, align 8
  %63 = alloca i64, align 8
  %64 = alloca i64, align 8
  %65 = alloca i64, align 8
  %66 = alloca i64, align 8
  %67 = alloca i64, align 8
  %68 = alloca i64, align 8
  %69 = alloca i64, align 8
  %70 = alloca i64, align 8
  %71 = alloca i64, align 8
  %72 = alloca i64, align 8
  %73 = alloca i64, align 8
  %74 = alloca i64, align 8
  %75 = alloca i64, align 8
  %76 = alloca i64, align 8
  %77 = alloca i64, align 8
  %78 = alloca i64, align 8
  %79 = alloca i64, align 8
  %80 = alloca i64, align 8
  %81 = alloca i64, align 8
  %82 = alloca i64, align 8
  %83 = alloca i64, align 8
  %84 = alloca i64, align 8
  %85 = alloca i64, align 8
  %86 = alloca i64, align 8
  %87 = alloca i64, align 8
  %88 = alloca i64, align 8
  %89 = alloca i64, align 8
  %90 = alloca i64, align 8
  %91 = alloca i64, align 8
  %92 = alloca i64, align 8
  %93 = alloca i64, align 8
  %94 = alloca i64, align 8
  %95 = alloca double, align 8
  %96 = alloca i64, align 8
  %97 = alloca i64, align 8
  %98 = alloca double, align 8
  %99 = alloca i64, align 8
  %100 = alloca i64, align 8
  %101 = alloca i64, align 8
  %102 = alloca i64, align 8
  %103 = alloca i64, align 8
  %104 = alloca i64, align 8
  %105 = alloca i64, align 8
  %106 = alloca i64, align 8
  %107 = alloca i64, align 8
  %108 = alloca i32, align 4
  store ptr %0, ptr %26, align 8, !tbaa !5
  store ptr %1, ptr %27, align 8, !tbaa !5
  store ptr %2, ptr %28, align 8, !tbaa !5
  store ptr %3, ptr %29, align 8, !tbaa !5
  store ptr %4, ptr %30, align 8, !tbaa !5
  store ptr %5, ptr %31, align 8, !tbaa !5
  store ptr %6, ptr %32, align 8, !tbaa !5
  store ptr %7, ptr %33, align 8, !tbaa !5
  store ptr %8, ptr %34, align 8, !tbaa !5
  store ptr %9, ptr %35, align 8, !tbaa !5
  store ptr %10, ptr %36, align 8, !tbaa !5
  store ptr %11, ptr %37, align 8, !tbaa !5
  store ptr %12, ptr %38, align 8, !tbaa !5
  store ptr %13, ptr %39, align 8, !tbaa !5
  store ptr %14, ptr %40, align 8, !tbaa !5
  store ptr %15, ptr %41, align 8, !tbaa !5
  store ptr %16, ptr %42, align 8, !tbaa !5
  store ptr %17, ptr %43, align 8, !tbaa !5
  store ptr %18, ptr %44, align 8, !tbaa !5
  store ptr %19, ptr %45, align 8, !tbaa !5
  store ptr %20, ptr %46, align 8, !tbaa !5
  store ptr %21, ptr %47, align 8, !tbaa !5
  store ptr %22, ptr %48, align 8, !tbaa !5
  store ptr %23, ptr %49, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #3
  %109 = load ptr, ptr %30, align 8, !tbaa !5
  %110 = getelementptr inbounds double, ptr %109, i32 -1
  store ptr %110, ptr %30, align 8, !tbaa !5
  %111 = load ptr, ptr %31, align 8, !tbaa !5
  %112 = getelementptr inbounds double, ptr %111, i32 -1
  store ptr %112, ptr %31, align 8, !tbaa !5
  %113 = load ptr, ptr %33, align 8, !tbaa !5
  %114 = load i64, ptr %113, align 8, !tbaa !9
  store i64 %114, ptr %58, align 8, !tbaa !9
  %115 = load i64, ptr %58, align 8, !tbaa !9
  %116 = add nsw i64 1, %115
  store i64 %116, ptr %59, align 8, !tbaa !9
  %117 = load i64, ptr %59, align 8, !tbaa !9
  %118 = load ptr, ptr %44, align 8, !tbaa !5
  %119 = sub i64 0, %117
  %120 = getelementptr inbounds double, ptr %118, i64 %119
  store ptr %120, ptr %44, align 8, !tbaa !5
  %121 = load ptr, ptr %33, align 8, !tbaa !5
  %122 = load i64, ptr %121, align 8, !tbaa !9
  store i64 %122, ptr %60, align 8, !tbaa !9
  %123 = load i64, ptr %60, align 8, !tbaa !9
  %124 = add nsw i64 1, %123
  store i64 %124, ptr %61, align 8, !tbaa !9
  %125 = load i64, ptr %61, align 8, !tbaa !9
  %126 = load ptr, ptr %39, align 8, !tbaa !5
  %127 = sub i64 0, %125
  %128 = getelementptr inbounds double, ptr %126, i64 %127
  store ptr %128, ptr %39, align 8, !tbaa !5
  %129 = load ptr, ptr %33, align 8, !tbaa !5
  %130 = load i64, ptr %129, align 8, !tbaa !9
  store i64 %130, ptr %66, align 8, !tbaa !9
  %131 = load i64, ptr %66, align 8, !tbaa !9
  %132 = add nsw i64 1, %131
  store i64 %132, ptr %67, align 8, !tbaa !9
  %133 = load i64, ptr %67, align 8, !tbaa !9
  %134 = load ptr, ptr %38, align 8, !tbaa !5
  %135 = sub i64 0, %133
  %136 = getelementptr inbounds double, ptr %134, i64 %135
  store ptr %136, ptr %38, align 8, !tbaa !5
  %137 = load ptr, ptr %33, align 8, !tbaa !5
  %138 = load i64, ptr %137, align 8, !tbaa !9
  store i64 %138, ptr %56, align 8, !tbaa !9
  %139 = load i64, ptr %56, align 8, !tbaa !9
  %140 = add nsw i64 1, %139
  store i64 %140, ptr %57, align 8, !tbaa !9
  %141 = load i64, ptr %57, align 8, !tbaa !9
  %142 = load ptr, ptr %37, align 8, !tbaa !5
  %143 = sub i64 0, %141
  %144 = getelementptr inbounds double, ptr %142, i64 %143
  store ptr %144, ptr %37, align 8, !tbaa !5
  %145 = load ptr, ptr %33, align 8, !tbaa !5
  %146 = load i64, ptr %145, align 8, !tbaa !9
  store i64 %146, ptr %54, align 8, !tbaa !9
  %147 = load i64, ptr %54, align 8, !tbaa !9
  %148 = add nsw i64 1, %147
  store i64 %148, ptr %55, align 8, !tbaa !9
  %149 = load i64, ptr %55, align 8, !tbaa !9
  %150 = load ptr, ptr %36, align 8, !tbaa !5
  %151 = sub i64 0, %149
  %152 = getelementptr inbounds double, ptr %150, i64 %151
  store ptr %152, ptr %36, align 8, !tbaa !5
  %153 = load ptr, ptr %33, align 8, !tbaa !5
  %154 = load i64, ptr %153, align 8, !tbaa !9
  store i64 %154, ptr %64, align 8, !tbaa !9
  %155 = load i64, ptr %64, align 8, !tbaa !9
  %156 = add nsw i64 1, %155
  store i64 %156, ptr %65, align 8, !tbaa !9
  %157 = load i64, ptr %65, align 8, !tbaa !9
  %158 = load ptr, ptr %34, align 8, !tbaa !5
  %159 = sub i64 0, %157
  %160 = getelementptr inbounds double, ptr %158, i64 %159
  store ptr %160, ptr %34, align 8, !tbaa !5
  %161 = load ptr, ptr %33, align 8, !tbaa !5
  %162 = load i64, ptr %161, align 8, !tbaa !9
  store i64 %162, ptr %62, align 8, !tbaa !9
  %163 = load i64, ptr %62, align 8, !tbaa !9
  %164 = add nsw i64 1, %163
  store i64 %164, ptr %63, align 8, !tbaa !9
  %165 = load i64, ptr %63, align 8, !tbaa !9
  %166 = load ptr, ptr %32, align 8, !tbaa !5
  %167 = sub i64 0, %165
  %168 = getelementptr inbounds double, ptr %166, i64 %167
  store ptr %168, ptr %32, align 8, !tbaa !5
  %169 = load ptr, ptr %35, align 8, !tbaa !5
  %170 = getelementptr inbounds i64, ptr %169, i32 -1
  store ptr %170, ptr %35, align 8, !tbaa !5
  %171 = load ptr, ptr %40, align 8, !tbaa !5
  %172 = getelementptr inbounds i64, ptr %171, i32 -1
  store ptr %172, ptr %40, align 8, !tbaa !5
  %173 = load ptr, ptr %42, align 8, !tbaa !5
  %174 = load i64, ptr %173, align 8, !tbaa !9
  store i64 %174, ptr %52, align 8, !tbaa !9
  %175 = load i64, ptr %52, align 8, !tbaa !9
  %176 = add nsw i64 1, %175
  store i64 %176, ptr %53, align 8, !tbaa !9
  %177 = load i64, ptr %53, align 8, !tbaa !9
  %178 = load ptr, ptr %43, align 8, !tbaa !5
  %179 = sub i64 0, %177
  %180 = getelementptr inbounds i64, ptr %178, i64 %179
  store ptr %180, ptr %43, align 8, !tbaa !5
  %181 = load ptr, ptr %42, align 8, !tbaa !5
  %182 = load i64, ptr %181, align 8, !tbaa !9
  store i64 %182, ptr %50, align 8, !tbaa !9
  %183 = load i64, ptr %50, align 8, !tbaa !9
  %184 = add nsw i64 1, %183
  store i64 %184, ptr %51, align 8, !tbaa !9
  %185 = load i64, ptr %51, align 8, !tbaa !9
  %186 = load ptr, ptr %41, align 8, !tbaa !5
  %187 = sub i64 0, %185
  %188 = getelementptr inbounds i64, ptr %186, i64 %187
  store ptr %188, ptr %41, align 8, !tbaa !5
  %189 = load ptr, ptr %45, align 8, !tbaa !5
  %190 = getelementptr inbounds double, ptr %189, i32 -1
  store ptr %190, ptr %45, align 8, !tbaa !5
  %191 = load ptr, ptr %46, align 8, !tbaa !5
  %192 = getelementptr inbounds double, ptr %191, i32 -1
  store ptr %192, ptr %46, align 8, !tbaa !5
  %193 = load ptr, ptr %47, align 8, !tbaa !5
  %194 = getelementptr inbounds double, ptr %193, i32 -1
  store ptr %194, ptr %47, align 8, !tbaa !5
  %195 = load ptr, ptr %48, align 8, !tbaa !5
  %196 = getelementptr inbounds i64, ptr %195, i32 -1
  store ptr %196, ptr %48, align 8, !tbaa !5
  %197 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 0, ptr %197, align 8, !tbaa !9
  %198 = load ptr, ptr %26, align 8, !tbaa !5
  %199 = load i64, ptr %198, align 8, !tbaa !9
  %200 = icmp slt i64 %199, 0
  br i1 %200, label %205, label %201

201:                                              ; preds = %24
  %202 = load ptr, ptr %26, align 8, !tbaa !5
  %203 = load i64, ptr %202, align 8, !tbaa !9
  %204 = icmp sgt i64 %203, 1
  br i1 %204, label %205, label %207

205:                                              ; preds = %201, %24
  %206 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -1, ptr %206, align 8, !tbaa !9
  br label %253

207:                                              ; preds = %201
  %208 = load ptr, ptr %27, align 8, !tbaa !5
  %209 = load i64, ptr %208, align 8, !tbaa !9
  %210 = icmp slt i64 %209, 3
  br i1 %210, label %211, label %213

211:                                              ; preds = %207
  %212 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -2, ptr %212, align 8, !tbaa !9
  br label %252

213:                                              ; preds = %207
  %214 = load ptr, ptr %28, align 8, !tbaa !5
  %215 = load i64, ptr %214, align 8, !tbaa !9
  %216 = icmp slt i64 %215, 0
  br i1 %216, label %217, label %219

217:                                              ; preds = %213
  %218 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -3, ptr %218, align 8, !tbaa !9
  br label %251

219:                                              ; preds = %213
  %220 = load ptr, ptr %29, align 8, !tbaa !5
  %221 = load i64, ptr %220, align 8, !tbaa !9
  %222 = icmp slt i64 %221, 0
  br i1 %222, label %227, label %223

223:                                              ; preds = %219
  %224 = load ptr, ptr %29, align 8, !tbaa !5
  %225 = load i64, ptr %224, align 8, !tbaa !9
  %226 = icmp sgt i64 %225, 1
  br i1 %226, label %227, label %229

227:                                              ; preds = %223, %219
  %228 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -4, ptr %228, align 8, !tbaa !9
  br label %250

229:                                              ; preds = %223
  %230 = load ptr, ptr %33, align 8, !tbaa !5
  %231 = load i64, ptr %230, align 8, !tbaa !9
  %232 = load ptr, ptr %28, align 8, !tbaa !5
  %233 = load i64, ptr %232, align 8, !tbaa !9
  %234 = load ptr, ptr %29, align 8, !tbaa !5
  %235 = load i64, ptr %234, align 8, !tbaa !9
  %236 = add nsw i64 %233, %235
  %237 = icmp slt i64 %231, %236
  br i1 %237, label %238, label %240

238:                                              ; preds = %229
  %239 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -8, ptr %239, align 8, !tbaa !9
  br label %249

240:                                              ; preds = %229
  %241 = load ptr, ptr %42, align 8, !tbaa !5
  %242 = load i64, ptr %241, align 8, !tbaa !9
  %243 = load ptr, ptr %28, align 8, !tbaa !5
  %244 = load i64, ptr %243, align 8, !tbaa !9
  %245 = icmp slt i64 %242, %244
  br i1 %245, label %246, label %248

246:                                              ; preds = %240
  %247 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -17, ptr %247, align 8, !tbaa !9
  br label %248

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

249:                                              ; preds = %248, %238
  br label %250

250:                                              ; preds = %249, %227
  br label %251

251:                                              ; preds = %250, %217
  br label %252

252:                                              ; preds = %251, %211
  br label %253

253:                                              ; preds = %252, %205
  %254 = load ptr, ptr %49, align 8, !tbaa !5
  %255 = load i64, ptr %254, align 8, !tbaa !9
  %256 = icmp ne i64 %255, 0
  br i1 %256, label %257, label %262

257:                                              ; preds = %253
  %258 = load ptr, ptr %49, align 8, !tbaa !5
  %259 = load i64, ptr %258, align 8, !tbaa !9
  %260 = sub nsw i64 0, %259
  store i64 %260, ptr %68, align 8, !tbaa !9
  %261 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %68)
  store i32 0, ptr %25, align 4
  store i32 1, ptr %108, align 4
  br label %947

262:                                              ; preds = %253
  %263 = load ptr, ptr %28, align 8, !tbaa !5
  %264 = load i64, ptr %263, align 8, !tbaa !9
  %265 = load ptr, ptr %29, align 8, !tbaa !5
  %266 = load i64, ptr %265, align 8, !tbaa !9
  %267 = add nsw i64 %264, %266
  store i64 %267, ptr %72, align 8, !tbaa !9
  %268 = load ptr, ptr %28, align 8, !tbaa !5
  %269 = load i64, ptr %268, align 8, !tbaa !9
  %270 = load ptr, ptr %27, align 8, !tbaa !5
  %271 = load i64, ptr %270, align 8, !tbaa !9
  %272 = icmp sle i64 %269, %271
  br i1 %272, label %273, label %325

273:                                              ; preds = %262
  %274 = load ptr, ptr %26, align 8, !tbaa !5
  %275 = load i64, ptr %274, align 8, !tbaa !9
  %276 = icmp eq i64 %275, 0
  br i1 %276, label %277, label %300

277:                                              ; preds = %273
  %278 = load ptr, ptr %29, align 8, !tbaa !5
  %279 = load ptr, ptr %28, align 8, !tbaa !5
  %280 = load ptr, ptr %30, align 8, !tbaa !5
  %281 = getelementptr inbounds double, ptr %280, i64 1
  %282 = load ptr, ptr %31, align 8, !tbaa !5
  %283 = getelementptr inbounds double, ptr %282, i64 1
  %284 = load ptr, ptr %34, align 8, !tbaa !5
  %285 = load i64, ptr %65, align 8, !tbaa !9
  %286 = getelementptr inbounds double, ptr %284, i64 %285
  %287 = load ptr, ptr %33, align 8, !tbaa !5
  %288 = load ptr, ptr %32, align 8, !tbaa !5
  %289 = load i64, ptr %63, align 8, !tbaa !9
  %290 = getelementptr inbounds double, ptr %288, i64 %289
  %291 = load ptr, ptr %33, align 8, !tbaa !5
  %292 = load ptr, ptr %32, align 8, !tbaa !5
  %293 = load i64, ptr %63, align 8, !tbaa !9
  %294 = getelementptr inbounds double, ptr %292, i64 %293
  %295 = load ptr, ptr %33, align 8, !tbaa !5
  %296 = load ptr, ptr %47, align 8, !tbaa !5
  %297 = getelementptr inbounds double, ptr %296, i64 1
  %298 = load ptr, ptr %49, align 8, !tbaa !5
  %299 = call i32 @dlasdq_(ptr noundef @.str.1, ptr noundef %278, ptr noundef %279, ptr noundef @c__0, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %281, ptr noundef %283, ptr noundef %286, ptr noundef %287, ptr noundef %290, ptr noundef %291, ptr noundef %294, ptr noundef %295, ptr noundef %297, ptr noundef %298)
  br label %324

300:                                              ; preds = %273
  %301 = load ptr, ptr %29, align 8, !tbaa !5
  %302 = load ptr, ptr %28, align 8, !tbaa !5
  %303 = load ptr, ptr %28, align 8, !tbaa !5
  %304 = load ptr, ptr %30, align 8, !tbaa !5
  %305 = getelementptr inbounds double, ptr %304, i64 1
  %306 = load ptr, ptr %31, align 8, !tbaa !5
  %307 = getelementptr inbounds double, ptr %306, i64 1
  %308 = load ptr, ptr %34, align 8, !tbaa !5
  %309 = load i64, ptr %65, align 8, !tbaa !9
  %310 = getelementptr inbounds double, ptr %308, i64 %309
  %311 = load ptr, ptr %33, align 8, !tbaa !5
  %312 = load ptr, ptr %32, align 8, !tbaa !5
  %313 = load i64, ptr %63, align 8, !tbaa !9
  %314 = getelementptr inbounds double, ptr %312, i64 %313
  %315 = load ptr, ptr %33, align 8, !tbaa !5
  %316 = load ptr, ptr %32, align 8, !tbaa !5
  %317 = load i64, ptr %63, align 8, !tbaa !9
  %318 = getelementptr inbounds double, ptr %316, i64 %317
  %319 = load ptr, ptr %33, align 8, !tbaa !5
  %320 = load ptr, ptr %47, align 8, !tbaa !5
  %321 = getelementptr inbounds double, ptr %320, i64 1
  %322 = load ptr, ptr %49, align 8, !tbaa !5
  %323 = call i32 @dlasdq_(ptr noundef @.str.1, ptr noundef %301, ptr noundef %302, ptr noundef %72, ptr noundef %303, ptr noundef @c__0, ptr noundef %305, ptr noundef %307, ptr noundef %310, ptr noundef %311, ptr noundef %314, ptr noundef %315, ptr noundef %318, ptr noundef %319, ptr noundef %321, ptr noundef %322)
  br label %324

324:                                              ; preds = %300, %277
  store i32 0, ptr %25, align 4
  store i32 1, ptr %108, align 4
  br label %947

325:                                              ; preds = %262
  store i64 1, ptr %99, align 8, !tbaa !9
  %326 = load i64, ptr %99, align 8, !tbaa !9
  %327 = load ptr, ptr %28, align 8, !tbaa !5
  %328 = load i64, ptr %327, align 8, !tbaa !9
  %329 = add nsw i64 %326, %328
  store i64 %329, ptr %100, align 8, !tbaa !9
  %330 = load i64, ptr %100, align 8, !tbaa !9
  %331 = load ptr, ptr %28, align 8, !tbaa !5
  %332 = load i64, ptr %331, align 8, !tbaa !9
  %333 = add nsw i64 %330, %332
  store i64 %333, ptr %101, align 8, !tbaa !9
  %334 = load i64, ptr %101, align 8, !tbaa !9
  %335 = load ptr, ptr %28, align 8, !tbaa !5
  %336 = load i64, ptr %335, align 8, !tbaa !9
  %337 = add nsw i64 %334, %336
  store i64 %337, ptr %96, align 8, !tbaa !9
  %338 = load i64, ptr %96, align 8, !tbaa !9
  %339 = load ptr, ptr %28, align 8, !tbaa !5
  %340 = load i64, ptr %339, align 8, !tbaa !9
  %341 = add nsw i64 %338, %340
  store i64 %341, ptr %87, align 8, !tbaa !9
  store i64 0, ptr %83, align 8, !tbaa !9
  store i64 0, ptr %90, align 8, !tbaa !9
  %342 = load ptr, ptr %27, align 8, !tbaa !5
  %343 = load i64, ptr %342, align 8, !tbaa !9
  %344 = add nsw i64 %343, 1
  store i64 %344, ptr %107, align 8, !tbaa !9
  store i64 1, ptr %79, align 8, !tbaa !9
  %345 = load i64, ptr %79, align 8, !tbaa !9
  %346 = load i64, ptr %72, align 8, !tbaa !9
  %347 = add nsw i64 %345, %346
  store i64 %347, ptr %81, align 8, !tbaa !9
  %348 = load i64, ptr %81, align 8, !tbaa !9
  %349 = load i64, ptr %72, align 8, !tbaa !9
  %350 = add nsw i64 %348, %349
  store i64 %350, ptr %105, align 8, !tbaa !9
  %351 = load i64, ptr %105, align 8, !tbaa !9
  %352 = load i64, ptr %107, align 8, !tbaa !9
  %353 = load i64, ptr %107, align 8, !tbaa !9
  %354 = mul nsw i64 %352, %353
  %355 = add nsw i64 %351, %354
  store i64 %355, ptr %106, align 8, !tbaa !9
  %356 = load ptr, ptr %28, align 8, !tbaa !5
  %357 = load ptr, ptr %48, align 8, !tbaa !5
  %358 = load i64, ptr %99, align 8, !tbaa !9
  %359 = getelementptr inbounds i64, ptr %357, i64 %358
  %360 = load ptr, ptr %48, align 8, !tbaa !5
  %361 = load i64, ptr %100, align 8, !tbaa !9
  %362 = getelementptr inbounds i64, ptr %360, i64 %361
  %363 = load ptr, ptr %48, align 8, !tbaa !5
  %364 = load i64, ptr %101, align 8, !tbaa !9
  %365 = getelementptr inbounds i64, ptr %363, i64 %364
  %366 = load ptr, ptr %27, align 8, !tbaa !5
  %367 = call i32 @dlasdt_(ptr noundef %356, ptr noundef %97, ptr noundef %76, ptr noundef %359, ptr noundef %362, ptr noundef %365, ptr noundef %366)
  %368 = load i64, ptr %76, align 8, !tbaa !9
  %369 = add nsw i64 %368, 1
  %370 = sdiv i64 %369, 2
  store i64 %370, ptr %91, align 8, !tbaa !9
  %371 = load i64, ptr %76, align 8, !tbaa !9
  store i64 %371, ptr %68, align 8, !tbaa !9
  %372 = load i64, ptr %91, align 8, !tbaa !9
  store i64 %372, ptr %70, align 8, !tbaa !9
  br label %373

373:                                              ; preds = %706, %325
  %374 = load i64, ptr %70, align 8, !tbaa !9
  %375 = load i64, ptr %68, align 8, !tbaa !9
  %376 = icmp sle i64 %374, %375
  br i1 %376, label %377, label %709

377:                                              ; preds = %373
  %378 = load i64, ptr %70, align 8, !tbaa !9
  %379 = sub nsw i64 %378, 1
  store i64 %379, ptr %73, align 8, !tbaa !9
  %380 = load ptr, ptr %48, align 8, !tbaa !5
  %381 = load i64, ptr %99, align 8, !tbaa !9
  %382 = load i64, ptr %73, align 8, !tbaa !9
  %383 = add nsw i64 %381, %382
  %384 = getelementptr inbounds i64, ptr %380, i64 %383
  %385 = load i64, ptr %384, align 8, !tbaa !9
  store i64 %385, ptr %74, align 8, !tbaa !9
  %386 = load ptr, ptr %48, align 8, !tbaa !5
  %387 = load i64, ptr %100, align 8, !tbaa !9
  %388 = load i64, ptr %73, align 8, !tbaa !9
  %389 = add nsw i64 %387, %388
  %390 = getelementptr inbounds i64, ptr %386, i64 %389
  %391 = load i64, ptr %390, align 8, !tbaa !9
  store i64 %391, ptr %78, align 8, !tbaa !9
  %392 = load i64, ptr %78, align 8, !tbaa !9
  %393 = add nsw i64 %392, 1
  store i64 %393, ptr %92, align 8, !tbaa !9
  %394 = load ptr, ptr %48, align 8, !tbaa !5
  %395 = load i64, ptr %101, align 8, !tbaa !9
  %396 = load i64, ptr %73, align 8, !tbaa !9
  %397 = add nsw i64 %395, %396
  %398 = getelementptr inbounds i64, ptr %394, i64 %397
  %399 = load i64, ptr %398, align 8, !tbaa !9
  store i64 %399, ptr %80, align 8, !tbaa !9
  %400 = load i64, ptr %74, align 8, !tbaa !9
  %401 = load i64, ptr %78, align 8, !tbaa !9
  %402 = sub nsw i64 %400, %401
  store i64 %402, ptr %84, align 8, !tbaa !9
  %403 = load i64, ptr %74, align 8, !tbaa !9
  %404 = add nsw i64 %403, 1
  store i64 %404, ptr %85, align 8, !tbaa !9
  %405 = load i64, ptr %96, align 8, !tbaa !9
  %406 = load i64, ptr %84, align 8, !tbaa !9
  %407 = add nsw i64 %405, %406
  %408 = sub nsw i64 %407, 2
  store i64 %408, ptr %102, align 8, !tbaa !9
  %409 = load i64, ptr %79, align 8, !tbaa !9
  %410 = load i64, ptr %84, align 8, !tbaa !9
  %411 = add nsw i64 %409, %410
  %412 = sub nsw i64 %411, 1
  store i64 %412, ptr %86, align 8, !tbaa !9
  %413 = load i64, ptr %81, align 8, !tbaa !9
  %414 = load i64, ptr %84, align 8, !tbaa !9
  %415 = add nsw i64 %413, %414
  %416 = sub nsw i64 %415, 1
  store i64 %416, ptr %88, align 8, !tbaa !9
  store i64 1, ptr %104, align 8, !tbaa !9
  %417 = load ptr, ptr %26, align 8, !tbaa !5
  %418 = load i64, ptr %417, align 8, !tbaa !9
  %419 = icmp eq i64 %418, 0
  br i1 %419, label %420, label %464

420:                                              ; preds = %377
  %421 = load ptr, ptr %47, align 8, !tbaa !5
  %422 = load i64, ptr %105, align 8, !tbaa !9
  %423 = getelementptr inbounds double, ptr %421, i64 %422
  %424 = call i32 @dlaset_(ptr noundef @.str.2, ptr noundef %92, ptr noundef %92, ptr noundef @c_b11, ptr noundef @c_b12, ptr noundef %423, ptr noundef %107)
  %425 = load ptr, ptr %30, align 8, !tbaa !5
  %426 = load i64, ptr %84, align 8, !tbaa !9
  %427 = getelementptr inbounds double, ptr %425, i64 %426
  %428 = load ptr, ptr %31, align 8, !tbaa !5
  %429 = load i64, ptr %84, align 8, !tbaa !9
  %430 = getelementptr inbounds double, ptr %428, i64 %429
  %431 = load ptr, ptr %47, align 8, !tbaa !5
  %432 = load i64, ptr %105, align 8, !tbaa !9
  %433 = getelementptr inbounds double, ptr %431, i64 %432
  %434 = load ptr, ptr %47, align 8, !tbaa !5
  %435 = load i64, ptr %106, align 8, !tbaa !9
  %436 = getelementptr inbounds double, ptr %434, i64 %435
  %437 = load ptr, ptr %47, align 8, !tbaa !5
  %438 = load i64, ptr %106, align 8, !tbaa !9
  %439 = getelementptr inbounds double, ptr %437, i64 %438
  %440 = load ptr, ptr %47, align 8, !tbaa !5
  %441 = load i64, ptr %106, align 8, !tbaa !9
  %442 = getelementptr inbounds double, ptr %440, i64 %441
  %443 = load ptr, ptr %49, align 8, !tbaa !5
  %444 = call i32 @dlasdq_(ptr noundef @.str.1, ptr noundef %104, ptr noundef %78, ptr noundef %92, ptr noundef %90, ptr noundef %83, ptr noundef %427, ptr noundef %430, ptr noundef %433, ptr noundef %107, ptr noundef %436, ptr noundef %78, ptr noundef %439, ptr noundef %78, ptr noundef %442, ptr noundef %443)
  %445 = load i64, ptr %105, align 8, !tbaa !9
  %446 = load i64, ptr %78, align 8, !tbaa !9
  %447 = load i64, ptr %107, align 8, !tbaa !9
  %448 = mul nsw i64 %446, %447
  %449 = add nsw i64 %445, %448
  store i64 %449, ptr %103, align 8, !tbaa !9
  %450 = load ptr, ptr %47, align 8, !tbaa !5
  %451 = load i64, ptr %105, align 8, !tbaa !9
  %452 = getelementptr inbounds double, ptr %450, i64 %451
  %453 = load ptr, ptr %47, align 8, !tbaa !5
  %454 = load i64, ptr %86, align 8, !tbaa !9
  %455 = getelementptr inbounds double, ptr %453, i64 %454
  %456 = call i32 @f2c_dcopy(ptr noundef %92, ptr noundef %452, ptr noundef @c__1, ptr noundef %455, ptr noundef @c__1)
  %457 = load ptr, ptr %47, align 8, !tbaa !5
  %458 = load i64, ptr %103, align 8, !tbaa !9
  %459 = getelementptr inbounds double, ptr %457, i64 %458
  %460 = load ptr, ptr %47, align 8, !tbaa !5
  %461 = load i64, ptr %88, align 8, !tbaa !9
  %462 = getelementptr inbounds double, ptr %460, i64 %461
  %463 = call i32 @f2c_dcopy(ptr noundef %92, ptr noundef %459, ptr noundef @c__1, ptr noundef %462, ptr noundef @c__1)
  br label %528

464:                                              ; preds = %377
  %465 = load ptr, ptr %32, align 8, !tbaa !5
  %466 = load i64, ptr %84, align 8, !tbaa !9
  %467 = load i64, ptr %62, align 8, !tbaa !9
  %468 = add nsw i64 %466, %467
  %469 = getelementptr inbounds double, ptr %465, i64 %468
  %470 = load ptr, ptr %33, align 8, !tbaa !5
  %471 = call i32 @dlaset_(ptr noundef @.str.2, ptr noundef %78, ptr noundef %78, ptr noundef @c_b11, ptr noundef @c_b12, ptr noundef %469, ptr noundef %470)
  %472 = load ptr, ptr %34, align 8, !tbaa !5
  %473 = load i64, ptr %84, align 8, !tbaa !9
  %474 = load i64, ptr %64, align 8, !tbaa !9
  %475 = add nsw i64 %473, %474
  %476 = getelementptr inbounds double, ptr %472, i64 %475
  %477 = load ptr, ptr %33, align 8, !tbaa !5
  %478 = call i32 @dlaset_(ptr noundef @.str.2, ptr noundef %92, ptr noundef %92, ptr noundef @c_b11, ptr noundef @c_b12, ptr noundef %476, ptr noundef %477)
  %479 = load ptr, ptr %30, align 8, !tbaa !5
  %480 = load i64, ptr %84, align 8, !tbaa !9
  %481 = getelementptr inbounds double, ptr %479, i64 %480
  %482 = load ptr, ptr %31, align 8, !tbaa !5
  %483 = load i64, ptr %84, align 8, !tbaa !9
  %484 = getelementptr inbounds double, ptr %482, i64 %483
  %485 = load ptr, ptr %34, align 8, !tbaa !5
  %486 = load i64, ptr %84, align 8, !tbaa !9
  %487 = load i64, ptr %64, align 8, !tbaa !9
  %488 = add nsw i64 %486, %487
  %489 = getelementptr inbounds double, ptr %485, i64 %488
  %490 = load ptr, ptr %33, align 8, !tbaa !5
  %491 = load ptr, ptr %32, align 8, !tbaa !5
  %492 = load i64, ptr %84, align 8, !tbaa !9
  %493 = load i64, ptr %62, align 8, !tbaa !9
  %494 = add nsw i64 %492, %493
  %495 = getelementptr inbounds double, ptr %491, i64 %494
  %496 = load ptr, ptr %33, align 8, !tbaa !5
  %497 = load ptr, ptr %32, align 8, !tbaa !5
  %498 = load i64, ptr %84, align 8, !tbaa !9
  %499 = load i64, ptr %62, align 8, !tbaa !9
  %500 = add nsw i64 %498, %499
  %501 = getelementptr inbounds double, ptr %497, i64 %500
  %502 = load ptr, ptr %33, align 8, !tbaa !5
  %503 = load ptr, ptr %47, align 8, !tbaa !5
  %504 = load i64, ptr %105, align 8, !tbaa !9
  %505 = getelementptr inbounds double, ptr %503, i64 %504
  %506 = load ptr, ptr %49, align 8, !tbaa !5
  %507 = call i32 @dlasdq_(ptr noundef @.str.1, ptr noundef %104, ptr noundef %78, ptr noundef %92, ptr noundef %78, ptr noundef %83, ptr noundef %481, ptr noundef %484, ptr noundef %489, ptr noundef %490, ptr noundef %495, ptr noundef %496, ptr noundef %501, ptr noundef %502, ptr noundef %505, ptr noundef %506)
  %508 = load ptr, ptr %34, align 8, !tbaa !5
  %509 = load i64, ptr %84, align 8, !tbaa !9
  %510 = load i64, ptr %64, align 8, !tbaa !9
  %511 = add nsw i64 %509, %510
  %512 = getelementptr inbounds double, ptr %508, i64 %511
  %513 = load ptr, ptr %47, align 8, !tbaa !5
  %514 = load i64, ptr %86, align 8, !tbaa !9
  %515 = getelementptr inbounds double, ptr %513, i64 %514
  %516 = call i32 @f2c_dcopy(ptr noundef %92, ptr noundef %512, ptr noundef @c__1, ptr noundef %515, ptr noundef @c__1)
  %517 = load ptr, ptr %34, align 8, !tbaa !5
  %518 = load i64, ptr %84, align 8, !tbaa !9
  %519 = load i64, ptr %92, align 8, !tbaa !9
  %520 = load i64, ptr %64, align 8, !tbaa !9
  %521 = mul nsw i64 %519, %520
  %522 = add nsw i64 %518, %521
  %523 = getelementptr inbounds double, ptr %517, i64 %522
  %524 = load ptr, ptr %47, align 8, !tbaa !5
  %525 = load i64, ptr %88, align 8, !tbaa !9
  %526 = getelementptr inbounds double, ptr %524, i64 %525
  %527 = call i32 @f2c_dcopy(ptr noundef %92, ptr noundef %523, ptr noundef @c__1, ptr noundef %526, ptr noundef @c__1)
  br label %528

528:                                              ; preds = %464, %420
  %529 = load ptr, ptr %49, align 8, !tbaa !5
  %530 = load i64, ptr %529, align 8, !tbaa !9
  %531 = icmp ne i64 %530, 0
  br i1 %531, label %532, label %533

532:                                              ; preds = %528
  store i32 0, ptr %25, align 4
  store i32 1, ptr %108, align 4
  br label %947

533:                                              ; preds = %528
  %534 = load i64, ptr %78, align 8, !tbaa !9
  store i64 %534, ptr %69, align 8, !tbaa !9
  store i64 1, ptr %71, align 8, !tbaa !9
  br label %535

535:                                              ; preds = %546, %533
  %536 = load i64, ptr %71, align 8, !tbaa !9
  %537 = load i64, ptr %69, align 8, !tbaa !9
  %538 = icmp sle i64 %536, %537
  br i1 %538, label %539, label %549

539:                                              ; preds = %535
  %540 = load i64, ptr %71, align 8, !tbaa !9
  %541 = load ptr, ptr %48, align 8, !tbaa !5
  %542 = load i64, ptr %102, align 8, !tbaa !9
  %543 = load i64, ptr %71, align 8, !tbaa !9
  %544 = add nsw i64 %542, %543
  %545 = getelementptr inbounds i64, ptr %541, i64 %544
  store i64 %540, ptr %545, align 8, !tbaa !9
  br label %546

546:                                              ; preds = %539
  %547 = load i64, ptr %71, align 8, !tbaa !9
  %548 = add nsw i64 %547, 1
  store i64 %548, ptr %71, align 8, !tbaa !9
  br label %535, !llvm.loop !11

549:                                              ; preds = %535
  %550 = load i64, ptr %70, align 8, !tbaa !9
  %551 = load i64, ptr %76, align 8, !tbaa !9
  %552 = icmp eq i64 %550, %551
  br i1 %552, label %553, label %558

553:                                              ; preds = %549
  %554 = load ptr, ptr %29, align 8, !tbaa !5
  %555 = load i64, ptr %554, align 8, !tbaa !9
  %556 = icmp eq i64 %555, 0
  br i1 %556, label %557, label %558

557:                                              ; preds = %553
  store i64 0, ptr %104, align 8, !tbaa !9
  br label %559

558:                                              ; preds = %553, %549
  store i64 1, ptr %104, align 8, !tbaa !9
  br label %559

559:                                              ; preds = %558, %557
  %560 = load i64, ptr %92, align 8, !tbaa !9
  %561 = load i64, ptr %102, align 8, !tbaa !9
  %562 = add nsw i64 %561, %560
  store i64 %562, ptr %102, align 8, !tbaa !9
  %563 = load i64, ptr %92, align 8, !tbaa !9
  %564 = load i64, ptr %86, align 8, !tbaa !9
  %565 = add nsw i64 %564, %563
  store i64 %565, ptr %86, align 8, !tbaa !9
  %566 = load i64, ptr %92, align 8, !tbaa !9
  %567 = load i64, ptr %88, align 8, !tbaa !9
  %568 = add nsw i64 %567, %566
  store i64 %568, ptr %88, align 8, !tbaa !9
  %569 = load i64, ptr %80, align 8, !tbaa !9
  %570 = load i64, ptr %104, align 8, !tbaa !9
  %571 = add nsw i64 %569, %570
  store i64 %571, ptr %94, align 8, !tbaa !9
  %572 = load ptr, ptr %26, align 8, !tbaa !5
  %573 = load i64, ptr %572, align 8, !tbaa !9
  %574 = icmp eq i64 %573, 0
  br i1 %574, label %575, label %620

575:                                              ; preds = %559
  %576 = load ptr, ptr %47, align 8, !tbaa !5
  %577 = load i64, ptr %105, align 8, !tbaa !9
  %578 = getelementptr inbounds double, ptr %576, i64 %577
  %579 = call i32 @dlaset_(ptr noundef @.str.2, ptr noundef %94, ptr noundef %94, ptr noundef @c_b11, ptr noundef @c_b12, ptr noundef %578, ptr noundef %107)
  %580 = load ptr, ptr %30, align 8, !tbaa !5
  %581 = load i64, ptr %85, align 8, !tbaa !9
  %582 = getelementptr inbounds double, ptr %580, i64 %581
  %583 = load ptr, ptr %31, align 8, !tbaa !5
  %584 = load i64, ptr %85, align 8, !tbaa !9
  %585 = getelementptr inbounds double, ptr %583, i64 %584
  %586 = load ptr, ptr %47, align 8, !tbaa !5
  %587 = load i64, ptr %105, align 8, !tbaa !9
  %588 = getelementptr inbounds double, ptr %586, i64 %587
  %589 = load ptr, ptr %47, align 8, !tbaa !5
  %590 = load i64, ptr %106, align 8, !tbaa !9
  %591 = getelementptr inbounds double, ptr %589, i64 %590
  %592 = load ptr, ptr %47, align 8, !tbaa !5
  %593 = load i64, ptr %106, align 8, !tbaa !9
  %594 = getelementptr inbounds double, ptr %592, i64 %593
  %595 = load ptr, ptr %47, align 8, !tbaa !5
  %596 = load i64, ptr %106, align 8, !tbaa !9
  %597 = getelementptr inbounds double, ptr %595, i64 %596
  %598 = load ptr, ptr %49, align 8, !tbaa !5
  %599 = call i32 @dlasdq_(ptr noundef @.str.1, ptr noundef %104, ptr noundef %80, ptr noundef %94, ptr noundef %90, ptr noundef %83, ptr noundef %582, ptr noundef %585, ptr noundef %588, ptr noundef %107, ptr noundef %591, ptr noundef %80, ptr noundef %594, ptr noundef %80, ptr noundef %597, ptr noundef %598)
  %600 = load i64, ptr %105, align 8, !tbaa !9
  %601 = load i64, ptr %94, align 8, !tbaa !9
  %602 = sub nsw i64 %601, 1
  %603 = load i64, ptr %107, align 8, !tbaa !9
  %604 = mul nsw i64 %602, %603
  %605 = add nsw i64 %600, %604
  store i64 %605, ptr %103, align 8, !tbaa !9
  %606 = load ptr, ptr %47, align 8, !tbaa !5
  %607 = load i64, ptr %105, align 8, !tbaa !9
  %608 = getelementptr inbounds double, ptr %606, i64 %607
  %609 = load ptr, ptr %47, align 8, !tbaa !5
  %610 = load i64, ptr %86, align 8, !tbaa !9
  %611 = getelementptr inbounds double, ptr %609, i64 %610
  %612 = call i32 @f2c_dcopy(ptr noundef %94, ptr noundef %608, ptr noundef @c__1, ptr noundef %611, ptr noundef @c__1)
  %613 = load ptr, ptr %47, align 8, !tbaa !5
  %614 = load i64, ptr %103, align 8, !tbaa !9
  %615 = getelementptr inbounds double, ptr %613, i64 %614
  %616 = load ptr, ptr %47, align 8, !tbaa !5
  %617 = load i64, ptr %88, align 8, !tbaa !9
  %618 = getelementptr inbounds double, ptr %616, i64 %617
  %619 = call i32 @f2c_dcopy(ptr noundef %94, ptr noundef %615, ptr noundef @c__1, ptr noundef %618, ptr noundef @c__1)
  br label %684

620:                                              ; preds = %559
  %621 = load ptr, ptr %32, align 8, !tbaa !5
  %622 = load i64, ptr %85, align 8, !tbaa !9
  %623 = load i64, ptr %62, align 8, !tbaa !9
  %624 = add nsw i64 %622, %623
  %625 = getelementptr inbounds double, ptr %621, i64 %624
  %626 = load ptr, ptr %33, align 8, !tbaa !5
  %627 = call i32 @dlaset_(ptr noundef @.str.2, ptr noundef %80, ptr noundef %80, ptr noundef @c_b11, ptr noundef @c_b12, ptr noundef %625, ptr noundef %626)
  %628 = load ptr, ptr %34, align 8, !tbaa !5
  %629 = load i64, ptr %85, align 8, !tbaa !9
  %630 = load i64, ptr %64, align 8, !tbaa !9
  %631 = add nsw i64 %629, %630
  %632 = getelementptr inbounds double, ptr %628, i64 %631
  %633 = load ptr, ptr %33, align 8, !tbaa !5
  %634 = call i32 @dlaset_(ptr noundef @.str.2, ptr noundef %94, ptr noundef %94, ptr noundef @c_b11, ptr noundef @c_b12, ptr noundef %632, ptr noundef %633)
  %635 = load ptr, ptr %30, align 8, !tbaa !5
  %636 = load i64, ptr %85, align 8, !tbaa !9
  %637 = getelementptr inbounds double, ptr %635, i64 %636
  %638 = load ptr, ptr %31, align 8, !tbaa !5
  %639 = load i64, ptr %85, align 8, !tbaa !9
  %640 = getelementptr inbounds double, ptr %638, i64 %639
  %641 = load ptr, ptr %34, align 8, !tbaa !5
  %642 = load i64, ptr %85, align 8, !tbaa !9
  %643 = load i64, ptr %64, align 8, !tbaa !9
  %644 = add nsw i64 %642, %643
  %645 = getelementptr inbounds double, ptr %641, i64 %644
  %646 = load ptr, ptr %33, align 8, !tbaa !5
  %647 = load ptr, ptr %32, align 8, !tbaa !5
  %648 = load i64, ptr %85, align 8, !tbaa !9
  %649 = load i64, ptr %62, align 8, !tbaa !9
  %650 = add nsw i64 %648, %649
  %651 = getelementptr inbounds double, ptr %647, i64 %650
  %652 = load ptr, ptr %33, align 8, !tbaa !5
  %653 = load ptr, ptr %32, align 8, !tbaa !5
  %654 = load i64, ptr %85, align 8, !tbaa !9
  %655 = load i64, ptr %62, align 8, !tbaa !9
  %656 = add nsw i64 %654, %655
  %657 = getelementptr inbounds double, ptr %653, i64 %656
  %658 = load ptr, ptr %33, align 8, !tbaa !5
  %659 = load ptr, ptr %47, align 8, !tbaa !5
  %660 = load i64, ptr %105, align 8, !tbaa !9
  %661 = getelementptr inbounds double, ptr %659, i64 %660
  %662 = load ptr, ptr %49, align 8, !tbaa !5
  %663 = call i32 @dlasdq_(ptr noundef @.str.1, ptr noundef %104, ptr noundef %80, ptr noundef %94, ptr noundef %80, ptr noundef %83, ptr noundef %637, ptr noundef %640, ptr noundef %645, ptr noundef %646, ptr noundef %651, ptr noundef %652, ptr noundef %657, ptr noundef %658, ptr noundef %661, ptr noundef %662)
  %664 = load ptr, ptr %34, align 8, !tbaa !5
  %665 = load i64, ptr %85, align 8, !tbaa !9
  %666 = load i64, ptr %64, align 8, !tbaa !9
  %667 = add nsw i64 %665, %666
  %668 = getelementptr inbounds double, ptr %664, i64 %667
  %669 = load ptr, ptr %47, align 8, !tbaa !5
  %670 = load i64, ptr %86, align 8, !tbaa !9
  %671 = getelementptr inbounds double, ptr %669, i64 %670
  %672 = call i32 @f2c_dcopy(ptr noundef %94, ptr noundef %668, ptr noundef @c__1, ptr noundef %671, ptr noundef @c__1)
  %673 = load ptr, ptr %34, align 8, !tbaa !5
  %674 = load i64, ptr %85, align 8, !tbaa !9
  %675 = load i64, ptr %94, align 8, !tbaa !9
  %676 = load i64, ptr %64, align 8, !tbaa !9
  %677 = mul nsw i64 %675, %676
  %678 = add nsw i64 %674, %677
  %679 = getelementptr inbounds double, ptr %673, i64 %678
  %680 = load ptr, ptr %47, align 8, !tbaa !5
  %681 = load i64, ptr %88, align 8, !tbaa !9
  %682 = getelementptr inbounds double, ptr %680, i64 %681
  %683 = call i32 @f2c_dcopy(ptr noundef %94, ptr noundef %679, ptr noundef @c__1, ptr noundef %682, ptr noundef @c__1)
  br label %684

684:                                              ; preds = %620, %575
  %685 = load ptr, ptr %49, align 8, !tbaa !5
  %686 = load i64, ptr %685, align 8, !tbaa !9
  %687 = icmp ne i64 %686, 0
  br i1 %687, label %688, label %689

688:                                              ; preds = %684
  store i32 0, ptr %25, align 4
  store i32 1, ptr %108, align 4
  br label %947

689:                                              ; preds = %684
  %690 = load i64, ptr %80, align 8, !tbaa !9
  store i64 %690, ptr %69, align 8, !tbaa !9
  store i64 1, ptr %71, align 8, !tbaa !9
  br label %691

691:                                              ; preds = %702, %689
  %692 = load i64, ptr %71, align 8, !tbaa !9
  %693 = load i64, ptr %69, align 8, !tbaa !9
  %694 = icmp sle i64 %692, %693
  br i1 %694, label %695, label %705

695:                                              ; preds = %691
  %696 = load i64, ptr %71, align 8, !tbaa !9
  %697 = load ptr, ptr %48, align 8, !tbaa !5
  %698 = load i64, ptr %102, align 8, !tbaa !9
  %699 = load i64, ptr %71, align 8, !tbaa !9
  %700 = add nsw i64 %698, %699
  %701 = getelementptr inbounds i64, ptr %697, i64 %700
  store i64 %696, ptr %701, align 8, !tbaa !9
  br label %702

702:                                              ; preds = %695
  %703 = load i64, ptr %71, align 8, !tbaa !9
  %704 = add nsw i64 %703, 1
  store i64 %704, ptr %71, align 8, !tbaa !9
  br label %691, !llvm.loop !13

705:                                              ; preds = %691
  br label %706

706:                                              ; preds = %705
  %707 = load i64, ptr %70, align 8, !tbaa !9
  %708 = add nsw i64 %707, 1
  store i64 %708, ptr %70, align 8, !tbaa !9
  br label %373, !llvm.loop !14

709:                                              ; preds = %373
  %710 = call i64 @pow_ii(ptr noundef @c__2, ptr noundef %97)
  store i64 %710, ptr %71, align 8, !tbaa !9
  %711 = load i64, ptr %97, align 8, !tbaa !9
  store i64 %711, ptr %89, align 8, !tbaa !9
  br label %712

712:                                              ; preds = %943, %709
  %713 = load i64, ptr %89, align 8, !tbaa !9
  %714 = icmp sge i64 %713, 1
  br i1 %714, label %715, label %946

715:                                              ; preds = %712
  %716 = load i64, ptr %89, align 8, !tbaa !9
  %717 = shl i64 %716, 1
  %718 = sub nsw i64 %717, 1
  store i64 %718, ptr %93, align 8, !tbaa !9
  %719 = load i64, ptr %89, align 8, !tbaa !9
  %720 = icmp eq i64 %719, 1
  br i1 %720, label %721, label %722

721:                                              ; preds = %715
  store i64 1, ptr %75, align 8, !tbaa !9
  store i64 1, ptr %77, align 8, !tbaa !9
  br label %729

722:                                              ; preds = %715
  %723 = load i64, ptr %89, align 8, !tbaa !9
  %724 = sub nsw i64 %723, 1
  store i64 %724, ptr %68, align 8, !tbaa !9
  %725 = call i64 @pow_ii(ptr noundef @c__2, ptr noundef %68)
  store i64 %725, ptr %75, align 8, !tbaa !9
  %726 = load i64, ptr %75, align 8, !tbaa !9
  %727 = shl i64 %726, 1
  %728 = sub nsw i64 %727, 1
  store i64 %728, ptr %77, align 8, !tbaa !9
  br label %729

729:                                              ; preds = %722, %721
  %730 = load i64, ptr %77, align 8, !tbaa !9
  store i64 %730, ptr %68, align 8, !tbaa !9
  %731 = load i64, ptr %75, align 8, !tbaa !9
  store i64 %731, ptr %70, align 8, !tbaa !9
  br label %732

732:                                              ; preds = %939, %729
  %733 = load i64, ptr %70, align 8, !tbaa !9
  %734 = load i64, ptr %68, align 8, !tbaa !9
  %735 = icmp sle i64 %733, %734
  br i1 %735, label %736, label %942

736:                                              ; preds = %732
  %737 = load i64, ptr %70, align 8, !tbaa !9
  %738 = sub nsw i64 %737, 1
  store i64 %738, ptr %82, align 8, !tbaa !9
  %739 = load ptr, ptr %48, align 8, !tbaa !5
  %740 = load i64, ptr %99, align 8, !tbaa !9
  %741 = load i64, ptr %82, align 8, !tbaa !9
  %742 = add nsw i64 %740, %741
  %743 = getelementptr inbounds i64, ptr %739, i64 %742
  %744 = load i64, ptr %743, align 8, !tbaa !9
  store i64 %744, ptr %74, align 8, !tbaa !9
  %745 = load ptr, ptr %48, align 8, !tbaa !5
  %746 = load i64, ptr %100, align 8, !tbaa !9
  %747 = load i64, ptr %82, align 8, !tbaa !9
  %748 = add nsw i64 %746, %747
  %749 = getelementptr inbounds i64, ptr %745, i64 %748
  %750 = load i64, ptr %749, align 8, !tbaa !9
  store i64 %750, ptr %78, align 8, !tbaa !9
  %751 = load ptr, ptr %48, align 8, !tbaa !5
  %752 = load i64, ptr %101, align 8, !tbaa !9
  %753 = load i64, ptr %82, align 8, !tbaa !9
  %754 = add nsw i64 %752, %753
  %755 = getelementptr inbounds i64, ptr %751, i64 %754
  %756 = load i64, ptr %755, align 8, !tbaa !9
  store i64 %756, ptr %80, align 8, !tbaa !9
  %757 = load i64, ptr %74, align 8, !tbaa !9
  %758 = load i64, ptr %78, align 8, !tbaa !9
  %759 = sub nsw i64 %757, %758
  store i64 %759, ptr %84, align 8, !tbaa !9
  %760 = load i64, ptr %74, align 8, !tbaa !9
  %761 = add nsw i64 %760, 1
  store i64 %761, ptr %85, align 8, !tbaa !9
  %762 = load i64, ptr %70, align 8, !tbaa !9
  %763 = load i64, ptr %77, align 8, !tbaa !9
  %764 = icmp eq i64 %762, %763
  br i1 %764, label %765, label %768

765:                                              ; preds = %736
  %766 = load ptr, ptr %29, align 8, !tbaa !5
  %767 = load i64, ptr %766, align 8, !tbaa !9
  store i64 %767, ptr %104, align 8, !tbaa !9
  br label %769

768:                                              ; preds = %736
  store i64 1, ptr %104, align 8, !tbaa !9
  br label %769

769:                                              ; preds = %768, %765
  %770 = load i64, ptr %79, align 8, !tbaa !9
  %771 = load i64, ptr %84, align 8, !tbaa !9
  %772 = add nsw i64 %770, %771
  %773 = sub nsw i64 %772, 1
  store i64 %773, ptr %86, align 8, !tbaa !9
  %774 = load i64, ptr %81, align 8, !tbaa !9
  %775 = load i64, ptr %84, align 8, !tbaa !9
  %776 = add nsw i64 %774, %775
  %777 = sub nsw i64 %776, 1
  store i64 %777, ptr %88, align 8, !tbaa !9
  %778 = load i64, ptr %96, align 8, !tbaa !9
  %779 = load i64, ptr %84, align 8, !tbaa !9
  %780 = add nsw i64 %778, %779
  %781 = sub nsw i64 %780, 1
  store i64 %781, ptr %102, align 8, !tbaa !9
  %782 = load ptr, ptr %30, align 8, !tbaa !5
  %783 = load i64, ptr %74, align 8, !tbaa !9
  %784 = getelementptr inbounds double, ptr %782, i64 %783
  %785 = load double, ptr %784, align 8, !tbaa !15
  store double %785, ptr %98, align 8, !tbaa !15
  %786 = load ptr, ptr %31, align 8, !tbaa !5
  %787 = load i64, ptr %74, align 8, !tbaa !9
  %788 = getelementptr inbounds double, ptr %786, i64 %787
  %789 = load double, ptr %788, align 8, !tbaa !15
  store double %789, ptr %95, align 8, !tbaa !15
  %790 = load ptr, ptr %26, align 8, !tbaa !5
  %791 = load i64, ptr %790, align 8, !tbaa !9
  %792 = icmp eq i64 %791, 0
  br i1 %792, label %793, label %846

793:                                              ; preds = %769
  %794 = load ptr, ptr %26, align 8, !tbaa !5
  %795 = load ptr, ptr %30, align 8, !tbaa !5
  %796 = load i64, ptr %84, align 8, !tbaa !9
  %797 = getelementptr inbounds double, ptr %795, i64 %796
  %798 = load ptr, ptr %47, align 8, !tbaa !5
  %799 = load i64, ptr %86, align 8, !tbaa !9
  %800 = getelementptr inbounds double, ptr %798, i64 %799
  %801 = load ptr, ptr %47, align 8, !tbaa !5
  %802 = load i64, ptr %88, align 8, !tbaa !9
  %803 = getelementptr inbounds double, ptr %801, i64 %802
  %804 = load ptr, ptr %48, align 8, !tbaa !5
  %805 = load i64, ptr %102, align 8, !tbaa !9
  %806 = getelementptr inbounds i64, ptr %804, i64 %805
  %807 = load ptr, ptr %43, align 8, !tbaa !5
  %808 = load i64, ptr %53, align 8, !tbaa !9
  %809 = getelementptr inbounds i64, ptr %807, i64 %808
  %810 = load ptr, ptr %40, align 8, !tbaa !5
  %811 = getelementptr inbounds i64, ptr %810, i64 1
  %812 = load ptr, ptr %41, align 8, !tbaa !5
  %813 = load i64, ptr %51, align 8, !tbaa !9
  %814 = getelementptr inbounds i64, ptr %812, i64 %813
  %815 = load ptr, ptr %42, align 8, !tbaa !5
  %816 = load ptr, ptr %44, align 8, !tbaa !5
  %817 = load i64, ptr %59, align 8, !tbaa !9
  %818 = getelementptr inbounds double, ptr %816, i64 %817
  %819 = load ptr, ptr %33, align 8, !tbaa !5
  %820 = load ptr, ptr %39, align 8, !tbaa !5
  %821 = load i64, ptr %61, align 8, !tbaa !9
  %822 = getelementptr inbounds double, ptr %820, i64 %821
  %823 = load ptr, ptr %36, align 8, !tbaa !5
  %824 = load i64, ptr %55, align 8, !tbaa !9
  %825 = getelementptr inbounds double, ptr %823, i64 %824
  %826 = load ptr, ptr %37, align 8, !tbaa !5
  %827 = load i64, ptr %57, align 8, !tbaa !9
  %828 = getelementptr inbounds double, ptr %826, i64 %827
  %829 = load ptr, ptr %38, align 8, !tbaa !5
  %830 = load i64, ptr %67, align 8, !tbaa !9
  %831 = getelementptr inbounds double, ptr %829, i64 %830
  %832 = load ptr, ptr %35, align 8, !tbaa !5
  %833 = getelementptr inbounds i64, ptr %832, i64 1
  %834 = load ptr, ptr %45, align 8, !tbaa !5
  %835 = getelementptr inbounds double, ptr %834, i64 1
  %836 = load ptr, ptr %46, align 8, !tbaa !5
  %837 = getelementptr inbounds double, ptr %836, i64 1
  %838 = load ptr, ptr %47, align 8, !tbaa !5
  %839 = load i64, ptr %105, align 8, !tbaa !9
  %840 = getelementptr inbounds double, ptr %838, i64 %839
  %841 = load ptr, ptr %48, align 8, !tbaa !5
  %842 = load i64, ptr %87, align 8, !tbaa !9
  %843 = getelementptr inbounds i64, ptr %841, i64 %842
  %844 = load ptr, ptr %49, align 8, !tbaa !5
  %845 = call i32 @dlasd6_(ptr noundef %794, ptr noundef %78, ptr noundef %80, ptr noundef %104, ptr noundef %797, ptr noundef %800, ptr noundef %803, ptr noundef %98, ptr noundef %95, ptr noundef %806, ptr noundef %809, ptr noundef %811, ptr noundef %814, ptr noundef %815, ptr noundef %818, ptr noundef %819, ptr noundef %822, ptr noundef %825, ptr noundef %828, ptr noundef %831, ptr noundef %833, ptr noundef %835, ptr noundef %837, ptr noundef %840, ptr noundef %843, ptr noundef %844)
  br label %933

846:                                              ; preds = %769
  %847 = load i64, ptr %71, align 8, !tbaa !9
  %848 = add nsw i64 %847, -1
  store i64 %848, ptr %71, align 8, !tbaa !9
  %849 = load ptr, ptr %26, align 8, !tbaa !5
  %850 = load ptr, ptr %30, align 8, !tbaa !5
  %851 = load i64, ptr %84, align 8, !tbaa !9
  %852 = getelementptr inbounds double, ptr %850, i64 %851
  %853 = load ptr, ptr %47, align 8, !tbaa !5
  %854 = load i64, ptr %86, align 8, !tbaa !9
  %855 = getelementptr inbounds double, ptr %853, i64 %854
  %856 = load ptr, ptr %47, align 8, !tbaa !5
  %857 = load i64, ptr %88, align 8, !tbaa !9
  %858 = getelementptr inbounds double, ptr %856, i64 %857
  %859 = load ptr, ptr %48, align 8, !tbaa !5
  %860 = load i64, ptr %102, align 8, !tbaa !9
  %861 = getelementptr inbounds i64, ptr %859, i64 %860
  %862 = load ptr, ptr %43, align 8, !tbaa !5
  %863 = load i64, ptr %84, align 8, !tbaa !9
  %864 = load i64, ptr %89, align 8, !tbaa !9
  %865 = load i64, ptr %52, align 8, !tbaa !9
  %866 = mul nsw i64 %864, %865
  %867 = add nsw i64 %863, %866
  %868 = getelementptr inbounds i64, ptr %862, i64 %867
  %869 = load ptr, ptr %40, align 8, !tbaa !5
  %870 = load i64, ptr %71, align 8, !tbaa !9
  %871 = getelementptr inbounds i64, ptr %869, i64 %870
  %872 = load ptr, ptr %41, align 8, !tbaa !5
  %873 = load i64, ptr %84, align 8, !tbaa !9
  %874 = load i64, ptr %93, align 8, !tbaa !9
  %875 = load i64, ptr %50, align 8, !tbaa !9
  %876 = mul nsw i64 %874, %875
  %877 = add nsw i64 %873, %876
  %878 = getelementptr inbounds i64, ptr %872, i64 %877
  %879 = load ptr, ptr %42, align 8, !tbaa !5
  %880 = load ptr, ptr %44, align 8, !tbaa !5
  %881 = load i64, ptr %84, align 8, !tbaa !9
  %882 = load i64, ptr %93, align 8, !tbaa !9
  %883 = load i64, ptr %58, align 8, !tbaa !9
  %884 = mul nsw i64 %882, %883
  %885 = add nsw i64 %881, %884
  %886 = getelementptr inbounds double, ptr %880, i64 %885
  %887 = load ptr, ptr %33, align 8, !tbaa !5
  %888 = load ptr, ptr %39, align 8, !tbaa !5
  %889 = load i64, ptr %84, align 8, !tbaa !9
  %890 = load i64, ptr %93, align 8, !tbaa !9
  %891 = load i64, ptr %60, align 8, !tbaa !9
  %892 = mul nsw i64 %890, %891
  %893 = add nsw i64 %889, %892
  %894 = getelementptr inbounds double, ptr %888, i64 %893
  %895 = load ptr, ptr %36, align 8, !tbaa !5
  %896 = load i64, ptr %84, align 8, !tbaa !9
  %897 = load i64, ptr %89, align 8, !tbaa !9
  %898 = load i64, ptr %54, align 8, !tbaa !9
  %899 = mul nsw i64 %897, %898
  %900 = add nsw i64 %896, %899
  %901 = getelementptr inbounds double, ptr %895, i64 %900
  %902 = load ptr, ptr %37, align 8, !tbaa !5
  %903 = load i64, ptr %84, align 8, !tbaa !9
  %904 = load i64, ptr %93, align 8, !tbaa !9
  %905 = load i64, ptr %56, align 8, !tbaa !9
  %906 = mul nsw i64 %904, %905
  %907 = add nsw i64 %903, %906
  %908 = getelementptr inbounds double, ptr %902, i64 %907
  %909 = load ptr, ptr %38, align 8, !tbaa !5
  %910 = load i64, ptr %84, align 8, !tbaa !9
  %911 = load i64, ptr %89, align 8, !tbaa !9
  %912 = load i64, ptr %66, align 8, !tbaa !9
  %913 = mul nsw i64 %911, %912
  %914 = add nsw i64 %910, %913
  %915 = getelementptr inbounds double, ptr %909, i64 %914
  %916 = load ptr, ptr %35, align 8, !tbaa !5
  %917 = load i64, ptr %71, align 8, !tbaa !9
  %918 = getelementptr inbounds i64, ptr %916, i64 %917
  %919 = load ptr, ptr %45, align 8, !tbaa !5
  %920 = load i64, ptr %71, align 8, !tbaa !9
  %921 = getelementptr inbounds double, ptr %919, i64 %920
  %922 = load ptr, ptr %46, align 8, !tbaa !5
  %923 = load i64, ptr %71, align 8, !tbaa !9
  %924 = getelementptr inbounds double, ptr %922, i64 %923
  %925 = load ptr, ptr %47, align 8, !tbaa !5
  %926 = load i64, ptr %105, align 8, !tbaa !9
  %927 = getelementptr inbounds double, ptr %925, i64 %926
  %928 = load ptr, ptr %48, align 8, !tbaa !5
  %929 = load i64, ptr %87, align 8, !tbaa !9
  %930 = getelementptr inbounds i64, ptr %928, i64 %929
  %931 = load ptr, ptr %49, align 8, !tbaa !5
  %932 = call i32 @dlasd6_(ptr noundef %849, ptr noundef %78, ptr noundef %80, ptr noundef %104, ptr noundef %852, ptr noundef %855, ptr noundef %858, ptr noundef %98, ptr noundef %95, ptr noundef %861, ptr noundef %868, ptr noundef %871, ptr noundef %878, ptr noundef %879, ptr noundef %886, ptr noundef %887, ptr noundef %894, ptr noundef %901, ptr noundef %908, ptr noundef %915, ptr noundef %918, ptr noundef %921, ptr noundef %924, ptr noundef %927, ptr noundef %930, ptr noundef %931)
  br label %933

933:                                              ; preds = %846, %793
  %934 = load ptr, ptr %49, align 8, !tbaa !5
  %935 = load i64, ptr %934, align 8, !tbaa !9
  %936 = icmp ne i64 %935, 0
  br i1 %936, label %937, label %938

937:                                              ; preds = %933
  store i32 0, ptr %25, align 4
  store i32 1, ptr %108, align 4
  br label %947

938:                                              ; preds = %933
  br label %939

939:                                              ; preds = %938
  %940 = load i64, ptr %70, align 8, !tbaa !9
  %941 = add nsw i64 %940, 1
  store i64 %941, ptr %70, align 8, !tbaa !9
  br label %732, !llvm.loop !17

942:                                              ; preds = %732
  br label %943

943:                                              ; preds = %942
  %944 = load i64, ptr %89, align 8, !tbaa !9
  %945 = add nsw i64 %944, -1
  store i64 %945, ptr %89, align 8, !tbaa !9
  br label %712, !llvm.loop !18

946:                                              ; preds = %712
  store i32 0, ptr %25, align 4
  store i32 1, ptr %108, align 4
  br label %947

947:                                              ; preds = %946, %937, %688, %532, %324, %257
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #3
  %948 = load i32, ptr %25, align 4
  ret i32 %948
}

; 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 @dlasdq_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

declare i32 @dlaset_(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 i64 @pow_ii(ptr noundef, ptr noundef) #2

declare i32 @dlasd6_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, 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 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !12}
!15 = !{!16, !16, i64 0}
!16 = !{!"double", !7, i64 0}
!17 = distinct !{!17, !12}
!18 = distinct !{!18, !12}


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

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @dlasda_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef %23) local_unnamed_addr #0 {
  %25 = alloca i64, align 8
  %26 = alloca i64, align 8
  %27 = alloca i64, align 8
  %28 = alloca i64, align 8
  %29 = alloca i64, align 8
  %30 = alloca i64, align 8
  %31 = alloca i64, align 8
  %32 = alloca i64, align 8
  %33 = alloca i64, align 8
  %34 = alloca double, align 8
  %35 = alloca i64, align 8
  %36 = alloca double, align 8
  %37 = alloca i64, align 8
  %38 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #3
  %39 = getelementptr inbounds i8, ptr %4, i64 -8
  %40 = getelementptr inbounds i8, ptr %5, i64 -8
  %41 = load i64, ptr %7, align 8, !tbaa !5
  %42 = xor i64 %41, -1
  %43 = getelementptr inbounds double, ptr %18, i64 %42
  %44 = getelementptr inbounds double, ptr %13, i64 %42
  %45 = getelementptr inbounds double, ptr %12, i64 %42
  %46 = getelementptr inbounds double, ptr %11, i64 %42
  %47 = getelementptr inbounds double, ptr %10, i64 %42
  %48 = getelementptr inbounds double, ptr %8, i64 %42
  %49 = getelementptr inbounds double, ptr %6, i64 %42
  %50 = getelementptr inbounds i8, ptr %9, i64 -8
  %51 = getelementptr inbounds i8, ptr %14, i64 -8
  %52 = load i64, ptr %16, align 8, !tbaa !5
  %53 = xor i64 %52, -1
  %54 = getelementptr inbounds i64, ptr %17, i64 %53
  %55 = getelementptr inbounds i64, ptr %15, i64 %53
  %56 = getelementptr inbounds i8, ptr %19, i64 -8
  %57 = getelementptr inbounds i8, ptr %20, i64 -8
  %58 = getelementptr inbounds i8, ptr %21, i64 -8
  %59 = getelementptr inbounds i8, ptr %22, i64 -8
  store i64 0, ptr %23, align 8, !tbaa !5
  %60 = load i64, ptr %0, align 8, !tbaa !5
  %or.cond = icmp ugt i64 %60, 1
  br i1 %or.cond, label %.thread, label %61

61:                                               ; preds = %24
  %62 = load i64, ptr %1, align 8, !tbaa !5
  %63 = icmp slt i64 %62, 3
  br i1 %63, label %.thread, label %64

64:                                               ; preds = %61
  %65 = load i64, ptr %2, align 8, !tbaa !5
  %66 = icmp slt i64 %65, 0
  br i1 %66, label %.thread, label %67

67:                                               ; preds = %64
  %68 = load i64, ptr %3, align 8, !tbaa !5
  %or.cond430 = icmp ugt i64 %68, 1
  br i1 %or.cond430, label %.thread, label %69

69:                                               ; preds = %67
  %70 = load i64, ptr %7, align 8, !tbaa !5
  %71 = add nuw nsw i64 %68, %65
  %72 = icmp slt i64 %70, %71
  br i1 %72, label %.thread, label %73

73:                                               ; preds = %69
  %74 = load i64, ptr %16, align 8, !tbaa !5
  %75 = icmp slt i64 %74, %65
  br i1 %75, label %.thread, label %77

.thread:                                          ; preds = %73, %69, %67, %64, %61, %24
  %.sink = phi i64 [ -1, %24 ], [ -2, %61 ], [ -3, %64 ], [ -4, %67 ], [ -8, %69 ], [ -17, %73 ]
  %.neg = phi i64 [ 1, %24 ], [ 2, %61 ], [ 3, %64 ], [ 4, %67 ], [ 8, %69 ], [ 17, %73 ]
  store i64 %.sink, ptr %23, align 8, !tbaa !5
  store i64 %.neg, ptr %25, align 8, !tbaa !5
  %76 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %25) #3
  br label %.loopexit

77:                                               ; preds = %73
  store i64 %71, ptr %26, align 8, !tbaa !5
  %.not420 = icmp ugt i64 %65, %62
  br i1 %.not420, label %84, label %78

78:                                               ; preds = %77
  %79 = icmp eq i64 %60, 0
  br i1 %79, label %80, label %82

80:                                               ; preds = %78
  %81 = tail call i32 @dlasdq_(ptr noundef nonnull @.str.1, ptr noundef nonnull %3, ptr noundef nonnull %2, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef %4, ptr noundef %5, ptr noundef %8, ptr noundef nonnull %7, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %21, ptr noundef nonnull %23) #3
  br label %.loopexit

82:                                               ; preds = %78
  %83 = call i32 @dlasdq_(ptr noundef nonnull @.str.1, ptr noundef nonnull %3, ptr noundef nonnull %2, ptr noundef nonnull %26, ptr noundef nonnull %2, ptr noundef nonnull @c__0, ptr noundef %4, ptr noundef %5, ptr noundef %8, ptr noundef nonnull %7, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %21, ptr noundef nonnull %23) #3
  br label %.loopexit

84:                                               ; preds = %77
  %reass.add = shl nuw i64 %65, 1
  %85 = or disjoint i64 %reass.add, 1
  %86 = add nsw i64 %85, %65
  store i64 0, ptr %30, align 8, !tbaa !5
  store i64 0, ptr %31, align 8, !tbaa !5
  %87 = add nuw nsw i64 %62, 1
  store i64 %87, ptr %38, align 8, !tbaa !5
  %reass.add424 = shl nuw i64 %71, 1
  %88 = getelementptr i64, ptr %22, i64 %65
  %89 = getelementptr i64, ptr %22, i64 %reass.add
  %90 = call i32 @dlasdt_(ptr noundef nonnull %2, ptr noundef nonnull %35, ptr noundef nonnull %27, ptr noundef %22, ptr noundef %88, ptr noundef nonnull %89, ptr noundef nonnull %1) #3
  %91 = load i64, ptr %27, align 8, !tbaa !5
  %92 = add nsw i64 %91, 1
  %93 = sdiv i64 %92, 2
  store i64 %91, ptr %25, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %89, i64 -8
  %invariant.gep442 = getelementptr i8, ptr %48, i64 8
  %.not421444 = icmp sgt i64 %93, %91
  br i1 %.not421444, label %._crit_edge448, label %.lr.ph447

.lr.ph447:                                        ; preds = %84
  %94 = mul nuw nsw i64 %87, %87
  %95 = or disjoint i64 %reass.add424, 1
  %96 = getelementptr i64, ptr %59, i64 %65
  %97 = add nsw i64 %86, -2
  %98 = getelementptr double, ptr %21, i64 %reass.add424
  %99 = getelementptr double, ptr %58, i64 %94
  %100 = getelementptr double, ptr %99, i64 %95
  br label %101

101:                                              ; preds = %.lr.ph447, %._crit_edge441
  %.0414445 = phi i64 [ %93, %.lr.ph447 ], [ %203, %._crit_edge441 ]
  %102 = getelementptr inbounds i64, ptr %59, i64 %.0414445
  %103 = load i64, ptr %102, align 8, !tbaa !5
  %104 = getelementptr i64, ptr %96, i64 %.0414445
  %105 = load i64, ptr %104, align 8, !tbaa !5
  store i64 %105, ptr %28, align 8, !tbaa !5
  %106 = add nsw i64 %105, 1
  store i64 %106, ptr %32, align 8, !tbaa !5
  %gep = getelementptr i64, ptr %invariant.gep, i64 %.0414445
  %107 = load i64, ptr %gep, align 8, !tbaa !5
  store i64 %107, ptr %29, align 8, !tbaa !5
  %108 = sub nsw i64 %103, %105
  %109 = add i64 %97, %108
  %110 = add i64 %108, %71
  store i64 1, ptr %37, align 8, !tbaa !5
  %111 = load i64, ptr %0, align 8, !tbaa !5
  %112 = icmp eq i64 %111, 0
  br i1 %112, label %113, label %124

113:                                              ; preds = %101
  %114 = call i32 @dlaset_(ptr noundef nonnull @.str.2, ptr noundef nonnull %32, ptr noundef nonnull %32, ptr noundef nonnull @c_b11, ptr noundef nonnull @c_b12, ptr noundef %98, ptr noundef nonnull %38) #3
  %115 = getelementptr inbounds double, ptr %39, i64 %108
  %116 = getelementptr inbounds double, ptr %40, i64 %108
  %117 = call i32 @dlasdq_(ptr noundef nonnull @.str.1, ptr noundef nonnull %37, ptr noundef nonnull %28, ptr noundef nonnull %32, ptr noundef nonnull %31, ptr noundef nonnull %30, ptr noundef nonnull %115, ptr noundef nonnull %116, ptr noundef %98, ptr noundef nonnull %38, ptr noundef nonnull %100, ptr noundef nonnull %28, ptr noundef nonnull %100, ptr noundef nonnull %28, ptr noundef nonnull %100, ptr noundef nonnull %23) #3
  %118 = load i64, ptr %28, align 8, !tbaa !5
  %119 = load i64, ptr %38, align 8, !tbaa !5
  %120 = mul nsw i64 %119, %118
  %121 = getelementptr inbounds double, ptr %58, i64 %108
  %122 = call i32 @f2c_dcopy(ptr noundef nonnull %32, ptr noundef %98, ptr noundef nonnull @c__1, ptr noundef nonnull %121, ptr noundef nonnull @c__1) #3
  %123 = getelementptr double, ptr %98, i64 %120
  br label %139

124:                                              ; preds = %101
  %125 = add nsw i64 %108, %41
  %126 = getelementptr inbounds double, ptr %49, i64 %125
  %127 = call i32 @dlaset_(ptr noundef nonnull @.str.2, ptr noundef nonnull %28, ptr noundef nonnull %28, ptr noundef nonnull @c_b11, ptr noundef nonnull @c_b12, ptr noundef %126, ptr noundef nonnull %7) #3
  %128 = getelementptr inbounds double, ptr %48, i64 %125
  %129 = call i32 @dlaset_(ptr noundef nonnull @.str.2, ptr noundef nonnull %32, ptr noundef nonnull %32, ptr noundef nonnull @c_b11, ptr noundef nonnull @c_b12, ptr noundef %128, ptr noundef nonnull %7) #3
  %130 = getelementptr inbounds double, ptr %39, i64 %108
  %131 = getelementptr inbounds double, ptr %40, i64 %108
  %132 = call i32 @dlasdq_(ptr noundef nonnull @.str.1, ptr noundef nonnull %37, ptr noundef nonnull %28, ptr noundef nonnull %32, ptr noundef nonnull %28, ptr noundef nonnull %30, ptr noundef nonnull %130, ptr noundef nonnull %131, ptr noundef %128, ptr noundef nonnull %7, ptr noundef %126, ptr noundef nonnull %7, ptr noundef %126, ptr noundef nonnull %7, ptr noundef %98, ptr noundef nonnull %23) #3
  %133 = getelementptr inbounds double, ptr %58, i64 %108
  %134 = call i32 @f2c_dcopy(ptr noundef nonnull %32, ptr noundef %128, ptr noundef nonnull @c__1, ptr noundef nonnull %133, ptr noundef nonnull @c__1) #3
  %135 = load i64, ptr %32, align 8, !tbaa !5
  %136 = mul nsw i64 %135, %41
  %137 = getelementptr double, ptr %48, i64 %108
  %138 = getelementptr double, ptr %137, i64 %136
  br label %139

139:                                              ; preds = %124, %113
  %.sink478 = phi ptr [ %138, %124 ], [ %123, %113 ]
  %140 = getelementptr inbounds double, ptr %58, i64 %110
  %141 = call i32 @f2c_dcopy(ptr noundef nonnull %32, ptr noundef %.sink478, ptr noundef nonnull @c__1, ptr noundef nonnull %140, ptr noundef nonnull @c__1) #3
  %142 = load i64, ptr %23, align 8, !tbaa !5
  %.not425 = icmp eq i64 %142, 0
  br i1 %.not425, label %143, label %.loopexit

143:                                              ; preds = %139
  %144 = load i64, ptr %28, align 8, !tbaa !5
  %.not426435 = icmp slt i64 %144, 1
  br i1 %.not426435, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %143
  %145 = getelementptr i64, ptr %59, i64 %109
  %min.iters.check488 = icmp ult i64 %144, 4
  br i1 %min.iters.check488, label %scalar.ph487.preheader, label %vector.ph489

vector.ph489:                                     ; preds = %.lr.ph
  %n.vec491 = and i64 %144, 9223372036854775804
  %ind.end492 = or disjoint i64 %n.vec491, 1
  br label %vector.body494

vector.body494:                                   ; preds = %vector.body494, %vector.ph489
  %index495 = phi i64 [ 0, %vector.ph489 ], [ %index.next501, %vector.body494 ]
  %vec.ind496 = phi <2 x i64> [ <i64 1, i64 2>, %vector.ph489 ], [ %vec.ind.next499, %vector.body494 ]
  %step.add497 = add <2 x i64> %vec.ind496, <i64 2, i64 2>
  %offset.idx500 = or disjoint i64 %index495, 1
  %146 = getelementptr i64, ptr %145, i64 %offset.idx500
  %147 = getelementptr i8, ptr %146, i64 16
  store <2 x i64> %vec.ind496, ptr %146, align 8, !tbaa !5
  store <2 x i64> %step.add497, ptr %147, align 8, !tbaa !5
  %index.next501 = add nuw i64 %index495, 4
  %vec.ind.next499 = add <2 x i64> %vec.ind496, <i64 4, i64 4>
  %148 = icmp eq i64 %index.next501, %n.vec491
  br i1 %148, label %middle.block486, label %vector.body494, !llvm.loop !9

middle.block486:                                  ; preds = %vector.body494
  %cmp.n502 = icmp eq i64 %144, %n.vec491
  br i1 %cmp.n502, label %._crit_edge, label %scalar.ph487.preheader

scalar.ph487.preheader:                           ; preds = %middle.block486, %.lr.ph
  %.0413436.ph = phi i64 [ 1, %.lr.ph ], [ %ind.end492, %middle.block486 ]
  br label %scalar.ph487

scalar.ph487:                                     ; preds = %scalar.ph487.preheader, %scalar.ph487
  %.0413436 = phi i64 [ %150, %scalar.ph487 ], [ %.0413436.ph, %scalar.ph487.preheader ]
  %149 = getelementptr i64, ptr %145, i64 %.0413436
  store i64 %.0413436, ptr %149, align 8, !tbaa !5
  %150 = add nuw i64 %.0413436, 1
  %exitcond.not = icmp eq i64 %.0413436, %144
  br i1 %exitcond.not, label %._crit_edge, label %scalar.ph487, !llvm.loop !13

._crit_edge:                                      ; preds = %scalar.ph487, %middle.block486, %143
  %151 = load i64, ptr %27, align 8, !tbaa !5
  %152 = icmp eq i64 %.0414445, %151
  br i1 %152, label %153, label %156

153:                                              ; preds = %._crit_edge
  %154 = load i64, ptr %3, align 8, !tbaa !5
  %155 = icmp eq i64 %154, 0
  br i1 %155, label %157, label %156

156:                                              ; preds = %153, %._crit_edge
  br label %157

157:                                              ; preds = %153, %156
  %storemerge427 = phi i64 [ 1, %156 ], [ 0, %153 ]
  store i64 %storemerge427, ptr %37, align 8, !tbaa !5
  %158 = load i64, ptr %32, align 8, !tbaa !5
  %159 = add nsw i64 %158, %108
  %160 = load i64, ptr %29, align 8, !tbaa !5
  %161 = add nsw i64 %160, %storemerge427
  store i64 %161, ptr %33, align 8, !tbaa !5
  %162 = load i64, ptr %0, align 8, !tbaa !5
  %163 = icmp eq i64 %162, 0
  br i1 %163, label %164, label %176

164:                                              ; preds = %157
  %165 = call i32 @dlaset_(ptr noundef nonnull @.str.2, ptr noundef nonnull %33, ptr noundef nonnull %33, ptr noundef nonnull @c_b11, ptr noundef nonnull @c_b12, ptr noundef %98, ptr noundef nonnull %38) #3
  %166 = getelementptr double, ptr %4, i64 %103
  %167 = getelementptr double, ptr %5, i64 %103
  %168 = call i32 @dlasdq_(ptr noundef nonnull @.str.1, ptr noundef nonnull %37, ptr noundef nonnull %29, ptr noundef nonnull %33, ptr noundef nonnull %31, ptr noundef nonnull %30, ptr noundef %166, ptr noundef %167, ptr noundef %98, ptr noundef nonnull %38, ptr noundef nonnull %100, ptr noundef nonnull %29, ptr noundef nonnull %100, ptr noundef nonnull %29, ptr noundef nonnull %100, ptr noundef nonnull %23) #3
  %169 = load i64, ptr %33, align 8, !tbaa !5
  %170 = add nsw i64 %169, -1
  %171 = load i64, ptr %38, align 8, !tbaa !5
  %172 = mul nsw i64 %170, %171
  %173 = getelementptr inbounds double, ptr %58, i64 %159
  %174 = call i32 @f2c_dcopy(ptr noundef nonnull %33, ptr noundef %98, ptr noundef nonnull @c__1, ptr noundef nonnull %173, ptr noundef nonnull @c__1) #3
  %175 = getelementptr double, ptr %98, i64 %172
  br label %189

176:                                              ; preds = %157
  %177 = getelementptr inbounds double, ptr %6, i64 %103
  %178 = call i32 @dlaset_(ptr noundef nonnull @.str.2, ptr noundef nonnull %29, ptr noundef nonnull %29, ptr noundef nonnull @c_b11, ptr noundef nonnull @c_b12, ptr noundef %177, ptr noundef nonnull %7) #3
  %179 = getelementptr inbounds double, ptr %8, i64 %103
  %180 = call i32 @dlaset_(ptr noundef nonnull @.str.2, ptr noundef nonnull %33, ptr noundef nonnull %33, ptr noundef nonnull @c_b11, ptr noundef nonnull @c_b12, ptr noundef %179, ptr noundef nonnull %7) #3
  %181 = getelementptr double, ptr %4, i64 %103
  %182 = getelementptr double, ptr %5, i64 %103
  %183 = call i32 @dlasdq_(ptr noundef nonnull @.str.1, ptr noundef nonnull %37, ptr noundef nonnull %29, ptr noundef nonnull %33, ptr noundef nonnull %29, ptr noundef nonnull %30, ptr noundef %181, ptr noundef %182, ptr noundef %179, ptr noundef nonnull %7, ptr noundef %177, ptr noundef nonnull %7, ptr noundef %177, ptr noundef nonnull %7, ptr noundef %98, ptr noundef nonnull %23) #3
  %184 = getelementptr inbounds double, ptr %58, i64 %159
  %185 = call i32 @f2c_dcopy(ptr noundef nonnull %33, ptr noundef %179, ptr noundef nonnull @c__1, ptr noundef nonnull %184, ptr noundef nonnull @c__1) #3
  %186 = load i64, ptr %33, align 8, !tbaa !5
  %187 = mul nsw i64 %186, %41
  %gep443 = getelementptr double, ptr %invariant.gep442, i64 %103
  %188 = getelementptr double, ptr %gep443, i64 %187
  br label %189

189:                                              ; preds = %176, %164
  %.sink480 = phi ptr [ %188, %176 ], [ %175, %164 ]
  %190 = getelementptr double, ptr %58, i64 %158
  %191 = getelementptr double, ptr %190, i64 %110
  %192 = call i32 @f2c_dcopy(ptr noundef nonnull %33, ptr noundef %.sink480, ptr noundef nonnull @c__1, ptr noundef nonnull %191, ptr noundef nonnull @c__1) #3
  %193 = load i64, ptr %23, align 8, !tbaa !5
  %.not428 = icmp eq i64 %193, 0
  br i1 %.not428, label %194, label %.loopexit

194:                                              ; preds = %189
  %195 = load i64, ptr %29, align 8, !tbaa !5
  %.not429437 = icmp slt i64 %195, 1
  br i1 %.not429437, label %._crit_edge441, label %.lr.ph440

.lr.ph440:                                        ; preds = %194
  %196 = getelementptr i64, ptr %59, i64 %109
  %197 = getelementptr i64, ptr %196, i64 %158
  %min.iters.check = icmp ult i64 %195, 4
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph440
  %n.vec = and i64 %195, 9223372036854775804
  %ind.end = or disjoint i64 %n.vec, 1
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %vec.ind = phi <2 x i64> [ <i64 1, i64 2>, %vector.ph ], [ %vec.ind.next, %vector.body ]
  %step.add = add <2 x i64> %vec.ind, <i64 2, i64 2>
  %offset.idx = or disjoint i64 %index, 1
  %198 = getelementptr i64, ptr %197, i64 %offset.idx
  %199 = getelementptr i8, ptr %198, i64 16
  store <2 x i64> %vec.ind, ptr %198, align 8, !tbaa !5
  store <2 x i64> %step.add, ptr %199, align 8, !tbaa !5
  %index.next = add nuw i64 %index, 4
  %vec.ind.next = add <2 x i64> %vec.ind, <i64 4, i64 4>
  %200 = icmp eq i64 %index.next, %n.vec
  br i1 %200, label %middle.block, label %vector.body, !llvm.loop !14

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

scalar.ph.preheader:                              ; preds = %middle.block, %.lr.ph440
  %.1438.ph = phi i64 [ 1, %.lr.ph440 ], [ %ind.end, %middle.block ]
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %.1438 = phi i64 [ %202, %scalar.ph ], [ %.1438.ph, %scalar.ph.preheader ]
  %201 = getelementptr i64, ptr %197, i64 %.1438
  store i64 %.1438, ptr %201, align 8, !tbaa !5
  %202 = add nuw i64 %.1438, 1
  %exitcond468.not = icmp eq i64 %.1438, %195
  br i1 %exitcond468.not, label %._crit_edge441, label %scalar.ph, !llvm.loop !15

._crit_edge441:                                   ; preds = %scalar.ph, %middle.block, %194
  %203 = add nsw i64 %.0414445, 1
  %204 = load i64, ptr %25, align 8, !tbaa !5
  %.not421.not = icmp slt i64 %.0414445, %204
  br i1 %.not421.not, label %101, label %._crit_edge448, !llvm.loop !16

._crit_edge448:                                   ; preds = %._crit_edge441, %84
  %205 = call i64 @pow_ii(ptr noundef nonnull @c__2, ptr noundef nonnull %35) #3
  %206 = load i64, ptr %35, align 8, !tbaa !5
  %207 = icmp sgt i64 %206, 0
  br i1 %207, label %.lr.ph464, label %.loopexit

.lr.ph464:                                        ; preds = %._crit_edge448
  %208 = getelementptr i64, ptr %59, i64 %65
  %209 = add i64 %86, -1
  %210 = getelementptr double, ptr %21, i64 %reass.add424
  %211 = getelementptr i64, ptr %59, i64 %86
  %212 = getelementptr i64, ptr %211, i64 %65
  br label %213

213:                                              ; preds = %.lr.ph464, %._crit_edge456
  %.0410462 = phi i64 [ %206, %.lr.ph464 ], [ %274, %._crit_edge456 ]
  %.2461 = phi i64 [ %205, %.lr.ph464 ], [ %.3.lcssa, %._crit_edge456 ]
  %214 = shl nuw i64 %.0410462, 1
  %215 = add nsw i64 %214, -1
  %216 = icmp eq i64 %.0410462, 1
  br i1 %216, label %.thread469, label %217

.thread469:                                       ; preds = %213
  store i64 1, ptr %25, align 8, !tbaa !5
  br label %.lr.ph455

217:                                              ; preds = %213
  %218 = add nsw i64 %.0410462, -1
  store i64 %218, ptr %25, align 8, !tbaa !5
  %219 = call i64 @pow_ii(ptr noundef nonnull @c__2, ptr noundef nonnull %25) #3
  %220 = shl i64 %219, 1
  %221 = add nsw i64 %220, -1
  store i64 %221, ptr %25, align 8, !tbaa !5
  %.not422451.not = icmp slt i64 %219, %220
  br i1 %.not422451.not, label %.lr.ph455, label %._crit_edge456

.lr.ph455:                                        ; preds = %.thread469, %217
  %.0411474 = phi i64 [ 1, %.thread469 ], [ %221, %217 ]
  %.0412473 = phi i64 [ 1, %.thread469 ], [ %219, %217 ]
  %222 = mul nsw i64 %.0410462, %52
  %invariant.gep457 = getelementptr i64, ptr %54, i64 %222
  %223 = mul nsw i64 %215, %52
  %invariant.gep459 = getelementptr i64, ptr %55, i64 %223
  %224 = mul nsw i64 %215, %41
  %225 = mul nsw i64 %.0410462, %41
  br label %229

226:                                              ; preds = %272
  %227 = add nsw i64 %.1415452, 1
  %228 = load i64, ptr %25, align 8, !tbaa !5
  %.not422.not = icmp slt i64 %.1415452, %228
  br i1 %.not422.not, label %229, label %._crit_edge456, !llvm.loop !17

229:                                              ; preds = %.lr.ph455, %226
  %.3453 = phi i64 [ %.2461, %.lr.ph455 ], [ %.4, %226 ]
  %.1415452 = phi i64 [ %.0412473, %.lr.ph455 ], [ %227, %226 ]
  %230 = getelementptr inbounds i64, ptr %59, i64 %.1415452
  %231 = load i64, ptr %230, align 8, !tbaa !5
  %232 = getelementptr i64, ptr %208, i64 %.1415452
  %233 = load i64, ptr %232, align 8, !tbaa !5
  store i64 %233, ptr %28, align 8, !tbaa !5
  %gep450 = getelementptr i64, ptr %invariant.gep, i64 %.1415452
  %234 = load i64, ptr %gep450, align 8, !tbaa !5
  store i64 %234, ptr %29, align 8, !tbaa !5
  %235 = sub nsw i64 %231, %233
  %236 = icmp eq i64 %.1415452, %.0411474
  br i1 %236, label %237, label %239

237:                                              ; preds = %229
  %238 = load i64, ptr %3, align 8, !tbaa !5
  br label %239

239:                                              ; preds = %229, %237
  %storemerge = phi i64 [ %238, %237 ], [ 1, %229 ]
  store i64 %storemerge, ptr %37, align 8, !tbaa !5
  %240 = add i64 %235, %71
  %241 = add i64 %209, %235
  %242 = getelementptr inbounds double, ptr %39, i64 %231
  %243 = load double, ptr %242, align 8, !tbaa !18
  store double %243, ptr %36, align 8, !tbaa !18
  %244 = getelementptr inbounds double, ptr %40, i64 %231
  %245 = load double, ptr %244, align 8, !tbaa !18
  store double %245, ptr %34, align 8, !tbaa !18
  %246 = load i64, ptr %0, align 8, !tbaa !5
  %247 = icmp eq i64 %246, 0
  br i1 %247, label %248, label %254

248:                                              ; preds = %239
  %249 = getelementptr inbounds double, ptr %39, i64 %235
  %250 = getelementptr inbounds double, ptr %58, i64 %235
  %251 = getelementptr inbounds double, ptr %58, i64 %240
  %252 = getelementptr inbounds i64, ptr %59, i64 %241
  %253 = call i32 @dlasd6_(ptr noundef nonnull %0, ptr noundef nonnull %28, ptr noundef nonnull %29, ptr noundef nonnull %37, ptr noundef nonnull %249, ptr noundef nonnull %250, ptr noundef nonnull %251, ptr noundef nonnull %36, ptr noundef nonnull %34, ptr noundef nonnull %252, ptr noundef %17, ptr noundef %14, ptr noundef %15, ptr noundef nonnull %16, ptr noundef %18, ptr noundef nonnull %7, ptr noundef %13, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %9, ptr noundef %19, ptr noundef %20, ptr noundef nonnull %210, ptr noundef nonnull %212, ptr noundef nonnull %23) #3
  br label %272

254:                                              ; preds = %239
  %255 = add nsw i64 %.3453, -1
  %256 = getelementptr inbounds double, ptr %39, i64 %235
  %257 = getelementptr inbounds double, ptr %58, i64 %235
  %258 = getelementptr inbounds double, ptr %58, i64 %240
  %259 = getelementptr inbounds i64, ptr %59, i64 %241
  %gep458 = getelementptr i64, ptr %invariant.gep457, i64 %235
  %260 = getelementptr inbounds i64, ptr %51, i64 %255
  %gep460 = getelementptr i64, ptr %invariant.gep459, i64 %235
  %261 = add nsw i64 %235, %224
  %262 = getelementptr inbounds double, ptr %43, i64 %261
  %263 = getelementptr inbounds double, ptr %44, i64 %261
  %264 = add nsw i64 %235, %225
  %265 = getelementptr inbounds double, ptr %47, i64 %264
  %266 = getelementptr inbounds double, ptr %46, i64 %261
  %267 = getelementptr inbounds double, ptr %45, i64 %264
  %268 = getelementptr inbounds i64, ptr %50, i64 %255
  %269 = getelementptr inbounds double, ptr %56, i64 %255
  %270 = getelementptr inbounds double, ptr %57, i64 %255
  %271 = call i32 @dlasd6_(ptr noundef nonnull %0, ptr noundef nonnull %28, ptr noundef nonnull %29, ptr noundef nonnull %37, ptr noundef nonnull %256, ptr noundef nonnull %257, ptr noundef nonnull %258, ptr noundef nonnull %36, ptr noundef nonnull %34, ptr noundef nonnull %259, ptr noundef %gep458, ptr noundef nonnull %260, ptr noundef %gep460, ptr noundef nonnull %16, ptr noundef %262, ptr noundef nonnull %7, ptr noundef %263, ptr noundef %265, ptr noundef %266, ptr noundef %267, ptr noundef nonnull %268, ptr noundef nonnull %269, ptr noundef nonnull %270, ptr noundef nonnull %210, ptr noundef nonnull %212, ptr noundef nonnull %23) #3
  br label %272

272:                                              ; preds = %254, %248
  %.4 = phi i64 [ %.3453, %248 ], [ %255, %254 ]
  %273 = load i64, ptr %23, align 8, !tbaa !5
  %.not423 = icmp eq i64 %273, 0
  br i1 %.not423, label %226, label %.loopexit

._crit_edge456:                                   ; preds = %226, %217
  %.3.lcssa = phi i64 [ %.2461, %217 ], [ %.4, %226 ]
  %274 = add nsw i64 %.0410462, -1
  %275 = icmp sgt i64 %.0410462, 1
  br i1 %275, label %213, label %.loopexit, !llvm.loop !20

.loopexit:                                        ; preds = %189, %139, %._crit_edge456, %272, %._crit_edge448, %80, %82, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #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 @xerbla_(ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

declare i32 @dlaset_(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 i64 @pow_ii(ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @dlasd6_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, 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 = distinct !{!9, !10, !11, !12}
!10 = !{!"llvm.loop.mustprogress"}
!11 = !{!"llvm.loop.isvectorized", i32 1}
!12 = !{!"llvm.loop.unroll.runtime.disable"}
!13 = distinct !{!13, !10, !12, !11}
!14 = distinct !{!14, !10, !11, !12}
!15 = distinct !{!15, !10, !12, !11}
!16 = distinct !{!16, !10}
!17 = distinct !{!17, !10}
!18 = !{!19, !19, i64 0}
!19 = !{!"double", !7, i64 0}
!20 = distinct !{!20, !10}


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