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

; 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 float, align 4
@c_b24 = external hidden global float, align 4
@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 @slaed0_(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 float, align 4
  %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 float, align 4
  %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 4, 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 4, 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 float, 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 float, 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 float, 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 float, 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 float, 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 %871

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 %871

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 = %292, %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 %295

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 float, ptr %250, i64 %251
  %253 = load float, ptr %252, align 4, !tbaa !14
  store float %253, ptr %32, align 4, !tbaa !14
  %254 = load float, ptr %32, align 4, !tbaa !14
  %255 = fcmp oge float %254, 0.000000e+00
  br i1 %255, label %256, label %258

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

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

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

277:                                              ; preds = %261
  %278 = load float, ptr %32, align 4, !tbaa !14
  br label %282

279:                                              ; preds = %261
  %280 = load float, ptr %32, align 4, !tbaa !14
  %281 = fneg float %280
  br label %282

282:                                              ; preds = %279, %277
  %283 = phi float [ %278, %277 ], [ %281, %279 ]
  %284 = fpext float %283 to double
  %285 = load ptr, ptr %17, align 8, !tbaa !5
  %286 = load i64, ptr %51, align 8, !tbaa !9
  %287 = getelementptr inbounds float, ptr %285, i64 %286
  %288 = load float, ptr %287, align 4, !tbaa !14
  %289 = fpext float %288 to double
  %290 = fsub double %289, %284
  %291 = fptrunc double %290 to float
  store float %291, ptr %287, align 4, !tbaa !14
  br label %292

292:                                              ; preds = %282
  %293 = load i64, ptr %33, align 8, !tbaa !9
  %294 = add nsw i64 %293, 1
  store i64 %294, ptr %33, align 8, !tbaa !9
  br label %238, !llvm.loop !16

295:                                              ; preds = %238
  %296 = load ptr, ptr %16, align 8, !tbaa !5
  %297 = load i64, ptr %296, align 8, !tbaa !9
  %298 = shl i64 %297, 2
  %299 = add nsw i64 %298, 3
  store i64 %299, ptr %45, align 8, !tbaa !9
  %300 = load ptr, ptr %14, align 8, !tbaa !5
  %301 = load i64, ptr %300, align 8, !tbaa !9
  %302 = icmp ne i64 %301, 2
  br i1 %302, label %303, label %396

303:                                              ; preds = %295
  %304 = load ptr, ptr %16, align 8, !tbaa !5
  %305 = load i64, ptr %304, align 8, !tbaa !9
  %306 = sitofp i64 %305 to float
  %307 = fpext float %306 to double
  %308 = call double @log(double noundef %307) #4
  %309 = call double @log(double noundef 2.000000e+00) #4
  %310 = fdiv double %308, %309
  %311 = fptrunc double %310 to float
  store float %311, ptr %42, align 4, !tbaa !14
  %312 = load float, ptr %42, align 4, !tbaa !14
  %313 = fptosi float %312 to i64
  store i64 %313, ptr %37, align 8, !tbaa !9
  %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 = %303
  %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, %303
  %322 = call i64 @pow_ii(ptr noundef @c__2, ptr noundef %37)
  %323 = load ptr, ptr %16, align 8, !tbaa !5
  %324 = load i64, ptr %323, align 8, !tbaa !9
  %325 = icmp slt i64 %322, %324
  br i1 %325, label %326, label %329

326:                                              ; preds = %321
  %327 = load i64, ptr %37, align 8, !tbaa !9
  %328 = add nsw i64 %327, 1
  store i64 %328, ptr %37, align 8, !tbaa !9
  br label %329

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

374:                                              ; preds = %389, %329
  %375 = load i64, ptr %33, align 8, !tbaa !9
  %376 = load i64, ptr %30, align 8, !tbaa !9
  %377 = icmp sle i64 %375, %376
  br i1 %377, label %378, label %392

378:                                              ; preds = %374
  %379 = load ptr, ptr %24, align 8, !tbaa !5
  %380 = load i64, ptr %57, align 8, !tbaa !9
  %381 = load i64, ptr %33, align 8, !tbaa !9
  %382 = add nsw i64 %380, %381
  %383 = getelementptr inbounds i64, ptr %379, i64 %382
  store i64 1, ptr %383, align 8, !tbaa !9
  %384 = load ptr, ptr %24, align 8, !tbaa !5
  %385 = load i64, ptr %54, align 8, !tbaa !9
  %386 = load i64, ptr %33, align 8, !tbaa !9
  %387 = add nsw i64 %385, %386
  %388 = getelementptr inbounds i64, ptr %384, i64 %387
  store i64 1, ptr %388, align 8, !tbaa !9
  br label %389

389:                                              ; preds = %378
  %390 = load i64, ptr %33, align 8, !tbaa !9
  %391 = add nsw i64 %390, 1
  store i64 %391, ptr %33, align 8, !tbaa !9
  br label %374, !llvm.loop !17

392:                                              ; preds = %374
  %393 = load ptr, ptr %24, align 8, !tbaa !5
  %394 = load i64, ptr %47, align 8, !tbaa !9
  %395 = getelementptr inbounds i64, ptr %393, i64 %394
  store i64 1, ptr %395, align 8, !tbaa !9
  br label %396

396:                                              ; preds = %392, %295
  store i64 0, ptr %43, align 8, !tbaa !9
  %397 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %397, ptr %30, align 8, !tbaa !9
  store i64 0, ptr %33, align 8, !tbaa !9
  br label %398

398:                                              ; preds = %555, %396
  %399 = load i64, ptr %33, align 8, !tbaa !9
  %400 = load i64, ptr %30, align 8, !tbaa !9
  %401 = icmp sle i64 %399, %400
  br i1 %401, label %402, label %558

402:                                              ; preds = %398
  %403 = load i64, ptr %33, align 8, !tbaa !9
  %404 = icmp eq i64 %403, 0
  br i1 %404, label %405, label %409

405:                                              ; preds = %402
  store i64 1, ptr %51, align 8, !tbaa !9
  %406 = load ptr, ptr %24, align 8, !tbaa !5
  %407 = getelementptr inbounds i64, ptr %406, i64 1
  %408 = load i64, ptr %407, align 8, !tbaa !9
  store i64 %408, ptr %56, align 8, !tbaa !9
  br label %425

409:                                              ; preds = %402
  %410 = load ptr, ptr %24, align 8, !tbaa !5
  %411 = load i64, ptr %33, align 8, !tbaa !9
  %412 = getelementptr inbounds i64, ptr %410, i64 %411
  %413 = load i64, ptr %412, align 8, !tbaa !9
  %414 = add nsw i64 %413, 1
  store i64 %414, ptr %51, align 8, !tbaa !9
  %415 = load ptr, ptr %24, align 8, !tbaa !5
  %416 = load i64, ptr %33, align 8, !tbaa !9
  %417 = add nsw i64 %416, 1
  %418 = getelementptr inbounds i64, ptr %415, i64 %417
  %419 = load i64, ptr %418, align 8, !tbaa !9
  %420 = load ptr, ptr %24, align 8, !tbaa !5
  %421 = load i64, ptr %33, align 8, !tbaa !9
  %422 = getelementptr inbounds i64, ptr %420, i64 %421
  %423 = load i64, ptr %422, align 8, !tbaa !9
  %424 = sub nsw i64 %419, %423
  store i64 %424, ptr %56, align 8, !tbaa !9
  br label %425

425:                                              ; preds = %409, %405
  %426 = load ptr, ptr %14, align 8, !tbaa !5
  %427 = load i64, ptr %426, align 8, !tbaa !9
  %428 = icmp eq i64 %427, 2
  br i1 %428, label %429, label %453

429:                                              ; preds = %425
  %430 = load ptr, ptr %17, align 8, !tbaa !5
  %431 = load i64, ptr %51, align 8, !tbaa !9
  %432 = getelementptr inbounds float, ptr %430, i64 %431
  %433 = load ptr, ptr %18, align 8, !tbaa !5
  %434 = load i64, ptr %51, align 8, !tbaa !9
  %435 = getelementptr inbounds float, ptr %433, i64 %434
  %436 = load ptr, ptr %19, align 8, !tbaa !5
  %437 = load i64, ptr %51, align 8, !tbaa !9
  %438 = load i64, ptr %51, align 8, !tbaa !9
  %439 = load i64, ptr %26, align 8, !tbaa !9
  %440 = mul nsw i64 %438, %439
  %441 = add nsw i64 %437, %440
  %442 = getelementptr inbounds float, ptr %436, i64 %441
  %443 = load ptr, ptr %20, align 8, !tbaa !5
  %444 = load ptr, ptr %23, align 8, !tbaa !5
  %445 = getelementptr inbounds float, ptr %444, i64 1
  %446 = load ptr, ptr %25, align 8, !tbaa !5
  %447 = call i32 @ssteqr_(ptr noundef @.str.2, ptr noundef %56, ptr noundef %432, ptr noundef %435, ptr noundef %442, ptr noundef %443, ptr noundef %445, ptr noundef %446)
  %448 = load ptr, ptr %25, align 8, !tbaa !5
  %449 = load i64, ptr %448, align 8, !tbaa !9
  %450 = icmp ne i64 %449, 0
  br i1 %450, label %451, label %452

451:                                              ; preds = %429
  br label %858

452:                                              ; preds = %429
  br label %531

453:                                              ; preds = %425
  %454 = load ptr, ptr %17, align 8, !tbaa !5
  %455 = load i64, ptr %51, align 8, !tbaa !9
  %456 = getelementptr inbounds float, ptr %454, i64 %455
  %457 = load ptr, ptr %18, align 8, !tbaa !5
  %458 = load i64, ptr %51, align 8, !tbaa !9
  %459 = getelementptr inbounds float, ptr %457, i64 %458
  %460 = load ptr, ptr %23, align 8, !tbaa !5
  %461 = load i64, ptr %36, align 8, !tbaa !9
  %462 = sub nsw i64 %461, 1
  %463 = load ptr, ptr %24, align 8, !tbaa !5
  %464 = load i64, ptr %47, align 8, !tbaa !9
  %465 = load i64, ptr %43, align 8, !tbaa !9
  %466 = add nsw i64 %464, %465
  %467 = getelementptr inbounds i64, ptr %463, i64 %466
  %468 = load i64, ptr %467, align 8, !tbaa !9
  %469 = add nsw i64 %462, %468
  %470 = getelementptr inbounds float, ptr %460, i64 %469
  %471 = load ptr, ptr %23, align 8, !tbaa !5
  %472 = getelementptr inbounds float, ptr %471, i64 1
  %473 = load ptr, ptr %25, align 8, !tbaa !5
  %474 = call i32 @ssteqr_(ptr noundef @.str.2, ptr noundef %56, ptr noundef %456, ptr noundef %459, ptr noundef %470, ptr noundef %56, ptr noundef %472, ptr noundef %473)
  %475 = load ptr, ptr %25, align 8, !tbaa !5
  %476 = load i64, ptr %475, align 8, !tbaa !9
  %477 = icmp ne i64 %476, 0
  br i1 %477, label %478, label %479

478:                                              ; preds = %453
  br label %858

479:                                              ; preds = %453
  %480 = load ptr, ptr %14, align 8, !tbaa !5
  %481 = load i64, ptr %480, align 8, !tbaa !9
  %482 = icmp eq i64 %481, 1
  br i1 %482, label %483, label %511

483:                                              ; preds = %479
  %484 = load ptr, ptr %15, align 8, !tbaa !5
  %485 = load ptr, ptr %19, align 8, !tbaa !5
  %486 = load i64, ptr %51, align 8, !tbaa !9
  %487 = load i64, ptr %26, align 8, !tbaa !9
  %488 = mul nsw i64 %486, %487
  %489 = add nsw i64 %488, 1
  %490 = getelementptr inbounds float, ptr %485, i64 %489
  %491 = load ptr, ptr %20, align 8, !tbaa !5
  %492 = load ptr, ptr %23, align 8, !tbaa !5
  %493 = load i64, ptr %36, align 8, !tbaa !9
  %494 = sub nsw i64 %493, 1
  %495 = load ptr, ptr %24, align 8, !tbaa !5
  %496 = load i64, ptr %47, align 8, !tbaa !9
  %497 = load i64, ptr %43, align 8, !tbaa !9
  %498 = add nsw i64 %496, %497
  %499 = getelementptr inbounds i64, ptr %495, i64 %498
  %500 = load i64, ptr %499, align 8, !tbaa !9
  %501 = add nsw i64 %494, %500
  %502 = getelementptr inbounds float, ptr %492, i64 %501
  %503 = load ptr, ptr %21, align 8, !tbaa !5
  %504 = load i64, ptr %51, align 8, !tbaa !9
  %505 = load i64, ptr %28, align 8, !tbaa !9
  %506 = mul nsw i64 %504, %505
  %507 = add nsw i64 %506, 1
  %508 = getelementptr inbounds float, ptr %503, i64 %507
  %509 = load ptr, ptr %22, align 8, !tbaa !5
  %510 = call i32 @f2c_sgemm(ptr noundef @.str.3, ptr noundef @.str.3, ptr noundef %484, ptr noundef %56, ptr noundef %56, ptr noundef @c_b23, ptr noundef %490, ptr noundef %491, ptr noundef %502, ptr noundef %56, ptr noundef @c_b24, ptr noundef %508, ptr noundef %509)
  br label %511

511:                                              ; preds = %483, %479
  %512 = load i64, ptr %56, align 8, !tbaa !9
  store i64 %512, ptr %31, align 8, !tbaa !9
  %513 = load ptr, ptr %24, align 8, !tbaa !5
  %514 = load i64, ptr %47, align 8, !tbaa !9
  %515 = load i64, ptr %43, align 8, !tbaa !9
  %516 = add nsw i64 %514, %515
  %517 = getelementptr inbounds i64, ptr %513, i64 %516
  %518 = load i64, ptr %517, align 8, !tbaa !9
  %519 = load i64, ptr %31, align 8, !tbaa !9
  %520 = load i64, ptr %31, align 8, !tbaa !9
  %521 = mul nsw i64 %519, %520
  %522 = add nsw i64 %518, %521
  %523 = load ptr, ptr %24, align 8, !tbaa !5
  %524 = load i64, ptr %47, align 8, !tbaa !9
  %525 = load i64, ptr %43, align 8, !tbaa !9
  %526 = add nsw i64 %524, %525
  %527 = add nsw i64 %526, 1
  %528 = getelementptr inbounds i64, ptr %523, i64 %527
  store i64 %522, ptr %528, align 8, !tbaa !9
  %529 = load i64, ptr %43, align 8, !tbaa !9
  %530 = add nsw i64 %529, 1
  store i64 %530, ptr %43, align 8, !tbaa !9
  br label %531

531:                                              ; preds = %511, %452
  store i64 1, ptr %35, align 8, !tbaa !9
  %532 = load ptr, ptr %24, align 8, !tbaa !5
  %533 = load i64, ptr %33, align 8, !tbaa !9
  %534 = add nsw i64 %533, 1
  %535 = getelementptr inbounds i64, ptr %532, i64 %534
  %536 = load i64, ptr %535, align 8, !tbaa !9
  store i64 %536, ptr %31, align 8, !tbaa !9
  %537 = load i64, ptr %51, align 8, !tbaa !9
  store i64 %537, ptr %34, align 8, !tbaa !9
  br label %538

538:                                              ; preds = %551, %531
  %539 = load i64, ptr %34, align 8, !tbaa !9
  %540 = load i64, ptr %31, align 8, !tbaa !9
  %541 = icmp sle i64 %539, %540
  br i1 %541, label %542, label %554

542:                                              ; preds = %538
  %543 = load i64, ptr %35, align 8, !tbaa !9
  %544 = load ptr, ptr %24, align 8, !tbaa !5
  %545 = load i64, ptr %45, align 8, !tbaa !9
  %546 = load i64, ptr %34, align 8, !tbaa !9
  %547 = add nsw i64 %545, %546
  %548 = getelementptr inbounds i64, ptr %544, i64 %547
  store i64 %543, ptr %548, align 8, !tbaa !9
  %549 = load i64, ptr %35, align 8, !tbaa !9
  %550 = add nsw i64 %549, 1
  store i64 %550, ptr %35, align 8, !tbaa !9
  br label %551

551:                                              ; preds = %542
  %552 = load i64, ptr %34, align 8, !tbaa !9
  %553 = add nsw i64 %552, 1
  store i64 %553, ptr %34, align 8, !tbaa !9
  br label %538, !llvm.loop !18

554:                                              ; preds = %538
  br label %555

555:                                              ; preds = %554
  %556 = load i64, ptr %33, align 8, !tbaa !9
  %557 = add nsw i64 %556, 1
  store i64 %557, ptr %33, align 8, !tbaa !9
  br label %398, !llvm.loop !19

558:                                              ; preds = %398
  store i64 1, ptr %55, align 8, !tbaa !9
  br label %559

559:                                              ; preds = %708, %558
  %560 = load i64, ptr %53, align 8, !tbaa !9
  %561 = icmp sgt i64 %560, 1
  br i1 %561, label %562, label %713

562:                                              ; preds = %559
  %563 = load i64, ptr %53, align 8, !tbaa !9
  %564 = sub nsw i64 %563, 2
  store i64 %564, ptr %41, align 8, !tbaa !9
  %565 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %565, ptr %30, align 8, !tbaa !9
  store i64 0, ptr %33, align 8, !tbaa !9
  br label %566

566:                                              ; preds = %705, %562
  %567 = load i64, ptr %33, align 8, !tbaa !9
  %568 = load i64, ptr %30, align 8, !tbaa !9
  %569 = icmp sle i64 %567, %568
  br i1 %569, label %570, label %708

570:                                              ; preds = %566
  %571 = load i64, ptr %33, align 8, !tbaa !9
  %572 = icmp eq i64 %571, 0
  br i1 %572, label %573, label %580

573:                                              ; preds = %570
  store i64 1, ptr %51, align 8, !tbaa !9
  %574 = load ptr, ptr %24, align 8, !tbaa !5
  %575 = getelementptr inbounds i64, ptr %574, i64 2
  %576 = load i64, ptr %575, align 8, !tbaa !9
  store i64 %576, ptr %56, align 8, !tbaa !9
  %577 = load ptr, ptr %24, align 8, !tbaa !5
  %578 = getelementptr inbounds i64, ptr %577, i64 1
  %579 = load i64, ptr %578, align 8, !tbaa !9
  store i64 %579, ptr %38, align 8, !tbaa !9
  store i64 0, ptr %52, align 8, !tbaa !9
  br label %600

580:                                              ; preds = %570
  %581 = load ptr, ptr %24, align 8, !tbaa !5
  %582 = load i64, ptr %33, align 8, !tbaa !9
  %583 = getelementptr inbounds i64, ptr %581, i64 %582
  %584 = load i64, ptr %583, align 8, !tbaa !9
  %585 = add nsw i64 %584, 1
  store i64 %585, ptr %51, align 8, !tbaa !9
  %586 = load ptr, ptr %24, align 8, !tbaa !5
  %587 = load i64, ptr %33, align 8, !tbaa !9
  %588 = add nsw i64 %587, 2
  %589 = getelementptr inbounds i64, ptr %586, i64 %588
  %590 = load i64, ptr %589, align 8, !tbaa !9
  %591 = load ptr, ptr %24, align 8, !tbaa !5
  %592 = load i64, ptr %33, align 8, !tbaa !9
  %593 = getelementptr inbounds i64, ptr %591, i64 %592
  %594 = load i64, ptr %593, align 8, !tbaa !9
  %595 = sub nsw i64 %590, %594
  store i64 %595, ptr %56, align 8, !tbaa !9
  %596 = load i64, ptr %56, align 8, !tbaa !9
  %597 = sdiv i64 %596, 2
  store i64 %597, ptr %38, align 8, !tbaa !9
  %598 = load i64, ptr %52, align 8, !tbaa !9
  %599 = add nsw i64 %598, 1
  store i64 %599, ptr %52, align 8, !tbaa !9
  br label %600

600:                                              ; preds = %580, %573
  %601 = load ptr, ptr %14, align 8, !tbaa !5
  %602 = load i64, ptr %601, align 8, !tbaa !9
  %603 = icmp eq i64 %602, 2
  br i1 %603, label %604, label %635

604:                                              ; preds = %600
  %605 = load ptr, ptr %17, align 8, !tbaa !5
  %606 = load i64, ptr %51, align 8, !tbaa !9
  %607 = getelementptr inbounds float, ptr %605, i64 %606
  %608 = load ptr, ptr %19, align 8, !tbaa !5
  %609 = load i64, ptr %51, align 8, !tbaa !9
  %610 = load i64, ptr %51, align 8, !tbaa !9
  %611 = load i64, ptr %26, align 8, !tbaa !9
  %612 = mul nsw i64 %610, %611
  %613 = add nsw i64 %609, %612
  %614 = getelementptr inbounds float, ptr %608, i64 %613
  %615 = load ptr, ptr %20, align 8, !tbaa !5
  %616 = load ptr, ptr %24, align 8, !tbaa !5
  %617 = load i64, ptr %45, align 8, !tbaa !9
  %618 = load i64, ptr %51, align 8, !tbaa !9
  %619 = add nsw i64 %617, %618
  %620 = getelementptr inbounds i64, ptr %616, i64 %619
  %621 = load ptr, ptr %18, align 8, !tbaa !5
  %622 = load i64, ptr %51, align 8, !tbaa !9
  %623 = load i64, ptr %38, align 8, !tbaa !9
  %624 = add nsw i64 %622, %623
  %625 = sub nsw i64 %624, 1
  %626 = getelementptr inbounds float, ptr %621, i64 %625
  %627 = load ptr, ptr %23, align 8, !tbaa !5
  %628 = getelementptr inbounds float, ptr %627, i64 1
  %629 = load ptr, ptr %24, align 8, !tbaa !5
  %630 = load i64, ptr %53, align 8, !tbaa !9
  %631 = add nsw i64 %630, 1
  %632 = getelementptr inbounds i64, ptr %629, i64 %631
  %633 = load ptr, ptr %25, align 8, !tbaa !5
  %634 = call i32 @slaed1_(ptr noundef %56, ptr noundef %607, ptr noundef %614, ptr noundef %615, ptr noundef %620, ptr noundef %626, ptr noundef %38, ptr noundef %628, ptr noundef %632, ptr noundef %633)
  br label %689

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

689:                                              ; preds = %635, %604
  %690 = load ptr, ptr %25, align 8, !tbaa !5
  %691 = load i64, ptr %690, align 8, !tbaa !9
  %692 = icmp ne i64 %691, 0
  br i1 %692, label %693, label %694

693:                                              ; preds = %689
  br label %858

694:                                              ; preds = %689
  %695 = load ptr, ptr %24, align 8, !tbaa !5
  %696 = load i64, ptr %33, align 8, !tbaa !9
  %697 = add nsw i64 %696, 2
  %698 = getelementptr inbounds i64, ptr %695, i64 %697
  %699 = load i64, ptr %698, align 8, !tbaa !9
  %700 = load ptr, ptr %24, align 8, !tbaa !5
  %701 = load i64, ptr %33, align 8, !tbaa !9
  %702 = sdiv i64 %701, 2
  %703 = add nsw i64 %702, 1
  %704 = getelementptr inbounds i64, ptr %700, i64 %703
  store i64 %699, ptr %704, align 8, !tbaa !9
  br label %705

705:                                              ; preds = %694
  %706 = load i64, ptr %33, align 8, !tbaa !9
  %707 = add nsw i64 %706, 2
  store i64 %707, ptr %33, align 8, !tbaa !9
  br label %566, !llvm.loop !20

708:                                              ; preds = %566
  %709 = load i64, ptr %53, align 8, !tbaa !9
  %710 = sdiv i64 %709, 2
  store i64 %710, ptr %53, align 8, !tbaa !9
  %711 = load i64, ptr %55, align 8, !tbaa !9
  %712 = add nsw i64 %711, 1
  store i64 %712, ptr %55, align 8, !tbaa !9
  br label %559

713:                                              ; preds = %559
  %714 = load ptr, ptr %14, align 8, !tbaa !5
  %715 = load i64, ptr %714, align 8, !tbaa !9
  %716 = icmp eq i64 %715, 1
  br i1 %716, label %717, label %762

717:                                              ; preds = %713
  %718 = load ptr, ptr %16, align 8, !tbaa !5
  %719 = load i64, ptr %718, align 8, !tbaa !9
  store i64 %719, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %33, align 8, !tbaa !9
  br label %720

720:                                              ; preds = %752, %717
  %721 = load i64, ptr %33, align 8, !tbaa !9
  %722 = load i64, ptr %30, align 8, !tbaa !9
  %723 = icmp sle i64 %721, %722
  br i1 %723, label %724, label %755

724:                                              ; preds = %720
  %725 = load ptr, ptr %24, align 8, !tbaa !5
  %726 = load i64, ptr %45, align 8, !tbaa !9
  %727 = load i64, ptr %33, align 8, !tbaa !9
  %728 = add nsw i64 %726, %727
  %729 = getelementptr inbounds i64, ptr %725, i64 %728
  %730 = load i64, ptr %729, align 8, !tbaa !9
  store i64 %730, ptr %34, align 8, !tbaa !9
  %731 = load ptr, ptr %17, align 8, !tbaa !5
  %732 = load i64, ptr %34, align 8, !tbaa !9
  %733 = getelementptr inbounds float, ptr %731, i64 %732
  %734 = load float, ptr %733, align 4, !tbaa !14
  %735 = load ptr, ptr %23, align 8, !tbaa !5
  %736 = load i64, ptr %33, align 8, !tbaa !9
  %737 = getelementptr inbounds float, ptr %735, i64 %736
  store float %734, ptr %737, align 4, !tbaa !14
  %738 = load ptr, ptr %15, align 8, !tbaa !5
  %739 = load ptr, ptr %21, align 8, !tbaa !5
  %740 = load i64, ptr %34, align 8, !tbaa !9
  %741 = load i64, ptr %28, align 8, !tbaa !9
  %742 = mul nsw i64 %740, %741
  %743 = add nsw i64 %742, 1
  %744 = getelementptr inbounds float, ptr %739, i64 %743
  %745 = load ptr, ptr %19, align 8, !tbaa !5
  %746 = load i64, ptr %33, align 8, !tbaa !9
  %747 = load i64, ptr %26, align 8, !tbaa !9
  %748 = mul nsw i64 %746, %747
  %749 = add nsw i64 %748, 1
  %750 = getelementptr inbounds float, ptr %745, i64 %749
  %751 = call i32 @f2c_scopy(ptr noundef %738, ptr noundef %744, ptr noundef @c__1, ptr noundef %750, ptr noundef @c__1)
  br label %752

752:                                              ; preds = %724
  %753 = load i64, ptr %33, align 8, !tbaa !9
  %754 = add nsw i64 %753, 1
  store i64 %754, ptr %33, align 8, !tbaa !9
  br label %720, !llvm.loop !21

755:                                              ; preds = %720
  %756 = load ptr, ptr %16, align 8, !tbaa !5
  %757 = load ptr, ptr %23, align 8, !tbaa !5
  %758 = getelementptr inbounds float, ptr %757, i64 1
  %759 = load ptr, ptr %17, align 8, !tbaa !5
  %760 = getelementptr inbounds float, ptr %759, i64 1
  %761 = call i32 @f2c_scopy(ptr noundef %756, ptr noundef %758, ptr noundef @c__1, ptr noundef %760, ptr noundef @c__1)
  br label %857

762:                                              ; preds = %713
  %763 = load ptr, ptr %14, align 8, !tbaa !5
  %764 = load i64, ptr %763, align 8, !tbaa !9
  %765 = icmp eq i64 %764, 2
  br i1 %765, label %766, label %825

766:                                              ; preds = %762
  %767 = load ptr, ptr %16, align 8, !tbaa !5
  %768 = load i64, ptr %767, align 8, !tbaa !9
  store i64 %768, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %33, align 8, !tbaa !9
  br label %769

769:                                              ; preds = %802, %766
  %770 = load i64, ptr %33, align 8, !tbaa !9
  %771 = load i64, ptr %30, align 8, !tbaa !9
  %772 = icmp sle i64 %770, %771
  br i1 %772, label %773, label %805

773:                                              ; preds = %769
  %774 = load ptr, ptr %24, align 8, !tbaa !5
  %775 = load i64, ptr %45, align 8, !tbaa !9
  %776 = load i64, ptr %33, align 8, !tbaa !9
  %777 = add nsw i64 %775, %776
  %778 = getelementptr inbounds i64, ptr %774, i64 %777
  %779 = load i64, ptr %778, align 8, !tbaa !9
  store i64 %779, ptr %34, align 8, !tbaa !9
  %780 = load ptr, ptr %17, align 8, !tbaa !5
  %781 = load i64, ptr %34, align 8, !tbaa !9
  %782 = getelementptr inbounds float, ptr %780, i64 %781
  %783 = load float, ptr %782, align 4, !tbaa !14
  %784 = load ptr, ptr %23, align 8, !tbaa !5
  %785 = load i64, ptr %33, align 8, !tbaa !9
  %786 = getelementptr inbounds float, ptr %784, i64 %785
  store float %783, ptr %786, align 4, !tbaa !14
  %787 = load ptr, ptr %16, align 8, !tbaa !5
  %788 = load ptr, ptr %19, align 8, !tbaa !5
  %789 = load i64, ptr %34, align 8, !tbaa !9
  %790 = load i64, ptr %26, align 8, !tbaa !9
  %791 = mul nsw i64 %789, %790
  %792 = add nsw i64 %791, 1
  %793 = getelementptr inbounds float, ptr %788, i64 %792
  %794 = load ptr, ptr %23, align 8, !tbaa !5
  %795 = load ptr, ptr %16, align 8, !tbaa !5
  %796 = load i64, ptr %795, align 8, !tbaa !9
  %797 = load i64, ptr %33, align 8, !tbaa !9
  %798 = mul nsw i64 %796, %797
  %799 = add nsw i64 %798, 1
  %800 = getelementptr inbounds float, ptr %794, i64 %799
  %801 = call i32 @f2c_scopy(ptr noundef %787, ptr noundef %793, ptr noundef @c__1, ptr noundef %800, ptr noundef @c__1)
  br label %802

802:                                              ; preds = %773
  %803 = load i64, ptr %33, align 8, !tbaa !9
  %804 = add nsw i64 %803, 1
  store i64 %804, ptr %33, align 8, !tbaa !9
  br label %769, !llvm.loop !22

805:                                              ; preds = %769
  %806 = load ptr, ptr %16, align 8, !tbaa !5
  %807 = load ptr, ptr %23, align 8, !tbaa !5
  %808 = getelementptr inbounds float, ptr %807, i64 1
  %809 = load ptr, ptr %17, align 8, !tbaa !5
  %810 = getelementptr inbounds float, ptr %809, i64 1
  %811 = call i32 @f2c_scopy(ptr noundef %806, ptr noundef %808, ptr noundef @c__1, ptr noundef %810, ptr noundef @c__1)
  %812 = load ptr, ptr %16, align 8, !tbaa !5
  %813 = load ptr, ptr %16, align 8, !tbaa !5
  %814 = load ptr, ptr %23, align 8, !tbaa !5
  %815 = load ptr, ptr %16, align 8, !tbaa !5
  %816 = load i64, ptr %815, align 8, !tbaa !9
  %817 = add nsw i64 %816, 1
  %818 = getelementptr inbounds float, ptr %814, i64 %817
  %819 = load ptr, ptr %16, align 8, !tbaa !5
  %820 = load ptr, ptr %19, align 8, !tbaa !5
  %821 = load i64, ptr %27, align 8, !tbaa !9
  %822 = getelementptr inbounds float, ptr %820, i64 %821
  %823 = load ptr, ptr %20, align 8, !tbaa !5
  %824 = call i32 @slacpy_(ptr noundef @.str.4, ptr noundef %812, ptr noundef %813, ptr noundef %818, ptr noundef %819, ptr noundef %822, ptr noundef %823)
  br label %856

825:                                              ; preds = %762
  %826 = load ptr, ptr %16, align 8, !tbaa !5
  %827 = load i64, ptr %826, align 8, !tbaa !9
  store i64 %827, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %33, align 8, !tbaa !9
  br label %828

828:                                              ; preds = %846, %825
  %829 = load i64, ptr %33, align 8, !tbaa !9
  %830 = load i64, ptr %30, align 8, !tbaa !9
  %831 = icmp sle i64 %829, %830
  br i1 %831, label %832, label %849

832:                                              ; preds = %828
  %833 = load ptr, ptr %24, align 8, !tbaa !5
  %834 = load i64, ptr %45, align 8, !tbaa !9
  %835 = load i64, ptr %33, align 8, !tbaa !9
  %836 = add nsw i64 %834, %835
  %837 = getelementptr inbounds i64, ptr %833, i64 %836
  %838 = load i64, ptr %837, align 8, !tbaa !9
  store i64 %838, ptr %34, align 8, !tbaa !9
  %839 = load ptr, ptr %17, align 8, !tbaa !5
  %840 = load i64, ptr %34, align 8, !tbaa !9
  %841 = getelementptr inbounds float, ptr %839, i64 %840
  %842 = load float, ptr %841, align 4, !tbaa !14
  %843 = load ptr, ptr %23, align 8, !tbaa !5
  %844 = load i64, ptr %33, align 8, !tbaa !9
  %845 = getelementptr inbounds float, ptr %843, i64 %844
  store float %842, ptr %845, align 4, !tbaa !14
  br label %846

846:                                              ; preds = %832
  %847 = load i64, ptr %33, align 8, !tbaa !9
  %848 = add nsw i64 %847, 1
  store i64 %848, ptr %33, align 8, !tbaa !9
  br label %828, !llvm.loop !23

849:                                              ; preds = %828
  %850 = load ptr, ptr %16, align 8, !tbaa !5
  %851 = load ptr, ptr %23, align 8, !tbaa !5
  %852 = getelementptr inbounds float, ptr %851, i64 1
  %853 = load ptr, ptr %17, align 8, !tbaa !5
  %854 = getelementptr inbounds float, ptr %853, i64 1
  %855 = call i32 @f2c_scopy(ptr noundef %850, ptr noundef %852, ptr noundef @c__1, ptr noundef %854, ptr noundef @c__1)
  br label %856

856:                                              ; preds = %849, %805
  br label %857

857:                                              ; preds = %856, %755
  br label %870

858:                                              ; preds = %693, %478, %451
  %859 = load i64, ptr %51, align 8, !tbaa !9
  %860 = load ptr, ptr %16, align 8, !tbaa !5
  %861 = load i64, ptr %860, align 8, !tbaa !9
  %862 = add nsw i64 %861, 1
  %863 = mul nsw i64 %859, %862
  %864 = load i64, ptr %51, align 8, !tbaa !9
  %865 = add nsw i64 %863, %864
  %866 = load i64, ptr %56, align 8, !tbaa !9
  %867 = add nsw i64 %865, %866
  %868 = sub nsw i64 %867, 1
  %869 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 %868, ptr %869, align 8, !tbaa !9
  br label %870

870:                                              ; preds = %858, %857
  store i32 0, ptr %13, align 4
  store i32 1, ptr %59, align 4
  br label %871

871:                                              ; preds = %870, %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 4, 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 4, 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
  %872 = load i32, ptr %13, align 4
  ret i32 %872
}

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

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

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

declare i32 @slacpy_(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 = !{!"float", !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 float, align 4
@c_b24 = external hidden global float, align 4
@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 @slaed0_(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 -4
  %21 = getelementptr inbounds i8, ptr %4, i64 -4
  %22 = load i64, ptr %6, align 8, !tbaa !5
  %23 = xor i64 %22, -1
  %24 = getelementptr inbounds float, ptr %5, i64 %23
  %25 = load i64, ptr %8, align 8, !tbaa !5
  %26 = xor i64 %25, -1
  %27 = getelementptr inbounds float, ptr %7, i64 %26
  %28 = getelementptr inbounds i8, ptr %9, i64 -4
  %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 %375

47:                                               ; preds = %43
  %48 = icmp eq i64 %38, 0
  br i1 %48, label %375, 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 float, ptr %21, i64 %89
  %91 = load float, ptr %90, align 4, !tbaa !14
  %92 = fcmp oge float %91, 0.000000e+00
  %93 = fneg float %91
  %94 = select i1 %92, float %91, float %93
  %95 = getelementptr inbounds float, ptr %20, i64 %89
  %96 = load float, ptr %95, align 4, !tbaa !14
  %97 = fsub float %96, %94
  store float %97, ptr %95, align 4, !tbaa !14
  %98 = load float, ptr %90, align 4, !tbaa !14
  %99 = fcmp oge float %98, 0.000000e+00
  %100 = fneg float %98
  %101 = select i1 %99, float %98, float %100
  %102 = getelementptr float, ptr %3, i64 %89
  %103 = load float, ptr %102, align 4, !tbaa !14
  %104 = fsub float %103, %101
  store float %104, ptr %102, align 4, !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 %177, label %111

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

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

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

128:                                              ; preds = %124
  %129 = add nsw i64 %.pre, 1
  store i64 %129, ptr %14, align 8, !tbaa !5
  br label %130

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

.lr.ph383:                                        ; preds = %130
  %146 = getelementptr i64, ptr %10, i64 %132
  %147 = getelementptr i64, ptr %29, i64 %138
  %148 = 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
  %149 = shl i64 %131, 4
  %150 = or disjoint i64 %149, 8
  %151 = mul i64 %126, %150
  %152 = add i64 %151, 16
  %diff.check = icmp ult i64 %152, 32
  br i1 %diff.check, label %scalar.ph.preheader, label %vector.ph

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

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %153 = getelementptr i64, ptr %146, 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
  %155 = getelementptr i64, ptr %147, i64 %index
  %156 = getelementptr i8, ptr %155, i64 16
  store <2 x i64> <i64 1, i64 1>, ptr %155, align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr %156, align 8, !tbaa !5
  %index.next = add nuw i64 %index, 4
  %157 = icmp eq i64 %index.next, %n.vec
  br i1 %157, label %middle.block, label %vector.body, !llvm.loop !17

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %148, %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 ]
  %158 = add nuw i64 %.0319.lcssa447450, 1
  %159 = sub nsw i64 %.0319.lcssa447450, %.1334381.ph
  %xtraiter491 = and i64 %158, 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 [ %162, %scalar.ph.prol ], [ %.1334381.ph, %scalar.ph.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %160 = getelementptr i64, ptr %146, i64 %.1334381.prol
  store i64 1, ptr %160, align 8, !tbaa !5
  %161 = getelementptr i64, ptr %147, i64 %.1334381.prol
  store i64 1, ptr %161, align 8, !tbaa !5
  %162 = 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 ], [ %162, %scalar.ph.prol ]
  %163 = icmp ult i64 %159, 3
  br i1 %163, label %._crit_edge384, label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %.1334381 = phi i64 [ %175, %scalar.ph ], [ %.1334381.unr, %scalar.ph.prol.loopexit ]
  %164 = getelementptr i64, ptr %146, i64 %.1334381
  store i64 1, ptr %164, align 8, !tbaa !5
  %165 = getelementptr i64, ptr %147, i64 %.1334381
  store i64 1, ptr %165, align 8, !tbaa !5
  %166 = add nuw nsw i64 %.1334381, 1
  %167 = getelementptr i64, ptr %146, i64 %166
  store i64 1, ptr %167, align 8, !tbaa !5
  %168 = getelementptr i64, ptr %147, i64 %166
  store i64 1, ptr %168, align 8, !tbaa !5
  %169 = add nuw nsw i64 %.1334381, 2
  %170 = getelementptr i64, ptr %146, i64 %169
  store i64 1, ptr %170, align 8, !tbaa !5
  %171 = getelementptr i64, ptr %147, i64 %169
  store i64 1, ptr %171, align 8, !tbaa !5
  %172 = add nuw nsw i64 %.1334381, 3
  %173 = getelementptr i64, ptr %146, i64 %172
  store i64 1, ptr %173, align 8, !tbaa !5
  %174 = getelementptr i64, ptr %147, i64 %172
  store i64 1, ptr %174, align 8, !tbaa !5
  %175 = add nuw nsw i64 %.1334381, 4
  %exitcond434.not.3 = icmp eq i64 %172, %.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, %130
  %176 = getelementptr inbounds i64, ptr %29, i64 %136
  store i64 1, ptr %176, align 8, !tbaa !5
  br label %177

177:                                              ; preds = %._crit_edge384, %._crit_edge379
  %.0328 = phi i64 [ %142, %._crit_edge384 ], [ undef, %._crit_edge379 ]
  %.0325 = phi i64 [ %135, %._crit_edge384 ], [ undef, %._crit_edge379 ]
  %.0324 = phi i64 [ %145, %._crit_edge384 ], [ undef, %._crit_edge379 ]
  %.0323 = phi i64 [ %136, %._crit_edge384 ], [ undef, %._crit_edge379 ]
  %.0322 = phi i64 [ %139, %._crit_edge384 ], [ undef, %._crit_edge379 ]
  %.0318 = phi i64 [ %138, %._crit_edge384 ], [ undef, %._crit_edge379 ]
  %.0317 = phi i64 [ %133, %._crit_edge384 ], [ undef, %._crit_edge379 ]
  %invariant.gep = getelementptr i8, ptr %24, i64 4
  %invariant.gep390 = getelementptr i8, ptr %27, i64 4
  %.not345392 = icmp slt i64 %.0319.lcssa447450, 1
  br i1 %.not345392, label %.preheader, label %.lr.ph396

.lr.ph396:                                        ; preds = %177
  %178 = getelementptr float, ptr %28, i64 %.0328
  %179 = getelementptr i8, ptr %178, i64 -4
  %180 = add i64 %22, 1
  %181 = getelementptr i64, ptr %29, i64 %109
  br label %195

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

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

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

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

197:                                              ; preds = %195
  %198 = load i64, ptr %10, align 8, !tbaa !5
  br label %206

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

206:                                              ; preds = %199, %197
  %storemerge352 = phi i64 [ %205, %199 ], [ %198, %197 ]
  %.0320 = phi i64 [ %202, %199 ], [ 1, %197 ]
  store i64 %storemerge352, ptr %19, align 8, !tbaa !5
  %207 = load i64, ptr %0, align 8, !tbaa !5
  %208 = icmp eq i64 %207, 2
  %209 = getelementptr inbounds float, ptr %20, i64 %.0320
  %210 = getelementptr inbounds float, ptr %21, i64 %.0320
  br i1 %208, label %211, label %216

211:                                              ; preds = %206
  %212 = mul i64 %.0320, %180
  %213 = getelementptr inbounds float, ptr %24, i64 %212
  %214 = call i32 @ssteqr_(ptr noundef nonnull @.str.2, ptr noundef nonnull %19, ptr noundef nonnull %209, ptr noundef nonnull %210, ptr noundef %213, ptr noundef nonnull %6, ptr noundef %9, ptr noundef nonnull %11) #5
  %215 = load i64, ptr %11, align 8, !tbaa !5
  %.not354 = icmp eq i64 %215, 0
  br i1 %.not354, label %239, label %.loopexit

216:                                              ; preds = %206
  %217 = add nsw i64 %.0326394, %.0323
  %218 = getelementptr inbounds i64, ptr %29, i64 %217
  %219 = load i64, ptr %218, align 8, !tbaa !5
  %220 = getelementptr float, ptr %179, i64 %219
  %221 = call i32 @ssteqr_(ptr noundef nonnull @.str.2, ptr noundef nonnull %19, ptr noundef nonnull %209, ptr noundef nonnull %210, ptr noundef %220, ptr noundef nonnull %19, ptr noundef %9, ptr noundef nonnull %11) #5
  %222 = load i64, ptr %11, align 8, !tbaa !5
  %.not353 = icmp eq i64 %222, 0
  br i1 %.not353, label %223, label %.loopexit

223:                                              ; preds = %216
  %224 = load i64, ptr %0, align 8, !tbaa !5
  %225 = icmp eq i64 %224, 1
  br i1 %225, label %226, label %232

226:                                              ; preds = %223
  %227 = mul nsw i64 %.0320, %22
  %gep = getelementptr float, ptr %invariant.gep, i64 %227
  %228 = load i64, ptr %218, align 8, !tbaa !5
  %229 = getelementptr float, ptr %179, i64 %228
  %230 = mul nsw i64 %.0320, %25
  %gep391 = getelementptr float, ptr %invariant.gep390, i64 %230
  %231 = call i32 @f2c_sgemm(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 %229, ptr noundef nonnull %19, ptr noundef nonnull @c_b24, ptr noundef %gep391, ptr noundef nonnull %8) #5
  br label %232

232:                                              ; preds = %226, %223
  %233 = load i64, ptr %19, align 8, !tbaa !5
  %234 = load i64, ptr %218, align 8, !tbaa !5
  %235 = mul nsw i64 %233, %233
  %236 = add nsw i64 %234, %235
  %237 = getelementptr i64, ptr %10, i64 %217
  store i64 %236, ptr %237, align 8, !tbaa !5
  %238 = add nsw i64 %.0326394, 1
  br label %239

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

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

vector.ph473:                                     ; preds = %.lr.ph389.preheader
  %n.vec475 = and i64 %246, -4
  %ind.end = or disjoint i64 %n.vec475, 1
  %ind.end477 = add i64 %.0320, %n.vec475
  %247 = getelementptr i64, ptr %181, 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>
  %248 = getelementptr i64, ptr %247, i64 %index480
  %249 = getelementptr i8, ptr %248, i64 16
  store <2 x i64> %vec.ind, ptr %248, align 8, !tbaa !5
  store <2 x i64> %step.add, ptr %249, align 8, !tbaa !5
  %index.next482 = add nuw i64 %index480, 4
  %vec.ind.next = add <2 x i64> %vec.ind, <i64 4, i64 4>
  %250 = icmp eq i64 %index.next482, %n.vec475
  br i1 %250, label %middle.block470, label %vector.body479, !llvm.loop !23

middle.block470:                                  ; preds = %vector.body479
  %cmp.n483 = icmp eq i64 %246, %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 [ %252, %.lr.ph389 ], [ %.0329387.ph, %.lr.ph389.preheader486 ]
  %.2332386 = phi i64 [ %253, %.lr.ph389 ], [ %.2332386.ph, %.lr.ph389.preheader486 ]
  %251 = getelementptr i64, ptr %181, i64 %.2332386
  store i64 %.0329387, ptr %251, align 8, !tbaa !5
  %252 = add nuw i64 %.0329387, 1
  %253 = add nsw i64 %.2332386, 1
  %exitcond435.not = icmp eq i64 %252, %244
  br i1 %exitcond435.not, label %.loopexit363, label %.lr.ph389, !llvm.loop !24

254:                                              ; preds = %.lr.ph405, %._crit_edge403
  %255 = phi i64 [ 1, %.lr.ph405 ], [ %302, %._crit_edge403 ]
  %.1404 = phi i64 [ %.0319.lcssa447450, %.lr.ph405 ], [ %301, %._crit_edge403 ]
  %256 = add nsw i64 %.1404, -2
  %.not349399 = icmp slt i64 %.1404, 2
  br i1 %.not349399, label %._crit_edge403, label %257

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

263:                                              ; preds = %257
  %gep461 = getelementptr float, ptr %invariant.gep460, i64 %259
  %264 = call i32 @slaed7_(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 %192, ptr noundef %gep461, ptr noundef nonnull %15, ptr noundef nonnull %184, ptr noundef nonnull %185, ptr noundef nonnull %186, ptr noundef nonnull %187, ptr noundef nonnull %188, ptr noundef nonnull %189, ptr noundef %9, ptr noundef nonnull %190, ptr noundef %258, ptr noundef nonnull %11) #5
  br label %267

265:                                              ; preds = %257
  %gep463 = getelementptr float, ptr %invariant.gep462, i64 %259
  %266 = call i32 @slaed1_(ptr noundef nonnull %19, ptr noundef nonnull %3, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %193, ptr noundef %gep463, ptr noundef nonnull %15, ptr noundef %9, ptr noundef %258, ptr noundef nonnull %11) #5
  br label %267

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

269:                                              ; preds = %267
  %270 = load i64, ptr %194, align 8, !tbaa !5
  store i64 %270, 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 = %269, %294
  %271 = phi i64 [ %297, %294 ], [ %270, %269 ]
  %.3400 = phi i64 [ %295, %294 ], [ 2, %269 ]
  %272 = add nsw i64 %271, 1
  %gep459 = getelementptr inbounds i64, ptr %invariant.gep458, i64 %.3400
  %273 = load i64, ptr %gep459, align 8, !tbaa !5
  %274 = sub nsw i64 %273, %271
  %275 = sdiv i64 %274, 2
  %276 = load i64, ptr %17, align 8, !tbaa !5
  %277 = add nsw i64 %276, 1
  store i64 %274, ptr %19, align 8
  store i64 %275, ptr %15, align 8
  store i64 %277, ptr %17, align 8, !tbaa !5
  %278 = load i64, ptr %0, align 8, !tbaa !5
  %279 = icmp eq i64 %278, 2
  %280 = getelementptr float, ptr %3, i64 %271
  %281 = getelementptr i64, ptr %183, i64 %272
  %282 = getelementptr float, ptr %4, i64 %271
  %283 = getelementptr float, ptr %282, i64 %275
  %284 = getelementptr i8, ptr %283, i64 -4
  br i1 %279, label %285, label %289

285:                                              ; preds = %.peel.next
  %286 = mul i64 %272, %191
  %287 = getelementptr inbounds float, ptr %24, i64 %286
  %288 = call i32 @slaed1_(ptr noundef nonnull %19, ptr noundef nonnull %280, ptr noundef %287, ptr noundef nonnull %6, ptr noundef %281, ptr noundef %284, ptr noundef nonnull %15, ptr noundef %9, ptr noundef %258, ptr noundef nonnull %11) #5
  br label %292

289:                                              ; preds = %.peel.next
  %290 = mul nsw i64 %272, %25
  %gep398 = getelementptr float, ptr %invariant.gep390, i64 %290
  %291 = call i32 @slaed7_(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 %280, ptr noundef %gep398, ptr noundef nonnull %8, ptr noundef %281, ptr noundef %284, ptr noundef nonnull %15, ptr noundef nonnull %184, ptr noundef nonnull %185, ptr noundef nonnull %186, ptr noundef nonnull %187, ptr noundef nonnull %188, ptr noundef nonnull %189, ptr noundef %9, ptr noundef nonnull %190, ptr noundef %258, ptr noundef nonnull %11) #5
  br label %292

292:                                              ; preds = %289, %285
  %293 = load i64, ptr %11, align 8, !tbaa !5
  %.not351 = icmp eq i64 %293, 0
  br i1 %.not351, label %294, label %.loopexit

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

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

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

._crit_edge406:                                   ; preds = %._crit_edge403, %.preheader
  %304 = load i64, ptr %0, align 8, !tbaa !5
  %305 = load i64, ptr %2, align 8, !tbaa !5
  %.not346423 = icmp slt i64 %305, 1
  switch i64 %304, label %337 [
    i64 1, label %306
    i64 2, label %319
  ]

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

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

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

._crit_edge422:                                   ; preds = %308, %306
  %318 = call i32 @f2c_scopy(ptr noundef nonnull %2, ptr noundef %9, ptr noundef nonnull @c__1, ptr noundef %3, ptr noundef nonnull @c__1) #5
  br label %375

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

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

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

._crit_edge413:                                   ; preds = %321, %319
  %333 = call i32 @f2c_scopy(ptr noundef nonnull %2, ptr noundef %9, ptr noundef nonnull @c__1, ptr noundef %3, ptr noundef nonnull @c__1) #5
  %334 = load i64, ptr %2, align 8, !tbaa !5
  %335 = getelementptr float, ptr %9, i64 %334
  %336 = call i32 @slacpy_(ptr noundef nonnull @.str.4, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %335, ptr noundef nonnull %2, ptr noundef %5, ptr noundef nonnull %6) #5
  br label %375

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

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

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

340:                                              ; preds = %340, %.lr.ph426.new
  %.6424 = phi i64 [ 1, %.lr.ph426.new ], [ %362, %340 ]
  %niter497 = phi i64 [ 0, %.lr.ph426.new ], [ %niter497.next.3, %340 ]
  %341 = getelementptr i64, ptr %338, i64 %.6424
  %342 = load i64, ptr %341, align 8, !tbaa !5
  %343 = getelementptr inbounds float, ptr %20, i64 %342
  %344 = load float, ptr %343, align 4, !tbaa !14
  %345 = getelementptr inbounds float, ptr %28, i64 %.6424
  store float %344, ptr %345, align 4, !tbaa !14
  %gep511 = getelementptr i64, ptr %invariant.gep510, i64 %.6424
  %346 = load i64, ptr %gep511, align 8, !tbaa !5
  %347 = getelementptr inbounds float, ptr %20, i64 %346
  %348 = load float, ptr %347, align 4, !tbaa !14
  %349 = getelementptr float, ptr %9, i64 %.6424
  store float %348, ptr %349, align 4, !tbaa !14
  %350 = add nuw nsw i64 %.6424, 2
  %351 = getelementptr i64, ptr %338, i64 %350
  %352 = load i64, ptr %351, align 8, !tbaa !5
  %353 = getelementptr inbounds float, ptr %20, i64 %352
  %354 = load float, ptr %353, align 4, !tbaa !14
  %355 = getelementptr inbounds float, ptr %28, i64 %350
  store float %354, ptr %355, align 4, !tbaa !14
  %356 = add nuw i64 %.6424, 3
  %357 = getelementptr i64, ptr %338, i64 %356
  %358 = load i64, ptr %357, align 8, !tbaa !5
  %359 = getelementptr inbounds float, ptr %20, i64 %358
  %360 = load float, ptr %359, align 4, !tbaa !14
  %361 = getelementptr inbounds float, ptr %28, i64 %356
  store float %360, ptr %361, align 4, !tbaa !14
  %362 = 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 %340, !llvm.loop !29

._crit_edge427.loopexit.unr-lcssa:                ; preds = %340, %.lr.ph426
  %.6424.unr = phi i64 [ 1, %.lr.ph426 ], [ %362, %340 ]
  %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 [ %368, %.epil.preheader ], [ %.6424.unr, %._crit_edge427.loopexit.unr-lcssa ]
  %epil.iter494 = phi i64 [ %epil.iter494.next, %.epil.preheader ], [ 0, %._crit_edge427.loopexit.unr-lcssa ]
  %363 = getelementptr i64, ptr %338, i64 %.6424.epil
  %364 = load i64, ptr %363, align 8, !tbaa !5
  %365 = getelementptr inbounds float, ptr %20, i64 %364
  %366 = load float, ptr %365, align 4, !tbaa !14
  %367 = getelementptr inbounds float, ptr %28, i64 %.6424.epil
  store float %366, ptr %367, align 4, !tbaa !14
  %368 = 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, %337
  %369 = call i32 @f2c_scopy(ptr noundef nonnull %2, ptr noundef %9, ptr noundef nonnull @c__1, ptr noundef %3, ptr noundef nonnull @c__1) #5
  br label %375

.loopexit:                                        ; preds = %216, %211, %267, %292
  %.2 = phi i64 [ %272, %292 ], [ 1, %267 ], [ %.0320, %211 ], [ %.0320, %216 ]
  %370 = load i64, ptr %2, align 8, !tbaa !5
  %.2356 = add i64 %370, 2
  %371 = mul i64 %.2356, %.2
  %372 = load i64, ptr %19, align 8, !tbaa !5
  %373 = add i64 %372, -1
  %374 = add i64 %373, %371
  store i64 %374, ptr %11, align 8, !tbaa !5
  br label %375

375:                                              ; 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 @ssteqr_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @f2c_sgemm(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 @slaed1_(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 @slaed7_(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_scopy(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @slacpy_(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 = !{!"float", !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