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

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

; Function Attrs: nounwind uwtable
define dso_local i32 @dgeqp3rk_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16) #0 {
  %18 = alloca i32, align 4
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca double, align 8
  %41 = alloca double, align 8
  %42 = alloca double, align 8
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca double, align 8
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca double, align 8
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca i32, align 4
  %62 = alloca double, align 8
  %63 = alloca i32, align 4
  %64 = alloca i32, align 4
  %65 = alloca i32, align 4
  store ptr %0, ptr %19, align 8, !tbaa !5
  store ptr %1, ptr %20, align 8, !tbaa !5
  store ptr %2, ptr %21, align 8, !tbaa !5
  store ptr %3, ptr %22, align 8, !tbaa !5
  store ptr %4, ptr %23, align 8, !tbaa !5
  store ptr %5, ptr %24, align 8, !tbaa !5
  store ptr %6, ptr %25, align 8, !tbaa !5
  store ptr %7, ptr %26, align 8, !tbaa !5
  store ptr %8, ptr %27, align 8, !tbaa !5
  store ptr %9, ptr %28, align 8, !tbaa !5
  store ptr %10, ptr %29, align 8, !tbaa !5
  store ptr %11, ptr %30, align 8, !tbaa !5
  store ptr %12, ptr %31, align 8, !tbaa !5
  store ptr %13, ptr %32, align 8, !tbaa !5
  store ptr %14, ptr %33, align 8, !tbaa !5
  store ptr %15, ptr %34, align 8, !tbaa !5
  store ptr %16, ptr %35, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #3
  %66 = load ptr, ptr %26, align 8, !tbaa !5
  %67 = load i32, ptr %66, align 4, !tbaa !9
  store i32 %67, ptr %36, align 4, !tbaa !9
  %68 = load i32, ptr %36, align 4, !tbaa !9
  %69 = mul nsw i32 %68, 1
  %70 = add nsw i32 1, %69
  store i32 %70, ptr %37, align 4, !tbaa !9
  %71 = load i32, ptr %37, align 4, !tbaa !9
  %72 = load ptr, ptr %25, align 8, !tbaa !5
  %73 = sext i32 %71 to i64
  %74 = sub i64 0, %73
  %75 = getelementptr inbounds double, ptr %72, i64 %74
  store ptr %75, ptr %25, align 8, !tbaa !5
  %76 = load ptr, ptr %30, align 8, !tbaa !5
  %77 = getelementptr inbounds i32, ptr %76, i32 -1
  store ptr %77, ptr %30, align 8, !tbaa !5
  %78 = load ptr, ptr %31, align 8, !tbaa !5
  %79 = getelementptr inbounds double, ptr %78, i32 -1
  store ptr %79, ptr %31, align 8, !tbaa !5
  %80 = load ptr, ptr %32, align 8, !tbaa !5
  %81 = getelementptr inbounds double, ptr %80, i32 -1
  store ptr %81, ptr %32, align 8, !tbaa !5
  %82 = load ptr, ptr %34, align 8, !tbaa !5
  %83 = getelementptr inbounds i32, ptr %82, i32 -1
  store ptr %83, ptr %34, align 8, !tbaa !5
  %84 = load ptr, ptr %35, align 8, !tbaa !5
  store i32 0, ptr %84, align 4, !tbaa !9
  %85 = load ptr, ptr %33, align 8, !tbaa !5
  %86 = load i32, ptr %85, align 4, !tbaa !9
  %87 = icmp eq i32 %86, -1
  %88 = zext i1 %87 to i32
  store i32 %88, ptr %60, align 4, !tbaa !9
  %89 = load ptr, ptr %19, align 8, !tbaa !5
  %90 = load i32, ptr %89, align 4, !tbaa !9
  %91 = icmp slt i32 %90, 0
  br i1 %91, label %92, label %94

92:                                               ; preds = %17
  %93 = load ptr, ptr %35, align 8, !tbaa !5
  store i32 -1, ptr %93, align 4, !tbaa !9
  br label %145

94:                                               ; preds = %17
  %95 = load ptr, ptr %20, align 8, !tbaa !5
  %96 = load i32, ptr %95, align 4, !tbaa !9
  %97 = icmp slt i32 %96, 0
  br i1 %97, label %98, label %100

98:                                               ; preds = %94
  %99 = load ptr, ptr %35, align 8, !tbaa !5
  store i32 -2, ptr %99, align 4, !tbaa !9
  br label %144

100:                                              ; preds = %94
  %101 = load ptr, ptr %21, align 8, !tbaa !5
  %102 = load i32, ptr %101, align 4, !tbaa !9
  %103 = icmp slt i32 %102, 0
  br i1 %103, label %104, label %106

104:                                              ; preds = %100
  %105 = load ptr, ptr %35, align 8, !tbaa !5
  store i32 -3, ptr %105, align 4, !tbaa !9
  br label %143

106:                                              ; preds = %100
  %107 = load ptr, ptr %22, align 8, !tbaa !5
  %108 = load i32, ptr %107, align 4, !tbaa !9
  %109 = icmp slt i32 %108, 0
  br i1 %109, label %110, label %112

110:                                              ; preds = %106
  %111 = load ptr, ptr %35, align 8, !tbaa !5
  store i32 -4, ptr %111, align 4, !tbaa !9
  br label %142

112:                                              ; preds = %106
  %113 = load ptr, ptr %23, align 8, !tbaa !5
  %114 = call i32 @disnan_(ptr noundef %113)
  %115 = icmp ne i32 %114, 0
  br i1 %115, label %116, label %118

116:                                              ; preds = %112
  %117 = load ptr, ptr %35, align 8, !tbaa !5
  store i32 -5, ptr %117, align 4, !tbaa !9
  br label %141

118:                                              ; preds = %112
  %119 = load ptr, ptr %24, align 8, !tbaa !5
  %120 = call i32 @disnan_(ptr noundef %119)
  %121 = icmp ne i32 %120, 0
  br i1 %121, label %122, label %124

122:                                              ; preds = %118
  %123 = load ptr, ptr %35, align 8, !tbaa !5
  store i32 -6, ptr %123, align 4, !tbaa !9
  br label %140

124:                                              ; preds = %118
  %125 = load ptr, ptr %26, align 8, !tbaa !5
  %126 = load i32, ptr %125, align 4, !tbaa !9
  %127 = load ptr, ptr %19, align 8, !tbaa !5
  %128 = load i32, ptr %127, align 4, !tbaa !9
  %129 = icmp sge i32 1, %128
  br i1 %129, label %130, label %131

130:                                              ; preds = %124
  br label %134

131:                                              ; preds = %124
  %132 = load ptr, ptr %19, align 8, !tbaa !5
  %133 = load i32, ptr %132, align 4, !tbaa !9
  br label %134

134:                                              ; preds = %131, %130
  %135 = phi i32 [ 1, %130 ], [ %133, %131 ]
  %136 = icmp slt i32 %126, %135
  br i1 %136, label %137, label %139

137:                                              ; preds = %134
  %138 = load ptr, ptr %35, align 8, !tbaa !5
  store i32 -8, ptr %138, align 4, !tbaa !9
  br label %139

139:                                              ; preds = %137, %134
  br label %140

140:                                              ; preds = %139, %122
  br label %141

141:                                              ; preds = %140, %116
  br label %142

142:                                              ; preds = %141, %110
  br label %143

143:                                              ; preds = %142, %104
  br label %144

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

145:                                              ; preds = %144, %92
  %146 = load ptr, ptr %35, align 8, !tbaa !5
  %147 = load i32, ptr %146, align 4, !tbaa !9
  %148 = icmp eq i32 %147, 0
  br i1 %148, label %149, label %204

149:                                              ; preds = %145
  %150 = load ptr, ptr %19, align 8, !tbaa !5
  %151 = load i32, ptr %150, align 4, !tbaa !9
  %152 = load ptr, ptr %20, align 8, !tbaa !5
  %153 = load i32, ptr %152, align 4, !tbaa !9
  %154 = icmp sle i32 %151, %153
  br i1 %154, label %155, label %158

155:                                              ; preds = %149
  %156 = load ptr, ptr %19, align 8, !tbaa !5
  %157 = load i32, ptr %156, align 4, !tbaa !9
  br label %161

158:                                              ; preds = %149
  %159 = load ptr, ptr %20, align 8, !tbaa !5
  %160 = load i32, ptr %159, align 4, !tbaa !9
  br label %161

161:                                              ; preds = %158, %155
  %162 = phi i32 [ %157, %155 ], [ %160, %158 ]
  store i32 %162, ptr %51, align 4, !tbaa !9
  %163 = load i32, ptr %51, align 4, !tbaa !9
  %164 = icmp eq i32 %163, 0
  br i1 %164, label %165, label %166

165:                                              ; preds = %161
  store i32 1, ptr %63, align 4, !tbaa !9
  store i32 1, ptr %59, align 4, !tbaa !9
  br label %189

166:                                              ; preds = %161
  %167 = load ptr, ptr %20, align 8, !tbaa !5
  %168 = load i32, ptr %167, align 4, !tbaa !9
  %169 = mul nsw i32 %168, 3
  %170 = load ptr, ptr %21, align 8, !tbaa !5
  %171 = load i32, ptr %170, align 4, !tbaa !9
  %172 = add nsw i32 %169, %171
  %173 = sub nsw i32 %172, 1
  store i32 %173, ptr %63, align 4, !tbaa !9
  %174 = load ptr, ptr %19, align 8, !tbaa !5
  %175 = load ptr, ptr %20, align 8, !tbaa !5
  %176 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %174, ptr noundef %175, ptr noundef @c_n1, ptr noundef @c_n1, i32 noundef 8, i32 noundef 1)
  store i32 %176, ptr %54, align 4, !tbaa !9
  %177 = load ptr, ptr %20, align 8, !tbaa !5
  %178 = load i32, ptr %177, align 4, !tbaa !9
  %179 = shl i32 %178, 1
  %180 = load i32, ptr %54, align 4, !tbaa !9
  %181 = load ptr, ptr %20, align 8, !tbaa !5
  %182 = load i32, ptr %181, align 4, !tbaa !9
  %183 = load ptr, ptr %21, align 8, !tbaa !5
  %184 = load i32, ptr %183, align 4, !tbaa !9
  %185 = add nsw i32 %182, %184
  %186 = add nsw i32 %185, 1
  %187 = mul nsw i32 %180, %186
  %188 = add nsw i32 %179, %187
  store i32 %188, ptr %59, align 4, !tbaa !9
  br label %189

189:                                              ; preds = %166, %165
  %190 = load i32, ptr %59, align 4, !tbaa !9
  %191 = sitofp i32 %190 to double
  %192 = load ptr, ptr %32, align 8, !tbaa !5
  %193 = getelementptr inbounds double, ptr %192, i64 1
  store double %191, ptr %193, align 8, !tbaa !11
  %194 = load ptr, ptr %33, align 8, !tbaa !5
  %195 = load i32, ptr %194, align 4, !tbaa !9
  %196 = load i32, ptr %63, align 4, !tbaa !9
  %197 = icmp slt i32 %195, %196
  br i1 %197, label %198, label %203

198:                                              ; preds = %189
  %199 = load i32, ptr %60, align 4, !tbaa !9
  %200 = icmp ne i32 %199, 0
  br i1 %200, label %203, label %201

201:                                              ; preds = %198
  %202 = load ptr, ptr %35, align 8, !tbaa !5
  store i32 -15, ptr %202, align 4, !tbaa !9
  br label %203

203:                                              ; preds = %201, %198, %189
  br label %204

204:                                              ; preds = %203, %145
  %205 = load ptr, ptr %35, align 8, !tbaa !5
  %206 = load i32, ptr %205, align 4, !tbaa !9
  %207 = icmp ne i32 %206, 0
  br i1 %207, label %208, label %213

208:                                              ; preds = %204
  %209 = load ptr, ptr %35, align 8, !tbaa !5
  %210 = load i32, ptr %209, align 4, !tbaa !9
  %211 = sub nsw i32 0, %210
  store i32 %211, ptr %38, align 4, !tbaa !9
  %212 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %38)
  store i32 0, ptr %18, align 4
  store i32 1, ptr %65, align 4
  br label %809

213:                                              ; preds = %204
  %214 = load i32, ptr %60, align 4, !tbaa !9
  %215 = icmp ne i32 %214, 0
  br i1 %215, label %216, label %217

216:                                              ; preds = %213
  store i32 0, ptr %18, align 4
  store i32 1, ptr %65, align 4
  br label %809

217:                                              ; preds = %213
  br label %218

218:                                              ; preds = %217
  %219 = load i32, ptr %51, align 4, !tbaa !9
  %220 = icmp eq i32 %219, 0
  br i1 %220, label %221, label %229

221:                                              ; preds = %218
  %222 = load ptr, ptr %27, align 8, !tbaa !5
  store i32 0, ptr %222, align 4, !tbaa !9
  %223 = load ptr, ptr %28, align 8, !tbaa !5
  store double 0.000000e+00, ptr %223, align 8, !tbaa !11
  %224 = load ptr, ptr %29, align 8, !tbaa !5
  store double 0.000000e+00, ptr %224, align 8, !tbaa !11
  %225 = load i32, ptr %59, align 4, !tbaa !9
  %226 = sitofp i32 %225 to double
  %227 = load ptr, ptr %32, align 8, !tbaa !5
  %228 = getelementptr inbounds double, ptr %227, i64 1
  store double %226, ptr %228, align 8, !tbaa !11
  store i32 0, ptr %18, align 4
  store i32 1, ptr %65, align 4
  br label %809

229:                                              ; preds = %218
  %230 = load ptr, ptr %20, align 8, !tbaa !5
  %231 = load i32, ptr %230, align 4, !tbaa !9
  store i32 %231, ptr %38, align 4, !tbaa !9
  store i32 1, ptr %45, align 4, !tbaa !9
  br label %232

232:                                              ; preds = %242, %229
  %233 = load i32, ptr %45, align 4, !tbaa !9
  %234 = load i32, ptr %38, align 4, !tbaa !9
  %235 = icmp sle i32 %233, %234
  br i1 %235, label %236, label %245

236:                                              ; preds = %232
  %237 = load i32, ptr %45, align 4, !tbaa !9
  %238 = load ptr, ptr %30, align 8, !tbaa !5
  %239 = load i32, ptr %45, align 4, !tbaa !9
  %240 = sext i32 %239 to i64
  %241 = getelementptr inbounds i32, ptr %238, i64 %240
  store i32 %237, ptr %241, align 4, !tbaa !9
  br label %242

242:                                              ; preds = %236
  %243 = load i32, ptr %45, align 4, !tbaa !9
  %244 = add nsw i32 %243, 1
  store i32 %244, ptr %45, align 4, !tbaa !9
  br label %232, !llvm.loop !13

245:                                              ; preds = %232
  %246 = load ptr, ptr %20, align 8, !tbaa !5
  %247 = load i32, ptr %246, align 4, !tbaa !9
  store i32 %247, ptr %38, align 4, !tbaa !9
  store i32 1, ptr %45, align 4, !tbaa !9
  br label %248

248:                                              ; preds = %278, %245
  %249 = load i32, ptr %45, align 4, !tbaa !9
  %250 = load i32, ptr %38, align 4, !tbaa !9
  %251 = icmp sle i32 %249, %250
  br i1 %251, label %252, label %281

252:                                              ; preds = %248
  %253 = load ptr, ptr %19, align 8, !tbaa !5
  %254 = load ptr, ptr %25, align 8, !tbaa !5
  %255 = load i32, ptr %45, align 4, !tbaa !9
  %256 = load i32, ptr %36, align 4, !tbaa !9
  %257 = mul nsw i32 %255, %256
  %258 = add nsw i32 %257, 1
  %259 = sext i32 %258 to i64
  %260 = getelementptr inbounds double, ptr %254, i64 %259
  %261 = call double @dnrm2_(ptr noundef %253, ptr noundef %260, ptr noundef @c__1)
  %262 = load ptr, ptr %32, align 8, !tbaa !5
  %263 = load i32, ptr %45, align 4, !tbaa !9
  %264 = sext i32 %263 to i64
  %265 = getelementptr inbounds double, ptr %262, i64 %264
  store double %261, ptr %265, align 8, !tbaa !11
  %266 = load ptr, ptr %32, align 8, !tbaa !5
  %267 = load i32, ptr %45, align 4, !tbaa !9
  %268 = sext i32 %267 to i64
  %269 = getelementptr inbounds double, ptr %266, i64 %268
  %270 = load double, ptr %269, align 8, !tbaa !11
  %271 = load ptr, ptr %32, align 8, !tbaa !5
  %272 = load ptr, ptr %20, align 8, !tbaa !5
  %273 = load i32, ptr %272, align 4, !tbaa !9
  %274 = load i32, ptr %45, align 4, !tbaa !9
  %275 = add nsw i32 %273, %274
  %276 = sext i32 %275 to i64
  %277 = getelementptr inbounds double, ptr %271, i64 %276
  store double %270, ptr %277, align 8, !tbaa !11
  br label %278

278:                                              ; preds = %252
  %279 = load i32, ptr %45, align 4, !tbaa !9
  %280 = add nsw i32 %279, 1
  store i32 %280, ptr %45, align 4, !tbaa !9
  br label %248, !llvm.loop !15

281:                                              ; preds = %248
  %282 = load ptr, ptr %20, align 8, !tbaa !5
  %283 = load ptr, ptr %32, align 8, !tbaa !5
  %284 = getelementptr inbounds double, ptr %283, i64 1
  %285 = call i32 @idamax_(ptr noundef %282, ptr noundef %284, ptr noundef @c__1)
  store i32 %285, ptr %58, align 4, !tbaa !9
  %286 = load ptr, ptr %32, align 8, !tbaa !5
  %287 = load i32, ptr %58, align 4, !tbaa !9
  %288 = sext i32 %287 to i64
  %289 = getelementptr inbounds double, ptr %286, i64 %288
  %290 = load double, ptr %289, align 8, !tbaa !11
  store double %290, ptr %42, align 8, !tbaa !11
  %291 = call i32 @disnan_(ptr noundef %42)
  %292 = icmp ne i32 %291, 0
  br i1 %292, label %293, label %305

293:                                              ; preds = %281
  %294 = load ptr, ptr %27, align 8, !tbaa !5
  store i32 0, ptr %294, align 4, !tbaa !9
  %295 = load i32, ptr %58, align 4, !tbaa !9
  %296 = load ptr, ptr %35, align 8, !tbaa !5
  store i32 %295, ptr %296, align 4, !tbaa !9
  %297 = load double, ptr %42, align 8, !tbaa !11
  %298 = load ptr, ptr %28, align 8, !tbaa !5
  store double %297, ptr %298, align 8, !tbaa !11
  %299 = load double, ptr %42, align 8, !tbaa !11
  %300 = load ptr, ptr %29, align 8, !tbaa !5
  store double %299, ptr %300, align 8, !tbaa !11
  %301 = load i32, ptr %59, align 4, !tbaa !9
  %302 = sitofp i32 %301 to double
  %303 = load ptr, ptr %32, align 8, !tbaa !5
  %304 = getelementptr inbounds double, ptr %303, i64 1
  store double %302, ptr %304, align 8, !tbaa !11
  store i32 0, ptr %18, align 4
  store i32 1, ptr %65, align 4
  br label %809

305:                                              ; preds = %281
  %306 = load double, ptr %42, align 8, !tbaa !11
  %307 = fcmp oeq double %306, 0.000000e+00
  br i1 %307, label %308, label %330

308:                                              ; preds = %305
  %309 = load ptr, ptr %27, align 8, !tbaa !5
  store i32 0, ptr %309, align 4, !tbaa !9
  %310 = load ptr, ptr %28, align 8, !tbaa !5
  store double 0.000000e+00, ptr %310, align 8, !tbaa !11
  %311 = load ptr, ptr %29, align 8, !tbaa !5
  store double 0.000000e+00, ptr %311, align 8, !tbaa !11
  %312 = load i32, ptr %51, align 4, !tbaa !9
  store i32 %312, ptr %38, align 4, !tbaa !9
  store i32 1, ptr %45, align 4, !tbaa !9
  br label %313

313:                                              ; preds = %322, %308
  %314 = load i32, ptr %45, align 4, !tbaa !9
  %315 = load i32, ptr %38, align 4, !tbaa !9
  %316 = icmp sle i32 %314, %315
  br i1 %316, label %317, label %325

317:                                              ; preds = %313
  %318 = load ptr, ptr %31, align 8, !tbaa !5
  %319 = load i32, ptr %45, align 4, !tbaa !9
  %320 = sext i32 %319 to i64
  %321 = getelementptr inbounds double, ptr %318, i64 %320
  store double 0.000000e+00, ptr %321, align 8, !tbaa !11
  br label %322

322:                                              ; preds = %317
  %323 = load i32, ptr %45, align 4, !tbaa !9
  %324 = add nsw i32 %323, 1
  store i32 %324, ptr %45, align 4, !tbaa !9
  br label %313, !llvm.loop !16

325:                                              ; preds = %313
  %326 = load i32, ptr %59, align 4, !tbaa !9
  %327 = sitofp i32 %326 to double
  %328 = load ptr, ptr %32, align 8, !tbaa !5
  %329 = getelementptr inbounds double, ptr %328, i64 1
  store double %327, ptr %329, align 8, !tbaa !11
  store i32 0, ptr %18, align 4
  store i32 1, ptr %65, align 4
  br label %809

330:                                              ; preds = %305
  %331 = call double @dlamch_(ptr noundef @.str.2)
  store double %331, ptr %52, align 8, !tbaa !11
  %332 = load double, ptr %42, align 8, !tbaa !11
  %333 = load double, ptr %52, align 8, !tbaa !11
  %334 = fcmp ogt double %332, %333
  br i1 %334, label %335, label %341

335:                                              ; preds = %330
  %336 = load ptr, ptr %20, align 8, !tbaa !5
  %337 = load i32, ptr %336, align 4, !tbaa !9
  %338 = load i32, ptr %58, align 4, !tbaa !9
  %339 = add nsw i32 %337, %338
  %340 = load ptr, ptr %35, align 8, !tbaa !5
  store i32 %339, ptr %340, align 4, !tbaa !9
  br label %341

341:                                              ; preds = %335, %330
  %342 = load ptr, ptr %22, align 8, !tbaa !5
  %343 = load i32, ptr %342, align 4, !tbaa !9
  %344 = icmp eq i32 %343, 0
  br i1 %344, label %345, label %368

345:                                              ; preds = %341
  %346 = load ptr, ptr %27, align 8, !tbaa !5
  store i32 0, ptr %346, align 4, !tbaa !9
  %347 = load double, ptr %42, align 8, !tbaa !11
  %348 = load ptr, ptr %28, align 8, !tbaa !5
  store double %347, ptr %348, align 8, !tbaa !11
  %349 = load ptr, ptr %29, align 8, !tbaa !5
  store double 1.000000e+00, ptr %349, align 8, !tbaa !11
  %350 = load i32, ptr %51, align 4, !tbaa !9
  store i32 %350, ptr %38, align 4, !tbaa !9
  store i32 1, ptr %45, align 4, !tbaa !9
  br label %351

351:                                              ; preds = %360, %345
  %352 = load i32, ptr %45, align 4, !tbaa !9
  %353 = load i32, ptr %38, align 4, !tbaa !9
  %354 = icmp sle i32 %352, %353
  br i1 %354, label %355, label %363

355:                                              ; preds = %351
  %356 = load ptr, ptr %31, align 8, !tbaa !5
  %357 = load i32, ptr %45, align 4, !tbaa !9
  %358 = sext i32 %357 to i64
  %359 = getelementptr inbounds double, ptr %356, i64 %358
  store double 0.000000e+00, ptr %359, align 8, !tbaa !11
  br label %360

360:                                              ; preds = %355
  %361 = load i32, ptr %45, align 4, !tbaa !9
  %362 = add nsw i32 %361, 1
  store i32 %362, ptr %45, align 4, !tbaa !9
  br label %351, !llvm.loop !17

363:                                              ; preds = %351
  %364 = load i32, ptr %59, align 4, !tbaa !9
  %365 = sitofp i32 %364 to double
  %366 = load ptr, ptr %32, align 8, !tbaa !5
  %367 = getelementptr inbounds double, ptr %366, i64 1
  store double %365, ptr %367, align 8, !tbaa !11
  store i32 0, ptr %18, align 4
  store i32 1, ptr %65, align 4
  br label %809

368:                                              ; preds = %341
  %369 = call double @dlamch_(ptr noundef @.str.3)
  store double %369, ptr %62, align 8, !tbaa !11
  %370 = load ptr, ptr %23, align 8, !tbaa !5
  %371 = load double, ptr %370, align 8, !tbaa !11
  %372 = fcmp oge double %371, 0.000000e+00
  br i1 %372, label %373, label %389

373:                                              ; preds = %368
  %374 = call double @dlamch_(ptr noundef @.str.4)
  store double %374, ptr %57, align 8, !tbaa !11
  %375 = load ptr, ptr %23, align 8, !tbaa !5
  %376 = load double, ptr %375, align 8, !tbaa !11
  store double %376, ptr %40, align 8, !tbaa !11
  %377 = load double, ptr %57, align 8, !tbaa !11
  %378 = fmul double %377, 2.000000e+00
  store double %378, ptr %41, align 8, !tbaa !11
  %379 = load double, ptr %40, align 8, !tbaa !11
  %380 = load double, ptr %41, align 8, !tbaa !11
  %381 = fcmp oge double %379, %380
  br i1 %381, label %382, label %384

382:                                              ; preds = %373
  %383 = load double, ptr %40, align 8, !tbaa !11
  br label %386

384:                                              ; preds = %373
  %385 = load double, ptr %41, align 8, !tbaa !11
  br label %386

386:                                              ; preds = %384, %382
  %387 = phi double [ %383, %382 ], [ %385, %384 ]
  %388 = load ptr, ptr %23, align 8, !tbaa !5
  store double %387, ptr %388, align 8, !tbaa !11
  br label %389

389:                                              ; preds = %386, %368
  %390 = load ptr, ptr %24, align 8, !tbaa !5
  %391 = load double, ptr %390, align 8, !tbaa !11
  %392 = fcmp oge double %391, 0.000000e+00
  br i1 %392, label %393, label %406

393:                                              ; preds = %389
  %394 = load ptr, ptr %24, align 8, !tbaa !5
  %395 = load double, ptr %394, align 8, !tbaa !11
  %396 = load double, ptr %62, align 8, !tbaa !11
  %397 = fcmp oge double %395, %396
  br i1 %397, label %398, label %401

398:                                              ; preds = %393
  %399 = load ptr, ptr %24, align 8, !tbaa !5
  %400 = load double, ptr %399, align 8, !tbaa !11
  br label %403

401:                                              ; preds = %393
  %402 = load double, ptr %62, align 8, !tbaa !11
  br label %403

403:                                              ; preds = %401, %398
  %404 = phi double [ %400, %398 ], [ %402, %401 ]
  %405 = load ptr, ptr %24, align 8, !tbaa !5
  store double %404, ptr %405, align 8, !tbaa !11
  br label %406

406:                                              ; preds = %403, %389
  %407 = load ptr, ptr %22, align 8, !tbaa !5
  %408 = load i32, ptr %407, align 4, !tbaa !9
  %409 = load i32, ptr %51, align 4, !tbaa !9
  %410 = icmp sle i32 %408, %409
  br i1 %410, label %411, label %414

411:                                              ; preds = %406
  %412 = load ptr, ptr %22, align 8, !tbaa !5
  %413 = load i32, ptr %412, align 4, !tbaa !9
  br label %416

414:                                              ; preds = %406
  %415 = load i32, ptr %51, align 4, !tbaa !9
  br label %416

416:                                              ; preds = %414, %411
  %417 = phi i32 [ %413, %411 ], [ %415, %414 ]
  store i32 %417, ptr %44, align 4, !tbaa !9
  %418 = load double, ptr %42, align 8, !tbaa !11
  %419 = load ptr, ptr %23, align 8, !tbaa !5
  %420 = load double, ptr %419, align 8, !tbaa !11
  %421 = fcmp ole double %418, %420
  br i1 %421, label %426, label %422

422:                                              ; preds = %416
  %423 = load ptr, ptr %24, align 8, !tbaa !5
  %424 = load double, ptr %423, align 8, !tbaa !11
  %425 = fcmp ole double 1.000000e+00, %424
  br i1 %425, label %426, label %449

426:                                              ; preds = %422, %416
  %427 = load ptr, ptr %27, align 8, !tbaa !5
  store i32 0, ptr %427, align 4, !tbaa !9
  %428 = load double, ptr %42, align 8, !tbaa !11
  %429 = load ptr, ptr %28, align 8, !tbaa !5
  store double %428, ptr %429, align 8, !tbaa !11
  %430 = load ptr, ptr %29, align 8, !tbaa !5
  store double 1.000000e+00, ptr %430, align 8, !tbaa !11
  %431 = load i32, ptr %51, align 4, !tbaa !9
  store i32 %431, ptr %38, align 4, !tbaa !9
  store i32 1, ptr %45, align 4, !tbaa !9
  br label %432

432:                                              ; preds = %441, %426
  %433 = load i32, ptr %45, align 4, !tbaa !9
  %434 = load i32, ptr %38, align 4, !tbaa !9
  %435 = icmp sle i32 %433, %434
  br i1 %435, label %436, label %444

436:                                              ; preds = %432
  %437 = load ptr, ptr %31, align 8, !tbaa !5
  %438 = load i32, ptr %45, align 4, !tbaa !9
  %439 = sext i32 %438 to i64
  %440 = getelementptr inbounds double, ptr %437, i64 %439
  store double 0.000000e+00, ptr %440, align 8, !tbaa !11
  br label %441

441:                                              ; preds = %436
  %442 = load i32, ptr %45, align 4, !tbaa !9
  %443 = add nsw i32 %442, 1
  store i32 %443, ptr %45, align 4, !tbaa !9
  br label %432, !llvm.loop !18

444:                                              ; preds = %432
  %445 = load i32, ptr %59, align 4, !tbaa !9
  %446 = sitofp i32 %445 to double
  %447 = load ptr, ptr %32, align 8, !tbaa !5
  %448 = getelementptr inbounds double, ptr %447, i64 1
  store double %446, ptr %448, align 8, !tbaa !11
  store i32 0, ptr %18, align 4
  store i32 1, ptr %65, align 4
  br label %809

449:                                              ; preds = %422
  store i32 2, ptr %48, align 4, !tbaa !9
  store i32 0, ptr %56, align 4, !tbaa !9
  %450 = load i32, ptr %54, align 4, !tbaa !9
  %451 = icmp sgt i32 %450, 1
  br i1 %451, label %452, label %502

452:                                              ; preds = %449
  %453 = load i32, ptr %54, align 4, !tbaa !9
  %454 = load i32, ptr %51, align 4, !tbaa !9
  %455 = icmp slt i32 %453, %454
  br i1 %455, label %456, label %502

456:                                              ; preds = %452
  store i32 0, ptr %38, align 4, !tbaa !9
  %457 = load ptr, ptr %19, align 8, !tbaa !5
  %458 = load ptr, ptr %20, align 8, !tbaa !5
  %459 = call i32 @ilaenv_(ptr noundef @c__3, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %457, ptr noundef %458, ptr noundef @c_n1, ptr noundef @c_n1, i32 noundef 8, i32 noundef 1)
  store i32 %459, ptr %39, align 4, !tbaa !9
  %460 = load i32, ptr %38, align 4, !tbaa !9
  %461 = load i32, ptr %39, align 4, !tbaa !9
  %462 = icmp sge i32 %460, %461
  br i1 %462, label %463, label %465

463:                                              ; preds = %456
  %464 = load i32, ptr %38, align 4, !tbaa !9
  br label %467

465:                                              ; preds = %456
  %466 = load i32, ptr %39, align 4, !tbaa !9
  br label %467

467:                                              ; preds = %465, %463
  %468 = phi i32 [ %464, %463 ], [ %466, %465 ]
  store i32 %468, ptr %56, align 4, !tbaa !9
  %469 = load i32, ptr %56, align 4, !tbaa !9
  %470 = load i32, ptr %51, align 4, !tbaa !9
  %471 = icmp slt i32 %469, %470
  br i1 %471, label %472, label %501

472:                                              ; preds = %467
  %473 = load ptr, ptr %33, align 8, !tbaa !5
  %474 = load i32, ptr %473, align 4, !tbaa !9
  %475 = load i32, ptr %59, align 4, !tbaa !9
  %476 = icmp slt i32 %474, %475
  br i1 %476, label %477, label %500

477:                                              ; preds = %472
  %478 = load ptr, ptr %33, align 8, !tbaa !5
  %479 = load i32, ptr %478, align 4, !tbaa !9
  %480 = load ptr, ptr %20, align 8, !tbaa !5
  %481 = load i32, ptr %480, align 4, !tbaa !9
  %482 = shl i32 %481, 1
  %483 = sub nsw i32 %479, %482
  %484 = load ptr, ptr %20, align 8, !tbaa !5
  %485 = load i32, ptr %484, align 4, !tbaa !9
  %486 = add nsw i32 %485, 1
  %487 = sdiv i32 %483, %486
  store i32 %487, ptr %54, align 4, !tbaa !9
  store i32 2, ptr %38, align 4, !tbaa !9
  %488 = load ptr, ptr %19, align 8, !tbaa !5
  %489 = load ptr, ptr %20, align 8, !tbaa !5
  %490 = call i32 @ilaenv_(ptr noundef @c__2, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %488, ptr noundef %489, ptr noundef @c_n1, ptr noundef @c_n1, i32 noundef 8, i32 noundef 1)
  store i32 %490, ptr %39, align 4, !tbaa !9
  %491 = load i32, ptr %38, align 4, !tbaa !9
  %492 = load i32, ptr %39, align 4, !tbaa !9
  %493 = icmp sge i32 %491, %492
  br i1 %493, label %494, label %496

494:                                              ; preds = %477
  %495 = load i32, ptr %38, align 4, !tbaa !9
  br label %498

496:                                              ; preds = %477
  %497 = load i32, ptr %39, align 4, !tbaa !9
  br label %498

498:                                              ; preds = %496, %494
  %499 = phi i32 [ %495, %494 ], [ %497, %496 ]
  store i32 %499, ptr %48, align 4, !tbaa !9
  br label %500

500:                                              ; preds = %498, %472
  br label %501

501:                                              ; preds = %500, %467
  br label %502

502:                                              ; preds = %501, %452, %449
  store i32 0, ptr %43, align 4, !tbaa !9
  store i32 1, ptr %45, align 4, !tbaa !9
  %503 = load ptr, ptr %22, align 8, !tbaa !5
  %504 = load i32, ptr %503, align 4, !tbaa !9
  store i32 %504, ptr %38, align 4, !tbaa !9
  %505 = load i32, ptr %51, align 4, !tbaa !9
  %506 = load i32, ptr %56, align 4, !tbaa !9
  %507 = sub nsw i32 %505, %506
  store i32 %507, ptr %39, align 4, !tbaa !9
  %508 = load i32, ptr %38, align 4, !tbaa !9
  %509 = load i32, ptr %39, align 4, !tbaa !9
  %510 = icmp sle i32 %508, %509
  br i1 %510, label %511, label %513

511:                                              ; preds = %502
  %512 = load i32, ptr %38, align 4, !tbaa !9
  br label %515

513:                                              ; preds = %502
  %514 = load i32, ptr %39, align 4, !tbaa !9
  br label %515

515:                                              ; preds = %513, %511
  %516 = phi i32 [ %512, %511 ], [ %514, %513 ]
  store i32 %516, ptr %47, align 4, !tbaa !9
  %517 = load i32, ptr %54, align 4, !tbaa !9
  %518 = load i32, ptr %48, align 4, !tbaa !9
  %519 = icmp sge i32 %517, %518
  br i1 %519, label %520, label %656

520:                                              ; preds = %515
  %521 = load i32, ptr %54, align 4, !tbaa !9
  %522 = load i32, ptr %44, align 4, !tbaa !9
  %523 = icmp slt i32 %521, %522
  br i1 %523, label %524, label %656

524:                                              ; preds = %520
  %525 = load i32, ptr %47, align 4, !tbaa !9
  %526 = icmp sgt i32 %525, 0
  br i1 %526, label %527, label %656

527:                                              ; preds = %524
  br label %528

528:                                              ; preds = %651, %527
  %529 = load i32, ptr %45, align 4, !tbaa !9
  %530 = load i32, ptr %47, align 4, !tbaa !9
  %531 = icmp sle i32 %529, %530
  br i1 %531, label %532, label %655

532:                                              ; preds = %528
  %533 = load i32, ptr %54, align 4, !tbaa !9
  store i32 %533, ptr %38, align 4, !tbaa !9
  %534 = load i32, ptr %47, align 4, !tbaa !9
  %535 = load i32, ptr %45, align 4, !tbaa !9
  %536 = sub nsw i32 %534, %535
  %537 = add nsw i32 %536, 1
  store i32 %537, ptr %39, align 4, !tbaa !9
  %538 = load i32, ptr %38, align 4, !tbaa !9
  %539 = load i32, ptr %39, align 4, !tbaa !9
  %540 = icmp sle i32 %538, %539
  br i1 %540, label %541, label %543

541:                                              ; preds = %532
  %542 = load i32, ptr %38, align 4, !tbaa !9
  br label %545

543:                                              ; preds = %532
  %544 = load i32, ptr %39, align 4, !tbaa !9
  br label %545

545:                                              ; preds = %543, %541
  %546 = phi i32 [ %542, %541 ], [ %544, %543 ]
  store i32 %546, ptr %53, align 4, !tbaa !9
  %547 = load ptr, ptr %20, align 8, !tbaa !5
  %548 = load i32, ptr %547, align 4, !tbaa !9
  %549 = load i32, ptr %45, align 4, !tbaa !9
  %550 = sub nsw i32 %548, %549
  %551 = add nsw i32 %550, 1
  store i32 %551, ptr %50, align 4, !tbaa !9
  %552 = load i32, ptr %45, align 4, !tbaa !9
  %553 = sub nsw i32 %552, 1
  store i32 %553, ptr %64, align 4, !tbaa !9
  %554 = load ptr, ptr %20, align 8, !tbaa !5
  %555 = load i32, ptr %554, align 4, !tbaa !9
  %556 = load ptr, ptr %21, align 8, !tbaa !5
  %557 = load i32, ptr %556, align 4, !tbaa !9
  %558 = add nsw i32 %555, %557
  %559 = load i32, ptr %45, align 4, !tbaa !9
  %560 = sub nsw i32 %558, %559
  %561 = add nsw i32 %560, 1
  store i32 %561, ptr %38, align 4, !tbaa !9
  %562 = load ptr, ptr %19, align 8, !tbaa !5
  %563 = load ptr, ptr %21, align 8, !tbaa !5
  %564 = load ptr, ptr %23, align 8, !tbaa !5
  %565 = load ptr, ptr %24, align 8, !tbaa !5
  %566 = load ptr, ptr %25, align 8, !tbaa !5
  %567 = load i32, ptr %45, align 4, !tbaa !9
  %568 = load i32, ptr %36, align 4, !tbaa !9
  %569 = mul nsw i32 %567, %568
  %570 = add nsw i32 %569, 1
  %571 = sext i32 %570 to i64
  %572 = getelementptr inbounds double, ptr %566, i64 %571
  %573 = load ptr, ptr %26, align 8, !tbaa !5
  %574 = load ptr, ptr %28, align 8, !tbaa !5
  %575 = load ptr, ptr %29, align 8, !tbaa !5
  %576 = load ptr, ptr %30, align 8, !tbaa !5
  %577 = load i32, ptr %45, align 4, !tbaa !9
  %578 = sext i32 %577 to i64
  %579 = getelementptr inbounds i32, ptr %576, i64 %578
  %580 = load ptr, ptr %31, align 8, !tbaa !5
  %581 = load i32, ptr %45, align 4, !tbaa !9
  %582 = sext i32 %581 to i64
  %583 = getelementptr inbounds double, ptr %580, i64 %582
  %584 = load ptr, ptr %32, align 8, !tbaa !5
  %585 = load i32, ptr %45, align 4, !tbaa !9
  %586 = sext i32 %585 to i64
  %587 = getelementptr inbounds double, ptr %584, i64 %586
  %588 = load ptr, ptr %32, align 8, !tbaa !5
  %589 = load ptr, ptr %20, align 8, !tbaa !5
  %590 = load i32, ptr %589, align 4, !tbaa !9
  %591 = load i32, ptr %45, align 4, !tbaa !9
  %592 = add nsw i32 %590, %591
  %593 = sext i32 %592 to i64
  %594 = getelementptr inbounds double, ptr %588, i64 %593
  %595 = load ptr, ptr %32, align 8, !tbaa !5
  %596 = load ptr, ptr %20, align 8, !tbaa !5
  %597 = load i32, ptr %596, align 4, !tbaa !9
  %598 = shl i32 %597, 1
  %599 = add nsw i32 %598, 1
  %600 = sext i32 %599 to i64
  %601 = getelementptr inbounds double, ptr %595, i64 %600
  %602 = load ptr, ptr %32, align 8, !tbaa !5
  %603 = load ptr, ptr %20, align 8, !tbaa !5
  %604 = load i32, ptr %603, align 4, !tbaa !9
  %605 = shl i32 %604, 1
  %606 = load i32, ptr %53, align 4, !tbaa !9
  %607 = add nsw i32 %605, %606
  %608 = add nsw i32 %607, 1
  %609 = sext i32 %608 to i64
  %610 = getelementptr inbounds double, ptr %602, i64 %609
  %611 = load ptr, ptr %34, align 8, !tbaa !5
  %612 = getelementptr inbounds i32, ptr %611, i64 1
  %613 = call i32 @dlaqp3rk_(ptr noundef %562, ptr noundef %50, ptr noundef %563, ptr noundef %64, ptr noundef %53, ptr noundef %564, ptr noundef %565, ptr noundef %58, ptr noundef %42, ptr noundef %572, ptr noundef %573, ptr noundef %43, ptr noundef %61, ptr noundef %574, ptr noundef %575, ptr noundef %579, ptr noundef %583, ptr noundef %587, ptr noundef %594, ptr noundef %601, ptr noundef %610, ptr noundef %38, ptr noundef %612, ptr noundef %49)
  %614 = load i32, ptr %49, align 4, !tbaa !9
  %615 = load i32, ptr %50, align 4, !tbaa !9
  %616 = icmp sgt i32 %614, %615
  br i1 %616, label %617, label %627

617:                                              ; preds = %545
  %618 = load ptr, ptr %35, align 8, !tbaa !5
  %619 = load i32, ptr %618, align 4, !tbaa !9
  %620 = icmp eq i32 %619, 0
  br i1 %620, label %621, label %627

621:                                              ; preds = %617
  %622 = load i32, ptr %64, align 4, !tbaa !9
  %623 = shl i32 %622, 1
  %624 = load i32, ptr %49, align 4, !tbaa !9
  %625 = add nsw i32 %623, %624
  %626 = load ptr, ptr %35, align 8, !tbaa !5
  store i32 %625, ptr %626, align 4, !tbaa !9
  br label %627

627:                                              ; preds = %621, %617, %545
  %628 = load i32, ptr %43, align 4, !tbaa !9
  %629 = icmp ne i32 %628, 0
  br i1 %629, label %630, label %651

630:                                              ; preds = %627
  %631 = load i32, ptr %64, align 4, !tbaa !9
  %632 = load i32, ptr %61, align 4, !tbaa !9
  %633 = add nsw i32 %631, %632
  %634 = load ptr, ptr %27, align 8, !tbaa !5
  store i32 %633, ptr %634, align 4, !tbaa !9
  %635 = load i32, ptr %49, align 4, !tbaa !9
  %636 = load i32, ptr %50, align 4, !tbaa !9
  %637 = icmp sle i32 %635, %636
  br i1 %637, label %638, label %646

638:                                              ; preds = %630
  %639 = load i32, ptr %49, align 4, !tbaa !9
  %640 = icmp sgt i32 %639, 0
  br i1 %640, label %641, label %646

641:                                              ; preds = %638
  %642 = load i32, ptr %64, align 4, !tbaa !9
  %643 = load i32, ptr %49, align 4, !tbaa !9
  %644 = add nsw i32 %642, %643
  %645 = load ptr, ptr %35, align 8, !tbaa !5
  store i32 %644, ptr %645, align 4, !tbaa !9
  br label %646

646:                                              ; preds = %641, %638, %630
  %647 = load i32, ptr %59, align 4, !tbaa !9
  %648 = sitofp i32 %647 to double
  %649 = load ptr, ptr %32, align 8, !tbaa !5
  %650 = getelementptr inbounds double, ptr %649, i64 1
  store double %648, ptr %650, align 8, !tbaa !11
  store i32 0, ptr %18, align 4
  store i32 1, ptr %65, align 4
  br label %809

651:                                              ; preds = %627
  %652 = load i32, ptr %61, align 4, !tbaa !9
  %653 = load i32, ptr %45, align 4, !tbaa !9
  %654 = add nsw i32 %653, %652
  store i32 %654, ptr %45, align 4, !tbaa !9
  br label %528, !llvm.loop !19

655:                                              ; preds = %528
  br label %656

656:                                              ; preds = %655, %524, %520, %515
  %657 = load i32, ptr %45, align 4, !tbaa !9
  %658 = load i32, ptr %44, align 4, !tbaa !9
  %659 = icmp sle i32 %657, %658
  br i1 %659, label %660, label %745

660:                                              ; preds = %656
  %661 = load ptr, ptr %20, align 8, !tbaa !5
  %662 = load i32, ptr %661, align 4, !tbaa !9
  %663 = load i32, ptr %45, align 4, !tbaa !9
  %664 = sub nsw i32 %662, %663
  %665 = add nsw i32 %664, 1
  store i32 %665, ptr %50, align 4, !tbaa !9
  %666 = load i32, ptr %45, align 4, !tbaa !9
  %667 = sub nsw i32 %666, 1
  store i32 %667, ptr %64, align 4, !tbaa !9
  %668 = load i32, ptr %44, align 4, !tbaa !9
  %669 = load i32, ptr %45, align 4, !tbaa !9
  %670 = sub nsw i32 %668, %669
  %671 = add nsw i32 %670, 1
  store i32 %671, ptr %38, align 4, !tbaa !9
  %672 = load ptr, ptr %19, align 8, !tbaa !5
  %673 = load ptr, ptr %21, align 8, !tbaa !5
  %674 = load ptr, ptr %23, align 8, !tbaa !5
  %675 = load ptr, ptr %24, align 8, !tbaa !5
  %676 = load ptr, ptr %25, align 8, !tbaa !5
  %677 = load i32, ptr %45, align 4, !tbaa !9
  %678 = load i32, ptr %36, align 4, !tbaa !9
  %679 = mul nsw i32 %677, %678
  %680 = add nsw i32 %679, 1
  %681 = sext i32 %680 to i64
  %682 = getelementptr inbounds double, ptr %676, i64 %681
  %683 = load ptr, ptr %26, align 8, !tbaa !5
  %684 = load ptr, ptr %28, align 8, !tbaa !5
  %685 = load ptr, ptr %29, align 8, !tbaa !5
  %686 = load ptr, ptr %30, align 8, !tbaa !5
  %687 = load i32, ptr %45, align 4, !tbaa !9
  %688 = sext i32 %687 to i64
  %689 = getelementptr inbounds i32, ptr %686, i64 %688
  %690 = load ptr, ptr %31, align 8, !tbaa !5
  %691 = load i32, ptr %45, align 4, !tbaa !9
  %692 = sext i32 %691 to i64
  %693 = getelementptr inbounds double, ptr %690, i64 %692
  %694 = load ptr, ptr %32, align 8, !tbaa !5
  %695 = load i32, ptr %45, align 4, !tbaa !9
  %696 = sext i32 %695 to i64
  %697 = getelementptr inbounds double, ptr %694, i64 %696
  %698 = load ptr, ptr %32, align 8, !tbaa !5
  %699 = load ptr, ptr %20, align 8, !tbaa !5
  %700 = load i32, ptr %699, align 4, !tbaa !9
  %701 = load i32, ptr %45, align 4, !tbaa !9
  %702 = add nsw i32 %700, %701
  %703 = sext i32 %702 to i64
  %704 = getelementptr inbounds double, ptr %698, i64 %703
  %705 = load ptr, ptr %32, align 8, !tbaa !5
  %706 = load ptr, ptr %20, align 8, !tbaa !5
  %707 = load i32, ptr %706, align 4, !tbaa !9
  %708 = shl i32 %707, 1
  %709 = add nsw i32 %708, 1
  %710 = sext i32 %709 to i64
  %711 = getelementptr inbounds double, ptr %705, i64 %710
  %712 = call i32 @dlaqp2rk_(ptr noundef %672, ptr noundef %50, ptr noundef %673, ptr noundef %64, ptr noundef %38, ptr noundef %674, ptr noundef %675, ptr noundef %58, ptr noundef %42, ptr noundef %682, ptr noundef %683, ptr noundef %55, ptr noundef %684, ptr noundef %685, ptr noundef %689, ptr noundef %693, ptr noundef %697, ptr noundef %704, ptr noundef %711, ptr noundef %49)
  %713 = load i32, ptr %45, align 4, !tbaa !9
  %714 = sub nsw i32 %713, 1
  %715 = load i32, ptr %55, align 4, !tbaa !9
  %716 = add nsw i32 %714, %715
  %717 = load ptr, ptr %27, align 8, !tbaa !5
  store i32 %716, ptr %717, align 4, !tbaa !9
  %718 = load i32, ptr %49, align 4, !tbaa !9
  %719 = load i32, ptr %50, align 4, !tbaa !9
  %720 = icmp sgt i32 %718, %719
  br i1 %720, label %721, label %731

721:                                              ; preds = %660
  %722 = load ptr, ptr %35, align 8, !tbaa !5
  %723 = load i32, ptr %722, align 4, !tbaa !9
  %724 = icmp eq i32 %723, 0
  br i1 %724, label %725, label %731

725:                                              ; preds = %721
  %726 = load i32, ptr %64, align 4, !tbaa !9
  %727 = shl i32 %726, 1
  %728 = load i32, ptr %49, align 4, !tbaa !9
  %729 = add nsw i32 %727, %728
  %730 = load ptr, ptr %35, align 8, !tbaa !5
  store i32 %729, ptr %730, align 4, !tbaa !9
  br label %744

731:                                              ; preds = %721, %660
  %732 = load i32, ptr %49, align 4, !tbaa !9
  %733 = load i32, ptr %50, align 4, !tbaa !9
  %734 = icmp sle i32 %732, %733
  br i1 %734, label %735, label %743

735:                                              ; preds = %731
  %736 = load i32, ptr %49, align 4, !tbaa !9
  %737 = icmp sgt i32 %736, 0
  br i1 %737, label %738, label %743

738:                                              ; preds = %735
  %739 = load i32, ptr %64, align 4, !tbaa !9
  %740 = load i32, ptr %49, align 4, !tbaa !9
  %741 = add nsw i32 %739, %740
  %742 = load ptr, ptr %35, align 8, !tbaa !5
  store i32 %741, ptr %742, align 4, !tbaa !9
  br label %743

743:                                              ; preds = %738, %735, %731
  br label %744

744:                                              ; preds = %743, %725
  br label %804

745:                                              ; preds = %656
  %746 = load i32, ptr %44, align 4, !tbaa !9
  %747 = load ptr, ptr %27, align 8, !tbaa !5
  store i32 %746, ptr %747, align 4, !tbaa !9
  %748 = load ptr, ptr %27, align 8, !tbaa !5
  %749 = load i32, ptr %748, align 4, !tbaa !9
  %750 = load i32, ptr %51, align 4, !tbaa !9
  %751 = icmp slt i32 %749, %750
  br i1 %751, label %752, label %803

752:                                              ; preds = %745
  %753 = load ptr, ptr %20, align 8, !tbaa !5
  %754 = load i32, ptr %753, align 4, !tbaa !9
  %755 = load ptr, ptr %27, align 8, !tbaa !5
  %756 = load i32, ptr %755, align 4, !tbaa !9
  %757 = sub nsw i32 %754, %756
  store i32 %757, ptr %38, align 4, !tbaa !9
  %758 = load ptr, ptr %27, align 8, !tbaa !5
  %759 = load i32, ptr %758, align 4, !tbaa !9
  %760 = load ptr, ptr %32, align 8, !tbaa !5
  %761 = load ptr, ptr %27, align 8, !tbaa !5
  %762 = load i32, ptr %761, align 4, !tbaa !9
  %763 = add nsw i32 %762, 1
  %764 = sext i32 %763 to i64
  %765 = getelementptr inbounds double, ptr %760, i64 %764
  %766 = call i32 @idamax_(ptr noundef %38, ptr noundef %765, ptr noundef @c__1)
  %767 = add nsw i32 %759, %766
  store i32 %767, ptr %46, align 4, !tbaa !9
  %768 = load ptr, ptr %32, align 8, !tbaa !5
  %769 = load i32, ptr %46, align 4, !tbaa !9
  %770 = sext i32 %769 to i64
  %771 = getelementptr inbounds double, ptr %768, i64 %770
  %772 = load double, ptr %771, align 8, !tbaa !11
  %773 = load ptr, ptr %28, align 8, !tbaa !5
  store double %772, ptr %773, align 8, !tbaa !11
  %774 = load ptr, ptr %27, align 8, !tbaa !5
  %775 = load i32, ptr %774, align 4, !tbaa !9
  %776 = icmp eq i32 %775, 0
  br i1 %776, label %777, label %779

777:                                              ; preds = %752
  %778 = load ptr, ptr %29, align 8, !tbaa !5
  store double 1.000000e+00, ptr %778, align 8, !tbaa !11
  br label %785

779:                                              ; preds = %752
  %780 = load ptr, ptr %28, align 8, !tbaa !5
  %781 = load double, ptr %780, align 8, !tbaa !11
  %782 = load double, ptr %42, align 8, !tbaa !11
  %783 = fdiv double %781, %782
  %784 = load ptr, ptr %29, align 8, !tbaa !5
  store double %783, ptr %784, align 8, !tbaa !11
  br label %785

785:                                              ; preds = %779, %777
  %786 = load i32, ptr %51, align 4, !tbaa !9
  store i32 %786, ptr %38, align 4, !tbaa !9
  %787 = load ptr, ptr %27, align 8, !tbaa !5
  %788 = load i32, ptr %787, align 4, !tbaa !9
  %789 = add nsw i32 %788, 1
  store i32 %789, ptr %45, align 4, !tbaa !9
  br label %790

790:                                              ; preds = %799, %785
  %791 = load i32, ptr %45, align 4, !tbaa !9
  %792 = load i32, ptr %38, align 4, !tbaa !9
  %793 = icmp sle i32 %791, %792
  br i1 %793, label %794, label %802

794:                                              ; preds = %790
  %795 = load ptr, ptr %31, align 8, !tbaa !5
  %796 = load i32, ptr %45, align 4, !tbaa !9
  %797 = sext i32 %796 to i64
  %798 = getelementptr inbounds double, ptr %795, i64 %797
  store double 0.000000e+00, ptr %798, align 8, !tbaa !11
  br label %799

799:                                              ; preds = %794
  %800 = load i32, ptr %45, align 4, !tbaa !9
  %801 = add nsw i32 %800, 1
  store i32 %801, ptr %45, align 4, !tbaa !9
  br label %790, !llvm.loop !20

802:                                              ; preds = %790
  br label %803

803:                                              ; preds = %802, %745
  br label %804

804:                                              ; preds = %803, %744
  %805 = load i32, ptr %59, align 4, !tbaa !9
  %806 = sitofp i32 %805 to double
  %807 = load ptr, ptr %32, align 8, !tbaa !5
  %808 = getelementptr inbounds double, ptr %807, i64 1
  store double %806, ptr %808, align 8, !tbaa !11
  store i32 0, ptr %18, align 4
  store i32 1, ptr %65, align 4
  br label %809

809:                                              ; preds = %804, %646, %444, %363, %325, %293, %221, %216, %208
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #3
  %810 = load i32, ptr %18, align 4
  ret i32 %810
}

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

declare i32 @disnan_(ptr noundef) #2

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) #2

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

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

declare double @dlamch_(ptr noundef) #2

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

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

; 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}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !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 [9 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 [9 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [13 x i8], align 1
@c__3 = external hidden global i32, align 4
@c__2 = external hidden global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @dgeqp3rk_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr nocapture noundef readonly %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr nocapture noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr nocapture noundef readonly %14, ptr noundef %15, ptr nocapture noundef %16) local_unnamed_addr #0 {
  %18 = alloca i32, align 4
  %19 = alloca double, align 8
  %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
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #5
  %28 = load i32, ptr %7, align 4, !tbaa !5
  %narrow = xor i32 %28, -1
  %29 = sext i32 %narrow to i64
  %30 = getelementptr inbounds double, ptr %6, i64 %29
  %31 = getelementptr inbounds i8, ptr %11, i64 -4
  %32 = getelementptr inbounds i8, ptr %12, i64 -8
  %33 = getelementptr inbounds i8, ptr %13, i64 -8
  store i32 0, ptr %16, align 4, !tbaa !5
  %34 = load i32, ptr %14, align 4, !tbaa !5
  %35 = icmp eq i32 %34, -1
  %36 = load i32, ptr %0, align 4, !tbaa !5
  %37 = icmp slt i32 %36, 0
  br i1 %37, label %.thread328.sink.split, label %38

38:                                               ; preds = %17
  %39 = load i32, ptr %1, align 4, !tbaa !5
  %40 = icmp slt i32 %39, 0
  br i1 %40, label %.thread328.sink.split, label %41

41:                                               ; preds = %38
  %42 = load i32, ptr %2, align 4, !tbaa !5
  %43 = icmp slt i32 %42, 0
  br i1 %43, label %.thread328.sink.split, label %44

44:                                               ; preds = %41
  %45 = load i32, ptr %3, align 4, !tbaa !5
  %46 = icmp slt i32 %45, 0
  br i1 %46, label %.thread328.sink.split, label %47

47:                                               ; preds = %44
  %48 = tail call i32 @disnan_(ptr noundef %4) #5
  %.not = icmp eq i32 %48, 0
  br i1 %.not, label %49, label %.thread328.sink.split

49:                                               ; preds = %47
  %50 = tail call i32 @disnan_(ptr noundef %5) #5
  %.not301 = icmp eq i32 %50, 0
  br i1 %.not301, label %51, label %.thread328.sink.split

51:                                               ; preds = %49
  %52 = load i32, ptr %7, align 4, !tbaa !5
  %53 = load i32, ptr %0, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.smax.i32(i32 %53, i32 1)
  %54 = icmp slt i32 %52, %spec.select
  br i1 %54, label %.thread328.sink.split, label %55

55:                                               ; preds = %51
  %.pr = load i32, ptr %16, align 4, !tbaa !5
  %56 = icmp eq i32 %.pr, 0
  br i1 %56, label %57, label %.thread328

57:                                               ; preds = %55
  %58 = load i32, ptr %1, align 4, !tbaa !5
  %. = tail call i32 @llvm.smin.i32(i32 %53, i32 %58)
  %59 = icmp eq i32 %., 0
  br i1 %59, label %73, label %60

60:                                               ; preds = %57
  %61 = mul nsw i32 %58, 3
  %62 = load i32, ptr %2, align 4, !tbaa !5
  %63 = add i32 %61, -1
  %64 = add i32 %63, %62
  %65 = 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 8, i32 noundef 1) #5
  %66 = load i32, ptr %1, align 4, !tbaa !5
  %67 = shl i32 %66, 1
  %68 = load i32, ptr %2, align 4, !tbaa !5
  %69 = add i32 %66, 1
  %70 = add i32 %69, %68
  %71 = mul nsw i32 %70, %65
  %72 = add nsw i32 %71, %67
  br label %73

73:                                               ; preds = %57, %60
  %74 = phi i32 [ %66, %60 ], [ %58, %57 ]
  %.0277 = phi i32 [ %65, %60 ], [ undef, %57 ]
  %.0275 = phi i32 [ %72, %60 ], [ 1, %57 ]
  %.0 = phi i32 [ %64, %60 ], [ 1, %57 ]
  %75 = sitofp i32 %.0275 to double
  store double %75, ptr %13, align 8, !tbaa !9
  %76 = load i32, ptr %14, align 4, !tbaa !5
  %77 = icmp sge i32 %76, %.0
  %or.cond = select i1 %77, i1 true, i1 %35
  br i1 %or.cond, label %.thread, label %.thread328.sink.split

.thread:                                          ; preds = %73
  %.pr323.pr = load i32, ptr %16, align 4, !tbaa !5
  %.not303 = icmp eq i32 %.pr323.pr, 0
  br i1 %.not303, label %81, label %.thread328

.thread328.sink.split:                            ; preds = %73, %51, %49, %47, %44, %41, %38, %17
  %.sink = phi i32 [ -1, %17 ], [ -2, %38 ], [ -3, %41 ], [ -4, %44 ], [ -5, %47 ], [ -6, %49 ], [ -8, %51 ], [ -15, %73 ]
  store i32 %.sink, ptr %16, align 4, !tbaa !5
  br label %.thread328

.thread328:                                       ; preds = %.thread328.sink.split, %55, %.thread
  %78 = phi i32 [ %.pr323.pr, %.thread ], [ %.pr, %55 ], [ %.sink, %.thread328.sink.split ]
  %79 = sub nsw i32 0, %78
  store i32 %79, ptr %18, align 4, !tbaa !5
  %80 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %18) #5
  br label %294

81:                                               ; preds = %.thread
  br i1 %35, label %294, label %82

82:                                               ; preds = %81
  br i1 %59, label %83, label %84

83:                                               ; preds = %82
  store i32 0, ptr %8, align 4, !tbaa !5
  store double 0.000000e+00, ptr %9, align 8, !tbaa !9
  store double 0.000000e+00, ptr %10, align 8, !tbaa !9
  store double %75, ptr %13, align 8, !tbaa !9
  br label %294

84:                                               ; preds = %82
  %.not304341 = icmp slt i32 %74, 1
  br i1 %.not304341, label %._crit_edge.thread, label %.lr.ph.preheader

._crit_edge.thread:                               ; preds = %84
  store i32 %74, ptr %18, align 4, !tbaa !5
  br label %._crit_edge347

.lr.ph.preheader:                                 ; preds = %84
  %85 = add nuw i32 %74, 1
  %wide.trip.count = zext i32 %85 to i64
  %86 = zext nneg i32 %74 to i64
  %min.iters.check = icmp ult i32 %74, 8
  br i1 %min.iters.check, label %.lr.ph.preheader413, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph.preheader
  %n.vec = and i64 %86, 2147483640
  %ind.end = or disjoint i64 %n.vec, 1
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %vec.ind = phi <4 x i32> [ <i32 1, i32 2, i32 3, i32 4>, %vector.ph ], [ %vec.ind.next, %vector.body ]
  %step.add = add <4 x i32> %vec.ind, <i32 4, i32 4, i32 4, i32 4>
  %87 = getelementptr i32, ptr %11, i64 %index
  %88 = getelementptr inbounds i8, ptr %87, i64 16
  store <4 x i32> %vec.ind, ptr %87, align 4, !tbaa !5
  store <4 x i32> %step.add, ptr %88, align 4, !tbaa !5
  %index.next = add nuw i64 %index, 8
  %vec.ind.next = add <4 x i32> %vec.ind, <i32 8, i32 8, i32 8, i32 8>
  %89 = icmp eq i64 %index.next, %n.vec
  br i1 %89, label %middle.block, label %vector.body, !llvm.loop !11

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

.lr.ph.preheader413:                              ; preds = %middle.block, %.lr.ph.preheader
  %indvars.iv.ph = phi i64 [ 1, %.lr.ph.preheader ], [ %ind.end, %middle.block ]
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader413, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ %indvars.iv.ph, %.lr.ph.preheader413 ]
  %90 = getelementptr inbounds i32, ptr %31, i64 %indvars.iv
  %91 = trunc nuw nsw i64 %indvars.iv to i32
  store i32 %91, ptr %90, align 4, !tbaa !5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !15

._crit_edge:                                      ; preds = %.lr.ph, %middle.block
  %.pre = load i32, ptr %1, align 4, !tbaa !5
  store i32 %.pre, ptr %18, align 4, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %30, i64 8
  %.not305343 = icmp slt i32 %.pre, 1
  br i1 %.not305343, label %._crit_edge347, label %.lr.ph346.preheader

.lr.ph346.preheader:                              ; preds = %._crit_edge
  %92 = sext i32 %28 to i64
  %93 = add nuw i32 %.pre, 1
  %wide.trip.count381 = zext i32 %93 to i64
  br label %.lr.ph346

.lr.ph346:                                        ; preds = %.lr.ph346.preheader, %.lr.ph346
  %indvars.iv378 = phi i64 [ 1, %.lr.ph346.preheader ], [ %indvars.iv.next379, %.lr.ph346 ]
  %94 = mul nsw i64 %indvars.iv378, %92
  %gep = getelementptr double, ptr %invariant.gep, i64 %94
  %95 = tail call double @dnrm2_(ptr noundef nonnull %0, ptr noundef %gep, ptr noundef nonnull @c__1) #5
  %96 = getelementptr inbounds double, ptr %33, i64 %indvars.iv378
  store double %95, ptr %96, align 8, !tbaa !9
  %97 = load i32, ptr %1, align 4, !tbaa !5
  %98 = sext i32 %97 to i64
  %99 = getelementptr double, ptr %33, i64 %indvars.iv378
  %100 = getelementptr double, ptr %99, i64 %98
  store double %95, ptr %100, align 8, !tbaa !9
  %indvars.iv.next379 = add nuw nsw i64 %indvars.iv378, 1
  %exitcond382.not = icmp eq i64 %indvars.iv.next379, %wide.trip.count381
  br i1 %exitcond382.not, label %._crit_edge347, label %.lr.ph346, !llvm.loop !16

._crit_edge347:                                   ; preds = %.lr.ph346, %._crit_edge.thread, %._crit_edge
  %101 = tail call i32 @idamax_(ptr noundef nonnull %1, ptr noundef nonnull %13, ptr noundef nonnull @c__1) #5
  store i32 %101, ptr %25, align 4, !tbaa !5
  %102 = sext i32 %101 to i64
  %103 = getelementptr inbounds double, ptr %33, i64 %102
  %104 = load double, ptr %103, align 8, !tbaa !9
  store double %104, ptr %19, align 8, !tbaa !9
  %105 = call i32 @disnan_(ptr noundef nonnull %19) #5
  %.not306 = icmp eq i32 %105, 0
  br i1 %.not306, label %108, label %106

106:                                              ; preds = %._crit_edge347
  store i32 0, ptr %8, align 4, !tbaa !5
  store i32 %101, ptr %16, align 4, !tbaa !5
  %107 = load double, ptr %19, align 8, !tbaa !9
  store double %107, ptr %9, align 8, !tbaa !9
  store double %107, ptr %10, align 8, !tbaa !9
  store double %75, ptr %13, align 8, !tbaa !9
  br label %294

108:                                              ; preds = %._crit_edge347
  %109 = load double, ptr %19, align 8, !tbaa !9
  %110 = fcmp oeq double %109, 0.000000e+00
  br i1 %110, label %111, label %114

111:                                              ; preds = %108
  store i32 0, ptr %8, align 4, !tbaa !5
  store double 0.000000e+00, ptr %9, align 8, !tbaa !9
  store double 0.000000e+00, ptr %10, align 8, !tbaa !9
  %.not319368 = icmp slt i32 %., 1
  br i1 %.not319368, label %._crit_edge372, label %.lr.ph371.preheader

.lr.ph371.preheader:                              ; preds = %111
  %112 = zext nneg i32 %. to i64
  %113 = shl nuw nsw i64 %112, 3
  call void @llvm.memset.p0.i64(ptr align 8 %12, i8 0, i64 %113, i1 false), !tbaa !9
  br label %._crit_edge372

._crit_edge372:                                   ; preds = %.lr.ph371.preheader, %111
  store double %75, ptr %13, align 8, !tbaa !9
  br label %294

114:                                              ; preds = %108
  %115 = call double @dlamch_(ptr noundef nonnull @.str.2) #5
  %116 = load double, ptr %19, align 8, !tbaa !9
  %117 = fcmp ogt double %116, %115
  br i1 %117, label %118, label %121

118:                                              ; preds = %114
  %119 = load i32, ptr %1, align 4, !tbaa !5
  %120 = add nsw i32 %101, %119
  store i32 %120, ptr %16, align 4, !tbaa !5
  br label %121

121:                                              ; preds = %118, %114
  %122 = load i32, ptr %3, align 4, !tbaa !5
  %123 = icmp eq i32 %122, 0
  br i1 %123, label %124, label %127

124:                                              ; preds = %121
  store i32 0, ptr %8, align 4, !tbaa !5
  store double %116, ptr %9, align 8, !tbaa !9
  store double 1.000000e+00, ptr %10, align 8, !tbaa !9
  %.not318363 = icmp slt i32 %., 1
  br i1 %.not318363, label %._crit_edge367, label %.lr.ph366.preheader

.lr.ph366.preheader:                              ; preds = %124
  %125 = zext nneg i32 %. to i64
  %126 = shl nuw nsw i64 %125, 3
  call void @llvm.memset.p0.i64(ptr align 8 %12, i8 0, i64 %126, i1 false), !tbaa !9
  br label %._crit_edge367

._crit_edge367:                                   ; preds = %.lr.ph366.preheader, %124
  store double %75, ptr %13, align 8, !tbaa !9
  br label %294

127:                                              ; preds = %121
  %128 = call double @dlamch_(ptr noundef nonnull @.str.3) #5
  %129 = load double, ptr %4, align 8, !tbaa !9
  %130 = fcmp ult double %129, 0.000000e+00
  br i1 %130, label %137, label %131

131:                                              ; preds = %127
  %132 = call double @dlamch_(ptr noundef nonnull @.str.4) #5
  %133 = load double, ptr %4, align 8, !tbaa !9
  %134 = fmul double %132, 2.000000e+00
  %135 = fcmp oge double %133, %134
  %136 = select i1 %135, double %133, double %134
  store double %136, ptr %4, align 8, !tbaa !9
  br label %137

137:                                              ; preds = %131, %127
  %138 = phi double [ %136, %131 ], [ %129, %127 ]
  %139 = load double, ptr %5, align 8, !tbaa !9
  %140 = fcmp ult double %139, 0.000000e+00
  br i1 %140, label %142, label %141

141:                                              ; preds = %137
  %.inv = fcmp oge double %139, %128
  %.320 = select i1 %.inv, double %139, double %128
  store double %.320, ptr %5, align 8, !tbaa !9
  %.pre395 = load double, ptr %4, align 8, !tbaa !9
  br label %142

142:                                              ; preds = %141, %137
  %143 = phi double [ %.320, %141 ], [ %139, %137 ]
  %144 = phi double [ %.pre395, %141 ], [ %138, %137 ]
  %145 = load i32, ptr %3, align 4, !tbaa !5
  %.0279. = call i32 @llvm.smin.i32(i32 %145, i32 %.)
  %146 = load double, ptr %19, align 8, !tbaa !9
  %147 = fcmp ugt double %146, %144
  %148 = fcmp ult double %143, 1.000000e+00
  %or.cond403 = select i1 %147, i1 %148, i1 false
  br i1 %or.cond403, label %152, label %149

149:                                              ; preds = %142
  store i32 0, ptr %8, align 4, !tbaa !5
  store double %146, ptr %9, align 8, !tbaa !9
  store double 1.000000e+00, ptr %10, align 8, !tbaa !9
  %.not317348 = icmp slt i32 %., 1
  br i1 %.not317348, label %._crit_edge352, label %.lr.ph351.preheader

.lr.ph351.preheader:                              ; preds = %149
  %150 = zext nneg i32 %. to i64
  %151 = shl nuw nsw i64 %150, 3
  call void @llvm.memset.p0.i64(ptr align 8 %12, i8 0, i64 %151, i1 false), !tbaa !9
  br label %._crit_edge352

._crit_edge352:                                   ; preds = %.lr.ph351.preheader, %149
  store double %75, ptr %13, align 8, !tbaa !9
  br label %294

152:                                              ; preds = %142
  %153 = icmp sgt i32 %.0277, 1
  %154 = icmp slt i32 %.0277, %.
  %or.cond321 = and i1 %153, %154
  br i1 %or.cond321, label %155, label %172

155:                                              ; preds = %152
  store i32 0, ptr %18, align 4, !tbaa !5
  %156 = 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 8, i32 noundef 1) #5
  %157 = load i32, ptr %18, align 4
  %158 = call i32 @llvm.smax.i32(i32 %157, i32 %156)
  %159 = icmp slt i32 %158, %.
  br i1 %159, label %160, label %172

160:                                              ; preds = %155
  %161 = load i32, ptr %14, align 4, !tbaa !5
  %162 = icmp slt i32 %161, %.0275
  br i1 %162, label %163, label %172

163:                                              ; preds = %160
  %164 = load i32, ptr %1, align 4, !tbaa !5
  %165 = shl i32 %164, 1
  %166 = sub nsw i32 %161, %165
  %167 = add nsw i32 %164, 1
  %168 = sdiv i32 %166, %167
  store i32 2, ptr %18, align 4, !tbaa !5
  %169 = 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 8, i32 noundef 1) #5
  %170 = load i32, ptr %18, align 4
  %171 = call i32 @llvm.smax.i32(i32 %170, i32 %169)
  br label %172

172:                                              ; preds = %155, %163, %160, %152
  %.0280 = phi i32 [ %171, %163 ], [ 2, %160 ], [ 2, %155 ], [ 2, %152 ]
  %.2 = phi i32 [ %168, %163 ], [ %.0277, %160 ], [ %.0277, %155 ], [ %.0277, %152 ]
  %.0276 = phi i32 [ %158, %163 ], [ %158, %160 ], [ %158, %155 ], [ 0, %152 ]
  store i32 0, ptr %20, align 4, !tbaa !5
  %173 = load i32, ptr %3, align 4, !tbaa !5
  %174 = sub nsw i32 %., %.0276
  %175 = call i32 @llvm.smin.i32(i32 %173, i32 %174)
  %.not311 = icmp slt i32 %.2, %.0280
  br i1 %.not311, label %.loopexit338, label %176

176:                                              ; preds = %172
  %177 = icmp slt i32 %.2, %.0279.
  %178 = icmp sgt i32 %175, 0
  %or.cond3 = select i1 %177, i1 %178, i1 false
  br i1 %or.cond3, label %.preheader, label %.loopexit338

.preheader:                                       ; preds = %176
  %179 = add nuw i32 %175, 1
  %180 = getelementptr i8, ptr %30, i64 8
  br label %181

181:                                              ; preds = %.preheader, %227
  %.5.neg358 = phi i32 [ -1, %.preheader ], [ %.5.neg, %227 ]
  %.5357 = phi i32 [ 1, %.preheader ], [ %229, %227 ]
  %182 = add i32 %179, %.5.neg358
  %183 = call i32 @llvm.smin.i32(i32 %.2, i32 %182)
  store i32 %183, ptr %23, align 4, !tbaa !5
  %184 = load i32, ptr %1, align 4, !tbaa !5
  %185 = add i32 %.5.neg358, 1
  %186 = add i32 %185, %184
  store i32 %186, ptr %22, align 4, !tbaa !5
  %187 = add nsw i32 %.5357, -1
  store i32 %187, ptr %27, align 4, !tbaa !5
  %188 = load i32, ptr %2, align 4, !tbaa !5
  %189 = add i32 %186, %188
  store i32 %189, ptr %18, align 4, !tbaa !5
  %190 = mul nsw i32 %.5357, %28
  %191 = sext i32 %190 to i64
  %gep354 = getelementptr double, ptr %180, i64 %191
  %192 = sext i32 %.5357 to i64
  %193 = getelementptr inbounds i32, ptr %31, i64 %192
  %194 = getelementptr inbounds double, ptr %32, i64 %192
  %195 = getelementptr inbounds double, ptr %33, i64 %192
  %196 = add nsw i32 %184, %.5357
  %197 = sext i32 %196 to i64
  %198 = getelementptr inbounds double, ptr %33, i64 %197
  %199 = shl i32 %184, 1
  %200 = or disjoint i32 %199, 1
  %201 = sext i32 %200 to i64
  %202 = getelementptr inbounds double, ptr %33, i64 %201
  %203 = add nsw i32 %199, %183
  %204 = sext i32 %203 to i64
  %gep356 = getelementptr double, ptr %13, i64 %204
  %205 = call i32 @dlaqp3rk_(ptr noundef nonnull %0, ptr noundef nonnull %22, ptr noundef nonnull %2, ptr noundef nonnull %27, ptr noundef nonnull %23, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef nonnull %25, ptr noundef nonnull %19, ptr noundef %gep354, ptr noundef nonnull %7, ptr noundef nonnull %20, ptr noundef nonnull %26, ptr noundef %9, ptr noundef %10, ptr noundef nonnull %193, ptr noundef nonnull %194, ptr noundef nonnull %195, ptr noundef nonnull %198, ptr noundef nonnull %202, ptr noundef %gep356, ptr noundef nonnull %18, ptr noundef %15, ptr noundef nonnull %21) #5
  %206 = load i32, ptr %21, align 4
  %207 = load i32, ptr %22, align 4, !tbaa !5
  %208 = icmp sgt i32 %206, %207
  br i1 %208, label %209, label %216

209:                                              ; preds = %181
  %210 = load i32, ptr %16, align 4, !tbaa !5
  %211 = icmp eq i32 %210, 0
  br i1 %211, label %212, label %216

212:                                              ; preds = %209
  %213 = load i32, ptr %27, align 4, !tbaa !5
  %214 = shl i32 %213, 1
  %215 = add nsw i32 %214, %206
  store i32 %215, ptr %16, align 4, !tbaa !5
  br label %216

216:                                              ; preds = %212, %209, %181
  %217 = load i32, ptr %20, align 4, !tbaa !5
  %.not316 = icmp eq i32 %217, 0
  br i1 %.not316, label %227, label %218

218:                                              ; preds = %216
  %219 = load i32, ptr %27, align 4, !tbaa !5
  %220 = load i32, ptr %26, align 4, !tbaa !5
  %221 = add nsw i32 %220, %219
  store i32 %221, ptr %8, align 4, !tbaa !5
  %222 = icmp sle i32 %206, %207
  %223 = icmp sgt i32 %206, 0
  %or.cond5 = and i1 %223, %222
  br i1 %or.cond5, label %224, label %226

224:                                              ; preds = %218
  %225 = add nsw i32 %219, %206
  store i32 %225, ptr %16, align 4, !tbaa !5
  br label %226

226:                                              ; preds = %224, %218
  store double %75, ptr %13, align 8, !tbaa !9
  br label %294

227:                                              ; preds = %216
  %228 = load i32, ptr %26, align 4, !tbaa !5
  %229 = add nsw i32 %228, %.5357
  %.5.neg = sub i32 0, %229
  %.not312 = icmp sgt i32 %229, %175
  br i1 %.not312, label %.loopexit338, label %181, !llvm.loop !17

.loopexit338:                                     ; preds = %227, %176, %172
  %.6 = phi i32 [ 1, %176 ], [ 1, %172 ], [ %229, %227 ]
  %.not313 = icmp sgt i32 %.6, %.0279.
  br i1 %.not313, label %270, label %230

230:                                              ; preds = %.loopexit338
  %231 = load i32, ptr %1, align 4, !tbaa !5
  %reass.sub = sub i32 %231, %.6
  %232 = add i32 %reass.sub, 1
  store i32 %232, ptr %22, align 4, !tbaa !5
  %233 = add nsw i32 %.6, -1
  store i32 %233, ptr %27, align 4, !tbaa !5
  %234 = add i32 %.0279., 1
  %235 = sub i32 %234, %.6
  store i32 %235, ptr %18, align 4, !tbaa !5
  %236 = mul nsw i32 %.6, %28
  %237 = sext i32 %236 to i64
  %238 = getelementptr double, ptr %30, i64 %237
  %239 = getelementptr i8, ptr %238, i64 8
  %240 = sext i32 %.6 to i64
  %241 = getelementptr inbounds i32, ptr %31, i64 %240
  %242 = getelementptr inbounds double, ptr %32, i64 %240
  %243 = getelementptr inbounds double, ptr %33, i64 %240
  %244 = add nsw i32 %231, %.6
  %245 = sext i32 %244 to i64
  %246 = getelementptr inbounds double, ptr %33, i64 %245
  %247 = shl i32 %231, 1
  %248 = or disjoint i32 %247, 1
  %249 = sext i32 %248 to i64
  %250 = getelementptr inbounds double, ptr %33, i64 %249
  %251 = call i32 @dlaqp2rk_(ptr noundef nonnull %0, ptr noundef nonnull %22, ptr noundef nonnull %2, ptr noundef nonnull %27, ptr noundef nonnull %18, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef nonnull %25, ptr noundef nonnull %19, ptr noundef %239, ptr noundef nonnull %7, ptr noundef nonnull %24, ptr noundef %9, ptr noundef %10, ptr noundef nonnull %241, ptr noundef nonnull %242, ptr noundef nonnull %243, ptr noundef nonnull %246, ptr noundef nonnull %250, ptr noundef nonnull %21) #5
  %252 = load i32, ptr %24, align 4, !tbaa !5
  %253 = add nsw i32 %252, %233
  store i32 %253, ptr %8, align 4, !tbaa !5
  %254 = load i32, ptr %21, align 4
  %255 = load i32, ptr %22, align 4, !tbaa !5
  %256 = icmp sgt i32 %254, %255
  br i1 %256, label %257, label %264

257:                                              ; preds = %230
  %258 = load i32, ptr %16, align 4, !tbaa !5
  %259 = icmp eq i32 %258, 0
  br i1 %259, label %260, label %264

260:                                              ; preds = %257
  %261 = load i32, ptr %27, align 4, !tbaa !5
  %262 = shl i32 %261, 1
  %263 = add nsw i32 %262, %254
  store i32 %263, ptr %16, align 4, !tbaa !5
  br label %.loopexit

264:                                              ; preds = %257, %230
  %265 = icmp sle i32 %254, %255
  %266 = icmp sgt i32 %254, 0
  %or.cond7 = and i1 %266, %265
  br i1 %or.cond7, label %267, label %.loopexit

267:                                              ; preds = %264
  %268 = load i32, ptr %27, align 4, !tbaa !5
  %269 = add nsw i32 %268, %254
  store i32 %269, ptr %16, align 4, !tbaa !5
  br label %.loopexit

270:                                              ; preds = %.loopexit338
  store i32 %.0279., ptr %8, align 4, !tbaa !5
  %271 = icmp slt i32 %145, %.
  br i1 %271, label %272, label %.loopexit

272:                                              ; preds = %270
  %273 = load i32, ptr %1, align 4, !tbaa !5
  %274 = sub nsw i32 %273, %.0279.
  store i32 %274, ptr %18, align 4, !tbaa !5
  %275 = sext i32 %.0279. to i64
  %276 = getelementptr double, ptr %33, i64 %275
  %277 = getelementptr i8, ptr %276, i64 8
  %278 = call i32 @idamax_(ptr noundef nonnull %18, ptr noundef %277, ptr noundef nonnull @c__1) #5
  %279 = add nsw i32 %278, %.0279.
  %280 = sext i32 %279 to i64
  %281 = getelementptr inbounds double, ptr %33, i64 %280
  %282 = load double, ptr %281, align 8, !tbaa !9
  store double %282, ptr %9, align 8, !tbaa !9
  %283 = load i32, ptr %8, align 4, !tbaa !5
  %284 = icmp eq i32 %283, 0
  %285 = load double, ptr %19, align 8
  %286 = fdiv double %282, %285
  %storemerge = select i1 %284, double 1.000000e+00, double %286
  store double %storemerge, ptr %10, align 8, !tbaa !9
  %.not314.not359 = icmp slt i32 %283, %.
  br i1 %.not314.not359, label %.lr.ph362.preheader, label %.loopexit

.lr.ph362.preheader:                              ; preds = %272
  %287 = sext i32 %283 to i64
  %288 = shl nsw i64 %287, 3
  %scevgep = getelementptr i8, ptr %12, i64 %288
  %289 = xor i32 %283, -1
  %290 = add i32 %., %289
  %291 = zext i32 %290 to i64
  %292 = shl nuw nsw i64 %291, 3
  %293 = add nuw nsw i64 %292, 8
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %scevgep, i8 0, i64 %293, i1 false), !tbaa !9
  br label %.loopexit

.loopexit:                                        ; preds = %.lr.ph362.preheader, %272, %270, %260, %267, %264
  store double %75, ptr %13, align 8, !tbaa !9
  br label %294

294:                                              ; preds = %81, %.loopexit, %226, %._crit_edge352, %._crit_edge367, %._crit_edge372, %106, %83, %.thread328
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #5
  ret i32 0
}

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

declare i32 @disnan_(ptr noundef) local_unnamed_addr #2

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) local_unnamed_addr #2

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

; 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 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, !13, !14}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!"llvm.loop.isvectorized", i32 1}
!14 = !{!"llvm.loop.unroll.runtime.disable"}
!15 = distinct !{!15, !12, !14, !13}
!16 = distinct !{!16, !12}
!17 = distinct !{!17, !12}


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