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

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

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

91:                                               ; preds = %13
  %92 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -3, ptr %92, align 8, !tbaa !9
  br label %113

93:                                               ; preds = %13
  %94 = load ptr, ptr %18, align 8, !tbaa !5
  %95 = load i64, ptr %94, align 8, !tbaa !9
  %96 = icmp slt i64 %95, 1
  br i1 %96, label %97, label %99

97:                                               ; preds = %93
  %98 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -4, ptr %98, align 8, !tbaa !9
  br label %112

99:                                               ; preds = %93
  %100 = load ptr, ptr %22, align 8, !tbaa !5
  %101 = load i64, ptr %100, align 8, !tbaa !9
  %102 = icmp slt i64 %101, 1
  br i1 %102, label %109, label %103

103:                                              ; preds = %99
  %104 = load ptr, ptr %22, align 8, !tbaa !5
  %105 = load i64, ptr %104, align 8, !tbaa !9
  %106 = load ptr, ptr %17, align 8, !tbaa !5
  %107 = load i64, ptr %106, align 8, !tbaa !9
  %108 = icmp slt i64 %105, %107
  br i1 %108, label %109, label %111

109:                                              ; preds = %103, %99
  %110 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -8, ptr %110, align 8, !tbaa !9
  br label %111

111:                                              ; preds = %109, %103
  br label %112

112:                                              ; preds = %111, %97
  br label %113

113:                                              ; preds = %112, %91
  %114 = load ptr, ptr %27, align 8, !tbaa !5
  %115 = load i64, ptr %114, align 8, !tbaa !9
  %116 = icmp ne i64 %115, 0
  br i1 %116, label %117, label %122

117:                                              ; preds = %113
  %118 = load ptr, ptr %27, align 8, !tbaa !5
  %119 = load i64, ptr %118, align 8, !tbaa !9
  %120 = sub nsw i64 0, %119
  store i64 %120, ptr %30, align 8, !tbaa !9
  %121 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %30)
  store i32 0, ptr %14, align 4
  store i32 1, ptr %70, align 4
  br label %1300

122:                                              ; preds = %113
  %123 = call double @dlamch_(ptr noundef @.str.1)
  store double %123, ptr %48, align 8, !tbaa !11
  %124 = load ptr, ptr %23, align 8, !tbaa !5
  %125 = load double, ptr %124, align 8, !tbaa !11
  %126 = fcmp ole double %125, 0.000000e+00
  br i1 %126, label %131, label %127

127:                                              ; preds = %122
  %128 = load ptr, ptr %23, align 8, !tbaa !5
  %129 = load double, ptr %128, align 8, !tbaa !11
  %130 = fcmp oge double %129, 1.000000e+00
  br i1 %130, label %131, label %133

131:                                              ; preds = %127, %122
  %132 = load double, ptr %48, align 8, !tbaa !11
  store double %132, ptr %53, align 8, !tbaa !11
  br label %136

133:                                              ; preds = %127
  %134 = load ptr, ptr %23, align 8, !tbaa !5
  %135 = load double, ptr %134, align 8, !tbaa !11
  store double %135, ptr %53, align 8, !tbaa !11
  br label %136

136:                                              ; preds = %133, %131
  %137 = load ptr, ptr %24, align 8, !tbaa !5
  store i64 0, ptr %137, align 8, !tbaa !9
  %138 = load ptr, ptr %17, align 8, !tbaa !5
  %139 = load i64, ptr %138, align 8, !tbaa !9
  %140 = icmp eq i64 %139, 0
  br i1 %140, label %141, label %142

141:                                              ; preds = %136
  store i32 0, ptr %14, align 4
  store i32 1, ptr %70, align 4
  br label %1300

142:                                              ; preds = %136
  %143 = load ptr, ptr %17, align 8, !tbaa !5
  %144 = load i64, ptr %143, align 8, !tbaa !9
  %145 = icmp eq i64 %144, 1
  br i1 %145, label %146, label %187

146:                                              ; preds = %142
  %147 = load ptr, ptr %19, align 8, !tbaa !5
  %148 = getelementptr inbounds double, ptr %147, i64 1
  %149 = load double, ptr %148, align 8, !tbaa !11
  %150 = fcmp oeq double %149, 0.000000e+00
  br i1 %150, label %151, label %158

151:                                              ; preds = %146
  %152 = load ptr, ptr %18, align 8, !tbaa !5
  %153 = load ptr, ptr %21, align 8, !tbaa !5
  %154 = load i64, ptr %29, align 8, !tbaa !9
  %155 = getelementptr inbounds double, ptr %153, i64 %154
  %156 = load ptr, ptr %22, align 8, !tbaa !5
  %157 = call i32 @dlaset_(ptr noundef @.str.2, ptr noundef @c__1, ptr noundef %152, ptr noundef @c_b6, ptr noundef @c_b6, ptr noundef %155, ptr noundef %156)
  br label %186

158:                                              ; preds = %146
  %159 = load ptr, ptr %24, align 8, !tbaa !5
  store i64 1, ptr %159, align 8, !tbaa !9
  %160 = load ptr, ptr %19, align 8, !tbaa !5
  %161 = getelementptr inbounds double, ptr %160, i64 1
  %162 = load ptr, ptr %18, align 8, !tbaa !5
  %163 = load ptr, ptr %21, align 8, !tbaa !5
  %164 = load i64, ptr %29, align 8, !tbaa !9
  %165 = getelementptr inbounds double, ptr %163, i64 %164
  %166 = load ptr, ptr %22, align 8, !tbaa !5
  %167 = load ptr, ptr %27, align 8, !tbaa !5
  %168 = call i32 @dlascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %161, ptr noundef @c_b11, ptr noundef @c__1, ptr noundef %162, ptr noundef %165, ptr noundef %166, ptr noundef %167)
  %169 = load ptr, ptr %19, align 8, !tbaa !5
  %170 = getelementptr inbounds double, ptr %169, i64 1
  %171 = load double, ptr %170, align 8, !tbaa !11
  %172 = fcmp oge double %171, 0.000000e+00
  br i1 %172, label %173, label %177

173:                                              ; preds = %158
  %174 = load ptr, ptr %19, align 8, !tbaa !5
  %175 = getelementptr inbounds double, ptr %174, i64 1
  %176 = load double, ptr %175, align 8, !tbaa !11
  br label %182

177:                                              ; preds = %158
  %178 = load ptr, ptr %19, align 8, !tbaa !5
  %179 = getelementptr inbounds double, ptr %178, i64 1
  %180 = load double, ptr %179, align 8, !tbaa !11
  %181 = fneg double %180
  br label %182

182:                                              ; preds = %177, %173
  %183 = phi double [ %176, %173 ], [ %181, %177 ]
  %184 = load ptr, ptr %19, align 8, !tbaa !5
  %185 = getelementptr inbounds double, ptr %184, i64 1
  store double %183, ptr %185, align 8, !tbaa !11
  br label %186

186:                                              ; preds = %182, %151
  store i32 0, ptr %14, align 4
  store i32 1, ptr %70, align 4
  br label %1300

187:                                              ; preds = %142
  br label %188

188:                                              ; preds = %187
  %189 = load ptr, ptr %15, align 8, !tbaa !5
  %190 = load i8, ptr %189, align 1, !tbaa !13
  %191 = zext i8 %190 to i32
  %192 = icmp eq i32 %191, 76
  br i1 %192, label %193, label %322

193:                                              ; preds = %188
  %194 = load ptr, ptr %17, align 8, !tbaa !5
  %195 = load i64, ptr %194, align 8, !tbaa !9
  %196 = sub nsw i64 %195, 1
  store i64 %196, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %34, align 8, !tbaa !9
  br label %197

197:                                              ; preds = %263, %193
  %198 = load i64, ptr %34, align 8, !tbaa !9
  %199 = load i64, ptr %30, align 8, !tbaa !9
  %200 = icmp sle i64 %198, %199
  br i1 %200, label %201, label %266

201:                                              ; preds = %197
  %202 = load ptr, ptr %19, align 8, !tbaa !5
  %203 = load i64, ptr %34, align 8, !tbaa !9
  %204 = getelementptr inbounds double, ptr %202, i64 %203
  %205 = load ptr, ptr %20, align 8, !tbaa !5
  %206 = load i64, ptr %34, align 8, !tbaa !9
  %207 = getelementptr inbounds double, ptr %205, i64 %206
  %208 = call i32 @dlartg_(ptr noundef %204, ptr noundef %207, ptr noundef %41, ptr noundef %43, ptr noundef %37)
  %209 = load double, ptr %37, align 8, !tbaa !11
  %210 = load ptr, ptr %19, align 8, !tbaa !5
  %211 = load i64, ptr %34, align 8, !tbaa !9
  %212 = getelementptr inbounds double, ptr %210, i64 %211
  store double %209, ptr %212, align 8, !tbaa !11
  %213 = load double, ptr %43, align 8, !tbaa !11
  %214 = load ptr, ptr %19, align 8, !tbaa !5
  %215 = load i64, ptr %34, align 8, !tbaa !9
  %216 = add nsw i64 %215, 1
  %217 = getelementptr inbounds double, ptr %214, i64 %216
  %218 = load double, ptr %217, align 8, !tbaa !11
  %219 = fmul double %213, %218
  %220 = load ptr, ptr %20, align 8, !tbaa !5
  %221 = load i64, ptr %34, align 8, !tbaa !9
  %222 = getelementptr inbounds double, ptr %220, i64 %221
  store double %219, ptr %222, align 8, !tbaa !11
  %223 = load double, ptr %41, align 8, !tbaa !11
  %224 = load ptr, ptr %19, align 8, !tbaa !5
  %225 = load i64, ptr %34, align 8, !tbaa !9
  %226 = add nsw i64 %225, 1
  %227 = getelementptr inbounds double, ptr %224, i64 %226
  %228 = load double, ptr %227, align 8, !tbaa !11
  %229 = fmul double %223, %228
  %230 = load ptr, ptr %19, align 8, !tbaa !5
  %231 = load i64, ptr %34, align 8, !tbaa !9
  %232 = add nsw i64 %231, 1
  %233 = getelementptr inbounds double, ptr %230, i64 %232
  store double %229, ptr %233, align 8, !tbaa !11
  %234 = load ptr, ptr %18, align 8, !tbaa !5
  %235 = load i64, ptr %234, align 8, !tbaa !9
  %236 = icmp eq i64 %235, 1
  br i1 %236, label %237, label %250

237:                                              ; preds = %201
  %238 = load ptr, ptr %21, align 8, !tbaa !5
  %239 = load i64, ptr %34, align 8, !tbaa !9
  %240 = load i64, ptr %28, align 8, !tbaa !9
  %241 = add nsw i64 %239, %240
  %242 = getelementptr inbounds double, ptr %238, i64 %241
  %243 = load ptr, ptr %21, align 8, !tbaa !5
  %244 = load i64, ptr %34, align 8, !tbaa !9
  %245 = add nsw i64 %244, 1
  %246 = load i64, ptr %28, align 8, !tbaa !9
  %247 = add nsw i64 %245, %246
  %248 = getelementptr inbounds double, ptr %243, i64 %247
  %249 = call i32 @f2c_drot(ptr noundef @c__1, ptr noundef %242, ptr noundef @c__1, ptr noundef %248, ptr noundef @c__1, ptr noundef %41, ptr noundef %43)
  br label %262

250:                                              ; preds = %201
  %251 = load double, ptr %41, align 8, !tbaa !11
  %252 = load ptr, ptr %25, align 8, !tbaa !5
  %253 = load i64, ptr %34, align 8, !tbaa !9
  %254 = shl i64 %253, 1
  %255 = sub nsw i64 %254, 1
  %256 = getelementptr inbounds double, ptr %252, i64 %255
  store double %251, ptr %256, align 8, !tbaa !11
  %257 = load double, ptr %43, align 8, !tbaa !11
  %258 = load ptr, ptr %25, align 8, !tbaa !5
  %259 = load i64, ptr %34, align 8, !tbaa !9
  %260 = mul nsw i64 %259, 2
  %261 = getelementptr inbounds double, ptr %258, i64 %260
  store double %257, ptr %261, align 8, !tbaa !11
  br label %262

262:                                              ; preds = %250, %237
  br label %263

263:                                              ; preds = %262
  %264 = load i64, ptr %34, align 8, !tbaa !9
  %265 = add nsw i64 %264, 1
  store i64 %265, ptr %34, align 8, !tbaa !9
  br label %197, !llvm.loop !14

266:                                              ; preds = %197
  %267 = load ptr, ptr %18, align 8, !tbaa !5
  %268 = load i64, ptr %267, align 8, !tbaa !9
  %269 = icmp sgt i64 %268, 1
  br i1 %269, label %270, label %321

270:                                              ; preds = %266
  %271 = load ptr, ptr %18, align 8, !tbaa !5
  %272 = load i64, ptr %271, align 8, !tbaa !9
  store i64 %272, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %34, align 8, !tbaa !9
  br label %273

273:                                              ; preds = %317, %270
  %274 = load i64, ptr %34, align 8, !tbaa !9
  %275 = load i64, ptr %30, align 8, !tbaa !9
  %276 = icmp sle i64 %274, %275
  br i1 %276, label %277, label %320

277:                                              ; preds = %273
  %278 = load ptr, ptr %17, align 8, !tbaa !5
  %279 = load i64, ptr %278, align 8, !tbaa !9
  %280 = sub nsw i64 %279, 1
  store i64 %280, ptr %31, align 8, !tbaa !9
  store i64 1, ptr %35, align 8, !tbaa !9
  br label %281

281:                                              ; preds = %313, %277
  %282 = load i64, ptr %35, align 8, !tbaa !9
  %283 = load i64, ptr %31, align 8, !tbaa !9
  %284 = icmp sle i64 %282, %283
  br i1 %284, label %285, label %316

285:                                              ; preds = %281
  %286 = load ptr, ptr %25, align 8, !tbaa !5
  %287 = load i64, ptr %35, align 8, !tbaa !9
  %288 = shl i64 %287, 1
  %289 = sub nsw i64 %288, 1
  %290 = getelementptr inbounds double, ptr %286, i64 %289
  %291 = load double, ptr %290, align 8, !tbaa !11
  store double %291, ptr %41, align 8, !tbaa !11
  %292 = load ptr, ptr %25, align 8, !tbaa !5
  %293 = load i64, ptr %35, align 8, !tbaa !9
  %294 = mul nsw i64 %293, 2
  %295 = getelementptr inbounds double, ptr %292, i64 %294
  %296 = load double, ptr %295, align 8, !tbaa !11
  store double %296, ptr %43, align 8, !tbaa !11
  %297 = load ptr, ptr %21, align 8, !tbaa !5
  %298 = load i64, ptr %35, align 8, !tbaa !9
  %299 = load i64, ptr %34, align 8, !tbaa !9
  %300 = load i64, ptr %28, align 8, !tbaa !9
  %301 = mul nsw i64 %299, %300
  %302 = add nsw i64 %298, %301
  %303 = getelementptr inbounds double, ptr %297, i64 %302
  %304 = load ptr, ptr %21, align 8, !tbaa !5
  %305 = load i64, ptr %35, align 8, !tbaa !9
  %306 = add nsw i64 %305, 1
  %307 = load i64, ptr %34, align 8, !tbaa !9
  %308 = load i64, ptr %28, align 8, !tbaa !9
  %309 = mul nsw i64 %307, %308
  %310 = add nsw i64 %306, %309
  %311 = getelementptr inbounds double, ptr %304, i64 %310
  %312 = call i32 @f2c_drot(ptr noundef @c__1, ptr noundef %303, ptr noundef @c__1, ptr noundef %311, ptr noundef @c__1, ptr noundef %41, ptr noundef %43)
  br label %313

313:                                              ; preds = %285
  %314 = load i64, ptr %35, align 8, !tbaa !9
  %315 = add nsw i64 %314, 1
  store i64 %315, ptr %35, align 8, !tbaa !9
  br label %281, !llvm.loop !16

316:                                              ; preds = %281
  br label %317

317:                                              ; preds = %316
  %318 = load i64, ptr %34, align 8, !tbaa !9
  %319 = add nsw i64 %318, 1
  store i64 %319, ptr %34, align 8, !tbaa !9
  br label %273, !llvm.loop !17

320:                                              ; preds = %273
  br label %321

321:                                              ; preds = %320, %266
  br label %322

322:                                              ; preds = %321, %188
  %323 = load ptr, ptr %17, align 8, !tbaa !5
  %324 = load i64, ptr %323, align 8, !tbaa !9
  %325 = sub nsw i64 %324, 1
  store i64 %325, ptr %46, align 8, !tbaa !9
  %326 = load ptr, ptr %17, align 8, !tbaa !5
  %327 = load ptr, ptr %19, align 8, !tbaa !5
  %328 = getelementptr inbounds double, ptr %327, i64 1
  %329 = load ptr, ptr %20, align 8, !tbaa !5
  %330 = getelementptr inbounds double, ptr %329, i64 1
  %331 = call double @dlanst_(ptr noundef @.str.4, ptr noundef %326, ptr noundef %328, ptr noundef %330)
  store double %331, ptr %66, align 8, !tbaa !11
  %332 = load double, ptr %66, align 8, !tbaa !11
  %333 = fcmp oeq double %332, 0.000000e+00
  br i1 %333, label %334, label %342

334:                                              ; preds = %322
  %335 = load ptr, ptr %17, align 8, !tbaa !5
  %336 = load ptr, ptr %18, align 8, !tbaa !5
  %337 = load ptr, ptr %21, align 8, !tbaa !5
  %338 = load i64, ptr %29, align 8, !tbaa !9
  %339 = getelementptr inbounds double, ptr %337, i64 %338
  %340 = load ptr, ptr %22, align 8, !tbaa !5
  %341 = call i32 @dlaset_(ptr noundef @.str.2, ptr noundef %335, ptr noundef %336, ptr noundef @c_b6, ptr noundef @c_b6, ptr noundef %339, ptr noundef %340)
  store i32 0, ptr %14, align 4
  store i32 1, ptr %70, align 4
  br label %1300

342:                                              ; preds = %322
  %343 = load ptr, ptr %17, align 8, !tbaa !5
  %344 = load ptr, ptr %19, align 8, !tbaa !5
  %345 = getelementptr inbounds double, ptr %344, i64 1
  %346 = load ptr, ptr %17, align 8, !tbaa !5
  %347 = load ptr, ptr %27, align 8, !tbaa !5
  %348 = call i32 @dlascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %66, ptr noundef @c_b11, ptr noundef %343, ptr noundef @c__1, ptr noundef %345, ptr noundef %346, ptr noundef %347)
  %349 = load ptr, ptr %20, align 8, !tbaa !5
  %350 = getelementptr inbounds double, ptr %349, i64 1
  %351 = load ptr, ptr %27, align 8, !tbaa !5
  %352 = call i32 @dlascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %66, ptr noundef @c_b11, ptr noundef %46, ptr noundef @c__1, ptr noundef %350, ptr noundef %46, ptr noundef %351)
  %353 = load ptr, ptr %17, align 8, !tbaa !5
  %354 = load i64, ptr %353, align 8, !tbaa !9
  %355 = load ptr, ptr %16, align 8, !tbaa !5
  %356 = load i64, ptr %355, align 8, !tbaa !9
  %357 = icmp sle i64 %354, %356
  br i1 %357, label %358, label %504

358:                                              ; preds = %342
  %359 = load ptr, ptr %17, align 8, !tbaa !5
  %360 = load i64, ptr %359, align 8, !tbaa !9
  %361 = load ptr, ptr %17, align 8, !tbaa !5
  %362 = load i64, ptr %361, align 8, !tbaa !9
  %363 = mul nsw i64 %360, %362
  %364 = add nsw i64 %363, 1
  store i64 %364, ptr %62, align 8, !tbaa !9
  %365 = load ptr, ptr %17, align 8, !tbaa !5
  %366 = load ptr, ptr %17, align 8, !tbaa !5
  %367 = load ptr, ptr %25, align 8, !tbaa !5
  %368 = getelementptr inbounds double, ptr %367, i64 1
  %369 = load ptr, ptr %17, align 8, !tbaa !5
  %370 = call i32 @dlaset_(ptr noundef @.str.2, ptr noundef %365, ptr noundef %366, ptr noundef @c_b6, ptr noundef @c_b11, ptr noundef %368, ptr noundef %369)
  %371 = load ptr, ptr %17, align 8, !tbaa !5
  %372 = load ptr, ptr %17, align 8, !tbaa !5
  %373 = load ptr, ptr %18, align 8, !tbaa !5
  %374 = load ptr, ptr %19, align 8, !tbaa !5
  %375 = getelementptr inbounds double, ptr %374, i64 1
  %376 = load ptr, ptr %20, align 8, !tbaa !5
  %377 = getelementptr inbounds double, ptr %376, i64 1
  %378 = load ptr, ptr %25, align 8, !tbaa !5
  %379 = getelementptr inbounds double, ptr %378, i64 1
  %380 = load ptr, ptr %17, align 8, !tbaa !5
  %381 = load ptr, ptr %25, align 8, !tbaa !5
  %382 = getelementptr inbounds double, ptr %381, i64 1
  %383 = load ptr, ptr %17, align 8, !tbaa !5
  %384 = load ptr, ptr %21, align 8, !tbaa !5
  %385 = load i64, ptr %29, align 8, !tbaa !9
  %386 = getelementptr inbounds double, ptr %384, i64 %385
  %387 = load ptr, ptr %22, align 8, !tbaa !5
  %388 = load ptr, ptr %25, align 8, !tbaa !5
  %389 = load i64, ptr %62, align 8, !tbaa !9
  %390 = getelementptr inbounds double, ptr %388, i64 %389
  %391 = load ptr, ptr %27, align 8, !tbaa !5
  %392 = call i32 @dlasdq_(ptr noundef @.str.5, ptr noundef @c__0, ptr noundef %371, ptr noundef %372, ptr noundef @c__0, ptr noundef %373, ptr noundef %375, ptr noundef %377, ptr noundef %379, ptr noundef %380, ptr noundef %382, ptr noundef %383, ptr noundef %386, ptr noundef %387, ptr noundef %390, ptr noundef %391)
  %393 = load ptr, ptr %27, align 8, !tbaa !5
  %394 = load i64, ptr %393, align 8, !tbaa !9
  %395 = icmp ne i64 %394, 0
  br i1 %395, label %396, label %397

396:                                              ; preds = %358
  store i32 0, ptr %14, align 4
  store i32 1, ptr %70, align 4
  br label %1300

397:                                              ; preds = %358
  %398 = load double, ptr %53, align 8, !tbaa !11
  %399 = load ptr, ptr %19, align 8, !tbaa !5
  %400 = load ptr, ptr %17, align 8, !tbaa !5
  %401 = load ptr, ptr %19, align 8, !tbaa !5
  %402 = getelementptr inbounds double, ptr %401, i64 1
  %403 = call i64 @f2c_idamax(ptr noundef %400, ptr noundef %402, ptr noundef @c__1)
  %404 = getelementptr inbounds double, ptr %399, i64 %403
  %405 = load double, ptr %404, align 8, !tbaa !11
  store double %405, ptr %32, align 8, !tbaa !11
  %406 = load double, ptr %32, align 8, !tbaa !11
  %407 = fcmp oge double %406, 0.000000e+00
  br i1 %407, label %408, label %410

408:                                              ; preds = %397
  %409 = load double, ptr %32, align 8, !tbaa !11
  br label %413

410:                                              ; preds = %397
  %411 = load double, ptr %32, align 8, !tbaa !11
  %412 = fneg double %411
  br label %413

413:                                              ; preds = %410, %408
  %414 = phi double [ %409, %408 ], [ %412, %410 ]
  %415 = fmul double %398, %414
  store double %415, ptr %50, align 8, !tbaa !11
  %416 = load ptr, ptr %17, align 8, !tbaa !5
  %417 = load i64, ptr %416, align 8, !tbaa !9
  store i64 %417, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %34, align 8, !tbaa !9
  br label %418

418:                                              ; preds = %455, %413
  %419 = load i64, ptr %34, align 8, !tbaa !9
  %420 = load i64, ptr %30, align 8, !tbaa !9
  %421 = icmp sle i64 %419, %420
  br i1 %421, label %422, label %458

422:                                              ; preds = %418
  %423 = load ptr, ptr %19, align 8, !tbaa !5
  %424 = load i64, ptr %34, align 8, !tbaa !9
  %425 = getelementptr inbounds double, ptr %423, i64 %424
  %426 = load double, ptr %425, align 8, !tbaa !11
  %427 = load double, ptr %50, align 8, !tbaa !11
  %428 = fcmp ole double %426, %427
  br i1 %428, label %429, label %438

429:                                              ; preds = %422
  %430 = load ptr, ptr %18, align 8, !tbaa !5
  %431 = load ptr, ptr %21, align 8, !tbaa !5
  %432 = load i64, ptr %34, align 8, !tbaa !9
  %433 = load i64, ptr %28, align 8, !tbaa !9
  %434 = add nsw i64 %432, %433
  %435 = getelementptr inbounds double, ptr %431, i64 %434
  %436 = load ptr, ptr %22, align 8, !tbaa !5
  %437 = call i32 @dlaset_(ptr noundef @.str.2, ptr noundef @c__1, ptr noundef %430, ptr noundef @c_b6, ptr noundef @c_b6, ptr noundef %435, ptr noundef %436)
  br label %454

438:                                              ; preds = %422
  %439 = load ptr, ptr %19, align 8, !tbaa !5
  %440 = load i64, ptr %34, align 8, !tbaa !9
  %441 = getelementptr inbounds double, ptr %439, i64 %440
  %442 = load ptr, ptr %18, align 8, !tbaa !5
  %443 = load ptr, ptr %21, align 8, !tbaa !5
  %444 = load i64, ptr %34, align 8, !tbaa !9
  %445 = load i64, ptr %28, align 8, !tbaa !9
  %446 = add nsw i64 %444, %445
  %447 = getelementptr inbounds double, ptr %443, i64 %446
  %448 = load ptr, ptr %22, align 8, !tbaa !5
  %449 = load ptr, ptr %27, align 8, !tbaa !5
  %450 = call i32 @dlascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %441, ptr noundef @c_b11, ptr noundef @c__1, ptr noundef %442, ptr noundef %447, ptr noundef %448, ptr noundef %449)
  %451 = load ptr, ptr %24, align 8, !tbaa !5
  %452 = load i64, ptr %451, align 8, !tbaa !9
  %453 = add nsw i64 %452, 1
  store i64 %453, ptr %451, align 8, !tbaa !9
  br label %454

454:                                              ; preds = %438, %429
  br label %455

455:                                              ; preds = %454
  %456 = load i64, ptr %34, align 8, !tbaa !9
  %457 = add nsw i64 %456, 1
  store i64 %457, ptr %34, align 8, !tbaa !9
  br label %418, !llvm.loop !18

458:                                              ; preds = %418
  %459 = load ptr, ptr %17, align 8, !tbaa !5
  %460 = load ptr, ptr %18, align 8, !tbaa !5
  %461 = load ptr, ptr %17, align 8, !tbaa !5
  %462 = load ptr, ptr %25, align 8, !tbaa !5
  %463 = getelementptr inbounds double, ptr %462, i64 1
  %464 = load ptr, ptr %17, align 8, !tbaa !5
  %465 = load ptr, ptr %21, align 8, !tbaa !5
  %466 = load i64, ptr %29, align 8, !tbaa !9
  %467 = getelementptr inbounds double, ptr %465, i64 %466
  %468 = load ptr, ptr %22, align 8, !tbaa !5
  %469 = load ptr, ptr %25, align 8, !tbaa !5
  %470 = load i64, ptr %62, align 8, !tbaa !9
  %471 = getelementptr inbounds double, ptr %469, i64 %470
  %472 = load ptr, ptr %17, align 8, !tbaa !5
  %473 = call i32 @f2c_dgemm(ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %459, ptr noundef %460, ptr noundef %461, ptr noundef @c_b11, ptr noundef %463, ptr noundef %464, ptr noundef %467, ptr noundef %468, ptr noundef @c_b6, ptr noundef %471, ptr noundef %472)
  %474 = load ptr, ptr %17, align 8, !tbaa !5
  %475 = load ptr, ptr %18, align 8, !tbaa !5
  %476 = load ptr, ptr %25, align 8, !tbaa !5
  %477 = load i64, ptr %62, align 8, !tbaa !9
  %478 = getelementptr inbounds double, ptr %476, i64 %477
  %479 = load ptr, ptr %17, align 8, !tbaa !5
  %480 = load ptr, ptr %21, align 8, !tbaa !5
  %481 = load i64, ptr %29, align 8, !tbaa !9
  %482 = getelementptr inbounds double, ptr %480, i64 %481
  %483 = load ptr, ptr %22, align 8, !tbaa !5
  %484 = call i32 @dlacpy_(ptr noundef @.str.2, ptr noundef %474, ptr noundef %475, ptr noundef %478, ptr noundef %479, ptr noundef %482, ptr noundef %483)
  %485 = load ptr, ptr %17, align 8, !tbaa !5
  %486 = load ptr, ptr %19, align 8, !tbaa !5
  %487 = getelementptr inbounds double, ptr %486, i64 1
  %488 = load ptr, ptr %17, align 8, !tbaa !5
  %489 = load ptr, ptr %27, align 8, !tbaa !5
  %490 = call i32 @dlascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef @c_b11, ptr noundef %66, ptr noundef %485, ptr noundef @c__1, ptr noundef %487, ptr noundef %488, ptr noundef %489)
  %491 = load ptr, ptr %17, align 8, !tbaa !5
  %492 = load ptr, ptr %19, align 8, !tbaa !5
  %493 = getelementptr inbounds double, ptr %492, i64 1
  %494 = load ptr, ptr %27, align 8, !tbaa !5
  %495 = call i32 @dlasrt_(ptr noundef @.str.8, ptr noundef %491, ptr noundef %493, ptr noundef %494)
  %496 = load ptr, ptr %17, align 8, !tbaa !5
  %497 = load ptr, ptr %18, align 8, !tbaa !5
  %498 = load ptr, ptr %21, align 8, !tbaa !5
  %499 = load i64, ptr %29, align 8, !tbaa !9
  %500 = getelementptr inbounds double, ptr %498, i64 %499
  %501 = load ptr, ptr %22, align 8, !tbaa !5
  %502 = load ptr, ptr %27, align 8, !tbaa !5
  %503 = call i32 @dlascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %66, ptr noundef @c_b11, ptr noundef %496, ptr noundef %497, ptr noundef %500, ptr noundef %501, ptr noundef %502)
  store i32 0, ptr %14, align 4
  store i32 1, ptr %70, align 4
  br label %1300

504:                                              ; preds = %342
  %505 = load ptr, ptr %17, align 8, !tbaa !5
  %506 = load i64, ptr %505, align 8, !tbaa !9
  %507 = sitofp i64 %506 to double
  %508 = load ptr, ptr %16, align 8, !tbaa !5
  %509 = load i64, ptr %508, align 8, !tbaa !9
  %510 = add nsw i64 %509, 1
  %511 = sitofp i64 %510 to double
  %512 = fdiv double %507, %511
  %513 = call double @log(double noundef %512) #4
  %514 = call double @log(double noundef 2.000000e+00) #4
  %515 = fdiv double %513, %514
  %516 = fptosi double %515 to i64
  %517 = add nsw i64 %516, 1
  store i64 %517, ptr %56, align 8, !tbaa !9
  %518 = load ptr, ptr %16, align 8, !tbaa !5
  %519 = load i64, ptr %518, align 8, !tbaa !9
  %520 = add nsw i64 %519, 1
  store i64 %520, ptr %69, align 8, !tbaa !9
  store i64 1, ptr %39, align 8, !tbaa !9
  %521 = load ptr, ptr %16, align 8, !tbaa !5
  %522 = load i64, ptr %521, align 8, !tbaa !9
  %523 = load ptr, ptr %17, align 8, !tbaa !5
  %524 = load i64, ptr %523, align 8, !tbaa !9
  %525 = mul nsw i64 %522, %524
  %526 = add nsw i64 %525, 1
  store i64 %526, ptr %45, align 8, !tbaa !9
  %527 = load i64, ptr %45, align 8, !tbaa !9
  %528 = load i64, ptr %69, align 8, !tbaa !9
  %529 = load ptr, ptr %17, align 8, !tbaa !5
  %530 = load i64, ptr %529, align 8, !tbaa !9
  %531 = mul nsw i64 %528, %530
  %532 = add nsw i64 %527, %531
  store i64 %532, ptr %51, align 8, !tbaa !9
  %533 = load i64, ptr %51, align 8, !tbaa !9
  %534 = load i64, ptr %56, align 8, !tbaa !9
  %535 = load ptr, ptr %17, align 8, !tbaa !5
  %536 = load i64, ptr %535, align 8, !tbaa !9
  %537 = mul nsw i64 %534, %536
  %538 = add nsw i64 %533, %537
  store i64 %538, ptr %52, align 8, !tbaa !9
  %539 = load i64, ptr %52, align 8, !tbaa !9
  %540 = load i64, ptr %56, align 8, !tbaa !9
  %541 = load ptr, ptr %17, align 8, !tbaa !5
  %542 = load i64, ptr %541, align 8, !tbaa !9
  %543 = mul nsw i64 %540, %542
  %544 = shl i64 %543, 1
  %545 = add nsw i64 %539, %544
  store i64 %545, ptr %40, align 8, !tbaa !9
  %546 = load i64, ptr %40, align 8, !tbaa !9
  %547 = load i64, ptr %56, align 8, !tbaa !9
  %548 = load ptr, ptr %17, align 8, !tbaa !5
  %549 = load i64, ptr %548, align 8, !tbaa !9
  %550 = mul nsw i64 %547, %549
  %551 = add nsw i64 %546, %550
  store i64 %551, ptr %33, align 8, !tbaa !9
  %552 = load i64, ptr %33, align 8, !tbaa !9
  %553 = load ptr, ptr %17, align 8, !tbaa !5
  %554 = load i64, ptr %553, align 8, !tbaa !9
  %555 = add nsw i64 %552, %554
  store i64 %555, ptr %38, align 8, !tbaa !9
  %556 = load i64, ptr %38, align 8, !tbaa !9
  %557 = load ptr, ptr %17, align 8, !tbaa !5
  %558 = load i64, ptr %557, align 8, !tbaa !9
  %559 = add nsw i64 %556, %558
  store i64 %559, ptr %59, align 8, !tbaa !9
  %560 = load i64, ptr %59, align 8, !tbaa !9
  %561 = load i64, ptr %56, align 8, !tbaa !9
  %562 = shl i64 %561, 1
  %563 = load ptr, ptr %17, align 8, !tbaa !5
  %564 = load i64, ptr %563, align 8, !tbaa !9
  %565 = mul nsw i64 %562, %564
  %566 = add nsw i64 %560, %565
  store i64 %566, ptr %67, align 8, !tbaa !9
  %567 = load i64, ptr %67, align 8, !tbaa !9
  %568 = load i64, ptr %56, align 8, !tbaa !9
  %569 = shl i64 %568, 1
  %570 = load ptr, ptr %17, align 8, !tbaa !5
  %571 = load i64, ptr %570, align 8, !tbaa !9
  %572 = mul nsw i64 %569, %571
  %573 = add nsw i64 %567, %572
  store i64 %573, ptr %42, align 8, !tbaa !9
  %574 = load i64, ptr %42, align 8, !tbaa !9
  %575 = load ptr, ptr %17, align 8, !tbaa !5
  %576 = load i64, ptr %575, align 8, !tbaa !9
  %577 = load ptr, ptr %18, align 8, !tbaa !5
  %578 = load i64, ptr %577, align 8, !tbaa !9
  %579 = mul nsw i64 %576, %578
  %580 = add nsw i64 %574, %579
  store i64 %580, ptr %62, align 8, !tbaa !9
  %581 = load ptr, ptr %17, align 8, !tbaa !5
  %582 = load i64, ptr %581, align 8, !tbaa !9
  %583 = add nsw i64 %582, 1
  store i64 %583, ptr %60, align 8, !tbaa !9
  %584 = load i64, ptr %60, align 8, !tbaa !9
  %585 = load ptr, ptr %17, align 8, !tbaa !5
  %586 = load i64, ptr %585, align 8, !tbaa !9
  %587 = add nsw i64 %584, %586
  store i64 %587, ptr %36, align 8, !tbaa !9
  %588 = load i64, ptr %36, align 8, !tbaa !9
  %589 = load ptr, ptr %17, align 8, !tbaa !5
  %590 = load i64, ptr %589, align 8, !tbaa !9
  %591 = add nsw i64 %588, %590
  store i64 %591, ptr %68, align 8, !tbaa !9
  %592 = load i64, ptr %68, align 8, !tbaa !9
  %593 = load ptr, ptr %17, align 8, !tbaa !5
  %594 = load i64, ptr %593, align 8, !tbaa !9
  %595 = add nsw i64 %592, %594
  store i64 %595, ptr %54, align 8, !tbaa !9
  %596 = load i64, ptr %54, align 8, !tbaa !9
  %597 = load i64, ptr %56, align 8, !tbaa !9
  %598 = load ptr, ptr %17, align 8, !tbaa !5
  %599 = load i64, ptr %598, align 8, !tbaa !9
  %600 = mul nsw i64 %597, %599
  %601 = add nsw i64 %596, %600
  store i64 %601, ptr %65, align 8, !tbaa !9
  %602 = load i64, ptr %65, align 8, !tbaa !9
  %603 = load i64, ptr %56, align 8, !tbaa !9
  %604 = load ptr, ptr %17, align 8, !tbaa !5
  %605 = load i64, ptr %604, align 8, !tbaa !9
  %606 = mul nsw i64 %603, %605
  %607 = shl i64 %606, 1
  %608 = add nsw i64 %602, %607
  store i64 %608, ptr %49, align 8, !tbaa !9
  store i64 1, ptr %44, align 8, !tbaa !9
  store i64 0, ptr %57, align 8, !tbaa !9
  store i64 1, ptr %63, align 8, !tbaa !9
  store i64 0, ptr %64, align 8, !tbaa !9
  store i64 0, ptr %55, align 8, !tbaa !9
  %609 = load ptr, ptr %17, align 8, !tbaa !5
  %610 = load i64, ptr %609, align 8, !tbaa !9
  store i64 %610, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %34, align 8, !tbaa !9
  br label %611

611:                                              ; preds = %640, %504
  %612 = load i64, ptr %34, align 8, !tbaa !9
  %613 = load i64, ptr %30, align 8, !tbaa !9
  %614 = icmp sle i64 %612, %613
  br i1 %614, label %615, label %643

615:                                              ; preds = %611
  %616 = load ptr, ptr %19, align 8, !tbaa !5
  %617 = load i64, ptr %34, align 8, !tbaa !9
  %618 = getelementptr inbounds double, ptr %616, i64 %617
  %619 = load double, ptr %618, align 8, !tbaa !11
  store double %619, ptr %32, align 8, !tbaa !11
  %620 = load double, ptr %32, align 8, !tbaa !11
  %621 = fcmp oge double %620, 0.000000e+00
  br i1 %621, label %622, label %624

622:                                              ; preds = %615
  %623 = load double, ptr %32, align 8, !tbaa !11
  br label %627

624:                                              ; preds = %615
  %625 = load double, ptr %32, align 8, !tbaa !11
  %626 = fneg double %625
  br label %627

627:                                              ; preds = %624, %622
  %628 = phi double [ %623, %622 ], [ %626, %624 ]
  %629 = load double, ptr %48, align 8, !tbaa !11
  %630 = fcmp olt double %628, %629
  br i1 %630, label %631, label %639

631:                                              ; preds = %627
  %632 = load ptr, ptr %19, align 8, !tbaa !5
  %633 = load i64, ptr %34, align 8, !tbaa !9
  %634 = getelementptr inbounds double, ptr %632, i64 %633
  %635 = call double @d_sign(ptr noundef %48, ptr noundef %634)
  %636 = load ptr, ptr %19, align 8, !tbaa !5
  %637 = load i64, ptr %34, align 8, !tbaa !9
  %638 = getelementptr inbounds double, ptr %636, i64 %637
  store double %635, ptr %638, align 8, !tbaa !11
  br label %639

639:                                              ; preds = %631, %627
  br label %640

640:                                              ; preds = %639
  %641 = load i64, ptr %34, align 8, !tbaa !9
  %642 = add nsw i64 %641, 1
  store i64 %642, ptr %34, align 8, !tbaa !9
  br label %611, !llvm.loop !19

643:                                              ; preds = %611
  %644 = load i64, ptr %46, align 8, !tbaa !9
  store i64 %644, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %34, align 8, !tbaa !9
  br label %645

645:                                              ; preds = %1029, %643
  %646 = load i64, ptr %34, align 8, !tbaa !9
  %647 = load i64, ptr %30, align 8, !tbaa !9
  %648 = icmp sle i64 %646, %647
  br i1 %648, label %649, label %1032

649:                                              ; preds = %645
  %650 = load ptr, ptr %20, align 8, !tbaa !5
  %651 = load i64, ptr %34, align 8, !tbaa !9
  %652 = getelementptr inbounds double, ptr %650, i64 %651
  %653 = load double, ptr %652, align 8, !tbaa !11
  store double %653, ptr %32, align 8, !tbaa !11
  %654 = load double, ptr %32, align 8, !tbaa !11
  %655 = fcmp oge double %654, 0.000000e+00
  br i1 %655, label %656, label %658

656:                                              ; preds = %649
  %657 = load double, ptr %32, align 8, !tbaa !11
  br label %661

658:                                              ; preds = %649
  %659 = load double, ptr %32, align 8, !tbaa !11
  %660 = fneg double %659
  br label %661

661:                                              ; preds = %658, %656
  %662 = phi double [ %657, %656 ], [ %660, %658 ]
  %663 = load double, ptr %48, align 8, !tbaa !11
  %664 = fcmp olt double %662, %663
  br i1 %664, label %669, label %665

665:                                              ; preds = %661
  %666 = load i64, ptr %34, align 8, !tbaa !9
  %667 = load i64, ptr %46, align 8, !tbaa !9
  %668 = icmp eq i64 %666, %667
  br i1 %668, label %669, label %1028

669:                                              ; preds = %665, %661
  %670 = load i64, ptr %55, align 8, !tbaa !9
  %671 = add nsw i64 %670, 1
  store i64 %671, ptr %55, align 8, !tbaa !9
  %672 = load i64, ptr %44, align 8, !tbaa !9
  %673 = load ptr, ptr %26, align 8, !tbaa !5
  %674 = load i64, ptr %55, align 8, !tbaa !9
  %675 = getelementptr inbounds i64, ptr %673, i64 %674
  store i64 %672, ptr %675, align 8, !tbaa !9
  %676 = load i64, ptr %34, align 8, !tbaa !9
  %677 = load i64, ptr %46, align 8, !tbaa !9
  %678 = icmp slt i64 %676, %677
  br i1 %678, label %679, label %691

679:                                              ; preds = %669
  %680 = load i64, ptr %34, align 8, !tbaa !9
  %681 = load i64, ptr %44, align 8, !tbaa !9
  %682 = sub nsw i64 %680, %681
  %683 = add nsw i64 %682, 1
  store i64 %683, ptr %61, align 8, !tbaa !9
  %684 = load i64, ptr %61, align 8, !tbaa !9
  %685 = load ptr, ptr %26, align 8, !tbaa !5
  %686 = load i64, ptr %60, align 8, !tbaa !9
  %687 = load i64, ptr %55, align 8, !tbaa !9
  %688 = add nsw i64 %686, %687
  %689 = sub nsw i64 %688, 1
  %690 = getelementptr inbounds i64, ptr %685, i64 %689
  store i64 %684, ptr %690, align 8, !tbaa !9
  br label %761

691:                                              ; preds = %669
  %692 = load ptr, ptr %20, align 8, !tbaa !5
  %693 = load i64, ptr %34, align 8, !tbaa !9
  %694 = getelementptr inbounds double, ptr %692, i64 %693
  %695 = load double, ptr %694, align 8, !tbaa !11
  store double %695, ptr %32, align 8, !tbaa !11
  %696 = load double, ptr %32, align 8, !tbaa !11
  %697 = fcmp oge double %696, 0.000000e+00
  br i1 %697, label %698, label %700

698:                                              ; preds = %691
  %699 = load double, ptr %32, align 8, !tbaa !11
  br label %703

700:                                              ; preds = %691
  %701 = load double, ptr %32, align 8, !tbaa !11
  %702 = fneg double %701
  br label %703

703:                                              ; preds = %700, %698
  %704 = phi double [ %699, %698 ], [ %702, %700 ]
  %705 = load double, ptr %48, align 8, !tbaa !11
  %706 = fcmp oge double %704, %705
  br i1 %706, label %707, label %720

707:                                              ; preds = %703
  %708 = load ptr, ptr %17, align 8, !tbaa !5
  %709 = load i64, ptr %708, align 8, !tbaa !9
  %710 = load i64, ptr %44, align 8, !tbaa !9
  %711 = sub nsw i64 %709, %710
  %712 = add nsw i64 %711, 1
  store i64 %712, ptr %61, align 8, !tbaa !9
  %713 = load i64, ptr %61, align 8, !tbaa !9
  %714 = load ptr, ptr %26, align 8, !tbaa !5
  %715 = load i64, ptr %60, align 8, !tbaa !9
  %716 = load i64, ptr %55, align 8, !tbaa !9
  %717 = add nsw i64 %715, %716
  %718 = sub nsw i64 %717, 1
  %719 = getelementptr inbounds i64, ptr %714, i64 %718
  store i64 %713, ptr %719, align 8, !tbaa !9
  br label %760

720:                                              ; preds = %703
  %721 = load i64, ptr %34, align 8, !tbaa !9
  %722 = load i64, ptr %44, align 8, !tbaa !9
  %723 = sub nsw i64 %721, %722
  %724 = add nsw i64 %723, 1
  store i64 %724, ptr %61, align 8, !tbaa !9
  %725 = load i64, ptr %61, align 8, !tbaa !9
  %726 = load ptr, ptr %26, align 8, !tbaa !5
  %727 = load i64, ptr %60, align 8, !tbaa !9
  %728 = load i64, ptr %55, align 8, !tbaa !9
  %729 = add nsw i64 %727, %728
  %730 = sub nsw i64 %729, 1
  %731 = getelementptr inbounds i64, ptr %726, i64 %730
  store i64 %725, ptr %731, align 8, !tbaa !9
  %732 = load i64, ptr %55, align 8, !tbaa !9
  %733 = add nsw i64 %732, 1
  store i64 %733, ptr %55, align 8, !tbaa !9
  %734 = load ptr, ptr %17, align 8, !tbaa !5
  %735 = load i64, ptr %734, align 8, !tbaa !9
  %736 = load ptr, ptr %26, align 8, !tbaa !5
  %737 = load i64, ptr %55, align 8, !tbaa !9
  %738 = getelementptr inbounds i64, ptr %736, i64 %737
  store i64 %735, ptr %738, align 8, !tbaa !9
  %739 = load ptr, ptr %26, align 8, !tbaa !5
  %740 = load i64, ptr %60, align 8, !tbaa !9
  %741 = load i64, ptr %55, align 8, !tbaa !9
  %742 = add nsw i64 %740, %741
  %743 = sub nsw i64 %742, 1
  %744 = getelementptr inbounds i64, ptr %739, i64 %743
  store i64 1, ptr %744, align 8, !tbaa !9
  %745 = load ptr, ptr %18, align 8, !tbaa !5
  %746 = load ptr, ptr %21, align 8, !tbaa !5
  %747 = load ptr, ptr %17, align 8, !tbaa !5
  %748 = load i64, ptr %747, align 8, !tbaa !9
  %749 = load i64, ptr %28, align 8, !tbaa !9
  %750 = add nsw i64 %748, %749
  %751 = getelementptr inbounds double, ptr %746, i64 %750
  %752 = load ptr, ptr %22, align 8, !tbaa !5
  %753 = load ptr, ptr %25, align 8, !tbaa !5
  %754 = load i64, ptr %42, align 8, !tbaa !9
  %755 = load i64, ptr %46, align 8, !tbaa !9
  %756 = add nsw i64 %754, %755
  %757 = getelementptr inbounds double, ptr %753, i64 %756
  %758 = load ptr, ptr %17, align 8, !tbaa !5
  %759 = call i32 @f2c_dcopy(ptr noundef %745, ptr noundef %751, ptr noundef %752, ptr noundef %757, ptr noundef %758)
  br label %760

760:                                              ; preds = %720, %707
  br label %761

761:                                              ; preds = %760, %679
  %762 = load i64, ptr %44, align 8, !tbaa !9
  %763 = sub nsw i64 %762, 1
  store i64 %763, ptr %47, align 8, !tbaa !9
  %764 = load i64, ptr %61, align 8, !tbaa !9
  %765 = icmp eq i64 %764, 1
  br i1 %765, label %766, label %781

766:                                              ; preds = %761
  %767 = load ptr, ptr %18, align 8, !tbaa !5
  %768 = load ptr, ptr %21, align 8, !tbaa !5
  %769 = load i64, ptr %44, align 8, !tbaa !9
  %770 = load i64, ptr %28, align 8, !tbaa !9
  %771 = add nsw i64 %769, %770
  %772 = getelementptr inbounds double, ptr %768, i64 %771
  %773 = load ptr, ptr %22, align 8, !tbaa !5
  %774 = load ptr, ptr %25, align 8, !tbaa !5
  %775 = load i64, ptr %42, align 8, !tbaa !9
  %776 = load i64, ptr %47, align 8, !tbaa !9
  %777 = add nsw i64 %775, %776
  %778 = getelementptr inbounds double, ptr %774, i64 %777
  %779 = load ptr, ptr %17, align 8, !tbaa !5
  %780 = call i32 @f2c_dcopy(ptr noundef %767, ptr noundef %772, ptr noundef %773, ptr noundef %778, ptr noundef %779)
  br label %1025

781:                                              ; preds = %761
  %782 = load i64, ptr %61, align 8, !tbaa !9
  %783 = load ptr, ptr %16, align 8, !tbaa !5
  %784 = load i64, ptr %783, align 8, !tbaa !9
  %785 = icmp sle i64 %782, %784
  br i1 %785, label %786, label %841

786:                                              ; preds = %781
  %787 = load ptr, ptr %25, align 8, !tbaa !5
  %788 = load i64, ptr %45, align 8, !tbaa !9
  %789 = load i64, ptr %47, align 8, !tbaa !9
  %790 = add nsw i64 %788, %789
  %791 = getelementptr inbounds double, ptr %787, i64 %790
  %792 = load ptr, ptr %17, align 8, !tbaa !5
  %793 = call i32 @dlaset_(ptr noundef @.str.2, ptr noundef %61, ptr noundef %61, ptr noundef @c_b6, ptr noundef @c_b11, ptr noundef %791, ptr noundef %792)
  %794 = load ptr, ptr %18, align 8, !tbaa !5
  %795 = load ptr, ptr %19, align 8, !tbaa !5
  %796 = load i64, ptr %44, align 8, !tbaa !9
  %797 = getelementptr inbounds double, ptr %795, i64 %796
  %798 = load ptr, ptr %20, align 8, !tbaa !5
  %799 = load i64, ptr %44, align 8, !tbaa !9
  %800 = getelementptr inbounds double, ptr %798, i64 %799
  %801 = load ptr, ptr %25, align 8, !tbaa !5
  %802 = load i64, ptr %45, align 8, !tbaa !9
  %803 = load i64, ptr %47, align 8, !tbaa !9
  %804 = add nsw i64 %802, %803
  %805 = getelementptr inbounds double, ptr %801, i64 %804
  %806 = load ptr, ptr %17, align 8, !tbaa !5
  %807 = load ptr, ptr %25, align 8, !tbaa !5
  %808 = load i64, ptr %62, align 8, !tbaa !9
  %809 = getelementptr inbounds double, ptr %807, i64 %808
  %810 = load ptr, ptr %17, align 8, !tbaa !5
  %811 = load ptr, ptr %21, align 8, !tbaa !5
  %812 = load i64, ptr %44, align 8, !tbaa !9
  %813 = load i64, ptr %28, align 8, !tbaa !9
  %814 = add nsw i64 %812, %813
  %815 = getelementptr inbounds double, ptr %811, i64 %814
  %816 = load ptr, ptr %22, align 8, !tbaa !5
  %817 = load ptr, ptr %25, align 8, !tbaa !5
  %818 = load i64, ptr %62, align 8, !tbaa !9
  %819 = getelementptr inbounds double, ptr %817, i64 %818
  %820 = load ptr, ptr %27, align 8, !tbaa !5
  %821 = call i32 @dlasdq_(ptr noundef @.str.5, ptr noundef @c__0, ptr noundef %61, ptr noundef %61, ptr noundef @c__0, ptr noundef %794, ptr noundef %797, ptr noundef %800, ptr noundef %805, ptr noundef %806, ptr noundef %809, ptr noundef %810, ptr noundef %815, ptr noundef %816, ptr noundef %819, ptr noundef %820)
  %822 = load ptr, ptr %27, align 8, !tbaa !5
  %823 = load i64, ptr %822, align 8, !tbaa !9
  %824 = icmp ne i64 %823, 0
  br i1 %824, label %825, label %826

825:                                              ; preds = %786
  store i32 0, ptr %14, align 4
  store i32 1, ptr %70, align 4
  br label %1300

826:                                              ; preds = %786
  %827 = load ptr, ptr %18, align 8, !tbaa !5
  %828 = load ptr, ptr %21, align 8, !tbaa !5
  %829 = load i64, ptr %44, align 8, !tbaa !9
  %830 = load i64, ptr %28, align 8, !tbaa !9
  %831 = add nsw i64 %829, %830
  %832 = getelementptr inbounds double, ptr %828, i64 %831
  %833 = load ptr, ptr %22, align 8, !tbaa !5
  %834 = load ptr, ptr %25, align 8, !tbaa !5
  %835 = load i64, ptr %42, align 8, !tbaa !9
  %836 = load i64, ptr %47, align 8, !tbaa !9
  %837 = add nsw i64 %835, %836
  %838 = getelementptr inbounds double, ptr %834, i64 %837
  %839 = load ptr, ptr %17, align 8, !tbaa !5
  %840 = call i32 @dlacpy_(ptr noundef @.str.2, ptr noundef %61, ptr noundef %827, ptr noundef %832, ptr noundef %833, ptr noundef %838, ptr noundef %839)
  br label %1024

841:                                              ; preds = %781
  %842 = load ptr, ptr %16, align 8, !tbaa !5
  %843 = load ptr, ptr %19, align 8, !tbaa !5
  %844 = load i64, ptr %44, align 8, !tbaa !9
  %845 = getelementptr inbounds double, ptr %843, i64 %844
  %846 = load ptr, ptr %20, align 8, !tbaa !5
  %847 = load i64, ptr %44, align 8, !tbaa !9
  %848 = getelementptr inbounds double, ptr %846, i64 %847
  %849 = load ptr, ptr %25, align 8, !tbaa !5
  %850 = load i64, ptr %39, align 8, !tbaa !9
  %851 = load i64, ptr %47, align 8, !tbaa !9
  %852 = add nsw i64 %850, %851
  %853 = getelementptr inbounds double, ptr %849, i64 %852
  %854 = load ptr, ptr %17, align 8, !tbaa !5
  %855 = load ptr, ptr %25, align 8, !tbaa !5
  %856 = load i64, ptr %45, align 8, !tbaa !9
  %857 = load i64, ptr %47, align 8, !tbaa !9
  %858 = add nsw i64 %856, %857
  %859 = getelementptr inbounds double, ptr %855, i64 %858
  %860 = load ptr, ptr %26, align 8, !tbaa !5
  %861 = load i64, ptr %36, align 8, !tbaa !9
  %862 = load i64, ptr %47, align 8, !tbaa !9
  %863 = add nsw i64 %861, %862
  %864 = getelementptr inbounds i64, ptr %860, i64 %863
  %865 = load ptr, ptr %25, align 8, !tbaa !5
  %866 = load i64, ptr %51, align 8, !tbaa !9
  %867 = load i64, ptr %47, align 8, !tbaa !9
  %868 = add nsw i64 %866, %867
  %869 = getelementptr inbounds double, ptr %865, i64 %868
  %870 = load ptr, ptr %25, align 8, !tbaa !5
  %871 = load i64, ptr %52, align 8, !tbaa !9
  %872 = load i64, ptr %47, align 8, !tbaa !9
  %873 = add nsw i64 %871, %872
  %874 = getelementptr inbounds double, ptr %870, i64 %873
  %875 = load ptr, ptr %25, align 8, !tbaa !5
  %876 = load i64, ptr %40, align 8, !tbaa !9
  %877 = load i64, ptr %47, align 8, !tbaa !9
  %878 = add nsw i64 %876, %877
  %879 = getelementptr inbounds double, ptr %875, i64 %878
  %880 = load ptr, ptr %25, align 8, !tbaa !5
  %881 = load i64, ptr %59, align 8, !tbaa !9
  %882 = load i64, ptr %47, align 8, !tbaa !9
  %883 = add nsw i64 %881, %882
  %884 = getelementptr inbounds double, ptr %880, i64 %883
  %885 = load ptr, ptr %26, align 8, !tbaa !5
  %886 = load i64, ptr %68, align 8, !tbaa !9
  %887 = load i64, ptr %47, align 8, !tbaa !9
  %888 = add nsw i64 %886, %887
  %889 = getelementptr inbounds i64, ptr %885, i64 %888
  %890 = load ptr, ptr %26, align 8, !tbaa !5
  %891 = load i64, ptr %65, align 8, !tbaa !9
  %892 = load i64, ptr %47, align 8, !tbaa !9
  %893 = add nsw i64 %891, %892
  %894 = getelementptr inbounds i64, ptr %890, i64 %893
  %895 = load ptr, ptr %17, align 8, !tbaa !5
  %896 = load ptr, ptr %26, align 8, !tbaa !5
  %897 = load i64, ptr %54, align 8, !tbaa !9
  %898 = load i64, ptr %47, align 8, !tbaa !9
  %899 = add nsw i64 %897, %898
  %900 = getelementptr inbounds i64, ptr %896, i64 %899
  %901 = load ptr, ptr %25, align 8, !tbaa !5
  %902 = load i64, ptr %67, align 8, !tbaa !9
  %903 = load i64, ptr %47, align 8, !tbaa !9
  %904 = add nsw i64 %902, %903
  %905 = getelementptr inbounds double, ptr %901, i64 %904
  %906 = load ptr, ptr %25, align 8, !tbaa !5
  %907 = load i64, ptr %33, align 8, !tbaa !9
  %908 = load i64, ptr %47, align 8, !tbaa !9
  %909 = add nsw i64 %907, %908
  %910 = getelementptr inbounds double, ptr %906, i64 %909
  %911 = load ptr, ptr %25, align 8, !tbaa !5
  %912 = load i64, ptr %38, align 8, !tbaa !9
  %913 = load i64, ptr %47, align 8, !tbaa !9
  %914 = add nsw i64 %912, %913
  %915 = getelementptr inbounds double, ptr %911, i64 %914
  %916 = load ptr, ptr %25, align 8, !tbaa !5
  %917 = load i64, ptr %62, align 8, !tbaa !9
  %918 = getelementptr inbounds double, ptr %916, i64 %917
  %919 = load ptr, ptr %26, align 8, !tbaa !5
  %920 = load i64, ptr %49, align 8, !tbaa !9
  %921 = getelementptr inbounds i64, ptr %919, i64 %920
  %922 = load ptr, ptr %27, align 8, !tbaa !5
  %923 = call i32 @dlasda_(ptr noundef %63, ptr noundef %842, ptr noundef %61, ptr noundef %57, ptr noundef %845, ptr noundef %848, ptr noundef %853, ptr noundef %854, ptr noundef %859, ptr noundef %864, ptr noundef %869, ptr noundef %874, ptr noundef %879, ptr noundef %884, ptr noundef %889, ptr noundef %894, ptr noundef %895, ptr noundef %900, ptr noundef %905, ptr noundef %910, ptr noundef %915, ptr noundef %918, ptr noundef %921, ptr noundef %922)
  %924 = load ptr, ptr %27, align 8, !tbaa !5
  %925 = load i64, ptr %924, align 8, !tbaa !9
  %926 = icmp ne i64 %925, 0
  br i1 %926, label %927, label %928

927:                                              ; preds = %841
  store i32 0, ptr %14, align 4
  store i32 1, ptr %70, align 4
  br label %1300

928:                                              ; preds = %841
  %929 = load i64, ptr %42, align 8, !tbaa !9
  %930 = load i64, ptr %47, align 8, !tbaa !9
  %931 = add nsw i64 %929, %930
  store i64 %931, ptr %58, align 8, !tbaa !9
  %932 = load ptr, ptr %16, align 8, !tbaa !5
  %933 = load ptr, ptr %18, align 8, !tbaa !5
  %934 = load ptr, ptr %21, align 8, !tbaa !5
  %935 = load i64, ptr %44, align 8, !tbaa !9
  %936 = load i64, ptr %28, align 8, !tbaa !9
  %937 = add nsw i64 %935, %936
  %938 = getelementptr inbounds double, ptr %934, i64 %937
  %939 = load ptr, ptr %22, align 8, !tbaa !5
  %940 = load ptr, ptr %25, align 8, !tbaa !5
  %941 = load i64, ptr %58, align 8, !tbaa !9
  %942 = getelementptr inbounds double, ptr %940, i64 %941
  %943 = load ptr, ptr %17, align 8, !tbaa !5
  %944 = load ptr, ptr %25, align 8, !tbaa !5
  %945 = load i64, ptr %39, align 8, !tbaa !9
  %946 = load i64, ptr %47, align 8, !tbaa !9
  %947 = add nsw i64 %945, %946
  %948 = getelementptr inbounds double, ptr %944, i64 %947
  %949 = load ptr, ptr %17, align 8, !tbaa !5
  %950 = load ptr, ptr %25, align 8, !tbaa !5
  %951 = load i64, ptr %45, align 8, !tbaa !9
  %952 = load i64, ptr %47, align 8, !tbaa !9
  %953 = add nsw i64 %951, %952
  %954 = getelementptr inbounds double, ptr %950, i64 %953
  %955 = load ptr, ptr %26, align 8, !tbaa !5
  %956 = load i64, ptr %36, align 8, !tbaa !9
  %957 = load i64, ptr %47, align 8, !tbaa !9
  %958 = add nsw i64 %956, %957
  %959 = getelementptr inbounds i64, ptr %955, i64 %958
  %960 = load ptr, ptr %25, align 8, !tbaa !5
  %961 = load i64, ptr %51, align 8, !tbaa !9
  %962 = load i64, ptr %47, align 8, !tbaa !9
  %963 = add nsw i64 %961, %962
  %964 = getelementptr inbounds double, ptr %960, i64 %963
  %965 = load ptr, ptr %25, align 8, !tbaa !5
  %966 = load i64, ptr %52, align 8, !tbaa !9
  %967 = load i64, ptr %47, align 8, !tbaa !9
  %968 = add nsw i64 %966, %967
  %969 = getelementptr inbounds double, ptr %965, i64 %968
  %970 = load ptr, ptr %25, align 8, !tbaa !5
  %971 = load i64, ptr %40, align 8, !tbaa !9
  %972 = load i64, ptr %47, align 8, !tbaa !9
  %973 = add nsw i64 %971, %972
  %974 = getelementptr inbounds double, ptr %970, i64 %973
  %975 = load ptr, ptr %25, align 8, !tbaa !5
  %976 = load i64, ptr %59, align 8, !tbaa !9
  %977 = load i64, ptr %47, align 8, !tbaa !9
  %978 = add nsw i64 %976, %977
  %979 = getelementptr inbounds double, ptr %975, i64 %978
  %980 = load ptr, ptr %26, align 8, !tbaa !5
  %981 = load i64, ptr %68, align 8, !tbaa !9
  %982 = load i64, ptr %47, align 8, !tbaa !9
  %983 = add nsw i64 %981, %982
  %984 = getelementptr inbounds i64, ptr %980, i64 %983
  %985 = load ptr, ptr %26, align 8, !tbaa !5
  %986 = load i64, ptr %65, align 8, !tbaa !9
  %987 = load i64, ptr %47, align 8, !tbaa !9
  %988 = add nsw i64 %986, %987
  %989 = getelementptr inbounds i64, ptr %985, i64 %988
  %990 = load ptr, ptr %17, align 8, !tbaa !5
  %991 = load ptr, ptr %26, align 8, !tbaa !5
  %992 = load i64, ptr %54, align 8, !tbaa !9
  %993 = load i64, ptr %47, align 8, !tbaa !9
  %994 = add nsw i64 %992, %993
  %995 = getelementptr inbounds i64, ptr %991, i64 %994
  %996 = load ptr, ptr %25, align 8, !tbaa !5
  %997 = load i64, ptr %67, align 8, !tbaa !9
  %998 = load i64, ptr %47, align 8, !tbaa !9
  %999 = add nsw i64 %997, %998
  %1000 = getelementptr inbounds double, ptr %996, i64 %999
  %1001 = load ptr, ptr %25, align 8, !tbaa !5
  %1002 = load i64, ptr %33, align 8, !tbaa !9
  %1003 = load i64, ptr %47, align 8, !tbaa !9
  %1004 = add nsw i64 %1002, %1003
  %1005 = getelementptr inbounds double, ptr %1001, i64 %1004
  %1006 = load ptr, ptr %25, align 8, !tbaa !5
  %1007 = load i64, ptr %38, align 8, !tbaa !9
  %1008 = load i64, ptr %47, align 8, !tbaa !9
  %1009 = add nsw i64 %1007, %1008
  %1010 = getelementptr inbounds double, ptr %1006, i64 %1009
  %1011 = load ptr, ptr %25, align 8, !tbaa !5
  %1012 = load i64, ptr %62, align 8, !tbaa !9
  %1013 = getelementptr inbounds double, ptr %1011, i64 %1012
  %1014 = load ptr, ptr %26, align 8, !tbaa !5
  %1015 = load i64, ptr %49, align 8, !tbaa !9
  %1016 = getelementptr inbounds i64, ptr %1014, i64 %1015
  %1017 = load ptr, ptr %27, align 8, !tbaa !5
  %1018 = call i32 @dlalsa_(ptr noundef %64, ptr noundef %932, ptr noundef %61, ptr noundef %933, ptr noundef %938, ptr noundef %939, ptr noundef %942, ptr noundef %943, ptr noundef %948, ptr noundef %949, ptr noundef %954, ptr noundef %959, ptr noundef %964, ptr noundef %969, ptr noundef %974, ptr noundef %979, ptr noundef %984, ptr noundef %989, ptr noundef %990, ptr noundef %995, ptr noundef %1000, ptr noundef %1005, ptr noundef %1010, ptr noundef %1013, ptr noundef %1016, ptr noundef %1017)
  %1019 = load ptr, ptr %27, align 8, !tbaa !5
  %1020 = load i64, ptr %1019, align 8, !tbaa !9
  %1021 = icmp ne i64 %1020, 0
  br i1 %1021, label %1022, label %1023

1022:                                             ; preds = %928
  store i32 0, ptr %14, align 4
  store i32 1, ptr %70, align 4
  br label %1300

1023:                                             ; preds = %928
  br label %1024

1024:                                             ; preds = %1023, %826
  br label %1025

1025:                                             ; preds = %1024, %766
  %1026 = load i64, ptr %34, align 8, !tbaa !9
  %1027 = add nsw i64 %1026, 1
  store i64 %1027, ptr %44, align 8, !tbaa !9
  br label %1028

1028:                                             ; preds = %1025, %665
  br label %1029

1029:                                             ; preds = %1028
  %1030 = load i64, ptr %34, align 8, !tbaa !9
  %1031 = add nsw i64 %1030, 1
  store i64 %1031, ptr %34, align 8, !tbaa !9
  br label %645, !llvm.loop !20

1032:                                             ; preds = %645
  %1033 = load double, ptr %53, align 8, !tbaa !11
  %1034 = load ptr, ptr %19, align 8, !tbaa !5
  %1035 = load ptr, ptr %17, align 8, !tbaa !5
  %1036 = load ptr, ptr %19, align 8, !tbaa !5
  %1037 = getelementptr inbounds double, ptr %1036, i64 1
  %1038 = call i64 @f2c_idamax(ptr noundef %1035, ptr noundef %1037, ptr noundef @c__1)
  %1039 = getelementptr inbounds double, ptr %1034, i64 %1038
  %1040 = load double, ptr %1039, align 8, !tbaa !11
  store double %1040, ptr %32, align 8, !tbaa !11
  %1041 = load double, ptr %32, align 8, !tbaa !11
  %1042 = fcmp oge double %1041, 0.000000e+00
  br i1 %1042, label %1043, label %1045

1043:                                             ; preds = %1032
  %1044 = load double, ptr %32, align 8, !tbaa !11
  br label %1048

1045:                                             ; preds = %1032
  %1046 = load double, ptr %32, align 8, !tbaa !11
  %1047 = fneg double %1046
  br label %1048

1048:                                             ; preds = %1045, %1043
  %1049 = phi double [ %1044, %1043 ], [ %1047, %1045 ]
  %1050 = fmul double %1033, %1049
  store double %1050, ptr %50, align 8, !tbaa !11
  %1051 = load ptr, ptr %17, align 8, !tbaa !5
  %1052 = load i64, ptr %1051, align 8, !tbaa !9
  store i64 %1052, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %34, align 8, !tbaa !9
  br label %1053

1053:                                             ; preds = %1117, %1048
  %1054 = load i64, ptr %34, align 8, !tbaa !9
  %1055 = load i64, ptr %30, align 8, !tbaa !9
  %1056 = icmp sle i64 %1054, %1055
  br i1 %1056, label %1057, label %1120

1057:                                             ; preds = %1053
  %1058 = load ptr, ptr %19, align 8, !tbaa !5
  %1059 = load i64, ptr %34, align 8, !tbaa !9
  %1060 = getelementptr inbounds double, ptr %1058, i64 %1059
  %1061 = load double, ptr %1060, align 8, !tbaa !11
  store double %1061, ptr %32, align 8, !tbaa !11
  %1062 = load double, ptr %32, align 8, !tbaa !11
  %1063 = fcmp oge double %1062, 0.000000e+00
  br i1 %1063, label %1064, label %1066

1064:                                             ; preds = %1057
  %1065 = load double, ptr %32, align 8, !tbaa !11
  br label %1069

1066:                                             ; preds = %1057
  %1067 = load double, ptr %32, align 8, !tbaa !11
  %1068 = fneg double %1067
  br label %1069

1069:                                             ; preds = %1066, %1064
  %1070 = phi double [ %1065, %1064 ], [ %1068, %1066 ]
  %1071 = load double, ptr %50, align 8, !tbaa !11
  %1072 = fcmp ole double %1070, %1071
  br i1 %1072, label %1073, label %1083

1073:                                             ; preds = %1069
  %1074 = load ptr, ptr %18, align 8, !tbaa !5
  %1075 = load ptr, ptr %25, align 8, !tbaa !5
  %1076 = load i64, ptr %42, align 8, !tbaa !9
  %1077 = load i64, ptr %34, align 8, !tbaa !9
  %1078 = add nsw i64 %1076, %1077
  %1079 = sub nsw i64 %1078, 1
  %1080 = getelementptr inbounds double, ptr %1075, i64 %1079
  %1081 = load ptr, ptr %17, align 8, !tbaa !5
  %1082 = call i32 @dlaset_(ptr noundef @.str.2, ptr noundef @c__1, ptr noundef %1074, ptr noundef @c_b6, ptr noundef @c_b6, ptr noundef %1080, ptr noundef %1081)
  br label %1100

1083:                                             ; preds = %1069
  %1084 = load ptr, ptr %24, align 8, !tbaa !5
  %1085 = load i64, ptr %1084, align 8, !tbaa !9
  %1086 = add nsw i64 %1085, 1
  store i64 %1086, ptr %1084, align 8, !tbaa !9
  %1087 = load ptr, ptr %19, align 8, !tbaa !5
  %1088 = load i64, ptr %34, align 8, !tbaa !9
  %1089 = getelementptr inbounds double, ptr %1087, i64 %1088
  %1090 = load ptr, ptr %18, align 8, !tbaa !5
  %1091 = load ptr, ptr %25, align 8, !tbaa !5
  %1092 = load i64, ptr %42, align 8, !tbaa !9
  %1093 = load i64, ptr %34, align 8, !tbaa !9
  %1094 = add nsw i64 %1092, %1093
  %1095 = sub nsw i64 %1094, 1
  %1096 = getelementptr inbounds double, ptr %1091, i64 %1095
  %1097 = load ptr, ptr %17, align 8, !tbaa !5
  %1098 = load ptr, ptr %27, align 8, !tbaa !5
  %1099 = call i32 @dlascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %1089, ptr noundef @c_b11, ptr noundef @c__1, ptr noundef %1090, ptr noundef %1096, ptr noundef %1097, ptr noundef %1098)
  br label %1100

1100:                                             ; preds = %1083, %1073
  %1101 = load ptr, ptr %19, align 8, !tbaa !5
  %1102 = load i64, ptr %34, align 8, !tbaa !9
  %1103 = getelementptr inbounds double, ptr %1101, i64 %1102
  %1104 = load double, ptr %1103, align 8, !tbaa !11
  store double %1104, ptr %32, align 8, !tbaa !11
  %1105 = load double, ptr %32, align 8, !tbaa !11
  %1106 = fcmp oge double %1105, 0.000000e+00
  br i1 %1106, label %1107, label %1109

1107:                                             ; preds = %1100
  %1108 = load double, ptr %32, align 8, !tbaa !11
  br label %1112

1109:                                             ; preds = %1100
  %1110 = load double, ptr %32, align 8, !tbaa !11
  %1111 = fneg double %1110
  br label %1112

1112:                                             ; preds = %1109, %1107
  %1113 = phi double [ %1108, %1107 ], [ %1111, %1109 ]
  %1114 = load ptr, ptr %19, align 8, !tbaa !5
  %1115 = load i64, ptr %34, align 8, !tbaa !9
  %1116 = getelementptr inbounds double, ptr %1114, i64 %1115
  store double %1113, ptr %1116, align 8, !tbaa !11
  br label %1117

1117:                                             ; preds = %1112
  %1118 = load i64, ptr %34, align 8, !tbaa !9
  %1119 = add nsw i64 %1118, 1
  store i64 %1119, ptr %34, align 8, !tbaa !9
  br label %1053, !llvm.loop !21

1120:                                             ; preds = %1053
  store i64 1, ptr %64, align 8, !tbaa !9
  %1121 = load i64, ptr %55, align 8, !tbaa !9
  store i64 %1121, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %34, align 8, !tbaa !9
  br label %1122

1122:                                             ; preds = %1277, %1120
  %1123 = load i64, ptr %34, align 8, !tbaa !9
  %1124 = load i64, ptr %30, align 8, !tbaa !9
  %1125 = icmp sle i64 %1123, %1124
  br i1 %1125, label %1126, label %1280

1126:                                             ; preds = %1122
  %1127 = load ptr, ptr %26, align 8, !tbaa !5
  %1128 = load i64, ptr %34, align 8, !tbaa !9
  %1129 = getelementptr inbounds i64, ptr %1127, i64 %1128
  %1130 = load i64, ptr %1129, align 8, !tbaa !9
  store i64 %1130, ptr %44, align 8, !tbaa !9
  %1131 = load i64, ptr %44, align 8, !tbaa !9
  %1132 = sub nsw i64 %1131, 1
  store i64 %1132, ptr %47, align 8, !tbaa !9
  %1133 = load ptr, ptr %26, align 8, !tbaa !5
  %1134 = load i64, ptr %60, align 8, !tbaa !9
  %1135 = load i64, ptr %34, align 8, !tbaa !9
  %1136 = add nsw i64 %1134, %1135
  %1137 = sub nsw i64 %1136, 1
  %1138 = getelementptr inbounds i64, ptr %1133, i64 %1137
  %1139 = load i64, ptr %1138, align 8, !tbaa !9
  store i64 %1139, ptr %61, align 8, !tbaa !9
  %1140 = load i64, ptr %42, align 8, !tbaa !9
  %1141 = load i64, ptr %47, align 8, !tbaa !9
  %1142 = add nsw i64 %1140, %1141
  store i64 %1142, ptr %58, align 8, !tbaa !9
  %1143 = load i64, ptr %61, align 8, !tbaa !9
  %1144 = icmp eq i64 %1143, 1
  br i1 %1144, label %1145, label %1158

1145:                                             ; preds = %1126
  %1146 = load ptr, ptr %18, align 8, !tbaa !5
  %1147 = load ptr, ptr %25, align 8, !tbaa !5
  %1148 = load i64, ptr %58, align 8, !tbaa !9
  %1149 = getelementptr inbounds double, ptr %1147, i64 %1148
  %1150 = load ptr, ptr %17, align 8, !tbaa !5
  %1151 = load ptr, ptr %21, align 8, !tbaa !5
  %1152 = load i64, ptr %44, align 8, !tbaa !9
  %1153 = load i64, ptr %28, align 8, !tbaa !9
  %1154 = add nsw i64 %1152, %1153
  %1155 = getelementptr inbounds double, ptr %1151, i64 %1154
  %1156 = load ptr, ptr %22, align 8, !tbaa !5
  %1157 = call i32 @f2c_dcopy(ptr noundef %1146, ptr noundef %1149, ptr noundef %1150, ptr noundef %1155, ptr noundef %1156)
  br label %1276

1158:                                             ; preds = %1126
  %1159 = load i64, ptr %61, align 8, !tbaa !9
  %1160 = load ptr, ptr %16, align 8, !tbaa !5
  %1161 = load i64, ptr %1160, align 8, !tbaa !9
  %1162 = icmp sle i64 %1159, %1161
  br i1 %1162, label %1163, label %1182

1163:                                             ; preds = %1158
  %1164 = load ptr, ptr %18, align 8, !tbaa !5
  %1165 = load ptr, ptr %25, align 8, !tbaa !5
  %1166 = load i64, ptr %45, align 8, !tbaa !9
  %1167 = load i64, ptr %47, align 8, !tbaa !9
  %1168 = add nsw i64 %1166, %1167
  %1169 = getelementptr inbounds double, ptr %1165, i64 %1168
  %1170 = load ptr, ptr %17, align 8, !tbaa !5
  %1171 = load ptr, ptr %25, align 8, !tbaa !5
  %1172 = load i64, ptr %58, align 8, !tbaa !9
  %1173 = getelementptr inbounds double, ptr %1171, i64 %1172
  %1174 = load ptr, ptr %17, align 8, !tbaa !5
  %1175 = load ptr, ptr %21, align 8, !tbaa !5
  %1176 = load i64, ptr %44, align 8, !tbaa !9
  %1177 = load i64, ptr %28, align 8, !tbaa !9
  %1178 = add nsw i64 %1176, %1177
  %1179 = getelementptr inbounds double, ptr %1175, i64 %1178
  %1180 = load ptr, ptr %22, align 8, !tbaa !5
  %1181 = call i32 @f2c_dgemm(ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %61, ptr noundef %1164, ptr noundef %61, ptr noundef @c_b11, ptr noundef %1169, ptr noundef %1170, ptr noundef %1173, ptr noundef %1174, ptr noundef @c_b6, ptr noundef %1179, ptr noundef %1180)
  br label %1275

1182:                                             ; preds = %1158
  %1183 = load ptr, ptr %16, align 8, !tbaa !5
  %1184 = load ptr, ptr %18, align 8, !tbaa !5
  %1185 = load ptr, ptr %25, align 8, !tbaa !5
  %1186 = load i64, ptr %58, align 8, !tbaa !9
  %1187 = getelementptr inbounds double, ptr %1185, i64 %1186
  %1188 = load ptr, ptr %17, align 8, !tbaa !5
  %1189 = load ptr, ptr %21, align 8, !tbaa !5
  %1190 = load i64, ptr %44, align 8, !tbaa !9
  %1191 = load i64, ptr %28, align 8, !tbaa !9
  %1192 = add nsw i64 %1190, %1191
  %1193 = getelementptr inbounds double, ptr %1189, i64 %1192
  %1194 = load ptr, ptr %22, align 8, !tbaa !5
  %1195 = load ptr, ptr %25, align 8, !tbaa !5
  %1196 = load i64, ptr %39, align 8, !tbaa !9
  %1197 = load i64, ptr %47, align 8, !tbaa !9
  %1198 = add nsw i64 %1196, %1197
  %1199 = getelementptr inbounds double, ptr %1195, i64 %1198
  %1200 = load ptr, ptr %17, align 8, !tbaa !5
  %1201 = load ptr, ptr %25, align 8, !tbaa !5
  %1202 = load i64, ptr %45, align 8, !tbaa !9
  %1203 = load i64, ptr %47, align 8, !tbaa !9
  %1204 = add nsw i64 %1202, %1203
  %1205 = getelementptr inbounds double, ptr %1201, i64 %1204
  %1206 = load ptr, ptr %26, align 8, !tbaa !5
  %1207 = load i64, ptr %36, align 8, !tbaa !9
  %1208 = load i64, ptr %47, align 8, !tbaa !9
  %1209 = add nsw i64 %1207, %1208
  %1210 = getelementptr inbounds i64, ptr %1206, i64 %1209
  %1211 = load ptr, ptr %25, align 8, !tbaa !5
  %1212 = load i64, ptr %51, align 8, !tbaa !9
  %1213 = load i64, ptr %47, align 8, !tbaa !9
  %1214 = add nsw i64 %1212, %1213
  %1215 = getelementptr inbounds double, ptr %1211, i64 %1214
  %1216 = load ptr, ptr %25, align 8, !tbaa !5
  %1217 = load i64, ptr %52, align 8, !tbaa !9
  %1218 = load i64, ptr %47, align 8, !tbaa !9
  %1219 = add nsw i64 %1217, %1218
  %1220 = getelementptr inbounds double, ptr %1216, i64 %1219
  %1221 = load ptr, ptr %25, align 8, !tbaa !5
  %1222 = load i64, ptr %40, align 8, !tbaa !9
  %1223 = load i64, ptr %47, align 8, !tbaa !9
  %1224 = add nsw i64 %1222, %1223
  %1225 = getelementptr inbounds double, ptr %1221, i64 %1224
  %1226 = load ptr, ptr %25, align 8, !tbaa !5
  %1227 = load i64, ptr %59, align 8, !tbaa !9
  %1228 = load i64, ptr %47, align 8, !tbaa !9
  %1229 = add nsw i64 %1227, %1228
  %1230 = getelementptr inbounds double, ptr %1226, i64 %1229
  %1231 = load ptr, ptr %26, align 8, !tbaa !5
  %1232 = load i64, ptr %68, align 8, !tbaa !9
  %1233 = load i64, ptr %47, align 8, !tbaa !9
  %1234 = add nsw i64 %1232, %1233
  %1235 = getelementptr inbounds i64, ptr %1231, i64 %1234
  %1236 = load ptr, ptr %26, align 8, !tbaa !5
  %1237 = load i64, ptr %65, align 8, !tbaa !9
  %1238 = load i64, ptr %47, align 8, !tbaa !9
  %1239 = add nsw i64 %1237, %1238
  %1240 = getelementptr inbounds i64, ptr %1236, i64 %1239
  %1241 = load ptr, ptr %17, align 8, !tbaa !5
  %1242 = load ptr, ptr %26, align 8, !tbaa !5
  %1243 = load i64, ptr %54, align 8, !tbaa !9
  %1244 = load i64, ptr %47, align 8, !tbaa !9
  %1245 = add nsw i64 %1243, %1244
  %1246 = getelementptr inbounds i64, ptr %1242, i64 %1245
  %1247 = load ptr, ptr %25, align 8, !tbaa !5
  %1248 = load i64, ptr %67, align 8, !tbaa !9
  %1249 = load i64, ptr %47, align 8, !tbaa !9
  %1250 = add nsw i64 %1248, %1249
  %1251 = getelementptr inbounds double, ptr %1247, i64 %1250
  %1252 = load ptr, ptr %25, align 8, !tbaa !5
  %1253 = load i64, ptr %33, align 8, !tbaa !9
  %1254 = load i64, ptr %47, align 8, !tbaa !9
  %1255 = add nsw i64 %1253, %1254
  %1256 = getelementptr inbounds double, ptr %1252, i64 %1255
  %1257 = load ptr, ptr %25, align 8, !tbaa !5
  %1258 = load i64, ptr %38, align 8, !tbaa !9
  %1259 = load i64, ptr %47, align 8, !tbaa !9
  %1260 = add nsw i64 %1258, %1259
  %1261 = getelementptr inbounds double, ptr %1257, i64 %1260
  %1262 = load ptr, ptr %25, align 8, !tbaa !5
  %1263 = load i64, ptr %62, align 8, !tbaa !9
  %1264 = getelementptr inbounds double, ptr %1262, i64 %1263
  %1265 = load ptr, ptr %26, align 8, !tbaa !5
  %1266 = load i64, ptr %49, align 8, !tbaa !9
  %1267 = getelementptr inbounds i64, ptr %1265, i64 %1266
  %1268 = load ptr, ptr %27, align 8, !tbaa !5
  %1269 = call i32 @dlalsa_(ptr noundef %64, ptr noundef %1183, ptr noundef %61, ptr noundef %1184, ptr noundef %1187, ptr noundef %1188, ptr noundef %1193, ptr noundef %1194, ptr noundef %1199, ptr noundef %1200, ptr noundef %1205, ptr noundef %1210, ptr noundef %1215, ptr noundef %1220, ptr noundef %1225, ptr noundef %1230, ptr noundef %1235, ptr noundef %1240, ptr noundef %1241, ptr noundef %1246, ptr noundef %1251, ptr noundef %1256, ptr noundef %1261, ptr noundef %1264, ptr noundef %1267, ptr noundef %1268)
  %1270 = load ptr, ptr %27, align 8, !tbaa !5
  %1271 = load i64, ptr %1270, align 8, !tbaa !9
  %1272 = icmp ne i64 %1271, 0
  br i1 %1272, label %1273, label %1274

1273:                                             ; preds = %1182
  store i32 0, ptr %14, align 4
  store i32 1, ptr %70, align 4
  br label %1300

1274:                                             ; preds = %1182
  br label %1275

1275:                                             ; preds = %1274, %1163
  br label %1276

1276:                                             ; preds = %1275, %1145
  br label %1277

1277:                                             ; preds = %1276
  %1278 = load i64, ptr %34, align 8, !tbaa !9
  %1279 = add nsw i64 %1278, 1
  store i64 %1279, ptr %34, align 8, !tbaa !9
  br label %1122, !llvm.loop !22

1280:                                             ; preds = %1122
  %1281 = load ptr, ptr %17, align 8, !tbaa !5
  %1282 = load ptr, ptr %19, align 8, !tbaa !5
  %1283 = getelementptr inbounds double, ptr %1282, i64 1
  %1284 = load ptr, ptr %17, align 8, !tbaa !5
  %1285 = load ptr, ptr %27, align 8, !tbaa !5
  %1286 = call i32 @dlascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef @c_b11, ptr noundef %66, ptr noundef %1281, ptr noundef @c__1, ptr noundef %1283, ptr noundef %1284, ptr noundef %1285)
  %1287 = load ptr, ptr %17, align 8, !tbaa !5
  %1288 = load ptr, ptr %19, align 8, !tbaa !5
  %1289 = getelementptr inbounds double, ptr %1288, i64 1
  %1290 = load ptr, ptr %27, align 8, !tbaa !5
  %1291 = call i32 @dlasrt_(ptr noundef @.str.8, ptr noundef %1287, ptr noundef %1289, ptr noundef %1290)
  %1292 = load ptr, ptr %17, align 8, !tbaa !5
  %1293 = load ptr, ptr %18, align 8, !tbaa !5
  %1294 = load ptr, ptr %21, align 8, !tbaa !5
  %1295 = load i64, ptr %29, align 8, !tbaa !9
  %1296 = getelementptr inbounds double, ptr %1294, i64 %1295
  %1297 = load ptr, ptr %22, align 8, !tbaa !5
  %1298 = load ptr, ptr %27, align 8, !tbaa !5
  %1299 = call i32 @dlascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %66, ptr noundef @c_b11, ptr noundef %1292, ptr noundef %1293, ptr noundef %1296, ptr noundef %1297, ptr noundef %1298)
  store i32 0, ptr %14, align 4
  store i32 1, ptr %70, align 4
  br label %1300

1300:                                             ; preds = %1280, %1273, %1022, %927, %825, %458, %396, %334, %186, %141, %117
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #4
  %1301 = load i32, ptr %14, align 4
  ret i32 %1301
}

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

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

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

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

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

declare double @dlanst_(ptr noundef, ptr noundef, 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 i64 @f2c_idamax(ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

; Function Attrs: nounwind
declare double @log(double noundef) #3

declare double @d_sign(ptr noundef, ptr noundef) #2

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

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

declare i32 @dlalsa_(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 "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 #4 = { nounwind }

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

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


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

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

34:                                               ; preds = %13
  %35 = load i64, ptr %3, align 8, !tbaa !5
  %36 = icmp slt i64 %35, 1
  br i1 %36, label %.thread, label %37

37:                                               ; preds = %34
  %38 = load i64, ptr %7, align 8, !tbaa !5
  %39 = icmp slt i64 %38, 1
  %40 = icmp slt i64 %38, %32
  %or.cond = or i1 %39, %40
  br i1 %or.cond, label %.thread, label %42

.thread:                                          ; preds = %37, %34, %13
  %.sink = phi i64 [ -3, %13 ], [ -4, %34 ], [ -8, %37 ]
  %.neg = phi i64 [ 3, %13 ], [ 4, %34 ], [ 8, %37 ]
  store i64 %.sink, ptr %12, align 8, !tbaa !5
  store i64 %.neg, ptr %14, align 8, !tbaa !5
  %41 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %14) #4
  br label %.loopexit

42:                                               ; preds = %37
  %43 = tail call double @dlamch_(ptr noundef nonnull @.str.1) #4
  store double %43, ptr %19, align 8, !tbaa !9
  %44 = load double, ptr %8, align 8, !tbaa !9
  %45 = fcmp ugt double %44, 0.000000e+00
  %46 = fcmp ult double %44, 1.000000e+00
  %or.cond623 = and i1 %45, %46
  %.0588 = select i1 %or.cond623, double %44, double %43
  store i64 0, ptr %9, align 8, !tbaa !5
  %47 = load i64, ptr %2, align 8, !tbaa !5
  switch i64 %47, label %59 [
    i64 0, label %.loopexit
    i64 1, label %48
  ]

48:                                               ; preds = %42
  %49 = load double, ptr %4, align 8, !tbaa !9
  %50 = fcmp oeq double %49, 0.000000e+00
  br i1 %50, label %51, label %53

51:                                               ; preds = %48
  %52 = tail call i32 @dlaset_(ptr noundef nonnull @.str.2, ptr noundef nonnull @c__1, ptr noundef nonnull %3, ptr noundef nonnull @c_b6, ptr noundef nonnull @c_b6, ptr noundef %6, ptr noundef nonnull %7) #4
  br label %.loopexit

53:                                               ; preds = %48
  store i64 1, ptr %9, align 8, !tbaa !5
  %54 = tail call i32 @dlascl_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %4, ptr noundef nonnull @c_b11, ptr noundef nonnull @c__1, ptr noundef nonnull %3, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %12) #4
  %55 = load double, ptr %4, align 8, !tbaa !9
  %56 = fcmp ult double %55, 0.000000e+00
  %57 = fneg double %55
  %58 = select i1 %56, double %57, double %55
  store double %58, ptr %4, align 8, !tbaa !9
  br label %.loopexit

59:                                               ; preds = %42
  %60 = load i8, ptr %0, align 1, !tbaa !11
  %61 = icmp eq i8 %60, 76
  br i1 %61, label %62, label %.loopexit629

62:                                               ; preds = %59
  %63 = add nsw i64 %47, -1
  %invariant.gep = getelementptr i8, ptr %6, i64 -8
  %.not604631 = icmp slt i64 %47, 2
  br i1 %.not604631, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %62, %84
  %.0585632 = phi i64 [ %69, %84 ], [ 1, %62 ]
  %64 = getelementptr inbounds double, ptr %25, i64 %.0585632
  %65 = getelementptr inbounds double, ptr %26, i64 %.0585632
  %66 = call i32 @dlartg_(ptr noundef nonnull %64, ptr noundef nonnull %65, ptr noundef nonnull %16, ptr noundef nonnull %17, ptr noundef nonnull %15) #4
  %67 = load double, ptr %15, align 8, !tbaa !9
  store double %67, ptr %64, align 8, !tbaa !9
  %68 = load double, ptr %17, align 8, !tbaa !9
  %69 = add nuw nsw i64 %.0585632, 1
  %70 = getelementptr double, ptr %4, i64 %.0585632
  %71 = load double, ptr %70, align 8, !tbaa !9
  %72 = fmul double %68, %71
  store double %72, ptr %65, align 8, !tbaa !9
  %73 = load double, ptr %16, align 8, !tbaa !9
  %74 = load double, ptr %70, align 8, !tbaa !9
  %75 = fmul double %73, %74
  store double %75, ptr %70, align 8, !tbaa !9
  %76 = load i64, ptr %3, align 8, !tbaa !5
  %77 = icmp eq i64 %76, 1
  br i1 %77, label %78, label %81

78:                                               ; preds = %.lr.ph
  %gep = getelementptr double, ptr %invariant.gep, i64 %.0585632
  %79 = getelementptr inbounds double, ptr %6, i64 %.0585632
  %80 = call i32 @f2c_drot(ptr noundef nonnull @c__1, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef nonnull %79, ptr noundef nonnull @c__1, ptr noundef nonnull %16, ptr noundef nonnull %17) #4
  br label %84

81:                                               ; preds = %.lr.ph
  %.idx621 = shl i64 %.0585632, 4
  %82 = getelementptr i8, ptr %30, i64 %.idx621
  %83 = getelementptr i8, ptr %82, i64 -8
  store double %73, ptr %83, align 8, !tbaa !9
  store double %68, ptr %82, align 8, !tbaa !9
  br label %84

84:                                               ; preds = %78, %81
  %.not604.not = icmp slt i64 %.0585632, %63
  br i1 %.not604.not, label %.lr.ph, label %._crit_edge, !llvm.loop !12

._crit_edge:                                      ; preds = %84, %62
  %85 = load i64, ptr %3, align 8, !tbaa !5
  %86 = icmp sgt i64 %85, 1
  br i1 %86, label %.lr.ph645, label %.loopexit629

.lr.ph645:                                        ; preds = %._crit_edge
  %87 = load i64, ptr %2, align 8, !tbaa !5
  %88 = icmp sgt i64 %87, 1
  br i1 %88, label %.lr.ph645.split, label %.loopexit629

.lr.ph645.splitthread-pre-split:                  ; preds = %._crit_edge637
  %89 = add nuw nsw i64 %.1586643, 1
  %.pr = load i64, ptr %2, align 8, !tbaa !5
  br label %.lr.ph645.split

.lr.ph645.split:                                  ; preds = %.lr.ph645, %.lr.ph645.splitthread-pre-split
  %90 = phi i64 [ %.pr, %.lr.ph645.splitthread-pre-split ], [ %87, %.lr.ph645 ]
  %.1586643 = phi i64 [ %89, %.lr.ph645.splitthread-pre-split ], [ 1, %.lr.ph645 ]
  %.not619.not633 = icmp sgt i64 %90, 1
  br i1 %.not619.not633, label %.lr.ph636, label %._crit_edge637

.lr.ph636:                                        ; preds = %.lr.ph645.split
  %91 = mul nsw i64 %.1586643, %27
  %invariant.gep638 = getelementptr double, ptr %29, i64 %91
  br label %92

92:                                               ; preds = %.lr.ph636, %92
  %.0589634 = phi i64 [ 1, %.lr.ph636 ], [ %97, %92 ]
  %.idx = shl i64 %.0589634, 4
  %93 = getelementptr i8, ptr %30, i64 %.idx
  %94 = getelementptr i8, ptr %93, i64 -8
  %95 = load double, ptr %94, align 8, !tbaa !9
  store double %95, ptr %16, align 8, !tbaa !9
  %96 = load double, ptr %93, align 8, !tbaa !9
  store double %96, ptr %17, align 8, !tbaa !9
  %gep639 = getelementptr double, ptr %invariant.gep638, i64 %.0589634
  %97 = add nuw nsw i64 %.0589634, 1
  %gep641 = getelementptr double, ptr %invariant.gep638, i64 %97
  %98 = call i32 @f2c_drot(ptr noundef nonnull @c__1, ptr noundef %gep639, ptr noundef nonnull @c__1, ptr noundef %gep641, ptr noundef nonnull @c__1, ptr noundef nonnull %16, ptr noundef nonnull %17) #4
  %exitcond.not = icmp eq i64 %97, %90
  br i1 %exitcond.not, label %._crit_edge637, label %92, !llvm.loop !14

._crit_edge637:                                   ; preds = %92, %.lr.ph645.split
  %.not605.not = icmp slt i64 %.1586643, %85
  br i1 %.not605.not, label %.lr.ph645.splitthread-pre-split, label %.loopexit629, !llvm.loop !15

.loopexit629:                                     ; preds = %._crit_edge637, %.lr.ph645, %._crit_edge, %59
  %99 = load i64, ptr %2, align 8, !tbaa !5
  %100 = add nsw i64 %99, -1
  store i64 %100, ptr %18, align 8, !tbaa !5
  %101 = call double @dlanst_(ptr noundef nonnull @.str.4, ptr noundef nonnull %2, ptr noundef %4, ptr noundef %5) #4
  store double %101, ptr %24, align 8, !tbaa !9
  %102 = fcmp oeq double %101, 0.000000e+00
  br i1 %102, label %103, label %105

103:                                              ; preds = %.loopexit629
  %104 = call i32 @dlaset_(ptr noundef nonnull @.str.2, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull @c_b6, ptr noundef nonnull @c_b6, ptr noundef %6, ptr noundef nonnull %7) #4
  br label %.loopexit

105:                                              ; preds = %.loopexit629
  %106 = call i32 @dlascl_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %24, ptr noundef nonnull @c_b11, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef nonnull %2, ptr noundef nonnull %12) #4
  %107 = call i32 @dlascl_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %24, ptr noundef nonnull @c_b11, ptr noundef nonnull %18, ptr noundef nonnull @c__1, ptr noundef %5, ptr noundef nonnull %18, ptr noundef nonnull %12) #4
  %108 = load i64, ptr %2, align 8, !tbaa !5
  %109 = load i64, ptr %1, align 8, !tbaa !5
  %.not606 = icmp sgt i64 %108, %109
  br i1 %.not606, label %141, label %110

110:                                              ; preds = %105
  %111 = mul nsw i64 %108, %108
  %112 = call i32 @dlaset_(ptr noundef nonnull @.str.2, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_b6, ptr noundef nonnull @c_b11, ptr noundef %10, ptr noundef nonnull %2) #4
  %113 = getelementptr double, ptr %10, i64 %111
  %114 = call i32 @dlasdq_(ptr noundef nonnull @.str.5, ptr noundef nonnull @c__0, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c__0, ptr noundef nonnull %3, ptr noundef %4, ptr noundef %5, ptr noundef %10, ptr noundef nonnull %2, ptr noundef %10, ptr noundef nonnull %2, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %113, ptr noundef nonnull %12) #4
  %115 = load i64, ptr %12, align 8, !tbaa !5
  %.not617 = icmp eq i64 %115, 0
  br i1 %.not617, label %116, label %.loopexit

116:                                              ; preds = %110
  %117 = call i64 @f2c_idamax(ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull @c__1) #4
  %118 = getelementptr inbounds double, ptr %25, i64 %117
  %119 = load double, ptr %118, align 8, !tbaa !9
  %120 = fcmp oge double %119, 0.000000e+00
  %121 = fneg double %119
  %122 = select i1 %120, double %119, double %121
  %123 = fmul double %.0588, %122
  %124 = load i64, ptr %2, align 8, !tbaa !5
  %invariant.gep646 = getelementptr i8, ptr %6, i64 -8
  %.not618650 = icmp slt i64 %124, 1
  br i1 %.not618650, label %._crit_edge654, label %.lr.ph653

.lr.ph653:                                        ; preds = %116, %134
  %.2587651 = phi i64 [ %135, %134 ], [ 1, %116 ]
  %125 = getelementptr inbounds double, ptr %25, i64 %.2587651
  %126 = load double, ptr %125, align 8, !tbaa !9
  %127 = fcmp ugt double %126, %123
  %gep649 = getelementptr double, ptr %invariant.gep646, i64 %.2587651
  br i1 %127, label %130, label %128

128:                                              ; preds = %.lr.ph653
  %129 = call i32 @dlaset_(ptr noundef nonnull @.str.2, ptr noundef nonnull @c__1, ptr noundef nonnull %3, ptr noundef nonnull @c_b6, ptr noundef nonnull @c_b6, ptr noundef %gep649, ptr noundef nonnull %7) #4
  br label %134

130:                                              ; preds = %.lr.ph653
  %131 = call i32 @dlascl_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %125, ptr noundef nonnull @c_b11, ptr noundef nonnull @c__1, ptr noundef nonnull %3, ptr noundef %gep649, ptr noundef nonnull %7, ptr noundef nonnull %12) #4
  %132 = load i64, ptr %9, align 8, !tbaa !5
  %133 = add nsw i64 %132, 1
  store i64 %133, ptr %9, align 8, !tbaa !5
  br label %134

134:                                              ; preds = %128, %130
  %135 = add nuw nsw i64 %.2587651, 1
  %.not618.not = icmp slt i64 %.2587651, %124
  br i1 %.not618.not, label %.lr.ph653, label %._crit_edge654, !llvm.loop !17

._crit_edge654:                                   ; preds = %134, %116
  %136 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %2, ptr noundef nonnull @c_b11, ptr noundef %10, ptr noundef nonnull %2, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull @c_b6, ptr noundef %113, ptr noundef nonnull %2) #4
  %137 = call i32 @dlacpy_(ptr noundef nonnull @.str.2, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %113, ptr noundef nonnull %2, ptr noundef %6, ptr noundef nonnull %7) #4
  %138 = call i32 @dlascl_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull @c_b11, ptr noundef nonnull %24, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef nonnull %2, ptr noundef nonnull %12) #4
  %139 = call i32 @dlasrt_(ptr noundef nonnull @.str.8, ptr noundef nonnull %2, ptr noundef nonnull %4, ptr noundef nonnull %12) #4
  %140 = call i32 @dlascl_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %24, ptr noundef nonnull @c_b11, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %12) #4
  br label %.loopexit

141:                                              ; preds = %105
  %142 = sitofp i64 %108 to double
  %143 = add nsw i64 %109, 1
  %144 = sitofp i64 %143 to double
  %145 = fdiv double %142, %144
  %146 = call double @log(double noundef %145) #4
  %147 = fdiv double %146, 0x3FE62E42FEFA39EF
  %148 = fptosi double %147 to i64
  %149 = add nsw i64 %148, 1
  %150 = load i64, ptr %1, align 8, !tbaa !5
  %151 = add nsw i64 %150, 1
  %152 = load i64, ptr %2, align 8, !tbaa !5
  %153 = mul nsw i64 %152, %150
  %154 = add nsw i64 %153, 1
  %155 = mul nsw i64 %151, %152
  %156 = add nsw i64 %154, %155
  %157 = mul nsw i64 %149, %152
  %158 = add nsw i64 %156, %157
  %159 = shl i64 %157, 1
  %160 = add nsw i64 %158, %159
  %161 = add nsw i64 %160, %157
  %162 = add nsw i64 %161, %152
  %163 = add nsw i64 %162, %152
  %164 = shl i64 %149, 1
  %165 = mul nsw i64 %164, %152
  %166 = add nsw i64 %163, %165
  %167 = add nsw i64 %166, %165
  %168 = load i64, ptr %3, align 8, !tbaa !5
  %169 = mul nsw i64 %168, %152
  %170 = add nsw i64 %167, %169
  %reass.add = shl i64 %152, 1
  %171 = or disjoint i64 %reass.add, 1
  %172 = add nsw i64 %171, %152
  %173 = add nsw i64 %172, %152
  %174 = add nsw i64 %173, %157
  %175 = add nsw i64 %174, %159
  store i64 0, ptr %20, align 8, !tbaa !5
  store i64 1, ptr %22, align 8, !tbaa !5
  store i64 0, ptr %23, align 8, !tbaa !5
  %.not607655 = icmp slt i64 %152, 1
  br i1 %.not607655, label %._crit_edge659, label %.lr.ph658

.lr.ph658:                                        ; preds = %141, %185
  %.3656 = phi i64 [ %186, %185 ], [ 1, %141 ]
  %176 = getelementptr inbounds double, ptr %25, i64 %.3656
  %177 = load double, ptr %176, align 8, !tbaa !9
  %178 = fcmp oge double %177, 0.000000e+00
  %179 = fneg double %177
  %180 = select i1 %178, double %177, double %179
  %181 = load double, ptr %19, align 8, !tbaa !9
  %182 = fcmp olt double %180, %181
  br i1 %182, label %183, label %185

183:                                              ; preds = %.lr.ph658
  %184 = call double @d_sign(ptr noundef nonnull %19, ptr noundef nonnull %176) #4
  store double %184, ptr %176, align 8, !tbaa !9
  br label %185

185:                                              ; preds = %.lr.ph658, %183
  %186 = add nuw nsw i64 %.3656, 1
  %.not607.not = icmp slt i64 %.3656, %152
  br i1 %.not607.not, label %.lr.ph658, label %._crit_edge659, !llvm.loop !18

._crit_edge659:                                   ; preds = %185, %141
  %187 = load i64, ptr %18, align 8, !tbaa !5
  %invariant.gep660 = getelementptr i8, ptr %6, i64 -8
  %.not608668 = icmp slt i64 %187, 1
  br i1 %.not608668, label %._crit_edge674, label %.lr.ph673

.lr.ph673:                                        ; preds = %._crit_edge659
  %188 = getelementptr i64, ptr %11, i64 %152
  %189 = getelementptr i64, ptr %31, i64 %152
  %190 = getelementptr double, ptr %30, i64 %167
  %191 = getelementptr double, ptr %30, i64 %153
  %192 = getelementptr inbounds double, ptr %30, i64 %170
  %193 = getelementptr i64, ptr %11, i64 %reass.add
  %194 = getelementptr double, ptr %30, i64 %156
  %195 = getelementptr double, ptr %30, i64 %158
  %196 = getelementptr double, ptr %30, i64 %160
  %197 = getelementptr double, ptr %30, i64 %163
  %198 = getelementptr i64, ptr %31, i64 %172
  %199 = getelementptr i64, ptr %31, i64 %174
  %200 = getelementptr i64, ptr %31, i64 %173
  %201 = getelementptr double, ptr %30, i64 %166
  %202 = getelementptr double, ptr %30, i64 %161
  %203 = getelementptr double, ptr %30, i64 %162
  %204 = getelementptr inbounds i64, ptr %31, i64 %175
  br label %205

205:                                              ; preds = %.lr.ph673, %284
  %.0584671 = phi i64 [ 0, %.lr.ph673 ], [ %.2, %284 ]
  %.4670 = phi i64 [ 1, %.lr.ph673 ], [ %.pre-phi, %284 ]
  %.0590669 = phi i64 [ 1, %.lr.ph673 ], [ %.1591, %284 ]
  %206 = getelementptr inbounds double, ptr %26, i64 %.4670
  %207 = load double, ptr %206, align 8, !tbaa !9
  %208 = fcmp oge double %207, 0.000000e+00
  %209 = fneg double %207
  %210 = select i1 %208, double %207, double %209
  %211 = load double, ptr %19, align 8, !tbaa !9
  %212 = fcmp olt double %210, %211
  %213 = load i64, ptr %18, align 8
  %214 = icmp eq i64 %.4670, %213
  %or.cond625 = select i1 %212, i1 true, i1 %214
  br i1 %or.cond625, label %215, label %._crit_edge697

._crit_edge697:                                   ; preds = %205
  %.pre = add nuw nsw i64 %.4670, 1
  br label %284

215:                                              ; preds = %205
  %216 = add nsw i64 %.0584671, 1
  %217 = getelementptr i64, ptr %11, i64 %.0584671
  store i64 %.0590669, ptr %217, align 8, !tbaa !5
  %218 = icmp slt i64 %.4670, %213
  br i1 %218, label %219, label %223

219:                                              ; preds = %215
  %220 = sub nsw i64 %.4670, %.0590669
  %221 = add nsw i64 %220, 1
  store i64 %221, ptr %21, align 8, !tbaa !5
  %222 = getelementptr i64, ptr %188, i64 %.0584671
  store i64 %221, ptr %222, align 8, !tbaa !5
  br label %241

223:                                              ; preds = %215
  %224 = fcmp ult double %210, %211
  br i1 %224, label %230, label %225

225:                                              ; preds = %223
  %226 = load i64, ptr %2, align 8, !tbaa !5
  %227 = sub nsw i64 %226, %.0590669
  %228 = add nsw i64 %227, 1
  store i64 %228, ptr %21, align 8, !tbaa !5
  %229 = getelementptr i64, ptr %188, i64 %.0584671
  store i64 %228, ptr %229, align 8, !tbaa !5
  br label %241

230:                                              ; preds = %223
  %231 = sub nsw i64 %.4670, %.0590669
  %232 = add nsw i64 %231, 1
  store i64 %232, ptr %21, align 8, !tbaa !5
  %233 = getelementptr i64, ptr %188, i64 %.0584671
  store i64 %232, ptr %233, align 8, !tbaa !5
  %234 = add nsw i64 %.0584671, 2
  %235 = load i64, ptr %2, align 8, !tbaa !5
  %236 = getelementptr inbounds i64, ptr %31, i64 %234
  store i64 %235, ptr %236, align 8, !tbaa !5
  %237 = getelementptr i64, ptr %189, i64 %234
  store i64 1, ptr %237, align 8, !tbaa !5
  %238 = load i64, ptr %2, align 8, !tbaa !5
  %gep661 = getelementptr double, ptr %invariant.gep660, i64 %238
  %239 = getelementptr double, ptr %190, i64 %213
  %240 = call i32 @f2c_dcopy(ptr noundef nonnull %3, ptr noundef %gep661, ptr noundef nonnull %7, ptr noundef %239, ptr noundef nonnull %2) #4
  %.pr627 = load i64, ptr %21, align 8, !tbaa !5
  br label %241

241:                                              ; preds = %225, %230, %219
  %242 = phi i64 [ %228, %225 ], [ %.pr627, %230 ], [ %221, %219 ]
  %.1 = phi i64 [ %216, %225 ], [ %234, %230 ], [ %216, %219 ]
  %243 = add nsw i64 %.0590669, -1
  %244 = icmp eq i64 %242, 1
  br i1 %244, label %245, label %248

245:                                              ; preds = %241
  %gep667 = getelementptr double, ptr %invariant.gep660, i64 %.0590669
  %246 = getelementptr double, ptr %190, i64 %243
  %247 = call i32 @f2c_dcopy(ptr noundef nonnull %3, ptr noundef %gep667, ptr noundef nonnull %7, ptr noundef %246, ptr noundef nonnull %2) #4
  br label %282

248:                                              ; preds = %241
  %249 = load i64, ptr %1, align 8, !tbaa !5
  %.not613 = icmp sgt i64 %242, %249
  br i1 %.not613, label %260, label %250

250:                                              ; preds = %248
  %251 = getelementptr double, ptr %191, i64 %.0590669
  %252 = call i32 @dlaset_(ptr noundef nonnull @.str.2, ptr noundef nonnull %21, ptr noundef nonnull %21, ptr noundef nonnull @c_b6, ptr noundef nonnull @c_b11, ptr noundef %251, ptr noundef nonnull %2) #4
  %253 = getelementptr inbounds double, ptr %25, i64 %.0590669
  %254 = getelementptr inbounds double, ptr %26, i64 %.0590669
  %gep663 = getelementptr double, ptr %invariant.gep660, i64 %.0590669
  %255 = call i32 @dlasdq_(ptr noundef nonnull @.str.5, ptr noundef nonnull @c__0, ptr noundef nonnull %21, ptr noundef nonnull %21, ptr noundef nonnull @c__0, ptr noundef nonnull %3, ptr noundef nonnull %253, ptr noundef nonnull %254, ptr noundef %251, ptr noundef nonnull %2, ptr noundef nonnull %192, ptr noundef nonnull %2, ptr noundef %gep663, ptr noundef nonnull %7, ptr noundef nonnull %192, ptr noundef nonnull %12) #4
  %256 = load i64, ptr %12, align 8, !tbaa !5
  %.not616 = icmp eq i64 %256, 0
  br i1 %.not616, label %257, label %.loopexit

257:                                              ; preds = %250
  %258 = getelementptr double, ptr %190, i64 %243
  %259 = call i32 @dlacpy_(ptr noundef nonnull @.str.2, ptr noundef nonnull %21, ptr noundef nonnull %3, ptr noundef %gep663, ptr noundef nonnull %7, ptr noundef %258, ptr noundef nonnull %2) #4
  br label %282

260:                                              ; preds = %248
  %261 = getelementptr inbounds double, ptr %25, i64 %.0590669
  %262 = getelementptr inbounds double, ptr %26, i64 %.0590669
  %263 = getelementptr inbounds double, ptr %30, i64 %.0590669
  %264 = getelementptr double, ptr %191, i64 %.0590669
  %265 = getelementptr i64, ptr %193, i64 %243
  %266 = getelementptr double, ptr %194, i64 %243
  %267 = getelementptr double, ptr %195, i64 %243
  %268 = getelementptr double, ptr %196, i64 %243
  %269 = getelementptr double, ptr %197, i64 %243
  %270 = getelementptr i64, ptr %198, i64 %243
  %271 = getelementptr i64, ptr %199, i64 %243
  %272 = getelementptr i64, ptr %200, i64 %243
  %273 = getelementptr double, ptr %201, i64 %243
  %274 = getelementptr double, ptr %202, i64 %243
  %275 = getelementptr double, ptr %203, i64 %243
  %276 = call i32 @dlasda_(ptr noundef nonnull %22, ptr noundef nonnull %1, ptr noundef nonnull %21, ptr noundef nonnull %20, ptr noundef nonnull %261, ptr noundef nonnull %262, ptr noundef nonnull %263, ptr noundef nonnull %2, ptr noundef %264, ptr noundef %265, ptr noundef %266, ptr noundef %267, ptr noundef %268, ptr noundef %269, ptr noundef %270, ptr noundef %271, ptr noundef nonnull %2, ptr noundef %272, ptr noundef %273, ptr noundef %274, ptr noundef %275, ptr noundef nonnull %192, ptr noundef nonnull %204, ptr noundef nonnull %12) #4
  %277 = load i64, ptr %12, align 8, !tbaa !5
  %.not614 = icmp eq i64 %277, 0
  br i1 %.not614, label %278, label %.loopexit

278:                                              ; preds = %260
  %gep665 = getelementptr double, ptr %invariant.gep660, i64 %.0590669
  %279 = getelementptr double, ptr %190, i64 %243
  %280 = call i32 @dlalsa_(ptr noundef nonnull %23, ptr noundef nonnull %1, ptr noundef nonnull %21, ptr noundef nonnull %3, ptr noundef %gep665, ptr noundef nonnull %7, ptr noundef %279, ptr noundef nonnull %2, ptr noundef nonnull %263, ptr noundef nonnull %2, ptr noundef %264, ptr noundef %265, ptr noundef %266, ptr noundef %267, ptr noundef %268, ptr noundef %269, ptr noundef %270, ptr noundef %271, ptr noundef nonnull %2, ptr noundef %272, ptr noundef %273, ptr noundef %274, ptr noundef %275, ptr noundef nonnull %192, ptr noundef nonnull %204, ptr noundef nonnull %12) #4
  %281 = load i64, ptr %12, align 8, !tbaa !5
  %.not615 = icmp eq i64 %281, 0
  br i1 %.not615, label %282, label %.loopexit

282:                                              ; preds = %257, %278, %245
  %283 = add nuw nsw i64 %.4670, 1
  br label %284

284:                                              ; preds = %._crit_edge697, %282
  %.pre-phi = phi i64 [ %.pre, %._crit_edge697 ], [ %283, %282 ]
  %.1591 = phi i64 [ %.0590669, %._crit_edge697 ], [ %283, %282 ]
  %.2 = phi i64 [ %.0584671, %._crit_edge697 ], [ %.1, %282 ]
  %.not608.not = icmp slt i64 %.4670, %187
  br i1 %.not608.not, label %205, label %._crit_edge674, !llvm.loop !19

._crit_edge674:                                   ; preds = %284, %._crit_edge659
  %285 = phi i64 [ 0, %._crit_edge659 ], [ %.2, %284 ]
  %286 = call i64 @f2c_idamax(ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull @c__1) #4
  %287 = getelementptr inbounds double, ptr %25, i64 %286
  %288 = load double, ptr %287, align 8, !tbaa !9
  %289 = fcmp oge double %288, 0.000000e+00
  %290 = fneg double %288
  %291 = select i1 %289, double %288, double %290
  %292 = fmul double %.0588, %291
  %293 = load i64, ptr %2, align 8, !tbaa !5
  %.not609675 = icmp slt i64 %293, 1
  br i1 %.not609675, label %._crit_edge679, label %.lr.ph678

.lr.ph678:                                        ; preds = %._crit_edge674
  %294 = getelementptr double, ptr %30, i64 %167
  %invariant.gep680 = getelementptr i8, ptr %294, i64 -8
  br label %295

295:                                              ; preds = %.lr.ph678, %308
  %.5676 = phi i64 [ 1, %.lr.ph678 ], [ %313, %308 ]
  %296 = getelementptr inbounds double, ptr %25, i64 %.5676
  %297 = load double, ptr %296, align 8, !tbaa !9
  %298 = fcmp oge double %297, 0.000000e+00
  %299 = fneg double %297
  %300 = select i1 %298, double %297, double %299
  %301 = fcmp ugt double %300, %292
  br i1 %301, label %304, label %302

302:                                              ; preds = %295
  %gep681 = getelementptr double, ptr %invariant.gep680, i64 %.5676
  %303 = call i32 @dlaset_(ptr noundef nonnull @.str.2, ptr noundef nonnull @c__1, ptr noundef nonnull %3, ptr noundef nonnull @c_b6, ptr noundef nonnull @c_b6, ptr noundef %gep681, ptr noundef nonnull %2) #4
  br label %308

304:                                              ; preds = %295
  %305 = load i64, ptr %9, align 8, !tbaa !5
  %306 = add nsw i64 %305, 1
  store i64 %306, ptr %9, align 8, !tbaa !5
  %gep683 = getelementptr double, ptr %invariant.gep680, i64 %.5676
  %307 = call i32 @dlascl_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %296, ptr noundef nonnull @c_b11, ptr noundef nonnull @c__1, ptr noundef nonnull %3, ptr noundef %gep683, ptr noundef nonnull %2, ptr noundef nonnull %12) #4
  br label %308

308:                                              ; preds = %304, %302
  %309 = load double, ptr %296, align 8, !tbaa !9
  %310 = fcmp oge double %309, 0.000000e+00
  %311 = fneg double %309
  %312 = select i1 %310, double %309, double %311
  store double %312, ptr %296, align 8, !tbaa !9
  %313 = add nuw nsw i64 %.5676, 1
  %.not609.not = icmp slt i64 %.5676, %293
  br i1 %.not609.not, label %295, label %._crit_edge679, !llvm.loop !20

._crit_edge679:                                   ; preds = %308, %._crit_edge674
  store i64 1, ptr %23, align 8, !tbaa !5
  %.not610690 = icmp slt i64 %285, 1
  br i1 %.not610690, label %._crit_edge694, label %.lr.ph693

.lr.ph693:                                        ; preds = %._crit_edge679
  %314 = getelementptr i64, ptr %31, i64 %152
  %315 = getelementptr double, ptr %30, i64 %153
  %316 = getelementptr i64, ptr %11, i64 %reass.add
  %317 = getelementptr double, ptr %30, i64 %156
  %318 = getelementptr double, ptr %30, i64 %158
  %319 = getelementptr double, ptr %30, i64 %160
  %320 = getelementptr double, ptr %30, i64 %163
  %321 = getelementptr i64, ptr %31, i64 %172
  %322 = getelementptr i64, ptr %31, i64 %174
  %323 = getelementptr i64, ptr %31, i64 %173
  %324 = getelementptr double, ptr %30, i64 %166
  %325 = getelementptr double, ptr %30, i64 %161
  %326 = getelementptr double, ptr %30, i64 %162
  %327 = getelementptr inbounds double, ptr %30, i64 %170
  %328 = getelementptr inbounds i64, ptr %31, i64 %175
  br label %329

329:                                              ; preds = %.lr.ph693, %363
  %.6691 = phi i64 [ 1, %.lr.ph693 ], [ %364, %363 ]
  %330 = getelementptr inbounds i64, ptr %31, i64 %.6691
  %331 = load i64, ptr %330, align 8, !tbaa !5
  %332 = add nsw i64 %331, -1
  %333 = getelementptr i64, ptr %314, i64 %.6691
  %334 = load i64, ptr %333, align 8, !tbaa !5
  store i64 %334, ptr %21, align 8, !tbaa !5
  %335 = add nsw i64 %332, %167
  %336 = icmp eq i64 %334, 1
  br i1 %336, label %337, label %340

337:                                              ; preds = %329
  %338 = getelementptr inbounds double, ptr %30, i64 %335
  %gep689 = getelementptr double, ptr %invariant.gep660, i64 %331
  %339 = call i32 @f2c_dcopy(ptr noundef nonnull %3, ptr noundef nonnull %338, ptr noundef nonnull %2, ptr noundef %gep689, ptr noundef nonnull %7) #4
  br label %363

340:                                              ; preds = %329
  %341 = load i64, ptr %1, align 8, !tbaa !5
  %.not611 = icmp sgt i64 %334, %341
  br i1 %.not611, label %346, label %342

342:                                              ; preds = %340
  %343 = getelementptr double, ptr %315, i64 %331
  %344 = getelementptr inbounds double, ptr %30, i64 %335
  %gep685 = getelementptr double, ptr %invariant.gep660, i64 %331
  %345 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %21, ptr noundef nonnull %3, ptr noundef nonnull %21, ptr noundef nonnull @c_b11, ptr noundef %343, ptr noundef nonnull %2, ptr noundef nonnull %344, ptr noundef nonnull %2, ptr noundef nonnull @c_b6, ptr noundef %gep685, ptr noundef nonnull %7) #4
  br label %363

346:                                              ; preds = %340
  %347 = getelementptr inbounds double, ptr %30, i64 %335
  %gep687 = getelementptr double, ptr %invariant.gep660, i64 %331
  %348 = getelementptr inbounds double, ptr %30, i64 %331
  %349 = getelementptr double, ptr %315, i64 %331
  %350 = getelementptr i64, ptr %316, i64 %332
  %351 = getelementptr double, ptr %317, i64 %332
  %352 = getelementptr double, ptr %318, i64 %332
  %353 = getelementptr double, ptr %319, i64 %332
  %354 = getelementptr double, ptr %320, i64 %332
  %355 = getelementptr i64, ptr %321, i64 %332
  %356 = getelementptr i64, ptr %322, i64 %332
  %357 = getelementptr i64, ptr %323, i64 %332
  %358 = getelementptr double, ptr %324, i64 %332
  %359 = getelementptr double, ptr %325, i64 %332
  %360 = getelementptr double, ptr %326, i64 %332
  %361 = call i32 @dlalsa_(ptr noundef nonnull %23, ptr noundef nonnull %1, ptr noundef nonnull %21, ptr noundef nonnull %3, ptr noundef nonnull %347, ptr noundef nonnull %2, ptr noundef %gep687, ptr noundef nonnull %7, ptr noundef nonnull %348, ptr noundef nonnull %2, ptr noundef %349, ptr noundef %350, ptr noundef %351, ptr noundef %352, ptr noundef %353, ptr noundef %354, ptr noundef %355, ptr noundef %356, ptr noundef nonnull %2, ptr noundef %357, ptr noundef %358, ptr noundef %359, ptr noundef %360, ptr noundef nonnull %327, ptr noundef nonnull %328, ptr noundef nonnull %12) #4
  %362 = load i64, ptr %12, align 8, !tbaa !5
  %.not612 = icmp eq i64 %362, 0
  br i1 %.not612, label %363, label %.loopexit

363:                                              ; preds = %337, %346, %342
  %364 = add nuw nsw i64 %.6691, 1
  %.not610.not = icmp slt i64 %.6691, %285
  br i1 %.not610.not, label %329, label %._crit_edge694, !llvm.loop !21

._crit_edge694:                                   ; preds = %363, %._crit_edge679
  %365 = call i32 @dlascl_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull @c_b11, ptr noundef nonnull %24, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef nonnull %2, ptr noundef nonnull %12) #4
  %366 = call i32 @dlasrt_(ptr noundef nonnull @.str.8, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %12) #4
  %367 = call i32 @dlascl_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %24, ptr noundef nonnull @c_b11, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %12) #4
  br label %.loopexit

.loopexit:                                        ; preds = %278, %260, %250, %346, %110, %51, %53, %42, %._crit_edge694, %._crit_edge654, %103, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #4
  ret i32 0
}

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

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

declare double @dlamch_(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 @dlascl_(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 @dlartg_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare double @dlanst_(ptr noundef, ptr noundef, 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 i64 @f2c_idamax(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @log(double noundef) local_unnamed_addr #3

declare double @d_sign(ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

declare i32 @dlalsa_(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 = { mustprogress nofree nounwind willreturn memory(write) "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 #4 = { nounwind }

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

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


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