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

; 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 [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.2 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i64, align 8
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i64, align 8
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [5 x i8], align 1
@c_b36 = external hidden global float, align 4
@c_b37 = external hidden global float, align 4
@.str.14 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @sggev_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16) #0 {
  %18 = alloca i32, align 4
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca 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 i64, align 8
  %43 = alloca i64, align 8
  %44 = alloca i64, align 8
  %45 = alloca i64, align 8
  %46 = alloca float, align 4
  %47 = alloca float, align 4
  %48 = alloca float, align 4
  %49 = alloca float, align 4
  %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 float, align 4
  %56 = alloca i64, align 8
  %57 = alloca float, align 4
  %58 = alloca float, align 4
  %59 = alloca i64, align 8
  %60 = alloca i64, align 8
  %61 = alloca float, align 4
  %62 = alloca i64, align 8
  %63 = alloca i64, align 8
  %64 = alloca i64, align 8
  %65 = alloca i64, align 8
  %66 = alloca i64, align 8
  %67 = alloca i64, align 8
  %68 = alloca i64, align 8
  %69 = alloca i64, align 8
  %70 = alloca [1 x i64], align 8
  %71 = alloca [1 x i8], align 1
  %72 = alloca float, align 4
  %73 = alloca i64, align 8
  %74 = alloca i64, align 8
  %75 = alloca i64, align 8
  %76 = alloca float, align 4
  %77 = alloca float, align 4
  %78 = alloca i64, align 8
  %79 = alloca i64, align 8
  %80 = alloca float, align 4
  %81 = alloca i64, align 8
  %82 = alloca i32, align 4
  store ptr %0, ptr %19, align 8, !tbaa !5
  store ptr %1, ptr %20, align 8, !tbaa !5
  store ptr %2, ptr %21, align 8, !tbaa !5
  store ptr %3, ptr %22, align 8, !tbaa !5
  store ptr %4, ptr %23, align 8, !tbaa !5
  store ptr %5, ptr %24, align 8, !tbaa !5
  store ptr %6, ptr %25, align 8, !tbaa !5
  store ptr %7, ptr %26, align 8, !tbaa !5
  store ptr %8, ptr %27, align 8, !tbaa !5
  store ptr %9, ptr %28, align 8, !tbaa !5
  store ptr %10, ptr %29, align 8, !tbaa !5
  store ptr %11, ptr %30, align 8, !tbaa !5
  store ptr %12, ptr %31, align 8, !tbaa !5
  store ptr %13, ptr %32, align 8, !tbaa !5
  store ptr %14, ptr %33, align 8, !tbaa !5
  store ptr %15, ptr %34, align 8, !tbaa !5
  store ptr %16, ptr %35, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #4
  call void @llvm.lifetime.start.p0(i64 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 4, ptr %55) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #4
  call void @llvm.lifetime.start.p0(i64 1, ptr %71) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #4
  %83 = load ptr, ptr %23, align 8, !tbaa !5
  %84 = load i64, ptr %83, align 8, !tbaa !9
  store i64 %84, ptr %36, align 8, !tbaa !9
  %85 = load i64, ptr %36, align 8, !tbaa !9
  %86 = add nsw i64 1, %85
  store i64 %86, ptr %37, align 8, !tbaa !9
  %87 = load i64, ptr %37, align 8, !tbaa !9
  %88 = load ptr, ptr %22, align 8, !tbaa !5
  %89 = sub i64 0, %87
  %90 = getelementptr inbounds float, ptr %88, i64 %89
  store ptr %90, ptr %22, align 8, !tbaa !5
  %91 = load ptr, ptr %25, align 8, !tbaa !5
  %92 = load i64, ptr %91, align 8, !tbaa !9
  store i64 %92, ptr %38, align 8, !tbaa !9
  %93 = load i64, ptr %38, align 8, !tbaa !9
  %94 = add nsw i64 1, %93
  store i64 %94, ptr %39, align 8, !tbaa !9
  %95 = load i64, ptr %39, align 8, !tbaa !9
  %96 = load ptr, ptr %24, align 8, !tbaa !5
  %97 = sub i64 0, %95
  %98 = getelementptr inbounds float, ptr %96, i64 %97
  store ptr %98, ptr %24, align 8, !tbaa !5
  %99 = load ptr, ptr %26, align 8, !tbaa !5
  %100 = getelementptr inbounds float, ptr %99, i32 -1
  store ptr %100, ptr %26, align 8, !tbaa !5
  %101 = load ptr, ptr %27, align 8, !tbaa !5
  %102 = getelementptr inbounds float, ptr %101, i32 -1
  store ptr %102, ptr %27, align 8, !tbaa !5
  %103 = load ptr, ptr %28, align 8, !tbaa !5
  %104 = getelementptr inbounds float, ptr %103, i32 -1
  store ptr %104, ptr %28, align 8, !tbaa !5
  %105 = load ptr, ptr %30, align 8, !tbaa !5
  %106 = load i64, ptr %105, align 8, !tbaa !9
  store i64 %106, ptr %40, align 8, !tbaa !9
  %107 = load i64, ptr %40, align 8, !tbaa !9
  %108 = add nsw i64 1, %107
  store i64 %108, ptr %41, align 8, !tbaa !9
  %109 = load i64, ptr %41, align 8, !tbaa !9
  %110 = load ptr, ptr %29, align 8, !tbaa !5
  %111 = sub i64 0, %109
  %112 = getelementptr inbounds float, ptr %110, i64 %111
  store ptr %112, ptr %29, align 8, !tbaa !5
  %113 = load ptr, ptr %32, align 8, !tbaa !5
  %114 = load i64, ptr %113, align 8, !tbaa !9
  store i64 %114, ptr %42, align 8, !tbaa !9
  %115 = load i64, ptr %42, align 8, !tbaa !9
  %116 = add nsw i64 1, %115
  store i64 %116, ptr %43, align 8, !tbaa !9
  %117 = load i64, ptr %43, align 8, !tbaa !9
  %118 = load ptr, ptr %31, align 8, !tbaa !5
  %119 = sub i64 0, %117
  %120 = getelementptr inbounds float, ptr %118, i64 %119
  store ptr %120, ptr %31, align 8, !tbaa !5
  %121 = load ptr, ptr %33, align 8, !tbaa !5
  %122 = getelementptr inbounds float, ptr %121, i32 -1
  store ptr %122, ptr %33, align 8, !tbaa !5
  %123 = load ptr, ptr %19, align 8, !tbaa !5
  %124 = call i64 @lsame_(ptr noundef %123, ptr noundef @.str)
  %125 = icmp ne i64 %124, 0
  br i1 %125, label %126, label %127

126:                                              ; preds = %17
  store i64 1, ptr %73, align 8, !tbaa !9
  store i64 0, ptr %62, align 8, !tbaa !9
  br label %134

127:                                              ; preds = %17
  %128 = load ptr, ptr %19, align 8, !tbaa !5
  %129 = call i64 @lsame_(ptr noundef %128, ptr noundef @.str.1)
  %130 = icmp ne i64 %129, 0
  br i1 %130, label %131, label %132

131:                                              ; preds = %127
  store i64 2, ptr %73, align 8, !tbaa !9
  store i64 1, ptr %62, align 8, !tbaa !9
  br label %133

132:                                              ; preds = %127
  store i64 -1, ptr %73, align 8, !tbaa !9
  store i64 0, ptr %62, align 8, !tbaa !9
  br label %133

133:                                              ; preds = %132, %131
  br label %134

134:                                              ; preds = %133, %126
  %135 = load ptr, ptr %20, align 8, !tbaa !5
  %136 = call i64 @lsame_(ptr noundef %135, ptr noundef @.str)
  %137 = icmp ne i64 %136, 0
  br i1 %137, label %138, label %139

138:                                              ; preds = %134
  store i64 1, ptr %75, align 8, !tbaa !9
  store i64 0, ptr %63, align 8, !tbaa !9
  br label %146

139:                                              ; preds = %134
  %140 = load ptr, ptr %20, align 8, !tbaa !5
  %141 = call i64 @lsame_(ptr noundef %140, ptr noundef @.str.1)
  %142 = icmp ne i64 %141, 0
  br i1 %142, label %143, label %144

143:                                              ; preds = %139
  store i64 2, ptr %75, align 8, !tbaa !9
  store i64 1, ptr %63, align 8, !tbaa !9
  br label %145

144:                                              ; preds = %139
  store i64 -1, ptr %75, align 8, !tbaa !9
  store i64 0, ptr %63, align 8, !tbaa !9
  br label %145

145:                                              ; preds = %144, %143
  br label %146

146:                                              ; preds = %145, %138
  %147 = load i64, ptr %62, align 8, !tbaa !9
  %148 = icmp ne i64 %147, 0
  br i1 %148, label %152, label %149

149:                                              ; preds = %146
  %150 = load i64, ptr %63, align 8, !tbaa !9
  %151 = icmp ne i64 %150, 0
  br label %152

152:                                              ; preds = %149, %146
  %153 = phi i1 [ true, %146 ], [ %151, %149 ]
  %154 = zext i1 %153 to i32
  %155 = sext i32 %154 to i64
  store i64 %155, ptr %56, align 8, !tbaa !9
  %156 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 0, ptr %156, align 8, !tbaa !9
  %157 = load ptr, ptr %34, align 8, !tbaa !5
  %158 = load i64, ptr %157, align 8, !tbaa !9
  %159 = icmp eq i64 %158, -1
  %160 = zext i1 %159 to i32
  %161 = sext i32 %160 to i64
  store i64 %161, ptr %81, align 8, !tbaa !9
  %162 = load i64, ptr %73, align 8, !tbaa !9
  %163 = icmp sle i64 %162, 0
  br i1 %163, label %164, label %166

164:                                              ; preds = %152
  %165 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -1, ptr %165, align 8, !tbaa !9
  br label %243

166:                                              ; preds = %152
  %167 = load i64, ptr %75, align 8, !tbaa !9
  %168 = icmp sle i64 %167, 0
  br i1 %168, label %169, label %171

169:                                              ; preds = %166
  %170 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -2, ptr %170, align 8, !tbaa !9
  br label %242

171:                                              ; preds = %166
  %172 = load ptr, ptr %21, align 8, !tbaa !5
  %173 = load i64, ptr %172, align 8, !tbaa !9
  %174 = icmp slt i64 %173, 0
  br i1 %174, label %175, label %177

175:                                              ; preds = %171
  %176 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -3, ptr %176, align 8, !tbaa !9
  br label %241

177:                                              ; preds = %171
  %178 = load ptr, ptr %23, align 8, !tbaa !5
  %179 = load i64, ptr %178, align 8, !tbaa !9
  %180 = load ptr, ptr %21, align 8, !tbaa !5
  %181 = load i64, ptr %180, align 8, !tbaa !9
  %182 = icmp sge i64 1, %181
  br i1 %182, label %183, label %184

183:                                              ; preds = %177
  br label %187

184:                                              ; preds = %177
  %185 = load ptr, ptr %21, align 8, !tbaa !5
  %186 = load i64, ptr %185, align 8, !tbaa !9
  br label %187

187:                                              ; preds = %184, %183
  %188 = phi i64 [ 1, %183 ], [ %186, %184 ]
  %189 = icmp slt i64 %179, %188
  br i1 %189, label %190, label %192

190:                                              ; preds = %187
  %191 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -5, ptr %191, align 8, !tbaa !9
  br label %240

192:                                              ; preds = %187
  %193 = load ptr, ptr %25, align 8, !tbaa !5
  %194 = load i64, ptr %193, align 8, !tbaa !9
  %195 = load ptr, ptr %21, align 8, !tbaa !5
  %196 = load i64, ptr %195, align 8, !tbaa !9
  %197 = icmp sge i64 1, %196
  br i1 %197, label %198, label %199

198:                                              ; preds = %192
  br label %202

199:                                              ; preds = %192
  %200 = load ptr, ptr %21, align 8, !tbaa !5
  %201 = load i64, ptr %200, align 8, !tbaa !9
  br label %202

202:                                              ; preds = %199, %198
  %203 = phi i64 [ 1, %198 ], [ %201, %199 ]
  %204 = icmp slt i64 %194, %203
  br i1 %204, label %205, label %207

205:                                              ; preds = %202
  %206 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -7, ptr %206, align 8, !tbaa !9
  br label %239

207:                                              ; preds = %202
  %208 = load ptr, ptr %30, align 8, !tbaa !5
  %209 = load i64, ptr %208, align 8, !tbaa !9
  %210 = icmp slt i64 %209, 1
  br i1 %210, label %220, label %211

211:                                              ; preds = %207
  %212 = load i64, ptr %62, align 8, !tbaa !9
  %213 = icmp ne i64 %212, 0
  br i1 %213, label %214, label %222

214:                                              ; preds = %211
  %215 = load ptr, ptr %30, align 8, !tbaa !5
  %216 = load i64, ptr %215, align 8, !tbaa !9
  %217 = load ptr, ptr %21, align 8, !tbaa !5
  %218 = load i64, ptr %217, align 8, !tbaa !9
  %219 = icmp slt i64 %216, %218
  br i1 %219, label %220, label %222

220:                                              ; preds = %214, %207
  %221 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -12, ptr %221, align 8, !tbaa !9
  br label %238

222:                                              ; preds = %214, %211
  %223 = load ptr, ptr %32, align 8, !tbaa !5
  %224 = load i64, ptr %223, align 8, !tbaa !9
  %225 = icmp slt i64 %224, 1
  br i1 %225, label %235, label %226

226:                                              ; preds = %222
  %227 = load i64, ptr %63, align 8, !tbaa !9
  %228 = icmp ne i64 %227, 0
  br i1 %228, label %229, label %237

229:                                              ; preds = %226
  %230 = load ptr, ptr %32, align 8, !tbaa !5
  %231 = load i64, ptr %230, align 8, !tbaa !9
  %232 = load ptr, ptr %21, align 8, !tbaa !5
  %233 = load i64, ptr %232, align 8, !tbaa !9
  %234 = icmp slt i64 %231, %233
  br i1 %234, label %235, label %237

235:                                              ; preds = %229, %222
  %236 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -14, ptr %236, align 8, !tbaa !9
  br label %237

237:                                              ; preds = %235, %229, %226
  br label %238

238:                                              ; preds = %237, %220
  br label %239

239:                                              ; preds = %238, %205
  br label %240

240:                                              ; preds = %239, %190
  br label %241

241:                                              ; preds = %240, %175
  br label %242

242:                                              ; preds = %241, %169
  br label %243

243:                                              ; preds = %242, %164
  %244 = load ptr, ptr %35, align 8, !tbaa !5
  %245 = load i64, ptr %244, align 8, !tbaa !9
  %246 = icmp eq i64 %245, 0
  br i1 %246, label %247, label %328

247:                                              ; preds = %243
  store i64 1, ptr %44, align 8, !tbaa !9
  %248 = load ptr, ptr %21, align 8, !tbaa !5
  %249 = load i64, ptr %248, align 8, !tbaa !9
  %250 = shl i64 %249, 3
  store i64 %250, ptr %45, align 8, !tbaa !9
  %251 = load i64, ptr %44, align 8, !tbaa !9
  %252 = load i64, ptr %45, align 8, !tbaa !9
  %253 = icmp sge i64 %251, %252
  br i1 %253, label %254, label %256

254:                                              ; preds = %247
  %255 = load i64, ptr %44, align 8, !tbaa !9
  br label %258

256:                                              ; preds = %247
  %257 = load i64, ptr %45, align 8, !tbaa !9
  br label %258

258:                                              ; preds = %256, %254
  %259 = phi i64 [ %255, %254 ], [ %257, %256 ]
  store i64 %259, ptr %78, align 8, !tbaa !9
  store i64 1, ptr %44, align 8, !tbaa !9
  %260 = load ptr, ptr %21, align 8, !tbaa !5
  %261 = load i64, ptr %260, align 8, !tbaa !9
  %262 = load ptr, ptr %21, align 8, !tbaa !5
  %263 = load ptr, ptr %21, align 8, !tbaa !5
  %264 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef %262, ptr noundef @c__1, ptr noundef %263, ptr noundef @c__0)
  %265 = add nsw i64 %264, 7
  %266 = mul nsw i64 %261, %265
  store i64 %266, ptr %45, align 8, !tbaa !9
  %267 = load i64, ptr %44, align 8, !tbaa !9
  %268 = load i64, ptr %45, align 8, !tbaa !9
  %269 = icmp sge i64 %267, %268
  br i1 %269, label %270, label %272

270:                                              ; preds = %258
  %271 = load i64, ptr %44, align 8, !tbaa !9
  br label %274

272:                                              ; preds = %258
  %273 = load i64, ptr %45, align 8, !tbaa !9
  br label %274

274:                                              ; preds = %272, %270
  %275 = phi i64 [ %271, %270 ], [ %273, %272 ]
  store i64 %275, ptr %79, align 8, !tbaa !9
  %276 = load i64, ptr %79, align 8, !tbaa !9
  store i64 %276, ptr %44, align 8, !tbaa !9
  %277 = load ptr, ptr %21, align 8, !tbaa !5
  %278 = load i64, ptr %277, align 8, !tbaa !9
  %279 = load ptr, ptr %21, align 8, !tbaa !5
  %280 = load ptr, ptr %21, align 8, !tbaa !5
  %281 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.4, ptr noundef @.str.3, ptr noundef %279, ptr noundef @c__1, ptr noundef %280, ptr noundef @c__0)
  %282 = add nsw i64 %281, 7
  %283 = mul nsw i64 %278, %282
  store i64 %283, ptr %45, align 8, !tbaa !9
  %284 = load i64, ptr %44, align 8, !tbaa !9
  %285 = load i64, ptr %45, align 8, !tbaa !9
  %286 = icmp sge i64 %284, %285
  br i1 %286, label %287, label %289

287:                                              ; preds = %274
  %288 = load i64, ptr %44, align 8, !tbaa !9
  br label %291

289:                                              ; preds = %274
  %290 = load i64, ptr %45, align 8, !tbaa !9
  br label %291

291:                                              ; preds = %289, %287
  %292 = phi i64 [ %288, %287 ], [ %290, %289 ]
  store i64 %292, ptr %79, align 8, !tbaa !9
  %293 = load i64, ptr %62, align 8, !tbaa !9
  %294 = icmp ne i64 %293, 0
  br i1 %294, label %295, label %313

295:                                              ; preds = %291
  %296 = load i64, ptr %79, align 8, !tbaa !9
  store i64 %296, ptr %44, align 8, !tbaa !9
  %297 = load ptr, ptr %21, align 8, !tbaa !5
  %298 = load i64, ptr %297, align 8, !tbaa !9
  %299 = load ptr, ptr %21, align 8, !tbaa !5
  %300 = load ptr, ptr %21, align 8, !tbaa !5
  %301 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.5, ptr noundef @.str.3, ptr noundef %299, ptr noundef @c__1, ptr noundef %300, ptr noundef @c_n1)
  %302 = add nsw i64 %301, 7
  %303 = mul nsw i64 %298, %302
  store i64 %303, ptr %45, align 8, !tbaa !9
  %304 = load i64, ptr %44, align 8, !tbaa !9
  %305 = load i64, ptr %45, align 8, !tbaa !9
  %306 = icmp sge i64 %304, %305
  br i1 %306, label %307, label %309

307:                                              ; preds = %295
  %308 = load i64, ptr %44, align 8, !tbaa !9
  br label %311

309:                                              ; preds = %295
  %310 = load i64, ptr %45, align 8, !tbaa !9
  br label %311

311:                                              ; preds = %309, %307
  %312 = phi i64 [ %308, %307 ], [ %310, %309 ]
  store i64 %312, ptr %79, align 8, !tbaa !9
  br label %313

313:                                              ; preds = %311, %291
  %314 = load i64, ptr %79, align 8, !tbaa !9
  %315 = sitofp i64 %314 to float
  %316 = load ptr, ptr %33, align 8, !tbaa !5
  %317 = getelementptr inbounds float, ptr %316, i64 1
  store float %315, ptr %317, align 4, !tbaa !11
  %318 = load ptr, ptr %34, align 8, !tbaa !5
  %319 = load i64, ptr %318, align 8, !tbaa !9
  %320 = load i64, ptr %78, align 8, !tbaa !9
  %321 = icmp slt i64 %319, %320
  br i1 %321, label %322, label %327

322:                                              ; preds = %313
  %323 = load i64, ptr %81, align 8, !tbaa !9
  %324 = icmp ne i64 %323, 0
  br i1 %324, label %327, label %325

325:                                              ; preds = %322
  %326 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -16, ptr %326, align 8, !tbaa !9
  br label %327

327:                                              ; preds = %325, %322, %313
  br label %328

328:                                              ; preds = %327, %243
  %329 = load ptr, ptr %35, align 8, !tbaa !5
  %330 = load i64, ptr %329, align 8, !tbaa !9
  %331 = icmp ne i64 %330, 0
  br i1 %331, label %332, label %337

332:                                              ; preds = %328
  %333 = load ptr, ptr %35, align 8, !tbaa !5
  %334 = load i64, ptr %333, align 8, !tbaa !9
  %335 = sub nsw i64 0, %334
  store i64 %335, ptr %44, align 8, !tbaa !9
  %336 = call i32 @xerbla_(ptr noundef @.str.6, ptr noundef %44)
  store i32 0, ptr %18, align 4
  store i32 1, ptr %82, align 4
  br label %1240

337:                                              ; preds = %328
  %338 = load i64, ptr %81, align 8, !tbaa !9
  %339 = icmp ne i64 %338, 0
  br i1 %339, label %340, label %341

340:                                              ; preds = %337
  store i32 0, ptr %18, align 4
  store i32 1, ptr %82, align 4
  br label %1240

341:                                              ; preds = %337
  br label %342

342:                                              ; preds = %341
  %343 = load ptr, ptr %21, align 8, !tbaa !5
  %344 = load i64, ptr %343, align 8, !tbaa !9
  %345 = icmp eq i64 %344, 0
  br i1 %345, label %346, label %347

346:                                              ; preds = %342
  store i32 0, ptr %18, align 4
  store i32 1, ptr %82, align 4
  br label %1240

347:                                              ; preds = %342
  %348 = call double @slamch_(ptr noundef @.str.7)
  %349 = fptrunc double %348 to float
  store float %349, ptr %55, align 4, !tbaa !11
  %350 = call double @slamch_(ptr noundef @.str.8)
  %351 = fptrunc double %350 to float
  store float %351, ptr %80, align 4, !tbaa !11
  %352 = load float, ptr %80, align 4, !tbaa !11
  %353 = fdiv float 1.000000e+00, %352
  store float %353, ptr %72, align 4, !tbaa !11
  %354 = call i32 @slabad_(ptr noundef %80, ptr noundef %72)
  %355 = load float, ptr %80, align 4, !tbaa !11
  %356 = fpext float %355 to double
  %357 = call double @sqrt(double noundef %356) #4
  %358 = load float, ptr %55, align 4, !tbaa !11
  %359 = fpext float %358 to double
  %360 = fdiv double %357, %359
  %361 = fptrunc double %360 to float
  store float %361, ptr %80, align 4, !tbaa !11
  %362 = load float, ptr %80, align 4, !tbaa !11
  %363 = fdiv float 1.000000e+00, %362
  store float %363, ptr %72, align 4, !tbaa !11
  %364 = load ptr, ptr %21, align 8, !tbaa !5
  %365 = load ptr, ptr %21, align 8, !tbaa !5
  %366 = load ptr, ptr %22, align 8, !tbaa !5
  %367 = load i64, ptr %37, align 8, !tbaa !9
  %368 = getelementptr inbounds float, ptr %366, i64 %367
  %369 = load ptr, ptr %23, align 8, !tbaa !5
  %370 = load ptr, ptr %33, align 8, !tbaa !5
  %371 = getelementptr inbounds float, ptr %370, i64 1
  %372 = call double @slange_(ptr noundef @.str.9, ptr noundef %364, ptr noundef %365, ptr noundef %368, ptr noundef %369, ptr noundef %371)
  %373 = fptrunc double %372 to float
  store float %373, ptr %57, align 4, !tbaa !11
  store i64 0, ptr %68, align 8, !tbaa !9
  %374 = load float, ptr %57, align 4, !tbaa !11
  %375 = fcmp ogt float %374, 0.000000e+00
  br i1 %375, label %376, label %382

376:                                              ; preds = %347
  %377 = load float, ptr %57, align 4, !tbaa !11
  %378 = load float, ptr %80, align 4, !tbaa !11
  %379 = fcmp olt float %377, %378
  br i1 %379, label %380, label %382

380:                                              ; preds = %376
  %381 = load float, ptr %80, align 4, !tbaa !11
  store float %381, ptr %76, align 4, !tbaa !11
  store i64 1, ptr %68, align 8, !tbaa !9
  br label %389

382:                                              ; preds = %376, %347
  %383 = load float, ptr %57, align 4, !tbaa !11
  %384 = load float, ptr %72, align 4, !tbaa !11
  %385 = fcmp ogt float %383, %384
  br i1 %385, label %386, label %388

386:                                              ; preds = %382
  %387 = load float, ptr %72, align 4, !tbaa !11
  store float %387, ptr %76, align 4, !tbaa !11
  store i64 1, ptr %68, align 8, !tbaa !9
  br label %388

388:                                              ; preds = %386, %382
  br label %389

389:                                              ; preds = %388, %380
  %390 = load i64, ptr %68, align 8, !tbaa !9
  %391 = icmp ne i64 %390, 0
  br i1 %391, label %392, label %400

392:                                              ; preds = %389
  %393 = load ptr, ptr %21, align 8, !tbaa !5
  %394 = load ptr, ptr %21, align 8, !tbaa !5
  %395 = load ptr, ptr %22, align 8, !tbaa !5
  %396 = load i64, ptr %37, align 8, !tbaa !9
  %397 = getelementptr inbounds float, ptr %395, i64 %396
  %398 = load ptr, ptr %23, align 8, !tbaa !5
  %399 = call i32 @slascl_(ptr noundef @.str.10, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %57, ptr noundef %76, ptr noundef %393, ptr noundef %394, ptr noundef %397, ptr noundef %398, ptr noundef %59)
  br label %400

400:                                              ; preds = %392, %389
  %401 = load ptr, ptr %21, align 8, !tbaa !5
  %402 = load ptr, ptr %21, align 8, !tbaa !5
  %403 = load ptr, ptr %24, align 8, !tbaa !5
  %404 = load i64, ptr %39, align 8, !tbaa !9
  %405 = getelementptr inbounds float, ptr %403, i64 %404
  %406 = load ptr, ptr %25, align 8, !tbaa !5
  %407 = load ptr, ptr %33, align 8, !tbaa !5
  %408 = getelementptr inbounds float, ptr %407, i64 1
  %409 = call double @slange_(ptr noundef @.str.9, ptr noundef %401, ptr noundef %402, ptr noundef %405, ptr noundef %406, ptr noundef %408)
  %410 = fptrunc double %409 to float
  store float %410, ptr %58, align 4, !tbaa !11
  store i64 0, ptr %69, align 8, !tbaa !9
  %411 = load float, ptr %58, align 4, !tbaa !11
  %412 = fcmp ogt float %411, 0.000000e+00
  br i1 %412, label %413, label %419

413:                                              ; preds = %400
  %414 = load float, ptr %58, align 4, !tbaa !11
  %415 = load float, ptr %80, align 4, !tbaa !11
  %416 = fcmp olt float %414, %415
  br i1 %416, label %417, label %419

417:                                              ; preds = %413
  %418 = load float, ptr %80, align 4, !tbaa !11
  store float %418, ptr %77, align 4, !tbaa !11
  store i64 1, ptr %69, align 8, !tbaa !9
  br label %426

419:                                              ; preds = %413, %400
  %420 = load float, ptr %58, align 4, !tbaa !11
  %421 = load float, ptr %72, align 4, !tbaa !11
  %422 = fcmp ogt float %420, %421
  br i1 %422, label %423, label %425

423:                                              ; preds = %419
  %424 = load float, ptr %72, align 4, !tbaa !11
  store float %424, ptr %77, align 4, !tbaa !11
  store i64 1, ptr %69, align 8, !tbaa !9
  br label %425

425:                                              ; preds = %423, %419
  br label %426

426:                                              ; preds = %425, %417
  %427 = load i64, ptr %69, align 8, !tbaa !9
  %428 = icmp ne i64 %427, 0
  br i1 %428, label %429, label %437

429:                                              ; preds = %426
  %430 = load ptr, ptr %21, align 8, !tbaa !5
  %431 = load ptr, ptr %21, align 8, !tbaa !5
  %432 = load ptr, ptr %24, align 8, !tbaa !5
  %433 = load i64, ptr %39, align 8, !tbaa !9
  %434 = getelementptr inbounds float, ptr %432, i64 %433
  %435 = load ptr, ptr %25, align 8, !tbaa !5
  %436 = call i32 @slascl_(ptr noundef @.str.10, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %58, ptr noundef %77, ptr noundef %430, ptr noundef %431, ptr noundef %434, ptr noundef %435, ptr noundef %59)
  br label %437

437:                                              ; preds = %429, %426
  store i64 1, ptr %65, align 8, !tbaa !9
  %438 = load ptr, ptr %21, align 8, !tbaa !5
  %439 = load i64, ptr %438, align 8, !tbaa !9
  %440 = add nsw i64 %439, 1
  store i64 %440, ptr %74, align 8, !tbaa !9
  %441 = load i64, ptr %74, align 8, !tbaa !9
  %442 = load ptr, ptr %21, align 8, !tbaa !5
  %443 = load i64, ptr %442, align 8, !tbaa !9
  %444 = add nsw i64 %441, %443
  store i64 %444, ptr %64, align 8, !tbaa !9
  %445 = load ptr, ptr %21, align 8, !tbaa !5
  %446 = load ptr, ptr %22, align 8, !tbaa !5
  %447 = load i64, ptr %37, align 8, !tbaa !9
  %448 = getelementptr inbounds float, ptr %446, i64 %447
  %449 = load ptr, ptr %23, align 8, !tbaa !5
  %450 = load ptr, ptr %24, align 8, !tbaa !5
  %451 = load i64, ptr %39, align 8, !tbaa !9
  %452 = getelementptr inbounds float, ptr %450, i64 %451
  %453 = load ptr, ptr %25, align 8, !tbaa !5
  %454 = load ptr, ptr %33, align 8, !tbaa !5
  %455 = load i64, ptr %65, align 8, !tbaa !9
  %456 = getelementptr inbounds float, ptr %454, i64 %455
  %457 = load ptr, ptr %33, align 8, !tbaa !5
  %458 = load i64, ptr %74, align 8, !tbaa !9
  %459 = getelementptr inbounds float, ptr %457, i64 %458
  %460 = load ptr, ptr %33, align 8, !tbaa !5
  %461 = load i64, ptr %64, align 8, !tbaa !9
  %462 = getelementptr inbounds float, ptr %460, i64 %461
  %463 = call i32 @sggbal_(ptr noundef @.str.7, ptr noundef %445, ptr noundef %448, ptr noundef %449, ptr noundef %452, ptr noundef %453, ptr noundef %54, ptr noundef %53, ptr noundef %456, ptr noundef %459, ptr noundef %462, ptr noundef %59)
  %464 = load i64, ptr %53, align 8, !tbaa !9
  %465 = add nsw i64 %464, 1
  %466 = load i64, ptr %54, align 8, !tbaa !9
  %467 = sub nsw i64 %465, %466
  store i64 %467, ptr %67, align 8, !tbaa !9
  %468 = load i64, ptr %56, align 8, !tbaa !9
  %469 = icmp ne i64 %468, 0
  br i1 %469, label %470, label %476

470:                                              ; preds = %437
  %471 = load ptr, ptr %21, align 8, !tbaa !5
  %472 = load i64, ptr %471, align 8, !tbaa !9
  %473 = add nsw i64 %472, 1
  %474 = load i64, ptr %54, align 8, !tbaa !9
  %475 = sub nsw i64 %473, %474
  store i64 %475, ptr %66, align 8, !tbaa !9
  br label %478

476:                                              ; preds = %437
  %477 = load i64, ptr %67, align 8, !tbaa !9
  store i64 %477, ptr %66, align 8, !tbaa !9
  br label %478

478:                                              ; preds = %476, %470
  %479 = load i64, ptr %64, align 8, !tbaa !9
  store i64 %479, ptr %60, align 8, !tbaa !9
  %480 = load i64, ptr %60, align 8, !tbaa !9
  %481 = load i64, ptr %67, align 8, !tbaa !9
  %482 = add nsw i64 %480, %481
  store i64 %482, ptr %64, align 8, !tbaa !9
  %483 = load ptr, ptr %34, align 8, !tbaa !5
  %484 = load i64, ptr %483, align 8, !tbaa !9
  %485 = add nsw i64 %484, 1
  %486 = load i64, ptr %64, align 8, !tbaa !9
  %487 = sub nsw i64 %485, %486
  store i64 %487, ptr %44, align 8, !tbaa !9
  %488 = load ptr, ptr %24, align 8, !tbaa !5
  %489 = load i64, ptr %54, align 8, !tbaa !9
  %490 = load i64, ptr %54, align 8, !tbaa !9
  %491 = load i64, ptr %38, align 8, !tbaa !9
  %492 = mul nsw i64 %490, %491
  %493 = add nsw i64 %489, %492
  %494 = getelementptr inbounds float, ptr %488, i64 %493
  %495 = load ptr, ptr %25, align 8, !tbaa !5
  %496 = load ptr, ptr %33, align 8, !tbaa !5
  %497 = load i64, ptr %60, align 8, !tbaa !9
  %498 = getelementptr inbounds float, ptr %496, i64 %497
  %499 = load ptr, ptr %33, align 8, !tbaa !5
  %500 = load i64, ptr %64, align 8, !tbaa !9
  %501 = getelementptr inbounds float, ptr %499, i64 %500
  %502 = call i32 @sgeqrf_(ptr noundef %67, ptr noundef %66, ptr noundef %494, ptr noundef %495, ptr noundef %498, ptr noundef %501, ptr noundef %44, ptr noundef %59)
  %503 = load ptr, ptr %34, align 8, !tbaa !5
  %504 = load i64, ptr %503, align 8, !tbaa !9
  %505 = add nsw i64 %504, 1
  %506 = load i64, ptr %64, align 8, !tbaa !9
  %507 = sub nsw i64 %505, %506
  store i64 %507, ptr %44, align 8, !tbaa !9
  %508 = load ptr, ptr %24, align 8, !tbaa !5
  %509 = load i64, ptr %54, align 8, !tbaa !9
  %510 = load i64, ptr %54, align 8, !tbaa !9
  %511 = load i64, ptr %38, align 8, !tbaa !9
  %512 = mul nsw i64 %510, %511
  %513 = add nsw i64 %509, %512
  %514 = getelementptr inbounds float, ptr %508, i64 %513
  %515 = load ptr, ptr %25, align 8, !tbaa !5
  %516 = load ptr, ptr %33, align 8, !tbaa !5
  %517 = load i64, ptr %60, align 8, !tbaa !9
  %518 = getelementptr inbounds float, ptr %516, i64 %517
  %519 = load ptr, ptr %22, align 8, !tbaa !5
  %520 = load i64, ptr %54, align 8, !tbaa !9
  %521 = load i64, ptr %54, align 8, !tbaa !9
  %522 = load i64, ptr %36, align 8, !tbaa !9
  %523 = mul nsw i64 %521, %522
  %524 = add nsw i64 %520, %523
  %525 = getelementptr inbounds float, ptr %519, i64 %524
  %526 = load ptr, ptr %23, align 8, !tbaa !5
  %527 = load ptr, ptr %33, align 8, !tbaa !5
  %528 = load i64, ptr %64, align 8, !tbaa !9
  %529 = getelementptr inbounds float, ptr %527, i64 %528
  %530 = call i32 @sormqr_(ptr noundef @.str.11, ptr noundef @.str.12, ptr noundef %67, ptr noundef %66, ptr noundef %67, ptr noundef %514, ptr noundef %515, ptr noundef %518, ptr noundef %525, ptr noundef %526, ptr noundef %529, ptr noundef %44, ptr noundef %59)
  %531 = load i64, ptr %62, align 8, !tbaa !9
  %532 = icmp ne i64 %531, 0
  br i1 %532, label %533, label %588

533:                                              ; preds = %478
  %534 = load ptr, ptr %21, align 8, !tbaa !5
  %535 = load ptr, ptr %21, align 8, !tbaa !5
  %536 = load ptr, ptr %29, align 8, !tbaa !5
  %537 = load i64, ptr %41, align 8, !tbaa !9
  %538 = getelementptr inbounds float, ptr %536, i64 %537
  %539 = load ptr, ptr %30, align 8, !tbaa !5
  %540 = call i32 @slaset_(ptr noundef @.str.13, ptr noundef %534, ptr noundef %535, ptr noundef @c_b36, ptr noundef @c_b37, ptr noundef %538, ptr noundef %539)
  %541 = load i64, ptr %67, align 8, !tbaa !9
  %542 = icmp sgt i64 %541, 1
  br i1 %542, label %543, label %567

543:                                              ; preds = %533
  %544 = load i64, ptr %67, align 8, !tbaa !9
  %545 = sub nsw i64 %544, 1
  store i64 %545, ptr %44, align 8, !tbaa !9
  %546 = load i64, ptr %67, align 8, !tbaa !9
  %547 = sub nsw i64 %546, 1
  store i64 %547, ptr %45, align 8, !tbaa !9
  %548 = load ptr, ptr %24, align 8, !tbaa !5
  %549 = load i64, ptr %54, align 8, !tbaa !9
  %550 = add nsw i64 %549, 1
  %551 = load i64, ptr %54, align 8, !tbaa !9
  %552 = load i64, ptr %38, align 8, !tbaa !9
  %553 = mul nsw i64 %551, %552
  %554 = add nsw i64 %550, %553
  %555 = getelementptr inbounds float, ptr %548, i64 %554
  %556 = load ptr, ptr %25, align 8, !tbaa !5
  %557 = load ptr, ptr %29, align 8, !tbaa !5
  %558 = load i64, ptr %54, align 8, !tbaa !9
  %559 = add nsw i64 %558, 1
  %560 = load i64, ptr %54, align 8, !tbaa !9
  %561 = load i64, ptr %40, align 8, !tbaa !9
  %562 = mul nsw i64 %560, %561
  %563 = add nsw i64 %559, %562
  %564 = getelementptr inbounds float, ptr %557, i64 %563
  %565 = load ptr, ptr %30, align 8, !tbaa !5
  %566 = call i32 @slacpy_(ptr noundef @.str.11, ptr noundef %44, ptr noundef %45, ptr noundef %555, ptr noundef %556, ptr noundef %564, ptr noundef %565)
  br label %567

567:                                              ; preds = %543, %533
  %568 = load ptr, ptr %34, align 8, !tbaa !5
  %569 = load i64, ptr %568, align 8, !tbaa !9
  %570 = add nsw i64 %569, 1
  %571 = load i64, ptr %64, align 8, !tbaa !9
  %572 = sub nsw i64 %570, %571
  store i64 %572, ptr %44, align 8, !tbaa !9
  %573 = load ptr, ptr %29, align 8, !tbaa !5
  %574 = load i64, ptr %54, align 8, !tbaa !9
  %575 = load i64, ptr %54, align 8, !tbaa !9
  %576 = load i64, ptr %40, align 8, !tbaa !9
  %577 = mul nsw i64 %575, %576
  %578 = add nsw i64 %574, %577
  %579 = getelementptr inbounds float, ptr %573, i64 %578
  %580 = load ptr, ptr %30, align 8, !tbaa !5
  %581 = load ptr, ptr %33, align 8, !tbaa !5
  %582 = load i64, ptr %60, align 8, !tbaa !9
  %583 = getelementptr inbounds float, ptr %581, i64 %582
  %584 = load ptr, ptr %33, align 8, !tbaa !5
  %585 = load i64, ptr %64, align 8, !tbaa !9
  %586 = getelementptr inbounds float, ptr %584, i64 %585
  %587 = call i32 @sorgqr_(ptr noundef %67, ptr noundef %67, ptr noundef %67, ptr noundef %579, ptr noundef %580, ptr noundef %583, ptr noundef %586, ptr noundef %44, ptr noundef %59)
  br label %588

588:                                              ; preds = %567, %478
  %589 = load i64, ptr %63, align 8, !tbaa !9
  %590 = icmp ne i64 %589, 0
  br i1 %590, label %591, label %599

591:                                              ; preds = %588
  %592 = load ptr, ptr %21, align 8, !tbaa !5
  %593 = load ptr, ptr %21, align 8, !tbaa !5
  %594 = load ptr, ptr %31, align 8, !tbaa !5
  %595 = load i64, ptr %43, align 8, !tbaa !9
  %596 = getelementptr inbounds float, ptr %594, i64 %595
  %597 = load ptr, ptr %32, align 8, !tbaa !5
  %598 = call i32 @slaset_(ptr noundef @.str.13, ptr noundef %592, ptr noundef %593, ptr noundef @c_b36, ptr noundef @c_b37, ptr noundef %596, ptr noundef %597)
  br label %599

599:                                              ; preds = %591, %588
  %600 = load i64, ptr %56, align 8, !tbaa !9
  %601 = icmp ne i64 %600, 0
  br i1 %601, label %602, label %623

602:                                              ; preds = %599
  %603 = load ptr, ptr %19, align 8, !tbaa !5
  %604 = load ptr, ptr %20, align 8, !tbaa !5
  %605 = load ptr, ptr %21, align 8, !tbaa !5
  %606 = load ptr, ptr %22, align 8, !tbaa !5
  %607 = load i64, ptr %37, align 8, !tbaa !9
  %608 = getelementptr inbounds float, ptr %606, i64 %607
  %609 = load ptr, ptr %23, align 8, !tbaa !5
  %610 = load ptr, ptr %24, align 8, !tbaa !5
  %611 = load i64, ptr %39, align 8, !tbaa !9
  %612 = getelementptr inbounds float, ptr %610, i64 %611
  %613 = load ptr, ptr %25, align 8, !tbaa !5
  %614 = load ptr, ptr %29, align 8, !tbaa !5
  %615 = load i64, ptr %41, align 8, !tbaa !9
  %616 = getelementptr inbounds float, ptr %614, i64 %615
  %617 = load ptr, ptr %30, align 8, !tbaa !5
  %618 = load ptr, ptr %31, align 8, !tbaa !5
  %619 = load i64, ptr %43, align 8, !tbaa !9
  %620 = getelementptr inbounds float, ptr %618, i64 %619
  %621 = load ptr, ptr %32, align 8, !tbaa !5
  %622 = call i32 @sgghrd_(ptr noundef %603, ptr noundef %604, ptr noundef %605, ptr noundef %54, ptr noundef %53, ptr noundef %608, ptr noundef %609, ptr noundef %612, ptr noundef %613, ptr noundef %616, ptr noundef %617, ptr noundef %620, ptr noundef %621, ptr noundef %59)
  br label %649

623:                                              ; preds = %599
  %624 = load ptr, ptr %22, align 8, !tbaa !5
  %625 = load i64, ptr %54, align 8, !tbaa !9
  %626 = load i64, ptr %54, align 8, !tbaa !9
  %627 = load i64, ptr %36, align 8, !tbaa !9
  %628 = mul nsw i64 %626, %627
  %629 = add nsw i64 %625, %628
  %630 = getelementptr inbounds float, ptr %624, i64 %629
  %631 = load ptr, ptr %23, align 8, !tbaa !5
  %632 = load ptr, ptr %24, align 8, !tbaa !5
  %633 = load i64, ptr %54, align 8, !tbaa !9
  %634 = load i64, ptr %54, align 8, !tbaa !9
  %635 = load i64, ptr %38, align 8, !tbaa !9
  %636 = mul nsw i64 %634, %635
  %637 = add nsw i64 %633, %636
  %638 = getelementptr inbounds float, ptr %632, i64 %637
  %639 = load ptr, ptr %25, align 8, !tbaa !5
  %640 = load ptr, ptr %29, align 8, !tbaa !5
  %641 = load i64, ptr %41, align 8, !tbaa !9
  %642 = getelementptr inbounds float, ptr %640, i64 %641
  %643 = load ptr, ptr %30, align 8, !tbaa !5
  %644 = load ptr, ptr %31, align 8, !tbaa !5
  %645 = load i64, ptr %43, align 8, !tbaa !9
  %646 = getelementptr inbounds float, ptr %644, i64 %645
  %647 = load ptr, ptr %32, align 8, !tbaa !5
  %648 = call i32 @sgghrd_(ptr noundef @.str, ptr noundef @.str, ptr noundef %67, ptr noundef @c__1, ptr noundef %67, ptr noundef %630, ptr noundef %631, ptr noundef %638, ptr noundef %639, ptr noundef %642, ptr noundef %643, ptr noundef %646, ptr noundef %647, ptr noundef %59)
  br label %649

649:                                              ; preds = %623, %602
  %650 = load i64, ptr %60, align 8, !tbaa !9
  store i64 %650, ptr %64, align 8, !tbaa !9
  %651 = load i64, ptr %56, align 8, !tbaa !9
  %652 = icmp ne i64 %651, 0
  br i1 %652, label %653, label %655

653:                                              ; preds = %649
  %654 = getelementptr inbounds [1 x i8], ptr %71, i64 0, i64 0
  store i8 83, ptr %654, align 1, !tbaa !13
  br label %657

655:                                              ; preds = %649
  %656 = getelementptr inbounds [1 x i8], ptr %71, i64 0, i64 0
  store i8 69, ptr %656, align 1, !tbaa !13
  br label %657

657:                                              ; preds = %655, %653
  %658 = load ptr, ptr %34, align 8, !tbaa !5
  %659 = load i64, ptr %658, align 8, !tbaa !9
  %660 = add nsw i64 %659, 1
  %661 = load i64, ptr %64, align 8, !tbaa !9
  %662 = sub nsw i64 %660, %661
  store i64 %662, ptr %44, align 8, !tbaa !9
  %663 = getelementptr inbounds [1 x i8], ptr %71, i64 0, i64 0
  %664 = load ptr, ptr %19, align 8, !tbaa !5
  %665 = load ptr, ptr %20, align 8, !tbaa !5
  %666 = load ptr, ptr %21, align 8, !tbaa !5
  %667 = load ptr, ptr %22, align 8, !tbaa !5
  %668 = load i64, ptr %37, align 8, !tbaa !9
  %669 = getelementptr inbounds float, ptr %667, i64 %668
  %670 = load ptr, ptr %23, align 8, !tbaa !5
  %671 = load ptr, ptr %24, align 8, !tbaa !5
  %672 = load i64, ptr %39, align 8, !tbaa !9
  %673 = getelementptr inbounds float, ptr %671, i64 %672
  %674 = load ptr, ptr %25, align 8, !tbaa !5
  %675 = load ptr, ptr %26, align 8, !tbaa !5
  %676 = getelementptr inbounds float, ptr %675, i64 1
  %677 = load ptr, ptr %27, align 8, !tbaa !5
  %678 = getelementptr inbounds float, ptr %677, i64 1
  %679 = load ptr, ptr %28, align 8, !tbaa !5
  %680 = getelementptr inbounds float, ptr %679, i64 1
  %681 = load ptr, ptr %29, align 8, !tbaa !5
  %682 = load i64, ptr %41, align 8, !tbaa !9
  %683 = getelementptr inbounds float, ptr %681, i64 %682
  %684 = load ptr, ptr %30, align 8, !tbaa !5
  %685 = load ptr, ptr %31, align 8, !tbaa !5
  %686 = load i64, ptr %43, align 8, !tbaa !9
  %687 = getelementptr inbounds float, ptr %685, i64 %686
  %688 = load ptr, ptr %32, align 8, !tbaa !5
  %689 = load ptr, ptr %33, align 8, !tbaa !5
  %690 = load i64, ptr %64, align 8, !tbaa !9
  %691 = getelementptr inbounds float, ptr %689, i64 %690
  %692 = call i32 @shgeqz_(ptr noundef %663, ptr noundef %664, ptr noundef %665, ptr noundef %666, ptr noundef %54, ptr noundef %53, ptr noundef %669, ptr noundef %670, ptr noundef %673, ptr noundef %674, ptr noundef %676, ptr noundef %678, ptr noundef %680, ptr noundef %683, ptr noundef %684, ptr noundef %687, ptr noundef %688, ptr noundef %691, ptr noundef %44, ptr noundef %59)
  %693 = load i64, ptr %59, align 8, !tbaa !9
  %694 = icmp ne i64 %693, 0
  br i1 %694, label %695, label %730

695:                                              ; preds = %657
  %696 = load i64, ptr %59, align 8, !tbaa !9
  %697 = icmp sgt i64 %696, 0
  br i1 %697, label %698, label %706

698:                                              ; preds = %695
  %699 = load i64, ptr %59, align 8, !tbaa !9
  %700 = load ptr, ptr %21, align 8, !tbaa !5
  %701 = load i64, ptr %700, align 8, !tbaa !9
  %702 = icmp sle i64 %699, %701
  br i1 %702, label %703, label %706

703:                                              ; preds = %698
  %704 = load i64, ptr %59, align 8, !tbaa !9
  %705 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %704, ptr %705, align 8, !tbaa !9
  br label %729

706:                                              ; preds = %698, %695
  %707 = load i64, ptr %59, align 8, !tbaa !9
  %708 = load ptr, ptr %21, align 8, !tbaa !5
  %709 = load i64, ptr %708, align 8, !tbaa !9
  %710 = icmp sgt i64 %707, %709
  br i1 %710, label %711, label %723

711:                                              ; preds = %706
  %712 = load i64, ptr %59, align 8, !tbaa !9
  %713 = load ptr, ptr %21, align 8, !tbaa !5
  %714 = load i64, ptr %713, align 8, !tbaa !9
  %715 = shl i64 %714, 1
  %716 = icmp sle i64 %712, %715
  br i1 %716, label %717, label %723

717:                                              ; preds = %711
  %718 = load i64, ptr %59, align 8, !tbaa !9
  %719 = load ptr, ptr %21, align 8, !tbaa !5
  %720 = load i64, ptr %719, align 8, !tbaa !9
  %721 = sub nsw i64 %718, %720
  %722 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %721, ptr %722, align 8, !tbaa !9
  br label %728

723:                                              ; preds = %711, %706
  %724 = load ptr, ptr %21, align 8, !tbaa !5
  %725 = load i64, ptr %724, align 8, !tbaa !9
  %726 = add nsw i64 %725, 1
  %727 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %726, ptr %727, align 8, !tbaa !9
  br label %728

728:                                              ; preds = %723, %717
  br label %729

729:                                              ; preds = %728, %703
  br label %1235

730:                                              ; preds = %657
  %731 = load i64, ptr %56, align 8, !tbaa !9
  %732 = icmp ne i64 %731, 0
  br i1 %732, label %733, label %1211

733:                                              ; preds = %730
  %734 = load i64, ptr %62, align 8, !tbaa !9
  %735 = icmp ne i64 %734, 0
  br i1 %735, label %736, label %744

736:                                              ; preds = %733
  %737 = load i64, ptr %63, align 8, !tbaa !9
  %738 = icmp ne i64 %737, 0
  br i1 %738, label %739, label %741

739:                                              ; preds = %736
  %740 = getelementptr inbounds [1 x i8], ptr %71, i64 0, i64 0
  store i8 66, ptr %740, align 1, !tbaa !13
  br label %743

741:                                              ; preds = %736
  %742 = getelementptr inbounds [1 x i8], ptr %71, i64 0, i64 0
  store i8 76, ptr %742, align 1, !tbaa !13
  br label %743

743:                                              ; preds = %741, %739
  br label %746

744:                                              ; preds = %733
  %745 = getelementptr inbounds [1 x i8], ptr %71, i64 0, i64 0
  store i8 82, ptr %745, align 1, !tbaa !13
  br label %746

746:                                              ; preds = %744, %743
  %747 = getelementptr inbounds [1 x i8], ptr %71, i64 0, i64 0
  %748 = getelementptr inbounds [1 x i64], ptr %70, i64 0, i64 0
  %749 = load ptr, ptr %21, align 8, !tbaa !5
  %750 = load ptr, ptr %22, align 8, !tbaa !5
  %751 = load i64, ptr %37, align 8, !tbaa !9
  %752 = getelementptr inbounds float, ptr %750, i64 %751
  %753 = load ptr, ptr %23, align 8, !tbaa !5
  %754 = load ptr, ptr %24, align 8, !tbaa !5
  %755 = load i64, ptr %39, align 8, !tbaa !9
  %756 = getelementptr inbounds float, ptr %754, i64 %755
  %757 = load ptr, ptr %25, align 8, !tbaa !5
  %758 = load ptr, ptr %29, align 8, !tbaa !5
  %759 = load i64, ptr %41, align 8, !tbaa !9
  %760 = getelementptr inbounds float, ptr %758, i64 %759
  %761 = load ptr, ptr %30, align 8, !tbaa !5
  %762 = load ptr, ptr %31, align 8, !tbaa !5
  %763 = load i64, ptr %43, align 8, !tbaa !9
  %764 = getelementptr inbounds float, ptr %762, i64 %763
  %765 = load ptr, ptr %32, align 8, !tbaa !5
  %766 = load ptr, ptr %21, align 8, !tbaa !5
  %767 = load ptr, ptr %33, align 8, !tbaa !5
  %768 = load i64, ptr %64, align 8, !tbaa !9
  %769 = getelementptr inbounds float, ptr %767, i64 %768
  %770 = call i32 @stgevc_(ptr noundef %747, ptr noundef @.str.14, ptr noundef %748, ptr noundef %749, ptr noundef %752, ptr noundef %753, ptr noundef %756, ptr noundef %757, ptr noundef %760, ptr noundef %761, ptr noundef %764, ptr noundef %765, ptr noundef %766, ptr noundef %51, ptr noundef %769, ptr noundef %59)
  %771 = load i64, ptr %59, align 8, !tbaa !9
  %772 = icmp ne i64 %771, 0
  br i1 %772, label %773, label %778

773:                                              ; preds = %746
  %774 = load ptr, ptr %21, align 8, !tbaa !5
  %775 = load i64, ptr %774, align 8, !tbaa !9
  %776 = add nsw i64 %775, 2
  %777 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %776, ptr %777, align 8, !tbaa !9
  br label %1235

778:                                              ; preds = %746
  %779 = load i64, ptr %62, align 8, !tbaa !9
  %780 = icmp ne i64 %779, 0
  br i1 %780, label %781, label %994

781:                                              ; preds = %778
  %782 = load ptr, ptr %21, align 8, !tbaa !5
  %783 = load ptr, ptr %33, align 8, !tbaa !5
  %784 = load i64, ptr %65, align 8, !tbaa !9
  %785 = getelementptr inbounds float, ptr %783, i64 %784
  %786 = load ptr, ptr %33, align 8, !tbaa !5
  %787 = load i64, ptr %74, align 8, !tbaa !9
  %788 = getelementptr inbounds float, ptr %786, i64 %787
  %789 = load ptr, ptr %21, align 8, !tbaa !5
  %790 = load ptr, ptr %29, align 8, !tbaa !5
  %791 = load i64, ptr %41, align 8, !tbaa !9
  %792 = getelementptr inbounds float, ptr %790, i64 %791
  %793 = load ptr, ptr %30, align 8, !tbaa !5
  %794 = call i32 @sggbak_(ptr noundef @.str.7, ptr noundef @.str.11, ptr noundef %782, ptr noundef %54, ptr noundef %53, ptr noundef %785, ptr noundef %788, ptr noundef %789, ptr noundef %792, ptr noundef %793, ptr noundef %59)
  %795 = load ptr, ptr %21, align 8, !tbaa !5
  %796 = load i64, ptr %795, align 8, !tbaa !9
  store i64 %796, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %50, align 8, !tbaa !9
  br label %797

797:                                              ; preds = %990, %781
  %798 = load i64, ptr %50, align 8, !tbaa !9
  %799 = load i64, ptr %44, align 8, !tbaa !9
  %800 = icmp sle i64 %798, %799
  br i1 %800, label %801, label %993

801:                                              ; preds = %797
  %802 = load ptr, ptr %27, align 8, !tbaa !5
  %803 = load i64, ptr %50, align 8, !tbaa !9
  %804 = getelementptr inbounds float, ptr %802, i64 %803
  %805 = load float, ptr %804, align 4, !tbaa !11
  %806 = fcmp olt float %805, 0.000000e+00
  br i1 %806, label %807, label %808

807:                                              ; preds = %801
  br label %989

808:                                              ; preds = %801
  store float 0.000000e+00, ptr %61, align 4, !tbaa !11
  %809 = load ptr, ptr %27, align 8, !tbaa !5
  %810 = load i64, ptr %50, align 8, !tbaa !9
  %811 = getelementptr inbounds float, ptr %809, i64 %810
  %812 = load float, ptr %811, align 4, !tbaa !11
  %813 = fcmp oeq float %812, 0.000000e+00
  br i1 %813, label %814, label %857

814:                                              ; preds = %808
  %815 = load ptr, ptr %21, align 8, !tbaa !5
  %816 = load i64, ptr %815, align 8, !tbaa !9
  store i64 %816, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %52, align 8, !tbaa !9
  br label %817

817:                                              ; preds = %853, %814
  %818 = load i64, ptr %52, align 8, !tbaa !9
  %819 = load i64, ptr %45, align 8, !tbaa !9
  %820 = icmp sle i64 %818, %819
  br i1 %820, label %821, label %856

821:                                              ; preds = %817
  %822 = load float, ptr %61, align 4, !tbaa !11
  store float %822, ptr %47, align 4, !tbaa !11
  %823 = load ptr, ptr %29, align 8, !tbaa !5
  %824 = load i64, ptr %52, align 8, !tbaa !9
  %825 = load i64, ptr %50, align 8, !tbaa !9
  %826 = load i64, ptr %40, align 8, !tbaa !9
  %827 = mul nsw i64 %825, %826
  %828 = add nsw i64 %824, %827
  %829 = getelementptr inbounds float, ptr %823, i64 %828
  %830 = load float, ptr %829, align 4, !tbaa !11
  store float %830, ptr %46, align 4, !tbaa !11
  %831 = load float, ptr %46, align 4, !tbaa !11
  %832 = fcmp oge float %831, 0.000000e+00
  br i1 %832, label %833, label %835

833:                                              ; preds = %821
  %834 = load float, ptr %46, align 4, !tbaa !11
  br label %838

835:                                              ; preds = %821
  %836 = load float, ptr %46, align 4, !tbaa !11
  %837 = fneg float %836
  br label %838

838:                                              ; preds = %835, %833
  %839 = phi float [ %834, %833 ], [ %837, %835 ]
  %840 = fpext float %839 to double
  %841 = fptrunc double %840 to float
  store float %841, ptr %48, align 4, !tbaa !11
  %842 = load float, ptr %47, align 4, !tbaa !11
  %843 = load float, ptr %48, align 4, !tbaa !11
  %844 = fcmp oge float %842, %843
  br i1 %844, label %845, label %847

845:                                              ; preds = %838
  %846 = load float, ptr %47, align 4, !tbaa !11
  br label %849

847:                                              ; preds = %838
  %848 = load float, ptr %48, align 4, !tbaa !11
  br label %849

849:                                              ; preds = %847, %845
  %850 = phi float [ %846, %845 ], [ %848, %847 ]
  %851 = fpext float %850 to double
  %852 = fptrunc double %851 to float
  store float %852, ptr %61, align 4, !tbaa !11
  br label %853

853:                                              ; preds = %849
  %854 = load i64, ptr %52, align 8, !tbaa !9
  %855 = add nsw i64 %854, 1
  store i64 %855, ptr %52, align 8, !tbaa !9
  br label %817, !llvm.loop !14

856:                                              ; preds = %817
  br label %920

857:                                              ; preds = %808
  %858 = load ptr, ptr %21, align 8, !tbaa !5
  %859 = load i64, ptr %858, align 8, !tbaa !9
  store i64 %859, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %52, align 8, !tbaa !9
  br label %860

860:                                              ; preds = %916, %857
  %861 = load i64, ptr %52, align 8, !tbaa !9
  %862 = load i64, ptr %45, align 8, !tbaa !9
  %863 = icmp sle i64 %861, %862
  br i1 %863, label %864, label %919

864:                                              ; preds = %860
  %865 = load float, ptr %61, align 4, !tbaa !11
  store float %865, ptr %48, align 4, !tbaa !11
  %866 = load ptr, ptr %29, align 8, !tbaa !5
  %867 = load i64, ptr %52, align 8, !tbaa !9
  %868 = load i64, ptr %50, align 8, !tbaa !9
  %869 = load i64, ptr %40, align 8, !tbaa !9
  %870 = mul nsw i64 %868, %869
  %871 = add nsw i64 %867, %870
  %872 = getelementptr inbounds float, ptr %866, i64 %871
  %873 = load float, ptr %872, align 4, !tbaa !11
  store float %873, ptr %46, align 4, !tbaa !11
  %874 = load float, ptr %46, align 4, !tbaa !11
  %875 = fcmp oge float %874, 0.000000e+00
  br i1 %875, label %876, label %878

876:                                              ; preds = %864
  %877 = load float, ptr %46, align 4, !tbaa !11
  br label %881

878:                                              ; preds = %864
  %879 = load float, ptr %46, align 4, !tbaa !11
  %880 = fneg float %879
  br label %881

881:                                              ; preds = %878, %876
  %882 = phi float [ %877, %876 ], [ %880, %878 ]
  %883 = fpext float %882 to double
  %884 = load ptr, ptr %29, align 8, !tbaa !5
  %885 = load i64, ptr %52, align 8, !tbaa !9
  %886 = load i64, ptr %50, align 8, !tbaa !9
  %887 = add nsw i64 %886, 1
  %888 = load i64, ptr %40, align 8, !tbaa !9
  %889 = mul nsw i64 %887, %888
  %890 = add nsw i64 %885, %889
  %891 = getelementptr inbounds float, ptr %884, i64 %890
  %892 = load float, ptr %891, align 4, !tbaa !11
  store float %892, ptr %47, align 4, !tbaa !11
  %893 = load float, ptr %47, align 4, !tbaa !11
  %894 = fcmp oge float %893, 0.000000e+00
  br i1 %894, label %895, label %897

895:                                              ; preds = %881
  %896 = load float, ptr %47, align 4, !tbaa !11
  br label %900

897:                                              ; preds = %881
  %898 = load float, ptr %47, align 4, !tbaa !11
  %899 = fneg float %898
  br label %900

900:                                              ; preds = %897, %895
  %901 = phi float [ %896, %895 ], [ %899, %897 ]
  %902 = fpext float %901 to double
  %903 = fadd double %883, %902
  %904 = fptrunc double %903 to float
  store float %904, ptr %49, align 4, !tbaa !11
  %905 = load float, ptr %48, align 4, !tbaa !11
  %906 = load float, ptr %49, align 4, !tbaa !11
  %907 = fcmp oge float %905, %906
  br i1 %907, label %908, label %910

908:                                              ; preds = %900
  %909 = load float, ptr %48, align 4, !tbaa !11
  br label %912

910:                                              ; preds = %900
  %911 = load float, ptr %49, align 4, !tbaa !11
  br label %912

912:                                              ; preds = %910, %908
  %913 = phi float [ %909, %908 ], [ %911, %910 ]
  %914 = fpext float %913 to double
  %915 = fptrunc double %914 to float
  store float %915, ptr %61, align 4, !tbaa !11
  br label %916

916:                                              ; preds = %912
  %917 = load i64, ptr %52, align 8, !tbaa !9
  %918 = add nsw i64 %917, 1
  store i64 %918, ptr %52, align 8, !tbaa !9
  br label %860, !llvm.loop !16

919:                                              ; preds = %860
  br label %920

920:                                              ; preds = %919, %856
  %921 = load float, ptr %61, align 4, !tbaa !11
  %922 = load float, ptr %80, align 4, !tbaa !11
  %923 = fcmp olt float %921, %922
  br i1 %923, label %924, label %925

924:                                              ; preds = %920
  br label %989

925:                                              ; preds = %920
  %926 = load float, ptr %61, align 4, !tbaa !11
  %927 = fdiv float 1.000000e+00, %926
  store float %927, ptr %61, align 4, !tbaa !11
  %928 = load ptr, ptr %27, align 8, !tbaa !5
  %929 = load i64, ptr %50, align 8, !tbaa !9
  %930 = getelementptr inbounds float, ptr %928, i64 %929
  %931 = load float, ptr %930, align 4, !tbaa !11
  %932 = fcmp oeq float %931, 0.000000e+00
  br i1 %932, label %933, label %955

933:                                              ; preds = %925
  %934 = load ptr, ptr %21, align 8, !tbaa !5
  %935 = load i64, ptr %934, align 8, !tbaa !9
  store i64 %935, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %52, align 8, !tbaa !9
  br label %936

936:                                              ; preds = %951, %933
  %937 = load i64, ptr %52, align 8, !tbaa !9
  %938 = load i64, ptr %45, align 8, !tbaa !9
  %939 = icmp sle i64 %937, %938
  br i1 %939, label %940, label %954

940:                                              ; preds = %936
  %941 = load float, ptr %61, align 4, !tbaa !11
  %942 = load ptr, ptr %29, align 8, !tbaa !5
  %943 = load i64, ptr %52, align 8, !tbaa !9
  %944 = load i64, ptr %50, align 8, !tbaa !9
  %945 = load i64, ptr %40, align 8, !tbaa !9
  %946 = mul nsw i64 %944, %945
  %947 = add nsw i64 %943, %946
  %948 = getelementptr inbounds float, ptr %942, i64 %947
  %949 = load float, ptr %948, align 4, !tbaa !11
  %950 = fmul float %949, %941
  store float %950, ptr %948, align 4, !tbaa !11
  br label %951

951:                                              ; preds = %940
  %952 = load i64, ptr %52, align 8, !tbaa !9
  %953 = add nsw i64 %952, 1
  store i64 %953, ptr %52, align 8, !tbaa !9
  br label %936, !llvm.loop !17

954:                                              ; preds = %936
  br label %988

955:                                              ; preds = %925
  %956 = load ptr, ptr %21, align 8, !tbaa !5
  %957 = load i64, ptr %956, align 8, !tbaa !9
  store i64 %957, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %52, align 8, !tbaa !9
  br label %958

958:                                              ; preds = %984, %955
  %959 = load i64, ptr %52, align 8, !tbaa !9
  %960 = load i64, ptr %45, align 8, !tbaa !9
  %961 = icmp sle i64 %959, %960
  br i1 %961, label %962, label %987

962:                                              ; preds = %958
  %963 = load float, ptr %61, align 4, !tbaa !11
  %964 = load ptr, ptr %29, align 8, !tbaa !5
  %965 = load i64, ptr %52, align 8, !tbaa !9
  %966 = load i64, ptr %50, align 8, !tbaa !9
  %967 = load i64, ptr %40, align 8, !tbaa !9
  %968 = mul nsw i64 %966, %967
  %969 = add nsw i64 %965, %968
  %970 = getelementptr inbounds float, ptr %964, i64 %969
  %971 = load float, ptr %970, align 4, !tbaa !11
  %972 = fmul float %971, %963
  store float %972, ptr %970, align 4, !tbaa !11
  %973 = load float, ptr %61, align 4, !tbaa !11
  %974 = load ptr, ptr %29, align 8, !tbaa !5
  %975 = load i64, ptr %52, align 8, !tbaa !9
  %976 = load i64, ptr %50, align 8, !tbaa !9
  %977 = add nsw i64 %976, 1
  %978 = load i64, ptr %40, align 8, !tbaa !9
  %979 = mul nsw i64 %977, %978
  %980 = add nsw i64 %975, %979
  %981 = getelementptr inbounds float, ptr %974, i64 %980
  %982 = load float, ptr %981, align 4, !tbaa !11
  %983 = fmul float %982, %973
  store float %983, ptr %981, align 4, !tbaa !11
  br label %984

984:                                              ; preds = %962
  %985 = load i64, ptr %52, align 8, !tbaa !9
  %986 = add nsw i64 %985, 1
  store i64 %986, ptr %52, align 8, !tbaa !9
  br label %958, !llvm.loop !18

987:                                              ; preds = %958
  br label %988

988:                                              ; preds = %987, %954
  br label %989

989:                                              ; preds = %988, %924, %807
  br label %990

990:                                              ; preds = %989
  %991 = load i64, ptr %50, align 8, !tbaa !9
  %992 = add nsw i64 %991, 1
  store i64 %992, ptr %50, align 8, !tbaa !9
  br label %797, !llvm.loop !19

993:                                              ; preds = %797
  br label %994

994:                                              ; preds = %993, %778
  %995 = load i64, ptr %63, align 8, !tbaa !9
  %996 = icmp ne i64 %995, 0
  br i1 %996, label %997, label %1210

997:                                              ; preds = %994
  %998 = load ptr, ptr %21, align 8, !tbaa !5
  %999 = load ptr, ptr %33, align 8, !tbaa !5
  %1000 = load i64, ptr %65, align 8, !tbaa !9
  %1001 = getelementptr inbounds float, ptr %999, i64 %1000
  %1002 = load ptr, ptr %33, align 8, !tbaa !5
  %1003 = load i64, ptr %74, align 8, !tbaa !9
  %1004 = getelementptr inbounds float, ptr %1002, i64 %1003
  %1005 = load ptr, ptr %21, align 8, !tbaa !5
  %1006 = load ptr, ptr %31, align 8, !tbaa !5
  %1007 = load i64, ptr %43, align 8, !tbaa !9
  %1008 = getelementptr inbounds float, ptr %1006, i64 %1007
  %1009 = load ptr, ptr %32, align 8, !tbaa !5
  %1010 = call i32 @sggbak_(ptr noundef @.str.7, ptr noundef @.str.15, ptr noundef %998, ptr noundef %54, ptr noundef %53, ptr noundef %1001, ptr noundef %1004, ptr noundef %1005, ptr noundef %1008, ptr noundef %1009, ptr noundef %59)
  %1011 = load ptr, ptr %21, align 8, !tbaa !5
  %1012 = load i64, ptr %1011, align 8, !tbaa !9
  store i64 %1012, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %50, align 8, !tbaa !9
  br label %1013

1013:                                             ; preds = %1206, %997
  %1014 = load i64, ptr %50, align 8, !tbaa !9
  %1015 = load i64, ptr %44, align 8, !tbaa !9
  %1016 = icmp sle i64 %1014, %1015
  br i1 %1016, label %1017, label %1209

1017:                                             ; preds = %1013
  %1018 = load ptr, ptr %27, align 8, !tbaa !5
  %1019 = load i64, ptr %50, align 8, !tbaa !9
  %1020 = getelementptr inbounds float, ptr %1018, i64 %1019
  %1021 = load float, ptr %1020, align 4, !tbaa !11
  %1022 = fcmp olt float %1021, 0.000000e+00
  br i1 %1022, label %1023, label %1024

1023:                                             ; preds = %1017
  br label %1205

1024:                                             ; preds = %1017
  store float 0.000000e+00, ptr %61, align 4, !tbaa !11
  %1025 = load ptr, ptr %27, align 8, !tbaa !5
  %1026 = load i64, ptr %50, align 8, !tbaa !9
  %1027 = getelementptr inbounds float, ptr %1025, i64 %1026
  %1028 = load float, ptr %1027, align 4, !tbaa !11
  %1029 = fcmp oeq float %1028, 0.000000e+00
  br i1 %1029, label %1030, label %1073

1030:                                             ; preds = %1024
  %1031 = load ptr, ptr %21, align 8, !tbaa !5
  %1032 = load i64, ptr %1031, align 8, !tbaa !9
  store i64 %1032, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %52, align 8, !tbaa !9
  br label %1033

1033:                                             ; preds = %1069, %1030
  %1034 = load i64, ptr %52, align 8, !tbaa !9
  %1035 = load i64, ptr %45, align 8, !tbaa !9
  %1036 = icmp sle i64 %1034, %1035
  br i1 %1036, label %1037, label %1072

1037:                                             ; preds = %1033
  %1038 = load float, ptr %61, align 4, !tbaa !11
  store float %1038, ptr %47, align 4, !tbaa !11
  %1039 = load ptr, ptr %31, align 8, !tbaa !5
  %1040 = load i64, ptr %52, align 8, !tbaa !9
  %1041 = load i64, ptr %50, align 8, !tbaa !9
  %1042 = load i64, ptr %42, align 8, !tbaa !9
  %1043 = mul nsw i64 %1041, %1042
  %1044 = add nsw i64 %1040, %1043
  %1045 = getelementptr inbounds float, ptr %1039, i64 %1044
  %1046 = load float, ptr %1045, align 4, !tbaa !11
  store float %1046, ptr %46, align 4, !tbaa !11
  %1047 = load float, ptr %46, align 4, !tbaa !11
  %1048 = fcmp oge float %1047, 0.000000e+00
  br i1 %1048, label %1049, label %1051

1049:                                             ; preds = %1037
  %1050 = load float, ptr %46, align 4, !tbaa !11
  br label %1054

1051:                                             ; preds = %1037
  %1052 = load float, ptr %46, align 4, !tbaa !11
  %1053 = fneg float %1052
  br label %1054

1054:                                             ; preds = %1051, %1049
  %1055 = phi float [ %1050, %1049 ], [ %1053, %1051 ]
  %1056 = fpext float %1055 to double
  %1057 = fptrunc double %1056 to float
  store float %1057, ptr %48, align 4, !tbaa !11
  %1058 = load float, ptr %47, align 4, !tbaa !11
  %1059 = load float, ptr %48, align 4, !tbaa !11
  %1060 = fcmp oge float %1058, %1059
  br i1 %1060, label %1061, label %1063

1061:                                             ; preds = %1054
  %1062 = load float, ptr %47, align 4, !tbaa !11
  br label %1065

1063:                                             ; preds = %1054
  %1064 = load float, ptr %48, align 4, !tbaa !11
  br label %1065

1065:                                             ; preds = %1063, %1061
  %1066 = phi float [ %1062, %1061 ], [ %1064, %1063 ]
  %1067 = fpext float %1066 to double
  %1068 = fptrunc double %1067 to float
  store float %1068, ptr %61, align 4, !tbaa !11
  br label %1069

1069:                                             ; preds = %1065
  %1070 = load i64, ptr %52, align 8, !tbaa !9
  %1071 = add nsw i64 %1070, 1
  store i64 %1071, ptr %52, align 8, !tbaa !9
  br label %1033, !llvm.loop !20

1072:                                             ; preds = %1033
  br label %1136

1073:                                             ; preds = %1024
  %1074 = load ptr, ptr %21, align 8, !tbaa !5
  %1075 = load i64, ptr %1074, align 8, !tbaa !9
  store i64 %1075, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %52, align 8, !tbaa !9
  br label %1076

1076:                                             ; preds = %1132, %1073
  %1077 = load i64, ptr %52, align 8, !tbaa !9
  %1078 = load i64, ptr %45, align 8, !tbaa !9
  %1079 = icmp sle i64 %1077, %1078
  br i1 %1079, label %1080, label %1135

1080:                                             ; preds = %1076
  %1081 = load float, ptr %61, align 4, !tbaa !11
  store float %1081, ptr %48, align 4, !tbaa !11
  %1082 = load ptr, ptr %31, align 8, !tbaa !5
  %1083 = load i64, ptr %52, align 8, !tbaa !9
  %1084 = load i64, ptr %50, align 8, !tbaa !9
  %1085 = load i64, ptr %42, align 8, !tbaa !9
  %1086 = mul nsw i64 %1084, %1085
  %1087 = add nsw i64 %1083, %1086
  %1088 = getelementptr inbounds float, ptr %1082, i64 %1087
  %1089 = load float, ptr %1088, align 4, !tbaa !11
  store float %1089, ptr %46, align 4, !tbaa !11
  %1090 = load float, ptr %46, align 4, !tbaa !11
  %1091 = fcmp oge float %1090, 0.000000e+00
  br i1 %1091, label %1092, label %1094

1092:                                             ; preds = %1080
  %1093 = load float, ptr %46, align 4, !tbaa !11
  br label %1097

1094:                                             ; preds = %1080
  %1095 = load float, ptr %46, align 4, !tbaa !11
  %1096 = fneg float %1095
  br label %1097

1097:                                             ; preds = %1094, %1092
  %1098 = phi float [ %1093, %1092 ], [ %1096, %1094 ]
  %1099 = fpext float %1098 to double
  %1100 = load ptr, ptr %31, align 8, !tbaa !5
  %1101 = load i64, ptr %52, align 8, !tbaa !9
  %1102 = load i64, ptr %50, align 8, !tbaa !9
  %1103 = add nsw i64 %1102, 1
  %1104 = load i64, ptr %42, align 8, !tbaa !9
  %1105 = mul nsw i64 %1103, %1104
  %1106 = add nsw i64 %1101, %1105
  %1107 = getelementptr inbounds float, ptr %1100, i64 %1106
  %1108 = load float, ptr %1107, align 4, !tbaa !11
  store float %1108, ptr %47, align 4, !tbaa !11
  %1109 = load float, ptr %47, align 4, !tbaa !11
  %1110 = fcmp oge float %1109, 0.000000e+00
  br i1 %1110, label %1111, label %1113

1111:                                             ; preds = %1097
  %1112 = load float, ptr %47, align 4, !tbaa !11
  br label %1116

1113:                                             ; preds = %1097
  %1114 = load float, ptr %47, align 4, !tbaa !11
  %1115 = fneg float %1114
  br label %1116

1116:                                             ; preds = %1113, %1111
  %1117 = phi float [ %1112, %1111 ], [ %1115, %1113 ]
  %1118 = fpext float %1117 to double
  %1119 = fadd double %1099, %1118
  %1120 = fptrunc double %1119 to float
  store float %1120, ptr %49, align 4, !tbaa !11
  %1121 = load float, ptr %48, align 4, !tbaa !11
  %1122 = load float, ptr %49, align 4, !tbaa !11
  %1123 = fcmp oge float %1121, %1122
  br i1 %1123, label %1124, label %1126

1124:                                             ; preds = %1116
  %1125 = load float, ptr %48, align 4, !tbaa !11
  br label %1128

1126:                                             ; preds = %1116
  %1127 = load float, ptr %49, align 4, !tbaa !11
  br label %1128

1128:                                             ; preds = %1126, %1124
  %1129 = phi float [ %1125, %1124 ], [ %1127, %1126 ]
  %1130 = fpext float %1129 to double
  %1131 = fptrunc double %1130 to float
  store float %1131, ptr %61, align 4, !tbaa !11
  br label %1132

1132:                                             ; preds = %1128
  %1133 = load i64, ptr %52, align 8, !tbaa !9
  %1134 = add nsw i64 %1133, 1
  store i64 %1134, ptr %52, align 8, !tbaa !9
  br label %1076, !llvm.loop !21

1135:                                             ; preds = %1076
  br label %1136

1136:                                             ; preds = %1135, %1072
  %1137 = load float, ptr %61, align 4, !tbaa !11
  %1138 = load float, ptr %80, align 4, !tbaa !11
  %1139 = fcmp olt float %1137, %1138
  br i1 %1139, label %1140, label %1141

1140:                                             ; preds = %1136
  br label %1205

1141:                                             ; preds = %1136
  %1142 = load float, ptr %61, align 4, !tbaa !11
  %1143 = fdiv float 1.000000e+00, %1142
  store float %1143, ptr %61, align 4, !tbaa !11
  %1144 = load ptr, ptr %27, align 8, !tbaa !5
  %1145 = load i64, ptr %50, align 8, !tbaa !9
  %1146 = getelementptr inbounds float, ptr %1144, i64 %1145
  %1147 = load float, ptr %1146, align 4, !tbaa !11
  %1148 = fcmp oeq float %1147, 0.000000e+00
  br i1 %1148, label %1149, label %1171

1149:                                             ; preds = %1141
  %1150 = load ptr, ptr %21, align 8, !tbaa !5
  %1151 = load i64, ptr %1150, align 8, !tbaa !9
  store i64 %1151, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %52, align 8, !tbaa !9
  br label %1152

1152:                                             ; preds = %1167, %1149
  %1153 = load i64, ptr %52, align 8, !tbaa !9
  %1154 = load i64, ptr %45, align 8, !tbaa !9
  %1155 = icmp sle i64 %1153, %1154
  br i1 %1155, label %1156, label %1170

1156:                                             ; preds = %1152
  %1157 = load float, ptr %61, align 4, !tbaa !11
  %1158 = load ptr, ptr %31, align 8, !tbaa !5
  %1159 = load i64, ptr %52, align 8, !tbaa !9
  %1160 = load i64, ptr %50, align 8, !tbaa !9
  %1161 = load i64, ptr %42, align 8, !tbaa !9
  %1162 = mul nsw i64 %1160, %1161
  %1163 = add nsw i64 %1159, %1162
  %1164 = getelementptr inbounds float, ptr %1158, i64 %1163
  %1165 = load float, ptr %1164, align 4, !tbaa !11
  %1166 = fmul float %1165, %1157
  store float %1166, ptr %1164, align 4, !tbaa !11
  br label %1167

1167:                                             ; preds = %1156
  %1168 = load i64, ptr %52, align 8, !tbaa !9
  %1169 = add nsw i64 %1168, 1
  store i64 %1169, ptr %52, align 8, !tbaa !9
  br label %1152, !llvm.loop !22

1170:                                             ; preds = %1152
  br label %1204

1171:                                             ; preds = %1141
  %1172 = load ptr, ptr %21, align 8, !tbaa !5
  %1173 = load i64, ptr %1172, align 8, !tbaa !9
  store i64 %1173, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %52, align 8, !tbaa !9
  br label %1174

1174:                                             ; preds = %1200, %1171
  %1175 = load i64, ptr %52, align 8, !tbaa !9
  %1176 = load i64, ptr %45, align 8, !tbaa !9
  %1177 = icmp sle i64 %1175, %1176
  br i1 %1177, label %1178, label %1203

1178:                                             ; preds = %1174
  %1179 = load float, ptr %61, align 4, !tbaa !11
  %1180 = load ptr, ptr %31, align 8, !tbaa !5
  %1181 = load i64, ptr %52, align 8, !tbaa !9
  %1182 = load i64, ptr %50, align 8, !tbaa !9
  %1183 = load i64, ptr %42, align 8, !tbaa !9
  %1184 = mul nsw i64 %1182, %1183
  %1185 = add nsw i64 %1181, %1184
  %1186 = getelementptr inbounds float, ptr %1180, i64 %1185
  %1187 = load float, ptr %1186, align 4, !tbaa !11
  %1188 = fmul float %1187, %1179
  store float %1188, ptr %1186, align 4, !tbaa !11
  %1189 = load float, ptr %61, align 4, !tbaa !11
  %1190 = load ptr, ptr %31, align 8, !tbaa !5
  %1191 = load i64, ptr %52, align 8, !tbaa !9
  %1192 = load i64, ptr %50, align 8, !tbaa !9
  %1193 = add nsw i64 %1192, 1
  %1194 = load i64, ptr %42, align 8, !tbaa !9
  %1195 = mul nsw i64 %1193, %1194
  %1196 = add nsw i64 %1191, %1195
  %1197 = getelementptr inbounds float, ptr %1190, i64 %1196
  %1198 = load float, ptr %1197, align 4, !tbaa !11
  %1199 = fmul float %1198, %1189
  store float %1199, ptr %1197, align 4, !tbaa !11
  br label %1200

1200:                                             ; preds = %1178
  %1201 = load i64, ptr %52, align 8, !tbaa !9
  %1202 = add nsw i64 %1201, 1
  store i64 %1202, ptr %52, align 8, !tbaa !9
  br label %1174, !llvm.loop !23

1203:                                             ; preds = %1174
  br label %1204

1204:                                             ; preds = %1203, %1170
  br label %1205

1205:                                             ; preds = %1204, %1140, %1023
  br label %1206

1206:                                             ; preds = %1205
  %1207 = load i64, ptr %50, align 8, !tbaa !9
  %1208 = add nsw i64 %1207, 1
  store i64 %1208, ptr %50, align 8, !tbaa !9
  br label %1013, !llvm.loop !24

1209:                                             ; preds = %1013
  br label %1210

1210:                                             ; preds = %1209, %994
  br label %1211

1211:                                             ; preds = %1210, %730
  %1212 = load i64, ptr %68, align 8, !tbaa !9
  %1213 = icmp ne i64 %1212, 0
  br i1 %1213, label %1214, label %1225

1214:                                             ; preds = %1211
  %1215 = load ptr, ptr %21, align 8, !tbaa !5
  %1216 = load ptr, ptr %26, align 8, !tbaa !5
  %1217 = getelementptr inbounds float, ptr %1216, i64 1
  %1218 = load ptr, ptr %21, align 8, !tbaa !5
  %1219 = call i32 @slascl_(ptr noundef @.str.10, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %76, ptr noundef %57, ptr noundef %1215, ptr noundef @c__1, ptr noundef %1217, ptr noundef %1218, ptr noundef %59)
  %1220 = load ptr, ptr %21, align 8, !tbaa !5
  %1221 = load ptr, ptr %27, align 8, !tbaa !5
  %1222 = getelementptr inbounds float, ptr %1221, i64 1
  %1223 = load ptr, ptr %21, align 8, !tbaa !5
  %1224 = call i32 @slascl_(ptr noundef @.str.10, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %76, ptr noundef %57, ptr noundef %1220, ptr noundef @c__1, ptr noundef %1222, ptr noundef %1223, ptr noundef %59)
  br label %1225

1225:                                             ; preds = %1214, %1211
  %1226 = load i64, ptr %69, align 8, !tbaa !9
  %1227 = icmp ne i64 %1226, 0
  br i1 %1227, label %1228, label %1234

1228:                                             ; preds = %1225
  %1229 = load ptr, ptr %21, align 8, !tbaa !5
  %1230 = load ptr, ptr %28, align 8, !tbaa !5
  %1231 = getelementptr inbounds float, ptr %1230, i64 1
  %1232 = load ptr, ptr %21, align 8, !tbaa !5
  %1233 = call i32 @slascl_(ptr noundef @.str.10, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %77, ptr noundef %58, ptr noundef %1229, ptr noundef @c__1, ptr noundef %1231, ptr noundef %1232, ptr noundef %59)
  br label %1234

1234:                                             ; preds = %1228, %1225
  br label %1235

1235:                                             ; preds = %1234, %773, %729
  %1236 = load i64, ptr %79, align 8, !tbaa !9
  %1237 = sitofp i64 %1236 to float
  %1238 = load ptr, ptr %33, align 8, !tbaa !5
  %1239 = getelementptr inbounds float, ptr %1238, i64 1
  store float %1237, ptr %1239, align 4, !tbaa !11
  store i32 0, ptr %18, align 4
  store i32 1, ptr %82, align 4
  br label %1240

1240:                                             ; preds = %1235, %346, %340, %332
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 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 4, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  %1241 = load i32, ptr %18, align 4
  ret i32 %1241
}

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

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

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

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

declare double @slamch_(ptr noundef) #2

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

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

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

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

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

declare i32 @sormqr_(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 @slaset_(ptr noundef, ptr noundef, 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

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

declare i32 @sgghrd_(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 @shgeqz_(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 @stgevc_(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 @sggbak_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

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


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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.2 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i64, align 8
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i64, align 8
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [5 x i8], align 1
@c_b36 = external hidden global float, align 4
@c_b37 = external hidden global float, align 4
@.str.14 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @sggev_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr nocapture noundef readonly %15, ptr nocapture noundef %16) local_unnamed_addr #0 {
  %18 = alloca i64, align 8
  %19 = alloca i64, align 8
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca i64, align 8
  %23 = alloca float, align 4
  %24 = alloca float, align 4
  %25 = alloca i64, align 8
  %26 = alloca i64, align 8
  %27 = alloca i64, align 8
  %28 = alloca [1 x i64], align 8
  %29 = alloca [1 x i8], align 1
  %30 = alloca float, align 4
  %31 = alloca float, align 4
  %32 = alloca float, align 4
  %33 = alloca float, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %29) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %30) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %31) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %32) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %33) #5
  %34 = load i64, ptr %4, align 8, !tbaa !5
  %35 = xor i64 %34, -1
  %36 = getelementptr inbounds float, ptr %3, i64 %35
  %37 = load i64, ptr %6, align 8, !tbaa !5
  %38 = xor i64 %37, -1
  %39 = getelementptr inbounds float, ptr %5, i64 %38
  %40 = getelementptr inbounds i8, ptr %8, i64 -4
  %41 = load i64, ptr %11, align 8, !tbaa !5
  %42 = xor i64 %41, -1
  %43 = getelementptr inbounds float, ptr %10, i64 %42
  %44 = load i64, ptr %13, align 8, !tbaa !5
  %45 = xor i64 %44, -1
  %46 = getelementptr inbounds float, ptr %12, i64 %45
  %47 = getelementptr inbounds i8, ptr %14, i64 -4
  %48 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %.not = icmp eq i64 %48, 0
  br i1 %.not, label %49, label %.thread606

49:                                               ; preds = %17
  %50 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #5
  %.not455 = icmp ne i64 %50, 0
  %51 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #5
  %.not456 = icmp eq i64 %51, 0
  br i1 %.not456, label %54, label %.thread

.thread606:                                       ; preds = %17
  %52 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #5
  %.not456607 = icmp eq i64 %52, 0
  br i1 %.not456607, label %.thread612, label %.thread.thread

.thread612:                                       ; preds = %.thread606
  %53 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #5
  store i64 0, ptr %16, align 8, !tbaa !5
  br label %56

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

54:                                               ; preds = %49
  %55 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #5
  store i64 0, ptr %16, align 8, !tbaa !5
  br i1 %.not455, label %56, label %.thread497.sink.split

.thread:                                          ; preds = %49
  store i64 0, ptr %16, align 8, !tbaa !5
  br i1 %.not455, label %.thread485, label %.thread497.sink.split

56:                                               ; preds = %.thread612, %54
  %57 = phi i64 [ %53, %.thread612 ], [ %55, %54 ]
  %.not457.not = icmp eq i64 %57, 0
  br i1 %.not457.not, label %.thread497.sink.split, label %.thread485

.thread485:                                       ; preds = %.thread.thread, %.thread, %56
  %.not456608 = phi i1 [ true, %56 ], [ false, %.thread ], [ false, %.thread.thread ]
  %58 = phi i1 [ %.not, %56 ], [ %.not455, %.thread ], [ false, %.thread.thread ]
  %59 = phi i1 [ true, %56 ], [ %.not455, %.thread ], [ false, %.thread.thread ]
  %.in = load i64, ptr %15, align 8, !tbaa !5
  %60 = icmp eq i64 %.in, -1
  %61 = load i64, ptr %2, align 8, !tbaa !5
  %62 = icmp slt i64 %61, 0
  br i1 %62, label %.thread497.sink.split, label %63

63:                                               ; preds = %.thread485
  %64 = load i64, ptr %4, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %61, i64 1)
  %65 = icmp slt i64 %64, %spec.select
  br i1 %65, label %.thread497.sink.split, label %66

66:                                               ; preds = %63
  %67 = load i64, ptr %6, align 8, !tbaa !5
  %68 = icmp slt i64 %67, %spec.select
  br i1 %68, label %.thread497.sink.split, label %69

69:                                               ; preds = %66
  %70 = load i64, ptr %11, align 8, !tbaa !5
  %71 = icmp slt i64 %70, 1
  %72 = icmp ult i64 %70, %61
  %or.cond519 = and i1 %58, %72
  %or.cond521 = select i1 %71, i1 true, i1 %or.cond519
  br i1 %or.cond521, label %.thread497.sink.split, label %73

73:                                               ; preds = %69
  %74 = load i64, ptr %13, align 8, !tbaa !5
  %75 = icmp slt i64 %74, 1
  %76 = icmp ult i64 %74, %61
  %or.cond520 = and i1 %.not456608, %76
  %or.cond522 = or i1 %75, %or.cond520
  br i1 %or.cond522, label %.thread497.sink.split, label %77

77:                                               ; preds = %73
  %78 = shl i64 %61, 3
  %79 = tail call i64 @llvm.smax.i64(i64 %78, i64 1)
  %80 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef nonnull %2, ptr noundef nonnull @c__0) #5
  %81 = add nsw i64 %80, 7
  %82 = mul nsw i64 %81, %61
  %83 = tail call i64 @llvm.smax.i64(i64 %82, i64 1)
  store i64 %83, ptr %18, align 8, !tbaa !5
  %84 = load i64, ptr %2, align 8, !tbaa !5
  %85 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef nonnull %2, ptr noundef nonnull @c__0) #5
  %86 = add nsw i64 %85, 7
  %87 = mul nsw i64 %86, %84
  store i64 %87, ptr %19, align 8, !tbaa !5
  %88 = tail call i64 @llvm.smax.i64(i64 %83, i64 %87)
  br i1 %58, label %89, label %95

89:                                               ; preds = %77
  store i64 %88, ptr %18, align 8, !tbaa !5
  %90 = load i64, ptr %2, align 8, !tbaa !5
  %91 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef nonnull %2, ptr noundef nonnull @c_n1) #5
  %92 = add nsw i64 %91, 7
  %93 = mul nsw i64 %92, %90
  store i64 %93, ptr %19, align 8, !tbaa !5
  %94 = tail call i64 @llvm.smax.i64(i64 %88, i64 %93)
  br label %95

95:                                               ; preds = %89, %77
  %.0422 = phi i64 [ %94, %89 ], [ %88, %77 ]
  %96 = uitofp nneg i64 %.0422 to float
  store float %96, ptr %14, align 4, !tbaa !9
  %97 = load i64, ptr %15, align 8, !tbaa !5
  %98 = icmp sge i64 %97, %79
  %or.cond = select i1 %98, i1 true, i1 %60
  br i1 %or.cond, label %.thread489, label %.thread497.sink.split

.thread489:                                       ; preds = %95
  %.pr493.pr = load i64, ptr %16, align 8, !tbaa !5
  %.not461 = icmp eq i64 %.pr493.pr, 0
  br i1 %.not461, label %102, label %.thread497

.thread497.sink.split:                            ; preds = %95, %73, %69, %66, %63, %.thread485, %56, %54, %.thread
  %.sink = phi i64 [ -1, %.thread ], [ -1, %54 ], [ -2, %56 ], [ -3, %.thread485 ], [ -5, %63 ], [ -7, %66 ], [ -12, %69 ], [ -14, %73 ], [ -16, %95 ]
  store i64 %.sink, ptr %16, align 8, !tbaa !5
  br label %.thread497

.thread497:                                       ; preds = %.thread497.sink.split, %.thread489
  %99 = phi i64 [ %.pr493.pr, %.thread489 ], [ %.sink, %.thread497.sink.split ]
  %100 = sub nsw i64 0, %99
  store i64 %100, ptr %18, align 8, !tbaa !5
  %101 = call i32 @xerbla_(ptr noundef nonnull @.str.6, ptr noundef nonnull %18) #5
  br label %456

102:                                              ; preds = %.thread489
  br i1 %60, label %456, label %103

103:                                              ; preds = %102
  %104 = load i64, ptr %2, align 8, !tbaa !5
  %105 = icmp eq i64 %104, 0
  br i1 %105, label %456, label %106

106:                                              ; preds = %103
  %107 = tail call double @slamch_(ptr noundef nonnull @.str.7) #5
  %108 = fptrunc double %107 to float
  %109 = tail call double @slamch_(ptr noundef nonnull @.str.8) #5
  %110 = fptrunc double %109 to float
  store float %110, ptr %33, align 4, !tbaa !9
  %111 = fdiv float 1.000000e+00, %110
  store float %111, ptr %30, align 4, !tbaa !9
  %112 = call i32 @slabad_(ptr noundef nonnull %33, ptr noundef nonnull %30) #5
  %113 = load float, ptr %33, align 4, !tbaa !9
  %114 = fpext float %113 to double
  %115 = call double @sqrt(double noundef %114) #5
  %116 = fpext float %108 to double
  %117 = fdiv double %115, %116
  %118 = fptrunc double %117 to float
  store float %118, ptr %33, align 4, !tbaa !9
  %119 = fdiv float 1.000000e+00, %118
  store float %119, ptr %30, align 4, !tbaa !9
  %120 = call double @slange_(ptr noundef nonnull @.str.9, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef nonnull %14) #5
  %121 = fptrunc double %120 to float
  store float %121, ptr %23, align 4, !tbaa !9
  %122 = fcmp ogt float %121, 0.000000e+00
  %123 = load float, ptr %33, align 4
  %124 = fcmp ogt float %123, %121
  %or.cond527 = select i1 %122, i1 %124, i1 false
  br i1 %or.cond527, label %128, label %125

125:                                              ; preds = %106
  %126 = load float, ptr %30, align 4, !tbaa !9
  %127 = fcmp olt float %126, %121
  br i1 %127, label %128, label %130

128:                                              ; preds = %106, %125
  %storemerge523 = phi float [ %126, %125 ], [ %123, %106 ]
  store float %storemerge523, ptr %31, align 4, !tbaa !9
  %129 = call i32 @slascl_(ptr noundef nonnull @.str.10, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %23, ptr noundef nonnull %31, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef nonnull %25) #5
  br label %130

130:                                              ; preds = %125, %128
  %.not462504 = phi i1 [ false, %128 ], [ true, %125 ]
  %131 = call double @slange_(ptr noundef nonnull @.str.9, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %14) #5
  %132 = fptrunc double %131 to float
  store float %132, ptr %24, align 4, !tbaa !9
  %133 = fcmp ogt float %132, 0.000000e+00
  %134 = load float, ptr %33, align 4
  %135 = fcmp ogt float %134, %132
  %or.cond529 = select i1 %133, i1 %135, i1 false
  br i1 %or.cond529, label %139, label %136

136:                                              ; preds = %130
  %137 = load float, ptr %30, align 4, !tbaa !9
  %138 = fcmp olt float %137, %132
  br i1 %138, label %139, label %141

139:                                              ; preds = %130, %136
  %storemerge524 = phi float [ %137, %136 ], [ %134, %130 ]
  store float %storemerge524, ptr %32, align 4, !tbaa !9
  %140 = call i32 @slascl_(ptr noundef nonnull @.str.10, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %24, ptr noundef nonnull %32, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %25) #5
  br label %141

141:                                              ; preds = %136, %139
  %.not463509 = phi i1 [ false, %139 ], [ true, %136 ]
  %142 = load i64, ptr %2, align 8, !tbaa !5
  %reass.add = shl i64 %142, 1
  %143 = or disjoint i64 %reass.add, 1
  %144 = getelementptr float, ptr %14, i64 %142
  %145 = getelementptr float, ptr %14, i64 %reass.add
  %146 = call i32 @sggbal_(ptr noundef nonnull @.str.7, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %22, ptr noundef nonnull %21, ptr noundef nonnull %14, ptr noundef %144, ptr noundef %145, ptr noundef nonnull %25) #5
  %147 = load i64, ptr %21, align 8, !tbaa !5
  %148 = add nsw i64 %147, 1
  %149 = load i64, ptr %22, align 8, !tbaa !5
  %150 = sub i64 %148, %149
  store i64 %150, ptr %27, align 8, !tbaa !5
  br i1 %59, label %151, label %154

151:                                              ; preds = %141
  %152 = load i64, ptr %2, align 8, !tbaa !5
  %reass.sub = sub i64 %152, %149
  %153 = add i64 %reass.sub, 1
  br label %154

154:                                              ; preds = %141, %151
  %storemerge = phi i64 [ %153, %151 ], [ %150, %141 ]
  store i64 %storemerge, ptr %26, align 8, !tbaa !5
  %155 = add nsw i64 %150, %143
  %156 = load i64, ptr %15, align 8, !tbaa !5
  %reass.sub582 = sub i64 %156, %155
  %157 = add i64 %reass.sub582, 1
  store i64 %157, ptr %18, align 8, !tbaa !5
  %158 = add i64 %37, 1
  %159 = mul i64 %149, %158
  %160 = getelementptr inbounds float, ptr %39, i64 %159
  %161 = getelementptr inbounds float, ptr %47, i64 %155
  %162 = call i32 @sgeqrf_(ptr noundef nonnull %27, ptr noundef nonnull %26, ptr noundef %160, ptr noundef nonnull %6, ptr noundef %145, ptr noundef nonnull %161, ptr noundef nonnull %18, ptr noundef nonnull %25) #5
  %163 = load i64, ptr %15, align 8, !tbaa !5
  %reass.sub583 = sub i64 %163, %155
  %164 = add i64 %reass.sub583, 1
  store i64 %164, ptr %18, align 8, !tbaa !5
  %165 = load i64, ptr %22, align 8, !tbaa !5
  %166 = mul i64 %165, %158
  %167 = getelementptr inbounds float, ptr %39, i64 %166
  %168 = add i64 %34, 1
  %169 = mul i64 %165, %168
  %170 = getelementptr inbounds float, ptr %36, i64 %169
  %171 = call i32 @sormqr_(ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.12, ptr noundef nonnull %27, ptr noundef nonnull %26, ptr noundef nonnull %27, ptr noundef %167, ptr noundef nonnull %6, ptr noundef %145, ptr noundef %170, ptr noundef nonnull %4, ptr noundef nonnull %161, ptr noundef nonnull %18, ptr noundef nonnull %25) #5
  br i1 %58, label %172, label %195

172:                                              ; preds = %154
  %173 = call i32 @slaset_(ptr noundef nonnull @.str.13, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_b36, ptr noundef nonnull @c_b37, ptr noundef %10, ptr noundef nonnull %11) #5
  %174 = load i64, ptr %27, align 8, !tbaa !5
  %175 = icmp sgt i64 %174, 1
  br i1 %175, label %176, label %187

176:                                              ; preds = %172
  %177 = add nsw i64 %174, -1
  store i64 %177, ptr %18, align 8, !tbaa !5
  store i64 %177, ptr %19, align 8, !tbaa !5
  %178 = load i64, ptr %22, align 8, !tbaa !5
  %179 = add nsw i64 %178, 1
  %180 = mul nsw i64 %178, %37
  %181 = getelementptr float, ptr %39, i64 %179
  %182 = getelementptr float, ptr %181, i64 %180
  %183 = mul nsw i64 %178, %41
  %184 = getelementptr float, ptr %43, i64 %179
  %185 = getelementptr float, ptr %184, i64 %183
  %186 = call i32 @slacpy_(ptr noundef nonnull @.str.11, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef %182, ptr noundef nonnull %6, ptr noundef %185, ptr noundef nonnull %11) #5
  br label %187

187:                                              ; preds = %176, %172
  %188 = load i64, ptr %15, align 8, !tbaa !5
  %reass.sub584 = sub i64 %188, %155
  %189 = add i64 %reass.sub584, 1
  store i64 %189, ptr %18, align 8, !tbaa !5
  %190 = load i64, ptr %22, align 8, !tbaa !5
  %191 = add i64 %41, 1
  %192 = mul i64 %190, %191
  %193 = getelementptr inbounds float, ptr %43, i64 %192
  %194 = call i32 @sorgqr_(ptr noundef nonnull %27, ptr noundef nonnull %27, ptr noundef nonnull %27, ptr noundef %193, ptr noundef nonnull %11, ptr noundef %145, ptr noundef nonnull %161, ptr noundef nonnull %18, ptr noundef nonnull %25) #5
  br label %195

195:                                              ; preds = %187, %154
  br i1 %.not456608, label %196, label %198

196:                                              ; preds = %195
  %197 = call i32 @slaset_(ptr noundef nonnull @.str.13, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_b36, ptr noundef nonnull @c_b37, ptr noundef %12, ptr noundef nonnull %13) #5
  br label %198

198:                                              ; preds = %196, %195
  br i1 %59, label %199, label %201

199:                                              ; preds = %198
  %200 = call i32 @sgghrd_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %22, ptr noundef nonnull %21, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %25) #5
  br label %208

201:                                              ; preds = %198
  %202 = load i64, ptr %22, align 8, !tbaa !5
  %203 = mul i64 %202, %168
  %204 = getelementptr inbounds float, ptr %36, i64 %203
  %205 = mul i64 %202, %158
  %206 = getelementptr inbounds float, ptr %39, i64 %205
  %207 = call i32 @sgghrd_(ptr noundef nonnull @.str, ptr noundef nonnull @.str, ptr noundef nonnull %27, ptr noundef nonnull @c__1, ptr noundef nonnull %27, ptr noundef %204, ptr noundef nonnull %4, ptr noundef %206, ptr noundef nonnull %6, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %25) #5
  br label %208

208:                                              ; preds = %201, %199
  %.483 = phi i8 [ 69, %201 ], [ 83, %199 ]
  store i8 %.483, ptr %29, align 1, !tbaa !11
  %209 = load i64, ptr %15, align 8, !tbaa !5
  %reass.sub585 = sub i64 %209, %143
  %210 = add i64 %reass.sub585, 1
  store i64 %210, ptr %18, align 8, !tbaa !5
  %211 = call i32 @shgeqz_(ptr noundef nonnull %29, ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %22, ptr noundef nonnull %21, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %145, ptr noundef nonnull %18, ptr noundef nonnull %25) #5
  %212 = load i64, ptr %25, align 8, !tbaa !5
  %.not465 = icmp eq i64 %212, 0
  br i1 %.not465, label %223, label %213

213:                                              ; preds = %208
  %214 = icmp slt i64 %212, 1
  %.pre = load i64, ptr %2, align 8, !tbaa !5
  %.not477 = icmp sgt i64 %212, %.pre
  %or.cond622 = select i1 %214, i1 true, i1 %.not477
  br i1 %or.cond622, label %216, label %215

215:                                              ; preds = %213
  store i64 %212, ptr %16, align 8, !tbaa !5
  br label %455

216:                                              ; preds = %213
  %217 = icmp sle i64 %212, %.pre
  %218 = shl i64 %.pre, 1
  %.not478 = icmp sgt i64 %212, %218
  %or.cond484 = or i1 %217, %.not478
  br i1 %or.cond484, label %221, label %219

219:                                              ; preds = %216
  %220 = sub nsw i64 %212, %.pre
  store i64 %220, ptr %16, align 8, !tbaa !5
  br label %455

221:                                              ; preds = %216
  %222 = add nsw i64 %.pre, 1
  store i64 %222, ptr %16, align 8, !tbaa !5
  br label %455

223:                                              ; preds = %208
  br i1 %59, label %224, label %.loopexit535

224:                                              ; preds = %223
  br i1 %58, label %225, label %.thread510

225:                                              ; preds = %224
  %. = select i1 %.not456608, i8 66, i8 76
  store i8 %., ptr %29, align 1, !tbaa !11
  %226 = call i32 @stgevc_(ptr noundef nonnull %29, ptr noundef nonnull @.str.14, ptr noundef nonnull %28, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %2, ptr noundef nonnull %20, ptr noundef %145, ptr noundef nonnull %25) #5
  %227 = load i64, ptr %25, align 8, !tbaa !5
  %.not466 = icmp eq i64 %227, 0
  br i1 %.not466, label %233, label %230

.thread510:                                       ; preds = %224
  store i8 82, ptr %29, align 1, !tbaa !11
  %228 = call i32 @stgevc_(ptr noundef nonnull %29, ptr noundef nonnull @.str.14, ptr noundef nonnull %28, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %2, ptr noundef nonnull %20, ptr noundef %145, ptr noundef nonnull %25) #5
  %229 = load i64, ptr %25, align 8, !tbaa !5
  %.not466511 = icmp eq i64 %229, 0
  br i1 %.not466511, label %.thread512, label %230

230:                                              ; preds = %.thread510, %225
  %231 = load i64, ptr %2, align 8, !tbaa !5
  %232 = add nsw i64 %231, 2
  store i64 %232, ptr %16, align 8, !tbaa !5
  br label %455

233:                                              ; preds = %225
  %234 = call i32 @sggbak_(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.11, ptr noundef nonnull %2, ptr noundef nonnull %22, ptr noundef nonnull %21, ptr noundef nonnull %14, ptr noundef %144, ptr noundef nonnull %2, ptr noundef %10, ptr noundef nonnull %11, ptr noundef nonnull %25) #5
  %235 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %235, ptr %18, align 8, !tbaa !5
  %.not467556 = icmp slt i64 %235, 1
  br i1 %.not467556, label %.thread512, label %.lr.ph558

.lr.ph558:                                        ; preds = %233
  %236 = load float, ptr %33, align 4
  %237 = add nuw i64 %235, 4611686018427387903
  %238 = mul i64 %41, %237
  %239 = add i64 %238, %235
  %240 = shl i64 %239, 2
  %scevgep = getelementptr i8, ptr %10, i64 %240
  %241 = shl i64 %41, 2
  %scevgep631 = getelementptr i8, ptr %10, i64 %241
  %242 = add i64 %241, 4
  %243 = mul i64 %235, %242
  %scevgep632 = getelementptr i8, ptr %10, i64 %243
  %xtraiter = and i64 %235, 1
  %244 = icmp eq i64 %235, 1
  %unroll_iter = and i64 %235, 9223372036854775806
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  %min.iters.check636 = icmp ult i64 %235, 8
  %bound0 = icmp ugt ptr %scevgep632, %10
  %bound1 = icmp ult ptr %scevgep631, %scevgep
  %found.conflict = and i1 %bound0, %bound1
  %stride.check = icmp slt i64 %241, 0
  %245 = or i1 %found.conflict, %stride.check
  %n.vec639 = and i64 %235, 9223372036854775800
  %ind.end640 = or disjoint i64 %n.vec639, 1
  %cmp.n652 = icmp eq i64 %235, %n.vec639
  %xtraiter706 = and i64 %235, 1
  %lcmp.mod707.not = icmp eq i64 %xtraiter706, 0
  %min.iters.check = icmp ult i64 %235, 8
  %n.vec = and i64 %235, 9223372036854775800
  %ind.end = or disjoint i64 %n.vec, 1
  %cmp.n = icmp eq i64 %235, %n.vec
  br label %246

246:                                              ; preds = %.lr.ph558, %.loopexit536
  %.0437557 = phi i64 [ 1, %.lr.ph558 ], [ %340, %.loopexit536 ]
  %247 = getelementptr inbounds float, ptr %40, i64 %.0437557
  %248 = load float, ptr %247, align 4, !tbaa !9
  %249 = fcmp olt float %248, 0.000000e+00
  br i1 %249, label %.loopexit536, label %250

250:                                              ; preds = %246
  %251 = fcmp oeq float %248, 0.000000e+00
  store i64 %235, ptr %19, align 8, !tbaa !5
  %252 = mul nsw i64 %.0437557, %41
  br i1 %251, label %.lr.ph546, label %.lr.ph

.lr.ph546:                                        ; preds = %250
  %invariant.gep = getelementptr float, ptr %43, i64 %252
  br i1 %244, label %.loopexit538.loopexit.unr-lcssa, label %.lr.ph546.new

.lr.ph546.new:                                    ; preds = %.lr.ph546
  %invariant.gep721 = getelementptr i8, ptr %invariant.gep, i64 4
  br label %253

253:                                              ; preds = %253, %.lr.ph546.new
  %.0429545 = phi float [ 0.000000e+00, %.lr.ph546.new ], [ %265, %253 ]
  %.0431544 = phi i64 [ 1, %.lr.ph546.new ], [ %266, %253 ]
  %niter = phi i64 [ 0, %.lr.ph546.new ], [ %niter.next.1, %253 ]
  %gep = getelementptr float, ptr %invariant.gep, i64 %.0431544
  %254 = load float, ptr %gep, align 4, !tbaa !9
  %255 = fcmp oge float %254, 0.000000e+00
  %256 = fneg float %254
  %257 = select i1 %255, float %254, float %256
  %258 = fcmp oge float %.0429545, %257
  %259 = select i1 %258, float %.0429545, float %257
  %gep722 = getelementptr float, ptr %invariant.gep721, i64 %.0431544
  %260 = load float, ptr %gep722, align 4, !tbaa !9
  %261 = fcmp oge float %260, 0.000000e+00
  %262 = fneg float %260
  %263 = select i1 %261, float %260, float %262
  %264 = fcmp oge float %259, %263
  %265 = select i1 %264, float %259, float %263
  %266 = add nuw i64 %.0431544, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %.loopexit538.loopexit.unr-lcssa, label %253, !llvm.loop !12

.lr.ph:                                           ; preds = %250
  %267 = add nuw nsw i64 %.0437557, 1
  %268 = mul nsw i64 %267, %41
  br label %269

269:                                              ; preds = %.lr.ph, %269
  %.1430542 = phi float [ 0.000000e+00, %.lr.ph ], [ %283, %269 ]
  %.1432541 = phi i64 [ 1, %.lr.ph ], [ %284, %269 ]
  %270 = getelementptr float, ptr %43, i64 %.1432541
  %271 = getelementptr float, ptr %270, i64 %252
  %272 = load float, ptr %271, align 4, !tbaa !9
  %273 = fcmp oge float %272, 0.000000e+00
  %274 = fneg float %272
  %275 = select i1 %273, float %272, float %274
  %276 = getelementptr float, ptr %270, i64 %268
  %277 = load float, ptr %276, align 4, !tbaa !9
  %278 = fcmp oge float %277, 0.000000e+00
  %279 = fneg float %277
  %280 = select i1 %278, float %277, float %279
  %281 = fadd float %275, %280
  %282 = fcmp oge float %.1430542, %281
  %283 = select i1 %282, float %.1430542, float %281
  %284 = add nuw i64 %.1432541, 1
  %exitcond.not = icmp eq i64 %.1432541, %235
  br i1 %exitcond.not, label %.loopexit538, label %269, !llvm.loop !14

.loopexit538.loopexit.unr-lcssa:                  ; preds = %253, %.lr.ph546
  %.lcssa704.ph = phi float [ poison, %.lr.ph546 ], [ %265, %253 ]
  %.0429545.unr = phi float [ 0.000000e+00, %.lr.ph546 ], [ %265, %253 ]
  %.0431544.unr = phi i64 [ 1, %.lr.ph546 ], [ %266, %253 ]
  br i1 %lcmp.mod.not, label %.loopexit538, label %.loopexit538.loopexit.epilog-lcssa

.loopexit538.loopexit.epilog-lcssa:               ; preds = %.loopexit538.loopexit.unr-lcssa
  %gep.epil = getelementptr float, ptr %invariant.gep, i64 %.0431544.unr
  %285 = load float, ptr %gep.epil, align 4, !tbaa !9
  %286 = fcmp oge float %285, 0.000000e+00
  %287 = fneg float %285
  %288 = select i1 %286, float %285, float %287
  %289 = fcmp oge float %.0429545.unr, %288
  %290 = select i1 %289, float %.0429545.unr, float %288
  br label %.loopexit538

.loopexit538:                                     ; preds = %269, %.loopexit538.loopexit.epilog-lcssa, %.loopexit538.loopexit.unr-lcssa
  %.2 = phi float [ %.lcssa704.ph, %.loopexit538.loopexit.unr-lcssa ], [ %290, %.loopexit538.loopexit.epilog-lcssa ], [ %283, %269 ]
  %291 = fcmp olt float %.2, %236
  br i1 %291, label %.loopexit536, label %292

292:                                              ; preds = %.loopexit538
  %293 = fdiv float 1.000000e+00, %.2
  store i64 %235, ptr %19, align 8, !tbaa !5
  %294 = mul nsw i64 %.0437557, %41
  br i1 %251, label %.lr.ph553, label %.lr.ph550

.lr.ph553:                                        ; preds = %292
  %invariant.gep554 = getelementptr float, ptr %43, i64 %294
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph553
  %broadcast.splatinsert = insertelement <4 x float> poison, float %293, i64 0
  %broadcast.splat = shufflevector <4 x float> %broadcast.splatinsert, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = or disjoint i64 %index, 1
  %295 = getelementptr float, ptr %invariant.gep554, i64 %offset.idx
  %296 = getelementptr i8, ptr %295, i64 16
  %wide.load = load <4 x float>, ptr %295, align 4, !tbaa !9
  %wide.load630 = load <4 x float>, ptr %296, align 4, !tbaa !9
  %297 = fmul <4 x float> %broadcast.splat, %wide.load
  %298 = fmul <4 x float> %broadcast.splat, %wide.load630
  store <4 x float> %297, ptr %295, align 4, !tbaa !9
  store <4 x float> %298, ptr %296, align 4, !tbaa !9
  %index.next = add nuw i64 %index, 8
  %299 = icmp eq i64 %index.next, %n.vec
  br i1 %299, label %middle.block, label %vector.body, !llvm.loop !15

middle.block:                                     ; preds = %vector.body
  br i1 %cmp.n, label %.loopexit536, label %scalar.ph.preheader

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

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %.2433552 = phi i64 [ %302, %scalar.ph ], [ %.2433552.ph, %scalar.ph.preheader ]
  %gep555 = getelementptr float, ptr %invariant.gep554, i64 %.2433552
  %300 = load float, ptr %gep555, align 4, !tbaa !9
  %301 = fmul float %293, %300
  store float %301, ptr %gep555, align 4, !tbaa !9
  %302 = add nuw i64 %.2433552, 1
  %exitcond595.not = icmp eq i64 %.2433552, %235
  br i1 %exitcond595.not, label %.loopexit536, label %scalar.ph, !llvm.loop !18

.lr.ph550:                                        ; preds = %292
  %303 = add nuw nsw i64 %.0437557, 1
  %304 = mul nsw i64 %303, %41
  %brmerge = select i1 %min.iters.check636, i1 true, i1 %245
  br i1 %brmerge, label %scalar.ph635.preheader, label %vector.ph637

vector.ph637:                                     ; preds = %.lr.ph550
  %broadcast.splatinsert647 = insertelement <4 x float> poison, float %293, i64 0
  %broadcast.splat648 = shufflevector <4 x float> %broadcast.splatinsert647, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body642

vector.body642:                                   ; preds = %vector.body642, %vector.ph637
  %index643 = phi i64 [ 0, %vector.ph637 ], [ %index.next651, %vector.body642 ]
  %offset.idx644 = or disjoint i64 %index643, 1
  %305 = getelementptr float, ptr %43, i64 %offset.idx644
  %306 = getelementptr float, ptr %305, i64 %294
  %307 = getelementptr i8, ptr %306, i64 16
  %wide.load645 = load <4 x float>, ptr %306, align 4, !tbaa !9, !alias.scope !19, !noalias !22
  %wide.load646 = load <4 x float>, ptr %307, align 4, !tbaa !9, !alias.scope !19, !noalias !22
  %308 = fmul <4 x float> %broadcast.splat648, %wide.load645
  %309 = fmul <4 x float> %broadcast.splat648, %wide.load646
  store <4 x float> %308, ptr %306, align 4, !tbaa !9, !alias.scope !19, !noalias !22
  store <4 x float> %309, ptr %307, align 4, !tbaa !9, !alias.scope !19, !noalias !22
  %310 = getelementptr float, ptr %305, i64 %304
  %311 = getelementptr i8, ptr %310, i64 16
  %wide.load649 = load <4 x float>, ptr %310, align 4, !tbaa !9, !alias.scope !22
  %wide.load650 = load <4 x float>, ptr %311, align 4, !tbaa !9, !alias.scope !22
  %312 = fmul <4 x float> %broadcast.splat648, %wide.load649
  %313 = fmul <4 x float> %broadcast.splat648, %wide.load650
  store <4 x float> %312, ptr %310, align 4, !tbaa !9, !alias.scope !22
  store <4 x float> %313, ptr %311, align 4, !tbaa !9, !alias.scope !22
  %index.next651 = add nuw i64 %index643, 8
  %314 = icmp eq i64 %index.next651, %n.vec639
  br i1 %314, label %middle.block634, label %vector.body642, !llvm.loop !24

middle.block634:                                  ; preds = %vector.body642
  br i1 %cmp.n652, label %.loopexit536, label %scalar.ph635.preheader

scalar.ph635.preheader:                           ; preds = %.lr.ph550, %middle.block634
  %.3434549.ph = phi i64 [ 1, %.lr.ph550 ], [ %ind.end640, %middle.block634 ]
  br i1 %lcmp.mod707.not, label %scalar.ph635.prol.loopexit, label %scalar.ph635.prol

scalar.ph635.prol:                                ; preds = %scalar.ph635.preheader
  %315 = getelementptr float, ptr %43, i64 %.3434549.ph
  %316 = getelementptr float, ptr %315, i64 %294
  %317 = load float, ptr %316, align 4, !tbaa !9
  %318 = fmul float %293, %317
  store float %318, ptr %316, align 4, !tbaa !9
  %319 = getelementptr float, ptr %315, i64 %304
  %320 = load float, ptr %319, align 4, !tbaa !9
  %321 = fmul float %293, %320
  store float %321, ptr %319, align 4, !tbaa !9
  %322 = add nuw i64 %.3434549.ph, 1
  br label %scalar.ph635.prol.loopexit

scalar.ph635.prol.loopexit:                       ; preds = %scalar.ph635.prol, %scalar.ph635.preheader
  %.3434549.unr = phi i64 [ %.3434549.ph, %scalar.ph635.preheader ], [ %322, %scalar.ph635.prol ]
  %323 = icmp eq i64 %235, %.3434549.ph
  br i1 %323, label %.loopexit536, label %scalar.ph635

scalar.ph635:                                     ; preds = %scalar.ph635.prol.loopexit, %scalar.ph635
  %.3434549 = phi i64 [ %339, %scalar.ph635 ], [ %.3434549.unr, %scalar.ph635.prol.loopexit ]
  %324 = getelementptr float, ptr %43, i64 %.3434549
  %325 = getelementptr float, ptr %324, i64 %294
  %326 = load float, ptr %325, align 4, !tbaa !9
  %327 = fmul float %293, %326
  store float %327, ptr %325, align 4, !tbaa !9
  %328 = getelementptr float, ptr %324, i64 %304
  %329 = load float, ptr %328, align 4, !tbaa !9
  %330 = fmul float %293, %329
  store float %330, ptr %328, align 4, !tbaa !9
  %331 = add nuw i64 %.3434549, 1
  %332 = getelementptr float, ptr %43, i64 %331
  %333 = getelementptr float, ptr %332, i64 %294
  %334 = load float, ptr %333, align 4, !tbaa !9
  %335 = fmul float %293, %334
  store float %335, ptr %333, align 4, !tbaa !9
  %336 = getelementptr float, ptr %332, i64 %304
  %337 = load float, ptr %336, align 4, !tbaa !9
  %338 = fmul float %293, %337
  store float %338, ptr %336, align 4, !tbaa !9
  %339 = add nuw i64 %.3434549, 2
  %exitcond594.not.1 = icmp eq i64 %331, %235
  br i1 %exitcond594.not.1, label %.loopexit536, label %scalar.ph635, !llvm.loop !25

.loopexit536:                                     ; preds = %scalar.ph635.prol.loopexit, %scalar.ph635, %scalar.ph, %middle.block634, %middle.block, %246, %.loopexit538
  %340 = add nuw i64 %.0437557, 1
  %exitcond596.not = icmp eq i64 %.0437557, %235
  br i1 %exitcond596.not, label %.thread512, label %246, !llvm.loop !26

.thread512:                                       ; preds = %.loopexit536, %233, %.thread510
  br i1 %.not456608, label %341, label %.loopexit535

341:                                              ; preds = %.thread512
  %342 = call i32 @sggbak_(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.15, ptr noundef nonnull %2, ptr noundef nonnull %22, ptr noundef nonnull %21, ptr noundef nonnull %14, ptr noundef %144, ptr noundef nonnull %2, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %25) #5
  %343 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %343, ptr %18, align 8, !tbaa !5
  %.not468579 = icmp slt i64 %343, 1
  br i1 %.not468579, label %.loopexit535, label %.lr.ph581

.lr.ph581:                                        ; preds = %341
  %344 = load float, ptr %33, align 4
  %345 = add nuw i64 %343, 4611686018427387903
  %346 = mul i64 %44, %345
  %347 = add i64 %346, %343
  %348 = shl i64 %347, 2
  %scevgep671 = getelementptr i8, ptr %12, i64 %348
  %349 = shl i64 %44, 2
  %scevgep672 = getelementptr i8, ptr %12, i64 %349
  %350 = add i64 %349, 4
  %351 = mul i64 %343, %350
  %scevgep673 = getelementptr i8, ptr %12, i64 %351
  %xtraiter709 = and i64 %343, 1
  %352 = icmp eq i64 %343, 1
  %unroll_iter712 = and i64 %343, 9223372036854775806
  %lcmp.mod710.not = icmp eq i64 %xtraiter709, 0
  %min.iters.check681 = icmp ult i64 %343, 8
  %bound0674 = icmp ugt ptr %scevgep673, %12
  %bound1675 = icmp ult ptr %scevgep672, %scevgep671
  %found.conflict676 = and i1 %bound0674, %bound1675
  %stride.check677 = icmp slt i64 %349, 0
  %353 = or i1 %found.conflict676, %stride.check677
  %n.vec684 = and i64 %343, 9223372036854775800
  %ind.end685 = or disjoint i64 %n.vec684, 1
  %cmp.n697 = icmp eq i64 %343, %n.vec684
  %xtraiter714 = and i64 %343, 1
  %lcmp.mod715.not = icmp eq i64 %xtraiter714, 0
  %min.iters.check655 = icmp ult i64 %343, 8
  %n.vec658 = and i64 %343, 9223372036854775800
  %ind.end659 = or disjoint i64 %n.vec658, 1
  %cmp.n669 = icmp eq i64 %343, %n.vec658
  br label %354

354:                                              ; preds = %.lr.ph581, %.loopexit
  %.1438580 = phi i64 [ 1, %.lr.ph581 ], [ %448, %.loopexit ]
  %355 = getelementptr inbounds float, ptr %40, i64 %.1438580
  %356 = load float, ptr %355, align 4, !tbaa !9
  %357 = fcmp olt float %356, 0.000000e+00
  br i1 %357, label %.loopexit, label %358

358:                                              ; preds = %354
  %359 = fcmp oeq float %356, 0.000000e+00
  store i64 %343, ptr %19, align 8, !tbaa !5
  %360 = mul nsw i64 %.1438580, %44
  br i1 %359, label %.lr.ph567, label %.lr.ph562

.lr.ph567:                                        ; preds = %358
  %invariant.gep569 = getelementptr float, ptr %46, i64 %360
  br i1 %352, label %.loopexit533.loopexit.unr-lcssa, label %.lr.ph567.new

.lr.ph567.new:                                    ; preds = %.lr.ph567
  %invariant.gep723 = getelementptr i8, ptr %invariant.gep569, i64 4
  br label %361

361:                                              ; preds = %361, %.lr.ph567.new
  %.3566 = phi float [ 0.000000e+00, %.lr.ph567.new ], [ %373, %361 ]
  %.4435565 = phi i64 [ 1, %.lr.ph567.new ], [ %374, %361 ]
  %niter713 = phi i64 [ 0, %.lr.ph567.new ], [ %niter713.next.1, %361 ]
  %gep570 = getelementptr float, ptr %invariant.gep569, i64 %.4435565
  %362 = load float, ptr %gep570, align 4, !tbaa !9
  %363 = fcmp oge float %362, 0.000000e+00
  %364 = fneg float %362
  %365 = select i1 %363, float %362, float %364
  %366 = fcmp oge float %.3566, %365
  %367 = select i1 %366, float %.3566, float %365
  %gep724 = getelementptr float, ptr %invariant.gep723, i64 %.4435565
  %368 = load float, ptr %gep724, align 4, !tbaa !9
  %369 = fcmp oge float %368, 0.000000e+00
  %370 = fneg float %368
  %371 = select i1 %369, float %368, float %370
  %372 = fcmp oge float %367, %371
  %373 = select i1 %372, float %367, float %371
  %374 = add nuw i64 %.4435565, 2
  %niter713.next.1 = add i64 %niter713, 2
  %niter713.ncmp.1 = icmp eq i64 %niter713.next.1, %unroll_iter712
  br i1 %niter713.ncmp.1, label %.loopexit533.loopexit.unr-lcssa, label %361, !llvm.loop !27

.lr.ph562:                                        ; preds = %358
  %375 = add nuw nsw i64 %.1438580, 1
  %376 = mul nsw i64 %375, %44
  br label %377

377:                                              ; preds = %.lr.ph562, %377
  %.4561 = phi float [ 0.000000e+00, %.lr.ph562 ], [ %391, %377 ]
  %.5436560 = phi i64 [ 1, %.lr.ph562 ], [ %392, %377 ]
  %378 = getelementptr float, ptr %46, i64 %.5436560
  %379 = getelementptr float, ptr %378, i64 %360
  %380 = load float, ptr %379, align 4, !tbaa !9
  %381 = fcmp oge float %380, 0.000000e+00
  %382 = fneg float %380
  %383 = select i1 %381, float %380, float %382
  %384 = getelementptr float, ptr %378, i64 %376
  %385 = load float, ptr %384, align 4, !tbaa !9
  %386 = fcmp oge float %385, 0.000000e+00
  %387 = fneg float %385
  %388 = select i1 %386, float %385, float %387
  %389 = fadd float %383, %388
  %390 = fcmp oge float %.4561, %389
  %391 = select i1 %390, float %.4561, float %389
  %392 = add nuw i64 %.5436560, 1
  %exitcond597.not = icmp eq i64 %.5436560, %343
  br i1 %exitcond597.not, label %.loopexit533, label %377, !llvm.loop !28

.loopexit533.loopexit.unr-lcssa:                  ; preds = %361, %.lr.ph567
  %.lcssa700.ph = phi float [ poison, %.lr.ph567 ], [ %373, %361 ]
  %.3566.unr = phi float [ 0.000000e+00, %.lr.ph567 ], [ %373, %361 ]
  %.4435565.unr = phi i64 [ 1, %.lr.ph567 ], [ %374, %361 ]
  br i1 %lcmp.mod710.not, label %.loopexit533, label %.loopexit533.loopexit.epilog-lcssa

.loopexit533.loopexit.epilog-lcssa:               ; preds = %.loopexit533.loopexit.unr-lcssa
  %gep570.epil = getelementptr float, ptr %invariant.gep569, i64 %.4435565.unr
  %393 = load float, ptr %gep570.epil, align 4, !tbaa !9
  %394 = fcmp oge float %393, 0.000000e+00
  %395 = fneg float %393
  %396 = select i1 %394, float %393, float %395
  %397 = fcmp oge float %.3566.unr, %396
  %398 = select i1 %397, float %.3566.unr, float %396
  br label %.loopexit533

.loopexit533:                                     ; preds = %377, %.loopexit533.loopexit.epilog-lcssa, %.loopexit533.loopexit.unr-lcssa
  %.5 = phi float [ %.lcssa700.ph, %.loopexit533.loopexit.unr-lcssa ], [ %398, %.loopexit533.loopexit.epilog-lcssa ], [ %391, %377 ]
  %399 = fcmp olt float %.5, %344
  br i1 %399, label %.loopexit, label %400

400:                                              ; preds = %.loopexit533
  %401 = fdiv float 1.000000e+00, %.5
  store i64 %343, ptr %19, align 8, !tbaa !5
  %402 = mul nsw i64 %.1438580, %44
  br i1 %359, label %.lr.ph576, label %.lr.ph573

.lr.ph576:                                        ; preds = %400
  %invariant.gep577 = getelementptr float, ptr %46, i64 %402
  br i1 %min.iters.check655, label %scalar.ph654.preheader, label %vector.ph656

vector.ph656:                                     ; preds = %.lr.ph576
  %broadcast.splatinsert666 = insertelement <4 x float> poison, float %401, i64 0
  %broadcast.splat667 = shufflevector <4 x float> %broadcast.splatinsert666, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body661

vector.body661:                                   ; preds = %vector.body661, %vector.ph656
  %index662 = phi i64 [ 0, %vector.ph656 ], [ %index.next668, %vector.body661 ]
  %offset.idx663 = or disjoint i64 %index662, 1
  %403 = getelementptr float, ptr %invariant.gep577, i64 %offset.idx663
  %404 = getelementptr i8, ptr %403, i64 16
  %wide.load664 = load <4 x float>, ptr %403, align 4, !tbaa !9
  %wide.load665 = load <4 x float>, ptr %404, align 4, !tbaa !9
  %405 = fmul <4 x float> %broadcast.splat667, %wide.load664
  %406 = fmul <4 x float> %broadcast.splat667, %wide.load665
  store <4 x float> %405, ptr %403, align 4, !tbaa !9
  store <4 x float> %406, ptr %404, align 4, !tbaa !9
  %index.next668 = add nuw i64 %index662, 8
  %407 = icmp eq i64 %index.next668, %n.vec658
  br i1 %407, label %middle.block653, label %vector.body661, !llvm.loop !29

middle.block653:                                  ; preds = %vector.body661
  br i1 %cmp.n669, label %.loopexit, label %scalar.ph654.preheader

scalar.ph654.preheader:                           ; preds = %middle.block653, %.lr.ph576
  %.6575.ph = phi i64 [ 1, %.lr.ph576 ], [ %ind.end659, %middle.block653 ]
  br label %scalar.ph654

scalar.ph654:                                     ; preds = %scalar.ph654.preheader, %scalar.ph654
  %.6575 = phi i64 [ %410, %scalar.ph654 ], [ %.6575.ph, %scalar.ph654.preheader ]
  %gep578 = getelementptr float, ptr %invariant.gep577, i64 %.6575
  %408 = load float, ptr %gep578, align 4, !tbaa !9
  %409 = fmul float %401, %408
  store float %409, ptr %gep578, align 4, !tbaa !9
  %410 = add nuw i64 %.6575, 1
  %exitcond600.not = icmp eq i64 %.6575, %343
  br i1 %exitcond600.not, label %.loopexit, label %scalar.ph654, !llvm.loop !30

.lr.ph573:                                        ; preds = %400
  %411 = add nuw nsw i64 %.1438580, 1
  %412 = mul nsw i64 %411, %44
  %brmerge725 = select i1 %min.iters.check681, i1 true, i1 %353
  br i1 %brmerge725, label %scalar.ph680.preheader, label %vector.ph682

vector.ph682:                                     ; preds = %.lr.ph573
  %broadcast.splatinsert692 = insertelement <4 x float> poison, float %401, i64 0
  %broadcast.splat693 = shufflevector <4 x float> %broadcast.splatinsert692, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body687

vector.body687:                                   ; preds = %vector.body687, %vector.ph682
  %index688 = phi i64 [ 0, %vector.ph682 ], [ %index.next696, %vector.body687 ]
  %offset.idx689 = or disjoint i64 %index688, 1
  %413 = getelementptr float, ptr %46, i64 %offset.idx689
  %414 = getelementptr float, ptr %413, i64 %402
  %415 = getelementptr i8, ptr %414, i64 16
  %wide.load690 = load <4 x float>, ptr %414, align 4, !tbaa !9, !alias.scope !31, !noalias !34
  %wide.load691 = load <4 x float>, ptr %415, align 4, !tbaa !9, !alias.scope !31, !noalias !34
  %416 = fmul <4 x float> %broadcast.splat693, %wide.load690
  %417 = fmul <4 x float> %broadcast.splat693, %wide.load691
  store <4 x float> %416, ptr %414, align 4, !tbaa !9, !alias.scope !31, !noalias !34
  store <4 x float> %417, ptr %415, align 4, !tbaa !9, !alias.scope !31, !noalias !34
  %418 = getelementptr float, ptr %413, i64 %412
  %419 = getelementptr i8, ptr %418, i64 16
  %wide.load694 = load <4 x float>, ptr %418, align 4, !tbaa !9, !alias.scope !34
  %wide.load695 = load <4 x float>, ptr %419, align 4, !tbaa !9, !alias.scope !34
  %420 = fmul <4 x float> %broadcast.splat693, %wide.load694
  %421 = fmul <4 x float> %broadcast.splat693, %wide.load695
  store <4 x float> %420, ptr %418, align 4, !tbaa !9, !alias.scope !34
  store <4 x float> %421, ptr %419, align 4, !tbaa !9, !alias.scope !34
  %index.next696 = add nuw i64 %index688, 8
  %422 = icmp eq i64 %index.next696, %n.vec684
  br i1 %422, label %middle.block679, label %vector.body687, !llvm.loop !36

middle.block679:                                  ; preds = %vector.body687
  br i1 %cmp.n697, label %.loopexit, label %scalar.ph680.preheader

scalar.ph680.preheader:                           ; preds = %.lr.ph573, %middle.block679
  %.7572.ph = phi i64 [ 1, %.lr.ph573 ], [ %ind.end685, %middle.block679 ]
  br i1 %lcmp.mod715.not, label %scalar.ph680.prol.loopexit, label %scalar.ph680.prol

scalar.ph680.prol:                                ; preds = %scalar.ph680.preheader
  %423 = getelementptr float, ptr %46, i64 %.7572.ph
  %424 = getelementptr float, ptr %423, i64 %402
  %425 = load float, ptr %424, align 4, !tbaa !9
  %426 = fmul float %401, %425
  store float %426, ptr %424, align 4, !tbaa !9
  %427 = getelementptr float, ptr %423, i64 %412
  %428 = load float, ptr %427, align 4, !tbaa !9
  %429 = fmul float %401, %428
  store float %429, ptr %427, align 4, !tbaa !9
  %430 = add nuw i64 %.7572.ph, 1
  br label %scalar.ph680.prol.loopexit

scalar.ph680.prol.loopexit:                       ; preds = %scalar.ph680.prol, %scalar.ph680.preheader
  %.7572.unr = phi i64 [ %.7572.ph, %scalar.ph680.preheader ], [ %430, %scalar.ph680.prol ]
  %431 = icmp eq i64 %343, %.7572.ph
  br i1 %431, label %.loopexit, label %scalar.ph680

scalar.ph680:                                     ; preds = %scalar.ph680.prol.loopexit, %scalar.ph680
  %.7572 = phi i64 [ %447, %scalar.ph680 ], [ %.7572.unr, %scalar.ph680.prol.loopexit ]
  %432 = getelementptr float, ptr %46, i64 %.7572
  %433 = getelementptr float, ptr %432, i64 %402
  %434 = load float, ptr %433, align 4, !tbaa !9
  %435 = fmul float %401, %434
  store float %435, ptr %433, align 4, !tbaa !9
  %436 = getelementptr float, ptr %432, i64 %412
  %437 = load float, ptr %436, align 4, !tbaa !9
  %438 = fmul float %401, %437
  store float %438, ptr %436, align 4, !tbaa !9
  %439 = add nuw i64 %.7572, 1
  %440 = getelementptr float, ptr %46, i64 %439
  %441 = getelementptr float, ptr %440, i64 %402
  %442 = load float, ptr %441, align 4, !tbaa !9
  %443 = fmul float %401, %442
  store float %443, ptr %441, align 4, !tbaa !9
  %444 = getelementptr float, ptr %440, i64 %412
  %445 = load float, ptr %444, align 4, !tbaa !9
  %446 = fmul float %401, %445
  store float %446, ptr %444, align 4, !tbaa !9
  %447 = add nuw i64 %.7572, 2
  %exitcond599.not.1 = icmp eq i64 %439, %343
  br i1 %exitcond599.not.1, label %.loopexit, label %scalar.ph680, !llvm.loop !37

.loopexit:                                        ; preds = %scalar.ph680.prol.loopexit, %scalar.ph680, %scalar.ph654, %middle.block679, %middle.block653, %354, %.loopexit533
  %448 = add nuw i64 %.1438580, 1
  %exitcond601.not = icmp eq i64 %.1438580, %343
  br i1 %exitcond601.not, label %.loopexit535, label %354, !llvm.loop !38

.loopexit535:                                     ; preds = %.loopexit, %341, %.thread512, %223
  br i1 %.not462504, label %452, label %449

449:                                              ; preds = %.loopexit535
  %450 = call i32 @slascl_(ptr noundef nonnull @.str.10, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %31, ptr noundef nonnull %23, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef %7, ptr noundef nonnull %2, ptr noundef nonnull %25) #5
  %451 = call i32 @slascl_(ptr noundef nonnull @.str.10, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %31, ptr noundef nonnull %23, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef %8, ptr noundef nonnull %2, ptr noundef nonnull %25) #5
  br label %452

452:                                              ; preds = %449, %.loopexit535
  br i1 %.not463509, label %455, label %453

453:                                              ; preds = %452
  %454 = call i32 @slascl_(ptr noundef nonnull @.str.10, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %32, ptr noundef nonnull %24, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef %9, ptr noundef nonnull %2, ptr noundef nonnull %25) #5
  br label %455

455:                                              ; preds = %452, %453, %215, %221, %219, %230
  store float %96, ptr %14, align 4, !tbaa !9
  br label %456

456:                                              ; preds = %103, %102, %455, %.thread497
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #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 i64 @lsame_(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

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

declare double @slamch_(ptr noundef) local_unnamed_addr #2

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

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

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

declare i32 @slascl_(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 @sggbal_(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 @sgeqrf_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @sormqr_(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 @slaset_(ptr noundef, ptr noundef, 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

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

declare i32 @sgghrd_(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 @shgeqz_(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 @stgevc_(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 @sggbak_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

; 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 = !{!10, !10, i64 0}
!10 = !{!"float", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = distinct !{!14, !13}
!15 = distinct !{!15, !13, !16, !17}
!16 = !{!"llvm.loop.isvectorized", i32 1}
!17 = !{!"llvm.loop.unroll.runtime.disable"}
!18 = distinct !{!18, !13, !17, !16}
!19 = !{!20}
!20 = distinct !{!20, !21}
!21 = distinct !{!21, !"LVerDomain"}
!22 = !{!23}
!23 = distinct !{!23, !21}
!24 = distinct !{!24, !13, !16, !17}
!25 = distinct !{!25, !13, !16}
!26 = distinct !{!26, !13}
!27 = distinct !{!27, !13}
!28 = distinct !{!28, !13}
!29 = distinct !{!29, !13, !16, !17}
!30 = distinct !{!30, !13, !17, !16}
!31 = !{!32}
!32 = distinct !{!32, !33}
!33 = distinct !{!33, !"LVerDomain"}
!34 = !{!35}
!35 = distinct !{!35, !33}
!36 = distinct !{!36, !13, !16, !17}
!37 = distinct !{!37, !13, !16}
!38 = distinct !{!38, !13}


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