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

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@.str = external hidden unnamed_addr constant [7 x i8], align 1
@c__9 = external hidden global i64, align 8
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i64, align 8
@c__2 = external hidden global i64, align 8
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b23 = external hidden global double, align 8
@c_b24 = external hidden global double, align 8
@c__1 = external hidden global i64, align 8
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1

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

88:                                               ; preds = %12
  %89 = load ptr, ptr %14, align 8, !tbaa !5
  %90 = load i64, ptr %89, align 8, !tbaa !9
  %91 = icmp sgt i64 %90, 2
  br i1 %91, label %92, label %94

92:                                               ; preds = %88, %12
  %93 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 -1, ptr %93, align 8, !tbaa !9
  br label %153

94:                                               ; preds = %88
  %95 = load ptr, ptr %14, align 8, !tbaa !5
  %96 = load i64, ptr %95, align 8, !tbaa !9
  %97 = icmp eq i64 %96, 1
  br i1 %97, label %98, label %113

98:                                               ; preds = %94
  %99 = load ptr, ptr %15, align 8, !tbaa !5
  %100 = load i64, ptr %99, align 8, !tbaa !9
  %101 = load ptr, ptr %16, align 8, !tbaa !5
  %102 = load i64, ptr %101, align 8, !tbaa !9
  %103 = icmp sge i64 0, %102
  br i1 %103, label %104, label %105

104:                                              ; preds = %98
  br label %108

105:                                              ; preds = %98
  %106 = load ptr, ptr %16, align 8, !tbaa !5
  %107 = load i64, ptr %106, align 8, !tbaa !9
  br label %108

108:                                              ; preds = %105, %104
  %109 = phi i64 [ 0, %104 ], [ %107, %105 ]
  %110 = icmp slt i64 %100, %109
  br i1 %110, label %111, label %113

111:                                              ; preds = %108
  %112 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 -2, ptr %112, align 8, !tbaa !9
  br label %152

113:                                              ; preds = %108, %94
  %114 = load ptr, ptr %16, align 8, !tbaa !5
  %115 = load i64, ptr %114, align 8, !tbaa !9
  %116 = icmp slt i64 %115, 0
  br i1 %116, label %117, label %119

117:                                              ; preds = %113
  %118 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 -3, ptr %118, align 8, !tbaa !9
  br label %151

119:                                              ; preds = %113
  %120 = load ptr, ptr %20, align 8, !tbaa !5
  %121 = load i64, ptr %120, align 8, !tbaa !9
  %122 = load ptr, ptr %16, align 8, !tbaa !5
  %123 = load i64, ptr %122, align 8, !tbaa !9
  %124 = icmp sge i64 1, %123
  br i1 %124, label %125, label %126

125:                                              ; preds = %119
  br label %129

126:                                              ; preds = %119
  %127 = load ptr, ptr %16, align 8, !tbaa !5
  %128 = load i64, ptr %127, align 8, !tbaa !9
  br label %129

129:                                              ; preds = %126, %125
  %130 = phi i64 [ 1, %125 ], [ %128, %126 ]
  %131 = icmp slt i64 %121, %130
  br i1 %131, label %132, label %134

132:                                              ; preds = %129
  %133 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 -7, ptr %133, align 8, !tbaa !9
  br label %150

134:                                              ; preds = %129
  %135 = load ptr, ptr %22, align 8, !tbaa !5
  %136 = load i64, ptr %135, align 8, !tbaa !9
  %137 = load ptr, ptr %16, align 8, !tbaa !5
  %138 = load i64, ptr %137, align 8, !tbaa !9
  %139 = icmp sge i64 1, %138
  br i1 %139, label %140, label %141

140:                                              ; preds = %134
  br label %144

141:                                              ; preds = %134
  %142 = load ptr, ptr %16, align 8, !tbaa !5
  %143 = load i64, ptr %142, align 8, !tbaa !9
  br label %144

144:                                              ; preds = %141, %140
  %145 = phi i64 [ 1, %140 ], [ %143, %141 ]
  %146 = icmp slt i64 %136, %145
  br i1 %146, label %147, label %149

147:                                              ; preds = %144
  %148 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 -9, ptr %148, align 8, !tbaa !9
  br label %149

149:                                              ; preds = %147, %144
  br label %150

150:                                              ; preds = %149, %132
  br label %151

151:                                              ; preds = %150, %117
  br label %152

152:                                              ; preds = %151, %111
  br label %153

153:                                              ; preds = %152, %92
  %154 = load ptr, ptr %25, align 8, !tbaa !5
  %155 = load i64, ptr %154, align 8, !tbaa !9
  %156 = icmp ne i64 %155, 0
  br i1 %156, label %157, label %162

157:                                              ; preds = %153
  %158 = load ptr, ptr %25, align 8, !tbaa !5
  %159 = load i64, ptr %158, align 8, !tbaa !9
  %160 = sub nsw i64 0, %159
  store i64 %160, ptr %30, align 8, !tbaa !9
  %161 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %30)
  store i32 0, ptr %13, align 4
  store i32 1, ptr %59, align 4
  br label %863

162:                                              ; preds = %153
  %163 = load ptr, ptr %16, align 8, !tbaa !5
  %164 = load i64, ptr %163, align 8, !tbaa !9
  %165 = icmp eq i64 %164, 0
  br i1 %165, label %166, label %167

166:                                              ; preds = %162
  store i32 0, ptr %13, align 4
  store i32 1, ptr %59, align 4
  br label %863

167:                                              ; preds = %162
  %168 = call i64 @ilaenv_(ptr noundef @c__9, ptr noundef @.str, ptr noundef @.str.1, ptr noundef @c__0, ptr noundef @c__0, ptr noundef @c__0, ptr noundef @c__0)
  store i64 %168, ptr %58, align 8, !tbaa !9
  %169 = load ptr, ptr %16, align 8, !tbaa !5
  %170 = load i64, ptr %169, align 8, !tbaa !9
  %171 = load ptr, ptr %24, align 8, !tbaa !5
  %172 = getelementptr inbounds i64, ptr %171, i64 1
  store i64 %170, ptr %172, align 8, !tbaa !9
  store i64 1, ptr %53, align 8, !tbaa !9
  store i64 0, ptr %48, align 8, !tbaa !9
  br label %173

173:                                              ; preds = %209, %167
  %174 = load ptr, ptr %24, align 8, !tbaa !5
  %175 = load i64, ptr %53, align 8, !tbaa !9
  %176 = getelementptr inbounds i64, ptr %174, i64 %175
  %177 = load i64, ptr %176, align 8, !tbaa !9
  %178 = load i64, ptr %58, align 8, !tbaa !9
  %179 = icmp sgt i64 %177, %178
  br i1 %179, label %180, label %214

180:                                              ; preds = %173
  %181 = load i64, ptr %53, align 8, !tbaa !9
  store i64 %181, ptr %34, align 8, !tbaa !9
  br label %182

182:                                              ; preds = %206, %180
  %183 = load i64, ptr %34, align 8, !tbaa !9
  %184 = icmp sge i64 %183, 1
  br i1 %184, label %185, label %209

185:                                              ; preds = %182
  %186 = load ptr, ptr %24, align 8, !tbaa !5
  %187 = load i64, ptr %34, align 8, !tbaa !9
  %188 = getelementptr inbounds i64, ptr %186, i64 %187
  %189 = load i64, ptr %188, align 8, !tbaa !9
  %190 = add nsw i64 %189, 1
  %191 = sdiv i64 %190, 2
  %192 = load ptr, ptr %24, align 8, !tbaa !5
  %193 = load i64, ptr %34, align 8, !tbaa !9
  %194 = mul nsw i64 %193, 2
  %195 = getelementptr inbounds i64, ptr %192, i64 %194
  store i64 %191, ptr %195, align 8, !tbaa !9
  %196 = load ptr, ptr %24, align 8, !tbaa !5
  %197 = load i64, ptr %34, align 8, !tbaa !9
  %198 = getelementptr inbounds i64, ptr %196, i64 %197
  %199 = load i64, ptr %198, align 8, !tbaa !9
  %200 = sdiv i64 %199, 2
  %201 = load ptr, ptr %24, align 8, !tbaa !5
  %202 = load i64, ptr %34, align 8, !tbaa !9
  %203 = shl i64 %202, 1
  %204 = sub nsw i64 %203, 1
  %205 = getelementptr inbounds i64, ptr %201, i64 %204
  store i64 %200, ptr %205, align 8, !tbaa !9
  br label %206

206:                                              ; preds = %185
  %207 = load i64, ptr %34, align 8, !tbaa !9
  %208 = add nsw i64 %207, -1
  store i64 %208, ptr %34, align 8, !tbaa !9
  br label %182, !llvm.loop !11

209:                                              ; preds = %182
  %210 = load i64, ptr %48, align 8, !tbaa !9
  %211 = add nsw i64 %210, 1
  store i64 %211, ptr %48, align 8, !tbaa !9
  %212 = load i64, ptr %53, align 8, !tbaa !9
  %213 = shl i64 %212, 1
  store i64 %213, ptr %53, align 8, !tbaa !9
  br label %173

214:                                              ; preds = %173
  %215 = load i64, ptr %53, align 8, !tbaa !9
  store i64 %215, ptr %30, align 8, !tbaa !9
  store i64 2, ptr %34, align 8, !tbaa !9
  br label %216

216:                                              ; preds = %231, %214
  %217 = load i64, ptr %34, align 8, !tbaa !9
  %218 = load i64, ptr %30, align 8, !tbaa !9
  %219 = icmp sle i64 %217, %218
  br i1 %219, label %220, label %234

220:                                              ; preds = %216
  %221 = load ptr, ptr %24, align 8, !tbaa !5
  %222 = load i64, ptr %34, align 8, !tbaa !9
  %223 = sub nsw i64 %222, 1
  %224 = getelementptr inbounds i64, ptr %221, i64 %223
  %225 = load i64, ptr %224, align 8, !tbaa !9
  %226 = load ptr, ptr %24, align 8, !tbaa !5
  %227 = load i64, ptr %34, align 8, !tbaa !9
  %228 = getelementptr inbounds i64, ptr %226, i64 %227
  %229 = load i64, ptr %228, align 8, !tbaa !9
  %230 = add nsw i64 %229, %225
  store i64 %230, ptr %228, align 8, !tbaa !9
  br label %231

231:                                              ; preds = %220
  %232 = load i64, ptr %34, align 8, !tbaa !9
  %233 = add nsw i64 %232, 1
  store i64 %233, ptr %34, align 8, !tbaa !9
  br label %216, !llvm.loop !13

234:                                              ; preds = %216
  %235 = load i64, ptr %53, align 8, !tbaa !9
  %236 = sub nsw i64 %235, 1
  store i64 %236, ptr %40, align 8, !tbaa !9
  %237 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %237, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %33, align 8, !tbaa !9
  br label %238

238:                                              ; preds = %286, %234
  %239 = load i64, ptr %33, align 8, !tbaa !9
  %240 = load i64, ptr %30, align 8, !tbaa !9
  %241 = icmp sle i64 %239, %240
  br i1 %241, label %242, label %289

242:                                              ; preds = %238
  %243 = load ptr, ptr %24, align 8, !tbaa !5
  %244 = load i64, ptr %33, align 8, !tbaa !9
  %245 = getelementptr inbounds i64, ptr %243, i64 %244
  %246 = load i64, ptr %245, align 8, !tbaa !9
  %247 = add nsw i64 %246, 1
  store i64 %247, ptr %51, align 8, !tbaa !9
  %248 = load i64, ptr %51, align 8, !tbaa !9
  %249 = sub nsw i64 %248, 1
  store i64 %249, ptr %39, align 8, !tbaa !9
  %250 = load ptr, ptr %18, align 8, !tbaa !5
  %251 = load i64, ptr %39, align 8, !tbaa !9
  %252 = getelementptr inbounds double, ptr %250, i64 %251
  %253 = load double, ptr %252, align 8, !tbaa !14
  store double %253, ptr %32, align 8, !tbaa !14
  %254 = load double, ptr %32, align 8, !tbaa !14
  %255 = fcmp oge double %254, 0.000000e+00
  br i1 %255, label %256, label %258

256:                                              ; preds = %242
  %257 = load double, ptr %32, align 8, !tbaa !14
  br label %261

258:                                              ; preds = %242
  %259 = load double, ptr %32, align 8, !tbaa !14
  %260 = fneg double %259
  br label %261

261:                                              ; preds = %258, %256
  %262 = phi double [ %257, %256 ], [ %260, %258 ]
  %263 = load ptr, ptr %17, align 8, !tbaa !5
  %264 = load i64, ptr %39, align 8, !tbaa !9
  %265 = getelementptr inbounds double, ptr %263, i64 %264
  %266 = load double, ptr %265, align 8, !tbaa !14
  %267 = fsub double %266, %262
  store double %267, ptr %265, align 8, !tbaa !14
  %268 = load ptr, ptr %18, align 8, !tbaa !5
  %269 = load i64, ptr %39, align 8, !tbaa !9
  %270 = getelementptr inbounds double, ptr %268, i64 %269
  %271 = load double, ptr %270, align 8, !tbaa !14
  store double %271, ptr %32, align 8, !tbaa !14
  %272 = load double, ptr %32, align 8, !tbaa !14
  %273 = fcmp oge double %272, 0.000000e+00
  br i1 %273, label %274, label %276

274:                                              ; preds = %261
  %275 = load double, ptr %32, align 8, !tbaa !14
  br label %279

276:                                              ; preds = %261
  %277 = load double, ptr %32, align 8, !tbaa !14
  %278 = fneg double %277
  br label %279

279:                                              ; preds = %276, %274
  %280 = phi double [ %275, %274 ], [ %278, %276 ]
  %281 = load ptr, ptr %17, align 8, !tbaa !5
  %282 = load i64, ptr %51, align 8, !tbaa !9
  %283 = getelementptr inbounds double, ptr %281, i64 %282
  %284 = load double, ptr %283, align 8, !tbaa !14
  %285 = fsub double %284, %280
  store double %285, ptr %283, align 8, !tbaa !14
  br label %286

286:                                              ; preds = %279
  %287 = load i64, ptr %33, align 8, !tbaa !9
  %288 = add nsw i64 %287, 1
  store i64 %288, ptr %33, align 8, !tbaa !9
  br label %238, !llvm.loop !16

289:                                              ; preds = %238
  %290 = load ptr, ptr %16, align 8, !tbaa !5
  %291 = load i64, ptr %290, align 8, !tbaa !9
  %292 = shl i64 %291, 2
  %293 = add nsw i64 %292, 3
  store i64 %293, ptr %45, align 8, !tbaa !9
  %294 = load ptr, ptr %14, align 8, !tbaa !5
  %295 = load i64, ptr %294, align 8, !tbaa !9
  %296 = icmp ne i64 %295, 2
  br i1 %296, label %297, label %388

297:                                              ; preds = %289
  %298 = load ptr, ptr %16, align 8, !tbaa !5
  %299 = load i64, ptr %298, align 8, !tbaa !9
  %300 = sitofp i64 %299 to double
  %301 = call double @log(double noundef %300) #4
  %302 = call double @log(double noundef 2.000000e+00) #4
  %303 = fdiv double %301, %302
  store double %303, ptr %42, align 8, !tbaa !14
  %304 = load double, ptr %42, align 8, !tbaa !14
  %305 = fptosi double %304 to i64
  store i64 %305, ptr %37, align 8, !tbaa !9
  %306 = call i64 @pow_ii(ptr noundef @c__2, ptr noundef %37)
  %307 = load ptr, ptr %16, align 8, !tbaa !5
  %308 = load i64, ptr %307, align 8, !tbaa !9
  %309 = icmp slt i64 %306, %308
  br i1 %309, label %310, label %313

310:                                              ; preds = %297
  %311 = load i64, ptr %37, align 8, !tbaa !9
  %312 = add nsw i64 %311, 1
  store i64 %312, ptr %37, align 8, !tbaa !9
  br label %313

313:                                              ; preds = %310, %297
  %314 = call i64 @pow_ii(ptr noundef @c__2, ptr noundef %37)
  %315 = load ptr, ptr %16, align 8, !tbaa !5
  %316 = load i64, ptr %315, align 8, !tbaa !9
  %317 = icmp slt i64 %314, %316
  br i1 %317, label %318, label %321

318:                                              ; preds = %313
  %319 = load i64, ptr %37, align 8, !tbaa !9
  %320 = add nsw i64 %319, 1
  store i64 %320, ptr %37, align 8, !tbaa !9
  br label %321

321:                                              ; preds = %318, %313
  %322 = load i64, ptr %45, align 8, !tbaa !9
  %323 = load ptr, ptr %16, align 8, !tbaa !5
  %324 = load i64, ptr %323, align 8, !tbaa !9
  %325 = add nsw i64 %322, %324
  %326 = add nsw i64 %325, 1
  store i64 %326, ptr %57, align 8, !tbaa !9
  %327 = load i64, ptr %57, align 8, !tbaa !9
  %328 = load ptr, ptr %16, align 8, !tbaa !5
  %329 = load i64, ptr %328, align 8, !tbaa !9
  %330 = load i64, ptr %37, align 8, !tbaa !9
  %331 = mul nsw i64 %329, %330
  %332 = add nsw i64 %327, %331
  store i64 %332, ptr %44, align 8, !tbaa !9
  %333 = load i64, ptr %44, align 8, !tbaa !9
  %334 = load ptr, ptr %16, align 8, !tbaa !5
  %335 = load i64, ptr %334, align 8, !tbaa !9
  %336 = load i64, ptr %37, align 8, !tbaa !9
  %337 = mul nsw i64 %335, %336
  %338 = add nsw i64 %333, %337
  store i64 %338, ptr %47, align 8, !tbaa !9
  %339 = load i64, ptr %47, align 8, !tbaa !9
  %340 = load ptr, ptr %16, align 8, !tbaa !5
  %341 = load i64, ptr %340, align 8, !tbaa !9
  %342 = add nsw i64 %339, %341
  %343 = add nsw i64 %342, 2
  store i64 %343, ptr %54, align 8, !tbaa !9
  %344 = load i64, ptr %54, align 8, !tbaa !9
  %345 = load ptr, ptr %16, align 8, !tbaa !5
  %346 = load i64, ptr %345, align 8, !tbaa !9
  %347 = load i64, ptr %37, align 8, !tbaa !9
  %348 = mul nsw i64 %346, %347
  %349 = add nsw i64 %344, %348
  store i64 %349, ptr %49, align 8, !tbaa !9
  store i64 1, ptr %50, align 8, !tbaa !9
  %350 = load i64, ptr %50, align 8, !tbaa !9
  %351 = load ptr, ptr %16, align 8, !tbaa !5
  %352 = load i64, ptr %351, align 8, !tbaa !9
  %353 = shl i64 %352, 1
  %354 = load i64, ptr %37, align 8, !tbaa !9
  %355 = mul nsw i64 %353, %354
  %356 = add nsw i64 %350, %355
  store i64 %356, ptr %36, align 8, !tbaa !9
  %357 = load ptr, ptr %16, align 8, !tbaa !5
  %358 = load i64, ptr %357, align 8, !tbaa !9
  store i64 %358, ptr %30, align 8, !tbaa !9
  %359 = load i64, ptr %36, align 8, !tbaa !9
  %360 = load i64, ptr %30, align 8, !tbaa !9
  %361 = load i64, ptr %30, align 8, !tbaa !9
  %362 = mul nsw i64 %360, %361
  %363 = add nsw i64 %359, %362
  %364 = add nsw i64 %363, 1
  store i64 %364, ptr %46, align 8, !tbaa !9
  %365 = load i64, ptr %53, align 8, !tbaa !9
  store i64 %365, ptr %30, align 8, !tbaa !9
  store i64 0, ptr %33, align 8, !tbaa !9
  br label %366

366:                                              ; preds = %381, %321
  %367 = load i64, ptr %33, align 8, !tbaa !9
  %368 = load i64, ptr %30, align 8, !tbaa !9
  %369 = icmp sle i64 %367, %368
  br i1 %369, label %370, label %384

370:                                              ; preds = %366
  %371 = load ptr, ptr %24, align 8, !tbaa !5
  %372 = load i64, ptr %57, align 8, !tbaa !9
  %373 = load i64, ptr %33, align 8, !tbaa !9
  %374 = add nsw i64 %372, %373
  %375 = getelementptr inbounds i64, ptr %371, i64 %374
  store i64 1, ptr %375, align 8, !tbaa !9
  %376 = load ptr, ptr %24, align 8, !tbaa !5
  %377 = load i64, ptr %54, align 8, !tbaa !9
  %378 = load i64, ptr %33, align 8, !tbaa !9
  %379 = add nsw i64 %377, %378
  %380 = getelementptr inbounds i64, ptr %376, i64 %379
  store i64 1, ptr %380, align 8, !tbaa !9
  br label %381

381:                                              ; preds = %370
  %382 = load i64, ptr %33, align 8, !tbaa !9
  %383 = add nsw i64 %382, 1
  store i64 %383, ptr %33, align 8, !tbaa !9
  br label %366, !llvm.loop !17

384:                                              ; preds = %366
  %385 = load ptr, ptr %24, align 8, !tbaa !5
  %386 = load i64, ptr %47, align 8, !tbaa !9
  %387 = getelementptr inbounds i64, ptr %385, i64 %386
  store i64 1, ptr %387, align 8, !tbaa !9
  br label %388

388:                                              ; preds = %384, %289
  store i64 0, ptr %43, align 8, !tbaa !9
  %389 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %389, ptr %30, align 8, !tbaa !9
  store i64 0, ptr %33, align 8, !tbaa !9
  br label %390

390:                                              ; preds = %547, %388
  %391 = load i64, ptr %33, align 8, !tbaa !9
  %392 = load i64, ptr %30, align 8, !tbaa !9
  %393 = icmp sle i64 %391, %392
  br i1 %393, label %394, label %550

394:                                              ; preds = %390
  %395 = load i64, ptr %33, align 8, !tbaa !9
  %396 = icmp eq i64 %395, 0
  br i1 %396, label %397, label %401

397:                                              ; preds = %394
  store i64 1, ptr %51, align 8, !tbaa !9
  %398 = load ptr, ptr %24, align 8, !tbaa !5
  %399 = getelementptr inbounds i64, ptr %398, i64 1
  %400 = load i64, ptr %399, align 8, !tbaa !9
  store i64 %400, ptr %56, align 8, !tbaa !9
  br label %417

401:                                              ; preds = %394
  %402 = load ptr, ptr %24, align 8, !tbaa !5
  %403 = load i64, ptr %33, align 8, !tbaa !9
  %404 = getelementptr inbounds i64, ptr %402, i64 %403
  %405 = load i64, ptr %404, align 8, !tbaa !9
  %406 = add nsw i64 %405, 1
  store i64 %406, ptr %51, align 8, !tbaa !9
  %407 = load ptr, ptr %24, align 8, !tbaa !5
  %408 = load i64, ptr %33, align 8, !tbaa !9
  %409 = add nsw i64 %408, 1
  %410 = getelementptr inbounds i64, ptr %407, i64 %409
  %411 = load i64, ptr %410, align 8, !tbaa !9
  %412 = load ptr, ptr %24, align 8, !tbaa !5
  %413 = load i64, ptr %33, align 8, !tbaa !9
  %414 = getelementptr inbounds i64, ptr %412, i64 %413
  %415 = load i64, ptr %414, align 8, !tbaa !9
  %416 = sub nsw i64 %411, %415
  store i64 %416, ptr %56, align 8, !tbaa !9
  br label %417

417:                                              ; preds = %401, %397
  %418 = load ptr, ptr %14, align 8, !tbaa !5
  %419 = load i64, ptr %418, align 8, !tbaa !9
  %420 = icmp eq i64 %419, 2
  br i1 %420, label %421, label %445

421:                                              ; preds = %417
  %422 = load ptr, ptr %17, align 8, !tbaa !5
  %423 = load i64, ptr %51, align 8, !tbaa !9
  %424 = getelementptr inbounds double, ptr %422, i64 %423
  %425 = load ptr, ptr %18, align 8, !tbaa !5
  %426 = load i64, ptr %51, align 8, !tbaa !9
  %427 = getelementptr inbounds double, ptr %425, i64 %426
  %428 = load ptr, ptr %19, align 8, !tbaa !5
  %429 = load i64, ptr %51, align 8, !tbaa !9
  %430 = load i64, ptr %51, align 8, !tbaa !9
  %431 = load i64, ptr %26, align 8, !tbaa !9
  %432 = mul nsw i64 %430, %431
  %433 = add nsw i64 %429, %432
  %434 = getelementptr inbounds double, ptr %428, i64 %433
  %435 = load ptr, ptr %20, align 8, !tbaa !5
  %436 = load ptr, ptr %23, align 8, !tbaa !5
  %437 = getelementptr inbounds double, ptr %436, i64 1
  %438 = load ptr, ptr %25, align 8, !tbaa !5
  %439 = call i32 @dsteqr_(ptr noundef @.str.2, ptr noundef %56, ptr noundef %424, ptr noundef %427, ptr noundef %434, ptr noundef %435, ptr noundef %437, ptr noundef %438)
  %440 = load ptr, ptr %25, align 8, !tbaa !5
  %441 = load i64, ptr %440, align 8, !tbaa !9
  %442 = icmp ne i64 %441, 0
  br i1 %442, label %443, label %444

443:                                              ; preds = %421
  br label %850

444:                                              ; preds = %421
  br label %523

445:                                              ; preds = %417
  %446 = load ptr, ptr %17, align 8, !tbaa !5
  %447 = load i64, ptr %51, align 8, !tbaa !9
  %448 = getelementptr inbounds double, ptr %446, i64 %447
  %449 = load ptr, ptr %18, align 8, !tbaa !5
  %450 = load i64, ptr %51, align 8, !tbaa !9
  %451 = getelementptr inbounds double, ptr %449, i64 %450
  %452 = load ptr, ptr %23, align 8, !tbaa !5
  %453 = load i64, ptr %36, align 8, !tbaa !9
  %454 = sub nsw i64 %453, 1
  %455 = load ptr, ptr %24, align 8, !tbaa !5
  %456 = load i64, ptr %47, align 8, !tbaa !9
  %457 = load i64, ptr %43, align 8, !tbaa !9
  %458 = add nsw i64 %456, %457
  %459 = getelementptr inbounds i64, ptr %455, i64 %458
  %460 = load i64, ptr %459, align 8, !tbaa !9
  %461 = add nsw i64 %454, %460
  %462 = getelementptr inbounds double, ptr %452, i64 %461
  %463 = load ptr, ptr %23, align 8, !tbaa !5
  %464 = getelementptr inbounds double, ptr %463, i64 1
  %465 = load ptr, ptr %25, align 8, !tbaa !5
  %466 = call i32 @dsteqr_(ptr noundef @.str.2, ptr noundef %56, ptr noundef %448, ptr noundef %451, ptr noundef %462, ptr noundef %56, ptr noundef %464, ptr noundef %465)
  %467 = load ptr, ptr %25, align 8, !tbaa !5
  %468 = load i64, ptr %467, align 8, !tbaa !9
  %469 = icmp ne i64 %468, 0
  br i1 %469, label %470, label %471

470:                                              ; preds = %445
  br label %850

471:                                              ; preds = %445
  %472 = load ptr, ptr %14, align 8, !tbaa !5
  %473 = load i64, ptr %472, align 8, !tbaa !9
  %474 = icmp eq i64 %473, 1
  br i1 %474, label %475, label %503

475:                                              ; preds = %471
  %476 = load ptr, ptr %15, align 8, !tbaa !5
  %477 = load ptr, ptr %19, align 8, !tbaa !5
  %478 = load i64, ptr %51, align 8, !tbaa !9
  %479 = load i64, ptr %26, align 8, !tbaa !9
  %480 = mul nsw i64 %478, %479
  %481 = add nsw i64 %480, 1
  %482 = getelementptr inbounds double, ptr %477, i64 %481
  %483 = load ptr, ptr %20, align 8, !tbaa !5
  %484 = load ptr, ptr %23, align 8, !tbaa !5
  %485 = load i64, ptr %36, align 8, !tbaa !9
  %486 = sub nsw i64 %485, 1
  %487 = load ptr, ptr %24, align 8, !tbaa !5
  %488 = load i64, ptr %47, align 8, !tbaa !9
  %489 = load i64, ptr %43, align 8, !tbaa !9
  %490 = add nsw i64 %488, %489
  %491 = getelementptr inbounds i64, ptr %487, i64 %490
  %492 = load i64, ptr %491, align 8, !tbaa !9
  %493 = add nsw i64 %486, %492
  %494 = getelementptr inbounds double, ptr %484, i64 %493
  %495 = load ptr, ptr %21, align 8, !tbaa !5
  %496 = load i64, ptr %51, align 8, !tbaa !9
  %497 = load i64, ptr %28, align 8, !tbaa !9
  %498 = mul nsw i64 %496, %497
  %499 = add nsw i64 %498, 1
  %500 = getelementptr inbounds double, ptr %495, i64 %499
  %501 = load ptr, ptr %22, align 8, !tbaa !5
  %502 = call i32 @f2c_dgemm(ptr noundef @.str.3, ptr noundef @.str.3, ptr noundef %476, ptr noundef %56, ptr noundef %56, ptr noundef @c_b23, ptr noundef %482, ptr noundef %483, ptr noundef %494, ptr noundef %56, ptr noundef @c_b24, ptr noundef %500, ptr noundef %501)
  br label %503

503:                                              ; preds = %475, %471
  %504 = load i64, ptr %56, align 8, !tbaa !9
  store i64 %504, ptr %31, align 8, !tbaa !9
  %505 = load ptr, ptr %24, align 8, !tbaa !5
  %506 = load i64, ptr %47, align 8, !tbaa !9
  %507 = load i64, ptr %43, align 8, !tbaa !9
  %508 = add nsw i64 %506, %507
  %509 = getelementptr inbounds i64, ptr %505, i64 %508
  %510 = load i64, ptr %509, align 8, !tbaa !9
  %511 = load i64, ptr %31, align 8, !tbaa !9
  %512 = load i64, ptr %31, align 8, !tbaa !9
  %513 = mul nsw i64 %511, %512
  %514 = add nsw i64 %510, %513
  %515 = load ptr, ptr %24, align 8, !tbaa !5
  %516 = load i64, ptr %47, align 8, !tbaa !9
  %517 = load i64, ptr %43, align 8, !tbaa !9
  %518 = add nsw i64 %516, %517
  %519 = add nsw i64 %518, 1
  %520 = getelementptr inbounds i64, ptr %515, i64 %519
  store i64 %514, ptr %520, align 8, !tbaa !9
  %521 = load i64, ptr %43, align 8, !tbaa !9
  %522 = add nsw i64 %521, 1
  store i64 %522, ptr %43, align 8, !tbaa !9
  br label %523

523:                                              ; preds = %503, %444
  store i64 1, ptr %35, align 8, !tbaa !9
  %524 = load ptr, ptr %24, align 8, !tbaa !5
  %525 = load i64, ptr %33, align 8, !tbaa !9
  %526 = add nsw i64 %525, 1
  %527 = getelementptr inbounds i64, ptr %524, i64 %526
  %528 = load i64, ptr %527, align 8, !tbaa !9
  store i64 %528, ptr %31, align 8, !tbaa !9
  %529 = load i64, ptr %51, align 8, !tbaa !9
  store i64 %529, ptr %34, align 8, !tbaa !9
  br label %530

530:                                              ; preds = %543, %523
  %531 = load i64, ptr %34, align 8, !tbaa !9
  %532 = load i64, ptr %31, align 8, !tbaa !9
  %533 = icmp sle i64 %531, %532
  br i1 %533, label %534, label %546

534:                                              ; preds = %530
  %535 = load i64, ptr %35, align 8, !tbaa !9
  %536 = load ptr, ptr %24, align 8, !tbaa !5
  %537 = load i64, ptr %45, align 8, !tbaa !9
  %538 = load i64, ptr %34, align 8, !tbaa !9
  %539 = add nsw i64 %537, %538
  %540 = getelementptr inbounds i64, ptr %536, i64 %539
  store i64 %535, ptr %540, align 8, !tbaa !9
  %541 = load i64, ptr %35, align 8, !tbaa !9
  %542 = add nsw i64 %541, 1
  store i64 %542, ptr %35, align 8, !tbaa !9
  br label %543

543:                                              ; preds = %534
  %544 = load i64, ptr %34, align 8, !tbaa !9
  %545 = add nsw i64 %544, 1
  store i64 %545, ptr %34, align 8, !tbaa !9
  br label %530, !llvm.loop !18

546:                                              ; preds = %530
  br label %547

547:                                              ; preds = %546
  %548 = load i64, ptr %33, align 8, !tbaa !9
  %549 = add nsw i64 %548, 1
  store i64 %549, ptr %33, align 8, !tbaa !9
  br label %390, !llvm.loop !19

550:                                              ; preds = %390
  store i64 1, ptr %55, align 8, !tbaa !9
  br label %551

551:                                              ; preds = %700, %550
  %552 = load i64, ptr %53, align 8, !tbaa !9
  %553 = icmp sgt i64 %552, 1
  br i1 %553, label %554, label %705

554:                                              ; preds = %551
  %555 = load i64, ptr %53, align 8, !tbaa !9
  %556 = sub nsw i64 %555, 2
  store i64 %556, ptr %41, align 8, !tbaa !9
  %557 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %557, ptr %30, align 8, !tbaa !9
  store i64 0, ptr %33, align 8, !tbaa !9
  br label %558

558:                                              ; preds = %697, %554
  %559 = load i64, ptr %33, align 8, !tbaa !9
  %560 = load i64, ptr %30, align 8, !tbaa !9
  %561 = icmp sle i64 %559, %560
  br i1 %561, label %562, label %700

562:                                              ; preds = %558
  %563 = load i64, ptr %33, align 8, !tbaa !9
  %564 = icmp eq i64 %563, 0
  br i1 %564, label %565, label %572

565:                                              ; preds = %562
  store i64 1, ptr %51, align 8, !tbaa !9
  %566 = load ptr, ptr %24, align 8, !tbaa !5
  %567 = getelementptr inbounds i64, ptr %566, i64 2
  %568 = load i64, ptr %567, align 8, !tbaa !9
  store i64 %568, ptr %56, align 8, !tbaa !9
  %569 = load ptr, ptr %24, align 8, !tbaa !5
  %570 = getelementptr inbounds i64, ptr %569, i64 1
  %571 = load i64, ptr %570, align 8, !tbaa !9
  store i64 %571, ptr %38, align 8, !tbaa !9
  store i64 0, ptr %52, align 8, !tbaa !9
  br label %592

572:                                              ; preds = %562
  %573 = load ptr, ptr %24, align 8, !tbaa !5
  %574 = load i64, ptr %33, align 8, !tbaa !9
  %575 = getelementptr inbounds i64, ptr %573, i64 %574
  %576 = load i64, ptr %575, align 8, !tbaa !9
  %577 = add nsw i64 %576, 1
  store i64 %577, ptr %51, align 8, !tbaa !9
  %578 = load ptr, ptr %24, align 8, !tbaa !5
  %579 = load i64, ptr %33, align 8, !tbaa !9
  %580 = add nsw i64 %579, 2
  %581 = getelementptr inbounds i64, ptr %578, i64 %580
  %582 = load i64, ptr %581, align 8, !tbaa !9
  %583 = load ptr, ptr %24, align 8, !tbaa !5
  %584 = load i64, ptr %33, align 8, !tbaa !9
  %585 = getelementptr inbounds i64, ptr %583, i64 %584
  %586 = load i64, ptr %585, align 8, !tbaa !9
  %587 = sub nsw i64 %582, %586
  store i64 %587, ptr %56, align 8, !tbaa !9
  %588 = load i64, ptr %56, align 8, !tbaa !9
  %589 = sdiv i64 %588, 2
  store i64 %589, ptr %38, align 8, !tbaa !9
  %590 = load i64, ptr %52, align 8, !tbaa !9
  %591 = add nsw i64 %590, 1
  store i64 %591, ptr %52, align 8, !tbaa !9
  br label %592

592:                                              ; preds = %572, %565
  %593 = load ptr, ptr %14, align 8, !tbaa !5
  %594 = load i64, ptr %593, align 8, !tbaa !9
  %595 = icmp eq i64 %594, 2
  br i1 %595, label %596, label %627

596:                                              ; preds = %592
  %597 = load ptr, ptr %17, align 8, !tbaa !5
  %598 = load i64, ptr %51, align 8, !tbaa !9
  %599 = getelementptr inbounds double, ptr %597, i64 %598
  %600 = load ptr, ptr %19, align 8, !tbaa !5
  %601 = load i64, ptr %51, align 8, !tbaa !9
  %602 = load i64, ptr %51, align 8, !tbaa !9
  %603 = load i64, ptr %26, align 8, !tbaa !9
  %604 = mul nsw i64 %602, %603
  %605 = add nsw i64 %601, %604
  %606 = getelementptr inbounds double, ptr %600, i64 %605
  %607 = load ptr, ptr %20, align 8, !tbaa !5
  %608 = load ptr, ptr %24, align 8, !tbaa !5
  %609 = load i64, ptr %45, align 8, !tbaa !9
  %610 = load i64, ptr %51, align 8, !tbaa !9
  %611 = add nsw i64 %609, %610
  %612 = getelementptr inbounds i64, ptr %608, i64 %611
  %613 = load ptr, ptr %18, align 8, !tbaa !5
  %614 = load i64, ptr %51, align 8, !tbaa !9
  %615 = load i64, ptr %38, align 8, !tbaa !9
  %616 = add nsw i64 %614, %615
  %617 = sub nsw i64 %616, 1
  %618 = getelementptr inbounds double, ptr %613, i64 %617
  %619 = load ptr, ptr %23, align 8, !tbaa !5
  %620 = getelementptr inbounds double, ptr %619, i64 1
  %621 = load ptr, ptr %24, align 8, !tbaa !5
  %622 = load i64, ptr %53, align 8, !tbaa !9
  %623 = add nsw i64 %622, 1
  %624 = getelementptr inbounds i64, ptr %621, i64 %623
  %625 = load ptr, ptr %25, align 8, !tbaa !5
  %626 = call i32 @dlaed1_(ptr noundef %56, ptr noundef %599, ptr noundef %606, ptr noundef %607, ptr noundef %612, ptr noundef %618, ptr noundef %38, ptr noundef %620, ptr noundef %624, ptr noundef %625)
  br label %681

627:                                              ; preds = %592
  %628 = load ptr, ptr %14, align 8, !tbaa !5
  %629 = load ptr, ptr %15, align 8, !tbaa !5
  %630 = load ptr, ptr %17, align 8, !tbaa !5
  %631 = load i64, ptr %51, align 8, !tbaa !9
  %632 = getelementptr inbounds double, ptr %630, i64 %631
  %633 = load ptr, ptr %21, align 8, !tbaa !5
  %634 = load i64, ptr %51, align 8, !tbaa !9
  %635 = load i64, ptr %28, align 8, !tbaa !9
  %636 = mul nsw i64 %634, %635
  %637 = add nsw i64 %636, 1
  %638 = getelementptr inbounds double, ptr %633, i64 %637
  %639 = load ptr, ptr %22, align 8, !tbaa !5
  %640 = load ptr, ptr %24, align 8, !tbaa !5
  %641 = load i64, ptr %45, align 8, !tbaa !9
  %642 = load i64, ptr %51, align 8, !tbaa !9
  %643 = add nsw i64 %641, %642
  %644 = getelementptr inbounds i64, ptr %640, i64 %643
  %645 = load ptr, ptr %18, align 8, !tbaa !5
  %646 = load i64, ptr %51, align 8, !tbaa !9
  %647 = load i64, ptr %38, align 8, !tbaa !9
  %648 = add nsw i64 %646, %647
  %649 = sub nsw i64 %648, 1
  %650 = getelementptr inbounds double, ptr %645, i64 %649
  %651 = load ptr, ptr %23, align 8, !tbaa !5
  %652 = load i64, ptr %36, align 8, !tbaa !9
  %653 = getelementptr inbounds double, ptr %651, i64 %652
  %654 = load ptr, ptr %24, align 8, !tbaa !5
  %655 = load i64, ptr %47, align 8, !tbaa !9
  %656 = getelementptr inbounds i64, ptr %654, i64 %655
  %657 = load ptr, ptr %24, align 8, !tbaa !5
  %658 = load i64, ptr %57, align 8, !tbaa !9
  %659 = getelementptr inbounds i64, ptr %657, i64 %658
  %660 = load ptr, ptr %24, align 8, !tbaa !5
  %661 = load i64, ptr %44, align 8, !tbaa !9
  %662 = getelementptr inbounds i64, ptr %660, i64 %661
  %663 = load ptr, ptr %24, align 8, !tbaa !5
  %664 = load i64, ptr %54, align 8, !tbaa !9
  %665 = getelementptr inbounds i64, ptr %663, i64 %664
  %666 = load ptr, ptr %24, align 8, !tbaa !5
  %667 = load i64, ptr %49, align 8, !tbaa !9
  %668 = getelementptr inbounds i64, ptr %666, i64 %667
  %669 = load ptr, ptr %23, align 8, !tbaa !5
  %670 = load i64, ptr %50, align 8, !tbaa !9
  %671 = getelementptr inbounds double, ptr %669, i64 %670
  %672 = load ptr, ptr %23, align 8, !tbaa !5
  %673 = load i64, ptr %46, align 8, !tbaa !9
  %674 = getelementptr inbounds double, ptr %672, i64 %673
  %675 = load ptr, ptr %24, align 8, !tbaa !5
  %676 = load i64, ptr %53, align 8, !tbaa !9
  %677 = add nsw i64 %676, 1
  %678 = getelementptr inbounds i64, ptr %675, i64 %677
  %679 = load ptr, ptr %25, align 8, !tbaa !5
  %680 = call i32 @dlaed7_(ptr noundef %628, ptr noundef %56, ptr noundef %629, ptr noundef %48, ptr noundef %55, ptr noundef %52, ptr noundef %632, ptr noundef %638, ptr noundef %639, ptr noundef %644, ptr noundef %650, ptr noundef %38, ptr noundef %653, ptr noundef %656, ptr noundef %659, ptr noundef %662, ptr noundef %665, ptr noundef %668, ptr noundef %671, ptr noundef %674, ptr noundef %678, ptr noundef %679)
  br label %681

681:                                              ; preds = %627, %596
  %682 = load ptr, ptr %25, align 8, !tbaa !5
  %683 = load i64, ptr %682, align 8, !tbaa !9
  %684 = icmp ne i64 %683, 0
  br i1 %684, label %685, label %686

685:                                              ; preds = %681
  br label %850

686:                                              ; preds = %681
  %687 = load ptr, ptr %24, align 8, !tbaa !5
  %688 = load i64, ptr %33, align 8, !tbaa !9
  %689 = add nsw i64 %688, 2
  %690 = getelementptr inbounds i64, ptr %687, i64 %689
  %691 = load i64, ptr %690, align 8, !tbaa !9
  %692 = load ptr, ptr %24, align 8, !tbaa !5
  %693 = load i64, ptr %33, align 8, !tbaa !9
  %694 = sdiv i64 %693, 2
  %695 = add nsw i64 %694, 1
  %696 = getelementptr inbounds i64, ptr %692, i64 %695
  store i64 %691, ptr %696, align 8, !tbaa !9
  br label %697

697:                                              ; preds = %686
  %698 = load i64, ptr %33, align 8, !tbaa !9
  %699 = add nsw i64 %698, 2
  store i64 %699, ptr %33, align 8, !tbaa !9
  br label %558, !llvm.loop !20

700:                                              ; preds = %558
  %701 = load i64, ptr %53, align 8, !tbaa !9
  %702 = sdiv i64 %701, 2
  store i64 %702, ptr %53, align 8, !tbaa !9
  %703 = load i64, ptr %55, align 8, !tbaa !9
  %704 = add nsw i64 %703, 1
  store i64 %704, ptr %55, align 8, !tbaa !9
  br label %551

705:                                              ; preds = %551
  %706 = load ptr, ptr %14, align 8, !tbaa !5
  %707 = load i64, ptr %706, align 8, !tbaa !9
  %708 = icmp eq i64 %707, 1
  br i1 %708, label %709, label %754

709:                                              ; preds = %705
  %710 = load ptr, ptr %16, align 8, !tbaa !5
  %711 = load i64, ptr %710, align 8, !tbaa !9
  store i64 %711, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %33, align 8, !tbaa !9
  br label %712

712:                                              ; preds = %744, %709
  %713 = load i64, ptr %33, align 8, !tbaa !9
  %714 = load i64, ptr %30, align 8, !tbaa !9
  %715 = icmp sle i64 %713, %714
  br i1 %715, label %716, label %747

716:                                              ; preds = %712
  %717 = load ptr, ptr %24, align 8, !tbaa !5
  %718 = load i64, ptr %45, align 8, !tbaa !9
  %719 = load i64, ptr %33, align 8, !tbaa !9
  %720 = add nsw i64 %718, %719
  %721 = getelementptr inbounds i64, ptr %717, i64 %720
  %722 = load i64, ptr %721, align 8, !tbaa !9
  store i64 %722, ptr %34, align 8, !tbaa !9
  %723 = load ptr, ptr %17, align 8, !tbaa !5
  %724 = load i64, ptr %34, align 8, !tbaa !9
  %725 = getelementptr inbounds double, ptr %723, i64 %724
  %726 = load double, ptr %725, align 8, !tbaa !14
  %727 = load ptr, ptr %23, align 8, !tbaa !5
  %728 = load i64, ptr %33, align 8, !tbaa !9
  %729 = getelementptr inbounds double, ptr %727, i64 %728
  store double %726, ptr %729, align 8, !tbaa !14
  %730 = load ptr, ptr %15, align 8, !tbaa !5
  %731 = load ptr, ptr %21, align 8, !tbaa !5
  %732 = load i64, ptr %34, align 8, !tbaa !9
  %733 = load i64, ptr %28, align 8, !tbaa !9
  %734 = mul nsw i64 %732, %733
  %735 = add nsw i64 %734, 1
  %736 = getelementptr inbounds double, ptr %731, i64 %735
  %737 = load ptr, ptr %19, align 8, !tbaa !5
  %738 = load i64, ptr %33, align 8, !tbaa !9
  %739 = load i64, ptr %26, align 8, !tbaa !9
  %740 = mul nsw i64 %738, %739
  %741 = add nsw i64 %740, 1
  %742 = getelementptr inbounds double, ptr %737, i64 %741
  %743 = call i32 @f2c_dcopy(ptr noundef %730, ptr noundef %736, ptr noundef @c__1, ptr noundef %742, ptr noundef @c__1)
  br label %744

744:                                              ; preds = %716
  %745 = load i64, ptr %33, align 8, !tbaa !9
  %746 = add nsw i64 %745, 1
  store i64 %746, ptr %33, align 8, !tbaa !9
  br label %712, !llvm.loop !21

747:                                              ; preds = %712
  %748 = load ptr, ptr %16, align 8, !tbaa !5
  %749 = load ptr, ptr %23, align 8, !tbaa !5
  %750 = getelementptr inbounds double, ptr %749, i64 1
  %751 = load ptr, ptr %17, align 8, !tbaa !5
  %752 = getelementptr inbounds double, ptr %751, i64 1
  %753 = call i32 @f2c_dcopy(ptr noundef %748, ptr noundef %750, ptr noundef @c__1, ptr noundef %752, ptr noundef @c__1)
  br label %849

754:                                              ; preds = %705
  %755 = load ptr, ptr %14, align 8, !tbaa !5
  %756 = load i64, ptr %755, align 8, !tbaa !9
  %757 = icmp eq i64 %756, 2
  br i1 %757, label %758, label %817

758:                                              ; preds = %754
  %759 = load ptr, ptr %16, align 8, !tbaa !5
  %760 = load i64, ptr %759, align 8, !tbaa !9
  store i64 %760, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %33, align 8, !tbaa !9
  br label %761

761:                                              ; preds = %794, %758
  %762 = load i64, ptr %33, align 8, !tbaa !9
  %763 = load i64, ptr %30, align 8, !tbaa !9
  %764 = icmp sle i64 %762, %763
  br i1 %764, label %765, label %797

765:                                              ; preds = %761
  %766 = load ptr, ptr %24, align 8, !tbaa !5
  %767 = load i64, ptr %45, align 8, !tbaa !9
  %768 = load i64, ptr %33, align 8, !tbaa !9
  %769 = add nsw i64 %767, %768
  %770 = getelementptr inbounds i64, ptr %766, i64 %769
  %771 = load i64, ptr %770, align 8, !tbaa !9
  store i64 %771, ptr %34, align 8, !tbaa !9
  %772 = load ptr, ptr %17, align 8, !tbaa !5
  %773 = load i64, ptr %34, align 8, !tbaa !9
  %774 = getelementptr inbounds double, ptr %772, i64 %773
  %775 = load double, ptr %774, align 8, !tbaa !14
  %776 = load ptr, ptr %23, align 8, !tbaa !5
  %777 = load i64, ptr %33, align 8, !tbaa !9
  %778 = getelementptr inbounds double, ptr %776, i64 %777
  store double %775, ptr %778, align 8, !tbaa !14
  %779 = load ptr, ptr %16, align 8, !tbaa !5
  %780 = load ptr, ptr %19, align 8, !tbaa !5
  %781 = load i64, ptr %34, align 8, !tbaa !9
  %782 = load i64, ptr %26, align 8, !tbaa !9
  %783 = mul nsw i64 %781, %782
  %784 = add nsw i64 %783, 1
  %785 = getelementptr inbounds double, ptr %780, i64 %784
  %786 = load ptr, ptr %23, align 8, !tbaa !5
  %787 = load ptr, ptr %16, align 8, !tbaa !5
  %788 = load i64, ptr %787, align 8, !tbaa !9
  %789 = load i64, ptr %33, align 8, !tbaa !9
  %790 = mul nsw i64 %788, %789
  %791 = add nsw i64 %790, 1
  %792 = getelementptr inbounds double, ptr %786, i64 %791
  %793 = call i32 @f2c_dcopy(ptr noundef %779, ptr noundef %785, ptr noundef @c__1, ptr noundef %792, ptr noundef @c__1)
  br label %794

794:                                              ; preds = %765
  %795 = load i64, ptr %33, align 8, !tbaa !9
  %796 = add nsw i64 %795, 1
  store i64 %796, ptr %33, align 8, !tbaa !9
  br label %761, !llvm.loop !22

797:                                              ; preds = %761
  %798 = load ptr, ptr %16, align 8, !tbaa !5
  %799 = load ptr, ptr %23, align 8, !tbaa !5
  %800 = getelementptr inbounds double, ptr %799, i64 1
  %801 = load ptr, ptr %17, align 8, !tbaa !5
  %802 = getelementptr inbounds double, ptr %801, i64 1
  %803 = call i32 @f2c_dcopy(ptr noundef %798, ptr noundef %800, ptr noundef @c__1, ptr noundef %802, ptr noundef @c__1)
  %804 = load ptr, ptr %16, align 8, !tbaa !5
  %805 = load ptr, ptr %16, align 8, !tbaa !5
  %806 = load ptr, ptr %23, align 8, !tbaa !5
  %807 = load ptr, ptr %16, align 8, !tbaa !5
  %808 = load i64, ptr %807, align 8, !tbaa !9
  %809 = add nsw i64 %808, 1
  %810 = getelementptr inbounds double, ptr %806, i64 %809
  %811 = load ptr, ptr %16, align 8, !tbaa !5
  %812 = load ptr, ptr %19, align 8, !tbaa !5
  %813 = load i64, ptr %27, align 8, !tbaa !9
  %814 = getelementptr inbounds double, ptr %812, i64 %813
  %815 = load ptr, ptr %20, align 8, !tbaa !5
  %816 = call i32 @dlacpy_(ptr noundef @.str.4, ptr noundef %804, ptr noundef %805, ptr noundef %810, ptr noundef %811, ptr noundef %814, ptr noundef %815)
  br label %848

817:                                              ; preds = %754
  %818 = load ptr, ptr %16, align 8, !tbaa !5
  %819 = load i64, ptr %818, align 8, !tbaa !9
  store i64 %819, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %33, align 8, !tbaa !9
  br label %820

820:                                              ; preds = %838, %817
  %821 = load i64, ptr %33, align 8, !tbaa !9
  %822 = load i64, ptr %30, align 8, !tbaa !9
  %823 = icmp sle i64 %821, %822
  br i1 %823, label %824, label %841

824:                                              ; preds = %820
  %825 = load ptr, ptr %24, align 8, !tbaa !5
  %826 = load i64, ptr %45, align 8, !tbaa !9
  %827 = load i64, ptr %33, align 8, !tbaa !9
  %828 = add nsw i64 %826, %827
  %829 = getelementptr inbounds i64, ptr %825, i64 %828
  %830 = load i64, ptr %829, align 8, !tbaa !9
  store i64 %830, ptr %34, align 8, !tbaa !9
  %831 = load ptr, ptr %17, align 8, !tbaa !5
  %832 = load i64, ptr %34, align 8, !tbaa !9
  %833 = getelementptr inbounds double, ptr %831, i64 %832
  %834 = load double, ptr %833, align 8, !tbaa !14
  %835 = load ptr, ptr %23, align 8, !tbaa !5
  %836 = load i64, ptr %33, align 8, !tbaa !9
  %837 = getelementptr inbounds double, ptr %835, i64 %836
  store double %834, ptr %837, align 8, !tbaa !14
  br label %838

838:                                              ; preds = %824
  %839 = load i64, ptr %33, align 8, !tbaa !9
  %840 = add nsw i64 %839, 1
  store i64 %840, ptr %33, align 8, !tbaa !9
  br label %820, !llvm.loop !23

841:                                              ; preds = %820
  %842 = load ptr, ptr %16, align 8, !tbaa !5
  %843 = load ptr, ptr %23, align 8, !tbaa !5
  %844 = getelementptr inbounds double, ptr %843, i64 1
  %845 = load ptr, ptr %17, align 8, !tbaa !5
  %846 = getelementptr inbounds double, ptr %845, i64 1
  %847 = call i32 @f2c_dcopy(ptr noundef %842, ptr noundef %844, ptr noundef @c__1, ptr noundef %846, ptr noundef @c__1)
  br label %848

848:                                              ; preds = %841, %797
  br label %849

849:                                              ; preds = %848, %747
  br label %862

850:                                              ; preds = %685, %470, %443
  %851 = load i64, ptr %51, align 8, !tbaa !9
  %852 = load ptr, ptr %16, align 8, !tbaa !5
  %853 = load i64, ptr %852, align 8, !tbaa !9
  %854 = add nsw i64 %853, 1
  %855 = mul nsw i64 %851, %854
  %856 = load i64, ptr %51, align 8, !tbaa !9
  %857 = add nsw i64 %855, %856
  %858 = load i64, ptr %56, align 8, !tbaa !9
  %859 = add nsw i64 %857, %858
  %860 = sub nsw i64 %859, 1
  %861 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 %860, ptr %861, align 8, !tbaa !9
  br label %862

862:                                              ; preds = %850, %849
  store i32 0, ptr %13, align 4
  store i32 1, ptr %59, align 4
  br label %863

863:                                              ; preds = %862, %166, %157
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #4
  %864 = load i32, ptr %13, align 4
  ret i32 %864
}

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

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

declare i64 @ilaenv_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

declare i64 @pow_ii(ptr noundef, ptr noundef) #2

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

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

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

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

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

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

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind }

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

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


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@.str = external hidden unnamed_addr constant [7 x i8], align 1
@c__9 = external hidden global i64, align 8
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i64, align 8
@c__2 = external hidden global i64, align 8
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b23 = external hidden global double, align 8
@c_b24 = external hidden global double, align 8
@c__1 = external hidden global i64, align 8
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1

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

31:                                               ; preds = %12
  %32 = icmp eq i64 %30, 1
  br i1 %32, label %33, label %thread-pre-split

33:                                               ; preds = %31
  %34 = load i64, ptr %1, align 8, !tbaa !5
  %35 = load i64, ptr %2, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.smax.i64(i64 %35, i64 0)
  %36 = icmp slt i64 %34, %spec.select
  br i1 %36, label %.thread, label %37

thread-pre-split:                                 ; preds = %31
  %.pr = load i64, ptr %2, align 8, !tbaa !5
  br label %37

37:                                               ; preds = %thread-pre-split, %33
  %38 = phi i64 [ %.pr, %thread-pre-split ], [ %35, %33 ]
  %39 = icmp slt i64 %38, 0
  br i1 %39, label %.thread, label %40

40:                                               ; preds = %37
  %41 = load i64, ptr %6, align 8, !tbaa !5
  %spec.select358 = tail call i64 @llvm.umax.i64(i64 %38, i64 1)
  %42 = icmp slt i64 %41, %spec.select358
  br i1 %42, label %.thread, label %43

43:                                               ; preds = %40
  %44 = load i64, ptr %8, align 8, !tbaa !5
  %45 = icmp slt i64 %44, %spec.select358
  br i1 %45, label %.thread, label %47

.thread:                                          ; preds = %43, %40, %37, %33, %12
  %.sink = phi i64 [ -1, %12 ], [ -2, %33 ], [ -3, %37 ], [ -7, %40 ], [ -9, %43 ]
  %.neg = phi i64 [ 1, %12 ], [ 2, %33 ], [ 3, %37 ], [ 7, %40 ], [ 9, %43 ]
  store i64 %.sink, ptr %11, align 8, !tbaa !5
  store i64 %.neg, ptr %13, align 8, !tbaa !5
  %46 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %13) #5
  br label %373

47:                                               ; preds = %43
  %48 = icmp eq i64 %38, 0
  br i1 %48, label %373, label %49

49:                                               ; preds = %47
  %50 = tail call i64 @ilaenv_(ptr noundef nonnull @c__9, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0) #5
  %51 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %51, ptr %10, align 8, !tbaa !5
  %52 = icmp sgt i64 %51, %50
  br i1 %52, label %.preheader365, label %._crit_edge368.thread

._crit_edge368.thread:                            ; preds = %49
  store i64 0, ptr %16, align 8, !tbaa !5
  br label %._crit_edge379

.preheader365:                                    ; preds = %49, %._crit_edge
  %.0319367 = phi i64 [ %66, %._crit_edge ], [ 1, %49 ]
  %53 = phi i64 [ %65, %._crit_edge ], [ 0, %49 ]
  %54 = icmp sgt i64 %.0319367, 0
  br i1 %54, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %.preheader365, %.lr.ph
  %.0330366 = phi i64 [ %63, %.lr.ph ], [ %.0319367, %.preheader365 ]
  %55 = getelementptr inbounds i64, ptr %29, i64 %.0330366
  %56 = load i64, ptr %55, align 8, !tbaa !5
  %57 = add nsw i64 %56, 1
  %58 = sdiv i64 %57, 2
  %.idx = shl nsw i64 %.0330366, 4
  %59 = getelementptr inbounds i8, ptr %29, i64 %.idx
  store i64 %58, ptr %59, align 8, !tbaa !5
  %60 = load i64, ptr %55, align 8, !tbaa !5
  %61 = sdiv i64 %60, 2
  %62 = getelementptr i8, ptr %59, i64 -8
  store i64 %61, ptr %62, align 8, !tbaa !5
  %63 = add nsw i64 %.0330366, -1
  %64 = icmp ugt i64 %.0330366, 1
  br i1 %64, label %.lr.ph, label %._crit_edge, !llvm.loop !9

._crit_edge:                                      ; preds = %.lr.ph, %.preheader365
  %65 = add nuw nsw i64 %53, 1
  %66 = shl i64 %.0319367, 1
  %67 = getelementptr inbounds i64, ptr %29, i64 %66
  %68 = load i64, ptr %67, align 8, !tbaa !5
  %69 = icmp sgt i64 %68, %50
  br i1 %69, label %.preheader365, label %._crit_edge368

._crit_edge368:                                   ; preds = %._crit_edge
  store i64 %65, ptr %16, align 8, !tbaa !5
  %.not341370 = icmp slt i64 %66, 2
  br i1 %.not341370, label %._crit_edge379, label %.lr.ph373.preheader

.lr.ph373.preheader:                              ; preds = %._crit_edge368
  %load_initial = load i64, ptr %10, align 8
  %70 = add nsw i64 %66, -1
  %71 = add nsw i64 %66, -2
  %xtraiter = and i64 %70, 3
  %72 = icmp ult i64 %71, 3
  br i1 %72, label %.lr.ph373.epil.preheader, label %.lr.ph373.preheader.new

.lr.ph373.preheader.new:                          ; preds = %.lr.ph373.preheader
  %unroll_iter = and i64 %70, -4
  %invariant.gep506 = getelementptr i8, ptr %29, i64 16
  %invariant.gep508 = getelementptr i8, ptr %29, i64 24
  br label %.lr.ph373

.lr.ph373:                                        ; preds = %.lr.ph373, %.lr.ph373.preheader.new
  %store_forwarded = phi i64 [ %load_initial, %.lr.ph373.preheader.new ], [ %82, %.lr.ph373 ]
  %.1331371 = phi i64 [ 2, %.lr.ph373.preheader.new ], [ %83, %.lr.ph373 ]
  %niter = phi i64 [ 0, %.lr.ph373.preheader.new ], [ %niter.next.3, %.lr.ph373 ]
  %73 = getelementptr i64, ptr %29, i64 %.1331371
  %74 = load i64, ptr %73, align 8, !tbaa !5
  %75 = add nsw i64 %74, %store_forwarded
  store i64 %75, ptr %73, align 8, !tbaa !5
  %76 = getelementptr i64, ptr %10, i64 %.1331371
  %77 = load i64, ptr %76, align 8, !tbaa !5
  %78 = add nsw i64 %77, %75
  store i64 %78, ptr %76, align 8, !tbaa !5
  %gep507 = getelementptr i64, ptr %invariant.gep506, i64 %.1331371
  %79 = load i64, ptr %gep507, align 8, !tbaa !5
  %80 = add nsw i64 %79, %78
  store i64 %80, ptr %gep507, align 8, !tbaa !5
  %gep509 = getelementptr i64, ptr %invariant.gep508, i64 %.1331371
  %81 = load i64, ptr %gep509, align 8, !tbaa !5
  %82 = add nsw i64 %81, %80
  store i64 %82, ptr %gep509, align 8, !tbaa !5
  %83 = add nuw nsw i64 %.1331371, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %.lr.ph373.epil.preheader, label %.lr.ph373, !llvm.loop !11

.lr.ph373.epil.preheader:                         ; preds = %.lr.ph373.preheader, %.lr.ph373
  %store_forwarded.unr = phi i64 [ %load_initial, %.lr.ph373.preheader ], [ %82, %.lr.ph373 ]
  %.1331371.unr = phi i64 [ 2, %.lr.ph373.preheader ], [ %83, %.lr.ph373 ]
  br label %.lr.ph373.epil

.lr.ph373.epil:                                   ; preds = %.lr.ph373.epil, %.lr.ph373.epil.preheader
  %store_forwarded.epil = phi i64 [ %store_forwarded.unr, %.lr.ph373.epil.preheader ], [ %86, %.lr.ph373.epil ]
  %.1331371.epil = phi i64 [ %.1331371.unr, %.lr.ph373.epil.preheader ], [ %87, %.lr.ph373.epil ]
  %epil.iter = phi i64 [ 0, %.lr.ph373.epil.preheader ], [ %epil.iter.next, %.lr.ph373.epil ]
  %84 = getelementptr i64, ptr %29, i64 %.1331371.epil
  %85 = load i64, ptr %84, align 8, !tbaa !5
  %86 = add nsw i64 %85, %store_forwarded.epil
  store i64 %86, ptr %84, align 8, !tbaa !5
  %87 = add nuw nsw i64 %.1331371.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %.lr.ph378, label %.lr.ph373.epil, !llvm.loop !12

.lr.ph378:                                        ; preds = %.lr.ph373.epil, %.lr.ph378
  %.0333376 = phi i64 [ %105, %.lr.ph378 ], [ 1, %.lr.ph373.epil ]
  %88 = getelementptr inbounds i64, ptr %29, i64 %.0333376
  %89 = load i64, ptr %88, align 8, !tbaa !5
  %90 = getelementptr inbounds double, ptr %21, i64 %89
  %91 = load double, ptr %90, align 8, !tbaa !14
  %92 = fcmp oge double %91, 0.000000e+00
  %93 = fneg double %91
  %94 = select i1 %92, double %91, double %93
  %95 = getelementptr inbounds double, ptr %20, i64 %89
  %96 = load double, ptr %95, align 8, !tbaa !14
  %97 = fsub double %96, %94
  store double %97, ptr %95, align 8, !tbaa !14
  %98 = load double, ptr %90, align 8, !tbaa !14
  %99 = fcmp oge double %98, 0.000000e+00
  %100 = fneg double %98
  %101 = select i1 %99, double %98, double %100
  %102 = getelementptr double, ptr %3, i64 %89
  %103 = load double, ptr %102, align 8, !tbaa !14
  %104 = fsub double %103, %101
  store double %104, ptr %102, align 8, !tbaa !14
  %105 = add nuw nsw i64 %.0333376, 1
  %exitcond433.not = icmp eq i64 %105, %66
  br i1 %exitcond433.not, label %._crit_edge379, label %.lr.ph378, !llvm.loop !16

._crit_edge379:                                   ; preds = %.lr.ph378, %._crit_edge368, %._crit_edge368.thread
  %.not342.not375451 = phi i1 [ false, %._crit_edge368.thread ], [ false, %._crit_edge368 ], [ true, %.lr.ph378 ]
  %.0319.lcssa447450 = phi i64 [ 1, %._crit_edge368.thread ], [ %66, %._crit_edge368 ], [ %66, %.lr.ph378 ]
  %106 = add nsw i64 %.0319.lcssa447450, -1
  %107 = load i64, ptr %2, align 8, !tbaa !5
  %108 = shl i64 %107, 2
  %109 = or disjoint i64 %108, 3
  %110 = load i64, ptr %0, align 8, !tbaa !5
  %.not343 = icmp eq i64 %110, 2
  br i1 %.not343, label %175, label %111

111:                                              ; preds = %._crit_edge379
  %112 = sitofp i64 %107 to double
  %113 = tail call double @log(double noundef %112) #5
  %114 = fdiv double %113, 0x3FE62E42FEFA39EF
  %115 = fptosi double %114 to i64
  store i64 %115, ptr %14, align 8, !tbaa !5
  %116 = call i64 @pow_ii(ptr noundef nonnull @c__2, ptr noundef nonnull %14) #5
  %117 = load i64, ptr %2, align 8, !tbaa !5
  %118 = icmp slt i64 %116, %117
  br i1 %118, label %119, label %122

119:                                              ; preds = %111
  %120 = load i64, ptr %14, align 8, !tbaa !5
  %121 = add nsw i64 %120, 1
  store i64 %121, ptr %14, align 8, !tbaa !5
  br label %122

122:                                              ; preds = %119, %111
  %123 = call i64 @pow_ii(ptr noundef nonnull @c__2, ptr noundef nonnull %14) #5
  %124 = load i64, ptr %2, align 8, !tbaa !5
  %125 = icmp slt i64 %123, %124
  %.pre = load i64, ptr %14, align 8, !tbaa !5
  br i1 %125, label %126, label %128

126:                                              ; preds = %122
  %127 = add nsw i64 %.pre, 1
  store i64 %127, ptr %14, align 8, !tbaa !5
  br label %128

128:                                              ; preds = %126, %122
  %129 = phi i64 [ %127, %126 ], [ %.pre, %122 ]
  %130 = add nsw i64 %124, %109
  %131 = add nsw i64 %130, 1
  %132 = mul nsw i64 %129, %124
  %133 = add nsw i64 %132, %131
  %134 = add nsw i64 %133, %132
  %135 = add i64 %124, 2
  %136 = add i64 %135, %134
  %137 = add nsw i64 %136, %132
  %138 = shl i64 %124, 1
  %139 = mul nsw i64 %138, %129
  %140 = or disjoint i64 %139, 1
  %141 = mul nsw i64 %124, %124
  %142 = add nuw i64 %141, 1
  %143 = add i64 %142, %140
  %.not344380 = icmp slt i64 %.0319.lcssa447450, 0
  br i1 %.not344380, label %._crit_edge384, label %.lr.ph383

.lr.ph383:                                        ; preds = %128
  %144 = getelementptr i64, ptr %10, i64 %130
  %145 = getelementptr i64, ptr %29, i64 %136
  %146 = add nuw nsw i64 %.0319.lcssa447450, 1
  %min.iters.check = icmp ult i64 %.0319.lcssa447450, 15
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph383
  %147 = shl i64 %129, 4
  %148 = or disjoint i64 %147, 8
  %149 = mul i64 %124, %148
  %150 = add i64 %149, 16
  %diff.check = icmp ult i64 %150, 32
  br i1 %diff.check, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %146, 9223372036854775804
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %151 = getelementptr i64, ptr %144, i64 %index
  %152 = getelementptr i8, ptr %151, i64 16
  store <2 x i64> <i64 1, i64 1>, ptr %151, align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr %152, align 8, !tbaa !5
  %153 = getelementptr i64, ptr %145, i64 %index
  %154 = getelementptr i8, ptr %153, i64 16
  store <2 x i64> <i64 1, i64 1>, ptr %153, align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr %154, align 8, !tbaa !5
  %index.next = add nuw i64 %index, 4
  %155 = icmp eq i64 %index.next, %n.vec
  br i1 %155, label %middle.block, label %vector.body, !llvm.loop !17

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

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph383
  %.1334381.ph = phi i64 [ 0, %vector.memcheck ], [ 0, %.lr.ph383 ], [ %n.vec, %middle.block ]
  %156 = add nuw i64 %.0319.lcssa447450, 1
  %157 = sub nsw i64 %.0319.lcssa447450, %.1334381.ph
  %xtraiter491 = and i64 %156, 3
  %lcmp.mod492.not = icmp eq i64 %xtraiter491, 0
  br i1 %lcmp.mod492.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader, %scalar.ph.prol
  %.1334381.prol = phi i64 [ %160, %scalar.ph.prol ], [ %.1334381.ph, %scalar.ph.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %158 = getelementptr i64, ptr %144, i64 %.1334381.prol
  store i64 1, ptr %158, align 8, !tbaa !5
  %159 = getelementptr i64, ptr %145, i64 %.1334381.prol
  store i64 1, ptr %159, align 8, !tbaa !5
  %160 = add nuw nsw i64 %.1334381.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter491
  br i1 %prol.iter.cmp.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol, !llvm.loop !20

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %.1334381.unr = phi i64 [ %.1334381.ph, %scalar.ph.preheader ], [ %160, %scalar.ph.prol ]
  %161 = icmp ult i64 %157, 3
  br i1 %161, label %._crit_edge384, label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %.1334381 = phi i64 [ %173, %scalar.ph ], [ %.1334381.unr, %scalar.ph.prol.loopexit ]
  %162 = getelementptr i64, ptr %144, i64 %.1334381
  store i64 1, ptr %162, align 8, !tbaa !5
  %163 = getelementptr i64, ptr %145, i64 %.1334381
  store i64 1, ptr %163, align 8, !tbaa !5
  %164 = add nuw nsw i64 %.1334381, 1
  %165 = getelementptr i64, ptr %144, i64 %164
  store i64 1, ptr %165, align 8, !tbaa !5
  %166 = getelementptr i64, ptr %145, i64 %164
  store i64 1, ptr %166, align 8, !tbaa !5
  %167 = add nuw nsw i64 %.1334381, 2
  %168 = getelementptr i64, ptr %144, i64 %167
  store i64 1, ptr %168, align 8, !tbaa !5
  %169 = getelementptr i64, ptr %145, i64 %167
  store i64 1, ptr %169, align 8, !tbaa !5
  %170 = add nuw nsw i64 %.1334381, 3
  %171 = getelementptr i64, ptr %144, i64 %170
  store i64 1, ptr %171, align 8, !tbaa !5
  %172 = getelementptr i64, ptr %145, i64 %170
  store i64 1, ptr %172, align 8, !tbaa !5
  %173 = add nuw nsw i64 %.1334381, 4
  %exitcond434.not.3 = icmp eq i64 %170, %.0319.lcssa447450
  br i1 %exitcond434.not.3, label %._crit_edge384, label %scalar.ph, !llvm.loop !21

._crit_edge384:                                   ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block, %128
  %174 = getelementptr inbounds i64, ptr %29, i64 %134
  store i64 1, ptr %174, align 8, !tbaa !5
  br label %175

175:                                              ; preds = %._crit_edge384, %._crit_edge379
  %.0328 = phi i64 [ %140, %._crit_edge384 ], [ undef, %._crit_edge379 ]
  %.0325 = phi i64 [ %133, %._crit_edge384 ], [ undef, %._crit_edge379 ]
  %.0324 = phi i64 [ %143, %._crit_edge384 ], [ undef, %._crit_edge379 ]
  %.0323 = phi i64 [ %134, %._crit_edge384 ], [ undef, %._crit_edge379 ]
  %.0322 = phi i64 [ %137, %._crit_edge384 ], [ undef, %._crit_edge379 ]
  %.0318 = phi i64 [ %136, %._crit_edge384 ], [ undef, %._crit_edge379 ]
  %.0317 = phi i64 [ %131, %._crit_edge384 ], [ undef, %._crit_edge379 ]
  %invariant.gep = getelementptr i8, ptr %24, i64 8
  %invariant.gep390 = getelementptr i8, ptr %27, i64 8
  %.not345392 = icmp slt i64 %.0319.lcssa447450, 1
  br i1 %.not345392, label %.preheader, label %.lr.ph396

.lr.ph396:                                        ; preds = %175
  %176 = getelementptr double, ptr %28, i64 %.0328
  %177 = getelementptr i8, ptr %176, i64 -8
  %178 = add i64 %22, 1
  %179 = getelementptr i64, ptr %29, i64 %109
  br label %193

.loopexit363:                                     ; preds = %.lr.ph389, %middle.block470, %237
  %.not345.not = icmp slt i64 %.2335393, %106
  br i1 %.not345.not, label %193, label %.preheader, !llvm.loop !22

.preheader:                                       ; preds = %.loopexit363, %175
  store i64 1, ptr %18, align 8, !tbaa !5
  br i1 %.not342.not375451, label %.lr.ph405, label %._crit_edge406

.lr.ph405:                                        ; preds = %.preheader
  %180 = getelementptr inbounds i8, ptr %10, i64 8
  %181 = getelementptr i64, ptr %29, i64 %109
  %182 = getelementptr inbounds double, ptr %28, i64 %.0328
  %183 = getelementptr inbounds i64, ptr %29, i64 %.0323
  %184 = getelementptr inbounds i64, ptr %29, i64 %.0317
  %185 = getelementptr inbounds i64, ptr %29, i64 %.0325
  %186 = getelementptr inbounds i64, ptr %29, i64 %.0318
  %187 = getelementptr inbounds i64, ptr %29, i64 %.0322
  %188 = getelementptr inbounds double, ptr %28, i64 %.0324
  %189 = add i64 %22, 1
  %gep398.peel = getelementptr double, ptr %invariant.gep390, i64 %25
  %190 = getelementptr i8, ptr %181, i64 8
  %invariant.gep460 = getelementptr i8, ptr %4, i64 -8
  %191 = getelementptr i8, ptr %181, i64 8
  %invariant.gep462 = getelementptr i8, ptr %4, i64 -8
  %192 = getelementptr inbounds i8, ptr %10, i64 8
  %invariant.gep458 = getelementptr inbounds i8, ptr %10, i64 8
  br label %252

193:                                              ; preds = %.lr.ph396, %.loopexit363
  %.0326394 = phi i64 [ 0, %.lr.ph396 ], [ %.1327, %.loopexit363 ]
  %.2335393 = phi i64 [ 0, %.lr.ph396 ], [ %238, %.loopexit363 ]
  %194 = icmp eq i64 %.2335393, 0
  br i1 %194, label %195, label %197

195:                                              ; preds = %193
  %196 = load i64, ptr %10, align 8, !tbaa !5
  br label %204

197:                                              ; preds = %193
  %198 = getelementptr inbounds i64, ptr %29, i64 %.2335393
  %199 = load i64, ptr %198, align 8, !tbaa !5
  %200 = add nsw i64 %199, 1
  %201 = getelementptr i64, ptr %10, i64 %.2335393
  %202 = load i64, ptr %201, align 8, !tbaa !5
  %203 = sub nsw i64 %202, %199
  br label %204

204:                                              ; preds = %197, %195
  %storemerge352 = phi i64 [ %203, %197 ], [ %196, %195 ]
  %.0320 = phi i64 [ %200, %197 ], [ 1, %195 ]
  store i64 %storemerge352, ptr %19, align 8, !tbaa !5
  %205 = load i64, ptr %0, align 8, !tbaa !5
  %206 = icmp eq i64 %205, 2
  %207 = getelementptr inbounds double, ptr %20, i64 %.0320
  %208 = getelementptr inbounds double, ptr %21, i64 %.0320
  br i1 %206, label %209, label %214

209:                                              ; preds = %204
  %210 = mul i64 %.0320, %178
  %211 = getelementptr inbounds double, ptr %24, i64 %210
  %212 = call i32 @dsteqr_(ptr noundef nonnull @.str.2, ptr noundef nonnull %19, ptr noundef nonnull %207, ptr noundef nonnull %208, ptr noundef %211, ptr noundef nonnull %6, ptr noundef %9, ptr noundef nonnull %11) #5
  %213 = load i64, ptr %11, align 8, !tbaa !5
  %.not354 = icmp eq i64 %213, 0
  br i1 %.not354, label %237, label %.loopexit

214:                                              ; preds = %204
  %215 = add nsw i64 %.0326394, %.0323
  %216 = getelementptr inbounds i64, ptr %29, i64 %215
  %217 = load i64, ptr %216, align 8, !tbaa !5
  %218 = getelementptr double, ptr %177, i64 %217
  %219 = call i32 @dsteqr_(ptr noundef nonnull @.str.2, ptr noundef nonnull %19, ptr noundef nonnull %207, ptr noundef nonnull %208, ptr noundef %218, ptr noundef nonnull %19, ptr noundef %9, ptr noundef nonnull %11) #5
  %220 = load i64, ptr %11, align 8, !tbaa !5
  %.not353 = icmp eq i64 %220, 0
  br i1 %.not353, label %221, label %.loopexit

221:                                              ; preds = %214
  %222 = load i64, ptr %0, align 8, !tbaa !5
  %223 = icmp eq i64 %222, 1
  br i1 %223, label %224, label %230

224:                                              ; preds = %221
  %225 = mul nsw i64 %.0320, %22
  %gep = getelementptr double, ptr %invariant.gep, i64 %225
  %226 = load i64, ptr %216, align 8, !tbaa !5
  %227 = getelementptr double, ptr %177, i64 %226
  %228 = mul nsw i64 %.0320, %25
  %gep391 = getelementptr double, ptr %invariant.gep390, i64 %228
  %229 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.3, ptr noundef %1, ptr noundef nonnull %19, ptr noundef nonnull %19, ptr noundef nonnull @c_b23, ptr noundef %gep, ptr noundef nonnull %6, ptr noundef %227, ptr noundef nonnull %19, ptr noundef nonnull @c_b24, ptr noundef %gep391, ptr noundef nonnull %8) #5
  br label %230

230:                                              ; preds = %224, %221
  %231 = load i64, ptr %19, align 8, !tbaa !5
  %232 = load i64, ptr %216, align 8, !tbaa !5
  %233 = mul nsw i64 %231, %231
  %234 = add nsw i64 %232, %233
  %235 = getelementptr i64, ptr %10, i64 %215
  store i64 %234, ptr %235, align 8, !tbaa !5
  %236 = add nsw i64 %.0326394, 1
  br label %237

237:                                              ; preds = %209, %230
  %.1327 = phi i64 [ %.0326394, %209 ], [ %236, %230 ]
  %238 = add nuw nsw i64 %.2335393, 1
  %239 = getelementptr i64, ptr %10, i64 %.2335393
  %240 = load i64, ptr %239, align 8, !tbaa !5
  %.not355385 = icmp sgt i64 %.0320, %240
  br i1 %.not355385, label %.loopexit363, label %.lr.ph389.preheader

.lr.ph389.preheader:                              ; preds = %237
  %241 = add i64 %240, 2
  %242 = sub i64 %241, %.0320
  %243 = add i64 %240, 1
  %244 = sub i64 %243, %.0320
  %min.iters.check472 = icmp ult i64 %244, 4
  br i1 %min.iters.check472, label %.lr.ph389.preheader486, label %vector.ph473

vector.ph473:                                     ; preds = %.lr.ph389.preheader
  %n.vec475 = and i64 %244, -4
  %ind.end = or disjoint i64 %n.vec475, 1
  %ind.end477 = add i64 %.0320, %n.vec475
  %245 = getelementptr i64, ptr %179, i64 %.0320
  br label %vector.body479

vector.body479:                                   ; preds = %vector.body479, %vector.ph473
  %index480 = phi i64 [ 0, %vector.ph473 ], [ %index.next482, %vector.body479 ]
  %vec.ind = phi <2 x i64> [ <i64 1, i64 2>, %vector.ph473 ], [ %vec.ind.next, %vector.body479 ]
  %step.add = add <2 x i64> %vec.ind, <i64 2, i64 2>
  %246 = getelementptr i64, ptr %245, i64 %index480
  %247 = getelementptr i8, ptr %246, i64 16
  store <2 x i64> %vec.ind, ptr %246, align 8, !tbaa !5
  store <2 x i64> %step.add, ptr %247, align 8, !tbaa !5
  %index.next482 = add nuw i64 %index480, 4
  %vec.ind.next = add <2 x i64> %vec.ind, <i64 4, i64 4>
  %248 = icmp eq i64 %index.next482, %n.vec475
  br i1 %248, label %middle.block470, label %vector.body479, !llvm.loop !23

middle.block470:                                  ; preds = %vector.body479
  %cmp.n483 = icmp eq i64 %244, %n.vec475
  br i1 %cmp.n483, label %.loopexit363, label %.lr.ph389.preheader486

.lr.ph389.preheader486:                           ; preds = %middle.block470, %.lr.ph389.preheader
  %.0329387.ph = phi i64 [ 1, %.lr.ph389.preheader ], [ %ind.end, %middle.block470 ]
  %.2332386.ph = phi i64 [ %.0320, %.lr.ph389.preheader ], [ %ind.end477, %middle.block470 ]
  br label %.lr.ph389

.lr.ph389:                                        ; preds = %.lr.ph389.preheader486, %.lr.ph389
  %.0329387 = phi i64 [ %250, %.lr.ph389 ], [ %.0329387.ph, %.lr.ph389.preheader486 ]
  %.2332386 = phi i64 [ %251, %.lr.ph389 ], [ %.2332386.ph, %.lr.ph389.preheader486 ]
  %249 = getelementptr i64, ptr %179, i64 %.2332386
  store i64 %.0329387, ptr %249, align 8, !tbaa !5
  %250 = add nuw i64 %.0329387, 1
  %251 = add nsw i64 %.2332386, 1
  %exitcond435.not = icmp eq i64 %250, %242
  br i1 %exitcond435.not, label %.loopexit363, label %.lr.ph389, !llvm.loop !24

252:                                              ; preds = %.lr.ph405, %._crit_edge403
  %253 = phi i64 [ 1, %.lr.ph405 ], [ %300, %._crit_edge403 ]
  %.1404 = phi i64 [ %.0319.lcssa447450, %.lr.ph405 ], [ %299, %._crit_edge403 ]
  %254 = add nsw i64 %.1404, -2
  %.not349399 = icmp slt i64 %.1404, 2
  br i1 %.not349399, label %._crit_edge403, label %255

255:                                              ; preds = %252
  %256 = getelementptr i64, ptr %10, i64 %.1404
  %257 = load i64, ptr %10, align 8, !tbaa !5
  %258 = load i64, ptr %180, align 8, !tbaa !5
  store i64 %258, ptr %19, align 8
  store i64 %257, ptr %15, align 8
  store i64 0, ptr %17, align 8, !tbaa !5
  %259 = load i64, ptr %0, align 8, !tbaa !5
  %260 = icmp eq i64 %259, 2
  br i1 %260, label %263, label %261

261:                                              ; preds = %255
  %gep461 = getelementptr double, ptr %invariant.gep460, i64 %257
  %262 = call i32 @dlaed7_(ptr noundef nonnull %0, ptr noundef nonnull %19, ptr noundef %1, ptr noundef nonnull %16, ptr noundef nonnull %18, ptr noundef nonnull %17, ptr noundef nonnull %3, ptr noundef %gep398.peel, ptr noundef nonnull %8, ptr noundef %190, ptr noundef %gep461, ptr noundef nonnull %15, ptr noundef nonnull %182, ptr noundef nonnull %183, ptr noundef nonnull %184, ptr noundef nonnull %185, ptr noundef nonnull %186, ptr noundef nonnull %187, ptr noundef %9, ptr noundef nonnull %188, ptr noundef %256, ptr noundef nonnull %11) #5
  br label %265

263:                                              ; preds = %255
  %gep463 = getelementptr double, ptr %invariant.gep462, i64 %257
  %264 = call i32 @dlaed1_(ptr noundef nonnull %19, ptr noundef nonnull %3, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %191, ptr noundef %gep463, ptr noundef nonnull %15, ptr noundef %9, ptr noundef %256, ptr noundef nonnull %11) #5
  br label %265

265:                                              ; preds = %263, %261
  %266 = load i64, ptr %11, align 8, !tbaa !5
  %.not351.peel = icmp eq i64 %266, 0
  br i1 %.not351.peel, label %267, label %.loopexit

267:                                              ; preds = %265
  %268 = load i64, ptr %192, align 8, !tbaa !5
  store i64 %268, ptr %10, align 8, !tbaa !5
  %.not349.peel = icmp ult i64 %.1404, 4
  br i1 %.not349.peel, label %._crit_edge403.loopexit, label %.peel.next

.peel.next:                                       ; preds = %267, %292
  %269 = phi i64 [ %295, %292 ], [ %268, %267 ]
  %.3400 = phi i64 [ %293, %292 ], [ 2, %267 ]
  %270 = add nsw i64 %269, 1
  %gep459 = getelementptr inbounds i64, ptr %invariant.gep458, i64 %.3400
  %271 = load i64, ptr %gep459, align 8, !tbaa !5
  %272 = sub nsw i64 %271, %269
  %273 = sdiv i64 %272, 2
  %274 = load i64, ptr %17, align 8, !tbaa !5
  %275 = add nsw i64 %274, 1
  store i64 %272, ptr %19, align 8
  store i64 %273, ptr %15, align 8
  store i64 %275, ptr %17, align 8, !tbaa !5
  %276 = load i64, ptr %0, align 8, !tbaa !5
  %277 = icmp eq i64 %276, 2
  %278 = getelementptr double, ptr %3, i64 %269
  %279 = getelementptr i64, ptr %181, i64 %270
  %280 = getelementptr double, ptr %4, i64 %269
  %281 = getelementptr double, ptr %280, i64 %273
  %282 = getelementptr i8, ptr %281, i64 -8
  br i1 %277, label %283, label %287

283:                                              ; preds = %.peel.next
  %284 = mul i64 %270, %189
  %285 = getelementptr inbounds double, ptr %24, i64 %284
  %286 = call i32 @dlaed1_(ptr noundef nonnull %19, ptr noundef nonnull %278, ptr noundef %285, ptr noundef nonnull %6, ptr noundef %279, ptr noundef %282, ptr noundef nonnull %15, ptr noundef %9, ptr noundef %256, ptr noundef nonnull %11) #5
  br label %290

287:                                              ; preds = %.peel.next
  %288 = mul nsw i64 %270, %25
  %gep398 = getelementptr double, ptr %invariant.gep390, i64 %288
  %289 = call i32 @dlaed7_(ptr noundef nonnull %0, ptr noundef nonnull %19, ptr noundef %1, ptr noundef nonnull %16, ptr noundef nonnull %18, ptr noundef nonnull %17, ptr noundef nonnull %278, ptr noundef %gep398, ptr noundef nonnull %8, ptr noundef %279, ptr noundef %282, ptr noundef nonnull %15, ptr noundef nonnull %182, ptr noundef nonnull %183, ptr noundef nonnull %184, ptr noundef nonnull %185, ptr noundef nonnull %186, ptr noundef nonnull %187, ptr noundef %9, ptr noundef nonnull %188, ptr noundef %256, ptr noundef nonnull %11) #5
  br label %290

290:                                              ; preds = %287, %283
  %291 = load i64, ptr %11, align 8, !tbaa !5
  %.not351 = icmp eq i64 %291, 0
  br i1 %.not351, label %292, label %.loopexit

292:                                              ; preds = %290
  %293 = add nuw nsw i64 %.3400, 2
  %294 = getelementptr inbounds i64, ptr %29, i64 %293
  %295 = load i64, ptr %294, align 8, !tbaa !5
  %296 = lshr exact i64 %.3400, 1
  %297 = getelementptr i64, ptr %10, i64 %296
  store i64 %295, ptr %297, align 8, !tbaa !5
  %.not349 = icmp sgt i64 %293, %254
  br i1 %.not349, label %._crit_edge403.loopexit, label %.peel.next, !llvm.loop !25

._crit_edge403.loopexit:                          ; preds = %292, %267
  %.pre443 = load i64, ptr %18, align 8, !tbaa !5
  br label %._crit_edge403

._crit_edge403:                                   ; preds = %._crit_edge403.loopexit, %252
  %298 = phi i64 [ %.pre443, %._crit_edge403.loopexit ], [ %253, %252 ]
  %299 = lshr i64 %.1404, 1
  %300 = add nsw i64 %298, 1
  store i64 %300, ptr %18, align 8, !tbaa !5
  %301 = icmp ugt i64 %.1404, 3
  br i1 %301, label %252, label %._crit_edge406

._crit_edge406:                                   ; preds = %._crit_edge403, %.preheader
  %302 = load i64, ptr %0, align 8, !tbaa !5
  %303 = load i64, ptr %2, align 8, !tbaa !5
  %.not346423 = icmp slt i64 %303, 1
  switch i64 %302, label %335 [
    i64 1, label %304
    i64 2, label %317
  ]

304:                                              ; preds = %._crit_edge406
  br i1 %.not346423, label %._crit_edge422, label %.lr.ph421

.lr.ph421:                                        ; preds = %304
  %305 = getelementptr i64, ptr %29, i64 %109
  br label %306

306:                                              ; preds = %.lr.ph421, %306
  %.4419 = phi i64 [ 1, %.lr.ph421 ], [ %315, %306 ]
  %307 = getelementptr i64, ptr %305, i64 %.4419
  %308 = load i64, ptr %307, align 8, !tbaa !5
  %309 = getelementptr inbounds double, ptr %20, i64 %308
  %310 = load double, ptr %309, align 8, !tbaa !14
  %311 = getelementptr inbounds double, ptr %28, i64 %.4419
  store double %310, ptr %311, align 8, !tbaa !14
  %312 = mul nsw i64 %308, %25
  %gep415 = getelementptr double, ptr %invariant.gep390, i64 %312
  %313 = mul nsw i64 %.4419, %22
  %gep417 = getelementptr double, ptr %invariant.gep, i64 %313
  %314 = call i32 @f2c_dcopy(ptr noundef %1, ptr noundef %gep415, ptr noundef nonnull @c__1, ptr noundef %gep417, ptr noundef nonnull @c__1) #5
  %315 = add nuw nsw i64 %.4419, 1
  %.not348.not = icmp slt i64 %.4419, %303
  br i1 %.not348.not, label %306, label %._crit_edge422, !llvm.loop !27

._crit_edge422:                                   ; preds = %306, %304
  %316 = call i32 @f2c_dcopy(ptr noundef nonnull %2, ptr noundef %9, ptr noundef nonnull @c__1, ptr noundef %3, ptr noundef nonnull @c__1) #5
  br label %373

317:                                              ; preds = %._crit_edge406
  br i1 %.not346423, label %._crit_edge413, label %.lr.ph412

.lr.ph412:                                        ; preds = %317
  %318 = getelementptr i64, ptr %29, i64 %109
  br label %319

319:                                              ; preds = %.lr.ph412, %319
  %.5410 = phi i64 [ 1, %.lr.ph412 ], [ %330, %319 ]
  %320 = getelementptr i64, ptr %318, i64 %.5410
  %321 = load i64, ptr %320, align 8, !tbaa !5
  %322 = getelementptr inbounds double, ptr %20, i64 %321
  %323 = load double, ptr %322, align 8, !tbaa !14
  %324 = getelementptr inbounds double, ptr %28, i64 %.5410
  store double %323, ptr %324, align 8, !tbaa !14
  %325 = mul nsw i64 %321, %22
  %gep408 = getelementptr double, ptr %invariant.gep, i64 %325
  %326 = load i64, ptr %2, align 8, !tbaa !5
  %327 = mul nsw i64 %326, %.5410
  %328 = getelementptr double, ptr %9, i64 %327
  %329 = call i32 @f2c_dcopy(ptr noundef nonnull %2, ptr noundef %gep408, ptr noundef nonnull @c__1, ptr noundef %328, ptr noundef nonnull @c__1) #5
  %330 = add nuw nsw i64 %.5410, 1
  %.not347.not = icmp slt i64 %.5410, %303
  br i1 %.not347.not, label %319, label %._crit_edge413, !llvm.loop !28

._crit_edge413:                                   ; preds = %319, %317
  %331 = call i32 @f2c_dcopy(ptr noundef nonnull %2, ptr noundef %9, ptr noundef nonnull @c__1, ptr noundef %3, ptr noundef nonnull @c__1) #5
  %332 = load i64, ptr %2, align 8, !tbaa !5
  %333 = getelementptr double, ptr %9, i64 %332
  %334 = call i32 @dlacpy_(ptr noundef nonnull @.str.4, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %333, ptr noundef nonnull %2, ptr noundef %5, ptr noundef nonnull %6) #5
  br label %373

335:                                              ; preds = %._crit_edge406
  br i1 %.not346423, label %._crit_edge427, label %.lr.ph426

.lr.ph426:                                        ; preds = %335
  %336 = getelementptr i64, ptr %29, i64 %109
  %xtraiter493 = and i64 %303, 3
  %337 = icmp ult i64 %303, 4
  br i1 %337, label %._crit_edge427.loopexit.unr-lcssa, label %.lr.ph426.new

.lr.ph426.new:                                    ; preds = %.lr.ph426
  %unroll_iter496 = and i64 %303, 9223372036854775804
  %invariant.gep510 = getelementptr i8, ptr %336, i64 8
  br label %338

338:                                              ; preds = %338, %.lr.ph426.new
  %.6424 = phi i64 [ 1, %.lr.ph426.new ], [ %360, %338 ]
  %niter497 = phi i64 [ 0, %.lr.ph426.new ], [ %niter497.next.3, %338 ]
  %339 = getelementptr i64, ptr %336, i64 %.6424
  %340 = load i64, ptr %339, align 8, !tbaa !5
  %341 = getelementptr inbounds double, ptr %20, i64 %340
  %342 = load double, ptr %341, align 8, !tbaa !14
  %343 = getelementptr inbounds double, ptr %28, i64 %.6424
  store double %342, ptr %343, align 8, !tbaa !14
  %gep511 = getelementptr i64, ptr %invariant.gep510, i64 %.6424
  %344 = load i64, ptr %gep511, align 8, !tbaa !5
  %345 = getelementptr inbounds double, ptr %20, i64 %344
  %346 = load double, ptr %345, align 8, !tbaa !14
  %347 = getelementptr double, ptr %9, i64 %.6424
  store double %346, ptr %347, align 8, !tbaa !14
  %348 = add nuw nsw i64 %.6424, 2
  %349 = getelementptr i64, ptr %336, i64 %348
  %350 = load i64, ptr %349, align 8, !tbaa !5
  %351 = getelementptr inbounds double, ptr %20, i64 %350
  %352 = load double, ptr %351, align 8, !tbaa !14
  %353 = getelementptr inbounds double, ptr %28, i64 %348
  store double %352, ptr %353, align 8, !tbaa !14
  %354 = add nuw i64 %.6424, 3
  %355 = getelementptr i64, ptr %336, i64 %354
  %356 = load i64, ptr %355, align 8, !tbaa !5
  %357 = getelementptr inbounds double, ptr %20, i64 %356
  %358 = load double, ptr %357, align 8, !tbaa !14
  %359 = getelementptr inbounds double, ptr %28, i64 %354
  store double %358, ptr %359, align 8, !tbaa !14
  %360 = add nuw i64 %.6424, 4
  %niter497.next.3 = add i64 %niter497, 4
  %niter497.ncmp.3 = icmp eq i64 %niter497.next.3, %unroll_iter496
  br i1 %niter497.ncmp.3, label %._crit_edge427.loopexit.unr-lcssa, label %338, !llvm.loop !29

._crit_edge427.loopexit.unr-lcssa:                ; preds = %338, %.lr.ph426
  %.6424.unr = phi i64 [ 1, %.lr.ph426 ], [ %360, %338 ]
  %lcmp.mod495.not = icmp eq i64 %xtraiter493, 0
  br i1 %lcmp.mod495.not, label %._crit_edge427, label %.epil.preheader

.epil.preheader:                                  ; preds = %._crit_edge427.loopexit.unr-lcssa, %.epil.preheader
  %.6424.epil = phi i64 [ %366, %.epil.preheader ], [ %.6424.unr, %._crit_edge427.loopexit.unr-lcssa ]
  %epil.iter494 = phi i64 [ %epil.iter494.next, %.epil.preheader ], [ 0, %._crit_edge427.loopexit.unr-lcssa ]
  %361 = getelementptr i64, ptr %336, i64 %.6424.epil
  %362 = load i64, ptr %361, align 8, !tbaa !5
  %363 = getelementptr inbounds double, ptr %20, i64 %362
  %364 = load double, ptr %363, align 8, !tbaa !14
  %365 = getelementptr inbounds double, ptr %28, i64 %.6424.epil
  store double %364, ptr %365, align 8, !tbaa !14
  %366 = add nuw i64 %.6424.epil, 1
  %epil.iter494.next = add i64 %epil.iter494, 1
  %epil.iter494.cmp.not = icmp eq i64 %epil.iter494.next, %xtraiter493
  br i1 %epil.iter494.cmp.not, label %._crit_edge427, label %.epil.preheader, !llvm.loop !30

._crit_edge427:                                   ; preds = %._crit_edge427.loopexit.unr-lcssa, %.epil.preheader, %335
  %367 = call i32 @f2c_dcopy(ptr noundef nonnull %2, ptr noundef %9, ptr noundef nonnull @c__1, ptr noundef %3, ptr noundef nonnull @c__1) #5
  br label %373

.loopexit:                                        ; preds = %214, %209, %265, %290
  %.2 = phi i64 [ %270, %290 ], [ 1, %265 ], [ %.0320, %209 ], [ %.0320, %214 ]
  %368 = load i64, ptr %2, align 8, !tbaa !5
  %.2356 = add i64 %368, 2
  %369 = mul i64 %.2356, %.2
  %370 = load i64, ptr %19, align 8, !tbaa !5
  %371 = add i64 %370, -1
  %372 = add i64 %371, %369
  store i64 %372, ptr %11, align 8, !tbaa !5
  br label %373

373:                                              ; preds = %.loopexit, %._crit_edge413, %._crit_edge427, %._crit_edge422, %47, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #5
  ret i32 0
}

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

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

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

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

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

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.smax.i64(i64, i64) #4

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.umax.i64(i64, i64) #4

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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}
!11 = distinct !{!11, !10}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.unroll.disable"}
!14 = !{!15, !15, i64 0}
!15 = !{!"double", !7, i64 0}
!16 = distinct !{!16, !10}
!17 = distinct !{!17, !10, !18, !19}
!18 = !{!"llvm.loop.isvectorized", i32 1}
!19 = !{!"llvm.loop.unroll.runtime.disable"}
!20 = distinct !{!20, !13}
!21 = distinct !{!21, !10, !18}
!22 = distinct !{!22, !10}
!23 = distinct !{!23, !10, !18, !19}
!24 = distinct !{!24, !10, !19, !18}
!25 = distinct !{!25, !10, !26}
!26 = !{!"llvm.loop.peeled.count", i32 1}
!27 = distinct !{!27, !10}
!28 = distinct !{!28, !10}
!29 = distinct !{!29, !10}
!30 = distinct !{!30, !13}


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