; LLVM IR from niuyishuai/PDCABB :: LAPACK_BLAS/LAPACK (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 i64, align 8

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

92:                                               ; preds = %12
  %93 = load ptr, ptr %14, align 8, !tbaa !5
  %94 = call i64 @lsame_(ptr noundef %93, ptr noundef @.str.1)
  %95 = icmp ne i64 %94, 0
  br label %96

96:                                               ; preds = %92, %12
  %97 = phi i1 [ true, %12 ], [ %95, %92 ]
  %98 = zext i1 %97 to i32
  %99 = sext i32 %98 to i64
  store i64 %99, ptr %62, align 8, !tbaa !9
  %100 = load ptr, ptr %15, align 8, !tbaa !5
  %101 = call i64 @lsame_(ptr noundef %100, ptr noundef @.str.1)
  store i64 %101, ptr %63, align 8, !tbaa !9
  %102 = load ptr, ptr %17, align 8, !tbaa !5
  %103 = load i64, ptr %102, align 8, !tbaa !9
  %104 = add nsw i64 %103, 1
  store i64 %104, ptr %44, align 8, !tbaa !9
  %105 = load ptr, ptr %17, align 8, !tbaa !5
  %106 = load i64, ptr %105, align 8, !tbaa !9
  %107 = sub nsw i64 %106, 1
  store i64 %107, ptr %50, align 8, !tbaa !9
  %108 = load ptr, ptr %19, align 8, !tbaa !5
  %109 = load i64, ptr %108, align 8, !tbaa !9
  %110 = sub nsw i64 %109, 1
  store i64 %110, ptr %55, align 8, !tbaa !9
  store i64 1, ptr %60, align 8, !tbaa !9
  %111 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 0, ptr %111, align 8, !tbaa !9
  %112 = load i64, ptr %62, align 8, !tbaa !9
  %113 = icmp ne i64 %112, 0
  br i1 %113, label %120, label %114

114:                                              ; preds = %96
  %115 = load ptr, ptr %14, align 8, !tbaa !5
  %116 = call i64 @lsame_(ptr noundef %115, ptr noundef @.str.2)
  %117 = icmp ne i64 %116, 0
  br i1 %117, label %120, label %118

118:                                              ; preds = %114
  %119 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 -1, ptr %119, align 8, !tbaa !9
  br label %171

120:                                              ; preds = %114, %96
  %121 = load i64, ptr %63, align 8, !tbaa !9
  %122 = icmp ne i64 %121, 0
  br i1 %122, label %129, label %123

123:                                              ; preds = %120
  %124 = load ptr, ptr %15, align 8, !tbaa !5
  %125 = call i64 @lsame_(ptr noundef %124, ptr noundef @.str.3)
  %126 = icmp ne i64 %125, 0
  br i1 %126, label %129, label %127

127:                                              ; preds = %123
  %128 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 -2, ptr %128, align 8, !tbaa !9
  br label %170

129:                                              ; preds = %123, %120
  %130 = load ptr, ptr %16, align 8, !tbaa !5
  %131 = load i64, ptr %130, align 8, !tbaa !9
  %132 = icmp slt i64 %131, 0
  br i1 %132, label %133, label %135

133:                                              ; preds = %129
  %134 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 -3, ptr %134, align 8, !tbaa !9
  br label %169

135:                                              ; preds = %129
  %136 = load ptr, ptr %17, align 8, !tbaa !5
  %137 = load i64, ptr %136, align 8, !tbaa !9
  %138 = icmp slt i64 %137, 0
  br i1 %138, label %139, label %141

139:                                              ; preds = %135
  %140 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 -4, ptr %140, align 8, !tbaa !9
  br label %168

141:                                              ; preds = %135
  %142 = load ptr, ptr %19, align 8, !tbaa !5
  %143 = load i64, ptr %142, align 8, !tbaa !9
  %144 = load i64, ptr %44, align 8, !tbaa !9
  %145 = icmp slt i64 %143, %144
  br i1 %145, label %146, label %148

146:                                              ; preds = %141
  %147 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 -6, ptr %147, align 8, !tbaa !9
  br label %167

148:                                              ; preds = %141
  %149 = load ptr, ptr %23, align 8, !tbaa !5
  %150 = load i64, ptr %149, align 8, !tbaa !9
  %151 = load ptr, ptr %16, align 8, !tbaa !5
  %152 = load i64, ptr %151, align 8, !tbaa !9
  %153 = icmp sge i64 1, %152
  br i1 %153, label %154, label %155

154:                                              ; preds = %148
  br label %158

155:                                              ; preds = %148
  %156 = load ptr, ptr %16, align 8, !tbaa !5
  %157 = load i64, ptr %156, align 8, !tbaa !9
  br label %158

158:                                              ; preds = %155, %154
  %159 = phi i64 [ 1, %154 ], [ %157, %155 ]
  %160 = icmp slt i64 %150, %159
  br i1 %160, label %161, label %166

161:                                              ; preds = %158
  %162 = load i64, ptr %62, align 8, !tbaa !9
  %163 = icmp ne i64 %162, 0
  br i1 %163, label %164, label %166

164:                                              ; preds = %161
  %165 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 -10, ptr %165, align 8, !tbaa !9
  br label %166

166:                                              ; preds = %164, %161, %158
  br label %167

167:                                              ; preds = %166, %146
  br label %168

168:                                              ; preds = %167, %139
  br label %169

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

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

171:                                              ; preds = %170, %118
  %172 = load ptr, ptr %25, align 8, !tbaa !5
  %173 = load i64, ptr %172, align 8, !tbaa !9
  %174 = icmp ne i64 %173, 0
  br i1 %174, label %175, label %180

175:                                              ; preds = %171
  %176 = load ptr, ptr %25, align 8, !tbaa !5
  %177 = load i64, ptr %176, align 8, !tbaa !9
  %178 = sub nsw i64 0, %177
  store i64 %178, ptr %30, align 8, !tbaa !9
  %179 = call i32 @xerbla_(ptr noundef @.str.4, ptr noundef %30)
  store i32 0, ptr %13, align 4
  store i32 1, ptr %65, align 4
  br label %1816

180:                                              ; preds = %171
  %181 = load ptr, ptr %16, align 8, !tbaa !5
  %182 = load i64, ptr %181, align 8, !tbaa !9
  %183 = icmp eq i64 %182, 0
  br i1 %183, label %184, label %185

184:                                              ; preds = %180
  store i32 0, ptr %13, align 4
  store i32 1, ptr %65, align 4
  br label %1816

185:                                              ; preds = %180
  %186 = load i64, ptr %61, align 8, !tbaa !9
  %187 = icmp ne i64 %186, 0
  br i1 %187, label %188, label %196

188:                                              ; preds = %185
  %189 = load ptr, ptr %16, align 8, !tbaa !5
  %190 = load ptr, ptr %16, align 8, !tbaa !5
  %191 = load ptr, ptr %22, align 8, !tbaa !5
  %192 = load i64, ptr %29, align 8, !tbaa !9
  %193 = getelementptr inbounds double, ptr %191, i64 %192
  %194 = load ptr, ptr %23, align 8, !tbaa !5
  %195 = call i32 @dlaset_(ptr noundef @.str.5, ptr noundef %189, ptr noundef %190, ptr noundef @c_b9, ptr noundef @c_b10, ptr noundef %193, ptr noundef %194)
  br label %196

196:                                              ; preds = %188, %185
  %197 = load i64, ptr %44, align 8, !tbaa !9
  %198 = load ptr, ptr %19, align 8, !tbaa !5
  %199 = load i64, ptr %198, align 8, !tbaa !9
  %200 = mul nsw i64 %197, %199
  store i64 %200, ptr %51, align 8, !tbaa !9
  %201 = load ptr, ptr %16, align 8, !tbaa !5
  %202 = load i64, ptr %201, align 8, !tbaa !9
  %203 = sub nsw i64 %202, 1
  store i64 %203, ptr %30, align 8, !tbaa !9
  %204 = load i64, ptr %30, align 8, !tbaa !9
  %205 = load ptr, ptr %17, align 8, !tbaa !5
  %206 = load i64, ptr %205, align 8, !tbaa !9
  %207 = icmp sle i64 %204, %206
  br i1 %207, label %208, label %210

208:                                              ; preds = %196
  %209 = load i64, ptr %30, align 8, !tbaa !9
  br label %213

210:                                              ; preds = %196
  %211 = load ptr, ptr %17, align 8, !tbaa !5
  %212 = load i64, ptr %211, align 8, !tbaa !9
  br label %213

213:                                              ; preds = %210, %208
  %214 = phi i64 [ %209, %208 ], [ %212, %210 ]
  store i64 %214, ptr %47, align 8, !tbaa !9
  %215 = load i64, ptr %63, align 8, !tbaa !9
  %216 = icmp ne i64 %215, 0
  br i1 %216, label %217, label %1035

217:                                              ; preds = %213
  %218 = load ptr, ptr %17, align 8, !tbaa !5
  %219 = load i64, ptr %218, align 8, !tbaa !9
  %220 = icmp sgt i64 %219, 1
  br i1 %220, label %221, label %966

221:                                              ; preds = %217
  store i64 0, ptr %43, align 8, !tbaa !9
  %222 = load i64, ptr %47, align 8, !tbaa !9
  %223 = add nsw i64 %222, 2
  store i64 %223, ptr %40, align 8, !tbaa !9
  store i64 1, ptr %41, align 8, !tbaa !9
  %224 = load ptr, ptr %16, align 8, !tbaa !5
  %225 = load i64, ptr %224, align 8, !tbaa !9
  %226 = sub nsw i64 %225, 2
  store i64 %226, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %35, align 8, !tbaa !9
  br label %227

227:                                              ; preds = %962, %221
  %228 = load i64, ptr %35, align 8, !tbaa !9
  %229 = load i64, ptr %30, align 8, !tbaa !9
  %230 = icmp sle i64 %228, %229
  br i1 %230, label %231, label %965

231:                                              ; preds = %227
  %232 = load i64, ptr %47, align 8, !tbaa !9
  %233 = add nsw i64 %232, 1
  store i64 %233, ptr %37, align 8, !tbaa !9
  br label %234

234:                                              ; preds = %958, %231
  %235 = load i64, ptr %37, align 8, !tbaa !9
  %236 = icmp sge i64 %235, 2
  br i1 %236, label %237, label %961

237:                                              ; preds = %234
  %238 = load i64, ptr %47, align 8, !tbaa !9
  %239 = load i64, ptr %40, align 8, !tbaa !9
  %240 = add nsw i64 %239, %238
  store i64 %240, ptr %40, align 8, !tbaa !9
  %241 = load i64, ptr %47, align 8, !tbaa !9
  %242 = load i64, ptr %41, align 8, !tbaa !9
  %243 = add nsw i64 %242, %241
  store i64 %243, ptr %41, align 8, !tbaa !9
  %244 = load i64, ptr %43, align 8, !tbaa !9
  %245 = icmp sgt i64 %244, 0
  br i1 %245, label %246, label %356

246:                                              ; preds = %237
  %247 = load ptr, ptr %18, align 8, !tbaa !5
  %248 = load i64, ptr %40, align 8, !tbaa !9
  %249 = sub nsw i64 %248, 1
  %250 = load i64, ptr %26, align 8, !tbaa !9
  %251 = mul nsw i64 %249, %250
  %252 = add nsw i64 %251, 1
  %253 = getelementptr inbounds double, ptr %247, i64 %252
  %254 = load ptr, ptr %24, align 8, !tbaa !5
  %255 = load i64, ptr %40, align 8, !tbaa !9
  %256 = getelementptr inbounds double, ptr %254, i64 %255
  %257 = load ptr, ptr %20, align 8, !tbaa !5
  %258 = load i64, ptr %40, align 8, !tbaa !9
  %259 = getelementptr inbounds double, ptr %257, i64 %258
  %260 = call i32 @dlargv_(ptr noundef %43, ptr noundef %253, ptr noundef %51, ptr noundef %256, ptr noundef %44, ptr noundef %259, ptr noundef %44)
  %261 = load i64, ptr %43, align 8, !tbaa !9
  %262 = load ptr, ptr %17, align 8, !tbaa !5
  %263 = load i64, ptr %262, align 8, !tbaa !9
  %264 = shl i64 %263, 1
  %265 = sub nsw i64 %264, 1
  %266 = icmp sge i64 %261, %265
  br i1 %266, label %267, label %303

267:                                              ; preds = %246
  %268 = load ptr, ptr %17, align 8, !tbaa !5
  %269 = load i64, ptr %268, align 8, !tbaa !9
  %270 = sub nsw i64 %269, 1
  store i64 %270, ptr %31, align 8, !tbaa !9
  store i64 1, ptr %38, align 8, !tbaa !9
  br label %271

271:                                              ; preds = %299, %267
  %272 = load i64, ptr %38, align 8, !tbaa !9
  %273 = load i64, ptr %31, align 8, !tbaa !9
  %274 = icmp sle i64 %272, %273
  br i1 %274, label %275, label %302

275:                                              ; preds = %271
  %276 = load ptr, ptr %18, align 8, !tbaa !5
  %277 = load i64, ptr %38, align 8, !tbaa !9
  %278 = add nsw i64 %277, 1
  %279 = load i64, ptr %40, align 8, !tbaa !9
  %280 = sub nsw i64 %279, 1
  %281 = load i64, ptr %26, align 8, !tbaa !9
  %282 = mul nsw i64 %280, %281
  %283 = add nsw i64 %278, %282
  %284 = getelementptr inbounds double, ptr %276, i64 %283
  %285 = load ptr, ptr %18, align 8, !tbaa !5
  %286 = load i64, ptr %38, align 8, !tbaa !9
  %287 = load i64, ptr %40, align 8, !tbaa !9
  %288 = load i64, ptr %26, align 8, !tbaa !9
  %289 = mul nsw i64 %287, %288
  %290 = add nsw i64 %286, %289
  %291 = getelementptr inbounds double, ptr %285, i64 %290
  %292 = load ptr, ptr %20, align 8, !tbaa !5
  %293 = load i64, ptr %40, align 8, !tbaa !9
  %294 = getelementptr inbounds double, ptr %292, i64 %293
  %295 = load ptr, ptr %24, align 8, !tbaa !5
  %296 = load i64, ptr %40, align 8, !tbaa !9
  %297 = getelementptr inbounds double, ptr %295, i64 %296
  %298 = call i32 @dlartv_(ptr noundef %43, ptr noundef %284, ptr noundef %51, ptr noundef %291, ptr noundef %51, ptr noundef %294, ptr noundef %297, ptr noundef %44)
  br label %299

299:                                              ; preds = %275
  %300 = load i64, ptr %38, align 8, !tbaa !9
  %301 = add nsw i64 %300, 1
  store i64 %301, ptr %38, align 8, !tbaa !9
  br label %271, !llvm.loop !11

302:                                              ; preds = %271
  br label %355

303:                                              ; preds = %246
  %304 = load i64, ptr %40, align 8, !tbaa !9
  %305 = load i64, ptr %43, align 8, !tbaa !9
  %306 = sub nsw i64 %305, 1
  %307 = load i64, ptr %44, align 8, !tbaa !9
  %308 = mul nsw i64 %306, %307
  %309 = add nsw i64 %304, %308
  store i64 %309, ptr %52, align 8, !tbaa !9
  %310 = load i64, ptr %52, align 8, !tbaa !9
  store i64 %310, ptr %31, align 8, !tbaa !9
  %311 = load i64, ptr %44, align 8, !tbaa !9
  store i64 %311, ptr %32, align 8, !tbaa !9
  %312 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %312, ptr %54, align 8, !tbaa !9
  br label %313

313:                                              ; preds = %350, %303
  %314 = load i64, ptr %32, align 8, !tbaa !9
  %315 = icmp slt i64 %314, 0
  br i1 %315, label %316, label %321

316:                                              ; preds = %313
  %317 = load i64, ptr %54, align 8, !tbaa !9
  %318 = load i64, ptr %31, align 8, !tbaa !9
  %319 = icmp sge i64 %317, %318
  %320 = zext i1 %319 to i32
  br label %326

321:                                              ; preds = %313
  %322 = load i64, ptr %54, align 8, !tbaa !9
  %323 = load i64, ptr %31, align 8, !tbaa !9
  %324 = icmp sle i64 %322, %323
  %325 = zext i1 %324 to i32
  br label %326

326:                                              ; preds = %321, %316
  %327 = phi i32 [ %320, %316 ], [ %325, %321 ]
  %328 = icmp ne i32 %327, 0
  br i1 %328, label %329, label %354

329:                                              ; preds = %326
  %330 = load ptr, ptr %18, align 8, !tbaa !5
  %331 = load i64, ptr %54, align 8, !tbaa !9
  %332 = sub nsw i64 %331, 1
  %333 = load i64, ptr %26, align 8, !tbaa !9
  %334 = mul nsw i64 %332, %333
  %335 = add nsw i64 %334, 2
  %336 = getelementptr inbounds double, ptr %330, i64 %335
  %337 = load ptr, ptr %18, align 8, !tbaa !5
  %338 = load i64, ptr %54, align 8, !tbaa !9
  %339 = load i64, ptr %26, align 8, !tbaa !9
  %340 = mul nsw i64 %338, %339
  %341 = add nsw i64 %340, 1
  %342 = getelementptr inbounds double, ptr %337, i64 %341
  %343 = load ptr, ptr %20, align 8, !tbaa !5
  %344 = load i64, ptr %54, align 8, !tbaa !9
  %345 = getelementptr inbounds double, ptr %343, i64 %344
  %346 = load ptr, ptr %24, align 8, !tbaa !5
  %347 = load i64, ptr %54, align 8, !tbaa !9
  %348 = getelementptr inbounds double, ptr %346, i64 %347
  %349 = call i32 @f2c_drot(ptr noundef %50, ptr noundef %336, ptr noundef @c__1, ptr noundef %342, ptr noundef @c__1, ptr noundef %345, ptr noundef %348)
  br label %350

350:                                              ; preds = %329
  %351 = load i64, ptr %32, align 8, !tbaa !9
  %352 = load i64, ptr %54, align 8, !tbaa !9
  %353 = add nsw i64 %352, %351
  store i64 %353, ptr %54, align 8, !tbaa !9
  br label %313, !llvm.loop !13

354:                                              ; preds = %326
  br label %355

355:                                              ; preds = %354, %302
  br label %356

356:                                              ; preds = %355, %237
  %357 = load i64, ptr %37, align 8, !tbaa !9
  %358 = icmp sgt i64 %357, 2
  br i1 %358, label %359, label %474

359:                                              ; preds = %356
  %360 = load i64, ptr %37, align 8, !tbaa !9
  %361 = load ptr, ptr %16, align 8, !tbaa !5
  %362 = load i64, ptr %361, align 8, !tbaa !9
  %363 = load i64, ptr %35, align 8, !tbaa !9
  %364 = sub nsw i64 %362, %363
  %365 = add nsw i64 %364, 1
  %366 = icmp sle i64 %360, %365
  br i1 %366, label %367, label %467

367:                                              ; preds = %359
  %368 = load ptr, ptr %18, align 8, !tbaa !5
  %369 = load ptr, ptr %17, align 8, !tbaa !5
  %370 = load i64, ptr %369, align 8, !tbaa !9
  %371 = load i64, ptr %37, align 8, !tbaa !9
  %372 = sub nsw i64 %370, %371
  %373 = add nsw i64 %372, 3
  %374 = load i64, ptr %35, align 8, !tbaa !9
  %375 = load i64, ptr %37, align 8, !tbaa !9
  %376 = add nsw i64 %374, %375
  %377 = sub nsw i64 %376, 2
  %378 = load i64, ptr %26, align 8, !tbaa !9
  %379 = mul nsw i64 %377, %378
  %380 = add nsw i64 %373, %379
  %381 = getelementptr inbounds double, ptr %368, i64 %380
  %382 = load ptr, ptr %18, align 8, !tbaa !5
  %383 = load ptr, ptr %17, align 8, !tbaa !5
  %384 = load i64, ptr %383, align 8, !tbaa !9
  %385 = load i64, ptr %37, align 8, !tbaa !9
  %386 = sub nsw i64 %384, %385
  %387 = add nsw i64 %386, 2
  %388 = load i64, ptr %35, align 8, !tbaa !9
  %389 = load i64, ptr %37, align 8, !tbaa !9
  %390 = add nsw i64 %388, %389
  %391 = sub nsw i64 %390, 1
  %392 = load i64, ptr %26, align 8, !tbaa !9
  %393 = mul nsw i64 %391, %392
  %394 = add nsw i64 %387, %393
  %395 = getelementptr inbounds double, ptr %382, i64 %394
  %396 = load ptr, ptr %20, align 8, !tbaa !5
  %397 = load i64, ptr %35, align 8, !tbaa !9
  %398 = load i64, ptr %37, align 8, !tbaa !9
  %399 = add nsw i64 %397, %398
  %400 = sub nsw i64 %399, 1
  %401 = getelementptr inbounds double, ptr %396, i64 %400
  %402 = load ptr, ptr %24, align 8, !tbaa !5
  %403 = load i64, ptr %35, align 8, !tbaa !9
  %404 = load i64, ptr %37, align 8, !tbaa !9
  %405 = add nsw i64 %403, %404
  %406 = sub nsw i64 %405, 1
  %407 = getelementptr inbounds double, ptr %402, i64 %406
  %408 = call i32 @dlartg_(ptr noundef %381, ptr noundef %395, ptr noundef %401, ptr noundef %407, ptr noundef %57)
  %409 = load double, ptr %57, align 8, !tbaa !14
  %410 = load ptr, ptr %18, align 8, !tbaa !5
  %411 = load ptr, ptr %17, align 8, !tbaa !5
  %412 = load i64, ptr %411, align 8, !tbaa !9
  %413 = load i64, ptr %37, align 8, !tbaa !9
  %414 = sub nsw i64 %412, %413
  %415 = add nsw i64 %414, 3
  %416 = load i64, ptr %35, align 8, !tbaa !9
  %417 = load i64, ptr %37, align 8, !tbaa !9
  %418 = add nsw i64 %416, %417
  %419 = sub nsw i64 %418, 2
  %420 = load i64, ptr %26, align 8, !tbaa !9
  %421 = mul nsw i64 %419, %420
  %422 = add nsw i64 %415, %421
  %423 = getelementptr inbounds double, ptr %410, i64 %422
  store double %409, ptr %423, align 8, !tbaa !14
  %424 = load i64, ptr %37, align 8, !tbaa !9
  %425 = sub nsw i64 %424, 3
  store i64 %425, ptr %32, align 8, !tbaa !9
  %426 = load ptr, ptr %18, align 8, !tbaa !5
  %427 = load ptr, ptr %17, align 8, !tbaa !5
  %428 = load i64, ptr %427, align 8, !tbaa !9
  %429 = load i64, ptr %37, align 8, !tbaa !9
  %430 = sub nsw i64 %428, %429
  %431 = add nsw i64 %430, 4
  %432 = load i64, ptr %35, align 8, !tbaa !9
  %433 = load i64, ptr %37, align 8, !tbaa !9
  %434 = add nsw i64 %432, %433
  %435 = sub nsw i64 %434, 2
  %436 = load i64, ptr %26, align 8, !tbaa !9
  %437 = mul nsw i64 %435, %436
  %438 = add nsw i64 %431, %437
  %439 = getelementptr inbounds double, ptr %426, i64 %438
  %440 = load ptr, ptr %18, align 8, !tbaa !5
  %441 = load ptr, ptr %17, align 8, !tbaa !5
  %442 = load i64, ptr %441, align 8, !tbaa !9
  %443 = load i64, ptr %37, align 8, !tbaa !9
  %444 = sub nsw i64 %442, %443
  %445 = add nsw i64 %444, 3
  %446 = load i64, ptr %35, align 8, !tbaa !9
  %447 = load i64, ptr %37, align 8, !tbaa !9
  %448 = add nsw i64 %446, %447
  %449 = sub nsw i64 %448, 1
  %450 = load i64, ptr %26, align 8, !tbaa !9
  %451 = mul nsw i64 %449, %450
  %452 = add nsw i64 %445, %451
  %453 = getelementptr inbounds double, ptr %440, i64 %452
  %454 = load ptr, ptr %20, align 8, !tbaa !5
  %455 = load i64, ptr %35, align 8, !tbaa !9
  %456 = load i64, ptr %37, align 8, !tbaa !9
  %457 = add nsw i64 %455, %456
  %458 = sub nsw i64 %457, 1
  %459 = getelementptr inbounds double, ptr %454, i64 %458
  %460 = load ptr, ptr %24, align 8, !tbaa !5
  %461 = load i64, ptr %35, align 8, !tbaa !9
  %462 = load i64, ptr %37, align 8, !tbaa !9
  %463 = add nsw i64 %461, %462
  %464 = sub nsw i64 %463, 1
  %465 = getelementptr inbounds double, ptr %460, i64 %464
  %466 = call i32 @f2c_drot(ptr noundef %32, ptr noundef %439, ptr noundef @c__1, ptr noundef %453, ptr noundef @c__1, ptr noundef %459, ptr noundef %465)
  br label %467

467:                                              ; preds = %367, %359
  %468 = load i64, ptr %43, align 8, !tbaa !9
  %469 = add nsw i64 %468, 1
  store i64 %469, ptr %43, align 8, !tbaa !9
  %470 = load i64, ptr %40, align 8, !tbaa !9
  %471 = load i64, ptr %47, align 8, !tbaa !9
  %472 = sub nsw i64 %470, %471
  %473 = sub nsw i64 %472, 1
  store i64 %473, ptr %40, align 8, !tbaa !9
  br label %474

474:                                              ; preds = %467, %356
  %475 = load i64, ptr %43, align 8, !tbaa !9
  %476 = icmp sgt i64 %475, 0
  br i1 %476, label %477, label %508

477:                                              ; preds = %474
  %478 = load ptr, ptr %18, align 8, !tbaa !5
  %479 = load i64, ptr %44, align 8, !tbaa !9
  %480 = load i64, ptr %40, align 8, !tbaa !9
  %481 = sub nsw i64 %480, 1
  %482 = load i64, ptr %26, align 8, !tbaa !9
  %483 = mul nsw i64 %481, %482
  %484 = add nsw i64 %479, %483
  %485 = getelementptr inbounds double, ptr %478, i64 %484
  %486 = load ptr, ptr %18, align 8, !tbaa !5
  %487 = load i64, ptr %44, align 8, !tbaa !9
  %488 = load i64, ptr %40, align 8, !tbaa !9
  %489 = load i64, ptr %26, align 8, !tbaa !9
  %490 = mul nsw i64 %488, %489
  %491 = add nsw i64 %487, %490
  %492 = getelementptr inbounds double, ptr %486, i64 %491
  %493 = load ptr, ptr %18, align 8, !tbaa !5
  %494 = load ptr, ptr %17, align 8, !tbaa !5
  %495 = load i64, ptr %494, align 8, !tbaa !9
  %496 = load i64, ptr %40, align 8, !tbaa !9
  %497 = load i64, ptr %26, align 8, !tbaa !9
  %498 = mul nsw i64 %496, %497
  %499 = add nsw i64 %495, %498
  %500 = getelementptr inbounds double, ptr %493, i64 %499
  %501 = load ptr, ptr %20, align 8, !tbaa !5
  %502 = load i64, ptr %40, align 8, !tbaa !9
  %503 = getelementptr inbounds double, ptr %501, i64 %502
  %504 = load ptr, ptr %24, align 8, !tbaa !5
  %505 = load i64, ptr %40, align 8, !tbaa !9
  %506 = getelementptr inbounds double, ptr %504, i64 %505
  %507 = call i32 @dlar2v_(ptr noundef %43, ptr noundef %485, ptr noundef %492, ptr noundef %500, ptr noundef %51, ptr noundef %503, ptr noundef %506, ptr noundef %44)
  br label %508

508:                                              ; preds = %477, %474
  %509 = load i64, ptr %43, align 8, !tbaa !9
  %510 = icmp sgt i64 %509, 0
  br i1 %510, label %511, label %693

511:                                              ; preds = %508
  %512 = load ptr, ptr %17, align 8, !tbaa !5
  %513 = load i64, ptr %512, align 8, !tbaa !9
  %514 = shl i64 %513, 1
  %515 = sub nsw i64 %514, 1
  %516 = load i64, ptr %43, align 8, !tbaa !9
  %517 = icmp slt i64 %515, %516
  br i1 %517, label %518, label %579

518:                                              ; preds = %511
  %519 = load ptr, ptr %17, align 8, !tbaa !5
  %520 = load i64, ptr %519, align 8, !tbaa !9
  %521 = sub nsw i64 %520, 1
  store i64 %521, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %38, align 8, !tbaa !9
  br label %522

522:                                              ; preds = %575, %518
  %523 = load i64, ptr %38, align 8, !tbaa !9
  %524 = load i64, ptr %32, align 8, !tbaa !9
  %525 = icmp sle i64 %523, %524
  br i1 %525, label %526, label %578

526:                                              ; preds = %522
  %527 = load i64, ptr %41, align 8, !tbaa !9
  %528 = load i64, ptr %38, align 8, !tbaa !9
  %529 = add nsw i64 %527, %528
  %530 = load ptr, ptr %16, align 8, !tbaa !5
  %531 = load i64, ptr %530, align 8, !tbaa !9
  %532 = icmp sgt i64 %529, %531
  br i1 %532, label %533, label %536

533:                                              ; preds = %526
  %534 = load i64, ptr %43, align 8, !tbaa !9
  %535 = sub nsw i64 %534, 1
  store i64 %535, ptr %49, align 8, !tbaa !9
  br label %538

536:                                              ; preds = %526
  %537 = load i64, ptr %43, align 8, !tbaa !9
  store i64 %537, ptr %49, align 8, !tbaa !9
  br label %538

538:                                              ; preds = %536, %533
  %539 = load i64, ptr %49, align 8, !tbaa !9
  %540 = icmp sgt i64 %539, 0
  br i1 %540, label %541, label %574

541:                                              ; preds = %538
  %542 = load ptr, ptr %18, align 8, !tbaa !5
  %543 = load ptr, ptr %17, align 8, !tbaa !5
  %544 = load i64, ptr %543, align 8, !tbaa !9
  %545 = load i64, ptr %38, align 8, !tbaa !9
  %546 = sub nsw i64 %544, %545
  %547 = load i64, ptr %40, align 8, !tbaa !9
  %548 = load i64, ptr %38, align 8, !tbaa !9
  %549 = add nsw i64 %547, %548
  %550 = load i64, ptr %26, align 8, !tbaa !9
  %551 = mul nsw i64 %549, %550
  %552 = add nsw i64 %546, %551
  %553 = getelementptr inbounds double, ptr %542, i64 %552
  %554 = load ptr, ptr %18, align 8, !tbaa !5
  %555 = load ptr, ptr %17, align 8, !tbaa !5
  %556 = load i64, ptr %555, align 8, !tbaa !9
  %557 = load i64, ptr %38, align 8, !tbaa !9
  %558 = sub nsw i64 %556, %557
  %559 = add nsw i64 %558, 1
  %560 = load i64, ptr %40, align 8, !tbaa !9
  %561 = load i64, ptr %38, align 8, !tbaa !9
  %562 = add nsw i64 %560, %561
  %563 = load i64, ptr %26, align 8, !tbaa !9
  %564 = mul nsw i64 %562, %563
  %565 = add nsw i64 %559, %564
  %566 = getelementptr inbounds double, ptr %554, i64 %565
  %567 = load ptr, ptr %20, align 8, !tbaa !5
  %568 = load i64, ptr %40, align 8, !tbaa !9
  %569 = getelementptr inbounds double, ptr %567, i64 %568
  %570 = load ptr, ptr %24, align 8, !tbaa !5
  %571 = load i64, ptr %40, align 8, !tbaa !9
  %572 = getelementptr inbounds double, ptr %570, i64 %571
  %573 = call i32 @dlartv_(ptr noundef %49, ptr noundef %553, ptr noundef %51, ptr noundef %566, ptr noundef %51, ptr noundef %569, ptr noundef %572, ptr noundef %44)
  br label %574

574:                                              ; preds = %541, %538
  br label %575

575:                                              ; preds = %574
  %576 = load i64, ptr %38, align 8, !tbaa !9
  %577 = add nsw i64 %576, 1
  store i64 %577, ptr %38, align 8, !tbaa !9
  br label %522, !llvm.loop !16

578:                                              ; preds = %522
  br label %692

579:                                              ; preds = %511
  %580 = load i64, ptr %40, align 8, !tbaa !9
  %581 = load i64, ptr %44, align 8, !tbaa !9
  %582 = load i64, ptr %43, align 8, !tbaa !9
  %583 = sub nsw i64 %582, 2
  %584 = mul nsw i64 %581, %583
  %585 = add nsw i64 %580, %584
  store i64 %585, ptr %58, align 8, !tbaa !9
  %586 = load i64, ptr %58, align 8, !tbaa !9
  %587 = load i64, ptr %40, align 8, !tbaa !9
  %588 = icmp sge i64 %586, %587
  br i1 %588, label %589, label %644

589:                                              ; preds = %579
  %590 = load i64, ptr %58, align 8, !tbaa !9
  store i64 %590, ptr %32, align 8, !tbaa !9
  %591 = load i64, ptr %44, align 8, !tbaa !9
  store i64 %591, ptr %31, align 8, !tbaa !9
  %592 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %592, ptr %48, align 8, !tbaa !9
  br label %593

593:                                              ; preds = %639, %589
  %594 = load i64, ptr %31, align 8, !tbaa !9
  %595 = icmp slt i64 %594, 0
  br i1 %595, label %596, label %601

596:                                              ; preds = %593
  %597 = load i64, ptr %48, align 8, !tbaa !9
  %598 = load i64, ptr %32, align 8, !tbaa !9
  %599 = icmp sge i64 %597, %598
  %600 = zext i1 %599 to i32
  br label %606

601:                                              ; preds = %593
  %602 = load i64, ptr %48, align 8, !tbaa !9
  %603 = load i64, ptr %32, align 8, !tbaa !9
  %604 = icmp sle i64 %602, %603
  %605 = zext i1 %604 to i32
  br label %606

606:                                              ; preds = %601, %596
  %607 = phi i32 [ %600, %596 ], [ %605, %601 ]
  %608 = icmp ne i32 %607, 0
  br i1 %608, label %609, label %643

609:                                              ; preds = %606
  %610 = load ptr, ptr %17, align 8, !tbaa !5
  %611 = load i64, ptr %610, align 8, !tbaa !9
  %612 = sub nsw i64 %611, 1
  store i64 %612, ptr %33, align 8, !tbaa !9
  %613 = load ptr, ptr %18, align 8, !tbaa !5
  %614 = load ptr, ptr %17, align 8, !tbaa !5
  %615 = load i64, ptr %614, align 8, !tbaa !9
  %616 = sub nsw i64 %615, 1
  %617 = load i64, ptr %48, align 8, !tbaa !9
  %618 = add nsw i64 %617, 1
  %619 = load i64, ptr %26, align 8, !tbaa !9
  %620 = mul nsw i64 %618, %619
  %621 = add nsw i64 %616, %620
  %622 = getelementptr inbounds double, ptr %613, i64 %621
  %623 = load ptr, ptr %18, align 8, !tbaa !5
  %624 = load ptr, ptr %17, align 8, !tbaa !5
  %625 = load i64, ptr %624, align 8, !tbaa !9
  %626 = load i64, ptr %48, align 8, !tbaa !9
  %627 = add nsw i64 %626, 1
  %628 = load i64, ptr %26, align 8, !tbaa !9
  %629 = mul nsw i64 %627, %628
  %630 = add nsw i64 %625, %629
  %631 = getelementptr inbounds double, ptr %623, i64 %630
  %632 = load ptr, ptr %20, align 8, !tbaa !5
  %633 = load i64, ptr %48, align 8, !tbaa !9
  %634 = getelementptr inbounds double, ptr %632, i64 %633
  %635 = load ptr, ptr %24, align 8, !tbaa !5
  %636 = load i64, ptr %48, align 8, !tbaa !9
  %637 = getelementptr inbounds double, ptr %635, i64 %636
  %638 = call i32 @f2c_drot(ptr noundef %33, ptr noundef %622, ptr noundef %55, ptr noundef %631, ptr noundef %55, ptr noundef %634, ptr noundef %637)
  br label %639

639:                                              ; preds = %609
  %640 = load i64, ptr %31, align 8, !tbaa !9
  %641 = load i64, ptr %48, align 8, !tbaa !9
  %642 = add nsw i64 %641, %640
  store i64 %642, ptr %48, align 8, !tbaa !9
  br label %593, !llvm.loop !17

643:                                              ; preds = %606
  br label %644

644:                                              ; preds = %643, %579
  %645 = load i64, ptr %50, align 8, !tbaa !9
  store i64 %645, ptr %31, align 8, !tbaa !9
  %646 = load ptr, ptr %16, align 8, !tbaa !5
  %647 = load i64, ptr %646, align 8, !tbaa !9
  %648 = load i64, ptr %41, align 8, !tbaa !9
  %649 = sub nsw i64 %647, %648
  store i64 %649, ptr %32, align 8, !tbaa !9
  %650 = load i64, ptr %31, align 8, !tbaa !9
  %651 = load i64, ptr %32, align 8, !tbaa !9
  %652 = icmp sle i64 %650, %651
  br i1 %652, label %653, label %655

653:                                              ; preds = %644
  %654 = load i64, ptr %31, align 8, !tbaa !9
  br label %657

655:                                              ; preds = %644
  %656 = load i64, ptr %32, align 8, !tbaa !9
  br label %657

657:                                              ; preds = %655, %653
  %658 = phi i64 [ %654, %653 ], [ %656, %655 ]
  store i64 %658, ptr %53, align 8, !tbaa !9
  %659 = load i64, ptr %58, align 8, !tbaa !9
  %660 = load i64, ptr %44, align 8, !tbaa !9
  %661 = add nsw i64 %659, %660
  store i64 %661, ptr %56, align 8, !tbaa !9
  %662 = load i64, ptr %53, align 8, !tbaa !9
  %663 = icmp sgt i64 %662, 0
  br i1 %663, label %664, label %691

664:                                              ; preds = %657
  %665 = load ptr, ptr %18, align 8, !tbaa !5
  %666 = load ptr, ptr %17, align 8, !tbaa !5
  %667 = load i64, ptr %666, align 8, !tbaa !9
  %668 = sub nsw i64 %667, 1
  %669 = load i64, ptr %56, align 8, !tbaa !9
  %670 = add nsw i64 %669, 1
  %671 = load i64, ptr %26, align 8, !tbaa !9
  %672 = mul nsw i64 %670, %671
  %673 = add nsw i64 %668, %672
  %674 = getelementptr inbounds double, ptr %665, i64 %673
  %675 = load ptr, ptr %18, align 8, !tbaa !5
  %676 = load ptr, ptr %17, align 8, !tbaa !5
  %677 = load i64, ptr %676, align 8, !tbaa !9
  %678 = load i64, ptr %56, align 8, !tbaa !9
  %679 = add nsw i64 %678, 1
  %680 = load i64, ptr %26, align 8, !tbaa !9
  %681 = mul nsw i64 %679, %680
  %682 = add nsw i64 %677, %681
  %683 = getelementptr inbounds double, ptr %675, i64 %682
  %684 = load ptr, ptr %20, align 8, !tbaa !5
  %685 = load i64, ptr %56, align 8, !tbaa !9
  %686 = getelementptr inbounds double, ptr %684, i64 %685
  %687 = load ptr, ptr %24, align 8, !tbaa !5
  %688 = load i64, ptr %56, align 8, !tbaa !9
  %689 = getelementptr inbounds double, ptr %687, i64 %688
  %690 = call i32 @f2c_drot(ptr noundef %53, ptr noundef %674, ptr noundef %55, ptr noundef %683, ptr noundef %55, ptr noundef %686, ptr noundef %689)
  br label %691

691:                                              ; preds = %664, %657
  br label %692

692:                                              ; preds = %691, %578
  br label %693

693:                                              ; preds = %692, %508
  %694 = load i64, ptr %62, align 8, !tbaa !9
  %695 = icmp ne i64 %694, 0
  br i1 %695, label %696, label %873

696:                                              ; preds = %693
  %697 = load i64, ptr %61, align 8, !tbaa !9
  %698 = icmp ne i64 %697, 0
  br i1 %698, label %699, label %825

699:                                              ; preds = %696
  %700 = load i64, ptr %60, align 8, !tbaa !9
  %701 = load i64, ptr %41, align 8, !tbaa !9
  %702 = icmp sge i64 %700, %701
  br i1 %702, label %703, label %705

703:                                              ; preds = %699
  %704 = load i64, ptr %60, align 8, !tbaa !9
  br label %707

705:                                              ; preds = %699
  %706 = load i64, ptr %41, align 8, !tbaa !9
  br label %707

707:                                              ; preds = %705, %703
  %708 = phi i64 [ %704, %703 ], [ %706, %705 ]
  store i64 %708, ptr %60, align 8, !tbaa !9
  store i64 0, ptr %31, align 8, !tbaa !9
  %709 = load i64, ptr %37, align 8, !tbaa !9
  %710 = sub nsw i64 %709, 3
  store i64 %710, ptr %32, align 8, !tbaa !9
  %711 = load i64, ptr %31, align 8, !tbaa !9
  %712 = load i64, ptr %32, align 8, !tbaa !9
  %713 = icmp sge i64 %711, %712
  br i1 %713, label %714, label %716

714:                                              ; preds = %707
  %715 = load i64, ptr %31, align 8, !tbaa !9
  br label %718

716:                                              ; preds = %707
  %717 = load i64, ptr %32, align 8, !tbaa !9
  br label %718

718:                                              ; preds = %716, %714
  %719 = phi i64 [ %715, %714 ], [ %717, %716 ]
  store i64 %719, ptr %39, align 8, !tbaa !9
  %720 = load i64, ptr %35, align 8, !tbaa !9
  %721 = load ptr, ptr %17, align 8, !tbaa !5
  %722 = load i64, ptr %721, align 8, !tbaa !9
  %723 = mul nsw i64 %720, %722
  %724 = add nsw i64 %723, 1
  store i64 %724, ptr %64, align 8, !tbaa !9
  %725 = load i64, ptr %37, align 8, !tbaa !9
  %726 = icmp eq i64 %725, 2
  br i1 %726, label %727, label %732

727:                                              ; preds = %718
  %728 = load ptr, ptr %17, align 8, !tbaa !5
  %729 = load i64, ptr %728, align 8, !tbaa !9
  %730 = load i64, ptr %64, align 8, !tbaa !9
  %731 = add nsw i64 %730, %729
  store i64 %731, ptr %64, align 8, !tbaa !9
  br label %732

732:                                              ; preds = %727, %718
  %733 = load i64, ptr %64, align 8, !tbaa !9
  %734 = load i64, ptr %60, align 8, !tbaa !9
  %735 = icmp sle i64 %733, %734
  br i1 %735, label %736, label %738

736:                                              ; preds = %732
  %737 = load i64, ptr %64, align 8, !tbaa !9
  br label %740

738:                                              ; preds = %732
  %739 = load i64, ptr %60, align 8, !tbaa !9
  br label %740

740:                                              ; preds = %738, %736
  %741 = phi i64 [ %737, %736 ], [ %739, %738 ]
  store i64 %741, ptr %64, align 8, !tbaa !9
  %742 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %742, ptr %31, align 8, !tbaa !9
  %743 = load i64, ptr %44, align 8, !tbaa !9
  store i64 %743, ptr %32, align 8, !tbaa !9
  %744 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %744, ptr %36, align 8, !tbaa !9
  br label %745

745:                                              ; preds = %820, %740
  %746 = load i64, ptr %32, align 8, !tbaa !9
  %747 = icmp slt i64 %746, 0
  br i1 %747, label %748, label %753

748:                                              ; preds = %745
  %749 = load i64, ptr %36, align 8, !tbaa !9
  %750 = load i64, ptr %31, align 8, !tbaa !9
  %751 = icmp sge i64 %749, %750
  %752 = zext i1 %751 to i32
  br label %758

753:                                              ; preds = %745
  %754 = load i64, ptr %36, align 8, !tbaa !9
  %755 = load i64, ptr %31, align 8, !tbaa !9
  %756 = icmp sle i64 %754, %755
  %757 = zext i1 %756 to i32
  br label %758

758:                                              ; preds = %753, %748
  %759 = phi i32 [ %752, %748 ], [ %757, %753 ]
  %760 = icmp ne i32 %759, 0
  br i1 %760, label %761, label %824

761:                                              ; preds = %758
  %762 = load i64, ptr %35, align 8, !tbaa !9
  %763 = load i64, ptr %39, align 8, !tbaa !9
  %764 = load i64, ptr %50, align 8, !tbaa !9
  %765 = sdiv i64 %763, %764
  %766 = sub nsw i64 %762, %765
  store i64 %766, ptr %45, align 8, !tbaa !9
  %767 = load i64, ptr %39, align 8, !tbaa !9
  %768 = add nsw i64 %767, 1
  store i64 %768, ptr %39, align 8, !tbaa !9
  store i64 1, ptr %33, align 8, !tbaa !9
  %769 = load i64, ptr %36, align 8, !tbaa !9
  %770 = load i64, ptr %45, align 8, !tbaa !9
  %771 = sub nsw i64 %769, %770
  store i64 %771, ptr %34, align 8, !tbaa !9
  %772 = load i64, ptr %33, align 8, !tbaa !9
  %773 = load i64, ptr %34, align 8, !tbaa !9
  %774 = icmp sge i64 %772, %773
  br i1 %774, label %775, label %777

775:                                              ; preds = %761
  %776 = load i64, ptr %33, align 8, !tbaa !9
  br label %779

777:                                              ; preds = %761
  %778 = load i64, ptr %34, align 8, !tbaa !9
  br label %779

779:                                              ; preds = %777, %775
  %780 = phi i64 [ %776, %775 ], [ %778, %777 ]
  store i64 %780, ptr %46, align 8, !tbaa !9
  %781 = load i64, ptr %64, align 8, !tbaa !9
  %782 = add nsw i64 %781, 1
  %783 = load i64, ptr %46, align 8, !tbaa !9
  %784 = sub nsw i64 %782, %783
  store i64 %784, ptr %42, align 8, !tbaa !9
  %785 = load i64, ptr %64, align 8, !tbaa !9
  %786 = load ptr, ptr %17, align 8, !tbaa !5
  %787 = load i64, ptr %786, align 8, !tbaa !9
  %788 = add nsw i64 %785, %787
  store i64 %788, ptr %33, align 8, !tbaa !9
  %789 = load i64, ptr %33, align 8, !tbaa !9
  %790 = load i64, ptr %60, align 8, !tbaa !9
  %791 = icmp sle i64 %789, %790
  br i1 %791, label %792, label %794

792:                                              ; preds = %779
  %793 = load i64, ptr %33, align 8, !tbaa !9
  br label %796

794:                                              ; preds = %779
  %795 = load i64, ptr %60, align 8, !tbaa !9
  br label %796

796:                                              ; preds = %794, %792
  %797 = phi i64 [ %793, %792 ], [ %795, %794 ]
  store i64 %797, ptr %64, align 8, !tbaa !9
  %798 = load ptr, ptr %22, align 8, !tbaa !5
  %799 = load i64, ptr %46, align 8, !tbaa !9
  %800 = load i64, ptr %36, align 8, !tbaa !9
  %801 = sub nsw i64 %800, 1
  %802 = load i64, ptr %28, align 8, !tbaa !9
  %803 = mul nsw i64 %801, %802
  %804 = add nsw i64 %799, %803
  %805 = getelementptr inbounds double, ptr %798, i64 %804
  %806 = load ptr, ptr %22, align 8, !tbaa !5
  %807 = load i64, ptr %46, align 8, !tbaa !9
  %808 = load i64, ptr %36, align 8, !tbaa !9
  %809 = load i64, ptr %28, align 8, !tbaa !9
  %810 = mul nsw i64 %808, %809
  %811 = add nsw i64 %807, %810
  %812 = getelementptr inbounds double, ptr %806, i64 %811
  %813 = load ptr, ptr %20, align 8, !tbaa !5
  %814 = load i64, ptr %36, align 8, !tbaa !9
  %815 = getelementptr inbounds double, ptr %813, i64 %814
  %816 = load ptr, ptr %24, align 8, !tbaa !5
  %817 = load i64, ptr %36, align 8, !tbaa !9
  %818 = getelementptr inbounds double, ptr %816, i64 %817
  %819 = call i32 @f2c_drot(ptr noundef %42, ptr noundef %805, ptr noundef @c__1, ptr noundef %812, ptr noundef @c__1, ptr noundef %815, ptr noundef %818)
  br label %820

820:                                              ; preds = %796
  %821 = load i64, ptr %32, align 8, !tbaa !9
  %822 = load i64, ptr %36, align 8, !tbaa !9
  %823 = add nsw i64 %822, %821
  store i64 %823, ptr %36, align 8, !tbaa !9
  br label %745, !llvm.loop !18

824:                                              ; preds = %758
  br label %872

825:                                              ; preds = %696
  %826 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %826, ptr %32, align 8, !tbaa !9
  %827 = load i64, ptr %44, align 8, !tbaa !9
  store i64 %827, ptr %31, align 8, !tbaa !9
  %828 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %828, ptr %36, align 8, !tbaa !9
  br label %829

829:                                              ; preds = %867, %825
  %830 = load i64, ptr %31, align 8, !tbaa !9
  %831 = icmp slt i64 %830, 0
  br i1 %831, label %832, label %837

832:                                              ; preds = %829
  %833 = load i64, ptr %36, align 8, !tbaa !9
  %834 = load i64, ptr %32, align 8, !tbaa !9
  %835 = icmp sge i64 %833, %834
  %836 = zext i1 %835 to i32
  br label %842

837:                                              ; preds = %829
  %838 = load i64, ptr %36, align 8, !tbaa !9
  %839 = load i64, ptr %32, align 8, !tbaa !9
  %840 = icmp sle i64 %838, %839
  %841 = zext i1 %840 to i32
  br label %842

842:                                              ; preds = %837, %832
  %843 = phi i32 [ %836, %832 ], [ %841, %837 ]
  %844 = icmp ne i32 %843, 0
  br i1 %844, label %845, label %871

845:                                              ; preds = %842
  %846 = load ptr, ptr %16, align 8, !tbaa !5
  %847 = load ptr, ptr %22, align 8, !tbaa !5
  %848 = load i64, ptr %36, align 8, !tbaa !9
  %849 = sub nsw i64 %848, 1
  %850 = load i64, ptr %28, align 8, !tbaa !9
  %851 = mul nsw i64 %849, %850
  %852 = add nsw i64 %851, 1
  %853 = getelementptr inbounds double, ptr %847, i64 %852
  %854 = load ptr, ptr %22, align 8, !tbaa !5
  %855 = load i64, ptr %36, align 8, !tbaa !9
  %856 = load i64, ptr %28, align 8, !tbaa !9
  %857 = mul nsw i64 %855, %856
  %858 = add nsw i64 %857, 1
  %859 = getelementptr inbounds double, ptr %854, i64 %858
  %860 = load ptr, ptr %20, align 8, !tbaa !5
  %861 = load i64, ptr %36, align 8, !tbaa !9
  %862 = getelementptr inbounds double, ptr %860, i64 %861
  %863 = load ptr, ptr %24, align 8, !tbaa !5
  %864 = load i64, ptr %36, align 8, !tbaa !9
  %865 = getelementptr inbounds double, ptr %863, i64 %864
  %866 = call i32 @f2c_drot(ptr noundef %846, ptr noundef %853, ptr noundef @c__1, ptr noundef %859, ptr noundef @c__1, ptr noundef %862, ptr noundef %865)
  br label %867

867:                                              ; preds = %845
  %868 = load i64, ptr %31, align 8, !tbaa !9
  %869 = load i64, ptr %36, align 8, !tbaa !9
  %870 = add nsw i64 %869, %868
  store i64 %870, ptr %36, align 8, !tbaa !9
  br label %829, !llvm.loop !19

871:                                              ; preds = %842
  br label %872

872:                                              ; preds = %871, %824
  br label %873

873:                                              ; preds = %872, %693
  %874 = load i64, ptr %41, align 8, !tbaa !9
  %875 = load i64, ptr %47, align 8, !tbaa !9
  %876 = add nsw i64 %874, %875
  %877 = load ptr, ptr %16, align 8, !tbaa !5
  %878 = load i64, ptr %877, align 8, !tbaa !9
  %879 = icmp sgt i64 %876, %878
  br i1 %879, label %880, label %887

880:                                              ; preds = %873
  %881 = load i64, ptr %43, align 8, !tbaa !9
  %882 = add nsw i64 %881, -1
  store i64 %882, ptr %43, align 8, !tbaa !9
  %883 = load i64, ptr %41, align 8, !tbaa !9
  %884 = load i64, ptr %47, align 8, !tbaa !9
  %885 = sub nsw i64 %883, %884
  %886 = sub nsw i64 %885, 1
  store i64 %886, ptr %41, align 8, !tbaa !9
  br label %887

887:                                              ; preds = %880, %873
  %888 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %888, ptr %31, align 8, !tbaa !9
  %889 = load i64, ptr %44, align 8, !tbaa !9
  store i64 %889, ptr %32, align 8, !tbaa !9
  %890 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %890, ptr %36, align 8, !tbaa !9
  br label %891

891:                                              ; preds = %953, %887
  %892 = load i64, ptr %32, align 8, !tbaa !9
  %893 = icmp slt i64 %892, 0
  br i1 %893, label %894, label %899

894:                                              ; preds = %891
  %895 = load i64, ptr %36, align 8, !tbaa !9
  %896 = load i64, ptr %31, align 8, !tbaa !9
  %897 = icmp sge i64 %895, %896
  %898 = zext i1 %897 to i32
  br label %904

899:                                              ; preds = %891
  %900 = load i64, ptr %36, align 8, !tbaa !9
  %901 = load i64, ptr %31, align 8, !tbaa !9
  %902 = icmp sle i64 %900, %901
  %903 = zext i1 %902 to i32
  br label %904

904:                                              ; preds = %899, %894
  %905 = phi i32 [ %898, %894 ], [ %903, %899 ]
  %906 = icmp ne i32 %905, 0
  br i1 %906, label %907, label %957

907:                                              ; preds = %904
  %908 = load ptr, ptr %24, align 8, !tbaa !5
  %909 = load i64, ptr %36, align 8, !tbaa !9
  %910 = getelementptr inbounds double, ptr %908, i64 %909
  %911 = load double, ptr %910, align 8, !tbaa !14
  %912 = load ptr, ptr %18, align 8, !tbaa !5
  %913 = load i64, ptr %36, align 8, !tbaa !9
  %914 = load ptr, ptr %17, align 8, !tbaa !5
  %915 = load i64, ptr %914, align 8, !tbaa !9
  %916 = add nsw i64 %913, %915
  %917 = load i64, ptr %26, align 8, !tbaa !9
  %918 = mul nsw i64 %916, %917
  %919 = add nsw i64 %918, 1
  %920 = getelementptr inbounds double, ptr %912, i64 %919
  %921 = load double, ptr %920, align 8, !tbaa !14
  %922 = fmul double %911, %921
  %923 = load ptr, ptr %24, align 8, !tbaa !5
  %924 = load i64, ptr %36, align 8, !tbaa !9
  %925 = load ptr, ptr %17, align 8, !tbaa !5
  %926 = load i64, ptr %925, align 8, !tbaa !9
  %927 = add nsw i64 %924, %926
  %928 = getelementptr inbounds double, ptr %923, i64 %927
  store double %922, ptr %928, align 8, !tbaa !14
  %929 = load ptr, ptr %20, align 8, !tbaa !5
  %930 = load i64, ptr %36, align 8, !tbaa !9
  %931 = getelementptr inbounds double, ptr %929, i64 %930
  %932 = load double, ptr %931, align 8, !tbaa !14
  %933 = load ptr, ptr %18, align 8, !tbaa !5
  %934 = load i64, ptr %36, align 8, !tbaa !9
  %935 = load ptr, ptr %17, align 8, !tbaa !5
  %936 = load i64, ptr %935, align 8, !tbaa !9
  %937 = add nsw i64 %934, %936
  %938 = load i64, ptr %26, align 8, !tbaa !9
  %939 = mul nsw i64 %937, %938
  %940 = add nsw i64 %939, 1
  %941 = getelementptr inbounds double, ptr %933, i64 %940
  %942 = load double, ptr %941, align 8, !tbaa !14
  %943 = fmul double %932, %942
  %944 = load ptr, ptr %18, align 8, !tbaa !5
  %945 = load i64, ptr %36, align 8, !tbaa !9
  %946 = load ptr, ptr %17, align 8, !tbaa !5
  %947 = load i64, ptr %946, align 8, !tbaa !9
  %948 = add nsw i64 %945, %947
  %949 = load i64, ptr %26, align 8, !tbaa !9
  %950 = mul nsw i64 %948, %949
  %951 = add nsw i64 %950, 1
  %952 = getelementptr inbounds double, ptr %944, i64 %951
  store double %943, ptr %952, align 8, !tbaa !14
  br label %953

953:                                              ; preds = %907
  %954 = load i64, ptr %32, align 8, !tbaa !9
  %955 = load i64, ptr %36, align 8, !tbaa !9
  %956 = add nsw i64 %955, %954
  store i64 %956, ptr %36, align 8, !tbaa !9
  br label %891, !llvm.loop !20

957:                                              ; preds = %904
  br label %958

958:                                              ; preds = %957
  %959 = load i64, ptr %37, align 8, !tbaa !9
  %960 = add nsw i64 %959, -1
  store i64 %960, ptr %37, align 8, !tbaa !9
  br label %234, !llvm.loop !21

961:                                              ; preds = %234
  br label %962

962:                                              ; preds = %961
  %963 = load i64, ptr %35, align 8, !tbaa !9
  %964 = add nsw i64 %963, 1
  store i64 %964, ptr %35, align 8, !tbaa !9
  br label %227, !llvm.loop !22

965:                                              ; preds = %227
  br label %966

966:                                              ; preds = %965, %217
  %967 = load ptr, ptr %17, align 8, !tbaa !5
  %968 = load i64, ptr %967, align 8, !tbaa !9
  %969 = icmp sgt i64 %968, 0
  br i1 %969, label %970, label %996

970:                                              ; preds = %966
  %971 = load ptr, ptr %16, align 8, !tbaa !5
  %972 = load i64, ptr %971, align 8, !tbaa !9
  %973 = sub nsw i64 %972, 1
  store i64 %973, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %35, align 8, !tbaa !9
  br label %974

974:                                              ; preds = %992, %970
  %975 = load i64, ptr %35, align 8, !tbaa !9
  %976 = load i64, ptr %30, align 8, !tbaa !9
  %977 = icmp sle i64 %975, %976
  br i1 %977, label %978, label %995

978:                                              ; preds = %974
  %979 = load ptr, ptr %18, align 8, !tbaa !5
  %980 = load ptr, ptr %17, align 8, !tbaa !5
  %981 = load i64, ptr %980, align 8, !tbaa !9
  %982 = load i64, ptr %35, align 8, !tbaa !9
  %983 = add nsw i64 %982, 1
  %984 = load i64, ptr %26, align 8, !tbaa !9
  %985 = mul nsw i64 %983, %984
  %986 = add nsw i64 %981, %985
  %987 = getelementptr inbounds double, ptr %979, i64 %986
  %988 = load double, ptr %987, align 8, !tbaa !14
  %989 = load ptr, ptr %21, align 8, !tbaa !5
  %990 = load i64, ptr %35, align 8, !tbaa !9
  %991 = getelementptr inbounds double, ptr %989, i64 %990
  store double %988, ptr %991, align 8, !tbaa !14
  br label %992

992:                                              ; preds = %978
  %993 = load i64, ptr %35, align 8, !tbaa !9
  %994 = add nsw i64 %993, 1
  store i64 %994, ptr %35, align 8, !tbaa !9
  br label %974, !llvm.loop !23

995:                                              ; preds = %974
  br label %1012

996:                                              ; preds = %966
  %997 = load ptr, ptr %16, align 8, !tbaa !5
  %998 = load i64, ptr %997, align 8, !tbaa !9
  %999 = sub nsw i64 %998, 1
  store i64 %999, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %35, align 8, !tbaa !9
  br label %1000

1000:                                             ; preds = %1008, %996
  %1001 = load i64, ptr %35, align 8, !tbaa !9
  %1002 = load i64, ptr %30, align 8, !tbaa !9
  %1003 = icmp sle i64 %1001, %1002
  br i1 %1003, label %1004, label %1011

1004:                                             ; preds = %1000
  %1005 = load ptr, ptr %21, align 8, !tbaa !5
  %1006 = load i64, ptr %35, align 8, !tbaa !9
  %1007 = getelementptr inbounds double, ptr %1005, i64 %1006
  store double 0.000000e+00, ptr %1007, align 8, !tbaa !14
  br label %1008

1008:                                             ; preds = %1004
  %1009 = load i64, ptr %35, align 8, !tbaa !9
  %1010 = add nsw i64 %1009, 1
  store i64 %1010, ptr %35, align 8, !tbaa !9
  br label %1000, !llvm.loop !24

1011:                                             ; preds = %1000
  br label %1012

1012:                                             ; preds = %1011, %995
  %1013 = load ptr, ptr %16, align 8, !tbaa !5
  %1014 = load i64, ptr %1013, align 8, !tbaa !9
  store i64 %1014, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %35, align 8, !tbaa !9
  br label %1015

1015:                                             ; preds = %1031, %1012
  %1016 = load i64, ptr %35, align 8, !tbaa !9
  %1017 = load i64, ptr %30, align 8, !tbaa !9
  %1018 = icmp sle i64 %1016, %1017
  br i1 %1018, label %1019, label %1034

1019:                                             ; preds = %1015
  %1020 = load ptr, ptr %18, align 8, !tbaa !5
  %1021 = load i64, ptr %44, align 8, !tbaa !9
  %1022 = load i64, ptr %35, align 8, !tbaa !9
  %1023 = load i64, ptr %26, align 8, !tbaa !9
  %1024 = mul nsw i64 %1022, %1023
  %1025 = add nsw i64 %1021, %1024
  %1026 = getelementptr inbounds double, ptr %1020, i64 %1025
  %1027 = load double, ptr %1026, align 8, !tbaa !14
  %1028 = load ptr, ptr %20, align 8, !tbaa !5
  %1029 = load i64, ptr %35, align 8, !tbaa !9
  %1030 = getelementptr inbounds double, ptr %1028, i64 %1029
  store double %1027, ptr %1030, align 8, !tbaa !14
  br label %1031

1031:                                             ; preds = %1019
  %1032 = load i64, ptr %35, align 8, !tbaa !9
  %1033 = add nsw i64 %1032, 1
  store i64 %1033, ptr %35, align 8, !tbaa !9
  br label %1015, !llvm.loop !25

1034:                                             ; preds = %1015
  br label %1815

1035:                                             ; preds = %213
  %1036 = load ptr, ptr %17, align 8, !tbaa !5
  %1037 = load i64, ptr %1036, align 8, !tbaa !9
  %1038 = icmp sgt i64 %1037, 1
  br i1 %1038, label %1039, label %1750

1039:                                             ; preds = %1035
  store i64 0, ptr %43, align 8, !tbaa !9
  %1040 = load i64, ptr %47, align 8, !tbaa !9
  %1041 = add nsw i64 %1040, 2
  store i64 %1041, ptr %40, align 8, !tbaa !9
  store i64 1, ptr %41, align 8, !tbaa !9
  %1042 = load ptr, ptr %16, align 8, !tbaa !5
  %1043 = load i64, ptr %1042, align 8, !tbaa !9
  %1044 = sub nsw i64 %1043, 2
  store i64 %1044, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %35, align 8, !tbaa !9
  br label %1045

1045:                                             ; preds = %1746, %1039
  %1046 = load i64, ptr %35, align 8, !tbaa !9
  %1047 = load i64, ptr %30, align 8, !tbaa !9
  %1048 = icmp sle i64 %1046, %1047
  br i1 %1048, label %1049, label %1749

1049:                                             ; preds = %1045
  %1050 = load i64, ptr %47, align 8, !tbaa !9
  %1051 = add nsw i64 %1050, 1
  store i64 %1051, ptr %37, align 8, !tbaa !9
  br label %1052

1052:                                             ; preds = %1742, %1049
  %1053 = load i64, ptr %37, align 8, !tbaa !9
  %1054 = icmp sge i64 %1053, 2
  br i1 %1054, label %1055, label %1745

1055:                                             ; preds = %1052
  %1056 = load i64, ptr %47, align 8, !tbaa !9
  %1057 = load i64, ptr %40, align 8, !tbaa !9
  %1058 = add nsw i64 %1057, %1056
  store i64 %1058, ptr %40, align 8, !tbaa !9
  %1059 = load i64, ptr %47, align 8, !tbaa !9
  %1060 = load i64, ptr %41, align 8, !tbaa !9
  %1061 = add nsw i64 %1060, %1059
  store i64 %1061, ptr %41, align 8, !tbaa !9
  %1062 = load i64, ptr %43, align 8, !tbaa !9
  %1063 = icmp sgt i64 %1062, 0
  br i1 %1063, label %1064, label %1195

1064:                                             ; preds = %1055
  %1065 = load ptr, ptr %18, align 8, !tbaa !5
  %1066 = load i64, ptr %44, align 8, !tbaa !9
  %1067 = load i64, ptr %40, align 8, !tbaa !9
  %1068 = load i64, ptr %44, align 8, !tbaa !9
  %1069 = sub nsw i64 %1067, %1068
  %1070 = load i64, ptr %26, align 8, !tbaa !9
  %1071 = mul nsw i64 %1069, %1070
  %1072 = add nsw i64 %1066, %1071
  %1073 = getelementptr inbounds double, ptr %1065, i64 %1072
  %1074 = load ptr, ptr %24, align 8, !tbaa !5
  %1075 = load i64, ptr %40, align 8, !tbaa !9
  %1076 = getelementptr inbounds double, ptr %1074, i64 %1075
  %1077 = load ptr, ptr %20, align 8, !tbaa !5
  %1078 = load i64, ptr %40, align 8, !tbaa !9
  %1079 = getelementptr inbounds double, ptr %1077, i64 %1078
  %1080 = call i32 @dlargv_(ptr noundef %43, ptr noundef %1073, ptr noundef %51, ptr noundef %1076, ptr noundef %44, ptr noundef %1079, ptr noundef %44)
  %1081 = load i64, ptr %43, align 8, !tbaa !9
  %1082 = load ptr, ptr %17, align 8, !tbaa !5
  %1083 = load i64, ptr %1082, align 8, !tbaa !9
  %1084 = shl i64 %1083, 1
  %1085 = sub nsw i64 %1084, 1
  %1086 = icmp sgt i64 %1081, %1085
  br i1 %1086, label %1087, label %1134

1087:                                             ; preds = %1064
  %1088 = load ptr, ptr %17, align 8, !tbaa !5
  %1089 = load i64, ptr %1088, align 8, !tbaa !9
  %1090 = sub nsw i64 %1089, 1
  store i64 %1090, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %38, align 8, !tbaa !9
  br label %1091

1091:                                             ; preds = %1130, %1087
  %1092 = load i64, ptr %38, align 8, !tbaa !9
  %1093 = load i64, ptr %32, align 8, !tbaa !9
  %1094 = icmp sle i64 %1092, %1093
  br i1 %1094, label %1095, label %1133

1095:                                             ; preds = %1091
  %1096 = load ptr, ptr %18, align 8, !tbaa !5
  %1097 = load i64, ptr %44, align 8, !tbaa !9
  %1098 = load i64, ptr %38, align 8, !tbaa !9
  %1099 = sub nsw i64 %1097, %1098
  %1100 = load i64, ptr %40, align 8, !tbaa !9
  %1101 = load i64, ptr %44, align 8, !tbaa !9
  %1102 = sub nsw i64 %1100, %1101
  %1103 = load i64, ptr %38, align 8, !tbaa !9
  %1104 = add nsw i64 %1102, %1103
  %1105 = load i64, ptr %26, align 8, !tbaa !9
  %1106 = mul nsw i64 %1104, %1105
  %1107 = add nsw i64 %1099, %1106
  %1108 = getelementptr inbounds double, ptr %1096, i64 %1107
  %1109 = load ptr, ptr %18, align 8, !tbaa !5
  %1110 = load i64, ptr %44, align 8, !tbaa !9
  %1111 = load i64, ptr %38, align 8, !tbaa !9
  %1112 = sub nsw i64 %1110, %1111
  %1113 = add nsw i64 %1112, 1
  %1114 = load i64, ptr %40, align 8, !tbaa !9
  %1115 = load i64, ptr %44, align 8, !tbaa !9
  %1116 = sub nsw i64 %1114, %1115
  %1117 = load i64, ptr %38, align 8, !tbaa !9
  %1118 = add nsw i64 %1116, %1117
  %1119 = load i64, ptr %26, align 8, !tbaa !9
  %1120 = mul nsw i64 %1118, %1119
  %1121 = add nsw i64 %1113, %1120
  %1122 = getelementptr inbounds double, ptr %1109, i64 %1121
  %1123 = load ptr, ptr %20, align 8, !tbaa !5
  %1124 = load i64, ptr %40, align 8, !tbaa !9
  %1125 = getelementptr inbounds double, ptr %1123, i64 %1124
  %1126 = load ptr, ptr %24, align 8, !tbaa !5
  %1127 = load i64, ptr %40, align 8, !tbaa !9
  %1128 = getelementptr inbounds double, ptr %1126, i64 %1127
  %1129 = call i32 @dlartv_(ptr noundef %43, ptr noundef %1108, ptr noundef %51, ptr noundef %1122, ptr noundef %51, ptr noundef %1125, ptr noundef %1128, ptr noundef %44)
  br label %1130

1130:                                             ; preds = %1095
  %1131 = load i64, ptr %38, align 8, !tbaa !9
  %1132 = add nsw i64 %1131, 1
  store i64 %1132, ptr %38, align 8, !tbaa !9
  br label %1091, !llvm.loop !26

1133:                                             ; preds = %1091
  br label %1194

1134:                                             ; preds = %1064
  %1135 = load i64, ptr %40, align 8, !tbaa !9
  %1136 = load i64, ptr %44, align 8, !tbaa !9
  %1137 = load i64, ptr %43, align 8, !tbaa !9
  %1138 = sub nsw i64 %1137, 1
  %1139 = mul nsw i64 %1136, %1138
  %1140 = add nsw i64 %1135, %1139
  store i64 %1140, ptr %52, align 8, !tbaa !9
  %1141 = load i64, ptr %52, align 8, !tbaa !9
  store i64 %1141, ptr %32, align 8, !tbaa !9
  %1142 = load i64, ptr %44, align 8, !tbaa !9
  store i64 %1142, ptr %31, align 8, !tbaa !9
  %1143 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %1143, ptr %54, align 8, !tbaa !9
  br label %1144

1144:                                             ; preds = %1189, %1134
  %1145 = load i64, ptr %31, align 8, !tbaa !9
  %1146 = icmp slt i64 %1145, 0
  br i1 %1146, label %1147, label %1152

1147:                                             ; preds = %1144
  %1148 = load i64, ptr %54, align 8, !tbaa !9
  %1149 = load i64, ptr %32, align 8, !tbaa !9
  %1150 = icmp sge i64 %1148, %1149
  %1151 = zext i1 %1150 to i32
  br label %1157

1152:                                             ; preds = %1144
  %1153 = load i64, ptr %54, align 8, !tbaa !9
  %1154 = load i64, ptr %32, align 8, !tbaa !9
  %1155 = icmp sle i64 %1153, %1154
  %1156 = zext i1 %1155 to i32
  br label %1157

1157:                                             ; preds = %1152, %1147
  %1158 = phi i32 [ %1151, %1147 ], [ %1156, %1152 ]
  %1159 = icmp ne i32 %1158, 0
  br i1 %1159, label %1160, label %1193

1160:                                             ; preds = %1157
  %1161 = load ptr, ptr %18, align 8, !tbaa !5
  %1162 = load ptr, ptr %17, align 8, !tbaa !5
  %1163 = load i64, ptr %1162, align 8, !tbaa !9
  %1164 = load i64, ptr %54, align 8, !tbaa !9
  %1165 = load ptr, ptr %17, align 8, !tbaa !5
  %1166 = load i64, ptr %1165, align 8, !tbaa !9
  %1167 = sub nsw i64 %1164, %1166
  %1168 = load i64, ptr %26, align 8, !tbaa !9
  %1169 = mul nsw i64 %1167, %1168
  %1170 = add nsw i64 %1163, %1169
  %1171 = getelementptr inbounds double, ptr %1161, i64 %1170
  %1172 = load ptr, ptr %18, align 8, !tbaa !5
  %1173 = load i64, ptr %44, align 8, !tbaa !9
  %1174 = load i64, ptr %54, align 8, !tbaa !9
  %1175 = load ptr, ptr %17, align 8, !tbaa !5
  %1176 = load i64, ptr %1175, align 8, !tbaa !9
  %1177 = sub nsw i64 %1174, %1176
  %1178 = load i64, ptr %26, align 8, !tbaa !9
  %1179 = mul nsw i64 %1177, %1178
  %1180 = add nsw i64 %1173, %1179
  %1181 = getelementptr inbounds double, ptr %1172, i64 %1180
  %1182 = load ptr, ptr %20, align 8, !tbaa !5
  %1183 = load i64, ptr %54, align 8, !tbaa !9
  %1184 = getelementptr inbounds double, ptr %1182, i64 %1183
  %1185 = load ptr, ptr %24, align 8, !tbaa !5
  %1186 = load i64, ptr %54, align 8, !tbaa !9
  %1187 = getelementptr inbounds double, ptr %1185, i64 %1186
  %1188 = call i32 @f2c_drot(ptr noundef %50, ptr noundef %1171, ptr noundef %55, ptr noundef %1181, ptr noundef %55, ptr noundef %1184, ptr noundef %1187)
  br label %1189

1189:                                             ; preds = %1160
  %1190 = load i64, ptr %31, align 8, !tbaa !9
  %1191 = load i64, ptr %54, align 8, !tbaa !9
  %1192 = add nsw i64 %1191, %1190
  store i64 %1192, ptr %54, align 8, !tbaa !9
  br label %1144, !llvm.loop !27

1193:                                             ; preds = %1157
  br label %1194

1194:                                             ; preds = %1193, %1133
  br label %1195

1195:                                             ; preds = %1194, %1055
  %1196 = load i64, ptr %37, align 8, !tbaa !9
  %1197 = icmp sgt i64 %1196, 2
  br i1 %1197, label %1198, label %1290

1198:                                             ; preds = %1195
  %1199 = load i64, ptr %37, align 8, !tbaa !9
  %1200 = load ptr, ptr %16, align 8, !tbaa !5
  %1201 = load i64, ptr %1200, align 8, !tbaa !9
  %1202 = load i64, ptr %35, align 8, !tbaa !9
  %1203 = sub nsw i64 %1201, %1202
  %1204 = add nsw i64 %1203, 1
  %1205 = icmp sle i64 %1199, %1204
  br i1 %1205, label %1206, label %1283

1206:                                             ; preds = %1198
  %1207 = load ptr, ptr %18, align 8, !tbaa !5
  %1208 = load i64, ptr %37, align 8, !tbaa !9
  %1209 = sub nsw i64 %1208, 1
  %1210 = load i64, ptr %35, align 8, !tbaa !9
  %1211 = load i64, ptr %26, align 8, !tbaa !9
  %1212 = mul nsw i64 %1210, %1211
  %1213 = add nsw i64 %1209, %1212
  %1214 = getelementptr inbounds double, ptr %1207, i64 %1213
  %1215 = load ptr, ptr %18, align 8, !tbaa !5
  %1216 = load i64, ptr %37, align 8, !tbaa !9
  %1217 = load i64, ptr %35, align 8, !tbaa !9
  %1218 = load i64, ptr %26, align 8, !tbaa !9
  %1219 = mul nsw i64 %1217, %1218
  %1220 = add nsw i64 %1216, %1219
  %1221 = getelementptr inbounds double, ptr %1215, i64 %1220
  %1222 = load ptr, ptr %20, align 8, !tbaa !5
  %1223 = load i64, ptr %35, align 8, !tbaa !9
  %1224 = load i64, ptr %37, align 8, !tbaa !9
  %1225 = add nsw i64 %1223, %1224
  %1226 = sub nsw i64 %1225, 1
  %1227 = getelementptr inbounds double, ptr %1222, i64 %1226
  %1228 = load ptr, ptr %24, align 8, !tbaa !5
  %1229 = load i64, ptr %35, align 8, !tbaa !9
  %1230 = load i64, ptr %37, align 8, !tbaa !9
  %1231 = add nsw i64 %1229, %1230
  %1232 = sub nsw i64 %1231, 1
  %1233 = getelementptr inbounds double, ptr %1228, i64 %1232
  %1234 = call i32 @dlartg_(ptr noundef %1214, ptr noundef %1221, ptr noundef %1227, ptr noundef %1233, ptr noundef %57)
  %1235 = load double, ptr %57, align 8, !tbaa !14
  %1236 = load ptr, ptr %18, align 8, !tbaa !5
  %1237 = load i64, ptr %37, align 8, !tbaa !9
  %1238 = sub nsw i64 %1237, 1
  %1239 = load i64, ptr %35, align 8, !tbaa !9
  %1240 = load i64, ptr %26, align 8, !tbaa !9
  %1241 = mul nsw i64 %1239, %1240
  %1242 = add nsw i64 %1238, %1241
  %1243 = getelementptr inbounds double, ptr %1236, i64 %1242
  store double %1235, ptr %1243, align 8, !tbaa !14
  %1244 = load i64, ptr %37, align 8, !tbaa !9
  %1245 = sub nsw i64 %1244, 3
  store i64 %1245, ptr %31, align 8, !tbaa !9
  %1246 = load ptr, ptr %19, align 8, !tbaa !5
  %1247 = load i64, ptr %1246, align 8, !tbaa !9
  %1248 = sub nsw i64 %1247, 1
  store i64 %1248, ptr %32, align 8, !tbaa !9
  %1249 = load ptr, ptr %19, align 8, !tbaa !5
  %1250 = load i64, ptr %1249, align 8, !tbaa !9
  %1251 = sub nsw i64 %1250, 1
  store i64 %1251, ptr %33, align 8, !tbaa !9
  %1252 = load ptr, ptr %18, align 8, !tbaa !5
  %1253 = load i64, ptr %37, align 8, !tbaa !9
  %1254 = sub nsw i64 %1253, 2
  %1255 = load i64, ptr %35, align 8, !tbaa !9
  %1256 = add nsw i64 %1255, 1
  %1257 = load i64, ptr %26, align 8, !tbaa !9
  %1258 = mul nsw i64 %1256, %1257
  %1259 = add nsw i64 %1254, %1258
  %1260 = getelementptr inbounds double, ptr %1252, i64 %1259
  %1261 = load ptr, ptr %18, align 8, !tbaa !5
  %1262 = load i64, ptr %37, align 8, !tbaa !9
  %1263 = sub nsw i64 %1262, 1
  %1264 = load i64, ptr %35, align 8, !tbaa !9
  %1265 = add nsw i64 %1264, 1
  %1266 = load i64, ptr %26, align 8, !tbaa !9
  %1267 = mul nsw i64 %1265, %1266
  %1268 = add nsw i64 %1263, %1267
  %1269 = getelementptr inbounds double, ptr %1261, i64 %1268
  %1270 = load ptr, ptr %20, align 8, !tbaa !5
  %1271 = load i64, ptr %35, align 8, !tbaa !9
  %1272 = load i64, ptr %37, align 8, !tbaa !9
  %1273 = add nsw i64 %1271, %1272
  %1274 = sub nsw i64 %1273, 1
  %1275 = getelementptr inbounds double, ptr %1270, i64 %1274
  %1276 = load ptr, ptr %24, align 8, !tbaa !5
  %1277 = load i64, ptr %35, align 8, !tbaa !9
  %1278 = load i64, ptr %37, align 8, !tbaa !9
  %1279 = add nsw i64 %1277, %1278
  %1280 = sub nsw i64 %1279, 1
  %1281 = getelementptr inbounds double, ptr %1276, i64 %1280
  %1282 = call i32 @f2c_drot(ptr noundef %31, ptr noundef %1260, ptr noundef %32, ptr noundef %1269, ptr noundef %33, ptr noundef %1275, ptr noundef %1281)
  br label %1283

1283:                                             ; preds = %1206, %1198
  %1284 = load i64, ptr %43, align 8, !tbaa !9
  %1285 = add nsw i64 %1284, 1
  store i64 %1285, ptr %43, align 8, !tbaa !9
  %1286 = load i64, ptr %40, align 8, !tbaa !9
  %1287 = load i64, ptr %47, align 8, !tbaa !9
  %1288 = sub nsw i64 %1286, %1287
  %1289 = sub nsw i64 %1288, 1
  store i64 %1289, ptr %40, align 8, !tbaa !9
  br label %1290

1290:                                             ; preds = %1283, %1195
  %1291 = load i64, ptr %43, align 8, !tbaa !9
  %1292 = icmp sgt i64 %1291, 0
  br i1 %1292, label %1293, label %1321

1293:                                             ; preds = %1290
  %1294 = load ptr, ptr %18, align 8, !tbaa !5
  %1295 = load i64, ptr %40, align 8, !tbaa !9
  %1296 = sub nsw i64 %1295, 1
  %1297 = load i64, ptr %26, align 8, !tbaa !9
  %1298 = mul nsw i64 %1296, %1297
  %1299 = add nsw i64 %1298, 1
  %1300 = getelementptr inbounds double, ptr %1294, i64 %1299
  %1301 = load ptr, ptr %18, align 8, !tbaa !5
  %1302 = load i64, ptr %40, align 8, !tbaa !9
  %1303 = load i64, ptr %26, align 8, !tbaa !9
  %1304 = mul nsw i64 %1302, %1303
  %1305 = add nsw i64 %1304, 1
  %1306 = getelementptr inbounds double, ptr %1301, i64 %1305
  %1307 = load ptr, ptr %18, align 8, !tbaa !5
  %1308 = load i64, ptr %40, align 8, !tbaa !9
  %1309 = sub nsw i64 %1308, 1
  %1310 = load i64, ptr %26, align 8, !tbaa !9
  %1311 = mul nsw i64 %1309, %1310
  %1312 = add nsw i64 %1311, 2
  %1313 = getelementptr inbounds double, ptr %1307, i64 %1312
  %1314 = load ptr, ptr %20, align 8, !tbaa !5
  %1315 = load i64, ptr %40, align 8, !tbaa !9
  %1316 = getelementptr inbounds double, ptr %1314, i64 %1315
  %1317 = load ptr, ptr %24, align 8, !tbaa !5
  %1318 = load i64, ptr %40, align 8, !tbaa !9
  %1319 = getelementptr inbounds double, ptr %1317, i64 %1318
  %1320 = call i32 @dlar2v_(ptr noundef %43, ptr noundef %1300, ptr noundef %1306, ptr noundef %1313, ptr noundef %51, ptr noundef %1316, ptr noundef %1319, ptr noundef %44)
  br label %1321

1321:                                             ; preds = %1293, %1290
  %1322 = load i64, ptr %43, align 8, !tbaa !9
  %1323 = icmp sgt i64 %1322, 0
  br i1 %1323, label %1324, label %1483

1324:                                             ; preds = %1321
  %1325 = load i64, ptr %43, align 8, !tbaa !9
  %1326 = load ptr, ptr %17, align 8, !tbaa !5
  %1327 = load i64, ptr %1326, align 8, !tbaa !9
  %1328 = shl i64 %1327, 1
  %1329 = sub nsw i64 %1328, 1
  %1330 = icmp sgt i64 %1325, %1329
  br i1 %1330, label %1331, label %1384

1331:                                             ; preds = %1324
  %1332 = load ptr, ptr %17, align 8, !tbaa !5
  %1333 = load i64, ptr %1332, align 8, !tbaa !9
  %1334 = sub nsw i64 %1333, 1
  store i64 %1334, ptr %31, align 8, !tbaa !9
  store i64 1, ptr %38, align 8, !tbaa !9
  br label %1335

1335:                                             ; preds = %1380, %1331
  %1336 = load i64, ptr %38, align 8, !tbaa !9
  %1337 = load i64, ptr %31, align 8, !tbaa !9
  %1338 = icmp sle i64 %1336, %1337
  br i1 %1338, label %1339, label %1383

1339:                                             ; preds = %1335
  %1340 = load i64, ptr %41, align 8, !tbaa !9
  %1341 = load i64, ptr %38, align 8, !tbaa !9
  %1342 = add nsw i64 %1340, %1341
  %1343 = load ptr, ptr %16, align 8, !tbaa !5
  %1344 = load i64, ptr %1343, align 8, !tbaa !9
  %1345 = icmp sgt i64 %1342, %1344
  br i1 %1345, label %1346, label %1349

1346:                                             ; preds = %1339
  %1347 = load i64, ptr %43, align 8, !tbaa !9
  %1348 = sub nsw i64 %1347, 1
  store i64 %1348, ptr %49, align 8, !tbaa !9
  br label %1351

1349:                                             ; preds = %1339
  %1350 = load i64, ptr %43, align 8, !tbaa !9
  store i64 %1350, ptr %49, align 8, !tbaa !9
  br label %1351

1351:                                             ; preds = %1349, %1346
  %1352 = load i64, ptr %49, align 8, !tbaa !9
  %1353 = icmp sgt i64 %1352, 0
  br i1 %1353, label %1354, label %1379

1354:                                             ; preds = %1351
  %1355 = load ptr, ptr %18, align 8, !tbaa !5
  %1356 = load i64, ptr %38, align 8, !tbaa !9
  %1357 = add nsw i64 %1356, 2
  %1358 = load i64, ptr %40, align 8, !tbaa !9
  %1359 = sub nsw i64 %1358, 1
  %1360 = load i64, ptr %26, align 8, !tbaa !9
  %1361 = mul nsw i64 %1359, %1360
  %1362 = add nsw i64 %1357, %1361
  %1363 = getelementptr inbounds double, ptr %1355, i64 %1362
  %1364 = load ptr, ptr %18, align 8, !tbaa !5
  %1365 = load i64, ptr %38, align 8, !tbaa !9
  %1366 = add nsw i64 %1365, 1
  %1367 = load i64, ptr %40, align 8, !tbaa !9
  %1368 = load i64, ptr %26, align 8, !tbaa !9
  %1369 = mul nsw i64 %1367, %1368
  %1370 = add nsw i64 %1366, %1369
  %1371 = getelementptr inbounds double, ptr %1364, i64 %1370
  %1372 = load ptr, ptr %20, align 8, !tbaa !5
  %1373 = load i64, ptr %40, align 8, !tbaa !9
  %1374 = getelementptr inbounds double, ptr %1372, i64 %1373
  %1375 = load ptr, ptr %24, align 8, !tbaa !5
  %1376 = load i64, ptr %40, align 8, !tbaa !9
  %1377 = getelementptr inbounds double, ptr %1375, i64 %1376
  %1378 = call i32 @dlartv_(ptr noundef %49, ptr noundef %1363, ptr noundef %51, ptr noundef %1371, ptr noundef %51, ptr noundef %1374, ptr noundef %1377, ptr noundef %44)
  br label %1379

1379:                                             ; preds = %1354, %1351
  br label %1380

1380:                                             ; preds = %1379
  %1381 = load i64, ptr %38, align 8, !tbaa !9
  %1382 = add nsw i64 %1381, 1
  store i64 %1382, ptr %38, align 8, !tbaa !9
  br label %1335, !llvm.loop !28

1383:                                             ; preds = %1335
  br label %1482

1384:                                             ; preds = %1324
  %1385 = load i64, ptr %40, align 8, !tbaa !9
  %1386 = load i64, ptr %44, align 8, !tbaa !9
  %1387 = load i64, ptr %43, align 8, !tbaa !9
  %1388 = sub nsw i64 %1387, 2
  %1389 = mul nsw i64 %1386, %1388
  %1390 = add nsw i64 %1385, %1389
  store i64 %1390, ptr %58, align 8, !tbaa !9
  %1391 = load i64, ptr %58, align 8, !tbaa !9
  %1392 = load i64, ptr %40, align 8, !tbaa !9
  %1393 = icmp sge i64 %1391, %1392
  br i1 %1393, label %1394, label %1440

1394:                                             ; preds = %1384
  %1395 = load i64, ptr %58, align 8, !tbaa !9
  store i64 %1395, ptr %31, align 8, !tbaa !9
  %1396 = load i64, ptr %44, align 8, !tbaa !9
  store i64 %1396, ptr %32, align 8, !tbaa !9
  %1397 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %1397, ptr %59, align 8, !tbaa !9
  br label %1398

1398:                                             ; preds = %1435, %1394
  %1399 = load i64, ptr %32, align 8, !tbaa !9
  %1400 = icmp slt i64 %1399, 0
  br i1 %1400, label %1401, label %1406

1401:                                             ; preds = %1398
  %1402 = load i64, ptr %59, align 8, !tbaa !9
  %1403 = load i64, ptr %31, align 8, !tbaa !9
  %1404 = icmp sge i64 %1402, %1403
  %1405 = zext i1 %1404 to i32
  br label %1411

1406:                                             ; preds = %1398
  %1407 = load i64, ptr %59, align 8, !tbaa !9
  %1408 = load i64, ptr %31, align 8, !tbaa !9
  %1409 = icmp sle i64 %1407, %1408
  %1410 = zext i1 %1409 to i32
  br label %1411

1411:                                             ; preds = %1406, %1401
  %1412 = phi i32 [ %1405, %1401 ], [ %1410, %1406 ]
  %1413 = icmp ne i32 %1412, 0
  br i1 %1413, label %1414, label %1439

1414:                                             ; preds = %1411
  %1415 = load ptr, ptr %18, align 8, !tbaa !5
  %1416 = load i64, ptr %59, align 8, !tbaa !9
  %1417 = sub nsw i64 %1416, 1
  %1418 = load i64, ptr %26, align 8, !tbaa !9
  %1419 = mul nsw i64 %1417, %1418
  %1420 = add nsw i64 %1419, 3
  %1421 = getelementptr inbounds double, ptr %1415, i64 %1420
  %1422 = load ptr, ptr %18, align 8, !tbaa !5
  %1423 = load i64, ptr %59, align 8, !tbaa !9
  %1424 = load i64, ptr %26, align 8, !tbaa !9
  %1425 = mul nsw i64 %1423, %1424
  %1426 = add nsw i64 %1425, 2
  %1427 = getelementptr inbounds double, ptr %1422, i64 %1426
  %1428 = load ptr, ptr %20, align 8, !tbaa !5
  %1429 = load i64, ptr %59, align 8, !tbaa !9
  %1430 = getelementptr inbounds double, ptr %1428, i64 %1429
  %1431 = load ptr, ptr %24, align 8, !tbaa !5
  %1432 = load i64, ptr %59, align 8, !tbaa !9
  %1433 = getelementptr inbounds double, ptr %1431, i64 %1432
  %1434 = call i32 @f2c_drot(ptr noundef %50, ptr noundef %1421, ptr noundef @c__1, ptr noundef %1427, ptr noundef @c__1, ptr noundef %1430, ptr noundef %1433)
  br label %1435

1435:                                             ; preds = %1414
  %1436 = load i64, ptr %32, align 8, !tbaa !9
  %1437 = load i64, ptr %59, align 8, !tbaa !9
  %1438 = add nsw i64 %1437, %1436
  store i64 %1438, ptr %59, align 8, !tbaa !9
  br label %1398, !llvm.loop !29

1439:                                             ; preds = %1411
  br label %1440

1440:                                             ; preds = %1439, %1384
  %1441 = load i64, ptr %50, align 8, !tbaa !9
  store i64 %1441, ptr %32, align 8, !tbaa !9
  %1442 = load ptr, ptr %16, align 8, !tbaa !5
  %1443 = load i64, ptr %1442, align 8, !tbaa !9
  %1444 = load i64, ptr %41, align 8, !tbaa !9
  %1445 = sub nsw i64 %1443, %1444
  store i64 %1445, ptr %31, align 8, !tbaa !9
  %1446 = load i64, ptr %32, align 8, !tbaa !9
  %1447 = load i64, ptr %31, align 8, !tbaa !9
  %1448 = icmp sle i64 %1446, %1447
  br i1 %1448, label %1449, label %1451

1449:                                             ; preds = %1440
  %1450 = load i64, ptr %32, align 8, !tbaa !9
  br label %1453

1451:                                             ; preds = %1440
  %1452 = load i64, ptr %31, align 8, !tbaa !9
  br label %1453

1453:                                             ; preds = %1451, %1449
  %1454 = phi i64 [ %1450, %1449 ], [ %1452, %1451 ]
  store i64 %1454, ptr %53, align 8, !tbaa !9
  %1455 = load i64, ptr %58, align 8, !tbaa !9
  %1456 = load i64, ptr %44, align 8, !tbaa !9
  %1457 = add nsw i64 %1455, %1456
  store i64 %1457, ptr %56, align 8, !tbaa !9
  %1458 = load i64, ptr %53, align 8, !tbaa !9
  %1459 = icmp sgt i64 %1458, 0
  br i1 %1459, label %1460, label %1481

1460:                                             ; preds = %1453
  %1461 = load ptr, ptr %18, align 8, !tbaa !5
  %1462 = load i64, ptr %56, align 8, !tbaa !9
  %1463 = sub nsw i64 %1462, 1
  %1464 = load i64, ptr %26, align 8, !tbaa !9
  %1465 = mul nsw i64 %1463, %1464
  %1466 = add nsw i64 %1465, 3
  %1467 = getelementptr inbounds double, ptr %1461, i64 %1466
  %1468 = load ptr, ptr %18, align 8, !tbaa !5
  %1469 = load i64, ptr %56, align 8, !tbaa !9
  %1470 = load i64, ptr %26, align 8, !tbaa !9
  %1471 = mul nsw i64 %1469, %1470
  %1472 = add nsw i64 %1471, 2
  %1473 = getelementptr inbounds double, ptr %1468, i64 %1472
  %1474 = load ptr, ptr %20, align 8, !tbaa !5
  %1475 = load i64, ptr %56, align 8, !tbaa !9
  %1476 = getelementptr inbounds double, ptr %1474, i64 %1475
  %1477 = load ptr, ptr %24, align 8, !tbaa !5
  %1478 = load i64, ptr %56, align 8, !tbaa !9
  %1479 = getelementptr inbounds double, ptr %1477, i64 %1478
  %1480 = call i32 @f2c_drot(ptr noundef %53, ptr noundef %1467, ptr noundef @c__1, ptr noundef %1473, ptr noundef @c__1, ptr noundef %1476, ptr noundef %1479)
  br label %1481

1481:                                             ; preds = %1460, %1453
  br label %1482

1482:                                             ; preds = %1481, %1383
  br label %1483

1483:                                             ; preds = %1482, %1321
  %1484 = load i64, ptr %62, align 8, !tbaa !9
  %1485 = icmp ne i64 %1484, 0
  br i1 %1485, label %1486, label %1663

1486:                                             ; preds = %1483
  %1487 = load i64, ptr %61, align 8, !tbaa !9
  %1488 = icmp ne i64 %1487, 0
  br i1 %1488, label %1489, label %1615

1489:                                             ; preds = %1486
  %1490 = load i64, ptr %60, align 8, !tbaa !9
  %1491 = load i64, ptr %41, align 8, !tbaa !9
  %1492 = icmp sge i64 %1490, %1491
  br i1 %1492, label %1493, label %1495

1493:                                             ; preds = %1489
  %1494 = load i64, ptr %60, align 8, !tbaa !9
  br label %1497

1495:                                             ; preds = %1489
  %1496 = load i64, ptr %41, align 8, !tbaa !9
  br label %1497

1497:                                             ; preds = %1495, %1493
  %1498 = phi i64 [ %1494, %1493 ], [ %1496, %1495 ]
  store i64 %1498, ptr %60, align 8, !tbaa !9
  store i64 0, ptr %32, align 8, !tbaa !9
  %1499 = load i64, ptr %37, align 8, !tbaa !9
  %1500 = sub nsw i64 %1499, 3
  store i64 %1500, ptr %31, align 8, !tbaa !9
  %1501 = load i64, ptr %32, align 8, !tbaa !9
  %1502 = load i64, ptr %31, align 8, !tbaa !9
  %1503 = icmp sge i64 %1501, %1502
  br i1 %1503, label %1504, label %1506

1504:                                             ; preds = %1497
  %1505 = load i64, ptr %32, align 8, !tbaa !9
  br label %1508

1506:                                             ; preds = %1497
  %1507 = load i64, ptr %31, align 8, !tbaa !9
  br label %1508

1508:                                             ; preds = %1506, %1504
  %1509 = phi i64 [ %1505, %1504 ], [ %1507, %1506 ]
  store i64 %1509, ptr %39, align 8, !tbaa !9
  %1510 = load i64, ptr %35, align 8, !tbaa !9
  %1511 = load ptr, ptr %17, align 8, !tbaa !5
  %1512 = load i64, ptr %1511, align 8, !tbaa !9
  %1513 = mul nsw i64 %1510, %1512
  %1514 = add nsw i64 %1513, 1
  store i64 %1514, ptr %64, align 8, !tbaa !9
  %1515 = load i64, ptr %37, align 8, !tbaa !9
  %1516 = icmp eq i64 %1515, 2
  br i1 %1516, label %1517, label %1522

1517:                                             ; preds = %1508
  %1518 = load ptr, ptr %17, align 8, !tbaa !5
  %1519 = load i64, ptr %1518, align 8, !tbaa !9
  %1520 = load i64, ptr %64, align 8, !tbaa !9
  %1521 = add nsw i64 %1520, %1519
  store i64 %1521, ptr %64, align 8, !tbaa !9
  br label %1522

1522:                                             ; preds = %1517, %1508
  %1523 = load i64, ptr %64, align 8, !tbaa !9
  %1524 = load i64, ptr %60, align 8, !tbaa !9
  %1525 = icmp sle i64 %1523, %1524
  br i1 %1525, label %1526, label %1528

1526:                                             ; preds = %1522
  %1527 = load i64, ptr %64, align 8, !tbaa !9
  br label %1530

1528:                                             ; preds = %1522
  %1529 = load i64, ptr %60, align 8, !tbaa !9
  br label %1530

1530:                                             ; preds = %1528, %1526
  %1531 = phi i64 [ %1527, %1526 ], [ %1529, %1528 ]
  store i64 %1531, ptr %64, align 8, !tbaa !9
  %1532 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %1532, ptr %32, align 8, !tbaa !9
  %1533 = load i64, ptr %44, align 8, !tbaa !9
  store i64 %1533, ptr %31, align 8, !tbaa !9
  %1534 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %1534, ptr %36, align 8, !tbaa !9
  br label %1535

1535:                                             ; preds = %1610, %1530
  %1536 = load i64, ptr %31, align 8, !tbaa !9
  %1537 = icmp slt i64 %1536, 0
  br i1 %1537, label %1538, label %1543

1538:                                             ; preds = %1535
  %1539 = load i64, ptr %36, align 8, !tbaa !9
  %1540 = load i64, ptr %32, align 8, !tbaa !9
  %1541 = icmp sge i64 %1539, %1540
  %1542 = zext i1 %1541 to i32
  br label %1548

1543:                                             ; preds = %1535
  %1544 = load i64, ptr %36, align 8, !tbaa !9
  %1545 = load i64, ptr %32, align 8, !tbaa !9
  %1546 = icmp sle i64 %1544, %1545
  %1547 = zext i1 %1546 to i32
  br label %1548

1548:                                             ; preds = %1543, %1538
  %1549 = phi i32 [ %1542, %1538 ], [ %1547, %1543 ]
  %1550 = icmp ne i32 %1549, 0
  br i1 %1550, label %1551, label %1614

1551:                                             ; preds = %1548
  %1552 = load i64, ptr %35, align 8, !tbaa !9
  %1553 = load i64, ptr %39, align 8, !tbaa !9
  %1554 = load i64, ptr %50, align 8, !tbaa !9
  %1555 = sdiv i64 %1553, %1554
  %1556 = sub nsw i64 %1552, %1555
  store i64 %1556, ptr %45, align 8, !tbaa !9
  %1557 = load i64, ptr %39, align 8, !tbaa !9
  %1558 = add nsw i64 %1557, 1
  store i64 %1558, ptr %39, align 8, !tbaa !9
  store i64 1, ptr %33, align 8, !tbaa !9
  %1559 = load i64, ptr %36, align 8, !tbaa !9
  %1560 = load i64, ptr %45, align 8, !tbaa !9
  %1561 = sub nsw i64 %1559, %1560
  store i64 %1561, ptr %34, align 8, !tbaa !9
  %1562 = load i64, ptr %33, align 8, !tbaa !9
  %1563 = load i64, ptr %34, align 8, !tbaa !9
  %1564 = icmp sge i64 %1562, %1563
  br i1 %1564, label %1565, label %1567

1565:                                             ; preds = %1551
  %1566 = load i64, ptr %33, align 8, !tbaa !9
  br label %1569

1567:                                             ; preds = %1551
  %1568 = load i64, ptr %34, align 8, !tbaa !9
  br label %1569

1569:                                             ; preds = %1567, %1565
  %1570 = phi i64 [ %1566, %1565 ], [ %1568, %1567 ]
  store i64 %1570, ptr %46, align 8, !tbaa !9
  %1571 = load i64, ptr %64, align 8, !tbaa !9
  %1572 = add nsw i64 %1571, 1
  %1573 = load i64, ptr %46, align 8, !tbaa !9
  %1574 = sub nsw i64 %1572, %1573
  store i64 %1574, ptr %42, align 8, !tbaa !9
  %1575 = load i64, ptr %64, align 8, !tbaa !9
  %1576 = load ptr, ptr %17, align 8, !tbaa !5
  %1577 = load i64, ptr %1576, align 8, !tbaa !9
  %1578 = add nsw i64 %1575, %1577
  store i64 %1578, ptr %33, align 8, !tbaa !9
  %1579 = load i64, ptr %33, align 8, !tbaa !9
  %1580 = load i64, ptr %60, align 8, !tbaa !9
  %1581 = icmp sle i64 %1579, %1580
  br i1 %1581, label %1582, label %1584

1582:                                             ; preds = %1569
  %1583 = load i64, ptr %33, align 8, !tbaa !9
  br label %1586

1584:                                             ; preds = %1569
  %1585 = load i64, ptr %60, align 8, !tbaa !9
  br label %1586

1586:                                             ; preds = %1584, %1582
  %1587 = phi i64 [ %1583, %1582 ], [ %1585, %1584 ]
  store i64 %1587, ptr %64, align 8, !tbaa !9
  %1588 = load ptr, ptr %22, align 8, !tbaa !5
  %1589 = load i64, ptr %46, align 8, !tbaa !9
  %1590 = load i64, ptr %36, align 8, !tbaa !9
  %1591 = sub nsw i64 %1590, 1
  %1592 = load i64, ptr %28, align 8, !tbaa !9
  %1593 = mul nsw i64 %1591, %1592
  %1594 = add nsw i64 %1589, %1593
  %1595 = getelementptr inbounds double, ptr %1588, i64 %1594
  %1596 = load ptr, ptr %22, align 8, !tbaa !5
  %1597 = load i64, ptr %46, align 8, !tbaa !9
  %1598 = load i64, ptr %36, align 8, !tbaa !9
  %1599 = load i64, ptr %28, align 8, !tbaa !9
  %1600 = mul nsw i64 %1598, %1599
  %1601 = add nsw i64 %1597, %1600
  %1602 = getelementptr inbounds double, ptr %1596, i64 %1601
  %1603 = load ptr, ptr %20, align 8, !tbaa !5
  %1604 = load i64, ptr %36, align 8, !tbaa !9
  %1605 = getelementptr inbounds double, ptr %1603, i64 %1604
  %1606 = load ptr, ptr %24, align 8, !tbaa !5
  %1607 = load i64, ptr %36, align 8, !tbaa !9
  %1608 = getelementptr inbounds double, ptr %1606, i64 %1607
  %1609 = call i32 @f2c_drot(ptr noundef %42, ptr noundef %1595, ptr noundef @c__1, ptr noundef %1602, ptr noundef @c__1, ptr noundef %1605, ptr noundef %1608)
  br label %1610

1610:                                             ; preds = %1586
  %1611 = load i64, ptr %31, align 8, !tbaa !9
  %1612 = load i64, ptr %36, align 8, !tbaa !9
  %1613 = add nsw i64 %1612, %1611
  store i64 %1613, ptr %36, align 8, !tbaa !9
  br label %1535, !llvm.loop !30

1614:                                             ; preds = %1548
  br label %1662

1615:                                             ; preds = %1486
  %1616 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %1616, ptr %31, align 8, !tbaa !9
  %1617 = load i64, ptr %44, align 8, !tbaa !9
  store i64 %1617, ptr %32, align 8, !tbaa !9
  %1618 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %1618, ptr %36, align 8, !tbaa !9
  br label %1619

1619:                                             ; preds = %1657, %1615
  %1620 = load i64, ptr %32, align 8, !tbaa !9
  %1621 = icmp slt i64 %1620, 0
  br i1 %1621, label %1622, label %1627

1622:                                             ; preds = %1619
  %1623 = load i64, ptr %36, align 8, !tbaa !9
  %1624 = load i64, ptr %31, align 8, !tbaa !9
  %1625 = icmp sge i64 %1623, %1624
  %1626 = zext i1 %1625 to i32
  br label %1632

1627:                                             ; preds = %1619
  %1628 = load i64, ptr %36, align 8, !tbaa !9
  %1629 = load i64, ptr %31, align 8, !tbaa !9
  %1630 = icmp sle i64 %1628, %1629
  %1631 = zext i1 %1630 to i32
  br label %1632

1632:                                             ; preds = %1627, %1622
  %1633 = phi i32 [ %1626, %1622 ], [ %1631, %1627 ]
  %1634 = icmp ne i32 %1633, 0
  br i1 %1634, label %1635, label %1661

1635:                                             ; preds = %1632
  %1636 = load ptr, ptr %16, align 8, !tbaa !5
  %1637 = load ptr, ptr %22, align 8, !tbaa !5
  %1638 = load i64, ptr %36, align 8, !tbaa !9
  %1639 = sub nsw i64 %1638, 1
  %1640 = load i64, ptr %28, align 8, !tbaa !9
  %1641 = mul nsw i64 %1639, %1640
  %1642 = add nsw i64 %1641, 1
  %1643 = getelementptr inbounds double, ptr %1637, i64 %1642
  %1644 = load ptr, ptr %22, align 8, !tbaa !5
  %1645 = load i64, ptr %36, align 8, !tbaa !9
  %1646 = load i64, ptr %28, align 8, !tbaa !9
  %1647 = mul nsw i64 %1645, %1646
  %1648 = add nsw i64 %1647, 1
  %1649 = getelementptr inbounds double, ptr %1644, i64 %1648
  %1650 = load ptr, ptr %20, align 8, !tbaa !5
  %1651 = load i64, ptr %36, align 8, !tbaa !9
  %1652 = getelementptr inbounds double, ptr %1650, i64 %1651
  %1653 = load ptr, ptr %24, align 8, !tbaa !5
  %1654 = load i64, ptr %36, align 8, !tbaa !9
  %1655 = getelementptr inbounds double, ptr %1653, i64 %1654
  %1656 = call i32 @f2c_drot(ptr noundef %1636, ptr noundef %1643, ptr noundef @c__1, ptr noundef %1649, ptr noundef @c__1, ptr noundef %1652, ptr noundef %1655)
  br label %1657

1657:                                             ; preds = %1635
  %1658 = load i64, ptr %32, align 8, !tbaa !9
  %1659 = load i64, ptr %36, align 8, !tbaa !9
  %1660 = add nsw i64 %1659, %1658
  store i64 %1660, ptr %36, align 8, !tbaa !9
  br label %1619, !llvm.loop !31

1661:                                             ; preds = %1632
  br label %1662

1662:                                             ; preds = %1661, %1614
  br label %1663

1663:                                             ; preds = %1662, %1483
  %1664 = load i64, ptr %41, align 8, !tbaa !9
  %1665 = load i64, ptr %47, align 8, !tbaa !9
  %1666 = add nsw i64 %1664, %1665
  %1667 = load ptr, ptr %16, align 8, !tbaa !5
  %1668 = load i64, ptr %1667, align 8, !tbaa !9
  %1669 = icmp sgt i64 %1666, %1668
  br i1 %1669, label %1670, label %1677

1670:                                             ; preds = %1663
  %1671 = load i64, ptr %43, align 8, !tbaa !9
  %1672 = add nsw i64 %1671, -1
  store i64 %1672, ptr %43, align 8, !tbaa !9
  %1673 = load i64, ptr %41, align 8, !tbaa !9
  %1674 = load i64, ptr %47, align 8, !tbaa !9
  %1675 = sub nsw i64 %1673, %1674
  %1676 = sub nsw i64 %1675, 1
  store i64 %1676, ptr %41, align 8, !tbaa !9
  br label %1677

1677:                                             ; preds = %1670, %1663
  %1678 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %1678, ptr %32, align 8, !tbaa !9
  %1679 = load i64, ptr %44, align 8, !tbaa !9
  store i64 %1679, ptr %31, align 8, !tbaa !9
  %1680 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %1680, ptr %36, align 8, !tbaa !9
  br label %1681

1681:                                             ; preds = %1737, %1677
  %1682 = load i64, ptr %31, align 8, !tbaa !9
  %1683 = icmp slt i64 %1682, 0
  br i1 %1683, label %1684, label %1689

1684:                                             ; preds = %1681
  %1685 = load i64, ptr %36, align 8, !tbaa !9
  %1686 = load i64, ptr %32, align 8, !tbaa !9
  %1687 = icmp sge i64 %1685, %1686
  %1688 = zext i1 %1687 to i32
  br label %1694

1689:                                             ; preds = %1681
  %1690 = load i64, ptr %36, align 8, !tbaa !9
  %1691 = load i64, ptr %32, align 8, !tbaa !9
  %1692 = icmp sle i64 %1690, %1691
  %1693 = zext i1 %1692 to i32
  br label %1694

1694:                                             ; preds = %1689, %1684
  %1695 = phi i32 [ %1688, %1684 ], [ %1693, %1689 ]
  %1696 = icmp ne i32 %1695, 0
  br i1 %1696, label %1697, label %1741

1697:                                             ; preds = %1694
  %1698 = load ptr, ptr %24, align 8, !tbaa !5
  %1699 = load i64, ptr %36, align 8, !tbaa !9
  %1700 = getelementptr inbounds double, ptr %1698, i64 %1699
  %1701 = load double, ptr %1700, align 8, !tbaa !14
  %1702 = load ptr, ptr %18, align 8, !tbaa !5
  %1703 = load i64, ptr %44, align 8, !tbaa !9
  %1704 = load i64, ptr %36, align 8, !tbaa !9
  %1705 = load i64, ptr %26, align 8, !tbaa !9
  %1706 = mul nsw i64 %1704, %1705
  %1707 = add nsw i64 %1703, %1706
  %1708 = getelementptr inbounds double, ptr %1702, i64 %1707
  %1709 = load double, ptr %1708, align 8, !tbaa !14
  %1710 = fmul double %1701, %1709
  %1711 = load ptr, ptr %24, align 8, !tbaa !5
  %1712 = load i64, ptr %36, align 8, !tbaa !9
  %1713 = load ptr, ptr %17, align 8, !tbaa !5
  %1714 = load i64, ptr %1713, align 8, !tbaa !9
  %1715 = add nsw i64 %1712, %1714
  %1716 = getelementptr inbounds double, ptr %1711, i64 %1715
  store double %1710, ptr %1716, align 8, !tbaa !14
  %1717 = load ptr, ptr %20, align 8, !tbaa !5
  %1718 = load i64, ptr %36, align 8, !tbaa !9
  %1719 = getelementptr inbounds double, ptr %1717, i64 %1718
  %1720 = load double, ptr %1719, align 8, !tbaa !14
  %1721 = load ptr, ptr %18, align 8, !tbaa !5
  %1722 = load i64, ptr %44, align 8, !tbaa !9
  %1723 = load i64, ptr %36, align 8, !tbaa !9
  %1724 = load i64, ptr %26, align 8, !tbaa !9
  %1725 = mul nsw i64 %1723, %1724
  %1726 = add nsw i64 %1722, %1725
  %1727 = getelementptr inbounds double, ptr %1721, i64 %1726
  %1728 = load double, ptr %1727, align 8, !tbaa !14
  %1729 = fmul double %1720, %1728
  %1730 = load ptr, ptr %18, align 8, !tbaa !5
  %1731 = load i64, ptr %44, align 8, !tbaa !9
  %1732 = load i64, ptr %36, align 8, !tbaa !9
  %1733 = load i64, ptr %26, align 8, !tbaa !9
  %1734 = mul nsw i64 %1732, %1733
  %1735 = add nsw i64 %1731, %1734
  %1736 = getelementptr inbounds double, ptr %1730, i64 %1735
  store double %1729, ptr %1736, align 8, !tbaa !14
  br label %1737

1737:                                             ; preds = %1697
  %1738 = load i64, ptr %31, align 8, !tbaa !9
  %1739 = load i64, ptr %36, align 8, !tbaa !9
  %1740 = add nsw i64 %1739, %1738
  store i64 %1740, ptr %36, align 8, !tbaa !9
  br label %1681, !llvm.loop !32

1741:                                             ; preds = %1694
  br label %1742

1742:                                             ; preds = %1741
  %1743 = load i64, ptr %37, align 8, !tbaa !9
  %1744 = add nsw i64 %1743, -1
  store i64 %1744, ptr %37, align 8, !tbaa !9
  br label %1052, !llvm.loop !33

1745:                                             ; preds = %1052
  br label %1746

1746:                                             ; preds = %1745
  %1747 = load i64, ptr %35, align 8, !tbaa !9
  %1748 = add nsw i64 %1747, 1
  store i64 %1748, ptr %35, align 8, !tbaa !9
  br label %1045, !llvm.loop !34

1749:                                             ; preds = %1045
  br label %1750

1750:                                             ; preds = %1749, %1035
  %1751 = load ptr, ptr %17, align 8, !tbaa !5
  %1752 = load i64, ptr %1751, align 8, !tbaa !9
  %1753 = icmp sgt i64 %1752, 0
  br i1 %1753, label %1754, label %1777

1754:                                             ; preds = %1750
  %1755 = load ptr, ptr %16, align 8, !tbaa !5
  %1756 = load i64, ptr %1755, align 8, !tbaa !9
  %1757 = sub nsw i64 %1756, 1
  store i64 %1757, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %35, align 8, !tbaa !9
  br label %1758

1758:                                             ; preds = %1773, %1754
  %1759 = load i64, ptr %35, align 8, !tbaa !9
  %1760 = load i64, ptr %30, align 8, !tbaa !9
  %1761 = icmp sle i64 %1759, %1760
  br i1 %1761, label %1762, label %1776

1762:                                             ; preds = %1758
  %1763 = load ptr, ptr %18, align 8, !tbaa !5
  %1764 = load i64, ptr %35, align 8, !tbaa !9
  %1765 = load i64, ptr %26, align 8, !tbaa !9
  %1766 = mul nsw i64 %1764, %1765
  %1767 = add nsw i64 %1766, 2
  %1768 = getelementptr inbounds double, ptr %1763, i64 %1767
  %1769 = load double, ptr %1768, align 8, !tbaa !14
  %1770 = load ptr, ptr %21, align 8, !tbaa !5
  %1771 = load i64, ptr %35, align 8, !tbaa !9
  %1772 = getelementptr inbounds double, ptr %1770, i64 %1771
  store double %1769, ptr %1772, align 8, !tbaa !14
  br label %1773

1773:                                             ; preds = %1762
  %1774 = load i64, ptr %35, align 8, !tbaa !9
  %1775 = add nsw i64 %1774, 1
  store i64 %1775, ptr %35, align 8, !tbaa !9
  br label %1758, !llvm.loop !35

1776:                                             ; preds = %1758
  br label %1793

1777:                                             ; preds = %1750
  %1778 = load ptr, ptr %16, align 8, !tbaa !5
  %1779 = load i64, ptr %1778, align 8, !tbaa !9
  %1780 = sub nsw i64 %1779, 1
  store i64 %1780, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %35, align 8, !tbaa !9
  br label %1781

1781:                                             ; preds = %1789, %1777
  %1782 = load i64, ptr %35, align 8, !tbaa !9
  %1783 = load i64, ptr %30, align 8, !tbaa !9
  %1784 = icmp sle i64 %1782, %1783
  br i1 %1784, label %1785, label %1792

1785:                                             ; preds = %1781
  %1786 = load ptr, ptr %21, align 8, !tbaa !5
  %1787 = load i64, ptr %35, align 8, !tbaa !9
  %1788 = getelementptr inbounds double, ptr %1786, i64 %1787
  store double 0.000000e+00, ptr %1788, align 8, !tbaa !14
  br label %1789

1789:                                             ; preds = %1785
  %1790 = load i64, ptr %35, align 8, !tbaa !9
  %1791 = add nsw i64 %1790, 1
  store i64 %1791, ptr %35, align 8, !tbaa !9
  br label %1781, !llvm.loop !36

1792:                                             ; preds = %1781
  br label %1793

1793:                                             ; preds = %1792, %1776
  %1794 = load ptr, ptr %16, align 8, !tbaa !5
  %1795 = load i64, ptr %1794, align 8, !tbaa !9
  store i64 %1795, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %35, align 8, !tbaa !9
  br label %1796

1796:                                             ; preds = %1811, %1793
  %1797 = load i64, ptr %35, align 8, !tbaa !9
  %1798 = load i64, ptr %30, align 8, !tbaa !9
  %1799 = icmp sle i64 %1797, %1798
  br i1 %1799, label %1800, label %1814

1800:                                             ; preds = %1796
  %1801 = load ptr, ptr %18, align 8, !tbaa !5
  %1802 = load i64, ptr %35, align 8, !tbaa !9
  %1803 = load i64, ptr %26, align 8, !tbaa !9
  %1804 = mul nsw i64 %1802, %1803
  %1805 = add nsw i64 %1804, 1
  %1806 = getelementptr inbounds double, ptr %1801, i64 %1805
  %1807 = load double, ptr %1806, align 8, !tbaa !14
  %1808 = load ptr, ptr %20, align 8, !tbaa !5
  %1809 = load i64, ptr %35, align 8, !tbaa !9
  %1810 = getelementptr inbounds double, ptr %1808, i64 %1809
  store double %1807, ptr %1810, align 8, !tbaa !14
  br label %1811

1811:                                             ; preds = %1800
  %1812 = load i64, ptr %35, align 8, !tbaa !9
  %1813 = add nsw i64 %1812, 1
  store i64 %1813, ptr %35, align 8, !tbaa !9
  br label %1796, !llvm.loop !37

1814:                                             ; preds = %1796
  br label %1815

1815:                                             ; preds = %1814, %1034
  store i32 0, ptr %13, align 4
  store i32 1, ptr %65, align 4
  br label %1816

1816:                                             ; preds = %1815, %184, %175
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #3
  %1817 = load i32, ptr %13, align 4
  ret i32 %1817
}

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

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

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

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

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

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

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

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

declare i32 @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 = !{!"long", !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 i64, align 8

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @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 i64, align 8
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca i64, align 8
  %25 = alloca i64, align 8
  %26 = alloca i64, align 8
  %27 = alloca i64, align 8
  %28 = alloca i64, align 8
  %29 = alloca i64, align 8
  %30 = alloca i64, align 8
  %31 = alloca i64, align 8
  %32 = alloca i64, align 8
  %33 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #5
  %34 = load i64, ptr %5, align 8, !tbaa !5
  %35 = xor i64 %34, -1
  %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 i64, ptr %9, align 8, !tbaa !5
  %40 = xor i64 %39, -1
  %41 = getelementptr inbounds double, ptr %8, i64 %40
  %42 = getelementptr inbounds i8, ptr %10, i64 -8
  %43 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %.not = icmp eq i64 %43, 0
  br i1 %.not, label %44, label %47

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

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

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

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

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

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

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

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

68:                                               ; preds = %66
  %69 = load i64, ptr %9, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %61, i64 1)
  %70 = icmp slt i64 %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 i64, ptr %11, align 8, !tbaa !5
  %.not662 = icmp eq i64 %.pr, 0
  br i1 %.not662, label %75, label %.thread

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

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

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

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

78:                                               ; preds = %77
  %79 = tail call i32 @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 i64, ptr %5, align 8, !tbaa !5
  %.pre878 = load i64, ptr %2, align 8, !tbaa !5
  %.pre879 = load i64, ptr %3, align 8, !tbaa !5
  br label %80

80:                                               ; preds = %78, %77
  %81 = phi i64 [ %.pre879, %78 ], [ %64, %77 ]
  %82 = phi i64 [ %.pre878, %78 ], [ %61, %77 ]
  %83 = phi i64 [ %.pre, %78 ], [ %67, %77 ]
  %84 = mul nsw i64 %83, %51
  store i64 %84, ptr %30, align 8, !tbaa !5
  %85 = add nsw i64 %82, -1
  store i64 %85, ptr %21, align 8, !tbaa !5
  %. = tail call i64 @llvm.smin.i64(i64 %85, i64 %81)
  %86 = icmp sgt i64 %81, 1
  br i1 %.not660, label %438, label %87

87:                                               ; preds = %80
  br i1 %86, label %88, label %.loopexit734

88:                                               ; preds = %87
  store i64 0, ptr %26, align 8, !tbaa !5
  %89 = add nsw i64 %82, -2
  %.not684780 = icmp slt i64 %82, 3
  br i1 %.not684780, label %.loopexit734.thread, label %.lr.ph776.us.preheader

.lr.ph776.us.preheader:                           ; preds = %88
  %90 = add nsw i64 %., 1
  %invariant.gep769 = getelementptr i8, ptr %36, i64 8
  %invariant.gep739 = getelementptr i8, ptr %36, i64 16
  %invariant.gep757 = getelementptr i8, ptr %41, i64 8
  %91 = add nsw i64 %., 2
  br label %.lr.ph776.us

.lr.ph776.us:                                     ; preds = %.lr.ph776.us.preheader, %._crit_edge777.us
  %.0643.neg785.us = phi i64 [ %.0643.neg.us, %._crit_edge777.us ], [ -1, %.lr.ph776.us.preheader ]
  %.0609784.us = phi i64 [ %.2611.us, %._crit_edge777.us ], [ 1, %.lr.ph776.us.preheader ]
  %.0617783.us = phi i64 [ %.2619.us, %._crit_edge777.us ], [ 1, %.lr.ph776.us.preheader ]
  %.0623782.us = phi i64 [ %.2625.us, %._crit_edge777.us ], [ %91, %.lr.ph776.us.preheader ]
  %.0643781.us = phi i64 [ %345, %._crit_edge777.us ], [ 1, %.lr.ph776.us.preheader ]
  %92 = add nsw i64 %.0643.neg785.us, 1
  br label %93

93:                                               ; preds = %.lr.ph776.us, %._crit_edge.us
  %.1610774.us = phi i64 [ %.0609784.us, %.lr.ph776.us ], [ %.2611.us, %._crit_edge.us ]
  %.1618773.us = phi i64 [ %.0617783.us, %.lr.ph776.us ], [ %.2619.us, %._crit_edge.us ]
  %.1624772.us = phi i64 [ %.0623782.us, %.lr.ph776.us ], [ %.2625.us, %._crit_edge.us ]
  %.0635771.us = phi i64 [ %90, %.lr.ph776.us ], [ %300, %._crit_edge.us ]
  %94 = add nsw i64 %.1624772.us, %.
  %95 = add nsw i64 %.1618773.us, %.
  %96 = load i64, ptr %26, align 8, !tbaa !5
  %97 = icmp sgt i64 %96, 0
  br i1 %97, label %98, label %.loopexit732.us

98:                                               ; preds = %93
  %99 = add nsw i64 %94, -1
  %100 = mul nsw i64 %99, %34
  %gep770.us = getelementptr double, ptr %invariant.gep769, i64 %100
  %101 = getelementptr inbounds double, ptr %42, i64 %94
  %102 = getelementptr inbounds double, ptr %37, i64 %94
  %103 = call i32 @dlargv_(ptr noundef nonnull %26, ptr noundef %gep770.us, ptr noundef nonnull %30, ptr noundef nonnull %101, ptr noundef nonnull %27, ptr noundef nonnull %102, ptr noundef nonnull %27) #5
  %104 = load i64, ptr %26, align 8, !tbaa !5
  %105 = load i64, ptr %3, align 8, !tbaa !5
  %106 = shl i64 %105, 1
  %107 = add nsw i64 %106, -1
  %.not688.us = icmp slt i64 %104, %107
  br i1 %.not688.us, label %114, label %108

108:                                              ; preds = %98
  %109 = add nsw i64 %105, -1
  store i64 %109, ptr %22, align 8, !tbaa !5
  %invariant.gep.us = getelementptr double, ptr %36, i64 %100
  %.not690735.us = icmp slt i64 %105, 2
  br i1 %.not690735.us, label %.loopexit732.us, label %.lr.ph.us

110:                                              ; preds = %.lr.ph.us, %110
  %.0631736.us = phi i64 [ 1, %.lr.ph.us ], [ %111, %110 ]
  %111 = add nuw nsw i64 %.0631736.us, 1
  %gep.us = getelementptr double, ptr %invariant.gep.us, i64 %111
  %gep738.us = getelementptr double, ptr %invariant.gep737.us, i64 %.0631736.us
  %112 = call i32 @dlartv_(ptr noundef nonnull %26, ptr noundef %gep.us, ptr noundef nonnull %30, ptr noundef %gep738.us, ptr noundef nonnull %30, ptr noundef nonnull %102, ptr noundef nonnull %101, ptr noundef nonnull %27) #5
  %113 = load i64, ptr %22, align 8, !tbaa !5
  %.not690.us.not = icmp slt i64 %.0631736.us, %113
  br i1 %.not690.us.not, label %110, label %.loopexit732.us, !llvm.loop !9

114:                                              ; preds = %98
  %115 = add nsw i64 %104, -1
  %116 = load i64, ptr %27, align 8, !tbaa !5
  %117 = mul nsw i64 %116, %115
  %118 = add nsw i64 %117, %94
  store i64 %118, ptr %22, align 8, !tbaa !5
  store i64 %116, ptr %23, align 8, !tbaa !5
  %119 = icmp slt i64 %116, 0
  %120 = icmp slt i64 %117, 1
  %121 = icmp sgt i64 %117, -1
  %.in689743.us = select i1 %119, i1 %120, i1 %121
  br i1 %.in689743.us, label %.lr.ph745.us, label %.loopexit732.us

.loopexit732.us:                                  ; preds = %110, %.lr.ph745.us, %108, %114, %93
  %.not691.us = icmp eq i64 %.0635771.us, 2
  br i1 %.not691.us, label %thread-pre-split709.us, label %122

122:                                              ; preds = %.loopexit732.us
  %123 = load i64, ptr %2, align 8, !tbaa !5
  %124 = add i64 %92, %123
  %.not692.us = icmp sgt i64 %.0635771.us, %124
  br i1 %.not692.us, label %152, label %125

125:                                              ; preds = %122
  %126 = load i64, ptr %3, align 8, !tbaa !5
  %127 = sub nsw i64 %126, %.0635771.us
  %128 = add nuw nsw i64 %.0635771.us, %.0643781.us
  %129 = add nsw i64 %128, -2
  %130 = mul nsw i64 %129, %34
  %131 = getelementptr double, ptr %36, i64 %127
  %132 = getelementptr i8, ptr %131, i64 24
  %133 = getelementptr double, ptr %132, i64 %130
  %134 = add nsw i64 %128, -1
  %135 = mul nsw i64 %134, %34
  %136 = getelementptr i8, ptr %131, i64 16
  %137 = getelementptr double, ptr %136, i64 %135
  %138 = getelementptr inbounds double, ptr %37, i64 %134
  %139 = getelementptr inbounds double, ptr %42, i64 %134
  %140 = call i32 @dlartg_(ptr noundef %133, ptr noundef %137, ptr noundef nonnull %138, ptr noundef nonnull %139, ptr noundef nonnull %33) #5
  %141 = load double, ptr %33, align 8, !tbaa !11
  %142 = load i64, ptr %3, align 8, !tbaa !5
  %143 = sub nsw i64 %142, %.0635771.us
  %144 = getelementptr double, ptr %36, i64 %143
  %145 = getelementptr i8, ptr %144, i64 24
  %146 = getelementptr double, ptr %145, i64 %130
  store double %141, ptr %146, align 8, !tbaa !11
  %147 = add nsw i64 %.0635771.us, -3
  store i64 %147, ptr %23, align 8, !tbaa !5
  %148 = getelementptr i8, ptr %144, i64 32
  %149 = getelementptr double, ptr %148, i64 %130
  %150 = getelementptr double, ptr %145, i64 %135
  %151 = call i32 @f2c_drot(ptr noundef nonnull %23, ptr noundef %149, ptr noundef nonnull @c__1, ptr noundef %150, ptr noundef nonnull @c__1, ptr noundef nonnull %138, ptr noundef nonnull %139) #5
  br label %152

152:                                              ; preds = %125, %122
  %153 = load i64, ptr %26, align 8, !tbaa !5
  %154 = add nsw i64 %153, 1
  store i64 %154, ptr %26, align 8, !tbaa !5
  %155 = add nsw i64 %.1624772.us, -1
  br label %156

thread-pre-split709.us:                           ; preds = %.loopexit732.us
  %.pr710.us = load i64, ptr %26, align 8, !tbaa !5
  br label %156

156:                                              ; preds = %thread-pre-split709.us, %152
  %157 = phi i64 [ %.pr710.us, %thread-pre-split709.us ], [ %154, %152 ]
  %.2625.us = phi i64 [ %94, %thread-pre-split709.us ], [ %155, %152 ]
  %158 = icmp sgt i64 %157, 0
  br i1 %158, label %159, label %.loopexit731.us

159:                                              ; preds = %156
  %160 = load i64, ptr %27, align 8, !tbaa !5
  %161 = add nsw i64 %.2625.us, -1
  %162 = mul nsw i64 %161, %34
  %163 = getelementptr double, ptr %36, i64 %160
  %164 = getelementptr double, ptr %163, i64 %162
  %165 = mul nsw i64 %.2625.us, %34
  %166 = getelementptr double, ptr %163, i64 %165
  %167 = load i64, ptr %3, align 8, !tbaa !5
  %168 = getelementptr double, ptr %36, i64 %167
  %169 = getelementptr double, ptr %168, i64 %165
  %170 = getelementptr inbounds double, ptr %37, i64 %.2625.us
  %171 = getelementptr inbounds double, ptr %42, i64 %.2625.us
  %172 = call i32 @dlar2v_(ptr noundef nonnull %26, ptr noundef %164, ptr noundef %166, ptr noundef %169, ptr noundef nonnull %30, ptr noundef nonnull %170, ptr noundef nonnull %171, ptr noundef nonnull %27) #5
  %.pre880 = load i64, ptr %26, align 8, !tbaa !5
  %173 = icmp sgt i64 %.pre880, 0
  br i1 %173, label %174, label %.loopexit731.us

174:                                              ; preds = %159
  %175 = load i64, ptr %3, align 8, !tbaa !5
  %176 = shl i64 %175, 1
  %.not693.us = icmp sgt i64 %176, %.pre880
  br i1 %.not693.us, label %200, label %177

177:                                              ; preds = %174
  %178 = add nsw i64 %175, -1
  store i64 %178, ptr %23, align 8, !tbaa !5
  %.not697746.us = icmp slt i64 %175, 2
  br i1 %.not697746.us, label %.loopexit731.us, label %.lr.ph748.us

179:                                              ; preds = %.lr.ph748.us, %197
  %180 = phi i64 [ %178, %.lr.ph748.us ], [ %198, %197 ]
  %.1632747.us = phi i64 [ 1, %.lr.ph748.us ], [ %199, %197 ]
  %181 = add nsw i64 %.1632747.us, %95
  %182 = load i64, ptr %2, align 8, !tbaa !5
  %183 = icmp sgt i64 %181, %182
  %184 = load i64, ptr %26, align 8
  %185 = sext i1 %183 to i64
  %storemerge705.us = add nsw i64 %184, %185
  store i64 %storemerge705.us, ptr %28, align 8, !tbaa !5
  %186 = icmp sgt i64 %storemerge705.us, 0
  br i1 %186, label %187, label %197

187:                                              ; preds = %179
  %188 = load i64, ptr %3, align 8, !tbaa !5
  %189 = sub nsw i64 %188, %.1632747.us
  %190 = add nsw i64 %.1632747.us, %.2625.us
  %191 = mul nsw i64 %190, %34
  %192 = getelementptr double, ptr %36, i64 %189
  %193 = getelementptr double, ptr %192, i64 %191
  %194 = getelementptr i8, ptr %192, i64 8
  %195 = getelementptr double, ptr %194, i64 %191
  %196 = call i32 @dlartv_(ptr noundef nonnull %28, ptr noundef %193, ptr noundef nonnull %30, ptr noundef %195, ptr noundef nonnull %30, ptr noundef nonnull %342, ptr noundef nonnull %343, ptr noundef nonnull %27) #5
  %.pre881 = load i64, ptr %23, align 8, !tbaa !5
  br label %197

197:                                              ; preds = %187, %179
  %198 = phi i64 [ %.pre881, %187 ], [ %180, %179 ]
  %199 = add nuw nsw i64 %.1632747.us, 1
  %.not697.us.not = icmp slt i64 %.1632747.us, %198
  br i1 %.not697.us.not, label %179, label %.loopexit731.us, !llvm.loop !13

200:                                              ; preds = %174
  %201 = load i64, ptr %27, align 8, !tbaa !5
  %202 = add nsw i64 %.pre880, -2
  %203 = mul nsw i64 %201, %202
  %204 = add nsw i64 %203, %.2625.us
  %.not694.us = icmp slt i64 %203, 0
  br i1 %.not694.us, label %.loopexit730.us, label %205

205:                                              ; preds = %200
  store i64 %204, ptr %23, align 8, !tbaa !5
  store i64 %201, ptr %22, align 8, !tbaa !5
  %206 = icmp sgt i64 %201, -1
  %207 = icmp eq i64 %203, 0
  %.in695749.us = or i1 %206, %207
  br i1 %.in695749.us, label %.lr.ph751.us, label %.loopexit730.us

.lr.ph751.us:                                     ; preds = %205, %.lr.ph751.us
  %.0616750.us = phi i64 [ %220, %.lr.ph751.us ], [ %.2625.us, %205 ]
  %208 = load i64, ptr %3, align 8, !tbaa !5
  %209 = add nsw i64 %208, -1
  store i64 %209, ptr %24, align 8, !tbaa !5
  %210 = add nsw i64 %.0616750.us, 1
  %211 = mul nsw i64 %210, %34
  %212 = getelementptr double, ptr %36, i64 %208
  %213 = getelementptr i8, ptr %212, i64 -8
  %214 = getelementptr double, ptr %213, i64 %211
  %215 = getelementptr double, ptr %212, i64 %211
  %216 = getelementptr inbounds double, ptr %37, i64 %.0616750.us
  %217 = getelementptr inbounds double, ptr %42, i64 %.0616750.us
  %218 = call i32 @f2c_drot(ptr noundef nonnull %24, ptr noundef %214, ptr noundef nonnull %32, ptr noundef %215, ptr noundef nonnull %32, ptr noundef nonnull %216, ptr noundef nonnull %217) #5
  %219 = load i64, ptr %22, align 8, !tbaa !5
  %220 = add nsw i64 %219, %.0616750.us
  %221 = icmp slt i64 %219, 0
  %222 = load i64, ptr %23, align 8
  %223 = icmp sge i64 %220, %222
  %224 = icmp sle i64 %220, %222
  %.in695.us = select i1 %221, i1 %223, i1 %224
  br i1 %.in695.us, label %.lr.ph751.us, label %.loopexit730.us, !llvm.loop !14

.loopexit730.us:                                  ; preds = %.lr.ph751.us, %205, %200
  %225 = load i64, ptr %29, align 8, !tbaa !5
  %226 = load i64, ptr %2, align 8, !tbaa !5
  %227 = sub nsw i64 %226, %95
  store i64 %227, ptr %23, align 8, !tbaa !5
  %228 = call i64 @llvm.smin.i64(i64 %225, i64 %227)
  store i64 %228, ptr %31, align 8, !tbaa !5
  %229 = icmp sgt i64 %228, 0
  br i1 %229, label %230, label %.loopexit731.us

230:                                              ; preds = %.loopexit730.us
  %231 = load i64, ptr %27, align 8, !tbaa !5
  %232 = add nsw i64 %231, %204
  %233 = load i64, ptr %3, align 8, !tbaa !5
  %234 = add nsw i64 %232, 1
  %235 = mul nsw i64 %234, %34
  %236 = getelementptr double, ptr %36, i64 %233
  %237 = getelementptr i8, ptr %236, i64 -8
  %238 = getelementptr double, ptr %237, i64 %235
  %239 = getelementptr double, ptr %236, i64 %235
  %240 = getelementptr inbounds double, ptr %37, i64 %232
  %241 = getelementptr inbounds double, ptr %42, i64 %232
  %242 = call i32 @f2c_drot(ptr noundef nonnull %31, ptr noundef %238, ptr noundef nonnull %32, ptr noundef %239, ptr noundef nonnull %32, ptr noundef nonnull %240, ptr noundef nonnull %241) #5
  br label %.loopexit731.us

.loopexit731.us:                                  ; preds = %197, %156, %177, %230, %.loopexit730.us, %159
  br i1 %48, label %243, label %.loopexit728.us

243:                                              ; preds = %.loopexit731.us
  br i1 %.not, label %283, label %244

244:                                              ; preds = %243
  %245 = call i64 @llvm.smax.i64(i64 %.1610774.us, i64 %95)
  %246 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %95, ptr %22, align 8, !tbaa !5
  %247 = load i64, ptr %27, align 8, !tbaa !5
  store i64 %247, ptr %23, align 8, !tbaa !5
  %248 = icmp slt i64 %247, 0
  %249 = icmp sge i64 %.2625.us, %95
  %250 = icmp sle i64 %.2625.us, %95
  %.in701752.us = select i1 %248, i1 %249, i1 %250
  br i1 %.in701752.us, label %.lr.ph756.us.preheader, label %.loopexit728.us

.lr.ph756.us.preheader:                           ; preds = %244
  %251 = add nsw i64 %.0635771.us, -3
  %252 = mul nsw i64 %246, %.0643781.us
  %253 = add nsw i64 %252, 1
  %254 = select i1 %.not691.us, i64 %246, i64 0
  %spec.select706.us = add nsw i64 %253, %254
  %255 = call i64 @llvm.smin.i64(i64 %spec.select706.us, i64 %245)
  %256 = icmp slt i64 %.0635771.us, 4
  %257 = select i1 %256, i64 0, i64 %251
  br label %.lr.ph756.us

.lr.ph756.us:                                     ; preds = %.lr.ph756.us.preheader, %.lr.ph756.us
  %.1755.us = phi i64 [ %267, %.lr.ph756.us ], [ %255, %.lr.ph756.us.preheader ]
  %.0629754.us = phi i64 [ %260, %.lr.ph756.us ], [ %257, %.lr.ph756.us.preheader ]
  %.0637753.us = phi i64 [ %278, %.lr.ph756.us ], [ %.2625.us, %.lr.ph756.us.preheader ]
  %258 = load i64, ptr %29, align 8, !tbaa !5
  %259 = sdiv i64 %.0629754.us, %258
  %260 = add nsw i64 %.0629754.us, 1
  %.neg703.us = add i64 %.0637753.us, %.0643.neg785.us
  %261 = add i64 %.neg703.us, %259
  %262 = call i64 @llvm.smax.i64(i64 %261, i64 1)
  %263 = add nsw i64 %.1755.us, 1
  %264 = sub i64 %263, %262
  store i64 %264, ptr %25, align 8, !tbaa !5
  %265 = load i64, ptr %3, align 8, !tbaa !5
  %266 = add nsw i64 %265, %.1755.us
  store i64 %266, ptr %24, align 8, !tbaa !5
  %267 = call i64 @llvm.smin.i64(i64 %266, i64 %245)
  %268 = add nsw i64 %.0637753.us, -1
  %269 = mul nsw i64 %268, %39
  %270 = getelementptr double, ptr %41, i64 %262
  %271 = getelementptr double, ptr %270, i64 %269
  %272 = mul nsw i64 %.0637753.us, %39
  %273 = getelementptr double, ptr %270, i64 %272
  %274 = getelementptr inbounds double, ptr %37, i64 %.0637753.us
  %275 = getelementptr inbounds double, ptr %42, i64 %.0637753.us
  %276 = call i32 @f2c_drot(ptr noundef nonnull %25, ptr noundef %271, ptr noundef nonnull @c__1, ptr noundef %273, ptr noundef nonnull @c__1, ptr noundef nonnull %274, ptr noundef nonnull %275) #5
  %277 = load i64, ptr %23, align 8, !tbaa !5
  %278 = add nsw i64 %277, %.0637753.us
  %279 = icmp slt i64 %277, 0
  %280 = load i64, ptr %22, align 8
  %281 = icmp sge i64 %278, %280
  %282 = icmp sle i64 %278, %280
  %.in701.us = select i1 %279, i1 %281, i1 %282
  br i1 %.in701.us, label %.lr.ph756.us, label %.loopexit728.us, !llvm.loop !15

283:                                              ; preds = %243
  store i64 %95, ptr %23, align 8, !tbaa !5
  %284 = load i64, ptr %27, align 8, !tbaa !5
  store i64 %284, ptr %22, align 8, !tbaa !5
  %285 = icmp slt i64 %284, 0
  %286 = icmp sge i64 %.2625.us, %95
  %287 = icmp sle i64 %.2625.us, %95
  %.in698761.us = select i1 %285, i1 %286, i1 %287
  br i1 %.in698761.us, label %.lr.ph763.us, label %.loopexit728.us

.loopexit728.us:                                  ; preds = %.lr.ph756.us, %.lr.ph763.us, %244, %283, %.loopexit731.us
  %.2611.us = phi i64 [ %.1610774.us, %.loopexit731.us ], [ %.1610774.us, %283 ], [ %245, %244 ], [ %.1610774.us, %.lr.ph763.us ], [ %245, %.lr.ph756.us ]
  %288 = add nsw i64 %95, %.
  %289 = load i64, ptr %2, align 8, !tbaa !5
  %290 = icmp sgt i64 %288, %289
  br i1 %290, label %291, label %295

291:                                              ; preds = %.loopexit728.us
  %292 = load i64, ptr %26, align 8, !tbaa !5
  %293 = add nsw i64 %292, -1
  store i64 %293, ptr %26, align 8, !tbaa !5
  %294 = add nsw i64 %.1618773.us, -1
  br label %295

295:                                              ; preds = %291, %.loopexit728.us
  %.2619.us = phi i64 [ %294, %291 ], [ %95, %.loopexit728.us ]
  store i64 %.2619.us, ptr %22, align 8, !tbaa !5
  %296 = load i64, ptr %27, align 8, !tbaa !5
  store i64 %296, ptr %23, align 8, !tbaa !5
  %297 = icmp slt i64 %296, 0
  %298 = icmp sge i64 %.2625.us, %.2619.us
  %299 = icmp sle i64 %.2625.us, %.2619.us
  %.in702766.us = select i1 %297, i1 %298, i1 %299
  br i1 %.in702766.us, label %.lr.ph768.us, label %._crit_edge.us

._crit_edge.us:                                   ; preds = %302, %295
  %300 = add nsw i64 %.0635771.us, -1
  %301 = icmp sgt i64 %.0635771.us, 2
  br i1 %301, label %93, label %._crit_edge777.us, !llvm.loop !16

302:                                              ; preds = %.lr.ph768.us, %302
  %.2639767.us = phi i64 [ %.2625.us, %.lr.ph768.us ], [ %314, %302 ]
  %303 = getelementptr inbounds double, ptr %42, i64 %.2639767.us
  %304 = load double, ptr %303, align 8, !tbaa !11
  %305 = add nsw i64 %344, %.2639767.us
  %306 = mul nsw i64 %305, %34
  %gep765.us = getelementptr double, ptr %invariant.gep769, i64 %306
  %307 = load double, ptr %gep765.us, align 8, !tbaa !11
  %308 = fmul double %304, %307
  %309 = getelementptr inbounds double, ptr %42, i64 %305
  store double %308, ptr %309, align 8, !tbaa !11
  %310 = getelementptr inbounds double, ptr %37, i64 %.2639767.us
  %311 = load double, ptr %310, align 8, !tbaa !11
  %312 = load double, ptr %gep765.us, align 8, !tbaa !11
  %313 = fmul double %311, %312
  store double %313, ptr %gep765.us, align 8, !tbaa !11
  %314 = add nsw i64 %.2639767.us, %296
  %315 = icmp sge i64 %314, %.2619.us
  %316 = icmp sle i64 %314, %.2619.us
  %.in702.us = select i1 %297, i1 %315, i1 %316
  br i1 %.in702.us, label %302, label %._crit_edge.us, !llvm.loop !17

.lr.ph763.us:                                     ; preds = %283, %.lr.ph763.us
  %.1638762.us = phi i64 [ %324, %.lr.ph763.us ], [ %.2625.us, %283 ]
  %317 = add nsw i64 %.1638762.us, -1
  %318 = mul nsw i64 %317, %39
  %gep758.us = getelementptr double, ptr %invariant.gep757, i64 %318
  %319 = mul nsw i64 %.1638762.us, %39
  %gep760.us = getelementptr double, ptr %invariant.gep757, i64 %319
  %320 = getelementptr inbounds double, ptr %37, i64 %.1638762.us
  %321 = getelementptr inbounds double, ptr %42, i64 %.1638762.us
  %322 = call i32 @f2c_drot(ptr noundef nonnull %2, ptr noundef %gep758.us, ptr noundef nonnull @c__1, ptr noundef %gep760.us, ptr noundef nonnull @c__1, ptr noundef nonnull %320, ptr noundef nonnull %321) #5
  %323 = load i64, ptr %22, align 8, !tbaa !5
  %324 = add nsw i64 %323, %.1638762.us
  %325 = icmp slt i64 %323, 0
  %326 = load i64, ptr %23, align 8
  %327 = icmp sge i64 %324, %326
  %328 = icmp sle i64 %324, %326
  %.in698.us = select i1 %325, i1 %327, i1 %328
  br i1 %.in698.us, label %.lr.ph763.us, label %.loopexit728.us, !llvm.loop !18

.lr.ph745.us:                                     ; preds = %114, %.lr.ph745.us
  %.0614744.us = phi i64 [ %336, %.lr.ph745.us ], [ %94, %114 ]
  %329 = add nsw i64 %.0614744.us, -1
  %330 = mul nsw i64 %329, %34
  %gep740.us = getelementptr double, ptr %invariant.gep739, i64 %330
  %331 = mul nsw i64 %.0614744.us, %34
  %gep742.us = getelementptr double, ptr %invariant.gep769, i64 %331
  %332 = getelementptr inbounds double, ptr %37, i64 %.0614744.us
  %333 = getelementptr inbounds double, ptr %42, i64 %.0614744.us
  %334 = call i32 @f2c_drot(ptr noundef nonnull %29, ptr noundef %gep740.us, ptr noundef nonnull @c__1, ptr noundef %gep742.us, ptr noundef nonnull @c__1, ptr noundef nonnull %332, ptr noundef nonnull %333) #5
  %335 = load i64, ptr %23, align 8, !tbaa !5
  %336 = add nsw i64 %335, %.0614744.us
  %337 = icmp slt i64 %335, 0
  %338 = load i64, ptr %22, align 8
  %339 = icmp sge i64 %336, %338
  %340 = icmp sle i64 %336, %338
  %.in689.us = select i1 %337, i1 %339, i1 %340
  br i1 %.in689.us, label %.lr.ph745.us, label %.loopexit732.us, !llvm.loop !19

.lr.ph.us:                                        ; preds = %108
  %341 = mul nsw i64 %94, %34
  %invariant.gep737.us = getelementptr double, ptr %36, i64 %341
  br label %110

.lr.ph748.us:                                     ; preds = %177
  %342 = getelementptr inbounds double, ptr %37, i64 %.2625.us
  %343 = getelementptr inbounds double, ptr %42, i64 %.2625.us
  br label %179

.lr.ph768.us:                                     ; preds = %295
  %344 = load i64, ptr %3, align 8, !tbaa !5
  br label %302

._crit_edge777.us:                                ; preds = %._crit_edge.us
  %345 = add nuw nsw i64 %.0643781.us, 1
  %.0643.neg.us = xor i64 %.0643781.us, -1
  %.not684.us.not = icmp slt i64 %.0643781.us, %89
  br i1 %.not684.us.not, label %.lr.ph776.us, label %.loopexit734.loopexit, !llvm.loop !20

.loopexit734.loopexit:                            ; preds = %._crit_edge777.us
  %.pre882 = load i64, ptr %3, align 8, !tbaa !5
  br label %.loopexit734

.loopexit734:                                     ; preds = %.loopexit734.loopexit, %87
  %346 = phi i64 [ %296, %.loopexit734.loopexit ], [ %51, %87 ]
  %347 = phi i64 [ %289, %.loopexit734.loopexit ], [ %82, %87 ]
  %348 = phi i64 [ %.pre882, %.loopexit734.loopexit ], [ %81, %87 ]
  %349 = icmp sgt i64 %348, 0
  br i1 %349, label %.loopexit734.thread, label %392

.loopexit734.thread:                              ; preds = %88, %.loopexit734
  %350 = phi i64 [ %348, %.loopexit734 ], [ %81, %88 ]
  %351 = phi i64 [ %347, %.loopexit734 ], [ %82, %88 ]
  %352 = phi i64 [ %346, %.loopexit734 ], [ %51, %88 ]
  %.not686.not790 = icmp sgt i64 %351, 1
  br i1 %.not686.not790, label %.lr.ph792, label %.loopexit726

.lr.ph792:                                        ; preds = %.loopexit734.thread
  %353 = getelementptr double, ptr %36, i64 %350
  %354 = add nsw i64 %351, -1
  %min.iters.check = icmp ugt i64 %351, 14
  %ident.check.not = icmp eq i64 %34, 1
  %or.cond967 = select i1 %min.iters.check, i1 %ident.check.not, i1 false
  br i1 %or.cond967, label %vector.memcheck, label %scalar.ph.preheader

vector.memcheck:                                  ; preds = %.lr.ph792
  %355 = shl i64 %350, 3
  %356 = add i64 %355, %19
  %357 = sub i64 %20, %356
  %diff.check = icmp ult i64 %357, 32
  br i1 %diff.check, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %354, -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 ]
  %358 = or disjoint i64 %index, 2
  %359 = getelementptr double, ptr %353, i64 %358
  %360 = getelementptr i8, ptr %359, i64 16
  %wide.load = load <2 x double>, ptr %359, align 8, !tbaa !11
  %wide.load909 = load <2 x double>, ptr %360, align 8, !tbaa !11
  %361 = getelementptr double, ptr %7, i64 %index
  %362 = getelementptr inbounds i8, ptr %361, i64 16
  store <2 x double> %wide.load, ptr %361, align 8, !tbaa !11
  store <2 x double> %wide.load909, ptr %362, align 8, !tbaa !11
  %index.next = add nuw i64 %index, 4
  %363 = icmp eq i64 %index.next, %n.vec
  br i1 %363, label %middle.block, label %vector.body, !llvm.loop !21

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %354, %n.vec
  br i1 %cmp.n, label %.loopexit726, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph792
  %.1644791.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph792 ], [ %ind.end, %middle.block ]
  %364 = sub i64 %351, %.1644791.ph
  %xtraiter = and i64 %364, 3
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader, %scalar.ph.prol
  %.1644791.prol = phi i64 [ %365, %scalar.ph.prol ], [ %.1644791.ph, %scalar.ph.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %365 = add nuw nsw i64 %.1644791.prol, 1
  %366 = mul nsw i64 %365, %34
  %367 = getelementptr double, ptr %353, i64 %366
  %368 = load double, ptr %367, align 8, !tbaa !11
  %369 = getelementptr inbounds double, ptr %38, i64 %.1644791.prol
  store double %368, ptr %369, 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 %scalar.ph.prol.loopexit, label %scalar.ph.prol, !llvm.loop !24

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %.1644791.unr = phi i64 [ %.1644791.ph, %scalar.ph.preheader ], [ %365, %scalar.ph.prol ]
  %370 = sub i64 %.1644791.ph, %351
  %371 = icmp ugt i64 %370, -4
  br i1 %371, label %.loopexit726, label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %.1644791 = phi i64 [ %387, %scalar.ph ], [ %.1644791.unr, %scalar.ph.prol.loopexit ]
  %372 = add nuw nsw i64 %.1644791, 1
  %373 = mul nsw i64 %372, %34
  %374 = getelementptr double, ptr %353, i64 %373
  %375 = load double, ptr %374, align 8, !tbaa !11
  %376 = getelementptr inbounds double, ptr %38, i64 %.1644791
  store double %375, ptr %376, align 8, !tbaa !11
  %377 = add nuw nsw i64 %.1644791, 2
  %378 = mul nsw i64 %377, %34
  %379 = getelementptr double, ptr %353, i64 %378
  %380 = load double, ptr %379, align 8, !tbaa !11
  %381 = getelementptr double, ptr %7, i64 %.1644791
  store double %380, ptr %381, align 8, !tbaa !11
  %382 = add nuw nsw i64 %.1644791, 3
  %383 = mul nsw i64 %382, %34
  %384 = getelementptr double, ptr %353, i64 %383
  %385 = load double, ptr %384, align 8, !tbaa !11
  %386 = getelementptr inbounds double, ptr %38, i64 %377
  store double %385, ptr %386, align 8, !tbaa !11
  %387 = add nuw nsw i64 %.1644791, 4
  %388 = mul nsw i64 %387, %34
  %389 = getelementptr double, ptr %353, i64 %388
  %390 = load double, ptr %389, align 8, !tbaa !11
  %391 = getelementptr inbounds double, ptr %38, i64 %382
  store double %390, ptr %391, align 8, !tbaa !11
  %exitcond.not.3 = icmp eq i64 %387, %351
  br i1 %exitcond.not.3, label %.loopexit726, label %scalar.ph, !llvm.loop !26

392:                                              ; preds = %.loopexit734
  %.not685.not788 = icmp sgt i64 %347, 1
  br i1 %.not685.not788, label %.loopexit726.thread, label %.loopexit726

.loopexit726.thread:                              ; preds = %392
  %393 = shl i64 %347, 3
  %394 = add i64 %393, -8
  call void @llvm.memset.p0.i64(ptr align 8 %7, i8 0, i64 %394, i1 false), !tbaa !11
  br label %.lr.ph795

.loopexit726:                                     ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block, %392, %.loopexit734.thread
  %395 = phi i64 [ %347, %392 ], [ %351, %.loopexit734.thread ], [ %351, %middle.block ], [ %351, %scalar.ph ], [ %351, %scalar.ph.prol.loopexit ]
  %396 = phi i64 [ %346, %392 ], [ %352, %.loopexit734.thread ], [ %352, %middle.block ], [ %352, %scalar.ph ], [ %352, %scalar.ph.prol.loopexit ]
  %.not687793 = icmp slt i64 %395, 1
  br i1 %.not687793, label %.loopexit, label %.lr.ph795

.lr.ph795:                                        ; preds = %.loopexit726.thread, %.loopexit726
  %397 = phi i64 [ %346, %.loopexit726.thread ], [ %396, %.loopexit726 ]
  %398 = phi i64 [ %347, %.loopexit726.thread ], [ %395, %.loopexit726 ]
  %399 = getelementptr double, ptr %36, i64 %397
  %min.iters.check916 = icmp ugt i64 %398, 15
  %ident.check911.not = icmp eq i64 %34, 1
  %or.cond968 = select i1 %min.iters.check916, i1 %ident.check911.not, i1 false
  br i1 %or.cond968, label %vector.memcheck912, label %scalar.ph915.preheader

vector.memcheck912:                               ; preds = %.lr.ph795
  %400 = add i64 %18, 8
  %401 = shl i64 %397, 3
  %402 = add i64 %401, %17
  %403 = sub i64 %400, %402
  %diff.check913 = icmp ult i64 %403, 32
  br i1 %diff.check913, label %scalar.ph915.preheader, label %vector.ph917

vector.ph917:                                     ; preds = %vector.memcheck912
  %n.vec919 = and i64 %398, 9223372036854775804
  %ind.end920 = or disjoint i64 %n.vec919, 1
  br label %vector.body922

vector.body922:                                   ; preds = %vector.body922, %vector.ph917
  %index923 = phi i64 [ 0, %vector.ph917 ], [ %index.next927, %vector.body922 ]
  %offset.idx924 = or disjoint i64 %index923, 1
  %404 = getelementptr double, ptr %399, i64 %offset.idx924
  %405 = getelementptr i8, ptr %404, i64 16
  %wide.load925 = load <2 x double>, ptr %404, align 8, !tbaa !11
  %wide.load926 = load <2 x double>, ptr %405, align 8, !tbaa !11
  %406 = getelementptr double, ptr %6, i64 %index923
  %407 = getelementptr inbounds i8, ptr %406, i64 16
  store <2 x double> %wide.load925, ptr %406, align 8, !tbaa !11
  store <2 x double> %wide.load926, ptr %407, align 8, !tbaa !11
  %index.next927 = add nuw i64 %index923, 4
  %408 = icmp eq i64 %index.next927, %n.vec919
  br i1 %408, label %middle.block914, label %vector.body922, !llvm.loop !27

middle.block914:                                  ; preds = %vector.body922
  %cmp.n928 = icmp eq i64 %398, %n.vec919
  br i1 %cmp.n928, label %.loopexit, label %scalar.ph915.preheader

scalar.ph915.preheader:                           ; preds = %middle.block914, %vector.memcheck912, %.lr.ph795
  %.3646794.ph = phi i64 [ 1, %vector.memcheck912 ], [ 1, %.lr.ph795 ], [ %ind.end920, %middle.block914 ]
  %409 = add nuw i64 %398, 1
  %410 = sub i64 %409, %.3646794.ph
  %411 = sub i64 %398, %.3646794.ph
  %xtraiter983 = and i64 %410, 3
  %lcmp.mod984.not = icmp eq i64 %xtraiter983, 0
  br i1 %lcmp.mod984.not, label %scalar.ph915.prol.loopexit, label %scalar.ph915.prol

scalar.ph915.prol:                                ; preds = %scalar.ph915.preheader, %scalar.ph915.prol
  %.3646794.prol = phi i64 [ %416, %scalar.ph915.prol ], [ %.3646794.ph, %scalar.ph915.preheader ]
  %prol.iter985 = phi i64 [ %prol.iter985.next, %scalar.ph915.prol ], [ 0, %scalar.ph915.preheader ]
  %412 = mul nsw i64 %.3646794.prol, %34
  %413 = getelementptr double, ptr %399, i64 %412
  %414 = load double, ptr %413, align 8, !tbaa !11
  %415 = getelementptr inbounds double, ptr %37, i64 %.3646794.prol
  store double %414, ptr %415, align 8, !tbaa !11
  %416 = add nuw i64 %.3646794.prol, 1
  %prol.iter985.next = add i64 %prol.iter985, 1
  %prol.iter985.cmp.not = icmp eq i64 %prol.iter985.next, %xtraiter983
  br i1 %prol.iter985.cmp.not, label %scalar.ph915.prol.loopexit, label %scalar.ph915.prol, !llvm.loop !28

scalar.ph915.prol.loopexit:                       ; preds = %scalar.ph915.prol, %scalar.ph915.preheader
  %.3646794.unr = phi i64 [ %.3646794.ph, %scalar.ph915.preheader ], [ %416, %scalar.ph915.prol ]
  %417 = icmp ult i64 %411, 3
  br i1 %417, label %.loopexit, label %scalar.ph915

scalar.ph915:                                     ; preds = %scalar.ph915.prol.loopexit, %scalar.ph915
  %.3646794 = phi i64 [ %437, %scalar.ph915 ], [ %.3646794.unr, %scalar.ph915.prol.loopexit ]
  %418 = mul nsw i64 %.3646794, %34
  %419 = getelementptr double, ptr %399, i64 %418
  %420 = load double, ptr %419, align 8, !tbaa !11
  %421 = getelementptr inbounds double, ptr %37, i64 %.3646794
  store double %420, ptr %421, align 8, !tbaa !11
  %422 = add nuw i64 %.3646794, 1
  %423 = mul nsw i64 %422, %34
  %424 = getelementptr double, ptr %399, i64 %423
  %425 = load double, ptr %424, align 8, !tbaa !11
  %426 = getelementptr double, ptr %6, i64 %.3646794
  store double %425, ptr %426, align 8, !tbaa !11
  %427 = add nuw i64 %.3646794, 2
  %428 = mul nsw i64 %427, %34
  %429 = getelementptr double, ptr %399, i64 %428
  %430 = load double, ptr %429, align 8, !tbaa !11
  %431 = getelementptr inbounds double, ptr %37, i64 %427
  store double %430, ptr %431, align 8, !tbaa !11
  %432 = add nuw i64 %.3646794, 3
  %433 = mul nsw i64 %432, %34
  %434 = getelementptr double, ptr %399, i64 %433
  %435 = load double, ptr %434, align 8, !tbaa !11
  %436 = getelementptr inbounds double, ptr %37, i64 %432
  store double %435, ptr %436, align 8, !tbaa !11
  %437 = add nuw i64 %.3646794, 4
  %exitcond875.not.3 = icmp eq i64 %432, %398
  br i1 %exitcond875.not.3, label %.loopexit, label %scalar.ph915, !llvm.loop !29

438:                                              ; preds = %80
  br i1 %86, label %439, label %.loopexit724

439:                                              ; preds = %438
  store i64 0, ptr %26, align 8, !tbaa !5
  %440 = add nsw i64 %82, -2
  %.not665843 = icmp slt i64 %82, 3
  br i1 %.not665843, label %.loopexit724.thread, label %.lr.ph839.us.preheader

.lr.ph839.us.preheader:                           ; preds = %439
  %441 = add nsw i64 %., 1
  %invariant.gep825 = getelementptr i8, ptr %36, i64 -8
  %invariant.gep827 = getelementptr i8, ptr %36, i64 8
  %invariant.gep829 = getelementptr i8, ptr %36, i64 24
  %invariant.gep831 = getelementptr i8, ptr %36, i64 16
  %invariant.gep815 = getelementptr i8, ptr %41, i64 8
  %442 = add nsw i64 %., 2
  br label %.lr.ph839.us

.lr.ph839.us:                                     ; preds = %.lr.ph839.us.preheader, %._crit_edge840.us
  %443 = phi i64 [ %635, %._crit_edge840.us ], [ %51, %.lr.ph839.us.preheader ]
  %.4647.neg848.us = phi i64 [ %.4647.neg.us, %._crit_edge840.us ], [ -1, %.lr.ph839.us.preheader ]
  %.3612847.us = phi i64 [ %.5.us, %._crit_edge840.us ], [ 1, %.lr.ph839.us.preheader ]
  %.3620846.us = phi i64 [ %.5622.us, %._crit_edge840.us ], [ 1, %.lr.ph839.us.preheader ]
  %.3626845.us = phi i64 [ %.5628.us, %._crit_edge840.us ], [ %442, %.lr.ph839.us.preheader ]
  %.4647844.us = phi i64 [ %447, %._crit_edge840.us ], [ 1, %.lr.ph839.us.preheader ]
  %444 = add nsw i64 %.4647.neg848.us, 1
  %445 = mul nsw i64 %.4647844.us, %34
  %446 = add nsw i64 %.4647844.us, -1
  %447 = add nuw nsw i64 %.4647844.us, 1
  %448 = mul nsw i64 %447, %34
  br label %449

449:                                              ; preds = %.lr.ph839.us, %._crit_edge.us852
  %450 = phi i64 [ %443, %.lr.ph839.us ], [ %635, %._crit_edge.us852 ]
  %.4837.us = phi i64 [ %.3612847.us, %.lr.ph839.us ], [ %.5.us, %._crit_edge.us852 ]
  %.4621836.us = phi i64 [ %.3620846.us, %.lr.ph839.us ], [ %.5622.us, %._crit_edge.us852 ]
  %.4627835.us = phi i64 [ %.3626845.us, %.lr.ph839.us ], [ %.5628.us, %._crit_edge.us852 ]
  %.1636833.us = phi i64 [ %441, %.lr.ph839.us ], [ %639, %._crit_edge.us852 ]
  %451 = add nsw i64 %.4627835.us, %.
  %452 = add nsw i64 %.4621836.us, %.
  %453 = load i64, ptr %26, align 8, !tbaa !5
  %454 = icmp sgt i64 %453, 0
  br i1 %454, label %455, label %.loopexit722.us

455:                                              ; preds = %449
  %456 = sub nsw i64 %451, %450
  %457 = mul nsw i64 %456, %34
  %458 = getelementptr double, ptr %36, i64 %450
  %459 = getelementptr double, ptr %458, i64 %457
  %460 = getelementptr inbounds double, ptr %42, i64 %451
  %461 = getelementptr inbounds double, ptr %37, i64 %451
  %462 = call i32 @dlargv_(ptr noundef nonnull %26, ptr noundef %459, ptr noundef nonnull %30, ptr noundef nonnull %460, ptr noundef nonnull %27, ptr noundef nonnull %461, ptr noundef nonnull %27) #5
  %463 = load i64, ptr %26, align 8, !tbaa !5
  %464 = load i64, ptr %3, align 8, !tbaa !5
  %465 = shl i64 %464, 1
  %.not669.us = icmp slt i64 %463, %465
  br i1 %.not669.us, label %480, label %466

466:                                              ; preds = %455
  %467 = add nsw i64 %464, -1
  store i64 %467, ptr %23, align 8, !tbaa !5
  %.not670796.us = icmp slt i64 %464, 2
  br i1 %.not670796.us, label %.loopexit722.us, label %.lr.ph798.us

.lr.ph798.us:                                     ; preds = %466, %.lr.ph798.us
  %.2633797.us = phi i64 [ %478, %.lr.ph798.us ], [ 1, %466 ]
  %468 = load i64, ptr %27, align 8, !tbaa !5
  %469 = sub nsw i64 %468, %.2633797.us
  %470 = add i64 %.2633797.us, %451
  %471 = sub i64 %470, %468
  %472 = mul nsw i64 %471, %34
  %473 = getelementptr double, ptr %36, i64 %469
  %474 = getelementptr double, ptr %473, i64 %472
  %475 = getelementptr i8, ptr %473, i64 8
  %476 = getelementptr double, ptr %475, i64 %472
  %477 = call i32 @dlartv_(ptr noundef nonnull %26, ptr noundef %474, ptr noundef nonnull %30, ptr noundef %476, ptr noundef nonnull %30, ptr noundef nonnull %461, ptr noundef nonnull %460, ptr noundef nonnull %27) #5
  %478 = add nuw nsw i64 %.2633797.us, 1
  %479 = load i64, ptr %23, align 8, !tbaa !5
  %.not670.us.not = icmp slt i64 %.2633797.us, %479
  br i1 %.not670.us.not, label %.lr.ph798.us, label %.loopexit722.us, !llvm.loop !30

480:                                              ; preds = %455
  %481 = load i64, ptr %27, align 8, !tbaa !5
  %482 = add nsw i64 %463, -1
  %483 = mul nsw i64 %481, %482
  %484 = add nsw i64 %483, %451
  store i64 %484, ptr %23, align 8, !tbaa !5
  store i64 %481, ptr %22, align 8, !tbaa !5
  %485 = icmp slt i64 %481, 0
  %486 = icmp slt i64 %483, 1
  %487 = icmp sgt i64 %483, -1
  %.in799.us = select i1 %485, i1 %486, i1 %487
  br i1 %.in799.us, label %.lr.ph801.us, label %.loopexit722.us

.loopexit722.us:                                  ; preds = %.lr.ph798.us, %.lr.ph801.us, %466, %480, %449
  %.not671.us = icmp eq i64 %.1636833.us, 2
  br i1 %.not671.us, label %thread-pre-split711.us, label %488

488:                                              ; preds = %.loopexit722.us
  %489 = load i64, ptr %2, align 8, !tbaa !5
  %490 = add i64 %444, %489
  %.not672.us = icmp sgt i64 %.1636833.us, %490
  br i1 %.not672.us, label %507, label %491

491:                                              ; preds = %488
  %gep826.us = getelementptr double, ptr %invariant.gep825, i64 %.1636833.us
  %492 = getelementptr double, ptr %gep826.us, i64 %445
  %493 = getelementptr double, ptr %36, i64 %.1636833.us
  %494 = getelementptr double, ptr %493, i64 %445
  %495 = add i64 %446, %.1636833.us
  %496 = getelementptr inbounds double, ptr %37, i64 %495
  %497 = getelementptr inbounds double, ptr %42, i64 %495
  %498 = call i32 @dlartg_(ptr noundef %492, ptr noundef %494, ptr noundef nonnull %496, ptr noundef nonnull %497, ptr noundef nonnull %33) #5
  %499 = load double, ptr %33, align 8, !tbaa !11
  store double %499, ptr %492, align 8, !tbaa !11
  %500 = add nsw i64 %.1636833.us, -3
  store i64 %500, ptr %22, align 8, !tbaa !5
  %501 = load i64, ptr %5, align 8, !tbaa !5
  %502 = add nsw i64 %501, -1
  store i64 %502, ptr %23, align 8, !tbaa !5
  store i64 %502, ptr %24, align 8, !tbaa !5
  %503 = getelementptr i8, ptr %493, i64 -16
  %504 = getelementptr double, ptr %503, i64 %448
  %505 = getelementptr double, ptr %gep826.us, i64 %448
  %506 = call i32 @f2c_drot(ptr noundef nonnull %22, ptr noundef %504, ptr noundef nonnull %23, ptr noundef %505, ptr noundef nonnull %24, ptr noundef nonnull %496, ptr noundef nonnull %497) #5
  br label %507

507:                                              ; preds = %491, %488
  %508 = load i64, ptr %26, align 8, !tbaa !5
  %509 = add nsw i64 %508, 1
  store i64 %509, ptr %26, align 8, !tbaa !5
  %510 = add nsw i64 %.4627835.us, -1
  br label %511

thread-pre-split711.us:                           ; preds = %.loopexit722.us
  %.pr712.us = load i64, ptr %26, align 8, !tbaa !5
  br label %511

511:                                              ; preds = %thread-pre-split711.us, %507
  %512 = phi i64 [ %.pr712.us, %thread-pre-split711.us ], [ %509, %507 ]
  %.5628.us = phi i64 [ %451, %thread-pre-split711.us ], [ %510, %507 ]
  %513 = icmp sgt i64 %512, 0
  br i1 %513, label %514, label %.loopexit721.us

514:                                              ; preds = %511
  %515 = add nsw i64 %.5628.us, -1
  %516 = mul nsw i64 %515, %34
  %517 = getelementptr double, ptr %36, i64 %516
  %518 = getelementptr i8, ptr %517, i64 8
  %519 = mul nsw i64 %.5628.us, %34
  %gep828.us = getelementptr double, ptr %invariant.gep827, i64 %519
  %520 = getelementptr i8, ptr %517, i64 16
  %521 = getelementptr inbounds double, ptr %37, i64 %.5628.us
  %522 = getelementptr inbounds double, ptr %42, i64 %.5628.us
  %523 = call i32 @dlar2v_(ptr noundef nonnull %26, ptr noundef %518, ptr noundef %gep828.us, ptr noundef %520, ptr noundef nonnull %30, ptr noundef nonnull %521, ptr noundef nonnull %522, ptr noundef nonnull %27) #5
  %.pre883 = load i64, ptr %26, align 8, !tbaa !5
  %524 = icmp sgt i64 %.pre883, 0
  br i1 %524, label %525, label %.loopexit721.us

525:                                              ; preds = %514
  %526 = load i64, ptr %3, align 8, !tbaa !5
  %527 = shl i64 %526, 1
  %.not673.us = icmp slt i64 %.pre883, %527
  br i1 %.not673.us, label %548, label %528

528:                                              ; preds = %525
  %529 = add nsw i64 %526, -1
  store i64 %529, ptr %22, align 8, !tbaa !5
  %.not677802.us = icmp slt i64 %526, 2
  br i1 %.not677802.us, label %.loopexit721.us, label %.lr.ph804.us

530:                                              ; preds = %.lr.ph804.us, %545
  %531 = phi i64 [ %529, %.lr.ph804.us ], [ %546, %545 ]
  %.3634803.us = phi i64 [ 1, %.lr.ph804.us ], [ %547, %545 ]
  %532 = add nsw i64 %.3634803.us, %452
  %533 = load i64, ptr %2, align 8, !tbaa !5
  %534 = icmp sgt i64 %532, %533
  %535 = load i64, ptr %26, align 8
  %536 = sext i1 %534 to i64
  %storemerge.us = add nsw i64 %535, %536
  store i64 %storemerge.us, ptr %28, align 8, !tbaa !5
  %537 = icmp sgt i64 %storemerge.us, 0
  br i1 %537, label %538, label %545

538:                                              ; preds = %530
  %539 = getelementptr double, ptr %36, i64 %.3634803.us
  %540 = getelementptr i8, ptr %539, i64 16
  %541 = getelementptr double, ptr %540, i64 %686
  %542 = getelementptr i8, ptr %539, i64 8
  %543 = getelementptr double, ptr %542, i64 %687
  %544 = call i32 @dlartv_(ptr noundef nonnull %28, ptr noundef %541, ptr noundef nonnull %30, ptr noundef %543, ptr noundef nonnull %30, ptr noundef nonnull %688, ptr noundef nonnull %689, ptr noundef nonnull %27) #5
  %.pre884 = load i64, ptr %22, align 8, !tbaa !5
  br label %545

545:                                              ; preds = %538, %530
  %546 = phi i64 [ %.pre884, %538 ], [ %531, %530 ]
  %547 = add nuw nsw i64 %.3634803.us, 1
  %.not677.us.not = icmp slt i64 %.3634803.us, %546
  br i1 %.not677.us.not, label %530, label %.loopexit721.us, !llvm.loop !31

548:                                              ; preds = %525
  %549 = load i64, ptr %27, align 8, !tbaa !5
  %550 = add nsw i64 %.pre883, -2
  %551 = mul nsw i64 %549, %550
  %552 = add nsw i64 %551, %.5628.us
  %.not674.us = icmp slt i64 %551, 0
  br i1 %.not674.us, label %.loopexit720.us, label %553

553:                                              ; preds = %548
  store i64 %552, ptr %22, align 8, !tbaa !5
  store i64 %549, ptr %23, align 8, !tbaa !5
  %554 = icmp sgt i64 %549, -1
  %555 = icmp eq i64 %551, 0
  %.in675807.us = or i1 %554, %555
  br i1 %.in675807.us, label %.lr.ph809.us, label %.loopexit720.us

.lr.ph809.us:                                     ; preds = %553, %.lr.ph809.us
  %.0613808.us = phi i64 [ %563, %.lr.ph809.us ], [ %.5628.us, %553 ]
  %556 = add nsw i64 %.0613808.us, -1
  %557 = mul nsw i64 %556, %34
  %gep.us851 = getelementptr double, ptr %invariant.gep829, i64 %557
  %558 = mul nsw i64 %.0613808.us, %34
  %gep806.us = getelementptr double, ptr %invariant.gep831, i64 %558
  %559 = getelementptr inbounds double, ptr %37, i64 %.0613808.us
  %560 = getelementptr inbounds double, ptr %42, i64 %.0613808.us
  %561 = call i32 @f2c_drot(ptr noundef nonnull %29, ptr noundef %gep.us851, ptr noundef nonnull @c__1, ptr noundef %gep806.us, ptr noundef nonnull @c__1, ptr noundef nonnull %559, ptr noundef nonnull %560) #5
  %562 = load i64, ptr %23, align 8, !tbaa !5
  %563 = add nsw i64 %562, %.0613808.us
  %564 = icmp slt i64 %562, 0
  %565 = load i64, ptr %22, align 8
  %566 = icmp sge i64 %563, %565
  %567 = icmp sle i64 %563, %565
  %.in675.us = select i1 %564, i1 %566, i1 %567
  br i1 %.in675.us, label %.lr.ph809.us, label %.loopexit720.us, !llvm.loop !32

.loopexit720.us:                                  ; preds = %.lr.ph809.us, %553, %548
  %568 = load i64, ptr %29, align 8, !tbaa !5
  store i64 %568, ptr %23, align 8, !tbaa !5
  %569 = load i64, ptr %2, align 8, !tbaa !5
  %570 = sub nsw i64 %569, %452
  store i64 %570, ptr %22, align 8, !tbaa !5
  %571 = call i64 @llvm.smin.i64(i64 %568, i64 %570)
  store i64 %571, ptr %31, align 8, !tbaa !5
  %572 = icmp sgt i64 %571, 0
  br i1 %572, label %573, label %.loopexit721.us

573:                                              ; preds = %.loopexit720.us
  %574 = load i64, ptr %27, align 8, !tbaa !5
  %575 = add nsw i64 %574, %552
  %576 = add nsw i64 %575, -1
  %577 = mul nsw i64 %576, %34
  %gep830.us = getelementptr double, ptr %invariant.gep829, i64 %577
  %578 = mul nsw i64 %575, %34
  %gep832.us = getelementptr double, ptr %invariant.gep831, i64 %578
  %579 = getelementptr inbounds double, ptr %37, i64 %575
  %580 = getelementptr inbounds double, ptr %42, i64 %575
  %581 = call i32 @f2c_drot(ptr noundef nonnull %31, ptr noundef %gep830.us, ptr noundef nonnull @c__1, ptr noundef %gep832.us, ptr noundef nonnull @c__1, ptr noundef nonnull %579, ptr noundef nonnull %580) #5
  br label %.loopexit721.us

.loopexit721.us:                                  ; preds = %545, %511, %528, %573, %.loopexit720.us, %514
  br i1 %48, label %582, label %.loopexit718.us

582:                                              ; preds = %.loopexit721.us
  br i1 %.not, label %622, label %583

583:                                              ; preds = %582
  %584 = call i64 @llvm.smax.i64(i64 %.4837.us, i64 %452)
  %585 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %452, ptr %23, align 8, !tbaa !5
  %586 = load i64, ptr %27, align 8, !tbaa !5
  store i64 %586, ptr %22, align 8, !tbaa !5
  %587 = icmp slt i64 %586, 0
  %588 = icmp sge i64 %.5628.us, %452
  %589 = icmp sle i64 %.5628.us, %452
  %.in681810.us = select i1 %587, i1 %588, i1 %589
  br i1 %.in681810.us, label %.lr.ph814.us.preheader, label %.loopexit718.us

.lr.ph814.us.preheader:                           ; preds = %583
  %590 = add nsw i64 %.1636833.us, -3
  %591 = mul nsw i64 %585, %.4647844.us
  %592 = add nsw i64 %591, 1
  %593 = select i1 %.not671.us, i64 %585, i64 0
  %spec.select707.us = add nsw i64 %592, %593
  %594 = call i64 @llvm.smin.i64(i64 %spec.select707.us, i64 %584)
  %595 = icmp slt i64 %.1636833.us, 4
  %596 = select i1 %595, i64 0, i64 %590
  br label %.lr.ph814.us

.lr.ph814.us:                                     ; preds = %.lr.ph814.us.preheader, %.lr.ph814.us
  %.3813.us = phi i64 [ %606, %.lr.ph814.us ], [ %594, %.lr.ph814.us.preheader ]
  %.1630812.us = phi i64 [ %599, %.lr.ph814.us ], [ %596, %.lr.ph814.us.preheader ]
  %.3640811.us = phi i64 [ %617, %.lr.ph814.us ], [ %.5628.us, %.lr.ph814.us.preheader ]
  %597 = load i64, ptr %29, align 8, !tbaa !5
  %598 = sdiv i64 %.1630812.us, %597
  %599 = add nsw i64 %.1630812.us, 1
  %.neg.us = add i64 %.3640811.us, %.4647.neg848.us
  %600 = add i64 %.neg.us, %598
  %601 = call i64 @llvm.smax.i64(i64 %600, i64 1)
  %602 = add nsw i64 %.3813.us, 1
  %603 = sub i64 %602, %601
  store i64 %603, ptr %25, align 8, !tbaa !5
  %604 = load i64, ptr %3, align 8, !tbaa !5
  %605 = add nsw i64 %604, %.3813.us
  store i64 %605, ptr %24, align 8, !tbaa !5
  %606 = call i64 @llvm.smin.i64(i64 %605, i64 %584)
  %607 = add nsw i64 %.3640811.us, -1
  %608 = mul nsw i64 %607, %39
  %609 = getelementptr double, ptr %41, i64 %601
  %610 = getelementptr double, ptr %609, i64 %608
  %611 = mul nsw i64 %.3640811.us, %39
  %612 = getelementptr double, ptr %609, i64 %611
  %613 = getelementptr inbounds double, ptr %37, i64 %.3640811.us
  %614 = getelementptr inbounds double, ptr %42, i64 %.3640811.us
  %615 = call i32 @f2c_drot(ptr noundef nonnull %25, ptr noundef %610, ptr noundef nonnull @c__1, ptr noundef %612, ptr noundef nonnull @c__1, ptr noundef nonnull %613, ptr noundef nonnull %614) #5
  %616 = load i64, ptr %22, align 8, !tbaa !5
  %617 = add nsw i64 %616, %.3640811.us
  %618 = icmp slt i64 %616, 0
  %619 = load i64, ptr %23, align 8
  %620 = icmp sge i64 %617, %619
  %621 = icmp sle i64 %617, %619
  %.in681.us = select i1 %618, i1 %620, i1 %621
  br i1 %.in681.us, label %.lr.ph814.us, label %.loopexit718.us, !llvm.loop !33

622:                                              ; preds = %582
  store i64 %452, ptr %22, align 8, !tbaa !5
  %623 = load i64, ptr %27, align 8, !tbaa !5
  store i64 %623, ptr %23, align 8, !tbaa !5
  %624 = icmp slt i64 %623, 0
  %625 = icmp sge i64 %.5628.us, %452
  %626 = icmp sle i64 %.5628.us, %452
  %.in678819.us = select i1 %624, i1 %625, i1 %626
  br i1 %.in678819.us, label %.lr.ph821.us, label %.loopexit718.us

.loopexit718.us:                                  ; preds = %.lr.ph814.us, %.lr.ph821.us, %583, %622, %.loopexit721.us
  %.5.us = phi i64 [ %.4837.us, %.loopexit721.us ], [ %.4837.us, %622 ], [ %584, %583 ], [ %.4837.us, %.lr.ph821.us ], [ %584, %.lr.ph814.us ]
  %627 = add nsw i64 %452, %.
  %628 = load i64, ptr %2, align 8, !tbaa !5
  %629 = icmp sgt i64 %627, %628
  br i1 %629, label %630, label %634

630:                                              ; preds = %.loopexit718.us
  %631 = load i64, ptr %26, align 8, !tbaa !5
  %632 = add nsw i64 %631, -1
  store i64 %632, ptr %26, align 8, !tbaa !5
  %633 = add nsw i64 %.4621836.us, -1
  br label %634

634:                                              ; preds = %630, %.loopexit718.us
  %.5622.us = phi i64 [ %633, %630 ], [ %452, %.loopexit718.us ]
  store i64 %.5622.us, ptr %23, align 8, !tbaa !5
  %635 = load i64, ptr %27, align 8, !tbaa !5
  store i64 %635, ptr %22, align 8, !tbaa !5
  %636 = icmp slt i64 %635, 0
  %637 = icmp sge i64 %.5628.us, %.5622.us
  %638 = icmp sle i64 %.5628.us, %.5622.us
  %.in682822.us = select i1 %636, i1 %637, i1 %638
  br i1 %.in682822.us, label %.lr.ph824.us, label %._crit_edge.us852

._crit_edge.us852:                                ; preds = %641, %634
  %639 = add nsw i64 %.1636833.us, -1
  %640 = icmp sgt i64 %.1636833.us, 2
  br i1 %640, label %449, label %._crit_edge840.us, !llvm.loop !34

641:                                              ; preds = %.lr.ph824.us, %641
  %.5642823.us = phi i64 [ %.5628.us, %.lr.ph824.us ], [ %653, %641 ]
  %642 = getelementptr inbounds double, ptr %42, i64 %.5642823.us
  %643 = load double, ptr %642, align 8, !tbaa !11
  %644 = mul nsw i64 %.5642823.us, %34
  %645 = getelementptr double, ptr %690, i64 %644
  %646 = load double, ptr %645, align 8, !tbaa !11
  %647 = fmul double %643, %646
  %648 = getelementptr double, ptr %642, i64 %691
  store double %647, ptr %648, align 8, !tbaa !11
  %649 = getelementptr inbounds double, ptr %37, i64 %.5642823.us
  %650 = load double, ptr %649, align 8, !tbaa !11
  %651 = load double, ptr %645, align 8, !tbaa !11
  %652 = fmul double %650, %651
  store double %652, ptr %645, align 8, !tbaa !11
  %653 = add nsw i64 %.5642823.us, %635
  %654 = icmp sge i64 %653, %.5622.us
  %655 = icmp sle i64 %653, %.5622.us
  %.in682.us = select i1 %636, i1 %654, i1 %655
  br i1 %.in682.us, label %641, label %._crit_edge.us852, !llvm.loop !35

.lr.ph821.us:                                     ; preds = %622, %.lr.ph821.us
  %.4641820.us = phi i64 [ %663, %.lr.ph821.us ], [ %.5628.us, %622 ]
  %656 = add nsw i64 %.4641820.us, -1
  %657 = mul nsw i64 %656, %39
  %gep816.us = getelementptr double, ptr %invariant.gep815, i64 %657
  %658 = mul nsw i64 %.4641820.us, %39
  %gep818.us = getelementptr double, ptr %invariant.gep815, i64 %658
  %659 = getelementptr inbounds double, ptr %37, i64 %.4641820.us
  %660 = getelementptr inbounds double, ptr %42, i64 %.4641820.us
  %661 = call i32 @f2c_drot(ptr noundef nonnull %2, ptr noundef %gep816.us, ptr noundef nonnull @c__1, ptr noundef %gep818.us, ptr noundef nonnull @c__1, ptr noundef nonnull %659, ptr noundef nonnull %660) #5
  %662 = load i64, ptr %23, align 8, !tbaa !5
  %663 = add nsw i64 %662, %.4641820.us
  %664 = icmp slt i64 %662, 0
  %665 = load i64, ptr %22, align 8
  %666 = icmp sge i64 %663, %665
  %667 = icmp sle i64 %663, %665
  %.in678.us = select i1 %664, i1 %666, i1 %667
  br i1 %.in678.us, label %.lr.ph821.us, label %.loopexit718.us, !llvm.loop !36

.lr.ph801.us:                                     ; preds = %480, %.lr.ph801.us
  %.1615800.us = phi i64 [ %680, %.lr.ph801.us ], [ %451, %480 ]
  %668 = load i64, ptr %3, align 8, !tbaa !5
  %669 = sub nsw i64 %.1615800.us, %668
  %670 = mul nsw i64 %669, %34
  %671 = getelementptr double, ptr %36, i64 %668
  %672 = getelementptr double, ptr %671, i64 %670
  %673 = load i64, ptr %27, align 8, !tbaa !5
  %674 = getelementptr double, ptr %36, i64 %673
  %675 = getelementptr double, ptr %674, i64 %670
  %676 = getelementptr inbounds double, ptr %37, i64 %.1615800.us
  %677 = getelementptr inbounds double, ptr %42, i64 %.1615800.us
  %678 = call i32 @f2c_drot(ptr noundef nonnull %29, ptr noundef %672, ptr noundef nonnull %32, ptr noundef %675, ptr noundef nonnull %32, ptr noundef nonnull %676, ptr noundef nonnull %677) #5
  %679 = load i64, ptr %22, align 8, !tbaa !5
  %680 = add nsw i64 %679, %.1615800.us
  %681 = icmp slt i64 %679, 0
  %682 = load i64, ptr %23, align 8
  %683 = icmp sge i64 %680, %682
  %684 = icmp sle i64 %680, %682
  %.in.us = select i1 %681, i1 %683, i1 %684
  br i1 %.in.us, label %.lr.ph801.us, label %.loopexit722.us, !llvm.loop !37

.lr.ph804.us:                                     ; preds = %528
  %685 = add nsw i64 %.5628.us, -1
  %686 = mul nsw i64 %685, %34
  %687 = mul nsw i64 %.5628.us, %34
  %688 = getelementptr inbounds double, ptr %37, i64 %.5628.us
  %689 = getelementptr inbounds double, ptr %42, i64 %.5628.us
  br label %530

.lr.ph824.us:                                     ; preds = %634
  %690 = getelementptr double, ptr %36, i64 %635
  %691 = load i64, ptr %3, align 8, !tbaa !5
  br label %641

._crit_edge840.us:                                ; preds = %._crit_edge.us852
  %.4647.neg.us = xor i64 %.4647844.us, -1
  %.not665.us.not = icmp slt i64 %.4647844.us, %440
  br i1 %.not665.us.not, label %.lr.ph839.us, label %.loopexit724.loopexit, !llvm.loop !38

.loopexit724.loopexit:                            ; preds = %._crit_edge840.us
  %.pre885 = load i64, ptr %3, align 8, !tbaa !5
  br label %.loopexit724

.loopexit724:                                     ; preds = %.loopexit724.loopexit, %438
  %692 = phi i64 [ %628, %.loopexit724.loopexit ], [ %82, %438 ]
  %693 = phi i64 [ %.pre885, %.loopexit724.loopexit ], [ %81, %438 ]
  %694 = icmp sgt i64 %693, 0
  br i1 %694, label %.loopexit724.thread, label %727

.loopexit724.thread:                              ; preds = %439, %.loopexit724
  %695 = phi i64 [ %692, %.loopexit724 ], [ %82, %439 ]
  %invariant.gep857 = getelementptr i8, ptr %36, i64 16
  %.not667.not858 = icmp sgt i64 %695, 1
  br i1 %.not667.not858, label %.lr.ph860.preheader, label %.loopexit716

.lr.ph860.preheader:                              ; preds = %.loopexit724.thread
  %696 = add nsw i64 %695, -1
  %min.iters.check935 = icmp ugt i64 %695, 10
  %ident.check930.not = icmp eq i64 %34, 1
  %or.cond969 = select i1 %min.iters.check935, i1 %ident.check930.not, i1 false
  br i1 %or.cond969, label %vector.memcheck931, label %.lr.ph860.preheader974

vector.memcheck931:                               ; preds = %.lr.ph860.preheader
  %697 = add i64 %16, -8
  %698 = sub i64 %697, %15
  %diff.check932 = icmp ult i64 %698, 32
  br i1 %diff.check932, label %.lr.ph860.preheader974, label %vector.ph936

vector.ph936:                                     ; preds = %vector.memcheck931
  %n.vec938 = and i64 %696, -4
  %ind.end939 = or disjoint i64 %n.vec938, 1
  br label %vector.body941

vector.body941:                                   ; preds = %vector.body941, %vector.ph936
  %index942 = phi i64 [ 0, %vector.ph936 ], [ %index.next946, %vector.body941 ]
  %offset.idx943 = or disjoint i64 %index942, 1
  %699 = getelementptr double, ptr %invariant.gep857, i64 %offset.idx943
  %700 = getelementptr i8, ptr %699, i64 16
  %wide.load944 = load <2 x double>, ptr %699, align 8, !tbaa !11
  %wide.load945 = load <2 x double>, ptr %700, align 8, !tbaa !11
  %701 = getelementptr double, ptr %7, i64 %index942
  %702 = getelementptr inbounds i8, ptr %701, i64 16
  store <2 x double> %wide.load944, ptr %701, align 8, !tbaa !11
  store <2 x double> %wide.load945, ptr %702, align 8, !tbaa !11
  %index.next946 = add nuw i64 %index942, 4
  %703 = icmp eq i64 %index.next946, %n.vec938
  br i1 %703, label %middle.block933, label %vector.body941, !llvm.loop !39

middle.block933:                                  ; preds = %vector.body941
  %cmp.n947 = icmp eq i64 %696, %n.vec938
  br i1 %cmp.n947, label %.loopexit716, label %.lr.ph860.preheader974

.lr.ph860.preheader974:                           ; preds = %middle.block933, %vector.memcheck931, %.lr.ph860.preheader
  %.5648859.ph = phi i64 [ 1, %vector.memcheck931 ], [ 1, %.lr.ph860.preheader ], [ %ind.end939, %middle.block933 ]
  %704 = sub i64 %695, %.5648859.ph
  %xtraiter986 = and i64 %704, 3
  %lcmp.mod987.not = icmp eq i64 %xtraiter986, 0
  br i1 %lcmp.mod987.not, label %.lr.ph860.prol.loopexit, label %.lr.ph860.prol

.lr.ph860.prol:                                   ; preds = %.lr.ph860.preheader974, %.lr.ph860.prol
  %.5648859.prol = phi i64 [ %708, %.lr.ph860.prol ], [ %.5648859.ph, %.lr.ph860.preheader974 ]
  %prol.iter988 = phi i64 [ %prol.iter988.next, %.lr.ph860.prol ], [ 0, %.lr.ph860.preheader974 ]
  %705 = mul nsw i64 %.5648859.prol, %34
  %gep.prol = getelementptr double, ptr %invariant.gep857, i64 %705
  %706 = load double, ptr %gep.prol, align 8, !tbaa !11
  %707 = getelementptr inbounds double, ptr %38, i64 %.5648859.prol
  store double %706, ptr %707, align 8, !tbaa !11
  %708 = add nuw nsw i64 %.5648859.prol, 1
  %prol.iter988.next = add i64 %prol.iter988, 1
  %prol.iter988.cmp.not = icmp eq i64 %prol.iter988.next, %xtraiter986
  br i1 %prol.iter988.cmp.not, label %.lr.ph860.prol.loopexit, label %.lr.ph860.prol, !llvm.loop !40

.lr.ph860.prol.loopexit:                          ; preds = %.lr.ph860.prol, %.lr.ph860.preheader974
  %.5648859.unr = phi i64 [ %.5648859.ph, %.lr.ph860.preheader974 ], [ %708, %.lr.ph860.prol ]
  %709 = sub i64 %.5648859.ph, %695
  %710 = icmp ugt i64 %709, -4
  br i1 %710, label %.loopexit716, label %.lr.ph860

.lr.ph860:                                        ; preds = %.lr.ph860.prol.loopexit, %.lr.ph860
  %.5648859 = phi i64 [ %726, %.lr.ph860 ], [ %.5648859.unr, %.lr.ph860.prol.loopexit ]
  %711 = mul nsw i64 %.5648859, %34
  %gep = getelementptr double, ptr %invariant.gep857, i64 %711
  %712 = load double, ptr %gep, align 8, !tbaa !11
  %713 = getelementptr inbounds double, ptr %38, i64 %.5648859
  store double %712, ptr %713, align 8, !tbaa !11
  %714 = add nuw nsw i64 %.5648859, 1
  %715 = mul nsw i64 %714, %34
  %gep.1 = getelementptr double, ptr %invariant.gep857, i64 %715
  %716 = load double, ptr %gep.1, align 8, !tbaa !11
  %717 = getelementptr double, ptr %7, i64 %.5648859
  store double %716, ptr %717, align 8, !tbaa !11
  %718 = add nuw nsw i64 %.5648859, 2
  %719 = mul nsw i64 %718, %34
  %gep.2 = getelementptr double, ptr %invariant.gep857, i64 %719
  %720 = load double, ptr %gep.2, align 8, !tbaa !11
  %721 = getelementptr inbounds double, ptr %38, i64 %718
  store double %720, ptr %721, align 8, !tbaa !11
  %722 = add nuw nsw i64 %.5648859, 3
  %723 = mul nsw i64 %722, %34
  %gep.3 = getelementptr double, ptr %invariant.gep857, i64 %723
  %724 = load double, ptr %gep.3, align 8, !tbaa !11
  %725 = getelementptr inbounds double, ptr %38, i64 %722
  store double %724, ptr %725, align 8, !tbaa !11
  %726 = add nuw nsw i64 %.5648859, 4
  %exitcond876.not.3 = icmp eq i64 %726, %695
  br i1 %exitcond876.not.3, label %.loopexit716, label %.lr.ph860, !llvm.loop !41

727:                                              ; preds = %.loopexit724
  %.not666.not854 = icmp sgt i64 %692, 1
  br i1 %.not666.not854, label %.loopexit716.thread, label %.loopexit716

.loopexit716.thread:                              ; preds = %727
  %728 = shl i64 %692, 3
  %729 = add i64 %728, -8
  call void @llvm.memset.p0.i64(ptr align 8 %7, i8 0, i64 %729, i1 false), !tbaa !11
  br label %.lr.ph865.preheader

.loopexit716:                                     ; preds = %.lr.ph860.prol.loopexit, %.lr.ph860, %middle.block933, %727, %.loopexit724.thread
  %730 = phi i64 [ %692, %727 ], [ %695, %.loopexit724.thread ], [ %695, %middle.block933 ], [ %695, %.lr.ph860 ], [ %695, %.lr.ph860.prol.loopexit ]
  %.not668863 = icmp slt i64 %730, 1
  br i1 %.not668863, label %.loopexit, label %.lr.ph865.preheader

.lr.ph865.preheader:                              ; preds = %.loopexit716.thread, %.loopexit716
  %731 = phi i64 [ %692, %.loopexit716.thread ], [ %730, %.loopexit716 ]
  %invariant.gep861892 = getelementptr i8, ptr %36, i64 8
  %min.iters.check954 = icmp ult i64 %731, 8
  %ident.check949.not = icmp ne i64 %34, 1
  %or.cond970.not972 = select i1 %min.iters.check954, i1 true, i1 %ident.check949.not
  %732 = sub i64 %14, %13
  %diff.check951 = icmp ult i64 %732, 32
  %or.cond971 = or i1 %or.cond970.not972, %diff.check951
  br i1 %or.cond971, label %.lr.ph865.preheader973, label %vector.ph955

vector.ph955:                                     ; preds = %.lr.ph865.preheader
  %n.vec957 = and i64 %731, 9223372036854775804
  %ind.end958 = or disjoint i64 %n.vec957, 1
  br label %vector.body960

vector.body960:                                   ; preds = %vector.body960, %vector.ph955
  %index961 = phi i64 [ 0, %vector.ph955 ], [ %index.next965, %vector.body960 ]
  %offset.idx962 = or disjoint i64 %index961, 1
  %733 = getelementptr double, ptr %invariant.gep861892, i64 %offset.idx962
  %734 = getelementptr i8, ptr %733, i64 16
  %wide.load963 = load <2 x double>, ptr %733, align 8, !tbaa !11
  %wide.load964 = load <2 x double>, ptr %734, align 8, !tbaa !11
  %735 = getelementptr double, ptr %6, i64 %index961
  %736 = getelementptr inbounds i8, ptr %735, i64 16
  store <2 x double> %wide.load963, ptr %735, align 8, !tbaa !11
  store <2 x double> %wide.load964, ptr %736, align 8, !tbaa !11
  %index.next965 = add nuw i64 %index961, 4
  %737 = icmp eq i64 %index.next965, %n.vec957
  br i1 %737, label %middle.block952, label %vector.body960, !llvm.loop !42

middle.block952:                                  ; preds = %vector.body960
  %cmp.n966 = icmp eq i64 %731, %n.vec957
  br i1 %cmp.n966, label %.loopexit, label %.lr.ph865.preheader973

.lr.ph865.preheader973:                           ; preds = %middle.block952, %.lr.ph865.preheader
  %.7864.ph = phi i64 [ 1, %.lr.ph865.preheader ], [ %ind.end958, %middle.block952 ]
  %738 = add nuw i64 %731, 1
  %739 = sub i64 %738, %.7864.ph
  %740 = sub i64 %731, %.7864.ph
  %xtraiter989 = and i64 %739, 3
  %lcmp.mod990.not = icmp eq i64 %xtraiter989, 0
  br i1 %lcmp.mod990.not, label %.lr.ph865.prol.loopexit, label %.lr.ph865.prol

.lr.ph865.prol:                                   ; preds = %.lr.ph865.preheader973, %.lr.ph865.prol
  %.7864.prol = phi i64 [ %744, %.lr.ph865.prol ], [ %.7864.ph, %.lr.ph865.preheader973 ]
  %prol.iter991 = phi i64 [ %prol.iter991.next, %.lr.ph865.prol ], [ 0, %.lr.ph865.preheader973 ]
  %741 = mul nsw i64 %.7864.prol, %34
  %gep862.prol = getelementptr double, ptr %invariant.gep861892, i64 %741
  %742 = load double, ptr %gep862.prol, align 8, !tbaa !11
  %743 = getelementptr inbounds double, ptr %37, i64 %.7864.prol
  store double %742, ptr %743, align 8, !tbaa !11
  %744 = add nuw i64 %.7864.prol, 1
  %prol.iter991.next = add i64 %prol.iter991, 1
  %prol.iter991.cmp.not = icmp eq i64 %prol.iter991.next, %xtraiter989
  br i1 %prol.iter991.cmp.not, label %.lr.ph865.prol.loopexit, label %.lr.ph865.prol, !llvm.loop !43

.lr.ph865.prol.loopexit:                          ; preds = %.lr.ph865.prol, %.lr.ph865.preheader973
  %.7864.unr = phi i64 [ %.7864.ph, %.lr.ph865.preheader973 ], [ %744, %.lr.ph865.prol ]
  %745 = icmp ult i64 %740, 3
  br i1 %745, label %.loopexit, label %.lr.ph865

.lr.ph865:                                        ; preds = %.lr.ph865.prol.loopexit, %.lr.ph865
  %.7864 = phi i64 [ %761, %.lr.ph865 ], [ %.7864.unr, %.lr.ph865.prol.loopexit ]
  %746 = mul nsw i64 %.7864, %34
  %gep862 = getelementptr double, ptr %invariant.gep861892, i64 %746
  %747 = load double, ptr %gep862, align 8, !tbaa !11
  %748 = getelementptr inbounds double, ptr %37, i64 %.7864
  store double %747, ptr %748, align 8, !tbaa !11
  %749 = add nuw i64 %.7864, 1
  %750 = mul nsw i64 %749, %34
  %gep862.1 = getelementptr double, ptr %invariant.gep861892, i64 %750
  %751 = load double, ptr %gep862.1, align 8, !tbaa !11
  %752 = getelementptr double, ptr %6, i64 %.7864
  store double %751, ptr %752, align 8, !tbaa !11
  %753 = add nuw i64 %.7864, 2
  %754 = mul nsw i64 %753, %34
  %gep862.2 = getelementptr double, ptr %invariant.gep861892, i64 %754
  %755 = load double, ptr %gep862.2, align 8, !tbaa !11
  %756 = getelementptr inbounds double, ptr %37, i64 %753
  store double %755, ptr %756, align 8, !tbaa !11
  %757 = add nuw i64 %.7864, 3
  %758 = mul nsw i64 %757, %34
  %gep862.3 = getelementptr double, ptr %invariant.gep861892, i64 %758
  %759 = load double, ptr %gep862.3, align 8, !tbaa !11
  %760 = getelementptr inbounds double, ptr %37, i64 %757
  store double %759, ptr %760, align 8, !tbaa !11
  %761 = add nuw i64 %.7864, 4
  %exitcond877.not.3 = icmp eq i64 %757, %731
  br i1 %exitcond877.not.3, label %.loopexit, label %.lr.ph865, !llvm.loop !44

.loopexit:                                        ; preds = %scalar.ph915.prol.loopexit, %scalar.ph915, %.lr.ph865.prol.loopexit, %.lr.ph865, %middle.block914, %middle.block952, %.loopexit726, %.loopexit716, %75, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #5
  ret i32 0
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = 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