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

; 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 i64, align 8
@.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 i64, align 8
@c__3 = external hidden global i64, align 8
@c__2 = external hidden global i64, align 8
@.str.2 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [13 x i8], align 1

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

61:                                               ; preds = %9
  %62 = load ptr, ptr %19, align 8, !tbaa !5
  store i64 -1, ptr %62, align 8, !tbaa !9
  br label %105

63:                                               ; preds = %9
  %64 = load ptr, ptr %12, align 8, !tbaa !5
  %65 = load i64, ptr %64, align 8, !tbaa !9
  %66 = icmp slt i64 %65, 0
  br i1 %66, label %73, label %67

67:                                               ; preds = %63
  %68 = load ptr, ptr %12, align 8, !tbaa !5
  %69 = load i64, ptr %68, align 8, !tbaa !9
  %70 = load ptr, ptr %11, align 8, !tbaa !5
  %71 = load i64, ptr %70, align 8, !tbaa !9
  %72 = icmp sgt i64 %69, %71
  br i1 %72, label %73, label %75

73:                                               ; preds = %67, %63
  %74 = load ptr, ptr %19, align 8, !tbaa !5
  store i64 -2, ptr %74, align 8, !tbaa !9
  br label %104

75:                                               ; preds = %67
  %76 = load ptr, ptr %13, align 8, !tbaa !5
  %77 = load i64, ptr %76, align 8, !tbaa !9
  %78 = icmp slt i64 %77, 0
  br i1 %78, label %85, label %79

79:                                               ; preds = %75
  %80 = load ptr, ptr %13, align 8, !tbaa !5
  %81 = load i64, ptr %80, align 8, !tbaa !9
  %82 = load ptr, ptr %12, align 8, !tbaa !5
  %83 = load i64, ptr %82, align 8, !tbaa !9
  %84 = icmp sgt i64 %81, %83
  br i1 %84, label %85, label %87

85:                                               ; preds = %79, %75
  %86 = load ptr, ptr %19, align 8, !tbaa !5
  store i64 -3, ptr %86, align 8, !tbaa !9
  br label %103

87:                                               ; preds = %79
  %88 = load ptr, ptr %15, align 8, !tbaa !5
  %89 = load i64, ptr %88, align 8, !tbaa !9
  %90 = load ptr, ptr %11, align 8, !tbaa !5
  %91 = load i64, ptr %90, align 8, !tbaa !9
  %92 = icmp sge i64 1, %91
  br i1 %92, label %93, label %94

93:                                               ; preds = %87
  br label %97

94:                                               ; preds = %87
  %95 = load ptr, ptr %11, align 8, !tbaa !5
  %96 = load i64, ptr %95, align 8, !tbaa !9
  br label %97

97:                                               ; preds = %94, %93
  %98 = phi i64 [ 1, %93 ], [ %96, %94 ]
  %99 = icmp slt i64 %89, %98
  br i1 %99, label %100, label %102

100:                                              ; preds = %97
  %101 = load ptr, ptr %19, align 8, !tbaa !5
  store i64 -5, ptr %101, align 8, !tbaa !9
  br label %102

102:                                              ; preds = %100, %97
  br label %103

103:                                              ; preds = %102, %85
  br label %104

104:                                              ; preds = %103, %73
  br label %105

105:                                              ; preds = %104, %61
  %106 = load ptr, ptr %19, align 8, !tbaa !5
  %107 = load i64, ptr %106, align 8, !tbaa !9
  %108 = icmp eq i64 %107, 0
  br i1 %108, label %109, label %146

109:                                              ; preds = %105
  %110 = load ptr, ptr %12, align 8, !tbaa !5
  %111 = load i64, ptr %110, align 8, !tbaa !9
  %112 = icmp eq i64 %111, 0
  br i1 %112, label %113, label %114

113:                                              ; preds = %109
  store i64 1, ptr %37, align 8, !tbaa !9
  br label %123

114:                                              ; preds = %109
  %115 = load ptr, ptr %11, align 8, !tbaa !5
  %116 = load ptr, ptr %12, align 8, !tbaa !5
  %117 = load ptr, ptr %13, align 8, !tbaa !5
  %118 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %115, ptr noundef %116, ptr noundef %117, ptr noundef @c_n1)
  store i64 %118, ptr %30, align 8, !tbaa !9
  %119 = load ptr, ptr %12, align 8, !tbaa !5
  %120 = load i64, ptr %119, align 8, !tbaa !9
  %121 = load i64, ptr %30, align 8, !tbaa !9
  %122 = mul nsw i64 %120, %121
  store i64 %122, ptr %37, align 8, !tbaa !9
  br label %123

123:                                              ; preds = %114, %113
  %124 = load i64, ptr %37, align 8, !tbaa !9
  %125 = sitofp i64 %124 to double
  %126 = load ptr, ptr %17, align 8, !tbaa !5
  %127 = getelementptr inbounds double, ptr %126, i64 1
  store double %125, ptr %127, align 8, !tbaa !11
  %128 = load ptr, ptr %18, align 8, !tbaa !5
  %129 = load i64, ptr %128, align 8, !tbaa !9
  %130 = load ptr, ptr %12, align 8, !tbaa !5
  %131 = load i64, ptr %130, align 8, !tbaa !9
  %132 = icmp sge i64 1, %131
  br i1 %132, label %133, label %134

133:                                              ; preds = %123
  br label %137

134:                                              ; preds = %123
  %135 = load ptr, ptr %12, align 8, !tbaa !5
  %136 = load i64, ptr %135, align 8, !tbaa !9
  br label %137

137:                                              ; preds = %134, %133
  %138 = phi i64 [ 1, %133 ], [ %136, %134 ]
  %139 = icmp slt i64 %129, %138
  br i1 %139, label %140, label %145

140:                                              ; preds = %137
  %141 = load i64, ptr %38, align 8, !tbaa !9
  %142 = icmp ne i64 %141, 0
  br i1 %142, label %145, label %143

143:                                              ; preds = %140
  %144 = load ptr, ptr %19, align 8, !tbaa !5
  store i64 -8, ptr %144, align 8, !tbaa !9
  br label %145

145:                                              ; preds = %143, %140, %137
  br label %146

146:                                              ; preds = %145, %105
  %147 = load ptr, ptr %19, align 8, !tbaa !5
  %148 = load i64, ptr %147, align 8, !tbaa !9
  %149 = icmp ne i64 %148, 0
  br i1 %149, label %150, label %155

150:                                              ; preds = %146
  %151 = load ptr, ptr %19, align 8, !tbaa !5
  %152 = load i64, ptr %151, align 8, !tbaa !9
  %153 = sub nsw i64 0, %152
  store i64 %153, ptr %22, align 8, !tbaa !9
  %154 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %22)
  store i32 0, ptr %10, align 4
  store i32 1, ptr %39, align 4
  br label %535

155:                                              ; preds = %146
  %156 = load i64, ptr %38, align 8, !tbaa !9
  %157 = icmp ne i64 %156, 0
  br i1 %157, label %158, label %159

158:                                              ; preds = %155
  store i32 0, ptr %10, align 4
  store i32 1, ptr %39, align 4
  br label %535

159:                                              ; preds = %155
  br label %160

160:                                              ; preds = %159
  %161 = load ptr, ptr %12, align 8, !tbaa !5
  %162 = load i64, ptr %161, align 8, !tbaa !9
  %163 = icmp sle i64 %162, 0
  br i1 %163, label %164, label %165

164:                                              ; preds = %160
  store i32 0, ptr %10, align 4
  store i32 1, ptr %39, align 4
  br label %535

165:                                              ; preds = %160
  store i64 2, ptr %34, align 8, !tbaa !9
  store i64 0, ptr %32, align 8, !tbaa !9
  %166 = load ptr, ptr %12, align 8, !tbaa !5
  %167 = load i64, ptr %166, align 8, !tbaa !9
  store i64 %167, ptr %33, align 8, !tbaa !9
  %168 = load i64, ptr %30, align 8, !tbaa !9
  %169 = icmp sgt i64 %168, 1
  br i1 %169, label %170, label %223

170:                                              ; preds = %165
  %171 = load i64, ptr %30, align 8, !tbaa !9
  %172 = load ptr, ptr %13, align 8, !tbaa !5
  %173 = load i64, ptr %172, align 8, !tbaa !9
  %174 = icmp slt i64 %171, %173
  br i1 %174, label %175, label %223

175:                                              ; preds = %170
  store i64 0, ptr %22, align 8, !tbaa !9
  %176 = load ptr, ptr %11, align 8, !tbaa !5
  %177 = load ptr, ptr %12, align 8, !tbaa !5
  %178 = load ptr, ptr %13, align 8, !tbaa !5
  %179 = call i64 @ilaenv_(ptr noundef @c__3, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %176, ptr noundef %177, ptr noundef %178, ptr noundef @c_n1)
  store i64 %179, ptr %23, align 8, !tbaa !9
  %180 = load i64, ptr %22, align 8, !tbaa !9
  %181 = load i64, ptr %23, align 8, !tbaa !9
  %182 = icmp sge i64 %180, %181
  br i1 %182, label %183, label %185

183:                                              ; preds = %175
  %184 = load i64, ptr %22, align 8, !tbaa !9
  br label %187

185:                                              ; preds = %175
  %186 = load i64, ptr %23, align 8, !tbaa !9
  br label %187

187:                                              ; preds = %185, %183
  %188 = phi i64 [ %184, %183 ], [ %186, %185 ]
  store i64 %188, ptr %32, align 8, !tbaa !9
  %189 = load i64, ptr %32, align 8, !tbaa !9
  %190 = load ptr, ptr %13, align 8, !tbaa !5
  %191 = load i64, ptr %190, align 8, !tbaa !9
  %192 = icmp slt i64 %189, %191
  br i1 %192, label %193, label %222

193:                                              ; preds = %187
  %194 = load ptr, ptr %12, align 8, !tbaa !5
  %195 = load i64, ptr %194, align 8, !tbaa !9
  store i64 %195, ptr %36, align 8, !tbaa !9
  %196 = load i64, ptr %36, align 8, !tbaa !9
  %197 = load i64, ptr %30, align 8, !tbaa !9
  %198 = mul nsw i64 %196, %197
  store i64 %198, ptr %33, align 8, !tbaa !9
  %199 = load ptr, ptr %18, align 8, !tbaa !5
  %200 = load i64, ptr %199, align 8, !tbaa !9
  %201 = load i64, ptr %33, align 8, !tbaa !9
  %202 = icmp slt i64 %200, %201
  br i1 %202, label %203, label %221

203:                                              ; preds = %193
  %204 = load ptr, ptr %18, align 8, !tbaa !5
  %205 = load i64, ptr %204, align 8, !tbaa !9
  %206 = load i64, ptr %36, align 8, !tbaa !9
  %207 = sdiv i64 %205, %206
  store i64 %207, ptr %30, align 8, !tbaa !9
  store i64 2, ptr %22, align 8, !tbaa !9
  %208 = load ptr, ptr %11, align 8, !tbaa !5
  %209 = load ptr, ptr %12, align 8, !tbaa !5
  %210 = load ptr, ptr %13, align 8, !tbaa !5
  %211 = call i64 @ilaenv_(ptr noundef @c__2, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %208, ptr noundef %209, ptr noundef %210, ptr noundef @c_n1)
  store i64 %211, ptr %23, align 8, !tbaa !9
  %212 = load i64, ptr %22, align 8, !tbaa !9
  %213 = load i64, ptr %23, align 8, !tbaa !9
  %214 = icmp sge i64 %212, %213
  br i1 %214, label %215, label %217

215:                                              ; preds = %203
  %216 = load i64, ptr %22, align 8, !tbaa !9
  br label %219

217:                                              ; preds = %203
  %218 = load i64, ptr %23, align 8, !tbaa !9
  br label %219

219:                                              ; preds = %217, %215
  %220 = phi i64 [ %216, %215 ], [ %218, %217 ]
  store i64 %220, ptr %34, align 8, !tbaa !9
  br label %221

221:                                              ; preds = %219, %193
  br label %222

222:                                              ; preds = %221, %187
  br label %223

223:                                              ; preds = %222, %170, %165
  %224 = load i64, ptr %30, align 8, !tbaa !9
  %225 = load i64, ptr %34, align 8, !tbaa !9
  %226 = icmp sge i64 %224, %225
  br i1 %226, label %227, label %296

227:                                              ; preds = %223
  %228 = load i64, ptr %30, align 8, !tbaa !9
  %229 = load ptr, ptr %13, align 8, !tbaa !5
  %230 = load i64, ptr %229, align 8, !tbaa !9
  %231 = icmp slt i64 %228, %230
  br i1 %231, label %232, label %296

232:                                              ; preds = %227
  %233 = load i64, ptr %32, align 8, !tbaa !9
  %234 = load ptr, ptr %13, align 8, !tbaa !5
  %235 = load i64, ptr %234, align 8, !tbaa !9
  %236 = icmp slt i64 %233, %235
  br i1 %236, label %237, label %296

237:                                              ; preds = %232
  %238 = load ptr, ptr %13, align 8, !tbaa !5
  %239 = load i64, ptr %238, align 8, !tbaa !9
  store i64 %239, ptr %22, align 8, !tbaa !9
  %240 = load ptr, ptr %13, align 8, !tbaa !5
  %241 = load i64, ptr %240, align 8, !tbaa !9
  %242 = load i64, ptr %32, align 8, !tbaa !9
  %243 = sub nsw i64 %241, %242
  %244 = load i64, ptr %30, align 8, !tbaa !9
  %245 = add nsw i64 %243, %244
  %246 = sub nsw i64 %245, 1
  %247 = load i64, ptr %30, align 8, !tbaa !9
  %248 = sdiv i64 %246, %247
  %249 = load i64, ptr %30, align 8, !tbaa !9
  %250 = mul nsw i64 %248, %249
  store i64 %250, ptr %23, align 8, !tbaa !9
  %251 = load i64, ptr %22, align 8, !tbaa !9
  %252 = load i64, ptr %23, align 8, !tbaa !9
  %253 = icmp sle i64 %251, %252
  br i1 %253, label %254, label %256

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

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

258:                                              ; preds = %256, %254
  %259 = phi i64 [ %255, %254 ], [ %257, %256 ]
  store i64 %259, ptr %31, align 8, !tbaa !9
  %260 = load ptr, ptr %12, align 8, !tbaa !5
  %261 = load i64, ptr %260, align 8, !tbaa !9
  %262 = load i64, ptr %31, align 8, !tbaa !9
  %263 = sub nsw i64 %261, %262
  store i64 %263, ptr %22, align 8, !tbaa !9
  store i64 1, ptr %27, align 8, !tbaa !9
  br label %264

264:                                              ; preds = %292, %258
  %265 = load i64, ptr %27, align 8, !tbaa !9
  %266 = load i64, ptr %22, align 8, !tbaa !9
  %267 = icmp sle i64 %265, %266
  br i1 %267, label %268, label %295

268:                                              ; preds = %264
  %269 = load ptr, ptr %11, align 8, !tbaa !5
  %270 = load i64, ptr %269, align 8, !tbaa !9
  store i64 %270, ptr %23, align 8, !tbaa !9
  %271 = load ptr, ptr %11, align 8, !tbaa !5
  %272 = load i64, ptr %271, align 8, !tbaa !9
  %273 = load i64, ptr %31, align 8, !tbaa !9
  %274 = sub nsw i64 %272, %273
  %275 = add nsw i64 %274, 1
  store i64 %275, ptr %26, align 8, !tbaa !9
  br label %276

276:                                              ; preds = %288, %268
  %277 = load i64, ptr %26, align 8, !tbaa !9
  %278 = load i64, ptr %23, align 8, !tbaa !9
  %279 = icmp sle i64 %277, %278
  br i1 %279, label %280, label %291

280:                                              ; preds = %276
  %281 = load ptr, ptr %14, align 8, !tbaa !5
  %282 = load i64, ptr %26, align 8, !tbaa !9
  %283 = load i64, ptr %27, align 8, !tbaa !9
  %284 = load i64, ptr %20, align 8, !tbaa !9
  %285 = mul nsw i64 %283, %284
  %286 = add nsw i64 %282, %285
  %287 = getelementptr inbounds double, ptr %281, i64 %286
  store double 0.000000e+00, ptr %287, align 8, !tbaa !11
  br label %288

288:                                              ; preds = %280
  %289 = load i64, ptr %26, align 8, !tbaa !9
  %290 = add nsw i64 %289, 1
  store i64 %290, ptr %26, align 8, !tbaa !9
  br label %276, !llvm.loop !13

291:                                              ; preds = %276
  br label %292

292:                                              ; preds = %291
  %293 = load i64, ptr %27, align 8, !tbaa !9
  %294 = add nsw i64 %293, 1
  store i64 %294, ptr %27, align 8, !tbaa !9
  br label %264, !llvm.loop !15

295:                                              ; preds = %264
  br label %297

296:                                              ; preds = %232, %227, %223
  store i64 0, ptr %31, align 8, !tbaa !9
  br label %297

297:                                              ; preds = %296, %295
  %298 = load ptr, ptr %11, align 8, !tbaa !5
  %299 = load i64, ptr %298, align 8, !tbaa !9
  %300 = load i64, ptr %31, align 8, !tbaa !9
  %301 = sub nsw i64 %299, %300
  store i64 %301, ptr %22, align 8, !tbaa !9
  %302 = load ptr, ptr %12, align 8, !tbaa !5
  %303 = load i64, ptr %302, align 8, !tbaa !9
  %304 = load i64, ptr %31, align 8, !tbaa !9
  %305 = sub nsw i64 %303, %304
  store i64 %305, ptr %23, align 8, !tbaa !9
  %306 = load ptr, ptr %13, align 8, !tbaa !5
  %307 = load i64, ptr %306, align 8, !tbaa !9
  %308 = load i64, ptr %31, align 8, !tbaa !9
  %309 = sub nsw i64 %307, %308
  store i64 %309, ptr %24, align 8, !tbaa !9
  %310 = load ptr, ptr %14, align 8, !tbaa !5
  %311 = load i64, ptr %21, align 8, !tbaa !9
  %312 = getelementptr inbounds double, ptr %310, i64 %311
  %313 = load ptr, ptr %15, align 8, !tbaa !5
  %314 = load ptr, ptr %16, align 8, !tbaa !5
  %315 = getelementptr inbounds double, ptr %314, i64 1
  %316 = load ptr, ptr %17, align 8, !tbaa !5
  %317 = getelementptr inbounds double, ptr %316, i64 1
  %318 = call i32 @dorg2l_(ptr noundef %22, ptr noundef %23, ptr noundef %24, ptr noundef %312, ptr noundef %313, ptr noundef %315, ptr noundef %317, ptr noundef %35)
  %319 = load i64, ptr %31, align 8, !tbaa !9
  %320 = icmp sgt i64 %319, 0
  br i1 %320, label %321, label %530

321:                                              ; preds = %297
  %322 = load ptr, ptr %13, align 8, !tbaa !5
  %323 = load i64, ptr %322, align 8, !tbaa !9
  store i64 %323, ptr %22, align 8, !tbaa !9
  %324 = load i64, ptr %30, align 8, !tbaa !9
  store i64 %324, ptr %23, align 8, !tbaa !9
  %325 = load ptr, ptr %13, align 8, !tbaa !5
  %326 = load i64, ptr %325, align 8, !tbaa !9
  %327 = load i64, ptr %31, align 8, !tbaa !9
  %328 = sub nsw i64 %326, %327
  %329 = add nsw i64 %328, 1
  store i64 %329, ptr %26, align 8, !tbaa !9
  br label %330

330:                                              ; preds = %525, %321
  %331 = load i64, ptr %23, align 8, !tbaa !9
  %332 = icmp slt i64 %331, 0
  br i1 %332, label %333, label %338

333:                                              ; preds = %330
  %334 = load i64, ptr %26, align 8, !tbaa !9
  %335 = load i64, ptr %22, align 8, !tbaa !9
  %336 = icmp sge i64 %334, %335
  %337 = zext i1 %336 to i32
  br label %343

338:                                              ; preds = %330
  %339 = load i64, ptr %26, align 8, !tbaa !9
  %340 = load i64, ptr %22, align 8, !tbaa !9
  %341 = icmp sle i64 %339, %340
  %342 = zext i1 %341 to i32
  br label %343

343:                                              ; preds = %338, %333
  %344 = phi i32 [ %337, %333 ], [ %342, %338 ]
  %345 = icmp ne i32 %344, 0
  br i1 %345, label %346, label %529

346:                                              ; preds = %343
  %347 = load i64, ptr %30, align 8, !tbaa !9
  store i64 %347, ptr %24, align 8, !tbaa !9
  %348 = load ptr, ptr %13, align 8, !tbaa !5
  %349 = load i64, ptr %348, align 8, !tbaa !9
  %350 = load i64, ptr %26, align 8, !tbaa !9
  %351 = sub nsw i64 %349, %350
  %352 = add nsw i64 %351, 1
  store i64 %352, ptr %25, align 8, !tbaa !9
  %353 = load i64, ptr %24, align 8, !tbaa !9
  %354 = load i64, ptr %25, align 8, !tbaa !9
  %355 = icmp sle i64 %353, %354
  br i1 %355, label %356, label %358

356:                                              ; preds = %346
  %357 = load i64, ptr %24, align 8, !tbaa !9
  br label %360

358:                                              ; preds = %346
  %359 = load i64, ptr %25, align 8, !tbaa !9
  br label %360

360:                                              ; preds = %358, %356
  %361 = phi i64 [ %357, %356 ], [ %359, %358 ]
  store i64 %361, ptr %29, align 8, !tbaa !9
  %362 = load ptr, ptr %12, align 8, !tbaa !5
  %363 = load i64, ptr %362, align 8, !tbaa !9
  %364 = load ptr, ptr %13, align 8, !tbaa !5
  %365 = load i64, ptr %364, align 8, !tbaa !9
  %366 = sub nsw i64 %363, %365
  %367 = load i64, ptr %26, align 8, !tbaa !9
  %368 = add nsw i64 %366, %367
  %369 = icmp sgt i64 %368, 1
  br i1 %369, label %370, label %442

370:                                              ; preds = %360
  %371 = load ptr, ptr %11, align 8, !tbaa !5
  %372 = load i64, ptr %371, align 8, !tbaa !9
  %373 = load ptr, ptr %13, align 8, !tbaa !5
  %374 = load i64, ptr %373, align 8, !tbaa !9
  %375 = sub nsw i64 %372, %374
  %376 = load i64, ptr %26, align 8, !tbaa !9
  %377 = add nsw i64 %375, %376
  %378 = load i64, ptr %29, align 8, !tbaa !9
  %379 = add nsw i64 %377, %378
  %380 = sub nsw i64 %379, 1
  store i64 %380, ptr %24, align 8, !tbaa !9
  %381 = load ptr, ptr %14, align 8, !tbaa !5
  %382 = load ptr, ptr %12, align 8, !tbaa !5
  %383 = load i64, ptr %382, align 8, !tbaa !9
  %384 = load ptr, ptr %13, align 8, !tbaa !5
  %385 = load i64, ptr %384, align 8, !tbaa !9
  %386 = sub nsw i64 %383, %385
  %387 = load i64, ptr %26, align 8, !tbaa !9
  %388 = add nsw i64 %386, %387
  %389 = load i64, ptr %20, align 8, !tbaa !9
  %390 = mul nsw i64 %388, %389
  %391 = add nsw i64 %390, 1
  %392 = getelementptr inbounds double, ptr %381, i64 %391
  %393 = load ptr, ptr %15, align 8, !tbaa !5
  %394 = load ptr, ptr %16, align 8, !tbaa !5
  %395 = load i64, ptr %26, align 8, !tbaa !9
  %396 = getelementptr inbounds double, ptr %394, i64 %395
  %397 = load ptr, ptr %17, align 8, !tbaa !5
  %398 = getelementptr inbounds double, ptr %397, i64 1
  %399 = call i32 @dlarft_(ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef %24, ptr noundef %29, ptr noundef %392, ptr noundef %393, ptr noundef %396, ptr noundef %398, ptr noundef %36)
  %400 = load ptr, ptr %11, align 8, !tbaa !5
  %401 = load i64, ptr %400, align 8, !tbaa !9
  %402 = load ptr, ptr %13, align 8, !tbaa !5
  %403 = load i64, ptr %402, align 8, !tbaa !9
  %404 = sub nsw i64 %401, %403
  %405 = load i64, ptr %26, align 8, !tbaa !9
  %406 = add nsw i64 %404, %405
  %407 = load i64, ptr %29, align 8, !tbaa !9
  %408 = add nsw i64 %406, %407
  %409 = sub nsw i64 %408, 1
  store i64 %409, ptr %24, align 8, !tbaa !9
  %410 = load ptr, ptr %12, align 8, !tbaa !5
  %411 = load i64, ptr %410, align 8, !tbaa !9
  %412 = load ptr, ptr %13, align 8, !tbaa !5
  %413 = load i64, ptr %412, align 8, !tbaa !9
  %414 = sub nsw i64 %411, %413
  %415 = load i64, ptr %26, align 8, !tbaa !9
  %416 = add nsw i64 %414, %415
  %417 = sub nsw i64 %416, 1
  store i64 %417, ptr %25, align 8, !tbaa !9
  %418 = load ptr, ptr %14, align 8, !tbaa !5
  %419 = load ptr, ptr %12, align 8, !tbaa !5
  %420 = load i64, ptr %419, align 8, !tbaa !9
  %421 = load ptr, ptr %13, align 8, !tbaa !5
  %422 = load i64, ptr %421, align 8, !tbaa !9
  %423 = sub nsw i64 %420, %422
  %424 = load i64, ptr %26, align 8, !tbaa !9
  %425 = add nsw i64 %423, %424
  %426 = load i64, ptr %20, align 8, !tbaa !9
  %427 = mul nsw i64 %425, %426
  %428 = add nsw i64 %427, 1
  %429 = getelementptr inbounds double, ptr %418, i64 %428
  %430 = load ptr, ptr %15, align 8, !tbaa !5
  %431 = load ptr, ptr %17, align 8, !tbaa !5
  %432 = getelementptr inbounds double, ptr %431, i64 1
  %433 = load ptr, ptr %14, align 8, !tbaa !5
  %434 = load i64, ptr %21, align 8, !tbaa !9
  %435 = getelementptr inbounds double, ptr %433, i64 %434
  %436 = load ptr, ptr %15, align 8, !tbaa !5
  %437 = load ptr, ptr %17, align 8, !tbaa !5
  %438 = load i64, ptr %29, align 8, !tbaa !9
  %439 = add nsw i64 %438, 1
  %440 = getelementptr inbounds double, ptr %437, i64 %439
  %441 = call i32 @dlarfb_(ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef %24, ptr noundef %25, ptr noundef %29, ptr noundef %429, ptr noundef %430, ptr noundef %432, ptr noundef %36, ptr noundef %435, ptr noundef %436, ptr noundef %440, ptr noundef %36)
  br label %442

442:                                              ; preds = %370, %360
  %443 = load ptr, ptr %11, align 8, !tbaa !5
  %444 = load i64, ptr %443, align 8, !tbaa !9
  %445 = load ptr, ptr %13, align 8, !tbaa !5
  %446 = load i64, ptr %445, align 8, !tbaa !9
  %447 = sub nsw i64 %444, %446
  %448 = load i64, ptr %26, align 8, !tbaa !9
  %449 = add nsw i64 %447, %448
  %450 = load i64, ptr %29, align 8, !tbaa !9
  %451 = add nsw i64 %449, %450
  %452 = sub nsw i64 %451, 1
  store i64 %452, ptr %24, align 8, !tbaa !9
  %453 = load ptr, ptr %14, align 8, !tbaa !5
  %454 = load ptr, ptr %12, align 8, !tbaa !5
  %455 = load i64, ptr %454, align 8, !tbaa !9
  %456 = load ptr, ptr %13, align 8, !tbaa !5
  %457 = load i64, ptr %456, align 8, !tbaa !9
  %458 = sub nsw i64 %455, %457
  %459 = load i64, ptr %26, align 8, !tbaa !9
  %460 = add nsw i64 %458, %459
  %461 = load i64, ptr %20, align 8, !tbaa !9
  %462 = mul nsw i64 %460, %461
  %463 = add nsw i64 %462, 1
  %464 = getelementptr inbounds double, ptr %453, i64 %463
  %465 = load ptr, ptr %15, align 8, !tbaa !5
  %466 = load ptr, ptr %16, align 8, !tbaa !5
  %467 = load i64, ptr %26, align 8, !tbaa !9
  %468 = getelementptr inbounds double, ptr %466, i64 %467
  %469 = load ptr, ptr %17, align 8, !tbaa !5
  %470 = getelementptr inbounds double, ptr %469, i64 1
  %471 = call i32 @dorg2l_(ptr noundef %24, ptr noundef %29, ptr noundef %29, ptr noundef %464, ptr noundef %465, ptr noundef %468, ptr noundef %470, ptr noundef %35)
  %472 = load ptr, ptr %12, align 8, !tbaa !5
  %473 = load i64, ptr %472, align 8, !tbaa !9
  %474 = load ptr, ptr %13, align 8, !tbaa !5
  %475 = load i64, ptr %474, align 8, !tbaa !9
  %476 = sub nsw i64 %473, %475
  %477 = load i64, ptr %26, align 8, !tbaa !9
  %478 = add nsw i64 %476, %477
  %479 = load i64, ptr %29, align 8, !tbaa !9
  %480 = add nsw i64 %478, %479
  %481 = sub nsw i64 %480, 1
  store i64 %481, ptr %24, align 8, !tbaa !9
  %482 = load ptr, ptr %12, align 8, !tbaa !5
  %483 = load i64, ptr %482, align 8, !tbaa !9
  %484 = load ptr, ptr %13, align 8, !tbaa !5
  %485 = load i64, ptr %484, align 8, !tbaa !9
  %486 = sub nsw i64 %483, %485
  %487 = load i64, ptr %26, align 8, !tbaa !9
  %488 = add nsw i64 %486, %487
  store i64 %488, ptr %27, align 8, !tbaa !9
  br label %489

489:                                              ; preds = %521, %442
  %490 = load i64, ptr %27, align 8, !tbaa !9
  %491 = load i64, ptr %24, align 8, !tbaa !9
  %492 = icmp sle i64 %490, %491
  br i1 %492, label %493, label %524

493:                                              ; preds = %489
  %494 = load ptr, ptr %11, align 8, !tbaa !5
  %495 = load i64, ptr %494, align 8, !tbaa !9
  store i64 %495, ptr %25, align 8, !tbaa !9
  %496 = load ptr, ptr %11, align 8, !tbaa !5
  %497 = load i64, ptr %496, align 8, !tbaa !9
  %498 = load ptr, ptr %13, align 8, !tbaa !5
  %499 = load i64, ptr %498, align 8, !tbaa !9
  %500 = sub nsw i64 %497, %499
  %501 = load i64, ptr %26, align 8, !tbaa !9
  %502 = add nsw i64 %500, %501
  %503 = load i64, ptr %29, align 8, !tbaa !9
  %504 = add nsw i64 %502, %503
  store i64 %504, ptr %28, align 8, !tbaa !9
  br label %505

505:                                              ; preds = %517, %493
  %506 = load i64, ptr %28, align 8, !tbaa !9
  %507 = load i64, ptr %25, align 8, !tbaa !9
  %508 = icmp sle i64 %506, %507
  br i1 %508, label %509, label %520

509:                                              ; preds = %505
  %510 = load ptr, ptr %14, align 8, !tbaa !5
  %511 = load i64, ptr %28, align 8, !tbaa !9
  %512 = load i64, ptr %27, align 8, !tbaa !9
  %513 = load i64, ptr %20, align 8, !tbaa !9
  %514 = mul nsw i64 %512, %513
  %515 = add nsw i64 %511, %514
  %516 = getelementptr inbounds double, ptr %510, i64 %515
  store double 0.000000e+00, ptr %516, align 8, !tbaa !11
  br label %517

517:                                              ; preds = %509
  %518 = load i64, ptr %28, align 8, !tbaa !9
  %519 = add nsw i64 %518, 1
  store i64 %519, ptr %28, align 8, !tbaa !9
  br label %505, !llvm.loop !16

520:                                              ; preds = %505
  br label %521

521:                                              ; preds = %520
  %522 = load i64, ptr %27, align 8, !tbaa !9
  %523 = add nsw i64 %522, 1
  store i64 %523, ptr %27, align 8, !tbaa !9
  br label %489, !llvm.loop !17

524:                                              ; preds = %489
  br label %525

525:                                              ; preds = %524
  %526 = load i64, ptr %23, align 8, !tbaa !9
  %527 = load i64, ptr %26, align 8, !tbaa !9
  %528 = add nsw i64 %527, %526
  store i64 %528, ptr %26, align 8, !tbaa !9
  br label %330, !llvm.loop !18

529:                                              ; preds = %343
  br label %530

530:                                              ; preds = %529, %297
  %531 = load i64, ptr %33, align 8, !tbaa !9
  %532 = sitofp i64 %531 to double
  %533 = load ptr, ptr %17, align 8, !tbaa !5
  %534 = getelementptr inbounds double, ptr %533, i64 1
  store double %532, ptr %534, align 8, !tbaa !11
  store i32 0, ptr %10, align 4
  store i32 1, ptr %39, align 4
  br label %535

535:                                              ; preds = %530, %164, %158, %150
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #3
  %536 = load i32, ptr %10, align 4
  ret i32 %536
}

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

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

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

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

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

declare i32 @dlarfb_(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 = !{!"long", !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}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !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 i64, align 8
@.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 i64, align 8
@c__3 = external hidden global i64, align 8
@c__2 = external hidden global i64, align 8
@.str.2 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [13 x i8], align 1

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

25:                                               ; preds = %9
  %26 = load i64, ptr %1, align 8, !tbaa !5
  %or.cond201 = icmp ugt i64 %26, %23
  br i1 %or.cond201, label %.thread209.sink.split, label %27

27:                                               ; preds = %25
  %28 = load i64, ptr %2, align 8, !tbaa !5
  %29 = icmp slt i64 %28, 0
  %30 = icmp sgt i64 %28, %26
  %or.cond202 = or i1 %29, %30
  br i1 %or.cond202, label %.thread209.sink.split, label %31

31:                                               ; preds = %27
  %32 = load i64, ptr %4, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %23, i64 1)
  %33 = icmp slt i64 %32, %spec.select
  br i1 %33, label %.thread209.sink.split, label %34

34:                                               ; preds = %31
  %35 = icmp eq i64 %26, 0
  br i1 %35, label %41, label %36

36:                                               ; preds = %34
  %37 = tail call i64 @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 %2, ptr noundef nonnull @c_n1) #5
  %38 = load i64, ptr %1, align 8, !tbaa !5
  %39 = mul nsw i64 %38, %37
  %.pre = load i64, ptr %7, align 8, !tbaa !5
  %40 = sitofp i64 %39 to double
  br label %41

41:                                               ; preds = %34, %36
  %.pre266277 = phi i64 [ %38, %36 ], [ 0, %34 ]
  %42 = phi i64 [ %.pre, %36 ], [ %21, %34 ]
  %.0174 = phi i64 [ %37, %36 ], [ undef, %34 ]
  %.0169 = phi double [ %40, %36 ], [ 1.000000e+00, %34 ]
  store double %.0169, ptr %6, align 8, !tbaa !9
  %spec.select203 = tail call i64 @llvm.smax.i64(i64 %.pre266277, i64 1)
  %43 = icmp sge i64 %42, %spec.select203
  %or.cond = select i1 %43, i1 true, i1 %22
  br i1 %or.cond, label %.thread, label %.thread209.sink.split

.thread:                                          ; preds = %41
  %.pr206.pr = load i64, ptr %8, align 8, !tbaa !5
  %.not = icmp eq i64 %.pr206.pr, 0
  br i1 %.not, label %47, label %.thread209

.thread209.sink.split:                            ; preds = %41, %31, %27, %25, %9
  %.sink = phi i64 [ -1, %9 ], [ -2, %25 ], [ -3, %27 ], [ -5, %31 ], [ -8, %41 ]
  store i64 %.sink, ptr %8, align 8, !tbaa !5
  br label %.thread209

.thread209:                                       ; preds = %.thread209.sink.split, %.thread
  %44 = phi i64 [ %.pr206.pr, %.thread ], [ %.sink, %.thread209.sink.split ]
  %45 = sub nsw i64 0, %44
  store i64 %45, ptr %10, align 8, !tbaa !5
  %46 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %10) #5
  br label %185

47:                                               ; preds = %.thread
  %48 = icmp slt i64 %.pre266277, 1
  %or.cond279 = or i1 %22, %48
  br i1 %or.cond279, label %185, label %49

49:                                               ; preds = %47
  %50 = icmp sgt i64 %.0174, 1
  %.pre268 = load i64, ptr %2, align 8, !tbaa !5
  br i1 %50, label %51, label %.thread224

51:                                               ; preds = %49
  %52 = icmp slt i64 %.0174, %.pre268
  br i1 %52, label %53, label %.thread213

53:                                               ; preds = %51
  %54 = tail call i64 @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 %2, ptr noundef nonnull @c_n1) #5
  %55 = tail call i64 @llvm.smax.i64(i64 %54, i64 0)
  %56 = load i64, ptr %2, align 8, !tbaa !5
  %57 = icmp slt i64 %55, %56
  %.pre266.pre275 = load i64, ptr %1, align 8, !tbaa !5
  br i1 %57, label %58, label %.thread213

58:                                               ; preds = %53
  store i64 %.pre266.pre275, ptr %16, align 8, !tbaa !5
  %59 = mul nsw i64 %.pre266.pre275, %.0174
  %60 = load i64, ptr %7, align 8, !tbaa !5
  %61 = icmp slt i64 %60, %59
  br i1 %61, label %62, label %.thread213

62:                                               ; preds = %58
  %63 = sdiv i64 %60, %.pre266.pre275
  %64 = tail call i64 @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 %2, ptr noundef nonnull @c_n1) #5
  %65 = tail call i64 @llvm.smax.i64(i64 %64, i64 2)
  %.not193 = icmp slt i64 %63, %65
  br i1 %.not193, label %..thread224_crit_edge, label %..thread213_crit_edge

..thread224_crit_edge:                            ; preds = %62
  %.pre265 = load i64, ptr %1, align 8, !tbaa !5
  %.pre267 = load i64, ptr %2, align 8, !tbaa !5
  br label %.thread224

..thread213_crit_edge:                            ; preds = %62
  %.pre264 = load i64, ptr %2, align 8, !tbaa !5
  %.pre266.pre = load i64, ptr %1, align 8, !tbaa !5
  br label %.thread213

.thread213:                                       ; preds = %..thread213_crit_edge, %51, %53, %58
  %.pre266 = phi i64 [ %.pre266.pre, %..thread213_crit_edge ], [ %.pre266277, %51 ], [ %.pre266.pre275, %53 ], [ %.pre266.pre275, %58 ]
  %66 = phi i64 [ %.pre264, %..thread213_crit_edge ], [ %.pre268, %51 ], [ %56, %53 ], [ %56, %58 ]
  %.0171222 = phi i64 [ %59, %..thread213_crit_edge ], [ %.pre266277, %51 ], [ %.pre266277, %53 ], [ %59, %58 ]
  %.0172221 = phi i64 [ %55, %..thread213_crit_edge ], [ 0, %51 ], [ %55, %53 ], [ %55, %58 ]
  %.2219 = phi i64 [ %63, %..thread213_crit_edge ], [ %.0174, %51 ], [ %.0174, %53 ], [ %.0174, %58 ]
  %67 = icmp slt i64 %.2219, %66
  %68 = icmp slt i64 %.0172221, %66
  %or.cond204 = and i1 %67, %68
  br i1 %or.cond204, label %69, label %.thread224

69:                                               ; preds = %.thread213
  %70 = sub nsw i64 %.2219, %.0172221
  %71 = add i64 %70, %66
  %.fr194 = freeze i64 %71
  %72 = add i64 %.fr194, -1
  %73 = srem i64 %72, %.2219
  %74 = sub nsw i64 %72, %73
  store i64 %74, ptr %11, align 8, !tbaa !5
  %75 = tail call i64 @llvm.smin.i64(i64 %66, i64 %74)
  %76 = sub nsw i64 %.pre266, %75
  store i64 %76, ptr %10, align 8, !tbaa !5
  %.not196238 = icmp sgt i64 %76, 0
  %.not200.not236 = icmp sgt i64 %75, 0
  %or.cond280 = and i1 %.not196238, %.not200.not236
  br i1 %or.cond280, label %.lr.ph.us.preheader, label %.thread224

.lr.ph.us.preheader:                              ; preds = %69
  %77 = load i64, ptr %0, align 8, !tbaa !5
  %78 = sub i64 %77, %75
  %79 = shl i64 %78, 3
  %80 = shl i64 %17, 3
  %81 = add i64 %77, 1
  %82 = sub i64 %81, %75
  %smax = tail call i64 @llvm.smax.i64(i64 %77, i64 %82)
  %83 = add i64 %75, %smax
  %84 = sub i64 %83, %77
  %85 = shl nuw i64 %84, 3
  %86 = getelementptr i8, ptr %3, i64 %79
  %xtraiter = and i64 %76, 7
  %87 = sub i64 %75, %.pre266
  %88 = icmp ugt i64 %87, -8
  br i1 %88, label %.thread224.loopexit.unr-lcssa, label %.lr.ph.us.preheader.new

.lr.ph.us.preheader.new:                          ; preds = %.lr.ph.us.preheader
  %unroll_iter = and i64 %76, 9223372036854775800
  br label %.lr.ph.us

.lr.ph.us:                                        ; preds = %.lr.ph.us, %.lr.ph.us.preheader.new
  %indvar = phi i64 [ 0, %.lr.ph.us.preheader.new ], [ %indvar.next.7, %.lr.ph.us ]
  %niter = phi i64 [ 0, %.lr.ph.us.preheader.new ], [ %niter.next.7, %.lr.ph.us ]
  %89 = mul i64 %80, %indvar
  %scevgep = getelementptr i8, ptr %86, i64 %89
  tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep, i8 0, i64 %85, i1 false), !tbaa !9
  %indvar.next = or disjoint i64 %indvar, 1
  %90 = mul i64 %80, %indvar.next
  %scevgep.1 = getelementptr i8, ptr %86, i64 %90
  tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep.1, i8 0, i64 %85, i1 false), !tbaa !9
  %indvar.next.1 = or disjoint i64 %indvar, 2
  %91 = mul i64 %80, %indvar.next.1
  %scevgep.2 = getelementptr i8, ptr %86, i64 %91
  tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep.2, i8 0, i64 %85, i1 false), !tbaa !9
  %indvar.next.2 = or disjoint i64 %indvar, 3
  %92 = mul i64 %80, %indvar.next.2
  %scevgep.3 = getelementptr i8, ptr %86, i64 %92
  tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep.3, i8 0, i64 %85, i1 false), !tbaa !9
  %indvar.next.3 = or disjoint i64 %indvar, 4
  %93 = mul i64 %80, %indvar.next.3
  %scevgep.4 = getelementptr i8, ptr %86, i64 %93
  tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep.4, i8 0, i64 %85, i1 false), !tbaa !9
  %indvar.next.4 = or disjoint i64 %indvar, 5
  %94 = mul i64 %80, %indvar.next.4
  %scevgep.5 = getelementptr i8, ptr %86, i64 %94
  tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep.5, i8 0, i64 %85, i1 false), !tbaa !9
  %indvar.next.5 = or disjoint i64 %indvar, 6
  %95 = mul i64 %80, %indvar.next.5
  %scevgep.6 = getelementptr i8, ptr %86, i64 %95
  tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep.6, i8 0, i64 %85, i1 false), !tbaa !9
  %indvar.next.6 = or disjoint i64 %indvar, 7
  %96 = mul i64 %80, %indvar.next.6
  %scevgep.7 = getelementptr i8, ptr %86, i64 %96
  tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep.7, i8 0, i64 %85, i1 false), !tbaa !9
  %indvar.next.7 = add nuw nsw i64 %indvar, 8
  %niter.next.7 = add i64 %niter, 8
  %niter.ncmp.7 = icmp eq i64 %niter.next.7, %unroll_iter
  br i1 %niter.ncmp.7, label %.thread224.loopexit.unr-lcssa, label %.lr.ph.us, !llvm.loop !11

.thread224.loopexit.unr-lcssa:                    ; preds = %.lr.ph.us, %.lr.ph.us.preheader
  %indvar.unr = phi i64 [ 0, %.lr.ph.us.preheader ], [ %indvar.next.7, %.lr.ph.us ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.thread224, label %.lr.ph.us.epil

.lr.ph.us.epil:                                   ; preds = %.thread224.loopexit.unr-lcssa, %.lr.ph.us.epil
  %indvar.epil = phi i64 [ %indvar.next.epil, %.lr.ph.us.epil ], [ %indvar.unr, %.thread224.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph.us.epil ], [ 0, %.thread224.loopexit.unr-lcssa ]
  %97 = mul i64 %80, %indvar.epil
  %scevgep.epil = getelementptr i8, ptr %86, i64 %97
  tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep.epil, i8 0, i64 %85, i1 false), !tbaa !9
  %indvar.next.epil = add nuw nsw i64 %indvar.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %.thread224, label %.lr.ph.us.epil, !llvm.loop !13

.thread224:                                       ; preds = %.thread224.loopexit.unr-lcssa, %.lr.ph.us.epil, %69, %..thread224_crit_edge, %49, %.thread213
  %98 = phi i64 [ %66, %.thread213 ], [ %.pre267, %..thread224_crit_edge ], [ %.pre268, %49 ], [ %66, %69 ], [ %66, %.lr.ph.us.epil ], [ %66, %.thread224.loopexit.unr-lcssa ]
  %99 = phi i64 [ %.pre266, %.thread213 ], [ %.pre265, %..thread224_crit_edge ], [ %.pre266277, %49 ], [ %.pre266, %69 ], [ %.pre266, %.lr.ph.us.epil ], [ %.pre266, %.thread224.loopexit.unr-lcssa ]
  %.0171223 = phi i64 [ %.0171222, %.thread213 ], [ %59, %..thread224_crit_edge ], [ %.pre266277, %49 ], [ %.0171222, %69 ], [ %.0171222, %.lr.ph.us.epil ], [ %.0171222, %.thread224.loopexit.unr-lcssa ]
  %.2220 = phi i64 [ %.2219, %.thread213 ], [ %63, %..thread224_crit_edge ], [ %.0174, %49 ], [ %.2219, %69 ], [ %.2219, %.lr.ph.us.epil ], [ %.2219, %.thread224.loopexit.unr-lcssa ]
  %.0173 = phi i64 [ 0, %.thread213 ], [ 0, %..thread224_crit_edge ], [ 0, %49 ], [ %75, %69 ], [ %75, %.lr.ph.us.epil ], [ %75, %.thread224.loopexit.unr-lcssa ]
  %100 = load i64, ptr %0, align 8, !tbaa !5
  %101 = sub nsw i64 %100, %.0173
  store i64 %101, ptr %10, align 8, !tbaa !5
  %102 = sub nsw i64 %99, %.0173
  store i64 %102, ptr %11, align 8, !tbaa !5
  %103 = sub nsw i64 %98, %.0173
  store i64 %103, ptr %12, align 8, !tbaa !5
  %104 = call i32 @dorg2l_(ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %15) #5
  %105 = icmp sgt i64 %.0173, 0
  br i1 %105, label %106, label %.loopexit

106:                                              ; preds = %.thread224
  %107 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %107, ptr %10, align 8, !tbaa !5
  store i64 %.2220, ptr %11, align 8, !tbaa !5
  %reass.sub = sub i64 %107, %.0173
  %108 = add i64 %reass.sub, 1
  %invariant.gep249 = getelementptr i8, ptr %19, i64 8
  %109 = icmp slt i64 %.2220, 0
  %110 = icmp sge i64 %108, %107
  %111 = icmp sle i64 %108, %107
  %.in255 = select i1 %109, i1 %110, i1 %111
  br i1 %.in255, label %.lr.ph258.preheader, label %.loopexit

.lr.ph258.preheader:                              ; preds = %106
  %112 = shl i64 %17, 3
  %.pre269 = load i64, ptr %1, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %3, i64 -8
  br label %.lr.ph258

.lr.ph258:                                        ; preds = %.lr.ph258.preheader, %._crit_edge248
  %113 = phi i64 [ %156, %._crit_edge248 ], [ %.pre269, %.lr.ph258.preheader ]
  %114 = phi i64 [ %157, %._crit_edge248 ], [ %107, %.lr.ph258.preheader ]
  %.1179256 = phi i64 [ %179, %._crit_edge248 ], [ %108, %.lr.ph258.preheader ]
  %115 = sub nsw i64 %114, %.1179256
  %116 = add nsw i64 %115, 1
  store i64 %116, ptr %13, align 8, !tbaa !5
  %117 = call i64 @llvm.smin.i64(i64 %.2220, i64 %116)
  store i64 %117, ptr %14, align 8, !tbaa !5
  %118 = sub nsw i64 %113, %114
  %119 = add nsw i64 %118, %.1179256
  %120 = icmp sgt i64 %119, 1
  %.pre271 = load i64, ptr %0, align 8, !tbaa !5
  br i1 %120, label %121, label %.lr.ph258._crit_edge

.lr.ph258._crit_edge:                             ; preds = %.lr.ph258
  %.pre278 = add i64 %.1179256, -1
  br label %143

121:                                              ; preds = %.lr.ph258
  %122 = xor i64 %114, -1
  %123 = add i64 %.1179256, %122
  %124 = add i64 %123, %117
  %125 = add i64 %124, %.pre271
  store i64 %125, ptr %12, align 8, !tbaa !5
  %126 = mul nsw i64 %119, %17
  %gep250 = getelementptr double, ptr %invariant.gep249, i64 %126
  %127 = getelementptr inbounds double, ptr %20, i64 %.1179256
  %128 = call i32 @dlarft_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef %gep250, ptr noundef nonnull %4, ptr noundef nonnull %127, ptr noundef nonnull %6, ptr noundef nonnull %16) #5
  %129 = load i64, ptr %0, align 8, !tbaa !5
  %130 = load i64, ptr %2, align 8, !tbaa !5
  %131 = load i64, ptr %14, align 8, !tbaa !5
  %132 = add i64 %.1179256, -1
  %133 = add i64 %132, %129
  %134 = sub i64 %133, %130
  %135 = add i64 %134, %131
  store i64 %135, ptr %12, align 8, !tbaa !5
  %136 = load i64, ptr %1, align 8, !tbaa !5
  %137 = sub nsw i64 %136, %130
  %138 = add nsw i64 %137, %.1179256
  %139 = add nsw i64 %138, -1
  store i64 %139, ptr %13, align 8, !tbaa !5
  %140 = mul nsw i64 %138, %17
  %gep252 = getelementptr double, ptr %invariant.gep249, i64 %140
  %141 = getelementptr double, ptr %6, i64 %131
  %142 = call i32 @dlarfb_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef %gep252, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef nonnull %16, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %141, ptr noundef nonnull %16) #5
  %.pre270 = load i64, ptr %0, align 8, !tbaa !5
  %.pre272 = load i64, ptr %2, align 8, !tbaa !5
  %.pre273 = load i64, ptr %14, align 8, !tbaa !5
  %.pre274 = load i64, ptr %1, align 8, !tbaa !5
  br label %143

143:                                              ; preds = %.lr.ph258._crit_edge, %121
  %.pre-phi = phi i64 [ %.pre278, %.lr.ph258._crit_edge ], [ %132, %121 ]
  %144 = phi i64 [ %113, %.lr.ph258._crit_edge ], [ %.pre274, %121 ]
  %145 = phi i64 [ %117, %.lr.ph258._crit_edge ], [ %.pre273, %121 ]
  %146 = phi i64 [ %114, %.lr.ph258._crit_edge ], [ %.pre272, %121 ]
  %147 = phi i64 [ %.pre271, %.lr.ph258._crit_edge ], [ %.pre270, %121 ]
  %148 = add i64 %.pre-phi, %147
  %149 = sub i64 %148, %146
  %150 = add i64 %149, %145
  store i64 %150, ptr %12, align 8, !tbaa !5
  %151 = sub i64 %.1179256, %146
  %152 = add i64 %151, %144
  %153 = mul nsw i64 %152, %17
  %gep254 = getelementptr double, ptr %invariant.gep249, i64 %153
  %154 = getelementptr inbounds double, ptr %20, i64 %.1179256
  %155 = call i32 @dorg2l_(ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef nonnull %14, ptr noundef %gep254, ptr noundef nonnull %4, ptr noundef nonnull %154, ptr noundef nonnull %6, ptr noundef nonnull %15) #5
  %156 = load i64, ptr %1, align 8, !tbaa !5
  %157 = load i64, ptr %2, align 8, !tbaa !5
  %158 = sub i64 %156, %157
  %159 = add i64 %158, %.1179256
  %160 = load i64, ptr %14, align 8, !tbaa !5
  %161 = add nsw i64 %159, %160
  %162 = add nsw i64 %161, -1
  store i64 %162, ptr %12, align 8, !tbaa !5
  %.not198.not244 = icmp sgt i64 %160, 0
  br i1 %.not198.not244, label %.lr.ph247, label %._crit_edge248

.lr.ph247:                                        ; preds = %143
  %163 = load i64, ptr %0, align 8, !tbaa !5
  store i64 %163, ptr %13, align 8, !tbaa !5
  %164 = sub i64 %.1179256, %157
  %165 = add i64 %164, %160
  %166 = add i64 %165, %163
  %.not199242 = icmp sgt i64 %166, %163
  br i1 %.not199242, label %._crit_edge248, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %.lr.ph247
  %167 = shl i64 %159, 3
  %168 = add i64 %167, -8
  %169 = mul i64 %17, %168
  %170 = shl i64 %166, 3
  %171 = add i64 %157, 1
  %172 = add i64 %.1179256, %160
  %173 = sub i64 %171, %172
  %174 = shl nuw i64 %173, 3
  %gep = getelementptr i8, ptr %invariant.gep, i64 %169
  %175 = getelementptr i8, ptr %gep, i64 %170
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %.lr.ph
  %indvar261 = phi i64 [ 0, %.lr.ph.preheader ], [ %indvar.next262, %.lr.ph ]
  %.1177245 = phi i64 [ %159, %.lr.ph.preheader ], [ %177, %.lr.ph ]
  %176 = mul i64 %112, %indvar261
  %scevgep263 = getelementptr i8, ptr %175, i64 %176
  call void @llvm.memset.p0.i64(ptr align 8 %scevgep263, i8 0, i64 %174, i1 false), !tbaa !9
  %177 = add nsw i64 %.1177245, 1
  %.not198.not = icmp slt i64 %177, %161
  %indvar.next262 = add i64 %indvar261, 1
  br i1 %.not198.not, label %.lr.ph, label %._crit_edge248, !llvm.loop !15

._crit_edge248:                                   ; preds = %.lr.ph, %.lr.ph247, %143
  %178 = load i64, ptr %11, align 8, !tbaa !5
  %179 = add nsw i64 %178, %.1179256
  %180 = icmp slt i64 %178, 0
  %181 = load i64, ptr %10, align 8
  %182 = icmp sge i64 %179, %181
  %183 = icmp sle i64 %179, %181
  %.in = select i1 %180, i1 %182, i1 %183
  br i1 %.in, label %.lr.ph258, label %.loopexit, !llvm.loop !16

.loopexit:                                        ; preds = %._crit_edge248, %106, %.thread224
  %184 = sitofp i64 %.0171223 to double
  store double %184, ptr %6, align 8, !tbaa !9
  br label %185

185:                                              ; preds = %47, %.loopexit, %.thread209
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #5
  ret i32 0
}

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

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

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

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

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

declare i32 @dlarfb_(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 i64 @llvm.smax.i64(i64, i64) #3

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.umax.i64(i64, i64) #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 = !{!"long", !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"}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.unroll.disable"}
!15 = distinct !{!15, !12}
!16 = distinct !{!16, !12}


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