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

; 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"

@c__1 = external hidden global i32, align 4
@.str = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c_n1 = external hidden global i32, align 4
@.str.2 = external hidden unnamed_addr constant [7 x i8], align 1
@c__3 = external hidden global i32, align 4
@c__2 = external hidden global i32, align 4
@.str.3 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [13 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @dtzrzf_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7) #0 {
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %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 i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %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 i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  store ptr %0, ptr %9, align 8, !tbaa !5
  store ptr %1, ptr %10, align 8, !tbaa !5
  store ptr %2, ptr %11, align 8, !tbaa !5
  store ptr %3, ptr %12, align 8, !tbaa !5
  store ptr %4, ptr %13, align 8, !tbaa !5
  store ptr %5, ptr %14, align 8, !tbaa !5
  store ptr %6, ptr %15, align 8, !tbaa !5
  store ptr %7, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #3
  call void @llvm.lifetime.start.p0(i64 4, 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 4, ptr %36) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #3
  %39 = load ptr, ptr %12, align 8, !tbaa !5
  %40 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %40, ptr %17, align 4, !tbaa !9
  %41 = load i32, ptr %17, align 4, !tbaa !9
  %42 = mul nsw i32 %41, 1
  %43 = add nsw i32 1, %42
  store i32 %43, ptr %18, align 4, !tbaa !9
  %44 = load i32, ptr %18, align 4, !tbaa !9
  %45 = load ptr, ptr %11, align 8, !tbaa !5
  %46 = sext i32 %44 to i64
  %47 = sub i64 0, %46
  %48 = getelementptr inbounds double, ptr %45, i64 %47
  store ptr %48, ptr %11, align 8, !tbaa !5
  %49 = load ptr, ptr %13, align 8, !tbaa !5
  %50 = getelementptr inbounds double, ptr %49, i32 -1
  store ptr %50, ptr %13, align 8, !tbaa !5
  %51 = load ptr, ptr %14, align 8, !tbaa !5
  %52 = getelementptr inbounds double, ptr %51, i32 -1
  store ptr %52, ptr %14, align 8, !tbaa !5
  %53 = load ptr, ptr %16, align 8, !tbaa !5
  store i32 0, ptr %53, align 4, !tbaa !9
  %54 = load ptr, ptr %15, align 8, !tbaa !5
  %55 = load i32, ptr %54, align 4, !tbaa !9
  %56 = icmp eq i32 %55, -1
  %57 = zext i1 %56 to i32
  store i32 %57, ptr %36, align 4, !tbaa !9
  %58 = load ptr, ptr %9, align 8, !tbaa !5
  %59 = load i32, ptr %58, align 4, !tbaa !9
  %60 = icmp slt i32 %59, 0
  br i1 %60, label %61, label %63

61:                                               ; preds = %8
  %62 = load ptr, ptr %16, align 8, !tbaa !5
  store i32 -1, ptr %62, align 4, !tbaa !9
  br label %88

63:                                               ; preds = %8
  %64 = load ptr, ptr %10, align 8, !tbaa !5
  %65 = load i32, ptr %64, align 4, !tbaa !9
  %66 = load ptr, ptr %9, align 8, !tbaa !5
  %67 = load i32, ptr %66, align 4, !tbaa !9
  %68 = icmp slt i32 %65, %67
  br i1 %68, label %69, label %71

69:                                               ; preds = %63
  %70 = load ptr, ptr %16, align 8, !tbaa !5
  store i32 -2, ptr %70, align 4, !tbaa !9
  br label %87

71:                                               ; preds = %63
  %72 = load ptr, ptr %12, align 8, !tbaa !5
  %73 = load i32, ptr %72, align 4, !tbaa !9
  %74 = load ptr, ptr %9, align 8, !tbaa !5
  %75 = load i32, ptr %74, align 4, !tbaa !9
  %76 = icmp sge i32 1, %75
  br i1 %76, label %77, label %78

77:                                               ; preds = %71
  br label %81

78:                                               ; preds = %71
  %79 = load ptr, ptr %9, align 8, !tbaa !5
  %80 = load i32, ptr %79, align 4, !tbaa !9
  br label %81

81:                                               ; preds = %78, %77
  %82 = phi i32 [ 1, %77 ], [ %80, %78 ]
  %83 = icmp slt i32 %73, %82
  br i1 %83, label %84, label %86

84:                                               ; preds = %81
  %85 = load ptr, ptr %16, align 8, !tbaa !5
  store i32 -4, ptr %85, align 4, !tbaa !9
  br label %86

86:                                               ; preds = %84, %81
  br label %87

87:                                               ; preds = %86, %69
  br label %88

88:                                               ; preds = %87, %61
  %89 = load ptr, ptr %16, align 8, !tbaa !5
  %90 = load i32, ptr %89, align 4, !tbaa !9
  %91 = icmp eq i32 %90, 0
  br i1 %91, label %92, label %135

92:                                               ; preds = %88
  %93 = load ptr, ptr %9, align 8, !tbaa !5
  %94 = load i32, ptr %93, align 4, !tbaa !9
  %95 = icmp eq i32 %94, 0
  br i1 %95, label %102, label %96

96:                                               ; preds = %92
  %97 = load ptr, ptr %9, align 8, !tbaa !5
  %98 = load i32, ptr %97, align 4, !tbaa !9
  %99 = load ptr, ptr %10, align 8, !tbaa !5
  %100 = load i32, ptr %99, align 4, !tbaa !9
  %101 = icmp eq i32 %98, %100
  br i1 %101, label %102, label %103

102:                                              ; preds = %96, %92
  store i32 1, ptr %35, align 4, !tbaa !9
  store i32 1, ptr %33, align 4, !tbaa !9
  br label %120

103:                                              ; preds = %96
  %104 = load ptr, ptr %9, align 8, !tbaa !5
  %105 = load ptr, ptr %10, align 8, !tbaa !5
  %106 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %104, ptr noundef %105, ptr noundef @c_n1, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  store i32 %106, ptr %28, align 4, !tbaa !9
  %107 = load ptr, ptr %9, align 8, !tbaa !5
  %108 = load i32, ptr %107, align 4, !tbaa !9
  %109 = load i32, ptr %28, align 4, !tbaa !9
  %110 = mul nsw i32 %108, %109
  store i32 %110, ptr %35, align 4, !tbaa !9
  %111 = load ptr, ptr %9, 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 = %103
  br label %118

115:                                              ; preds = %103
  %116 = load ptr, ptr %9, 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 %33, align 4, !tbaa !9
  br label %120

120:                                              ; preds = %118, %102
  %121 = load i32, ptr %35, align 4, !tbaa !9
  %122 = sitofp i32 %121 to double
  %123 = load ptr, ptr %14, align 8, !tbaa !5
  %124 = getelementptr inbounds double, ptr %123, i64 1
  store double %122, ptr %124, align 8, !tbaa !11
  %125 = load ptr, ptr %15, align 8, !tbaa !5
  %126 = load i32, ptr %125, align 4, !tbaa !9
  %127 = load i32, ptr %33, align 4, !tbaa !9
  %128 = icmp slt i32 %126, %127
  br i1 %128, label %129, label %134

129:                                              ; preds = %120
  %130 = load i32, ptr %36, align 4, !tbaa !9
  %131 = icmp ne i32 %130, 0
  br i1 %131, label %134, label %132

132:                                              ; preds = %129
  %133 = load ptr, ptr %16, align 8, !tbaa !5
  store i32 -7, ptr %133, align 4, !tbaa !9
  br label %134

134:                                              ; preds = %132, %129, %120
  br label %135

135:                                              ; preds = %134, %88
  %136 = load ptr, ptr %16, align 8, !tbaa !5
  %137 = load i32, ptr %136, align 4, !tbaa !9
  %138 = icmp ne i32 %137, 0
  br i1 %138, label %139, label %144

139:                                              ; preds = %135
  %140 = load ptr, ptr %16, align 8, !tbaa !5
  %141 = load i32, ptr %140, align 4, !tbaa !9
  %142 = sub nsw i32 0, %141
  store i32 %142, ptr %19, align 4, !tbaa !9
  %143 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef %19, i32 noundef 6)
  store i32 1, ptr %38, align 4
  br label %451

144:                                              ; preds = %135
  %145 = load i32, ptr %36, align 4, !tbaa !9
  %146 = icmp ne i32 %145, 0
  br i1 %146, label %147, label %148

147:                                              ; preds = %144
  store i32 1, ptr %38, align 4
  br label %451

148:                                              ; preds = %144
  br label %149

149:                                              ; preds = %148
  %150 = load ptr, ptr %9, align 8, !tbaa !5
  %151 = load i32, ptr %150, align 4, !tbaa !9
  %152 = icmp eq i32 %151, 0
  br i1 %152, label %153, label %154

153:                                              ; preds = %149
  store i32 1, ptr %38, align 4
  br label %451

154:                                              ; preds = %149
  %155 = load ptr, ptr %9, align 8, !tbaa !5
  %156 = load i32, ptr %155, align 4, !tbaa !9
  %157 = load ptr, ptr %10, align 8, !tbaa !5
  %158 = load i32, ptr %157, align 4, !tbaa !9
  %159 = icmp eq i32 %156, %158
  br i1 %159, label %160, label %176

160:                                              ; preds = %154
  %161 = load ptr, ptr %10, align 8, !tbaa !5
  %162 = load i32, ptr %161, align 4, !tbaa !9
  store i32 %162, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %24, align 4, !tbaa !9
  br label %163

163:                                              ; preds = %172, %160
  %164 = load i32, ptr %24, align 4, !tbaa !9
  %165 = load i32, ptr %19, align 4, !tbaa !9
  %166 = icmp sle i32 %164, %165
  br i1 %166, label %167, label %175

167:                                              ; preds = %163
  %168 = load ptr, ptr %13, align 8, !tbaa !5
  %169 = load i32, ptr %24, align 4, !tbaa !9
  %170 = sext i32 %169 to i64
  %171 = getelementptr inbounds double, ptr %168, i64 %170
  store double 0.000000e+00, ptr %171, align 8, !tbaa !11
  br label %172

172:                                              ; preds = %167
  %173 = load i32, ptr %24, align 4, !tbaa !9
  %174 = add nsw i32 %173, 1
  store i32 %174, ptr %24, align 4, !tbaa !9
  br label %163, !llvm.loop !13

175:                                              ; preds = %163
  store i32 1, ptr %38, align 4
  br label %451

176:                                              ; preds = %154
  br label %177

177:                                              ; preds = %176
  store i32 2, ptr %25, align 4, !tbaa !9
  store i32 1, ptr %32, align 4, !tbaa !9
  %178 = load ptr, ptr %9, align 8, !tbaa !5
  %179 = load i32, ptr %178, align 4, !tbaa !9
  store i32 %179, ptr %37, align 4, !tbaa !9
  %180 = load i32, ptr %28, align 4, !tbaa !9
  %181 = icmp sgt i32 %180, 1
  br i1 %181, label %182, label %233

182:                                              ; preds = %177
  %183 = load i32, ptr %28, align 4, !tbaa !9
  %184 = load ptr, ptr %9, align 8, !tbaa !5
  %185 = load i32, ptr %184, align 4, !tbaa !9
  %186 = icmp slt i32 %183, %185
  br i1 %186, label %187, label %233

187:                                              ; preds = %182
  store i32 0, ptr %19, align 4, !tbaa !9
  %188 = load ptr, ptr %9, align 8, !tbaa !5
  %189 = load ptr, ptr %10, align 8, !tbaa !5
  %190 = call i32 @ilaenv_(ptr noundef @c__3, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %188, ptr noundef %189, ptr noundef @c_n1, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  store i32 %190, ptr %20, align 4, !tbaa !9
  %191 = load i32, ptr %19, align 4, !tbaa !9
  %192 = load i32, ptr %20, align 4, !tbaa !9
  %193 = icmp sge i32 %191, %192
  br i1 %193, label %194, label %196

194:                                              ; preds = %187
  %195 = load i32, ptr %19, align 4, !tbaa !9
  br label %198

196:                                              ; preds = %187
  %197 = load i32, ptr %20, align 4, !tbaa !9
  br label %198

198:                                              ; preds = %196, %194
  %199 = phi i32 [ %195, %194 ], [ %197, %196 ]
  store i32 %199, ptr %32, align 4, !tbaa !9
  %200 = load i32, ptr %32, align 4, !tbaa !9
  %201 = load ptr, ptr %9, align 8, !tbaa !5
  %202 = load i32, ptr %201, align 4, !tbaa !9
  %203 = icmp slt i32 %200, %202
  br i1 %203, label %204, label %232

204:                                              ; preds = %198
  %205 = load ptr, ptr %9, align 8, !tbaa !5
  %206 = load i32, ptr %205, align 4, !tbaa !9
  store i32 %206, ptr %34, align 4, !tbaa !9
  %207 = load i32, ptr %34, align 4, !tbaa !9
  %208 = load i32, ptr %28, align 4, !tbaa !9
  %209 = mul nsw i32 %207, %208
  store i32 %209, ptr %37, align 4, !tbaa !9
  %210 = load ptr, ptr %15, align 8, !tbaa !5
  %211 = load i32, ptr %210, align 4, !tbaa !9
  %212 = load i32, ptr %37, align 4, !tbaa !9
  %213 = icmp slt i32 %211, %212
  br i1 %213, label %214, label %231

214:                                              ; preds = %204
  %215 = load ptr, ptr %15, align 8, !tbaa !5
  %216 = load i32, ptr %215, align 4, !tbaa !9
  %217 = load i32, ptr %34, align 4, !tbaa !9
  %218 = sdiv i32 %216, %217
  store i32 %218, ptr %28, align 4, !tbaa !9
  store i32 2, ptr %19, align 4, !tbaa !9
  %219 = load ptr, ptr %9, align 8, !tbaa !5
  %220 = load ptr, ptr %10, align 8, !tbaa !5
  %221 = call i32 @ilaenv_(ptr noundef @c__2, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %219, ptr noundef %220, ptr noundef @c_n1, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  store i32 %221, ptr %20, align 4, !tbaa !9
  %222 = load i32, ptr %19, align 4, !tbaa !9
  %223 = load i32, ptr %20, align 4, !tbaa !9
  %224 = icmp sge i32 %222, %223
  br i1 %224, label %225, label %227

225:                                              ; preds = %214
  %226 = load i32, ptr %19, align 4, !tbaa !9
  br label %229

227:                                              ; preds = %214
  %228 = load i32, ptr %20, align 4, !tbaa !9
  br label %229

229:                                              ; preds = %227, %225
  %230 = phi i32 [ %226, %225 ], [ %228, %227 ]
  store i32 %230, ptr %25, align 4, !tbaa !9
  br label %231

231:                                              ; preds = %229, %204
  br label %232

232:                                              ; preds = %231, %198
  br label %233

233:                                              ; preds = %232, %182, %177
  %234 = load i32, ptr %28, align 4, !tbaa !9
  %235 = load i32, ptr %25, align 4, !tbaa !9
  %236 = icmp sge i32 %234, %235
  br i1 %236, label %237, label %424

237:                                              ; preds = %233
  %238 = load i32, ptr %28, align 4, !tbaa !9
  %239 = load ptr, ptr %9, align 8, !tbaa !5
  %240 = load i32, ptr %239, align 4, !tbaa !9
  %241 = icmp slt i32 %238, %240
  br i1 %241, label %242, label %424

242:                                              ; preds = %237
  %243 = load i32, ptr %32, align 4, !tbaa !9
  %244 = load ptr, ptr %9, align 8, !tbaa !5
  %245 = load i32, ptr %244, align 4, !tbaa !9
  %246 = icmp slt i32 %243, %245
  br i1 %246, label %247, label %424

247:                                              ; preds = %242
  %248 = load ptr, ptr %9, align 8, !tbaa !5
  %249 = load i32, ptr %248, align 4, !tbaa !9
  %250 = add nsw i32 %249, 1
  store i32 %250, ptr %19, align 4, !tbaa !9
  %251 = load i32, ptr %19, align 4, !tbaa !9
  %252 = load ptr, ptr %10, align 8, !tbaa !5
  %253 = load i32, ptr %252, align 4, !tbaa !9
  %254 = icmp sle i32 %251, %253
  br i1 %254, label %255, label %257

255:                                              ; preds = %247
  %256 = load i32, ptr %19, align 4, !tbaa !9
  br label %260

257:                                              ; preds = %247
  %258 = load ptr, ptr %10, align 8, !tbaa !5
  %259 = load i32, ptr %258, align 4, !tbaa !9
  br label %260

260:                                              ; preds = %257, %255
  %261 = phi i32 [ %256, %255 ], [ %259, %257 ]
  store i32 %261, ptr %26, align 4, !tbaa !9
  %262 = load ptr, ptr %9, align 8, !tbaa !5
  %263 = load i32, ptr %262, align 4, !tbaa !9
  %264 = load i32, ptr %32, align 4, !tbaa !9
  %265 = sub nsw i32 %263, %264
  %266 = sub nsw i32 %265, 1
  %267 = load i32, ptr %28, align 4, !tbaa !9
  %268 = sdiv i32 %266, %267
  %269 = load i32, ptr %28, align 4, !tbaa !9
  %270 = mul nsw i32 %268, %269
  store i32 %270, ptr %29, align 4, !tbaa !9
  %271 = load ptr, ptr %9, align 8, !tbaa !5
  %272 = load i32, ptr %271, align 4, !tbaa !9
  store i32 %272, ptr %19, align 4, !tbaa !9
  %273 = load i32, ptr %29, align 4, !tbaa !9
  %274 = load i32, ptr %28, align 4, !tbaa !9
  %275 = add nsw i32 %273, %274
  store i32 %275, ptr %20, align 4, !tbaa !9
  %276 = load i32, ptr %19, align 4, !tbaa !9
  %277 = load i32, ptr %20, align 4, !tbaa !9
  %278 = icmp sle i32 %276, %277
  br i1 %278, label %279, label %281

279:                                              ; preds = %260
  %280 = load i32, ptr %19, align 4, !tbaa !9
  br label %283

281:                                              ; preds = %260
  %282 = load i32, ptr %20, align 4, !tbaa !9
  br label %283

283:                                              ; preds = %281, %279
  %284 = phi i32 [ %280, %279 ], [ %282, %281 ]
  store i32 %284, ptr %30, align 4, !tbaa !9
  %285 = load ptr, ptr %9, align 8, !tbaa !5
  %286 = load i32, ptr %285, align 4, !tbaa !9
  %287 = load i32, ptr %30, align 4, !tbaa !9
  %288 = sub nsw i32 %286, %287
  %289 = add nsw i32 %288, 1
  store i32 %289, ptr %19, align 4, !tbaa !9
  %290 = load i32, ptr %28, align 4, !tbaa !9
  %291 = sub nsw i32 0, %290
  store i32 %291, ptr %20, align 4, !tbaa !9
  %292 = load ptr, ptr %9, align 8, !tbaa !5
  %293 = load i32, ptr %292, align 4, !tbaa !9
  %294 = load i32, ptr %30, align 4, !tbaa !9
  %295 = sub nsw i32 %293, %294
  %296 = load i32, ptr %29, align 4, !tbaa !9
  %297 = add nsw i32 %295, %296
  %298 = add nsw i32 %297, 1
  store i32 %298, ptr %24, align 4, !tbaa !9
  br label %299

299:                                              ; preds = %415, %283
  %300 = load i32, ptr %20, align 4, !tbaa !9
  %301 = icmp slt i32 %300, 0
  br i1 %301, label %302, label %307

302:                                              ; preds = %299
  %303 = load i32, ptr %24, align 4, !tbaa !9
  %304 = load i32, ptr %19, align 4, !tbaa !9
  %305 = icmp sge i32 %303, %304
  %306 = zext i1 %305 to i32
  br label %312

307:                                              ; preds = %299
  %308 = load i32, ptr %24, align 4, !tbaa !9
  %309 = load i32, ptr %19, align 4, !tbaa !9
  %310 = icmp sle i32 %308, %309
  %311 = zext i1 %310 to i32
  br label %312

312:                                              ; preds = %307, %302
  %313 = phi i32 [ %306, %302 ], [ %311, %307 ]
  %314 = icmp ne i32 %313, 0
  br i1 %314, label %315, label %419

315:                                              ; preds = %312
  %316 = load ptr, ptr %9, align 8, !tbaa !5
  %317 = load i32, ptr %316, align 4, !tbaa !9
  %318 = load i32, ptr %24, align 4, !tbaa !9
  %319 = sub nsw i32 %317, %318
  %320 = add nsw i32 %319, 1
  store i32 %320, ptr %21, align 4, !tbaa !9
  %321 = load i32, ptr %21, align 4, !tbaa !9
  %322 = load i32, ptr %28, align 4, !tbaa !9
  %323 = icmp sle i32 %321, %322
  br i1 %323, label %324, label %326

324:                                              ; preds = %315
  %325 = load i32, ptr %21, align 4, !tbaa !9
  br label %328

326:                                              ; preds = %315
  %327 = load i32, ptr %28, align 4, !tbaa !9
  br label %328

328:                                              ; preds = %326, %324
  %329 = phi i32 [ %325, %324 ], [ %327, %326 ]
  store i32 %329, ptr %27, align 4, !tbaa !9
  %330 = load ptr, ptr %10, align 8, !tbaa !5
  %331 = load i32, ptr %330, align 4, !tbaa !9
  %332 = load i32, ptr %24, align 4, !tbaa !9
  %333 = sub nsw i32 %331, %332
  %334 = add nsw i32 %333, 1
  store i32 %334, ptr %21, align 4, !tbaa !9
  %335 = load ptr, ptr %10, align 8, !tbaa !5
  %336 = load i32, ptr %335, align 4, !tbaa !9
  %337 = load ptr, ptr %9, align 8, !tbaa !5
  %338 = load i32, ptr %337, align 4, !tbaa !9
  %339 = sub nsw i32 %336, %338
  store i32 %339, ptr %22, align 4, !tbaa !9
  %340 = load ptr, ptr %11, align 8, !tbaa !5
  %341 = load i32, ptr %24, align 4, !tbaa !9
  %342 = load i32, ptr %24, align 4, !tbaa !9
  %343 = load i32, ptr %17, align 4, !tbaa !9
  %344 = mul nsw i32 %342, %343
  %345 = add nsw i32 %341, %344
  %346 = sext i32 %345 to i64
  %347 = getelementptr inbounds double, ptr %340, i64 %346
  %348 = load ptr, ptr %12, align 8, !tbaa !5
  %349 = load ptr, ptr %13, align 8, !tbaa !5
  %350 = load i32, ptr %24, align 4, !tbaa !9
  %351 = sext i32 %350 to i64
  %352 = getelementptr inbounds double, ptr %349, i64 %351
  %353 = load ptr, ptr %14, align 8, !tbaa !5
  %354 = getelementptr inbounds double, ptr %353, i64 1
  call void @dlatrz_(ptr noundef %27, ptr noundef %21, ptr noundef %22, ptr noundef %347, ptr noundef %348, ptr noundef %352, ptr noundef %354)
  %355 = load i32, ptr %24, align 4, !tbaa !9
  %356 = icmp sgt i32 %355, 1
  br i1 %356, label %357, label %414

357:                                              ; preds = %328
  %358 = load ptr, ptr %10, align 8, !tbaa !5
  %359 = load i32, ptr %358, align 4, !tbaa !9
  %360 = load ptr, ptr %9, align 8, !tbaa !5
  %361 = load i32, ptr %360, align 4, !tbaa !9
  %362 = sub nsw i32 %359, %361
  store i32 %362, ptr %21, align 4, !tbaa !9
  %363 = load ptr, ptr %11, align 8, !tbaa !5
  %364 = load i32, ptr %24, align 4, !tbaa !9
  %365 = load i32, ptr %26, align 4, !tbaa !9
  %366 = load i32, ptr %17, align 4, !tbaa !9
  %367 = mul nsw i32 %365, %366
  %368 = add nsw i32 %364, %367
  %369 = sext i32 %368 to i64
  %370 = getelementptr inbounds double, ptr %363, i64 %369
  %371 = load ptr, ptr %12, align 8, !tbaa !5
  %372 = load ptr, ptr %13, align 8, !tbaa !5
  %373 = load i32, ptr %24, align 4, !tbaa !9
  %374 = sext i32 %373 to i64
  %375 = getelementptr inbounds double, ptr %372, i64 %374
  %376 = load ptr, ptr %14, align 8, !tbaa !5
  %377 = getelementptr inbounds double, ptr %376, i64 1
  call void @dlarzt_(ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef %21, ptr noundef %27, ptr noundef %370, ptr noundef %371, ptr noundef %375, ptr noundef %377, ptr noundef %34)
  %378 = load i32, ptr %24, align 4, !tbaa !9
  %379 = sub nsw i32 %378, 1
  store i32 %379, ptr %21, align 4, !tbaa !9
  %380 = load ptr, ptr %10, align 8, !tbaa !5
  %381 = load i32, ptr %380, align 4, !tbaa !9
  %382 = load i32, ptr %24, align 4, !tbaa !9
  %383 = sub nsw i32 %381, %382
  %384 = add nsw i32 %383, 1
  store i32 %384, ptr %22, align 4, !tbaa !9
  %385 = load ptr, ptr %10, align 8, !tbaa !5
  %386 = load i32, ptr %385, align 4, !tbaa !9
  %387 = load ptr, ptr %9, align 8, !tbaa !5
  %388 = load i32, ptr %387, align 4, !tbaa !9
  %389 = sub nsw i32 %386, %388
  store i32 %389, ptr %23, align 4, !tbaa !9
  %390 = load ptr, ptr %11, align 8, !tbaa !5
  %391 = load i32, ptr %24, align 4, !tbaa !9
  %392 = load i32, ptr %26, align 4, !tbaa !9
  %393 = load i32, ptr %17, align 4, !tbaa !9
  %394 = mul nsw i32 %392, %393
  %395 = add nsw i32 %391, %394
  %396 = sext i32 %395 to i64
  %397 = getelementptr inbounds double, ptr %390, i64 %396
  %398 = load ptr, ptr %12, align 8, !tbaa !5
  %399 = load ptr, ptr %14, align 8, !tbaa !5
  %400 = getelementptr inbounds double, ptr %399, i64 1
  %401 = load ptr, ptr %11, align 8, !tbaa !5
  %402 = load i32, ptr %24, align 4, !tbaa !9
  %403 = load i32, ptr %17, align 4, !tbaa !9
  %404 = mul nsw i32 %402, %403
  %405 = add nsw i32 %404, 1
  %406 = sext i32 %405 to i64
  %407 = getelementptr inbounds double, ptr %401, i64 %406
  %408 = load ptr, ptr %12, align 8, !tbaa !5
  %409 = load ptr, ptr %14, align 8, !tbaa !5
  %410 = load i32, ptr %27, align 4, !tbaa !9
  %411 = add nsw i32 %410, 1
  %412 = sext i32 %411 to i64
  %413 = getelementptr inbounds double, ptr %409, i64 %412
  call void @dlarzb_(ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef %21, ptr noundef %22, ptr noundef %27, ptr noundef %23, ptr noundef %397, ptr noundef %398, ptr noundef %400, ptr noundef %34, ptr noundef %407, ptr noundef %408, ptr noundef %413, ptr noundef %34)
  br label %414

414:                                              ; preds = %357, %328
  br label %415

415:                                              ; preds = %414
  %416 = load i32, ptr %20, align 4, !tbaa !9
  %417 = load i32, ptr %24, align 4, !tbaa !9
  %418 = add nsw i32 %417, %416
  store i32 %418, ptr %24, align 4, !tbaa !9
  br label %299, !llvm.loop !15

419:                                              ; preds = %312
  %420 = load i32, ptr %24, align 4, !tbaa !9
  %421 = load i32, ptr %28, align 4, !tbaa !9
  %422 = add nsw i32 %420, %421
  %423 = sub nsw i32 %422, 1
  store i32 %423, ptr %31, align 4, !tbaa !9
  br label %427

424:                                              ; preds = %242, %237, %233
  %425 = load ptr, ptr %9, align 8, !tbaa !5
  %426 = load i32, ptr %425, align 4, !tbaa !9
  store i32 %426, ptr %31, align 4, !tbaa !9
  br label %427

427:                                              ; preds = %424, %419
  %428 = load i32, ptr %31, align 4, !tbaa !9
  %429 = icmp sgt i32 %428, 0
  br i1 %429, label %430, label %446

430:                                              ; preds = %427
  %431 = load ptr, ptr %10, align 8, !tbaa !5
  %432 = load i32, ptr %431, align 4, !tbaa !9
  %433 = load ptr, ptr %9, align 8, !tbaa !5
  %434 = load i32, ptr %433, align 4, !tbaa !9
  %435 = sub nsw i32 %432, %434
  store i32 %435, ptr %20, align 4, !tbaa !9
  %436 = load ptr, ptr %10, align 8, !tbaa !5
  %437 = load ptr, ptr %11, align 8, !tbaa !5
  %438 = load i32, ptr %18, align 4, !tbaa !9
  %439 = sext i32 %438 to i64
  %440 = getelementptr inbounds double, ptr %437, i64 %439
  %441 = load ptr, ptr %12, align 8, !tbaa !5
  %442 = load ptr, ptr %13, align 8, !tbaa !5
  %443 = getelementptr inbounds double, ptr %442, i64 1
  %444 = load ptr, ptr %14, align 8, !tbaa !5
  %445 = getelementptr inbounds double, ptr %444, i64 1
  call void @dlatrz_(ptr noundef %31, ptr noundef %436, ptr noundef %20, ptr noundef %440, ptr noundef %441, ptr noundef %443, ptr noundef %445)
  br label %446

446:                                              ; preds = %430, %427
  %447 = load i32, ptr %35, align 4, !tbaa !9
  %448 = sitofp i32 %447 to double
  %449 = load ptr, ptr %14, align 8, !tbaa !5
  %450 = getelementptr inbounds double, ptr %449, i64 1
  store double %448, ptr %450, align 8, !tbaa !11
  store i32 1, ptr %38, align 4
  br label %451

451:                                              ; preds = %446, %175, %153, %147, %139
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #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 @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 @dlatrz_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

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

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

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


; 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"

@c__1 = external hidden global i32, align 4
@.str = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c_n1 = external hidden global i32, align 4
@.str.2 = external hidden unnamed_addr constant [7 x i8], align 1
@c__3 = external hidden global i32, align 4
@c__2 = external hidden global i32, align 4
@.str.3 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [13 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @dtzrzf_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr nocapture noundef readonly %6, ptr nocapture noundef %7) local_unnamed_addr #0 {
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #5
  %17 = load i32, ptr %3, align 4, !tbaa !5
  %narrow = xor i32 %17, -1
  %18 = sext i32 %narrow to i64
  %19 = getelementptr inbounds double, ptr %2, i64 %18
  %20 = getelementptr inbounds i8, ptr %4, i64 -8
  store i32 0, ptr %7, align 4, !tbaa !5
  %21 = load i32, ptr %6, align 4, !tbaa !5
  %22 = icmp eq i32 %21, -1
  %23 = load i32, ptr %0, align 4, !tbaa !5
  %24 = icmp slt i32 %23, 0
  br i1 %24, label %.thread175.sink.split, label %25

25:                                               ; preds = %8
  %26 = load i32, ptr %1, align 4, !tbaa !5
  %27 = icmp slt i32 %26, %23
  br i1 %27, label %.thread175.sink.split, label %28

28:                                               ; preds = %25
  %29 = load i32, ptr %3, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %23, i32 1)
  %30 = icmp slt i32 %29, %spec.select
  br i1 %30, label %.thread175.sink.split, label %31

31:                                               ; preds = %28
  %32 = icmp eq i32 %23, 0
  br i1 %32, label %40, label %33

33:                                               ; preds = %31
  %34 = icmp eq i32 %23, %26
  br i1 %34, label %40, label %35

35:                                               ; preds = %33
  %36 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 1) #5
  %37 = load i32, ptr %0, align 4, !tbaa !5
  %38 = mul nsw i32 %37, %36
  %spec.select167 = tail call i32 @llvm.smax.i32(i32 %37, i32 1)
  %39 = sitofp i32 %38 to double
  %.pre = load i32, ptr %6, align 4, !tbaa !5
  br label %40

40:                                               ; preds = %31, %33, %35
  %.pre204206 = phi i32 [ %37, %35 ], [ %23, %33 ], [ 0, %31 ]
  %41 = phi i32 [ %.pre, %35 ], [ %21, %33 ], [ %21, %31 ]
  %.0142 = phi i32 [ %36, %35 ], [ undef, %33 ], [ undef, %31 ]
  %.0140 = phi i32 [ %spec.select167, %35 ], [ 1, %33 ], [ 1, %31 ]
  %.0 = phi double [ %39, %35 ], [ 1.000000e+00, %33 ], [ 1.000000e+00, %31 ]
  store double %.0, ptr %5, align 8, !tbaa !9
  %42 = icmp sge i32 %41, %.0140
  %or.cond = select i1 %42, i1 true, i1 %22
  br i1 %or.cond, label %.thread, label %.thread175.sink.split

.thread:                                          ; preds = %40
  %.pr171.pr = load i32, ptr %7, align 4, !tbaa !5
  %.not = icmp eq i32 %.pr171.pr, 0
  br i1 %.not, label %46, label %.thread175

.thread175.sink.split:                            ; preds = %40, %28, %25, %8
  %.sink = phi i32 [ -1, %8 ], [ -2, %25 ], [ -4, %28 ], [ -7, %40 ]
  store i32 %.sink, ptr %7, align 4, !tbaa !5
  br label %.thread175

.thread175:                                       ; preds = %.thread175.sink.split, %.thread
  %43 = phi i32 [ %.pr171.pr, %.thread ], [ %.sink, %.thread175.sink.split ]
  %44 = sub nsw i32 0, %43
  store i32 %44, ptr %9, align 4, !tbaa !5
  %45 = call i32 @xerbla_(ptr noundef nonnull @.str.2, ptr noundef nonnull %9, i32 noundef 6) #5
  br label %.loopexit

46:                                               ; preds = %.thread
  %47 = icmp eq i32 %.pre204206, 0
  %or.cond207 = select i1 %22, i1 true, i1 %47
  br i1 %or.cond207, label %.loopexit, label %48

48:                                               ; preds = %46
  %49 = load i32, ptr %1, align 4, !tbaa !5
  %50 = icmp eq i32 %.pre204206, %49
  br i1 %50, label %51, label %54

51:                                               ; preds = %48
  %.not166197 = icmp slt i32 %.pre204206, 1
  br i1 %.not166197, label %.loopexit, label %.lr.ph200.preheader

.lr.ph200.preheader:                              ; preds = %51
  %52 = zext nneg i32 %.pre204206 to i64
  %53 = shl nuw nsw i64 %52, 3
  tail call void @llvm.memset.p0.i64(ptr align 8 %4, i8 0, i64 %53, i1 false), !tbaa !9
  br label %.loopexit

54:                                               ; preds = %48
  %55 = icmp sgt i32 %.0142, 1
  %56 = icmp slt i32 %.0142, %.pre204206
  %or.cond168 = and i1 %55, %56
  br i1 %or.cond168, label %57, label %70

57:                                               ; preds = %54
  %58 = tail call i32 @ilaenv_(ptr noundef nonnull @c__3, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 1) #5
  %59 = tail call i32 @llvm.smax.i32(i32 %58, i32 0)
  %60 = load i32, ptr %0, align 4, !tbaa !5
  %61 = icmp slt i32 %59, %60
  br i1 %61, label %62, label %.thread180

62:                                               ; preds = %57
  store i32 %60, ptr %16, align 4, !tbaa !5
  %63 = mul nsw i32 %60, %.0142
  %64 = load i32, ptr %6, align 4, !tbaa !5
  %65 = icmp slt i32 %64, %63
  br i1 %65, label %66, label %.thread180

66:                                               ; preds = %62
  %67 = sdiv i32 %64, %60
  %68 = tail call i32 @ilaenv_(ptr noundef nonnull @c__2, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 1) #5
  %69 = tail call i32 @llvm.smax.i32(i32 %68, i32 2)
  %.pre204.pre = load i32, ptr %0, align 4, !tbaa !5
  br label %70

70:                                               ; preds = %66, %54
  %.pre204 = phi i32 [ %.pre204.pre, %66 ], [ %.pre204206, %54 ]
  %.0146 = phi i32 [ %69, %66 ], [ 2, %54 ]
  %.2 = phi i32 [ %67, %66 ], [ %.0142, %54 ]
  %.0141 = phi i32 [ %59, %66 ], [ 1, %54 ]
  %.not162 = icmp slt i32 %.2, %.0146
  br i1 %.not162, label %124, label %.thread180

.thread180:                                       ; preds = %70, %57, %62
  %71 = phi i32 [ %60, %62 ], [ %60, %57 ], [ %.pre204, %70 ]
  %.0141186 = phi i32 [ %59, %62 ], [ %59, %57 ], [ %.0141, %70 ]
  %.2185 = phi i32 [ %.0142, %62 ], [ %.0142, %57 ], [ %.2, %70 ]
  %72 = icmp slt i32 %.2185, %71
  %73 = icmp slt i32 %.0141186, %71
  %or.cond169 = and i1 %72, %73
  br i1 %or.cond169, label %74, label %124

74:                                               ; preds = %.thread180
  %75 = load i32, ptr %1, align 4, !tbaa !5
  %76 = xor i32 %.0141186, -1
  %77 = add nsw i32 %71, %76
  %.fr = freeze i32 %77
  %78 = srem i32 %.fr, %.2185
  %79 = sub nsw i32 %.fr, %78
  %80 = add nsw i32 %79, %.2185
  store i32 %80, ptr %10, align 4, !tbaa !5
  %81 = tail call i32 @llvm.smin.i32(i32 %71, i32 %80)
  %82 = sub nsw i32 %71, %81
  %83 = add i32 %82, 1
  %84 = add i32 %83, %79
  %invariant.gep = getelementptr i8, ptr %19, i64 8
  %.not208 = icmp slt i32 %84, %83
  br i1 %.not208, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %74
  %85 = add nuw nsw i32 %71, 1
  %.not163.not = icmp slt i32 %71, %75
  %. = select i1 %.not163.not, i32 %85, i32 %75
  %86 = mul nsw i32 %., %17
  %87 = icmp sgt i32 %.2185, 0
  br label %88

88:                                               ; preds = %.lr.ph, %118
  %.1145195 = phi i32 [ %84, %.lr.ph ], [ %119, %118 ]
  %89 = load i32, ptr %0, align 4, !tbaa !5
  %90 = sub nsw i32 %89, %.1145195
  %91 = add nsw i32 %90, 1
  %92 = call i32 @llvm.smin.i32(i32 %91, i32 %.2185)
  store i32 %92, ptr %14, align 4, !tbaa !5
  %93 = load i32, ptr %1, align 4, !tbaa !5
  %reass.sub = sub i32 %93, %.1145195
  %94 = add i32 %reass.sub, 1
  store i32 %94, ptr %11, align 4, !tbaa !5
  %95 = sub nsw i32 %93, %89
  store i32 %95, ptr %12, align 4, !tbaa !5
  %96 = mul nsw i32 %.1145195, %17
  %97 = add nsw i32 %96, %.1145195
  %98 = sext i32 %97 to i64
  %99 = getelementptr inbounds double, ptr %19, i64 %98
  %100 = sext i32 %.1145195 to i64
  %101 = getelementptr inbounds double, ptr %20, i64 %100
  call void @dlatrz_(ptr noundef nonnull %14, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef %99, ptr noundef nonnull %3, ptr noundef nonnull %101, ptr noundef nonnull %5) #5
  %102 = icmp sgt i32 %.1145195, 1
  br i1 %102, label %103, label %118

103:                                              ; preds = %88
  %104 = load i32, ptr %1, align 4, !tbaa !5
  %105 = load i32, ptr %0, align 4, !tbaa !5
  %106 = sub nsw i32 %104, %105
  store i32 %106, ptr %11, align 4, !tbaa !5
  %107 = add nsw i32 %.1145195, %86
  %108 = sext i32 %107 to i64
  %109 = getelementptr inbounds double, ptr %19, i64 %108
  call void @dlarzt_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull %11, ptr noundef nonnull %14, ptr noundef %109, ptr noundef nonnull %3, ptr noundef nonnull %101, ptr noundef nonnull %5, ptr noundef nonnull %16) #5
  %110 = add nsw i32 %.1145195, -1
  store i32 %110, ptr %11, align 4, !tbaa !5
  %111 = load i32, ptr %1, align 4, !tbaa !5
  %reass.sub201 = sub i32 %111, %.1145195
  %112 = add i32 %reass.sub201, 1
  store i32 %112, ptr %12, align 4, !tbaa !5
  %113 = load i32, ptr %0, align 4, !tbaa !5
  %114 = sub nsw i32 %111, %113
  store i32 %114, ptr %13, align 4, !tbaa !5
  %115 = sext i32 %96 to i64
  %gep = getelementptr double, ptr %invariant.gep, i64 %115
  %116 = load i32, ptr %14, align 4, !tbaa !5
  %117 = sext i32 %116 to i64
  %gep192 = getelementptr double, ptr %5, i64 %117
  call void @dlarzb_(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef nonnull %13, ptr noundef %109, ptr noundef nonnull %3, ptr noundef nonnull %5, ptr noundef nonnull %16, ptr noundef %gep, ptr noundef nonnull %3, ptr noundef %gep192, ptr noundef nonnull %16) #5
  br label %118

118:                                              ; preds = %88, %103
  %119 = sub i32 %.1145195, %.2185
  %120 = icmp sge i32 %119, %83
  %121 = icmp sle i32 %119, %83
  %.in = select i1 %87, i1 %120, i1 %121
  br i1 %.in, label %88, label %._crit_edge, !llvm.loop !11

._crit_edge:                                      ; preds = %118, %74
  %.1145.lcssa = phi i32 [ %84, %74 ], [ %119, %118 ]
  %122 = add i32 %.2185, -1
  %123 = add i32 %122, %.1145.lcssa
  br label %124

124:                                              ; preds = %70, %.thread180, %._crit_edge
  %storemerge = phi i32 [ %123, %._crit_edge ], [ %71, %.thread180 ], [ %.pre204, %70 ]
  store i32 %storemerge, ptr %15, align 4, !tbaa !5
  %125 = icmp sgt i32 %storemerge, 0
  br i1 %125, label %126, label %130

126:                                              ; preds = %124
  %127 = load i32, ptr %1, align 4, !tbaa !5
  %128 = load i32, ptr %0, align 4, !tbaa !5
  %129 = sub nsw i32 %127, %128
  store i32 %129, ptr %10, align 4, !tbaa !5
  call void @dlatrz_(ptr noundef nonnull %15, ptr noundef nonnull %1, ptr noundef nonnull %10, ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5) #5
  br label %130

130:                                              ; preds = %126, %124
  store double %.0, ptr %5, align 8, !tbaa !9
  br label %.loopexit

.loopexit:                                        ; preds = %.lr.ph200.preheader, %51, %46, %130, %.thread175
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #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 @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 @dlatrz_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

; 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 = !{!"double", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}


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