; LLVM IR from OpenMathLib/OpenBLAS :: lapack-netlib/SRC (sormrz)

; 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
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c__2 = external hidden global i32, align 4
@c__1 = external hidden global i32, align 4
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i32, align 4
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [8 x i8], align 1
@c__65 = external hidden global i32, align 4

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

108:                                              ; preds = %14
  %109 = load ptr, ptr %17, align 8, !tbaa !5
  %110 = load i32, ptr %109, align 4, !tbaa !9
  store i32 %110, ptr %54, align 4, !tbaa !9
  %111 = load ptr, ptr %18, align 8, !tbaa !5
  %112 = load i32, ptr %111, align 4, !tbaa !9
  %113 = icmp sge i32 1, %112
  br i1 %113, label %114, label %115

114:                                              ; preds = %108
  br label %118

115:                                              ; preds = %108
  %116 = load ptr, ptr %18, align 8, !tbaa !5
  %117 = load i32, ptr %116, align 4, !tbaa !9
  br label %118

118:                                              ; preds = %115, %114
  %119 = phi i32 [ 1, %114 ], [ %117, %115 ]
  store i32 %119, ptr %55, align 4, !tbaa !9
  br label %132

120:                                              ; preds = %14
  %121 = load ptr, ptr %18, align 8, !tbaa !5
  %122 = load i32, ptr %121, align 4, !tbaa !9
  store i32 %122, ptr %54, align 4, !tbaa !9
  %123 = load ptr, ptr %17, align 8, !tbaa !5
  %124 = load i32, ptr %123, align 4, !tbaa !9
  %125 = icmp sge i32 1, %124
  br i1 %125, label %126, label %127

126:                                              ; preds = %120
  br label %130

127:                                              ; preds = %120
  %128 = load ptr, ptr %17, align 8, !tbaa !5
  %129 = load i32, ptr %128, align 4, !tbaa !9
  br label %130

130:                                              ; preds = %127, %126
  %131 = phi i32 [ 1, %126 ], [ %129, %127 ]
  store i32 %131, ptr %55, align 4, !tbaa !9
  br label %132

132:                                              ; preds = %130, %118
  %133 = load i32, ptr %40, align 4, !tbaa !9
  %134 = icmp ne i32 %133, 0
  br i1 %134, label %141, label %135

135:                                              ; preds = %132
  %136 = load ptr, ptr %15, align 8, !tbaa !5
  %137 = call i32 @lsame_(ptr noundef %136, ptr noundef @.str.2)
  %138 = icmp ne i32 %137, 0
  br i1 %138, label %141, label %139

139:                                              ; preds = %135
  %140 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -1, ptr %140, align 4, !tbaa !9
  br label %251

141:                                              ; preds = %135, %132
  %142 = load i32, ptr %56, align 4, !tbaa !9
  %143 = icmp ne i32 %142, 0
  br i1 %143, label %150, label %144

144:                                              ; preds = %141
  %145 = load ptr, ptr %16, align 8, !tbaa !5
  %146 = call i32 @lsame_(ptr noundef %145, ptr noundef @.str.3)
  %147 = icmp ne i32 %146, 0
  br i1 %147, label %150, label %148

148:                                              ; preds = %144
  %149 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -2, ptr %149, align 4, !tbaa !9
  br label %250

150:                                              ; preds = %144, %141
  %151 = load ptr, ptr %17, align 8, !tbaa !5
  %152 = load i32, ptr %151, align 4, !tbaa !9
  %153 = icmp slt i32 %152, 0
  br i1 %153, label %154, label %156

154:                                              ; preds = %150
  %155 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -3, ptr %155, align 4, !tbaa !9
  br label %249

156:                                              ; preds = %150
  %157 = load ptr, ptr %18, align 8, !tbaa !5
  %158 = load i32, ptr %157, align 4, !tbaa !9
  %159 = icmp slt i32 %158, 0
  br i1 %159, label %160, label %162

160:                                              ; preds = %156
  %161 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -4, ptr %161, align 4, !tbaa !9
  br label %248

162:                                              ; preds = %156
  %163 = load ptr, ptr %19, align 8, !tbaa !5
  %164 = load i32, ptr %163, align 4, !tbaa !9
  %165 = icmp slt i32 %164, 0
  br i1 %165, label %171, label %166

166:                                              ; preds = %162
  %167 = load ptr, ptr %19, align 8, !tbaa !5
  %168 = load i32, ptr %167, align 4, !tbaa !9
  %169 = load i32, ptr %54, align 4, !tbaa !9
  %170 = icmp sgt i32 %168, %169
  br i1 %170, label %171, label %173

171:                                              ; preds = %166, %162
  %172 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -5, ptr %172, align 4, !tbaa !9
  br label %247

173:                                              ; preds = %166
  %174 = load ptr, ptr %20, align 8, !tbaa !5
  %175 = load i32, ptr %174, align 4, !tbaa !9
  %176 = icmp slt i32 %175, 0
  br i1 %176, label %195, label %177

177:                                              ; preds = %173
  %178 = load i32, ptr %40, align 4, !tbaa !9
  %179 = icmp ne i32 %178, 0
  br i1 %179, label %180, label %186

180:                                              ; preds = %177
  %181 = load ptr, ptr %20, align 8, !tbaa !5
  %182 = load i32, ptr %181, align 4, !tbaa !9
  %183 = load ptr, ptr %17, align 8, !tbaa !5
  %184 = load i32, ptr %183, align 4, !tbaa !9
  %185 = icmp sgt i32 %182, %184
  br i1 %185, label %195, label %186

186:                                              ; preds = %180, %177
  %187 = load i32, ptr %40, align 4, !tbaa !9
  %188 = icmp ne i32 %187, 0
  br i1 %188, label %197, label %189

189:                                              ; preds = %186
  %190 = load ptr, ptr %20, align 8, !tbaa !5
  %191 = load i32, ptr %190, align 4, !tbaa !9
  %192 = load ptr, ptr %18, align 8, !tbaa !5
  %193 = load i32, ptr %192, align 4, !tbaa !9
  %194 = icmp sgt i32 %191, %193
  br i1 %194, label %195, label %197

195:                                              ; preds = %189, %180, %173
  %196 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -6, ptr %196, align 4, !tbaa !9
  br label %246

197:                                              ; preds = %189, %186
  %198 = load ptr, ptr %22, align 8, !tbaa !5
  %199 = load i32, ptr %198, align 4, !tbaa !9
  %200 = load ptr, ptr %19, align 8, !tbaa !5
  %201 = load i32, ptr %200, align 4, !tbaa !9
  %202 = icmp sge i32 1, %201
  br i1 %202, label %203, label %204

203:                                              ; preds = %197
  br label %207

204:                                              ; preds = %197
  %205 = load ptr, ptr %19, align 8, !tbaa !5
  %206 = load i32, ptr %205, align 4, !tbaa !9
  br label %207

207:                                              ; preds = %204, %203
  %208 = phi i32 [ 1, %203 ], [ %206, %204 ]
  %209 = icmp slt i32 %199, %208
  br i1 %209, label %210, label %212

210:                                              ; preds = %207
  %211 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -8, ptr %211, align 4, !tbaa !9
  br label %245

212:                                              ; preds = %207
  %213 = load ptr, ptr %25, align 8, !tbaa !5
  %214 = load i32, ptr %213, align 4, !tbaa !9
  %215 = load ptr, ptr %17, align 8, !tbaa !5
  %216 = load i32, ptr %215, align 4, !tbaa !9
  %217 = icmp sge i32 1, %216
  br i1 %217, label %218, label %219

218:                                              ; preds = %212
  br label %222

219:                                              ; preds = %212
  %220 = load ptr, ptr %17, align 8, !tbaa !5
  %221 = load i32, ptr %220, align 4, !tbaa !9
  br label %222

222:                                              ; preds = %219, %218
  %223 = phi i32 [ 1, %218 ], [ %221, %219 ]
  %224 = icmp slt i32 %214, %223
  br i1 %224, label %225, label %227

225:                                              ; preds = %222
  %226 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -11, ptr %226, align 4, !tbaa !9
  br label %244

227:                                              ; preds = %222
  %228 = load ptr, ptr %27, align 8, !tbaa !5
  %229 = load i32, ptr %228, align 4, !tbaa !9
  %230 = load i32, ptr %55, align 4, !tbaa !9
  %231 = icmp sge i32 1, %230
  br i1 %231, label %232, label %233

232:                                              ; preds = %227
  br label %235

233:                                              ; preds = %227
  %234 = load i32, ptr %55, align 4, !tbaa !9
  br label %235

235:                                              ; preds = %233, %232
  %236 = phi i32 [ 1, %232 ], [ %234, %233 ]
  %237 = icmp slt i32 %229, %236
  br i1 %237, label %238, label %243

238:                                              ; preds = %235
  %239 = load i32, ptr %60, align 4, !tbaa !9
  %240 = icmp ne i32 %239, 0
  br i1 %240, label %243, label %241

241:                                              ; preds = %238
  %242 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -13, ptr %242, align 4, !tbaa !9
  br label %243

243:                                              ; preds = %241, %238, %235
  br label %244

244:                                              ; preds = %243, %225
  br label %245

245:                                              ; preds = %244, %210
  br label %246

246:                                              ; preds = %245, %195
  br label %247

247:                                              ; preds = %246, %171
  br label %248

248:                                              ; preds = %247, %160
  br label %249

249:                                              ; preds = %248, %154
  br label %250

250:                                              ; preds = %249, %148
  br label %251

251:                                              ; preds = %250, %139
  %252 = load ptr, ptr %28, align 8, !tbaa !5
  %253 = load i32, ptr %252, align 4, !tbaa !9
  %254 = icmp eq i32 %253, 0
  br i1 %254, label %255, label %343

255:                                              ; preds = %251
  %256 = load ptr, ptr %17, align 8, !tbaa !5
  %257 = load i32, ptr %256, align 4, !tbaa !9
  %258 = icmp eq i32 %257, 0
  br i1 %258, label %263, label %259

259:                                              ; preds = %255
  %260 = load ptr, ptr %18, align 8, !tbaa !5
  %261 = load i32, ptr %260, align 4, !tbaa !9
  %262 = icmp eq i32 %261, 0
  br i1 %262, label %263, label %264

263:                                              ; preds = %259, %255
  store i32 1, ptr %59, align 4, !tbaa !9
  br label %338

264:                                              ; preds = %259
  %265 = getelementptr inbounds [2 x i32], ptr %36, i64 0, i64 0
  store i32 1, ptr %265, align 4, !tbaa !9
  %266 = load ptr, ptr %15, align 8, !tbaa !5
  %267 = getelementptr inbounds [2 x ptr], ptr %29, i64 0, i64 0
  store ptr %266, ptr %267, align 16, !tbaa !5
  %268 = getelementptr inbounds [2 x i32], ptr %36, i64 0, i64 1
  store i32 1, ptr %268, align 4, !tbaa !9
  %269 = load ptr, ptr %16, align 8, !tbaa !5
  %270 = getelementptr inbounds [2 x ptr], ptr %29, i64 0, i64 1
  store ptr %269, ptr %270, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #3
  store i32 2, ptr %64, align 4, !tbaa !9
  %271 = getelementptr inbounds [2 x i8], ptr %39, i64 0, i64 0
  store ptr %271, ptr %66, align 8, !tbaa !5
  store i32 0, ptr %62, align 4, !tbaa !9
  br label %272

272:                                              ; preds = %308, %264
  %273 = load i32, ptr %62, align 4, !tbaa !9
  %274 = load i32, ptr @c__2, align 4, !tbaa !9
  %275 = icmp slt i32 %273, %274
  br i1 %275, label %276, label %311

276:                                              ; preds = %272
  %277 = load i32, ptr %64, align 4, !tbaa !9
  store i32 %277, ptr %63, align 4, !tbaa !9
  %278 = load i32, ptr %62, align 4, !tbaa !9
  %279 = sext i32 %278 to i64
  %280 = getelementptr inbounds [2 x i32], ptr %36, i64 0, i64 %279
  %281 = load i32, ptr %280, align 4, !tbaa !9
  %282 = load i32, ptr %63, align 4, !tbaa !9
  %283 = icmp slt i32 %281, %282
  br i1 %283, label %284, label %289

284:                                              ; preds = %276
  %285 = load i32, ptr %62, align 4, !tbaa !9
  %286 = sext i32 %285 to i64
  %287 = getelementptr inbounds [2 x i32], ptr %36, i64 0, i64 %286
  %288 = load i32, ptr %287, align 4, !tbaa !9
  store i32 %288, ptr %63, align 4, !tbaa !9
  br label %289

289:                                              ; preds = %284, %276
  %290 = load i32, ptr %63, align 4, !tbaa !9
  %291 = load i32, ptr %64, align 4, !tbaa !9
  %292 = sub nsw i32 %291, %290
  store i32 %292, ptr %64, align 4, !tbaa !9
  %293 = load i32, ptr %62, align 4, !tbaa !9
  %294 = sext i32 %293 to i64
  %295 = getelementptr inbounds [2 x ptr], ptr %29, i64 0, i64 %294
  %296 = load ptr, ptr %295, align 8, !tbaa !5
  store ptr %296, ptr %65, align 8, !tbaa !5
  br label %297

297:                                              ; preds = %301, %289
  %298 = load i32, ptr %63, align 4, !tbaa !9
  %299 = add nsw i32 %298, -1
  store i32 %299, ptr %63, align 4, !tbaa !9
  %300 = icmp sge i32 %299, 0
  br i1 %300, label %301, label %307

301:                                              ; preds = %297
  %302 = load ptr, ptr %65, align 8, !tbaa !5
  %303 = getelementptr inbounds i8, ptr %302, i32 1
  store ptr %303, ptr %65, align 8, !tbaa !5
  %304 = load i8, ptr %302, align 1, !tbaa !11
  %305 = load ptr, ptr %66, align 8, !tbaa !5
  %306 = getelementptr inbounds i8, ptr %305, i32 1
  store ptr %306, ptr %66, align 8, !tbaa !5
  store i8 %304, ptr %305, align 1, !tbaa !11
  br label %297, !llvm.loop !12

307:                                              ; preds = %297
  br label %308

308:                                              ; preds = %307
  %309 = load i32, ptr %62, align 4, !tbaa !9
  %310 = add nsw i32 %309, 1
  store i32 %310, ptr %62, align 4, !tbaa !9
  br label %272, !llvm.loop !14

311:                                              ; preds = %272
  br label %312

312:                                              ; preds = %316, %311
  %313 = load i32, ptr %64, align 4, !tbaa !9
  %314 = add nsw i32 %313, -1
  store i32 %314, ptr %64, align 4, !tbaa !9
  %315 = icmp sge i32 %314, 0
  br i1 %315, label %316, label %319

316:                                              ; preds = %312
  %317 = load ptr, ptr %66, align 8, !tbaa !5
  %318 = getelementptr inbounds i8, ptr %317, i32 1
  store ptr %318, ptr %66, align 8, !tbaa !5
  store i8 32, ptr %317, align 1, !tbaa !11
  br label %312, !llvm.loop !15

319:                                              ; preds = %312
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #3
  store i32 64, ptr %34, align 4, !tbaa !9
  %320 = getelementptr inbounds [2 x i8], ptr %39, i64 0, i64 0
  %321 = load ptr, ptr %17, align 8, !tbaa !5
  %322 = load ptr, ptr %18, align 8, !tbaa !5
  %323 = load ptr, ptr %19, align 8, !tbaa !5
  %324 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.4, ptr noundef %320, ptr noundef %321, ptr noundef %322, ptr noundef %323, ptr noundef @c_n1, i32 noundef 6, i32 noundef 2)
  store i32 %324, ptr %35, align 4, !tbaa !9
  %325 = load i32, ptr %34, align 4, !tbaa !9
  %326 = load i32, ptr %35, align 4, !tbaa !9
  %327 = icmp sle i32 %325, %326
  br i1 %327, label %328, label %330

328:                                              ; preds = %319
  %329 = load i32, ptr %34, align 4, !tbaa !9
  br label %332

330:                                              ; preds = %319
  %331 = load i32, ptr %35, align 4, !tbaa !9
  br label %332

332:                                              ; preds = %330, %328
  %333 = phi i32 [ %329, %328 ], [ %331, %330 ]
  store i32 %333, ptr %51, align 4, !tbaa !9
  %334 = load i32, ptr %55, align 4, !tbaa !9
  %335 = load i32, ptr %51, align 4, !tbaa !9
  %336 = mul nsw i32 %334, %335
  %337 = add nsw i32 %336, 4160
  store i32 %337, ptr %59, align 4, !tbaa !9
  br label %338

338:                                              ; preds = %332, %263
  %339 = load i32, ptr %59, align 4, !tbaa !9
  %340 = sitofp i32 %339 to float
  %341 = load ptr, ptr %26, align 8, !tbaa !5
  %342 = getelementptr inbounds float, ptr %341, i64 1
  store float %340, ptr %342, align 4, !tbaa !16
  br label %343

343:                                              ; preds = %338, %251
  %344 = load ptr, ptr %28, align 8, !tbaa !5
  %345 = load i32, ptr %344, align 4, !tbaa !9
  %346 = icmp ne i32 %345, 0
  br i1 %346, label %347, label %352

347:                                              ; preds = %343
  %348 = load ptr, ptr %28, align 8, !tbaa !5
  %349 = load i32, ptr %348, align 4, !tbaa !9
  %350 = sub nsw i32 0, %349
  store i32 %350, ptr %34, align 4, !tbaa !9
  %351 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %34, i32 noundef 6)
  store i32 1, ptr %67, align 4
  br label %656

352:                                              ; preds = %343
  %353 = load i32, ptr %60, align 4, !tbaa !9
  %354 = icmp ne i32 %353, 0
  br i1 %354, label %355, label %356

355:                                              ; preds = %352
  store i32 1, ptr %67, align 4
  br label %656

356:                                              ; preds = %352
  br label %357

357:                                              ; preds = %356
  %358 = load ptr, ptr %17, align 8, !tbaa !5
  %359 = load i32, ptr %358, align 4, !tbaa !9
  %360 = icmp eq i32 %359, 0
  br i1 %360, label %365, label %361

361:                                              ; preds = %357
  %362 = load ptr, ptr %18, align 8, !tbaa !5
  %363 = load i32, ptr %362, align 4, !tbaa !9
  %364 = icmp eq i32 %363, 0
  br i1 %364, label %365, label %366

365:                                              ; preds = %361, %357
  store i32 1, ptr %67, align 4
  br label %656

366:                                              ; preds = %361
  store i32 2, ptr %42, align 4, !tbaa !9
  %367 = load i32, ptr %55, align 4, !tbaa !9
  store i32 %367, ptr %57, align 4, !tbaa !9
  %368 = load i32, ptr %51, align 4, !tbaa !9
  %369 = icmp sgt i32 %368, 1
  br i1 %369, label %370, label %459

370:                                              ; preds = %366
  %371 = load i32, ptr %51, align 4, !tbaa !9
  %372 = load ptr, ptr %19, align 8, !tbaa !5
  %373 = load i32, ptr %372, align 4, !tbaa !9
  %374 = icmp slt i32 %371, %373
  br i1 %374, label %375, label %459

375:                                              ; preds = %370
  %376 = load ptr, ptr %27, align 8, !tbaa !5
  %377 = load i32, ptr %376, align 4, !tbaa !9
  %378 = load i32, ptr %55, align 4, !tbaa !9
  %379 = load i32, ptr %51, align 4, !tbaa !9
  %380 = mul nsw i32 %378, %379
  %381 = add nsw i32 %380, 4160
  %382 = icmp slt i32 %377, %381
  br i1 %382, label %383, label %458

383:                                              ; preds = %375
  %384 = load ptr, ptr %27, align 8, !tbaa !5
  %385 = load i32, ptr %384, align 4, !tbaa !9
  %386 = sub nsw i32 %385, 4160
  %387 = load i32, ptr %57, align 4, !tbaa !9
  %388 = sdiv i32 %386, %387
  store i32 %388, ptr %51, align 4, !tbaa !9
  %389 = getelementptr inbounds [2 x i32], ptr %36, i64 0, i64 0
  store i32 1, ptr %389, align 4, !tbaa !9
  %390 = load ptr, ptr %15, align 8, !tbaa !5
  %391 = getelementptr inbounds [2 x ptr], ptr %29, i64 0, i64 0
  store ptr %390, ptr %391, align 16, !tbaa !5
  %392 = getelementptr inbounds [2 x i32], ptr %36, i64 0, i64 1
  store i32 1, ptr %392, align 4, !tbaa !9
  %393 = load ptr, ptr %16, align 8, !tbaa !5
  %394 = getelementptr inbounds [2 x ptr], ptr %29, i64 0, i64 1
  store ptr %393, ptr %394, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #3
  store i32 2, ptr %70, align 4, !tbaa !9
  %395 = getelementptr inbounds [2 x i8], ptr %39, i64 0, i64 0
  store ptr %395, ptr %72, align 8, !tbaa !5
  store i32 0, ptr %68, align 4, !tbaa !9
  br label %396

396:                                              ; preds = %432, %383
  %397 = load i32, ptr %68, align 4, !tbaa !9
  %398 = load i32, ptr @c__2, align 4, !tbaa !9
  %399 = icmp slt i32 %397, %398
  br i1 %399, label %400, label %435

400:                                              ; preds = %396
  %401 = load i32, ptr %70, align 4, !tbaa !9
  store i32 %401, ptr %69, align 4, !tbaa !9
  %402 = load i32, ptr %68, align 4, !tbaa !9
  %403 = sext i32 %402 to i64
  %404 = getelementptr inbounds [2 x i32], ptr %36, i64 0, i64 %403
  %405 = load i32, ptr %404, align 4, !tbaa !9
  %406 = load i32, ptr %69, align 4, !tbaa !9
  %407 = icmp slt i32 %405, %406
  br i1 %407, label %408, label %413

408:                                              ; preds = %400
  %409 = load i32, ptr %68, align 4, !tbaa !9
  %410 = sext i32 %409 to i64
  %411 = getelementptr inbounds [2 x i32], ptr %36, i64 0, i64 %410
  %412 = load i32, ptr %411, align 4, !tbaa !9
  store i32 %412, ptr %69, align 4, !tbaa !9
  br label %413

413:                                              ; preds = %408, %400
  %414 = load i32, ptr %69, align 4, !tbaa !9
  %415 = load i32, ptr %70, align 4, !tbaa !9
  %416 = sub nsw i32 %415, %414
  store i32 %416, ptr %70, align 4, !tbaa !9
  %417 = load i32, ptr %68, align 4, !tbaa !9
  %418 = sext i32 %417 to i64
  %419 = getelementptr inbounds [2 x ptr], ptr %29, i64 0, i64 %418
  %420 = load ptr, ptr %419, align 8, !tbaa !5
  store ptr %420, ptr %71, align 8, !tbaa !5
  br label %421

421:                                              ; preds = %425, %413
  %422 = load i32, ptr %69, align 4, !tbaa !9
  %423 = add nsw i32 %422, -1
  store i32 %423, ptr %69, align 4, !tbaa !9
  %424 = icmp sge i32 %423, 0
  br i1 %424, label %425, label %431

425:                                              ; preds = %421
  %426 = load ptr, ptr %71, align 8, !tbaa !5
  %427 = getelementptr inbounds i8, ptr %426, i32 1
  store ptr %427, ptr %71, align 8, !tbaa !5
  %428 = load i8, ptr %426, align 1, !tbaa !11
  %429 = load ptr, ptr %72, align 8, !tbaa !5
  %430 = getelementptr inbounds i8, ptr %429, i32 1
  store ptr %430, ptr %72, align 8, !tbaa !5
  store i8 %428, ptr %429, align 1, !tbaa !11
  br label %421, !llvm.loop !18

431:                                              ; preds = %421
  br label %432

432:                                              ; preds = %431
  %433 = load i32, ptr %68, align 4, !tbaa !9
  %434 = add nsw i32 %433, 1
  store i32 %434, ptr %68, align 4, !tbaa !9
  br label %396, !llvm.loop !19

435:                                              ; preds = %396
  br label %436

436:                                              ; preds = %440, %435
  %437 = load i32, ptr %70, align 4, !tbaa !9
  %438 = add nsw i32 %437, -1
  store i32 %438, ptr %70, align 4, !tbaa !9
  %439 = icmp sge i32 %438, 0
  br i1 %439, label %440, label %443

440:                                              ; preds = %436
  %441 = load ptr, ptr %72, align 8, !tbaa !5
  %442 = getelementptr inbounds i8, ptr %441, i32 1
  store ptr %442, ptr %72, align 8, !tbaa !5
  store i8 32, ptr %441, align 1, !tbaa !11
  br label %436, !llvm.loop !20

443:                                              ; preds = %436
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #3
  store i32 2, ptr %34, align 4, !tbaa !9
  %444 = getelementptr inbounds [2 x i8], ptr %39, i64 0, i64 0
  %445 = load ptr, ptr %17, align 8, !tbaa !5
  %446 = load ptr, ptr %18, align 8, !tbaa !5
  %447 = load ptr, ptr %19, align 8, !tbaa !5
  %448 = call i32 @ilaenv_(ptr noundef @c__2, ptr noundef @.str.4, ptr noundef %444, ptr noundef %445, ptr noundef %446, ptr noundef %447, ptr noundef @c_n1, i32 noundef 6, i32 noundef 2)
  store i32 %448, ptr %35, align 4, !tbaa !9
  %449 = load i32, ptr %34, align 4, !tbaa !9
  %450 = load i32, ptr %35, align 4, !tbaa !9
  %451 = icmp sge i32 %449, %450
  br i1 %451, label %452, label %454

452:                                              ; preds = %443
  %453 = load i32, ptr %34, align 4, !tbaa !9
  br label %456

454:                                              ; preds = %443
  %455 = load i32, ptr %35, align 4, !tbaa !9
  br label %456

456:                                              ; preds = %454, %452
  %457 = phi i32 [ %453, %452 ], [ %455, %454 ]
  store i32 %457, ptr %42, align 4, !tbaa !9
  br label %458

458:                                              ; preds = %456, %375
  br label %459

459:                                              ; preds = %458, %370, %366
  %460 = load i32, ptr %51, align 4, !tbaa !9
  %461 = load i32, ptr %42, align 4, !tbaa !9
  %462 = icmp slt i32 %460, %461
  br i1 %462, label %468, label %463

463:                                              ; preds = %459
  %464 = load i32, ptr %51, align 4, !tbaa !9
  %465 = load ptr, ptr %19, align 8, !tbaa !5
  %466 = load i32, ptr %465, align 4, !tbaa !9
  %467 = icmp sge i32 %464, %466
  br i1 %467, label %468, label %489

468:                                              ; preds = %463, %459
  %469 = load ptr, ptr %15, align 8, !tbaa !5
  %470 = load ptr, ptr %16, align 8, !tbaa !5
  %471 = load ptr, ptr %17, align 8, !tbaa !5
  %472 = load ptr, ptr %18, align 8, !tbaa !5
  %473 = load ptr, ptr %19, align 8, !tbaa !5
  %474 = load ptr, ptr %20, align 8, !tbaa !5
  %475 = load ptr, ptr %21, align 8, !tbaa !5
  %476 = load i32, ptr %31, align 4, !tbaa !9
  %477 = sext i32 %476 to i64
  %478 = getelementptr inbounds float, ptr %475, i64 %477
  %479 = load ptr, ptr %22, align 8, !tbaa !5
  %480 = load ptr, ptr %23, align 8, !tbaa !5
  %481 = getelementptr inbounds float, ptr %480, i64 1
  %482 = load ptr, ptr %24, align 8, !tbaa !5
  %483 = load i32, ptr %33, align 4, !tbaa !9
  %484 = sext i32 %483 to i64
  %485 = getelementptr inbounds float, ptr %482, i64 %484
  %486 = load ptr, ptr %25, align 8, !tbaa !5
  %487 = load ptr, ptr %26, align 8, !tbaa !5
  %488 = getelementptr inbounds float, ptr %487, i64 1
  call void @sormr3_(ptr noundef %469, ptr noundef %470, ptr noundef %471, ptr noundef %472, ptr noundef %473, ptr noundef %474, ptr noundef %478, ptr noundef %479, ptr noundef %481, ptr noundef %485, ptr noundef %486, ptr noundef %488, ptr noundef %43)
  br label %651

489:                                              ; preds = %463
  %490 = load i32, ptr %55, align 4, !tbaa !9
  %491 = load i32, ptr %51, align 4, !tbaa !9
  %492 = mul nsw i32 %490, %491
  %493 = add nsw i32 %492, 1
  store i32 %493, ptr %61, align 4, !tbaa !9
  %494 = load i32, ptr %40, align 4, !tbaa !9
  %495 = icmp ne i32 %494, 0
  br i1 %495, label %496, label %499

496:                                              ; preds = %489
  %497 = load i32, ptr %56, align 4, !tbaa !9
  %498 = icmp ne i32 %497, 0
  br i1 %498, label %499, label %505

499:                                              ; preds = %496, %489
  %500 = load i32, ptr %40, align 4, !tbaa !9
  %501 = icmp ne i32 %500, 0
  br i1 %501, label %509, label %502

502:                                              ; preds = %499
  %503 = load i32, ptr %56, align 4, !tbaa !9
  %504 = icmp ne i32 %503, 0
  br i1 %504, label %505, label %509

505:                                              ; preds = %502, %496
  store i32 1, ptr %44, align 4, !tbaa !9
  %506 = load ptr, ptr %19, align 8, !tbaa !5
  %507 = load i32, ptr %506, align 4, !tbaa !9
  store i32 %507, ptr %45, align 4, !tbaa !9
  %508 = load i32, ptr %51, align 4, !tbaa !9
  store i32 %508, ptr %46, align 4, !tbaa !9
  br label %520

509:                                              ; preds = %502, %499
  %510 = load ptr, ptr %19, align 8, !tbaa !5
  %511 = load i32, ptr %510, align 4, !tbaa !9
  %512 = sub nsw i32 %511, 1
  %513 = load i32, ptr %51, align 4, !tbaa !9
  %514 = sdiv i32 %512, %513
  %515 = load i32, ptr %51, align 4, !tbaa !9
  %516 = mul nsw i32 %514, %515
  %517 = add nsw i32 %516, 1
  store i32 %517, ptr %44, align 4, !tbaa !9
  store i32 1, ptr %45, align 4, !tbaa !9
  %518 = load i32, ptr %51, align 4, !tbaa !9
  %519 = sub nsw i32 0, %518
  store i32 %519, ptr %46, align 4, !tbaa !9
  br label %520

520:                                              ; preds = %509, %505
  %521 = load i32, ptr %40, align 4, !tbaa !9
  %522 = icmp ne i32 %521, 0
  br i1 %522, label %523, label %532

523:                                              ; preds = %520
  %524 = load ptr, ptr %18, align 8, !tbaa !5
  %525 = load i32, ptr %524, align 4, !tbaa !9
  store i32 %525, ptr %53, align 4, !tbaa !9
  store i32 1, ptr %50, align 4, !tbaa !9
  %526 = load ptr, ptr %17, align 8, !tbaa !5
  %527 = load i32, ptr %526, align 4, !tbaa !9
  %528 = load ptr, ptr %20, align 8, !tbaa !5
  %529 = load i32, ptr %528, align 4, !tbaa !9
  %530 = sub nsw i32 %527, %529
  %531 = add nsw i32 %530, 1
  store i32 %531, ptr %49, align 4, !tbaa !9
  br label %541

532:                                              ; preds = %520
  %533 = load ptr, ptr %17, align 8, !tbaa !5
  %534 = load i32, ptr %533, align 4, !tbaa !9
  store i32 %534, ptr %52, align 4, !tbaa !9
  store i32 1, ptr %48, align 4, !tbaa !9
  %535 = load ptr, ptr %18, align 8, !tbaa !5
  %536 = load i32, ptr %535, align 4, !tbaa !9
  %537 = load ptr, ptr %20, align 8, !tbaa !5
  %538 = load i32, ptr %537, align 4, !tbaa !9
  %539 = sub nsw i32 %536, %538
  %540 = add nsw i32 %539, 1
  store i32 %540, ptr %49, align 4, !tbaa !9
  br label %541

541:                                              ; preds = %532, %523
  %542 = load i32, ptr %56, align 4, !tbaa !9
  %543 = icmp ne i32 %542, 0
  br i1 %543, label %544, label %546

544:                                              ; preds = %541
  %545 = getelementptr inbounds [1 x i8], ptr %58, i64 0, i64 0
  store i8 84, ptr %545, align 1, !tbaa !11
  br label %548

546:                                              ; preds = %541
  %547 = getelementptr inbounds [1 x i8], ptr %58, i64 0, i64 0
  store i8 78, ptr %547, align 1, !tbaa !11
  br label %548

548:                                              ; preds = %546, %544
  %549 = load i32, ptr %45, align 4, !tbaa !9
  store i32 %549, ptr %34, align 4, !tbaa !9
  %550 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %550, ptr %35, align 4, !tbaa !9
  %551 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %551, ptr %41, align 4, !tbaa !9
  br label %552

552:                                              ; preds = %646, %548
  %553 = load i32, ptr %35, align 4, !tbaa !9
  %554 = icmp slt i32 %553, 0
  br i1 %554, label %555, label %560

555:                                              ; preds = %552
  %556 = load i32, ptr %41, align 4, !tbaa !9
  %557 = load i32, ptr %34, align 4, !tbaa !9
  %558 = icmp sge i32 %556, %557
  %559 = zext i1 %558 to i32
  br label %565

560:                                              ; preds = %552
  %561 = load i32, ptr %41, align 4, !tbaa !9
  %562 = load i32, ptr %34, align 4, !tbaa !9
  %563 = icmp sle i32 %561, %562
  %564 = zext i1 %563 to i32
  br label %565

565:                                              ; preds = %560, %555
  %566 = phi i32 [ %559, %555 ], [ %564, %560 ]
  %567 = icmp ne i32 %566, 0
  br i1 %567, label %568, label %650

568:                                              ; preds = %565
  %569 = load i32, ptr %51, align 4, !tbaa !9
  store i32 %569, ptr %37, align 4, !tbaa !9
  %570 = load ptr, ptr %19, align 8, !tbaa !5
  %571 = load i32, ptr %570, align 4, !tbaa !9
  %572 = load i32, ptr %41, align 4, !tbaa !9
  %573 = sub nsw i32 %571, %572
  %574 = add nsw i32 %573, 1
  store i32 %574, ptr %38, align 4, !tbaa !9
  %575 = load i32, ptr %37, align 4, !tbaa !9
  %576 = load i32, ptr %38, align 4, !tbaa !9
  %577 = icmp sle i32 %575, %576
  br i1 %577, label %578, label %580

578:                                              ; preds = %568
  %579 = load i32, ptr %37, align 4, !tbaa !9
  br label %582

580:                                              ; preds = %568
  %581 = load i32, ptr %38, align 4, !tbaa !9
  br label %582

582:                                              ; preds = %580, %578
  %583 = phi i32 [ %579, %578 ], [ %581, %580 ]
  store i32 %583, ptr %47, align 4, !tbaa !9
  %584 = load ptr, ptr %20, align 8, !tbaa !5
  %585 = load ptr, ptr %21, align 8, !tbaa !5
  %586 = load i32, ptr %41, align 4, !tbaa !9
  %587 = load i32, ptr %49, align 4, !tbaa !9
  %588 = load i32, ptr %30, align 4, !tbaa !9
  %589 = mul nsw i32 %587, %588
  %590 = add nsw i32 %586, %589
  %591 = sext i32 %590 to i64
  %592 = getelementptr inbounds float, ptr %585, i64 %591
  %593 = load ptr, ptr %22, align 8, !tbaa !5
  %594 = load ptr, ptr %23, align 8, !tbaa !5
  %595 = load i32, ptr %41, align 4, !tbaa !9
  %596 = sext i32 %595 to i64
  %597 = getelementptr inbounds float, ptr %594, i64 %596
  %598 = load ptr, ptr %26, align 8, !tbaa !5
  %599 = load i32, ptr %61, align 4, !tbaa !9
  %600 = sext i32 %599 to i64
  %601 = getelementptr inbounds float, ptr %598, i64 %600
  call void @slarzt_(ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %584, ptr noundef %47, ptr noundef %592, ptr noundef %593, ptr noundef %597, ptr noundef %601, ptr noundef @c__65)
  %602 = load i32, ptr %40, align 4, !tbaa !9
  %603 = icmp ne i32 %602, 0
  br i1 %603, label %604, label %611

604:                                              ; preds = %582
  %605 = load ptr, ptr %17, align 8, !tbaa !5
  %606 = load i32, ptr %605, align 4, !tbaa !9
  %607 = load i32, ptr %41, align 4, !tbaa !9
  %608 = sub nsw i32 %606, %607
  %609 = add nsw i32 %608, 1
  store i32 %609, ptr %52, align 4, !tbaa !9
  %610 = load i32, ptr %41, align 4, !tbaa !9
  store i32 %610, ptr %48, align 4, !tbaa !9
  br label %618

611:                                              ; preds = %582
  %612 = load ptr, ptr %18, align 8, !tbaa !5
  %613 = load i32, ptr %612, align 4, !tbaa !9
  %614 = load i32, ptr %41, align 4, !tbaa !9
  %615 = sub nsw i32 %613, %614
  %616 = add nsw i32 %615, 1
  store i32 %616, ptr %53, align 4, !tbaa !9
  %617 = load i32, ptr %41, align 4, !tbaa !9
  store i32 %617, ptr %50, align 4, !tbaa !9
  br label %618

618:                                              ; preds = %611, %604
  %619 = load ptr, ptr %15, align 8, !tbaa !5
  %620 = getelementptr inbounds [1 x i8], ptr %58, i64 0, i64 0
  %621 = load ptr, ptr %20, align 8, !tbaa !5
  %622 = load ptr, ptr %21, align 8, !tbaa !5
  %623 = load i32, ptr %41, align 4, !tbaa !9
  %624 = load i32, ptr %49, align 4, !tbaa !9
  %625 = load i32, ptr %30, align 4, !tbaa !9
  %626 = mul nsw i32 %624, %625
  %627 = add nsw i32 %623, %626
  %628 = sext i32 %627 to i64
  %629 = getelementptr inbounds float, ptr %622, i64 %628
  %630 = load ptr, ptr %22, align 8, !tbaa !5
  %631 = load ptr, ptr %26, align 8, !tbaa !5
  %632 = load i32, ptr %61, align 4, !tbaa !9
  %633 = sext i32 %632 to i64
  %634 = getelementptr inbounds float, ptr %631, i64 %633
  %635 = load ptr, ptr %24, align 8, !tbaa !5
  %636 = load i32, ptr %48, align 4, !tbaa !9
  %637 = load i32, ptr %50, align 4, !tbaa !9
  %638 = load i32, ptr %32, align 4, !tbaa !9
  %639 = mul nsw i32 %637, %638
  %640 = add nsw i32 %636, %639
  %641 = sext i32 %640 to i64
  %642 = getelementptr inbounds float, ptr %635, i64 %641
  %643 = load ptr, ptr %25, align 8, !tbaa !5
  %644 = load ptr, ptr %26, align 8, !tbaa !5
  %645 = getelementptr inbounds float, ptr %644, i64 1
  call void @slarzb_(ptr noundef %619, ptr noundef %620, ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %52, ptr noundef %53, ptr noundef %47, ptr noundef %621, ptr noundef %629, ptr noundef %630, ptr noundef %634, ptr noundef @c__65, ptr noundef %642, ptr noundef %643, ptr noundef %645, ptr noundef %57)
  br label %646

646:                                              ; preds = %618
  %647 = load i32, ptr %35, align 4, !tbaa !9
  %648 = load i32, ptr %41, align 4, !tbaa !9
  %649 = add nsw i32 %648, %647
  store i32 %649, ptr %41, align 4, !tbaa !9
  br label %552, !llvm.loop !21

650:                                              ; preds = %565
  br label %651

651:                                              ; preds = %650, %468
  %652 = load i32, ptr %59, align 4, !tbaa !9
  %653 = sitofp i32 %652 to float
  %654 = load ptr, ptr %26, align 8, !tbaa !5
  %655 = getelementptr inbounds float, ptr %654, i64 1
  store float %653, ptr %655, align 4, !tbaa !16
  store i32 1, ptr %67, align 4
  br label %656

656:                                              ; preds = %651, %365, %355, %347
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 2, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %29) #3
  ret void
}

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

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

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

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

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

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

declare void @slarzb_(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

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 }

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

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


; 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
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c__2 = external hidden global i32, align 4
@c__1 = external hidden global i32, align 4
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i32, align 4
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [8 x i8], align 1
@c__65 = external hidden global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local void @sormrz_(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 nocapture noundef readonly %12, ptr nocapture noundef %13) local_unnamed_addr #0 {
  %15 = alloca [2 x ptr], align 16
  %16 = alloca i32, align 4
  %17 = alloca [2 x i32], align 4
  %18 = alloca [2 x i8], align 1
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca [1 x i8], align 1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #5
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %18) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %24) #5
  %25 = load i32, ptr %7, align 4, !tbaa !5
  %narrow = xor i32 %25, -1
  %26 = sext i32 %narrow to i64
  %27 = getelementptr inbounds float, ptr %6, i64 %26
  %28 = getelementptr inbounds i8, ptr %8, i64 -4
  %29 = load i32, ptr %10, align 4, !tbaa !5
  %narrow268 = xor i32 %29, -1
  %30 = sext i32 %narrow268 to i64
  %31 = getelementptr inbounds float, ptr %9, i64 %30
  store i32 0, ptr %13, align 4, !tbaa !5
  %32 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %33 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #5
  %34 = load i32, ptr %12, align 4, !tbaa !5
  %35 = icmp eq i32 %34, -1
  %.not = icmp ne i32 %32, 0
  br i1 %.not, label %36, label %39

36:                                               ; preds = %14
  %37 = load i32, ptr %2, align 4, !tbaa !5
  %38 = load i32, ptr %3, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.smax.i32(i32 %38, i32 1)
  br label %43

39:                                               ; preds = %14
  %40 = load i32, ptr %3, align 4, !tbaa !5
  %41 = load i32, ptr %2, align 4, !tbaa !5
  %spec.select269 = tail call i32 @llvm.smax.i32(i32 %41, i32 1)
  %42 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #5
  %.not259 = icmp eq i32 %42, 0
  br i1 %.not259, label %.thread289.sink.split, label %43

43:                                               ; preds = %36, %39
  %.0226282 = phi i32 [ %spec.select269, %39 ], [ %spec.select, %36 ]
  %.0227279 = phi i32 [ %40, %39 ], [ %37, %36 ]
  %.not260 = icmp eq i32 %33, 0
  br i1 %.not260, label %44, label %46

44:                                               ; preds = %43
  %45 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #5
  %.not261 = icmp eq i32 %45, 0
  br i1 %.not261, label %.thread289.sink.split, label %46

46:                                               ; preds = %44, %43
  %47 = load i32, ptr %2, align 4, !tbaa !5
  %48 = icmp slt i32 %47, 0
  br i1 %48, label %.thread289.sink.split, label %49

49:                                               ; preds = %46
  %50 = load i32, ptr %3, align 4, !tbaa !5
  %51 = icmp slt i32 %50, 0
  br i1 %51, label %.thread289.sink.split, label %52

52:                                               ; preds = %49
  %53 = load i32, ptr %4, align 4, !tbaa !5
  %54 = icmp slt i32 %53, 0
  %55 = icmp sgt i32 %53, %.0227279
  %or.cond270 = select i1 %54, i1 true, i1 %55
  br i1 %or.cond270, label %.thread289.sink.split, label %56

56:                                               ; preds = %52
  %57 = load i32, ptr %5, align 4, !tbaa !5
  %58 = icmp slt i32 %57, 0
  %or.cond316.v = select i1 %.not, i32 %47, i32 %50
  %or.cond316 = icmp ugt i32 %57, %or.cond316.v
  %or.cond317 = or i1 %58, %or.cond316
  br i1 %or.cond317, label %.thread289.sink.split, label %59

59:                                               ; preds = %56
  %60 = load i32, ptr %7, align 4, !tbaa !5
  %spec.select272 = tail call i32 @llvm.umax.i32(i32 %53, i32 1)
  %61 = icmp slt i32 %60, %spec.select272
  br i1 %61, label %.thread289.sink.split, label %62

62:                                               ; preds = %59
  %63 = load i32, ptr %10, align 4, !tbaa !5
  %spec.select273 = tail call i32 @llvm.umax.i32(i32 %47, i32 1)
  %64 = icmp slt i32 %63, %spec.select273
  br i1 %64, label %.thread289.sink.split, label %65

65:                                               ; preds = %62
  %66 = load i32, ptr %12, align 4, !tbaa !5
  %67 = icmp sge i32 %66, %.0226282
  %or.cond = select i1 %67, i1 true, i1 %35
  br i1 %or.cond, label %68, label %.thread289.sink.split

68:                                               ; preds = %65
  %.pr = load i32, ptr %13, align 4, !tbaa !5
  %69 = icmp eq i32 %.pr, 0
  br i1 %69, label %70, label %.thread289

70:                                               ; preds = %68
  %71 = icmp eq i32 %47, 0
  %72 = icmp eq i32 %50, 0
  %or.cond395 = or i1 %71, %72
  br i1 %or.cond395, label %.sink.split, label %73

73:                                               ; preds = %70
  store i32 1, ptr %17, align 4, !tbaa !5
  store ptr %0, ptr %15, align 16, !tbaa !9
  %74 = getelementptr inbounds i8, ptr %17, i64 4
  store i32 1, ptr %74, align 4, !tbaa !5
  %75 = getelementptr inbounds i8, ptr %15, i64 8
  store ptr %1, ptr %75, align 8, !tbaa !9
  %76 = load i32, ptr @c__2, align 4, !tbaa !5
  %77 = icmp sgt i32 %76, 0
  br i1 %77, label %.lr.ph326, label %.lr.ph331.preheader

.preheader318:                                    ; preds = %._crit_edge
  %78 = icmp sgt i32 %83, 0
  br i1 %78, label %.lr.ph331.preheader, label %.thread284

.lr.ph331.preheader:                              ; preds = %73, %.preheader318
  %.0215.lcssa379 = phi ptr [ %.1216.lcssa, %.preheader318 ], [ %18, %73 ]
  %.0219.lcssa378 = phi i32 [ %83, %.preheader318 ], [ 2, %73 ]
  %79 = zext nneg i32 %.0219.lcssa378 to i64
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.0215.lcssa379, i8 32, i64 %79, i1 false), !tbaa !11
  br label %.thread284

.lr.ph326:                                        ; preds = %73, %._crit_edge
  %80 = phi i32 [ %98, %._crit_edge ], [ %76, %73 ]
  %indvars.iv = phi i64 [ %indvars.iv.next, %._crit_edge ], [ 0, %73 ]
  %.0215324 = phi ptr [ %.1216.lcssa, %._crit_edge ], [ %18, %73 ]
  %.0219323 = phi i32 [ %83, %._crit_edge ], [ 2, %73 ]
  %81 = getelementptr inbounds [2 x i32], ptr %17, i64 0, i64 %indvars.iv
  %82 = load i32, ptr %81, align 4, !tbaa !5
  %spec.select274 = tail call i32 @llvm.smin.i32(i32 %82, i32 %.0219323)
  %83 = sub nsw i32 %.0219323, %spec.select274
  %84 = icmp sgt i32 %spec.select274, 0
  br i1 %84, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %.lr.ph326
  %.0215324399 = ptrtoint ptr %.0215324 to i64
  %85 = getelementptr inbounds [2 x ptr], ptr %15, i64 0, i64 %indvars.iv
  %86 = load ptr, ptr %85, align 8, !tbaa !9
  %87 = add nsw i32 %spec.select274, -1
  %88 = zext nneg i32 %87 to i64
  %scevgep = getelementptr i8, ptr %.0215324, i64 %88
  %89 = zext nneg i32 %spec.select274 to i64
  %min.iters.check = icmp ult i32 %spec.select274, 32
  %90 = ptrtoint ptr %86 to i64
  %91 = sub i64 %.0215324399, %90
  %diff.check = icmp ult i64 %91, 32
  %or.cond430 = select i1 %min.iters.check, i1 true, i1 %diff.check
  br i1 %or.cond430, label %.lr.ph.preheader436, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph.preheader
  %n.vec = and i64 %89, 2147483616
  %ind.end = getelementptr i8, ptr %.0215324, i64 %n.vec
  %ind.end400 = getelementptr i8, ptr %86, i64 %n.vec
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %next.gep = getelementptr i8, ptr %.0215324, i64 %index
  %next.gep403 = getelementptr i8, ptr %86, i64 %index
  %92 = getelementptr i8, ptr %next.gep403, i64 16
  %wide.load = load <16 x i8>, ptr %next.gep403, align 1, !tbaa !11
  %wide.load405 = load <16 x i8>, ptr %92, align 1, !tbaa !11
  %93 = getelementptr i8, ptr %next.gep, i64 16
  store <16 x i8> %wide.load, ptr %next.gep, align 1, !tbaa !11
  store <16 x i8> %wide.load405, ptr %93, align 1, !tbaa !11
  %index.next = add nuw i64 %index, 32
  %94 = icmp eq i64 %index.next, %n.vec
  br i1 %94, label %middle.block, label %vector.body, !llvm.loop !12

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %89
  br i1 %cmp.n, label %._crit_edge.loopexit, label %.lr.ph.preheader436

.lr.ph.preheader436:                              ; preds = %middle.block, %.lr.ph.preheader
  %.1216321.ph = phi ptr [ %.0215324, %.lr.ph.preheader ], [ %ind.end, %middle.block ]
  %.0218320.ph = phi ptr [ %86, %.lr.ph.preheader ], [ %ind.end400, %middle.block ]
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader436, %.lr.ph
  %.1216321 = phi ptr [ %97, %.lr.ph ], [ %.1216321.ph, %.lr.ph.preheader436 ]
  %.0218320 = phi ptr [ %95, %.lr.ph ], [ %.0218320.ph, %.lr.ph.preheader436 ]
  %95 = getelementptr inbounds i8, ptr %.0218320, i64 1
  %96 = load i8, ptr %.0218320, align 1, !tbaa !11
  %97 = getelementptr inbounds i8, ptr %.1216321, i64 1
  store i8 %96, ptr %.1216321, align 1, !tbaa !11
  %exitcond.not = icmp eq ptr %.1216321, %scevgep
  br i1 %exitcond.not, label %._crit_edge.loopexit, label %.lr.ph, !llvm.loop !16

._crit_edge.loopexit:                             ; preds = %.lr.ph, %middle.block
  %.lcssa397 = phi ptr [ %ind.end, %middle.block ], [ %97, %.lr.ph ]
  %.pre = load i32, ptr @c__2, align 4, !tbaa !5
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %.lr.ph326
  %98 = phi i32 [ %80, %.lr.ph326 ], [ %.pre, %._crit_edge.loopexit ]
  %.1216.lcssa = phi ptr [ %.0215324, %.lr.ph326 ], [ %.lcssa397, %._crit_edge.loopexit ]
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %99 = sext i32 %98 to i64
  %100 = icmp slt i64 %indvars.iv.next, %99
  br i1 %100, label %.lr.ph326, label %.preheader318, !llvm.loop !17

.thread284:                                       ; preds = %.preheader318, %.lr.ph331.preheader
  %101 = call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.4, ptr noundef nonnull %18, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 2) #5
  %102 = call i32 @llvm.smin.i32(i32 %101, i32 64)
  %103 = mul nsw i32 %102, %.0226282
  %104 = add nsw i32 %103, 4160
  %.pr288.pr.pr.pre = load i32, ptr %13, align 4, !tbaa !5
  %105 = sitofp i32 %104 to float
  store float %105, ptr %11, align 4, !tbaa !18
  %.not263 = icmp eq i32 %.pr288.pr.pr.pre, 0
  br i1 %.not263, label %109, label %.thread289

.thread289.sink.split:                            ; preds = %65, %62, %59, %56, %52, %49, %46, %44, %39
  %.sink = phi i32 [ -1, %39 ], [ -2, %44 ], [ -3, %46 ], [ -4, %49 ], [ -5, %52 ], [ -6, %56 ], [ -8, %59 ], [ -11, %62 ], [ -13, %65 ]
  store i32 %.sink, ptr %13, align 4, !tbaa !5
  br label %.thread289

.thread289:                                       ; preds = %.thread289.sink.split, %68, %.thread284
  %106 = phi i32 [ %.pr288.pr.pr.pre, %.thread284 ], [ %.pr, %68 ], [ %.sink, %.thread289.sink.split ]
  %107 = sub nsw i32 0, %106
  store i32 %107, ptr %16, align 4, !tbaa !5
  %108 = call i32 @xerbla_(ptr noundef nonnull @.str.5, ptr noundef nonnull %16, i32 noundef 6) #5
  br label %207

.sink.split:                                      ; preds = %70
  store float 1.000000e+00, ptr %11, align 4, !tbaa !18
  br label %109

109:                                              ; preds = %.sink.split, %.thread284
  %.0224314 = phi i32 [ %104, %.thread284 ], [ 1, %.sink.split ]
  %.0228313 = phi i32 [ %102, %.thread284 ], [ undef, %.sink.split ]
  br i1 %35, label %207, label %110

110:                                              ; preds = %109
  %111 = load i32, ptr %2, align 4, !tbaa !5
  %112 = icmp eq i32 %111, 0
  br i1 %112, label %207, label %113

113:                                              ; preds = %110
  %114 = load i32, ptr %3, align 4, !tbaa !5
  %115 = icmp eq i32 %114, 0
  br i1 %115, label %207, label %116

116:                                              ; preds = %113
  store i32 %.0226282, ptr %23, align 4, !tbaa !5
  %117 = icmp sgt i32 %.0228313, 1
  br i1 %117, label %118, label %.thread299

118:                                              ; preds = %116
  %119 = load i32, ptr %4, align 4, !tbaa !5
  %120 = icmp slt i32 %.0228313, %119
  br i1 %120, label %121, label %.thread295

121:                                              ; preds = %118
  %122 = load i32, ptr %12, align 4, !tbaa !5
  %123 = mul nuw nsw i32 %.0228313, %.0226282
  %124 = add nuw nsw i32 %123, 4160
  %125 = icmp slt i32 %122, %124
  br i1 %125, label %126, label %.thread295

126:                                              ; preds = %121
  %127 = add nsw i32 %122, -4160
  %128 = sdiv i32 %127, %.0226282
  store i32 1, ptr %17, align 4, !tbaa !5
  store ptr %0, ptr %15, align 16, !tbaa !9
  %129 = getelementptr inbounds i8, ptr %17, i64 4
  store i32 1, ptr %129, align 4, !tbaa !5
  %130 = getelementptr inbounds i8, ptr %15, i64 8
  store ptr %1, ptr %130, align 8, !tbaa !9
  %131 = load i32, ptr @c__2, align 4, !tbaa !5
  %132 = icmp sgt i32 %131, 0
  br i1 %132, label %.lr.ph344, label %.lr.ph349.preheader

.preheader:                                       ; preds = %._crit_edge338
  %133 = icmp sgt i32 %138, 0
  br i1 %133, label %.lr.ph349.preheader, label %._crit_edge350

.lr.ph349.preheader:                              ; preds = %126, %.preheader
  %.0.lcssa387 = phi ptr [ %.1.lcssa, %.preheader ], [ %18, %126 ]
  %.0210.lcssa386 = phi i32 [ %138, %.preheader ], [ 2, %126 ]
  %134 = zext nneg i32 %.0210.lcssa386 to i64
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.0.lcssa387, i8 32, i64 %134, i1 false), !tbaa !11
  br label %._crit_edge350

.lr.ph344:                                        ; preds = %126, %._crit_edge338
  %135 = phi i32 [ %153, %._crit_edge338 ], [ %131, %126 ]
  %indvars.iv367 = phi i64 [ %indvars.iv.next368, %._crit_edge338 ], [ 0, %126 ]
  %.0342 = phi ptr [ %.1.lcssa, %._crit_edge338 ], [ %18, %126 ]
  %.0210341 = phi i32 [ %138, %._crit_edge338 ], [ 2, %126 ]
  %136 = getelementptr inbounds [2 x i32], ptr %17, i64 0, i64 %indvars.iv367
  %137 = load i32, ptr %136, align 4, !tbaa !5
  %spec.select275 = call i32 @llvm.smin.i32(i32 %137, i32 %.0210341)
  %138 = sub nsw i32 %.0210341, %spec.select275
  %139 = icmp sgt i32 %spec.select275, 0
  br i1 %139, label %.lr.ph337.preheader, label %._crit_edge338

.lr.ph337.preheader:                              ; preds = %.lr.ph344
  %.0342407 = ptrtoint ptr %.0342 to i64
  %140 = getelementptr inbounds [2 x ptr], ptr %15, i64 0, i64 %indvars.iv367
  %141 = load ptr, ptr %140, align 8, !tbaa !9
  %142 = add nsw i32 %spec.select275, -1
  %143 = zext nneg i32 %142 to i64
  %scevgep365 = getelementptr i8, ptr %.0342, i64 %143
  %144 = zext nneg i32 %spec.select275 to i64
  %min.iters.check411 = icmp ult i32 %spec.select275, 32
  %145 = ptrtoint ptr %141 to i64
  %146 = sub i64 %.0342407, %145
  %diff.check408 = icmp ult i64 %146, 32
  %or.cond432 = select i1 %min.iters.check411, i1 true, i1 %diff.check408
  br i1 %or.cond432, label %.lr.ph337.preheader433, label %vector.ph412

vector.ph412:                                     ; preds = %.lr.ph337.preheader
  %n.vec414 = and i64 %144, 2147483616
  %ind.end415 = getelementptr i8, ptr %.0342, i64 %n.vec414
  %ind.end417 = getelementptr i8, ptr %141, i64 %n.vec414
  br label %vector.body419

vector.body419:                                   ; preds = %vector.body419, %vector.ph412
  %index420 = phi i64 [ 0, %vector.ph412 ], [ %index.next427, %vector.body419 ]
  %next.gep421 = getelementptr i8, ptr %.0342, i64 %index420
  %next.gep423 = getelementptr i8, ptr %141, i64 %index420
  %147 = getelementptr i8, ptr %next.gep423, i64 16
  %wide.load425 = load <16 x i8>, ptr %next.gep423, align 1, !tbaa !11
  %wide.load426 = load <16 x i8>, ptr %147, align 1, !tbaa !11
  %148 = getelementptr i8, ptr %next.gep421, i64 16
  store <16 x i8> %wide.load425, ptr %next.gep421, align 1, !tbaa !11
  store <16 x i8> %wide.load426, ptr %148, align 1, !tbaa !11
  %index.next427 = add nuw i64 %index420, 32
  %149 = icmp eq i64 %index.next427, %n.vec414
  br i1 %149, label %middle.block409, label %vector.body419, !llvm.loop !20

middle.block409:                                  ; preds = %vector.body419
  %cmp.n428 = icmp eq i64 %n.vec414, %144
  br i1 %cmp.n428, label %._crit_edge338.loopexit, label %.lr.ph337.preheader433

.lr.ph337.preheader433:                           ; preds = %middle.block409, %.lr.ph337.preheader
  %.1335.ph = phi ptr [ %.0342, %.lr.ph337.preheader ], [ %ind.end415, %middle.block409 ]
  %.0209334.ph = phi ptr [ %141, %.lr.ph337.preheader ], [ %ind.end417, %middle.block409 ]
  br label %.lr.ph337

.lr.ph337:                                        ; preds = %.lr.ph337.preheader433, %.lr.ph337
  %.1335 = phi ptr [ %152, %.lr.ph337 ], [ %.1335.ph, %.lr.ph337.preheader433 ]
  %.0209334 = phi ptr [ %150, %.lr.ph337 ], [ %.0209334.ph, %.lr.ph337.preheader433 ]
  %150 = getelementptr inbounds i8, ptr %.0209334, i64 1
  %151 = load i8, ptr %.0209334, align 1, !tbaa !11
  %152 = getelementptr inbounds i8, ptr %.1335, i64 1
  store i8 %151, ptr %.1335, align 1, !tbaa !11
  %exitcond366.not = icmp eq ptr %.1335, %scevgep365
  br i1 %exitcond366.not, label %._crit_edge338.loopexit, label %.lr.ph337, !llvm.loop !21

._crit_edge338.loopexit:                          ; preds = %.lr.ph337, %middle.block409
  %.lcssa = phi ptr [ %ind.end415, %middle.block409 ], [ %152, %.lr.ph337 ]
  %.pre374 = load i32, ptr @c__2, align 4, !tbaa !5
  br label %._crit_edge338

._crit_edge338:                                   ; preds = %._crit_edge338.loopexit, %.lr.ph344
  %153 = phi i32 [ %135, %.lr.ph344 ], [ %.pre374, %._crit_edge338.loopexit ]
  %.1.lcssa = phi ptr [ %.0342, %.lr.ph344 ], [ %.lcssa, %._crit_edge338.loopexit ]
  %indvars.iv.next368 = add nuw nsw i64 %indvars.iv367, 1
  %154 = sext i32 %153 to i64
  %155 = icmp slt i64 %indvars.iv.next368, %154
  br i1 %155, label %.lr.ph344, label %.preheader, !llvm.loop !22

._crit_edge350:                                   ; preds = %.lr.ph349.preheader, %.preheader
  %156 = call i32 @ilaenv_(ptr noundef nonnull @c__2, ptr noundef nonnull @.str.4, ptr noundef nonnull %18, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 2) #5
  %157 = call i32 @llvm.smax.i32(i32 %156, i32 2)
  %158 = icmp slt i32 %128, %157
  br i1 %158, label %.thread299, label %._crit_edge350..thread295_crit_edge

._crit_edge350..thread295_crit_edge:              ; preds = %._crit_edge350
  %.pre375 = load i32, ptr %4, align 4, !tbaa !5
  br label %.thread295

.thread295:                                       ; preds = %._crit_edge350..thread295_crit_edge, %118, %121
  %159 = phi i32 [ %.pre375, %._crit_edge350..thread295_crit_edge ], [ %119, %121 ], [ %119, %118 ]
  %.2230298 = phi i32 [ %128, %._crit_edge350..thread295_crit_edge ], [ %.0228313, %121 ], [ %.0228313, %118 ]
  %.fr266 = freeze i32 %159
  %.not265 = icmp slt i32 %.2230298, %.fr266
  br i1 %.not265, label %160, label %.thread299

.thread299:                                       ; preds = %116, %.thread295, %._crit_edge350
  call void @sormr3_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %19) #5
  br label %.loopexit

160:                                              ; preds = %.thread295
  %161 = mul nsw i32 %.2230298, %.0226282
  %162 = icmp ne i32 %33, 0
  %or.cond276 = xor i1 %.not, %162
  br i1 %or.cond276, label %168, label %163

163:                                              ; preds = %160
  %164 = add nsw i32 %.fr266, -1
  %165 = srem i32 %164, %.2230298
  %166 = sub i32 %.fr266, %165
  %167 = sub nsw i32 0, %.2230298
  br label %168

168:                                              ; preds = %160, %163
  %.0240 = phi i32 [ %166, %163 ], [ 1, %160 ]
  %169 = phi i32 [ 1, %163 ], [ %.fr266, %160 ]
  %.0238 = phi i32 [ %167, %163 ], [ %.2230298, %160 ]
  br i1 %.not, label %170, label %172

170:                                              ; preds = %168
  %171 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %171, ptr %22, align 4, !tbaa !5
  br label %174

172:                                              ; preds = %168
  %173 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %173, ptr %21, align 4, !tbaa !5
  br label %174

174:                                              ; preds = %172, %170
  %.sink394 = phi ptr [ %3, %172 ], [ %2, %170 ]
  %175 = load i32, ptr %.sink394, align 4, !tbaa !5
  %176 = load i32, ptr %5, align 4, !tbaa !5
  %. = select i1 %162, i8 84, i8 78
  store i8 %., ptr %24, align 1, !tbaa !11
  %177 = icmp slt i32 %.0238, 0
  %178 = icmp sge i32 %.0240, %169
  %179 = icmp sle i32 %.0240, %169
  %.in352 = select i1 %177, i1 %178, i1 %179
  br i1 %.in352, label %.lr.ph358, label %.loopexit

.lr.ph358:                                        ; preds = %174
  %180 = sub nsw i32 %175, %176
  %.0234 = add nsw i32 %180, 1
  %181 = mul nsw i32 %.0234, %25
  %182 = sext i32 %161 to i64
  %gep = getelementptr float, ptr %11, i64 %182
  %183 = sext i32 %.0240 to i64
  %184 = sext i32 %.0238 to i64
  %185 = sext i32 %181 to i64
  %invariant.gep = getelementptr float, ptr %27, i64 %185
  %186 = sext i32 %169 to i64
  br label %187

187:                                              ; preds = %.lr.ph358, %199
  %indvars.iv370 = phi i64 [ %183, %.lr.ph358 ], [ %indvars.iv.next371, %199 ]
  %.1232355 = phi i32 [ 1, %.lr.ph358 ], [ %.2233, %199 ]
  %.1236354 = phi i32 [ 1, %.lr.ph358 ], [ %.2237, %199 ]
  %188 = load i32, ptr %4, align 4, !tbaa !5
  %189 = trunc nsw i64 %indvars.iv370 to i32
  %reass.sub = sub i32 %188, %189
  %190 = add i32 %reass.sub, 1
  %191 = call i32 @llvm.smin.i32(i32 %.2230298, i32 %190)
  store i32 %191, ptr %20, align 4, !tbaa !5
  %gep391 = getelementptr float, ptr %invariant.gep, i64 %indvars.iv370
  %192 = getelementptr inbounds float, ptr %28, i64 %indvars.iv370
  call void @slarzt_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %5, ptr noundef nonnull %20, ptr noundef %gep391, ptr noundef nonnull %7, ptr noundef nonnull %192, ptr noundef %gep, ptr noundef nonnull @c__65) #5
  br i1 %.not, label %193, label %196

193:                                              ; preds = %187
  %194 = load i32, ptr %2, align 4, !tbaa !5
  %reass.sub360 = sub i32 %194, %189
  %195 = add i32 %reass.sub360, 1
  store i32 %195, ptr %21, align 4, !tbaa !5
  br label %199

196:                                              ; preds = %187
  %197 = load i32, ptr %3, align 4, !tbaa !5
  %reass.sub359 = sub i32 %197, %189
  %198 = add i32 %reass.sub359, 1
  store i32 %198, ptr %22, align 4, !tbaa !5
  br label %199

199:                                              ; preds = %196, %193
  %.2237 = phi i32 [ %189, %193 ], [ %.1236354, %196 ]
  %.2233 = phi i32 [ %.1232355, %193 ], [ %189, %196 ]
  %200 = mul nsw i32 %.2233, %29
  %201 = add nsw i32 %200, %.2237
  %202 = sext i32 %201 to i64
  %203 = getelementptr inbounds float, ptr %31, i64 %202
  call void @slarzb_(ptr noundef %0, ptr noundef nonnull %24, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull %20, ptr noundef nonnull %5, ptr noundef %gep391, ptr noundef nonnull %7, ptr noundef %gep, ptr noundef nonnull @c__65, ptr noundef %203, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %23) #5
  %indvars.iv.next371 = add nsw i64 %indvars.iv370, %184
  %204 = icmp sge i64 %indvars.iv.next371, %186
  %205 = icmp sle i64 %indvars.iv.next371, %186
  %.in = select i1 %177, i1 %204, i1 %205
  br i1 %.in, label %187, label %.loopexit, !llvm.loop !23

.loopexit:                                        ; preds = %199, %174, %.thread299
  %206 = sitofp i32 %.0224314 to float
  store float %206, ptr %11, align 4, !tbaa !18
  br label %207

207:                                              ; preds = %110, %113, %109, %.loopexit, %.thread289
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #5
  ret void
}

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

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

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

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

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smin.i32(i32, i32) #3

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: write) }
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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = distinct !{!12, !13, !14, !15}
!13 = !{!"llvm.loop.mustprogress"}
!14 = !{!"llvm.loop.isvectorized", i32 1}
!15 = !{!"llvm.loop.unroll.runtime.disable"}
!16 = distinct !{!16, !13, !14}
!17 = distinct !{!17, !13}
!18 = !{!19, !19, i64 0}
!19 = !{!"float", !7, i64 0}
!20 = distinct !{!20, !13, !14, !15}
!21 = distinct !{!21, !13, !14}
!22 = distinct !{!22, !13}
!23 = distinct !{!23, !13}


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