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

92:                                               ; preds = %13
  %93 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -3, ptr %93, align 4, !tbaa !9
  br label %114

94:                                               ; preds = %13
  %95 = load ptr, ptr %17, align 8, !tbaa !5
  %96 = load i32, ptr %95, align 4, !tbaa !9
  %97 = icmp slt i32 %96, 1
  br i1 %97, label %98, label %100

98:                                               ; preds = %94
  %99 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -4, ptr %99, align 4, !tbaa !9
  br label %113

100:                                              ; preds = %94
  %101 = load ptr, ptr %21, align 8, !tbaa !5
  %102 = load i32, ptr %101, align 4, !tbaa !9
  %103 = icmp slt i32 %102, 1
  br i1 %103, label %110, label %104

104:                                              ; preds = %100
  %105 = load ptr, ptr %21, align 8, !tbaa !5
  %106 = load i32, ptr %105, align 4, !tbaa !9
  %107 = load ptr, ptr %16, align 8, !tbaa !5
  %108 = load i32, ptr %107, align 4, !tbaa !9
  %109 = icmp slt i32 %106, %108
  br i1 %109, label %110, label %112

110:                                              ; preds = %104, %100
  %111 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -8, ptr %111, align 4, !tbaa !9
  br label %112

112:                                              ; preds = %110, %104
  br label %113

113:                                              ; preds = %112, %98
  br label %114

114:                                              ; preds = %113, %92
  %115 = load ptr, ptr %26, align 8, !tbaa !5
  %116 = load i32, ptr %115, align 4, !tbaa !9
  %117 = icmp ne i32 %116, 0
  br i1 %117, label %118, label %123

118:                                              ; preds = %114
  %119 = load ptr, ptr %26, align 8, !tbaa !5
  %120 = load i32, ptr %119, align 4, !tbaa !9
  %121 = sub nsw i32 0, %120
  store i32 %121, ptr %29, align 4, !tbaa !9
  %122 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %29, i32 noundef 6)
  store i32 1, ptr %69, align 4
  br label %1413

123:                                              ; preds = %114
  %124 = call double @dlamch_(ptr noundef @.str.1)
  store double %124, ptr %66, align 8, !tbaa !11
  %125 = load ptr, ptr %22, align 8, !tbaa !5
  %126 = load double, ptr %125, align 8, !tbaa !11
  %127 = fcmp ole double %126, 0.000000e+00
  br i1 %127, label %132, label %128

128:                                              ; preds = %123
  %129 = load ptr, ptr %22, align 8, !tbaa !5
  %130 = load double, ptr %129, align 8, !tbaa !11
  %131 = fcmp oge double %130, 1.000000e+00
  br i1 %131, label %132, label %134

132:                                              ; preds = %128, %123
  %133 = load double, ptr %66, align 8, !tbaa !11
  store double %133, ptr %34, align 8, !tbaa !11
  br label %137

134:                                              ; preds = %128
  %135 = load ptr, ptr %22, align 8, !tbaa !5
  %136 = load double, ptr %135, align 8, !tbaa !11
  store double %136, ptr %34, align 8, !tbaa !11
  br label %137

137:                                              ; preds = %134, %132
  %138 = load ptr, ptr %23, align 8, !tbaa !5
  store i32 0, ptr %138, align 4, !tbaa !9
  %139 = load ptr, ptr %16, align 8, !tbaa !5
  %140 = load i32, ptr %139, align 4, !tbaa !9
  %141 = icmp eq i32 %140, 0
  br i1 %141, label %142, label %143

142:                                              ; preds = %137
  store i32 1, ptr %69, align 4
  br label %1413

143:                                              ; preds = %137
  %144 = load ptr, ptr %16, align 8, !tbaa !5
  %145 = load i32, ptr %144, align 4, !tbaa !9
  %146 = icmp eq i32 %145, 1
  br i1 %146, label %147, label %188

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

152:                                              ; preds = %147
  %153 = load ptr, ptr %17, align 8, !tbaa !5
  %154 = load ptr, ptr %20, align 8, !tbaa !5
  %155 = load i32, ptr %28, align 4, !tbaa !9
  %156 = sext i32 %155 to i64
  %157 = getelementptr inbounds double, ptr %154, i64 %156
  %158 = load ptr, ptr %21, align 8, !tbaa !5
  call void @dlaset_(ptr noundef @.str.2, ptr noundef @c__1, ptr noundef %153, ptr noundef @c_b6, ptr noundef @c_b6, ptr noundef %157, ptr noundef %158)
  br label %187

159:                                              ; preds = %147
  %160 = load ptr, ptr %23, align 8, !tbaa !5
  store i32 1, ptr %160, align 4, !tbaa !9
  %161 = load ptr, ptr %18, align 8, !tbaa !5
  %162 = getelementptr inbounds double, ptr %161, i64 1
  %163 = load ptr, ptr %17, align 8, !tbaa !5
  %164 = load ptr, ptr %20, align 8, !tbaa !5
  %165 = load i32, ptr %28, align 4, !tbaa !9
  %166 = sext i32 %165 to i64
  %167 = getelementptr inbounds double, ptr %164, i64 %166
  %168 = load ptr, ptr %21, align 8, !tbaa !5
  %169 = load ptr, ptr %26, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %162, ptr noundef @c_b11, ptr noundef @c__1, ptr noundef %163, ptr noundef %167, ptr noundef %168, ptr noundef %169)
  %170 = load ptr, ptr %18, align 8, !tbaa !5
  %171 = getelementptr inbounds double, ptr %170, i64 1
  %172 = load double, ptr %171, align 8, !tbaa !11
  %173 = fcmp oge double %172, 0.000000e+00
  br i1 %173, label %174, label %178

174:                                              ; preds = %159
  %175 = load ptr, ptr %18, align 8, !tbaa !5
  %176 = getelementptr inbounds double, ptr %175, i64 1
  %177 = load double, ptr %176, align 8, !tbaa !11
  br label %183

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

183:                                              ; preds = %178, %174
  %184 = phi double [ %177, %174 ], [ %182, %178 ]
  %185 = load ptr, ptr %18, align 8, !tbaa !5
  %186 = getelementptr inbounds double, ptr %185, i64 1
  store double %184, ptr %186, align 8, !tbaa !11
  br label %187

187:                                              ; preds = %183, %152
  store i32 1, ptr %69, align 4
  br label %1413

188:                                              ; preds = %143
  br label %189

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

194:                                              ; preds = %189
  %195 = load ptr, ptr %16, align 8, !tbaa !5
  %196 = load i32, ptr %195, align 4, !tbaa !9
  %197 = sub nsw i32 %196, 1
  store i32 %197, ptr %29, align 4, !tbaa !9
  store i32 1, ptr %41, align 4, !tbaa !9
  br label %198

198:                                              ; preds = %273, %194
  %199 = load i32, ptr %41, align 4, !tbaa !9
  %200 = load i32, ptr %29, align 4, !tbaa !9
  %201 = icmp sle i32 %199, %200
  br i1 %201, label %202, label %276

202:                                              ; preds = %198
  %203 = load ptr, ptr %18, align 8, !tbaa !5
  %204 = load i32, ptr %41, align 4, !tbaa !9
  %205 = sext i32 %204 to i64
  %206 = getelementptr inbounds double, ptr %203, i64 %205
  %207 = load ptr, ptr %19, align 8, !tbaa !5
  %208 = load i32, ptr %41, align 4, !tbaa !9
  %209 = sext i32 %208 to i64
  %210 = getelementptr inbounds double, ptr %207, i64 %209
  call void @dlartg_(ptr noundef %206, ptr noundef %210, ptr noundef %54, ptr noundef %56, ptr noundef %44)
  %211 = load double, ptr %44, align 8, !tbaa !11
  %212 = load ptr, ptr %18, align 8, !tbaa !5
  %213 = load i32, ptr %41, align 4, !tbaa !9
  %214 = sext i32 %213 to i64
  %215 = getelementptr inbounds double, ptr %212, i64 %214
  store double %211, ptr %215, align 8, !tbaa !11
  %216 = load double, ptr %56, align 8, !tbaa !11
  %217 = load ptr, ptr %18, align 8, !tbaa !5
  %218 = load i32, ptr %41, align 4, !tbaa !9
  %219 = add nsw i32 %218, 1
  %220 = sext i32 %219 to i64
  %221 = getelementptr inbounds double, ptr %217, i64 %220
  %222 = load double, ptr %221, align 8, !tbaa !11
  %223 = fmul double %216, %222
  %224 = load ptr, ptr %19, align 8, !tbaa !5
  %225 = load i32, ptr %41, align 4, !tbaa !9
  %226 = sext i32 %225 to i64
  %227 = getelementptr inbounds double, ptr %224, i64 %226
  store double %223, ptr %227, align 8, !tbaa !11
  %228 = load double, ptr %54, align 8, !tbaa !11
  %229 = load ptr, ptr %18, align 8, !tbaa !5
  %230 = load i32, ptr %41, align 4, !tbaa !9
  %231 = add nsw i32 %230, 1
  %232 = sext i32 %231 to i64
  %233 = getelementptr inbounds double, ptr %229, i64 %232
  %234 = load double, ptr %233, align 8, !tbaa !11
  %235 = fmul double %228, %234
  %236 = load ptr, ptr %18, align 8, !tbaa !5
  %237 = load i32, ptr %41, align 4, !tbaa !9
  %238 = add nsw i32 %237, 1
  %239 = sext i32 %238 to i64
  %240 = getelementptr inbounds double, ptr %236, i64 %239
  store double %235, ptr %240, align 8, !tbaa !11
  %241 = load ptr, ptr %17, align 8, !tbaa !5
  %242 = load i32, ptr %241, align 4, !tbaa !9
  %243 = icmp eq i32 %242, 1
  br i1 %243, label %244, label %258

244:                                              ; preds = %202
  %245 = load ptr, ptr %20, align 8, !tbaa !5
  %246 = load i32, ptr %41, align 4, !tbaa !9
  %247 = load i32, ptr %27, align 4, !tbaa !9
  %248 = add nsw i32 %246, %247
  %249 = sext i32 %248 to i64
  %250 = getelementptr inbounds double, ptr %245, i64 %249
  %251 = load ptr, ptr %20, align 8, !tbaa !5
  %252 = load i32, ptr %41, align 4, !tbaa !9
  %253 = add nsw i32 %252, 1
  %254 = load i32, ptr %27, align 4, !tbaa !9
  %255 = add nsw i32 %253, %254
  %256 = sext i32 %255 to i64
  %257 = getelementptr inbounds double, ptr %251, i64 %256
  call void @drot_(ptr noundef @c__1, ptr noundef %250, ptr noundef @c__1, ptr noundef %257, ptr noundef @c__1, ptr noundef %54, ptr noundef %56)
  br label %272

258:                                              ; preds = %202
  %259 = load double, ptr %54, align 8, !tbaa !11
  %260 = load ptr, ptr %24, align 8, !tbaa !5
  %261 = load i32, ptr %41, align 4, !tbaa !9
  %262 = shl i32 %261, 1
  %263 = sub nsw i32 %262, 1
  %264 = sext i32 %263 to i64
  %265 = getelementptr inbounds double, ptr %260, i64 %264
  store double %259, ptr %265, align 8, !tbaa !11
  %266 = load double, ptr %56, align 8, !tbaa !11
  %267 = load ptr, ptr %24, align 8, !tbaa !5
  %268 = load i32, ptr %41, align 4, !tbaa !9
  %269 = mul nsw i32 %268, 2
  %270 = sext i32 %269 to i64
  %271 = getelementptr inbounds double, ptr %267, i64 %270
  store double %266, ptr %271, align 8, !tbaa !11
  br label %272

272:                                              ; preds = %258, %244
  br label %273

273:                                              ; preds = %272
  %274 = load i32, ptr %41, align 4, !tbaa !9
  %275 = add nsw i32 %274, 1
  store i32 %275, ptr %41, align 4, !tbaa !9
  br label %198, !llvm.loop !14

276:                                              ; preds = %198
  %277 = load ptr, ptr %17, align 8, !tbaa !5
  %278 = load i32, ptr %277, align 4, !tbaa !9
  %279 = icmp sgt i32 %278, 1
  br i1 %279, label %280, label %334

280:                                              ; preds = %276
  %281 = load ptr, ptr %17, align 8, !tbaa !5
  %282 = load i32, ptr %281, align 4, !tbaa !9
  store i32 %282, ptr %29, align 4, !tbaa !9
  store i32 1, ptr %41, align 4, !tbaa !9
  br label %283

283:                                              ; preds = %330, %280
  %284 = load i32, ptr %41, align 4, !tbaa !9
  %285 = load i32, ptr %29, align 4, !tbaa !9
  %286 = icmp sle i32 %284, %285
  br i1 %286, label %287, label %333

287:                                              ; preds = %283
  %288 = load ptr, ptr %16, align 8, !tbaa !5
  %289 = load i32, ptr %288, align 4, !tbaa !9
  %290 = sub nsw i32 %289, 1
  store i32 %290, ptr %30, align 4, !tbaa !9
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %291

291:                                              ; preds = %326, %287
  %292 = load i32, ptr %42, align 4, !tbaa !9
  %293 = load i32, ptr %30, align 4, !tbaa !9
  %294 = icmp sle i32 %292, %293
  br i1 %294, label %295, label %329

295:                                              ; preds = %291
  %296 = load ptr, ptr %24, align 8, !tbaa !5
  %297 = load i32, ptr %42, align 4, !tbaa !9
  %298 = shl i32 %297, 1
  %299 = sub nsw i32 %298, 1
  %300 = sext i32 %299 to i64
  %301 = getelementptr inbounds double, ptr %296, i64 %300
  %302 = load double, ptr %301, align 8, !tbaa !11
  store double %302, ptr %54, align 8, !tbaa !11
  %303 = load ptr, ptr %24, align 8, !tbaa !5
  %304 = load i32, ptr %42, align 4, !tbaa !9
  %305 = mul nsw i32 %304, 2
  %306 = sext i32 %305 to i64
  %307 = getelementptr inbounds double, ptr %303, i64 %306
  %308 = load double, ptr %307, align 8, !tbaa !11
  store double %308, ptr %56, align 8, !tbaa !11
  %309 = load ptr, ptr %20, align 8, !tbaa !5
  %310 = load i32, ptr %42, align 4, !tbaa !9
  %311 = load i32, ptr %41, align 4, !tbaa !9
  %312 = load i32, ptr %27, align 4, !tbaa !9
  %313 = mul nsw i32 %311, %312
  %314 = add nsw i32 %310, %313
  %315 = sext i32 %314 to i64
  %316 = getelementptr inbounds double, ptr %309, i64 %315
  %317 = load ptr, ptr %20, align 8, !tbaa !5
  %318 = load i32, ptr %42, align 4, !tbaa !9
  %319 = add nsw i32 %318, 1
  %320 = load i32, ptr %41, align 4, !tbaa !9
  %321 = load i32, ptr %27, align 4, !tbaa !9
  %322 = mul nsw i32 %320, %321
  %323 = add nsw i32 %319, %322
  %324 = sext i32 %323 to i64
  %325 = getelementptr inbounds double, ptr %317, i64 %324
  call void @drot_(ptr noundef @c__1, ptr noundef %316, ptr noundef @c__1, ptr noundef %325, ptr noundef @c__1, ptr noundef %54, ptr noundef %56)
  br label %326

326:                                              ; preds = %295
  %327 = load i32, ptr %42, align 4, !tbaa !9
  %328 = add nsw i32 %327, 1
  store i32 %328, ptr %42, align 4, !tbaa !9
  br label %291, !llvm.loop !16

329:                                              ; preds = %291
  br label %330

330:                                              ; preds = %329
  %331 = load i32, ptr %41, align 4, !tbaa !9
  %332 = add nsw i32 %331, 1
  store i32 %332, ptr %41, align 4, !tbaa !9
  br label %283, !llvm.loop !17

333:                                              ; preds = %283
  br label %334

334:                                              ; preds = %333, %276
  br label %335

335:                                              ; preds = %334, %189
  %336 = load ptr, ptr %16, align 8, !tbaa !5
  %337 = load i32, ptr %336, align 4, !tbaa !9
  %338 = sub nsw i32 %337, 1
  store i32 %338, ptr %63, align 4, !tbaa !9
  %339 = load ptr, ptr %16, align 8, !tbaa !5
  %340 = load ptr, ptr %18, align 8, !tbaa !5
  %341 = getelementptr inbounds double, ptr %340, i64 1
  %342 = load ptr, ptr %19, align 8, !tbaa !5
  %343 = getelementptr inbounds double, ptr %342, i64 1
  %344 = call double @dlanst_(ptr noundef @.str.4, ptr noundef %339, ptr noundef %341, ptr noundef %343)
  store double %344, ptr %60, align 8, !tbaa !11
  %345 = load double, ptr %60, align 8, !tbaa !11
  %346 = fcmp oeq double %345, 0.000000e+00
  br i1 %346, label %347, label %355

347:                                              ; preds = %335
  %348 = load ptr, ptr %16, align 8, !tbaa !5
  %349 = load ptr, ptr %17, align 8, !tbaa !5
  %350 = load ptr, ptr %20, align 8, !tbaa !5
  %351 = load i32, ptr %28, align 4, !tbaa !9
  %352 = sext i32 %351 to i64
  %353 = getelementptr inbounds double, ptr %350, i64 %352
  %354 = load ptr, ptr %21, align 8, !tbaa !5
  call void @dlaset_(ptr noundef @.str.2, ptr noundef %348, ptr noundef %349, ptr noundef @c_b6, ptr noundef @c_b6, ptr noundef %353, ptr noundef %354)
  store i32 1, ptr %69, align 4
  br label %1413

355:                                              ; preds = %335
  %356 = load ptr, ptr %16, align 8, !tbaa !5
  %357 = load ptr, ptr %18, align 8, !tbaa !5
  %358 = getelementptr inbounds double, ptr %357, i64 1
  %359 = load ptr, ptr %16, align 8, !tbaa !5
  %360 = load ptr, ptr %26, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %60, ptr noundef @c_b11, ptr noundef %356, ptr noundef @c__1, ptr noundef %358, ptr noundef %359, ptr noundef %360)
  %361 = load ptr, ptr %19, align 8, !tbaa !5
  %362 = getelementptr inbounds double, ptr %361, i64 1
  %363 = load ptr, ptr %26, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %60, ptr noundef @c_b11, ptr noundef %63, ptr noundef @c__1, ptr noundef %362, ptr noundef %63, ptr noundef %363)
  %364 = load ptr, ptr %16, align 8, !tbaa !5
  %365 = load i32, ptr %364, align 4, !tbaa !9
  %366 = load ptr, ptr %15, align 8, !tbaa !5
  %367 = load i32, ptr %366, align 4, !tbaa !9
  %368 = icmp sle i32 %365, %367
  br i1 %368, label %369, label %518

369:                                              ; preds = %355
  %370 = load ptr, ptr %16, align 8, !tbaa !5
  %371 = load i32, ptr %370, align 4, !tbaa !9
  %372 = load ptr, ptr %16, align 8, !tbaa !5
  %373 = load i32, ptr %372, align 4, !tbaa !9
  %374 = mul nsw i32 %371, %373
  %375 = add nsw i32 %374, 1
  store i32 %375, ptr %51, align 4, !tbaa !9
  %376 = load ptr, ptr %16, align 8, !tbaa !5
  %377 = load ptr, ptr %16, align 8, !tbaa !5
  %378 = load ptr, ptr %24, align 8, !tbaa !5
  %379 = getelementptr inbounds double, ptr %378, i64 1
  %380 = load ptr, ptr %16, align 8, !tbaa !5
  call void @dlaset_(ptr noundef @.str.2, ptr noundef %376, ptr noundef %377, ptr noundef @c_b6, ptr noundef @c_b11, ptr noundef %379, ptr noundef %380)
  %381 = load ptr, ptr %16, align 8, !tbaa !5
  %382 = load ptr, ptr %16, align 8, !tbaa !5
  %383 = load ptr, ptr %17, align 8, !tbaa !5
  %384 = load ptr, ptr %18, align 8, !tbaa !5
  %385 = getelementptr inbounds double, ptr %384, i64 1
  %386 = load ptr, ptr %19, align 8, !tbaa !5
  %387 = getelementptr inbounds double, ptr %386, i64 1
  %388 = load ptr, ptr %24, align 8, !tbaa !5
  %389 = getelementptr inbounds double, ptr %388, i64 1
  %390 = load ptr, ptr %16, align 8, !tbaa !5
  %391 = load ptr, ptr %24, align 8, !tbaa !5
  %392 = getelementptr inbounds double, ptr %391, i64 1
  %393 = load ptr, ptr %16, align 8, !tbaa !5
  %394 = load ptr, ptr %20, align 8, !tbaa !5
  %395 = load i32, ptr %28, align 4, !tbaa !9
  %396 = sext i32 %395 to i64
  %397 = getelementptr inbounds double, ptr %394, i64 %396
  %398 = load ptr, ptr %21, align 8, !tbaa !5
  %399 = load ptr, ptr %24, align 8, !tbaa !5
  %400 = load i32, ptr %51, align 4, !tbaa !9
  %401 = sext i32 %400 to i64
  %402 = getelementptr inbounds double, ptr %399, i64 %401
  %403 = load ptr, ptr %26, align 8, !tbaa !5
  call void @dlasdq_(ptr noundef @.str.5, ptr noundef @c__0, ptr noundef %381, ptr noundef %382, ptr noundef @c__0, ptr noundef %383, ptr noundef %385, ptr noundef %387, ptr noundef %389, ptr noundef %390, ptr noundef %392, ptr noundef %393, ptr noundef %397, ptr noundef %398, ptr noundef %402, ptr noundef %403)
  %404 = load ptr, ptr %26, align 8, !tbaa !5
  %405 = load i32, ptr %404, align 4, !tbaa !9
  %406 = icmp ne i32 %405, 0
  br i1 %406, label %407, label %408

407:                                              ; preds = %369
  store i32 1, ptr %69, align 4
  br label %1413

408:                                              ; preds = %369
  %409 = load double, ptr %34, align 8, !tbaa !11
  %410 = load ptr, ptr %18, align 8, !tbaa !5
  %411 = load ptr, ptr %16, align 8, !tbaa !5
  %412 = load ptr, ptr %18, align 8, !tbaa !5
  %413 = getelementptr inbounds double, ptr %412, i64 1
  %414 = call i32 @idamax_(ptr noundef %411, ptr noundef %413, ptr noundef @c__1)
  %415 = sext i32 %414 to i64
  %416 = getelementptr inbounds double, ptr %410, i64 %415
  %417 = load double, ptr %416, align 8, !tbaa !11
  store double %417, ptr %31, align 8, !tbaa !11
  %418 = load double, ptr %31, align 8, !tbaa !11
  %419 = fcmp oge double %418, 0.000000e+00
  br i1 %419, label %420, label %422

420:                                              ; preds = %408
  %421 = load double, ptr %31, align 8, !tbaa !11
  br label %425

422:                                              ; preds = %408
  %423 = load double, ptr %31, align 8, !tbaa !11
  %424 = fneg double %423
  br label %425

425:                                              ; preds = %422, %420
  %426 = phi double [ %421, %420 ], [ %424, %422 ]
  %427 = fmul double %409, %426
  store double %427, ptr %68, align 8, !tbaa !11
  %428 = load ptr, ptr %16, align 8, !tbaa !5
  %429 = load i32, ptr %428, align 4, !tbaa !9
  store i32 %429, ptr %29, align 4, !tbaa !9
  store i32 1, ptr %41, align 4, !tbaa !9
  br label %430

430:                                              ; preds = %469, %425
  %431 = load i32, ptr %41, align 4, !tbaa !9
  %432 = load i32, ptr %29, align 4, !tbaa !9
  %433 = icmp sle i32 %431, %432
  br i1 %433, label %434, label %472

434:                                              ; preds = %430
  %435 = load ptr, ptr %18, align 8, !tbaa !5
  %436 = load i32, ptr %41, align 4, !tbaa !9
  %437 = sext i32 %436 to i64
  %438 = getelementptr inbounds double, ptr %435, i64 %437
  %439 = load double, ptr %438, align 8, !tbaa !11
  %440 = load double, ptr %68, align 8, !tbaa !11
  %441 = fcmp ole double %439, %440
  br i1 %441, label %442, label %451

442:                                              ; preds = %434
  %443 = load ptr, ptr %17, align 8, !tbaa !5
  %444 = load ptr, ptr %20, align 8, !tbaa !5
  %445 = load i32, ptr %41, align 4, !tbaa !9
  %446 = load i32, ptr %27, align 4, !tbaa !9
  %447 = add nsw i32 %445, %446
  %448 = sext i32 %447 to i64
  %449 = getelementptr inbounds double, ptr %444, i64 %448
  %450 = load ptr, ptr %21, align 8, !tbaa !5
  call void @dlaset_(ptr noundef @.str.2, ptr noundef @c__1, ptr noundef %443, ptr noundef @c_b6, ptr noundef @c_b6, ptr noundef %449, ptr noundef %450)
  br label %468

451:                                              ; preds = %434
  %452 = load ptr, ptr %18, align 8, !tbaa !5
  %453 = load i32, ptr %41, align 4, !tbaa !9
  %454 = sext i32 %453 to i64
  %455 = getelementptr inbounds double, ptr %452, i64 %454
  %456 = load ptr, ptr %17, align 8, !tbaa !5
  %457 = load ptr, ptr %20, align 8, !tbaa !5
  %458 = load i32, ptr %41, align 4, !tbaa !9
  %459 = load i32, ptr %27, align 4, !tbaa !9
  %460 = add nsw i32 %458, %459
  %461 = sext i32 %460 to i64
  %462 = getelementptr inbounds double, ptr %457, i64 %461
  %463 = load ptr, ptr %21, align 8, !tbaa !5
  %464 = load ptr, ptr %26, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %455, ptr noundef @c_b11, ptr noundef @c__1, ptr noundef %456, ptr noundef %462, ptr noundef %463, ptr noundef %464)
  %465 = load ptr, ptr %23, align 8, !tbaa !5
  %466 = load i32, ptr %465, align 4, !tbaa !9
  %467 = add nsw i32 %466, 1
  store i32 %467, ptr %465, align 4, !tbaa !9
  br label %468

468:                                              ; preds = %451, %442
  br label %469

469:                                              ; preds = %468
  %470 = load i32, ptr %41, align 4, !tbaa !9
  %471 = add nsw i32 %470, 1
  store i32 %471, ptr %41, align 4, !tbaa !9
  br label %430, !llvm.loop !18

472:                                              ; preds = %430
  %473 = load ptr, ptr %16, align 8, !tbaa !5
  %474 = load ptr, ptr %17, align 8, !tbaa !5
  %475 = load ptr, ptr %16, align 8, !tbaa !5
  %476 = load ptr, ptr %24, align 8, !tbaa !5
  %477 = getelementptr inbounds double, ptr %476, i64 1
  %478 = load ptr, ptr %16, align 8, !tbaa !5
  %479 = load ptr, ptr %20, align 8, !tbaa !5
  %480 = load i32, ptr %28, align 4, !tbaa !9
  %481 = sext i32 %480 to i64
  %482 = getelementptr inbounds double, ptr %479, i64 %481
  %483 = load ptr, ptr %21, align 8, !tbaa !5
  %484 = load ptr, ptr %24, align 8, !tbaa !5
  %485 = load i32, ptr %51, align 4, !tbaa !9
  %486 = sext i32 %485 to i64
  %487 = getelementptr inbounds double, ptr %484, i64 %486
  %488 = load ptr, ptr %16, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %473, ptr noundef %474, ptr noundef %475, ptr noundef @c_b11, ptr noundef %477, ptr noundef %478, ptr noundef %482, ptr noundef %483, ptr noundef @c_b6, ptr noundef %487, ptr noundef %488)
  %489 = load ptr, ptr %16, align 8, !tbaa !5
  %490 = load ptr, ptr %17, align 8, !tbaa !5
  %491 = load ptr, ptr %24, align 8, !tbaa !5
  %492 = load i32, ptr %51, align 4, !tbaa !9
  %493 = sext i32 %492 to i64
  %494 = getelementptr inbounds double, ptr %491, i64 %493
  %495 = load ptr, ptr %16, align 8, !tbaa !5
  %496 = load ptr, ptr %20, align 8, !tbaa !5
  %497 = load i32, ptr %28, align 4, !tbaa !9
  %498 = sext i32 %497 to i64
  %499 = getelementptr inbounds double, ptr %496, i64 %498
  %500 = load ptr, ptr %21, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str.2, ptr noundef %489, ptr noundef %490, ptr noundef %494, ptr noundef %495, ptr noundef %499, ptr noundef %500)
  %501 = load ptr, ptr %16, align 8, !tbaa !5
  %502 = load ptr, ptr %18, align 8, !tbaa !5
  %503 = getelementptr inbounds double, ptr %502, i64 1
  %504 = load ptr, ptr %16, align 8, !tbaa !5
  %505 = load ptr, ptr %26, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef @c_b11, ptr noundef %60, ptr noundef %501, ptr noundef @c__1, ptr noundef %503, ptr noundef %504, ptr noundef %505)
  %506 = load ptr, ptr %16, align 8, !tbaa !5
  %507 = load ptr, ptr %18, align 8, !tbaa !5
  %508 = getelementptr inbounds double, ptr %507, i64 1
  %509 = load ptr, ptr %26, align 8, !tbaa !5
  call void @dlasrt_(ptr noundef @.str.8, ptr noundef %506, ptr noundef %508, ptr noundef %509)
  %510 = load ptr, ptr %16, align 8, !tbaa !5
  %511 = load ptr, ptr %17, align 8, !tbaa !5
  %512 = load ptr, ptr %20, align 8, !tbaa !5
  %513 = load i32, ptr %28, align 4, !tbaa !9
  %514 = sext i32 %513 to i64
  %515 = getelementptr inbounds double, ptr %512, i64 %514
  %516 = load ptr, ptr %21, align 8, !tbaa !5
  %517 = load ptr, ptr %26, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %60, ptr noundef @c_b11, ptr noundef %510, ptr noundef %511, ptr noundef %515, ptr noundef %516, ptr noundef %517)
  store i32 1, ptr %69, align 4
  br label %1413

518:                                              ; preds = %355
  %519 = load ptr, ptr %16, align 8, !tbaa !5
  %520 = load i32, ptr %519, align 4, !tbaa !9
  %521 = sitofp i32 %520 to double
  %522 = load ptr, ptr %15, align 8, !tbaa !5
  %523 = load i32, ptr %522, align 4, !tbaa !9
  %524 = add nsw i32 %523, 1
  %525 = sitofp i32 %524 to double
  %526 = fdiv double %521, %525
  %527 = call double @log(double noundef %526) #4
  %528 = call double @log(double noundef 2.000000e+00) #4
  %529 = fdiv double %527, %528
  %530 = fptosi double %529 to i32
  %531 = add nsw i32 %530, 1
  store i32 %531, ptr %37, align 4, !tbaa !9
  %532 = load ptr, ptr %15, align 8, !tbaa !5
  %533 = load i32, ptr %532, align 4, !tbaa !9
  %534 = add nsw i32 %533, 1
  store i32 %534, ptr %64, align 4, !tbaa !9
  store i32 1, ptr %46, align 4, !tbaa !9
  %535 = load ptr, ptr %15, align 8, !tbaa !5
  %536 = load i32, ptr %535, align 4, !tbaa !9
  %537 = load ptr, ptr %16, align 8, !tbaa !5
  %538 = load i32, ptr %537, align 4, !tbaa !9
  %539 = mul nsw i32 %536, %538
  %540 = add nsw i32 %539, 1
  store i32 %540, ptr %58, align 4, !tbaa !9
  %541 = load i32, ptr %58, align 4, !tbaa !9
  %542 = load i32, ptr %64, align 4, !tbaa !9
  %543 = load ptr, ptr %16, align 8, !tbaa !5
  %544 = load i32, ptr %543, align 4, !tbaa !9
  %545 = mul nsw i32 %542, %544
  %546 = add nsw i32 %541, %545
  store i32 %546, ptr %32, align 4, !tbaa !9
  %547 = load i32, ptr %32, align 4, !tbaa !9
  %548 = load i32, ptr %37, align 4, !tbaa !9
  %549 = load ptr, ptr %16, align 8, !tbaa !5
  %550 = load i32, ptr %549, align 4, !tbaa !9
  %551 = mul nsw i32 %548, %550
  %552 = add nsw i32 %547, %551
  store i32 %552, ptr %33, align 4, !tbaa !9
  %553 = load i32, ptr %33, align 4, !tbaa !9
  %554 = load i32, ptr %37, align 4, !tbaa !9
  %555 = load ptr, ptr %16, align 8, !tbaa !5
  %556 = load i32, ptr %555, align 4, !tbaa !9
  %557 = mul nsw i32 %554, %556
  %558 = shl i32 %557, 1
  %559 = add nsw i32 %553, %558
  store i32 %559, ptr %47, align 4, !tbaa !9
  %560 = load i32, ptr %47, align 4, !tbaa !9
  %561 = load i32, ptr %37, align 4, !tbaa !9
  %562 = load ptr, ptr %16, align 8, !tbaa !5
  %563 = load i32, ptr %562, align 4, !tbaa !9
  %564 = mul nsw i32 %561, %563
  %565 = add nsw i32 %560, %564
  store i32 %565, ptr %40, align 4, !tbaa !9
  %566 = load i32, ptr %40, align 4, !tbaa !9
  %567 = load ptr, ptr %16, align 8, !tbaa !5
  %568 = load i32, ptr %567, align 4, !tbaa !9
  %569 = add nsw i32 %566, %568
  store i32 %569, ptr %45, align 4, !tbaa !9
  %570 = load i32, ptr %45, align 4, !tbaa !9
  %571 = load ptr, ptr %16, align 8, !tbaa !5
  %572 = load i32, ptr %571, align 4, !tbaa !9
  %573 = add nsw i32 %570, %572
  store i32 %573, ptr %48, align 4, !tbaa !9
  %574 = load i32, ptr %48, align 4, !tbaa !9
  %575 = load i32, ptr %37, align 4, !tbaa !9
  %576 = shl i32 %575, 1
  %577 = load ptr, ptr %16, align 8, !tbaa !5
  %578 = load i32, ptr %577, align 4, !tbaa !9
  %579 = mul nsw i32 %576, %578
  %580 = add nsw i32 %574, %579
  store i32 %580, ptr %61, align 4, !tbaa !9
  %581 = load i32, ptr %61, align 4, !tbaa !9
  %582 = load i32, ptr %37, align 4, !tbaa !9
  %583 = shl i32 %582, 1
  %584 = load ptr, ptr %16, align 8, !tbaa !5
  %585 = load i32, ptr %584, align 4, !tbaa !9
  %586 = mul nsw i32 %583, %585
  %587 = add nsw i32 %581, %586
  store i32 %587, ptr %55, align 4, !tbaa !9
  %588 = load i32, ptr %55, align 4, !tbaa !9
  %589 = load ptr, ptr %16, align 8, !tbaa !5
  %590 = load i32, ptr %589, align 4, !tbaa !9
  %591 = load ptr, ptr %17, align 8, !tbaa !5
  %592 = load i32, ptr %591, align 4, !tbaa !9
  %593 = mul nsw i32 %590, %592
  %594 = add nsw i32 %588, %593
  store i32 %594, ptr %51, align 4, !tbaa !9
  %595 = load ptr, ptr %16, align 8, !tbaa !5
  %596 = load i32, ptr %595, align 4, !tbaa !9
  %597 = add nsw i32 %596, 1
  store i32 %597, ptr %49, align 4, !tbaa !9
  %598 = load i32, ptr %49, align 4, !tbaa !9
  %599 = load ptr, ptr %16, align 8, !tbaa !5
  %600 = load i32, ptr %599, align 4, !tbaa !9
  %601 = add nsw i32 %598, %600
  store i32 %601, ptr %43, align 4, !tbaa !9
  %602 = load i32, ptr %43, align 4, !tbaa !9
  %603 = load ptr, ptr %16, align 8, !tbaa !5
  %604 = load i32, ptr %603, align 4, !tbaa !9
  %605 = add nsw i32 %602, %604
  store i32 %605, ptr %62, align 4, !tbaa !9
  %606 = load i32, ptr %62, align 4, !tbaa !9
  %607 = load ptr, ptr %16, align 8, !tbaa !5
  %608 = load i32, ptr %607, align 4, !tbaa !9
  %609 = add nsw i32 %606, %608
  store i32 %609, ptr %35, align 4, !tbaa !9
  %610 = load i32, ptr %35, align 4, !tbaa !9
  %611 = load i32, ptr %37, align 4, !tbaa !9
  %612 = load ptr, ptr %16, align 8, !tbaa !5
  %613 = load i32, ptr %612, align 4, !tbaa !9
  %614 = mul nsw i32 %611, %613
  %615 = add nsw i32 %610, %614
  store i32 %615, ptr %59, align 4, !tbaa !9
  %616 = load i32, ptr %59, align 4, !tbaa !9
  %617 = load i32, ptr %37, align 4, !tbaa !9
  %618 = load ptr, ptr %16, align 8, !tbaa !5
  %619 = load i32, ptr %618, align 4, !tbaa !9
  %620 = mul nsw i32 %617, %619
  %621 = shl i32 %620, 1
  %622 = add nsw i32 %616, %621
  store i32 %622, ptr %67, align 4, !tbaa !9
  store i32 1, ptr %57, align 4, !tbaa !9
  store i32 0, ptr %38, align 4, !tbaa !9
  store i32 1, ptr %52, align 4, !tbaa !9
  store i32 0, ptr %53, align 4, !tbaa !9
  store i32 0, ptr %36, align 4, !tbaa !9
  %623 = load ptr, ptr %16, align 8, !tbaa !5
  %624 = load i32, ptr %623, align 4, !tbaa !9
  store i32 %624, ptr %29, align 4, !tbaa !9
  store i32 1, ptr %41, align 4, !tbaa !9
  br label %625

625:                                              ; preds = %681, %518
  %626 = load i32, ptr %41, align 4, !tbaa !9
  %627 = load i32, ptr %29, align 4, !tbaa !9
  %628 = icmp sle i32 %626, %627
  br i1 %628, label %629, label %684

629:                                              ; preds = %625
  %630 = load ptr, ptr %18, align 8, !tbaa !5
  %631 = load i32, ptr %41, align 4, !tbaa !9
  %632 = sext i32 %631 to i64
  %633 = getelementptr inbounds double, ptr %630, i64 %632
  %634 = load double, ptr %633, align 8, !tbaa !11
  store double %634, ptr %31, align 8, !tbaa !11
  %635 = load double, ptr %31, align 8, !tbaa !11
  %636 = fcmp oge double %635, 0.000000e+00
  br i1 %636, label %637, label %639

637:                                              ; preds = %629
  %638 = load double, ptr %31, align 8, !tbaa !11
  br label %642

639:                                              ; preds = %629
  %640 = load double, ptr %31, align 8, !tbaa !11
  %641 = fneg double %640
  br label %642

642:                                              ; preds = %639, %637
  %643 = phi double [ %638, %637 ], [ %641, %639 ]
  %644 = load double, ptr %66, align 8, !tbaa !11
  %645 = fcmp olt double %643, %644
  br i1 %645, label %646, label %680

646:                                              ; preds = %642
  %647 = load ptr, ptr %18, align 8, !tbaa !5
  %648 = load i32, ptr %41, align 4, !tbaa !9
  %649 = sext i32 %648 to i64
  %650 = getelementptr inbounds double, ptr %647, i64 %649
  %651 = load double, ptr %650, align 8, !tbaa !11
  %652 = fcmp oge double %651, 0.000000e+00
  br i1 %652, label %653, label %663

653:                                              ; preds = %646
  %654 = load double, ptr %66, align 8, !tbaa !11
  %655 = fcmp oge double %654, 0.000000e+00
  br i1 %655, label %656, label %658

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

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

661:                                              ; preds = %658, %656
  %662 = phi double [ %657, %656 ], [ %660, %658 ]
  br label %674

663:                                              ; preds = %646
  %664 = load double, ptr %66, align 8, !tbaa !11
  %665 = fcmp oge double %664, 0.000000e+00
  br i1 %665, label %666, label %668

666:                                              ; preds = %663
  %667 = load double, ptr %66, align 8, !tbaa !11
  br label %671

668:                                              ; preds = %663
  %669 = load double, ptr %66, align 8, !tbaa !11
  %670 = fneg double %669
  br label %671

671:                                              ; preds = %668, %666
  %672 = phi double [ %667, %666 ], [ %670, %668 ]
  %673 = fneg double %672
  br label %674

674:                                              ; preds = %671, %661
  %675 = phi double [ %662, %661 ], [ %673, %671 ]
  %676 = load ptr, ptr %18, align 8, !tbaa !5
  %677 = load i32, ptr %41, align 4, !tbaa !9
  %678 = sext i32 %677 to i64
  %679 = getelementptr inbounds double, ptr %676, i64 %678
  store double %675, ptr %679, align 8, !tbaa !11
  br label %680

680:                                              ; preds = %674, %642
  br label %681

681:                                              ; preds = %680
  %682 = load i32, ptr %41, align 4, !tbaa !9
  %683 = add nsw i32 %682, 1
  store i32 %683, ptr %41, align 4, !tbaa !9
  br label %625, !llvm.loop !19

684:                                              ; preds = %625
  %685 = load i32, ptr %63, align 4, !tbaa !9
  store i32 %685, ptr %29, align 4, !tbaa !9
  store i32 1, ptr %41, align 4, !tbaa !9
  br label %686

686:                                              ; preds = %1118, %684
  %687 = load i32, ptr %41, align 4, !tbaa !9
  %688 = load i32, ptr %29, align 4, !tbaa !9
  %689 = icmp sle i32 %687, %688
  br i1 %689, label %690, label %1121

690:                                              ; preds = %686
  %691 = load ptr, ptr %19, align 8, !tbaa !5
  %692 = load i32, ptr %41, align 4, !tbaa !9
  %693 = sext i32 %692 to i64
  %694 = getelementptr inbounds double, ptr %691, i64 %693
  %695 = load double, ptr %694, align 8, !tbaa !11
  store double %695, ptr %31, align 8, !tbaa !11
  %696 = load double, ptr %31, align 8, !tbaa !11
  %697 = fcmp oge double %696, 0.000000e+00
  br i1 %697, label %698, label %700

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

700:                                              ; preds = %690
  %701 = load double, ptr %31, 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 %66, align 8, !tbaa !11
  %706 = fcmp olt double %704, %705
  br i1 %706, label %711, label %707

707:                                              ; preds = %703
  %708 = load i32, ptr %41, align 4, !tbaa !9
  %709 = load i32, ptr %63, align 4, !tbaa !9
  %710 = icmp eq i32 %708, %709
  br i1 %710, label %711, label %1117

711:                                              ; preds = %707, %703
  %712 = load i32, ptr %36, align 4, !tbaa !9
  %713 = add nsw i32 %712, 1
  store i32 %713, ptr %36, align 4, !tbaa !9
  %714 = load i32, ptr %57, align 4, !tbaa !9
  %715 = load ptr, ptr %25, align 8, !tbaa !5
  %716 = load i32, ptr %36, align 4, !tbaa !9
  %717 = sext i32 %716 to i64
  %718 = getelementptr inbounds i32, ptr %715, i64 %717
  store i32 %714, ptr %718, align 4, !tbaa !9
  %719 = load i32, ptr %41, align 4, !tbaa !9
  %720 = load i32, ptr %63, align 4, !tbaa !9
  %721 = icmp slt i32 %719, %720
  br i1 %721, label %722, label %735

722:                                              ; preds = %711
  %723 = load i32, ptr %41, align 4, !tbaa !9
  %724 = load i32, ptr %57, align 4, !tbaa !9
  %725 = sub nsw i32 %723, %724
  %726 = add nsw i32 %725, 1
  store i32 %726, ptr %50, align 4, !tbaa !9
  %727 = load i32, ptr %50, align 4, !tbaa !9
  %728 = load ptr, ptr %25, align 8, !tbaa !5
  %729 = load i32, ptr %49, align 4, !tbaa !9
  %730 = load i32, ptr %36, align 4, !tbaa !9
  %731 = add nsw i32 %729, %730
  %732 = sub nsw i32 %731, 1
  %733 = sext i32 %732 to i64
  %734 = getelementptr inbounds i32, ptr %728, i64 %733
  store i32 %727, ptr %734, align 4, !tbaa !9
  br label %811

735:                                              ; preds = %711
  %736 = load ptr, ptr %19, align 8, !tbaa !5
  %737 = load i32, ptr %41, align 4, !tbaa !9
  %738 = sext i32 %737 to i64
  %739 = getelementptr inbounds double, ptr %736, i64 %738
  %740 = load double, ptr %739, align 8, !tbaa !11
  store double %740, ptr %31, align 8, !tbaa !11
  %741 = load double, ptr %31, align 8, !tbaa !11
  %742 = fcmp oge double %741, 0.000000e+00
  br i1 %742, label %743, label %745

743:                                              ; preds = %735
  %744 = load double, ptr %31, align 8, !tbaa !11
  br label %748

745:                                              ; preds = %735
  %746 = load double, ptr %31, align 8, !tbaa !11
  %747 = fneg double %746
  br label %748

748:                                              ; preds = %745, %743
  %749 = phi double [ %744, %743 ], [ %747, %745 ]
  %750 = load double, ptr %66, align 8, !tbaa !11
  %751 = fcmp oge double %749, %750
  br i1 %751, label %752, label %766

752:                                              ; preds = %748
  %753 = load ptr, ptr %16, align 8, !tbaa !5
  %754 = load i32, ptr %753, align 4, !tbaa !9
  %755 = load i32, ptr %57, align 4, !tbaa !9
  %756 = sub nsw i32 %754, %755
  %757 = add nsw i32 %756, 1
  store i32 %757, ptr %50, align 4, !tbaa !9
  %758 = load i32, ptr %50, align 4, !tbaa !9
  %759 = load ptr, ptr %25, align 8, !tbaa !5
  %760 = load i32, ptr %49, align 4, !tbaa !9
  %761 = load i32, ptr %36, align 4, !tbaa !9
  %762 = add nsw i32 %760, %761
  %763 = sub nsw i32 %762, 1
  %764 = sext i32 %763 to i64
  %765 = getelementptr inbounds i32, ptr %759, i64 %764
  store i32 %758, ptr %765, align 4, !tbaa !9
  br label %810

766:                                              ; preds = %748
  %767 = load i32, ptr %41, align 4, !tbaa !9
  %768 = load i32, ptr %57, align 4, !tbaa !9
  %769 = sub nsw i32 %767, %768
  %770 = add nsw i32 %769, 1
  store i32 %770, ptr %50, align 4, !tbaa !9
  %771 = load i32, ptr %50, align 4, !tbaa !9
  %772 = load ptr, ptr %25, align 8, !tbaa !5
  %773 = load i32, ptr %49, align 4, !tbaa !9
  %774 = load i32, ptr %36, align 4, !tbaa !9
  %775 = add nsw i32 %773, %774
  %776 = sub nsw i32 %775, 1
  %777 = sext i32 %776 to i64
  %778 = getelementptr inbounds i32, ptr %772, i64 %777
  store i32 %771, ptr %778, align 4, !tbaa !9
  %779 = load i32, ptr %36, align 4, !tbaa !9
  %780 = add nsw i32 %779, 1
  store i32 %780, ptr %36, align 4, !tbaa !9
  %781 = load ptr, ptr %16, align 8, !tbaa !5
  %782 = load i32, ptr %781, align 4, !tbaa !9
  %783 = load ptr, ptr %25, align 8, !tbaa !5
  %784 = load i32, ptr %36, align 4, !tbaa !9
  %785 = sext i32 %784 to i64
  %786 = getelementptr inbounds i32, ptr %783, i64 %785
  store i32 %782, ptr %786, align 4, !tbaa !9
  %787 = load ptr, ptr %25, align 8, !tbaa !5
  %788 = load i32, ptr %49, align 4, !tbaa !9
  %789 = load i32, ptr %36, align 4, !tbaa !9
  %790 = add nsw i32 %788, %789
  %791 = sub nsw i32 %790, 1
  %792 = sext i32 %791 to i64
  %793 = getelementptr inbounds i32, ptr %787, i64 %792
  store i32 1, ptr %793, align 4, !tbaa !9
  %794 = load ptr, ptr %17, align 8, !tbaa !5
  %795 = load ptr, ptr %20, align 8, !tbaa !5
  %796 = load ptr, ptr %16, align 8, !tbaa !5
  %797 = load i32, ptr %796, align 4, !tbaa !9
  %798 = load i32, ptr %27, align 4, !tbaa !9
  %799 = add nsw i32 %797, %798
  %800 = sext i32 %799 to i64
  %801 = getelementptr inbounds double, ptr %795, i64 %800
  %802 = load ptr, ptr %21, align 8, !tbaa !5
  %803 = load ptr, ptr %24, align 8, !tbaa !5
  %804 = load i32, ptr %55, align 4, !tbaa !9
  %805 = load i32, ptr %63, align 4, !tbaa !9
  %806 = add nsw i32 %804, %805
  %807 = sext i32 %806 to i64
  %808 = getelementptr inbounds double, ptr %803, i64 %807
  %809 = load ptr, ptr %16, align 8, !tbaa !5
  call void @dcopy_(ptr noundef %794, ptr noundef %801, ptr noundef %802, ptr noundef %808, ptr noundef %809)
  br label %810

810:                                              ; preds = %766, %752
  br label %811

811:                                              ; preds = %810, %722
  %812 = load i32, ptr %57, align 4, !tbaa !9
  %813 = sub nsw i32 %812, 1
  store i32 %813, ptr %65, align 4, !tbaa !9
  %814 = load i32, ptr %50, align 4, !tbaa !9
  %815 = icmp eq i32 %814, 1
  br i1 %815, label %816, label %832

816:                                              ; preds = %811
  %817 = load ptr, ptr %17, align 8, !tbaa !5
  %818 = load ptr, ptr %20, align 8, !tbaa !5
  %819 = load i32, ptr %57, align 4, !tbaa !9
  %820 = load i32, ptr %27, align 4, !tbaa !9
  %821 = add nsw i32 %819, %820
  %822 = sext i32 %821 to i64
  %823 = getelementptr inbounds double, ptr %818, i64 %822
  %824 = load ptr, ptr %21, align 8, !tbaa !5
  %825 = load ptr, ptr %24, align 8, !tbaa !5
  %826 = load i32, ptr %55, align 4, !tbaa !9
  %827 = load i32, ptr %65, align 4, !tbaa !9
  %828 = add nsw i32 %826, %827
  %829 = sext i32 %828 to i64
  %830 = getelementptr inbounds double, ptr %825, i64 %829
  %831 = load ptr, ptr %16, align 8, !tbaa !5
  call void @dcopy_(ptr noundef %817, ptr noundef %823, ptr noundef %824, ptr noundef %830, ptr noundef %831)
  br label %1114

832:                                              ; preds = %811
  %833 = load i32, ptr %50, align 4, !tbaa !9
  %834 = load ptr, ptr %15, align 8, !tbaa !5
  %835 = load i32, ptr %834, align 4, !tbaa !9
  %836 = icmp sle i32 %833, %835
  br i1 %836, label %837, label %898

837:                                              ; preds = %832
  %838 = load ptr, ptr %24, align 8, !tbaa !5
  %839 = load i32, ptr %58, align 4, !tbaa !9
  %840 = load i32, ptr %65, align 4, !tbaa !9
  %841 = add nsw i32 %839, %840
  %842 = sext i32 %841 to i64
  %843 = getelementptr inbounds double, ptr %838, i64 %842
  %844 = load ptr, ptr %16, align 8, !tbaa !5
  call void @dlaset_(ptr noundef @.str.2, ptr noundef %50, ptr noundef %50, ptr noundef @c_b6, ptr noundef @c_b11, ptr noundef %843, ptr noundef %844)
  %845 = load ptr, ptr %17, align 8, !tbaa !5
  %846 = load ptr, ptr %18, align 8, !tbaa !5
  %847 = load i32, ptr %57, align 4, !tbaa !9
  %848 = sext i32 %847 to i64
  %849 = getelementptr inbounds double, ptr %846, i64 %848
  %850 = load ptr, ptr %19, align 8, !tbaa !5
  %851 = load i32, ptr %57, align 4, !tbaa !9
  %852 = sext i32 %851 to i64
  %853 = getelementptr inbounds double, ptr %850, i64 %852
  %854 = load ptr, ptr %24, align 8, !tbaa !5
  %855 = load i32, ptr %58, align 4, !tbaa !9
  %856 = load i32, ptr %65, align 4, !tbaa !9
  %857 = add nsw i32 %855, %856
  %858 = sext i32 %857 to i64
  %859 = getelementptr inbounds double, ptr %854, i64 %858
  %860 = load ptr, ptr %16, align 8, !tbaa !5
  %861 = load ptr, ptr %24, align 8, !tbaa !5
  %862 = load i32, ptr %51, align 4, !tbaa !9
  %863 = sext i32 %862 to i64
  %864 = getelementptr inbounds double, ptr %861, i64 %863
  %865 = load ptr, ptr %16, align 8, !tbaa !5
  %866 = load ptr, ptr %20, align 8, !tbaa !5
  %867 = load i32, ptr %57, align 4, !tbaa !9
  %868 = load i32, ptr %27, align 4, !tbaa !9
  %869 = add nsw i32 %867, %868
  %870 = sext i32 %869 to i64
  %871 = getelementptr inbounds double, ptr %866, i64 %870
  %872 = load ptr, ptr %21, align 8, !tbaa !5
  %873 = load ptr, ptr %24, align 8, !tbaa !5
  %874 = load i32, ptr %51, align 4, !tbaa !9
  %875 = sext i32 %874 to i64
  %876 = getelementptr inbounds double, ptr %873, i64 %875
  %877 = load ptr, ptr %26, align 8, !tbaa !5
  call void @dlasdq_(ptr noundef @.str.5, ptr noundef @c__0, ptr noundef %50, ptr noundef %50, ptr noundef @c__0, ptr noundef %845, ptr noundef %849, ptr noundef %853, ptr noundef %859, ptr noundef %860, ptr noundef %864, ptr noundef %865, ptr noundef %871, ptr noundef %872, ptr noundef %876, ptr noundef %877)
  %878 = load ptr, ptr %26, align 8, !tbaa !5
  %879 = load i32, ptr %878, align 4, !tbaa !9
  %880 = icmp ne i32 %879, 0
  br i1 %880, label %881, label %882

881:                                              ; preds = %837
  store i32 1, ptr %69, align 4
  br label %1413

882:                                              ; preds = %837
  %883 = load ptr, ptr %17, align 8, !tbaa !5
  %884 = load ptr, ptr %20, align 8, !tbaa !5
  %885 = load i32, ptr %57, align 4, !tbaa !9
  %886 = load i32, ptr %27, align 4, !tbaa !9
  %887 = add nsw i32 %885, %886
  %888 = sext i32 %887 to i64
  %889 = getelementptr inbounds double, ptr %884, i64 %888
  %890 = load ptr, ptr %21, align 8, !tbaa !5
  %891 = load ptr, ptr %24, align 8, !tbaa !5
  %892 = load i32, ptr %55, align 4, !tbaa !9
  %893 = load i32, ptr %65, align 4, !tbaa !9
  %894 = add nsw i32 %892, %893
  %895 = sext i32 %894 to i64
  %896 = getelementptr inbounds double, ptr %891, i64 %895
  %897 = load ptr, ptr %16, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str.2, ptr noundef %50, ptr noundef %883, ptr noundef %889, ptr noundef %890, ptr noundef %896, ptr noundef %897)
  br label %1113

898:                                              ; preds = %832
  %899 = load ptr, ptr %15, align 8, !tbaa !5
  %900 = load ptr, ptr %18, align 8, !tbaa !5
  %901 = load i32, ptr %57, align 4, !tbaa !9
  %902 = sext i32 %901 to i64
  %903 = getelementptr inbounds double, ptr %900, i64 %902
  %904 = load ptr, ptr %19, align 8, !tbaa !5
  %905 = load i32, ptr %57, align 4, !tbaa !9
  %906 = sext i32 %905 to i64
  %907 = getelementptr inbounds double, ptr %904, i64 %906
  %908 = load ptr, ptr %24, align 8, !tbaa !5
  %909 = load i32, ptr %46, align 4, !tbaa !9
  %910 = load i32, ptr %65, align 4, !tbaa !9
  %911 = add nsw i32 %909, %910
  %912 = sext i32 %911 to i64
  %913 = getelementptr inbounds double, ptr %908, i64 %912
  %914 = load ptr, ptr %16, align 8, !tbaa !5
  %915 = load ptr, ptr %24, align 8, !tbaa !5
  %916 = load i32, ptr %58, align 4, !tbaa !9
  %917 = load i32, ptr %65, align 4, !tbaa !9
  %918 = add nsw i32 %916, %917
  %919 = sext i32 %918 to i64
  %920 = getelementptr inbounds double, ptr %915, i64 %919
  %921 = load ptr, ptr %25, align 8, !tbaa !5
  %922 = load i32, ptr %43, align 4, !tbaa !9
  %923 = load i32, ptr %65, align 4, !tbaa !9
  %924 = add nsw i32 %922, %923
  %925 = sext i32 %924 to i64
  %926 = getelementptr inbounds i32, ptr %921, i64 %925
  %927 = load ptr, ptr %24, align 8, !tbaa !5
  %928 = load i32, ptr %32, align 4, !tbaa !9
  %929 = load i32, ptr %65, align 4, !tbaa !9
  %930 = add nsw i32 %928, %929
  %931 = sext i32 %930 to i64
  %932 = getelementptr inbounds double, ptr %927, i64 %931
  %933 = load ptr, ptr %24, align 8, !tbaa !5
  %934 = load i32, ptr %33, align 4, !tbaa !9
  %935 = load i32, ptr %65, align 4, !tbaa !9
  %936 = add nsw i32 %934, %935
  %937 = sext i32 %936 to i64
  %938 = getelementptr inbounds double, ptr %933, i64 %937
  %939 = load ptr, ptr %24, align 8, !tbaa !5
  %940 = load i32, ptr %47, align 4, !tbaa !9
  %941 = load i32, ptr %65, align 4, !tbaa !9
  %942 = add nsw i32 %940, %941
  %943 = sext i32 %942 to i64
  %944 = getelementptr inbounds double, ptr %939, i64 %943
  %945 = load ptr, ptr %24, align 8, !tbaa !5
  %946 = load i32, ptr %48, align 4, !tbaa !9
  %947 = load i32, ptr %65, align 4, !tbaa !9
  %948 = add nsw i32 %946, %947
  %949 = sext i32 %948 to i64
  %950 = getelementptr inbounds double, ptr %945, i64 %949
  %951 = load ptr, ptr %25, align 8, !tbaa !5
  %952 = load i32, ptr %62, align 4, !tbaa !9
  %953 = load i32, ptr %65, align 4, !tbaa !9
  %954 = add nsw i32 %952, %953
  %955 = sext i32 %954 to i64
  %956 = getelementptr inbounds i32, ptr %951, i64 %955
  %957 = load ptr, ptr %25, align 8, !tbaa !5
  %958 = load i32, ptr %59, align 4, !tbaa !9
  %959 = load i32, ptr %65, align 4, !tbaa !9
  %960 = add nsw i32 %958, %959
  %961 = sext i32 %960 to i64
  %962 = getelementptr inbounds i32, ptr %957, i64 %961
  %963 = load ptr, ptr %16, align 8, !tbaa !5
  %964 = load ptr, ptr %25, align 8, !tbaa !5
  %965 = load i32, ptr %35, align 4, !tbaa !9
  %966 = load i32, ptr %65, align 4, !tbaa !9
  %967 = add nsw i32 %965, %966
  %968 = sext i32 %967 to i64
  %969 = getelementptr inbounds i32, ptr %964, i64 %968
  %970 = load ptr, ptr %24, align 8, !tbaa !5
  %971 = load i32, ptr %61, align 4, !tbaa !9
  %972 = load i32, ptr %65, align 4, !tbaa !9
  %973 = add nsw i32 %971, %972
  %974 = sext i32 %973 to i64
  %975 = getelementptr inbounds double, ptr %970, i64 %974
  %976 = load ptr, ptr %24, align 8, !tbaa !5
  %977 = load i32, ptr %40, align 4, !tbaa !9
  %978 = load i32, ptr %65, align 4, !tbaa !9
  %979 = add nsw i32 %977, %978
  %980 = sext i32 %979 to i64
  %981 = getelementptr inbounds double, ptr %976, i64 %980
  %982 = load ptr, ptr %24, align 8, !tbaa !5
  %983 = load i32, ptr %45, align 4, !tbaa !9
  %984 = load i32, ptr %65, align 4, !tbaa !9
  %985 = add nsw i32 %983, %984
  %986 = sext i32 %985 to i64
  %987 = getelementptr inbounds double, ptr %982, i64 %986
  %988 = load ptr, ptr %24, align 8, !tbaa !5
  %989 = load i32, ptr %51, align 4, !tbaa !9
  %990 = sext i32 %989 to i64
  %991 = getelementptr inbounds double, ptr %988, i64 %990
  %992 = load ptr, ptr %25, align 8, !tbaa !5
  %993 = load i32, ptr %67, align 4, !tbaa !9
  %994 = sext i32 %993 to i64
  %995 = getelementptr inbounds i32, ptr %992, i64 %994
  %996 = load ptr, ptr %26, align 8, !tbaa !5
  call void @dlasda_(ptr noundef %52, ptr noundef %899, ptr noundef %50, ptr noundef %38, ptr noundef %903, ptr noundef %907, ptr noundef %913, ptr noundef %914, ptr noundef %920, ptr noundef %926, ptr noundef %932, ptr noundef %938, ptr noundef %944, ptr noundef %950, ptr noundef %956, ptr noundef %962, ptr noundef %963, ptr noundef %969, ptr noundef %975, ptr noundef %981, ptr noundef %987, ptr noundef %991, ptr noundef %995, ptr noundef %996)
  %997 = load ptr, ptr %26, align 8, !tbaa !5
  %998 = load i32, ptr %997, align 4, !tbaa !9
  %999 = icmp ne i32 %998, 0
  br i1 %999, label %1000, label %1001

1000:                                             ; preds = %898
  store i32 1, ptr %69, align 4
  br label %1413

1001:                                             ; preds = %898
  %1002 = load i32, ptr %55, align 4, !tbaa !9
  %1003 = load i32, ptr %65, align 4, !tbaa !9
  %1004 = add nsw i32 %1002, %1003
  store i32 %1004, ptr %39, align 4, !tbaa !9
  %1005 = load ptr, ptr %15, align 8, !tbaa !5
  %1006 = load ptr, ptr %17, align 8, !tbaa !5
  %1007 = load ptr, ptr %20, align 8, !tbaa !5
  %1008 = load i32, ptr %57, align 4, !tbaa !9
  %1009 = load i32, ptr %27, align 4, !tbaa !9
  %1010 = add nsw i32 %1008, %1009
  %1011 = sext i32 %1010 to i64
  %1012 = getelementptr inbounds double, ptr %1007, i64 %1011
  %1013 = load ptr, ptr %21, align 8, !tbaa !5
  %1014 = load ptr, ptr %24, align 8, !tbaa !5
  %1015 = load i32, ptr %39, align 4, !tbaa !9
  %1016 = sext i32 %1015 to i64
  %1017 = getelementptr inbounds double, ptr %1014, i64 %1016
  %1018 = load ptr, ptr %16, align 8, !tbaa !5
  %1019 = load ptr, ptr %24, align 8, !tbaa !5
  %1020 = load i32, ptr %46, align 4, !tbaa !9
  %1021 = load i32, ptr %65, align 4, !tbaa !9
  %1022 = add nsw i32 %1020, %1021
  %1023 = sext i32 %1022 to i64
  %1024 = getelementptr inbounds double, ptr %1019, i64 %1023
  %1025 = load ptr, ptr %16, align 8, !tbaa !5
  %1026 = load ptr, ptr %24, align 8, !tbaa !5
  %1027 = load i32, ptr %58, align 4, !tbaa !9
  %1028 = load i32, ptr %65, align 4, !tbaa !9
  %1029 = add nsw i32 %1027, %1028
  %1030 = sext i32 %1029 to i64
  %1031 = getelementptr inbounds double, ptr %1026, i64 %1030
  %1032 = load ptr, ptr %25, align 8, !tbaa !5
  %1033 = load i32, ptr %43, align 4, !tbaa !9
  %1034 = load i32, ptr %65, align 4, !tbaa !9
  %1035 = add nsw i32 %1033, %1034
  %1036 = sext i32 %1035 to i64
  %1037 = getelementptr inbounds i32, ptr %1032, i64 %1036
  %1038 = load ptr, ptr %24, align 8, !tbaa !5
  %1039 = load i32, ptr %32, align 4, !tbaa !9
  %1040 = load i32, ptr %65, align 4, !tbaa !9
  %1041 = add nsw i32 %1039, %1040
  %1042 = sext i32 %1041 to i64
  %1043 = getelementptr inbounds double, ptr %1038, i64 %1042
  %1044 = load ptr, ptr %24, align 8, !tbaa !5
  %1045 = load i32, ptr %33, align 4, !tbaa !9
  %1046 = load i32, ptr %65, align 4, !tbaa !9
  %1047 = add nsw i32 %1045, %1046
  %1048 = sext i32 %1047 to i64
  %1049 = getelementptr inbounds double, ptr %1044, i64 %1048
  %1050 = load ptr, ptr %24, align 8, !tbaa !5
  %1051 = load i32, ptr %47, align 4, !tbaa !9
  %1052 = load i32, ptr %65, align 4, !tbaa !9
  %1053 = add nsw i32 %1051, %1052
  %1054 = sext i32 %1053 to i64
  %1055 = getelementptr inbounds double, ptr %1050, i64 %1054
  %1056 = load ptr, ptr %24, align 8, !tbaa !5
  %1057 = load i32, ptr %48, align 4, !tbaa !9
  %1058 = load i32, ptr %65, align 4, !tbaa !9
  %1059 = add nsw i32 %1057, %1058
  %1060 = sext i32 %1059 to i64
  %1061 = getelementptr inbounds double, ptr %1056, i64 %1060
  %1062 = load ptr, ptr %25, align 8, !tbaa !5
  %1063 = load i32, ptr %62, align 4, !tbaa !9
  %1064 = load i32, ptr %65, align 4, !tbaa !9
  %1065 = add nsw i32 %1063, %1064
  %1066 = sext i32 %1065 to i64
  %1067 = getelementptr inbounds i32, ptr %1062, i64 %1066
  %1068 = load ptr, ptr %25, align 8, !tbaa !5
  %1069 = load i32, ptr %59, align 4, !tbaa !9
  %1070 = load i32, ptr %65, align 4, !tbaa !9
  %1071 = add nsw i32 %1069, %1070
  %1072 = sext i32 %1071 to i64
  %1073 = getelementptr inbounds i32, ptr %1068, i64 %1072
  %1074 = load ptr, ptr %16, align 8, !tbaa !5
  %1075 = load ptr, ptr %25, align 8, !tbaa !5
  %1076 = load i32, ptr %35, align 4, !tbaa !9
  %1077 = load i32, ptr %65, align 4, !tbaa !9
  %1078 = add nsw i32 %1076, %1077
  %1079 = sext i32 %1078 to i64
  %1080 = getelementptr inbounds i32, ptr %1075, i64 %1079
  %1081 = load ptr, ptr %24, align 8, !tbaa !5
  %1082 = load i32, ptr %61, align 4, !tbaa !9
  %1083 = load i32, ptr %65, align 4, !tbaa !9
  %1084 = add nsw i32 %1082, %1083
  %1085 = sext i32 %1084 to i64
  %1086 = getelementptr inbounds double, ptr %1081, i64 %1085
  %1087 = load ptr, ptr %24, align 8, !tbaa !5
  %1088 = load i32, ptr %40, align 4, !tbaa !9
  %1089 = load i32, ptr %65, align 4, !tbaa !9
  %1090 = add nsw i32 %1088, %1089
  %1091 = sext i32 %1090 to i64
  %1092 = getelementptr inbounds double, ptr %1087, i64 %1091
  %1093 = load ptr, ptr %24, align 8, !tbaa !5
  %1094 = load i32, ptr %45, align 4, !tbaa !9
  %1095 = load i32, ptr %65, align 4, !tbaa !9
  %1096 = add nsw i32 %1094, %1095
  %1097 = sext i32 %1096 to i64
  %1098 = getelementptr inbounds double, ptr %1093, i64 %1097
  %1099 = load ptr, ptr %24, align 8, !tbaa !5
  %1100 = load i32, ptr %51, align 4, !tbaa !9
  %1101 = sext i32 %1100 to i64
  %1102 = getelementptr inbounds double, ptr %1099, i64 %1101
  %1103 = load ptr, ptr %25, align 8, !tbaa !5
  %1104 = load i32, ptr %67, align 4, !tbaa !9
  %1105 = sext i32 %1104 to i64
  %1106 = getelementptr inbounds i32, ptr %1103, i64 %1105
  %1107 = load ptr, ptr %26, align 8, !tbaa !5
  call void @dlalsa_(ptr noundef %53, ptr noundef %1005, ptr noundef %50, ptr noundef %1006, ptr noundef %1012, ptr noundef %1013, ptr noundef %1017, ptr noundef %1018, ptr noundef %1024, ptr noundef %1025, ptr noundef %1031, ptr noundef %1037, ptr noundef %1043, ptr noundef %1049, ptr noundef %1055, ptr noundef %1061, ptr noundef %1067, ptr noundef %1073, ptr noundef %1074, ptr noundef %1080, ptr noundef %1086, ptr noundef %1092, ptr noundef %1098, ptr noundef %1102, ptr noundef %1106, ptr noundef %1107)
  %1108 = load ptr, ptr %26, align 8, !tbaa !5
  %1109 = load i32, ptr %1108, align 4, !tbaa !9
  %1110 = icmp ne i32 %1109, 0
  br i1 %1110, label %1111, label %1112

1111:                                             ; preds = %1001
  store i32 1, ptr %69, align 4
  br label %1413

1112:                                             ; preds = %1001
  br label %1113

1113:                                             ; preds = %1112, %882
  br label %1114

1114:                                             ; preds = %1113, %816
  %1115 = load i32, ptr %41, align 4, !tbaa !9
  %1116 = add nsw i32 %1115, 1
  store i32 %1116, ptr %57, align 4, !tbaa !9
  br label %1117

1117:                                             ; preds = %1114, %707
  br label %1118

1118:                                             ; preds = %1117
  %1119 = load i32, ptr %41, align 4, !tbaa !9
  %1120 = add nsw i32 %1119, 1
  store i32 %1120, ptr %41, align 4, !tbaa !9
  br label %686, !llvm.loop !20

1121:                                             ; preds = %686
  %1122 = load double, ptr %34, align 8, !tbaa !11
  %1123 = load ptr, ptr %18, align 8, !tbaa !5
  %1124 = load ptr, ptr %16, align 8, !tbaa !5
  %1125 = load ptr, ptr %18, align 8, !tbaa !5
  %1126 = getelementptr inbounds double, ptr %1125, i64 1
  %1127 = call i32 @idamax_(ptr noundef %1124, ptr noundef %1126, ptr noundef @c__1)
  %1128 = sext i32 %1127 to i64
  %1129 = getelementptr inbounds double, ptr %1123, i64 %1128
  %1130 = load double, ptr %1129, align 8, !tbaa !11
  store double %1130, ptr %31, align 8, !tbaa !11
  %1131 = load double, ptr %31, align 8, !tbaa !11
  %1132 = fcmp oge double %1131, 0.000000e+00
  br i1 %1132, label %1133, label %1135

1133:                                             ; preds = %1121
  %1134 = load double, ptr %31, align 8, !tbaa !11
  br label %1138

1135:                                             ; preds = %1121
  %1136 = load double, ptr %31, align 8, !tbaa !11
  %1137 = fneg double %1136
  br label %1138

1138:                                             ; preds = %1135, %1133
  %1139 = phi double [ %1134, %1133 ], [ %1137, %1135 ]
  %1140 = fmul double %1122, %1139
  store double %1140, ptr %68, align 8, !tbaa !11
  %1141 = load ptr, ptr %16, align 8, !tbaa !5
  %1142 = load i32, ptr %1141, align 4, !tbaa !9
  store i32 %1142, ptr %29, align 4, !tbaa !9
  store i32 1, ptr %41, align 4, !tbaa !9
  br label %1143

1143:                                             ; preds = %1211, %1138
  %1144 = load i32, ptr %41, align 4, !tbaa !9
  %1145 = load i32, ptr %29, align 4, !tbaa !9
  %1146 = icmp sle i32 %1144, %1145
  br i1 %1146, label %1147, label %1214

1147:                                             ; preds = %1143
  %1148 = load ptr, ptr %18, align 8, !tbaa !5
  %1149 = load i32, ptr %41, align 4, !tbaa !9
  %1150 = sext i32 %1149 to i64
  %1151 = getelementptr inbounds double, ptr %1148, i64 %1150
  %1152 = load double, ptr %1151, align 8, !tbaa !11
  store double %1152, ptr %31, align 8, !tbaa !11
  %1153 = load double, ptr %31, align 8, !tbaa !11
  %1154 = fcmp oge double %1153, 0.000000e+00
  br i1 %1154, label %1155, label %1157

1155:                                             ; preds = %1147
  %1156 = load double, ptr %31, align 8, !tbaa !11
  br label %1160

1157:                                             ; preds = %1147
  %1158 = load double, ptr %31, align 8, !tbaa !11
  %1159 = fneg double %1158
  br label %1160

1160:                                             ; preds = %1157, %1155
  %1161 = phi double [ %1156, %1155 ], [ %1159, %1157 ]
  %1162 = load double, ptr %68, align 8, !tbaa !11
  %1163 = fcmp ole double %1161, %1162
  br i1 %1163, label %1164, label %1174

1164:                                             ; preds = %1160
  %1165 = load ptr, ptr %17, align 8, !tbaa !5
  %1166 = load ptr, ptr %24, align 8, !tbaa !5
  %1167 = load i32, ptr %55, align 4, !tbaa !9
  %1168 = load i32, ptr %41, align 4, !tbaa !9
  %1169 = add nsw i32 %1167, %1168
  %1170 = sub nsw i32 %1169, 1
  %1171 = sext i32 %1170 to i64
  %1172 = getelementptr inbounds double, ptr %1166, i64 %1171
  %1173 = load ptr, ptr %16, align 8, !tbaa !5
  call void @dlaset_(ptr noundef @.str.2, ptr noundef @c__1, ptr noundef %1165, ptr noundef @c_b6, ptr noundef @c_b6, ptr noundef %1172, ptr noundef %1173)
  br label %1192

1174:                                             ; preds = %1160
  %1175 = load ptr, ptr %23, align 8, !tbaa !5
  %1176 = load i32, ptr %1175, align 4, !tbaa !9
  %1177 = add nsw i32 %1176, 1
  store i32 %1177, ptr %1175, align 4, !tbaa !9
  %1178 = load ptr, ptr %18, align 8, !tbaa !5
  %1179 = load i32, ptr %41, align 4, !tbaa !9
  %1180 = sext i32 %1179 to i64
  %1181 = getelementptr inbounds double, ptr %1178, i64 %1180
  %1182 = load ptr, ptr %17, align 8, !tbaa !5
  %1183 = load ptr, ptr %24, align 8, !tbaa !5
  %1184 = load i32, ptr %55, align 4, !tbaa !9
  %1185 = load i32, ptr %41, align 4, !tbaa !9
  %1186 = add nsw i32 %1184, %1185
  %1187 = sub nsw i32 %1186, 1
  %1188 = sext i32 %1187 to i64
  %1189 = getelementptr inbounds double, ptr %1183, i64 %1188
  %1190 = load ptr, ptr %16, align 8, !tbaa !5
  %1191 = load ptr, ptr %26, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %1181, ptr noundef @c_b11, ptr noundef @c__1, ptr noundef %1182, ptr noundef %1189, ptr noundef %1190, ptr noundef %1191)
  br label %1192

1192:                                             ; preds = %1174, %1164
  %1193 = load ptr, ptr %18, align 8, !tbaa !5
  %1194 = load i32, ptr %41, align 4, !tbaa !9
  %1195 = sext i32 %1194 to i64
  %1196 = getelementptr inbounds double, ptr %1193, i64 %1195
  %1197 = load double, ptr %1196, align 8, !tbaa !11
  store double %1197, ptr %31, align 8, !tbaa !11
  %1198 = load double, ptr %31, align 8, !tbaa !11
  %1199 = fcmp oge double %1198, 0.000000e+00
  br i1 %1199, label %1200, label %1202

1200:                                             ; preds = %1192
  %1201 = load double, ptr %31, align 8, !tbaa !11
  br label %1205

1202:                                             ; preds = %1192
  %1203 = load double, ptr %31, align 8, !tbaa !11
  %1204 = fneg double %1203
  br label %1205

1205:                                             ; preds = %1202, %1200
  %1206 = phi double [ %1201, %1200 ], [ %1204, %1202 ]
  %1207 = load ptr, ptr %18, align 8, !tbaa !5
  %1208 = load i32, ptr %41, align 4, !tbaa !9
  %1209 = sext i32 %1208 to i64
  %1210 = getelementptr inbounds double, ptr %1207, i64 %1209
  store double %1206, ptr %1210, align 8, !tbaa !11
  br label %1211

1211:                                             ; preds = %1205
  %1212 = load i32, ptr %41, align 4, !tbaa !9
  %1213 = add nsw i32 %1212, 1
  store i32 %1213, ptr %41, align 4, !tbaa !9
  br label %1143, !llvm.loop !21

1214:                                             ; preds = %1143
  store i32 1, ptr %53, align 4, !tbaa !9
  %1215 = load i32, ptr %36, align 4, !tbaa !9
  store i32 %1215, ptr %29, align 4, !tbaa !9
  store i32 1, ptr %41, align 4, !tbaa !9
  br label %1216

1216:                                             ; preds = %1392, %1214
  %1217 = load i32, ptr %41, align 4, !tbaa !9
  %1218 = load i32, ptr %29, align 4, !tbaa !9
  %1219 = icmp sle i32 %1217, %1218
  br i1 %1219, label %1220, label %1395

1220:                                             ; preds = %1216
  %1221 = load ptr, ptr %25, align 8, !tbaa !5
  %1222 = load i32, ptr %41, align 4, !tbaa !9
  %1223 = sext i32 %1222 to i64
  %1224 = getelementptr inbounds i32, ptr %1221, i64 %1223
  %1225 = load i32, ptr %1224, align 4, !tbaa !9
  store i32 %1225, ptr %57, align 4, !tbaa !9
  %1226 = load i32, ptr %57, align 4, !tbaa !9
  %1227 = sub nsw i32 %1226, 1
  store i32 %1227, ptr %65, align 4, !tbaa !9
  %1228 = load ptr, ptr %25, align 8, !tbaa !5
  %1229 = load i32, ptr %49, align 4, !tbaa !9
  %1230 = load i32, ptr %41, align 4, !tbaa !9
  %1231 = add nsw i32 %1229, %1230
  %1232 = sub nsw i32 %1231, 1
  %1233 = sext i32 %1232 to i64
  %1234 = getelementptr inbounds i32, ptr %1228, i64 %1233
  %1235 = load i32, ptr %1234, align 4, !tbaa !9
  store i32 %1235, ptr %50, align 4, !tbaa !9
  %1236 = load i32, ptr %55, align 4, !tbaa !9
  %1237 = load i32, ptr %65, align 4, !tbaa !9
  %1238 = add nsw i32 %1236, %1237
  store i32 %1238, ptr %39, align 4, !tbaa !9
  %1239 = load i32, ptr %50, align 4, !tbaa !9
  %1240 = icmp eq i32 %1239, 1
  br i1 %1240, label %1241, label %1255

1241:                                             ; preds = %1220
  %1242 = load ptr, ptr %17, align 8, !tbaa !5
  %1243 = load ptr, ptr %24, align 8, !tbaa !5
  %1244 = load i32, ptr %39, align 4, !tbaa !9
  %1245 = sext i32 %1244 to i64
  %1246 = getelementptr inbounds double, ptr %1243, i64 %1245
  %1247 = load ptr, ptr %16, align 8, !tbaa !5
  %1248 = load ptr, ptr %20, align 8, !tbaa !5
  %1249 = load i32, ptr %57, align 4, !tbaa !9
  %1250 = load i32, ptr %27, align 4, !tbaa !9
  %1251 = add nsw i32 %1249, %1250
  %1252 = sext i32 %1251 to i64
  %1253 = getelementptr inbounds double, ptr %1248, i64 %1252
  %1254 = load ptr, ptr %21, align 8, !tbaa !5
  call void @dcopy_(ptr noundef %1242, ptr noundef %1246, ptr noundef %1247, ptr noundef %1253, ptr noundef %1254)
  br label %1391

1255:                                             ; preds = %1220
  %1256 = load i32, ptr %50, align 4, !tbaa !9
  %1257 = load ptr, ptr %15, align 8, !tbaa !5
  %1258 = load i32, ptr %1257, align 4, !tbaa !9
  %1259 = icmp sle i32 %1256, %1258
  br i1 %1259, label %1260, label %1281

1260:                                             ; preds = %1255
  %1261 = load ptr, ptr %17, align 8, !tbaa !5
  %1262 = load ptr, ptr %24, align 8, !tbaa !5
  %1263 = load i32, ptr %58, align 4, !tbaa !9
  %1264 = load i32, ptr %65, align 4, !tbaa !9
  %1265 = add nsw i32 %1263, %1264
  %1266 = sext i32 %1265 to i64
  %1267 = getelementptr inbounds double, ptr %1262, i64 %1266
  %1268 = load ptr, ptr %16, align 8, !tbaa !5
  %1269 = load ptr, ptr %24, align 8, !tbaa !5
  %1270 = load i32, ptr %39, align 4, !tbaa !9
  %1271 = sext i32 %1270 to i64
  %1272 = getelementptr inbounds double, ptr %1269, i64 %1271
  %1273 = load ptr, ptr %16, align 8, !tbaa !5
  %1274 = load ptr, ptr %20, align 8, !tbaa !5
  %1275 = load i32, ptr %57, align 4, !tbaa !9
  %1276 = load i32, ptr %27, align 4, !tbaa !9
  %1277 = add nsw i32 %1275, %1276
  %1278 = sext i32 %1277 to i64
  %1279 = getelementptr inbounds double, ptr %1274, i64 %1278
  %1280 = load ptr, ptr %21, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %50, ptr noundef %1261, ptr noundef %50, ptr noundef @c_b11, ptr noundef %1267, ptr noundef %1268, ptr noundef %1272, ptr noundef %1273, ptr noundef @c_b6, ptr noundef %1279, ptr noundef %1280)
  br label %1390

1281:                                             ; preds = %1255
  %1282 = load ptr, ptr %15, align 8, !tbaa !5
  %1283 = load ptr, ptr %17, align 8, !tbaa !5
  %1284 = load ptr, ptr %24, align 8, !tbaa !5
  %1285 = load i32, ptr %39, align 4, !tbaa !9
  %1286 = sext i32 %1285 to i64
  %1287 = getelementptr inbounds double, ptr %1284, i64 %1286
  %1288 = load ptr, ptr %16, align 8, !tbaa !5
  %1289 = load ptr, ptr %20, align 8, !tbaa !5
  %1290 = load i32, ptr %57, align 4, !tbaa !9
  %1291 = load i32, ptr %27, align 4, !tbaa !9
  %1292 = add nsw i32 %1290, %1291
  %1293 = sext i32 %1292 to i64
  %1294 = getelementptr inbounds double, ptr %1289, i64 %1293
  %1295 = load ptr, ptr %21, align 8, !tbaa !5
  %1296 = load ptr, ptr %24, align 8, !tbaa !5
  %1297 = load i32, ptr %46, align 4, !tbaa !9
  %1298 = load i32, ptr %65, align 4, !tbaa !9
  %1299 = add nsw i32 %1297, %1298
  %1300 = sext i32 %1299 to i64
  %1301 = getelementptr inbounds double, ptr %1296, i64 %1300
  %1302 = load ptr, ptr %16, align 8, !tbaa !5
  %1303 = load ptr, ptr %24, align 8, !tbaa !5
  %1304 = load i32, ptr %58, align 4, !tbaa !9
  %1305 = load i32, ptr %65, align 4, !tbaa !9
  %1306 = add nsw i32 %1304, %1305
  %1307 = sext i32 %1306 to i64
  %1308 = getelementptr inbounds double, ptr %1303, i64 %1307
  %1309 = load ptr, ptr %25, align 8, !tbaa !5
  %1310 = load i32, ptr %43, align 4, !tbaa !9
  %1311 = load i32, ptr %65, align 4, !tbaa !9
  %1312 = add nsw i32 %1310, %1311
  %1313 = sext i32 %1312 to i64
  %1314 = getelementptr inbounds i32, ptr %1309, i64 %1313
  %1315 = load ptr, ptr %24, align 8, !tbaa !5
  %1316 = load i32, ptr %32, align 4, !tbaa !9
  %1317 = load i32, ptr %65, align 4, !tbaa !9
  %1318 = add nsw i32 %1316, %1317
  %1319 = sext i32 %1318 to i64
  %1320 = getelementptr inbounds double, ptr %1315, i64 %1319
  %1321 = load ptr, ptr %24, align 8, !tbaa !5
  %1322 = load i32, ptr %33, align 4, !tbaa !9
  %1323 = load i32, ptr %65, align 4, !tbaa !9
  %1324 = add nsw i32 %1322, %1323
  %1325 = sext i32 %1324 to i64
  %1326 = getelementptr inbounds double, ptr %1321, i64 %1325
  %1327 = load ptr, ptr %24, align 8, !tbaa !5
  %1328 = load i32, ptr %47, align 4, !tbaa !9
  %1329 = load i32, ptr %65, align 4, !tbaa !9
  %1330 = add nsw i32 %1328, %1329
  %1331 = sext i32 %1330 to i64
  %1332 = getelementptr inbounds double, ptr %1327, i64 %1331
  %1333 = load ptr, ptr %24, align 8, !tbaa !5
  %1334 = load i32, ptr %48, align 4, !tbaa !9
  %1335 = load i32, ptr %65, align 4, !tbaa !9
  %1336 = add nsw i32 %1334, %1335
  %1337 = sext i32 %1336 to i64
  %1338 = getelementptr inbounds double, ptr %1333, i64 %1337
  %1339 = load ptr, ptr %25, align 8, !tbaa !5
  %1340 = load i32, ptr %62, align 4, !tbaa !9
  %1341 = load i32, ptr %65, align 4, !tbaa !9
  %1342 = add nsw i32 %1340, %1341
  %1343 = sext i32 %1342 to i64
  %1344 = getelementptr inbounds i32, ptr %1339, i64 %1343
  %1345 = load ptr, ptr %25, align 8, !tbaa !5
  %1346 = load i32, ptr %59, align 4, !tbaa !9
  %1347 = load i32, ptr %65, align 4, !tbaa !9
  %1348 = add nsw i32 %1346, %1347
  %1349 = sext i32 %1348 to i64
  %1350 = getelementptr inbounds i32, ptr %1345, i64 %1349
  %1351 = load ptr, ptr %16, align 8, !tbaa !5
  %1352 = load ptr, ptr %25, align 8, !tbaa !5
  %1353 = load i32, ptr %35, align 4, !tbaa !9
  %1354 = load i32, ptr %65, align 4, !tbaa !9
  %1355 = add nsw i32 %1353, %1354
  %1356 = sext i32 %1355 to i64
  %1357 = getelementptr inbounds i32, ptr %1352, i64 %1356
  %1358 = load ptr, ptr %24, align 8, !tbaa !5
  %1359 = load i32, ptr %61, align 4, !tbaa !9
  %1360 = load i32, ptr %65, align 4, !tbaa !9
  %1361 = add nsw i32 %1359, %1360
  %1362 = sext i32 %1361 to i64
  %1363 = getelementptr inbounds double, ptr %1358, i64 %1362
  %1364 = load ptr, ptr %24, align 8, !tbaa !5
  %1365 = load i32, ptr %40, align 4, !tbaa !9
  %1366 = load i32, ptr %65, align 4, !tbaa !9
  %1367 = add nsw i32 %1365, %1366
  %1368 = sext i32 %1367 to i64
  %1369 = getelementptr inbounds double, ptr %1364, i64 %1368
  %1370 = load ptr, ptr %24, align 8, !tbaa !5
  %1371 = load i32, ptr %45, align 4, !tbaa !9
  %1372 = load i32, ptr %65, align 4, !tbaa !9
  %1373 = add nsw i32 %1371, %1372
  %1374 = sext i32 %1373 to i64
  %1375 = getelementptr inbounds double, ptr %1370, i64 %1374
  %1376 = load ptr, ptr %24, align 8, !tbaa !5
  %1377 = load i32, ptr %51, align 4, !tbaa !9
  %1378 = sext i32 %1377 to i64
  %1379 = getelementptr inbounds double, ptr %1376, i64 %1378
  %1380 = load ptr, ptr %25, align 8, !tbaa !5
  %1381 = load i32, ptr %67, align 4, !tbaa !9
  %1382 = sext i32 %1381 to i64
  %1383 = getelementptr inbounds i32, ptr %1380, i64 %1382
  %1384 = load ptr, ptr %26, align 8, !tbaa !5
  call void @dlalsa_(ptr noundef %53, ptr noundef %1282, ptr noundef %50, ptr noundef %1283, ptr noundef %1287, ptr noundef %1288, ptr noundef %1294, ptr noundef %1295, ptr noundef %1301, ptr noundef %1302, ptr noundef %1308, ptr noundef %1314, ptr noundef %1320, ptr noundef %1326, ptr noundef %1332, ptr noundef %1338, ptr noundef %1344, ptr noundef %1350, ptr noundef %1351, ptr noundef %1357, ptr noundef %1363, ptr noundef %1369, ptr noundef %1375, ptr noundef %1379, ptr noundef %1383, ptr noundef %1384)
  %1385 = load ptr, ptr %26, align 8, !tbaa !5
  %1386 = load i32, ptr %1385, align 4, !tbaa !9
  %1387 = icmp ne i32 %1386, 0
  br i1 %1387, label %1388, label %1389

1388:                                             ; preds = %1281
  store i32 1, ptr %69, align 4
  br label %1413

1389:                                             ; preds = %1281
  br label %1390

1390:                                             ; preds = %1389, %1260
  br label %1391

1391:                                             ; preds = %1390, %1241
  br label %1392

1392:                                             ; preds = %1391
  %1393 = load i32, ptr %41, align 4, !tbaa !9
  %1394 = add nsw i32 %1393, 1
  store i32 %1394, ptr %41, align 4, !tbaa !9
  br label %1216, !llvm.loop !22

1395:                                             ; preds = %1216
  %1396 = load ptr, ptr %16, align 8, !tbaa !5
  %1397 = load ptr, ptr %18, align 8, !tbaa !5
  %1398 = getelementptr inbounds double, ptr %1397, i64 1
  %1399 = load ptr, ptr %16, align 8, !tbaa !5
  %1400 = load ptr, ptr %26, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef @c_b11, ptr noundef %60, ptr noundef %1396, ptr noundef @c__1, ptr noundef %1398, ptr noundef %1399, ptr noundef %1400)
  %1401 = load ptr, ptr %16, align 8, !tbaa !5
  %1402 = load ptr, ptr %18, align 8, !tbaa !5
  %1403 = getelementptr inbounds double, ptr %1402, i64 1
  %1404 = load ptr, ptr %26, align 8, !tbaa !5
  call void @dlasrt_(ptr noundef @.str.8, ptr noundef %1401, ptr noundef %1403, ptr noundef %1404)
  %1405 = load ptr, ptr %16, align 8, !tbaa !5
  %1406 = load ptr, ptr %17, align 8, !tbaa !5
  %1407 = load ptr, ptr %20, align 8, !tbaa !5
  %1408 = load i32, ptr %28, align 4, !tbaa !9
  %1409 = sext i32 %1408 to i64
  %1410 = getelementptr inbounds double, ptr %1407, i64 %1409
  %1411 = load ptr, ptr %21, align 8, !tbaa !5
  %1412 = load ptr, ptr %26, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %60, ptr noundef @c_b11, ptr noundef %1405, ptr noundef %1406, ptr noundef %1410, ptr noundef %1411, ptr noundef %1412)
  store i32 1, ptr %69, align 4
  br label %1413

1413:                                             ; preds = %1395, %1388, %1111, %1000, %881, %472, %407, %347, %187, %142, %118
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #4
  ret void
}

; 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, i32 noundef) #2

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

declare void @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 void @dlacpy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

declare void @dcopy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @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 void @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 = !{!"int", !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 i32, align 4
@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 i32, align 4
@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 void @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 i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca double, align 8
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca double, align 8
  %21 = alloca double, align 8
  %22 = alloca double, align 8
  %23 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #4
  call void @llvm.lifetime.start.p0(i64 4, 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 4, ptr nonnull %23) #4
  %24 = getelementptr inbounds i8, ptr %4, i64 -8
  %25 = getelementptr inbounds i8, ptr %5, i64 -8
  %26 = load i32, ptr %7, align 4, !tbaa !5
  %narrow = xor i32 %26, -1
  %27 = sext i32 %narrow to i64
  %28 = getelementptr inbounds double, ptr %6, i64 %27
  %29 = getelementptr inbounds i8, ptr %10, i64 -8
  %30 = getelementptr inbounds i8, ptr %11, i64 -4
  store i32 0, ptr %12, align 4, !tbaa !5
  %31 = load i32, ptr %2, align 4, !tbaa !5
  %32 = icmp slt i32 %31, 0
  br i1 %32, label %.thread, label %33

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

36:                                               ; preds = %33
  %37 = load i32, ptr %7, align 4, !tbaa !5
  %38 = icmp slt i32 %37, 1
  %39 = icmp slt i32 %37, %31
  %or.cond = or i1 %38, %39
  br i1 %or.cond, label %.thread, label %41

.thread:                                          ; preds = %36, %33, %13
  %.sink = phi i32 [ -3, %13 ], [ -4, %33 ], [ -8, %36 ]
  %.neg711 = phi i32 [ 3, %13 ], [ 4, %33 ], [ 8, %36 ]
  store i32 %.sink, ptr %12, align 4, !tbaa !5
  store i32 %.neg711, ptr %14, align 4, !tbaa !5
  %40 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %14, i32 noundef 6) #4
  br label %.loopexit

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

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

50:                                               ; preds = %47
  tail call void @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

51:                                               ; preds = %47
  store i32 1, ptr %9, align 4, !tbaa !5
  tail call void @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
  %52 = load double, ptr %4, align 8, !tbaa !9
  %53 = fcmp ult double %52, 0.000000e+00
  %54 = fneg double %52
  %55 = select i1 %53, double %54, double %52
  store double %55, ptr %4, align 8, !tbaa !9
  br label %.loopexit

56:                                               ; preds = %41
  %57 = load i8, ptr %0, align 1, !tbaa !11
  %58 = icmp eq i8 %57, 76
  br i1 %58, label %59, label %.loopexit636

59:                                               ; preds = %56
  %invariant.gep = getelementptr i8, ptr %10, i64 -16
  %.not614638 = icmp slt i32 %46, 2
  br i1 %.not614638, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %59
  %60 = add nsw i32 %46, -1
  %61 = sext i32 %26 to i64
  %invariant.gep713 = getelementptr double, ptr %28, i64 %61
  %invariant.gep715 = getelementptr double, ptr %28, i64 %61
  %62 = sext i32 %60 to i64
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %79
  %indvars.iv = phi i64 [ 1, %.lr.ph.preheader ], [ %indvars.iv.next, %79 ]
  %63 = getelementptr inbounds double, ptr %24, i64 %indvars.iv
  %64 = getelementptr inbounds double, ptr %25, i64 %indvars.iv
  call void @dlartg_(ptr noundef nonnull %63, ptr noundef nonnull %64, ptr noundef nonnull %20, ptr noundef nonnull %21, ptr noundef nonnull %16) #4
  %65 = load double, ptr %16, align 8, !tbaa !9
  store double %65, ptr %63, align 8, !tbaa !9
  %66 = load double, ptr %21, align 8, !tbaa !9
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %67 = getelementptr double, ptr %4, i64 %indvars.iv
  %68 = load double, ptr %67, align 8, !tbaa !9
  %69 = fmul double %66, %68
  store double %69, ptr %64, align 8, !tbaa !9
  %70 = load double, ptr %20, align 8, !tbaa !9
  %71 = load double, ptr %67, align 8, !tbaa !9
  %72 = fmul double %70, %71
  store double %72, ptr %67, align 8, !tbaa !9
  %73 = load i32, ptr %3, align 4, !tbaa !5
  %74 = icmp eq i32 %73, 1
  br i1 %74, label %75, label %76

75:                                               ; preds = %.lr.ph
  %gep714 = getelementptr double, ptr %invariant.gep713, i64 %indvars.iv
  %gep716 = getelementptr double, ptr %invariant.gep715, i64 %indvars.iv.next
  call void @drot_(ptr noundef nonnull @c__1, ptr noundef %gep714, ptr noundef nonnull @c__1, ptr noundef %gep716, ptr noundef nonnull @c__1, ptr noundef nonnull %20, ptr noundef nonnull %21) #4
  br label %79

76:                                               ; preds = %.lr.ph
  %sext = shl i64 %indvars.iv, 33
  %77 = ashr exact i64 %sext, 29
  %gep = getelementptr i8, ptr %invariant.gep, i64 %77
  store double %70, ptr %gep, align 8, !tbaa !9
  %.idx = shl i64 %indvars.iv, 4
  %78 = getelementptr inbounds i8, ptr %29, i64 %.idx
  store double %66, ptr %78, align 8, !tbaa !9
  br label %79

79:                                               ; preds = %75, %76
  %.not614.not = icmp slt i64 %indvars.iv, %62
  br i1 %.not614.not, label %.lr.ph, label %._crit_edge, !llvm.loop !12

._crit_edge:                                      ; preds = %79, %59
  %80 = load i32, ptr %3, align 4, !tbaa !5
  %81 = icmp sgt i32 %80, 1
  br i1 %81, label %.lr.ph650, label %.loopexit636

.lr.ph650:                                        ; preds = %._crit_edge
  %82 = load i32, ptr %2, align 4, !tbaa !5
  %83 = icmp sgt i32 %82, 1
  br i1 %83, label %.lr.ph650.split.preheader, label %.loopexit636

.lr.ph650.split.preheader:                        ; preds = %.lr.ph650
  %84 = sext i32 %26 to i64
  %85 = zext nneg i32 %80 to i64
  br label %.lr.ph650.split

.lr.ph650.splitthread-pre-split:                  ; preds = %._crit_edge646
  %indvars.iv.next689 = add nuw nsw i64 %indvars.iv688, 1
  %.pr = load i32, ptr %2, align 4, !tbaa !5
  br label %.lr.ph650.split

.lr.ph650.split:                                  ; preds = %.lr.ph650.splitthread-pre-split, %.lr.ph650.split.preheader
  %86 = phi i32 [ %.pr, %.lr.ph650.splitthread-pre-split ], [ %82, %.lr.ph650.split.preheader ]
  %indvars.iv688 = phi i64 [ %indvars.iv.next689, %.lr.ph650.splitthread-pre-split ], [ 1, %.lr.ph650.split.preheader ]
  %.not629.not642 = icmp sgt i32 %86, 1
  br i1 %.not629.not642, label %.lr.ph645, label %._crit_edge646

.lr.ph645:                                        ; preds = %.lr.ph650.split
  %87 = mul nsw i64 %indvars.iv688, %84
  %wide.trip.count = zext nneg i32 %86 to i64
  %invariant.gep717 = getelementptr double, ptr %28, i64 %87
  %invariant.gep719 = getelementptr double, ptr %28, i64 %87
  br label %88

88:                                               ; preds = %.lr.ph645, %88
  %indvars.iv685 = phi i64 [ 1, %.lr.ph645 ], [ %indvars.iv.next686, %88 ]
  %sext709 = shl i64 %indvars.iv685, 33
  %89 = ashr exact i64 %sext709, 29
  %gep641 = getelementptr i8, ptr %invariant.gep, i64 %89
  %90 = load double, ptr %gep641, align 8, !tbaa !9
  store double %90, ptr %20, align 8, !tbaa !9
  %.idx710 = shl i64 %indvars.iv685, 4
  %91 = getelementptr inbounds i8, ptr %29, i64 %.idx710
  %92 = load double, ptr %91, align 8, !tbaa !9
  store double %92, ptr %21, align 8, !tbaa !9
  %gep718 = getelementptr double, ptr %invariant.gep717, i64 %indvars.iv685
  %indvars.iv.next686 = add nuw nsw i64 %indvars.iv685, 1
  %gep720 = getelementptr double, ptr %invariant.gep719, i64 %indvars.iv.next686
  call void @drot_(ptr noundef nonnull @c__1, ptr noundef %gep718, ptr noundef nonnull @c__1, ptr noundef %gep720, ptr noundef nonnull @c__1, ptr noundef nonnull %20, ptr noundef nonnull %21) #4
  %exitcond.not = icmp eq i64 %indvars.iv.next686, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge646, label %88, !llvm.loop !14

._crit_edge646:                                   ; preds = %88, %.lr.ph650.split
  %.not615.not = icmp ult i64 %indvars.iv688, %85
  br i1 %.not615.not, label %.lr.ph650.splitthread-pre-split, label %.loopexit636, !llvm.loop !15

.loopexit636:                                     ; preds = %._crit_edge646, %.lr.ph650, %._crit_edge, %56
  %93 = load i32, ptr %2, align 4, !tbaa !5
  %94 = add nsw i32 %93, -1
  store i32 %94, ptr %23, align 4, !tbaa !5
  %95 = call double @dlanst_(ptr noundef nonnull @.str.4, ptr noundef nonnull %2, ptr noundef %4, ptr noundef %5) #4
  store double %95, ptr %22, align 8, !tbaa !9
  %96 = fcmp oeq double %95, 0.000000e+00
  br i1 %96, label %97, label %98

97:                                               ; preds = %.loopexit636
  call void @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

98:                                               ; preds = %.loopexit636
  call void @dlascl_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %22, 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
  call void @dlascl_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %22, ptr noundef nonnull @c_b11, ptr noundef nonnull %23, ptr noundef nonnull @c__1, ptr noundef %5, ptr noundef nonnull %23, ptr noundef nonnull %12) #4
  %99 = load i32, ptr %2, align 4, !tbaa !5
  %100 = load i32, ptr %1, align 4, !tbaa !5
  %.not616 = icmp sgt i32 %99, %100
  br i1 %.not616, label %127, label %101

101:                                              ; preds = %98
  %102 = mul nsw i32 %99, %99
  call void @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
  %103 = zext nneg i32 %102 to i64
  %104 = getelementptr inbounds double, ptr %29, i64 %103
  %105 = getelementptr inbounds i8, ptr %104, i64 8
  call void @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 nonnull %105, ptr noundef nonnull %12) #4
  %106 = load i32, ptr %12, align 4, !tbaa !5
  %.not627 = icmp eq i32 %106, 0
  br i1 %.not627, label %107, label %.loopexit

107:                                              ; preds = %101
  %108 = call i32 @idamax_(ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull @c__1) #4
  %109 = sext i32 %108 to i64
  %110 = getelementptr inbounds double, ptr %24, i64 %109
  %111 = load double, ptr %110, align 8, !tbaa !9
  %112 = fcmp oge double %111, 0.000000e+00
  %113 = fneg double %111
  %114 = select i1 %112, double %111, double %113
  %115 = fmul double %.0, %114
  %116 = load i32, ptr %2, align 4, !tbaa !5
  %.not628651 = icmp slt i32 %116, 1
  br i1 %.not628651, label %._crit_edge655, label %.lr.ph654.preheader

.lr.ph654.preheader:                              ; preds = %107
  %117 = sext i32 %26 to i64
  %invariant.gep721 = getelementptr double, ptr %28, i64 %117
  %invariant.gep723 = getelementptr double, ptr %28, i64 %117
  %118 = zext nneg i32 %116 to i64
  br label %.lr.ph654

.lr.ph654:                                        ; preds = %.lr.ph654.preheader, %126
  %indvars.iv691 = phi i64 [ 1, %.lr.ph654.preheader ], [ %indvars.iv.next692, %126 ]
  %119 = getelementptr inbounds double, ptr %24, i64 %indvars.iv691
  %120 = load double, ptr %119, align 8, !tbaa !9
  %121 = fcmp ugt double %120, %115
  br i1 %121, label %123, label %122

122:                                              ; preds = %.lr.ph654
  %gep722 = getelementptr double, ptr %invariant.gep721, i64 %indvars.iv691
  call void @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 %gep722, ptr noundef nonnull %7) #4
  br label %126

123:                                              ; preds = %.lr.ph654
  %gep724 = getelementptr double, ptr %invariant.gep723, i64 %indvars.iv691
  call void @dlascl_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %119, ptr noundef nonnull @c_b11, ptr noundef nonnull @c__1, ptr noundef nonnull %3, ptr noundef %gep724, ptr noundef nonnull %7, ptr noundef nonnull %12) #4
  %124 = load i32, ptr %9, align 4, !tbaa !5
  %125 = add nsw i32 %124, 1
  store i32 %125, ptr %9, align 4, !tbaa !5
  br label %126

126:                                              ; preds = %122, %123
  %indvars.iv.next692 = add nuw nsw i64 %indvars.iv691, 1
  %.not628.not = icmp ult i64 %indvars.iv691, %118
  br i1 %.not628.not, label %.lr.ph654, label %._crit_edge655, !llvm.loop !17

._crit_edge655:                                   ; preds = %126, %107
  call void @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 nonnull %105, ptr noundef nonnull %2) #4
  call void @dlacpy_(ptr noundef nonnull @.str.2, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %105, ptr noundef nonnull %2, ptr noundef %6, ptr noundef nonnull %7) #4
  call void @dlascl_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull @c_b11, ptr noundef nonnull %22, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef nonnull %2, ptr noundef nonnull %12) #4
  call void @dlasrt_(ptr noundef nonnull @.str.8, ptr noundef nonnull %2, ptr noundef nonnull %4, ptr noundef nonnull %12) #4
  call void @dlascl_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %22, 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

127:                                              ; preds = %98
  %128 = sitofp i32 %99 to double
  %129 = add nsw i32 %100, 1
  %130 = sitofp i32 %129 to double
  %131 = fdiv double %128, %130
  %132 = call double @log(double noundef %131) #4
  %133 = fdiv double %132, 0x3FE62E42FEFA39EF
  %134 = fptosi double %133 to i32
  %135 = add nsw i32 %134, 1
  %136 = load i32, ptr %1, align 4, !tbaa !5
  %137 = add nsw i32 %136, 1
  %138 = load i32, ptr %2, align 4, !tbaa !5
  %139 = mul nsw i32 %138, %136
  %140 = add nsw i32 %139, 1
  %141 = mul nsw i32 %137, %138
  %142 = add nsw i32 %140, %141
  %143 = mul nsw i32 %135, %138
  %144 = add nsw i32 %142, %143
  %145 = shl i32 %143, 1
  %146 = add nsw i32 %144, %145
  %147 = add nsw i32 %146, %143
  %148 = add nsw i32 %147, %138
  %149 = add nsw i32 %148, %138
  %150 = shl i32 %135, 1
  %151 = mul nsw i32 %150, %138
  %152 = add nsw i32 %149, %151
  %153 = add nsw i32 %152, %151
  %154 = load i32, ptr %3, align 4, !tbaa !5
  %155 = mul nsw i32 %154, %138
  %156 = add nsw i32 %153, %155
  %157 = add i32 %138, 1
  %158 = add nsw i32 %157, %138
  %159 = add nsw i32 %158, %138
  %160 = add nsw i32 %159, %138
  %161 = add nsw i32 %160, %143
  %162 = add nsw i32 %161, %145
  store i32 0, ptr %15, align 4, !tbaa !5
  store i32 1, ptr %18, align 4, !tbaa !5
  store i32 0, ptr %19, align 4, !tbaa !5
  %.not617656 = icmp slt i32 %138, 1
  br i1 %.not617656, label %._crit_edge660, label %.lr.ph659

.lr.ph659:                                        ; preds = %127
  %163 = fcmp oge double %42, 0.000000e+00
  %.neg = fneg double %42
  %wide.trip.count697 = zext i32 %157 to i64
  %164 = add nsw i64 %wide.trip.count697, -1
  %min.iters.check = icmp ult i32 %157, 5
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph659
  %n.vec = and i64 %164, -4
  %ind.end = or disjoint i64 %n.vec, 1
  %broadcast.splatinsert = insertelement <2 x double> poison, double %42, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  %invariant.gep738 = getelementptr i8, ptr %24, i64 32
  br label %vector.body

vector.body:                                      ; preds = %pred.store.continue736, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %pred.store.continue736 ]
  %165 = or disjoint i64 %index, 3
  %166 = getelementptr double, ptr %4, i64 %index
  %167 = getelementptr inbounds i8, ptr %166, i64 16
  %wide.load = load <2 x double>, ptr %166, align 8, !tbaa !9
  %wide.load730 = load <2 x double>, ptr %167, align 8, !tbaa !9
  %168 = fcmp oge <2 x double> %wide.load, zeroinitializer
  %169 = fcmp oge <2 x double> %wide.load730, zeroinitializer
  %170 = fneg <2 x double> %wide.load
  %171 = fneg <2 x double> %wide.load730
  %172 = select <2 x i1> %168, <2 x double> %wide.load, <2 x double> %170
  %173 = select <2 x i1> %169, <2 x double> %wide.load730, <2 x double> %171
  %174 = fcmp olt <2 x double> %172, %broadcast.splat
  %175 = fcmp olt <2 x double> %173, %broadcast.splat
  %176 = extractelement <2 x i1> %174, i64 0
  br i1 %176, label %pred.store.if, label %pred.store.continue

pred.store.if:                                    ; preds = %vector.body
  %177 = extractelement <2 x i1> %168, i64 0
  %178 = xor i1 %163, %177
  %179 = getelementptr double, ptr %4, i64 %index
  %180 = select i1 %178, double %.neg, double %42
  store double %180, ptr %179, align 8, !tbaa !9
  br label %pred.store.continue

pred.store.continue:                              ; preds = %pred.store.if, %vector.body
  %181 = extractelement <2 x i1> %174, i64 1
  br i1 %181, label %pred.store.if731, label %pred.store.continue732

pred.store.if731:                                 ; preds = %pred.store.continue
  %182 = or disjoint i64 %index, 2
  %183 = extractelement <2 x i1> %168, i64 1
  %184 = xor i1 %163, %183
  %185 = getelementptr inbounds double, ptr %24, i64 %182
  %186 = select i1 %184, double %.neg, double %42
  store double %186, ptr %185, align 8, !tbaa !9
  br label %pred.store.continue732

pred.store.continue732:                           ; preds = %pred.store.if731, %pred.store.continue
  %187 = extractelement <2 x i1> %175, i64 0
  br i1 %187, label %pred.store.if733, label %pred.store.continue734

pred.store.if733:                                 ; preds = %pred.store.continue732
  %188 = extractelement <2 x i1> %169, i64 0
  %189 = xor i1 %163, %188
  %190 = getelementptr inbounds double, ptr %24, i64 %165
  %191 = select i1 %189, double %.neg, double %42
  store double %191, ptr %190, align 8, !tbaa !9
  br label %pred.store.continue734

pred.store.continue734:                           ; preds = %pred.store.if733, %pred.store.continue732
  %192 = extractelement <2 x i1> %175, i64 1
  br i1 %192, label %pred.store.if735, label %pred.store.continue736

pred.store.if735:                                 ; preds = %pred.store.continue734
  %193 = extractelement <2 x i1> %169, i64 1
  %194 = xor i1 %163, %193
  %gep739 = getelementptr double, ptr %invariant.gep738, i64 %index
  %195 = select i1 %194, double %.neg, double %42
  store double %195, ptr %gep739, align 8, !tbaa !9
  br label %pred.store.continue736

pred.store.continue736:                           ; preds = %pred.store.if735, %pred.store.continue734
  %index.next = add nuw i64 %index, 4
  %196 = icmp eq i64 %index.next, %n.vec
  br i1 %196, label %middle.block, label %vector.body, !llvm.loop !18

middle.block:                                     ; preds = %pred.store.continue736
  %cmp.n = icmp eq i64 %164, %n.vec
  br i1 %cmp.n, label %._crit_edge660, label %scalar.ph.preheader

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

scalar.ph:                                        ; preds = %scalar.ph.preheader, %205
  %indvars.iv694 = phi i64 [ %indvars.iv.next695, %205 ], [ %indvars.iv694.ph, %scalar.ph.preheader ]
  %197 = getelementptr inbounds double, ptr %24, i64 %indvars.iv694
  %198 = load double, ptr %197, align 8, !tbaa !9
  %199 = fcmp oge double %198, 0.000000e+00
  %200 = fneg double %198
  %201 = select i1 %199, double %198, double %200
  %202 = fcmp olt double %201, %42
  br i1 %202, label %203, label %205

203:                                              ; preds = %scalar.ph
  %204 = xor i1 %163, %199
  %. = select i1 %204, double %.neg, double %42
  store double %., ptr %197, align 8, !tbaa !9
  br label %205

205:                                              ; preds = %scalar.ph, %203
  %indvars.iv.next695 = add nuw nsw i64 %indvars.iv694, 1
  %exitcond698.not = icmp eq i64 %indvars.iv.next695, %wide.trip.count697
  br i1 %exitcond698.not, label %._crit_edge660, label %scalar.ph, !llvm.loop !21

._crit_edge660:                                   ; preds = %205, %middle.block, %127
  %206 = load i32, ptr %23, align 4, !tbaa !5
  %.not618661 = icmp slt i32 %206, 1
  br i1 %.not618661, label %._crit_edge667, label %.lr.ph666

.lr.ph666:                                        ; preds = %._crit_edge660
  %207 = sext i32 %156 to i64
  %208 = getelementptr inbounds double, ptr %29, i64 %207
  %209 = sext i32 %162 to i64
  %210 = getelementptr inbounds i32, ptr %30, i64 %209
  %211 = zext nneg i32 %206 to i64
  br label %212

212:                                              ; preds = %.lr.ph666, %343
  %indvars.iv699 = phi i64 [ 1, %.lr.ph666 ], [ %indvars.iv.next700.pre-phi, %343 ]
  %.0593664 = phi i32 [ 1, %.lr.ph666 ], [ %.1, %343 ]
  %.0594663 = phi i32 [ 0, %.lr.ph666 ], [ %.2, %343 ]
  %213 = getelementptr inbounds double, ptr %25, i64 %indvars.iv699
  %214 = load double, ptr %213, align 8, !tbaa !9
  %215 = fcmp oge double %214, 0.000000e+00
  %216 = fneg double %214
  %217 = select i1 %215, double %214, double %216
  %218 = fcmp olt double %217, %42
  %219 = load i32, ptr %23, align 4
  %220 = zext i32 %219 to i64
  %221 = icmp eq i64 %indvars.iv699, %220
  %or.cond632 = select i1 %218, i1 true, i1 %221
  br i1 %or.cond632, label %222, label %._crit_edge708

._crit_edge708:                                   ; preds = %212
  %.pre = add nuw nsw i64 %indvars.iv699, 1
  br label %343

222:                                              ; preds = %212
  %223 = add nsw i32 %.0594663, 1
  %224 = sext i32 %223 to i64
  %225 = getelementptr inbounds i32, ptr %30, i64 %224
  store i32 %.0593664, ptr %225, align 4, !tbaa !5
  %226 = sext i32 %219 to i64
  %227 = icmp slt i64 %indvars.iv699, %226
  br i1 %227, label %228, label %235

228:                                              ; preds = %222
  %229 = trunc nuw nsw i64 %indvars.iv699 to i32
  %230 = sub nsw i32 %229, %.0593664
  %231 = add nsw i32 %230, 1
  store i32 %231, ptr %17, align 4, !tbaa !5
  %232 = add i32 %.0594663, %157
  %233 = sext i32 %232 to i64
  %234 = getelementptr inbounds i32, ptr %30, i64 %233
  store i32 %231, ptr %234, align 4, !tbaa !5
  br label %262

235:                                              ; preds = %222
  %236 = fcmp ult double %217, %42
  %237 = add i32 %.0594663, %157
  %238 = sext i32 %237 to i64
  %239 = getelementptr inbounds i32, ptr %30, i64 %238
  br i1 %236, label %244, label %240

240:                                              ; preds = %235
  %241 = load i32, ptr %2, align 4, !tbaa !5
  %242 = sub nsw i32 %241, %.0593664
  %243 = add nsw i32 %242, 1
  store i32 %243, ptr %17, align 4, !tbaa !5
  store i32 %243, ptr %239, align 4, !tbaa !5
  br label %262

244:                                              ; preds = %235
  %245 = trunc nuw nsw i64 %indvars.iv699 to i32
  %246 = sub nsw i32 %245, %.0593664
  %247 = add nsw i32 %246, 1
  store i32 %247, ptr %17, align 4, !tbaa !5
  store i32 %247, ptr %239, align 4, !tbaa !5
  %248 = add nsw i32 %.0594663, 2
  %249 = load i32, ptr %2, align 4, !tbaa !5
  %250 = sext i32 %248 to i64
  %251 = getelementptr inbounds i32, ptr %30, i64 %250
  store i32 %249, ptr %251, align 4, !tbaa !5
  %252 = add i32 %248, %138
  %253 = sext i32 %252 to i64
  %254 = getelementptr inbounds i32, ptr %30, i64 %253
  store i32 1, ptr %254, align 4, !tbaa !5
  %255 = load i32, ptr %2, align 4, !tbaa !5
  %256 = add nsw i32 %255, %26
  %257 = sext i32 %256 to i64
  %258 = getelementptr inbounds double, ptr %28, i64 %257
  %259 = add nsw i32 %219, %153
  %260 = sext i32 %259 to i64
  %261 = getelementptr inbounds double, ptr %29, i64 %260
  call void @dcopy_(ptr noundef nonnull %3, ptr noundef %258, ptr noundef nonnull %7, ptr noundef nonnull %261, ptr noundef nonnull %2) #4
  %.pr634 = load i32, ptr %17, align 4, !tbaa !5
  br label %262

262:                                              ; preds = %240, %244, %228
  %263 = phi i32 [ %243, %240 ], [ %.pr634, %244 ], [ %231, %228 ]
  %.1595 = phi i32 [ %223, %240 ], [ %248, %244 ], [ %223, %228 ]
  %264 = add nsw i32 %.0593664, -1
  %265 = icmp eq i32 %263, 1
  br i1 %265, label %266, label %273

266:                                              ; preds = %262
  %267 = add nsw i32 %.0593664, %26
  %268 = sext i32 %267 to i64
  %269 = getelementptr inbounds double, ptr %28, i64 %268
  %270 = add nsw i32 %264, %153
  %271 = sext i32 %270 to i64
  %272 = getelementptr inbounds double, ptr %29, i64 %271
  call void @dcopy_(ptr noundef nonnull %3, ptr noundef %269, ptr noundef nonnull %7, ptr noundef nonnull %272, ptr noundef nonnull %2) #4
  br label %340

273:                                              ; preds = %262
  %274 = load i32, ptr %1, align 4, !tbaa !5
  %.not623 = icmp sgt i32 %263, %274
  br i1 %.not623, label %290, label %275

275:                                              ; preds = %273
  %276 = add i32 %.0593664, %139
  %277 = sext i32 %276 to i64
  %278 = getelementptr inbounds double, ptr %29, i64 %277
  call void @dlaset_(ptr noundef nonnull @.str.2, ptr noundef nonnull %17, ptr noundef nonnull %17, ptr noundef nonnull @c_b6, ptr noundef nonnull @c_b11, ptr noundef nonnull %278, ptr noundef nonnull %2) #4
  %279 = sext i32 %.0593664 to i64
  %280 = getelementptr inbounds double, ptr %24, i64 %279
  %281 = getelementptr inbounds double, ptr %25, i64 %279
  %282 = add nsw i32 %.0593664, %26
  %283 = sext i32 %282 to i64
  %284 = getelementptr inbounds double, ptr %28, i64 %283
  call void @dlasdq_(ptr noundef nonnull @.str.5, ptr noundef nonnull @c__0, ptr noundef nonnull %17, ptr noundef nonnull %17, ptr noundef nonnull @c__0, ptr noundef nonnull %3, ptr noundef nonnull %280, ptr noundef nonnull %281, ptr noundef nonnull %278, ptr noundef nonnull %2, ptr noundef nonnull %208, ptr noundef nonnull %2, ptr noundef %284, ptr noundef nonnull %7, ptr noundef nonnull %208, ptr noundef nonnull %12) #4
  %285 = load i32, ptr %12, align 4, !tbaa !5
  %.not626 = icmp eq i32 %285, 0
  br i1 %.not626, label %286, label %.loopexit

286:                                              ; preds = %275
  %287 = add nsw i32 %264, %153
  %288 = sext i32 %287 to i64
  %289 = getelementptr inbounds double, ptr %29, i64 %288
  call void @dlacpy_(ptr noundef nonnull @.str.2, ptr noundef nonnull %17, ptr noundef nonnull %3, ptr noundef %284, ptr noundef nonnull %7, ptr noundef nonnull %289, ptr noundef nonnull %2) #4
  br label %340

290:                                              ; preds = %273
  %291 = sext i32 %.0593664 to i64
  %292 = getelementptr inbounds double, ptr %24, i64 %291
  %293 = getelementptr inbounds double, ptr %25, i64 %291
  %294 = getelementptr inbounds double, ptr %29, i64 %291
  %295 = add i32 %.0593664, %139
  %296 = sext i32 %295 to i64
  %297 = getelementptr inbounds double, ptr %29, i64 %296
  %298 = add nsw i32 %264, %158
  %299 = sext i32 %298 to i64
  %300 = getelementptr inbounds i32, ptr %30, i64 %299
  %301 = add nsw i32 %264, %142
  %302 = sext i32 %301 to i64
  %303 = getelementptr inbounds double, ptr %29, i64 %302
  %304 = add nsw i32 %264, %144
  %305 = sext i32 %304 to i64
  %306 = getelementptr inbounds double, ptr %29, i64 %305
  %307 = add nsw i32 %264, %146
  %308 = sext i32 %307 to i64
  %309 = getelementptr inbounds double, ptr %29, i64 %308
  %310 = add nsw i32 %264, %149
  %311 = sext i32 %310 to i64
  %312 = getelementptr inbounds double, ptr %29, i64 %311
  %313 = add nsw i32 %264, %159
  %314 = sext i32 %313 to i64
  %315 = getelementptr inbounds i32, ptr %30, i64 %314
  %316 = add nsw i32 %264, %161
  %317 = sext i32 %316 to i64
  %318 = getelementptr inbounds i32, ptr %30, i64 %317
  %319 = add nsw i32 %264, %160
  %320 = sext i32 %319 to i64
  %321 = getelementptr inbounds i32, ptr %30, i64 %320
  %322 = add nsw i32 %264, %152
  %323 = sext i32 %322 to i64
  %324 = getelementptr inbounds double, ptr %29, i64 %323
  %325 = add nsw i32 %264, %147
  %326 = sext i32 %325 to i64
  %327 = getelementptr inbounds double, ptr %29, i64 %326
  %328 = add nsw i32 %264, %148
  %329 = sext i32 %328 to i64
  %330 = getelementptr inbounds double, ptr %29, i64 %329
  call void @dlasda_(ptr noundef nonnull %18, ptr noundef nonnull %1, ptr noundef nonnull %17, ptr noundef nonnull %15, ptr noundef nonnull %292, ptr noundef nonnull %293, ptr noundef nonnull %294, ptr noundef nonnull %2, ptr noundef nonnull %297, ptr noundef nonnull %300, ptr noundef nonnull %303, ptr noundef nonnull %306, ptr noundef nonnull %309, ptr noundef nonnull %312, ptr noundef nonnull %315, ptr noundef nonnull %318, ptr noundef nonnull %2, ptr noundef nonnull %321, ptr noundef nonnull %324, ptr noundef nonnull %327, ptr noundef nonnull %330, ptr noundef nonnull %208, ptr noundef nonnull %210, ptr noundef nonnull %12) #4
  %331 = load i32, ptr %12, align 4, !tbaa !5
  %.not624 = icmp eq i32 %331, 0
  br i1 %.not624, label %332, label %.loopexit

332:                                              ; preds = %290
  %333 = add nsw i32 %264, %153
  %334 = add nsw i32 %.0593664, %26
  %335 = sext i32 %334 to i64
  %336 = getelementptr inbounds double, ptr %28, i64 %335
  %337 = sext i32 %333 to i64
  %338 = getelementptr inbounds double, ptr %29, i64 %337
  call void @dlalsa_(ptr noundef nonnull %19, ptr noundef nonnull %1, ptr noundef nonnull %17, ptr noundef nonnull %3, ptr noundef %336, ptr noundef nonnull %7, ptr noundef nonnull %338, ptr noundef nonnull %2, ptr noundef nonnull %294, ptr noundef nonnull %2, ptr noundef nonnull %297, ptr noundef nonnull %300, ptr noundef nonnull %303, ptr noundef nonnull %306, ptr noundef nonnull %309, ptr noundef nonnull %312, ptr noundef nonnull %315, ptr noundef nonnull %318, ptr noundef nonnull %2, ptr noundef nonnull %321, ptr noundef nonnull %324, ptr noundef nonnull %327, ptr noundef nonnull %330, ptr noundef nonnull %208, ptr noundef nonnull %210, ptr noundef nonnull %12) #4
  %339 = load i32, ptr %12, align 4, !tbaa !5
  %.not625 = icmp eq i32 %339, 0
  br i1 %.not625, label %340, label %.loopexit

340:                                              ; preds = %286, %332, %266
  %341 = add nuw nsw i64 %indvars.iv699, 1
  %342 = trunc nuw i64 %341 to i32
  br label %343

343:                                              ; preds = %._crit_edge708, %340
  %indvars.iv.next700.pre-phi = phi i64 [ %.pre, %._crit_edge708 ], [ %341, %340 ]
  %.2 = phi i32 [ %.0594663, %._crit_edge708 ], [ %.1595, %340 ]
  %.1 = phi i32 [ %.0593664, %._crit_edge708 ], [ %342, %340 ]
  %.not618.not = icmp slt i64 %indvars.iv699, %211
  br i1 %.not618.not, label %212, label %._crit_edge667, !llvm.loop !22

._crit_edge667:                                   ; preds = %343, %._crit_edge660
  %344 = phi i32 [ 0, %._crit_edge660 ], [ %.2, %343 ]
  %345 = call i32 @idamax_(ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull @c__1) #4
  %346 = sext i32 %345 to i64
  %347 = getelementptr inbounds double, ptr %24, i64 %346
  %348 = load double, ptr %347, align 8, !tbaa !9
  %349 = fcmp oge double %348, 0.000000e+00
  %350 = fneg double %348
  %351 = select i1 %349, double %348, double %350
  %352 = fmul double %.0, %351
  %353 = load i32, ptr %2, align 4, !tbaa !5
  %.not619672 = icmp slt i32 %353, 1
  br i1 %.not619672, label %._crit_edge676, label %.lr.ph675.preheader

.lr.ph675.preheader:                              ; preds = %._crit_edge667
  %invariant.gep668 = getelementptr i8, ptr %10, i64 -16
  %354 = sext i32 %153 to i64
  %invariant.gep725 = getelementptr double, ptr %invariant.gep668, i64 %354
  %invariant.gep727 = getelementptr double, ptr %invariant.gep668, i64 %354
  %355 = zext nneg i32 %353 to i64
  br label %.lr.ph675

.lr.ph675:                                        ; preds = %.lr.ph675.preheader, %366
  %indvars.iv702 = phi i64 [ 1, %.lr.ph675.preheader ], [ %indvars.iv.next703, %366 ]
  %356 = getelementptr inbounds double, ptr %24, i64 %indvars.iv702
  %357 = load double, ptr %356, align 8, !tbaa !9
  %358 = fcmp oge double %357, 0.000000e+00
  %359 = fneg double %357
  %360 = select i1 %358, double %357, double %359
  %361 = fcmp ugt double %360, %352
  br i1 %361, label %363, label %362

362:                                              ; preds = %.lr.ph675
  %gep726 = getelementptr double, ptr %invariant.gep725, i64 %indvars.iv702
  call void @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 %gep726, ptr noundef nonnull %2) #4
  br label %366

363:                                              ; preds = %.lr.ph675
  %364 = load i32, ptr %9, align 4, !tbaa !5
  %365 = add nsw i32 %364, 1
  store i32 %365, ptr %9, align 4, !tbaa !5
  %gep728 = getelementptr double, ptr %invariant.gep727, i64 %indvars.iv702
  call void @dlascl_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %356, ptr noundef nonnull @c_b11, ptr noundef nonnull @c__1, ptr noundef nonnull %3, ptr noundef %gep728, ptr noundef nonnull %2, ptr noundef nonnull %12) #4
  br label %366

366:                                              ; preds = %363, %362
  %367 = load double, ptr %356, align 8, !tbaa !9
  %368 = fcmp oge double %367, 0.000000e+00
  %369 = fneg double %367
  %370 = select i1 %368, double %367, double %369
  store double %370, ptr %356, align 8, !tbaa !9
  %indvars.iv.next703 = add nuw nsw i64 %indvars.iv702, 1
  %.not619.not = icmp ult i64 %indvars.iv702, %355
  br i1 %.not619.not, label %.lr.ph675, label %._crit_edge676, !llvm.loop !23

._crit_edge676:                                   ; preds = %366, %._crit_edge667
  store i32 1, ptr %19, align 4, !tbaa !5
  %.not620677 = icmp slt i32 %344, 1
  br i1 %.not620677, label %._crit_edge681, label %.lr.ph680

.lr.ph680:                                        ; preds = %._crit_edge676
  %371 = sext i32 %156 to i64
  %372 = getelementptr inbounds double, ptr %29, i64 %371
  %373 = sext i32 %162 to i64
  %374 = getelementptr inbounds i32, ptr %30, i64 %373
  %375 = zext nneg i32 %344 to i64
  br label %376

376:                                              ; preds = %.lr.ph680, %449
  %indvars.iv705 = phi i64 [ 1, %.lr.ph680 ], [ %indvars.iv.next706, %449 ]
  %377 = getelementptr inbounds i32, ptr %30, i64 %indvars.iv705
  %378 = load i32, ptr %377, align 4, !tbaa !5
  %379 = add nsw i32 %378, -1
  %380 = trunc nuw nsw i64 %indvars.iv705 to i32
  %381 = add i32 %138, %380
  %382 = sext i32 %381 to i64
  %383 = getelementptr inbounds i32, ptr %30, i64 %382
  %384 = load i32, ptr %383, align 4, !tbaa !5
  store i32 %384, ptr %17, align 4, !tbaa !5
  %385 = add nsw i32 %379, %153
  %386 = icmp eq i32 %384, 1
  br i1 %386, label %387, label %393

387:                                              ; preds = %376
  %388 = sext i32 %385 to i64
  %389 = getelementptr inbounds double, ptr %29, i64 %388
  %390 = add nsw i32 %378, %26
  %391 = sext i32 %390 to i64
  %392 = getelementptr inbounds double, ptr %28, i64 %391
  call void @dcopy_(ptr noundef nonnull %3, ptr noundef nonnull %389, ptr noundef nonnull %2, ptr noundef %392, ptr noundef nonnull %7) #4
  br label %449

393:                                              ; preds = %376
  %394 = load i32, ptr %1, align 4, !tbaa !5
  %.not621 = icmp sgt i32 %384, %394
  br i1 %.not621, label %404, label %395

395:                                              ; preds = %393
  %396 = add i32 %378, %139
  %397 = sext i32 %396 to i64
  %398 = getelementptr inbounds double, ptr %29, i64 %397
  %399 = sext i32 %385 to i64
  %400 = getelementptr inbounds double, ptr %29, i64 %399
  %401 = add nsw i32 %378, %26
  %402 = sext i32 %401 to i64
  %403 = getelementptr inbounds double, ptr %28, i64 %402
  call void @dgemm_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %17, ptr noundef nonnull %3, ptr noundef nonnull %17, ptr noundef nonnull @c_b11, ptr noundef nonnull %398, ptr noundef nonnull %2, ptr noundef nonnull %400, ptr noundef nonnull %2, ptr noundef nonnull @c_b6, ptr noundef %403, ptr noundef nonnull %7) #4
  br label %449

404:                                              ; preds = %393
  %405 = sext i32 %385 to i64
  %406 = getelementptr inbounds double, ptr %29, i64 %405
  %407 = add nsw i32 %378, %26
  %408 = sext i32 %407 to i64
  %409 = getelementptr inbounds double, ptr %28, i64 %408
  %410 = sext i32 %378 to i64
  %411 = getelementptr inbounds double, ptr %29, i64 %410
  %412 = add i32 %378, %139
  %413 = sext i32 %412 to i64
  %414 = getelementptr inbounds double, ptr %29, i64 %413
  %415 = add nsw i32 %379, %158
  %416 = sext i32 %415 to i64
  %417 = getelementptr inbounds i32, ptr %30, i64 %416
  %418 = add nsw i32 %379, %142
  %419 = sext i32 %418 to i64
  %420 = getelementptr inbounds double, ptr %29, i64 %419
  %421 = add nsw i32 %379, %144
  %422 = sext i32 %421 to i64
  %423 = getelementptr inbounds double, ptr %29, i64 %422
  %424 = add nsw i32 %379, %146
  %425 = sext i32 %424 to i64
  %426 = getelementptr inbounds double, ptr %29, i64 %425
  %427 = add nsw i32 %379, %149
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds double, ptr %29, i64 %428
  %430 = add nsw i32 %379, %159
  %431 = sext i32 %430 to i64
  %432 = getelementptr inbounds i32, ptr %30, i64 %431
  %433 = add nsw i32 %379, %161
  %434 = sext i32 %433 to i64
  %435 = getelementptr inbounds i32, ptr %30, i64 %434
  %436 = add nsw i32 %379, %160
  %437 = sext i32 %436 to i64
  %438 = getelementptr inbounds i32, ptr %30, i64 %437
  %439 = add nsw i32 %379, %152
  %440 = sext i32 %439 to i64
  %441 = getelementptr inbounds double, ptr %29, i64 %440
  %442 = add nsw i32 %379, %147
  %443 = sext i32 %442 to i64
  %444 = getelementptr inbounds double, ptr %29, i64 %443
  %445 = add nsw i32 %379, %148
  %446 = sext i32 %445 to i64
  %447 = getelementptr inbounds double, ptr %29, i64 %446
  call void @dlalsa_(ptr noundef nonnull %19, ptr noundef nonnull %1, ptr noundef nonnull %17, ptr noundef nonnull %3, ptr noundef nonnull %406, ptr noundef nonnull %2, ptr noundef %409, ptr noundef nonnull %7, ptr noundef nonnull %411, ptr noundef nonnull %2, ptr noundef nonnull %414, ptr noundef nonnull %417, ptr noundef nonnull %420, ptr noundef nonnull %423, ptr noundef nonnull %426, ptr noundef nonnull %429, ptr noundef nonnull %432, ptr noundef nonnull %435, ptr noundef nonnull %2, ptr noundef nonnull %438, ptr noundef nonnull %441, ptr noundef nonnull %444, ptr noundef nonnull %447, ptr noundef nonnull %372, ptr noundef nonnull %374, ptr noundef nonnull %12) #4
  %448 = load i32, ptr %12, align 4, !tbaa !5
  %.not622 = icmp eq i32 %448, 0
  br i1 %.not622, label %449, label %.loopexit

449:                                              ; preds = %387, %404, %395
  %indvars.iv.next706 = add nuw nsw i64 %indvars.iv705, 1
  %.not620.not = icmp ult i64 %indvars.iv705, %375
  br i1 %.not620.not, label %376, label %._crit_edge681, !llvm.loop !24

._crit_edge681:                                   ; preds = %449, %._crit_edge676
  call void @dlascl_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull @c_b11, ptr noundef nonnull %22, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef nonnull %2, ptr noundef nonnull %12) #4
  call void @dlasrt_(ptr noundef nonnull @.str.8, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %12) #4
  call void @dlascl_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %22, 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 = %332, %290, %275, %404, %101, %50, %51, %41, %._crit_edge681, %._crit_edge655, %97, %.thread
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr nonnull %19) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #4
  ret void
}

; 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, i32 noundef) local_unnamed_addr #2

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

declare void @dlaset_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

declare void @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 void @dlacpy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @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 void @dcopy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @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 void @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 = !{!"int", !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, !20}
!19 = !{!"llvm.loop.isvectorized", i32 1}
!20 = !{!"llvm.loop.unroll.runtime.disable"}
!21 = distinct !{!21, !13, !20, !19}
!22 = distinct !{!22, !13}
!23 = distinct !{!23, !13}
!24 = distinct !{!24, !13}


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