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

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [5 x i8], align 1
@c_b9 = external hidden global double, align 8
@c_b10 = external hidden global double, align 8
@c__1 = external hidden global i32, align 4

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

95:                                               ; preds = %12
  %96 = load ptr, ptr %13, align 8, !tbaa !5
  %97 = call i32 @lsame_(ptr noundef %96, ptr noundef @.str.1)
  %98 = icmp ne i32 %97, 0
  br label %99

99:                                               ; preds = %95, %12
  %100 = phi i1 [ true, %12 ], [ %98, %95 ]
  %101 = zext i1 %100 to i32
  store i32 %101, ptr %49, align 4, !tbaa !9
  %102 = load ptr, ptr %14, align 8, !tbaa !5
  %103 = call i32 @lsame_(ptr noundef %102, ptr noundef @.str.1)
  store i32 %103, ptr %50, align 4, !tbaa !9
  %104 = load ptr, ptr %16, align 8, !tbaa !5
  %105 = load i32, ptr %104, align 4, !tbaa !9
  %106 = add nsw i32 %105, 1
  store i32 %106, ptr %57, align 4, !tbaa !9
  %107 = load ptr, ptr %16, align 8, !tbaa !5
  %108 = load i32, ptr %107, align 4, !tbaa !9
  %109 = sub nsw i32 %108, 1
  store i32 %109, ptr %63, align 4, !tbaa !9
  %110 = load ptr, ptr %18, align 8, !tbaa !5
  %111 = load i32, ptr %110, align 4, !tbaa !9
  %112 = sub nsw i32 %111, 1
  store i32 %112, ptr %38, align 4, !tbaa !9
  store i32 1, ptr %47, align 4, !tbaa !9
  %113 = load ptr, ptr %24, align 8, !tbaa !5
  store i32 0, ptr %113, align 4, !tbaa !9
  %114 = load i32, ptr %49, align 4, !tbaa !9
  %115 = icmp ne i32 %114, 0
  br i1 %115, label %122, label %116

116:                                              ; preds = %99
  %117 = load ptr, ptr %13, align 8, !tbaa !5
  %118 = call i32 @lsame_(ptr noundef %117, ptr noundef @.str.2)
  %119 = icmp ne i32 %118, 0
  br i1 %119, label %122, label %120

120:                                              ; preds = %116
  %121 = load ptr, ptr %24, align 8, !tbaa !5
  store i32 -1, ptr %121, align 4, !tbaa !9
  br label %173

122:                                              ; preds = %116, %99
  %123 = load i32, ptr %50, align 4, !tbaa !9
  %124 = icmp ne i32 %123, 0
  br i1 %124, label %131, label %125

125:                                              ; preds = %122
  %126 = load ptr, ptr %14, align 8, !tbaa !5
  %127 = call i32 @lsame_(ptr noundef %126, ptr noundef @.str.3)
  %128 = icmp ne i32 %127, 0
  br i1 %128, label %131, label %129

129:                                              ; preds = %125
  %130 = load ptr, ptr %24, align 8, !tbaa !5
  store i32 -2, ptr %130, align 4, !tbaa !9
  br label %172

131:                                              ; preds = %125, %122
  %132 = load ptr, ptr %15, align 8, !tbaa !5
  %133 = load i32, ptr %132, align 4, !tbaa !9
  %134 = icmp slt i32 %133, 0
  br i1 %134, label %135, label %137

135:                                              ; preds = %131
  %136 = load ptr, ptr %24, align 8, !tbaa !5
  store i32 -3, ptr %136, align 4, !tbaa !9
  br label %171

137:                                              ; preds = %131
  %138 = load ptr, ptr %16, align 8, !tbaa !5
  %139 = load i32, ptr %138, align 4, !tbaa !9
  %140 = icmp slt i32 %139, 0
  br i1 %140, label %141, label %143

141:                                              ; preds = %137
  %142 = load ptr, ptr %24, align 8, !tbaa !5
  store i32 -4, ptr %142, align 4, !tbaa !9
  br label %170

143:                                              ; preds = %137
  %144 = load ptr, ptr %18, align 8, !tbaa !5
  %145 = load i32, ptr %144, align 4, !tbaa !9
  %146 = load i32, ptr %57, align 4, !tbaa !9
  %147 = icmp slt i32 %145, %146
  br i1 %147, label %148, label %150

148:                                              ; preds = %143
  %149 = load ptr, ptr %24, align 8, !tbaa !5
  store i32 -6, ptr %149, align 4, !tbaa !9
  br label %169

150:                                              ; preds = %143
  %151 = load ptr, ptr %22, align 8, !tbaa !5
  %152 = load i32, ptr %151, align 4, !tbaa !9
  %153 = load ptr, ptr %15, align 8, !tbaa !5
  %154 = load i32, ptr %153, align 4, !tbaa !9
  %155 = icmp sge i32 1, %154
  br i1 %155, label %156, label %157

156:                                              ; preds = %150
  br label %160

157:                                              ; preds = %150
  %158 = load ptr, ptr %15, align 8, !tbaa !5
  %159 = load i32, ptr %158, align 4, !tbaa !9
  br label %160

160:                                              ; preds = %157, %156
  %161 = phi i32 [ 1, %156 ], [ %159, %157 ]
  %162 = icmp slt i32 %152, %161
  br i1 %162, label %163, label %168

163:                                              ; preds = %160
  %164 = load i32, ptr %49, align 4, !tbaa !9
  %165 = icmp ne i32 %164, 0
  br i1 %165, label %166, label %168

166:                                              ; preds = %163
  %167 = load ptr, ptr %24, align 8, !tbaa !5
  store i32 -10, ptr %167, align 4, !tbaa !9
  br label %168

168:                                              ; preds = %166, %163, %160
  br label %169

169:                                              ; preds = %168, %148
  br label %170

170:                                              ; preds = %169, %141
  br label %171

171:                                              ; preds = %170, %135
  br label %172

172:                                              ; preds = %171, %129
  br label %173

173:                                              ; preds = %172, %120
  %174 = load ptr, ptr %24, align 8, !tbaa !5
  %175 = load i32, ptr %174, align 4, !tbaa !9
  %176 = icmp ne i32 %175, 0
  br i1 %176, label %177, label %182

177:                                              ; preds = %173
  %178 = load ptr, ptr %24, align 8, !tbaa !5
  %179 = load i32, ptr %178, align 4, !tbaa !9
  %180 = sub nsw i32 0, %179
  store i32 %180, ptr %29, align 4, !tbaa !9
  %181 = call i32 @xerbla_(ptr noundef @.str.4, ptr noundef %29, i32 noundef 6)
  store i32 1, ptr %64, align 4
  br label %1908

182:                                              ; preds = %173
  %183 = load ptr, ptr %15, align 8, !tbaa !5
  %184 = load i32, ptr %183, align 4, !tbaa !9
  %185 = icmp eq i32 %184, 0
  br i1 %185, label %186, label %187

186:                                              ; preds = %182
  store i32 1, ptr %64, align 4
  br label %1908

187:                                              ; preds = %182
  %188 = load i32, ptr %48, align 4, !tbaa !9
  %189 = icmp ne i32 %188, 0
  br i1 %189, label %190, label %198

190:                                              ; preds = %187
  %191 = load ptr, ptr %15, align 8, !tbaa !5
  %192 = load ptr, ptr %15, align 8, !tbaa !5
  %193 = load ptr, ptr %21, align 8, !tbaa !5
  %194 = load i32, ptr %28, align 4, !tbaa !9
  %195 = sext i32 %194 to i64
  %196 = getelementptr inbounds double, ptr %193, i64 %195
  %197 = load ptr, ptr %22, align 8, !tbaa !5
  call void @dlaset_(ptr noundef @.str.5, ptr noundef %191, ptr noundef %192, ptr noundef @c_b9, ptr noundef @c_b10, ptr noundef %196, ptr noundef %197)
  br label %198

198:                                              ; preds = %190, %187
  %199 = load i32, ptr %57, align 4, !tbaa !9
  %200 = load ptr, ptr %18, align 8, !tbaa !5
  %201 = load i32, ptr %200, align 4, !tbaa !9
  %202 = mul nsw i32 %199, %201
  store i32 %202, ptr %34, align 4, !tbaa !9
  %203 = load ptr, ptr %15, align 8, !tbaa !5
  %204 = load i32, ptr %203, align 4, !tbaa !9
  %205 = sub nsw i32 %204, 1
  store i32 %205, ptr %29, align 4, !tbaa !9
  %206 = load i32, ptr %29, align 4, !tbaa !9
  %207 = load ptr, ptr %16, align 8, !tbaa !5
  %208 = load i32, ptr %207, align 4, !tbaa !9
  %209 = icmp sle i32 %206, %208
  br i1 %209, label %210, label %212

210:                                              ; preds = %198
  %211 = load i32, ptr %29, align 4, !tbaa !9
  br label %215

212:                                              ; preds = %198
  %213 = load ptr, ptr %16, align 8, !tbaa !5
  %214 = load i32, ptr %213, align 4, !tbaa !9
  br label %215

215:                                              ; preds = %212, %210
  %216 = phi i32 [ %211, %210 ], [ %214, %212 ]
  store i32 %216, ptr %60, align 4, !tbaa !9
  %217 = load i32, ptr %50, align 4, !tbaa !9
  %218 = icmp ne i32 %217, 0
  br i1 %218, label %219, label %1082

219:                                              ; preds = %215
  %220 = load ptr, ptr %16, align 8, !tbaa !5
  %221 = load i32, ptr %220, align 4, !tbaa !9
  %222 = icmp sgt i32 %221, 1
  br i1 %222, label %223, label %1008

223:                                              ; preds = %219
  store i32 0, ptr %55, align 4, !tbaa !9
  %224 = load i32, ptr %60, align 4, !tbaa !9
  %225 = add nsw i32 %224, 2
  store i32 %225, ptr %52, align 4, !tbaa !9
  store i32 1, ptr %53, align 4, !tbaa !9
  %226 = load ptr, ptr %15, align 8, !tbaa !5
  %227 = load i32, ptr %226, align 4, !tbaa !9
  %228 = sub nsw i32 %227, 2
  store i32 %228, ptr %29, align 4, !tbaa !9
  store i32 1, ptr %43, align 4, !tbaa !9
  br label %229

229:                                              ; preds = %1004, %223
  %230 = load i32, ptr %43, align 4, !tbaa !9
  %231 = load i32, ptr %29, align 4, !tbaa !9
  %232 = icmp sle i32 %230, %231
  br i1 %232, label %233, label %1007

233:                                              ; preds = %229
  %234 = load i32, ptr %60, align 4, !tbaa !9
  %235 = add nsw i32 %234, 1
  store i32 %235, ptr %45, align 4, !tbaa !9
  br label %236

236:                                              ; preds = %1000, %233
  %237 = load i32, ptr %45, align 4, !tbaa !9
  %238 = icmp sge i32 %237, 2
  br i1 %238, label %239, label %1003

239:                                              ; preds = %236
  %240 = load i32, ptr %60, align 4, !tbaa !9
  %241 = load i32, ptr %52, align 4, !tbaa !9
  %242 = add nsw i32 %241, %240
  store i32 %242, ptr %52, align 4, !tbaa !9
  %243 = load i32, ptr %60, align 4, !tbaa !9
  %244 = load i32, ptr %53, align 4, !tbaa !9
  %245 = add nsw i32 %244, %243
  store i32 %245, ptr %53, align 4, !tbaa !9
  %246 = load i32, ptr %55, align 4, !tbaa !9
  %247 = icmp sgt i32 %246, 0
  br i1 %247, label %248, label %366

248:                                              ; preds = %239
  %249 = load ptr, ptr %17, align 8, !tbaa !5
  %250 = load i32, ptr %52, align 4, !tbaa !9
  %251 = sub nsw i32 %250, 1
  %252 = load i32, ptr %25, align 4, !tbaa !9
  %253 = mul nsw i32 %251, %252
  %254 = add nsw i32 %253, 1
  %255 = sext i32 %254 to i64
  %256 = getelementptr inbounds double, ptr %249, i64 %255
  %257 = load ptr, ptr %23, align 8, !tbaa !5
  %258 = load i32, ptr %52, align 4, !tbaa !9
  %259 = sext i32 %258 to i64
  %260 = getelementptr inbounds double, ptr %257, i64 %259
  %261 = load ptr, ptr %19, align 8, !tbaa !5
  %262 = load i32, ptr %52, align 4, !tbaa !9
  %263 = sext i32 %262 to i64
  %264 = getelementptr inbounds double, ptr %261, i64 %263
  call void @dlargv_(ptr noundef %55, ptr noundef %256, ptr noundef %34, ptr noundef %260, ptr noundef %57, ptr noundef %264, ptr noundef %57)
  %265 = load i32, ptr %55, align 4, !tbaa !9
  %266 = load ptr, ptr %16, align 8, !tbaa !5
  %267 = load i32, ptr %266, align 4, !tbaa !9
  %268 = shl i32 %267, 1
  %269 = sub nsw i32 %268, 1
  %270 = icmp sge i32 %265, %269
  br i1 %270, label %271, label %310

271:                                              ; preds = %248
  %272 = load ptr, ptr %16, align 8, !tbaa !5
  %273 = load i32, ptr %272, align 4, !tbaa !9
  %274 = sub nsw i32 %273, 1
  store i32 %274, ptr %30, align 4, !tbaa !9
  store i32 1, ptr %46, align 4, !tbaa !9
  br label %275

275:                                              ; preds = %306, %271
  %276 = load i32, ptr %46, align 4, !tbaa !9
  %277 = load i32, ptr %30, align 4, !tbaa !9
  %278 = icmp sle i32 %276, %277
  br i1 %278, label %279, label %309

279:                                              ; preds = %275
  %280 = load ptr, ptr %17, align 8, !tbaa !5
  %281 = load i32, ptr %46, align 4, !tbaa !9
  %282 = add nsw i32 %281, 1
  %283 = load i32, ptr %52, align 4, !tbaa !9
  %284 = sub nsw i32 %283, 1
  %285 = load i32, ptr %25, align 4, !tbaa !9
  %286 = mul nsw i32 %284, %285
  %287 = add nsw i32 %282, %286
  %288 = sext i32 %287 to i64
  %289 = getelementptr inbounds double, ptr %280, i64 %288
  %290 = load ptr, ptr %17, align 8, !tbaa !5
  %291 = load i32, ptr %46, align 4, !tbaa !9
  %292 = load i32, ptr %52, align 4, !tbaa !9
  %293 = load i32, ptr %25, align 4, !tbaa !9
  %294 = mul nsw i32 %292, %293
  %295 = add nsw i32 %291, %294
  %296 = sext i32 %295 to i64
  %297 = getelementptr inbounds double, ptr %290, i64 %296
  %298 = load ptr, ptr %19, align 8, !tbaa !5
  %299 = load i32, ptr %52, align 4, !tbaa !9
  %300 = sext i32 %299 to i64
  %301 = getelementptr inbounds double, ptr %298, i64 %300
  %302 = load ptr, ptr %23, align 8, !tbaa !5
  %303 = load i32, ptr %52, align 4, !tbaa !9
  %304 = sext i32 %303 to i64
  %305 = getelementptr inbounds double, ptr %302, i64 %304
  call void @dlartv_(ptr noundef %55, ptr noundef %289, ptr noundef %34, ptr noundef %297, ptr noundef %34, ptr noundef %301, ptr noundef %305, ptr noundef %57)
  br label %306

306:                                              ; preds = %279
  %307 = load i32, ptr %46, align 4, !tbaa !9
  %308 = add nsw i32 %307, 1
  store i32 %308, ptr %46, align 4, !tbaa !9
  br label %275, !llvm.loop !11

309:                                              ; preds = %275
  br label %365

310:                                              ; preds = %248
  %311 = load i32, ptr %52, align 4, !tbaa !9
  %312 = load i32, ptr %55, align 4, !tbaa !9
  %313 = sub nsw i32 %312, 1
  %314 = load i32, ptr %57, align 4, !tbaa !9
  %315 = mul nsw i32 %313, %314
  %316 = add nsw i32 %311, %315
  store i32 %316, ptr %35, align 4, !tbaa !9
  %317 = load i32, ptr %35, align 4, !tbaa !9
  store i32 %317, ptr %30, align 4, !tbaa !9
  %318 = load i32, ptr %57, align 4, !tbaa !9
  store i32 %318, ptr %31, align 4, !tbaa !9
  %319 = load i32, ptr %52, align 4, !tbaa !9
  store i32 %319, ptr %37, align 4, !tbaa !9
  br label %320

320:                                              ; preds = %360, %310
  %321 = load i32, ptr %31, align 4, !tbaa !9
  %322 = icmp slt i32 %321, 0
  br i1 %322, label %323, label %328

323:                                              ; preds = %320
  %324 = load i32, ptr %37, align 4, !tbaa !9
  %325 = load i32, ptr %30, align 4, !tbaa !9
  %326 = icmp sge i32 %324, %325
  %327 = zext i1 %326 to i32
  br label %333

328:                                              ; preds = %320
  %329 = load i32, ptr %37, align 4, !tbaa !9
  %330 = load i32, ptr %30, align 4, !tbaa !9
  %331 = icmp sle i32 %329, %330
  %332 = zext i1 %331 to i32
  br label %333

333:                                              ; preds = %328, %323
  %334 = phi i32 [ %327, %323 ], [ %332, %328 ]
  %335 = icmp ne i32 %334, 0
  br i1 %335, label %336, label %364

336:                                              ; preds = %333
  %337 = load ptr, ptr %17, align 8, !tbaa !5
  %338 = load i32, ptr %37, align 4, !tbaa !9
  %339 = sub nsw i32 %338, 1
  %340 = load i32, ptr %25, align 4, !tbaa !9
  %341 = mul nsw i32 %339, %340
  %342 = add nsw i32 %341, 2
  %343 = sext i32 %342 to i64
  %344 = getelementptr inbounds double, ptr %337, i64 %343
  %345 = load ptr, ptr %17, align 8, !tbaa !5
  %346 = load i32, ptr %37, align 4, !tbaa !9
  %347 = load i32, ptr %25, align 4, !tbaa !9
  %348 = mul nsw i32 %346, %347
  %349 = add nsw i32 %348, 1
  %350 = sext i32 %349 to i64
  %351 = getelementptr inbounds double, ptr %345, i64 %350
  %352 = load ptr, ptr %19, align 8, !tbaa !5
  %353 = load i32, ptr %37, align 4, !tbaa !9
  %354 = sext i32 %353 to i64
  %355 = getelementptr inbounds double, ptr %352, i64 %354
  %356 = load ptr, ptr %23, align 8, !tbaa !5
  %357 = load i32, ptr %37, align 4, !tbaa !9
  %358 = sext i32 %357 to i64
  %359 = getelementptr inbounds double, ptr %356, i64 %358
  call void @drot_(ptr noundef %63, ptr noundef %344, ptr noundef @c__1, ptr noundef %351, ptr noundef @c__1, ptr noundef %355, ptr noundef %359)
  br label %360

360:                                              ; preds = %336
  %361 = load i32, ptr %31, align 4, !tbaa !9
  %362 = load i32, ptr %37, align 4, !tbaa !9
  %363 = add nsw i32 %362, %361
  store i32 %363, ptr %37, align 4, !tbaa !9
  br label %320, !llvm.loop !13

364:                                              ; preds = %333
  br label %365

365:                                              ; preds = %364, %309
  br label %366

366:                                              ; preds = %365, %239
  %367 = load i32, ptr %45, align 4, !tbaa !9
  %368 = icmp sgt i32 %367, 2
  br i1 %368, label %369, label %491

369:                                              ; preds = %366
  %370 = load i32, ptr %45, align 4, !tbaa !9
  %371 = load ptr, ptr %15, align 8, !tbaa !5
  %372 = load i32, ptr %371, align 4, !tbaa !9
  %373 = load i32, ptr %43, align 4, !tbaa !9
  %374 = sub nsw i32 %372, %373
  %375 = add nsw i32 %374, 1
  %376 = icmp sle i32 %370, %375
  br i1 %376, label %377, label %484

377:                                              ; preds = %369
  %378 = load ptr, ptr %17, align 8, !tbaa !5
  %379 = load ptr, ptr %16, align 8, !tbaa !5
  %380 = load i32, ptr %379, align 4, !tbaa !9
  %381 = load i32, ptr %45, align 4, !tbaa !9
  %382 = sub nsw i32 %380, %381
  %383 = add nsw i32 %382, 3
  %384 = load i32, ptr %43, align 4, !tbaa !9
  %385 = load i32, ptr %45, align 4, !tbaa !9
  %386 = add nsw i32 %384, %385
  %387 = sub nsw i32 %386, 2
  %388 = load i32, ptr %25, align 4, !tbaa !9
  %389 = mul nsw i32 %387, %388
  %390 = add nsw i32 %383, %389
  %391 = sext i32 %390 to i64
  %392 = getelementptr inbounds double, ptr %378, i64 %391
  %393 = load ptr, ptr %17, align 8, !tbaa !5
  %394 = load ptr, ptr %16, align 8, !tbaa !5
  %395 = load i32, ptr %394, align 4, !tbaa !9
  %396 = load i32, ptr %45, align 4, !tbaa !9
  %397 = sub nsw i32 %395, %396
  %398 = add nsw i32 %397, 2
  %399 = load i32, ptr %43, align 4, !tbaa !9
  %400 = load i32, ptr %45, align 4, !tbaa !9
  %401 = add nsw i32 %399, %400
  %402 = sub nsw i32 %401, 1
  %403 = load i32, ptr %25, align 4, !tbaa !9
  %404 = mul nsw i32 %402, %403
  %405 = add nsw i32 %398, %404
  %406 = sext i32 %405 to i64
  %407 = getelementptr inbounds double, ptr %393, i64 %406
  %408 = load ptr, ptr %19, align 8, !tbaa !5
  %409 = load i32, ptr %43, align 4, !tbaa !9
  %410 = load i32, ptr %45, align 4, !tbaa !9
  %411 = add nsw i32 %409, %410
  %412 = sub nsw i32 %411, 1
  %413 = sext i32 %412 to i64
  %414 = getelementptr inbounds double, ptr %408, i64 %413
  %415 = load ptr, ptr %23, align 8, !tbaa !5
  %416 = load i32, ptr %43, align 4, !tbaa !9
  %417 = load i32, ptr %45, align 4, !tbaa !9
  %418 = add nsw i32 %416, %417
  %419 = sub nsw i32 %418, 1
  %420 = sext i32 %419 to i64
  %421 = getelementptr inbounds double, ptr %415, i64 %420
  call void @dlartg_(ptr noundef %392, ptr noundef %407, ptr noundef %414, ptr noundef %421, ptr noundef %40)
  %422 = load double, ptr %40, align 8, !tbaa !14
  %423 = load ptr, ptr %17, align 8, !tbaa !5
  %424 = load ptr, ptr %16, align 8, !tbaa !5
  %425 = load i32, ptr %424, align 4, !tbaa !9
  %426 = load i32, ptr %45, align 4, !tbaa !9
  %427 = sub nsw i32 %425, %426
  %428 = add nsw i32 %427, 3
  %429 = load i32, ptr %43, align 4, !tbaa !9
  %430 = load i32, ptr %45, align 4, !tbaa !9
  %431 = add nsw i32 %429, %430
  %432 = sub nsw i32 %431, 2
  %433 = load i32, ptr %25, align 4, !tbaa !9
  %434 = mul nsw i32 %432, %433
  %435 = add nsw i32 %428, %434
  %436 = sext i32 %435 to i64
  %437 = getelementptr inbounds double, ptr %423, i64 %436
  store double %422, ptr %437, align 8, !tbaa !14
  %438 = load i32, ptr %45, align 4, !tbaa !9
  %439 = sub nsw i32 %438, 3
  store i32 %439, ptr %31, align 4, !tbaa !9
  %440 = load ptr, ptr %17, align 8, !tbaa !5
  %441 = load ptr, ptr %16, align 8, !tbaa !5
  %442 = load i32, ptr %441, align 4, !tbaa !9
  %443 = load i32, ptr %45, align 4, !tbaa !9
  %444 = sub nsw i32 %442, %443
  %445 = add nsw i32 %444, 4
  %446 = load i32, ptr %43, align 4, !tbaa !9
  %447 = load i32, ptr %45, align 4, !tbaa !9
  %448 = add nsw i32 %446, %447
  %449 = sub nsw i32 %448, 2
  %450 = load i32, ptr %25, align 4, !tbaa !9
  %451 = mul nsw i32 %449, %450
  %452 = add nsw i32 %445, %451
  %453 = sext i32 %452 to i64
  %454 = getelementptr inbounds double, ptr %440, i64 %453
  %455 = load ptr, ptr %17, align 8, !tbaa !5
  %456 = load ptr, ptr %16, align 8, !tbaa !5
  %457 = load i32, ptr %456, align 4, !tbaa !9
  %458 = load i32, ptr %45, align 4, !tbaa !9
  %459 = sub nsw i32 %457, %458
  %460 = add nsw i32 %459, 3
  %461 = load i32, ptr %43, align 4, !tbaa !9
  %462 = load i32, ptr %45, align 4, !tbaa !9
  %463 = add nsw i32 %461, %462
  %464 = sub nsw i32 %463, 1
  %465 = load i32, ptr %25, align 4, !tbaa !9
  %466 = mul nsw i32 %464, %465
  %467 = add nsw i32 %460, %466
  %468 = sext i32 %467 to i64
  %469 = getelementptr inbounds double, ptr %455, i64 %468
  %470 = load ptr, ptr %19, align 8, !tbaa !5
  %471 = load i32, ptr %43, align 4, !tbaa !9
  %472 = load i32, ptr %45, align 4, !tbaa !9
  %473 = add nsw i32 %471, %472
  %474 = sub nsw i32 %473, 1
  %475 = sext i32 %474 to i64
  %476 = getelementptr inbounds double, ptr %470, i64 %475
  %477 = load ptr, ptr %23, align 8, !tbaa !5
  %478 = load i32, ptr %43, align 4, !tbaa !9
  %479 = load i32, ptr %45, align 4, !tbaa !9
  %480 = add nsw i32 %478, %479
  %481 = sub nsw i32 %480, 1
  %482 = sext i32 %481 to i64
  %483 = getelementptr inbounds double, ptr %477, i64 %482
  call void @drot_(ptr noundef %31, ptr noundef %454, ptr noundef @c__1, ptr noundef %469, ptr noundef @c__1, ptr noundef %476, ptr noundef %483)
  br label %484

484:                                              ; preds = %377, %369
  %485 = load i32, ptr %55, align 4, !tbaa !9
  %486 = add nsw i32 %485, 1
  store i32 %486, ptr %55, align 4, !tbaa !9
  %487 = load i32, ptr %52, align 4, !tbaa !9
  %488 = load i32, ptr %60, align 4, !tbaa !9
  %489 = sub nsw i32 %487, %488
  %490 = sub nsw i32 %489, 1
  store i32 %490, ptr %52, align 4, !tbaa !9
  br label %491

491:                                              ; preds = %484, %366
  %492 = load i32, ptr %55, align 4, !tbaa !9
  %493 = icmp sgt i32 %492, 0
  br i1 %493, label %494, label %529

494:                                              ; preds = %491
  %495 = load ptr, ptr %17, align 8, !tbaa !5
  %496 = load i32, ptr %57, align 4, !tbaa !9
  %497 = load i32, ptr %52, align 4, !tbaa !9
  %498 = sub nsw i32 %497, 1
  %499 = load i32, ptr %25, align 4, !tbaa !9
  %500 = mul nsw i32 %498, %499
  %501 = add nsw i32 %496, %500
  %502 = sext i32 %501 to i64
  %503 = getelementptr inbounds double, ptr %495, i64 %502
  %504 = load ptr, ptr %17, align 8, !tbaa !5
  %505 = load i32, ptr %57, align 4, !tbaa !9
  %506 = load i32, ptr %52, align 4, !tbaa !9
  %507 = load i32, ptr %25, align 4, !tbaa !9
  %508 = mul nsw i32 %506, %507
  %509 = add nsw i32 %505, %508
  %510 = sext i32 %509 to i64
  %511 = getelementptr inbounds double, ptr %504, i64 %510
  %512 = load ptr, ptr %17, align 8, !tbaa !5
  %513 = load ptr, ptr %16, align 8, !tbaa !5
  %514 = load i32, ptr %513, align 4, !tbaa !9
  %515 = load i32, ptr %52, align 4, !tbaa !9
  %516 = load i32, ptr %25, align 4, !tbaa !9
  %517 = mul nsw i32 %515, %516
  %518 = add nsw i32 %514, %517
  %519 = sext i32 %518 to i64
  %520 = getelementptr inbounds double, ptr %512, i64 %519
  %521 = load ptr, ptr %19, align 8, !tbaa !5
  %522 = load i32, ptr %52, align 4, !tbaa !9
  %523 = sext i32 %522 to i64
  %524 = getelementptr inbounds double, ptr %521, i64 %523
  %525 = load ptr, ptr %23, align 8, !tbaa !5
  %526 = load i32, ptr %52, align 4, !tbaa !9
  %527 = sext i32 %526 to i64
  %528 = getelementptr inbounds double, ptr %525, i64 %527
  call void @dlar2v_(ptr noundef %55, ptr noundef %503, ptr noundef %511, ptr noundef %520, ptr noundef %34, ptr noundef %524, ptr noundef %528, ptr noundef %57)
  br label %529

529:                                              ; preds = %494, %491
  %530 = load i32, ptr %55, align 4, !tbaa !9
  %531 = icmp sgt i32 %530, 0
  br i1 %531, label %532, label %723

532:                                              ; preds = %529
  %533 = load ptr, ptr %16, align 8, !tbaa !5
  %534 = load i32, ptr %533, align 4, !tbaa !9
  %535 = shl i32 %534, 1
  %536 = sub nsw i32 %535, 1
  %537 = load i32, ptr %55, align 4, !tbaa !9
  %538 = icmp slt i32 %536, %537
  br i1 %538, label %539, label %603

539:                                              ; preds = %532
  %540 = load ptr, ptr %16, align 8, !tbaa !5
  %541 = load i32, ptr %540, align 4, !tbaa !9
  %542 = sub nsw i32 %541, 1
  store i32 %542, ptr %31, align 4, !tbaa !9
  store i32 1, ptr %46, align 4, !tbaa !9
  br label %543

543:                                              ; preds = %599, %539
  %544 = load i32, ptr %46, align 4, !tbaa !9
  %545 = load i32, ptr %31, align 4, !tbaa !9
  %546 = icmp sle i32 %544, %545
  br i1 %546, label %547, label %602

547:                                              ; preds = %543
  %548 = load i32, ptr %53, align 4, !tbaa !9
  %549 = load i32, ptr %46, align 4, !tbaa !9
  %550 = add nsw i32 %548, %549
  %551 = load ptr, ptr %15, align 8, !tbaa !5
  %552 = load i32, ptr %551, align 4, !tbaa !9
  %553 = icmp sgt i32 %550, %552
  br i1 %553, label %554, label %557

554:                                              ; preds = %547
  %555 = load i32, ptr %55, align 4, !tbaa !9
  %556 = sub nsw i32 %555, 1
  store i32 %556, ptr %62, align 4, !tbaa !9
  br label %559

557:                                              ; preds = %547
  %558 = load i32, ptr %55, align 4, !tbaa !9
  store i32 %558, ptr %62, align 4, !tbaa !9
  br label %559

559:                                              ; preds = %557, %554
  %560 = load i32, ptr %62, align 4, !tbaa !9
  %561 = icmp sgt i32 %560, 0
  br i1 %561, label %562, label %598

562:                                              ; preds = %559
  %563 = load ptr, ptr %17, align 8, !tbaa !5
  %564 = load ptr, ptr %16, align 8, !tbaa !5
  %565 = load i32, ptr %564, align 4, !tbaa !9
  %566 = load i32, ptr %46, align 4, !tbaa !9
  %567 = sub nsw i32 %565, %566
  %568 = load i32, ptr %52, align 4, !tbaa !9
  %569 = load i32, ptr %46, align 4, !tbaa !9
  %570 = add nsw i32 %568, %569
  %571 = load i32, ptr %25, align 4, !tbaa !9
  %572 = mul nsw i32 %570, %571
  %573 = add nsw i32 %567, %572
  %574 = sext i32 %573 to i64
  %575 = getelementptr inbounds double, ptr %563, i64 %574
  %576 = load ptr, ptr %17, align 8, !tbaa !5
  %577 = load ptr, ptr %16, align 8, !tbaa !5
  %578 = load i32, ptr %577, align 4, !tbaa !9
  %579 = load i32, ptr %46, align 4, !tbaa !9
  %580 = sub nsw i32 %578, %579
  %581 = add nsw i32 %580, 1
  %582 = load i32, ptr %52, align 4, !tbaa !9
  %583 = load i32, ptr %46, align 4, !tbaa !9
  %584 = add nsw i32 %582, %583
  %585 = load i32, ptr %25, align 4, !tbaa !9
  %586 = mul nsw i32 %584, %585
  %587 = add nsw i32 %581, %586
  %588 = sext i32 %587 to i64
  %589 = getelementptr inbounds double, ptr %576, i64 %588
  %590 = load ptr, ptr %19, align 8, !tbaa !5
  %591 = load i32, ptr %52, align 4, !tbaa !9
  %592 = sext i32 %591 to i64
  %593 = getelementptr inbounds double, ptr %590, i64 %592
  %594 = load ptr, ptr %23, align 8, !tbaa !5
  %595 = load i32, ptr %52, align 4, !tbaa !9
  %596 = sext i32 %595 to i64
  %597 = getelementptr inbounds double, ptr %594, i64 %596
  call void @dlartv_(ptr noundef %62, ptr noundef %575, ptr noundef %34, ptr noundef %589, ptr noundef %34, ptr noundef %593, ptr noundef %597, ptr noundef %57)
  br label %598

598:                                              ; preds = %562, %559
  br label %599

599:                                              ; preds = %598
  %600 = load i32, ptr %46, align 4, !tbaa !9
  %601 = add nsw i32 %600, 1
  store i32 %601, ptr %46, align 4, !tbaa !9
  br label %543, !llvm.loop !16

602:                                              ; preds = %543
  br label %722

603:                                              ; preds = %532
  %604 = load i32, ptr %52, align 4, !tbaa !9
  %605 = load i32, ptr %57, align 4, !tbaa !9
  %606 = load i32, ptr %55, align 4, !tbaa !9
  %607 = sub nsw i32 %606, 2
  %608 = mul nsw i32 %605, %607
  %609 = add nsw i32 %604, %608
  store i32 %609, ptr %41, align 4, !tbaa !9
  %610 = load i32, ptr %41, align 4, !tbaa !9
  %611 = load i32, ptr %52, align 4, !tbaa !9
  %612 = icmp sge i32 %610, %611
  br i1 %612, label %613, label %671

613:                                              ; preds = %603
  %614 = load i32, ptr %41, align 4, !tbaa !9
  store i32 %614, ptr %31, align 4, !tbaa !9
  %615 = load i32, ptr %57, align 4, !tbaa !9
  store i32 %615, ptr %30, align 4, !tbaa !9
  %616 = load i32, ptr %52, align 4, !tbaa !9
  store i32 %616, ptr %61, align 4, !tbaa !9
  br label %617

617:                                              ; preds = %666, %613
  %618 = load i32, ptr %30, align 4, !tbaa !9
  %619 = icmp slt i32 %618, 0
  br i1 %619, label %620, label %625

620:                                              ; preds = %617
  %621 = load i32, ptr %61, align 4, !tbaa !9
  %622 = load i32, ptr %31, align 4, !tbaa !9
  %623 = icmp sge i32 %621, %622
  %624 = zext i1 %623 to i32
  br label %630

625:                                              ; preds = %617
  %626 = load i32, ptr %61, align 4, !tbaa !9
  %627 = load i32, ptr %31, align 4, !tbaa !9
  %628 = icmp sle i32 %626, %627
  %629 = zext i1 %628 to i32
  br label %630

630:                                              ; preds = %625, %620
  %631 = phi i32 [ %624, %620 ], [ %629, %625 ]
  %632 = icmp ne i32 %631, 0
  br i1 %632, label %633, label %670

633:                                              ; preds = %630
  %634 = load ptr, ptr %16, align 8, !tbaa !5
  %635 = load i32, ptr %634, align 4, !tbaa !9
  %636 = sub nsw i32 %635, 1
  store i32 %636, ptr %32, align 4, !tbaa !9
  %637 = load ptr, ptr %17, align 8, !tbaa !5
  %638 = load ptr, ptr %16, align 8, !tbaa !5
  %639 = load i32, ptr %638, align 4, !tbaa !9
  %640 = sub nsw i32 %639, 1
  %641 = load i32, ptr %61, align 4, !tbaa !9
  %642 = add nsw i32 %641, 1
  %643 = load i32, ptr %25, align 4, !tbaa !9
  %644 = mul nsw i32 %642, %643
  %645 = add nsw i32 %640, %644
  %646 = sext i32 %645 to i64
  %647 = getelementptr inbounds double, ptr %637, i64 %646
  %648 = load ptr, ptr %17, align 8, !tbaa !5
  %649 = load ptr, ptr %16, align 8, !tbaa !5
  %650 = load i32, ptr %649, align 4, !tbaa !9
  %651 = load i32, ptr %61, align 4, !tbaa !9
  %652 = add nsw i32 %651, 1
  %653 = load i32, ptr %25, align 4, !tbaa !9
  %654 = mul nsw i32 %652, %653
  %655 = add nsw i32 %650, %654
  %656 = sext i32 %655 to i64
  %657 = getelementptr inbounds double, ptr %648, i64 %656
  %658 = load ptr, ptr %19, align 8, !tbaa !5
  %659 = load i32, ptr %61, align 4, !tbaa !9
  %660 = sext i32 %659 to i64
  %661 = getelementptr inbounds double, ptr %658, i64 %660
  %662 = load ptr, ptr %23, align 8, !tbaa !5
  %663 = load i32, ptr %61, align 4, !tbaa !9
  %664 = sext i32 %663 to i64
  %665 = getelementptr inbounds double, ptr %662, i64 %664
  call void @drot_(ptr noundef %32, ptr noundef %647, ptr noundef %38, ptr noundef %657, ptr noundef %38, ptr noundef %661, ptr noundef %665)
  br label %666

666:                                              ; preds = %633
  %667 = load i32, ptr %30, align 4, !tbaa !9
  %668 = load i32, ptr %61, align 4, !tbaa !9
  %669 = add nsw i32 %668, %667
  store i32 %669, ptr %61, align 4, !tbaa !9
  br label %617, !llvm.loop !17

670:                                              ; preds = %630
  br label %671

671:                                              ; preds = %670, %603
  %672 = load i32, ptr %63, align 4, !tbaa !9
  store i32 %672, ptr %30, align 4, !tbaa !9
  %673 = load ptr, ptr %15, align 8, !tbaa !5
  %674 = load i32, ptr %673, align 4, !tbaa !9
  %675 = load i32, ptr %53, align 4, !tbaa !9
  %676 = sub nsw i32 %674, %675
  store i32 %676, ptr %31, align 4, !tbaa !9
  %677 = load i32, ptr %30, align 4, !tbaa !9
  %678 = load i32, ptr %31, align 4, !tbaa !9
  %679 = icmp sle i32 %677, %678
  br i1 %679, label %680, label %682

680:                                              ; preds = %671
  %681 = load i32, ptr %30, align 4, !tbaa !9
  br label %684

682:                                              ; preds = %671
  %683 = load i32, ptr %31, align 4, !tbaa !9
  br label %684

684:                                              ; preds = %682, %680
  %685 = phi i32 [ %681, %680 ], [ %683, %682 ]
  store i32 %685, ptr %36, align 4, !tbaa !9
  %686 = load i32, ptr %41, align 4, !tbaa !9
  %687 = load i32, ptr %57, align 4, !tbaa !9
  %688 = add nsw i32 %686, %687
  store i32 %688, ptr %39, align 4, !tbaa !9
  %689 = load i32, ptr %36, align 4, !tbaa !9
  %690 = icmp sgt i32 %689, 0
  br i1 %690, label %691, label %721

691:                                              ; preds = %684
  %692 = load ptr, ptr %17, align 8, !tbaa !5
  %693 = load ptr, ptr %16, align 8, !tbaa !5
  %694 = load i32, ptr %693, align 4, !tbaa !9
  %695 = sub nsw i32 %694, 1
  %696 = load i32, ptr %39, align 4, !tbaa !9
  %697 = add nsw i32 %696, 1
  %698 = load i32, ptr %25, align 4, !tbaa !9
  %699 = mul nsw i32 %697, %698
  %700 = add nsw i32 %695, %699
  %701 = sext i32 %700 to i64
  %702 = getelementptr inbounds double, ptr %692, i64 %701
  %703 = load ptr, ptr %17, align 8, !tbaa !5
  %704 = load ptr, ptr %16, align 8, !tbaa !5
  %705 = load i32, ptr %704, align 4, !tbaa !9
  %706 = load i32, ptr %39, align 4, !tbaa !9
  %707 = add nsw i32 %706, 1
  %708 = load i32, ptr %25, align 4, !tbaa !9
  %709 = mul nsw i32 %707, %708
  %710 = add nsw i32 %705, %709
  %711 = sext i32 %710 to i64
  %712 = getelementptr inbounds double, ptr %703, i64 %711
  %713 = load ptr, ptr %19, align 8, !tbaa !5
  %714 = load i32, ptr %39, align 4, !tbaa !9
  %715 = sext i32 %714 to i64
  %716 = getelementptr inbounds double, ptr %713, i64 %715
  %717 = load ptr, ptr %23, align 8, !tbaa !5
  %718 = load i32, ptr %39, align 4, !tbaa !9
  %719 = sext i32 %718 to i64
  %720 = getelementptr inbounds double, ptr %717, i64 %719
  call void @drot_(ptr noundef %36, ptr noundef %702, ptr noundef %38, ptr noundef %712, ptr noundef %38, ptr noundef %716, ptr noundef %720)
  br label %721

721:                                              ; preds = %691, %684
  br label %722

722:                                              ; preds = %721, %602
  br label %723

723:                                              ; preds = %722, %529
  %724 = load i32, ptr %49, align 4, !tbaa !9
  %725 = icmp ne i32 %724, 0
  br i1 %725, label %726, label %909

726:                                              ; preds = %723
  %727 = load i32, ptr %48, align 4, !tbaa !9
  %728 = icmp ne i32 %727, 0
  br i1 %728, label %729, label %858

729:                                              ; preds = %726
  %730 = load i32, ptr %47, align 4, !tbaa !9
  %731 = load i32, ptr %53, align 4, !tbaa !9
  %732 = icmp sge i32 %730, %731
  br i1 %732, label %733, label %735

733:                                              ; preds = %729
  %734 = load i32, ptr %47, align 4, !tbaa !9
  br label %737

735:                                              ; preds = %729
  %736 = load i32, ptr %53, align 4, !tbaa !9
  br label %737

737:                                              ; preds = %735, %733
  %738 = phi i32 [ %734, %733 ], [ %736, %735 ]
  store i32 %738, ptr %47, align 4, !tbaa !9
  store i32 0, ptr %30, align 4, !tbaa !9
  %739 = load i32, ptr %45, align 4, !tbaa !9
  %740 = sub nsw i32 %739, 3
  store i32 %740, ptr %31, align 4, !tbaa !9
  %741 = load i32, ptr %30, align 4, !tbaa !9
  %742 = load i32, ptr %31, align 4, !tbaa !9
  %743 = icmp sge i32 %741, %742
  br i1 %743, label %744, label %746

744:                                              ; preds = %737
  %745 = load i32, ptr %30, align 4, !tbaa !9
  br label %748

746:                                              ; preds = %737
  %747 = load i32, ptr %31, align 4, !tbaa !9
  br label %748

748:                                              ; preds = %746, %744
  %749 = phi i32 [ %745, %744 ], [ %747, %746 ]
  store i32 %749, ptr %51, align 4, !tbaa !9
  %750 = load i32, ptr %43, align 4, !tbaa !9
  %751 = load ptr, ptr %16, align 8, !tbaa !5
  %752 = load i32, ptr %751, align 4, !tbaa !9
  %753 = mul nsw i32 %750, %752
  %754 = add nsw i32 %753, 1
  store i32 %754, ptr %56, align 4, !tbaa !9
  %755 = load i32, ptr %45, align 4, !tbaa !9
  %756 = icmp eq i32 %755, 2
  br i1 %756, label %757, label %762

757:                                              ; preds = %748
  %758 = load ptr, ptr %16, align 8, !tbaa !5
  %759 = load i32, ptr %758, align 4, !tbaa !9
  %760 = load i32, ptr %56, align 4, !tbaa !9
  %761 = add nsw i32 %760, %759
  store i32 %761, ptr %56, align 4, !tbaa !9
  br label %762

762:                                              ; preds = %757, %748
  %763 = load i32, ptr %56, align 4, !tbaa !9
  %764 = load i32, ptr %47, align 4, !tbaa !9
  %765 = icmp sle i32 %763, %764
  br i1 %765, label %766, label %768

766:                                              ; preds = %762
  %767 = load i32, ptr %56, align 4, !tbaa !9
  br label %770

768:                                              ; preds = %762
  %769 = load i32, ptr %47, align 4, !tbaa !9
  br label %770

770:                                              ; preds = %768, %766
  %771 = phi i32 [ %767, %766 ], [ %769, %768 ]
  store i32 %771, ptr %56, align 4, !tbaa !9
  %772 = load i32, ptr %53, align 4, !tbaa !9
  store i32 %772, ptr %30, align 4, !tbaa !9
  %773 = load i32, ptr %57, align 4, !tbaa !9
  store i32 %773, ptr %31, align 4, !tbaa !9
  %774 = load i32, ptr %52, align 4, !tbaa !9
  store i32 %774, ptr %44, align 4, !tbaa !9
  br label %775

775:                                              ; preds = %853, %770
  %776 = load i32, ptr %31, align 4, !tbaa !9
  %777 = icmp slt i32 %776, 0
  br i1 %777, label %778, label %783

778:                                              ; preds = %775
  %779 = load i32, ptr %44, align 4, !tbaa !9
  %780 = load i32, ptr %30, align 4, !tbaa !9
  %781 = icmp sge i32 %779, %780
  %782 = zext i1 %781 to i32
  br label %788

783:                                              ; preds = %775
  %784 = load i32, ptr %44, align 4, !tbaa !9
  %785 = load i32, ptr %30, align 4, !tbaa !9
  %786 = icmp sle i32 %784, %785
  %787 = zext i1 %786 to i32
  br label %788

788:                                              ; preds = %783, %778
  %789 = phi i32 [ %782, %778 ], [ %787, %783 ]
  %790 = icmp ne i32 %789, 0
  br i1 %790, label %791, label %857

791:                                              ; preds = %788
  %792 = load i32, ptr %43, align 4, !tbaa !9
  %793 = load i32, ptr %51, align 4, !tbaa !9
  %794 = load i32, ptr %63, align 4, !tbaa !9
  %795 = sdiv i32 %793, %794
  %796 = sub nsw i32 %792, %795
  store i32 %796, ptr %58, align 4, !tbaa !9
  %797 = load i32, ptr %51, align 4, !tbaa !9
  %798 = add nsw i32 %797, 1
  store i32 %798, ptr %51, align 4, !tbaa !9
  store i32 1, ptr %32, align 4, !tbaa !9
  %799 = load i32, ptr %44, align 4, !tbaa !9
  %800 = load i32, ptr %58, align 4, !tbaa !9
  %801 = sub nsw i32 %799, %800
  store i32 %801, ptr %33, align 4, !tbaa !9
  %802 = load i32, ptr %32, align 4, !tbaa !9
  %803 = load i32, ptr %33, align 4, !tbaa !9
  %804 = icmp sge i32 %802, %803
  br i1 %804, label %805, label %807

805:                                              ; preds = %791
  %806 = load i32, ptr %32, align 4, !tbaa !9
  br label %809

807:                                              ; preds = %791
  %808 = load i32, ptr %33, align 4, !tbaa !9
  br label %809

809:                                              ; preds = %807, %805
  %810 = phi i32 [ %806, %805 ], [ %808, %807 ]
  store i32 %810, ptr %59, align 4, !tbaa !9
  %811 = load i32, ptr %56, align 4, !tbaa !9
  %812 = add nsw i32 %811, 1
  %813 = load i32, ptr %59, align 4, !tbaa !9
  %814 = sub nsw i32 %812, %813
  store i32 %814, ptr %54, align 4, !tbaa !9
  %815 = load i32, ptr %56, align 4, !tbaa !9
  %816 = load ptr, ptr %16, align 8, !tbaa !5
  %817 = load i32, ptr %816, align 4, !tbaa !9
  %818 = add nsw i32 %815, %817
  store i32 %818, ptr %32, align 4, !tbaa !9
  %819 = load i32, ptr %32, align 4, !tbaa !9
  %820 = load i32, ptr %47, align 4, !tbaa !9
  %821 = icmp sle i32 %819, %820
  br i1 %821, label %822, label %824

822:                                              ; preds = %809
  %823 = load i32, ptr %32, align 4, !tbaa !9
  br label %826

824:                                              ; preds = %809
  %825 = load i32, ptr %47, align 4, !tbaa !9
  br label %826

826:                                              ; preds = %824, %822
  %827 = phi i32 [ %823, %822 ], [ %825, %824 ]
  store i32 %827, ptr %56, align 4, !tbaa !9
  %828 = load ptr, ptr %21, align 8, !tbaa !5
  %829 = load i32, ptr %59, align 4, !tbaa !9
  %830 = load i32, ptr %44, align 4, !tbaa !9
  %831 = sub nsw i32 %830, 1
  %832 = load i32, ptr %27, align 4, !tbaa !9
  %833 = mul nsw i32 %831, %832
  %834 = add nsw i32 %829, %833
  %835 = sext i32 %834 to i64
  %836 = getelementptr inbounds double, ptr %828, i64 %835
  %837 = load ptr, ptr %21, align 8, !tbaa !5
  %838 = load i32, ptr %59, align 4, !tbaa !9
  %839 = load i32, ptr %44, align 4, !tbaa !9
  %840 = load i32, ptr %27, align 4, !tbaa !9
  %841 = mul nsw i32 %839, %840
  %842 = add nsw i32 %838, %841
  %843 = sext i32 %842 to i64
  %844 = getelementptr inbounds double, ptr %837, i64 %843
  %845 = load ptr, ptr %19, align 8, !tbaa !5
  %846 = load i32, ptr %44, align 4, !tbaa !9
  %847 = sext i32 %846 to i64
  %848 = getelementptr inbounds double, ptr %845, i64 %847
  %849 = load ptr, ptr %23, align 8, !tbaa !5
  %850 = load i32, ptr %44, align 4, !tbaa !9
  %851 = sext i32 %850 to i64
  %852 = getelementptr inbounds double, ptr %849, i64 %851
  call void @drot_(ptr noundef %54, ptr noundef %836, ptr noundef @c__1, ptr noundef %844, ptr noundef @c__1, ptr noundef %848, ptr noundef %852)
  br label %853

853:                                              ; preds = %826
  %854 = load i32, ptr %31, align 4, !tbaa !9
  %855 = load i32, ptr %44, align 4, !tbaa !9
  %856 = add nsw i32 %855, %854
  store i32 %856, ptr %44, align 4, !tbaa !9
  br label %775, !llvm.loop !18

857:                                              ; preds = %788
  br label %908

858:                                              ; preds = %726
  %859 = load i32, ptr %53, align 4, !tbaa !9
  store i32 %859, ptr %31, align 4, !tbaa !9
  %860 = load i32, ptr %57, align 4, !tbaa !9
  store i32 %860, ptr %30, align 4, !tbaa !9
  %861 = load i32, ptr %52, align 4, !tbaa !9
  store i32 %861, ptr %44, align 4, !tbaa !9
  br label %862

862:                                              ; preds = %903, %858
  %863 = load i32, ptr %30, align 4, !tbaa !9
  %864 = icmp slt i32 %863, 0
  br i1 %864, label %865, label %870

865:                                              ; preds = %862
  %866 = load i32, ptr %44, align 4, !tbaa !9
  %867 = load i32, ptr %31, align 4, !tbaa !9
  %868 = icmp sge i32 %866, %867
  %869 = zext i1 %868 to i32
  br label %875

870:                                              ; preds = %862
  %871 = load i32, ptr %44, align 4, !tbaa !9
  %872 = load i32, ptr %31, align 4, !tbaa !9
  %873 = icmp sle i32 %871, %872
  %874 = zext i1 %873 to i32
  br label %875

875:                                              ; preds = %870, %865
  %876 = phi i32 [ %869, %865 ], [ %874, %870 ]
  %877 = icmp ne i32 %876, 0
  br i1 %877, label %878, label %907

878:                                              ; preds = %875
  %879 = load ptr, ptr %15, align 8, !tbaa !5
  %880 = load ptr, ptr %21, align 8, !tbaa !5
  %881 = load i32, ptr %44, align 4, !tbaa !9
  %882 = sub nsw i32 %881, 1
  %883 = load i32, ptr %27, align 4, !tbaa !9
  %884 = mul nsw i32 %882, %883
  %885 = add nsw i32 %884, 1
  %886 = sext i32 %885 to i64
  %887 = getelementptr inbounds double, ptr %880, i64 %886
  %888 = load ptr, ptr %21, align 8, !tbaa !5
  %889 = load i32, ptr %44, align 4, !tbaa !9
  %890 = load i32, ptr %27, align 4, !tbaa !9
  %891 = mul nsw i32 %889, %890
  %892 = add nsw i32 %891, 1
  %893 = sext i32 %892 to i64
  %894 = getelementptr inbounds double, ptr %888, i64 %893
  %895 = load ptr, ptr %19, align 8, !tbaa !5
  %896 = load i32, ptr %44, align 4, !tbaa !9
  %897 = sext i32 %896 to i64
  %898 = getelementptr inbounds double, ptr %895, i64 %897
  %899 = load ptr, ptr %23, align 8, !tbaa !5
  %900 = load i32, ptr %44, align 4, !tbaa !9
  %901 = sext i32 %900 to i64
  %902 = getelementptr inbounds double, ptr %899, i64 %901
  call void @drot_(ptr noundef %879, ptr noundef %887, ptr noundef @c__1, ptr noundef %894, ptr noundef @c__1, ptr noundef %898, ptr noundef %902)
  br label %903

903:                                              ; preds = %878
  %904 = load i32, ptr %30, align 4, !tbaa !9
  %905 = load i32, ptr %44, align 4, !tbaa !9
  %906 = add nsw i32 %905, %904
  store i32 %906, ptr %44, align 4, !tbaa !9
  br label %862, !llvm.loop !19

907:                                              ; preds = %875
  br label %908

908:                                              ; preds = %907, %857
  br label %909

909:                                              ; preds = %908, %723
  %910 = load i32, ptr %53, align 4, !tbaa !9
  %911 = load i32, ptr %60, align 4, !tbaa !9
  %912 = add nsw i32 %910, %911
  %913 = load ptr, ptr %15, align 8, !tbaa !5
  %914 = load i32, ptr %913, align 4, !tbaa !9
  %915 = icmp sgt i32 %912, %914
  br i1 %915, label %916, label %923

916:                                              ; preds = %909
  %917 = load i32, ptr %55, align 4, !tbaa !9
  %918 = add nsw i32 %917, -1
  store i32 %918, ptr %55, align 4, !tbaa !9
  %919 = load i32, ptr %53, align 4, !tbaa !9
  %920 = load i32, ptr %60, align 4, !tbaa !9
  %921 = sub nsw i32 %919, %920
  %922 = sub nsw i32 %921, 1
  store i32 %922, ptr %53, align 4, !tbaa !9
  br label %923

923:                                              ; preds = %916, %909
  %924 = load i32, ptr %53, align 4, !tbaa !9
  store i32 %924, ptr %30, align 4, !tbaa !9
  %925 = load i32, ptr %57, align 4, !tbaa !9
  store i32 %925, ptr %31, align 4, !tbaa !9
  %926 = load i32, ptr %52, align 4, !tbaa !9
  store i32 %926, ptr %44, align 4, !tbaa !9
  br label %927

927:                                              ; preds = %995, %923
  %928 = load i32, ptr %31, align 4, !tbaa !9
  %929 = icmp slt i32 %928, 0
  br i1 %929, label %930, label %935

930:                                              ; preds = %927
  %931 = load i32, ptr %44, align 4, !tbaa !9
  %932 = load i32, ptr %30, align 4, !tbaa !9
  %933 = icmp sge i32 %931, %932
  %934 = zext i1 %933 to i32
  br label %940

935:                                              ; preds = %927
  %936 = load i32, ptr %44, align 4, !tbaa !9
  %937 = load i32, ptr %30, align 4, !tbaa !9
  %938 = icmp sle i32 %936, %937
  %939 = zext i1 %938 to i32
  br label %940

940:                                              ; preds = %935, %930
  %941 = phi i32 [ %934, %930 ], [ %939, %935 ]
  %942 = icmp ne i32 %941, 0
  br i1 %942, label %943, label %999

943:                                              ; preds = %940
  %944 = load ptr, ptr %23, align 8, !tbaa !5
  %945 = load i32, ptr %44, align 4, !tbaa !9
  %946 = sext i32 %945 to i64
  %947 = getelementptr inbounds double, ptr %944, i64 %946
  %948 = load double, ptr %947, align 8, !tbaa !14
  %949 = load ptr, ptr %17, align 8, !tbaa !5
  %950 = load i32, ptr %44, align 4, !tbaa !9
  %951 = load ptr, ptr %16, align 8, !tbaa !5
  %952 = load i32, ptr %951, align 4, !tbaa !9
  %953 = add nsw i32 %950, %952
  %954 = load i32, ptr %25, align 4, !tbaa !9
  %955 = mul nsw i32 %953, %954
  %956 = add nsw i32 %955, 1
  %957 = sext i32 %956 to i64
  %958 = getelementptr inbounds double, ptr %949, i64 %957
  %959 = load double, ptr %958, align 8, !tbaa !14
  %960 = fmul double %948, %959
  %961 = load ptr, ptr %23, align 8, !tbaa !5
  %962 = load i32, ptr %44, align 4, !tbaa !9
  %963 = load ptr, ptr %16, align 8, !tbaa !5
  %964 = load i32, ptr %963, align 4, !tbaa !9
  %965 = add nsw i32 %962, %964
  %966 = sext i32 %965 to i64
  %967 = getelementptr inbounds double, ptr %961, i64 %966
  store double %960, ptr %967, align 8, !tbaa !14
  %968 = load ptr, ptr %19, align 8, !tbaa !5
  %969 = load i32, ptr %44, align 4, !tbaa !9
  %970 = sext i32 %969 to i64
  %971 = getelementptr inbounds double, ptr %968, i64 %970
  %972 = load double, ptr %971, align 8, !tbaa !14
  %973 = load ptr, ptr %17, align 8, !tbaa !5
  %974 = load i32, ptr %44, align 4, !tbaa !9
  %975 = load ptr, ptr %16, align 8, !tbaa !5
  %976 = load i32, ptr %975, align 4, !tbaa !9
  %977 = add nsw i32 %974, %976
  %978 = load i32, ptr %25, align 4, !tbaa !9
  %979 = mul nsw i32 %977, %978
  %980 = add nsw i32 %979, 1
  %981 = sext i32 %980 to i64
  %982 = getelementptr inbounds double, ptr %973, i64 %981
  %983 = load double, ptr %982, align 8, !tbaa !14
  %984 = fmul double %972, %983
  %985 = load ptr, ptr %17, align 8, !tbaa !5
  %986 = load i32, ptr %44, align 4, !tbaa !9
  %987 = load ptr, ptr %16, align 8, !tbaa !5
  %988 = load i32, ptr %987, align 4, !tbaa !9
  %989 = add nsw i32 %986, %988
  %990 = load i32, ptr %25, align 4, !tbaa !9
  %991 = mul nsw i32 %989, %990
  %992 = add nsw i32 %991, 1
  %993 = sext i32 %992 to i64
  %994 = getelementptr inbounds double, ptr %985, i64 %993
  store double %984, ptr %994, align 8, !tbaa !14
  br label %995

995:                                              ; preds = %943
  %996 = load i32, ptr %31, align 4, !tbaa !9
  %997 = load i32, ptr %44, align 4, !tbaa !9
  %998 = add nsw i32 %997, %996
  store i32 %998, ptr %44, align 4, !tbaa !9
  br label %927, !llvm.loop !20

999:                                              ; preds = %940
  br label %1000

1000:                                             ; preds = %999
  %1001 = load i32, ptr %45, align 4, !tbaa !9
  %1002 = add nsw i32 %1001, -1
  store i32 %1002, ptr %45, align 4, !tbaa !9
  br label %236, !llvm.loop !21

1003:                                             ; preds = %236
  br label %1004

1004:                                             ; preds = %1003
  %1005 = load i32, ptr %43, align 4, !tbaa !9
  %1006 = add nsw i32 %1005, 1
  store i32 %1006, ptr %43, align 4, !tbaa !9
  br label %229, !llvm.loop !22

1007:                                             ; preds = %229
  br label %1008

1008:                                             ; preds = %1007, %219
  %1009 = load ptr, ptr %16, align 8, !tbaa !5
  %1010 = load i32, ptr %1009, align 4, !tbaa !9
  %1011 = icmp sgt i32 %1010, 0
  br i1 %1011, label %1012, label %1040

1012:                                             ; preds = %1008
  %1013 = load ptr, ptr %15, align 8, !tbaa !5
  %1014 = load i32, ptr %1013, align 4, !tbaa !9
  %1015 = sub nsw i32 %1014, 1
  store i32 %1015, ptr %29, align 4, !tbaa !9
  store i32 1, ptr %43, align 4, !tbaa !9
  br label %1016

1016:                                             ; preds = %1036, %1012
  %1017 = load i32, ptr %43, align 4, !tbaa !9
  %1018 = load i32, ptr %29, align 4, !tbaa !9
  %1019 = icmp sle i32 %1017, %1018
  br i1 %1019, label %1020, label %1039

1020:                                             ; preds = %1016
  %1021 = load ptr, ptr %17, align 8, !tbaa !5
  %1022 = load ptr, ptr %16, align 8, !tbaa !5
  %1023 = load i32, ptr %1022, align 4, !tbaa !9
  %1024 = load i32, ptr %43, align 4, !tbaa !9
  %1025 = add nsw i32 %1024, 1
  %1026 = load i32, ptr %25, align 4, !tbaa !9
  %1027 = mul nsw i32 %1025, %1026
  %1028 = add nsw i32 %1023, %1027
  %1029 = sext i32 %1028 to i64
  %1030 = getelementptr inbounds double, ptr %1021, i64 %1029
  %1031 = load double, ptr %1030, align 8, !tbaa !14
  %1032 = load ptr, ptr %20, align 8, !tbaa !5
  %1033 = load i32, ptr %43, align 4, !tbaa !9
  %1034 = sext i32 %1033 to i64
  %1035 = getelementptr inbounds double, ptr %1032, i64 %1034
  store double %1031, ptr %1035, align 8, !tbaa !14
  br label %1036

1036:                                             ; preds = %1020
  %1037 = load i32, ptr %43, align 4, !tbaa !9
  %1038 = add nsw i32 %1037, 1
  store i32 %1038, ptr %43, align 4, !tbaa !9
  br label %1016, !llvm.loop !23

1039:                                             ; preds = %1016
  br label %1057

1040:                                             ; preds = %1008
  %1041 = load ptr, ptr %15, align 8, !tbaa !5
  %1042 = load i32, ptr %1041, align 4, !tbaa !9
  %1043 = sub nsw i32 %1042, 1
  store i32 %1043, ptr %29, align 4, !tbaa !9
  store i32 1, ptr %43, align 4, !tbaa !9
  br label %1044

1044:                                             ; preds = %1053, %1040
  %1045 = load i32, ptr %43, align 4, !tbaa !9
  %1046 = load i32, ptr %29, align 4, !tbaa !9
  %1047 = icmp sle i32 %1045, %1046
  br i1 %1047, label %1048, label %1056

1048:                                             ; preds = %1044
  %1049 = load ptr, ptr %20, align 8, !tbaa !5
  %1050 = load i32, ptr %43, align 4, !tbaa !9
  %1051 = sext i32 %1050 to i64
  %1052 = getelementptr inbounds double, ptr %1049, i64 %1051
  store double 0.000000e+00, ptr %1052, align 8, !tbaa !14
  br label %1053

1053:                                             ; preds = %1048
  %1054 = load i32, ptr %43, align 4, !tbaa !9
  %1055 = add nsw i32 %1054, 1
  store i32 %1055, ptr %43, align 4, !tbaa !9
  br label %1044, !llvm.loop !24

1056:                                             ; preds = %1044
  br label %1057

1057:                                             ; preds = %1056, %1039
  %1058 = load ptr, ptr %15, align 8, !tbaa !5
  %1059 = load i32, ptr %1058, align 4, !tbaa !9
  store i32 %1059, ptr %29, align 4, !tbaa !9
  store i32 1, ptr %43, align 4, !tbaa !9
  br label %1060

1060:                                             ; preds = %1078, %1057
  %1061 = load i32, ptr %43, align 4, !tbaa !9
  %1062 = load i32, ptr %29, align 4, !tbaa !9
  %1063 = icmp sle i32 %1061, %1062
  br i1 %1063, label %1064, label %1081

1064:                                             ; preds = %1060
  %1065 = load ptr, ptr %17, align 8, !tbaa !5
  %1066 = load i32, ptr %57, align 4, !tbaa !9
  %1067 = load i32, ptr %43, align 4, !tbaa !9
  %1068 = load i32, ptr %25, align 4, !tbaa !9
  %1069 = mul nsw i32 %1067, %1068
  %1070 = add nsw i32 %1066, %1069
  %1071 = sext i32 %1070 to i64
  %1072 = getelementptr inbounds double, ptr %1065, i64 %1071
  %1073 = load double, ptr %1072, align 8, !tbaa !14
  %1074 = load ptr, ptr %19, align 8, !tbaa !5
  %1075 = load i32, ptr %43, align 4, !tbaa !9
  %1076 = sext i32 %1075 to i64
  %1077 = getelementptr inbounds double, ptr %1074, i64 %1076
  store double %1073, ptr %1077, align 8, !tbaa !14
  br label %1078

1078:                                             ; preds = %1064
  %1079 = load i32, ptr %43, align 4, !tbaa !9
  %1080 = add nsw i32 %1079, 1
  store i32 %1080, ptr %43, align 4, !tbaa !9
  br label %1060, !llvm.loop !25

1081:                                             ; preds = %1060
  br label %1907

1082:                                             ; preds = %215
  %1083 = load ptr, ptr %16, align 8, !tbaa !5
  %1084 = load i32, ptr %1083, align 4, !tbaa !9
  %1085 = icmp sgt i32 %1084, 1
  br i1 %1085, label %1086, label %1837

1086:                                             ; preds = %1082
  store i32 0, ptr %55, align 4, !tbaa !9
  %1087 = load i32, ptr %60, align 4, !tbaa !9
  %1088 = add nsw i32 %1087, 2
  store i32 %1088, ptr %52, align 4, !tbaa !9
  store i32 1, ptr %53, align 4, !tbaa !9
  %1089 = load ptr, ptr %15, align 8, !tbaa !5
  %1090 = load i32, ptr %1089, align 4, !tbaa !9
  %1091 = sub nsw i32 %1090, 2
  store i32 %1091, ptr %29, align 4, !tbaa !9
  store i32 1, ptr %43, align 4, !tbaa !9
  br label %1092

1092:                                             ; preds = %1833, %1086
  %1093 = load i32, ptr %43, align 4, !tbaa !9
  %1094 = load i32, ptr %29, align 4, !tbaa !9
  %1095 = icmp sle i32 %1093, %1094
  br i1 %1095, label %1096, label %1836

1096:                                             ; preds = %1092
  %1097 = load i32, ptr %60, align 4, !tbaa !9
  %1098 = add nsw i32 %1097, 1
  store i32 %1098, ptr %45, align 4, !tbaa !9
  br label %1099

1099:                                             ; preds = %1829, %1096
  %1100 = load i32, ptr %45, align 4, !tbaa !9
  %1101 = icmp sge i32 %1100, 2
  br i1 %1101, label %1102, label %1832

1102:                                             ; preds = %1099
  %1103 = load i32, ptr %60, align 4, !tbaa !9
  %1104 = load i32, ptr %52, align 4, !tbaa !9
  %1105 = add nsw i32 %1104, %1103
  store i32 %1105, ptr %52, align 4, !tbaa !9
  %1106 = load i32, ptr %60, align 4, !tbaa !9
  %1107 = load i32, ptr %53, align 4, !tbaa !9
  %1108 = add nsw i32 %1107, %1106
  store i32 %1108, ptr %53, align 4, !tbaa !9
  %1109 = load i32, ptr %55, align 4, !tbaa !9
  %1110 = icmp sgt i32 %1109, 0
  br i1 %1110, label %1111, label %1250

1111:                                             ; preds = %1102
  %1112 = load ptr, ptr %17, align 8, !tbaa !5
  %1113 = load i32, ptr %57, align 4, !tbaa !9
  %1114 = load i32, ptr %52, align 4, !tbaa !9
  %1115 = load i32, ptr %57, align 4, !tbaa !9
  %1116 = sub nsw i32 %1114, %1115
  %1117 = load i32, ptr %25, align 4, !tbaa !9
  %1118 = mul nsw i32 %1116, %1117
  %1119 = add nsw i32 %1113, %1118
  %1120 = sext i32 %1119 to i64
  %1121 = getelementptr inbounds double, ptr %1112, i64 %1120
  %1122 = load ptr, ptr %23, align 8, !tbaa !5
  %1123 = load i32, ptr %52, align 4, !tbaa !9
  %1124 = sext i32 %1123 to i64
  %1125 = getelementptr inbounds double, ptr %1122, i64 %1124
  %1126 = load ptr, ptr %19, align 8, !tbaa !5
  %1127 = load i32, ptr %52, align 4, !tbaa !9
  %1128 = sext i32 %1127 to i64
  %1129 = getelementptr inbounds double, ptr %1126, i64 %1128
  call void @dlargv_(ptr noundef %55, ptr noundef %1121, ptr noundef %34, ptr noundef %1125, ptr noundef %57, ptr noundef %1129, ptr noundef %57)
  %1130 = load i32, ptr %55, align 4, !tbaa !9
  %1131 = load ptr, ptr %16, align 8, !tbaa !5
  %1132 = load i32, ptr %1131, align 4, !tbaa !9
  %1133 = shl i32 %1132, 1
  %1134 = sub nsw i32 %1133, 1
  %1135 = icmp sgt i32 %1130, %1134
  br i1 %1135, label %1136, label %1186

1136:                                             ; preds = %1111
  %1137 = load ptr, ptr %16, align 8, !tbaa !5
  %1138 = load i32, ptr %1137, align 4, !tbaa !9
  %1139 = sub nsw i32 %1138, 1
  store i32 %1139, ptr %31, align 4, !tbaa !9
  store i32 1, ptr %46, align 4, !tbaa !9
  br label %1140

1140:                                             ; preds = %1182, %1136
  %1141 = load i32, ptr %46, align 4, !tbaa !9
  %1142 = load i32, ptr %31, align 4, !tbaa !9
  %1143 = icmp sle i32 %1141, %1142
  br i1 %1143, label %1144, label %1185

1144:                                             ; preds = %1140
  %1145 = load ptr, ptr %17, align 8, !tbaa !5
  %1146 = load i32, ptr %57, align 4, !tbaa !9
  %1147 = load i32, ptr %46, align 4, !tbaa !9
  %1148 = sub nsw i32 %1146, %1147
  %1149 = load i32, ptr %52, align 4, !tbaa !9
  %1150 = load i32, ptr %57, align 4, !tbaa !9
  %1151 = sub nsw i32 %1149, %1150
  %1152 = load i32, ptr %46, align 4, !tbaa !9
  %1153 = add nsw i32 %1151, %1152
  %1154 = load i32, ptr %25, align 4, !tbaa !9
  %1155 = mul nsw i32 %1153, %1154
  %1156 = add nsw i32 %1148, %1155
  %1157 = sext i32 %1156 to i64
  %1158 = getelementptr inbounds double, ptr %1145, i64 %1157
  %1159 = load ptr, ptr %17, align 8, !tbaa !5
  %1160 = load i32, ptr %57, align 4, !tbaa !9
  %1161 = load i32, ptr %46, align 4, !tbaa !9
  %1162 = sub nsw i32 %1160, %1161
  %1163 = add nsw i32 %1162, 1
  %1164 = load i32, ptr %52, align 4, !tbaa !9
  %1165 = load i32, ptr %57, align 4, !tbaa !9
  %1166 = sub nsw i32 %1164, %1165
  %1167 = load i32, ptr %46, align 4, !tbaa !9
  %1168 = add nsw i32 %1166, %1167
  %1169 = load i32, ptr %25, align 4, !tbaa !9
  %1170 = mul nsw i32 %1168, %1169
  %1171 = add nsw i32 %1163, %1170
  %1172 = sext i32 %1171 to i64
  %1173 = getelementptr inbounds double, ptr %1159, i64 %1172
  %1174 = load ptr, ptr %19, align 8, !tbaa !5
  %1175 = load i32, ptr %52, align 4, !tbaa !9
  %1176 = sext i32 %1175 to i64
  %1177 = getelementptr inbounds double, ptr %1174, i64 %1176
  %1178 = load ptr, ptr %23, align 8, !tbaa !5
  %1179 = load i32, ptr %52, align 4, !tbaa !9
  %1180 = sext i32 %1179 to i64
  %1181 = getelementptr inbounds double, ptr %1178, i64 %1180
  call void @dlartv_(ptr noundef %55, ptr noundef %1158, ptr noundef %34, ptr noundef %1173, ptr noundef %34, ptr noundef %1177, ptr noundef %1181, ptr noundef %57)
  br label %1182

1182:                                             ; preds = %1144
  %1183 = load i32, ptr %46, align 4, !tbaa !9
  %1184 = add nsw i32 %1183, 1
  store i32 %1184, ptr %46, align 4, !tbaa !9
  br label %1140, !llvm.loop !26

1185:                                             ; preds = %1140
  br label %1249

1186:                                             ; preds = %1111
  %1187 = load i32, ptr %52, align 4, !tbaa !9
  %1188 = load i32, ptr %57, align 4, !tbaa !9
  %1189 = load i32, ptr %55, align 4, !tbaa !9
  %1190 = sub nsw i32 %1189, 1
  %1191 = mul nsw i32 %1188, %1190
  %1192 = add nsw i32 %1187, %1191
  store i32 %1192, ptr %35, align 4, !tbaa !9
  %1193 = load i32, ptr %35, align 4, !tbaa !9
  store i32 %1193, ptr %31, align 4, !tbaa !9
  %1194 = load i32, ptr %57, align 4, !tbaa !9
  store i32 %1194, ptr %30, align 4, !tbaa !9
  %1195 = load i32, ptr %52, align 4, !tbaa !9
  store i32 %1195, ptr %37, align 4, !tbaa !9
  br label %1196

1196:                                             ; preds = %1244, %1186
  %1197 = load i32, ptr %30, align 4, !tbaa !9
  %1198 = icmp slt i32 %1197, 0
  br i1 %1198, label %1199, label %1204

1199:                                             ; preds = %1196
  %1200 = load i32, ptr %37, align 4, !tbaa !9
  %1201 = load i32, ptr %31, align 4, !tbaa !9
  %1202 = icmp sge i32 %1200, %1201
  %1203 = zext i1 %1202 to i32
  br label %1209

1204:                                             ; preds = %1196
  %1205 = load i32, ptr %37, align 4, !tbaa !9
  %1206 = load i32, ptr %31, align 4, !tbaa !9
  %1207 = icmp sle i32 %1205, %1206
  %1208 = zext i1 %1207 to i32
  br label %1209

1209:                                             ; preds = %1204, %1199
  %1210 = phi i32 [ %1203, %1199 ], [ %1208, %1204 ]
  %1211 = icmp ne i32 %1210, 0
  br i1 %1211, label %1212, label %1248

1212:                                             ; preds = %1209
  %1213 = load ptr, ptr %17, align 8, !tbaa !5
  %1214 = load ptr, ptr %16, align 8, !tbaa !5
  %1215 = load i32, ptr %1214, align 4, !tbaa !9
  %1216 = load i32, ptr %37, align 4, !tbaa !9
  %1217 = load ptr, ptr %16, align 8, !tbaa !5
  %1218 = load i32, ptr %1217, align 4, !tbaa !9
  %1219 = sub nsw i32 %1216, %1218
  %1220 = load i32, ptr %25, align 4, !tbaa !9
  %1221 = mul nsw i32 %1219, %1220
  %1222 = add nsw i32 %1215, %1221
  %1223 = sext i32 %1222 to i64
  %1224 = getelementptr inbounds double, ptr %1213, i64 %1223
  %1225 = load ptr, ptr %17, align 8, !tbaa !5
  %1226 = load i32, ptr %57, align 4, !tbaa !9
  %1227 = load i32, ptr %37, align 4, !tbaa !9
  %1228 = load ptr, ptr %16, align 8, !tbaa !5
  %1229 = load i32, ptr %1228, align 4, !tbaa !9
  %1230 = sub nsw i32 %1227, %1229
  %1231 = load i32, ptr %25, align 4, !tbaa !9
  %1232 = mul nsw i32 %1230, %1231
  %1233 = add nsw i32 %1226, %1232
  %1234 = sext i32 %1233 to i64
  %1235 = getelementptr inbounds double, ptr %1225, i64 %1234
  %1236 = load ptr, ptr %19, align 8, !tbaa !5
  %1237 = load i32, ptr %37, align 4, !tbaa !9
  %1238 = sext i32 %1237 to i64
  %1239 = getelementptr inbounds double, ptr %1236, i64 %1238
  %1240 = load ptr, ptr %23, align 8, !tbaa !5
  %1241 = load i32, ptr %37, align 4, !tbaa !9
  %1242 = sext i32 %1241 to i64
  %1243 = getelementptr inbounds double, ptr %1240, i64 %1242
  call void @drot_(ptr noundef %63, ptr noundef %1224, ptr noundef %38, ptr noundef %1235, ptr noundef %38, ptr noundef %1239, ptr noundef %1243)
  br label %1244

1244:                                             ; preds = %1212
  %1245 = load i32, ptr %30, align 4, !tbaa !9
  %1246 = load i32, ptr %37, align 4, !tbaa !9
  %1247 = add nsw i32 %1246, %1245
  store i32 %1247, ptr %37, align 4, !tbaa !9
  br label %1196, !llvm.loop !27

1248:                                             ; preds = %1209
  br label %1249

1249:                                             ; preds = %1248, %1185
  br label %1250

1250:                                             ; preds = %1249, %1102
  %1251 = load i32, ptr %45, align 4, !tbaa !9
  %1252 = icmp sgt i32 %1251, 2
  br i1 %1252, label %1253, label %1352

1253:                                             ; preds = %1250
  %1254 = load i32, ptr %45, align 4, !tbaa !9
  %1255 = load ptr, ptr %15, align 8, !tbaa !5
  %1256 = load i32, ptr %1255, align 4, !tbaa !9
  %1257 = load i32, ptr %43, align 4, !tbaa !9
  %1258 = sub nsw i32 %1256, %1257
  %1259 = add nsw i32 %1258, 1
  %1260 = icmp sle i32 %1254, %1259
  br i1 %1260, label %1261, label %1345

1261:                                             ; preds = %1253
  %1262 = load ptr, ptr %17, align 8, !tbaa !5
  %1263 = load i32, ptr %45, align 4, !tbaa !9
  %1264 = sub nsw i32 %1263, 1
  %1265 = load i32, ptr %43, align 4, !tbaa !9
  %1266 = load i32, ptr %25, align 4, !tbaa !9
  %1267 = mul nsw i32 %1265, %1266
  %1268 = add nsw i32 %1264, %1267
  %1269 = sext i32 %1268 to i64
  %1270 = getelementptr inbounds double, ptr %1262, i64 %1269
  %1271 = load ptr, ptr %17, align 8, !tbaa !5
  %1272 = load i32, ptr %45, align 4, !tbaa !9
  %1273 = load i32, ptr %43, align 4, !tbaa !9
  %1274 = load i32, ptr %25, align 4, !tbaa !9
  %1275 = mul nsw i32 %1273, %1274
  %1276 = add nsw i32 %1272, %1275
  %1277 = sext i32 %1276 to i64
  %1278 = getelementptr inbounds double, ptr %1271, i64 %1277
  %1279 = load ptr, ptr %19, align 8, !tbaa !5
  %1280 = load i32, ptr %43, align 4, !tbaa !9
  %1281 = load i32, ptr %45, align 4, !tbaa !9
  %1282 = add nsw i32 %1280, %1281
  %1283 = sub nsw i32 %1282, 1
  %1284 = sext i32 %1283 to i64
  %1285 = getelementptr inbounds double, ptr %1279, i64 %1284
  %1286 = load ptr, ptr %23, align 8, !tbaa !5
  %1287 = load i32, ptr %43, align 4, !tbaa !9
  %1288 = load i32, ptr %45, align 4, !tbaa !9
  %1289 = add nsw i32 %1287, %1288
  %1290 = sub nsw i32 %1289, 1
  %1291 = sext i32 %1290 to i64
  %1292 = getelementptr inbounds double, ptr %1286, i64 %1291
  call void @dlartg_(ptr noundef %1270, ptr noundef %1278, ptr noundef %1285, ptr noundef %1292, ptr noundef %40)
  %1293 = load double, ptr %40, align 8, !tbaa !14
  %1294 = load ptr, ptr %17, align 8, !tbaa !5
  %1295 = load i32, ptr %45, align 4, !tbaa !9
  %1296 = sub nsw i32 %1295, 1
  %1297 = load i32, ptr %43, align 4, !tbaa !9
  %1298 = load i32, ptr %25, align 4, !tbaa !9
  %1299 = mul nsw i32 %1297, %1298
  %1300 = add nsw i32 %1296, %1299
  %1301 = sext i32 %1300 to i64
  %1302 = getelementptr inbounds double, ptr %1294, i64 %1301
  store double %1293, ptr %1302, align 8, !tbaa !14
  %1303 = load i32, ptr %45, align 4, !tbaa !9
  %1304 = sub nsw i32 %1303, 3
  store i32 %1304, ptr %30, align 4, !tbaa !9
  %1305 = load ptr, ptr %18, align 8, !tbaa !5
  %1306 = load i32, ptr %1305, align 4, !tbaa !9
  %1307 = sub nsw i32 %1306, 1
  store i32 %1307, ptr %31, align 4, !tbaa !9
  %1308 = load ptr, ptr %18, align 8, !tbaa !5
  %1309 = load i32, ptr %1308, align 4, !tbaa !9
  %1310 = sub nsw i32 %1309, 1
  store i32 %1310, ptr %32, align 4, !tbaa !9
  %1311 = load ptr, ptr %17, align 8, !tbaa !5
  %1312 = load i32, ptr %45, align 4, !tbaa !9
  %1313 = sub nsw i32 %1312, 2
  %1314 = load i32, ptr %43, align 4, !tbaa !9
  %1315 = add nsw i32 %1314, 1
  %1316 = load i32, ptr %25, align 4, !tbaa !9
  %1317 = mul nsw i32 %1315, %1316
  %1318 = add nsw i32 %1313, %1317
  %1319 = sext i32 %1318 to i64
  %1320 = getelementptr inbounds double, ptr %1311, i64 %1319
  %1321 = load ptr, ptr %17, align 8, !tbaa !5
  %1322 = load i32, ptr %45, align 4, !tbaa !9
  %1323 = sub nsw i32 %1322, 1
  %1324 = load i32, ptr %43, align 4, !tbaa !9
  %1325 = add nsw i32 %1324, 1
  %1326 = load i32, ptr %25, align 4, !tbaa !9
  %1327 = mul nsw i32 %1325, %1326
  %1328 = add nsw i32 %1323, %1327
  %1329 = sext i32 %1328 to i64
  %1330 = getelementptr inbounds double, ptr %1321, i64 %1329
  %1331 = load ptr, ptr %19, align 8, !tbaa !5
  %1332 = load i32, ptr %43, align 4, !tbaa !9
  %1333 = load i32, ptr %45, align 4, !tbaa !9
  %1334 = add nsw i32 %1332, %1333
  %1335 = sub nsw i32 %1334, 1
  %1336 = sext i32 %1335 to i64
  %1337 = getelementptr inbounds double, ptr %1331, i64 %1336
  %1338 = load ptr, ptr %23, align 8, !tbaa !5
  %1339 = load i32, ptr %43, align 4, !tbaa !9
  %1340 = load i32, ptr %45, align 4, !tbaa !9
  %1341 = add nsw i32 %1339, %1340
  %1342 = sub nsw i32 %1341, 1
  %1343 = sext i32 %1342 to i64
  %1344 = getelementptr inbounds double, ptr %1338, i64 %1343
  call void @drot_(ptr noundef %30, ptr noundef %1320, ptr noundef %31, ptr noundef %1330, ptr noundef %32, ptr noundef %1337, ptr noundef %1344)
  br label %1345

1345:                                             ; preds = %1261, %1253
  %1346 = load i32, ptr %55, align 4, !tbaa !9
  %1347 = add nsw i32 %1346, 1
  store i32 %1347, ptr %55, align 4, !tbaa !9
  %1348 = load i32, ptr %52, align 4, !tbaa !9
  %1349 = load i32, ptr %60, align 4, !tbaa !9
  %1350 = sub nsw i32 %1348, %1349
  %1351 = sub nsw i32 %1350, 1
  store i32 %1351, ptr %52, align 4, !tbaa !9
  br label %1352

1352:                                             ; preds = %1345, %1250
  %1353 = load i32, ptr %55, align 4, !tbaa !9
  %1354 = icmp sgt i32 %1353, 0
  br i1 %1354, label %1355, label %1387

1355:                                             ; preds = %1352
  %1356 = load ptr, ptr %17, align 8, !tbaa !5
  %1357 = load i32, ptr %52, align 4, !tbaa !9
  %1358 = sub nsw i32 %1357, 1
  %1359 = load i32, ptr %25, align 4, !tbaa !9
  %1360 = mul nsw i32 %1358, %1359
  %1361 = add nsw i32 %1360, 1
  %1362 = sext i32 %1361 to i64
  %1363 = getelementptr inbounds double, ptr %1356, i64 %1362
  %1364 = load ptr, ptr %17, align 8, !tbaa !5
  %1365 = load i32, ptr %52, align 4, !tbaa !9
  %1366 = load i32, ptr %25, align 4, !tbaa !9
  %1367 = mul nsw i32 %1365, %1366
  %1368 = add nsw i32 %1367, 1
  %1369 = sext i32 %1368 to i64
  %1370 = getelementptr inbounds double, ptr %1364, i64 %1369
  %1371 = load ptr, ptr %17, align 8, !tbaa !5
  %1372 = load i32, ptr %52, align 4, !tbaa !9
  %1373 = sub nsw i32 %1372, 1
  %1374 = load i32, ptr %25, align 4, !tbaa !9
  %1375 = mul nsw i32 %1373, %1374
  %1376 = add nsw i32 %1375, 2
  %1377 = sext i32 %1376 to i64
  %1378 = getelementptr inbounds double, ptr %1371, i64 %1377
  %1379 = load ptr, ptr %19, align 8, !tbaa !5
  %1380 = load i32, ptr %52, align 4, !tbaa !9
  %1381 = sext i32 %1380 to i64
  %1382 = getelementptr inbounds double, ptr %1379, i64 %1381
  %1383 = load ptr, ptr %23, align 8, !tbaa !5
  %1384 = load i32, ptr %52, align 4, !tbaa !9
  %1385 = sext i32 %1384 to i64
  %1386 = getelementptr inbounds double, ptr %1383, i64 %1385
  call void @dlar2v_(ptr noundef %55, ptr noundef %1363, ptr noundef %1370, ptr noundef %1378, ptr noundef %34, ptr noundef %1382, ptr noundef %1386, ptr noundef %57)
  br label %1387

1387:                                             ; preds = %1355, %1352
  %1388 = load i32, ptr %55, align 4, !tbaa !9
  %1389 = icmp sgt i32 %1388, 0
  br i1 %1389, label %1390, label %1558

1390:                                             ; preds = %1387
  %1391 = load i32, ptr %55, align 4, !tbaa !9
  %1392 = load ptr, ptr %16, align 8, !tbaa !5
  %1393 = load i32, ptr %1392, align 4, !tbaa !9
  %1394 = shl i32 %1393, 1
  %1395 = sub nsw i32 %1394, 1
  %1396 = icmp sgt i32 %1391, %1395
  br i1 %1396, label %1397, label %1453

1397:                                             ; preds = %1390
  %1398 = load ptr, ptr %16, align 8, !tbaa !5
  %1399 = load i32, ptr %1398, align 4, !tbaa !9
  %1400 = sub nsw i32 %1399, 1
  store i32 %1400, ptr %30, align 4, !tbaa !9
  store i32 1, ptr %46, align 4, !tbaa !9
  br label %1401

1401:                                             ; preds = %1449, %1397
  %1402 = load i32, ptr %46, align 4, !tbaa !9
  %1403 = load i32, ptr %30, align 4, !tbaa !9
  %1404 = icmp sle i32 %1402, %1403
  br i1 %1404, label %1405, label %1452

1405:                                             ; preds = %1401
  %1406 = load i32, ptr %53, align 4, !tbaa !9
  %1407 = load i32, ptr %46, align 4, !tbaa !9
  %1408 = add nsw i32 %1406, %1407
  %1409 = load ptr, ptr %15, align 8, !tbaa !5
  %1410 = load i32, ptr %1409, align 4, !tbaa !9
  %1411 = icmp sgt i32 %1408, %1410
  br i1 %1411, label %1412, label %1415

1412:                                             ; preds = %1405
  %1413 = load i32, ptr %55, align 4, !tbaa !9
  %1414 = sub nsw i32 %1413, 1
  store i32 %1414, ptr %62, align 4, !tbaa !9
  br label %1417

1415:                                             ; preds = %1405
  %1416 = load i32, ptr %55, align 4, !tbaa !9
  store i32 %1416, ptr %62, align 4, !tbaa !9
  br label %1417

1417:                                             ; preds = %1415, %1412
  %1418 = load i32, ptr %62, align 4, !tbaa !9
  %1419 = icmp sgt i32 %1418, 0
  br i1 %1419, label %1420, label %1448

1420:                                             ; preds = %1417
  %1421 = load ptr, ptr %17, align 8, !tbaa !5
  %1422 = load i32, ptr %46, align 4, !tbaa !9
  %1423 = add nsw i32 %1422, 2
  %1424 = load i32, ptr %52, align 4, !tbaa !9
  %1425 = sub nsw i32 %1424, 1
  %1426 = load i32, ptr %25, align 4, !tbaa !9
  %1427 = mul nsw i32 %1425, %1426
  %1428 = add nsw i32 %1423, %1427
  %1429 = sext i32 %1428 to i64
  %1430 = getelementptr inbounds double, ptr %1421, i64 %1429
  %1431 = load ptr, ptr %17, align 8, !tbaa !5
  %1432 = load i32, ptr %46, align 4, !tbaa !9
  %1433 = add nsw i32 %1432, 1
  %1434 = load i32, ptr %52, align 4, !tbaa !9
  %1435 = load i32, ptr %25, align 4, !tbaa !9
  %1436 = mul nsw i32 %1434, %1435
  %1437 = add nsw i32 %1433, %1436
  %1438 = sext i32 %1437 to i64
  %1439 = getelementptr inbounds double, ptr %1431, i64 %1438
  %1440 = load ptr, ptr %19, align 8, !tbaa !5
  %1441 = load i32, ptr %52, align 4, !tbaa !9
  %1442 = sext i32 %1441 to i64
  %1443 = getelementptr inbounds double, ptr %1440, i64 %1442
  %1444 = load ptr, ptr %23, align 8, !tbaa !5
  %1445 = load i32, ptr %52, align 4, !tbaa !9
  %1446 = sext i32 %1445 to i64
  %1447 = getelementptr inbounds double, ptr %1444, i64 %1446
  call void @dlartv_(ptr noundef %62, ptr noundef %1430, ptr noundef %34, ptr noundef %1439, ptr noundef %34, ptr noundef %1443, ptr noundef %1447, ptr noundef %57)
  br label %1448

1448:                                             ; preds = %1420, %1417
  br label %1449

1449:                                             ; preds = %1448
  %1450 = load i32, ptr %46, align 4, !tbaa !9
  %1451 = add nsw i32 %1450, 1
  store i32 %1451, ptr %46, align 4, !tbaa !9
  br label %1401, !llvm.loop !28

1452:                                             ; preds = %1401
  br label %1557

1453:                                             ; preds = %1390
  %1454 = load i32, ptr %52, align 4, !tbaa !9
  %1455 = load i32, ptr %57, align 4, !tbaa !9
  %1456 = load i32, ptr %55, align 4, !tbaa !9
  %1457 = sub nsw i32 %1456, 2
  %1458 = mul nsw i32 %1455, %1457
  %1459 = add nsw i32 %1454, %1458
  store i32 %1459, ptr %41, align 4, !tbaa !9
  %1460 = load i32, ptr %41, align 4, !tbaa !9
  %1461 = load i32, ptr %52, align 4, !tbaa !9
  %1462 = icmp sge i32 %1460, %1461
  br i1 %1462, label %1463, label %1512

1463:                                             ; preds = %1453
  %1464 = load i32, ptr %41, align 4, !tbaa !9
  store i32 %1464, ptr %30, align 4, !tbaa !9
  %1465 = load i32, ptr %57, align 4, !tbaa !9
  store i32 %1465, ptr %31, align 4, !tbaa !9
  %1466 = load i32, ptr %52, align 4, !tbaa !9
  store i32 %1466, ptr %42, align 4, !tbaa !9
  br label %1467

1467:                                             ; preds = %1507, %1463
  %1468 = load i32, ptr %31, align 4, !tbaa !9
  %1469 = icmp slt i32 %1468, 0
  br i1 %1469, label %1470, label %1475

1470:                                             ; preds = %1467
  %1471 = load i32, ptr %42, align 4, !tbaa !9
  %1472 = load i32, ptr %30, align 4, !tbaa !9
  %1473 = icmp sge i32 %1471, %1472
  %1474 = zext i1 %1473 to i32
  br label %1480

1475:                                             ; preds = %1467
  %1476 = load i32, ptr %42, align 4, !tbaa !9
  %1477 = load i32, ptr %30, align 4, !tbaa !9
  %1478 = icmp sle i32 %1476, %1477
  %1479 = zext i1 %1478 to i32
  br label %1480

1480:                                             ; preds = %1475, %1470
  %1481 = phi i32 [ %1474, %1470 ], [ %1479, %1475 ]
  %1482 = icmp ne i32 %1481, 0
  br i1 %1482, label %1483, label %1511

1483:                                             ; preds = %1480
  %1484 = load ptr, ptr %17, align 8, !tbaa !5
  %1485 = load i32, ptr %42, align 4, !tbaa !9
  %1486 = sub nsw i32 %1485, 1
  %1487 = load i32, ptr %25, align 4, !tbaa !9
  %1488 = mul nsw i32 %1486, %1487
  %1489 = add nsw i32 %1488, 3
  %1490 = sext i32 %1489 to i64
  %1491 = getelementptr inbounds double, ptr %1484, i64 %1490
  %1492 = load ptr, ptr %17, align 8, !tbaa !5
  %1493 = load i32, ptr %42, align 4, !tbaa !9
  %1494 = load i32, ptr %25, align 4, !tbaa !9
  %1495 = mul nsw i32 %1493, %1494
  %1496 = add nsw i32 %1495, 2
  %1497 = sext i32 %1496 to i64
  %1498 = getelementptr inbounds double, ptr %1492, i64 %1497
  %1499 = load ptr, ptr %19, align 8, !tbaa !5
  %1500 = load i32, ptr %42, align 4, !tbaa !9
  %1501 = sext i32 %1500 to i64
  %1502 = getelementptr inbounds double, ptr %1499, i64 %1501
  %1503 = load ptr, ptr %23, align 8, !tbaa !5
  %1504 = load i32, ptr %42, align 4, !tbaa !9
  %1505 = sext i32 %1504 to i64
  %1506 = getelementptr inbounds double, ptr %1503, i64 %1505
  call void @drot_(ptr noundef %63, ptr noundef %1491, ptr noundef @c__1, ptr noundef %1498, ptr noundef @c__1, ptr noundef %1502, ptr noundef %1506)
  br label %1507

1507:                                             ; preds = %1483
  %1508 = load i32, ptr %31, align 4, !tbaa !9
  %1509 = load i32, ptr %42, align 4, !tbaa !9
  %1510 = add nsw i32 %1509, %1508
  store i32 %1510, ptr %42, align 4, !tbaa !9
  br label %1467, !llvm.loop !29

1511:                                             ; preds = %1480
  br label %1512

1512:                                             ; preds = %1511, %1453
  %1513 = load i32, ptr %63, align 4, !tbaa !9
  store i32 %1513, ptr %31, align 4, !tbaa !9
  %1514 = load ptr, ptr %15, align 8, !tbaa !5
  %1515 = load i32, ptr %1514, align 4, !tbaa !9
  %1516 = load i32, ptr %53, align 4, !tbaa !9
  %1517 = sub nsw i32 %1515, %1516
  store i32 %1517, ptr %30, align 4, !tbaa !9
  %1518 = load i32, ptr %31, align 4, !tbaa !9
  %1519 = load i32, ptr %30, align 4, !tbaa !9
  %1520 = icmp sle i32 %1518, %1519
  br i1 %1520, label %1521, label %1523

1521:                                             ; preds = %1512
  %1522 = load i32, ptr %31, align 4, !tbaa !9
  br label %1525

1523:                                             ; preds = %1512
  %1524 = load i32, ptr %30, align 4, !tbaa !9
  br label %1525

1525:                                             ; preds = %1523, %1521
  %1526 = phi i32 [ %1522, %1521 ], [ %1524, %1523 ]
  store i32 %1526, ptr %36, align 4, !tbaa !9
  %1527 = load i32, ptr %41, align 4, !tbaa !9
  %1528 = load i32, ptr %57, align 4, !tbaa !9
  %1529 = add nsw i32 %1527, %1528
  store i32 %1529, ptr %39, align 4, !tbaa !9
  %1530 = load i32, ptr %36, align 4, !tbaa !9
  %1531 = icmp sgt i32 %1530, 0
  br i1 %1531, label %1532, label %1556

1532:                                             ; preds = %1525
  %1533 = load ptr, ptr %17, align 8, !tbaa !5
  %1534 = load i32, ptr %39, align 4, !tbaa !9
  %1535 = sub nsw i32 %1534, 1
  %1536 = load i32, ptr %25, align 4, !tbaa !9
  %1537 = mul nsw i32 %1535, %1536
  %1538 = add nsw i32 %1537, 3
  %1539 = sext i32 %1538 to i64
  %1540 = getelementptr inbounds double, ptr %1533, i64 %1539
  %1541 = load ptr, ptr %17, align 8, !tbaa !5
  %1542 = load i32, ptr %39, align 4, !tbaa !9
  %1543 = load i32, ptr %25, align 4, !tbaa !9
  %1544 = mul nsw i32 %1542, %1543
  %1545 = add nsw i32 %1544, 2
  %1546 = sext i32 %1545 to i64
  %1547 = getelementptr inbounds double, ptr %1541, i64 %1546
  %1548 = load ptr, ptr %19, align 8, !tbaa !5
  %1549 = load i32, ptr %39, align 4, !tbaa !9
  %1550 = sext i32 %1549 to i64
  %1551 = getelementptr inbounds double, ptr %1548, i64 %1550
  %1552 = load ptr, ptr %23, align 8, !tbaa !5
  %1553 = load i32, ptr %39, align 4, !tbaa !9
  %1554 = sext i32 %1553 to i64
  %1555 = getelementptr inbounds double, ptr %1552, i64 %1554
  call void @drot_(ptr noundef %36, ptr noundef %1540, ptr noundef @c__1, ptr noundef %1547, ptr noundef @c__1, ptr noundef %1551, ptr noundef %1555)
  br label %1556

1556:                                             ; preds = %1532, %1525
  br label %1557

1557:                                             ; preds = %1556, %1452
  br label %1558

1558:                                             ; preds = %1557, %1387
  %1559 = load i32, ptr %49, align 4, !tbaa !9
  %1560 = icmp ne i32 %1559, 0
  br i1 %1560, label %1561, label %1744

1561:                                             ; preds = %1558
  %1562 = load i32, ptr %48, align 4, !tbaa !9
  %1563 = icmp ne i32 %1562, 0
  br i1 %1563, label %1564, label %1693

1564:                                             ; preds = %1561
  %1565 = load i32, ptr %47, align 4, !tbaa !9
  %1566 = load i32, ptr %53, align 4, !tbaa !9
  %1567 = icmp sge i32 %1565, %1566
  br i1 %1567, label %1568, label %1570

1568:                                             ; preds = %1564
  %1569 = load i32, ptr %47, align 4, !tbaa !9
  br label %1572

1570:                                             ; preds = %1564
  %1571 = load i32, ptr %53, align 4, !tbaa !9
  br label %1572

1572:                                             ; preds = %1570, %1568
  %1573 = phi i32 [ %1569, %1568 ], [ %1571, %1570 ]
  store i32 %1573, ptr %47, align 4, !tbaa !9
  store i32 0, ptr %31, align 4, !tbaa !9
  %1574 = load i32, ptr %45, align 4, !tbaa !9
  %1575 = sub nsw i32 %1574, 3
  store i32 %1575, ptr %30, align 4, !tbaa !9
  %1576 = load i32, ptr %31, align 4, !tbaa !9
  %1577 = load i32, ptr %30, align 4, !tbaa !9
  %1578 = icmp sge i32 %1576, %1577
  br i1 %1578, label %1579, label %1581

1579:                                             ; preds = %1572
  %1580 = load i32, ptr %31, align 4, !tbaa !9
  br label %1583

1581:                                             ; preds = %1572
  %1582 = load i32, ptr %30, align 4, !tbaa !9
  br label %1583

1583:                                             ; preds = %1581, %1579
  %1584 = phi i32 [ %1580, %1579 ], [ %1582, %1581 ]
  store i32 %1584, ptr %51, align 4, !tbaa !9
  %1585 = load i32, ptr %43, align 4, !tbaa !9
  %1586 = load ptr, ptr %16, align 8, !tbaa !5
  %1587 = load i32, ptr %1586, align 4, !tbaa !9
  %1588 = mul nsw i32 %1585, %1587
  %1589 = add nsw i32 %1588, 1
  store i32 %1589, ptr %56, align 4, !tbaa !9
  %1590 = load i32, ptr %45, align 4, !tbaa !9
  %1591 = icmp eq i32 %1590, 2
  br i1 %1591, label %1592, label %1597

1592:                                             ; preds = %1583
  %1593 = load ptr, ptr %16, align 8, !tbaa !5
  %1594 = load i32, ptr %1593, align 4, !tbaa !9
  %1595 = load i32, ptr %56, align 4, !tbaa !9
  %1596 = add nsw i32 %1595, %1594
  store i32 %1596, ptr %56, align 4, !tbaa !9
  br label %1597

1597:                                             ; preds = %1592, %1583
  %1598 = load i32, ptr %56, align 4, !tbaa !9
  %1599 = load i32, ptr %47, align 4, !tbaa !9
  %1600 = icmp sle i32 %1598, %1599
  br i1 %1600, label %1601, label %1603

1601:                                             ; preds = %1597
  %1602 = load i32, ptr %56, align 4, !tbaa !9
  br label %1605

1603:                                             ; preds = %1597
  %1604 = load i32, ptr %47, align 4, !tbaa !9
  br label %1605

1605:                                             ; preds = %1603, %1601
  %1606 = phi i32 [ %1602, %1601 ], [ %1604, %1603 ]
  store i32 %1606, ptr %56, align 4, !tbaa !9
  %1607 = load i32, ptr %53, align 4, !tbaa !9
  store i32 %1607, ptr %31, align 4, !tbaa !9
  %1608 = load i32, ptr %57, align 4, !tbaa !9
  store i32 %1608, ptr %30, align 4, !tbaa !9
  %1609 = load i32, ptr %52, align 4, !tbaa !9
  store i32 %1609, ptr %44, align 4, !tbaa !9
  br label %1610

1610:                                             ; preds = %1688, %1605
  %1611 = load i32, ptr %30, align 4, !tbaa !9
  %1612 = icmp slt i32 %1611, 0
  br i1 %1612, label %1613, label %1618

1613:                                             ; preds = %1610
  %1614 = load i32, ptr %44, align 4, !tbaa !9
  %1615 = load i32, ptr %31, align 4, !tbaa !9
  %1616 = icmp sge i32 %1614, %1615
  %1617 = zext i1 %1616 to i32
  br label %1623

1618:                                             ; preds = %1610
  %1619 = load i32, ptr %44, align 4, !tbaa !9
  %1620 = load i32, ptr %31, align 4, !tbaa !9
  %1621 = icmp sle i32 %1619, %1620
  %1622 = zext i1 %1621 to i32
  br label %1623

1623:                                             ; preds = %1618, %1613
  %1624 = phi i32 [ %1617, %1613 ], [ %1622, %1618 ]
  %1625 = icmp ne i32 %1624, 0
  br i1 %1625, label %1626, label %1692

1626:                                             ; preds = %1623
  %1627 = load i32, ptr %43, align 4, !tbaa !9
  %1628 = load i32, ptr %51, align 4, !tbaa !9
  %1629 = load i32, ptr %63, align 4, !tbaa !9
  %1630 = sdiv i32 %1628, %1629
  %1631 = sub nsw i32 %1627, %1630
  store i32 %1631, ptr %58, align 4, !tbaa !9
  %1632 = load i32, ptr %51, align 4, !tbaa !9
  %1633 = add nsw i32 %1632, 1
  store i32 %1633, ptr %51, align 4, !tbaa !9
  store i32 1, ptr %32, align 4, !tbaa !9
  %1634 = load i32, ptr %44, align 4, !tbaa !9
  %1635 = load i32, ptr %58, align 4, !tbaa !9
  %1636 = sub nsw i32 %1634, %1635
  store i32 %1636, ptr %33, align 4, !tbaa !9
  %1637 = load i32, ptr %32, align 4, !tbaa !9
  %1638 = load i32, ptr %33, align 4, !tbaa !9
  %1639 = icmp sge i32 %1637, %1638
  br i1 %1639, label %1640, label %1642

1640:                                             ; preds = %1626
  %1641 = load i32, ptr %32, align 4, !tbaa !9
  br label %1644

1642:                                             ; preds = %1626
  %1643 = load i32, ptr %33, align 4, !tbaa !9
  br label %1644

1644:                                             ; preds = %1642, %1640
  %1645 = phi i32 [ %1641, %1640 ], [ %1643, %1642 ]
  store i32 %1645, ptr %59, align 4, !tbaa !9
  %1646 = load i32, ptr %56, align 4, !tbaa !9
  %1647 = add nsw i32 %1646, 1
  %1648 = load i32, ptr %59, align 4, !tbaa !9
  %1649 = sub nsw i32 %1647, %1648
  store i32 %1649, ptr %54, align 4, !tbaa !9
  %1650 = load i32, ptr %56, align 4, !tbaa !9
  %1651 = load ptr, ptr %16, align 8, !tbaa !5
  %1652 = load i32, ptr %1651, align 4, !tbaa !9
  %1653 = add nsw i32 %1650, %1652
  store i32 %1653, ptr %32, align 4, !tbaa !9
  %1654 = load i32, ptr %32, align 4, !tbaa !9
  %1655 = load i32, ptr %47, align 4, !tbaa !9
  %1656 = icmp sle i32 %1654, %1655
  br i1 %1656, label %1657, label %1659

1657:                                             ; preds = %1644
  %1658 = load i32, ptr %32, align 4, !tbaa !9
  br label %1661

1659:                                             ; preds = %1644
  %1660 = load i32, ptr %47, align 4, !tbaa !9
  br label %1661

1661:                                             ; preds = %1659, %1657
  %1662 = phi i32 [ %1658, %1657 ], [ %1660, %1659 ]
  store i32 %1662, ptr %56, align 4, !tbaa !9
  %1663 = load ptr, ptr %21, align 8, !tbaa !5
  %1664 = load i32, ptr %59, align 4, !tbaa !9
  %1665 = load i32, ptr %44, align 4, !tbaa !9
  %1666 = sub nsw i32 %1665, 1
  %1667 = load i32, ptr %27, align 4, !tbaa !9
  %1668 = mul nsw i32 %1666, %1667
  %1669 = add nsw i32 %1664, %1668
  %1670 = sext i32 %1669 to i64
  %1671 = getelementptr inbounds double, ptr %1663, i64 %1670
  %1672 = load ptr, ptr %21, align 8, !tbaa !5
  %1673 = load i32, ptr %59, align 4, !tbaa !9
  %1674 = load i32, ptr %44, align 4, !tbaa !9
  %1675 = load i32, ptr %27, align 4, !tbaa !9
  %1676 = mul nsw i32 %1674, %1675
  %1677 = add nsw i32 %1673, %1676
  %1678 = sext i32 %1677 to i64
  %1679 = getelementptr inbounds double, ptr %1672, i64 %1678
  %1680 = load ptr, ptr %19, align 8, !tbaa !5
  %1681 = load i32, ptr %44, align 4, !tbaa !9
  %1682 = sext i32 %1681 to i64
  %1683 = getelementptr inbounds double, ptr %1680, i64 %1682
  %1684 = load ptr, ptr %23, align 8, !tbaa !5
  %1685 = load i32, ptr %44, align 4, !tbaa !9
  %1686 = sext i32 %1685 to i64
  %1687 = getelementptr inbounds double, ptr %1684, i64 %1686
  call void @drot_(ptr noundef %54, ptr noundef %1671, ptr noundef @c__1, ptr noundef %1679, ptr noundef @c__1, ptr noundef %1683, ptr noundef %1687)
  br label %1688

1688:                                             ; preds = %1661
  %1689 = load i32, ptr %30, align 4, !tbaa !9
  %1690 = load i32, ptr %44, align 4, !tbaa !9
  %1691 = add nsw i32 %1690, %1689
  store i32 %1691, ptr %44, align 4, !tbaa !9
  br label %1610, !llvm.loop !30

1692:                                             ; preds = %1623
  br label %1743

1693:                                             ; preds = %1561
  %1694 = load i32, ptr %53, align 4, !tbaa !9
  store i32 %1694, ptr %30, align 4, !tbaa !9
  %1695 = load i32, ptr %57, align 4, !tbaa !9
  store i32 %1695, ptr %31, align 4, !tbaa !9
  %1696 = load i32, ptr %52, align 4, !tbaa !9
  store i32 %1696, ptr %44, align 4, !tbaa !9
  br label %1697

1697:                                             ; preds = %1738, %1693
  %1698 = load i32, ptr %31, align 4, !tbaa !9
  %1699 = icmp slt i32 %1698, 0
  br i1 %1699, label %1700, label %1705

1700:                                             ; preds = %1697
  %1701 = load i32, ptr %44, align 4, !tbaa !9
  %1702 = load i32, ptr %30, align 4, !tbaa !9
  %1703 = icmp sge i32 %1701, %1702
  %1704 = zext i1 %1703 to i32
  br label %1710

1705:                                             ; preds = %1697
  %1706 = load i32, ptr %44, align 4, !tbaa !9
  %1707 = load i32, ptr %30, align 4, !tbaa !9
  %1708 = icmp sle i32 %1706, %1707
  %1709 = zext i1 %1708 to i32
  br label %1710

1710:                                             ; preds = %1705, %1700
  %1711 = phi i32 [ %1704, %1700 ], [ %1709, %1705 ]
  %1712 = icmp ne i32 %1711, 0
  br i1 %1712, label %1713, label %1742

1713:                                             ; preds = %1710
  %1714 = load ptr, ptr %15, align 8, !tbaa !5
  %1715 = load ptr, ptr %21, align 8, !tbaa !5
  %1716 = load i32, ptr %44, align 4, !tbaa !9
  %1717 = sub nsw i32 %1716, 1
  %1718 = load i32, ptr %27, align 4, !tbaa !9
  %1719 = mul nsw i32 %1717, %1718
  %1720 = add nsw i32 %1719, 1
  %1721 = sext i32 %1720 to i64
  %1722 = getelementptr inbounds double, ptr %1715, i64 %1721
  %1723 = load ptr, ptr %21, align 8, !tbaa !5
  %1724 = load i32, ptr %44, align 4, !tbaa !9
  %1725 = load i32, ptr %27, align 4, !tbaa !9
  %1726 = mul nsw i32 %1724, %1725
  %1727 = add nsw i32 %1726, 1
  %1728 = sext i32 %1727 to i64
  %1729 = getelementptr inbounds double, ptr %1723, i64 %1728
  %1730 = load ptr, ptr %19, align 8, !tbaa !5
  %1731 = load i32, ptr %44, align 4, !tbaa !9
  %1732 = sext i32 %1731 to i64
  %1733 = getelementptr inbounds double, ptr %1730, i64 %1732
  %1734 = load ptr, ptr %23, align 8, !tbaa !5
  %1735 = load i32, ptr %44, align 4, !tbaa !9
  %1736 = sext i32 %1735 to i64
  %1737 = getelementptr inbounds double, ptr %1734, i64 %1736
  call void @drot_(ptr noundef %1714, ptr noundef %1722, ptr noundef @c__1, ptr noundef %1729, ptr noundef @c__1, ptr noundef %1733, ptr noundef %1737)
  br label %1738

1738:                                             ; preds = %1713
  %1739 = load i32, ptr %31, align 4, !tbaa !9
  %1740 = load i32, ptr %44, align 4, !tbaa !9
  %1741 = add nsw i32 %1740, %1739
  store i32 %1741, ptr %44, align 4, !tbaa !9
  br label %1697, !llvm.loop !31

1742:                                             ; preds = %1710
  br label %1743

1743:                                             ; preds = %1742, %1692
  br label %1744

1744:                                             ; preds = %1743, %1558
  %1745 = load i32, ptr %53, align 4, !tbaa !9
  %1746 = load i32, ptr %60, align 4, !tbaa !9
  %1747 = add nsw i32 %1745, %1746
  %1748 = load ptr, ptr %15, align 8, !tbaa !5
  %1749 = load i32, ptr %1748, align 4, !tbaa !9
  %1750 = icmp sgt i32 %1747, %1749
  br i1 %1750, label %1751, label %1758

1751:                                             ; preds = %1744
  %1752 = load i32, ptr %55, align 4, !tbaa !9
  %1753 = add nsw i32 %1752, -1
  store i32 %1753, ptr %55, align 4, !tbaa !9
  %1754 = load i32, ptr %53, align 4, !tbaa !9
  %1755 = load i32, ptr %60, align 4, !tbaa !9
  %1756 = sub nsw i32 %1754, %1755
  %1757 = sub nsw i32 %1756, 1
  store i32 %1757, ptr %53, align 4, !tbaa !9
  br label %1758

1758:                                             ; preds = %1751, %1744
  %1759 = load i32, ptr %53, align 4, !tbaa !9
  store i32 %1759, ptr %31, align 4, !tbaa !9
  %1760 = load i32, ptr %57, align 4, !tbaa !9
  store i32 %1760, ptr %30, align 4, !tbaa !9
  %1761 = load i32, ptr %52, align 4, !tbaa !9
  store i32 %1761, ptr %44, align 4, !tbaa !9
  br label %1762

1762:                                             ; preds = %1824, %1758
  %1763 = load i32, ptr %30, align 4, !tbaa !9
  %1764 = icmp slt i32 %1763, 0
  br i1 %1764, label %1765, label %1770

1765:                                             ; preds = %1762
  %1766 = load i32, ptr %44, align 4, !tbaa !9
  %1767 = load i32, ptr %31, align 4, !tbaa !9
  %1768 = icmp sge i32 %1766, %1767
  %1769 = zext i1 %1768 to i32
  br label %1775

1770:                                             ; preds = %1762
  %1771 = load i32, ptr %44, align 4, !tbaa !9
  %1772 = load i32, ptr %31, align 4, !tbaa !9
  %1773 = icmp sle i32 %1771, %1772
  %1774 = zext i1 %1773 to i32
  br label %1775

1775:                                             ; preds = %1770, %1765
  %1776 = phi i32 [ %1769, %1765 ], [ %1774, %1770 ]
  %1777 = icmp ne i32 %1776, 0
  br i1 %1777, label %1778, label %1828

1778:                                             ; preds = %1775
  %1779 = load ptr, ptr %23, align 8, !tbaa !5
  %1780 = load i32, ptr %44, align 4, !tbaa !9
  %1781 = sext i32 %1780 to i64
  %1782 = getelementptr inbounds double, ptr %1779, i64 %1781
  %1783 = load double, ptr %1782, align 8, !tbaa !14
  %1784 = load ptr, ptr %17, align 8, !tbaa !5
  %1785 = load i32, ptr %57, align 4, !tbaa !9
  %1786 = load i32, ptr %44, align 4, !tbaa !9
  %1787 = load i32, ptr %25, align 4, !tbaa !9
  %1788 = mul nsw i32 %1786, %1787
  %1789 = add nsw i32 %1785, %1788
  %1790 = sext i32 %1789 to i64
  %1791 = getelementptr inbounds double, ptr %1784, i64 %1790
  %1792 = load double, ptr %1791, align 8, !tbaa !14
  %1793 = fmul double %1783, %1792
  %1794 = load ptr, ptr %23, align 8, !tbaa !5
  %1795 = load i32, ptr %44, align 4, !tbaa !9
  %1796 = load ptr, ptr %16, align 8, !tbaa !5
  %1797 = load i32, ptr %1796, align 4, !tbaa !9
  %1798 = add nsw i32 %1795, %1797
  %1799 = sext i32 %1798 to i64
  %1800 = getelementptr inbounds double, ptr %1794, i64 %1799
  store double %1793, ptr %1800, align 8, !tbaa !14
  %1801 = load ptr, ptr %19, align 8, !tbaa !5
  %1802 = load i32, ptr %44, align 4, !tbaa !9
  %1803 = sext i32 %1802 to i64
  %1804 = getelementptr inbounds double, ptr %1801, i64 %1803
  %1805 = load double, ptr %1804, align 8, !tbaa !14
  %1806 = load ptr, ptr %17, align 8, !tbaa !5
  %1807 = load i32, ptr %57, align 4, !tbaa !9
  %1808 = load i32, ptr %44, align 4, !tbaa !9
  %1809 = load i32, ptr %25, align 4, !tbaa !9
  %1810 = mul nsw i32 %1808, %1809
  %1811 = add nsw i32 %1807, %1810
  %1812 = sext i32 %1811 to i64
  %1813 = getelementptr inbounds double, ptr %1806, i64 %1812
  %1814 = load double, ptr %1813, align 8, !tbaa !14
  %1815 = fmul double %1805, %1814
  %1816 = load ptr, ptr %17, align 8, !tbaa !5
  %1817 = load i32, ptr %57, align 4, !tbaa !9
  %1818 = load i32, ptr %44, align 4, !tbaa !9
  %1819 = load i32, ptr %25, align 4, !tbaa !9
  %1820 = mul nsw i32 %1818, %1819
  %1821 = add nsw i32 %1817, %1820
  %1822 = sext i32 %1821 to i64
  %1823 = getelementptr inbounds double, ptr %1816, i64 %1822
  store double %1815, ptr %1823, align 8, !tbaa !14
  br label %1824

1824:                                             ; preds = %1778
  %1825 = load i32, ptr %30, align 4, !tbaa !9
  %1826 = load i32, ptr %44, align 4, !tbaa !9
  %1827 = add nsw i32 %1826, %1825
  store i32 %1827, ptr %44, align 4, !tbaa !9
  br label %1762, !llvm.loop !32

1828:                                             ; preds = %1775
  br label %1829

1829:                                             ; preds = %1828
  %1830 = load i32, ptr %45, align 4, !tbaa !9
  %1831 = add nsw i32 %1830, -1
  store i32 %1831, ptr %45, align 4, !tbaa !9
  br label %1099, !llvm.loop !33

1832:                                             ; preds = %1099
  br label %1833

1833:                                             ; preds = %1832
  %1834 = load i32, ptr %43, align 4, !tbaa !9
  %1835 = add nsw i32 %1834, 1
  store i32 %1835, ptr %43, align 4, !tbaa !9
  br label %1092, !llvm.loop !34

1836:                                             ; preds = %1092
  br label %1837

1837:                                             ; preds = %1836, %1082
  %1838 = load ptr, ptr %16, align 8, !tbaa !5
  %1839 = load i32, ptr %1838, align 4, !tbaa !9
  %1840 = icmp sgt i32 %1839, 0
  br i1 %1840, label %1841, label %1866

1841:                                             ; preds = %1837
  %1842 = load ptr, ptr %15, align 8, !tbaa !5
  %1843 = load i32, ptr %1842, align 4, !tbaa !9
  %1844 = sub nsw i32 %1843, 1
  store i32 %1844, ptr %29, align 4, !tbaa !9
  store i32 1, ptr %43, align 4, !tbaa !9
  br label %1845

1845:                                             ; preds = %1862, %1841
  %1846 = load i32, ptr %43, align 4, !tbaa !9
  %1847 = load i32, ptr %29, align 4, !tbaa !9
  %1848 = icmp sle i32 %1846, %1847
  br i1 %1848, label %1849, label %1865

1849:                                             ; preds = %1845
  %1850 = load ptr, ptr %17, align 8, !tbaa !5
  %1851 = load i32, ptr %43, align 4, !tbaa !9
  %1852 = load i32, ptr %25, align 4, !tbaa !9
  %1853 = mul nsw i32 %1851, %1852
  %1854 = add nsw i32 %1853, 2
  %1855 = sext i32 %1854 to i64
  %1856 = getelementptr inbounds double, ptr %1850, i64 %1855
  %1857 = load double, ptr %1856, align 8, !tbaa !14
  %1858 = load ptr, ptr %20, align 8, !tbaa !5
  %1859 = load i32, ptr %43, align 4, !tbaa !9
  %1860 = sext i32 %1859 to i64
  %1861 = getelementptr inbounds double, ptr %1858, i64 %1860
  store double %1857, ptr %1861, align 8, !tbaa !14
  br label %1862

1862:                                             ; preds = %1849
  %1863 = load i32, ptr %43, align 4, !tbaa !9
  %1864 = add nsw i32 %1863, 1
  store i32 %1864, ptr %43, align 4, !tbaa !9
  br label %1845, !llvm.loop !35

1865:                                             ; preds = %1845
  br label %1883

1866:                                             ; preds = %1837
  %1867 = load ptr, ptr %15, align 8, !tbaa !5
  %1868 = load i32, ptr %1867, align 4, !tbaa !9
  %1869 = sub nsw i32 %1868, 1
  store i32 %1869, ptr %29, align 4, !tbaa !9
  store i32 1, ptr %43, align 4, !tbaa !9
  br label %1870

1870:                                             ; preds = %1879, %1866
  %1871 = load i32, ptr %43, align 4, !tbaa !9
  %1872 = load i32, ptr %29, align 4, !tbaa !9
  %1873 = icmp sle i32 %1871, %1872
  br i1 %1873, label %1874, label %1882

1874:                                             ; preds = %1870
  %1875 = load ptr, ptr %20, align 8, !tbaa !5
  %1876 = load i32, ptr %43, align 4, !tbaa !9
  %1877 = sext i32 %1876 to i64
  %1878 = getelementptr inbounds double, ptr %1875, i64 %1877
  store double 0.000000e+00, ptr %1878, align 8, !tbaa !14
  br label %1879

1879:                                             ; preds = %1874
  %1880 = load i32, ptr %43, align 4, !tbaa !9
  %1881 = add nsw i32 %1880, 1
  store i32 %1881, ptr %43, align 4, !tbaa !9
  br label %1870, !llvm.loop !36

1882:                                             ; preds = %1870
  br label %1883

1883:                                             ; preds = %1882, %1865
  %1884 = load ptr, ptr %15, align 8, !tbaa !5
  %1885 = load i32, ptr %1884, align 4, !tbaa !9
  store i32 %1885, ptr %29, align 4, !tbaa !9
  store i32 1, ptr %43, align 4, !tbaa !9
  br label %1886

1886:                                             ; preds = %1903, %1883
  %1887 = load i32, ptr %43, align 4, !tbaa !9
  %1888 = load i32, ptr %29, align 4, !tbaa !9
  %1889 = icmp sle i32 %1887, %1888
  br i1 %1889, label %1890, label %1906

1890:                                             ; preds = %1886
  %1891 = load ptr, ptr %17, align 8, !tbaa !5
  %1892 = load i32, ptr %43, align 4, !tbaa !9
  %1893 = load i32, ptr %25, align 4, !tbaa !9
  %1894 = mul nsw i32 %1892, %1893
  %1895 = add nsw i32 %1894, 1
  %1896 = sext i32 %1895 to i64
  %1897 = getelementptr inbounds double, ptr %1891, i64 %1896
  %1898 = load double, ptr %1897, align 8, !tbaa !14
  %1899 = load ptr, ptr %19, align 8, !tbaa !5
  %1900 = load i32, ptr %43, align 4, !tbaa !9
  %1901 = sext i32 %1900 to i64
  %1902 = getelementptr inbounds double, ptr %1899, i64 %1901
  store double %1898, ptr %1902, align 8, !tbaa !14
  br label %1903

1903:                                             ; preds = %1890
  %1904 = load i32, ptr %43, align 4, !tbaa !9
  %1905 = add nsw i32 %1904, 1
  store i32 %1905, ptr %43, align 4, !tbaa !9
  br label %1886, !llvm.loop !37

1906:                                             ; preds = %1886
  br label %1907

1907:                                             ; preds = %1906, %1081
  store i32 1, ptr %64, align 4
  br label %1908

1908:                                             ; preds = %1907, %186, %177
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #3
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 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
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #3
  ret void
}

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

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

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

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

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

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

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

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

declare void @dlar2v_(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 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = !{!15, !15, i64 0}
!15 = !{!"double", !7, i64 0}
!16 = distinct !{!16, !12}
!17 = distinct !{!17, !12}
!18 = distinct !{!18, !12}
!19 = distinct !{!19, !12}
!20 = distinct !{!20, !12}
!21 = distinct !{!21, !12}
!22 = distinct !{!22, !12}
!23 = distinct !{!23, !12}
!24 = distinct !{!24, !12}
!25 = distinct !{!25, !12}
!26 = distinct !{!26, !12}
!27 = distinct !{!27, !12}
!28 = distinct !{!28, !12}
!29 = distinct !{!29, !12}
!30 = distinct !{!30, !12}
!31 = distinct !{!31, !12}
!32 = distinct !{!32, !12}
!33 = distinct !{!33, !12}
!34 = distinct !{!34, !12}
!35 = distinct !{!35, !12}
!36 = distinct !{!36, !12}
!37 = distinct !{!37, !12}


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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [5 x i8], align 1
@c_b9 = external hidden global double, align 8
@c_b10 = external hidden global double, align 8
@c__1 = external hidden global i32, align 4

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

44:                                               ; preds = %12
  %45 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #5
  %46 = icmp ne i32 %45, 0
  br label %47

47:                                               ; preds = %44, %12
  %48 = phi i1 [ true, %12 ], [ %46, %44 ]
  %49 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #5
  %50 = load i32, ptr %3, align 4, !tbaa !5
  %51 = add nsw i32 %50, 1
  store i32 %51, ptr %31, align 4, !tbaa !5
  %52 = add nsw i32 %50, -1
  store i32 %52, ptr %33, align 4, !tbaa !5
  %53 = load i32, ptr %5, align 4, !tbaa !5
  %54 = add nsw i32 %53, -1
  store i32 %54, ptr %27, align 4, !tbaa !5
  store i32 0, ptr %11, align 4, !tbaa !5
  br i1 %48, label %57, label %55

55:                                               ; preds = %47
  %56 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #5
  %.not657 = icmp eq i32 %56, 0
  br i1 %.not657, label %.thread.sink.split, label %57

57:                                               ; preds = %55, %47
  %.not658 = icmp eq i32 %49, 0
  br i1 %.not658, label %58, label %60

58:                                               ; preds = %57
  %59 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #5
  %.not659 = icmp eq i32 %59, 0
  br i1 %.not659, label %.thread.sink.split, label %60

60:                                               ; preds = %58, %57
  %61 = load i32, ptr %2, align 4, !tbaa !5
  %62 = icmp slt i32 %61, 0
  br i1 %62, label %.thread.sink.split, label %63

63:                                               ; preds = %60
  %64 = load i32, ptr %3, align 4, !tbaa !5
  %65 = icmp slt i32 %64, 0
  br i1 %65, label %.thread.sink.split, label %66

66:                                               ; preds = %63
  %67 = load i32, ptr %5, align 4, !tbaa !5
  %.not925 = icmp sgt i32 %67, %50
  br i1 %.not925, label %68, label %.thread.sink.split

68:                                               ; preds = %66
  %69 = load i32, ptr %9, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %61, i32 1)
  %70 = icmp slt i32 %69, %spec.select
  %or.cond = select i1 %70, i1 %48, i1 false
  br i1 %or.cond, label %.thread.sink.split, label %71

71:                                               ; preds = %68
  %.pr = load i32, ptr %11, align 4, !tbaa !5
  %.not660 = icmp eq i32 %.pr, 0
  br i1 %.not660, label %75, label %.thread

.thread.sink.split:                               ; preds = %68, %66, %63, %60, %58, %55
  %.sink = phi i32 [ -1, %55 ], [ -2, %58 ], [ -3, %60 ], [ -4, %63 ], [ -6, %66 ], [ -10, %68 ]
  store i32 %.sink, ptr %11, align 4, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %71
  %72 = phi i32 [ %.pr, %71 ], [ %.sink, %.thread.sink.split ]
  %73 = sub nsw i32 0, %72
  store i32 %73, ptr %21, align 4, !tbaa !5
  %74 = call i32 @xerbla_(ptr noundef nonnull @.str.4, ptr noundef nonnull %21, i32 noundef 6) #5
  br label %.loopexit

75:                                               ; preds = %71
  %76 = icmp eq i32 %61, 0
  br i1 %76, label %.loopexit, label %77

77:                                               ; preds = %75
  br i1 %.not, label %79, label %78

78:                                               ; preds = %77
  tail call void @dlaset_(ptr noundef nonnull @.str.5, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_b9, ptr noundef nonnull @c_b10, ptr noundef %8, ptr noundef nonnull %9) #5
  %.pre = load i32, ptr %5, align 4, !tbaa !5
  %.pre917 = load i32, ptr %2, align 4, !tbaa !5
  %.pre918 = load i32, ptr %3, align 4, !tbaa !5
  br label %79

79:                                               ; preds = %78, %77
  %80 = phi i32 [ %.pre918, %78 ], [ %64, %77 ]
  %81 = phi i32 [ %.pre917, %78 ], [ %61, %77 ]
  %82 = phi i32 [ %.pre, %78 ], [ %67, %77 ]
  %83 = mul nsw i32 %82, %51
  store i32 %83, ptr %25, align 4, !tbaa !5
  %84 = add i32 %81, -1
  store i32 %84, ptr %21, align 4, !tbaa !5
  %. = tail call i32 @llvm.smin.i32(i32 %84, i32 %80)
  %85 = icmp sgt i32 %80, 1
  br i1 %.not658, label %459, label %86

86:                                               ; preds = %79
  br i1 %85, label %87, label %.loopexit733

87:                                               ; preds = %86
  store i32 0, ptr %30, align 4, !tbaa !5
  %.not683775 = icmp slt i32 %81, 3
  br i1 %.not683775, label %.loopexit733.thread, label %.lr.ph771.us.preheader

.lr.ph771.us.preheader:                           ; preds = %87
  %88 = add nsw i32 %81, -2
  %invariant.gep764 = getelementptr i8, ptr %36, i64 8
  %invariant.gep = getelementptr i8, ptr %36, i64 16
  %invariant.gep752 = getelementptr i8, ptr %41, i64 8
  %89 = add i32 %., 1
  %90 = add nsw i32 %., 2
  %91 = sext i32 %34 to i64
  %92 = sext i32 %89 to i64
  %93 = sext i32 %88 to i64
  br label %.lr.ph771.us

.lr.ph771.us:                                     ; preds = %.lr.ph771.us.preheader, %._crit_edge772.us
  %indvars.iv876 = phi i64 [ 1, %.lr.ph771.us.preheader ], [ %indvars.iv.next877, %._crit_edge772.us ]
  %.0638.neg780.us = phi i32 [ -1, %.lr.ph771.us.preheader ], [ %381, %._crit_edge772.us ]
  %.0608779.us = phi i32 [ 1, %.lr.ph771.us.preheader ], [ %.2610.us, %._crit_edge772.us ]
  %.0612778.us = phi i32 [ %90, %.lr.ph771.us.preheader ], [ %.2614.us, %._crit_edge772.us ]
  %.0620777.us = phi i32 [ 1, %.lr.ph771.us.preheader ], [ %.2622.us, %._crit_edge772.us ]
  %94 = add nsw i32 %.0638.neg780.us, 1
  %95 = trunc nuw nsw i64 %indvars.iv876 to i32
  br label %96

96:                                               ; preds = %.lr.ph771.us, %._crit_edge.us
  %indvars.iv873 = phi i64 [ %92, %.lr.ph771.us ], [ %indvars.iv.next874, %._crit_edge.us ]
  %.1609769.us = phi i32 [ %.0608779.us, %.lr.ph771.us ], [ %.2610.us, %._crit_edge.us ]
  %.1613768.us = phi i32 [ %.0612778.us, %.lr.ph771.us ], [ %.2614.us, %._crit_edge.us ]
  %.1621767.us = phi i32 [ %.0620777.us, %.lr.ph771.us ], [ %.2622.us, %._crit_edge.us ]
  %97 = add nsw i32 %.1613768.us, %.
  %98 = add nsw i32 %.1609769.us, %.
  %99 = load i32, ptr %30, align 4, !tbaa !5
  %100 = icmp sgt i32 %99, 0
  br i1 %100, label %101, label %.loopexit731.us

101:                                              ; preds = %96
  %102 = add nsw i32 %97, -1
  %103 = mul nsw i32 %102, %34
  %104 = sext i32 %103 to i64
  %gep765.us = getelementptr double, ptr %invariant.gep764, i64 %104
  %105 = sext i32 %97 to i64
  %106 = getelementptr inbounds double, ptr %42, i64 %105
  %107 = getelementptr inbounds double, ptr %37, i64 %105
  call void @dlargv_(ptr noundef nonnull %30, ptr noundef %gep765.us, ptr noundef nonnull %25, ptr noundef nonnull %106, ptr noundef nonnull %31, ptr noundef nonnull %107, ptr noundef nonnull %31) #5
  %108 = load i32, ptr %30, align 4, !tbaa !5
  %109 = load i32, ptr %3, align 4, !tbaa !5
  %110 = shl i32 %109, 1
  %111 = add nsw i32 %110, -1
  %.not687.us = icmp slt i32 %108, %111
  br i1 %.not687.us, label %117, label %112

112:                                              ; preds = %101
  %113 = add nsw i32 %109, -1
  store i32 %113, ptr %22, align 4, !tbaa !5
  %.not689734.us = icmp slt i32 %109, 2
  br i1 %.not689734.us, label %.loopexit731.us, label %.lr.ph.us

114:                                              ; preds = %.lr.ph.us, %114
  %indvars.iv = phi i64 [ 1, %.lr.ph.us ], [ %indvars.iv.next, %114 ]
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %gep942 = getelementptr double, ptr %invariant.gep941, i64 %indvars.iv.next
  %gep944 = getelementptr double, ptr %invariant.gep943, i64 %indvars.iv
  call void @dlartv_(ptr noundef nonnull %30, ptr noundef %gep942, ptr noundef nonnull %25, ptr noundef %gep944, ptr noundef nonnull %25, ptr noundef nonnull %107, ptr noundef nonnull %106, ptr noundef nonnull %31) #5
  %115 = load i32, ptr %22, align 4, !tbaa !5
  %116 = sext i32 %115 to i64
  %.not689.us.not = icmp slt i64 %indvars.iv, %116
  br i1 %.not689.us.not, label %114, label %.loopexit731.us, !llvm.loop !9

117:                                              ; preds = %101
  %118 = add nsw i32 %108, -1
  %119 = load i32, ptr %31, align 4, !tbaa !5
  %120 = mul nsw i32 %119, %118
  %121 = add nsw i32 %120, %97
  store i32 %121, ptr %22, align 4, !tbaa !5
  store i32 %119, ptr %23, align 4, !tbaa !5
  %122 = icmp slt i32 %119, 0
  %123 = icmp slt i32 %120, 1
  %124 = icmp sgt i32 %120, -1
  %.in688738.us = select i1 %122, i1 %123, i1 %124
  br i1 %.in688738.us, label %.lr.ph740.us, label %.loopexit731.us

.loopexit731.us:                                  ; preds = %114, %.lr.ph740.us, %112, %117, %96
  %125 = icmp eq i64 %indvars.iv873, 2
  br i1 %125, label %thread-pre-split708.us, label %126

126:                                              ; preds = %.loopexit731.us
  %127 = load i32, ptr %2, align 4, !tbaa !5
  %128 = add i32 %94, %127
  %129 = sext i32 %128 to i64
  %.not691.us = icmp sgt i64 %indvars.iv873, %129
  br i1 %.not691.us, label %166, label %130

130:                                              ; preds = %126
  %131 = load i32, ptr %3, align 4, !tbaa !5
  %132 = trunc nsw i64 %indvars.iv873 to i32
  %133 = sub nsw i32 %131, %132
  %134 = add nuw nsw i64 %indvars.iv873, %indvars.iv876
  %135 = add nsw i64 %134, -2
  %136 = mul nsw i64 %135, %91
  %137 = trunc nsw i64 %136 to i32
  %138 = add i32 %137, 3
  %139 = add i32 %138, %133
  %140 = sext i32 %139 to i64
  %141 = getelementptr inbounds double, ptr %36, i64 %140
  %142 = add nsw i64 %134, -1
  %143 = mul nsw i64 %142, %91
  %144 = trunc nsw i64 %143 to i32
  %145 = add i32 %144, 2
  %146 = add i32 %145, %133
  %147 = sext i32 %146 to i64
  %148 = getelementptr inbounds double, ptr %36, i64 %147
  %149 = getelementptr inbounds double, ptr %37, i64 %142
  %150 = getelementptr inbounds double, ptr %42, i64 %142
  call void @dlartg_(ptr noundef %141, ptr noundef %148, ptr noundef nonnull %149, ptr noundef nonnull %150, ptr noundef nonnull %28) #5
  %151 = load double, ptr %28, align 8, !tbaa !11
  %152 = load i32, ptr %3, align 4, !tbaa !5
  %153 = sub nsw i32 %152, %132
  %154 = add nsw i32 %153, 3
  %155 = sext i32 %154 to i64
  %156 = getelementptr double, ptr %36, i64 %136
  %157 = getelementptr double, ptr %156, i64 %155
  store double %151, ptr %157, align 8, !tbaa !11
  %158 = trunc i64 %indvars.iv873 to i32
  %159 = add i32 %158, -3
  store i32 %159, ptr %23, align 4, !tbaa !5
  %160 = add i32 %137, 4
  %161 = add i32 %160, %153
  %162 = sext i32 %161 to i64
  %163 = getelementptr inbounds double, ptr %36, i64 %162
  %164 = getelementptr double, ptr %36, i64 %143
  %165 = getelementptr double, ptr %164, i64 %155
  call void @drot_(ptr noundef nonnull %23, ptr noundef %163, ptr noundef nonnull @c__1, ptr noundef %165, ptr noundef nonnull @c__1, ptr noundef nonnull %149, ptr noundef nonnull %150) #5
  br label %166

166:                                              ; preds = %130, %126
  %167 = load i32, ptr %30, align 4, !tbaa !5
  %168 = add nsw i32 %167, 1
  store i32 %168, ptr %30, align 4, !tbaa !5
  %169 = add nsw i32 %.1613768.us, -1
  br label %170

thread-pre-split708.us:                           ; preds = %.loopexit731.us
  %.pr709.us = load i32, ptr %30, align 4, !tbaa !5
  br label %170

170:                                              ; preds = %thread-pre-split708.us, %166
  %171 = phi i32 [ %.pr709.us, %thread-pre-split708.us ], [ %168, %166 ]
  %.2614.us = phi i32 [ %97, %thread-pre-split708.us ], [ %169, %166 ]
  %172 = icmp sgt i32 %171, 0
  br i1 %172, label %173, label %.loopexit730.us

173:                                              ; preds = %170
  %174 = load i32, ptr %31, align 4, !tbaa !5
  %175 = add nsw i32 %.2614.us, -1
  %176 = mul nsw i32 %175, %34
  %177 = add nsw i32 %174, %176
  %178 = sext i32 %177 to i64
  %179 = getelementptr inbounds double, ptr %36, i64 %178
  %180 = mul nsw i32 %.2614.us, %34
  %181 = add nsw i32 %174, %180
  %182 = sext i32 %181 to i64
  %183 = getelementptr inbounds double, ptr %36, i64 %182
  %184 = load i32, ptr %3, align 4, !tbaa !5
  %185 = add nsw i32 %184, %180
  %186 = sext i32 %185 to i64
  %187 = getelementptr inbounds double, ptr %36, i64 %186
  %188 = sext i32 %.2614.us to i64
  %189 = getelementptr inbounds double, ptr %37, i64 %188
  %190 = getelementptr inbounds double, ptr %42, i64 %188
  call void @dlar2v_(ptr noundef nonnull %30, ptr noundef %179, ptr noundef %183, ptr noundef %187, ptr noundef nonnull %25, ptr noundef nonnull %189, ptr noundef nonnull %190, ptr noundef nonnull %31) #5
  %.pre919 = load i32, ptr %30, align 4, !tbaa !5
  %191 = icmp sgt i32 %.pre919, 0
  br i1 %191, label %192, label %.loopexit730.us

192:                                              ; preds = %173
  %193 = load i32, ptr %3, align 4, !tbaa !5
  %194 = shl i32 %193, 1
  %.not692.us = icmp sgt i32 %194, %.pre919
  br i1 %.not692.us, label %219, label %195

195:                                              ; preds = %192
  %196 = add nsw i32 %193, -1
  store i32 %196, ptr %23, align 4, !tbaa !5
  %.not696741.us = icmp slt i32 %193, 2
  br i1 %.not696741.us, label %.loopexit730.us, label %.lr.ph743.us

197:                                              ; preds = %.lr.ph743.us, %216
  %198 = phi i32 [ %196, %.lr.ph743.us ], [ %217, %216 ]
  %.1627742.us = phi i32 [ 1, %.lr.ph743.us ], [ %218, %216 ]
  %199 = add nsw i32 %.1627742.us, %98
  %200 = load i32, ptr %2, align 4, !tbaa !5
  %201 = icmp sgt i32 %199, %200
  %202 = load i32, ptr %30, align 4
  %203 = sext i1 %201 to i32
  %storemerge704.us = add nsw i32 %202, %203
  store i32 %storemerge704.us, ptr %32, align 4, !tbaa !5
  %204 = icmp sgt i32 %storemerge704.us, 0
  br i1 %204, label %205, label %216

205:                                              ; preds = %197
  %206 = load i32, ptr %3, align 4, !tbaa !5
  %207 = sub nsw i32 %206, %.1627742.us
  %208 = add nsw i32 %.1627742.us, %.2614.us
  %209 = mul nsw i32 %208, %34
  %210 = add i32 %207, %209
  %211 = sext i32 %210 to i64
  %212 = getelementptr inbounds double, ptr %36, i64 %211
  %213 = add i32 %210, 1
  %214 = sext i32 %213 to i64
  %215 = getelementptr inbounds double, ptr %36, i64 %214
  call void @dlartv_(ptr noundef nonnull %32, ptr noundef %212, ptr noundef nonnull %25, ptr noundef %215, ptr noundef nonnull %25, ptr noundef nonnull %373, ptr noundef nonnull %374, ptr noundef nonnull %31) #5
  %.pre920 = load i32, ptr %23, align 4, !tbaa !5
  br label %216

216:                                              ; preds = %205, %197
  %217 = phi i32 [ %.pre920, %205 ], [ %198, %197 ]
  %218 = add nuw nsw i32 %.1627742.us, 1
  %.not696.us.not = icmp slt i32 %.1627742.us, %217
  br i1 %.not696.us.not, label %197, label %.loopexit730.us, !llvm.loop !13

219:                                              ; preds = %192
  %220 = load i32, ptr %31, align 4, !tbaa !5
  %221 = add nsw i32 %.pre919, -2
  %222 = mul nsw i32 %220, %221
  %223 = add nsw i32 %222, %.2614.us
  %.not693.us = icmp slt i32 %222, 0
  br i1 %.not693.us, label %.loopexit729.us, label %224

224:                                              ; preds = %219
  store i32 %223, ptr %23, align 4, !tbaa !5
  store i32 %220, ptr %22, align 4, !tbaa !5
  %225 = icmp sgt i32 %220, -1
  %226 = icmp eq i32 %222, 0
  %.in694744.us = or i1 %225, %226
  br i1 %.in694744.us, label %.lr.ph746.us, label %.loopexit729.us

.lr.ph746.us:                                     ; preds = %224, %.lr.ph746.us
  %.0745.us = phi i32 [ %241, %.lr.ph746.us ], [ %.2614.us, %224 ]
  %227 = load i32, ptr %3, align 4, !tbaa !5
  %228 = add nsw i32 %227, -1
  store i32 %228, ptr %24, align 4, !tbaa !5
  %229 = add nsw i32 %.0745.us, 1
  %230 = mul nsw i32 %229, %34
  %231 = add nsw i32 %228, %230
  %232 = sext i32 %231 to i64
  %233 = getelementptr inbounds double, ptr %36, i64 %232
  %234 = add nsw i32 %227, %230
  %235 = sext i32 %234 to i64
  %236 = getelementptr inbounds double, ptr %36, i64 %235
  %237 = sext i32 %.0745.us to i64
  %238 = getelementptr inbounds double, ptr %37, i64 %237
  %239 = getelementptr inbounds double, ptr %42, i64 %237
  call void @drot_(ptr noundef nonnull %24, ptr noundef %233, ptr noundef nonnull %27, ptr noundef %236, ptr noundef nonnull %27, ptr noundef nonnull %238, ptr noundef nonnull %239) #5
  %240 = load i32, ptr %22, align 4, !tbaa !5
  %241 = add nsw i32 %240, %.0745.us
  %242 = icmp slt i32 %240, 0
  %243 = load i32, ptr %23, align 4
  %244 = icmp sge i32 %241, %243
  %245 = icmp sle i32 %241, %243
  %.in694.us = select i1 %242, i1 %244, i1 %245
  br i1 %.in694.us, label %.lr.ph746.us, label %.loopexit729.us, !llvm.loop !14

.loopexit729.us:                                  ; preds = %.lr.ph746.us, %224, %219
  %246 = load i32, ptr %33, align 4, !tbaa !5
  %247 = load i32, ptr %2, align 4, !tbaa !5
  %248 = sub nsw i32 %247, %98
  store i32 %248, ptr %23, align 4, !tbaa !5
  %249 = call i32 @llvm.smin.i32(i32 %246, i32 %248)
  store i32 %249, ptr %26, align 4, !tbaa !5
  %250 = icmp sgt i32 %249, 0
  br i1 %250, label %251, label %.loopexit730.us

251:                                              ; preds = %.loopexit729.us
  %252 = load i32, ptr %31, align 4, !tbaa !5
  %253 = add nsw i32 %252, %223
  %254 = load i32, ptr %3, align 4, !tbaa !5
  %255 = add nsw i32 %253, 1
  %256 = mul nsw i32 %255, %34
  %257 = add i32 %256, %254
  %258 = add i32 %257, -1
  %259 = sext i32 %258 to i64
  %260 = getelementptr inbounds double, ptr %36, i64 %259
  %261 = sext i32 %257 to i64
  %262 = getelementptr inbounds double, ptr %36, i64 %261
  %263 = sext i32 %253 to i64
  %264 = getelementptr inbounds double, ptr %37, i64 %263
  %265 = getelementptr inbounds double, ptr %42, i64 %263
  call void @drot_(ptr noundef nonnull %26, ptr noundef %260, ptr noundef nonnull %27, ptr noundef %262, ptr noundef nonnull %27, ptr noundef nonnull %264, ptr noundef nonnull %265) #5
  br label %.loopexit730.us

.loopexit730.us:                                  ; preds = %216, %170, %195, %251, %.loopexit729.us, %173
  br i1 %48, label %266, label %.loopexit727.us

266:                                              ; preds = %.loopexit730.us
  br i1 %.not, label %310, label %267

267:                                              ; preds = %266
  %268 = call i32 @llvm.smax.i32(i32 %.1621767.us, i32 %98)
  %269 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %98, ptr %22, align 4, !tbaa !5
  %270 = load i32, ptr %31, align 4, !tbaa !5
  store i32 %270, ptr %23, align 4, !tbaa !5
  %271 = icmp slt i32 %270, 0
  %272 = icmp sge i32 %.2614.us, %98
  %273 = icmp sle i32 %.2614.us, %98
  %.in700747.us = select i1 %271, i1 %272, i1 %273
  br i1 %.in700747.us, label %.lr.ph751.us.preheader, label %.loopexit727.us

.lr.ph751.us.preheader:                           ; preds = %267
  %274 = trunc i64 %indvars.iv873 to i32
  %275 = add i32 %274, -3
  %276 = mul nsw i32 %269, %95
  %277 = add nsw i32 %276, 1
  %278 = select i1 %125, i32 %269, i32 0
  %spec.select705.us = add nsw i32 %277, %278
  %279 = call i32 @llvm.smin.i32(i32 %spec.select705.us, i32 %268)
  %280 = icmp slt i64 %indvars.iv873, 4
  %281 = select i1 %280, i32 0, i32 %275
  br label %.lr.ph751.us

.lr.ph751.us:                                     ; preds = %.lr.ph751.us.preheader, %.lr.ph751.us
  %.1750.us = phi i32 [ %291, %.lr.ph751.us ], [ %279, %.lr.ph751.us.preheader ]
  %.0618749.us = phi i32 [ %284, %.lr.ph751.us ], [ %281, %.lr.ph751.us.preheader ]
  %.0632748.us = phi i32 [ %305, %.lr.ph751.us ], [ %.2614.us, %.lr.ph751.us.preheader ]
  %282 = load i32, ptr %33, align 4, !tbaa !5
  %283 = sdiv i32 %.0618749.us, %282
  %284 = add nsw i32 %.0618749.us, 1
  %.neg702.us = add i32 %.0632748.us, %.0638.neg780.us
  %285 = add i32 %.neg702.us, %283
  %286 = call i32 @llvm.smax.i32(i32 %285, i32 1)
  %287 = add nsw i32 %.1750.us, 1
  %288 = sub i32 %287, %286
  store i32 %288, ptr %29, align 4, !tbaa !5
  %289 = load i32, ptr %3, align 4, !tbaa !5
  %290 = add nsw i32 %289, %.1750.us
  store i32 %290, ptr %24, align 4, !tbaa !5
  %291 = call i32 @llvm.smin.i32(i32 %290, i32 %268)
  %292 = add nsw i32 %.0632748.us, -1
  %293 = mul nsw i32 %292, %39
  %294 = add nsw i32 %286, %293
  %295 = sext i32 %294 to i64
  %296 = getelementptr inbounds double, ptr %41, i64 %295
  %297 = mul nsw i32 %.0632748.us, %39
  %298 = add nsw i32 %286, %297
  %299 = sext i32 %298 to i64
  %300 = getelementptr inbounds double, ptr %41, i64 %299
  %301 = sext i32 %.0632748.us to i64
  %302 = getelementptr inbounds double, ptr %37, i64 %301
  %303 = getelementptr inbounds double, ptr %42, i64 %301
  call void @drot_(ptr noundef nonnull %29, ptr noundef %296, ptr noundef nonnull @c__1, ptr noundef %300, ptr noundef nonnull @c__1, ptr noundef nonnull %302, ptr noundef nonnull %303) #5
  %304 = load i32, ptr %23, align 4, !tbaa !5
  %305 = add nsw i32 %304, %.0632748.us
  %306 = icmp slt i32 %304, 0
  %307 = load i32, ptr %22, align 4
  %308 = icmp sge i32 %305, %307
  %309 = icmp sle i32 %305, %307
  %.in700.us = select i1 %306, i1 %308, i1 %309
  br i1 %.in700.us, label %.lr.ph751.us, label %.loopexit727.us, !llvm.loop !15

310:                                              ; preds = %266
  store i32 %98, ptr %23, align 4, !tbaa !5
  %311 = load i32, ptr %31, align 4, !tbaa !5
  store i32 %311, ptr %22, align 4, !tbaa !5
  %312 = icmp slt i32 %311, 0
  %313 = icmp sge i32 %.2614.us, %98
  %314 = icmp sle i32 %.2614.us, %98
  %.in697756.us = select i1 %312, i1 %313, i1 %314
  br i1 %.in697756.us, label %.lr.ph758.us, label %.loopexit727.us

.loopexit727.us:                                  ; preds = %.lr.ph751.us, %.lr.ph758.us, %267, %310, %.loopexit730.us
  %.2622.us = phi i32 [ %.1621767.us, %.loopexit730.us ], [ %.1621767.us, %310 ], [ %268, %267 ], [ %.1621767.us, %.lr.ph758.us ], [ %268, %.lr.ph751.us ]
  %315 = add nsw i32 %98, %.
  %316 = load i32, ptr %2, align 4, !tbaa !5
  %317 = icmp sgt i32 %315, %316
  br i1 %317, label %318, label %322

318:                                              ; preds = %.loopexit727.us
  %319 = load i32, ptr %30, align 4, !tbaa !5
  %320 = add nsw i32 %319, -1
  store i32 %320, ptr %30, align 4, !tbaa !5
  %321 = add nsw i32 %.1609769.us, -1
  br label %322

322:                                              ; preds = %318, %.loopexit727.us
  %.2610.us = phi i32 [ %321, %318 ], [ %98, %.loopexit727.us ]
  store i32 %.2610.us, ptr %22, align 4, !tbaa !5
  %323 = load i32, ptr %31, align 4, !tbaa !5
  store i32 %323, ptr %23, align 4, !tbaa !5
  %324 = icmp slt i32 %323, 0
  %325 = icmp sge i32 %.2614.us, %.2610.us
  %326 = icmp sle i32 %.2614.us, %.2610.us
  %.in701761.us = select i1 %324, i1 %325, i1 %326
  br i1 %.in701761.us, label %.lr.ph763.us, label %._crit_edge.us

._crit_edge.us:                                   ; preds = %328, %322
  %indvars.iv.next874 = add nsw i64 %indvars.iv873, -1
  %327 = icmp sgt i64 %indvars.iv873, 2
  br i1 %327, label %96, label %._crit_edge772.us, !llvm.loop !16

328:                                              ; preds = %.lr.ph763.us, %328
  %indvars.iv870 = phi i64 [ %376, %.lr.ph763.us ], [ %indvars.iv.next871, %328 ]
  %329 = getelementptr inbounds double, ptr %42, i64 %indvars.iv870
  %330 = load double, ptr %329, align 8, !tbaa !11
  %331 = add nsw i64 %indvars.iv870, %378
  %332 = mul nsw i64 %331, %91
  %gep760.us = getelementptr double, ptr %invariant.gep764, i64 %332
  %333 = load double, ptr %gep760.us, align 8, !tbaa !11
  %334 = fmul double %330, %333
  %335 = getelementptr inbounds double, ptr %42, i64 %331
  store double %334, ptr %335, align 8, !tbaa !11
  %336 = getelementptr inbounds double, ptr %37, i64 %indvars.iv870
  %337 = load double, ptr %336, align 8, !tbaa !11
  %338 = load double, ptr %gep760.us, align 8, !tbaa !11
  %339 = fmul double %337, %338
  store double %339, ptr %gep760.us, align 8, !tbaa !11
  %indvars.iv.next871 = add nsw i64 %indvars.iv870, %377
  %340 = icmp sge i64 %indvars.iv.next871, %379
  %341 = icmp sle i64 %indvars.iv.next871, %379
  %.in701.us = select i1 %324, i1 %340, i1 %341
  br i1 %.in701.us, label %328, label %._crit_edge.us, !llvm.loop !17

.lr.ph758.us:                                     ; preds = %310, %.lr.ph758.us
  %.1633757.us = phi i32 [ %351, %.lr.ph758.us ], [ %.2614.us, %310 ]
  %342 = add nsw i32 %.1633757.us, -1
  %343 = mul nsw i32 %342, %39
  %344 = sext i32 %343 to i64
  %gep753.us = getelementptr double, ptr %invariant.gep752, i64 %344
  %345 = mul nsw i32 %.1633757.us, %39
  %346 = sext i32 %345 to i64
  %gep755.us = getelementptr double, ptr %invariant.gep752, i64 %346
  %347 = sext i32 %.1633757.us to i64
  %348 = getelementptr inbounds double, ptr %37, i64 %347
  %349 = getelementptr inbounds double, ptr %42, i64 %347
  call void @drot_(ptr noundef nonnull %2, ptr noundef %gep753.us, ptr noundef nonnull @c__1, ptr noundef %gep755.us, ptr noundef nonnull @c__1, ptr noundef nonnull %348, ptr noundef nonnull %349) #5
  %350 = load i32, ptr %22, align 4, !tbaa !5
  %351 = add nsw i32 %350, %.1633757.us
  %352 = icmp slt i32 %350, 0
  %353 = load i32, ptr %23, align 4
  %354 = icmp sge i32 %351, %353
  %355 = icmp sle i32 %351, %353
  %.in697.us = select i1 %352, i1 %354, i1 %355
  br i1 %.in697.us, label %.lr.ph758.us, label %.loopexit727.us, !llvm.loop !18

.lr.ph740.us:                                     ; preds = %117, %.lr.ph740.us
  %.0645739.us = phi i32 [ %365, %.lr.ph740.us ], [ %97, %117 ]
  %356 = add nsw i32 %.0645739.us, -1
  %357 = mul nsw i32 %356, %34
  %358 = sext i32 %357 to i64
  %gep.us = getelementptr double, ptr %invariant.gep, i64 %358
  %359 = mul nsw i32 %.0645739.us, %34
  %360 = sext i32 %359 to i64
  %gep737.us = getelementptr double, ptr %invariant.gep764, i64 %360
  %361 = sext i32 %.0645739.us to i64
  %362 = getelementptr inbounds double, ptr %37, i64 %361
  %363 = getelementptr inbounds double, ptr %42, i64 %361
  call void @drot_(ptr noundef nonnull %33, ptr noundef %gep.us, ptr noundef nonnull @c__1, ptr noundef %gep737.us, ptr noundef nonnull @c__1, ptr noundef nonnull %362, ptr noundef nonnull %363) #5
  %364 = load i32, ptr %23, align 4, !tbaa !5
  %365 = add nsw i32 %364, %.0645739.us
  %366 = icmp slt i32 %364, 0
  %367 = load i32, ptr %22, align 4
  %368 = icmp sge i32 %365, %367
  %369 = icmp sle i32 %365, %367
  %.in688.us = select i1 %366, i1 %368, i1 %369
  br i1 %.in688.us, label %.lr.ph740.us, label %.loopexit731.us, !llvm.loop !19

.lr.ph.us:                                        ; preds = %112
  %370 = mul nsw i32 %97, %34
  %371 = sext i32 %370 to i64
  %invariant.gep941 = getelementptr double, ptr %36, i64 %104
  %invariant.gep943 = getelementptr double, ptr %36, i64 %371
  br label %114

.lr.ph743.us:                                     ; preds = %195
  %372 = sext i32 %.2614.us to i64
  %373 = getelementptr inbounds double, ptr %37, i64 %372
  %374 = getelementptr inbounds double, ptr %42, i64 %372
  br label %197

.lr.ph763.us:                                     ; preds = %322
  %375 = load i32, ptr %3, align 4, !tbaa !5
  %376 = sext i32 %.2614.us to i64
  %377 = sext i32 %323 to i64
  %378 = sext i32 %375 to i64
  %379 = sext i32 %.2610.us to i64
  br label %328

._crit_edge772.us:                                ; preds = %._crit_edge.us
  %indvars.iv.next877 = add nuw nsw i64 %indvars.iv876, 1
  %.not683.us.not = icmp slt i64 %indvars.iv876, %93
  %380 = trunc i64 %indvars.iv876 to i32
  %381 = xor i32 %380, -1
  br i1 %.not683.us.not, label %.lr.ph771.us, label %.loopexit733.loopexit, !llvm.loop !20

.loopexit733.loopexit:                            ; preds = %._crit_edge772.us
  %.pre921 = load i32, ptr %3, align 4, !tbaa !5
  br label %.loopexit733

.loopexit733:                                     ; preds = %.loopexit733.loopexit, %86
  %382 = phi i32 [ %323, %.loopexit733.loopexit ], [ %51, %86 ]
  %383 = phi i32 [ %316, %.loopexit733.loopexit ], [ %81, %86 ]
  %384 = phi i32 [ %.pre921, %.loopexit733.loopexit ], [ %80, %86 ]
  %385 = icmp sgt i32 %384, 0
  br i1 %385, label %.loopexit733.thread, label %419

.loopexit733.thread:                              ; preds = %87, %.loopexit733
  %386 = phi i32 [ %384, %.loopexit733 ], [ %80, %87 ]
  %387 = phi i32 [ %383, %.loopexit733 ], [ %81, %87 ]
  %388 = phi i32 [ %382, %.loopexit733 ], [ %51, %87 ]
  %.not685.not785 = icmp sgt i32 %387, 1
  br i1 %.not685.not785, label %.lr.ph787.preheader, label %.loopexit725

.lr.ph787.preheader:                              ; preds = %.loopexit733.thread
  %389 = sext i32 %34 to i64
  %390 = zext nneg i32 %386 to i64
  %wide.trip.count = zext nneg i32 %387 to i64
  %invariant.gep945 = getelementptr double, ptr %36, i64 %390
  %391 = add nsw i64 %wide.trip.count, -1
  %min.iters.check = icmp ugt i32 %387, 14
  %ident.check.not = icmp eq i32 %34, 1
  %or.cond1025 = select i1 %min.iters.check, i1 %ident.check.not, i1 false
  br i1 %or.cond1025, label %vector.memcheck, label %.lr.ph787.preheader1037

vector.memcheck:                                  ; preds = %.lr.ph787.preheader
  %392 = shl nuw nsw i64 %390, 3
  %393 = add i64 %392, %19
  %394 = sub i64 %20, %393
  %diff.check = icmp ult i64 %394, 32
  br i1 %diff.check, label %.lr.ph787.preheader1037, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %391, -4
  %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 ]
  %395 = or disjoint i64 %index, 2
  %396 = getelementptr double, ptr %invariant.gep945, i64 %395
  %397 = getelementptr i8, ptr %396, i64 16
  %wide.load = load <2 x double>, ptr %396, align 8, !tbaa !11
  %wide.load967 = load <2 x double>, ptr %397, align 8, !tbaa !11
  %398 = getelementptr double, ptr %7, i64 %index
  %399 = getelementptr inbounds i8, ptr %398, i64 16
  store <2 x double> %wide.load, ptr %398, align 8, !tbaa !11
  store <2 x double> %wide.load967, ptr %399, align 8, !tbaa !11
  %index.next = add nuw i64 %index, 4
  %400 = icmp eq i64 %index.next, %n.vec
  br i1 %400, label %middle.block, label %vector.body, !llvm.loop !21

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %391, %n.vec
  br i1 %cmp.n, label %.loopexit725, label %.lr.ph787.preheader1037

.lr.ph787.preheader1037:                          ; preds = %middle.block, %vector.memcheck, %.lr.ph787.preheader
  %indvars.iv883.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph787.preheader ], [ %ind.end, %middle.block ]
  %401 = sub nsw i64 %wide.trip.count, %indvars.iv883.ph
  %xtraiter = and i64 %401, 3
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph787.prol.loopexit, label %.lr.ph787.prol

.lr.ph787.prol:                                   ; preds = %.lr.ph787.preheader1037, %.lr.ph787.prol
  %indvars.iv883.prol = phi i64 [ %indvars.iv.next884.prol, %.lr.ph787.prol ], [ %indvars.iv883.ph, %.lr.ph787.preheader1037 ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph787.prol ], [ 0, %.lr.ph787.preheader1037 ]
  %indvars.iv.next884.prol = add nuw nsw i64 %indvars.iv883.prol, 1
  %402 = mul nsw i64 %indvars.iv.next884.prol, %389
  %gep946.prol = getelementptr double, ptr %invariant.gep945, i64 %402
  %403 = load double, ptr %gep946.prol, align 8, !tbaa !11
  %404 = getelementptr inbounds double, ptr %38, i64 %indvars.iv883.prol
  store double %403, ptr %404, align 8, !tbaa !11
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %.lr.ph787.prol.loopexit, label %.lr.ph787.prol, !llvm.loop !24

.lr.ph787.prol.loopexit:                          ; preds = %.lr.ph787.prol, %.lr.ph787.preheader1037
  %indvars.iv883.unr = phi i64 [ %indvars.iv883.ph, %.lr.ph787.preheader1037 ], [ %indvars.iv.next884.prol, %.lr.ph787.prol ]
  %405 = sub nsw i64 %indvars.iv883.ph, %wide.trip.count
  %406 = icmp ugt i64 %405, -4
  br i1 %406, label %.loopexit725, label %.lr.ph787

.lr.ph787:                                        ; preds = %.lr.ph787.prol.loopexit, %.lr.ph787
  %indvars.iv883 = phi i64 [ %indvars.iv.next884.3, %.lr.ph787 ], [ %indvars.iv883.unr, %.lr.ph787.prol.loopexit ]
  %indvars.iv.next884 = add nuw nsw i64 %indvars.iv883, 1
  %407 = mul nsw i64 %indvars.iv.next884, %389
  %gep946 = getelementptr double, ptr %invariant.gep945, i64 %407
  %408 = load double, ptr %gep946, align 8, !tbaa !11
  %409 = getelementptr inbounds double, ptr %38, i64 %indvars.iv883
  store double %408, ptr %409, align 8, !tbaa !11
  %indvars.iv.next884.1 = add nuw nsw i64 %indvars.iv883, 2
  %410 = mul nsw i64 %indvars.iv.next884.1, %389
  %gep946.1 = getelementptr double, ptr %invariant.gep945, i64 %410
  %411 = load double, ptr %gep946.1, align 8, !tbaa !11
  %412 = getelementptr double, ptr %7, i64 %indvars.iv883
  store double %411, ptr %412, align 8, !tbaa !11
  %indvars.iv.next884.2 = add nuw nsw i64 %indvars.iv883, 3
  %413 = mul nsw i64 %indvars.iv.next884.2, %389
  %gep946.2 = getelementptr double, ptr %invariant.gep945, i64 %413
  %414 = load double, ptr %gep946.2, align 8, !tbaa !11
  %415 = getelementptr inbounds double, ptr %38, i64 %indvars.iv.next884.1
  store double %414, ptr %415, align 8, !tbaa !11
  %indvars.iv.next884.3 = add nuw nsw i64 %indvars.iv883, 4
  %416 = mul nsw i64 %indvars.iv.next884.3, %389
  %gep946.3 = getelementptr double, ptr %invariant.gep945, i64 %416
  %417 = load double, ptr %gep946.3, align 8, !tbaa !11
  %418 = getelementptr inbounds double, ptr %38, i64 %indvars.iv.next884.2
  store double %417, ptr %418, align 8, !tbaa !11
  %exitcond.not.3 = icmp eq i64 %indvars.iv.next884.3, %wide.trip.count
  br i1 %exitcond.not.3, label %.loopexit725, label %.lr.ph787, !llvm.loop !26

419:                                              ; preds = %.loopexit733
  %.not684.not783 = icmp sgt i32 %383, 1
  br i1 %.not684.not783, label %.loopexit725.thread, label %.loopexit725

.loopexit725.thread:                              ; preds = %419
  %420 = add nsw i32 %383, -1
  %421 = zext nneg i32 %420 to i64
  %422 = shl nuw nsw i64 %421, 3
  call void @llvm.memset.p0.i64(ptr align 8 %7, i8 0, i64 %422, i1 false), !tbaa !11
  br label %.lr.ph790

.loopexit725:                                     ; preds = %.lr.ph787.prol.loopexit, %.lr.ph787, %middle.block, %419, %.loopexit733.thread
  %423 = phi i32 [ %383, %419 ], [ %387, %.loopexit733.thread ], [ %387, %middle.block ], [ %387, %.lr.ph787 ], [ %387, %.lr.ph787.prol.loopexit ]
  %424 = phi i32 [ %382, %419 ], [ %388, %.loopexit733.thread ], [ %388, %middle.block ], [ %388, %.lr.ph787 ], [ %388, %.lr.ph787.prol.loopexit ]
  %.not686788 = icmp slt i32 %423, 1
  br i1 %.not686788, label %.loopexit, label %.lr.ph790

.lr.ph790:                                        ; preds = %.loopexit725.thread, %.loopexit725
  %425 = phi i32 [ %382, %.loopexit725.thread ], [ %424, %.loopexit725 ]
  %426 = phi i32 [ %383, %.loopexit725.thread ], [ %423, %.loopexit725 ]
  %427 = sext i32 %34 to i64
  %428 = sext i32 %425 to i64
  %429 = add nuw i32 %426, 1
  %wide.trip.count889 = zext i32 %429 to i64
  %invariant.gep947 = getelementptr double, ptr %36, i64 %428
  %430 = zext nneg i32 %426 to i64
  %min.iters.check974 = icmp ugt i32 %426, 15
  %ident.check969.not = icmp eq i32 %34, 1
  %or.cond1026 = select i1 %min.iters.check974, i1 %ident.check969.not, i1 false
  br i1 %or.cond1026, label %vector.memcheck970, label %scalar.ph973.preheader

vector.memcheck970:                               ; preds = %.lr.ph790
  %431 = add i64 %18, 8
  %432 = shl nsw i64 %428, 3
  %433 = add i64 %432, %17
  %434 = sub i64 %431, %433
  %diff.check971 = icmp ult i64 %434, 32
  br i1 %diff.check971, label %scalar.ph973.preheader, label %vector.ph975

vector.ph975:                                     ; preds = %vector.memcheck970
  %n.vec977 = and i64 %430, 2147483644
  %ind.end978 = or disjoint i64 %n.vec977, 1
  br label %vector.body980

vector.body980:                                   ; preds = %vector.body980, %vector.ph975
  %index981 = phi i64 [ 0, %vector.ph975 ], [ %index.next985, %vector.body980 ]
  %offset.idx982 = or disjoint i64 %index981, 1
  %435 = getelementptr double, ptr %invariant.gep947, i64 %offset.idx982
  %436 = getelementptr i8, ptr %435, i64 16
  %wide.load983 = load <2 x double>, ptr %435, align 8, !tbaa !11
  %wide.load984 = load <2 x double>, ptr %436, align 8, !tbaa !11
  %437 = getelementptr double, ptr %6, i64 %index981
  %438 = getelementptr inbounds i8, ptr %437, i64 16
  store <2 x double> %wide.load983, ptr %437, align 8, !tbaa !11
  store <2 x double> %wide.load984, ptr %438, align 8, !tbaa !11
  %index.next985 = add nuw i64 %index981, 4
  %439 = icmp eq i64 %index.next985, %n.vec977
  br i1 %439, label %middle.block972, label %vector.body980, !llvm.loop !27

middle.block972:                                  ; preds = %vector.body980
  %cmp.n986 = icmp eq i64 %n.vec977, %430
  br i1 %cmp.n986, label %.loopexit, label %scalar.ph973.preheader

scalar.ph973.preheader:                           ; preds = %middle.block972, %vector.memcheck970, %.lr.ph790
  %indvars.iv886.ph = phi i64 [ 1, %vector.memcheck970 ], [ 1, %.lr.ph790 ], [ %ind.end978, %middle.block972 ]
  %440 = sub nsw i64 %wide.trip.count889, %indvars.iv886.ph
  %441 = zext nneg i32 %426 to i64
  %442 = sub nsw i64 %441, %indvars.iv886.ph
  %xtraiter1042 = and i64 %440, 3
  %lcmp.mod1043.not = icmp eq i64 %xtraiter1042, 0
  br i1 %lcmp.mod1043.not, label %scalar.ph973.prol.loopexit, label %scalar.ph973.prol

scalar.ph973.prol:                                ; preds = %scalar.ph973.preheader, %scalar.ph973.prol
  %indvars.iv886.prol = phi i64 [ %indvars.iv.next887.prol, %scalar.ph973.prol ], [ %indvars.iv886.ph, %scalar.ph973.preheader ]
  %prol.iter1044 = phi i64 [ %prol.iter1044.next, %scalar.ph973.prol ], [ 0, %scalar.ph973.preheader ]
  %443 = mul nsw i64 %indvars.iv886.prol, %427
  %gep948.prol = getelementptr double, ptr %invariant.gep947, i64 %443
  %444 = load double, ptr %gep948.prol, align 8, !tbaa !11
  %445 = getelementptr inbounds double, ptr %37, i64 %indvars.iv886.prol
  store double %444, ptr %445, align 8, !tbaa !11
  %indvars.iv.next887.prol = add nuw nsw i64 %indvars.iv886.prol, 1
  %prol.iter1044.next = add i64 %prol.iter1044, 1
  %prol.iter1044.cmp.not = icmp eq i64 %prol.iter1044.next, %xtraiter1042
  br i1 %prol.iter1044.cmp.not, label %scalar.ph973.prol.loopexit, label %scalar.ph973.prol, !llvm.loop !28

scalar.ph973.prol.loopexit:                       ; preds = %scalar.ph973.prol, %scalar.ph973.preheader
  %indvars.iv886.unr = phi i64 [ %indvars.iv886.ph, %scalar.ph973.preheader ], [ %indvars.iv.next887.prol, %scalar.ph973.prol ]
  %446 = icmp ult i64 %442, 3
  br i1 %446, label %.loopexit, label %scalar.ph973

scalar.ph973:                                     ; preds = %scalar.ph973.prol.loopexit, %scalar.ph973
  %indvars.iv886 = phi i64 [ %indvars.iv.next887.3, %scalar.ph973 ], [ %indvars.iv886.unr, %scalar.ph973.prol.loopexit ]
  %447 = mul nsw i64 %indvars.iv886, %427
  %gep948 = getelementptr double, ptr %invariant.gep947, i64 %447
  %448 = load double, ptr %gep948, align 8, !tbaa !11
  %449 = getelementptr inbounds double, ptr %37, i64 %indvars.iv886
  store double %448, ptr %449, align 8, !tbaa !11
  %indvars.iv.next887 = add nuw nsw i64 %indvars.iv886, 1
  %450 = mul nsw i64 %indvars.iv.next887, %427
  %gep948.1 = getelementptr double, ptr %invariant.gep947, i64 %450
  %451 = load double, ptr %gep948.1, align 8, !tbaa !11
  %452 = getelementptr double, ptr %6, i64 %indvars.iv886
  store double %451, ptr %452, align 8, !tbaa !11
  %indvars.iv.next887.1 = add nuw nsw i64 %indvars.iv886, 2
  %453 = mul nsw i64 %indvars.iv.next887.1, %427
  %gep948.2 = getelementptr double, ptr %invariant.gep947, i64 %453
  %454 = load double, ptr %gep948.2, align 8, !tbaa !11
  %455 = getelementptr inbounds double, ptr %37, i64 %indvars.iv.next887.1
  store double %454, ptr %455, align 8, !tbaa !11
  %indvars.iv.next887.2 = add nuw nsw i64 %indvars.iv886, 3
  %456 = mul nsw i64 %indvars.iv.next887.2, %427
  %gep948.3 = getelementptr double, ptr %invariant.gep947, i64 %456
  %457 = load double, ptr %gep948.3, align 8, !tbaa !11
  %458 = getelementptr inbounds double, ptr %37, i64 %indvars.iv.next887.2
  store double %457, ptr %458, align 8, !tbaa !11
  %indvars.iv.next887.3 = add nuw nsw i64 %indvars.iv886, 4
  %exitcond890.not.3 = icmp eq i64 %indvars.iv.next887.3, %wide.trip.count889
  br i1 %exitcond890.not.3, label %.loopexit, label %scalar.ph973, !llvm.loop !29

459:                                              ; preds = %79
  br i1 %85, label %460, label %.loopexit723

460:                                              ; preds = %459
  store i32 0, ptr %30, align 4, !tbaa !5
  %.not664837 = icmp slt i32 %81, 3
  br i1 %.not664837, label %.loopexit723.thread, label %.lr.ph833.us.preheader

.lr.ph833.us.preheader:                           ; preds = %460
  %461 = add nsw i32 %81, -2
  %invariant.gep821 = getelementptr i8, ptr %36, i64 8
  %invariant.gep823 = getelementptr i8, ptr %36, i64 24
  %invariant.gep825 = getelementptr i8, ptr %36, i64 16
  %invariant.gep811 = getelementptr i8, ptr %41, i64 8
  %462 = add i32 %., 1
  %463 = add nsw i32 %., 2
  %464 = sext i32 %34 to i64
  %465 = sext i32 %462 to i64
  %466 = sext i32 %461 to i64
  br label %.lr.ph833.us

.lr.ph833.us:                                     ; preds = %.lr.ph833.us.preheader, %._crit_edge834.us
  %467 = phi i32 [ %51, %.lr.ph833.us.preheader ], [ %674, %._crit_edge834.us ]
  %indvars.iv900 = phi i64 [ 1, %.lr.ph833.us.preheader ], [ %indvars.iv.next901, %._crit_edge834.us ]
  %.4642.neg842.us = phi i32 [ -1, %.lr.ph833.us.preheader ], [ %739, %._crit_edge834.us ]
  %.3611841.us = phi i32 [ 1, %.lr.ph833.us.preheader ], [ %.5.us, %._crit_edge834.us ]
  %.3615840.us = phi i32 [ %463, %.lr.ph833.us.preheader ], [ %.5617.us, %._crit_edge834.us ]
  %.3623839.us = phi i32 [ 1, %.lr.ph833.us.preheader ], [ %.5625.us, %._crit_edge834.us ]
  %468 = add nsw i32 %.4642.neg842.us, 1
  %469 = mul nsw i64 %indvars.iv900, %464
  %indvars.iv.next901 = add nuw nsw i64 %indvars.iv900, 1
  %470 = mul nsw i64 %indvars.iv.next901, %464
  %471 = add i64 %470, 4294967294
  %invariant.gep953 = getelementptr double, ptr %36, i64 %469
  %invariant.gep955 = getelementptr double, ptr %36, i64 %469
  %472 = add nuw i64 %indvars.iv900, 4294967295
  %invariant.gep957 = getelementptr double, ptr %36, i64 %470
  %473 = trunc nuw nsw i64 %indvars.iv900 to i32
  br label %474

474:                                              ; preds = %.lr.ph833.us, %._crit_edge.us846
  %475 = phi i32 [ %467, %.lr.ph833.us ], [ %674, %._crit_edge.us846 ]
  %indvars.iv897 = phi i64 [ %465, %.lr.ph833.us ], [ %indvars.iv.next898, %._crit_edge.us846 ]
  %.4831.us = phi i32 [ %.3611841.us, %.lr.ph833.us ], [ %.5.us, %._crit_edge.us846 ]
  %.4616830.us = phi i32 [ %.3615840.us, %.lr.ph833.us ], [ %.5617.us, %._crit_edge.us846 ]
  %.4624829.us = phi i32 [ %.3623839.us, %.lr.ph833.us ], [ %.5625.us, %._crit_edge.us846 ]
  %476 = add nsw i32 %.4616830.us, %.
  %477 = add nsw i32 %.4831.us, %.
  %478 = load i32, ptr %30, align 4, !tbaa !5
  %479 = icmp sgt i32 %478, 0
  br i1 %479, label %480, label %.loopexit721.us

480:                                              ; preds = %474
  %481 = sub nsw i32 %476, %475
  %482 = mul nsw i32 %481, %34
  %483 = add nsw i32 %482, %475
  %484 = sext i32 %483 to i64
  %485 = getelementptr inbounds double, ptr %36, i64 %484
  %486 = sext i32 %476 to i64
  %487 = getelementptr inbounds double, ptr %42, i64 %486
  %488 = getelementptr inbounds double, ptr %37, i64 %486
  call void @dlargv_(ptr noundef nonnull %30, ptr noundef %485, ptr noundef nonnull %25, ptr noundef nonnull %487, ptr noundef nonnull %31, ptr noundef nonnull %488, ptr noundef nonnull %31) #5
  %489 = load i32, ptr %30, align 4, !tbaa !5
  %490 = load i32, ptr %3, align 4, !tbaa !5
  %491 = shl i32 %490, 1
  %.not668.us = icmp slt i32 %489, %491
  br i1 %.not668.us, label %507, label %492

492:                                              ; preds = %480
  %493 = add nsw i32 %490, -1
  store i32 %493, ptr %23, align 4, !tbaa !5
  %.not669791.us = icmp slt i32 %490, 2
  br i1 %.not669791.us, label %.loopexit721.us, label %.lr.ph793.us

.lr.ph793.us:                                     ; preds = %492, %.lr.ph793.us
  %.2628792.us = phi i32 [ %505, %.lr.ph793.us ], [ 1, %492 ]
  %494 = load i32, ptr %31, align 4, !tbaa !5
  %495 = sub nsw i32 %494, %.2628792.us
  %496 = add i32 %.2628792.us, %476
  %497 = sub i32 %496, %494
  %498 = mul nsw i32 %497, %34
  %499 = add i32 %498, %495
  %500 = sext i32 %499 to i64
  %501 = getelementptr inbounds double, ptr %36, i64 %500
  %502 = add i32 %499, 1
  %503 = sext i32 %502 to i64
  %504 = getelementptr inbounds double, ptr %36, i64 %503
  call void @dlartv_(ptr noundef nonnull %30, ptr noundef %501, ptr noundef nonnull %25, ptr noundef %504, ptr noundef nonnull %25, ptr noundef nonnull %488, ptr noundef nonnull %487, ptr noundef nonnull %31) #5
  %505 = add nuw nsw i32 %.2628792.us, 1
  %506 = load i32, ptr %23, align 4, !tbaa !5
  %.not669.us.not = icmp slt i32 %.2628792.us, %506
  br i1 %.not669.us.not, label %.lr.ph793.us, label %.loopexit721.us, !llvm.loop !30

507:                                              ; preds = %480
  %508 = load i32, ptr %31, align 4, !tbaa !5
  %509 = add nsw i32 %489, -1
  %510 = mul nsw i32 %508, %509
  %511 = add nsw i32 %510, %476
  store i32 %511, ptr %23, align 4, !tbaa !5
  store i32 %508, ptr %22, align 4, !tbaa !5
  %512 = icmp slt i32 %508, 0
  %513 = icmp slt i32 %510, 1
  %514 = icmp sgt i32 %510, -1
  %.in794.us = select i1 %512, i1 %513, i1 %514
  br i1 %.in794.us, label %.lr.ph796.us, label %.loopexit721.us

.loopexit721.us:                                  ; preds = %.lr.ph793.us, %.lr.ph796.us, %492, %507, %474
  %515 = icmp eq i64 %indvars.iv897, 2
  br i1 %515, label %thread-pre-split710.us, label %516

516:                                              ; preds = %.loopexit721.us
  %517 = load i32, ptr %2, align 4, !tbaa !5
  %518 = add i32 %468, %517
  %519 = sext i32 %518 to i64
  %.not671.us = icmp sgt i64 %indvars.iv897, %519
  br i1 %.not671.us, label %534, label %520

520:                                              ; preds = %516
  %521 = add nsw i64 %indvars.iv897, -1
  %gep954 = getelementptr double, ptr %invariant.gep953, i64 %521
  %gep956 = getelementptr double, ptr %invariant.gep955, i64 %indvars.iv897
  %522 = add i64 %472, %indvars.iv897
  %sext = shl i64 %522, 32
  %523 = ashr exact i64 %sext, 32
  %524 = getelementptr inbounds double, ptr %37, i64 %523
  %525 = getelementptr inbounds double, ptr %42, i64 %523
  call void @dlartg_(ptr noundef %gep954, ptr noundef %gep956, ptr noundef nonnull %524, ptr noundef nonnull %525, ptr noundef nonnull %28) #5
  %526 = load double, ptr %28, align 8, !tbaa !11
  store double %526, ptr %gep954, align 8, !tbaa !11
  %527 = trunc i64 %indvars.iv897 to i32
  %528 = add i32 %527, -3
  store i32 %528, ptr %22, align 4, !tbaa !5
  %529 = load i32, ptr %5, align 4, !tbaa !5
  %530 = add nsw i32 %529, -1
  store i32 %530, ptr %23, align 4, !tbaa !5
  store i32 %530, ptr %24, align 4, !tbaa !5
  %531 = add i64 %471, %indvars.iv897
  %sext926 = shl i64 %531, 32
  %532 = ashr exact i64 %sext926, 29
  %533 = getelementptr inbounds i8, ptr %36, i64 %532
  %gep958 = getelementptr double, ptr %invariant.gep957, i64 %521
  call void @drot_(ptr noundef nonnull %22, ptr noundef %533, ptr noundef nonnull %23, ptr noundef %gep958, ptr noundef nonnull %24, ptr noundef nonnull %524, ptr noundef nonnull %525) #5
  br label %534

534:                                              ; preds = %520, %516
  %535 = load i32, ptr %30, align 4, !tbaa !5
  %536 = add nsw i32 %535, 1
  store i32 %536, ptr %30, align 4, !tbaa !5
  %537 = add nsw i32 %.4616830.us, -1
  br label %538

thread-pre-split710.us:                           ; preds = %.loopexit721.us
  %.pr711.us = load i32, ptr %30, align 4, !tbaa !5
  br label %538

538:                                              ; preds = %thread-pre-split710.us, %534
  %539 = phi i32 [ %.pr711.us, %thread-pre-split710.us ], [ %536, %534 ]
  %.5617.us = phi i32 [ %476, %thread-pre-split710.us ], [ %537, %534 ]
  %540 = icmp sgt i32 %539, 0
  br i1 %540, label %541, label %.loopexit720.us

541:                                              ; preds = %538
  %542 = add nsw i32 %.5617.us, -1
  %543 = mul nsw i32 %542, %34
  %544 = sext i32 %543 to i64
  %545 = getelementptr double, ptr %36, i64 %544
  %546 = getelementptr i8, ptr %545, i64 8
  %547 = mul nsw i32 %.5617.us, %34
  %548 = sext i32 %547 to i64
  %gep822.us = getelementptr double, ptr %invariant.gep821, i64 %548
  %549 = getelementptr i8, ptr %545, i64 16
  %550 = sext i32 %.5617.us to i64
  %551 = getelementptr inbounds double, ptr %37, i64 %550
  %552 = getelementptr inbounds double, ptr %42, i64 %550
  call void @dlar2v_(ptr noundef nonnull %30, ptr noundef %546, ptr noundef %gep822.us, ptr noundef %549, ptr noundef nonnull %25, ptr noundef nonnull %551, ptr noundef nonnull %552, ptr noundef nonnull %31) #5
  %.pre922 = load i32, ptr %30, align 4, !tbaa !5
  %553 = icmp sgt i32 %.pre922, 0
  br i1 %553, label %554, label %.loopexit720.us

554:                                              ; preds = %541
  %555 = load i32, ptr %3, align 4, !tbaa !5
  %556 = shl i32 %555, 1
  %.not672.us = icmp slt i32 %.pre922, %556
  br i1 %.not672.us, label %579, label %557

557:                                              ; preds = %554
  %558 = add nsw i32 %555, -1
  store i32 %558, ptr %22, align 4, !tbaa !5
  %.not676797.us = icmp slt i32 %555, 2
  br i1 %.not676797.us, label %.loopexit720.us, label %.lr.ph799.us

559:                                              ; preds = %.lr.ph799.us, %576
  %560 = phi i32 [ %558, %.lr.ph799.us ], [ %577, %576 ]
  %indvars.iv891 = phi i64 [ 1, %.lr.ph799.us ], [ %indvars.iv.next892, %576 ]
  %561 = add nsw i64 %indvars.iv891, %732
  %562 = load i32, ptr %2, align 4, !tbaa !5
  %563 = sext i32 %562 to i64
  %564 = icmp sgt i64 %561, %563
  %565 = load i32, ptr %30, align 4
  %566 = sext i1 %564 to i32
  %storemerge.us = add nsw i32 %565, %566
  store i32 %storemerge.us, ptr %32, align 4, !tbaa !5
  %567 = icmp sgt i32 %storemerge.us, 0
  br i1 %567, label %568, label %576

568:                                              ; preds = %559
  %569 = trunc nuw nsw i64 %indvars.iv891 to i32
  %570 = add i32 %726, %569
  %571 = sext i32 %570 to i64
  %572 = getelementptr inbounds double, ptr %36, i64 %571
  %573 = add i32 %728, %569
  %574 = sext i32 %573 to i64
  %575 = getelementptr inbounds double, ptr %36, i64 %574
  call void @dlartv_(ptr noundef nonnull %32, ptr noundef %572, ptr noundef nonnull %25, ptr noundef %575, ptr noundef nonnull %25, ptr noundef nonnull %730, ptr noundef nonnull %731, ptr noundef nonnull %31) #5
  %.pre923 = load i32, ptr %22, align 4, !tbaa !5
  br label %576

576:                                              ; preds = %568, %559
  %577 = phi i32 [ %.pre923, %568 ], [ %560, %559 ]
  %indvars.iv.next892 = add nuw nsw i64 %indvars.iv891, 1
  %578 = sext i32 %577 to i64
  %.not676.us.not = icmp slt i64 %indvars.iv891, %578
  br i1 %.not676.us.not, label %559, label %.loopexit720.us, !llvm.loop !31

579:                                              ; preds = %554
  %580 = load i32, ptr %31, align 4, !tbaa !5
  %581 = add nsw i32 %.pre922, -2
  %582 = mul nsw i32 %580, %581
  %583 = add nsw i32 %582, %.5617.us
  %.not673.us = icmp slt i32 %582, 0
  br i1 %.not673.us, label %.loopexit719.us, label %584

584:                                              ; preds = %579
  store i32 %583, ptr %22, align 4, !tbaa !5
  store i32 %580, ptr %23, align 4, !tbaa !5
  %585 = icmp sgt i32 %580, -1
  %586 = icmp eq i32 %582, 0
  %.in674803.us = or i1 %585, %586
  br i1 %.in674803.us, label %.lr.ph805.us, label %.loopexit719.us

.lr.ph805.us:                                     ; preds = %584, %.lr.ph805.us
  %.0644804.us = phi i32 [ %596, %.lr.ph805.us ], [ %.5617.us, %584 ]
  %587 = add nsw i32 %.0644804.us, -1
  %588 = mul nsw i32 %587, %34
  %589 = sext i32 %588 to i64
  %gep.us845 = getelementptr double, ptr %invariant.gep823, i64 %589
  %590 = mul nsw i32 %.0644804.us, %34
  %591 = sext i32 %590 to i64
  %gep802.us = getelementptr double, ptr %invariant.gep825, i64 %591
  %592 = sext i32 %.0644804.us to i64
  %593 = getelementptr inbounds double, ptr %37, i64 %592
  %594 = getelementptr inbounds double, ptr %42, i64 %592
  call void @drot_(ptr noundef nonnull %33, ptr noundef %gep.us845, ptr noundef nonnull @c__1, ptr noundef %gep802.us, ptr noundef nonnull @c__1, ptr noundef nonnull %593, ptr noundef nonnull %594) #5
  %595 = load i32, ptr %23, align 4, !tbaa !5
  %596 = add nsw i32 %595, %.0644804.us
  %597 = icmp slt i32 %595, 0
  %598 = load i32, ptr %22, align 4
  %599 = icmp sge i32 %596, %598
  %600 = icmp sle i32 %596, %598
  %.in674.us = select i1 %597, i1 %599, i1 %600
  br i1 %.in674.us, label %.lr.ph805.us, label %.loopexit719.us, !llvm.loop !32

.loopexit719.us:                                  ; preds = %.lr.ph805.us, %584, %579
  %601 = load i32, ptr %33, align 4, !tbaa !5
  store i32 %601, ptr %23, align 4, !tbaa !5
  %602 = load i32, ptr %2, align 4, !tbaa !5
  %603 = sub nsw i32 %602, %477
  store i32 %603, ptr %22, align 4, !tbaa !5
  %604 = call i32 @llvm.smin.i32(i32 %601, i32 %603)
  store i32 %604, ptr %26, align 4, !tbaa !5
  %605 = icmp sgt i32 %604, 0
  br i1 %605, label %606, label %.loopexit720.us

606:                                              ; preds = %.loopexit719.us
  %607 = load i32, ptr %31, align 4, !tbaa !5
  %608 = add nsw i32 %607, %583
  %609 = add nsw i32 %608, -1
  %610 = mul nsw i32 %609, %34
  %611 = sext i32 %610 to i64
  %gep824.us = getelementptr double, ptr %invariant.gep823, i64 %611
  %612 = mul nsw i32 %608, %34
  %613 = sext i32 %612 to i64
  %gep826.us = getelementptr double, ptr %invariant.gep825, i64 %613
  %614 = sext i32 %608 to i64
  %615 = getelementptr inbounds double, ptr %37, i64 %614
  %616 = getelementptr inbounds double, ptr %42, i64 %614
  call void @drot_(ptr noundef nonnull %26, ptr noundef %gep824.us, ptr noundef nonnull @c__1, ptr noundef %gep826.us, ptr noundef nonnull @c__1, ptr noundef nonnull %615, ptr noundef nonnull %616) #5
  br label %.loopexit720.us

.loopexit720.us:                                  ; preds = %576, %538, %557, %606, %.loopexit719.us, %541
  br i1 %48, label %617, label %.loopexit717.us

617:                                              ; preds = %.loopexit720.us
  br i1 %.not, label %661, label %618

618:                                              ; preds = %617
  %619 = call i32 @llvm.smax.i32(i32 %.4624829.us, i32 %477)
  %620 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %477, ptr %23, align 4, !tbaa !5
  %621 = load i32, ptr %31, align 4, !tbaa !5
  store i32 %621, ptr %22, align 4, !tbaa !5
  %622 = icmp slt i32 %621, 0
  %623 = icmp sge i32 %.5617.us, %477
  %624 = icmp sle i32 %.5617.us, %477
  %.in680806.us = select i1 %622, i1 %623, i1 %624
  br i1 %.in680806.us, label %.lr.ph810.us.preheader, label %.loopexit717.us

.lr.ph810.us.preheader:                           ; preds = %618
  %625 = trunc i64 %indvars.iv897 to i32
  %626 = add i32 %625, -3
  %627 = mul nsw i32 %620, %473
  %628 = add nsw i32 %627, 1
  %629 = select i1 %515, i32 %620, i32 0
  %spec.select706.us = add nsw i32 %628, %629
  %630 = call i32 @llvm.smin.i32(i32 %spec.select706.us, i32 %619)
  %631 = icmp slt i64 %indvars.iv897, 4
  %632 = select i1 %631, i32 0, i32 %626
  br label %.lr.ph810.us

.lr.ph810.us:                                     ; preds = %.lr.ph810.us.preheader, %.lr.ph810.us
  %.3809.us = phi i32 [ %642, %.lr.ph810.us ], [ %630, %.lr.ph810.us.preheader ]
  %.1619808.us = phi i32 [ %635, %.lr.ph810.us ], [ %632, %.lr.ph810.us.preheader ]
  %.3635807.us = phi i32 [ %656, %.lr.ph810.us ], [ %.5617.us, %.lr.ph810.us.preheader ]
  %633 = load i32, ptr %33, align 4, !tbaa !5
  %634 = sdiv i32 %.1619808.us, %633
  %635 = add nsw i32 %.1619808.us, 1
  %.neg.us = add i32 %.3635807.us, %.4642.neg842.us
  %636 = add i32 %.neg.us, %634
  %637 = call i32 @llvm.smax.i32(i32 %636, i32 1)
  %638 = add nsw i32 %.3809.us, 1
  %639 = sub i32 %638, %637
  store i32 %639, ptr %29, align 4, !tbaa !5
  %640 = load i32, ptr %3, align 4, !tbaa !5
  %641 = add nsw i32 %640, %.3809.us
  store i32 %641, ptr %24, align 4, !tbaa !5
  %642 = call i32 @llvm.smin.i32(i32 %641, i32 %619)
  %643 = add nsw i32 %.3635807.us, -1
  %644 = mul nsw i32 %643, %39
  %645 = add nsw i32 %637, %644
  %646 = sext i32 %645 to i64
  %647 = getelementptr inbounds double, ptr %41, i64 %646
  %648 = mul nsw i32 %.3635807.us, %39
  %649 = add nsw i32 %637, %648
  %650 = sext i32 %649 to i64
  %651 = getelementptr inbounds double, ptr %41, i64 %650
  %652 = sext i32 %.3635807.us to i64
  %653 = getelementptr inbounds double, ptr %37, i64 %652
  %654 = getelementptr inbounds double, ptr %42, i64 %652
  call void @drot_(ptr noundef nonnull %29, ptr noundef %647, ptr noundef nonnull @c__1, ptr noundef %651, ptr noundef nonnull @c__1, ptr noundef nonnull %653, ptr noundef nonnull %654) #5
  %655 = load i32, ptr %22, align 4, !tbaa !5
  %656 = add nsw i32 %655, %.3635807.us
  %657 = icmp slt i32 %655, 0
  %658 = load i32, ptr %23, align 4
  %659 = icmp sge i32 %656, %658
  %660 = icmp sle i32 %656, %658
  %.in680.us = select i1 %657, i1 %659, i1 %660
  br i1 %.in680.us, label %.lr.ph810.us, label %.loopexit717.us, !llvm.loop !33

661:                                              ; preds = %617
  store i32 %477, ptr %22, align 4, !tbaa !5
  %662 = load i32, ptr %31, align 4, !tbaa !5
  store i32 %662, ptr %23, align 4, !tbaa !5
  %663 = icmp slt i32 %662, 0
  %664 = icmp sge i32 %.5617.us, %477
  %665 = icmp sle i32 %.5617.us, %477
  %.in677815.us = select i1 %663, i1 %664, i1 %665
  br i1 %.in677815.us, label %.lr.ph817.us, label %.loopexit717.us

.loopexit717.us:                                  ; preds = %.lr.ph810.us, %.lr.ph817.us, %618, %661, %.loopexit720.us
  %.5625.us = phi i32 [ %.4624829.us, %.loopexit720.us ], [ %.4624829.us, %661 ], [ %619, %618 ], [ %.4624829.us, %.lr.ph817.us ], [ %619, %.lr.ph810.us ]
  %666 = add nsw i32 %477, %.
  %667 = load i32, ptr %2, align 4, !tbaa !5
  %668 = icmp sgt i32 %666, %667
  br i1 %668, label %669, label %673

669:                                              ; preds = %.loopexit717.us
  %670 = load i32, ptr %30, align 4, !tbaa !5
  %671 = add nsw i32 %670, -1
  store i32 %671, ptr %30, align 4, !tbaa !5
  %672 = add nsw i32 %.4831.us, -1
  br label %673

673:                                              ; preds = %669, %.loopexit717.us
  %.5.us = phi i32 [ %672, %669 ], [ %477, %.loopexit717.us ]
  store i32 %.5.us, ptr %23, align 4, !tbaa !5
  %674 = load i32, ptr %31, align 4, !tbaa !5
  store i32 %674, ptr %22, align 4, !tbaa !5
  %675 = icmp slt i32 %674, 0
  %676 = icmp sge i32 %.5617.us, %.5.us
  %677 = icmp sle i32 %.5617.us, %.5.us
  %.in681818.us = select i1 %675, i1 %676, i1 %677
  br i1 %.in681818.us, label %.lr.ph820.us, label %._crit_edge.us846

._crit_edge.us846:                                ; preds = %679, %673
  %indvars.iv.next898 = add nsw i64 %indvars.iv897, -1
  %678 = icmp sgt i64 %indvars.iv897, 2
  br i1 %678, label %474, label %._crit_edge834.us, !llvm.loop !34

679:                                              ; preds = %.lr.ph820.us, %679
  %indvars.iv894 = phi i64 [ %734, %.lr.ph820.us ], [ %indvars.iv.next895, %679 ]
  %680 = getelementptr inbounds double, ptr %42, i64 %indvars.iv894
  %681 = load double, ptr %680, align 8, !tbaa !11
  %682 = mul nsw i64 %indvars.iv894, %464
  %gep950 = getelementptr double, ptr %invariant.gep949, i64 %682
  %683 = load double, ptr %gep950, align 8, !tbaa !11
  %684 = fmul double %681, %683
  %gep952 = getelementptr double, ptr %invariant.gep951, i64 %indvars.iv894
  store double %684, ptr %gep952, align 8, !tbaa !11
  %685 = getelementptr inbounds double, ptr %37, i64 %indvars.iv894
  %686 = load double, ptr %685, align 8, !tbaa !11
  %687 = load double, ptr %gep950, align 8, !tbaa !11
  %688 = fmul double %686, %687
  store double %688, ptr %gep950, align 8, !tbaa !11
  %indvars.iv.next895 = add nsw i64 %indvars.iv894, %735
  %689 = icmp sge i64 %indvars.iv.next895, %737
  %690 = icmp sle i64 %indvars.iv.next895, %737
  %.in681.us = select i1 %675, i1 %689, i1 %690
  br i1 %.in681.us, label %679, label %._crit_edge.us846, !llvm.loop !35

.lr.ph817.us:                                     ; preds = %661, %.lr.ph817.us
  %.4636816.us = phi i32 [ %700, %.lr.ph817.us ], [ %.5617.us, %661 ]
  %691 = add nsw i32 %.4636816.us, -1
  %692 = mul nsw i32 %691, %39
  %693 = sext i32 %692 to i64
  %gep812.us = getelementptr double, ptr %invariant.gep811, i64 %693
  %694 = mul nsw i32 %.4636816.us, %39
  %695 = sext i32 %694 to i64
  %gep814.us = getelementptr double, ptr %invariant.gep811, i64 %695
  %696 = sext i32 %.4636816.us to i64
  %697 = getelementptr inbounds double, ptr %37, i64 %696
  %698 = getelementptr inbounds double, ptr %42, i64 %696
  call void @drot_(ptr noundef nonnull %2, ptr noundef %gep812.us, ptr noundef nonnull @c__1, ptr noundef %gep814.us, ptr noundef nonnull @c__1, ptr noundef nonnull %697, ptr noundef nonnull %698) #5
  %699 = load i32, ptr %23, align 4, !tbaa !5
  %700 = add nsw i32 %699, %.4636816.us
  %701 = icmp slt i32 %699, 0
  %702 = load i32, ptr %22, align 4
  %703 = icmp sge i32 %700, %702
  %704 = icmp sle i32 %700, %702
  %.in677.us = select i1 %701, i1 %703, i1 %704
  br i1 %.in677.us, label %.lr.ph817.us, label %.loopexit717.us, !llvm.loop !36

.lr.ph796.us:                                     ; preds = %507, %.lr.ph796.us
  %.1646795.us = phi i32 [ %719, %.lr.ph796.us ], [ %476, %507 ]
  %705 = load i32, ptr %3, align 4, !tbaa !5
  %706 = sub nsw i32 %.1646795.us, %705
  %707 = mul nsw i32 %706, %34
  %708 = add nsw i32 %707, %705
  %709 = sext i32 %708 to i64
  %710 = getelementptr inbounds double, ptr %36, i64 %709
  %711 = load i32, ptr %31, align 4, !tbaa !5
  %712 = add nsw i32 %707, %711
  %713 = sext i32 %712 to i64
  %714 = getelementptr inbounds double, ptr %36, i64 %713
  %715 = sext i32 %.1646795.us to i64
  %716 = getelementptr inbounds double, ptr %37, i64 %715
  %717 = getelementptr inbounds double, ptr %42, i64 %715
  call void @drot_(ptr noundef nonnull %33, ptr noundef %710, ptr noundef nonnull %27, ptr noundef %714, ptr noundef nonnull %27, ptr noundef nonnull %716, ptr noundef nonnull %717) #5
  %718 = load i32, ptr %22, align 4, !tbaa !5
  %719 = add nsw i32 %718, %.1646795.us
  %720 = icmp slt i32 %718, 0
  %721 = load i32, ptr %23, align 4
  %722 = icmp sge i32 %719, %721
  %723 = icmp sle i32 %719, %721
  %.in.us = select i1 %720, i1 %722, i1 %723
  br i1 %.in.us, label %.lr.ph796.us, label %.loopexit721.us, !llvm.loop !37

.lr.ph799.us:                                     ; preds = %557
  %724 = add nsw i32 %.5617.us, -1
  %725 = mul nsw i32 %724, %34
  %726 = add i32 %725, 2
  %727 = mul nsw i32 %.5617.us, %34
  %728 = add i32 %727, 1
  %729 = sext i32 %.5617.us to i64
  %730 = getelementptr inbounds double, ptr %37, i64 %729
  %731 = getelementptr inbounds double, ptr %42, i64 %729
  %732 = sext i32 %477 to i64
  br label %559

.lr.ph820.us:                                     ; preds = %673
  %733 = load i32, ptr %3, align 4, !tbaa !5
  %734 = sext i32 %.5617.us to i64
  %735 = sext i32 %674 to i64
  %736 = sext i32 %733 to i64
  %737 = sext i32 %.5.us to i64
  %invariant.gep949 = getelementptr double, ptr %36, i64 %735
  %invariant.gep951 = getelementptr double, ptr %42, i64 %736
  br label %679

._crit_edge834.us:                                ; preds = %._crit_edge.us846
  %.not664.us.not = icmp slt i64 %indvars.iv900, %466
  %738 = trunc i64 %indvars.iv900 to i32
  %739 = xor i32 %738, -1
  br i1 %.not664.us.not, label %.lr.ph833.us, label %.loopexit723.loopexit, !llvm.loop !38

.loopexit723.loopexit:                            ; preds = %._crit_edge834.us
  %.pre924 = load i32, ptr %3, align 4, !tbaa !5
  br label %.loopexit723

.loopexit723:                                     ; preds = %.loopexit723.loopexit, %459
  %740 = phi i32 [ %667, %.loopexit723.loopexit ], [ %81, %459 ]
  %741 = phi i32 [ %.pre924, %.loopexit723.loopexit ], [ %80, %459 ]
  %742 = icmp sgt i32 %741, 0
  br i1 %742, label %.loopexit723.thread, label %771

.loopexit723.thread:                              ; preds = %460, %.loopexit723
  %743 = phi i32 [ %740, %.loopexit723 ], [ %81, %460 ]
  %invariant.gep851 = getelementptr i8, ptr %36, i64 16
  %.not666.not852 = icmp sgt i32 %743, 1
  br i1 %.not666.not852, label %.lr.ph854.preheader, label %.loopexit715

.lr.ph854.preheader:                              ; preds = %.loopexit723.thread
  %744 = sext i32 %34 to i64
  %wide.trip.count910 = zext nneg i32 %743 to i64
  %745 = add nsw i64 %wide.trip.count910, -1
  %min.iters.check993 = icmp ugt i32 %743, 10
  %ident.check988.not = icmp eq i32 %34, 1
  %or.cond1027 = select i1 %min.iters.check993, i1 %ident.check988.not, i1 false
  br i1 %or.cond1027, label %vector.memcheck989, label %.lr.ph854.preheader1032

vector.memcheck989:                               ; preds = %.lr.ph854.preheader
  %746 = add i64 %16, -8
  %747 = sub i64 %746, %15
  %diff.check990 = icmp ult i64 %747, 32
  br i1 %diff.check990, label %.lr.ph854.preheader1032, label %vector.ph994

vector.ph994:                                     ; preds = %vector.memcheck989
  %n.vec996 = and i64 %745, -4
  %ind.end997 = or disjoint i64 %n.vec996, 1
  br label %vector.body999

vector.body999:                                   ; preds = %vector.body999, %vector.ph994
  %index1000 = phi i64 [ 0, %vector.ph994 ], [ %index.next1004, %vector.body999 ]
  %offset.idx1001 = or disjoint i64 %index1000, 1
  %748 = getelementptr double, ptr %invariant.gep851, i64 %offset.idx1001
  %749 = getelementptr i8, ptr %748, i64 16
  %wide.load1002 = load <2 x double>, ptr %748, align 8, !tbaa !11
  %wide.load1003 = load <2 x double>, ptr %749, align 8, !tbaa !11
  %750 = getelementptr double, ptr %7, i64 %index1000
  %751 = getelementptr inbounds i8, ptr %750, i64 16
  store <2 x double> %wide.load1002, ptr %750, align 8, !tbaa !11
  store <2 x double> %wide.load1003, ptr %751, align 8, !tbaa !11
  %index.next1004 = add nuw i64 %index1000, 4
  %752 = icmp eq i64 %index.next1004, %n.vec996
  br i1 %752, label %middle.block991, label %vector.body999, !llvm.loop !39

middle.block991:                                  ; preds = %vector.body999
  %cmp.n1005 = icmp eq i64 %745, %n.vec996
  br i1 %cmp.n1005, label %.loopexit715, label %.lr.ph854.preheader1032

.lr.ph854.preheader1032:                          ; preds = %middle.block991, %vector.memcheck989, %.lr.ph854.preheader
  %indvars.iv907.ph = phi i64 [ 1, %vector.memcheck989 ], [ 1, %.lr.ph854.preheader ], [ %ind.end997, %middle.block991 ]
  %753 = sub nsw i64 %wide.trip.count910, %indvars.iv907.ph
  %xtraiter1045 = and i64 %753, 3
  %lcmp.mod1046.not = icmp eq i64 %xtraiter1045, 0
  br i1 %lcmp.mod1046.not, label %.lr.ph854.prol.loopexit, label %.lr.ph854.prol

.lr.ph854.prol:                                   ; preds = %.lr.ph854.preheader1032, %.lr.ph854.prol
  %indvars.iv907.prol = phi i64 [ %indvars.iv.next908.prol, %.lr.ph854.prol ], [ %indvars.iv907.ph, %.lr.ph854.preheader1032 ]
  %prol.iter1047 = phi i64 [ %prol.iter1047.next, %.lr.ph854.prol ], [ 0, %.lr.ph854.preheader1032 ]
  %754 = mul nsw i64 %indvars.iv907.prol, %744
  %gep.prol = getelementptr double, ptr %invariant.gep851, i64 %754
  %755 = load double, ptr %gep.prol, align 8, !tbaa !11
  %756 = getelementptr inbounds double, ptr %38, i64 %indvars.iv907.prol
  store double %755, ptr %756, align 8, !tbaa !11
  %indvars.iv.next908.prol = add nuw nsw i64 %indvars.iv907.prol, 1
  %prol.iter1047.next = add i64 %prol.iter1047, 1
  %prol.iter1047.cmp.not = icmp eq i64 %prol.iter1047.next, %xtraiter1045
  br i1 %prol.iter1047.cmp.not, label %.lr.ph854.prol.loopexit, label %.lr.ph854.prol, !llvm.loop !40

.lr.ph854.prol.loopexit:                          ; preds = %.lr.ph854.prol, %.lr.ph854.preheader1032
  %indvars.iv907.unr = phi i64 [ %indvars.iv907.ph, %.lr.ph854.preheader1032 ], [ %indvars.iv.next908.prol, %.lr.ph854.prol ]
  %757 = sub nsw i64 %indvars.iv907.ph, %wide.trip.count910
  %758 = icmp ugt i64 %757, -4
  br i1 %758, label %.loopexit715, label %.lr.ph854

.lr.ph854:                                        ; preds = %.lr.ph854.prol.loopexit, %.lr.ph854
  %indvars.iv907 = phi i64 [ %indvars.iv.next908.3, %.lr.ph854 ], [ %indvars.iv907.unr, %.lr.ph854.prol.loopexit ]
  %759 = mul nsw i64 %indvars.iv907, %744
  %gep = getelementptr double, ptr %invariant.gep851, i64 %759
  %760 = load double, ptr %gep, align 8, !tbaa !11
  %761 = getelementptr inbounds double, ptr %38, i64 %indvars.iv907
  store double %760, ptr %761, align 8, !tbaa !11
  %indvars.iv.next908 = add nuw nsw i64 %indvars.iv907, 1
  %762 = mul nsw i64 %indvars.iv.next908, %744
  %gep.1 = getelementptr double, ptr %invariant.gep851, i64 %762
  %763 = load double, ptr %gep.1, align 8, !tbaa !11
  %764 = getelementptr double, ptr %7, i64 %indvars.iv907
  store double %763, ptr %764, align 8, !tbaa !11
  %indvars.iv.next908.1 = add nuw nsw i64 %indvars.iv907, 2
  %765 = mul nsw i64 %indvars.iv.next908.1, %744
  %gep.2 = getelementptr double, ptr %invariant.gep851, i64 %765
  %766 = load double, ptr %gep.2, align 8, !tbaa !11
  %767 = getelementptr inbounds double, ptr %38, i64 %indvars.iv.next908.1
  store double %766, ptr %767, align 8, !tbaa !11
  %indvars.iv.next908.2 = add nuw nsw i64 %indvars.iv907, 3
  %768 = mul nsw i64 %indvars.iv.next908.2, %744
  %gep.3 = getelementptr double, ptr %invariant.gep851, i64 %768
  %769 = load double, ptr %gep.3, align 8, !tbaa !11
  %770 = getelementptr inbounds double, ptr %38, i64 %indvars.iv.next908.2
  store double %769, ptr %770, align 8, !tbaa !11
  %indvars.iv.next908.3 = add nuw nsw i64 %indvars.iv907, 4
  %exitcond911.not.3 = icmp eq i64 %indvars.iv.next908.3, %wide.trip.count910
  br i1 %exitcond911.not.3, label %.loopexit715, label %.lr.ph854, !llvm.loop !41

771:                                              ; preds = %.loopexit723
  %.not665.not848 = icmp sgt i32 %740, 1
  br i1 %.not665.not848, label %.loopexit715.thread, label %.loopexit715

.loopexit715.thread:                              ; preds = %771
  %772 = add nsw i32 %740, -1
  %773 = zext nneg i32 %772 to i64
  %774 = shl nuw nsw i64 %773, 3
  call void @llvm.memset.p0.i64(ptr align 8 %7, i8 0, i64 %774, i1 false), !tbaa !11
  br label %.lr.ph859.preheader

.loopexit715:                                     ; preds = %.lr.ph854.prol.loopexit, %.lr.ph854, %middle.block991, %771, %.loopexit723.thread
  %775 = phi i32 [ %740, %771 ], [ %743, %.loopexit723.thread ], [ %743, %middle.block991 ], [ %743, %.lr.ph854 ], [ %743, %.lr.ph854.prol.loopexit ]
  %.not667857 = icmp slt i32 %775, 1
  br i1 %.not667857, label %.loopexit, label %.lr.ph859.preheader

.lr.ph859.preheader:                              ; preds = %.loopexit715.thread, %.loopexit715
  %776 = phi i32 [ %740, %.loopexit715.thread ], [ %775, %.loopexit715 ]
  %invariant.gep855932 = getelementptr i8, ptr %36, i64 8
  %777 = sext i32 %34 to i64
  %778 = add nuw i32 %776, 1
  %wide.trip.count915 = zext i32 %778 to i64
  %779 = zext nneg i32 %776 to i64
  %min.iters.check1012 = icmp ult i32 %776, 8
  %ident.check1007.not = icmp ne i32 %34, 1
  %or.cond1028.not1030 = select i1 %min.iters.check1012, i1 true, i1 %ident.check1007.not
  %780 = sub i64 %14, %13
  %diff.check1009 = icmp ult i64 %780, 32
  %or.cond1029 = or i1 %or.cond1028.not1030, %diff.check1009
  br i1 %or.cond1029, label %.lr.ph859.preheader1031, label %vector.ph1013

vector.ph1013:                                    ; preds = %.lr.ph859.preheader
  %n.vec1015 = and i64 %779, 2147483644
  %ind.end1016 = or disjoint i64 %n.vec1015, 1
  br label %vector.body1018

vector.body1018:                                  ; preds = %vector.body1018, %vector.ph1013
  %index1019 = phi i64 [ 0, %vector.ph1013 ], [ %index.next1023, %vector.body1018 ]
  %offset.idx1020 = or disjoint i64 %index1019, 1
  %781 = getelementptr double, ptr %invariant.gep855932, i64 %offset.idx1020
  %782 = getelementptr i8, ptr %781, i64 16
  %wide.load1021 = load <2 x double>, ptr %781, align 8, !tbaa !11
  %wide.load1022 = load <2 x double>, ptr %782, align 8, !tbaa !11
  %783 = getelementptr double, ptr %6, i64 %index1019
  %784 = getelementptr inbounds i8, ptr %783, i64 16
  store <2 x double> %wide.load1021, ptr %783, align 8, !tbaa !11
  store <2 x double> %wide.load1022, ptr %784, align 8, !tbaa !11
  %index.next1023 = add nuw i64 %index1019, 4
  %785 = icmp eq i64 %index.next1023, %n.vec1015
  br i1 %785, label %middle.block1010, label %vector.body1018, !llvm.loop !42

middle.block1010:                                 ; preds = %vector.body1018
  %cmp.n1024 = icmp eq i64 %n.vec1015, %779
  br i1 %cmp.n1024, label %.loopexit, label %.lr.ph859.preheader1031

.lr.ph859.preheader1031:                          ; preds = %middle.block1010, %.lr.ph859.preheader
  %indvars.iv912.ph = phi i64 [ 1, %.lr.ph859.preheader ], [ %ind.end1016, %middle.block1010 ]
  %786 = sub nsw i64 %wide.trip.count915, %indvars.iv912.ph
  %787 = zext nneg i32 %776 to i64
  %788 = sub nsw i64 %787, %indvars.iv912.ph
  %xtraiter1048 = and i64 %786, 3
  %lcmp.mod1049.not = icmp eq i64 %xtraiter1048, 0
  br i1 %lcmp.mod1049.not, label %.lr.ph859.prol.loopexit, label %.lr.ph859.prol

.lr.ph859.prol:                                   ; preds = %.lr.ph859.preheader1031, %.lr.ph859.prol
  %indvars.iv912.prol = phi i64 [ %indvars.iv.next913.prol, %.lr.ph859.prol ], [ %indvars.iv912.ph, %.lr.ph859.preheader1031 ]
  %prol.iter1050 = phi i64 [ %prol.iter1050.next, %.lr.ph859.prol ], [ 0, %.lr.ph859.preheader1031 ]
  %789 = mul nsw i64 %indvars.iv912.prol, %777
  %gep856.prol = getelementptr double, ptr %invariant.gep855932, i64 %789
  %790 = load double, ptr %gep856.prol, align 8, !tbaa !11
  %791 = getelementptr inbounds double, ptr %37, i64 %indvars.iv912.prol
  store double %790, ptr %791, align 8, !tbaa !11
  %indvars.iv.next913.prol = add nuw nsw i64 %indvars.iv912.prol, 1
  %prol.iter1050.next = add i64 %prol.iter1050, 1
  %prol.iter1050.cmp.not = icmp eq i64 %prol.iter1050.next, %xtraiter1048
  br i1 %prol.iter1050.cmp.not, label %.lr.ph859.prol.loopexit, label %.lr.ph859.prol, !llvm.loop !43

.lr.ph859.prol.loopexit:                          ; preds = %.lr.ph859.prol, %.lr.ph859.preheader1031
  %indvars.iv912.unr = phi i64 [ %indvars.iv912.ph, %.lr.ph859.preheader1031 ], [ %indvars.iv.next913.prol, %.lr.ph859.prol ]
  %792 = icmp ult i64 %788, 3
  br i1 %792, label %.loopexit, label %.lr.ph859

.lr.ph859:                                        ; preds = %.lr.ph859.prol.loopexit, %.lr.ph859
  %indvars.iv912 = phi i64 [ %indvars.iv.next913.3, %.lr.ph859 ], [ %indvars.iv912.unr, %.lr.ph859.prol.loopexit ]
  %793 = mul nsw i64 %indvars.iv912, %777
  %gep856 = getelementptr double, ptr %invariant.gep855932, i64 %793
  %794 = load double, ptr %gep856, align 8, !tbaa !11
  %795 = getelementptr inbounds double, ptr %37, i64 %indvars.iv912
  store double %794, ptr %795, align 8, !tbaa !11
  %indvars.iv.next913 = add nuw nsw i64 %indvars.iv912, 1
  %796 = mul nsw i64 %indvars.iv.next913, %777
  %gep856.1 = getelementptr double, ptr %invariant.gep855932, i64 %796
  %797 = load double, ptr %gep856.1, align 8, !tbaa !11
  %798 = getelementptr double, ptr %6, i64 %indvars.iv912
  store double %797, ptr %798, align 8, !tbaa !11
  %indvars.iv.next913.1 = add nuw nsw i64 %indvars.iv912, 2
  %799 = mul nsw i64 %indvars.iv.next913.1, %777
  %gep856.2 = getelementptr double, ptr %invariant.gep855932, i64 %799
  %800 = load double, ptr %gep856.2, align 8, !tbaa !11
  %801 = getelementptr inbounds double, ptr %37, i64 %indvars.iv.next913.1
  store double %800, ptr %801, align 8, !tbaa !11
  %indvars.iv.next913.2 = add nuw nsw i64 %indvars.iv912, 3
  %802 = mul nsw i64 %indvars.iv.next913.2, %777
  %gep856.3 = getelementptr double, ptr %invariant.gep855932, i64 %802
  %803 = load double, ptr %gep856.3, align 8, !tbaa !11
  %804 = getelementptr inbounds double, ptr %37, i64 %indvars.iv.next913.2
  store double %803, ptr %804, align 8, !tbaa !11
  %indvars.iv.next913.3 = add nuw nsw i64 %indvars.iv912, 4
  %exitcond916.not.3 = icmp eq i64 %indvars.iv.next913.3, %wide.trip.count915
  br i1 %exitcond916.not.3, label %.loopexit, label %.lr.ph859, !llvm.loop !44

.loopexit:                                        ; preds = %scalar.ph973.prol.loopexit, %scalar.ph973, %.lr.ph859.prol.loopexit, %.lr.ph859, %middle.block972, %middle.block1010, %.loopexit725, %.loopexit715, %75, %.thread
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #5
  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
  ret void
}

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

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

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

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

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

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

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

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

declare void @dlar2v_(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.smin.i32(i32, i32) #3

; 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.umax.i32(i32, i32) #3

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #4

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = distinct !{!13, !10}
!14 = distinct !{!14, !10}
!15 = distinct !{!15, !10}
!16 = distinct !{!16, !10}
!17 = distinct !{!17, !10}
!18 = distinct !{!18, !10}
!19 = distinct !{!19, !10}
!20 = distinct !{!20, !10}
!21 = distinct !{!21, !10, !22, !23}
!22 = !{!"llvm.loop.isvectorized", i32 1}
!23 = !{!"llvm.loop.unroll.runtime.disable"}
!24 = distinct !{!24, !25}
!25 = !{!"llvm.loop.unroll.disable"}
!26 = distinct !{!26, !10, !22}
!27 = distinct !{!27, !10, !22, !23}
!28 = distinct !{!28, !25}
!29 = distinct !{!29, !10, !22}
!30 = distinct !{!30, !10}
!31 = distinct !{!31, !10}
!32 = distinct !{!32, !10}
!33 = distinct !{!33, !10}
!34 = distinct !{!34, !10}
!35 = distinct !{!35, !10}
!36 = distinct !{!36, !10}
!37 = distinct !{!37, !10}
!38 = distinct !{!38, !10}
!39 = distinct !{!39, !10, !22, !23}
!40 = distinct !{!40, !25}
!41 = distinct !{!41, !10, !22}
!42 = distinct !{!42, !10, !22, !23}
!43 = distinct !{!43, !25}
!44 = distinct !{!44, !10, !22}


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