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

; 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_b8 = external hidden global double, align 8
@c_b9 = external hidden global double, align 8
@c__1 = external hidden global i64, align 8
@c_b20 = external hidden global double, align 8

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

105:                                              ; preds = %13
  %106 = load ptr, ptr %15, align 8, !tbaa !5
  %107 = call i64 @lsame_(ptr noundef %106, ptr noundef @.str.2)
  %108 = icmp ne i64 %107, 0
  br i1 %108, label %111, label %109

109:                                              ; preds = %105
  %110 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -1, ptr %110, align 8, !tbaa !9
  br label %191

111:                                              ; preds = %105, %13
  %112 = load i64, ptr %62, align 8, !tbaa !9
  %113 = icmp ne i64 %112, 0
  br i1 %113, label %120, label %114

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

118:                                              ; preds = %114
  %119 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -2, ptr %119, align 8, !tbaa !9
  br label %190

120:                                              ; preds = %114, %111
  %121 = load ptr, ptr %17, align 8, !tbaa !5
  %122 = load i64, ptr %121, align 8, !tbaa !9
  %123 = icmp slt i64 %122, 0
  br i1 %123, label %124, label %126

124:                                              ; preds = %120
  %125 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -3, ptr %125, align 8, !tbaa !9
  br label %189

126:                                              ; preds = %120
  %127 = load ptr, ptr %18, align 8, !tbaa !5
  %128 = load i64, ptr %127, align 8, !tbaa !9
  %129 = icmp slt i64 %128, 0
  br i1 %129, label %130, label %132

130:                                              ; preds = %126
  %131 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -4, ptr %131, align 8, !tbaa !9
  br label %188

132:                                              ; preds = %126
  %133 = load ptr, ptr %19, align 8, !tbaa !5
  %134 = load i64, ptr %133, align 8, !tbaa !9
  %135 = icmp slt i64 %134, 0
  br i1 %135, label %142, label %136

136:                                              ; preds = %132
  %137 = load ptr, ptr %19, align 8, !tbaa !5
  %138 = load i64, ptr %137, align 8, !tbaa !9
  %139 = load ptr, ptr %18, align 8, !tbaa !5
  %140 = load i64, ptr %139, align 8, !tbaa !9
  %141 = icmp sgt i64 %138, %140
  br i1 %141, label %142, label %144

142:                                              ; preds = %136, %132
  %143 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -5, ptr %143, align 8, !tbaa !9
  br label %187

144:                                              ; preds = %136
  %145 = load ptr, ptr %21, align 8, !tbaa !5
  %146 = load i64, ptr %145, align 8, !tbaa !9
  %147 = load ptr, ptr %18, align 8, !tbaa !5
  %148 = load i64, ptr %147, align 8, !tbaa !9
  %149 = add nsw i64 %148, 1
  %150 = icmp slt i64 %146, %149
  br i1 %150, label %151, label %153

151:                                              ; preds = %144
  %152 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -7, ptr %152, align 8, !tbaa !9
  br label %186

153:                                              ; preds = %144
  %154 = load ptr, ptr %23, align 8, !tbaa !5
  %155 = load i64, ptr %154, align 8, !tbaa !9
  %156 = load ptr, ptr %19, align 8, !tbaa !5
  %157 = load i64, ptr %156, align 8, !tbaa !9
  %158 = add nsw i64 %157, 1
  %159 = icmp slt i64 %155, %158
  br i1 %159, label %160, label %162

160:                                              ; preds = %153
  %161 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -9, ptr %161, align 8, !tbaa !9
  br label %185

162:                                              ; preds = %153
  %163 = load ptr, ptr %25, align 8, !tbaa !5
  %164 = load i64, ptr %163, align 8, !tbaa !9
  %165 = icmp slt i64 %164, 1
  br i1 %165, label %182, label %166

166:                                              ; preds = %162
  %167 = load i64, ptr %63, align 8, !tbaa !9
  %168 = icmp ne i64 %167, 0
  br i1 %168, label %169, label %184

169:                                              ; preds = %166
  %170 = load ptr, ptr %25, align 8, !tbaa !5
  %171 = load i64, ptr %170, align 8, !tbaa !9
  %172 = load ptr, ptr %17, align 8, !tbaa !5
  %173 = load i64, ptr %172, align 8, !tbaa !9
  %174 = icmp sge i64 1, %173
  br i1 %174, label %175, label %176

175:                                              ; preds = %169
  br label %179

176:                                              ; preds = %169
  %177 = load ptr, ptr %17, align 8, !tbaa !5
  %178 = load i64, ptr %177, align 8, !tbaa !9
  br label %179

179:                                              ; preds = %176, %175
  %180 = phi i64 [ 1, %175 ], [ %178, %176 ]
  %181 = icmp slt i64 %171, %180
  br i1 %181, label %182, label %184

182:                                              ; preds = %179, %162
  %183 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -11, ptr %183, align 8, !tbaa !9
  br label %184

184:                                              ; preds = %182, %179, %166
  br label %185

185:                                              ; preds = %184, %160
  br label %186

186:                                              ; preds = %185, %151
  br label %187

187:                                              ; preds = %186, %142
  br label %188

188:                                              ; preds = %187, %130
  br label %189

189:                                              ; preds = %188, %124
  br label %190

190:                                              ; preds = %189, %118
  br label %191

191:                                              ; preds = %190, %109
  %192 = load ptr, ptr %27, align 8, !tbaa !5
  %193 = load i64, ptr %192, align 8, !tbaa !9
  %194 = icmp ne i64 %193, 0
  br i1 %194, label %195, label %200

195:                                              ; preds = %191
  %196 = load ptr, ptr %27, align 8, !tbaa !5
  %197 = load i64, ptr %196, align 8, !tbaa !9
  %198 = sub nsw i64 0, %197
  store i64 %198, ptr %34, align 8, !tbaa !9
  %199 = call i32 @xerbla_(ptr noundef @.str.4, ptr noundef %34)
  store i32 0, ptr %14, align 4
  store i32 1, ptr %65, align 4
  br label %7264

200:                                              ; preds = %191
  %201 = load ptr, ptr %17, align 8, !tbaa !5
  %202 = load i64, ptr %201, align 8, !tbaa !9
  %203 = icmp eq i64 %202, 0
  br i1 %203, label %204, label %205

204:                                              ; preds = %200
  store i32 0, ptr %14, align 4
  store i32 1, ptr %65, align 4
  br label %7264

205:                                              ; preds = %200
  %206 = load ptr, ptr %21, align 8, !tbaa !5
  %207 = load i64, ptr %206, align 8, !tbaa !9
  %208 = load i64, ptr %53, align 8, !tbaa !9
  %209 = mul nsw i64 %207, %208
  store i64 %209, ptr %61, align 8, !tbaa !9
  %210 = load i64, ptr %63, align 8, !tbaa !9
  %211 = icmp ne i64 %210, 0
  br i1 %211, label %212, label %220

212:                                              ; preds = %205
  %213 = load ptr, ptr %17, align 8, !tbaa !5
  %214 = load ptr, ptr %17, align 8, !tbaa !5
  %215 = load ptr, ptr %24, align 8, !tbaa !5
  %216 = load i64, ptr %33, align 8, !tbaa !9
  %217 = getelementptr inbounds double, ptr %215, i64 %216
  %218 = load ptr, ptr %25, align 8, !tbaa !5
  %219 = call i32 @dlaset_(ptr noundef @.str.5, ptr noundef %213, ptr noundef %214, ptr noundef @c_b8, ptr noundef @c_b9, ptr noundef %217, ptr noundef %218)
  br label %220

220:                                              ; preds = %212, %205
  %221 = load ptr, ptr %17, align 8, !tbaa !5
  %222 = load i64, ptr %221, align 8, !tbaa !9
  %223 = load ptr, ptr %19, align 8, !tbaa !5
  %224 = load i64, ptr %223, align 8, !tbaa !9
  %225 = add nsw i64 %222, %224
  %226 = sdiv i64 %225, 2
  store i64 %226, ptr %43, align 8, !tbaa !9
  store i64 1, ptr %64, align 8, !tbaa !9
  %227 = load ptr, ptr %17, align 8, !tbaa !5
  %228 = load i64, ptr %227, align 8, !tbaa !9
  %229 = add nsw i64 %228, 1
  store i64 %229, ptr %39, align 8, !tbaa !9
  br label %230

230:                                              ; preds = %3697, %283, %220
  %231 = load i64, ptr %64, align 8, !tbaa !9
  %232 = icmp ne i64 %231, 0
  br i1 %232, label %233, label %285

233:                                              ; preds = %230
  %234 = load i64, ptr %39, align 8, !tbaa !9
  %235 = add nsw i64 %234, -1
  store i64 %235, ptr %39, align 8, !tbaa !9
  %236 = load ptr, ptr %19, align 8, !tbaa !5
  %237 = load i64, ptr %236, align 8, !tbaa !9
  store i64 %237, ptr %34, align 8, !tbaa !9
  %238 = load i64, ptr %39, align 8, !tbaa !9
  %239 = sub nsw i64 %238, 1
  store i64 %239, ptr %35, align 8, !tbaa !9
  %240 = load i64, ptr %34, align 8, !tbaa !9
  %241 = load i64, ptr %35, align 8, !tbaa !9
  %242 = icmp sle i64 %240, %241
  br i1 %242, label %243, label %245

243:                                              ; preds = %233
  %244 = load i64, ptr %34, align 8, !tbaa !9
  br label %247

245:                                              ; preds = %233
  %246 = load i64, ptr %35, align 8, !tbaa !9
  br label %247

247:                                              ; preds = %245, %243
  %248 = phi i64 [ %244, %243 ], [ %246, %245 ]
  store i64 %248, ptr %59, align 8, !tbaa !9
  %249 = load i64, ptr %39, align 8, !tbaa !9
  %250 = sub nsw i64 %249, 1
  store i64 %250, ptr %45, align 8, !tbaa !9
  %251 = load ptr, ptr %17, align 8, !tbaa !5
  %252 = load i64, ptr %251, align 8, !tbaa !9
  store i64 %252, ptr %34, align 8, !tbaa !9
  %253 = load i64, ptr %39, align 8, !tbaa !9
  %254 = load ptr, ptr %18, align 8, !tbaa !5
  %255 = load i64, ptr %254, align 8, !tbaa !9
  %256 = add nsw i64 %253, %255
  store i64 %256, ptr %35, align 8, !tbaa !9
  %257 = load i64, ptr %34, align 8, !tbaa !9
  %258 = load i64, ptr %35, align 8, !tbaa !9
  %259 = icmp sle i64 %257, %258
  br i1 %259, label %260, label %262

260:                                              ; preds = %247
  %261 = load i64, ptr %34, align 8, !tbaa !9
  br label %264

262:                                              ; preds = %247
  %263 = load i64, ptr %35, align 8, !tbaa !9
  br label %264

264:                                              ; preds = %262, %260
  %265 = phi i64 [ %261, %260 ], [ %263, %262 ]
  store i64 %265, ptr %46, align 8, !tbaa !9
  %266 = load i64, ptr %39, align 8, !tbaa !9
  %267 = load i64, ptr %59, align 8, !tbaa !9
  %268 = sub nsw i64 %266, %267
  %269 = load i64, ptr %53, align 8, !tbaa !9
  %270 = add nsw i64 %268, %269
  store i64 %270, ptr %47, align 8, !tbaa !9
  %271 = load i64, ptr %39, align 8, !tbaa !9
  %272 = load i64, ptr %43, align 8, !tbaa !9
  %273 = add nsw i64 %272, 1
  %274 = icmp slt i64 %271, %273
  br i1 %274, label %275, label %284

275:                                              ; preds = %264
  store i64 0, ptr %64, align 8, !tbaa !9
  %276 = load i64, ptr %39, align 8, !tbaa !9
  %277 = add nsw i64 %276, 1
  store i64 %277, ptr %39, align 8, !tbaa !9
  %278 = load i64, ptr %43, align 8, !tbaa !9
  store i64 %278, ptr %45, align 8, !tbaa !9
  %279 = load ptr, ptr %18, align 8, !tbaa !5
  %280 = load i64, ptr %279, align 8, !tbaa !9
  %281 = icmp eq i64 %280, 0
  br i1 %281, label %282, label %283

282:                                              ; preds = %275
  br label %3698

283:                                              ; preds = %275
  br label %230

284:                                              ; preds = %264
  br label %297

285:                                              ; preds = %230
  %286 = load ptr, ptr %18, align 8, !tbaa !5
  %287 = load i64, ptr %286, align 8, !tbaa !9
  %288 = load i64, ptr %39, align 8, !tbaa !9
  %289 = add nsw i64 %288, %287
  store i64 %289, ptr %39, align 8, !tbaa !9
  %290 = load i64, ptr %39, align 8, !tbaa !9
  %291 = load ptr, ptr %17, align 8, !tbaa !5
  %292 = load i64, ptr %291, align 8, !tbaa !9
  %293 = sub nsw i64 %292, 1
  %294 = icmp sgt i64 %290, %293
  br i1 %294, label %295, label %296

295:                                              ; preds = %285
  br label %3698

296:                                              ; preds = %285
  br label %297

297:                                              ; preds = %296, %284
  %298 = load i64, ptr %62, align 8, !tbaa !9
  %299 = icmp ne i64 %298, 0
  br i1 %299, label %300, label %2001

300:                                              ; preds = %297
  %301 = load i64, ptr %64, align 8, !tbaa !9
  %302 = icmp ne i64 %301, 0
  br i1 %302, label %303, label %718

303:                                              ; preds = %300
  %304 = load ptr, ptr %22, align 8, !tbaa !5
  %305 = load i64, ptr %54, align 8, !tbaa !9
  %306 = load i64, ptr %39, align 8, !tbaa !9
  %307 = load i64, ptr %30, align 8, !tbaa !9
  %308 = mul nsw i64 %306, %307
  %309 = add nsw i64 %305, %308
  %310 = getelementptr inbounds double, ptr %304, i64 %309
  %311 = load double, ptr %310, align 8, !tbaa !11
  store double %311, ptr %58, align 8, !tbaa !11
  %312 = load i64, ptr %46, align 8, !tbaa !9
  store i64 %312, ptr %34, align 8, !tbaa !9
  %313 = load i64, ptr %39, align 8, !tbaa !9
  store i64 %313, ptr %40, align 8, !tbaa !9
  br label %314

314:                                              ; preds = %333, %303
  %315 = load i64, ptr %40, align 8, !tbaa !9
  %316 = load i64, ptr %34, align 8, !tbaa !9
  %317 = icmp sle i64 %315, %316
  br i1 %317, label %318, label %336

318:                                              ; preds = %314
  %319 = load double, ptr %58, align 8, !tbaa !11
  %320 = load ptr, ptr %20, align 8, !tbaa !5
  %321 = load i64, ptr %39, align 8, !tbaa !9
  %322 = load i64, ptr %40, align 8, !tbaa !9
  %323 = sub nsw i64 %321, %322
  %324 = load i64, ptr %53, align 8, !tbaa !9
  %325 = add nsw i64 %323, %324
  %326 = load i64, ptr %40, align 8, !tbaa !9
  %327 = load i64, ptr %28, align 8, !tbaa !9
  %328 = mul nsw i64 %326, %327
  %329 = add nsw i64 %325, %328
  %330 = getelementptr inbounds double, ptr %320, i64 %329
  %331 = load double, ptr %330, align 8, !tbaa !11
  %332 = fdiv double %331, %319
  store double %332, ptr %330, align 8, !tbaa !11
  br label %333

333:                                              ; preds = %318
  %334 = load i64, ptr %40, align 8, !tbaa !9
  %335 = add nsw i64 %334, 1
  store i64 %335, ptr %40, align 8, !tbaa !9
  br label %314, !llvm.loop !13

336:                                              ; preds = %314
  store i64 1, ptr %34, align 8, !tbaa !9
  %337 = load i64, ptr %39, align 8, !tbaa !9
  %338 = load ptr, ptr %18, align 8, !tbaa !5
  %339 = load i64, ptr %338, align 8, !tbaa !9
  %340 = sub nsw i64 %337, %339
  store i64 %340, ptr %35, align 8, !tbaa !9
  %341 = load i64, ptr %39, align 8, !tbaa !9
  store i64 %341, ptr %36, align 8, !tbaa !9
  %342 = load i64, ptr %34, align 8, !tbaa !9
  %343 = load i64, ptr %35, align 8, !tbaa !9
  %344 = icmp sge i64 %342, %343
  br i1 %344, label %345, label %347

345:                                              ; preds = %336
  %346 = load i64, ptr %34, align 8, !tbaa !9
  br label %349

347:                                              ; preds = %336
  %348 = load i64, ptr %35, align 8, !tbaa !9
  br label %349

349:                                              ; preds = %347, %345
  %350 = phi i64 [ %346, %345 ], [ %348, %347 ]
  store i64 %350, ptr %40, align 8, !tbaa !9
  br label %351

351:                                              ; preds = %370, %349
  %352 = load i64, ptr %40, align 8, !tbaa !9
  %353 = load i64, ptr %36, align 8, !tbaa !9
  %354 = icmp sle i64 %352, %353
  br i1 %354, label %355, label %373

355:                                              ; preds = %351
  %356 = load double, ptr %58, align 8, !tbaa !11
  %357 = load ptr, ptr %20, align 8, !tbaa !5
  %358 = load i64, ptr %40, align 8, !tbaa !9
  %359 = load i64, ptr %39, align 8, !tbaa !9
  %360 = sub nsw i64 %358, %359
  %361 = load i64, ptr %53, align 8, !tbaa !9
  %362 = add nsw i64 %360, %361
  %363 = load i64, ptr %39, align 8, !tbaa !9
  %364 = load i64, ptr %28, align 8, !tbaa !9
  %365 = mul nsw i64 %363, %364
  %366 = add nsw i64 %362, %365
  %367 = getelementptr inbounds double, ptr %357, i64 %366
  %368 = load double, ptr %367, align 8, !tbaa !11
  %369 = fdiv double %368, %356
  store double %369, ptr %367, align 8, !tbaa !11
  br label %370

370:                                              ; preds = %355
  %371 = load i64, ptr %40, align 8, !tbaa !9
  %372 = add nsw i64 %371, 1
  store i64 %372, ptr %40, align 8, !tbaa !9
  br label %351, !llvm.loop !15

373:                                              ; preds = %351
  %374 = load i64, ptr %39, align 8, !tbaa !9
  %375 = sub nsw i64 %374, 1
  store i64 %375, ptr %36, align 8, !tbaa !9
  %376 = load i64, ptr %39, align 8, !tbaa !9
  %377 = load i64, ptr %59, align 8, !tbaa !9
  %378 = sub nsw i64 %376, %377
  store i64 %378, ptr %41, align 8, !tbaa !9
  br label %379

379:                                              ; preds = %570, %373
  %380 = load i64, ptr %41, align 8, !tbaa !9
  %381 = load i64, ptr %36, align 8, !tbaa !9
  %382 = icmp sle i64 %380, %381
  br i1 %382, label %383, label %573

383:                                              ; preds = %379
  %384 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %384, ptr %34, align 8, !tbaa !9
  %385 = load i64, ptr %39, align 8, !tbaa !9
  %386 = load i64, ptr %59, align 8, !tbaa !9
  %387 = sub nsw i64 %385, %386
  store i64 %387, ptr %40, align 8, !tbaa !9
  br label %388

388:                                              ; preds = %502, %383
  %389 = load i64, ptr %40, align 8, !tbaa !9
  %390 = load i64, ptr %34, align 8, !tbaa !9
  %391 = icmp sle i64 %389, %390
  br i1 %391, label %392, label %505

392:                                              ; preds = %388
  %393 = load ptr, ptr %20, align 8, !tbaa !5
  %394 = load i64, ptr %40, align 8, !tbaa !9
  %395 = load i64, ptr %41, align 8, !tbaa !9
  %396 = sub nsw i64 %394, %395
  %397 = load i64, ptr %53, align 8, !tbaa !9
  %398 = add nsw i64 %396, %397
  %399 = load i64, ptr %41, align 8, !tbaa !9
  %400 = load i64, ptr %28, align 8, !tbaa !9
  %401 = mul nsw i64 %399, %400
  %402 = add nsw i64 %398, %401
  %403 = getelementptr inbounds double, ptr %393, i64 %402
  %404 = load double, ptr %403, align 8, !tbaa !11
  %405 = load ptr, ptr %22, align 8, !tbaa !5
  %406 = load i64, ptr %40, align 8, !tbaa !9
  %407 = load i64, ptr %39, align 8, !tbaa !9
  %408 = sub nsw i64 %406, %407
  %409 = load i64, ptr %54, align 8, !tbaa !9
  %410 = add nsw i64 %408, %409
  %411 = load i64, ptr %39, align 8, !tbaa !9
  %412 = load i64, ptr %30, align 8, !tbaa !9
  %413 = mul nsw i64 %411, %412
  %414 = add nsw i64 %410, %413
  %415 = getelementptr inbounds double, ptr %405, i64 %414
  %416 = load double, ptr %415, align 8, !tbaa !11
  %417 = load ptr, ptr %20, align 8, !tbaa !5
  %418 = load i64, ptr %41, align 8, !tbaa !9
  %419 = load i64, ptr %39, align 8, !tbaa !9
  %420 = sub nsw i64 %418, %419
  %421 = load i64, ptr %53, align 8, !tbaa !9
  %422 = add nsw i64 %420, %421
  %423 = load i64, ptr %39, align 8, !tbaa !9
  %424 = load i64, ptr %28, align 8, !tbaa !9
  %425 = mul nsw i64 %423, %424
  %426 = add nsw i64 %422, %425
  %427 = getelementptr inbounds double, ptr %417, i64 %426
  %428 = load double, ptr %427, align 8, !tbaa !11
  %429 = fneg double %416
  %430 = call double @llvm.fmuladd.f64(double %429, double %428, double %404)
  %431 = load ptr, ptr %22, align 8, !tbaa !5
  %432 = load i64, ptr %41, align 8, !tbaa !9
  %433 = load i64, ptr %39, align 8, !tbaa !9
  %434 = sub nsw i64 %432, %433
  %435 = load i64, ptr %54, align 8, !tbaa !9
  %436 = add nsw i64 %434, %435
  %437 = load i64, ptr %39, align 8, !tbaa !9
  %438 = load i64, ptr %30, align 8, !tbaa !9
  %439 = mul nsw i64 %437, %438
  %440 = add nsw i64 %436, %439
  %441 = getelementptr inbounds double, ptr %431, i64 %440
  %442 = load double, ptr %441, align 8, !tbaa !11
  %443 = load ptr, ptr %20, align 8, !tbaa !5
  %444 = load i64, ptr %40, align 8, !tbaa !9
  %445 = load i64, ptr %39, align 8, !tbaa !9
  %446 = sub nsw i64 %444, %445
  %447 = load i64, ptr %53, align 8, !tbaa !9
  %448 = add nsw i64 %446, %447
  %449 = load i64, ptr %39, align 8, !tbaa !9
  %450 = load i64, ptr %28, align 8, !tbaa !9
  %451 = mul nsw i64 %449, %450
  %452 = add nsw i64 %448, %451
  %453 = getelementptr inbounds double, ptr %443, i64 %452
  %454 = load double, ptr %453, align 8, !tbaa !11
  %455 = fneg double %442
  %456 = call double @llvm.fmuladd.f64(double %455, double %454, double %430)
  %457 = load ptr, ptr %20, align 8, !tbaa !5
  %458 = load i64, ptr %53, align 8, !tbaa !9
  %459 = load i64, ptr %39, align 8, !tbaa !9
  %460 = load i64, ptr %28, align 8, !tbaa !9
  %461 = mul nsw i64 %459, %460
  %462 = add nsw i64 %458, %461
  %463 = getelementptr inbounds double, ptr %457, i64 %462
  %464 = load double, ptr %463, align 8, !tbaa !11
  %465 = load ptr, ptr %22, align 8, !tbaa !5
  %466 = load i64, ptr %40, align 8, !tbaa !9
  %467 = load i64, ptr %39, align 8, !tbaa !9
  %468 = sub nsw i64 %466, %467
  %469 = load i64, ptr %54, align 8, !tbaa !9
  %470 = add nsw i64 %468, %469
  %471 = load i64, ptr %39, align 8, !tbaa !9
  %472 = load i64, ptr %30, align 8, !tbaa !9
  %473 = mul nsw i64 %471, %472
  %474 = add nsw i64 %470, %473
  %475 = getelementptr inbounds double, ptr %465, i64 %474
  %476 = load double, ptr %475, align 8, !tbaa !11
  %477 = fmul double %464, %476
  %478 = load ptr, ptr %22, align 8, !tbaa !5
  %479 = load i64, ptr %41, align 8, !tbaa !9
  %480 = load i64, ptr %39, align 8, !tbaa !9
  %481 = sub nsw i64 %479, %480
  %482 = load i64, ptr %54, align 8, !tbaa !9
  %483 = add nsw i64 %481, %482
  %484 = load i64, ptr %39, align 8, !tbaa !9
  %485 = load i64, ptr %30, align 8, !tbaa !9
  %486 = mul nsw i64 %484, %485
  %487 = add nsw i64 %483, %486
  %488 = getelementptr inbounds double, ptr %478, i64 %487
  %489 = load double, ptr %488, align 8, !tbaa !11
  %490 = call double @llvm.fmuladd.f64(double %477, double %489, double %456)
  %491 = load ptr, ptr %20, align 8, !tbaa !5
  %492 = load i64, ptr %40, align 8, !tbaa !9
  %493 = load i64, ptr %41, align 8, !tbaa !9
  %494 = sub nsw i64 %492, %493
  %495 = load i64, ptr %53, align 8, !tbaa !9
  %496 = add nsw i64 %494, %495
  %497 = load i64, ptr %41, align 8, !tbaa !9
  %498 = load i64, ptr %28, align 8, !tbaa !9
  %499 = mul nsw i64 %497, %498
  %500 = add nsw i64 %496, %499
  %501 = getelementptr inbounds double, ptr %491, i64 %500
  store double %490, ptr %501, align 8, !tbaa !11
  br label %502

502:                                              ; preds = %392
  %503 = load i64, ptr %40, align 8, !tbaa !9
  %504 = add nsw i64 %503, 1
  store i64 %504, ptr %40, align 8, !tbaa !9
  br label %388, !llvm.loop !16

505:                                              ; preds = %388
  store i64 1, ptr %34, align 8, !tbaa !9
  %506 = load i64, ptr %39, align 8, !tbaa !9
  %507 = load ptr, ptr %18, align 8, !tbaa !5
  %508 = load i64, ptr %507, align 8, !tbaa !9
  %509 = sub nsw i64 %506, %508
  store i64 %509, ptr %35, align 8, !tbaa !9
  %510 = load i64, ptr %39, align 8, !tbaa !9
  %511 = load i64, ptr %59, align 8, !tbaa !9
  %512 = sub nsw i64 %510, %511
  %513 = sub nsw i64 %512, 1
  store i64 %513, ptr %37, align 8, !tbaa !9
  %514 = load i64, ptr %34, align 8, !tbaa !9
  %515 = load i64, ptr %35, align 8, !tbaa !9
  %516 = icmp sge i64 %514, %515
  br i1 %516, label %517, label %519

517:                                              ; preds = %505
  %518 = load i64, ptr %34, align 8, !tbaa !9
  br label %521

519:                                              ; preds = %505
  %520 = load i64, ptr %35, align 8, !tbaa !9
  br label %521

521:                                              ; preds = %519, %517
  %522 = phi i64 [ %518, %517 ], [ %520, %519 ]
  store i64 %522, ptr %40, align 8, !tbaa !9
  br label %523

523:                                              ; preds = %566, %521
  %524 = load i64, ptr %40, align 8, !tbaa !9
  %525 = load i64, ptr %37, align 8, !tbaa !9
  %526 = icmp sle i64 %524, %525
  br i1 %526, label %527, label %569

527:                                              ; preds = %523
  %528 = load ptr, ptr %22, align 8, !tbaa !5
  %529 = load i64, ptr %41, align 8, !tbaa !9
  %530 = load i64, ptr %39, align 8, !tbaa !9
  %531 = sub nsw i64 %529, %530
  %532 = load i64, ptr %54, align 8, !tbaa !9
  %533 = add nsw i64 %531, %532
  %534 = load i64, ptr %39, align 8, !tbaa !9
  %535 = load i64, ptr %30, align 8, !tbaa !9
  %536 = mul nsw i64 %534, %535
  %537 = add nsw i64 %533, %536
  %538 = getelementptr inbounds double, ptr %528, i64 %537
  %539 = load double, ptr %538, align 8, !tbaa !11
  %540 = load ptr, ptr %20, align 8, !tbaa !5
  %541 = load i64, ptr %40, align 8, !tbaa !9
  %542 = load i64, ptr %39, align 8, !tbaa !9
  %543 = sub nsw i64 %541, %542
  %544 = load i64, ptr %53, align 8, !tbaa !9
  %545 = add nsw i64 %543, %544
  %546 = load i64, ptr %39, align 8, !tbaa !9
  %547 = load i64, ptr %28, align 8, !tbaa !9
  %548 = mul nsw i64 %546, %547
  %549 = add nsw i64 %545, %548
  %550 = getelementptr inbounds double, ptr %540, i64 %549
  %551 = load double, ptr %550, align 8, !tbaa !11
  %552 = load ptr, ptr %20, align 8, !tbaa !5
  %553 = load i64, ptr %40, align 8, !tbaa !9
  %554 = load i64, ptr %41, align 8, !tbaa !9
  %555 = sub nsw i64 %553, %554
  %556 = load i64, ptr %53, align 8, !tbaa !9
  %557 = add nsw i64 %555, %556
  %558 = load i64, ptr %41, align 8, !tbaa !9
  %559 = load i64, ptr %28, align 8, !tbaa !9
  %560 = mul nsw i64 %558, %559
  %561 = add nsw i64 %557, %560
  %562 = getelementptr inbounds double, ptr %552, i64 %561
  %563 = load double, ptr %562, align 8, !tbaa !11
  %564 = fneg double %539
  %565 = call double @llvm.fmuladd.f64(double %564, double %551, double %563)
  store double %565, ptr %562, align 8, !tbaa !11
  br label %566

566:                                              ; preds = %527
  %567 = load i64, ptr %40, align 8, !tbaa !9
  %568 = add nsw i64 %567, 1
  store i64 %568, ptr %40, align 8, !tbaa !9
  br label %523, !llvm.loop !17

569:                                              ; preds = %523
  br label %570

570:                                              ; preds = %569
  %571 = load i64, ptr %41, align 8, !tbaa !9
  %572 = add nsw i64 %571, 1
  store i64 %572, ptr %41, align 8, !tbaa !9
  br label %379, !llvm.loop !18

573:                                              ; preds = %379
  %574 = load i64, ptr %46, align 8, !tbaa !9
  store i64 %574, ptr %36, align 8, !tbaa !9
  %575 = load i64, ptr %39, align 8, !tbaa !9
  store i64 %575, ptr %40, align 8, !tbaa !9
  br label %576

576:                                              ; preds = %646, %573
  %577 = load i64, ptr %40, align 8, !tbaa !9
  %578 = load i64, ptr %36, align 8, !tbaa !9
  %579 = icmp sle i64 %577, %578
  br i1 %579, label %580, label %649

580:                                              ; preds = %576
  %581 = load i64, ptr %40, align 8, !tbaa !9
  %582 = load ptr, ptr %18, align 8, !tbaa !5
  %583 = load i64, ptr %582, align 8, !tbaa !9
  %584 = sub nsw i64 %581, %583
  store i64 %584, ptr %37, align 8, !tbaa !9
  %585 = load i64, ptr %39, align 8, !tbaa !9
  %586 = load i64, ptr %59, align 8, !tbaa !9
  %587 = sub nsw i64 %585, %586
  store i64 %587, ptr %34, align 8, !tbaa !9
  %588 = load i64, ptr %39, align 8, !tbaa !9
  %589 = sub nsw i64 %588, 1
  store i64 %589, ptr %35, align 8, !tbaa !9
  %590 = load i64, ptr %37, align 8, !tbaa !9
  %591 = load i64, ptr %34, align 8, !tbaa !9
  %592 = icmp sge i64 %590, %591
  br i1 %592, label %593, label %595

593:                                              ; preds = %580
  %594 = load i64, ptr %37, align 8, !tbaa !9
  br label %597

595:                                              ; preds = %580
  %596 = load i64, ptr %34, align 8, !tbaa !9
  br label %597

597:                                              ; preds = %595, %593
  %598 = phi i64 [ %594, %593 ], [ %596, %595 ]
  store i64 %598, ptr %41, align 8, !tbaa !9
  br label %599

599:                                              ; preds = %642, %597
  %600 = load i64, ptr %41, align 8, !tbaa !9
  %601 = load i64, ptr %35, align 8, !tbaa !9
  %602 = icmp sle i64 %600, %601
  br i1 %602, label %603, label %645

603:                                              ; preds = %599
  %604 = load ptr, ptr %22, align 8, !tbaa !5
  %605 = load i64, ptr %41, align 8, !tbaa !9
  %606 = load i64, ptr %39, align 8, !tbaa !9
  %607 = sub nsw i64 %605, %606
  %608 = load i64, ptr %54, align 8, !tbaa !9
  %609 = add nsw i64 %607, %608
  %610 = load i64, ptr %39, align 8, !tbaa !9
  %611 = load i64, ptr %30, align 8, !tbaa !9
  %612 = mul nsw i64 %610, %611
  %613 = add nsw i64 %609, %612
  %614 = getelementptr inbounds double, ptr %604, i64 %613
  %615 = load double, ptr %614, align 8, !tbaa !11
  %616 = load ptr, ptr %20, align 8, !tbaa !5
  %617 = load i64, ptr %39, align 8, !tbaa !9
  %618 = load i64, ptr %40, align 8, !tbaa !9
  %619 = sub nsw i64 %617, %618
  %620 = load i64, ptr %53, align 8, !tbaa !9
  %621 = add nsw i64 %619, %620
  %622 = load i64, ptr %40, align 8, !tbaa !9
  %623 = load i64, ptr %28, align 8, !tbaa !9
  %624 = mul nsw i64 %622, %623
  %625 = add nsw i64 %621, %624
  %626 = getelementptr inbounds double, ptr %616, i64 %625
  %627 = load double, ptr %626, align 8, !tbaa !11
  %628 = load ptr, ptr %20, align 8, !tbaa !5
  %629 = load i64, ptr %41, align 8, !tbaa !9
  %630 = load i64, ptr %40, align 8, !tbaa !9
  %631 = sub nsw i64 %629, %630
  %632 = load i64, ptr %53, align 8, !tbaa !9
  %633 = add nsw i64 %631, %632
  %634 = load i64, ptr %40, align 8, !tbaa !9
  %635 = load i64, ptr %28, align 8, !tbaa !9
  %636 = mul nsw i64 %634, %635
  %637 = add nsw i64 %633, %636
  %638 = getelementptr inbounds double, ptr %628, i64 %637
  %639 = load double, ptr %638, align 8, !tbaa !11
  %640 = fneg double %615
  %641 = call double @llvm.fmuladd.f64(double %640, double %627, double %639)
  store double %641, ptr %638, align 8, !tbaa !11
  br label %642

642:                                              ; preds = %603
  %643 = load i64, ptr %41, align 8, !tbaa !9
  %644 = add nsw i64 %643, 1
  store i64 %644, ptr %41, align 8, !tbaa !9
  br label %599, !llvm.loop !19

645:                                              ; preds = %599
  br label %646

646:                                              ; preds = %645
  %647 = load i64, ptr %40, align 8, !tbaa !9
  %648 = add nsw i64 %647, 1
  store i64 %648, ptr %40, align 8, !tbaa !9
  br label %576, !llvm.loop !20

649:                                              ; preds = %576
  %650 = load i64, ptr %63, align 8, !tbaa !9
  %651 = icmp ne i64 %650, 0
  br i1 %651, label %652, label %705

652:                                              ; preds = %649
  %653 = load ptr, ptr %17, align 8, !tbaa !5
  %654 = load i64, ptr %653, align 8, !tbaa !9
  %655 = load i64, ptr %43, align 8, !tbaa !9
  %656 = sub nsw i64 %654, %655
  store i64 %656, ptr %36, align 8, !tbaa !9
  %657 = load double, ptr %58, align 8, !tbaa !11
  %658 = fdiv double 1.000000e+00, %657
  store double %658, ptr %38, align 8, !tbaa !11
  %659 = load ptr, ptr %24, align 8, !tbaa !5
  %660 = load i64, ptr %43, align 8, !tbaa !9
  %661 = add nsw i64 %660, 1
  %662 = load i64, ptr %39, align 8, !tbaa !9
  %663 = load i64, ptr %32, align 8, !tbaa !9
  %664 = mul nsw i64 %662, %663
  %665 = add nsw i64 %661, %664
  %666 = getelementptr inbounds double, ptr %659, i64 %665
  %667 = call i32 @f2c_dscal(ptr noundef %36, ptr noundef %38, ptr noundef %666, ptr noundef @c__1)
  %668 = load i64, ptr %59, align 8, !tbaa !9
  %669 = icmp sgt i64 %668, 0
  br i1 %669, label %670, label %704

670:                                              ; preds = %652
  %671 = load ptr, ptr %17, align 8, !tbaa !5
  %672 = load i64, ptr %671, align 8, !tbaa !9
  %673 = load i64, ptr %43, align 8, !tbaa !9
  %674 = sub nsw i64 %672, %673
  store i64 %674, ptr %36, align 8, !tbaa !9
  %675 = load ptr, ptr %24, align 8, !tbaa !5
  %676 = load i64, ptr %43, align 8, !tbaa !9
  %677 = add nsw i64 %676, 1
  %678 = load i64, ptr %39, align 8, !tbaa !9
  %679 = load i64, ptr %32, align 8, !tbaa !9
  %680 = mul nsw i64 %678, %679
  %681 = add nsw i64 %677, %680
  %682 = getelementptr inbounds double, ptr %675, i64 %681
  %683 = load ptr, ptr %22, align 8, !tbaa !5
  %684 = load i64, ptr %54, align 8, !tbaa !9
  %685 = load i64, ptr %59, align 8, !tbaa !9
  %686 = sub nsw i64 %684, %685
  %687 = load i64, ptr %39, align 8, !tbaa !9
  %688 = load i64, ptr %30, align 8, !tbaa !9
  %689 = mul nsw i64 %687, %688
  %690 = add nsw i64 %686, %689
  %691 = getelementptr inbounds double, ptr %683, i64 %690
  %692 = load ptr, ptr %24, align 8, !tbaa !5
  %693 = load i64, ptr %43, align 8, !tbaa !9
  %694 = add nsw i64 %693, 1
  %695 = load i64, ptr %39, align 8, !tbaa !9
  %696 = load i64, ptr %59, align 8, !tbaa !9
  %697 = sub nsw i64 %695, %696
  %698 = load i64, ptr %32, align 8, !tbaa !9
  %699 = mul nsw i64 %697, %698
  %700 = add nsw i64 %694, %699
  %701 = getelementptr inbounds double, ptr %692, i64 %700
  %702 = load ptr, ptr %25, align 8, !tbaa !5
  %703 = call i32 @f2c_dger(ptr noundef %36, ptr noundef %59, ptr noundef @c_b20, ptr noundef %682, ptr noundef @c__1, ptr noundef %691, ptr noundef @c__1, ptr noundef %701, ptr noundef %702)
  br label %704

704:                                              ; preds = %670, %652
  br label %705

705:                                              ; preds = %704, %649
  %706 = load ptr, ptr %20, align 8, !tbaa !5
  %707 = load i64, ptr %39, align 8, !tbaa !9
  %708 = load i64, ptr %46, align 8, !tbaa !9
  %709 = sub nsw i64 %707, %708
  %710 = load i64, ptr %53, align 8, !tbaa !9
  %711 = add nsw i64 %709, %710
  %712 = load i64, ptr %46, align 8, !tbaa !9
  %713 = load i64, ptr %28, align 8, !tbaa !9
  %714 = mul nsw i64 %712, %713
  %715 = add nsw i64 %711, %714
  %716 = getelementptr inbounds double, ptr %706, i64 %715
  %717 = load double, ptr %716, align 8, !tbaa !11
  store double %717, ptr %55, align 8, !tbaa !11
  br label %718

718:                                              ; preds = %705, %300
  %719 = load ptr, ptr %19, align 8, !tbaa !5
  %720 = load i64, ptr %719, align 8, !tbaa !9
  %721 = sub nsw i64 %720, 1
  store i64 %721, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %41, align 8, !tbaa !9
  br label %722

722:                                              ; preds = %1270, %718
  %723 = load i64, ptr %41, align 8, !tbaa !9
  %724 = load i64, ptr %36, align 8, !tbaa !9
  %725 = icmp sle i64 %723, %724
  br i1 %725, label %726, label %1273

726:                                              ; preds = %722
  %727 = load i64, ptr %64, align 8, !tbaa !9
  %728 = icmp ne i64 %727, 0
  br i1 %728, label %729, label %894

729:                                              ; preds = %726
  %730 = load i64, ptr %39, align 8, !tbaa !9
  %731 = load i64, ptr %41, align 8, !tbaa !9
  %732 = sub nsw i64 %730, %731
  %733 = load ptr, ptr %18, align 8, !tbaa !5
  %734 = load i64, ptr %733, align 8, !tbaa !9
  %735 = add nsw i64 %732, %734
  %736 = load ptr, ptr %17, align 8, !tbaa !5
  %737 = load i64, ptr %736, align 8, !tbaa !9
  %738 = icmp slt i64 %735, %737
  br i1 %738, label %739, label %893

739:                                              ; preds = %729
  %740 = load i64, ptr %39, align 8, !tbaa !9
  %741 = load i64, ptr %41, align 8, !tbaa !9
  %742 = sub nsw i64 %740, %741
  %743 = icmp sgt i64 %742, 1
  br i1 %743, label %744, label %893

744:                                              ; preds = %739
  %745 = load ptr, ptr %20, align 8, !tbaa !5
  %746 = load i64, ptr %41, align 8, !tbaa !9
  %747 = add nsw i64 %746, 1
  %748 = load i64, ptr %39, align 8, !tbaa !9
  %749 = load i64, ptr %41, align 8, !tbaa !9
  %750 = sub nsw i64 %748, %749
  %751 = load ptr, ptr %18, align 8, !tbaa !5
  %752 = load i64, ptr %751, align 8, !tbaa !9
  %753 = add nsw i64 %750, %752
  %754 = load i64, ptr %28, align 8, !tbaa !9
  %755 = mul nsw i64 %753, %754
  %756 = add nsw i64 %747, %755
  %757 = getelementptr inbounds double, ptr %745, i64 %756
  %758 = load ptr, ptr %26, align 8, !tbaa !5
  %759 = load ptr, ptr %17, align 8, !tbaa !5
  %760 = load i64, ptr %759, align 8, !tbaa !9
  %761 = load i64, ptr %39, align 8, !tbaa !9
  %762 = add nsw i64 %760, %761
  %763 = load i64, ptr %41, align 8, !tbaa !9
  %764 = sub nsw i64 %762, %763
  %765 = load ptr, ptr %18, align 8, !tbaa !5
  %766 = load i64, ptr %765, align 8, !tbaa !9
  %767 = add nsw i64 %764, %766
  %768 = load i64, ptr %43, align 8, !tbaa !9
  %769 = sub nsw i64 %767, %768
  %770 = getelementptr inbounds double, ptr %758, i64 %769
  %771 = load ptr, ptr %26, align 8, !tbaa !5
  %772 = load i64, ptr %39, align 8, !tbaa !9
  %773 = load i64, ptr %41, align 8, !tbaa !9
  %774 = sub nsw i64 %772, %773
  %775 = load ptr, ptr %18, align 8, !tbaa !5
  %776 = load i64, ptr %775, align 8, !tbaa !9
  %777 = add nsw i64 %774, %776
  %778 = load i64, ptr %43, align 8, !tbaa !9
  %779 = sub nsw i64 %777, %778
  %780 = getelementptr inbounds double, ptr %771, i64 %779
  %781 = call i32 @dlartg_(ptr noundef %757, ptr noundef %55, ptr noundef %770, ptr noundef %780, ptr noundef %50)
  %782 = load ptr, ptr %22, align 8, !tbaa !5
  %783 = load i64, ptr %54, align 8, !tbaa !9
  %784 = load i64, ptr %41, align 8, !tbaa !9
  %785 = sub nsw i64 %783, %784
  %786 = load i64, ptr %39, align 8, !tbaa !9
  %787 = load i64, ptr %30, align 8, !tbaa !9
  %788 = mul nsw i64 %786, %787
  %789 = add nsw i64 %785, %788
  %790 = getelementptr inbounds double, ptr %782, i64 %789
  %791 = load double, ptr %790, align 8, !tbaa !11
  %792 = fneg double %791
  %793 = load double, ptr %55, align 8, !tbaa !11
  %794 = fmul double %792, %793
  store double %794, ptr %44, align 8, !tbaa !11
  %795 = load ptr, ptr %26, align 8, !tbaa !5
  %796 = load ptr, ptr %17, align 8, !tbaa !5
  %797 = load i64, ptr %796, align 8, !tbaa !9
  %798 = load i64, ptr %39, align 8, !tbaa !9
  %799 = add nsw i64 %797, %798
  %800 = load i64, ptr %41, align 8, !tbaa !9
  %801 = sub nsw i64 %799, %800
  %802 = load ptr, ptr %18, align 8, !tbaa !5
  %803 = load i64, ptr %802, align 8, !tbaa !9
  %804 = add nsw i64 %801, %803
  %805 = load i64, ptr %43, align 8, !tbaa !9
  %806 = sub nsw i64 %804, %805
  %807 = getelementptr inbounds double, ptr %795, i64 %806
  %808 = load double, ptr %807, align 8, !tbaa !11
  %809 = load double, ptr %44, align 8, !tbaa !11
  %810 = load ptr, ptr %26, align 8, !tbaa !5
  %811 = load i64, ptr %39, align 8, !tbaa !9
  %812 = load i64, ptr %41, align 8, !tbaa !9
  %813 = sub nsw i64 %811, %812
  %814 = load ptr, ptr %18, align 8, !tbaa !5
  %815 = load i64, ptr %814, align 8, !tbaa !9
  %816 = add nsw i64 %813, %815
  %817 = load i64, ptr %43, align 8, !tbaa !9
  %818 = sub nsw i64 %816, %817
  %819 = getelementptr inbounds double, ptr %810, i64 %818
  %820 = load double, ptr %819, align 8, !tbaa !11
  %821 = load ptr, ptr %20, align 8, !tbaa !5
  %822 = load i64, ptr %39, align 8, !tbaa !9
  %823 = load i64, ptr %41, align 8, !tbaa !9
  %824 = sub nsw i64 %822, %823
  %825 = load ptr, ptr %18, align 8, !tbaa !5
  %826 = load i64, ptr %825, align 8, !tbaa !9
  %827 = add nsw i64 %824, %826
  %828 = load i64, ptr %28, align 8, !tbaa !9
  %829 = mul nsw i64 %827, %828
  %830 = add nsw i64 %829, 1
  %831 = getelementptr inbounds double, ptr %821, i64 %830
  %832 = load double, ptr %831, align 8, !tbaa !11
  %833 = fmul double %820, %832
  %834 = fneg double %833
  %835 = call double @llvm.fmuladd.f64(double %808, double %809, double %834)
  %836 = load ptr, ptr %26, align 8, !tbaa !5
  %837 = load i64, ptr %39, align 8, !tbaa !9
  %838 = load i64, ptr %41, align 8, !tbaa !9
  %839 = sub nsw i64 %837, %838
  %840 = getelementptr inbounds double, ptr %836, i64 %839
  store double %835, ptr %840, align 8, !tbaa !11
  %841 = load ptr, ptr %26, align 8, !tbaa !5
  %842 = load i64, ptr %39, align 8, !tbaa !9
  %843 = load i64, ptr %41, align 8, !tbaa !9
  %844 = sub nsw i64 %842, %843
  %845 = load ptr, ptr %18, align 8, !tbaa !5
  %846 = load i64, ptr %845, align 8, !tbaa !9
  %847 = add nsw i64 %844, %846
  %848 = load i64, ptr %43, align 8, !tbaa !9
  %849 = sub nsw i64 %847, %848
  %850 = getelementptr inbounds double, ptr %841, i64 %849
  %851 = load double, ptr %850, align 8, !tbaa !11
  %852 = load double, ptr %44, align 8, !tbaa !11
  %853 = load ptr, ptr %26, align 8, !tbaa !5
  %854 = load ptr, ptr %17, align 8, !tbaa !5
  %855 = load i64, ptr %854, align 8, !tbaa !9
  %856 = load i64, ptr %39, align 8, !tbaa !9
  %857 = add nsw i64 %855, %856
  %858 = load i64, ptr %41, align 8, !tbaa !9
  %859 = sub nsw i64 %857, %858
  %860 = load ptr, ptr %18, align 8, !tbaa !5
  %861 = load i64, ptr %860, align 8, !tbaa !9
  %862 = add nsw i64 %859, %861
  %863 = load i64, ptr %43, align 8, !tbaa !9
  %864 = sub nsw i64 %862, %863
  %865 = getelementptr inbounds double, ptr %853, i64 %864
  %866 = load double, ptr %865, align 8, !tbaa !11
  %867 = load ptr, ptr %20, align 8, !tbaa !5
  %868 = load i64, ptr %39, align 8, !tbaa !9
  %869 = load i64, ptr %41, align 8, !tbaa !9
  %870 = sub nsw i64 %868, %869
  %871 = load ptr, ptr %18, align 8, !tbaa !5
  %872 = load i64, ptr %871, align 8, !tbaa !9
  %873 = add nsw i64 %870, %872
  %874 = load i64, ptr %28, align 8, !tbaa !9
  %875 = mul nsw i64 %873, %874
  %876 = add nsw i64 %875, 1
  %877 = getelementptr inbounds double, ptr %867, i64 %876
  %878 = load double, ptr %877, align 8, !tbaa !11
  %879 = fmul double %866, %878
  %880 = call double @llvm.fmuladd.f64(double %851, double %852, double %879)
  %881 = load ptr, ptr %20, align 8, !tbaa !5
  %882 = load i64, ptr %39, align 8, !tbaa !9
  %883 = load i64, ptr %41, align 8, !tbaa !9
  %884 = sub nsw i64 %882, %883
  %885 = load ptr, ptr %18, align 8, !tbaa !5
  %886 = load i64, ptr %885, align 8, !tbaa !9
  %887 = add nsw i64 %884, %886
  %888 = load i64, ptr %28, align 8, !tbaa !9
  %889 = mul nsw i64 %887, %888
  %890 = add nsw i64 %889, 1
  %891 = getelementptr inbounds double, ptr %881, i64 %890
  store double %880, ptr %891, align 8, !tbaa !11
  %892 = load double, ptr %50, align 8, !tbaa !11
  store double %892, ptr %55, align 8, !tbaa !11
  br label %893

893:                                              ; preds = %744, %739, %729
  br label %894

894:                                              ; preds = %893, %726
  store i64 1, ptr %35, align 8, !tbaa !9
  %895 = load i64, ptr %41, align 8, !tbaa !9
  %896 = load i64, ptr %45, align 8, !tbaa !9
  %897 = sub nsw i64 %895, %896
  %898 = add nsw i64 %897, 2
  store i64 %898, ptr %37, align 8, !tbaa !9
  %899 = load i64, ptr %39, align 8, !tbaa !9
  %900 = load i64, ptr %41, align 8, !tbaa !9
  %901 = sub nsw i64 %899, %900
  %902 = sub nsw i64 %901, 1
  %903 = load i64, ptr %35, align 8, !tbaa !9
  %904 = load i64, ptr %37, align 8, !tbaa !9
  %905 = icmp sge i64 %903, %904
  br i1 %905, label %906, label %908

906:                                              ; preds = %894
  %907 = load i64, ptr %35, align 8, !tbaa !9
  br label %910

908:                                              ; preds = %894
  %909 = load i64, ptr %37, align 8, !tbaa !9
  br label %910

910:                                              ; preds = %908, %906
  %911 = phi i64 [ %907, %906 ], [ %909, %908 ]
  %912 = load i64, ptr %53, align 8, !tbaa !9
  %913 = mul nsw i64 %911, %912
  %914 = add nsw i64 %902, %913
  store i64 %914, ptr %49, align 8, !tbaa !9
  %915 = load ptr, ptr %17, align 8, !tbaa !5
  %916 = load i64, ptr %915, align 8, !tbaa !9
  %917 = load i64, ptr %49, align 8, !tbaa !9
  %918 = sub nsw i64 %916, %917
  %919 = load ptr, ptr %18, align 8, !tbaa !5
  %920 = load i64, ptr %919, align 8, !tbaa !9
  %921 = add nsw i64 %918, %920
  %922 = load i64, ptr %53, align 8, !tbaa !9
  %923 = sdiv i64 %921, %922
  store i64 %923, ptr %51, align 8, !tbaa !9
  %924 = load i64, ptr %49, align 8, !tbaa !9
  %925 = load i64, ptr %51, align 8, !tbaa !9
  %926 = sub nsw i64 %925, 1
  %927 = load i64, ptr %53, align 8, !tbaa !9
  %928 = mul nsw i64 %926, %927
  %929 = add nsw i64 %924, %928
  store i64 %929, ptr %48, align 8, !tbaa !9
  %930 = load i64, ptr %64, align 8, !tbaa !9
  %931 = icmp ne i64 %930, 0
  br i1 %931, label %932, label %951

932:                                              ; preds = %910
  %933 = load i64, ptr %49, align 8, !tbaa !9
  store i64 %933, ptr %35, align 8, !tbaa !9
  %934 = load i64, ptr %39, align 8, !tbaa !9
  %935 = load ptr, ptr %18, align 8, !tbaa !5
  %936 = load i64, ptr %935, align 8, !tbaa !9
  %937 = shl i64 %936, 1
  %938 = add nsw i64 %934, %937
  %939 = load i64, ptr %41, align 8, !tbaa !9
  %940 = sub nsw i64 %938, %939
  %941 = add nsw i64 %940, 1
  store i64 %941, ptr %37, align 8, !tbaa !9
  %942 = load i64, ptr %35, align 8, !tbaa !9
  %943 = load i64, ptr %37, align 8, !tbaa !9
  %944 = icmp sge i64 %942, %943
  br i1 %944, label %945, label %947

945:                                              ; preds = %932
  %946 = load i64, ptr %35, align 8, !tbaa !9
  br label %949

947:                                              ; preds = %932
  %948 = load i64, ptr %37, align 8, !tbaa !9
  br label %949

949:                                              ; preds = %947, %945
  %950 = phi i64 [ %946, %945 ], [ %948, %947 ]
  store i64 %950, ptr %57, align 8, !tbaa !9
  br label %953

951:                                              ; preds = %910
  %952 = load i64, ptr %49, align 8, !tbaa !9
  store i64 %952, ptr %57, align 8, !tbaa !9
  br label %953

953:                                              ; preds = %951, %949
  %954 = load ptr, ptr %17, align 8, !tbaa !5
  %955 = load i64, ptr %954, align 8, !tbaa !9
  %956 = load i64, ptr %57, align 8, !tbaa !9
  %957 = sub nsw i64 %955, %956
  %958 = load ptr, ptr %18, align 8, !tbaa !5
  %959 = load i64, ptr %958, align 8, !tbaa !9
  %960 = add nsw i64 %957, %959
  %961 = load i64, ptr %53, align 8, !tbaa !9
  %962 = sdiv i64 %960, %961
  store i64 %962, ptr %60, align 8, !tbaa !9
  %963 = load i64, ptr %48, align 8, !tbaa !9
  store i64 %963, ptr %35, align 8, !tbaa !9
  %964 = load i64, ptr %53, align 8, !tbaa !9
  store i64 %964, ptr %37, align 8, !tbaa !9
  %965 = load i64, ptr %57, align 8, !tbaa !9
  store i64 %965, ptr %40, align 8, !tbaa !9
  br label %966

966:                                              ; preds = %1023, %953
  %967 = load i64, ptr %37, align 8, !tbaa !9
  %968 = icmp slt i64 %967, 0
  br i1 %968, label %969, label %974

969:                                              ; preds = %966
  %970 = load i64, ptr %40, align 8, !tbaa !9
  %971 = load i64, ptr %35, align 8, !tbaa !9
  %972 = icmp sge i64 %970, %971
  %973 = zext i1 %972 to i32
  br label %979

974:                                              ; preds = %966
  %975 = load i64, ptr %40, align 8, !tbaa !9
  %976 = load i64, ptr %35, align 8, !tbaa !9
  %977 = icmp sle i64 %975, %976
  %978 = zext i1 %977 to i32
  br label %979

979:                                              ; preds = %974, %969
  %980 = phi i32 [ %973, %969 ], [ %978, %974 ]
  %981 = icmp ne i32 %980, 0
  br i1 %981, label %982, label %1027

982:                                              ; preds = %979
  %983 = load ptr, ptr %20, align 8, !tbaa !5
  %984 = load i64, ptr %40, align 8, !tbaa !9
  %985 = add nsw i64 %984, 1
  %986 = load i64, ptr %28, align 8, !tbaa !9
  %987 = mul nsw i64 %985, %986
  %988 = add nsw i64 %987, 1
  %989 = getelementptr inbounds double, ptr %983, i64 %988
  %990 = load double, ptr %989, align 8, !tbaa !11
  %991 = load ptr, ptr %26, align 8, !tbaa !5
  %992 = load i64, ptr %40, align 8, !tbaa !9
  %993 = load i64, ptr %43, align 8, !tbaa !9
  %994 = sub nsw i64 %992, %993
  %995 = getelementptr inbounds double, ptr %991, i64 %994
  %996 = load double, ptr %995, align 8, !tbaa !11
  %997 = fmul double %996, %990
  store double %997, ptr %995, align 8, !tbaa !11
  %998 = load ptr, ptr %26, align 8, !tbaa !5
  %999 = load ptr, ptr %17, align 8, !tbaa !5
  %1000 = load i64, ptr %999, align 8, !tbaa !9
  %1001 = load i64, ptr %40, align 8, !tbaa !9
  %1002 = add nsw i64 %1000, %1001
  %1003 = load i64, ptr %43, align 8, !tbaa !9
  %1004 = sub nsw i64 %1002, %1003
  %1005 = getelementptr inbounds double, ptr %998, i64 %1004
  %1006 = load double, ptr %1005, align 8, !tbaa !11
  %1007 = load ptr, ptr %20, align 8, !tbaa !5
  %1008 = load i64, ptr %40, align 8, !tbaa !9
  %1009 = add nsw i64 %1008, 1
  %1010 = load i64, ptr %28, align 8, !tbaa !9
  %1011 = mul nsw i64 %1009, %1010
  %1012 = add nsw i64 %1011, 1
  %1013 = getelementptr inbounds double, ptr %1007, i64 %1012
  %1014 = load double, ptr %1013, align 8, !tbaa !11
  %1015 = fmul double %1006, %1014
  %1016 = load ptr, ptr %20, align 8, !tbaa !5
  %1017 = load i64, ptr %40, align 8, !tbaa !9
  %1018 = add nsw i64 %1017, 1
  %1019 = load i64, ptr %28, align 8, !tbaa !9
  %1020 = mul nsw i64 %1018, %1019
  %1021 = add nsw i64 %1020, 1
  %1022 = getelementptr inbounds double, ptr %1016, i64 %1021
  store double %1015, ptr %1022, align 8, !tbaa !11
  br label %1023

1023:                                             ; preds = %982
  %1024 = load i64, ptr %37, align 8, !tbaa !9
  %1025 = load i64, ptr %40, align 8, !tbaa !9
  %1026 = add nsw i64 %1025, %1024
  store i64 %1026, ptr %40, align 8, !tbaa !9
  br label %966, !llvm.loop !21

1027:                                             ; preds = %979
  %1028 = load i64, ptr %60, align 8, !tbaa !9
  %1029 = icmp sgt i64 %1028, 0
  br i1 %1029, label %1030, label %1051

1030:                                             ; preds = %1027
  %1031 = load ptr, ptr %20, align 8, !tbaa !5
  %1032 = load i64, ptr %57, align 8, !tbaa !9
  %1033 = load i64, ptr %28, align 8, !tbaa !9
  %1034 = mul nsw i64 %1032, %1033
  %1035 = add nsw i64 %1034, 1
  %1036 = getelementptr inbounds double, ptr %1031, i64 %1035
  %1037 = load ptr, ptr %26, align 8, !tbaa !5
  %1038 = load i64, ptr %57, align 8, !tbaa !9
  %1039 = load i64, ptr %43, align 8, !tbaa !9
  %1040 = sub nsw i64 %1038, %1039
  %1041 = getelementptr inbounds double, ptr %1037, i64 %1040
  %1042 = load ptr, ptr %26, align 8, !tbaa !5
  %1043 = load ptr, ptr %17, align 8, !tbaa !5
  %1044 = load i64, ptr %1043, align 8, !tbaa !9
  %1045 = load i64, ptr %57, align 8, !tbaa !9
  %1046 = add nsw i64 %1044, %1045
  %1047 = load i64, ptr %43, align 8, !tbaa !9
  %1048 = sub nsw i64 %1046, %1047
  %1049 = getelementptr inbounds double, ptr %1042, i64 %1048
  %1050 = call i32 @dlargv_(ptr noundef %60, ptr noundef %1036, ptr noundef %61, ptr noundef %1041, ptr noundef %53, ptr noundef %1049, ptr noundef %53)
  br label %1051

1051:                                             ; preds = %1030, %1027
  %1052 = load i64, ptr %51, align 8, !tbaa !9
  %1053 = icmp sgt i64 %1052, 0
  br i1 %1053, label %1054, label %1139

1054:                                             ; preds = %1051
  %1055 = load ptr, ptr %18, align 8, !tbaa !5
  %1056 = load i64, ptr %1055, align 8, !tbaa !9
  %1057 = sub nsw i64 %1056, 1
  store i64 %1057, ptr %37, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %1058

1058:                                             ; preds = %1097, %1054
  %1059 = load i64, ptr %42, align 8, !tbaa !9
  %1060 = load i64, ptr %37, align 8, !tbaa !9
  %1061 = icmp sle i64 %1059, %1060
  br i1 %1061, label %1062, label %1100

1062:                                             ; preds = %1058
  %1063 = load ptr, ptr %20, align 8, !tbaa !5
  %1064 = load i64, ptr %53, align 8, !tbaa !9
  %1065 = load i64, ptr %42, align 8, !tbaa !9
  %1066 = sub nsw i64 %1064, %1065
  %1067 = load i64, ptr %49, align 8, !tbaa !9
  %1068 = load i64, ptr %28, align 8, !tbaa !9
  %1069 = mul nsw i64 %1067, %1068
  %1070 = add nsw i64 %1066, %1069
  %1071 = getelementptr inbounds double, ptr %1063, i64 %1070
  %1072 = load ptr, ptr %20, align 8, !tbaa !5
  %1073 = load ptr, ptr %18, align 8, !tbaa !5
  %1074 = load i64, ptr %1073, align 8, !tbaa !9
  %1075 = load i64, ptr %42, align 8, !tbaa !9
  %1076 = sub nsw i64 %1074, %1075
  %1077 = load i64, ptr %49, align 8, !tbaa !9
  %1078 = add nsw i64 %1077, 1
  %1079 = load i64, ptr %28, align 8, !tbaa !9
  %1080 = mul nsw i64 %1078, %1079
  %1081 = add nsw i64 %1076, %1080
  %1082 = getelementptr inbounds double, ptr %1072, i64 %1081
  %1083 = load ptr, ptr %26, align 8, !tbaa !5
  %1084 = load ptr, ptr %17, align 8, !tbaa !5
  %1085 = load i64, ptr %1084, align 8, !tbaa !9
  %1086 = load i64, ptr %49, align 8, !tbaa !9
  %1087 = add nsw i64 %1085, %1086
  %1088 = load i64, ptr %43, align 8, !tbaa !9
  %1089 = sub nsw i64 %1087, %1088
  %1090 = getelementptr inbounds double, ptr %1083, i64 %1089
  %1091 = load ptr, ptr %26, align 8, !tbaa !5
  %1092 = load i64, ptr %49, align 8, !tbaa !9
  %1093 = load i64, ptr %43, align 8, !tbaa !9
  %1094 = sub nsw i64 %1092, %1093
  %1095 = getelementptr inbounds double, ptr %1091, i64 %1094
  %1096 = call i32 @dlartv_(ptr noundef %51, ptr noundef %1071, ptr noundef %61, ptr noundef %1082, ptr noundef %61, ptr noundef %1090, ptr noundef %1095, ptr noundef %53)
  br label %1097

1097:                                             ; preds = %1062
  %1098 = load i64, ptr %42, align 8, !tbaa !9
  %1099 = add nsw i64 %1098, 1
  store i64 %1099, ptr %42, align 8, !tbaa !9
  br label %1058, !llvm.loop !22

1100:                                             ; preds = %1058
  %1101 = load ptr, ptr %20, align 8, !tbaa !5
  %1102 = load i64, ptr %53, align 8, !tbaa !9
  %1103 = load i64, ptr %49, align 8, !tbaa !9
  %1104 = load i64, ptr %28, align 8, !tbaa !9
  %1105 = mul nsw i64 %1103, %1104
  %1106 = add nsw i64 %1102, %1105
  %1107 = getelementptr inbounds double, ptr %1101, i64 %1106
  %1108 = load ptr, ptr %20, align 8, !tbaa !5
  %1109 = load i64, ptr %53, align 8, !tbaa !9
  %1110 = load i64, ptr %49, align 8, !tbaa !9
  %1111 = add nsw i64 %1110, 1
  %1112 = load i64, ptr %28, align 8, !tbaa !9
  %1113 = mul nsw i64 %1111, %1112
  %1114 = add nsw i64 %1109, %1113
  %1115 = getelementptr inbounds double, ptr %1108, i64 %1114
  %1116 = load ptr, ptr %20, align 8, !tbaa !5
  %1117 = load ptr, ptr %18, align 8, !tbaa !5
  %1118 = load i64, ptr %1117, align 8, !tbaa !9
  %1119 = load i64, ptr %49, align 8, !tbaa !9
  %1120 = add nsw i64 %1119, 1
  %1121 = load i64, ptr %28, align 8, !tbaa !9
  %1122 = mul nsw i64 %1120, %1121
  %1123 = add nsw i64 %1118, %1122
  %1124 = getelementptr inbounds double, ptr %1116, i64 %1123
  %1125 = load ptr, ptr %26, align 8, !tbaa !5
  %1126 = load ptr, ptr %17, align 8, !tbaa !5
  %1127 = load i64, ptr %1126, align 8, !tbaa !9
  %1128 = load i64, ptr %49, align 8, !tbaa !9
  %1129 = add nsw i64 %1127, %1128
  %1130 = load i64, ptr %43, align 8, !tbaa !9
  %1131 = sub nsw i64 %1129, %1130
  %1132 = getelementptr inbounds double, ptr %1125, i64 %1131
  %1133 = load ptr, ptr %26, align 8, !tbaa !5
  %1134 = load i64, ptr %49, align 8, !tbaa !9
  %1135 = load i64, ptr %43, align 8, !tbaa !9
  %1136 = sub nsw i64 %1134, %1135
  %1137 = getelementptr inbounds double, ptr %1133, i64 %1136
  %1138 = call i32 @dlar2v_(ptr noundef %51, ptr noundef %1107, ptr noundef %1115, ptr noundef %1124, ptr noundef %61, ptr noundef %1132, ptr noundef %1137, ptr noundef %53)
  br label %1139

1139:                                             ; preds = %1100, %1051
  %1140 = load ptr, ptr %19, align 8, !tbaa !5
  %1141 = load i64, ptr %1140, align 8, !tbaa !9
  %1142 = load i64, ptr %41, align 8, !tbaa !9
  %1143 = sub nsw i64 %1141, %1142
  %1144 = add nsw i64 %1143, 1
  store i64 %1144, ptr %37, align 8, !tbaa !9
  %1145 = load ptr, ptr %18, align 8, !tbaa !5
  %1146 = load i64, ptr %1145, align 8, !tbaa !9
  %1147 = sub nsw i64 %1146, 1
  store i64 %1147, ptr %42, align 8, !tbaa !9
  br label %1148

1148:                                             ; preds = %1202, %1139
  %1149 = load i64, ptr %42, align 8, !tbaa !9
  %1150 = load i64, ptr %37, align 8, !tbaa !9
  %1151 = icmp sge i64 %1149, %1150
  br i1 %1151, label %1152, label %1205

1152:                                             ; preds = %1148
  %1153 = load ptr, ptr %17, align 8, !tbaa !5
  %1154 = load i64, ptr %1153, align 8, !tbaa !9
  %1155 = load i64, ptr %49, align 8, !tbaa !9
  %1156 = sub nsw i64 %1154, %1155
  %1157 = load i64, ptr %42, align 8, !tbaa !9
  %1158 = add nsw i64 %1156, %1157
  %1159 = load i64, ptr %53, align 8, !tbaa !9
  %1160 = sdiv i64 %1158, %1159
  store i64 %1160, ptr %60, align 8, !tbaa !9
  %1161 = load i64, ptr %60, align 8, !tbaa !9
  %1162 = icmp sgt i64 %1161, 0
  br i1 %1162, label %1163, label %1201

1163:                                             ; preds = %1152
  %1164 = load ptr, ptr %20, align 8, !tbaa !5
  %1165 = load i64, ptr %42, align 8, !tbaa !9
  %1166 = load i64, ptr %49, align 8, !tbaa !9
  %1167 = load i64, ptr %53, align 8, !tbaa !9
  %1168 = add nsw i64 %1166, %1167
  %1169 = load i64, ptr %42, align 8, !tbaa !9
  %1170 = sub nsw i64 %1168, %1169
  %1171 = load i64, ptr %28, align 8, !tbaa !9
  %1172 = mul nsw i64 %1170, %1171
  %1173 = add nsw i64 %1165, %1172
  %1174 = getelementptr inbounds double, ptr %1164, i64 %1173
  %1175 = load ptr, ptr %20, align 8, !tbaa !5
  %1176 = load i64, ptr %42, align 8, !tbaa !9
  %1177 = add nsw i64 %1176, 1
  %1178 = load i64, ptr %49, align 8, !tbaa !9
  %1179 = load i64, ptr %53, align 8, !tbaa !9
  %1180 = add nsw i64 %1178, %1179
  %1181 = load i64, ptr %42, align 8, !tbaa !9
  %1182 = sub nsw i64 %1180, %1181
  %1183 = load i64, ptr %28, align 8, !tbaa !9
  %1184 = mul nsw i64 %1182, %1183
  %1185 = add nsw i64 %1177, %1184
  %1186 = getelementptr inbounds double, ptr %1175, i64 %1185
  %1187 = load ptr, ptr %26, align 8, !tbaa !5
  %1188 = load ptr, ptr %17, align 8, !tbaa !5
  %1189 = load i64, ptr %1188, align 8, !tbaa !9
  %1190 = load i64, ptr %49, align 8, !tbaa !9
  %1191 = add nsw i64 %1189, %1190
  %1192 = load i64, ptr %43, align 8, !tbaa !9
  %1193 = sub nsw i64 %1191, %1192
  %1194 = getelementptr inbounds double, ptr %1187, i64 %1193
  %1195 = load ptr, ptr %26, align 8, !tbaa !5
  %1196 = load i64, ptr %49, align 8, !tbaa !9
  %1197 = load i64, ptr %43, align 8, !tbaa !9
  %1198 = sub nsw i64 %1196, %1197
  %1199 = getelementptr inbounds double, ptr %1195, i64 %1198
  %1200 = call i32 @dlartv_(ptr noundef %60, ptr noundef %1174, ptr noundef %61, ptr noundef %1186, ptr noundef %61, ptr noundef %1194, ptr noundef %1199, ptr noundef %53)
  br label %1201

1201:                                             ; preds = %1163, %1152
  br label %1202

1202:                                             ; preds = %1201
  %1203 = load i64, ptr %42, align 8, !tbaa !9
  %1204 = add nsw i64 %1203, -1
  store i64 %1204, ptr %42, align 8, !tbaa !9
  br label %1148, !llvm.loop !23

1205:                                             ; preds = %1148
  %1206 = load i64, ptr %63, align 8, !tbaa !9
  %1207 = icmp ne i64 %1206, 0
  br i1 %1207, label %1208, label %1269

1208:                                             ; preds = %1205
  %1209 = load i64, ptr %48, align 8, !tbaa !9
  store i64 %1209, ptr %37, align 8, !tbaa !9
  %1210 = load i64, ptr %53, align 8, !tbaa !9
  store i64 %1210, ptr %35, align 8, !tbaa !9
  %1211 = load i64, ptr %49, align 8, !tbaa !9
  store i64 %1211, ptr %40, align 8, !tbaa !9
  br label %1212

1212:                                             ; preds = %1264, %1208
  %1213 = load i64, ptr %35, align 8, !tbaa !9
  %1214 = icmp slt i64 %1213, 0
  br i1 %1214, label %1215, label %1220

1215:                                             ; preds = %1212
  %1216 = load i64, ptr %40, align 8, !tbaa !9
  %1217 = load i64, ptr %37, align 8, !tbaa !9
  %1218 = icmp sge i64 %1216, %1217
  %1219 = zext i1 %1218 to i32
  br label %1225

1220:                                             ; preds = %1212
  %1221 = load i64, ptr %40, align 8, !tbaa !9
  %1222 = load i64, ptr %37, align 8, !tbaa !9
  %1223 = icmp sle i64 %1221, %1222
  %1224 = zext i1 %1223 to i32
  br label %1225

1225:                                             ; preds = %1220, %1215
  %1226 = phi i32 [ %1219, %1215 ], [ %1224, %1220 ]
  %1227 = icmp ne i32 %1226, 0
  br i1 %1227, label %1228, label %1268

1228:                                             ; preds = %1225
  %1229 = load ptr, ptr %17, align 8, !tbaa !5
  %1230 = load i64, ptr %1229, align 8, !tbaa !9
  %1231 = load i64, ptr %43, align 8, !tbaa !9
  %1232 = sub nsw i64 %1230, %1231
  store i64 %1232, ptr %34, align 8, !tbaa !9
  %1233 = load ptr, ptr %24, align 8, !tbaa !5
  %1234 = load i64, ptr %43, align 8, !tbaa !9
  %1235 = add nsw i64 %1234, 1
  %1236 = load i64, ptr %40, align 8, !tbaa !9
  %1237 = load i64, ptr %32, align 8, !tbaa !9
  %1238 = mul nsw i64 %1236, %1237
  %1239 = add nsw i64 %1235, %1238
  %1240 = getelementptr inbounds double, ptr %1233, i64 %1239
  %1241 = load ptr, ptr %24, align 8, !tbaa !5
  %1242 = load i64, ptr %43, align 8, !tbaa !9
  %1243 = add nsw i64 %1242, 1
  %1244 = load i64, ptr %40, align 8, !tbaa !9
  %1245 = add nsw i64 %1244, 1
  %1246 = load i64, ptr %32, align 8, !tbaa !9
  %1247 = mul nsw i64 %1245, %1246
  %1248 = add nsw i64 %1243, %1247
  %1249 = getelementptr inbounds double, ptr %1241, i64 %1248
  %1250 = load ptr, ptr %26, align 8, !tbaa !5
  %1251 = load ptr, ptr %17, align 8, !tbaa !5
  %1252 = load i64, ptr %1251, align 8, !tbaa !9
  %1253 = load i64, ptr %40, align 8, !tbaa !9
  %1254 = add nsw i64 %1252, %1253
  %1255 = load i64, ptr %43, align 8, !tbaa !9
  %1256 = sub nsw i64 %1254, %1255
  %1257 = getelementptr inbounds double, ptr %1250, i64 %1256
  %1258 = load ptr, ptr %26, align 8, !tbaa !5
  %1259 = load i64, ptr %40, align 8, !tbaa !9
  %1260 = load i64, ptr %43, align 8, !tbaa !9
  %1261 = sub nsw i64 %1259, %1260
  %1262 = getelementptr inbounds double, ptr %1258, i64 %1261
  %1263 = call i32 @f2c_drot(ptr noundef %34, ptr noundef %1240, ptr noundef @c__1, ptr noundef %1249, ptr noundef @c__1, ptr noundef %1257, ptr noundef %1262)
  br label %1264

1264:                                             ; preds = %1228
  %1265 = load i64, ptr %35, align 8, !tbaa !9
  %1266 = load i64, ptr %40, align 8, !tbaa !9
  %1267 = add nsw i64 %1266, %1265
  store i64 %1267, ptr %40, align 8, !tbaa !9
  br label %1212, !llvm.loop !24

1268:                                             ; preds = %1225
  br label %1269

1269:                                             ; preds = %1268, %1205
  br label %1270

1270:                                             ; preds = %1269
  %1271 = load i64, ptr %41, align 8, !tbaa !9
  %1272 = add nsw i64 %1271, 1
  store i64 %1272, ptr %41, align 8, !tbaa !9
  br label %722, !llvm.loop !25

1273:                                             ; preds = %722
  %1274 = load i64, ptr %64, align 8, !tbaa !9
  %1275 = icmp ne i64 %1274, 0
  br i1 %1275, label %1276, label %1304

1276:                                             ; preds = %1273
  %1277 = load i64, ptr %47, align 8, !tbaa !9
  %1278 = load ptr, ptr %17, align 8, !tbaa !5
  %1279 = load i64, ptr %1278, align 8, !tbaa !9
  %1280 = icmp sle i64 %1277, %1279
  br i1 %1280, label %1281, label %1303

1281:                                             ; preds = %1276
  %1282 = load i64, ptr %59, align 8, !tbaa !9
  %1283 = icmp sgt i64 %1282, 0
  br i1 %1283, label %1284, label %1303

1284:                                             ; preds = %1281
  %1285 = load ptr, ptr %22, align 8, !tbaa !5
  %1286 = load i64, ptr %54, align 8, !tbaa !9
  %1287 = load i64, ptr %59, align 8, !tbaa !9
  %1288 = sub nsw i64 %1286, %1287
  %1289 = load i64, ptr %39, align 8, !tbaa !9
  %1290 = load i64, ptr %30, align 8, !tbaa !9
  %1291 = mul nsw i64 %1289, %1290
  %1292 = add nsw i64 %1288, %1291
  %1293 = getelementptr inbounds double, ptr %1285, i64 %1292
  %1294 = load double, ptr %1293, align 8, !tbaa !11
  %1295 = fneg double %1294
  %1296 = load double, ptr %55, align 8, !tbaa !11
  %1297 = fmul double %1295, %1296
  %1298 = load ptr, ptr %26, align 8, !tbaa !5
  %1299 = load i64, ptr %39, align 8, !tbaa !9
  %1300 = load i64, ptr %59, align 8, !tbaa !9
  %1301 = sub nsw i64 %1299, %1300
  %1302 = getelementptr inbounds double, ptr %1298, i64 %1301
  store double %1297, ptr %1302, align 8, !tbaa !11
  br label %1303

1303:                                             ; preds = %1284, %1281, %1276
  br label %1304

1304:                                             ; preds = %1303, %1273
  %1305 = load ptr, ptr %19, align 8, !tbaa !5
  %1306 = load i64, ptr %1305, align 8, !tbaa !9
  store i64 %1306, ptr %41, align 8, !tbaa !9
  br label %1307

1307:                                             ; preds = %1581, %1304
  %1308 = load i64, ptr %41, align 8, !tbaa !9
  %1309 = icmp sge i64 %1308, 1
  br i1 %1309, label %1310, label %1584

1310:                                             ; preds = %1307
  %1311 = load i64, ptr %64, align 8, !tbaa !9
  %1312 = icmp ne i64 %1311, 0
  br i1 %1312, label %1313, label %1334

1313:                                             ; preds = %1310
  store i64 2, ptr %36, align 8, !tbaa !9
  %1314 = load i64, ptr %41, align 8, !tbaa !9
  %1315 = load i64, ptr %45, align 8, !tbaa !9
  %1316 = sub nsw i64 %1314, %1315
  %1317 = add nsw i64 %1316, 1
  store i64 %1317, ptr %35, align 8, !tbaa !9
  %1318 = load i64, ptr %39, align 8, !tbaa !9
  %1319 = load i64, ptr %41, align 8, !tbaa !9
  %1320 = sub nsw i64 %1318, %1319
  %1321 = sub nsw i64 %1320, 1
  %1322 = load i64, ptr %36, align 8, !tbaa !9
  %1323 = load i64, ptr %35, align 8, !tbaa !9
  %1324 = icmp sge i64 %1322, %1323
  br i1 %1324, label %1325, label %1327

1325:                                             ; preds = %1313
  %1326 = load i64, ptr %36, align 8, !tbaa !9
  br label %1329

1327:                                             ; preds = %1313
  %1328 = load i64, ptr %35, align 8, !tbaa !9
  br label %1329

1329:                                             ; preds = %1327, %1325
  %1330 = phi i64 [ %1326, %1325 ], [ %1328, %1327 ]
  %1331 = load i64, ptr %53, align 8, !tbaa !9
  %1332 = mul nsw i64 %1330, %1331
  %1333 = add nsw i64 %1321, %1332
  store i64 %1333, ptr %49, align 8, !tbaa !9
  br label %1355

1334:                                             ; preds = %1310
  store i64 1, ptr %36, align 8, !tbaa !9
  %1335 = load i64, ptr %41, align 8, !tbaa !9
  %1336 = load i64, ptr %45, align 8, !tbaa !9
  %1337 = sub nsw i64 %1335, %1336
  %1338 = add nsw i64 %1337, 1
  store i64 %1338, ptr %35, align 8, !tbaa !9
  %1339 = load i64, ptr %39, align 8, !tbaa !9
  %1340 = load i64, ptr %41, align 8, !tbaa !9
  %1341 = sub nsw i64 %1339, %1340
  %1342 = sub nsw i64 %1341, 1
  %1343 = load i64, ptr %36, align 8, !tbaa !9
  %1344 = load i64, ptr %35, align 8, !tbaa !9
  %1345 = icmp sge i64 %1343, %1344
  br i1 %1345, label %1346, label %1348

1346:                                             ; preds = %1334
  %1347 = load i64, ptr %36, align 8, !tbaa !9
  br label %1350

1348:                                             ; preds = %1334
  %1349 = load i64, ptr %35, align 8, !tbaa !9
  br label %1350

1350:                                             ; preds = %1348, %1346
  %1351 = phi i64 [ %1347, %1346 ], [ %1349, %1348 ]
  %1352 = load i64, ptr %53, align 8, !tbaa !9
  %1353 = mul nsw i64 %1351, %1352
  %1354 = add nsw i64 %1342, %1353
  store i64 %1354, ptr %49, align 8, !tbaa !9
  br label %1355

1355:                                             ; preds = %1350, %1329
  %1356 = load ptr, ptr %19, align 8, !tbaa !5
  %1357 = load i64, ptr %1356, align 8, !tbaa !9
  %1358 = load i64, ptr %41, align 8, !tbaa !9
  %1359 = sub nsw i64 %1357, %1358
  store i64 %1359, ptr %42, align 8, !tbaa !9
  br label %1360

1360:                                             ; preds = %1416, %1355
  %1361 = load i64, ptr %42, align 8, !tbaa !9
  %1362 = icmp sge i64 %1361, 1
  br i1 %1362, label %1363, label %1419

1363:                                             ; preds = %1360
  %1364 = load ptr, ptr %17, align 8, !tbaa !5
  %1365 = load i64, ptr %1364, align 8, !tbaa !9
  %1366 = load i64, ptr %49, align 8, !tbaa !9
  %1367 = sub nsw i64 %1365, %1366
  %1368 = load ptr, ptr %18, align 8, !tbaa !5
  %1369 = load i64, ptr %1368, align 8, !tbaa !9
  %1370 = add nsw i64 %1367, %1369
  %1371 = load i64, ptr %42, align 8, !tbaa !9
  %1372 = add nsw i64 %1370, %1371
  %1373 = load i64, ptr %53, align 8, !tbaa !9
  %1374 = sdiv i64 %1372, %1373
  store i64 %1374, ptr %60, align 8, !tbaa !9
  %1375 = load i64, ptr %60, align 8, !tbaa !9
  %1376 = icmp sgt i64 %1375, 0
  br i1 %1376, label %1377, label %1415

1377:                                             ; preds = %1363
  %1378 = load ptr, ptr %20, align 8, !tbaa !5
  %1379 = load i64, ptr %42, align 8, !tbaa !9
  %1380 = load i64, ptr %49, align 8, !tbaa !9
  %1381 = load i64, ptr %42, align 8, !tbaa !9
  %1382 = sub nsw i64 %1380, %1381
  %1383 = add nsw i64 %1382, 1
  %1384 = load i64, ptr %28, align 8, !tbaa !9
  %1385 = mul nsw i64 %1383, %1384
  %1386 = add nsw i64 %1379, %1385
  %1387 = getelementptr inbounds double, ptr %1378, i64 %1386
  %1388 = load ptr, ptr %20, align 8, !tbaa !5
  %1389 = load i64, ptr %42, align 8, !tbaa !9
  %1390 = add nsw i64 %1389, 1
  %1391 = load i64, ptr %49, align 8, !tbaa !9
  %1392 = load i64, ptr %42, align 8, !tbaa !9
  %1393 = sub nsw i64 %1391, %1392
  %1394 = add nsw i64 %1393, 1
  %1395 = load i64, ptr %28, align 8, !tbaa !9
  %1396 = mul nsw i64 %1394, %1395
  %1397 = add nsw i64 %1390, %1396
  %1398 = getelementptr inbounds double, ptr %1388, i64 %1397
  %1399 = load ptr, ptr %26, align 8, !tbaa !5
  %1400 = load ptr, ptr %17, align 8, !tbaa !5
  %1401 = load i64, ptr %1400, align 8, !tbaa !9
  %1402 = load i64, ptr %49, align 8, !tbaa !9
  %1403 = add nsw i64 %1401, %1402
  %1404 = load ptr, ptr %18, align 8, !tbaa !5
  %1405 = load i64, ptr %1404, align 8, !tbaa !9
  %1406 = sub nsw i64 %1403, %1405
  %1407 = getelementptr inbounds double, ptr %1399, i64 %1406
  %1408 = load ptr, ptr %26, align 8, !tbaa !5
  %1409 = load i64, ptr %49, align 8, !tbaa !9
  %1410 = load ptr, ptr %18, align 8, !tbaa !5
  %1411 = load i64, ptr %1410, align 8, !tbaa !9
  %1412 = sub nsw i64 %1409, %1411
  %1413 = getelementptr inbounds double, ptr %1408, i64 %1412
  %1414 = call i32 @dlartv_(ptr noundef %60, ptr noundef %1387, ptr noundef %61, ptr noundef %1398, ptr noundef %61, ptr noundef %1407, ptr noundef %1413, ptr noundef %53)
  br label %1415

1415:                                             ; preds = %1377, %1363
  br label %1416

1416:                                             ; preds = %1415
  %1417 = load i64, ptr %42, align 8, !tbaa !9
  %1418 = add nsw i64 %1417, -1
  store i64 %1418, ptr %42, align 8, !tbaa !9
  br label %1360, !llvm.loop !26

1419:                                             ; preds = %1360
  %1420 = load ptr, ptr %17, align 8, !tbaa !5
  %1421 = load i64, ptr %1420, align 8, !tbaa !9
  %1422 = load i64, ptr %49, align 8, !tbaa !9
  %1423 = sub nsw i64 %1421, %1422
  %1424 = load ptr, ptr %18, align 8, !tbaa !5
  %1425 = load i64, ptr %1424, align 8, !tbaa !9
  %1426 = add nsw i64 %1423, %1425
  %1427 = load i64, ptr %53, align 8, !tbaa !9
  %1428 = sdiv i64 %1426, %1427
  store i64 %1428, ptr %51, align 8, !tbaa !9
  %1429 = load i64, ptr %49, align 8, !tbaa !9
  %1430 = load i64, ptr %51, align 8, !tbaa !9
  %1431 = sub nsw i64 %1430, 1
  %1432 = load i64, ptr %53, align 8, !tbaa !9
  %1433 = mul nsw i64 %1431, %1432
  %1434 = add nsw i64 %1429, %1433
  store i64 %1434, ptr %48, align 8, !tbaa !9
  %1435 = load i64, ptr %49, align 8, !tbaa !9
  store i64 %1435, ptr %36, align 8, !tbaa !9
  %1436 = load i64, ptr %53, align 8, !tbaa !9
  %1437 = sub nsw i64 0, %1436
  store i64 %1437, ptr %35, align 8, !tbaa !9
  %1438 = load i64, ptr %48, align 8, !tbaa !9
  store i64 %1438, ptr %40, align 8, !tbaa !9
  br label %1439

1439:                                             ; preds = %1482, %1419
  %1440 = load i64, ptr %35, align 8, !tbaa !9
  %1441 = icmp slt i64 %1440, 0
  br i1 %1441, label %1442, label %1447

1442:                                             ; preds = %1439
  %1443 = load i64, ptr %40, align 8, !tbaa !9
  %1444 = load i64, ptr %36, align 8, !tbaa !9
  %1445 = icmp sge i64 %1443, %1444
  %1446 = zext i1 %1445 to i32
  br label %1452

1447:                                             ; preds = %1439
  %1448 = load i64, ptr %40, align 8, !tbaa !9
  %1449 = load i64, ptr %36, align 8, !tbaa !9
  %1450 = icmp sle i64 %1448, %1449
  %1451 = zext i1 %1450 to i32
  br label %1452

1452:                                             ; preds = %1447, %1442
  %1453 = phi i32 [ %1446, %1442 ], [ %1451, %1447 ]
  %1454 = icmp ne i32 %1453, 0
  br i1 %1454, label %1455, label %1486

1455:                                             ; preds = %1452
  %1456 = load ptr, ptr %26, align 8, !tbaa !5
  %1457 = load i64, ptr %40, align 8, !tbaa !9
  %1458 = load ptr, ptr %18, align 8, !tbaa !5
  %1459 = load i64, ptr %1458, align 8, !tbaa !9
  %1460 = sub nsw i64 %1457, %1459
  %1461 = getelementptr inbounds double, ptr %1456, i64 %1460
  %1462 = load double, ptr %1461, align 8, !tbaa !11
  %1463 = load ptr, ptr %26, align 8, !tbaa !5
  %1464 = load i64, ptr %40, align 8, !tbaa !9
  %1465 = getelementptr inbounds double, ptr %1463, i64 %1464
  store double %1462, ptr %1465, align 8, !tbaa !11
  %1466 = load ptr, ptr %26, align 8, !tbaa !5
  %1467 = load ptr, ptr %17, align 8, !tbaa !5
  %1468 = load i64, ptr %1467, align 8, !tbaa !9
  %1469 = load i64, ptr %40, align 8, !tbaa !9
  %1470 = add nsw i64 %1468, %1469
  %1471 = load ptr, ptr %18, align 8, !tbaa !5
  %1472 = load i64, ptr %1471, align 8, !tbaa !9
  %1473 = sub nsw i64 %1470, %1472
  %1474 = getelementptr inbounds double, ptr %1466, i64 %1473
  %1475 = load double, ptr %1474, align 8, !tbaa !11
  %1476 = load ptr, ptr %26, align 8, !tbaa !5
  %1477 = load ptr, ptr %17, align 8, !tbaa !5
  %1478 = load i64, ptr %1477, align 8, !tbaa !9
  %1479 = load i64, ptr %40, align 8, !tbaa !9
  %1480 = add nsw i64 %1478, %1479
  %1481 = getelementptr inbounds double, ptr %1476, i64 %1480
  store double %1475, ptr %1481, align 8, !tbaa !11
  br label %1482

1482:                                             ; preds = %1455
  %1483 = load i64, ptr %35, align 8, !tbaa !9
  %1484 = load i64, ptr %40, align 8, !tbaa !9
  %1485 = add nsw i64 %1484, %1483
  store i64 %1485, ptr %40, align 8, !tbaa !9
  br label %1439, !llvm.loop !27

1486:                                             ; preds = %1452
  %1487 = load i64, ptr %48, align 8, !tbaa !9
  store i64 %1487, ptr %35, align 8, !tbaa !9
  %1488 = load i64, ptr %53, align 8, !tbaa !9
  store i64 %1488, ptr %36, align 8, !tbaa !9
  %1489 = load i64, ptr %49, align 8, !tbaa !9
  store i64 %1489, ptr %40, align 8, !tbaa !9
  br label %1490

1490:                                             ; preds = %1543, %1486
  %1491 = load i64, ptr %36, align 8, !tbaa !9
  %1492 = icmp slt i64 %1491, 0
  br i1 %1492, label %1493, label %1498

1493:                                             ; preds = %1490
  %1494 = load i64, ptr %40, align 8, !tbaa !9
  %1495 = load i64, ptr %35, align 8, !tbaa !9
  %1496 = icmp sge i64 %1494, %1495
  %1497 = zext i1 %1496 to i32
  br label %1503

1498:                                             ; preds = %1490
  %1499 = load i64, ptr %40, align 8, !tbaa !9
  %1500 = load i64, ptr %35, align 8, !tbaa !9
  %1501 = icmp sle i64 %1499, %1500
  %1502 = zext i1 %1501 to i32
  br label %1503

1503:                                             ; preds = %1498, %1493
  %1504 = phi i32 [ %1497, %1493 ], [ %1502, %1498 ]
  %1505 = icmp ne i32 %1504, 0
  br i1 %1505, label %1506, label %1547

1506:                                             ; preds = %1503
  %1507 = load ptr, ptr %20, align 8, !tbaa !5
  %1508 = load i64, ptr %40, align 8, !tbaa !9
  %1509 = add nsw i64 %1508, 1
  %1510 = load i64, ptr %28, align 8, !tbaa !9
  %1511 = mul nsw i64 %1509, %1510
  %1512 = add nsw i64 %1511, 1
  %1513 = getelementptr inbounds double, ptr %1507, i64 %1512
  %1514 = load double, ptr %1513, align 8, !tbaa !11
  %1515 = load ptr, ptr %26, align 8, !tbaa !5
  %1516 = load i64, ptr %40, align 8, !tbaa !9
  %1517 = getelementptr inbounds double, ptr %1515, i64 %1516
  %1518 = load double, ptr %1517, align 8, !tbaa !11
  %1519 = fmul double %1518, %1514
  store double %1519, ptr %1517, align 8, !tbaa !11
  %1520 = load ptr, ptr %26, align 8, !tbaa !5
  %1521 = load ptr, ptr %17, align 8, !tbaa !5
  %1522 = load i64, ptr %1521, align 8, !tbaa !9
  %1523 = load i64, ptr %40, align 8, !tbaa !9
  %1524 = add nsw i64 %1522, %1523
  %1525 = getelementptr inbounds double, ptr %1520, i64 %1524
  %1526 = load double, ptr %1525, align 8, !tbaa !11
  %1527 = load ptr, ptr %20, align 8, !tbaa !5
  %1528 = load i64, ptr %40, align 8, !tbaa !9
  %1529 = add nsw i64 %1528, 1
  %1530 = load i64, ptr %28, align 8, !tbaa !9
  %1531 = mul nsw i64 %1529, %1530
  %1532 = add nsw i64 %1531, 1
  %1533 = getelementptr inbounds double, ptr %1527, i64 %1532
  %1534 = load double, ptr %1533, align 8, !tbaa !11
  %1535 = fmul double %1526, %1534
  %1536 = load ptr, ptr %20, align 8, !tbaa !5
  %1537 = load i64, ptr %40, align 8, !tbaa !9
  %1538 = add nsw i64 %1537, 1
  %1539 = load i64, ptr %28, align 8, !tbaa !9
  %1540 = mul nsw i64 %1538, %1539
  %1541 = add nsw i64 %1540, 1
  %1542 = getelementptr inbounds double, ptr %1536, i64 %1541
  store double %1535, ptr %1542, align 8, !tbaa !11
  br label %1543

1543:                                             ; preds = %1506
  %1544 = load i64, ptr %36, align 8, !tbaa !9
  %1545 = load i64, ptr %40, align 8, !tbaa !9
  %1546 = add nsw i64 %1545, %1544
  store i64 %1546, ptr %40, align 8, !tbaa !9
  br label %1490, !llvm.loop !28

1547:                                             ; preds = %1503
  %1548 = load i64, ptr %64, align 8, !tbaa !9
  %1549 = icmp ne i64 %1548, 0
  br i1 %1549, label %1550, label %1580

1550:                                             ; preds = %1547
  %1551 = load i64, ptr %39, align 8, !tbaa !9
  %1552 = load i64, ptr %41, align 8, !tbaa !9
  %1553 = sub nsw i64 %1551, %1552
  %1554 = load ptr, ptr %17, align 8, !tbaa !5
  %1555 = load i64, ptr %1554, align 8, !tbaa !9
  %1556 = load ptr, ptr %18, align 8, !tbaa !5
  %1557 = load i64, ptr %1556, align 8, !tbaa !9
  %1558 = sub nsw i64 %1555, %1557
  %1559 = icmp slt i64 %1553, %1558
  br i1 %1559, label %1560, label %1579

1560:                                             ; preds = %1550
  %1561 = load i64, ptr %41, align 8, !tbaa !9
  %1562 = load i64, ptr %59, align 8, !tbaa !9
  %1563 = icmp sle i64 %1561, %1562
  br i1 %1563, label %1564, label %1579

1564:                                             ; preds = %1560
  %1565 = load ptr, ptr %26, align 8, !tbaa !5
  %1566 = load i64, ptr %39, align 8, !tbaa !9
  %1567 = load i64, ptr %41, align 8, !tbaa !9
  %1568 = sub nsw i64 %1566, %1567
  %1569 = getelementptr inbounds double, ptr %1565, i64 %1568
  %1570 = load double, ptr %1569, align 8, !tbaa !11
  %1571 = load ptr, ptr %26, align 8, !tbaa !5
  %1572 = load i64, ptr %39, align 8, !tbaa !9
  %1573 = load i64, ptr %41, align 8, !tbaa !9
  %1574 = sub nsw i64 %1572, %1573
  %1575 = load ptr, ptr %18, align 8, !tbaa !5
  %1576 = load i64, ptr %1575, align 8, !tbaa !9
  %1577 = add nsw i64 %1574, %1576
  %1578 = getelementptr inbounds double, ptr %1571, i64 %1577
  store double %1570, ptr %1578, align 8, !tbaa !11
  br label %1579

1579:                                             ; preds = %1564, %1560, %1550
  br label %1580

1580:                                             ; preds = %1579, %1547
  br label %1581

1581:                                             ; preds = %1580
  %1582 = load i64, ptr %41, align 8, !tbaa !9
  %1583 = add nsw i64 %1582, -1
  store i64 %1583, ptr %41, align 8, !tbaa !9
  br label %1307, !llvm.loop !29

1584:                                             ; preds = %1307
  %1585 = load ptr, ptr %19, align 8, !tbaa !5
  %1586 = load i64, ptr %1585, align 8, !tbaa !9
  store i64 %1586, ptr %41, align 8, !tbaa !9
  br label %1587

1587:                                             ; preds = %1844, %1584
  %1588 = load i64, ptr %41, align 8, !tbaa !9
  %1589 = icmp sge i64 %1588, 1
  br i1 %1589, label %1590, label %1847

1590:                                             ; preds = %1587
  store i64 1, ptr %36, align 8, !tbaa !9
  %1591 = load i64, ptr %41, align 8, !tbaa !9
  %1592 = load i64, ptr %45, align 8, !tbaa !9
  %1593 = sub nsw i64 %1591, %1592
  %1594 = add nsw i64 %1593, 1
  store i64 %1594, ptr %35, align 8, !tbaa !9
  %1595 = load i64, ptr %39, align 8, !tbaa !9
  %1596 = load i64, ptr %41, align 8, !tbaa !9
  %1597 = sub nsw i64 %1595, %1596
  %1598 = sub nsw i64 %1597, 1
  %1599 = load i64, ptr %36, align 8, !tbaa !9
  %1600 = load i64, ptr %35, align 8, !tbaa !9
  %1601 = icmp sge i64 %1599, %1600
  br i1 %1601, label %1602, label %1604

1602:                                             ; preds = %1590
  %1603 = load i64, ptr %36, align 8, !tbaa !9
  br label %1606

1604:                                             ; preds = %1590
  %1605 = load i64, ptr %35, align 8, !tbaa !9
  br label %1606

1606:                                             ; preds = %1604, %1602
  %1607 = phi i64 [ %1603, %1602 ], [ %1605, %1604 ]
  %1608 = load i64, ptr %53, align 8, !tbaa !9
  %1609 = mul nsw i64 %1607, %1608
  %1610 = add nsw i64 %1598, %1609
  store i64 %1610, ptr %49, align 8, !tbaa !9
  %1611 = load ptr, ptr %17, align 8, !tbaa !5
  %1612 = load i64, ptr %1611, align 8, !tbaa !9
  %1613 = load i64, ptr %49, align 8, !tbaa !9
  %1614 = sub nsw i64 %1612, %1613
  %1615 = load ptr, ptr %18, align 8, !tbaa !5
  %1616 = load i64, ptr %1615, align 8, !tbaa !9
  %1617 = add nsw i64 %1614, %1616
  %1618 = load i64, ptr %53, align 8, !tbaa !9
  %1619 = sdiv i64 %1617, %1618
  store i64 %1619, ptr %51, align 8, !tbaa !9
  %1620 = load i64, ptr %49, align 8, !tbaa !9
  %1621 = load i64, ptr %51, align 8, !tbaa !9
  %1622 = sub nsw i64 %1621, 1
  %1623 = load i64, ptr %53, align 8, !tbaa !9
  %1624 = mul nsw i64 %1622, %1623
  %1625 = add nsw i64 %1620, %1624
  store i64 %1625, ptr %48, align 8, !tbaa !9
  %1626 = load i64, ptr %51, align 8, !tbaa !9
  %1627 = icmp sgt i64 %1626, 0
  br i1 %1627, label %1628, label %1721

1628:                                             ; preds = %1606
  %1629 = load ptr, ptr %20, align 8, !tbaa !5
  %1630 = load i64, ptr %49, align 8, !tbaa !9
  %1631 = load i64, ptr %28, align 8, !tbaa !9
  %1632 = mul nsw i64 %1630, %1631
  %1633 = add nsw i64 %1632, 1
  %1634 = getelementptr inbounds double, ptr %1629, i64 %1633
  %1635 = load ptr, ptr %26, align 8, !tbaa !5
  %1636 = load i64, ptr %49, align 8, !tbaa !9
  %1637 = getelementptr inbounds double, ptr %1635, i64 %1636
  %1638 = load ptr, ptr %26, align 8, !tbaa !5
  %1639 = load ptr, ptr %17, align 8, !tbaa !5
  %1640 = load i64, ptr %1639, align 8, !tbaa !9
  %1641 = load i64, ptr %49, align 8, !tbaa !9
  %1642 = add nsw i64 %1640, %1641
  %1643 = getelementptr inbounds double, ptr %1638, i64 %1642
  %1644 = call i32 @dlargv_(ptr noundef %51, ptr noundef %1634, ptr noundef %61, ptr noundef %1637, ptr noundef %53, ptr noundef %1643, ptr noundef %53)
  %1645 = load ptr, ptr %18, align 8, !tbaa !5
  %1646 = load i64, ptr %1645, align 8, !tbaa !9
  %1647 = sub nsw i64 %1646, 1
  store i64 %1647, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %1648

1648:                                             ; preds = %1683, %1628
  %1649 = load i64, ptr %42, align 8, !tbaa !9
  %1650 = load i64, ptr %36, align 8, !tbaa !9
  %1651 = icmp sle i64 %1649, %1650
  br i1 %1651, label %1652, label %1686

1652:                                             ; preds = %1648
  %1653 = load ptr, ptr %20, align 8, !tbaa !5
  %1654 = load i64, ptr %53, align 8, !tbaa !9
  %1655 = load i64, ptr %42, align 8, !tbaa !9
  %1656 = sub nsw i64 %1654, %1655
  %1657 = load i64, ptr %49, align 8, !tbaa !9
  %1658 = load i64, ptr %28, align 8, !tbaa !9
  %1659 = mul nsw i64 %1657, %1658
  %1660 = add nsw i64 %1656, %1659
  %1661 = getelementptr inbounds double, ptr %1653, i64 %1660
  %1662 = load ptr, ptr %20, align 8, !tbaa !5
  %1663 = load ptr, ptr %18, align 8, !tbaa !5
  %1664 = load i64, ptr %1663, align 8, !tbaa !9
  %1665 = load i64, ptr %42, align 8, !tbaa !9
  %1666 = sub nsw i64 %1664, %1665
  %1667 = load i64, ptr %49, align 8, !tbaa !9
  %1668 = add nsw i64 %1667, 1
  %1669 = load i64, ptr %28, align 8, !tbaa !9
  %1670 = mul nsw i64 %1668, %1669
  %1671 = add nsw i64 %1666, %1670
  %1672 = getelementptr inbounds double, ptr %1662, i64 %1671
  %1673 = load ptr, ptr %26, align 8, !tbaa !5
  %1674 = load ptr, ptr %17, align 8, !tbaa !5
  %1675 = load i64, ptr %1674, align 8, !tbaa !9
  %1676 = load i64, ptr %49, align 8, !tbaa !9
  %1677 = add nsw i64 %1675, %1676
  %1678 = getelementptr inbounds double, ptr %1673, i64 %1677
  %1679 = load ptr, ptr %26, align 8, !tbaa !5
  %1680 = load i64, ptr %49, align 8, !tbaa !9
  %1681 = getelementptr inbounds double, ptr %1679, i64 %1680
  %1682 = call i32 @dlartv_(ptr noundef %51, ptr noundef %1661, ptr noundef %61, ptr noundef %1672, ptr noundef %61, ptr noundef %1678, ptr noundef %1681, ptr noundef %53)
  br label %1683

1683:                                             ; preds = %1652
  %1684 = load i64, ptr %42, align 8, !tbaa !9
  %1685 = add nsw i64 %1684, 1
  store i64 %1685, ptr %42, align 8, !tbaa !9
  br label %1648, !llvm.loop !30

1686:                                             ; preds = %1648
  %1687 = load ptr, ptr %20, align 8, !tbaa !5
  %1688 = load i64, ptr %53, align 8, !tbaa !9
  %1689 = load i64, ptr %49, align 8, !tbaa !9
  %1690 = load i64, ptr %28, align 8, !tbaa !9
  %1691 = mul nsw i64 %1689, %1690
  %1692 = add nsw i64 %1688, %1691
  %1693 = getelementptr inbounds double, ptr %1687, i64 %1692
  %1694 = load ptr, ptr %20, align 8, !tbaa !5
  %1695 = load i64, ptr %53, align 8, !tbaa !9
  %1696 = load i64, ptr %49, align 8, !tbaa !9
  %1697 = add nsw i64 %1696, 1
  %1698 = load i64, ptr %28, align 8, !tbaa !9
  %1699 = mul nsw i64 %1697, %1698
  %1700 = add nsw i64 %1695, %1699
  %1701 = getelementptr inbounds double, ptr %1694, i64 %1700
  %1702 = load ptr, ptr %20, align 8, !tbaa !5
  %1703 = load ptr, ptr %18, align 8, !tbaa !5
  %1704 = load i64, ptr %1703, align 8, !tbaa !9
  %1705 = load i64, ptr %49, align 8, !tbaa !9
  %1706 = add nsw i64 %1705, 1
  %1707 = load i64, ptr %28, align 8, !tbaa !9
  %1708 = mul nsw i64 %1706, %1707
  %1709 = add nsw i64 %1704, %1708
  %1710 = getelementptr inbounds double, ptr %1702, i64 %1709
  %1711 = load ptr, ptr %26, align 8, !tbaa !5
  %1712 = load ptr, ptr %17, align 8, !tbaa !5
  %1713 = load i64, ptr %1712, align 8, !tbaa !9
  %1714 = load i64, ptr %49, align 8, !tbaa !9
  %1715 = add nsw i64 %1713, %1714
  %1716 = getelementptr inbounds double, ptr %1711, i64 %1715
  %1717 = load ptr, ptr %26, align 8, !tbaa !5
  %1718 = load i64, ptr %49, align 8, !tbaa !9
  %1719 = getelementptr inbounds double, ptr %1717, i64 %1718
  %1720 = call i32 @dlar2v_(ptr noundef %51, ptr noundef %1693, ptr noundef %1701, ptr noundef %1710, ptr noundef %61, ptr noundef %1716, ptr noundef %1719, ptr noundef %53)
  br label %1721

1721:                                             ; preds = %1686, %1606
  %1722 = load ptr, ptr %19, align 8, !tbaa !5
  %1723 = load i64, ptr %1722, align 8, !tbaa !9
  %1724 = load i64, ptr %41, align 8, !tbaa !9
  %1725 = sub nsw i64 %1723, %1724
  %1726 = add nsw i64 %1725, 1
  store i64 %1726, ptr %36, align 8, !tbaa !9
  %1727 = load ptr, ptr %18, align 8, !tbaa !5
  %1728 = load i64, ptr %1727, align 8, !tbaa !9
  %1729 = sub nsw i64 %1728, 1
  store i64 %1729, ptr %42, align 8, !tbaa !9
  br label %1730

1730:                                             ; preds = %1780, %1721
  %1731 = load i64, ptr %42, align 8, !tbaa !9
  %1732 = load i64, ptr %36, align 8, !tbaa !9
  %1733 = icmp sge i64 %1731, %1732
  br i1 %1733, label %1734, label %1783

1734:                                             ; preds = %1730
  %1735 = load ptr, ptr %17, align 8, !tbaa !5
  %1736 = load i64, ptr %1735, align 8, !tbaa !9
  %1737 = load i64, ptr %49, align 8, !tbaa !9
  %1738 = sub nsw i64 %1736, %1737
  %1739 = load i64, ptr %42, align 8, !tbaa !9
  %1740 = add nsw i64 %1738, %1739
  %1741 = load i64, ptr %53, align 8, !tbaa !9
  %1742 = sdiv i64 %1740, %1741
  store i64 %1742, ptr %60, align 8, !tbaa !9
  %1743 = load i64, ptr %60, align 8, !tbaa !9
  %1744 = icmp sgt i64 %1743, 0
  br i1 %1744, label %1745, label %1779

1745:                                             ; preds = %1734
  %1746 = load ptr, ptr %20, align 8, !tbaa !5
  %1747 = load i64, ptr %42, align 8, !tbaa !9
  %1748 = load i64, ptr %49, align 8, !tbaa !9
  %1749 = load i64, ptr %53, align 8, !tbaa !9
  %1750 = add nsw i64 %1748, %1749
  %1751 = load i64, ptr %42, align 8, !tbaa !9
  %1752 = sub nsw i64 %1750, %1751
  %1753 = load i64, ptr %28, align 8, !tbaa !9
  %1754 = mul nsw i64 %1752, %1753
  %1755 = add nsw i64 %1747, %1754
  %1756 = getelementptr inbounds double, ptr %1746, i64 %1755
  %1757 = load ptr, ptr %20, align 8, !tbaa !5
  %1758 = load i64, ptr %42, align 8, !tbaa !9
  %1759 = add nsw i64 %1758, 1
  %1760 = load i64, ptr %49, align 8, !tbaa !9
  %1761 = load i64, ptr %53, align 8, !tbaa !9
  %1762 = add nsw i64 %1760, %1761
  %1763 = load i64, ptr %42, align 8, !tbaa !9
  %1764 = sub nsw i64 %1762, %1763
  %1765 = load i64, ptr %28, align 8, !tbaa !9
  %1766 = mul nsw i64 %1764, %1765
  %1767 = add nsw i64 %1759, %1766
  %1768 = getelementptr inbounds double, ptr %1757, i64 %1767
  %1769 = load ptr, ptr %26, align 8, !tbaa !5
  %1770 = load ptr, ptr %17, align 8, !tbaa !5
  %1771 = load i64, ptr %1770, align 8, !tbaa !9
  %1772 = load i64, ptr %49, align 8, !tbaa !9
  %1773 = add nsw i64 %1771, %1772
  %1774 = getelementptr inbounds double, ptr %1769, i64 %1773
  %1775 = load ptr, ptr %26, align 8, !tbaa !5
  %1776 = load i64, ptr %49, align 8, !tbaa !9
  %1777 = getelementptr inbounds double, ptr %1775, i64 %1776
  %1778 = call i32 @dlartv_(ptr noundef %60, ptr noundef %1756, ptr noundef %61, ptr noundef %1768, ptr noundef %61, ptr noundef %1774, ptr noundef %1777, ptr noundef %53)
  br label %1779

1779:                                             ; preds = %1745, %1734
  br label %1780

1780:                                             ; preds = %1779
  %1781 = load i64, ptr %42, align 8, !tbaa !9
  %1782 = add nsw i64 %1781, -1
  store i64 %1782, ptr %42, align 8, !tbaa !9
  br label %1730, !llvm.loop !31

1783:                                             ; preds = %1730
  %1784 = load i64, ptr %63, align 8, !tbaa !9
  %1785 = icmp ne i64 %1784, 0
  br i1 %1785, label %1786, label %1843

1786:                                             ; preds = %1783
  %1787 = load i64, ptr %48, align 8, !tbaa !9
  store i64 %1787, ptr %36, align 8, !tbaa !9
  %1788 = load i64, ptr %53, align 8, !tbaa !9
  store i64 %1788, ptr %35, align 8, !tbaa !9
  %1789 = load i64, ptr %49, align 8, !tbaa !9
  store i64 %1789, ptr %40, align 8, !tbaa !9
  br label %1790

1790:                                             ; preds = %1838, %1786
  %1791 = load i64, ptr %35, align 8, !tbaa !9
  %1792 = icmp slt i64 %1791, 0
  br i1 %1792, label %1793, label %1798

1793:                                             ; preds = %1790
  %1794 = load i64, ptr %40, align 8, !tbaa !9
  %1795 = load i64, ptr %36, align 8, !tbaa !9
  %1796 = icmp sge i64 %1794, %1795
  %1797 = zext i1 %1796 to i32
  br label %1803

1798:                                             ; preds = %1790
  %1799 = load i64, ptr %40, align 8, !tbaa !9
  %1800 = load i64, ptr %36, align 8, !tbaa !9
  %1801 = icmp sle i64 %1799, %1800
  %1802 = zext i1 %1801 to i32
  br label %1803

1803:                                             ; preds = %1798, %1793
  %1804 = phi i32 [ %1797, %1793 ], [ %1802, %1798 ]
  %1805 = icmp ne i32 %1804, 0
  br i1 %1805, label %1806, label %1842

1806:                                             ; preds = %1803
  %1807 = load ptr, ptr %17, align 8, !tbaa !5
  %1808 = load i64, ptr %1807, align 8, !tbaa !9
  %1809 = load i64, ptr %43, align 8, !tbaa !9
  %1810 = sub nsw i64 %1808, %1809
  store i64 %1810, ptr %37, align 8, !tbaa !9
  %1811 = load ptr, ptr %24, align 8, !tbaa !5
  %1812 = load i64, ptr %43, align 8, !tbaa !9
  %1813 = add nsw i64 %1812, 1
  %1814 = load i64, ptr %40, align 8, !tbaa !9
  %1815 = load i64, ptr %32, align 8, !tbaa !9
  %1816 = mul nsw i64 %1814, %1815
  %1817 = add nsw i64 %1813, %1816
  %1818 = getelementptr inbounds double, ptr %1811, i64 %1817
  %1819 = load ptr, ptr %24, align 8, !tbaa !5
  %1820 = load i64, ptr %43, align 8, !tbaa !9
  %1821 = add nsw i64 %1820, 1
  %1822 = load i64, ptr %40, align 8, !tbaa !9
  %1823 = add nsw i64 %1822, 1
  %1824 = load i64, ptr %32, align 8, !tbaa !9
  %1825 = mul nsw i64 %1823, %1824
  %1826 = add nsw i64 %1821, %1825
  %1827 = getelementptr inbounds double, ptr %1819, i64 %1826
  %1828 = load ptr, ptr %26, align 8, !tbaa !5
  %1829 = load ptr, ptr %17, align 8, !tbaa !5
  %1830 = load i64, ptr %1829, align 8, !tbaa !9
  %1831 = load i64, ptr %40, align 8, !tbaa !9
  %1832 = add nsw i64 %1830, %1831
  %1833 = getelementptr inbounds double, ptr %1828, i64 %1832
  %1834 = load ptr, ptr %26, align 8, !tbaa !5
  %1835 = load i64, ptr %40, align 8, !tbaa !9
  %1836 = getelementptr inbounds double, ptr %1834, i64 %1835
  %1837 = call i32 @f2c_drot(ptr noundef %37, ptr noundef %1818, ptr noundef @c__1, ptr noundef %1827, ptr noundef @c__1, ptr noundef %1833, ptr noundef %1836)
  br label %1838

1838:                                             ; preds = %1806
  %1839 = load i64, ptr %35, align 8, !tbaa !9
  %1840 = load i64, ptr %40, align 8, !tbaa !9
  %1841 = add nsw i64 %1840, %1839
  store i64 %1841, ptr %40, align 8, !tbaa !9
  br label %1790, !llvm.loop !32

1842:                                             ; preds = %1803
  br label %1843

1843:                                             ; preds = %1842, %1783
  br label %1844

1844:                                             ; preds = %1843
  %1845 = load i64, ptr %41, align 8, !tbaa !9
  %1846 = add nsw i64 %1845, -1
  store i64 %1846, ptr %41, align 8, !tbaa !9
  br label %1587, !llvm.loop !33

1847:                                             ; preds = %1587
  %1848 = load ptr, ptr %19, align 8, !tbaa !5
  %1849 = load i64, ptr %1848, align 8, !tbaa !9
  %1850 = sub nsw i64 %1849, 1
  store i64 %1850, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %41, align 8, !tbaa !9
  br label %1851

1851:                                             ; preds = %1937, %1847
  %1852 = load i64, ptr %41, align 8, !tbaa !9
  %1853 = load i64, ptr %35, align 8, !tbaa !9
  %1854 = icmp sle i64 %1852, %1853
  br i1 %1854, label %1855, label %1940

1855:                                             ; preds = %1851
  store i64 1, ptr %36, align 8, !tbaa !9
  %1856 = load i64, ptr %41, align 8, !tbaa !9
  %1857 = load i64, ptr %45, align 8, !tbaa !9
  %1858 = sub nsw i64 %1856, %1857
  %1859 = add nsw i64 %1858, 2
  store i64 %1859, ptr %37, align 8, !tbaa !9
  %1860 = load i64, ptr %39, align 8, !tbaa !9
  %1861 = load i64, ptr %41, align 8, !tbaa !9
  %1862 = sub nsw i64 %1860, %1861
  %1863 = sub nsw i64 %1862, 1
  %1864 = load i64, ptr %36, align 8, !tbaa !9
  %1865 = load i64, ptr %37, align 8, !tbaa !9
  %1866 = icmp sge i64 %1864, %1865
  br i1 %1866, label %1867, label %1869

1867:                                             ; preds = %1855
  %1868 = load i64, ptr %36, align 8, !tbaa !9
  br label %1871

1869:                                             ; preds = %1855
  %1870 = load i64, ptr %37, align 8, !tbaa !9
  br label %1871

1871:                                             ; preds = %1869, %1867
  %1872 = phi i64 [ %1868, %1867 ], [ %1870, %1869 ]
  %1873 = load i64, ptr %53, align 8, !tbaa !9
  %1874 = mul nsw i64 %1872, %1873
  %1875 = add nsw i64 %1863, %1874
  store i64 %1875, ptr %49, align 8, !tbaa !9
  %1876 = load ptr, ptr %19, align 8, !tbaa !5
  %1877 = load i64, ptr %1876, align 8, !tbaa !9
  %1878 = load i64, ptr %41, align 8, !tbaa !9
  %1879 = sub nsw i64 %1877, %1878
  store i64 %1879, ptr %42, align 8, !tbaa !9
  br label %1880

1880:                                             ; preds = %1933, %1871
  %1881 = load i64, ptr %42, align 8, !tbaa !9
  %1882 = icmp sge i64 %1881, 1
  br i1 %1882, label %1883, label %1936

1883:                                             ; preds = %1880
  %1884 = load ptr, ptr %17, align 8, !tbaa !5
  %1885 = load i64, ptr %1884, align 8, !tbaa !9
  %1886 = load i64, ptr %49, align 8, !tbaa !9
  %1887 = sub nsw i64 %1885, %1886
  %1888 = load i64, ptr %42, align 8, !tbaa !9
  %1889 = add nsw i64 %1887, %1888
  %1890 = load i64, ptr %53, align 8, !tbaa !9
  %1891 = sdiv i64 %1889, %1890
  store i64 %1891, ptr %60, align 8, !tbaa !9
  %1892 = load i64, ptr %60, align 8, !tbaa !9
  %1893 = icmp sgt i64 %1892, 0
  br i1 %1893, label %1894, label %1932

1894:                                             ; preds = %1883
  %1895 = load ptr, ptr %20, align 8, !tbaa !5
  %1896 = load i64, ptr %42, align 8, !tbaa !9
  %1897 = load i64, ptr %49, align 8, !tbaa !9
  %1898 = load i64, ptr %53, align 8, !tbaa !9
  %1899 = add nsw i64 %1897, %1898
  %1900 = load i64, ptr %42, align 8, !tbaa !9
  %1901 = sub nsw i64 %1899, %1900
  %1902 = load i64, ptr %28, align 8, !tbaa !9
  %1903 = mul nsw i64 %1901, %1902
  %1904 = add nsw i64 %1896, %1903
  %1905 = getelementptr inbounds double, ptr %1895, i64 %1904
  %1906 = load ptr, ptr %20, align 8, !tbaa !5
  %1907 = load i64, ptr %42, align 8, !tbaa !9
  %1908 = add nsw i64 %1907, 1
  %1909 = load i64, ptr %49, align 8, !tbaa !9
  %1910 = load i64, ptr %53, align 8, !tbaa !9
  %1911 = add nsw i64 %1909, %1910
  %1912 = load i64, ptr %42, align 8, !tbaa !9
  %1913 = sub nsw i64 %1911, %1912
  %1914 = load i64, ptr %28, align 8, !tbaa !9
  %1915 = mul nsw i64 %1913, %1914
  %1916 = add nsw i64 %1908, %1915
  %1917 = getelementptr inbounds double, ptr %1906, i64 %1916
  %1918 = load ptr, ptr %26, align 8, !tbaa !5
  %1919 = load ptr, ptr %17, align 8, !tbaa !5
  %1920 = load i64, ptr %1919, align 8, !tbaa !9
  %1921 = load i64, ptr %49, align 8, !tbaa !9
  %1922 = add nsw i64 %1920, %1921
  %1923 = load i64, ptr %43, align 8, !tbaa !9
  %1924 = sub nsw i64 %1922, %1923
  %1925 = getelementptr inbounds double, ptr %1918, i64 %1924
  %1926 = load ptr, ptr %26, align 8, !tbaa !5
  %1927 = load i64, ptr %49, align 8, !tbaa !9
  %1928 = load i64, ptr %43, align 8, !tbaa !9
  %1929 = sub nsw i64 %1927, %1928
  %1930 = getelementptr inbounds double, ptr %1926, i64 %1929
  %1931 = call i32 @dlartv_(ptr noundef %60, ptr noundef %1905, ptr noundef %61, ptr noundef %1917, ptr noundef %61, ptr noundef %1925, ptr noundef %1930, ptr noundef %53)
  br label %1932

1932:                                             ; preds = %1894, %1883
  br label %1933

1933:                                             ; preds = %1932
  %1934 = load i64, ptr %42, align 8, !tbaa !9
  %1935 = add nsw i64 %1934, -1
  store i64 %1935, ptr %42, align 8, !tbaa !9
  br label %1880, !llvm.loop !34

1936:                                             ; preds = %1880
  br label %1937

1937:                                             ; preds = %1936
  %1938 = load i64, ptr %41, align 8, !tbaa !9
  %1939 = add nsw i64 %1938, 1
  store i64 %1939, ptr %41, align 8, !tbaa !9
  br label %1851, !llvm.loop !35

1940:                                             ; preds = %1851
  %1941 = load ptr, ptr %19, align 8, !tbaa !5
  %1942 = load i64, ptr %1941, align 8, !tbaa !9
  %1943 = icmp sgt i64 %1942, 1
  br i1 %1943, label %1944, label %2000

1944:                                             ; preds = %1940
  %1945 = load i64, ptr %39, align 8, !tbaa !9
  %1946 = load ptr, ptr %19, align 8, !tbaa !5
  %1947 = load i64, ptr %1946, align 8, !tbaa !9
  %1948 = sub nsw i64 %1945, %1947
  %1949 = load ptr, ptr %18, align 8, !tbaa !5
  %1950 = load i64, ptr %1949, align 8, !tbaa !9
  %1951 = shl i64 %1950, 1
  %1952 = add nsw i64 %1948, %1951
  %1953 = add nsw i64 %1952, 1
  store i64 %1953, ptr %35, align 8, !tbaa !9
  %1954 = load ptr, ptr %17, align 8, !tbaa !5
  %1955 = load i64, ptr %1954, align 8, !tbaa !9
  %1956 = sub nsw i64 %1955, 1
  store i64 %1956, ptr %40, align 8, !tbaa !9
  br label %1957

1957:                                             ; preds = %1996, %1944
  %1958 = load i64, ptr %40, align 8, !tbaa !9
  %1959 = load i64, ptr %35, align 8, !tbaa !9
  %1960 = icmp sge i64 %1958, %1959
  br i1 %1960, label %1961, label %1999

1961:                                             ; preds = %1957
  %1962 = load ptr, ptr %26, align 8, !tbaa !5
  %1963 = load ptr, ptr %17, align 8, !tbaa !5
  %1964 = load i64, ptr %1963, align 8, !tbaa !9
  %1965 = load i64, ptr %40, align 8, !tbaa !9
  %1966 = add nsw i64 %1964, %1965
  %1967 = load ptr, ptr %18, align 8, !tbaa !5
  %1968 = load i64, ptr %1967, align 8, !tbaa !9
  %1969 = sub nsw i64 %1966, %1968
  %1970 = load i64, ptr %43, align 8, !tbaa !9
  %1971 = sub nsw i64 %1969, %1970
  %1972 = getelementptr inbounds double, ptr %1962, i64 %1971
  %1973 = load double, ptr %1972, align 8, !tbaa !11
  %1974 = load ptr, ptr %26, align 8, !tbaa !5
  %1975 = load ptr, ptr %17, align 8, !tbaa !5
  %1976 = load i64, ptr %1975, align 8, !tbaa !9
  %1977 = load i64, ptr %40, align 8, !tbaa !9
  %1978 = add nsw i64 %1976, %1977
  %1979 = load i64, ptr %43, align 8, !tbaa !9
  %1980 = sub nsw i64 %1978, %1979
  %1981 = getelementptr inbounds double, ptr %1974, i64 %1980
  store double %1973, ptr %1981, align 8, !tbaa !11
  %1982 = load ptr, ptr %26, align 8, !tbaa !5
  %1983 = load i64, ptr %40, align 8, !tbaa !9
  %1984 = load ptr, ptr %18, align 8, !tbaa !5
  %1985 = load i64, ptr %1984, align 8, !tbaa !9
  %1986 = sub nsw i64 %1983, %1985
  %1987 = load i64, ptr %43, align 8, !tbaa !9
  %1988 = sub nsw i64 %1986, %1987
  %1989 = getelementptr inbounds double, ptr %1982, i64 %1988
  %1990 = load double, ptr %1989, align 8, !tbaa !11
  %1991 = load ptr, ptr %26, align 8, !tbaa !5
  %1992 = load i64, ptr %40, align 8, !tbaa !9
  %1993 = load i64, ptr %43, align 8, !tbaa !9
  %1994 = sub nsw i64 %1992, %1993
  %1995 = getelementptr inbounds double, ptr %1991, i64 %1994
  store double %1990, ptr %1995, align 8, !tbaa !11
  br label %1996

1996:                                             ; preds = %1961
  %1997 = load i64, ptr %40, align 8, !tbaa !9
  %1998 = add nsw i64 %1997, -1
  store i64 %1998, ptr %40, align 8, !tbaa !9
  br label %1957, !llvm.loop !36

1999:                                             ; preds = %1957
  br label %2000

2000:                                             ; preds = %1999, %1940
  br label %3697

2001:                                             ; preds = %297
  %2002 = load i64, ptr %64, align 8, !tbaa !9
  %2003 = icmp ne i64 %2002, 0
  br i1 %2003, label %2004, label %2404

2004:                                             ; preds = %2001
  %2005 = load ptr, ptr %22, align 8, !tbaa !5
  %2006 = load i64, ptr %39, align 8, !tbaa !9
  %2007 = load i64, ptr %30, align 8, !tbaa !9
  %2008 = mul nsw i64 %2006, %2007
  %2009 = add nsw i64 %2008, 1
  %2010 = getelementptr inbounds double, ptr %2005, i64 %2009
  %2011 = load double, ptr %2010, align 8, !tbaa !11
  store double %2011, ptr %58, align 8, !tbaa !11
  %2012 = load i64, ptr %46, align 8, !tbaa !9
  store i64 %2012, ptr %35, align 8, !tbaa !9
  %2013 = load i64, ptr %39, align 8, !tbaa !9
  store i64 %2013, ptr %40, align 8, !tbaa !9
  br label %2014

2014:                                             ; preds = %2032, %2004
  %2015 = load i64, ptr %40, align 8, !tbaa !9
  %2016 = load i64, ptr %35, align 8, !tbaa !9
  %2017 = icmp sle i64 %2015, %2016
  br i1 %2017, label %2018, label %2035

2018:                                             ; preds = %2014
  %2019 = load double, ptr %58, align 8, !tbaa !11
  %2020 = load ptr, ptr %20, align 8, !tbaa !5
  %2021 = load i64, ptr %40, align 8, !tbaa !9
  %2022 = load i64, ptr %39, align 8, !tbaa !9
  %2023 = sub nsw i64 %2021, %2022
  %2024 = add nsw i64 %2023, 1
  %2025 = load i64, ptr %39, align 8, !tbaa !9
  %2026 = load i64, ptr %28, align 8, !tbaa !9
  %2027 = mul nsw i64 %2025, %2026
  %2028 = add nsw i64 %2024, %2027
  %2029 = getelementptr inbounds double, ptr %2020, i64 %2028
  %2030 = load double, ptr %2029, align 8, !tbaa !11
  %2031 = fdiv double %2030, %2019
  store double %2031, ptr %2029, align 8, !tbaa !11
  br label %2032

2032:                                             ; preds = %2018
  %2033 = load i64, ptr %40, align 8, !tbaa !9
  %2034 = add nsw i64 %2033, 1
  store i64 %2034, ptr %40, align 8, !tbaa !9
  br label %2014, !llvm.loop !37

2035:                                             ; preds = %2014
  store i64 1, ptr %35, align 8, !tbaa !9
  %2036 = load i64, ptr %39, align 8, !tbaa !9
  %2037 = load ptr, ptr %18, align 8, !tbaa !5
  %2038 = load i64, ptr %2037, align 8, !tbaa !9
  %2039 = sub nsw i64 %2036, %2038
  store i64 %2039, ptr %36, align 8, !tbaa !9
  %2040 = load i64, ptr %39, align 8, !tbaa !9
  store i64 %2040, ptr %37, align 8, !tbaa !9
  %2041 = load i64, ptr %35, align 8, !tbaa !9
  %2042 = load i64, ptr %36, align 8, !tbaa !9
  %2043 = icmp sge i64 %2041, %2042
  br i1 %2043, label %2044, label %2046

2044:                                             ; preds = %2035
  %2045 = load i64, ptr %35, align 8, !tbaa !9
  br label %2048

2046:                                             ; preds = %2035
  %2047 = load i64, ptr %36, align 8, !tbaa !9
  br label %2048

2048:                                             ; preds = %2046, %2044
  %2049 = phi i64 [ %2045, %2044 ], [ %2047, %2046 ]
  store i64 %2049, ptr %40, align 8, !tbaa !9
  br label %2050

2050:                                             ; preds = %2068, %2048
  %2051 = load i64, ptr %40, align 8, !tbaa !9
  %2052 = load i64, ptr %37, align 8, !tbaa !9
  %2053 = icmp sle i64 %2051, %2052
  br i1 %2053, label %2054, label %2071

2054:                                             ; preds = %2050
  %2055 = load double, ptr %58, align 8, !tbaa !11
  %2056 = load ptr, ptr %20, align 8, !tbaa !5
  %2057 = load i64, ptr %39, align 8, !tbaa !9
  %2058 = load i64, ptr %40, align 8, !tbaa !9
  %2059 = sub nsw i64 %2057, %2058
  %2060 = add nsw i64 %2059, 1
  %2061 = load i64, ptr %40, align 8, !tbaa !9
  %2062 = load i64, ptr %28, align 8, !tbaa !9
  %2063 = mul nsw i64 %2061, %2062
  %2064 = add nsw i64 %2060, %2063
  %2065 = getelementptr inbounds double, ptr %2056, i64 %2064
  %2066 = load double, ptr %2065, align 8, !tbaa !11
  %2067 = fdiv double %2066, %2055
  store double %2067, ptr %2065, align 8, !tbaa !11
  br label %2068

2068:                                             ; preds = %2054
  %2069 = load i64, ptr %40, align 8, !tbaa !9
  %2070 = add nsw i64 %2069, 1
  store i64 %2070, ptr %40, align 8, !tbaa !9
  br label %2050, !llvm.loop !38

2071:                                             ; preds = %2050
  %2072 = load i64, ptr %39, align 8, !tbaa !9
  %2073 = sub nsw i64 %2072, 1
  store i64 %2073, ptr %37, align 8, !tbaa !9
  %2074 = load i64, ptr %39, align 8, !tbaa !9
  %2075 = load i64, ptr %59, align 8, !tbaa !9
  %2076 = sub nsw i64 %2074, %2075
  store i64 %2076, ptr %41, align 8, !tbaa !9
  br label %2077

2077:                                             ; preds = %2256, %2071
  %2078 = load i64, ptr %41, align 8, !tbaa !9
  %2079 = load i64, ptr %37, align 8, !tbaa !9
  %2080 = icmp sle i64 %2078, %2079
  br i1 %2080, label %2081, label %2259

2081:                                             ; preds = %2077
  %2082 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %2082, ptr %35, align 8, !tbaa !9
  %2083 = load i64, ptr %39, align 8, !tbaa !9
  %2084 = load i64, ptr %59, align 8, !tbaa !9
  %2085 = sub nsw i64 %2083, %2084
  store i64 %2085, ptr %40, align 8, !tbaa !9
  br label %2086

2086:                                             ; preds = %2191, %2081
  %2087 = load i64, ptr %40, align 8, !tbaa !9
  %2088 = load i64, ptr %35, align 8, !tbaa !9
  %2089 = icmp sle i64 %2087, %2088
  br i1 %2089, label %2090, label %2194

2090:                                             ; preds = %2086
  %2091 = load ptr, ptr %20, align 8, !tbaa !5
  %2092 = load i64, ptr %41, align 8, !tbaa !9
  %2093 = load i64, ptr %40, align 8, !tbaa !9
  %2094 = sub nsw i64 %2092, %2093
  %2095 = add nsw i64 %2094, 1
  %2096 = load i64, ptr %40, align 8, !tbaa !9
  %2097 = load i64, ptr %28, align 8, !tbaa !9
  %2098 = mul nsw i64 %2096, %2097
  %2099 = add nsw i64 %2095, %2098
  %2100 = getelementptr inbounds double, ptr %2091, i64 %2099
  %2101 = load double, ptr %2100, align 8, !tbaa !11
  %2102 = load ptr, ptr %22, align 8, !tbaa !5
  %2103 = load i64, ptr %39, align 8, !tbaa !9
  %2104 = load i64, ptr %40, align 8, !tbaa !9
  %2105 = sub nsw i64 %2103, %2104
  %2106 = add nsw i64 %2105, 1
  %2107 = load i64, ptr %40, align 8, !tbaa !9
  %2108 = load i64, ptr %30, align 8, !tbaa !9
  %2109 = mul nsw i64 %2107, %2108
  %2110 = add nsw i64 %2106, %2109
  %2111 = getelementptr inbounds double, ptr %2102, i64 %2110
  %2112 = load double, ptr %2111, align 8, !tbaa !11
  %2113 = load ptr, ptr %20, align 8, !tbaa !5
  %2114 = load i64, ptr %39, align 8, !tbaa !9
  %2115 = load i64, ptr %41, align 8, !tbaa !9
  %2116 = sub nsw i64 %2114, %2115
  %2117 = add nsw i64 %2116, 1
  %2118 = load i64, ptr %41, align 8, !tbaa !9
  %2119 = load i64, ptr %28, align 8, !tbaa !9
  %2120 = mul nsw i64 %2118, %2119
  %2121 = add nsw i64 %2117, %2120
  %2122 = getelementptr inbounds double, ptr %2113, i64 %2121
  %2123 = load double, ptr %2122, align 8, !tbaa !11
  %2124 = fneg double %2112
  %2125 = call double @llvm.fmuladd.f64(double %2124, double %2123, double %2101)
  %2126 = load ptr, ptr %22, align 8, !tbaa !5
  %2127 = load i64, ptr %39, align 8, !tbaa !9
  %2128 = load i64, ptr %41, align 8, !tbaa !9
  %2129 = sub nsw i64 %2127, %2128
  %2130 = add nsw i64 %2129, 1
  %2131 = load i64, ptr %41, align 8, !tbaa !9
  %2132 = load i64, ptr %30, align 8, !tbaa !9
  %2133 = mul nsw i64 %2131, %2132
  %2134 = add nsw i64 %2130, %2133
  %2135 = getelementptr inbounds double, ptr %2126, i64 %2134
  %2136 = load double, ptr %2135, align 8, !tbaa !11
  %2137 = load ptr, ptr %20, align 8, !tbaa !5
  %2138 = load i64, ptr %39, align 8, !tbaa !9
  %2139 = load i64, ptr %40, align 8, !tbaa !9
  %2140 = sub nsw i64 %2138, %2139
  %2141 = add nsw i64 %2140, 1
  %2142 = load i64, ptr %40, align 8, !tbaa !9
  %2143 = load i64, ptr %28, align 8, !tbaa !9
  %2144 = mul nsw i64 %2142, %2143
  %2145 = add nsw i64 %2141, %2144
  %2146 = getelementptr inbounds double, ptr %2137, i64 %2145
  %2147 = load double, ptr %2146, align 8, !tbaa !11
  %2148 = fneg double %2136
  %2149 = call double @llvm.fmuladd.f64(double %2148, double %2147, double %2125)
  %2150 = load ptr, ptr %20, align 8, !tbaa !5
  %2151 = load i64, ptr %39, align 8, !tbaa !9
  %2152 = load i64, ptr %28, align 8, !tbaa !9
  %2153 = mul nsw i64 %2151, %2152
  %2154 = add nsw i64 %2153, 1
  %2155 = getelementptr inbounds double, ptr %2150, i64 %2154
  %2156 = load double, ptr %2155, align 8, !tbaa !11
  %2157 = load ptr, ptr %22, align 8, !tbaa !5
  %2158 = load i64, ptr %39, align 8, !tbaa !9
  %2159 = load i64, ptr %40, align 8, !tbaa !9
  %2160 = sub nsw i64 %2158, %2159
  %2161 = add nsw i64 %2160, 1
  %2162 = load i64, ptr %40, align 8, !tbaa !9
  %2163 = load i64, ptr %30, align 8, !tbaa !9
  %2164 = mul nsw i64 %2162, %2163
  %2165 = add nsw i64 %2161, %2164
  %2166 = getelementptr inbounds double, ptr %2157, i64 %2165
  %2167 = load double, ptr %2166, align 8, !tbaa !11
  %2168 = fmul double %2156, %2167
  %2169 = load ptr, ptr %22, align 8, !tbaa !5
  %2170 = load i64, ptr %39, align 8, !tbaa !9
  %2171 = load i64, ptr %41, align 8, !tbaa !9
  %2172 = sub nsw i64 %2170, %2171
  %2173 = add nsw i64 %2172, 1
  %2174 = load i64, ptr %41, align 8, !tbaa !9
  %2175 = load i64, ptr %30, align 8, !tbaa !9
  %2176 = mul nsw i64 %2174, %2175
  %2177 = add nsw i64 %2173, %2176
  %2178 = getelementptr inbounds double, ptr %2169, i64 %2177
  %2179 = load double, ptr %2178, align 8, !tbaa !11
  %2180 = call double @llvm.fmuladd.f64(double %2168, double %2179, double %2149)
  %2181 = load ptr, ptr %20, align 8, !tbaa !5
  %2182 = load i64, ptr %41, align 8, !tbaa !9
  %2183 = load i64, ptr %40, align 8, !tbaa !9
  %2184 = sub nsw i64 %2182, %2183
  %2185 = add nsw i64 %2184, 1
  %2186 = load i64, ptr %40, align 8, !tbaa !9
  %2187 = load i64, ptr %28, align 8, !tbaa !9
  %2188 = mul nsw i64 %2186, %2187
  %2189 = add nsw i64 %2185, %2188
  %2190 = getelementptr inbounds double, ptr %2181, i64 %2189
  store double %2180, ptr %2190, align 8, !tbaa !11
  br label %2191

2191:                                             ; preds = %2090
  %2192 = load i64, ptr %40, align 8, !tbaa !9
  %2193 = add nsw i64 %2192, 1
  store i64 %2193, ptr %40, align 8, !tbaa !9
  br label %2086, !llvm.loop !39

2194:                                             ; preds = %2086
  store i64 1, ptr %35, align 8, !tbaa !9
  %2195 = load i64, ptr %39, align 8, !tbaa !9
  %2196 = load ptr, ptr %18, align 8, !tbaa !5
  %2197 = load i64, ptr %2196, align 8, !tbaa !9
  %2198 = sub nsw i64 %2195, %2197
  store i64 %2198, ptr %36, align 8, !tbaa !9
  %2199 = load i64, ptr %39, align 8, !tbaa !9
  %2200 = load i64, ptr %59, align 8, !tbaa !9
  %2201 = sub nsw i64 %2199, %2200
  %2202 = sub nsw i64 %2201, 1
  store i64 %2202, ptr %34, align 8, !tbaa !9
  %2203 = load i64, ptr %35, align 8, !tbaa !9
  %2204 = load i64, ptr %36, align 8, !tbaa !9
  %2205 = icmp sge i64 %2203, %2204
  br i1 %2205, label %2206, label %2208

2206:                                             ; preds = %2194
  %2207 = load i64, ptr %35, align 8, !tbaa !9
  br label %2210

2208:                                             ; preds = %2194
  %2209 = load i64, ptr %36, align 8, !tbaa !9
  br label %2210

2210:                                             ; preds = %2208, %2206
  %2211 = phi i64 [ %2207, %2206 ], [ %2209, %2208 ]
  store i64 %2211, ptr %40, align 8, !tbaa !9
  br label %2212

2212:                                             ; preds = %2252, %2210
  %2213 = load i64, ptr %40, align 8, !tbaa !9
  %2214 = load i64, ptr %34, align 8, !tbaa !9
  %2215 = icmp sle i64 %2213, %2214
  br i1 %2215, label %2216, label %2255

2216:                                             ; preds = %2212
  %2217 = load ptr, ptr %22, align 8, !tbaa !5
  %2218 = load i64, ptr %39, align 8, !tbaa !9
  %2219 = load i64, ptr %41, align 8, !tbaa !9
  %2220 = sub nsw i64 %2218, %2219
  %2221 = add nsw i64 %2220, 1
  %2222 = load i64, ptr %41, align 8, !tbaa !9
  %2223 = load i64, ptr %30, align 8, !tbaa !9
  %2224 = mul nsw i64 %2222, %2223
  %2225 = add nsw i64 %2221, %2224
  %2226 = getelementptr inbounds double, ptr %2217, i64 %2225
  %2227 = load double, ptr %2226, align 8, !tbaa !11
  %2228 = load ptr, ptr %20, align 8, !tbaa !5
  %2229 = load i64, ptr %39, align 8, !tbaa !9
  %2230 = load i64, ptr %40, align 8, !tbaa !9
  %2231 = sub nsw i64 %2229, %2230
  %2232 = add nsw i64 %2231, 1
  %2233 = load i64, ptr %40, align 8, !tbaa !9
  %2234 = load i64, ptr %28, align 8, !tbaa !9
  %2235 = mul nsw i64 %2233, %2234
  %2236 = add nsw i64 %2232, %2235
  %2237 = getelementptr inbounds double, ptr %2228, i64 %2236
  %2238 = load double, ptr %2237, align 8, !tbaa !11
  %2239 = load ptr, ptr %20, align 8, !tbaa !5
  %2240 = load i64, ptr %41, align 8, !tbaa !9
  %2241 = load i64, ptr %40, align 8, !tbaa !9
  %2242 = sub nsw i64 %2240, %2241
  %2243 = add nsw i64 %2242, 1
  %2244 = load i64, ptr %40, align 8, !tbaa !9
  %2245 = load i64, ptr %28, align 8, !tbaa !9
  %2246 = mul nsw i64 %2244, %2245
  %2247 = add nsw i64 %2243, %2246
  %2248 = getelementptr inbounds double, ptr %2239, i64 %2247
  %2249 = load double, ptr %2248, align 8, !tbaa !11
  %2250 = fneg double %2227
  %2251 = call double @llvm.fmuladd.f64(double %2250, double %2238, double %2249)
  store double %2251, ptr %2248, align 8, !tbaa !11
  br label %2252

2252:                                             ; preds = %2216
  %2253 = load i64, ptr %40, align 8, !tbaa !9
  %2254 = add nsw i64 %2253, 1
  store i64 %2254, ptr %40, align 8, !tbaa !9
  br label %2212, !llvm.loop !40

2255:                                             ; preds = %2212
  br label %2256

2256:                                             ; preds = %2255
  %2257 = load i64, ptr %41, align 8, !tbaa !9
  %2258 = add nsw i64 %2257, 1
  store i64 %2258, ptr %41, align 8, !tbaa !9
  br label %2077, !llvm.loop !41

2259:                                             ; preds = %2077
  %2260 = load i64, ptr %46, align 8, !tbaa !9
  store i64 %2260, ptr %37, align 8, !tbaa !9
  %2261 = load i64, ptr %39, align 8, !tbaa !9
  store i64 %2261, ptr %40, align 8, !tbaa !9
  br label %2262

2262:                                             ; preds = %2329, %2259
  %2263 = load i64, ptr %40, align 8, !tbaa !9
  %2264 = load i64, ptr %37, align 8, !tbaa !9
  %2265 = icmp sle i64 %2263, %2264
  br i1 %2265, label %2266, label %2332

2266:                                             ; preds = %2262
  %2267 = load i64, ptr %40, align 8, !tbaa !9
  %2268 = load ptr, ptr %18, align 8, !tbaa !5
  %2269 = load i64, ptr %2268, align 8, !tbaa !9
  %2270 = sub nsw i64 %2267, %2269
  store i64 %2270, ptr %34, align 8, !tbaa !9
  %2271 = load i64, ptr %39, align 8, !tbaa !9
  %2272 = load i64, ptr %59, align 8, !tbaa !9
  %2273 = sub nsw i64 %2271, %2272
  store i64 %2273, ptr %35, align 8, !tbaa !9
  %2274 = load i64, ptr %39, align 8, !tbaa !9
  %2275 = sub nsw i64 %2274, 1
  store i64 %2275, ptr %36, align 8, !tbaa !9
  %2276 = load i64, ptr %34, align 8, !tbaa !9
  %2277 = load i64, ptr %35, align 8, !tbaa !9
  %2278 = icmp sge i64 %2276, %2277
  br i1 %2278, label %2279, label %2281

2279:                                             ; preds = %2266
  %2280 = load i64, ptr %34, align 8, !tbaa !9
  br label %2283

2281:                                             ; preds = %2266
  %2282 = load i64, ptr %35, align 8, !tbaa !9
  br label %2283

2283:                                             ; preds = %2281, %2279
  %2284 = phi i64 [ %2280, %2279 ], [ %2282, %2281 ]
  store i64 %2284, ptr %41, align 8, !tbaa !9
  br label %2285

2285:                                             ; preds = %2325, %2283
  %2286 = load i64, ptr %41, align 8, !tbaa !9
  %2287 = load i64, ptr %36, align 8, !tbaa !9
  %2288 = icmp sle i64 %2286, %2287
  br i1 %2288, label %2289, label %2328

2289:                                             ; preds = %2285
  %2290 = load ptr, ptr %22, align 8, !tbaa !5
  %2291 = load i64, ptr %39, align 8, !tbaa !9
  %2292 = load i64, ptr %41, align 8, !tbaa !9
  %2293 = sub nsw i64 %2291, %2292
  %2294 = add nsw i64 %2293, 1
  %2295 = load i64, ptr %41, align 8, !tbaa !9
  %2296 = load i64, ptr %30, align 8, !tbaa !9
  %2297 = mul nsw i64 %2295, %2296
  %2298 = add nsw i64 %2294, %2297
  %2299 = getelementptr inbounds double, ptr %2290, i64 %2298
  %2300 = load double, ptr %2299, align 8, !tbaa !11
  %2301 = load ptr, ptr %20, align 8, !tbaa !5
  %2302 = load i64, ptr %40, align 8, !tbaa !9
  %2303 = load i64, ptr %39, align 8, !tbaa !9
  %2304 = sub nsw i64 %2302, %2303
  %2305 = add nsw i64 %2304, 1
  %2306 = load i64, ptr %39, align 8, !tbaa !9
  %2307 = load i64, ptr %28, align 8, !tbaa !9
  %2308 = mul nsw i64 %2306, %2307
  %2309 = add nsw i64 %2305, %2308
  %2310 = getelementptr inbounds double, ptr %2301, i64 %2309
  %2311 = load double, ptr %2310, align 8, !tbaa !11
  %2312 = load ptr, ptr %20, align 8, !tbaa !5
  %2313 = load i64, ptr %40, align 8, !tbaa !9
  %2314 = load i64, ptr %41, align 8, !tbaa !9
  %2315 = sub nsw i64 %2313, %2314
  %2316 = add nsw i64 %2315, 1
  %2317 = load i64, ptr %41, align 8, !tbaa !9
  %2318 = load i64, ptr %28, align 8, !tbaa !9
  %2319 = mul nsw i64 %2317, %2318
  %2320 = add nsw i64 %2316, %2319
  %2321 = getelementptr inbounds double, ptr %2312, i64 %2320
  %2322 = load double, ptr %2321, align 8, !tbaa !11
  %2323 = fneg double %2300
  %2324 = call double @llvm.fmuladd.f64(double %2323, double %2311, double %2322)
  store double %2324, ptr %2321, align 8, !tbaa !11
  br label %2325

2325:                                             ; preds = %2289
  %2326 = load i64, ptr %41, align 8, !tbaa !9
  %2327 = add nsw i64 %2326, 1
  store i64 %2327, ptr %41, align 8, !tbaa !9
  br label %2285, !llvm.loop !42

2328:                                             ; preds = %2285
  br label %2329

2329:                                             ; preds = %2328
  %2330 = load i64, ptr %40, align 8, !tbaa !9
  %2331 = add nsw i64 %2330, 1
  store i64 %2331, ptr %40, align 8, !tbaa !9
  br label %2262, !llvm.loop !43

2332:                                             ; preds = %2262
  %2333 = load i64, ptr %63, align 8, !tbaa !9
  %2334 = icmp ne i64 %2333, 0
  br i1 %2334, label %2335, label %2392

2335:                                             ; preds = %2332
  %2336 = load ptr, ptr %17, align 8, !tbaa !5
  %2337 = load i64, ptr %2336, align 8, !tbaa !9
  %2338 = load i64, ptr %43, align 8, !tbaa !9
  %2339 = sub nsw i64 %2337, %2338
  store i64 %2339, ptr %37, align 8, !tbaa !9
  %2340 = load double, ptr %58, align 8, !tbaa !11
  %2341 = fdiv double 1.000000e+00, %2340
  store double %2341, ptr %38, align 8, !tbaa !11
  %2342 = load ptr, ptr %24, align 8, !tbaa !5
  %2343 = load i64, ptr %43, align 8, !tbaa !9
  %2344 = add nsw i64 %2343, 1
  %2345 = load i64, ptr %39, align 8, !tbaa !9
  %2346 = load i64, ptr %32, align 8, !tbaa !9
  %2347 = mul nsw i64 %2345, %2346
  %2348 = add nsw i64 %2344, %2347
  %2349 = getelementptr inbounds double, ptr %2342, i64 %2348
  %2350 = call i32 @f2c_dscal(ptr noundef %37, ptr noundef %38, ptr noundef %2349, ptr noundef @c__1)
  %2351 = load i64, ptr %59, align 8, !tbaa !9
  %2352 = icmp sgt i64 %2351, 0
  br i1 %2352, label %2353, label %2391

2353:                                             ; preds = %2335
  %2354 = load ptr, ptr %17, align 8, !tbaa !5
  %2355 = load i64, ptr %2354, align 8, !tbaa !9
  %2356 = load i64, ptr %43, align 8, !tbaa !9
  %2357 = sub nsw i64 %2355, %2356
  store i64 %2357, ptr %37, align 8, !tbaa !9
  %2358 = load ptr, ptr %23, align 8, !tbaa !5
  %2359 = load i64, ptr %2358, align 8, !tbaa !9
  %2360 = sub nsw i64 %2359, 1
  store i64 %2360, ptr %36, align 8, !tbaa !9
  %2361 = load ptr, ptr %24, align 8, !tbaa !5
  %2362 = load i64, ptr %43, align 8, !tbaa !9
  %2363 = add nsw i64 %2362, 1
  %2364 = load i64, ptr %39, align 8, !tbaa !9
  %2365 = load i64, ptr %32, align 8, !tbaa !9
  %2366 = mul nsw i64 %2364, %2365
  %2367 = add nsw i64 %2363, %2366
  %2368 = getelementptr inbounds double, ptr %2361, i64 %2367
  %2369 = load ptr, ptr %22, align 8, !tbaa !5
  %2370 = load i64, ptr %59, align 8, !tbaa !9
  %2371 = add nsw i64 %2370, 1
  %2372 = load i64, ptr %39, align 8, !tbaa !9
  %2373 = load i64, ptr %59, align 8, !tbaa !9
  %2374 = sub nsw i64 %2372, %2373
  %2375 = load i64, ptr %30, align 8, !tbaa !9
  %2376 = mul nsw i64 %2374, %2375
  %2377 = add nsw i64 %2371, %2376
  %2378 = getelementptr inbounds double, ptr %2369, i64 %2377
  %2379 = load ptr, ptr %24, align 8, !tbaa !5
  %2380 = load i64, ptr %43, align 8, !tbaa !9
  %2381 = add nsw i64 %2380, 1
  %2382 = load i64, ptr %39, align 8, !tbaa !9
  %2383 = load i64, ptr %59, align 8, !tbaa !9
  %2384 = sub nsw i64 %2382, %2383
  %2385 = load i64, ptr %32, align 8, !tbaa !9
  %2386 = mul nsw i64 %2384, %2385
  %2387 = add nsw i64 %2381, %2386
  %2388 = getelementptr inbounds double, ptr %2379, i64 %2387
  %2389 = load ptr, ptr %25, align 8, !tbaa !5
  %2390 = call i32 @f2c_dger(ptr noundef %37, ptr noundef %59, ptr noundef @c_b20, ptr noundef %2368, ptr noundef @c__1, ptr noundef %2378, ptr noundef %36, ptr noundef %2388, ptr noundef %2389)
  br label %2391

2391:                                             ; preds = %2353, %2335
  br label %2392

2392:                                             ; preds = %2391, %2332
  %2393 = load ptr, ptr %20, align 8, !tbaa !5
  %2394 = load i64, ptr %46, align 8, !tbaa !9
  %2395 = load i64, ptr %39, align 8, !tbaa !9
  %2396 = sub nsw i64 %2394, %2395
  %2397 = add nsw i64 %2396, 1
  %2398 = load i64, ptr %39, align 8, !tbaa !9
  %2399 = load i64, ptr %28, align 8, !tbaa !9
  %2400 = mul nsw i64 %2398, %2399
  %2401 = add nsw i64 %2397, %2400
  %2402 = getelementptr inbounds double, ptr %2393, i64 %2401
  %2403 = load double, ptr %2402, align 8, !tbaa !11
  store double %2403, ptr %55, align 8, !tbaa !11
  br label %2404

2404:                                             ; preds = %2392, %2001
  %2405 = load ptr, ptr %19, align 8, !tbaa !5
  %2406 = load i64, ptr %2405, align 8, !tbaa !9
  %2407 = sub nsw i64 %2406, 1
  store i64 %2407, ptr %37, align 8, !tbaa !9
  store i64 1, ptr %41, align 8, !tbaa !9
  br label %2408

2408:                                             ; preds = %2955, %2404
  %2409 = load i64, ptr %41, align 8, !tbaa !9
  %2410 = load i64, ptr %37, align 8, !tbaa !9
  %2411 = icmp sle i64 %2409, %2410
  br i1 %2411, label %2412, label %2958

2412:                                             ; preds = %2408
  %2413 = load i64, ptr %64, align 8, !tbaa !9
  %2414 = icmp ne i64 %2413, 0
  br i1 %2414, label %2415, label %2571

2415:                                             ; preds = %2412
  %2416 = load i64, ptr %39, align 8, !tbaa !9
  %2417 = load i64, ptr %41, align 8, !tbaa !9
  %2418 = sub nsw i64 %2416, %2417
  %2419 = load ptr, ptr %18, align 8, !tbaa !5
  %2420 = load i64, ptr %2419, align 8, !tbaa !9
  %2421 = add nsw i64 %2418, %2420
  %2422 = load ptr, ptr %17, align 8, !tbaa !5
  %2423 = load i64, ptr %2422, align 8, !tbaa !9
  %2424 = icmp slt i64 %2421, %2423
  br i1 %2424, label %2425, label %2570

2425:                                             ; preds = %2415
  %2426 = load i64, ptr %39, align 8, !tbaa !9
  %2427 = load i64, ptr %41, align 8, !tbaa !9
  %2428 = sub nsw i64 %2426, %2427
  %2429 = icmp sgt i64 %2428, 1
  br i1 %2429, label %2430, label %2570

2430:                                             ; preds = %2425
  %2431 = load ptr, ptr %20, align 8, !tbaa !5
  %2432 = load i64, ptr %53, align 8, !tbaa !9
  %2433 = load i64, ptr %41, align 8, !tbaa !9
  %2434 = sub nsw i64 %2432, %2433
  %2435 = load i64, ptr %39, align 8, !tbaa !9
  %2436 = load i64, ptr %28, align 8, !tbaa !9
  %2437 = mul nsw i64 %2435, %2436
  %2438 = add nsw i64 %2434, %2437
  %2439 = getelementptr inbounds double, ptr %2431, i64 %2438
  %2440 = load ptr, ptr %26, align 8, !tbaa !5
  %2441 = load ptr, ptr %17, align 8, !tbaa !5
  %2442 = load i64, ptr %2441, align 8, !tbaa !9
  %2443 = load i64, ptr %39, align 8, !tbaa !9
  %2444 = add nsw i64 %2442, %2443
  %2445 = load i64, ptr %41, align 8, !tbaa !9
  %2446 = sub nsw i64 %2444, %2445
  %2447 = load ptr, ptr %18, align 8, !tbaa !5
  %2448 = load i64, ptr %2447, align 8, !tbaa !9
  %2449 = add nsw i64 %2446, %2448
  %2450 = load i64, ptr %43, align 8, !tbaa !9
  %2451 = sub nsw i64 %2449, %2450
  %2452 = getelementptr inbounds double, ptr %2440, i64 %2451
  %2453 = load ptr, ptr %26, align 8, !tbaa !5
  %2454 = load i64, ptr %39, align 8, !tbaa !9
  %2455 = load i64, ptr %41, align 8, !tbaa !9
  %2456 = sub nsw i64 %2454, %2455
  %2457 = load ptr, ptr %18, align 8, !tbaa !5
  %2458 = load i64, ptr %2457, align 8, !tbaa !9
  %2459 = add nsw i64 %2456, %2458
  %2460 = load i64, ptr %43, align 8, !tbaa !9
  %2461 = sub nsw i64 %2459, %2460
  %2462 = getelementptr inbounds double, ptr %2453, i64 %2461
  %2463 = call i32 @dlartg_(ptr noundef %2439, ptr noundef %55, ptr noundef %2452, ptr noundef %2462, ptr noundef %50)
  %2464 = load ptr, ptr %22, align 8, !tbaa !5
  %2465 = load i64, ptr %41, align 8, !tbaa !9
  %2466 = add nsw i64 %2465, 1
  %2467 = load i64, ptr %39, align 8, !tbaa !9
  %2468 = load i64, ptr %41, align 8, !tbaa !9
  %2469 = sub nsw i64 %2467, %2468
  %2470 = load i64, ptr %30, align 8, !tbaa !9
  %2471 = mul nsw i64 %2469, %2470
  %2472 = add nsw i64 %2466, %2471
  %2473 = getelementptr inbounds double, ptr %2464, i64 %2472
  %2474 = load double, ptr %2473, align 8, !tbaa !11
  %2475 = fneg double %2474
  %2476 = load double, ptr %55, align 8, !tbaa !11
  %2477 = fmul double %2475, %2476
  store double %2477, ptr %44, align 8, !tbaa !11
  %2478 = load ptr, ptr %26, align 8, !tbaa !5
  %2479 = load ptr, ptr %17, align 8, !tbaa !5
  %2480 = load i64, ptr %2479, align 8, !tbaa !9
  %2481 = load i64, ptr %39, align 8, !tbaa !9
  %2482 = add nsw i64 %2480, %2481
  %2483 = load i64, ptr %41, align 8, !tbaa !9
  %2484 = sub nsw i64 %2482, %2483
  %2485 = load ptr, ptr %18, align 8, !tbaa !5
  %2486 = load i64, ptr %2485, align 8, !tbaa !9
  %2487 = add nsw i64 %2484, %2486
  %2488 = load i64, ptr %43, align 8, !tbaa !9
  %2489 = sub nsw i64 %2487, %2488
  %2490 = getelementptr inbounds double, ptr %2478, i64 %2489
  %2491 = load double, ptr %2490, align 8, !tbaa !11
  %2492 = load double, ptr %44, align 8, !tbaa !11
  %2493 = load ptr, ptr %26, align 8, !tbaa !5
  %2494 = load i64, ptr %39, align 8, !tbaa !9
  %2495 = load i64, ptr %41, align 8, !tbaa !9
  %2496 = sub nsw i64 %2494, %2495
  %2497 = load ptr, ptr %18, align 8, !tbaa !5
  %2498 = load i64, ptr %2497, align 8, !tbaa !9
  %2499 = add nsw i64 %2496, %2498
  %2500 = load i64, ptr %43, align 8, !tbaa !9
  %2501 = sub nsw i64 %2499, %2500
  %2502 = getelementptr inbounds double, ptr %2493, i64 %2501
  %2503 = load double, ptr %2502, align 8, !tbaa !11
  %2504 = load ptr, ptr %20, align 8, !tbaa !5
  %2505 = load i64, ptr %53, align 8, !tbaa !9
  %2506 = load i64, ptr %39, align 8, !tbaa !9
  %2507 = load i64, ptr %41, align 8, !tbaa !9
  %2508 = sub nsw i64 %2506, %2507
  %2509 = load i64, ptr %28, align 8, !tbaa !9
  %2510 = mul nsw i64 %2508, %2509
  %2511 = add nsw i64 %2505, %2510
  %2512 = getelementptr inbounds double, ptr %2504, i64 %2511
  %2513 = load double, ptr %2512, align 8, !tbaa !11
  %2514 = fmul double %2503, %2513
  %2515 = fneg double %2514
  %2516 = call double @llvm.fmuladd.f64(double %2491, double %2492, double %2515)
  %2517 = load ptr, ptr %26, align 8, !tbaa !5
  %2518 = load i64, ptr %39, align 8, !tbaa !9
  %2519 = load i64, ptr %41, align 8, !tbaa !9
  %2520 = sub nsw i64 %2518, %2519
  %2521 = getelementptr inbounds double, ptr %2517, i64 %2520
  store double %2516, ptr %2521, align 8, !tbaa !11
  %2522 = load ptr, ptr %26, align 8, !tbaa !5
  %2523 = load i64, ptr %39, align 8, !tbaa !9
  %2524 = load i64, ptr %41, align 8, !tbaa !9
  %2525 = sub nsw i64 %2523, %2524
  %2526 = load ptr, ptr %18, align 8, !tbaa !5
  %2527 = load i64, ptr %2526, align 8, !tbaa !9
  %2528 = add nsw i64 %2525, %2527
  %2529 = load i64, ptr %43, align 8, !tbaa !9
  %2530 = sub nsw i64 %2528, %2529
  %2531 = getelementptr inbounds double, ptr %2522, i64 %2530
  %2532 = load double, ptr %2531, align 8, !tbaa !11
  %2533 = load double, ptr %44, align 8, !tbaa !11
  %2534 = load ptr, ptr %26, align 8, !tbaa !5
  %2535 = load ptr, ptr %17, align 8, !tbaa !5
  %2536 = load i64, ptr %2535, align 8, !tbaa !9
  %2537 = load i64, ptr %39, align 8, !tbaa !9
  %2538 = add nsw i64 %2536, %2537
  %2539 = load i64, ptr %41, align 8, !tbaa !9
  %2540 = sub nsw i64 %2538, %2539
  %2541 = load ptr, ptr %18, align 8, !tbaa !5
  %2542 = load i64, ptr %2541, align 8, !tbaa !9
  %2543 = add nsw i64 %2540, %2542
  %2544 = load i64, ptr %43, align 8, !tbaa !9
  %2545 = sub nsw i64 %2543, %2544
  %2546 = getelementptr inbounds double, ptr %2534, i64 %2545
  %2547 = load double, ptr %2546, align 8, !tbaa !11
  %2548 = load ptr, ptr %20, align 8, !tbaa !5
  %2549 = load i64, ptr %53, align 8, !tbaa !9
  %2550 = load i64, ptr %39, align 8, !tbaa !9
  %2551 = load i64, ptr %41, align 8, !tbaa !9
  %2552 = sub nsw i64 %2550, %2551
  %2553 = load i64, ptr %28, align 8, !tbaa !9
  %2554 = mul nsw i64 %2552, %2553
  %2555 = add nsw i64 %2549, %2554
  %2556 = getelementptr inbounds double, ptr %2548, i64 %2555
  %2557 = load double, ptr %2556, align 8, !tbaa !11
  %2558 = fmul double %2547, %2557
  %2559 = call double @llvm.fmuladd.f64(double %2532, double %2533, double %2558)
  %2560 = load ptr, ptr %20, align 8, !tbaa !5
  %2561 = load i64, ptr %53, align 8, !tbaa !9
  %2562 = load i64, ptr %39, align 8, !tbaa !9
  %2563 = load i64, ptr %41, align 8, !tbaa !9
  %2564 = sub nsw i64 %2562, %2563
  %2565 = load i64, ptr %28, align 8, !tbaa !9
  %2566 = mul nsw i64 %2564, %2565
  %2567 = add nsw i64 %2561, %2566
  %2568 = getelementptr inbounds double, ptr %2560, i64 %2567
  store double %2559, ptr %2568, align 8, !tbaa !11
  %2569 = load double, ptr %50, align 8, !tbaa !11
  store double %2569, ptr %55, align 8, !tbaa !11
  br label %2570

2570:                                             ; preds = %2430, %2425, %2415
  br label %2571

2571:                                             ; preds = %2570, %2412
  store i64 1, ptr %36, align 8, !tbaa !9
  %2572 = load i64, ptr %41, align 8, !tbaa !9
  %2573 = load i64, ptr %45, align 8, !tbaa !9
  %2574 = sub nsw i64 %2572, %2573
  %2575 = add nsw i64 %2574, 2
  store i64 %2575, ptr %34, align 8, !tbaa !9
  %2576 = load i64, ptr %39, align 8, !tbaa !9
  %2577 = load i64, ptr %41, align 8, !tbaa !9
  %2578 = sub nsw i64 %2576, %2577
  %2579 = sub nsw i64 %2578, 1
  %2580 = load i64, ptr %36, align 8, !tbaa !9
  %2581 = load i64, ptr %34, align 8, !tbaa !9
  %2582 = icmp sge i64 %2580, %2581
  br i1 %2582, label %2583, label %2585

2583:                                             ; preds = %2571
  %2584 = load i64, ptr %36, align 8, !tbaa !9
  br label %2587

2585:                                             ; preds = %2571
  %2586 = load i64, ptr %34, align 8, !tbaa !9
  br label %2587

2587:                                             ; preds = %2585, %2583
  %2588 = phi i64 [ %2584, %2583 ], [ %2586, %2585 ]
  %2589 = load i64, ptr %53, align 8, !tbaa !9
  %2590 = mul nsw i64 %2588, %2589
  %2591 = add nsw i64 %2579, %2590
  store i64 %2591, ptr %49, align 8, !tbaa !9
  %2592 = load ptr, ptr %17, align 8, !tbaa !5
  %2593 = load i64, ptr %2592, align 8, !tbaa !9
  %2594 = load i64, ptr %49, align 8, !tbaa !9
  %2595 = sub nsw i64 %2593, %2594
  %2596 = load ptr, ptr %18, align 8, !tbaa !5
  %2597 = load i64, ptr %2596, align 8, !tbaa !9
  %2598 = add nsw i64 %2595, %2597
  %2599 = load i64, ptr %53, align 8, !tbaa !9
  %2600 = sdiv i64 %2598, %2599
  store i64 %2600, ptr %51, align 8, !tbaa !9
  %2601 = load i64, ptr %49, align 8, !tbaa !9
  %2602 = load i64, ptr %51, align 8, !tbaa !9
  %2603 = sub nsw i64 %2602, 1
  %2604 = load i64, ptr %53, align 8, !tbaa !9
  %2605 = mul nsw i64 %2603, %2604
  %2606 = add nsw i64 %2601, %2605
  store i64 %2606, ptr %48, align 8, !tbaa !9
  %2607 = load i64, ptr %64, align 8, !tbaa !9
  %2608 = icmp ne i64 %2607, 0
  br i1 %2608, label %2609, label %2628

2609:                                             ; preds = %2587
  %2610 = load i64, ptr %49, align 8, !tbaa !9
  store i64 %2610, ptr %36, align 8, !tbaa !9
  %2611 = load i64, ptr %39, align 8, !tbaa !9
  %2612 = load ptr, ptr %18, align 8, !tbaa !5
  %2613 = load i64, ptr %2612, align 8, !tbaa !9
  %2614 = shl i64 %2613, 1
  %2615 = add nsw i64 %2611, %2614
  %2616 = load i64, ptr %41, align 8, !tbaa !9
  %2617 = sub nsw i64 %2615, %2616
  %2618 = add nsw i64 %2617, 1
  store i64 %2618, ptr %34, align 8, !tbaa !9
  %2619 = load i64, ptr %36, align 8, !tbaa !9
  %2620 = load i64, ptr %34, align 8, !tbaa !9
  %2621 = icmp sge i64 %2619, %2620
  br i1 %2621, label %2622, label %2624

2622:                                             ; preds = %2609
  %2623 = load i64, ptr %36, align 8, !tbaa !9
  br label %2626

2624:                                             ; preds = %2609
  %2625 = load i64, ptr %34, align 8, !tbaa !9
  br label %2626

2626:                                             ; preds = %2624, %2622
  %2627 = phi i64 [ %2623, %2622 ], [ %2625, %2624 ]
  store i64 %2627, ptr %57, align 8, !tbaa !9
  br label %2630

2628:                                             ; preds = %2587
  %2629 = load i64, ptr %49, align 8, !tbaa !9
  store i64 %2629, ptr %57, align 8, !tbaa !9
  br label %2630

2630:                                             ; preds = %2628, %2626
  %2631 = load ptr, ptr %17, align 8, !tbaa !5
  %2632 = load i64, ptr %2631, align 8, !tbaa !9
  %2633 = load i64, ptr %57, align 8, !tbaa !9
  %2634 = sub nsw i64 %2632, %2633
  %2635 = load ptr, ptr %18, align 8, !tbaa !5
  %2636 = load i64, ptr %2635, align 8, !tbaa !9
  %2637 = add nsw i64 %2634, %2636
  %2638 = load i64, ptr %53, align 8, !tbaa !9
  %2639 = sdiv i64 %2637, %2638
  store i64 %2639, ptr %60, align 8, !tbaa !9
  %2640 = load i64, ptr %48, align 8, !tbaa !9
  store i64 %2640, ptr %36, align 8, !tbaa !9
  %2641 = load i64, ptr %53, align 8, !tbaa !9
  store i64 %2641, ptr %34, align 8, !tbaa !9
  %2642 = load i64, ptr %57, align 8, !tbaa !9
  store i64 %2642, ptr %40, align 8, !tbaa !9
  br label %2643

2643:                                             ; preds = %2712, %2630
  %2644 = load i64, ptr %34, align 8, !tbaa !9
  %2645 = icmp slt i64 %2644, 0
  br i1 %2645, label %2646, label %2651

2646:                                             ; preds = %2643
  %2647 = load i64, ptr %40, align 8, !tbaa !9
  %2648 = load i64, ptr %36, align 8, !tbaa !9
  %2649 = icmp sge i64 %2647, %2648
  %2650 = zext i1 %2649 to i32
  br label %2656

2651:                                             ; preds = %2643
  %2652 = load i64, ptr %40, align 8, !tbaa !9
  %2653 = load i64, ptr %36, align 8, !tbaa !9
  %2654 = icmp sle i64 %2652, %2653
  %2655 = zext i1 %2654 to i32
  br label %2656

2656:                                             ; preds = %2651, %2646
  %2657 = phi i32 [ %2650, %2646 ], [ %2655, %2651 ]
  %2658 = icmp ne i32 %2657, 0
  br i1 %2658, label %2659, label %2716

2659:                                             ; preds = %2656
  %2660 = load ptr, ptr %20, align 8, !tbaa !5
  %2661 = load i64, ptr %53, align 8, !tbaa !9
  %2662 = load i64, ptr %40, align 8, !tbaa !9
  %2663 = load ptr, ptr %18, align 8, !tbaa !5
  %2664 = load i64, ptr %2663, align 8, !tbaa !9
  %2665 = sub nsw i64 %2662, %2664
  %2666 = add nsw i64 %2665, 1
  %2667 = load i64, ptr %28, align 8, !tbaa !9
  %2668 = mul nsw i64 %2666, %2667
  %2669 = add nsw i64 %2661, %2668
  %2670 = getelementptr inbounds double, ptr %2660, i64 %2669
  %2671 = load double, ptr %2670, align 8, !tbaa !11
  %2672 = load ptr, ptr %26, align 8, !tbaa !5
  %2673 = load i64, ptr %40, align 8, !tbaa !9
  %2674 = load i64, ptr %43, align 8, !tbaa !9
  %2675 = sub nsw i64 %2673, %2674
  %2676 = getelementptr inbounds double, ptr %2672, i64 %2675
  %2677 = load double, ptr %2676, align 8, !tbaa !11
  %2678 = fmul double %2677, %2671
  store double %2678, ptr %2676, align 8, !tbaa !11
  %2679 = load ptr, ptr %26, align 8, !tbaa !5
  %2680 = load ptr, ptr %17, align 8, !tbaa !5
  %2681 = load i64, ptr %2680, align 8, !tbaa !9
  %2682 = load i64, ptr %40, align 8, !tbaa !9
  %2683 = add nsw i64 %2681, %2682
  %2684 = load i64, ptr %43, align 8, !tbaa !9
  %2685 = sub nsw i64 %2683, %2684
  %2686 = getelementptr inbounds double, ptr %2679, i64 %2685
  %2687 = load double, ptr %2686, align 8, !tbaa !11
  %2688 = load ptr, ptr %20, align 8, !tbaa !5
  %2689 = load i64, ptr %53, align 8, !tbaa !9
  %2690 = load i64, ptr %40, align 8, !tbaa !9
  %2691 = load ptr, ptr %18, align 8, !tbaa !5
  %2692 = load i64, ptr %2691, align 8, !tbaa !9
  %2693 = sub nsw i64 %2690, %2692
  %2694 = add nsw i64 %2693, 1
  %2695 = load i64, ptr %28, align 8, !tbaa !9
  %2696 = mul nsw i64 %2694, %2695
  %2697 = add nsw i64 %2689, %2696
  %2698 = getelementptr inbounds double, ptr %2688, i64 %2697
  %2699 = load double, ptr %2698, align 8, !tbaa !11
  %2700 = fmul double %2687, %2699
  %2701 = load ptr, ptr %20, align 8, !tbaa !5
  %2702 = load i64, ptr %53, align 8, !tbaa !9
  %2703 = load i64, ptr %40, align 8, !tbaa !9
  %2704 = load ptr, ptr %18, align 8, !tbaa !5
  %2705 = load i64, ptr %2704, align 8, !tbaa !9
  %2706 = sub nsw i64 %2703, %2705
  %2707 = add nsw i64 %2706, 1
  %2708 = load i64, ptr %28, align 8, !tbaa !9
  %2709 = mul nsw i64 %2707, %2708
  %2710 = add nsw i64 %2702, %2709
  %2711 = getelementptr inbounds double, ptr %2701, i64 %2710
  store double %2700, ptr %2711, align 8, !tbaa !11
  br label %2712

2712:                                             ; preds = %2659
  %2713 = load i64, ptr %34, align 8, !tbaa !9
  %2714 = load i64, ptr %40, align 8, !tbaa !9
  %2715 = add nsw i64 %2714, %2713
  store i64 %2715, ptr %40, align 8, !tbaa !9
  br label %2643, !llvm.loop !44

2716:                                             ; preds = %2656
  %2717 = load i64, ptr %60, align 8, !tbaa !9
  %2718 = icmp sgt i64 %2717, 0
  br i1 %2718, label %2719, label %2744

2719:                                             ; preds = %2716
  %2720 = load ptr, ptr %20, align 8, !tbaa !5
  %2721 = load i64, ptr %53, align 8, !tbaa !9
  %2722 = load i64, ptr %57, align 8, !tbaa !9
  %2723 = load ptr, ptr %18, align 8, !tbaa !5
  %2724 = load i64, ptr %2723, align 8, !tbaa !9
  %2725 = sub nsw i64 %2722, %2724
  %2726 = load i64, ptr %28, align 8, !tbaa !9
  %2727 = mul nsw i64 %2725, %2726
  %2728 = add nsw i64 %2721, %2727
  %2729 = getelementptr inbounds double, ptr %2720, i64 %2728
  %2730 = load ptr, ptr %26, align 8, !tbaa !5
  %2731 = load i64, ptr %57, align 8, !tbaa !9
  %2732 = load i64, ptr %43, align 8, !tbaa !9
  %2733 = sub nsw i64 %2731, %2732
  %2734 = getelementptr inbounds double, ptr %2730, i64 %2733
  %2735 = load ptr, ptr %26, align 8, !tbaa !5
  %2736 = load ptr, ptr %17, align 8, !tbaa !5
  %2737 = load i64, ptr %2736, align 8, !tbaa !9
  %2738 = load i64, ptr %57, align 8, !tbaa !9
  %2739 = add nsw i64 %2737, %2738
  %2740 = load i64, ptr %43, align 8, !tbaa !9
  %2741 = sub nsw i64 %2739, %2740
  %2742 = getelementptr inbounds double, ptr %2735, i64 %2741
  %2743 = call i32 @dlargv_(ptr noundef %60, ptr noundef %2729, ptr noundef %61, ptr noundef %2734, ptr noundef %53, ptr noundef %2742, ptr noundef %53)
  br label %2744

2744:                                             ; preds = %2719, %2716
  %2745 = load i64, ptr %51, align 8, !tbaa !9
  %2746 = icmp sgt i64 %2745, 0
  br i1 %2746, label %2747, label %2827

2747:                                             ; preds = %2744
  %2748 = load ptr, ptr %18, align 8, !tbaa !5
  %2749 = load i64, ptr %2748, align 8, !tbaa !9
  %2750 = sub nsw i64 %2749, 1
  store i64 %2750, ptr %34, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %2751

2751:                                             ; preds = %2790, %2747
  %2752 = load i64, ptr %42, align 8, !tbaa !9
  %2753 = load i64, ptr %34, align 8, !tbaa !9
  %2754 = icmp sle i64 %2752, %2753
  br i1 %2754, label %2755, label %2793

2755:                                             ; preds = %2751
  %2756 = load ptr, ptr %20, align 8, !tbaa !5
  %2757 = load i64, ptr %42, align 8, !tbaa !9
  %2758 = add nsw i64 %2757, 1
  %2759 = load i64, ptr %49, align 8, !tbaa !9
  %2760 = load i64, ptr %42, align 8, !tbaa !9
  %2761 = sub nsw i64 %2759, %2760
  %2762 = load i64, ptr %28, align 8, !tbaa !9
  %2763 = mul nsw i64 %2761, %2762
  %2764 = add nsw i64 %2758, %2763
  %2765 = getelementptr inbounds double, ptr %2756, i64 %2764
  %2766 = load ptr, ptr %20, align 8, !tbaa !5
  %2767 = load i64, ptr %42, align 8, !tbaa !9
  %2768 = add nsw i64 %2767, 2
  %2769 = load i64, ptr %49, align 8, !tbaa !9
  %2770 = load i64, ptr %42, align 8, !tbaa !9
  %2771 = sub nsw i64 %2769, %2770
  %2772 = load i64, ptr %28, align 8, !tbaa !9
  %2773 = mul nsw i64 %2771, %2772
  %2774 = add nsw i64 %2768, %2773
  %2775 = getelementptr inbounds double, ptr %2766, i64 %2774
  %2776 = load ptr, ptr %26, align 8, !tbaa !5
  %2777 = load ptr, ptr %17, align 8, !tbaa !5
  %2778 = load i64, ptr %2777, align 8, !tbaa !9
  %2779 = load i64, ptr %49, align 8, !tbaa !9
  %2780 = add nsw i64 %2778, %2779
  %2781 = load i64, ptr %43, align 8, !tbaa !9
  %2782 = sub nsw i64 %2780, %2781
  %2783 = getelementptr inbounds double, ptr %2776, i64 %2782
  %2784 = load ptr, ptr %26, align 8, !tbaa !5
  %2785 = load i64, ptr %49, align 8, !tbaa !9
  %2786 = load i64, ptr %43, align 8, !tbaa !9
  %2787 = sub nsw i64 %2785, %2786
  %2788 = getelementptr inbounds double, ptr %2784, i64 %2787
  %2789 = call i32 @dlartv_(ptr noundef %51, ptr noundef %2765, ptr noundef %61, ptr noundef %2775, ptr noundef %61, ptr noundef %2783, ptr noundef %2788, ptr noundef %53)
  br label %2790

2790:                                             ; preds = %2755
  %2791 = load i64, ptr %42, align 8, !tbaa !9
  %2792 = add nsw i64 %2791, 1
  store i64 %2792, ptr %42, align 8, !tbaa !9
  br label %2751, !llvm.loop !45

2793:                                             ; preds = %2751
  %2794 = load ptr, ptr %20, align 8, !tbaa !5
  %2795 = load i64, ptr %49, align 8, !tbaa !9
  %2796 = load i64, ptr %28, align 8, !tbaa !9
  %2797 = mul nsw i64 %2795, %2796
  %2798 = add nsw i64 %2797, 1
  %2799 = getelementptr inbounds double, ptr %2794, i64 %2798
  %2800 = load ptr, ptr %20, align 8, !tbaa !5
  %2801 = load i64, ptr %49, align 8, !tbaa !9
  %2802 = add nsw i64 %2801, 1
  %2803 = load i64, ptr %28, align 8, !tbaa !9
  %2804 = mul nsw i64 %2802, %2803
  %2805 = add nsw i64 %2804, 1
  %2806 = getelementptr inbounds double, ptr %2800, i64 %2805
  %2807 = load ptr, ptr %20, align 8, !tbaa !5
  %2808 = load i64, ptr %49, align 8, !tbaa !9
  %2809 = load i64, ptr %28, align 8, !tbaa !9
  %2810 = mul nsw i64 %2808, %2809
  %2811 = add nsw i64 %2810, 2
  %2812 = getelementptr inbounds double, ptr %2807, i64 %2811
  %2813 = load ptr, ptr %26, align 8, !tbaa !5
  %2814 = load ptr, ptr %17, align 8, !tbaa !5
  %2815 = load i64, ptr %2814, align 8, !tbaa !9
  %2816 = load i64, ptr %49, align 8, !tbaa !9
  %2817 = add nsw i64 %2815, %2816
  %2818 = load i64, ptr %43, align 8, !tbaa !9
  %2819 = sub nsw i64 %2817, %2818
  %2820 = getelementptr inbounds double, ptr %2813, i64 %2819
  %2821 = load ptr, ptr %26, align 8, !tbaa !5
  %2822 = load i64, ptr %49, align 8, !tbaa !9
  %2823 = load i64, ptr %43, align 8, !tbaa !9
  %2824 = sub nsw i64 %2822, %2823
  %2825 = getelementptr inbounds double, ptr %2821, i64 %2824
  %2826 = call i32 @dlar2v_(ptr noundef %51, ptr noundef %2799, ptr noundef %2806, ptr noundef %2812, ptr noundef %61, ptr noundef %2820, ptr noundef %2825, ptr noundef %53)
  br label %2827

2827:                                             ; preds = %2793, %2744
  %2828 = load ptr, ptr %19, align 8, !tbaa !5
  %2829 = load i64, ptr %2828, align 8, !tbaa !9
  %2830 = load i64, ptr %41, align 8, !tbaa !9
  %2831 = sub nsw i64 %2829, %2830
  %2832 = add nsw i64 %2831, 1
  store i64 %2832, ptr %34, align 8, !tbaa !9
  %2833 = load ptr, ptr %18, align 8, !tbaa !5
  %2834 = load i64, ptr %2833, align 8, !tbaa !9
  %2835 = sub nsw i64 %2834, 1
  store i64 %2835, ptr %42, align 8, !tbaa !9
  br label %2836

2836:                                             ; preds = %2887, %2827
  %2837 = load i64, ptr %42, align 8, !tbaa !9
  %2838 = load i64, ptr %34, align 8, !tbaa !9
  %2839 = icmp sge i64 %2837, %2838
  br i1 %2839, label %2840, label %2890

2840:                                             ; preds = %2836
  %2841 = load ptr, ptr %17, align 8, !tbaa !5
  %2842 = load i64, ptr %2841, align 8, !tbaa !9
  %2843 = load i64, ptr %49, align 8, !tbaa !9
  %2844 = sub nsw i64 %2842, %2843
  %2845 = load i64, ptr %42, align 8, !tbaa !9
  %2846 = add nsw i64 %2844, %2845
  %2847 = load i64, ptr %53, align 8, !tbaa !9
  %2848 = sdiv i64 %2846, %2847
  store i64 %2848, ptr %60, align 8, !tbaa !9
  %2849 = load i64, ptr %60, align 8, !tbaa !9
  %2850 = icmp sgt i64 %2849, 0
  br i1 %2850, label %2851, label %2886

2851:                                             ; preds = %2840
  %2852 = load ptr, ptr %20, align 8, !tbaa !5
  %2853 = load i64, ptr %53, align 8, !tbaa !9
  %2854 = load i64, ptr %42, align 8, !tbaa !9
  %2855 = sub nsw i64 %2853, %2854
  %2856 = add nsw i64 %2855, 1
  %2857 = load i64, ptr %49, align 8, !tbaa !9
  %2858 = load i64, ptr %28, align 8, !tbaa !9
  %2859 = mul nsw i64 %2857, %2858
  %2860 = add nsw i64 %2856, %2859
  %2861 = getelementptr inbounds double, ptr %2852, i64 %2860
  %2862 = load ptr, ptr %20, align 8, !tbaa !5
  %2863 = load i64, ptr %53, align 8, !tbaa !9
  %2864 = load i64, ptr %42, align 8, !tbaa !9
  %2865 = sub nsw i64 %2863, %2864
  %2866 = load i64, ptr %49, align 8, !tbaa !9
  %2867 = add nsw i64 %2866, 1
  %2868 = load i64, ptr %28, align 8, !tbaa !9
  %2869 = mul nsw i64 %2867, %2868
  %2870 = add nsw i64 %2865, %2869
  %2871 = getelementptr inbounds double, ptr %2862, i64 %2870
  %2872 = load ptr, ptr %26, align 8, !tbaa !5
  %2873 = load ptr, ptr %17, align 8, !tbaa !5
  %2874 = load i64, ptr %2873, align 8, !tbaa !9
  %2875 = load i64, ptr %49, align 8, !tbaa !9
  %2876 = add nsw i64 %2874, %2875
  %2877 = load i64, ptr %43, align 8, !tbaa !9
  %2878 = sub nsw i64 %2876, %2877
  %2879 = getelementptr inbounds double, ptr %2872, i64 %2878
  %2880 = load ptr, ptr %26, align 8, !tbaa !5
  %2881 = load i64, ptr %49, align 8, !tbaa !9
  %2882 = load i64, ptr %43, align 8, !tbaa !9
  %2883 = sub nsw i64 %2881, %2882
  %2884 = getelementptr inbounds double, ptr %2880, i64 %2883
  %2885 = call i32 @dlartv_(ptr noundef %60, ptr noundef %2861, ptr noundef %61, ptr noundef %2871, ptr noundef %61, ptr noundef %2879, ptr noundef %2884, ptr noundef %53)
  br label %2886

2886:                                             ; preds = %2851, %2840
  br label %2887

2887:                                             ; preds = %2886
  %2888 = load i64, ptr %42, align 8, !tbaa !9
  %2889 = add nsw i64 %2888, -1
  store i64 %2889, ptr %42, align 8, !tbaa !9
  br label %2836, !llvm.loop !46

2890:                                             ; preds = %2836
  %2891 = load i64, ptr %63, align 8, !tbaa !9
  %2892 = icmp ne i64 %2891, 0
  br i1 %2892, label %2893, label %2954

2893:                                             ; preds = %2890
  %2894 = load i64, ptr %48, align 8, !tbaa !9
  store i64 %2894, ptr %34, align 8, !tbaa !9
  %2895 = load i64, ptr %53, align 8, !tbaa !9
  store i64 %2895, ptr %36, align 8, !tbaa !9
  %2896 = load i64, ptr %49, align 8, !tbaa !9
  store i64 %2896, ptr %40, align 8, !tbaa !9
  br label %2897

2897:                                             ; preds = %2949, %2893
  %2898 = load i64, ptr %36, align 8, !tbaa !9
  %2899 = icmp slt i64 %2898, 0
  br i1 %2899, label %2900, label %2905

2900:                                             ; preds = %2897
  %2901 = load i64, ptr %40, align 8, !tbaa !9
  %2902 = load i64, ptr %34, align 8, !tbaa !9
  %2903 = icmp sge i64 %2901, %2902
  %2904 = zext i1 %2903 to i32
  br label %2910

2905:                                             ; preds = %2897
  %2906 = load i64, ptr %40, align 8, !tbaa !9
  %2907 = load i64, ptr %34, align 8, !tbaa !9
  %2908 = icmp sle i64 %2906, %2907
  %2909 = zext i1 %2908 to i32
  br label %2910

2910:                                             ; preds = %2905, %2900
  %2911 = phi i32 [ %2904, %2900 ], [ %2909, %2905 ]
  %2912 = icmp ne i32 %2911, 0
  br i1 %2912, label %2913, label %2953

2913:                                             ; preds = %2910
  %2914 = load ptr, ptr %17, align 8, !tbaa !5
  %2915 = load i64, ptr %2914, align 8, !tbaa !9
  %2916 = load i64, ptr %43, align 8, !tbaa !9
  %2917 = sub nsw i64 %2915, %2916
  store i64 %2917, ptr %35, align 8, !tbaa !9
  %2918 = load ptr, ptr %24, align 8, !tbaa !5
  %2919 = load i64, ptr %43, align 8, !tbaa !9
  %2920 = add nsw i64 %2919, 1
  %2921 = load i64, ptr %40, align 8, !tbaa !9
  %2922 = load i64, ptr %32, align 8, !tbaa !9
  %2923 = mul nsw i64 %2921, %2922
  %2924 = add nsw i64 %2920, %2923
  %2925 = getelementptr inbounds double, ptr %2918, i64 %2924
  %2926 = load ptr, ptr %24, align 8, !tbaa !5
  %2927 = load i64, ptr %43, align 8, !tbaa !9
  %2928 = add nsw i64 %2927, 1
  %2929 = load i64, ptr %40, align 8, !tbaa !9
  %2930 = add nsw i64 %2929, 1
  %2931 = load i64, ptr %32, align 8, !tbaa !9
  %2932 = mul nsw i64 %2930, %2931
  %2933 = add nsw i64 %2928, %2932
  %2934 = getelementptr inbounds double, ptr %2926, i64 %2933
  %2935 = load ptr, ptr %26, align 8, !tbaa !5
  %2936 = load ptr, ptr %17, align 8, !tbaa !5
  %2937 = load i64, ptr %2936, align 8, !tbaa !9
  %2938 = load i64, ptr %40, align 8, !tbaa !9
  %2939 = add nsw i64 %2937, %2938
  %2940 = load i64, ptr %43, align 8, !tbaa !9
  %2941 = sub nsw i64 %2939, %2940
  %2942 = getelementptr inbounds double, ptr %2935, i64 %2941
  %2943 = load ptr, ptr %26, align 8, !tbaa !5
  %2944 = load i64, ptr %40, align 8, !tbaa !9
  %2945 = load i64, ptr %43, align 8, !tbaa !9
  %2946 = sub nsw i64 %2944, %2945
  %2947 = getelementptr inbounds double, ptr %2943, i64 %2946
  %2948 = call i32 @f2c_drot(ptr noundef %35, ptr noundef %2925, ptr noundef @c__1, ptr noundef %2934, ptr noundef @c__1, ptr noundef %2942, ptr noundef %2947)
  br label %2949

2949:                                             ; preds = %2913
  %2950 = load i64, ptr %36, align 8, !tbaa !9
  %2951 = load i64, ptr %40, align 8, !tbaa !9
  %2952 = add nsw i64 %2951, %2950
  store i64 %2952, ptr %40, align 8, !tbaa !9
  br label %2897, !llvm.loop !47

2953:                                             ; preds = %2910
  br label %2954

2954:                                             ; preds = %2953, %2890
  br label %2955

2955:                                             ; preds = %2954
  %2956 = load i64, ptr %41, align 8, !tbaa !9
  %2957 = add nsw i64 %2956, 1
  store i64 %2957, ptr %41, align 8, !tbaa !9
  br label %2408, !llvm.loop !48

2958:                                             ; preds = %2408
  %2959 = load i64, ptr %64, align 8, !tbaa !9
  %2960 = icmp ne i64 %2959, 0
  br i1 %2960, label %2961, label %2990

2961:                                             ; preds = %2958
  %2962 = load i64, ptr %47, align 8, !tbaa !9
  %2963 = load ptr, ptr %17, align 8, !tbaa !5
  %2964 = load i64, ptr %2963, align 8, !tbaa !9
  %2965 = icmp sle i64 %2962, %2964
  br i1 %2965, label %2966, label %2989

2966:                                             ; preds = %2961
  %2967 = load i64, ptr %59, align 8, !tbaa !9
  %2968 = icmp sgt i64 %2967, 0
  br i1 %2968, label %2969, label %2989

2969:                                             ; preds = %2966
  %2970 = load ptr, ptr %22, align 8, !tbaa !5
  %2971 = load i64, ptr %59, align 8, !tbaa !9
  %2972 = add nsw i64 %2971, 1
  %2973 = load i64, ptr %39, align 8, !tbaa !9
  %2974 = load i64, ptr %59, align 8, !tbaa !9
  %2975 = sub nsw i64 %2973, %2974
  %2976 = load i64, ptr %30, align 8, !tbaa !9
  %2977 = mul nsw i64 %2975, %2976
  %2978 = add nsw i64 %2972, %2977
  %2979 = getelementptr inbounds double, ptr %2970, i64 %2978
  %2980 = load double, ptr %2979, align 8, !tbaa !11
  %2981 = fneg double %2980
  %2982 = load double, ptr %55, align 8, !tbaa !11
  %2983 = fmul double %2981, %2982
  %2984 = load ptr, ptr %26, align 8, !tbaa !5
  %2985 = load i64, ptr %39, align 8, !tbaa !9
  %2986 = load i64, ptr %59, align 8, !tbaa !9
  %2987 = sub nsw i64 %2985, %2986
  %2988 = getelementptr inbounds double, ptr %2984, i64 %2987
  store double %2983, ptr %2988, align 8, !tbaa !11
  br label %2989

2989:                                             ; preds = %2969, %2966, %2961
  br label %2990

2990:                                             ; preds = %2989, %2958
  %2991 = load ptr, ptr %19, align 8, !tbaa !5
  %2992 = load i64, ptr %2991, align 8, !tbaa !9
  store i64 %2992, ptr %41, align 8, !tbaa !9
  br label %2993

2993:                                             ; preds = %3284, %2990
  %2994 = load i64, ptr %41, align 8, !tbaa !9
  %2995 = icmp sge i64 %2994, 1
  br i1 %2995, label %2996, label %3287

2996:                                             ; preds = %2993
  %2997 = load i64, ptr %64, align 8, !tbaa !9
  %2998 = icmp ne i64 %2997, 0
  br i1 %2998, label %2999, label %3020

2999:                                             ; preds = %2996
  store i64 2, ptr %37, align 8, !tbaa !9
  %3000 = load i64, ptr %41, align 8, !tbaa !9
  %3001 = load i64, ptr %45, align 8, !tbaa !9
  %3002 = sub nsw i64 %3000, %3001
  %3003 = add nsw i64 %3002, 1
  store i64 %3003, ptr %36, align 8, !tbaa !9
  %3004 = load i64, ptr %39, align 8, !tbaa !9
  %3005 = load i64, ptr %41, align 8, !tbaa !9
  %3006 = sub nsw i64 %3004, %3005
  %3007 = sub nsw i64 %3006, 1
  %3008 = load i64, ptr %37, align 8, !tbaa !9
  %3009 = load i64, ptr %36, align 8, !tbaa !9
  %3010 = icmp sge i64 %3008, %3009
  br i1 %3010, label %3011, label %3013

3011:                                             ; preds = %2999
  %3012 = load i64, ptr %37, align 8, !tbaa !9
  br label %3015

3013:                                             ; preds = %2999
  %3014 = load i64, ptr %36, align 8, !tbaa !9
  br label %3015

3015:                                             ; preds = %3013, %3011
  %3016 = phi i64 [ %3012, %3011 ], [ %3014, %3013 ]
  %3017 = load i64, ptr %53, align 8, !tbaa !9
  %3018 = mul nsw i64 %3016, %3017
  %3019 = add nsw i64 %3007, %3018
  store i64 %3019, ptr %49, align 8, !tbaa !9
  br label %3041

3020:                                             ; preds = %2996
  store i64 1, ptr %37, align 8, !tbaa !9
  %3021 = load i64, ptr %41, align 8, !tbaa !9
  %3022 = load i64, ptr %45, align 8, !tbaa !9
  %3023 = sub nsw i64 %3021, %3022
  %3024 = add nsw i64 %3023, 1
  store i64 %3024, ptr %36, align 8, !tbaa !9
  %3025 = load i64, ptr %39, align 8, !tbaa !9
  %3026 = load i64, ptr %41, align 8, !tbaa !9
  %3027 = sub nsw i64 %3025, %3026
  %3028 = sub nsw i64 %3027, 1
  %3029 = load i64, ptr %37, align 8, !tbaa !9
  %3030 = load i64, ptr %36, align 8, !tbaa !9
  %3031 = icmp sge i64 %3029, %3030
  br i1 %3031, label %3032, label %3034

3032:                                             ; preds = %3020
  %3033 = load i64, ptr %37, align 8, !tbaa !9
  br label %3036

3034:                                             ; preds = %3020
  %3035 = load i64, ptr %36, align 8, !tbaa !9
  br label %3036

3036:                                             ; preds = %3034, %3032
  %3037 = phi i64 [ %3033, %3032 ], [ %3035, %3034 ]
  %3038 = load i64, ptr %53, align 8, !tbaa !9
  %3039 = mul nsw i64 %3037, %3038
  %3040 = add nsw i64 %3028, %3039
  store i64 %3040, ptr %49, align 8, !tbaa !9
  br label %3041

3041:                                             ; preds = %3036, %3015
  %3042 = load ptr, ptr %19, align 8, !tbaa !5
  %3043 = load i64, ptr %3042, align 8, !tbaa !9
  %3044 = load i64, ptr %41, align 8, !tbaa !9
  %3045 = sub nsw i64 %3043, %3044
  store i64 %3045, ptr %42, align 8, !tbaa !9
  br label %3046

3046:                                             ; preds = %3107, %3041
  %3047 = load i64, ptr %42, align 8, !tbaa !9
  %3048 = icmp sge i64 %3047, 1
  br i1 %3048, label %3049, label %3110

3049:                                             ; preds = %3046
  %3050 = load ptr, ptr %17, align 8, !tbaa !5
  %3051 = load i64, ptr %3050, align 8, !tbaa !9
  %3052 = load i64, ptr %49, align 8, !tbaa !9
  %3053 = sub nsw i64 %3051, %3052
  %3054 = load ptr, ptr %18, align 8, !tbaa !5
  %3055 = load i64, ptr %3054, align 8, !tbaa !9
  %3056 = add nsw i64 %3053, %3055
  %3057 = load i64, ptr %42, align 8, !tbaa !9
  %3058 = add nsw i64 %3056, %3057
  %3059 = load i64, ptr %53, align 8, !tbaa !9
  %3060 = sdiv i64 %3058, %3059
  store i64 %3060, ptr %60, align 8, !tbaa !9
  %3061 = load i64, ptr %60, align 8, !tbaa !9
  %3062 = icmp sgt i64 %3061, 0
  br i1 %3062, label %3063, label %3106

3063:                                             ; preds = %3049
  %3064 = load ptr, ptr %20, align 8, !tbaa !5
  %3065 = load i64, ptr %53, align 8, !tbaa !9
  %3066 = load i64, ptr %42, align 8, !tbaa !9
  %3067 = sub nsw i64 %3065, %3066
  %3068 = add nsw i64 %3067, 1
  %3069 = load i64, ptr %49, align 8, !tbaa !9
  %3070 = load ptr, ptr %18, align 8, !tbaa !5
  %3071 = load i64, ptr %3070, align 8, !tbaa !9
  %3072 = sub nsw i64 %3069, %3071
  %3073 = load i64, ptr %28, align 8, !tbaa !9
  %3074 = mul nsw i64 %3072, %3073
  %3075 = add nsw i64 %3068, %3074
  %3076 = getelementptr inbounds double, ptr %3064, i64 %3075
  %3077 = load ptr, ptr %20, align 8, !tbaa !5
  %3078 = load i64, ptr %53, align 8, !tbaa !9
  %3079 = load i64, ptr %42, align 8, !tbaa !9
  %3080 = sub nsw i64 %3078, %3079
  %3081 = load i64, ptr %49, align 8, !tbaa !9
  %3082 = load ptr, ptr %18, align 8, !tbaa !5
  %3083 = load i64, ptr %3082, align 8, !tbaa !9
  %3084 = sub nsw i64 %3081, %3083
  %3085 = add nsw i64 %3084, 1
  %3086 = load i64, ptr %28, align 8, !tbaa !9
  %3087 = mul nsw i64 %3085, %3086
  %3088 = add nsw i64 %3080, %3087
  %3089 = getelementptr inbounds double, ptr %3077, i64 %3088
  %3090 = load ptr, ptr %26, align 8, !tbaa !5
  %3091 = load ptr, ptr %17, align 8, !tbaa !5
  %3092 = load i64, ptr %3091, align 8, !tbaa !9
  %3093 = load i64, ptr %49, align 8, !tbaa !9
  %3094 = add nsw i64 %3092, %3093
  %3095 = load ptr, ptr %18, align 8, !tbaa !5
  %3096 = load i64, ptr %3095, align 8, !tbaa !9
  %3097 = sub nsw i64 %3094, %3096
  %3098 = getelementptr inbounds double, ptr %3090, i64 %3097
  %3099 = load ptr, ptr %26, align 8, !tbaa !5
  %3100 = load i64, ptr %49, align 8, !tbaa !9
  %3101 = load ptr, ptr %18, align 8, !tbaa !5
  %3102 = load i64, ptr %3101, align 8, !tbaa !9
  %3103 = sub nsw i64 %3100, %3102
  %3104 = getelementptr inbounds double, ptr %3099, i64 %3103
  %3105 = call i32 @dlartv_(ptr noundef %60, ptr noundef %3076, ptr noundef %61, ptr noundef %3089, ptr noundef %61, ptr noundef %3098, ptr noundef %3104, ptr noundef %53)
  br label %3106

3106:                                             ; preds = %3063, %3049
  br label %3107

3107:                                             ; preds = %3106
  %3108 = load i64, ptr %42, align 8, !tbaa !9
  %3109 = add nsw i64 %3108, -1
  store i64 %3109, ptr %42, align 8, !tbaa !9
  br label %3046, !llvm.loop !49

3110:                                             ; preds = %3046
  %3111 = load ptr, ptr %17, align 8, !tbaa !5
  %3112 = load i64, ptr %3111, align 8, !tbaa !9
  %3113 = load i64, ptr %49, align 8, !tbaa !9
  %3114 = sub nsw i64 %3112, %3113
  %3115 = load ptr, ptr %18, align 8, !tbaa !5
  %3116 = load i64, ptr %3115, align 8, !tbaa !9
  %3117 = add nsw i64 %3114, %3116
  %3118 = load i64, ptr %53, align 8, !tbaa !9
  %3119 = sdiv i64 %3117, %3118
  store i64 %3119, ptr %51, align 8, !tbaa !9
  %3120 = load i64, ptr %49, align 8, !tbaa !9
  %3121 = load i64, ptr %51, align 8, !tbaa !9
  %3122 = sub nsw i64 %3121, 1
  %3123 = load i64, ptr %53, align 8, !tbaa !9
  %3124 = mul nsw i64 %3122, %3123
  %3125 = add nsw i64 %3120, %3124
  store i64 %3125, ptr %48, align 8, !tbaa !9
  %3126 = load i64, ptr %49, align 8, !tbaa !9
  store i64 %3126, ptr %37, align 8, !tbaa !9
  %3127 = load i64, ptr %53, align 8, !tbaa !9
  %3128 = sub nsw i64 0, %3127
  store i64 %3128, ptr %36, align 8, !tbaa !9
  %3129 = load i64, ptr %48, align 8, !tbaa !9
  store i64 %3129, ptr %40, align 8, !tbaa !9
  br label %3130

3130:                                             ; preds = %3173, %3110
  %3131 = load i64, ptr %36, align 8, !tbaa !9
  %3132 = icmp slt i64 %3131, 0
  br i1 %3132, label %3133, label %3138

3133:                                             ; preds = %3130
  %3134 = load i64, ptr %40, align 8, !tbaa !9
  %3135 = load i64, ptr %37, align 8, !tbaa !9
  %3136 = icmp sge i64 %3134, %3135
  %3137 = zext i1 %3136 to i32
  br label %3143

3138:                                             ; preds = %3130
  %3139 = load i64, ptr %40, align 8, !tbaa !9
  %3140 = load i64, ptr %37, align 8, !tbaa !9
  %3141 = icmp sle i64 %3139, %3140
  %3142 = zext i1 %3141 to i32
  br label %3143

3143:                                             ; preds = %3138, %3133
  %3144 = phi i32 [ %3137, %3133 ], [ %3142, %3138 ]
  %3145 = icmp ne i32 %3144, 0
  br i1 %3145, label %3146, label %3177

3146:                                             ; preds = %3143
  %3147 = load ptr, ptr %26, align 8, !tbaa !5
  %3148 = load i64, ptr %40, align 8, !tbaa !9
  %3149 = load ptr, ptr %18, align 8, !tbaa !5
  %3150 = load i64, ptr %3149, align 8, !tbaa !9
  %3151 = sub nsw i64 %3148, %3150
  %3152 = getelementptr inbounds double, ptr %3147, i64 %3151
  %3153 = load double, ptr %3152, align 8, !tbaa !11
  %3154 = load ptr, ptr %26, align 8, !tbaa !5
  %3155 = load i64, ptr %40, align 8, !tbaa !9
  %3156 = getelementptr inbounds double, ptr %3154, i64 %3155
  store double %3153, ptr %3156, align 8, !tbaa !11
  %3157 = load ptr, ptr %26, align 8, !tbaa !5
  %3158 = load ptr, ptr %17, align 8, !tbaa !5
  %3159 = load i64, ptr %3158, align 8, !tbaa !9
  %3160 = load i64, ptr %40, align 8, !tbaa !9
  %3161 = add nsw i64 %3159, %3160
  %3162 = load ptr, ptr %18, align 8, !tbaa !5
  %3163 = load i64, ptr %3162, align 8, !tbaa !9
  %3164 = sub nsw i64 %3161, %3163
  %3165 = getelementptr inbounds double, ptr %3157, i64 %3164
  %3166 = load double, ptr %3165, align 8, !tbaa !11
  %3167 = load ptr, ptr %26, align 8, !tbaa !5
  %3168 = load ptr, ptr %17, align 8, !tbaa !5
  %3169 = load i64, ptr %3168, align 8, !tbaa !9
  %3170 = load i64, ptr %40, align 8, !tbaa !9
  %3171 = add nsw i64 %3169, %3170
  %3172 = getelementptr inbounds double, ptr %3167, i64 %3171
  store double %3166, ptr %3172, align 8, !tbaa !11
  br label %3173

3173:                                             ; preds = %3146
  %3174 = load i64, ptr %36, align 8, !tbaa !9
  %3175 = load i64, ptr %40, align 8, !tbaa !9
  %3176 = add nsw i64 %3175, %3174
  store i64 %3176, ptr %40, align 8, !tbaa !9
  br label %3130, !llvm.loop !50

3177:                                             ; preds = %3143
  %3178 = load i64, ptr %48, align 8, !tbaa !9
  store i64 %3178, ptr %36, align 8, !tbaa !9
  %3179 = load i64, ptr %53, align 8, !tbaa !9
  store i64 %3179, ptr %37, align 8, !tbaa !9
  %3180 = load i64, ptr %49, align 8, !tbaa !9
  store i64 %3180, ptr %40, align 8, !tbaa !9
  br label %3181

3181:                                             ; preds = %3246, %3177
  %3182 = load i64, ptr %37, align 8, !tbaa !9
  %3183 = icmp slt i64 %3182, 0
  br i1 %3183, label %3184, label %3189

3184:                                             ; preds = %3181
  %3185 = load i64, ptr %40, align 8, !tbaa !9
  %3186 = load i64, ptr %36, align 8, !tbaa !9
  %3187 = icmp sge i64 %3185, %3186
  %3188 = zext i1 %3187 to i32
  br label %3194

3189:                                             ; preds = %3181
  %3190 = load i64, ptr %40, align 8, !tbaa !9
  %3191 = load i64, ptr %36, align 8, !tbaa !9
  %3192 = icmp sle i64 %3190, %3191
  %3193 = zext i1 %3192 to i32
  br label %3194

3194:                                             ; preds = %3189, %3184
  %3195 = phi i32 [ %3188, %3184 ], [ %3193, %3189 ]
  %3196 = icmp ne i32 %3195, 0
  br i1 %3196, label %3197, label %3250

3197:                                             ; preds = %3194
  %3198 = load ptr, ptr %20, align 8, !tbaa !5
  %3199 = load i64, ptr %53, align 8, !tbaa !9
  %3200 = load i64, ptr %40, align 8, !tbaa !9
  %3201 = load ptr, ptr %18, align 8, !tbaa !5
  %3202 = load i64, ptr %3201, align 8, !tbaa !9
  %3203 = sub nsw i64 %3200, %3202
  %3204 = add nsw i64 %3203, 1
  %3205 = load i64, ptr %28, align 8, !tbaa !9
  %3206 = mul nsw i64 %3204, %3205
  %3207 = add nsw i64 %3199, %3206
  %3208 = getelementptr inbounds double, ptr %3198, i64 %3207
  %3209 = load double, ptr %3208, align 8, !tbaa !11
  %3210 = load ptr, ptr %26, align 8, !tbaa !5
  %3211 = load i64, ptr %40, align 8, !tbaa !9
  %3212 = getelementptr inbounds double, ptr %3210, i64 %3211
  %3213 = load double, ptr %3212, align 8, !tbaa !11
  %3214 = fmul double %3213, %3209
  store double %3214, ptr %3212, align 8, !tbaa !11
  %3215 = load ptr, ptr %26, align 8, !tbaa !5
  %3216 = load ptr, ptr %17, align 8, !tbaa !5
  %3217 = load i64, ptr %3216, align 8, !tbaa !9
  %3218 = load i64, ptr %40, align 8, !tbaa !9
  %3219 = add nsw i64 %3217, %3218
  %3220 = getelementptr inbounds double, ptr %3215, i64 %3219
  %3221 = load double, ptr %3220, align 8, !tbaa !11
  %3222 = load ptr, ptr %20, align 8, !tbaa !5
  %3223 = load i64, ptr %53, align 8, !tbaa !9
  %3224 = load i64, ptr %40, align 8, !tbaa !9
  %3225 = load ptr, ptr %18, align 8, !tbaa !5
  %3226 = load i64, ptr %3225, align 8, !tbaa !9
  %3227 = sub nsw i64 %3224, %3226
  %3228 = add nsw i64 %3227, 1
  %3229 = load i64, ptr %28, align 8, !tbaa !9
  %3230 = mul nsw i64 %3228, %3229
  %3231 = add nsw i64 %3223, %3230
  %3232 = getelementptr inbounds double, ptr %3222, i64 %3231
  %3233 = load double, ptr %3232, align 8, !tbaa !11
  %3234 = fmul double %3221, %3233
  %3235 = load ptr, ptr %20, align 8, !tbaa !5
  %3236 = load i64, ptr %53, align 8, !tbaa !9
  %3237 = load i64, ptr %40, align 8, !tbaa !9
  %3238 = load ptr, ptr %18, align 8, !tbaa !5
  %3239 = load i64, ptr %3238, align 8, !tbaa !9
  %3240 = sub nsw i64 %3237, %3239
  %3241 = add nsw i64 %3240, 1
  %3242 = load i64, ptr %28, align 8, !tbaa !9
  %3243 = mul nsw i64 %3241, %3242
  %3244 = add nsw i64 %3236, %3243
  %3245 = getelementptr inbounds double, ptr %3235, i64 %3244
  store double %3234, ptr %3245, align 8, !tbaa !11
  br label %3246

3246:                                             ; preds = %3197
  %3247 = load i64, ptr %37, align 8, !tbaa !9
  %3248 = load i64, ptr %40, align 8, !tbaa !9
  %3249 = add nsw i64 %3248, %3247
  store i64 %3249, ptr %40, align 8, !tbaa !9
  br label %3181, !llvm.loop !51

3250:                                             ; preds = %3194
  %3251 = load i64, ptr %64, align 8, !tbaa !9
  %3252 = icmp ne i64 %3251, 0
  br i1 %3252, label %3253, label %3283

3253:                                             ; preds = %3250
  %3254 = load i64, ptr %39, align 8, !tbaa !9
  %3255 = load i64, ptr %41, align 8, !tbaa !9
  %3256 = sub nsw i64 %3254, %3255
  %3257 = load ptr, ptr %17, align 8, !tbaa !5
  %3258 = load i64, ptr %3257, align 8, !tbaa !9
  %3259 = load ptr, ptr %18, align 8, !tbaa !5
  %3260 = load i64, ptr %3259, align 8, !tbaa !9
  %3261 = sub nsw i64 %3258, %3260
  %3262 = icmp slt i64 %3256, %3261
  br i1 %3262, label %3263, label %3282

3263:                                             ; preds = %3253
  %3264 = load i64, ptr %41, align 8, !tbaa !9
  %3265 = load i64, ptr %59, align 8, !tbaa !9
  %3266 = icmp sle i64 %3264, %3265
  br i1 %3266, label %3267, label %3282

3267:                                             ; preds = %3263
  %3268 = load ptr, ptr %26, align 8, !tbaa !5
  %3269 = load i64, ptr %39, align 8, !tbaa !9
  %3270 = load i64, ptr %41, align 8, !tbaa !9
  %3271 = sub nsw i64 %3269, %3270
  %3272 = getelementptr inbounds double, ptr %3268, i64 %3271
  %3273 = load double, ptr %3272, align 8, !tbaa !11
  %3274 = load ptr, ptr %26, align 8, !tbaa !5
  %3275 = load i64, ptr %39, align 8, !tbaa !9
  %3276 = load i64, ptr %41, align 8, !tbaa !9
  %3277 = sub nsw i64 %3275, %3276
  %3278 = load ptr, ptr %18, align 8, !tbaa !5
  %3279 = load i64, ptr %3278, align 8, !tbaa !9
  %3280 = add nsw i64 %3277, %3279
  %3281 = getelementptr inbounds double, ptr %3274, i64 %3280
  store double %3273, ptr %3281, align 8, !tbaa !11
  br label %3282

3282:                                             ; preds = %3267, %3263, %3253
  br label %3283

3283:                                             ; preds = %3282, %3250
  br label %3284

3284:                                             ; preds = %3283
  %3285 = load i64, ptr %41, align 8, !tbaa !9
  %3286 = add nsw i64 %3285, -1
  store i64 %3286, ptr %41, align 8, !tbaa !9
  br label %2993, !llvm.loop !52

3287:                                             ; preds = %2993
  %3288 = load ptr, ptr %19, align 8, !tbaa !5
  %3289 = load i64, ptr %3288, align 8, !tbaa !9
  store i64 %3289, ptr %41, align 8, !tbaa !9
  br label %3290

3290:                                             ; preds = %3543, %3287
  %3291 = load i64, ptr %41, align 8, !tbaa !9
  %3292 = icmp sge i64 %3291, 1
  br i1 %3292, label %3293, label %3546

3293:                                             ; preds = %3290
  store i64 1, ptr %37, align 8, !tbaa !9
  %3294 = load i64, ptr %41, align 8, !tbaa !9
  %3295 = load i64, ptr %45, align 8, !tbaa !9
  %3296 = sub nsw i64 %3294, %3295
  %3297 = add nsw i64 %3296, 1
  store i64 %3297, ptr %36, align 8, !tbaa !9
  %3298 = load i64, ptr %39, align 8, !tbaa !9
  %3299 = load i64, ptr %41, align 8, !tbaa !9
  %3300 = sub nsw i64 %3298, %3299
  %3301 = sub nsw i64 %3300, 1
  %3302 = load i64, ptr %37, align 8, !tbaa !9
  %3303 = load i64, ptr %36, align 8, !tbaa !9
  %3304 = icmp sge i64 %3302, %3303
  br i1 %3304, label %3305, label %3307

3305:                                             ; preds = %3293
  %3306 = load i64, ptr %37, align 8, !tbaa !9
  br label %3309

3307:                                             ; preds = %3293
  %3308 = load i64, ptr %36, align 8, !tbaa !9
  br label %3309

3309:                                             ; preds = %3307, %3305
  %3310 = phi i64 [ %3306, %3305 ], [ %3308, %3307 ]
  %3311 = load i64, ptr %53, align 8, !tbaa !9
  %3312 = mul nsw i64 %3310, %3311
  %3313 = add nsw i64 %3301, %3312
  store i64 %3313, ptr %49, align 8, !tbaa !9
  %3314 = load ptr, ptr %17, align 8, !tbaa !5
  %3315 = load i64, ptr %3314, align 8, !tbaa !9
  %3316 = load i64, ptr %49, align 8, !tbaa !9
  %3317 = sub nsw i64 %3315, %3316
  %3318 = load ptr, ptr %18, align 8, !tbaa !5
  %3319 = load i64, ptr %3318, align 8, !tbaa !9
  %3320 = add nsw i64 %3317, %3319
  %3321 = load i64, ptr %53, align 8, !tbaa !9
  %3322 = sdiv i64 %3320, %3321
  store i64 %3322, ptr %51, align 8, !tbaa !9
  %3323 = load i64, ptr %49, align 8, !tbaa !9
  %3324 = load i64, ptr %51, align 8, !tbaa !9
  %3325 = sub nsw i64 %3324, 1
  %3326 = load i64, ptr %53, align 8, !tbaa !9
  %3327 = mul nsw i64 %3325, %3326
  %3328 = add nsw i64 %3323, %3327
  store i64 %3328, ptr %48, align 8, !tbaa !9
  %3329 = load i64, ptr %51, align 8, !tbaa !9
  %3330 = icmp sgt i64 %3329, 0
  br i1 %3330, label %3331, label %3423

3331:                                             ; preds = %3309
  %3332 = load ptr, ptr %20, align 8, !tbaa !5
  %3333 = load i64, ptr %53, align 8, !tbaa !9
  %3334 = load i64, ptr %49, align 8, !tbaa !9
  %3335 = load ptr, ptr %18, align 8, !tbaa !5
  %3336 = load i64, ptr %3335, align 8, !tbaa !9
  %3337 = sub nsw i64 %3334, %3336
  %3338 = load i64, ptr %28, align 8, !tbaa !9
  %3339 = mul nsw i64 %3337, %3338
  %3340 = add nsw i64 %3333, %3339
  %3341 = getelementptr inbounds double, ptr %3332, i64 %3340
  %3342 = load ptr, ptr %26, align 8, !tbaa !5
  %3343 = load i64, ptr %49, align 8, !tbaa !9
  %3344 = getelementptr inbounds double, ptr %3342, i64 %3343
  %3345 = load ptr, ptr %26, align 8, !tbaa !5
  %3346 = load ptr, ptr %17, align 8, !tbaa !5
  %3347 = load i64, ptr %3346, align 8, !tbaa !9
  %3348 = load i64, ptr %49, align 8, !tbaa !9
  %3349 = add nsw i64 %3347, %3348
  %3350 = getelementptr inbounds double, ptr %3345, i64 %3349
  %3351 = call i32 @dlargv_(ptr noundef %51, ptr noundef %3341, ptr noundef %61, ptr noundef %3344, ptr noundef %53, ptr noundef %3350, ptr noundef %53)
  %3352 = load ptr, ptr %18, align 8, !tbaa !5
  %3353 = load i64, ptr %3352, align 8, !tbaa !9
  %3354 = sub nsw i64 %3353, 1
  store i64 %3354, ptr %37, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %3355

3355:                                             ; preds = %3390, %3331
  %3356 = load i64, ptr %42, align 8, !tbaa !9
  %3357 = load i64, ptr %37, align 8, !tbaa !9
  %3358 = icmp sle i64 %3356, %3357
  br i1 %3358, label %3359, label %3393

3359:                                             ; preds = %3355
  %3360 = load ptr, ptr %20, align 8, !tbaa !5
  %3361 = load i64, ptr %42, align 8, !tbaa !9
  %3362 = add nsw i64 %3361, 1
  %3363 = load i64, ptr %49, align 8, !tbaa !9
  %3364 = load i64, ptr %42, align 8, !tbaa !9
  %3365 = sub nsw i64 %3363, %3364
  %3366 = load i64, ptr %28, align 8, !tbaa !9
  %3367 = mul nsw i64 %3365, %3366
  %3368 = add nsw i64 %3362, %3367
  %3369 = getelementptr inbounds double, ptr %3360, i64 %3368
  %3370 = load ptr, ptr %20, align 8, !tbaa !5
  %3371 = load i64, ptr %42, align 8, !tbaa !9
  %3372 = add nsw i64 %3371, 2
  %3373 = load i64, ptr %49, align 8, !tbaa !9
  %3374 = load i64, ptr %42, align 8, !tbaa !9
  %3375 = sub nsw i64 %3373, %3374
  %3376 = load i64, ptr %28, align 8, !tbaa !9
  %3377 = mul nsw i64 %3375, %3376
  %3378 = add nsw i64 %3372, %3377
  %3379 = getelementptr inbounds double, ptr %3370, i64 %3378
  %3380 = load ptr, ptr %26, align 8, !tbaa !5
  %3381 = load ptr, ptr %17, align 8, !tbaa !5
  %3382 = load i64, ptr %3381, align 8, !tbaa !9
  %3383 = load i64, ptr %49, align 8, !tbaa !9
  %3384 = add nsw i64 %3382, %3383
  %3385 = getelementptr inbounds double, ptr %3380, i64 %3384
  %3386 = load ptr, ptr %26, align 8, !tbaa !5
  %3387 = load i64, ptr %49, align 8, !tbaa !9
  %3388 = getelementptr inbounds double, ptr %3386, i64 %3387
  %3389 = call i32 @dlartv_(ptr noundef %51, ptr noundef %3369, ptr noundef %61, ptr noundef %3379, ptr noundef %61, ptr noundef %3385, ptr noundef %3388, ptr noundef %53)
  br label %3390

3390:                                             ; preds = %3359
  %3391 = load i64, ptr %42, align 8, !tbaa !9
  %3392 = add nsw i64 %3391, 1
  store i64 %3392, ptr %42, align 8, !tbaa !9
  br label %3355, !llvm.loop !53

3393:                                             ; preds = %3355
  %3394 = load ptr, ptr %20, align 8, !tbaa !5
  %3395 = load i64, ptr %49, align 8, !tbaa !9
  %3396 = load i64, ptr %28, align 8, !tbaa !9
  %3397 = mul nsw i64 %3395, %3396
  %3398 = add nsw i64 %3397, 1
  %3399 = getelementptr inbounds double, ptr %3394, i64 %3398
  %3400 = load ptr, ptr %20, align 8, !tbaa !5
  %3401 = load i64, ptr %49, align 8, !tbaa !9
  %3402 = add nsw i64 %3401, 1
  %3403 = load i64, ptr %28, align 8, !tbaa !9
  %3404 = mul nsw i64 %3402, %3403
  %3405 = add nsw i64 %3404, 1
  %3406 = getelementptr inbounds double, ptr %3400, i64 %3405
  %3407 = load ptr, ptr %20, align 8, !tbaa !5
  %3408 = load i64, ptr %49, align 8, !tbaa !9
  %3409 = load i64, ptr %28, align 8, !tbaa !9
  %3410 = mul nsw i64 %3408, %3409
  %3411 = add nsw i64 %3410, 2
  %3412 = getelementptr inbounds double, ptr %3407, i64 %3411
  %3413 = load ptr, ptr %26, align 8, !tbaa !5
  %3414 = load ptr, ptr %17, align 8, !tbaa !5
  %3415 = load i64, ptr %3414, align 8, !tbaa !9
  %3416 = load i64, ptr %49, align 8, !tbaa !9
  %3417 = add nsw i64 %3415, %3416
  %3418 = getelementptr inbounds double, ptr %3413, i64 %3417
  %3419 = load ptr, ptr %26, align 8, !tbaa !5
  %3420 = load i64, ptr %49, align 8, !tbaa !9
  %3421 = getelementptr inbounds double, ptr %3419, i64 %3420
  %3422 = call i32 @dlar2v_(ptr noundef %51, ptr noundef %3399, ptr noundef %3406, ptr noundef %3412, ptr noundef %61, ptr noundef %3418, ptr noundef %3421, ptr noundef %53)
  br label %3423

3423:                                             ; preds = %3393, %3309
  %3424 = load ptr, ptr %19, align 8, !tbaa !5
  %3425 = load i64, ptr %3424, align 8, !tbaa !9
  %3426 = load i64, ptr %41, align 8, !tbaa !9
  %3427 = sub nsw i64 %3425, %3426
  %3428 = add nsw i64 %3427, 1
  store i64 %3428, ptr %37, align 8, !tbaa !9
  %3429 = load ptr, ptr %18, align 8, !tbaa !5
  %3430 = load i64, ptr %3429, align 8, !tbaa !9
  %3431 = sub nsw i64 %3430, 1
  store i64 %3431, ptr %42, align 8, !tbaa !9
  br label %3432

3432:                                             ; preds = %3479, %3423
  %3433 = load i64, ptr %42, align 8, !tbaa !9
  %3434 = load i64, ptr %37, align 8, !tbaa !9
  %3435 = icmp sge i64 %3433, %3434
  br i1 %3435, label %3436, label %3482

3436:                                             ; preds = %3432
  %3437 = load ptr, ptr %17, align 8, !tbaa !5
  %3438 = load i64, ptr %3437, align 8, !tbaa !9
  %3439 = load i64, ptr %49, align 8, !tbaa !9
  %3440 = sub nsw i64 %3438, %3439
  %3441 = load i64, ptr %42, align 8, !tbaa !9
  %3442 = add nsw i64 %3440, %3441
  %3443 = load i64, ptr %53, align 8, !tbaa !9
  %3444 = sdiv i64 %3442, %3443
  store i64 %3444, ptr %60, align 8, !tbaa !9
  %3445 = load i64, ptr %60, align 8, !tbaa !9
  %3446 = icmp sgt i64 %3445, 0
  br i1 %3446, label %3447, label %3478

3447:                                             ; preds = %3436
  %3448 = load ptr, ptr %20, align 8, !tbaa !5
  %3449 = load i64, ptr %53, align 8, !tbaa !9
  %3450 = load i64, ptr %42, align 8, !tbaa !9
  %3451 = sub nsw i64 %3449, %3450
  %3452 = add nsw i64 %3451, 1
  %3453 = load i64, ptr %49, align 8, !tbaa !9
  %3454 = load i64, ptr %28, align 8, !tbaa !9
  %3455 = mul nsw i64 %3453, %3454
  %3456 = add nsw i64 %3452, %3455
  %3457 = getelementptr inbounds double, ptr %3448, i64 %3456
  %3458 = load ptr, ptr %20, align 8, !tbaa !5
  %3459 = load i64, ptr %53, align 8, !tbaa !9
  %3460 = load i64, ptr %42, align 8, !tbaa !9
  %3461 = sub nsw i64 %3459, %3460
  %3462 = load i64, ptr %49, align 8, !tbaa !9
  %3463 = add nsw i64 %3462, 1
  %3464 = load i64, ptr %28, align 8, !tbaa !9
  %3465 = mul nsw i64 %3463, %3464
  %3466 = add nsw i64 %3461, %3465
  %3467 = getelementptr inbounds double, ptr %3458, i64 %3466
  %3468 = load ptr, ptr %26, align 8, !tbaa !5
  %3469 = load ptr, ptr %17, align 8, !tbaa !5
  %3470 = load i64, ptr %3469, align 8, !tbaa !9
  %3471 = load i64, ptr %49, align 8, !tbaa !9
  %3472 = add nsw i64 %3470, %3471
  %3473 = getelementptr inbounds double, ptr %3468, i64 %3472
  %3474 = load ptr, ptr %26, align 8, !tbaa !5
  %3475 = load i64, ptr %49, align 8, !tbaa !9
  %3476 = getelementptr inbounds double, ptr %3474, i64 %3475
  %3477 = call i32 @dlartv_(ptr noundef %60, ptr noundef %3457, ptr noundef %61, ptr noundef %3467, ptr noundef %61, ptr noundef %3473, ptr noundef %3476, ptr noundef %53)
  br label %3478

3478:                                             ; preds = %3447, %3436
  br label %3479

3479:                                             ; preds = %3478
  %3480 = load i64, ptr %42, align 8, !tbaa !9
  %3481 = add nsw i64 %3480, -1
  store i64 %3481, ptr %42, align 8, !tbaa !9
  br label %3432, !llvm.loop !54

3482:                                             ; preds = %3432
  %3483 = load i64, ptr %63, align 8, !tbaa !9
  %3484 = icmp ne i64 %3483, 0
  br i1 %3484, label %3485, label %3542

3485:                                             ; preds = %3482
  %3486 = load i64, ptr %48, align 8, !tbaa !9
  store i64 %3486, ptr %37, align 8, !tbaa !9
  %3487 = load i64, ptr %53, align 8, !tbaa !9
  store i64 %3487, ptr %36, align 8, !tbaa !9
  %3488 = load i64, ptr %49, align 8, !tbaa !9
  store i64 %3488, ptr %40, align 8, !tbaa !9
  br label %3489

3489:                                             ; preds = %3537, %3485
  %3490 = load i64, ptr %36, align 8, !tbaa !9
  %3491 = icmp slt i64 %3490, 0
  br i1 %3491, label %3492, label %3497

3492:                                             ; preds = %3489
  %3493 = load i64, ptr %40, align 8, !tbaa !9
  %3494 = load i64, ptr %37, align 8, !tbaa !9
  %3495 = icmp sge i64 %3493, %3494
  %3496 = zext i1 %3495 to i32
  br label %3502

3497:                                             ; preds = %3489
  %3498 = load i64, ptr %40, align 8, !tbaa !9
  %3499 = load i64, ptr %37, align 8, !tbaa !9
  %3500 = icmp sle i64 %3498, %3499
  %3501 = zext i1 %3500 to i32
  br label %3502

3502:                                             ; preds = %3497, %3492
  %3503 = phi i32 [ %3496, %3492 ], [ %3501, %3497 ]
  %3504 = icmp ne i32 %3503, 0
  br i1 %3504, label %3505, label %3541

3505:                                             ; preds = %3502
  %3506 = load ptr, ptr %17, align 8, !tbaa !5
  %3507 = load i64, ptr %3506, align 8, !tbaa !9
  %3508 = load i64, ptr %43, align 8, !tbaa !9
  %3509 = sub nsw i64 %3507, %3508
  store i64 %3509, ptr %34, align 8, !tbaa !9
  %3510 = load ptr, ptr %24, align 8, !tbaa !5
  %3511 = load i64, ptr %43, align 8, !tbaa !9
  %3512 = add nsw i64 %3511, 1
  %3513 = load i64, ptr %40, align 8, !tbaa !9
  %3514 = load i64, ptr %32, align 8, !tbaa !9
  %3515 = mul nsw i64 %3513, %3514
  %3516 = add nsw i64 %3512, %3515
  %3517 = getelementptr inbounds double, ptr %3510, i64 %3516
  %3518 = load ptr, ptr %24, align 8, !tbaa !5
  %3519 = load i64, ptr %43, align 8, !tbaa !9
  %3520 = add nsw i64 %3519, 1
  %3521 = load i64, ptr %40, align 8, !tbaa !9
  %3522 = add nsw i64 %3521, 1
  %3523 = load i64, ptr %32, align 8, !tbaa !9
  %3524 = mul nsw i64 %3522, %3523
  %3525 = add nsw i64 %3520, %3524
  %3526 = getelementptr inbounds double, ptr %3518, i64 %3525
  %3527 = load ptr, ptr %26, align 8, !tbaa !5
  %3528 = load ptr, ptr %17, align 8, !tbaa !5
  %3529 = load i64, ptr %3528, align 8, !tbaa !9
  %3530 = load i64, ptr %40, align 8, !tbaa !9
  %3531 = add nsw i64 %3529, %3530
  %3532 = getelementptr inbounds double, ptr %3527, i64 %3531
  %3533 = load ptr, ptr %26, align 8, !tbaa !5
  %3534 = load i64, ptr %40, align 8, !tbaa !9
  %3535 = getelementptr inbounds double, ptr %3533, i64 %3534
  %3536 = call i32 @f2c_drot(ptr noundef %34, ptr noundef %3517, ptr noundef @c__1, ptr noundef %3526, ptr noundef @c__1, ptr noundef %3532, ptr noundef %3535)
  br label %3537

3537:                                             ; preds = %3505
  %3538 = load i64, ptr %36, align 8, !tbaa !9
  %3539 = load i64, ptr %40, align 8, !tbaa !9
  %3540 = add nsw i64 %3539, %3538
  store i64 %3540, ptr %40, align 8, !tbaa !9
  br label %3489, !llvm.loop !55

3541:                                             ; preds = %3502
  br label %3542

3542:                                             ; preds = %3541, %3482
  br label %3543

3543:                                             ; preds = %3542
  %3544 = load i64, ptr %41, align 8, !tbaa !9
  %3545 = add nsw i64 %3544, -1
  store i64 %3545, ptr %41, align 8, !tbaa !9
  br label %3290, !llvm.loop !56

3546:                                             ; preds = %3290
  %3547 = load ptr, ptr %19, align 8, !tbaa !5
  %3548 = load i64, ptr %3547, align 8, !tbaa !9
  %3549 = sub nsw i64 %3548, 1
  store i64 %3549, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %41, align 8, !tbaa !9
  br label %3550

3550:                                             ; preds = %3633, %3546
  %3551 = load i64, ptr %41, align 8, !tbaa !9
  %3552 = load i64, ptr %36, align 8, !tbaa !9
  %3553 = icmp sle i64 %3551, %3552
  br i1 %3553, label %3554, label %3636

3554:                                             ; preds = %3550
  store i64 1, ptr %37, align 8, !tbaa !9
  %3555 = load i64, ptr %41, align 8, !tbaa !9
  %3556 = load i64, ptr %45, align 8, !tbaa !9
  %3557 = sub nsw i64 %3555, %3556
  %3558 = add nsw i64 %3557, 2
  store i64 %3558, ptr %34, align 8, !tbaa !9
  %3559 = load i64, ptr %39, align 8, !tbaa !9
  %3560 = load i64, ptr %41, align 8, !tbaa !9
  %3561 = sub nsw i64 %3559, %3560
  %3562 = sub nsw i64 %3561, 1
  %3563 = load i64, ptr %37, align 8, !tbaa !9
  %3564 = load i64, ptr %34, align 8, !tbaa !9
  %3565 = icmp sge i64 %3563, %3564
  br i1 %3565, label %3566, label %3568

3566:                                             ; preds = %3554
  %3567 = load i64, ptr %37, align 8, !tbaa !9
  br label %3570

3568:                                             ; preds = %3554
  %3569 = load i64, ptr %34, align 8, !tbaa !9
  br label %3570

3570:                                             ; preds = %3568, %3566
  %3571 = phi i64 [ %3567, %3566 ], [ %3569, %3568 ]
  %3572 = load i64, ptr %53, align 8, !tbaa !9
  %3573 = mul nsw i64 %3571, %3572
  %3574 = add nsw i64 %3562, %3573
  store i64 %3574, ptr %49, align 8, !tbaa !9
  %3575 = load ptr, ptr %19, align 8, !tbaa !5
  %3576 = load i64, ptr %3575, align 8, !tbaa !9
  %3577 = load i64, ptr %41, align 8, !tbaa !9
  %3578 = sub nsw i64 %3576, %3577
  store i64 %3578, ptr %42, align 8, !tbaa !9
  br label %3579

3579:                                             ; preds = %3629, %3570
  %3580 = load i64, ptr %42, align 8, !tbaa !9
  %3581 = icmp sge i64 %3580, 1
  br i1 %3581, label %3582, label %3632

3582:                                             ; preds = %3579
  %3583 = load ptr, ptr %17, align 8, !tbaa !5
  %3584 = load i64, ptr %3583, align 8, !tbaa !9
  %3585 = load i64, ptr %49, align 8, !tbaa !9
  %3586 = sub nsw i64 %3584, %3585
  %3587 = load i64, ptr %42, align 8, !tbaa !9
  %3588 = add nsw i64 %3586, %3587
  %3589 = load i64, ptr %53, align 8, !tbaa !9
  %3590 = sdiv i64 %3588, %3589
  store i64 %3590, ptr %60, align 8, !tbaa !9
  %3591 = load i64, ptr %60, align 8, !tbaa !9
  %3592 = icmp sgt i64 %3591, 0
  br i1 %3592, label %3593, label %3628

3593:                                             ; preds = %3582
  %3594 = load ptr, ptr %20, align 8, !tbaa !5
  %3595 = load i64, ptr %53, align 8, !tbaa !9
  %3596 = load i64, ptr %42, align 8, !tbaa !9
  %3597 = sub nsw i64 %3595, %3596
  %3598 = add nsw i64 %3597, 1
  %3599 = load i64, ptr %49, align 8, !tbaa !9
  %3600 = load i64, ptr %28, align 8, !tbaa !9
  %3601 = mul nsw i64 %3599, %3600
  %3602 = add nsw i64 %3598, %3601
  %3603 = getelementptr inbounds double, ptr %3594, i64 %3602
  %3604 = load ptr, ptr %20, align 8, !tbaa !5
  %3605 = load i64, ptr %53, align 8, !tbaa !9
  %3606 = load i64, ptr %42, align 8, !tbaa !9
  %3607 = sub nsw i64 %3605, %3606
  %3608 = load i64, ptr %49, align 8, !tbaa !9
  %3609 = add nsw i64 %3608, 1
  %3610 = load i64, ptr %28, align 8, !tbaa !9
  %3611 = mul nsw i64 %3609, %3610
  %3612 = add nsw i64 %3607, %3611
  %3613 = getelementptr inbounds double, ptr %3604, i64 %3612
  %3614 = load ptr, ptr %26, align 8, !tbaa !5
  %3615 = load ptr, ptr %17, align 8, !tbaa !5
  %3616 = load i64, ptr %3615, align 8, !tbaa !9
  %3617 = load i64, ptr %49, align 8, !tbaa !9
  %3618 = add nsw i64 %3616, %3617
  %3619 = load i64, ptr %43, align 8, !tbaa !9
  %3620 = sub nsw i64 %3618, %3619
  %3621 = getelementptr inbounds double, ptr %3614, i64 %3620
  %3622 = load ptr, ptr %26, align 8, !tbaa !5
  %3623 = load i64, ptr %49, align 8, !tbaa !9
  %3624 = load i64, ptr %43, align 8, !tbaa !9
  %3625 = sub nsw i64 %3623, %3624
  %3626 = getelementptr inbounds double, ptr %3622, i64 %3625
  %3627 = call i32 @dlartv_(ptr noundef %60, ptr noundef %3603, ptr noundef %61, ptr noundef %3613, ptr noundef %61, ptr noundef %3621, ptr noundef %3626, ptr noundef %53)
  br label %3628

3628:                                             ; preds = %3593, %3582
  br label %3629

3629:                                             ; preds = %3628
  %3630 = load i64, ptr %42, align 8, !tbaa !9
  %3631 = add nsw i64 %3630, -1
  store i64 %3631, ptr %42, align 8, !tbaa !9
  br label %3579, !llvm.loop !57

3632:                                             ; preds = %3579
  br label %3633

3633:                                             ; preds = %3632
  %3634 = load i64, ptr %41, align 8, !tbaa !9
  %3635 = add nsw i64 %3634, 1
  store i64 %3635, ptr %41, align 8, !tbaa !9
  br label %3550, !llvm.loop !58

3636:                                             ; preds = %3550
  %3637 = load ptr, ptr %19, align 8, !tbaa !5
  %3638 = load i64, ptr %3637, align 8, !tbaa !9
  %3639 = icmp sgt i64 %3638, 1
  br i1 %3639, label %3640, label %3696

3640:                                             ; preds = %3636
  %3641 = load i64, ptr %39, align 8, !tbaa !9
  %3642 = load ptr, ptr %19, align 8, !tbaa !5
  %3643 = load i64, ptr %3642, align 8, !tbaa !9
  %3644 = sub nsw i64 %3641, %3643
  %3645 = load ptr, ptr %18, align 8, !tbaa !5
  %3646 = load i64, ptr %3645, align 8, !tbaa !9
  %3647 = shl i64 %3646, 1
  %3648 = add nsw i64 %3644, %3647
  %3649 = add nsw i64 %3648, 1
  store i64 %3649, ptr %36, align 8, !tbaa !9
  %3650 = load ptr, ptr %17, align 8, !tbaa !5
  %3651 = load i64, ptr %3650, align 8, !tbaa !9
  %3652 = sub nsw i64 %3651, 1
  store i64 %3652, ptr %40, align 8, !tbaa !9
  br label %3653

3653:                                             ; preds = %3692, %3640
  %3654 = load i64, ptr %40, align 8, !tbaa !9
  %3655 = load i64, ptr %36, align 8, !tbaa !9
  %3656 = icmp sge i64 %3654, %3655
  br i1 %3656, label %3657, label %3695

3657:                                             ; preds = %3653
  %3658 = load ptr, ptr %26, align 8, !tbaa !5
  %3659 = load ptr, ptr %17, align 8, !tbaa !5
  %3660 = load i64, ptr %3659, align 8, !tbaa !9
  %3661 = load i64, ptr %40, align 8, !tbaa !9
  %3662 = add nsw i64 %3660, %3661
  %3663 = load ptr, ptr %18, align 8, !tbaa !5
  %3664 = load i64, ptr %3663, align 8, !tbaa !9
  %3665 = sub nsw i64 %3662, %3664
  %3666 = load i64, ptr %43, align 8, !tbaa !9
  %3667 = sub nsw i64 %3665, %3666
  %3668 = getelementptr inbounds double, ptr %3658, i64 %3667
  %3669 = load double, ptr %3668, align 8, !tbaa !11
  %3670 = load ptr, ptr %26, align 8, !tbaa !5
  %3671 = load ptr, ptr %17, align 8, !tbaa !5
  %3672 = load i64, ptr %3671, align 8, !tbaa !9
  %3673 = load i64, ptr %40, align 8, !tbaa !9
  %3674 = add nsw i64 %3672, %3673
  %3675 = load i64, ptr %43, align 8, !tbaa !9
  %3676 = sub nsw i64 %3674, %3675
  %3677 = getelementptr inbounds double, ptr %3670, i64 %3676
  store double %3669, ptr %3677, align 8, !tbaa !11
  %3678 = load ptr, ptr %26, align 8, !tbaa !5
  %3679 = load i64, ptr %40, align 8, !tbaa !9
  %3680 = load ptr, ptr %18, align 8, !tbaa !5
  %3681 = load i64, ptr %3680, align 8, !tbaa !9
  %3682 = sub nsw i64 %3679, %3681
  %3683 = load i64, ptr %43, align 8, !tbaa !9
  %3684 = sub nsw i64 %3682, %3683
  %3685 = getelementptr inbounds double, ptr %3678, i64 %3684
  %3686 = load double, ptr %3685, align 8, !tbaa !11
  %3687 = load ptr, ptr %26, align 8, !tbaa !5
  %3688 = load i64, ptr %40, align 8, !tbaa !9
  %3689 = load i64, ptr %43, align 8, !tbaa !9
  %3690 = sub nsw i64 %3688, %3689
  %3691 = getelementptr inbounds double, ptr %3687, i64 %3690
  store double %3686, ptr %3691, align 8, !tbaa !11
  br label %3692

3692:                                             ; preds = %3657
  %3693 = load i64, ptr %40, align 8, !tbaa !9
  %3694 = add nsw i64 %3693, -1
  store i64 %3694, ptr %40, align 8, !tbaa !9
  br label %3653, !llvm.loop !59

3695:                                             ; preds = %3653
  br label %3696

3696:                                             ; preds = %3695, %3636
  br label %3697

3697:                                             ; preds = %3696, %2000
  br label %230

3698:                                             ; preds = %295, %282
  store i64 1, ptr %64, align 8, !tbaa !9
  store i64 0, ptr %39, align 8, !tbaa !9
  br label %3699

3699:                                             ; preds = %7263, %3751, %3698
  %3700 = load i64, ptr %64, align 8, !tbaa !9
  %3701 = icmp ne i64 %3700, 0
  br i1 %3701, label %3702, label %3753

3702:                                             ; preds = %3699
  %3703 = load i64, ptr %39, align 8, !tbaa !9
  %3704 = add nsw i64 %3703, 1
  store i64 %3704, ptr %39, align 8, !tbaa !9
  %3705 = load ptr, ptr %19, align 8, !tbaa !5
  %3706 = load i64, ptr %3705, align 8, !tbaa !9
  store i64 %3706, ptr %36, align 8, !tbaa !9
  %3707 = load i64, ptr %43, align 8, !tbaa !9
  %3708 = load i64, ptr %39, align 8, !tbaa !9
  %3709 = sub nsw i64 %3707, %3708
  store i64 %3709, ptr %37, align 8, !tbaa !9
  %3710 = load i64, ptr %36, align 8, !tbaa !9
  %3711 = load i64, ptr %37, align 8, !tbaa !9
  %3712 = icmp sle i64 %3710, %3711
  br i1 %3712, label %3713, label %3715

3713:                                             ; preds = %3702
  %3714 = load i64, ptr %36, align 8, !tbaa !9
  br label %3717

3715:                                             ; preds = %3702
  %3716 = load i64, ptr %37, align 8, !tbaa !9
  br label %3717

3717:                                             ; preds = %3715, %3713
  %3718 = phi i64 [ %3714, %3713 ], [ %3716, %3715 ]
  store i64 %3718, ptr %59, align 8, !tbaa !9
  %3719 = load i64, ptr %39, align 8, !tbaa !9
  %3720 = add nsw i64 %3719, 1
  store i64 %3720, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %36, align 8, !tbaa !9
  %3721 = load i64, ptr %39, align 8, !tbaa !9
  %3722 = load ptr, ptr %18, align 8, !tbaa !5
  %3723 = load i64, ptr %3722, align 8, !tbaa !9
  %3724 = sub nsw i64 %3721, %3723
  store i64 %3724, ptr %37, align 8, !tbaa !9
  %3725 = load i64, ptr %36, align 8, !tbaa !9
  %3726 = load i64, ptr %37, align 8, !tbaa !9
  %3727 = icmp sge i64 %3725, %3726
  br i1 %3727, label %3728, label %3730

3728:                                             ; preds = %3717
  %3729 = load i64, ptr %36, align 8, !tbaa !9
  br label %3732

3730:                                             ; preds = %3717
  %3731 = load i64, ptr %37, align 8, !tbaa !9
  br label %3732

3732:                                             ; preds = %3730, %3728
  %3733 = phi i64 [ %3729, %3728 ], [ %3731, %3730 ]
  store i64 %3733, ptr %46, align 8, !tbaa !9
  %3734 = load i64, ptr %39, align 8, !tbaa !9
  %3735 = load i64, ptr %59, align 8, !tbaa !9
  %3736 = add nsw i64 %3734, %3735
  %3737 = load i64, ptr %53, align 8, !tbaa !9
  %3738 = sub nsw i64 %3736, %3737
  store i64 %3738, ptr %47, align 8, !tbaa !9
  %3739 = load i64, ptr %39, align 8, !tbaa !9
  %3740 = load i64, ptr %43, align 8, !tbaa !9
  %3741 = icmp sgt i64 %3739, %3740
  br i1 %3741, label %3742, label %3752

3742:                                             ; preds = %3732
  store i64 0, ptr %64, align 8, !tbaa !9
  %3743 = load i64, ptr %39, align 8, !tbaa !9
  %3744 = add nsw i64 %3743, -1
  store i64 %3744, ptr %39, align 8, !tbaa !9
  %3745 = load i64, ptr %43, align 8, !tbaa !9
  %3746 = add nsw i64 %3745, 1
  store i64 %3746, ptr %45, align 8, !tbaa !9
  %3747 = load ptr, ptr %18, align 8, !tbaa !5
  %3748 = load i64, ptr %3747, align 8, !tbaa !9
  %3749 = icmp eq i64 %3748, 0
  br i1 %3749, label %3750, label %3751

3750:                                             ; preds = %3742
  store i32 0, ptr %14, align 4
  store i32 1, ptr %65, align 4
  br label %7264

3751:                                             ; preds = %3742
  br label %3699

3752:                                             ; preds = %3732
  br label %3762

3753:                                             ; preds = %3699
  %3754 = load ptr, ptr %18, align 8, !tbaa !5
  %3755 = load i64, ptr %3754, align 8, !tbaa !9
  %3756 = load i64, ptr %39, align 8, !tbaa !9
  %3757 = sub nsw i64 %3756, %3755
  store i64 %3757, ptr %39, align 8, !tbaa !9
  %3758 = load i64, ptr %39, align 8, !tbaa !9
  %3759 = icmp slt i64 %3758, 2
  br i1 %3759, label %3760, label %3761

3760:                                             ; preds = %3753
  store i32 0, ptr %14, align 4
  store i32 1, ptr %65, align 4
  br label %7264

3761:                                             ; preds = %3753
  br label %3762

3762:                                             ; preds = %3761, %3752
  %3763 = load i64, ptr %39, align 8, !tbaa !9
  %3764 = load i64, ptr %43, align 8, !tbaa !9
  %3765 = load i64, ptr %59, align 8, !tbaa !9
  %3766 = sub nsw i64 %3764, %3765
  %3767 = icmp slt i64 %3763, %3766
  br i1 %3767, label %3768, label %3770

3768:                                             ; preds = %3762
  %3769 = load i64, ptr %43, align 8, !tbaa !9
  store i64 %3769, ptr %52, align 8, !tbaa !9
  br label %3773

3770:                                             ; preds = %3762
  %3771 = load ptr, ptr %17, align 8, !tbaa !5
  %3772 = load i64, ptr %3771, align 8, !tbaa !9
  store i64 %3772, ptr %52, align 8, !tbaa !9
  br label %3773

3773:                                             ; preds = %3770, %3768
  %3774 = load i64, ptr %62, align 8, !tbaa !9
  %3775 = icmp ne i64 %3774, 0
  br i1 %3775, label %3776, label %5525

3776:                                             ; preds = %3773
  %3777 = load i64, ptr %64, align 8, !tbaa !9
  %3778 = icmp ne i64 %3777, 0
  br i1 %3778, label %3779, label %4186

3779:                                             ; preds = %3776
  %3780 = load ptr, ptr %22, align 8, !tbaa !5
  %3781 = load i64, ptr %54, align 8, !tbaa !9
  %3782 = load i64, ptr %39, align 8, !tbaa !9
  %3783 = load i64, ptr %30, align 8, !tbaa !9
  %3784 = mul nsw i64 %3782, %3783
  %3785 = add nsw i64 %3781, %3784
  %3786 = getelementptr inbounds double, ptr %3780, i64 %3785
  %3787 = load double, ptr %3786, align 8, !tbaa !11
  store double %3787, ptr %58, align 8, !tbaa !11
  %3788 = load i64, ptr %39, align 8, !tbaa !9
  store i64 %3788, ptr %36, align 8, !tbaa !9
  %3789 = load i64, ptr %46, align 8, !tbaa !9
  store i64 %3789, ptr %40, align 8, !tbaa !9
  br label %3790

3790:                                             ; preds = %3809, %3779
  %3791 = load i64, ptr %40, align 8, !tbaa !9
  %3792 = load i64, ptr %36, align 8, !tbaa !9
  %3793 = icmp sle i64 %3791, %3792
  br i1 %3793, label %3794, label %3812

3794:                                             ; preds = %3790
  %3795 = load double, ptr %58, align 8, !tbaa !11
  %3796 = load ptr, ptr %20, align 8, !tbaa !5
  %3797 = load i64, ptr %40, align 8, !tbaa !9
  %3798 = load i64, ptr %39, align 8, !tbaa !9
  %3799 = sub nsw i64 %3797, %3798
  %3800 = load i64, ptr %53, align 8, !tbaa !9
  %3801 = add nsw i64 %3799, %3800
  %3802 = load i64, ptr %39, align 8, !tbaa !9
  %3803 = load i64, ptr %28, align 8, !tbaa !9
  %3804 = mul nsw i64 %3802, %3803
  %3805 = add nsw i64 %3801, %3804
  %3806 = getelementptr inbounds double, ptr %3796, i64 %3805
  %3807 = load double, ptr %3806, align 8, !tbaa !11
  %3808 = fdiv double %3807, %3795
  store double %3808, ptr %3806, align 8, !tbaa !11
  br label %3809

3809:                                             ; preds = %3794
  %3810 = load i64, ptr %40, align 8, !tbaa !9
  %3811 = add nsw i64 %3810, 1
  store i64 %3811, ptr %40, align 8, !tbaa !9
  br label %3790, !llvm.loop !60

3812:                                             ; preds = %3790
  %3813 = load ptr, ptr %17, align 8, !tbaa !5
  %3814 = load i64, ptr %3813, align 8, !tbaa !9
  store i64 %3814, ptr %37, align 8, !tbaa !9
  %3815 = load i64, ptr %39, align 8, !tbaa !9
  %3816 = load ptr, ptr %18, align 8, !tbaa !5
  %3817 = load i64, ptr %3816, align 8, !tbaa !9
  %3818 = add nsw i64 %3815, %3817
  store i64 %3818, ptr %34, align 8, !tbaa !9
  %3819 = load i64, ptr %37, align 8, !tbaa !9
  %3820 = load i64, ptr %34, align 8, !tbaa !9
  %3821 = icmp sle i64 %3819, %3820
  br i1 %3821, label %3822, label %3824

3822:                                             ; preds = %3812
  %3823 = load i64, ptr %37, align 8, !tbaa !9
  br label %3826

3824:                                             ; preds = %3812
  %3825 = load i64, ptr %34, align 8, !tbaa !9
  br label %3826

3826:                                             ; preds = %3824, %3822
  %3827 = phi i64 [ %3823, %3822 ], [ %3825, %3824 ]
  store i64 %3827, ptr %36, align 8, !tbaa !9
  %3828 = load i64, ptr %39, align 8, !tbaa !9
  store i64 %3828, ptr %40, align 8, !tbaa !9
  br label %3829

3829:                                             ; preds = %3848, %3826
  %3830 = load i64, ptr %40, align 8, !tbaa !9
  %3831 = load i64, ptr %36, align 8, !tbaa !9
  %3832 = icmp sle i64 %3830, %3831
  br i1 %3832, label %3833, label %3851

3833:                                             ; preds = %3829
  %3834 = load double, ptr %58, align 8, !tbaa !11
  %3835 = load ptr, ptr %20, align 8, !tbaa !5
  %3836 = load i64, ptr %39, align 8, !tbaa !9
  %3837 = load i64, ptr %40, align 8, !tbaa !9
  %3838 = sub nsw i64 %3836, %3837
  %3839 = load i64, ptr %53, align 8, !tbaa !9
  %3840 = add nsw i64 %3838, %3839
  %3841 = load i64, ptr %40, align 8, !tbaa !9
  %3842 = load i64, ptr %28, align 8, !tbaa !9
  %3843 = mul nsw i64 %3841, %3842
  %3844 = add nsw i64 %3840, %3843
  %3845 = getelementptr inbounds double, ptr %3835, i64 %3844
  %3846 = load double, ptr %3845, align 8, !tbaa !11
  %3847 = fdiv double %3846, %3834
  store double %3847, ptr %3845, align 8, !tbaa !11
  br label %3848

3848:                                             ; preds = %3833
  %3849 = load i64, ptr %40, align 8, !tbaa !9
  %3850 = add nsw i64 %3849, 1
  store i64 %3850, ptr %40, align 8, !tbaa !9
  br label %3829, !llvm.loop !61

3851:                                             ; preds = %3829
  %3852 = load i64, ptr %39, align 8, !tbaa !9
  %3853 = load i64, ptr %59, align 8, !tbaa !9
  %3854 = add nsw i64 %3852, %3853
  store i64 %3854, ptr %36, align 8, !tbaa !9
  %3855 = load i64, ptr %39, align 8, !tbaa !9
  %3856 = add nsw i64 %3855, 1
  store i64 %3856, ptr %41, align 8, !tbaa !9
  br label %3857

3857:                                             ; preds = %4050, %3851
  %3858 = load i64, ptr %41, align 8, !tbaa !9
  %3859 = load i64, ptr %36, align 8, !tbaa !9
  %3860 = icmp sle i64 %3858, %3859
  br i1 %3860, label %3861, label %4053

3861:                                             ; preds = %3857
  %3862 = load i64, ptr %39, align 8, !tbaa !9
  %3863 = load i64, ptr %59, align 8, !tbaa !9
  %3864 = add nsw i64 %3862, %3863
  store i64 %3864, ptr %37, align 8, !tbaa !9
  %3865 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %3865, ptr %40, align 8, !tbaa !9
  br label %3866

3866:                                             ; preds = %3980, %3861
  %3867 = load i64, ptr %40, align 8, !tbaa !9
  %3868 = load i64, ptr %37, align 8, !tbaa !9
  %3869 = icmp sle i64 %3867, %3868
  br i1 %3869, label %3870, label %3983

3870:                                             ; preds = %3866
  %3871 = load ptr, ptr %20, align 8, !tbaa !5
  %3872 = load i64, ptr %41, align 8, !tbaa !9
  %3873 = load i64, ptr %40, align 8, !tbaa !9
  %3874 = sub nsw i64 %3872, %3873
  %3875 = load i64, ptr %53, align 8, !tbaa !9
  %3876 = add nsw i64 %3874, %3875
  %3877 = load i64, ptr %40, align 8, !tbaa !9
  %3878 = load i64, ptr %28, align 8, !tbaa !9
  %3879 = mul nsw i64 %3877, %3878
  %3880 = add nsw i64 %3876, %3879
  %3881 = getelementptr inbounds double, ptr %3871, i64 %3880
  %3882 = load double, ptr %3881, align 8, !tbaa !11
  %3883 = load ptr, ptr %22, align 8, !tbaa !5
  %3884 = load i64, ptr %39, align 8, !tbaa !9
  %3885 = load i64, ptr %40, align 8, !tbaa !9
  %3886 = sub nsw i64 %3884, %3885
  %3887 = load i64, ptr %54, align 8, !tbaa !9
  %3888 = add nsw i64 %3886, %3887
  %3889 = load i64, ptr %40, align 8, !tbaa !9
  %3890 = load i64, ptr %30, align 8, !tbaa !9
  %3891 = mul nsw i64 %3889, %3890
  %3892 = add nsw i64 %3888, %3891
  %3893 = getelementptr inbounds double, ptr %3883, i64 %3892
  %3894 = load double, ptr %3893, align 8, !tbaa !11
  %3895 = load ptr, ptr %20, align 8, !tbaa !5
  %3896 = load i64, ptr %39, align 8, !tbaa !9
  %3897 = load i64, ptr %41, align 8, !tbaa !9
  %3898 = sub nsw i64 %3896, %3897
  %3899 = load i64, ptr %53, align 8, !tbaa !9
  %3900 = add nsw i64 %3898, %3899
  %3901 = load i64, ptr %41, align 8, !tbaa !9
  %3902 = load i64, ptr %28, align 8, !tbaa !9
  %3903 = mul nsw i64 %3901, %3902
  %3904 = add nsw i64 %3900, %3903
  %3905 = getelementptr inbounds double, ptr %3895, i64 %3904
  %3906 = load double, ptr %3905, align 8, !tbaa !11
  %3907 = fneg double %3894
  %3908 = call double @llvm.fmuladd.f64(double %3907, double %3906, double %3882)
  %3909 = load ptr, ptr %22, align 8, !tbaa !5
  %3910 = load i64, ptr %39, align 8, !tbaa !9
  %3911 = load i64, ptr %41, align 8, !tbaa !9
  %3912 = sub nsw i64 %3910, %3911
  %3913 = load i64, ptr %54, align 8, !tbaa !9
  %3914 = add nsw i64 %3912, %3913
  %3915 = load i64, ptr %41, align 8, !tbaa !9
  %3916 = load i64, ptr %30, align 8, !tbaa !9
  %3917 = mul nsw i64 %3915, %3916
  %3918 = add nsw i64 %3914, %3917
  %3919 = getelementptr inbounds double, ptr %3909, i64 %3918
  %3920 = load double, ptr %3919, align 8, !tbaa !11
  %3921 = load ptr, ptr %20, align 8, !tbaa !5
  %3922 = load i64, ptr %39, align 8, !tbaa !9
  %3923 = load i64, ptr %40, align 8, !tbaa !9
  %3924 = sub nsw i64 %3922, %3923
  %3925 = load i64, ptr %53, align 8, !tbaa !9
  %3926 = add nsw i64 %3924, %3925
  %3927 = load i64, ptr %40, align 8, !tbaa !9
  %3928 = load i64, ptr %28, align 8, !tbaa !9
  %3929 = mul nsw i64 %3927, %3928
  %3930 = add nsw i64 %3926, %3929
  %3931 = getelementptr inbounds double, ptr %3921, i64 %3930
  %3932 = load double, ptr %3931, align 8, !tbaa !11
  %3933 = fneg double %3920
  %3934 = call double @llvm.fmuladd.f64(double %3933, double %3932, double %3908)
  %3935 = load ptr, ptr %20, align 8, !tbaa !5
  %3936 = load i64, ptr %53, align 8, !tbaa !9
  %3937 = load i64, ptr %39, align 8, !tbaa !9
  %3938 = load i64, ptr %28, align 8, !tbaa !9
  %3939 = mul nsw i64 %3937, %3938
  %3940 = add nsw i64 %3936, %3939
  %3941 = getelementptr inbounds double, ptr %3935, i64 %3940
  %3942 = load double, ptr %3941, align 8, !tbaa !11
  %3943 = load ptr, ptr %22, align 8, !tbaa !5
  %3944 = load i64, ptr %39, align 8, !tbaa !9
  %3945 = load i64, ptr %40, align 8, !tbaa !9
  %3946 = sub nsw i64 %3944, %3945
  %3947 = load i64, ptr %54, align 8, !tbaa !9
  %3948 = add nsw i64 %3946, %3947
  %3949 = load i64, ptr %40, align 8, !tbaa !9
  %3950 = load i64, ptr %30, align 8, !tbaa !9
  %3951 = mul nsw i64 %3949, %3950
  %3952 = add nsw i64 %3948, %3951
  %3953 = getelementptr inbounds double, ptr %3943, i64 %3952
  %3954 = load double, ptr %3953, align 8, !tbaa !11
  %3955 = fmul double %3942, %3954
  %3956 = load ptr, ptr %22, align 8, !tbaa !5
  %3957 = load i64, ptr %39, align 8, !tbaa !9
  %3958 = load i64, ptr %41, align 8, !tbaa !9
  %3959 = sub nsw i64 %3957, %3958
  %3960 = load i64, ptr %54, align 8, !tbaa !9
  %3961 = add nsw i64 %3959, %3960
  %3962 = load i64, ptr %41, align 8, !tbaa !9
  %3963 = load i64, ptr %30, align 8, !tbaa !9
  %3964 = mul nsw i64 %3962, %3963
  %3965 = add nsw i64 %3961, %3964
  %3966 = getelementptr inbounds double, ptr %3956, i64 %3965
  %3967 = load double, ptr %3966, align 8, !tbaa !11
  %3968 = call double @llvm.fmuladd.f64(double %3955, double %3967, double %3934)
  %3969 = load ptr, ptr %20, align 8, !tbaa !5
  %3970 = load i64, ptr %41, align 8, !tbaa !9
  %3971 = load i64, ptr %40, align 8, !tbaa !9
  %3972 = sub nsw i64 %3970, %3971
  %3973 = load i64, ptr %53, align 8, !tbaa !9
  %3974 = add nsw i64 %3972, %3973
  %3975 = load i64, ptr %40, align 8, !tbaa !9
  %3976 = load i64, ptr %28, align 8, !tbaa !9
  %3977 = mul nsw i64 %3975, %3976
  %3978 = add nsw i64 %3974, %3977
  %3979 = getelementptr inbounds double, ptr %3969, i64 %3978
  store double %3968, ptr %3979, align 8, !tbaa !11
  br label %3980

3980:                                             ; preds = %3870
  %3981 = load i64, ptr %40, align 8, !tbaa !9
  %3982 = add nsw i64 %3981, 1
  store i64 %3982, ptr %40, align 8, !tbaa !9
  br label %3866, !llvm.loop !62

3983:                                             ; preds = %3866
  %3984 = load ptr, ptr %17, align 8, !tbaa !5
  %3985 = load i64, ptr %3984, align 8, !tbaa !9
  store i64 %3985, ptr %34, align 8, !tbaa !9
  %3986 = load i64, ptr %39, align 8, !tbaa !9
  %3987 = load ptr, ptr %18, align 8, !tbaa !5
  %3988 = load i64, ptr %3987, align 8, !tbaa !9
  %3989 = add nsw i64 %3986, %3988
  store i64 %3989, ptr %35, align 8, !tbaa !9
  %3990 = load i64, ptr %34, align 8, !tbaa !9
  %3991 = load i64, ptr %35, align 8, !tbaa !9
  %3992 = icmp sle i64 %3990, %3991
  br i1 %3992, label %3993, label %3995

3993:                                             ; preds = %3983
  %3994 = load i64, ptr %34, align 8, !tbaa !9
  br label %3997

3995:                                             ; preds = %3983
  %3996 = load i64, ptr %35, align 8, !tbaa !9
  br label %3997

3997:                                             ; preds = %3995, %3993
  %3998 = phi i64 [ %3994, %3993 ], [ %3996, %3995 ]
  store i64 %3998, ptr %37, align 8, !tbaa !9
  %3999 = load i64, ptr %39, align 8, !tbaa !9
  %4000 = load i64, ptr %59, align 8, !tbaa !9
  %4001 = add nsw i64 %3999, %4000
  %4002 = add nsw i64 %4001, 1
  store i64 %4002, ptr %40, align 8, !tbaa !9
  br label %4003

4003:                                             ; preds = %4046, %3997
  %4004 = load i64, ptr %40, align 8, !tbaa !9
  %4005 = load i64, ptr %37, align 8, !tbaa !9
  %4006 = icmp sle i64 %4004, %4005
  br i1 %4006, label %4007, label %4049

4007:                                             ; preds = %4003
  %4008 = load ptr, ptr %22, align 8, !tbaa !5
  %4009 = load i64, ptr %39, align 8, !tbaa !9
  %4010 = load i64, ptr %41, align 8, !tbaa !9
  %4011 = sub nsw i64 %4009, %4010
  %4012 = load i64, ptr %54, align 8, !tbaa !9
  %4013 = add nsw i64 %4011, %4012
  %4014 = load i64, ptr %41, align 8, !tbaa !9
  %4015 = load i64, ptr %30, align 8, !tbaa !9
  %4016 = mul nsw i64 %4014, %4015
  %4017 = add nsw i64 %4013, %4016
  %4018 = getelementptr inbounds double, ptr %4008, i64 %4017
  %4019 = load double, ptr %4018, align 8, !tbaa !11
  %4020 = load ptr, ptr %20, align 8, !tbaa !5
  %4021 = load i64, ptr %39, align 8, !tbaa !9
  %4022 = load i64, ptr %40, align 8, !tbaa !9
  %4023 = sub nsw i64 %4021, %4022
  %4024 = load i64, ptr %53, align 8, !tbaa !9
  %4025 = add nsw i64 %4023, %4024
  %4026 = load i64, ptr %40, align 8, !tbaa !9
  %4027 = load i64, ptr %28, align 8, !tbaa !9
  %4028 = mul nsw i64 %4026, %4027
  %4029 = add nsw i64 %4025, %4028
  %4030 = getelementptr inbounds double, ptr %4020, i64 %4029
  %4031 = load double, ptr %4030, align 8, !tbaa !11
  %4032 = load ptr, ptr %20, align 8, !tbaa !5
  %4033 = load i64, ptr %41, align 8, !tbaa !9
  %4034 = load i64, ptr %40, align 8, !tbaa !9
  %4035 = sub nsw i64 %4033, %4034
  %4036 = load i64, ptr %53, align 8, !tbaa !9
  %4037 = add nsw i64 %4035, %4036
  %4038 = load i64, ptr %40, align 8, !tbaa !9
  %4039 = load i64, ptr %28, align 8, !tbaa !9
  %4040 = mul nsw i64 %4038, %4039
  %4041 = add nsw i64 %4037, %4040
  %4042 = getelementptr inbounds double, ptr %4032, i64 %4041
  %4043 = load double, ptr %4042, align 8, !tbaa !11
  %4044 = fneg double %4019
  %4045 = call double @llvm.fmuladd.f64(double %4044, double %4031, double %4043)
  store double %4045, ptr %4042, align 8, !tbaa !11
  br label %4046

4046:                                             ; preds = %4007
  %4047 = load i64, ptr %40, align 8, !tbaa !9
  %4048 = add nsw i64 %4047, 1
  store i64 %4048, ptr %40, align 8, !tbaa !9
  br label %4003, !llvm.loop !63

4049:                                             ; preds = %4003
  br label %4050

4050:                                             ; preds = %4049
  %4051 = load i64, ptr %41, align 8, !tbaa !9
  %4052 = add nsw i64 %4051, 1
  store i64 %4052, ptr %41, align 8, !tbaa !9
  br label %3857, !llvm.loop !64

4053:                                             ; preds = %3857
  %4054 = load i64, ptr %39, align 8, !tbaa !9
  store i64 %4054, ptr %36, align 8, !tbaa !9
  %4055 = load i64, ptr %46, align 8, !tbaa !9
  store i64 %4055, ptr %40, align 8, !tbaa !9
  br label %4056

4056:                                             ; preds = %4126, %4053
  %4057 = load i64, ptr %40, align 8, !tbaa !9
  %4058 = load i64, ptr %36, align 8, !tbaa !9
  %4059 = icmp sle i64 %4057, %4058
  br i1 %4059, label %4060, label %4129

4060:                                             ; preds = %4056
  %4061 = load i64, ptr %40, align 8, !tbaa !9
  %4062 = load ptr, ptr %18, align 8, !tbaa !5
  %4063 = load i64, ptr %4062, align 8, !tbaa !9
  %4064 = add nsw i64 %4061, %4063
  store i64 %4064, ptr %34, align 8, !tbaa !9
  %4065 = load i64, ptr %39, align 8, !tbaa !9
  %4066 = load i64, ptr %59, align 8, !tbaa !9
  %4067 = add nsw i64 %4065, %4066
  store i64 %4067, ptr %35, align 8, !tbaa !9
  %4068 = load i64, ptr %34, align 8, !tbaa !9
  %4069 = load i64, ptr %35, align 8, !tbaa !9
  %4070 = icmp sle i64 %4068, %4069
  br i1 %4070, label %4071, label %4073

4071:                                             ; preds = %4060
  %4072 = load i64, ptr %34, align 8, !tbaa !9
  br label %4075

4073:                                             ; preds = %4060
  %4074 = load i64, ptr %35, align 8, !tbaa !9
  br label %4075

4075:                                             ; preds = %4073, %4071
  %4076 = phi i64 [ %4072, %4071 ], [ %4074, %4073 ]
  store i64 %4076, ptr %37, align 8, !tbaa !9
  %4077 = load i64, ptr %39, align 8, !tbaa !9
  %4078 = add nsw i64 %4077, 1
  store i64 %4078, ptr %41, align 8, !tbaa !9
  br label %4079

4079:                                             ; preds = %4122, %4075
  %4080 = load i64, ptr %41, align 8, !tbaa !9
  %4081 = load i64, ptr %37, align 8, !tbaa !9
  %4082 = icmp sle i64 %4080, %4081
  br i1 %4082, label %4083, label %4125

4083:                                             ; preds = %4079
  %4084 = load ptr, ptr %22, align 8, !tbaa !5
  %4085 = load i64, ptr %39, align 8, !tbaa !9
  %4086 = load i64, ptr %41, align 8, !tbaa !9
  %4087 = sub nsw i64 %4085, %4086
  %4088 = load i64, ptr %54, align 8, !tbaa !9
  %4089 = add nsw i64 %4087, %4088
  %4090 = load i64, ptr %41, align 8, !tbaa !9
  %4091 = load i64, ptr %30, align 8, !tbaa !9
  %4092 = mul nsw i64 %4090, %4091
  %4093 = add nsw i64 %4089, %4092
  %4094 = getelementptr inbounds double, ptr %4084, i64 %4093
  %4095 = load double, ptr %4094, align 8, !tbaa !11
  %4096 = load ptr, ptr %20, align 8, !tbaa !5
  %4097 = load i64, ptr %40, align 8, !tbaa !9
  %4098 = load i64, ptr %39, align 8, !tbaa !9
  %4099 = sub nsw i64 %4097, %4098
  %4100 = load i64, ptr %53, align 8, !tbaa !9
  %4101 = add nsw i64 %4099, %4100
  %4102 = load i64, ptr %39, align 8, !tbaa !9
  %4103 = load i64, ptr %28, align 8, !tbaa !9
  %4104 = mul nsw i64 %4102, %4103
  %4105 = add nsw i64 %4101, %4104
  %4106 = getelementptr inbounds double, ptr %4096, i64 %4105
  %4107 = load double, ptr %4106, align 8, !tbaa !11
  %4108 = load ptr, ptr %20, align 8, !tbaa !5
  %4109 = load i64, ptr %40, align 8, !tbaa !9
  %4110 = load i64, ptr %41, align 8, !tbaa !9
  %4111 = sub nsw i64 %4109, %4110
  %4112 = load i64, ptr %53, align 8, !tbaa !9
  %4113 = add nsw i64 %4111, %4112
  %4114 = load i64, ptr %41, align 8, !tbaa !9
  %4115 = load i64, ptr %28, align 8, !tbaa !9
  %4116 = mul nsw i64 %4114, %4115
  %4117 = add nsw i64 %4113, %4116
  %4118 = getelementptr inbounds double, ptr %4108, i64 %4117
  %4119 = load double, ptr %4118, align 8, !tbaa !11
  %4120 = fneg double %4095
  %4121 = call double @llvm.fmuladd.f64(double %4120, double %4107, double %4119)
  store double %4121, ptr %4118, align 8, !tbaa !11
  br label %4122

4122:                                             ; preds = %4083
  %4123 = load i64, ptr %41, align 8, !tbaa !9
  %4124 = add nsw i64 %4123, 1
  store i64 %4124, ptr %41, align 8, !tbaa !9
  br label %4079, !llvm.loop !65

4125:                                             ; preds = %4079
  br label %4126

4126:                                             ; preds = %4125
  %4127 = load i64, ptr %40, align 8, !tbaa !9
  %4128 = add nsw i64 %4127, 1
  store i64 %4128, ptr %40, align 8, !tbaa !9
  br label %4056, !llvm.loop !66

4129:                                             ; preds = %4056
  %4130 = load i64, ptr %63, align 8, !tbaa !9
  %4131 = icmp ne i64 %4130, 0
  br i1 %4131, label %4132, label %4173

4132:                                             ; preds = %4129
  %4133 = load double, ptr %58, align 8, !tbaa !11
  %4134 = fdiv double 1.000000e+00, %4133
  store double %4134, ptr %38, align 8, !tbaa !11
  %4135 = load ptr, ptr %24, align 8, !tbaa !5
  %4136 = load i64, ptr %39, align 8, !tbaa !9
  %4137 = load i64, ptr %32, align 8, !tbaa !9
  %4138 = mul nsw i64 %4136, %4137
  %4139 = add nsw i64 %4138, 1
  %4140 = getelementptr inbounds double, ptr %4135, i64 %4139
  %4141 = call i32 @f2c_dscal(ptr noundef %52, ptr noundef %38, ptr noundef %4140, ptr noundef @c__1)
  %4142 = load i64, ptr %59, align 8, !tbaa !9
  %4143 = icmp sgt i64 %4142, 0
  br i1 %4143, label %4144, label %4172

4144:                                             ; preds = %4132
  %4145 = load ptr, ptr %23, align 8, !tbaa !5
  %4146 = load i64, ptr %4145, align 8, !tbaa !9
  %4147 = sub nsw i64 %4146, 1
  store i64 %4147, ptr %36, align 8, !tbaa !9
  %4148 = load ptr, ptr %24, align 8, !tbaa !5
  %4149 = load i64, ptr %39, align 8, !tbaa !9
  %4150 = load i64, ptr %32, align 8, !tbaa !9
  %4151 = mul nsw i64 %4149, %4150
  %4152 = add nsw i64 %4151, 1
  %4153 = getelementptr inbounds double, ptr %4148, i64 %4152
  %4154 = load ptr, ptr %22, align 8, !tbaa !5
  %4155 = load ptr, ptr %19, align 8, !tbaa !5
  %4156 = load i64, ptr %4155, align 8, !tbaa !9
  %4157 = load i64, ptr %39, align 8, !tbaa !9
  %4158 = add nsw i64 %4157, 1
  %4159 = load i64, ptr %30, align 8, !tbaa !9
  %4160 = mul nsw i64 %4158, %4159
  %4161 = add nsw i64 %4156, %4160
  %4162 = getelementptr inbounds double, ptr %4154, i64 %4161
  %4163 = load ptr, ptr %24, align 8, !tbaa !5
  %4164 = load i64, ptr %39, align 8, !tbaa !9
  %4165 = add nsw i64 %4164, 1
  %4166 = load i64, ptr %32, align 8, !tbaa !9
  %4167 = mul nsw i64 %4165, %4166
  %4168 = add nsw i64 %4167, 1
  %4169 = getelementptr inbounds double, ptr %4163, i64 %4168
  %4170 = load ptr, ptr %25, align 8, !tbaa !5
  %4171 = call i32 @f2c_dger(ptr noundef %52, ptr noundef %59, ptr noundef @c_b20, ptr noundef %4153, ptr noundef @c__1, ptr noundef %4162, ptr noundef %36, ptr noundef %4169, ptr noundef %4170)
  br label %4172

4172:                                             ; preds = %4144, %4132
  br label %4173

4173:                                             ; preds = %4172, %4129
  %4174 = load ptr, ptr %20, align 8, !tbaa !5
  %4175 = load i64, ptr %46, align 8, !tbaa !9
  %4176 = load i64, ptr %39, align 8, !tbaa !9
  %4177 = sub nsw i64 %4175, %4176
  %4178 = load i64, ptr %53, align 8, !tbaa !9
  %4179 = add nsw i64 %4177, %4178
  %4180 = load i64, ptr %39, align 8, !tbaa !9
  %4181 = load i64, ptr %28, align 8, !tbaa !9
  %4182 = mul nsw i64 %4180, %4181
  %4183 = add nsw i64 %4179, %4182
  %4184 = getelementptr inbounds double, ptr %4174, i64 %4183
  %4185 = load double, ptr %4184, align 8, !tbaa !11
  store double %4185, ptr %55, align 8, !tbaa !11
  br label %4186

4186:                                             ; preds = %4173, %3776
  %4187 = load ptr, ptr %19, align 8, !tbaa !5
  %4188 = load i64, ptr %4187, align 8, !tbaa !9
  %4189 = sub nsw i64 %4188, 1
  store i64 %4189, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %41, align 8, !tbaa !9
  br label %4190

4190:                                             ; preds = %4694, %4186
  %4191 = load i64, ptr %41, align 8, !tbaa !9
  %4192 = load i64, ptr %36, align 8, !tbaa !9
  %4193 = icmp sle i64 %4191, %4192
  br i1 %4193, label %4194, label %4697

4194:                                             ; preds = %4190
  %4195 = load i64, ptr %64, align 8, !tbaa !9
  %4196 = icmp ne i64 %4195, 0
  br i1 %4196, label %4197, label %4341

4197:                                             ; preds = %4194
  %4198 = load i64, ptr %39, align 8, !tbaa !9
  %4199 = load i64, ptr %41, align 8, !tbaa !9
  %4200 = add nsw i64 %4198, %4199
  %4201 = load i64, ptr %53, align 8, !tbaa !9
  %4202 = sub nsw i64 %4200, %4201
  %4203 = icmp sgt i64 %4202, 0
  br i1 %4203, label %4204, label %4340

4204:                                             ; preds = %4197
  %4205 = load i64, ptr %39, align 8, !tbaa !9
  %4206 = load i64, ptr %41, align 8, !tbaa !9
  %4207 = add nsw i64 %4205, %4206
  %4208 = load i64, ptr %43, align 8, !tbaa !9
  %4209 = icmp slt i64 %4207, %4208
  br i1 %4209, label %4210, label %4340

4210:                                             ; preds = %4204
  %4211 = load ptr, ptr %20, align 8, !tbaa !5
  %4212 = load i64, ptr %41, align 8, !tbaa !9
  %4213 = add nsw i64 %4212, 1
  %4214 = load i64, ptr %39, align 8, !tbaa !9
  %4215 = load i64, ptr %28, align 8, !tbaa !9
  %4216 = mul nsw i64 %4214, %4215
  %4217 = add nsw i64 %4213, %4216
  %4218 = getelementptr inbounds double, ptr %4211, i64 %4217
  %4219 = load ptr, ptr %26, align 8, !tbaa !5
  %4220 = load ptr, ptr %17, align 8, !tbaa !5
  %4221 = load i64, ptr %4220, align 8, !tbaa !9
  %4222 = load i64, ptr %39, align 8, !tbaa !9
  %4223 = add nsw i64 %4221, %4222
  %4224 = load i64, ptr %41, align 8, !tbaa !9
  %4225 = add nsw i64 %4223, %4224
  %4226 = load ptr, ptr %18, align 8, !tbaa !5
  %4227 = load i64, ptr %4226, align 8, !tbaa !9
  %4228 = sub nsw i64 %4225, %4227
  %4229 = getelementptr inbounds double, ptr %4219, i64 %4228
  %4230 = load ptr, ptr %26, align 8, !tbaa !5
  %4231 = load i64, ptr %39, align 8, !tbaa !9
  %4232 = load i64, ptr %41, align 8, !tbaa !9
  %4233 = add nsw i64 %4231, %4232
  %4234 = load ptr, ptr %18, align 8, !tbaa !5
  %4235 = load i64, ptr %4234, align 8, !tbaa !9
  %4236 = sub nsw i64 %4233, %4235
  %4237 = getelementptr inbounds double, ptr %4230, i64 %4236
  %4238 = call i32 @dlartg_(ptr noundef %4218, ptr noundef %55, ptr noundef %4229, ptr noundef %4237, ptr noundef %50)
  %4239 = load ptr, ptr %22, align 8, !tbaa !5
  %4240 = load i64, ptr %54, align 8, !tbaa !9
  %4241 = load i64, ptr %41, align 8, !tbaa !9
  %4242 = sub nsw i64 %4240, %4241
  %4243 = load i64, ptr %39, align 8, !tbaa !9
  %4244 = load i64, ptr %41, align 8, !tbaa !9
  %4245 = add nsw i64 %4243, %4244
  %4246 = load i64, ptr %30, align 8, !tbaa !9
  %4247 = mul nsw i64 %4245, %4246
  %4248 = add nsw i64 %4242, %4247
  %4249 = getelementptr inbounds double, ptr %4239, i64 %4248
  %4250 = load double, ptr %4249, align 8, !tbaa !11
  %4251 = fneg double %4250
  %4252 = load double, ptr %55, align 8, !tbaa !11
  %4253 = fmul double %4251, %4252
  store double %4253, ptr %44, align 8, !tbaa !11
  %4254 = load ptr, ptr %26, align 8, !tbaa !5
  %4255 = load ptr, ptr %17, align 8, !tbaa !5
  %4256 = load i64, ptr %4255, align 8, !tbaa !9
  %4257 = load i64, ptr %39, align 8, !tbaa !9
  %4258 = add nsw i64 %4256, %4257
  %4259 = load i64, ptr %41, align 8, !tbaa !9
  %4260 = add nsw i64 %4258, %4259
  %4261 = load ptr, ptr %18, align 8, !tbaa !5
  %4262 = load i64, ptr %4261, align 8, !tbaa !9
  %4263 = sub nsw i64 %4260, %4262
  %4264 = getelementptr inbounds double, ptr %4254, i64 %4263
  %4265 = load double, ptr %4264, align 8, !tbaa !11
  %4266 = load double, ptr %44, align 8, !tbaa !11
  %4267 = load ptr, ptr %26, align 8, !tbaa !5
  %4268 = load i64, ptr %39, align 8, !tbaa !9
  %4269 = load i64, ptr %41, align 8, !tbaa !9
  %4270 = add nsw i64 %4268, %4269
  %4271 = load ptr, ptr %18, align 8, !tbaa !5
  %4272 = load i64, ptr %4271, align 8, !tbaa !9
  %4273 = sub nsw i64 %4270, %4272
  %4274 = getelementptr inbounds double, ptr %4267, i64 %4273
  %4275 = load double, ptr %4274, align 8, !tbaa !11
  %4276 = load ptr, ptr %20, align 8, !tbaa !5
  %4277 = load i64, ptr %39, align 8, !tbaa !9
  %4278 = load i64, ptr %41, align 8, !tbaa !9
  %4279 = add nsw i64 %4277, %4278
  %4280 = load i64, ptr %28, align 8, !tbaa !9
  %4281 = mul nsw i64 %4279, %4280
  %4282 = add nsw i64 %4281, 1
  %4283 = getelementptr inbounds double, ptr %4276, i64 %4282
  %4284 = load double, ptr %4283, align 8, !tbaa !11
  %4285 = fmul double %4275, %4284
  %4286 = fneg double %4285
  %4287 = call double @llvm.fmuladd.f64(double %4265, double %4266, double %4286)
  %4288 = load ptr, ptr %26, align 8, !tbaa !5
  %4289 = load i64, ptr %43, align 8, !tbaa !9
  %4290 = load ptr, ptr %19, align 8, !tbaa !5
  %4291 = load i64, ptr %4290, align 8, !tbaa !9
  %4292 = sub nsw i64 %4289, %4291
  %4293 = load i64, ptr %39, align 8, !tbaa !9
  %4294 = add nsw i64 %4292, %4293
  %4295 = load i64, ptr %41, align 8, !tbaa !9
  %4296 = add nsw i64 %4294, %4295
  %4297 = getelementptr inbounds double, ptr %4288, i64 %4296
  store double %4287, ptr %4297, align 8, !tbaa !11
  %4298 = load ptr, ptr %26, align 8, !tbaa !5
  %4299 = load i64, ptr %39, align 8, !tbaa !9
  %4300 = load i64, ptr %41, align 8, !tbaa !9
  %4301 = add nsw i64 %4299, %4300
  %4302 = load ptr, ptr %18, align 8, !tbaa !5
  %4303 = load i64, ptr %4302, align 8, !tbaa !9
  %4304 = sub nsw i64 %4301, %4303
  %4305 = getelementptr inbounds double, ptr %4298, i64 %4304
  %4306 = load double, ptr %4305, align 8, !tbaa !11
  %4307 = load double, ptr %44, align 8, !tbaa !11
  %4308 = load ptr, ptr %26, align 8, !tbaa !5
  %4309 = load ptr, ptr %17, align 8, !tbaa !5
  %4310 = load i64, ptr %4309, align 8, !tbaa !9
  %4311 = load i64, ptr %39, align 8, !tbaa !9
  %4312 = add nsw i64 %4310, %4311
  %4313 = load i64, ptr %41, align 8, !tbaa !9
  %4314 = add nsw i64 %4312, %4313
  %4315 = load ptr, ptr %18, align 8, !tbaa !5
  %4316 = load i64, ptr %4315, align 8, !tbaa !9
  %4317 = sub nsw i64 %4314, %4316
  %4318 = getelementptr inbounds double, ptr %4308, i64 %4317
  %4319 = load double, ptr %4318, align 8, !tbaa !11
  %4320 = load ptr, ptr %20, align 8, !tbaa !5
  %4321 = load i64, ptr %39, align 8, !tbaa !9
  %4322 = load i64, ptr %41, align 8, !tbaa !9
  %4323 = add nsw i64 %4321, %4322
  %4324 = load i64, ptr %28, align 8, !tbaa !9
  %4325 = mul nsw i64 %4323, %4324
  %4326 = add nsw i64 %4325, 1
  %4327 = getelementptr inbounds double, ptr %4320, i64 %4326
  %4328 = load double, ptr %4327, align 8, !tbaa !11
  %4329 = fmul double %4319, %4328
  %4330 = call double @llvm.fmuladd.f64(double %4306, double %4307, double %4329)
  %4331 = load ptr, ptr %20, align 8, !tbaa !5
  %4332 = load i64, ptr %39, align 8, !tbaa !9
  %4333 = load i64, ptr %41, align 8, !tbaa !9
  %4334 = add nsw i64 %4332, %4333
  %4335 = load i64, ptr %28, align 8, !tbaa !9
  %4336 = mul nsw i64 %4334, %4335
  %4337 = add nsw i64 %4336, 1
  %4338 = getelementptr inbounds double, ptr %4331, i64 %4337
  store double %4330, ptr %4338, align 8, !tbaa !11
  %4339 = load double, ptr %50, align 8, !tbaa !11
  store double %4339, ptr %55, align 8, !tbaa !11
  br label %4340

4340:                                             ; preds = %4210, %4204, %4197
  br label %4341

4341:                                             ; preds = %4340, %4194
  store i64 1, ptr %37, align 8, !tbaa !9
  %4342 = load i64, ptr %41, align 8, !tbaa !9
  %4343 = load i64, ptr %45, align 8, !tbaa !9
  %4344 = add nsw i64 %4342, %4343
  %4345 = load i64, ptr %43, align 8, !tbaa !9
  %4346 = sub nsw i64 %4344, %4345
  %4347 = add nsw i64 %4346, 1
  store i64 %4347, ptr %34, align 8, !tbaa !9
  %4348 = load i64, ptr %39, align 8, !tbaa !9
  %4349 = load i64, ptr %41, align 8, !tbaa !9
  %4350 = add nsw i64 %4348, %4349
  %4351 = add nsw i64 %4350, 1
  %4352 = load i64, ptr %37, align 8, !tbaa !9
  %4353 = load i64, ptr %34, align 8, !tbaa !9
  %4354 = icmp sge i64 %4352, %4353
  br i1 %4354, label %4355, label %4357

4355:                                             ; preds = %4341
  %4356 = load i64, ptr %37, align 8, !tbaa !9
  br label %4359

4357:                                             ; preds = %4341
  %4358 = load i64, ptr %34, align 8, !tbaa !9
  br label %4359

4359:                                             ; preds = %4357, %4355
  %4360 = phi i64 [ %4356, %4355 ], [ %4358, %4357 ]
  %4361 = load i64, ptr %53, align 8, !tbaa !9
  %4362 = mul nsw i64 %4360, %4361
  %4363 = sub nsw i64 %4351, %4362
  store i64 %4363, ptr %49, align 8, !tbaa !9
  %4364 = load i64, ptr %49, align 8, !tbaa !9
  %4365 = load ptr, ptr %18, align 8, !tbaa !5
  %4366 = load i64, ptr %4365, align 8, !tbaa !9
  %4367 = add nsw i64 %4364, %4366
  %4368 = sub nsw i64 %4367, 1
  %4369 = load i64, ptr %53, align 8, !tbaa !9
  %4370 = sdiv i64 %4368, %4369
  store i64 %4370, ptr %51, align 8, !tbaa !9
  %4371 = load i64, ptr %49, align 8, !tbaa !9
  %4372 = load i64, ptr %51, align 8, !tbaa !9
  %4373 = sub nsw i64 %4372, 1
  %4374 = load i64, ptr %53, align 8, !tbaa !9
  %4375 = mul nsw i64 %4373, %4374
  %4376 = sub nsw i64 %4371, %4375
  store i64 %4376, ptr %48, align 8, !tbaa !9
  %4377 = load i64, ptr %64, align 8, !tbaa !9
  %4378 = icmp ne i64 %4377, 0
  br i1 %4378, label %4379, label %4398

4379:                                             ; preds = %4359
  %4380 = load i64, ptr %49, align 8, !tbaa !9
  store i64 %4380, ptr %37, align 8, !tbaa !9
  %4381 = load i64, ptr %39, align 8, !tbaa !9
  %4382 = load ptr, ptr %18, align 8, !tbaa !5
  %4383 = load i64, ptr %4382, align 8, !tbaa !9
  %4384 = shl i64 %4383, 1
  %4385 = sub nsw i64 %4381, %4384
  %4386 = load i64, ptr %41, align 8, !tbaa !9
  %4387 = add nsw i64 %4385, %4386
  %4388 = sub nsw i64 %4387, 1
  store i64 %4388, ptr %34, align 8, !tbaa !9
  %4389 = load i64, ptr %37, align 8, !tbaa !9
  %4390 = load i64, ptr %34, align 8, !tbaa !9
  %4391 = icmp sle i64 %4389, %4390
  br i1 %4391, label %4392, label %4394

4392:                                             ; preds = %4379
  %4393 = load i64, ptr %37, align 8, !tbaa !9
  br label %4396

4394:                                             ; preds = %4379
  %4395 = load i64, ptr %34, align 8, !tbaa !9
  br label %4396

4396:                                             ; preds = %4394, %4392
  %4397 = phi i64 [ %4393, %4392 ], [ %4395, %4394 ]
  store i64 %4397, ptr %57, align 8, !tbaa !9
  br label %4400

4398:                                             ; preds = %4359
  %4399 = load i64, ptr %49, align 8, !tbaa !9
  store i64 %4399, ptr %57, align 8, !tbaa !9
  br label %4400

4400:                                             ; preds = %4398, %4396
  %4401 = load i64, ptr %57, align 8, !tbaa !9
  %4402 = load ptr, ptr %18, align 8, !tbaa !5
  %4403 = load i64, ptr %4402, align 8, !tbaa !9
  %4404 = add nsw i64 %4401, %4403
  %4405 = sub nsw i64 %4404, 1
  %4406 = load i64, ptr %53, align 8, !tbaa !9
  %4407 = sdiv i64 %4405, %4406
  store i64 %4407, ptr %60, align 8, !tbaa !9
  %4408 = load i64, ptr %57, align 8, !tbaa !9
  store i64 %4408, ptr %37, align 8, !tbaa !9
  %4409 = load i64, ptr %53, align 8, !tbaa !9
  store i64 %4409, ptr %34, align 8, !tbaa !9
  %4410 = load i64, ptr %48, align 8, !tbaa !9
  store i64 %4410, ptr %40, align 8, !tbaa !9
  br label %4411

4411:                                             ; preds = %4473, %4400
  %4412 = load i64, ptr %34, align 8, !tbaa !9
  %4413 = icmp slt i64 %4412, 0
  br i1 %4413, label %4414, label %4419

4414:                                             ; preds = %4411
  %4415 = load i64, ptr %40, align 8, !tbaa !9
  %4416 = load i64, ptr %37, align 8, !tbaa !9
  %4417 = icmp sge i64 %4415, %4416
  %4418 = zext i1 %4417 to i32
  br label %4424

4419:                                             ; preds = %4411
  %4420 = load i64, ptr %40, align 8, !tbaa !9
  %4421 = load i64, ptr %37, align 8, !tbaa !9
  %4422 = icmp sle i64 %4420, %4421
  %4423 = zext i1 %4422 to i32
  br label %4424

4424:                                             ; preds = %4419, %4414
  %4425 = phi i32 [ %4418, %4414 ], [ %4423, %4419 ]
  %4426 = icmp ne i32 %4425, 0
  br i1 %4426, label %4427, label %4477

4427:                                             ; preds = %4424
  %4428 = load ptr, ptr %20, align 8, !tbaa !5
  %4429 = load i64, ptr %40, align 8, !tbaa !9
  %4430 = load ptr, ptr %18, align 8, !tbaa !5
  %4431 = load i64, ptr %4430, align 8, !tbaa !9
  %4432 = add nsw i64 %4429, %4431
  %4433 = sub nsw i64 %4432, 1
  %4434 = load i64, ptr %28, align 8, !tbaa !9
  %4435 = mul nsw i64 %4433, %4434
  %4436 = add nsw i64 %4435, 1
  %4437 = getelementptr inbounds double, ptr %4428, i64 %4436
  %4438 = load double, ptr %4437, align 8, !tbaa !11
  %4439 = load ptr, ptr %26, align 8, !tbaa !5
  %4440 = load i64, ptr %40, align 8, !tbaa !9
  %4441 = getelementptr inbounds double, ptr %4439, i64 %4440
  %4442 = load double, ptr %4441, align 8, !tbaa !11
  %4443 = fmul double %4442, %4438
  store double %4443, ptr %4441, align 8, !tbaa !11
  %4444 = load ptr, ptr %26, align 8, !tbaa !5
  %4445 = load ptr, ptr %17, align 8, !tbaa !5
  %4446 = load i64, ptr %4445, align 8, !tbaa !9
  %4447 = load i64, ptr %40, align 8, !tbaa !9
  %4448 = add nsw i64 %4446, %4447
  %4449 = getelementptr inbounds double, ptr %4444, i64 %4448
  %4450 = load double, ptr %4449, align 8, !tbaa !11
  %4451 = load ptr, ptr %20, align 8, !tbaa !5
  %4452 = load i64, ptr %40, align 8, !tbaa !9
  %4453 = load ptr, ptr %18, align 8, !tbaa !5
  %4454 = load i64, ptr %4453, align 8, !tbaa !9
  %4455 = add nsw i64 %4452, %4454
  %4456 = sub nsw i64 %4455, 1
  %4457 = load i64, ptr %28, align 8, !tbaa !9
  %4458 = mul nsw i64 %4456, %4457
  %4459 = add nsw i64 %4458, 1
  %4460 = getelementptr inbounds double, ptr %4451, i64 %4459
  %4461 = load double, ptr %4460, align 8, !tbaa !11
  %4462 = fmul double %4450, %4461
  %4463 = load ptr, ptr %20, align 8, !tbaa !5
  %4464 = load i64, ptr %40, align 8, !tbaa !9
  %4465 = load ptr, ptr %18, align 8, !tbaa !5
  %4466 = load i64, ptr %4465, align 8, !tbaa !9
  %4467 = add nsw i64 %4464, %4466
  %4468 = sub nsw i64 %4467, 1
  %4469 = load i64, ptr %28, align 8, !tbaa !9
  %4470 = mul nsw i64 %4468, %4469
  %4471 = add nsw i64 %4470, 1
  %4472 = getelementptr inbounds double, ptr %4463, i64 %4471
  store double %4462, ptr %4472, align 8, !tbaa !11
  br label %4473

4473:                                             ; preds = %4427
  %4474 = load i64, ptr %34, align 8, !tbaa !9
  %4475 = load i64, ptr %40, align 8, !tbaa !9
  %4476 = add nsw i64 %4475, %4474
  store i64 %4476, ptr %40, align 8, !tbaa !9
  br label %4411, !llvm.loop !67

4477:                                             ; preds = %4424
  %4478 = load i64, ptr %60, align 8, !tbaa !9
  %4479 = icmp sgt i64 %4478, 0
  br i1 %4479, label %4480, label %4500

4480:                                             ; preds = %4477
  %4481 = load ptr, ptr %20, align 8, !tbaa !5
  %4482 = load i64, ptr %48, align 8, !tbaa !9
  %4483 = load ptr, ptr %18, align 8, !tbaa !5
  %4484 = load i64, ptr %4483, align 8, !tbaa !9
  %4485 = add nsw i64 %4482, %4484
  %4486 = load i64, ptr %28, align 8, !tbaa !9
  %4487 = mul nsw i64 %4485, %4486
  %4488 = add nsw i64 %4487, 1
  %4489 = getelementptr inbounds double, ptr %4481, i64 %4488
  %4490 = load ptr, ptr %26, align 8, !tbaa !5
  %4491 = load i64, ptr %48, align 8, !tbaa !9
  %4492 = getelementptr inbounds double, ptr %4490, i64 %4491
  %4493 = load ptr, ptr %26, align 8, !tbaa !5
  %4494 = load ptr, ptr %17, align 8, !tbaa !5
  %4495 = load i64, ptr %4494, align 8, !tbaa !9
  %4496 = load i64, ptr %48, align 8, !tbaa !9
  %4497 = add nsw i64 %4495, %4496
  %4498 = getelementptr inbounds double, ptr %4493, i64 %4497
  %4499 = call i32 @dlargv_(ptr noundef %60, ptr noundef %4489, ptr noundef %61, ptr noundef %4492, ptr noundef %53, ptr noundef %4498, ptr noundef %53)
  br label %4500

4500:                                             ; preds = %4480, %4477
  %4501 = load i64, ptr %51, align 8, !tbaa !9
  %4502 = icmp sgt i64 %4501, 0
  br i1 %4502, label %4503, label %4582

4503:                                             ; preds = %4500
  %4504 = load ptr, ptr %18, align 8, !tbaa !5
  %4505 = load i64, ptr %4504, align 8, !tbaa !9
  %4506 = sub nsw i64 %4505, 1
  store i64 %4506, ptr %34, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %4507

4507:                                             ; preds = %4545, %4503
  %4508 = load i64, ptr %42, align 8, !tbaa !9
  %4509 = load i64, ptr %34, align 8, !tbaa !9
  %4510 = icmp sle i64 %4508, %4509
  br i1 %4510, label %4511, label %4548

4511:                                             ; preds = %4507
  %4512 = load ptr, ptr %20, align 8, !tbaa !5
  %4513 = load i64, ptr %53, align 8, !tbaa !9
  %4514 = load i64, ptr %42, align 8, !tbaa !9
  %4515 = sub nsw i64 %4513, %4514
  %4516 = load i64, ptr %48, align 8, !tbaa !9
  %4517 = load i64, ptr %42, align 8, !tbaa !9
  %4518 = add nsw i64 %4516, %4517
  %4519 = load i64, ptr %28, align 8, !tbaa !9
  %4520 = mul nsw i64 %4518, %4519
  %4521 = add nsw i64 %4515, %4520
  %4522 = getelementptr inbounds double, ptr %4512, i64 %4521
  %4523 = load ptr, ptr %20, align 8, !tbaa !5
  %4524 = load ptr, ptr %18, align 8, !tbaa !5
  %4525 = load i64, ptr %4524, align 8, !tbaa !9
  %4526 = load i64, ptr %42, align 8, !tbaa !9
  %4527 = sub nsw i64 %4525, %4526
  %4528 = load i64, ptr %48, align 8, !tbaa !9
  %4529 = load i64, ptr %42, align 8, !tbaa !9
  %4530 = add nsw i64 %4528, %4529
  %4531 = load i64, ptr %28, align 8, !tbaa !9
  %4532 = mul nsw i64 %4530, %4531
  %4533 = add nsw i64 %4527, %4532
  %4534 = getelementptr inbounds double, ptr %4523, i64 %4533
  %4535 = load ptr, ptr %26, align 8, !tbaa !5
  %4536 = load ptr, ptr %17, align 8, !tbaa !5
  %4537 = load i64, ptr %4536, align 8, !tbaa !9
  %4538 = load i64, ptr %48, align 8, !tbaa !9
  %4539 = add nsw i64 %4537, %4538
  %4540 = getelementptr inbounds double, ptr %4535, i64 %4539
  %4541 = load ptr, ptr %26, align 8, !tbaa !5
  %4542 = load i64, ptr %48, align 8, !tbaa !9
  %4543 = getelementptr inbounds double, ptr %4541, i64 %4542
  %4544 = call i32 @dlartv_(ptr noundef %51, ptr noundef %4522, ptr noundef %61, ptr noundef %4534, ptr noundef %61, ptr noundef %4540, ptr noundef %4543, ptr noundef %53)
  br label %4545

4545:                                             ; preds = %4511
  %4546 = load i64, ptr %42, align 8, !tbaa !9
  %4547 = add nsw i64 %4546, 1
  store i64 %4547, ptr %42, align 8, !tbaa !9
  br label %4507, !llvm.loop !68

4548:                                             ; preds = %4507
  %4549 = load ptr, ptr %20, align 8, !tbaa !5
  %4550 = load i64, ptr %53, align 8, !tbaa !9
  %4551 = load i64, ptr %48, align 8, !tbaa !9
  %4552 = load i64, ptr %28, align 8, !tbaa !9
  %4553 = mul nsw i64 %4551, %4552
  %4554 = add nsw i64 %4550, %4553
  %4555 = getelementptr inbounds double, ptr %4549, i64 %4554
  %4556 = load ptr, ptr %20, align 8, !tbaa !5
  %4557 = load i64, ptr %53, align 8, !tbaa !9
  %4558 = load i64, ptr %48, align 8, !tbaa !9
  %4559 = sub nsw i64 %4558, 1
  %4560 = load i64, ptr %28, align 8, !tbaa !9
  %4561 = mul nsw i64 %4559, %4560
  %4562 = add nsw i64 %4557, %4561
  %4563 = getelementptr inbounds double, ptr %4556, i64 %4562
  %4564 = load ptr, ptr %20, align 8, !tbaa !5
  %4565 = load ptr, ptr %18, align 8, !tbaa !5
  %4566 = load i64, ptr %4565, align 8, !tbaa !9
  %4567 = load i64, ptr %48, align 8, !tbaa !9
  %4568 = load i64, ptr %28, align 8, !tbaa !9
  %4569 = mul nsw i64 %4567, %4568
  %4570 = add nsw i64 %4566, %4569
  %4571 = getelementptr inbounds double, ptr %4564, i64 %4570
  %4572 = load ptr, ptr %26, align 8, !tbaa !5
  %4573 = load ptr, ptr %17, align 8, !tbaa !5
  %4574 = load i64, ptr %4573, align 8, !tbaa !9
  %4575 = load i64, ptr %48, align 8, !tbaa !9
  %4576 = add nsw i64 %4574, %4575
  %4577 = getelementptr inbounds double, ptr %4572, i64 %4576
  %4578 = load ptr, ptr %26, align 8, !tbaa !5
  %4579 = load i64, ptr %48, align 8, !tbaa !9
  %4580 = getelementptr inbounds double, ptr %4578, i64 %4579
  %4581 = call i32 @dlar2v_(ptr noundef %51, ptr noundef %4555, ptr noundef %4563, ptr noundef %4571, ptr noundef %61, ptr noundef %4577, ptr noundef %4580, ptr noundef %53)
  br label %4582

4582:                                             ; preds = %4548, %4500
  %4583 = load ptr, ptr %19, align 8, !tbaa !5
  %4584 = load i64, ptr %4583, align 8, !tbaa !9
  %4585 = load i64, ptr %41, align 8, !tbaa !9
  %4586 = sub nsw i64 %4584, %4585
  %4587 = add nsw i64 %4586, 1
  store i64 %4587, ptr %34, align 8, !tbaa !9
  %4588 = load ptr, ptr %18, align 8, !tbaa !5
  %4589 = load i64, ptr %4588, align 8, !tbaa !9
  %4590 = sub nsw i64 %4589, 1
  store i64 %4590, ptr %42, align 8, !tbaa !9
  br label %4591

4591:                                             ; preds = %4638, %4582
  %4592 = load i64, ptr %42, align 8, !tbaa !9
  %4593 = load i64, ptr %34, align 8, !tbaa !9
  %4594 = icmp sge i64 %4592, %4593
  br i1 %4594, label %4595, label %4641

4595:                                             ; preds = %4591
  %4596 = load i64, ptr %49, align 8, !tbaa !9
  %4597 = load i64, ptr %42, align 8, !tbaa !9
  %4598 = add nsw i64 %4596, %4597
  %4599 = sub nsw i64 %4598, 1
  %4600 = load i64, ptr %53, align 8, !tbaa !9
  %4601 = sdiv i64 %4599, %4600
  store i64 %4601, ptr %60, align 8, !tbaa !9
  %4602 = load i64, ptr %49, align 8, !tbaa !9
  %4603 = load i64, ptr %60, align 8, !tbaa !9
  %4604 = sub nsw i64 %4603, 1
  %4605 = load i64, ptr %53, align 8, !tbaa !9
  %4606 = mul nsw i64 %4604, %4605
  %4607 = sub nsw i64 %4602, %4606
  store i64 %4607, ptr %56, align 8, !tbaa !9
  %4608 = load i64, ptr %60, align 8, !tbaa !9
  %4609 = icmp sgt i64 %4608, 0
  br i1 %4609, label %4610, label %4637

4610:                                             ; preds = %4595
  %4611 = load ptr, ptr %20, align 8, !tbaa !5
  %4612 = load i64, ptr %42, align 8, !tbaa !9
  %4613 = load i64, ptr %56, align 8, !tbaa !9
  %4614 = load i64, ptr %28, align 8, !tbaa !9
  %4615 = mul nsw i64 %4613, %4614
  %4616 = add nsw i64 %4612, %4615
  %4617 = getelementptr inbounds double, ptr %4611, i64 %4616
  %4618 = load ptr, ptr %20, align 8, !tbaa !5
  %4619 = load i64, ptr %42, align 8, !tbaa !9
  %4620 = add nsw i64 %4619, 1
  %4621 = load i64, ptr %56, align 8, !tbaa !9
  %4622 = sub nsw i64 %4621, 1
  %4623 = load i64, ptr %28, align 8, !tbaa !9
  %4624 = mul nsw i64 %4622, %4623
  %4625 = add nsw i64 %4620, %4624
  %4626 = getelementptr inbounds double, ptr %4618, i64 %4625
  %4627 = load ptr, ptr %26, align 8, !tbaa !5
  %4628 = load ptr, ptr %17, align 8, !tbaa !5
  %4629 = load i64, ptr %4628, align 8, !tbaa !9
  %4630 = load i64, ptr %56, align 8, !tbaa !9
  %4631 = add nsw i64 %4629, %4630
  %4632 = getelementptr inbounds double, ptr %4627, i64 %4631
  %4633 = load ptr, ptr %26, align 8, !tbaa !5
  %4634 = load i64, ptr %56, align 8, !tbaa !9
  %4635 = getelementptr inbounds double, ptr %4633, i64 %4634
  %4636 = call i32 @dlartv_(ptr noundef %60, ptr noundef %4617, ptr noundef %61, ptr noundef %4626, ptr noundef %61, ptr noundef %4632, ptr noundef %4635, ptr noundef %53)
  br label %4637

4637:                                             ; preds = %4610, %4595
  br label %4638

4638:                                             ; preds = %4637
  %4639 = load i64, ptr %42, align 8, !tbaa !9
  %4640 = add nsw i64 %4639, -1
  store i64 %4640, ptr %42, align 8, !tbaa !9
  br label %4591, !llvm.loop !69

4641:                                             ; preds = %4591
  %4642 = load i64, ptr %63, align 8, !tbaa !9
  %4643 = icmp ne i64 %4642, 0
  br i1 %4643, label %4644, label %4693

4644:                                             ; preds = %4641
  %4645 = load i64, ptr %49, align 8, !tbaa !9
  store i64 %4645, ptr %34, align 8, !tbaa !9
  %4646 = load i64, ptr %53, align 8, !tbaa !9
  store i64 %4646, ptr %37, align 8, !tbaa !9
  %4647 = load i64, ptr %48, align 8, !tbaa !9
  store i64 %4647, ptr %40, align 8, !tbaa !9
  br label %4648

4648:                                             ; preds = %4688, %4644
  %4649 = load i64, ptr %37, align 8, !tbaa !9
  %4650 = icmp slt i64 %4649, 0
  br i1 %4650, label %4651, label %4656

4651:                                             ; preds = %4648
  %4652 = load i64, ptr %40, align 8, !tbaa !9
  %4653 = load i64, ptr %34, align 8, !tbaa !9
  %4654 = icmp sge i64 %4652, %4653
  %4655 = zext i1 %4654 to i32
  br label %4661

4656:                                             ; preds = %4648
  %4657 = load i64, ptr %40, align 8, !tbaa !9
  %4658 = load i64, ptr %34, align 8, !tbaa !9
  %4659 = icmp sle i64 %4657, %4658
  %4660 = zext i1 %4659 to i32
  br label %4661

4661:                                             ; preds = %4656, %4651
  %4662 = phi i32 [ %4655, %4651 ], [ %4660, %4656 ]
  %4663 = icmp ne i32 %4662, 0
  br i1 %4663, label %4664, label %4692

4664:                                             ; preds = %4661
  %4665 = load ptr, ptr %24, align 8, !tbaa !5
  %4666 = load i64, ptr %40, align 8, !tbaa !9
  %4667 = load i64, ptr %32, align 8, !tbaa !9
  %4668 = mul nsw i64 %4666, %4667
  %4669 = add nsw i64 %4668, 1
  %4670 = getelementptr inbounds double, ptr %4665, i64 %4669
  %4671 = load ptr, ptr %24, align 8, !tbaa !5
  %4672 = load i64, ptr %40, align 8, !tbaa !9
  %4673 = sub nsw i64 %4672, 1
  %4674 = load i64, ptr %32, align 8, !tbaa !9
  %4675 = mul nsw i64 %4673, %4674
  %4676 = add nsw i64 %4675, 1
  %4677 = getelementptr inbounds double, ptr %4671, i64 %4676
  %4678 = load ptr, ptr %26, align 8, !tbaa !5
  %4679 = load ptr, ptr %17, align 8, !tbaa !5
  %4680 = load i64, ptr %4679, align 8, !tbaa !9
  %4681 = load i64, ptr %40, align 8, !tbaa !9
  %4682 = add nsw i64 %4680, %4681
  %4683 = getelementptr inbounds double, ptr %4678, i64 %4682
  %4684 = load ptr, ptr %26, align 8, !tbaa !5
  %4685 = load i64, ptr %40, align 8, !tbaa !9
  %4686 = getelementptr inbounds double, ptr %4684, i64 %4685
  %4687 = call i32 @f2c_drot(ptr noundef %52, ptr noundef %4670, ptr noundef @c__1, ptr noundef %4677, ptr noundef @c__1, ptr noundef %4683, ptr noundef %4686)
  br label %4688

4688:                                             ; preds = %4664
  %4689 = load i64, ptr %37, align 8, !tbaa !9
  %4690 = load i64, ptr %40, align 8, !tbaa !9
  %4691 = add nsw i64 %4690, %4689
  store i64 %4691, ptr %40, align 8, !tbaa !9
  br label %4648, !llvm.loop !70

4692:                                             ; preds = %4661
  br label %4693

4693:                                             ; preds = %4692, %4641
  br label %4694

4694:                                             ; preds = %4693
  %4695 = load i64, ptr %41, align 8, !tbaa !9
  %4696 = add nsw i64 %4695, 1
  store i64 %4696, ptr %41, align 8, !tbaa !9
  br label %4190, !llvm.loop !71

4697:                                             ; preds = %4190
  %4698 = load i64, ptr %64, align 8, !tbaa !9
  %4699 = icmp ne i64 %4698, 0
  br i1 %4699, label %4700, label %4733

4700:                                             ; preds = %4697
  %4701 = load i64, ptr %47, align 8, !tbaa !9
  %4702 = icmp sgt i64 %4701, 0
  br i1 %4702, label %4703, label %4732

4703:                                             ; preds = %4700
  %4704 = load i64, ptr %59, align 8, !tbaa !9
  %4705 = icmp sgt i64 %4704, 0
  br i1 %4705, label %4706, label %4732

4706:                                             ; preds = %4703
  %4707 = load ptr, ptr %22, align 8, !tbaa !5
  %4708 = load i64, ptr %54, align 8, !tbaa !9
  %4709 = load i64, ptr %59, align 8, !tbaa !9
  %4710 = sub nsw i64 %4708, %4709
  %4711 = load i64, ptr %39, align 8, !tbaa !9
  %4712 = load i64, ptr %59, align 8, !tbaa !9
  %4713 = add nsw i64 %4711, %4712
  %4714 = load i64, ptr %30, align 8, !tbaa !9
  %4715 = mul nsw i64 %4713, %4714
  %4716 = add nsw i64 %4710, %4715
  %4717 = getelementptr inbounds double, ptr %4707, i64 %4716
  %4718 = load double, ptr %4717, align 8, !tbaa !11
  %4719 = fneg double %4718
  %4720 = load double, ptr %55, align 8, !tbaa !11
  %4721 = fmul double %4719, %4720
  %4722 = load ptr, ptr %26, align 8, !tbaa !5
  %4723 = load i64, ptr %43, align 8, !tbaa !9
  %4724 = load ptr, ptr %19, align 8, !tbaa !5
  %4725 = load i64, ptr %4724, align 8, !tbaa !9
  %4726 = sub nsw i64 %4723, %4725
  %4727 = load i64, ptr %39, align 8, !tbaa !9
  %4728 = add nsw i64 %4726, %4727
  %4729 = load i64, ptr %59, align 8, !tbaa !9
  %4730 = add nsw i64 %4728, %4729
  %4731 = getelementptr inbounds double, ptr %4722, i64 %4730
  store double %4721, ptr %4731, align 8, !tbaa !11
  br label %4732

4732:                                             ; preds = %4706, %4703, %4700
  br label %4733

4733:                                             ; preds = %4732, %4697
  %4734 = load ptr, ptr %19, align 8, !tbaa !5
  %4735 = load i64, ptr %4734, align 8, !tbaa !9
  store i64 %4735, ptr %41, align 8, !tbaa !9
  br label %4736

4736:                                             ; preds = %5069, %4733
  %4737 = load i64, ptr %41, align 8, !tbaa !9
  %4738 = icmp sge i64 %4737, 1
  br i1 %4738, label %4739, label %5072

4739:                                             ; preds = %4736
  %4740 = load i64, ptr %64, align 8, !tbaa !9
  %4741 = icmp ne i64 %4740, 0
  br i1 %4741, label %4742, label %4764

4742:                                             ; preds = %4739
  store i64 2, ptr %36, align 8, !tbaa !9
  %4743 = load i64, ptr %41, align 8, !tbaa !9
  %4744 = load i64, ptr %45, align 8, !tbaa !9
  %4745 = add nsw i64 %4743, %4744
  %4746 = load i64, ptr %43, align 8, !tbaa !9
  %4747 = sub nsw i64 %4745, %4746
  store i64 %4747, ptr %37, align 8, !tbaa !9
  %4748 = load i64, ptr %39, align 8, !tbaa !9
  %4749 = load i64, ptr %41, align 8, !tbaa !9
  %4750 = add nsw i64 %4748, %4749
  %4751 = add nsw i64 %4750, 1
  %4752 = load i64, ptr %36, align 8, !tbaa !9
  %4753 = load i64, ptr %37, align 8, !tbaa !9
  %4754 = icmp sge i64 %4752, %4753
  br i1 %4754, label %4755, label %4757

4755:                                             ; preds = %4742
  %4756 = load i64, ptr %36, align 8, !tbaa !9
  br label %4759

4757:                                             ; preds = %4742
  %4758 = load i64, ptr %37, align 8, !tbaa !9
  br label %4759

4759:                                             ; preds = %4757, %4755
  %4760 = phi i64 [ %4756, %4755 ], [ %4758, %4757 ]
  %4761 = load i64, ptr %53, align 8, !tbaa !9
  %4762 = mul nsw i64 %4760, %4761
  %4763 = sub nsw i64 %4751, %4762
  store i64 %4763, ptr %49, align 8, !tbaa !9
  br label %4786

4764:                                             ; preds = %4739
  store i64 1, ptr %36, align 8, !tbaa !9
  %4765 = load i64, ptr %41, align 8, !tbaa !9
  %4766 = load i64, ptr %45, align 8, !tbaa !9
  %4767 = add nsw i64 %4765, %4766
  %4768 = load i64, ptr %43, align 8, !tbaa !9
  %4769 = sub nsw i64 %4767, %4768
  store i64 %4769, ptr %37, align 8, !tbaa !9
  %4770 = load i64, ptr %39, align 8, !tbaa !9
  %4771 = load i64, ptr %41, align 8, !tbaa !9
  %4772 = add nsw i64 %4770, %4771
  %4773 = add nsw i64 %4772, 1
  %4774 = load i64, ptr %36, align 8, !tbaa !9
  %4775 = load i64, ptr %37, align 8, !tbaa !9
  %4776 = icmp sge i64 %4774, %4775
  br i1 %4776, label %4777, label %4779

4777:                                             ; preds = %4764
  %4778 = load i64, ptr %36, align 8, !tbaa !9
  br label %4781

4779:                                             ; preds = %4764
  %4780 = load i64, ptr %37, align 8, !tbaa !9
  br label %4781

4781:                                             ; preds = %4779, %4777
  %4782 = phi i64 [ %4778, %4777 ], [ %4780, %4779 ]
  %4783 = load i64, ptr %53, align 8, !tbaa !9
  %4784 = mul nsw i64 %4782, %4783
  %4785 = sub nsw i64 %4773, %4784
  store i64 %4785, ptr %49, align 8, !tbaa !9
  br label %4786

4786:                                             ; preds = %4781, %4759
  %4787 = load ptr, ptr %19, align 8, !tbaa !5
  %4788 = load i64, ptr %4787, align 8, !tbaa !9
  %4789 = load i64, ptr %41, align 8, !tbaa !9
  %4790 = sub nsw i64 %4788, %4789
  store i64 %4790, ptr %42, align 8, !tbaa !9
  br label %4791

4791:                                             ; preds = %4862, %4786
  %4792 = load i64, ptr %42, align 8, !tbaa !9
  %4793 = icmp sge i64 %4792, 1
  br i1 %4793, label %4794, label %4865

4794:                                             ; preds = %4791
  %4795 = load i64, ptr %49, align 8, !tbaa !9
  %4796 = load ptr, ptr %18, align 8, !tbaa !5
  %4797 = load i64, ptr %4796, align 8, !tbaa !9
  %4798 = add nsw i64 %4795, %4797
  %4799 = load i64, ptr %42, align 8, !tbaa !9
  %4800 = add nsw i64 %4798, %4799
  %4801 = sub nsw i64 %4800, 1
  %4802 = load i64, ptr %53, align 8, !tbaa !9
  %4803 = sdiv i64 %4801, %4802
  store i64 %4803, ptr %60, align 8, !tbaa !9
  %4804 = load i64, ptr %49, align 8, !tbaa !9
  %4805 = load i64, ptr %60, align 8, !tbaa !9
  %4806 = sub nsw i64 %4805, 1
  %4807 = load i64, ptr %53, align 8, !tbaa !9
  %4808 = mul nsw i64 %4806, %4807
  %4809 = sub nsw i64 %4804, %4808
  store i64 %4809, ptr %56, align 8, !tbaa !9
  %4810 = load i64, ptr %60, align 8, !tbaa !9
  %4811 = icmp sgt i64 %4810, 0
  br i1 %4811, label %4812, label %4861

4812:                                             ; preds = %4794
  %4813 = load ptr, ptr %20, align 8, !tbaa !5
  %4814 = load i64, ptr %42, align 8, !tbaa !9
  %4815 = load i64, ptr %56, align 8, !tbaa !9
  %4816 = load ptr, ptr %18, align 8, !tbaa !5
  %4817 = load i64, ptr %4816, align 8, !tbaa !9
  %4818 = add nsw i64 %4815, %4817
  %4819 = load i64, ptr %28, align 8, !tbaa !9
  %4820 = mul nsw i64 %4818, %4819
  %4821 = add nsw i64 %4814, %4820
  %4822 = getelementptr inbounds double, ptr %4813, i64 %4821
  %4823 = load ptr, ptr %20, align 8, !tbaa !5
  %4824 = load i64, ptr %42, align 8, !tbaa !9
  %4825 = add nsw i64 %4824, 1
  %4826 = load i64, ptr %56, align 8, !tbaa !9
  %4827 = load ptr, ptr %18, align 8, !tbaa !5
  %4828 = load i64, ptr %4827, align 8, !tbaa !9
  %4829 = add nsw i64 %4826, %4828
  %4830 = sub nsw i64 %4829, 1
  %4831 = load i64, ptr %28, align 8, !tbaa !9
  %4832 = mul nsw i64 %4830, %4831
  %4833 = add nsw i64 %4825, %4832
  %4834 = getelementptr inbounds double, ptr %4823, i64 %4833
  %4835 = load ptr, ptr %26, align 8, !tbaa !5
  %4836 = load ptr, ptr %17, align 8, !tbaa !5
  %4837 = load i64, ptr %4836, align 8, !tbaa !9
  %4838 = load i64, ptr %43, align 8, !tbaa !9
  %4839 = add nsw i64 %4837, %4838
  %4840 = load ptr, ptr %19, align 8, !tbaa !5
  %4841 = load i64, ptr %4840, align 8, !tbaa !9
  %4842 = sub nsw i64 %4839, %4841
  %4843 = load i64, ptr %56, align 8, !tbaa !9
  %4844 = add nsw i64 %4842, %4843
  %4845 = load ptr, ptr %18, align 8, !tbaa !5
  %4846 = load i64, ptr %4845, align 8, !tbaa !9
  %4847 = add nsw i64 %4844, %4846
  %4848 = getelementptr inbounds double, ptr %4835, i64 %4847
  %4849 = load ptr, ptr %26, align 8, !tbaa !5
  %4850 = load i64, ptr %43, align 8, !tbaa !9
  %4851 = load ptr, ptr %19, align 8, !tbaa !5
  %4852 = load i64, ptr %4851, align 8, !tbaa !9
  %4853 = sub nsw i64 %4850, %4852
  %4854 = load i64, ptr %56, align 8, !tbaa !9
  %4855 = add nsw i64 %4853, %4854
  %4856 = load ptr, ptr %18, align 8, !tbaa !5
  %4857 = load i64, ptr %4856, align 8, !tbaa !9
  %4858 = add nsw i64 %4855, %4857
  %4859 = getelementptr inbounds double, ptr %4849, i64 %4858
  %4860 = call i32 @dlartv_(ptr noundef %60, ptr noundef %4822, ptr noundef %61, ptr noundef %4834, ptr noundef %61, ptr noundef %4848, ptr noundef %4859, ptr noundef %53)
  br label %4861

4861:                                             ; preds = %4812, %4794
  br label %4862

4862:                                             ; preds = %4861
  %4863 = load i64, ptr %42, align 8, !tbaa !9
  %4864 = add nsw i64 %4863, -1
  store i64 %4864, ptr %42, align 8, !tbaa !9
  br label %4791, !llvm.loop !72

4865:                                             ; preds = %4791
  %4866 = load i64, ptr %49, align 8, !tbaa !9
  %4867 = load ptr, ptr %18, align 8, !tbaa !5
  %4868 = load i64, ptr %4867, align 8, !tbaa !9
  %4869 = add nsw i64 %4866, %4868
  %4870 = sub nsw i64 %4869, 1
  %4871 = load i64, ptr %53, align 8, !tbaa !9
  %4872 = sdiv i64 %4870, %4871
  store i64 %4872, ptr %51, align 8, !tbaa !9
  %4873 = load i64, ptr %49, align 8, !tbaa !9
  %4874 = load i64, ptr %51, align 8, !tbaa !9
  %4875 = sub nsw i64 %4874, 1
  %4876 = load i64, ptr %53, align 8, !tbaa !9
  %4877 = mul nsw i64 %4875, %4876
  %4878 = sub nsw i64 %4873, %4877
  store i64 %4878, ptr %48, align 8, !tbaa !9
  %4879 = load i64, ptr %49, align 8, !tbaa !9
  store i64 %4879, ptr %36, align 8, !tbaa !9
  %4880 = load i64, ptr %53, align 8, !tbaa !9
  store i64 %4880, ptr %37, align 8, !tbaa !9
  %4881 = load i64, ptr %48, align 8, !tbaa !9
  store i64 %4881, ptr %40, align 8, !tbaa !9
  br label %4882

4882:                                             ; preds = %4945, %4865
  %4883 = load i64, ptr %37, align 8, !tbaa !9
  %4884 = icmp slt i64 %4883, 0
  br i1 %4884, label %4885, label %4890

4885:                                             ; preds = %4882
  %4886 = load i64, ptr %40, align 8, !tbaa !9
  %4887 = load i64, ptr %36, align 8, !tbaa !9
  %4888 = icmp sge i64 %4886, %4887
  %4889 = zext i1 %4888 to i32
  br label %4895

4890:                                             ; preds = %4882
  %4891 = load i64, ptr %40, align 8, !tbaa !9
  %4892 = load i64, ptr %36, align 8, !tbaa !9
  %4893 = icmp sle i64 %4891, %4892
  %4894 = zext i1 %4893 to i32
  br label %4895

4895:                                             ; preds = %4890, %4885
  %4896 = phi i32 [ %4889, %4885 ], [ %4894, %4890 ]
  %4897 = icmp ne i32 %4896, 0
  br i1 %4897, label %4898, label %4949

4898:                                             ; preds = %4895
  %4899 = load ptr, ptr %26, align 8, !tbaa !5
  %4900 = load i64, ptr %43, align 8, !tbaa !9
  %4901 = load ptr, ptr %19, align 8, !tbaa !5
  %4902 = load i64, ptr %4901, align 8, !tbaa !9
  %4903 = sub nsw i64 %4900, %4902
  %4904 = load i64, ptr %40, align 8, !tbaa !9
  %4905 = add nsw i64 %4903, %4904
  %4906 = load ptr, ptr %18, align 8, !tbaa !5
  %4907 = load i64, ptr %4906, align 8, !tbaa !9
  %4908 = add nsw i64 %4905, %4907
  %4909 = getelementptr inbounds double, ptr %4899, i64 %4908
  %4910 = load double, ptr %4909, align 8, !tbaa !11
  %4911 = load ptr, ptr %26, align 8, !tbaa !5
  %4912 = load i64, ptr %43, align 8, !tbaa !9
  %4913 = load ptr, ptr %19, align 8, !tbaa !5
  %4914 = load i64, ptr %4913, align 8, !tbaa !9
  %4915 = sub nsw i64 %4912, %4914
  %4916 = load i64, ptr %40, align 8, !tbaa !9
  %4917 = add nsw i64 %4915, %4916
  %4918 = getelementptr inbounds double, ptr %4911, i64 %4917
  store double %4910, ptr %4918, align 8, !tbaa !11
  %4919 = load ptr, ptr %26, align 8, !tbaa !5
  %4920 = load ptr, ptr %17, align 8, !tbaa !5
  %4921 = load i64, ptr %4920, align 8, !tbaa !9
  %4922 = load i64, ptr %43, align 8, !tbaa !9
  %4923 = add nsw i64 %4921, %4922
  %4924 = load ptr, ptr %19, align 8, !tbaa !5
  %4925 = load i64, ptr %4924, align 8, !tbaa !9
  %4926 = sub nsw i64 %4923, %4925
  %4927 = load i64, ptr %40, align 8, !tbaa !9
  %4928 = add nsw i64 %4926, %4927
  %4929 = load ptr, ptr %18, align 8, !tbaa !5
  %4930 = load i64, ptr %4929, align 8, !tbaa !9
  %4931 = add nsw i64 %4928, %4930
  %4932 = getelementptr inbounds double, ptr %4919, i64 %4931
  %4933 = load double, ptr %4932, align 8, !tbaa !11
  %4934 = load ptr, ptr %26, align 8, !tbaa !5
  %4935 = load ptr, ptr %17, align 8, !tbaa !5
  %4936 = load i64, ptr %4935, align 8, !tbaa !9
  %4937 = load i64, ptr %43, align 8, !tbaa !9
  %4938 = add nsw i64 %4936, %4937
  %4939 = load ptr, ptr %19, align 8, !tbaa !5
  %4940 = load i64, ptr %4939, align 8, !tbaa !9
  %4941 = sub nsw i64 %4938, %4940
  %4942 = load i64, ptr %40, align 8, !tbaa !9
  %4943 = add nsw i64 %4941, %4942
  %4944 = getelementptr inbounds double, ptr %4934, i64 %4943
  store double %4933, ptr %4944, align 8, !tbaa !11
  br label %4945

4945:                                             ; preds = %4898
  %4946 = load i64, ptr %37, align 8, !tbaa !9
  %4947 = load i64, ptr %40, align 8, !tbaa !9
  %4948 = add nsw i64 %4947, %4946
  store i64 %4948, ptr %40, align 8, !tbaa !9
  br label %4882, !llvm.loop !73

4949:                                             ; preds = %4895
  %4950 = load i64, ptr %49, align 8, !tbaa !9
  store i64 %4950, ptr %37, align 8, !tbaa !9
  %4951 = load i64, ptr %53, align 8, !tbaa !9
  store i64 %4951, ptr %36, align 8, !tbaa !9
  %4952 = load i64, ptr %48, align 8, !tbaa !9
  store i64 %4952, ptr %40, align 8, !tbaa !9
  br label %4953

4953:                                             ; preds = %5025, %4949
  %4954 = load i64, ptr %36, align 8, !tbaa !9
  %4955 = icmp slt i64 %4954, 0
  br i1 %4955, label %4956, label %4961

4956:                                             ; preds = %4953
  %4957 = load i64, ptr %40, align 8, !tbaa !9
  %4958 = load i64, ptr %37, align 8, !tbaa !9
  %4959 = icmp sge i64 %4957, %4958
  %4960 = zext i1 %4959 to i32
  br label %4966

4961:                                             ; preds = %4953
  %4962 = load i64, ptr %40, align 8, !tbaa !9
  %4963 = load i64, ptr %37, align 8, !tbaa !9
  %4964 = icmp sle i64 %4962, %4963
  %4965 = zext i1 %4964 to i32
  br label %4966

4966:                                             ; preds = %4961, %4956
  %4967 = phi i32 [ %4960, %4956 ], [ %4965, %4961 ]
  %4968 = icmp ne i32 %4967, 0
  br i1 %4968, label %4969, label %5029

4969:                                             ; preds = %4966
  %4970 = load ptr, ptr %20, align 8, !tbaa !5
  %4971 = load i64, ptr %40, align 8, !tbaa !9
  %4972 = load ptr, ptr %18, align 8, !tbaa !5
  %4973 = load i64, ptr %4972, align 8, !tbaa !9
  %4974 = add nsw i64 %4971, %4973
  %4975 = sub nsw i64 %4974, 1
  %4976 = load i64, ptr %28, align 8, !tbaa !9
  %4977 = mul nsw i64 %4975, %4976
  %4978 = add nsw i64 %4977, 1
  %4979 = getelementptr inbounds double, ptr %4970, i64 %4978
  %4980 = load double, ptr %4979, align 8, !tbaa !11
  %4981 = load ptr, ptr %26, align 8, !tbaa !5
  %4982 = load i64, ptr %43, align 8, !tbaa !9
  %4983 = load ptr, ptr %19, align 8, !tbaa !5
  %4984 = load i64, ptr %4983, align 8, !tbaa !9
  %4985 = sub nsw i64 %4982, %4984
  %4986 = load i64, ptr %40, align 8, !tbaa !9
  %4987 = add nsw i64 %4985, %4986
  %4988 = getelementptr inbounds double, ptr %4981, i64 %4987
  %4989 = load double, ptr %4988, align 8, !tbaa !11
  %4990 = fmul double %4989, %4980
  store double %4990, ptr %4988, align 8, !tbaa !11
  %4991 = load ptr, ptr %26, align 8, !tbaa !5
  %4992 = load ptr, ptr %17, align 8, !tbaa !5
  %4993 = load i64, ptr %4992, align 8, !tbaa !9
  %4994 = load i64, ptr %43, align 8, !tbaa !9
  %4995 = add nsw i64 %4993, %4994
  %4996 = load ptr, ptr %19, align 8, !tbaa !5
  %4997 = load i64, ptr %4996, align 8, !tbaa !9
  %4998 = sub nsw i64 %4995, %4997
  %4999 = load i64, ptr %40, align 8, !tbaa !9
  %5000 = add nsw i64 %4998, %4999
  %5001 = getelementptr inbounds double, ptr %4991, i64 %5000
  %5002 = load double, ptr %5001, align 8, !tbaa !11
  %5003 = load ptr, ptr %20, align 8, !tbaa !5
  %5004 = load i64, ptr %40, align 8, !tbaa !9
  %5005 = load ptr, ptr %18, align 8, !tbaa !5
  %5006 = load i64, ptr %5005, align 8, !tbaa !9
  %5007 = add nsw i64 %5004, %5006
  %5008 = sub nsw i64 %5007, 1
  %5009 = load i64, ptr %28, align 8, !tbaa !9
  %5010 = mul nsw i64 %5008, %5009
  %5011 = add nsw i64 %5010, 1
  %5012 = getelementptr inbounds double, ptr %5003, i64 %5011
  %5013 = load double, ptr %5012, align 8, !tbaa !11
  %5014 = fmul double %5002, %5013
  %5015 = load ptr, ptr %20, align 8, !tbaa !5
  %5016 = load i64, ptr %40, align 8, !tbaa !9
  %5017 = load ptr, ptr %18, align 8, !tbaa !5
  %5018 = load i64, ptr %5017, align 8, !tbaa !9
  %5019 = add nsw i64 %5016, %5018
  %5020 = sub nsw i64 %5019, 1
  %5021 = load i64, ptr %28, align 8, !tbaa !9
  %5022 = mul nsw i64 %5020, %5021
  %5023 = add nsw i64 %5022, 1
  %5024 = getelementptr inbounds double, ptr %5015, i64 %5023
  store double %5014, ptr %5024, align 8, !tbaa !11
  br label %5025

5025:                                             ; preds = %4969
  %5026 = load i64, ptr %36, align 8, !tbaa !9
  %5027 = load i64, ptr %40, align 8, !tbaa !9
  %5028 = add nsw i64 %5027, %5026
  store i64 %5028, ptr %40, align 8, !tbaa !9
  br label %4953, !llvm.loop !74

5029:                                             ; preds = %4966
  %5030 = load i64, ptr %64, align 8, !tbaa !9
  %5031 = icmp ne i64 %5030, 0
  br i1 %5031, label %5032, label %5068

5032:                                             ; preds = %5029
  %5033 = load i64, ptr %39, align 8, !tbaa !9
  %5034 = load i64, ptr %41, align 8, !tbaa !9
  %5035 = add nsw i64 %5033, %5034
  %5036 = load i64, ptr %53, align 8, !tbaa !9
  %5037 = icmp sgt i64 %5035, %5036
  br i1 %5037, label %5038, label %5067

5038:                                             ; preds = %5032
  %5039 = load i64, ptr %41, align 8, !tbaa !9
  %5040 = load i64, ptr %59, align 8, !tbaa !9
  %5041 = icmp sle i64 %5039, %5040
  br i1 %5041, label %5042, label %5067

5042:                                             ; preds = %5038
  %5043 = load ptr, ptr %26, align 8, !tbaa !5
  %5044 = load i64, ptr %43, align 8, !tbaa !9
  %5045 = load ptr, ptr %19, align 8, !tbaa !5
  %5046 = load i64, ptr %5045, align 8, !tbaa !9
  %5047 = sub nsw i64 %5044, %5046
  %5048 = load i64, ptr %39, align 8, !tbaa !9
  %5049 = add nsw i64 %5047, %5048
  %5050 = load i64, ptr %41, align 8, !tbaa !9
  %5051 = add nsw i64 %5049, %5050
  %5052 = getelementptr inbounds double, ptr %5043, i64 %5051
  %5053 = load double, ptr %5052, align 8, !tbaa !11
  %5054 = load ptr, ptr %26, align 8, !tbaa !5
  %5055 = load i64, ptr %43, align 8, !tbaa !9
  %5056 = load ptr, ptr %19, align 8, !tbaa !5
  %5057 = load i64, ptr %5056, align 8, !tbaa !9
  %5058 = sub nsw i64 %5055, %5057
  %5059 = load i64, ptr %39, align 8, !tbaa !9
  %5060 = add nsw i64 %5058, %5059
  %5061 = load i64, ptr %41, align 8, !tbaa !9
  %5062 = add nsw i64 %5060, %5061
  %5063 = load ptr, ptr %18, align 8, !tbaa !5
  %5064 = load i64, ptr %5063, align 8, !tbaa !9
  %5065 = sub nsw i64 %5062, %5064
  %5066 = getelementptr inbounds double, ptr %5054, i64 %5065
  store double %5053, ptr %5066, align 8, !tbaa !11
  br label %5067

5067:                                             ; preds = %5042, %5038, %5032
  br label %5068

5068:                                             ; preds = %5067, %5029
  br label %5069

5069:                                             ; preds = %5068
  %5070 = load i64, ptr %41, align 8, !tbaa !9
  %5071 = add nsw i64 %5070, -1
  store i64 %5071, ptr %41, align 8, !tbaa !9
  br label %4736, !llvm.loop !75

5072:                                             ; preds = %4736
  %5073 = load ptr, ptr %19, align 8, !tbaa !5
  %5074 = load i64, ptr %5073, align 8, !tbaa !9
  store i64 %5074, ptr %41, align 8, !tbaa !9
  br label %5075

5075:                                             ; preds = %5375, %5072
  %5076 = load i64, ptr %41, align 8, !tbaa !9
  %5077 = icmp sge i64 %5076, 1
  br i1 %5077, label %5078, label %5378

5078:                                             ; preds = %5075
  store i64 1, ptr %36, align 8, !tbaa !9
  %5079 = load i64, ptr %41, align 8, !tbaa !9
  %5080 = load i64, ptr %45, align 8, !tbaa !9
  %5081 = add nsw i64 %5079, %5080
  %5082 = load i64, ptr %43, align 8, !tbaa !9
  %5083 = sub nsw i64 %5081, %5082
  store i64 %5083, ptr %37, align 8, !tbaa !9
  %5084 = load i64, ptr %39, align 8, !tbaa !9
  %5085 = load i64, ptr %41, align 8, !tbaa !9
  %5086 = add nsw i64 %5084, %5085
  %5087 = add nsw i64 %5086, 1
  %5088 = load i64, ptr %36, align 8, !tbaa !9
  %5089 = load i64, ptr %37, align 8, !tbaa !9
  %5090 = icmp sge i64 %5088, %5089
  br i1 %5090, label %5091, label %5093

5091:                                             ; preds = %5078
  %5092 = load i64, ptr %36, align 8, !tbaa !9
  br label %5095

5093:                                             ; preds = %5078
  %5094 = load i64, ptr %37, align 8, !tbaa !9
  br label %5095

5095:                                             ; preds = %5093, %5091
  %5096 = phi i64 [ %5092, %5091 ], [ %5094, %5093 ]
  %5097 = load i64, ptr %53, align 8, !tbaa !9
  %5098 = mul nsw i64 %5096, %5097
  %5099 = sub nsw i64 %5087, %5098
  store i64 %5099, ptr %49, align 8, !tbaa !9
  %5100 = load i64, ptr %49, align 8, !tbaa !9
  %5101 = load ptr, ptr %18, align 8, !tbaa !5
  %5102 = load i64, ptr %5101, align 8, !tbaa !9
  %5103 = add nsw i64 %5100, %5102
  %5104 = sub nsw i64 %5103, 1
  %5105 = load i64, ptr %53, align 8, !tbaa !9
  %5106 = sdiv i64 %5104, %5105
  store i64 %5106, ptr %51, align 8, !tbaa !9
  %5107 = load i64, ptr %49, align 8, !tbaa !9
  %5108 = load i64, ptr %51, align 8, !tbaa !9
  %5109 = sub nsw i64 %5108, 1
  %5110 = load i64, ptr %53, align 8, !tbaa !9
  %5111 = mul nsw i64 %5109, %5110
  %5112 = sub nsw i64 %5107, %5111
  store i64 %5112, ptr %48, align 8, !tbaa !9
  %5113 = load i64, ptr %51, align 8, !tbaa !9
  %5114 = icmp sgt i64 %5113, 0
  br i1 %5114, label %5115, label %5243

5115:                                             ; preds = %5095
  %5116 = load ptr, ptr %20, align 8, !tbaa !5
  %5117 = load i64, ptr %48, align 8, !tbaa !9
  %5118 = load ptr, ptr %18, align 8, !tbaa !5
  %5119 = load i64, ptr %5118, align 8, !tbaa !9
  %5120 = add nsw i64 %5117, %5119
  %5121 = load i64, ptr %28, align 8, !tbaa !9
  %5122 = mul nsw i64 %5120, %5121
  %5123 = add nsw i64 %5122, 1
  %5124 = getelementptr inbounds double, ptr %5116, i64 %5123
  %5125 = load ptr, ptr %26, align 8, !tbaa !5
  %5126 = load i64, ptr %43, align 8, !tbaa !9
  %5127 = load ptr, ptr %19, align 8, !tbaa !5
  %5128 = load i64, ptr %5127, align 8, !tbaa !9
  %5129 = sub nsw i64 %5126, %5128
  %5130 = load i64, ptr %48, align 8, !tbaa !9
  %5131 = add nsw i64 %5129, %5130
  %5132 = getelementptr inbounds double, ptr %5125, i64 %5131
  %5133 = load ptr, ptr %26, align 8, !tbaa !5
  %5134 = load ptr, ptr %17, align 8, !tbaa !5
  %5135 = load i64, ptr %5134, align 8, !tbaa !9
  %5136 = load i64, ptr %43, align 8, !tbaa !9
  %5137 = add nsw i64 %5135, %5136
  %5138 = load ptr, ptr %19, align 8, !tbaa !5
  %5139 = load i64, ptr %5138, align 8, !tbaa !9
  %5140 = sub nsw i64 %5137, %5139
  %5141 = load i64, ptr %48, align 8, !tbaa !9
  %5142 = add nsw i64 %5140, %5141
  %5143 = getelementptr inbounds double, ptr %5133, i64 %5142
  %5144 = call i32 @dlargv_(ptr noundef %51, ptr noundef %5124, ptr noundef %61, ptr noundef %5132, ptr noundef %53, ptr noundef %5143, ptr noundef %53)
  %5145 = load ptr, ptr %18, align 8, !tbaa !5
  %5146 = load i64, ptr %5145, align 8, !tbaa !9
  %5147 = sub nsw i64 %5146, 1
  store i64 %5147, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %5148

5148:                                             ; preds = %5196, %5115
  %5149 = load i64, ptr %42, align 8, !tbaa !9
  %5150 = load i64, ptr %36, align 8, !tbaa !9
  %5151 = icmp sle i64 %5149, %5150
  br i1 %5151, label %5152, label %5199

5152:                                             ; preds = %5148
  %5153 = load ptr, ptr %20, align 8, !tbaa !5
  %5154 = load i64, ptr %53, align 8, !tbaa !9
  %5155 = load i64, ptr %42, align 8, !tbaa !9
  %5156 = sub nsw i64 %5154, %5155
  %5157 = load i64, ptr %48, align 8, !tbaa !9
  %5158 = load i64, ptr %42, align 8, !tbaa !9
  %5159 = add nsw i64 %5157, %5158
  %5160 = load i64, ptr %28, align 8, !tbaa !9
  %5161 = mul nsw i64 %5159, %5160
  %5162 = add nsw i64 %5156, %5161
  %5163 = getelementptr inbounds double, ptr %5153, i64 %5162
  %5164 = load ptr, ptr %20, align 8, !tbaa !5
  %5165 = load ptr, ptr %18, align 8, !tbaa !5
  %5166 = load i64, ptr %5165, align 8, !tbaa !9
  %5167 = load i64, ptr %42, align 8, !tbaa !9
  %5168 = sub nsw i64 %5166, %5167
  %5169 = load i64, ptr %48, align 8, !tbaa !9
  %5170 = load i64, ptr %42, align 8, !tbaa !9
  %5171 = add nsw i64 %5169, %5170
  %5172 = load i64, ptr %28, align 8, !tbaa !9
  %5173 = mul nsw i64 %5171, %5172
  %5174 = add nsw i64 %5168, %5173
  %5175 = getelementptr inbounds double, ptr %5164, i64 %5174
  %5176 = load ptr, ptr %26, align 8, !tbaa !5
  %5177 = load ptr, ptr %17, align 8, !tbaa !5
  %5178 = load i64, ptr %5177, align 8, !tbaa !9
  %5179 = load i64, ptr %43, align 8, !tbaa !9
  %5180 = add nsw i64 %5178, %5179
  %5181 = load ptr, ptr %19, align 8, !tbaa !5
  %5182 = load i64, ptr %5181, align 8, !tbaa !9
  %5183 = sub nsw i64 %5180, %5182
  %5184 = load i64, ptr %48, align 8, !tbaa !9
  %5185 = add nsw i64 %5183, %5184
  %5186 = getelementptr inbounds double, ptr %5176, i64 %5185
  %5187 = load ptr, ptr %26, align 8, !tbaa !5
  %5188 = load i64, ptr %43, align 8, !tbaa !9
  %5189 = load ptr, ptr %19, align 8, !tbaa !5
  %5190 = load i64, ptr %5189, align 8, !tbaa !9
  %5191 = sub nsw i64 %5188, %5190
  %5192 = load i64, ptr %48, align 8, !tbaa !9
  %5193 = add nsw i64 %5191, %5192
  %5194 = getelementptr inbounds double, ptr %5187, i64 %5193
  %5195 = call i32 @dlartv_(ptr noundef %51, ptr noundef %5163, ptr noundef %61, ptr noundef %5175, ptr noundef %61, ptr noundef %5186, ptr noundef %5194, ptr noundef %53)
  br label %5196

5196:                                             ; preds = %5152
  %5197 = load i64, ptr %42, align 8, !tbaa !9
  %5198 = add nsw i64 %5197, 1
  store i64 %5198, ptr %42, align 8, !tbaa !9
  br label %5148, !llvm.loop !76

5199:                                             ; preds = %5148
  %5200 = load ptr, ptr %20, align 8, !tbaa !5
  %5201 = load i64, ptr %53, align 8, !tbaa !9
  %5202 = load i64, ptr %48, align 8, !tbaa !9
  %5203 = load i64, ptr %28, align 8, !tbaa !9
  %5204 = mul nsw i64 %5202, %5203
  %5205 = add nsw i64 %5201, %5204
  %5206 = getelementptr inbounds double, ptr %5200, i64 %5205
  %5207 = load ptr, ptr %20, align 8, !tbaa !5
  %5208 = load i64, ptr %53, align 8, !tbaa !9
  %5209 = load i64, ptr %48, align 8, !tbaa !9
  %5210 = sub nsw i64 %5209, 1
  %5211 = load i64, ptr %28, align 8, !tbaa !9
  %5212 = mul nsw i64 %5210, %5211
  %5213 = add nsw i64 %5208, %5212
  %5214 = getelementptr inbounds double, ptr %5207, i64 %5213
  %5215 = load ptr, ptr %20, align 8, !tbaa !5
  %5216 = load ptr, ptr %18, align 8, !tbaa !5
  %5217 = load i64, ptr %5216, align 8, !tbaa !9
  %5218 = load i64, ptr %48, align 8, !tbaa !9
  %5219 = load i64, ptr %28, align 8, !tbaa !9
  %5220 = mul nsw i64 %5218, %5219
  %5221 = add nsw i64 %5217, %5220
  %5222 = getelementptr inbounds double, ptr %5215, i64 %5221
  %5223 = load ptr, ptr %26, align 8, !tbaa !5
  %5224 = load ptr, ptr %17, align 8, !tbaa !5
  %5225 = load i64, ptr %5224, align 8, !tbaa !9
  %5226 = load i64, ptr %43, align 8, !tbaa !9
  %5227 = add nsw i64 %5225, %5226
  %5228 = load ptr, ptr %19, align 8, !tbaa !5
  %5229 = load i64, ptr %5228, align 8, !tbaa !9
  %5230 = sub nsw i64 %5227, %5229
  %5231 = load i64, ptr %48, align 8, !tbaa !9
  %5232 = add nsw i64 %5230, %5231
  %5233 = getelementptr inbounds double, ptr %5223, i64 %5232
  %5234 = load ptr, ptr %26, align 8, !tbaa !5
  %5235 = load i64, ptr %43, align 8, !tbaa !9
  %5236 = load ptr, ptr %19, align 8, !tbaa !5
  %5237 = load i64, ptr %5236, align 8, !tbaa !9
  %5238 = sub nsw i64 %5235, %5237
  %5239 = load i64, ptr %48, align 8, !tbaa !9
  %5240 = add nsw i64 %5238, %5239
  %5241 = getelementptr inbounds double, ptr %5234, i64 %5240
  %5242 = call i32 @dlar2v_(ptr noundef %51, ptr noundef %5206, ptr noundef %5214, ptr noundef %5222, ptr noundef %61, ptr noundef %5233, ptr noundef %5241, ptr noundef %53)
  br label %5243

5243:                                             ; preds = %5199, %5095
  %5244 = load ptr, ptr %19, align 8, !tbaa !5
  %5245 = load i64, ptr %5244, align 8, !tbaa !9
  %5246 = load i64, ptr %41, align 8, !tbaa !9
  %5247 = sub nsw i64 %5245, %5246
  %5248 = add nsw i64 %5247, 1
  store i64 %5248, ptr %36, align 8, !tbaa !9
  %5249 = load ptr, ptr %18, align 8, !tbaa !5
  %5250 = load i64, ptr %5249, align 8, !tbaa !9
  %5251 = sub nsw i64 %5250, 1
  store i64 %5251, ptr %42, align 8, !tbaa !9
  br label %5252

5252:                                             ; preds = %5309, %5243
  %5253 = load i64, ptr %42, align 8, !tbaa !9
  %5254 = load i64, ptr %36, align 8, !tbaa !9
  %5255 = icmp sge i64 %5253, %5254
  br i1 %5255, label %5256, label %5312

5256:                                             ; preds = %5252
  %5257 = load i64, ptr %49, align 8, !tbaa !9
  %5258 = load i64, ptr %42, align 8, !tbaa !9
  %5259 = add nsw i64 %5257, %5258
  %5260 = sub nsw i64 %5259, 1
  %5261 = load i64, ptr %53, align 8, !tbaa !9
  %5262 = sdiv i64 %5260, %5261
  store i64 %5262, ptr %60, align 8, !tbaa !9
  %5263 = load i64, ptr %49, align 8, !tbaa !9
  %5264 = load i64, ptr %60, align 8, !tbaa !9
  %5265 = sub nsw i64 %5264, 1
  %5266 = load i64, ptr %53, align 8, !tbaa !9
  %5267 = mul nsw i64 %5265, %5266
  %5268 = sub nsw i64 %5263, %5267
  store i64 %5268, ptr %56, align 8, !tbaa !9
  %5269 = load i64, ptr %60, align 8, !tbaa !9
  %5270 = icmp sgt i64 %5269, 0
  br i1 %5270, label %5271, label %5308

5271:                                             ; preds = %5256
  %5272 = load ptr, ptr %20, align 8, !tbaa !5
  %5273 = load i64, ptr %42, align 8, !tbaa !9
  %5274 = load i64, ptr %56, align 8, !tbaa !9
  %5275 = load i64, ptr %28, align 8, !tbaa !9
  %5276 = mul nsw i64 %5274, %5275
  %5277 = add nsw i64 %5273, %5276
  %5278 = getelementptr inbounds double, ptr %5272, i64 %5277
  %5279 = load ptr, ptr %20, align 8, !tbaa !5
  %5280 = load i64, ptr %42, align 8, !tbaa !9
  %5281 = add nsw i64 %5280, 1
  %5282 = load i64, ptr %56, align 8, !tbaa !9
  %5283 = sub nsw i64 %5282, 1
  %5284 = load i64, ptr %28, align 8, !tbaa !9
  %5285 = mul nsw i64 %5283, %5284
  %5286 = add nsw i64 %5281, %5285
  %5287 = getelementptr inbounds double, ptr %5279, i64 %5286
  %5288 = load ptr, ptr %26, align 8, !tbaa !5
  %5289 = load ptr, ptr %17, align 8, !tbaa !5
  %5290 = load i64, ptr %5289, align 8, !tbaa !9
  %5291 = load i64, ptr %43, align 8, !tbaa !9
  %5292 = add nsw i64 %5290, %5291
  %5293 = load ptr, ptr %19, align 8, !tbaa !5
  %5294 = load i64, ptr %5293, align 8, !tbaa !9
  %5295 = sub nsw i64 %5292, %5294
  %5296 = load i64, ptr %56, align 8, !tbaa !9
  %5297 = add nsw i64 %5295, %5296
  %5298 = getelementptr inbounds double, ptr %5288, i64 %5297
  %5299 = load ptr, ptr %26, align 8, !tbaa !5
  %5300 = load i64, ptr %43, align 8, !tbaa !9
  %5301 = load ptr, ptr %19, align 8, !tbaa !5
  %5302 = load i64, ptr %5301, align 8, !tbaa !9
  %5303 = sub nsw i64 %5300, %5302
  %5304 = load i64, ptr %56, align 8, !tbaa !9
  %5305 = add nsw i64 %5303, %5304
  %5306 = getelementptr inbounds double, ptr %5299, i64 %5305
  %5307 = call i32 @dlartv_(ptr noundef %60, ptr noundef %5278, ptr noundef %61, ptr noundef %5287, ptr noundef %61, ptr noundef %5298, ptr noundef %5306, ptr noundef %53)
  br label %5308

5308:                                             ; preds = %5271, %5256
  br label %5309

5309:                                             ; preds = %5308
  %5310 = load i64, ptr %42, align 8, !tbaa !9
  %5311 = add nsw i64 %5310, -1
  store i64 %5311, ptr %42, align 8, !tbaa !9
  br label %5252, !llvm.loop !77

5312:                                             ; preds = %5252
  %5313 = load i64, ptr %63, align 8, !tbaa !9
  %5314 = icmp ne i64 %5313, 0
  br i1 %5314, label %5315, label %5374

5315:                                             ; preds = %5312
  %5316 = load i64, ptr %49, align 8, !tbaa !9
  store i64 %5316, ptr %36, align 8, !tbaa !9
  %5317 = load i64, ptr %53, align 8, !tbaa !9
  store i64 %5317, ptr %37, align 8, !tbaa !9
  %5318 = load i64, ptr %48, align 8, !tbaa !9
  store i64 %5318, ptr %40, align 8, !tbaa !9
  br label %5319

5319:                                             ; preds = %5369, %5315
  %5320 = load i64, ptr %37, align 8, !tbaa !9
  %5321 = icmp slt i64 %5320, 0
  br i1 %5321, label %5322, label %5327

5322:                                             ; preds = %5319
  %5323 = load i64, ptr %40, align 8, !tbaa !9
  %5324 = load i64, ptr %36, align 8, !tbaa !9
  %5325 = icmp sge i64 %5323, %5324
  %5326 = zext i1 %5325 to i32
  br label %5332

5327:                                             ; preds = %5319
  %5328 = load i64, ptr %40, align 8, !tbaa !9
  %5329 = load i64, ptr %36, align 8, !tbaa !9
  %5330 = icmp sle i64 %5328, %5329
  %5331 = zext i1 %5330 to i32
  br label %5332

5332:                                             ; preds = %5327, %5322
  %5333 = phi i32 [ %5326, %5322 ], [ %5331, %5327 ]
  %5334 = icmp ne i32 %5333, 0
  br i1 %5334, label %5335, label %5373

5335:                                             ; preds = %5332
  %5336 = load ptr, ptr %24, align 8, !tbaa !5
  %5337 = load i64, ptr %40, align 8, !tbaa !9
  %5338 = load i64, ptr %32, align 8, !tbaa !9
  %5339 = mul nsw i64 %5337, %5338
  %5340 = add nsw i64 %5339, 1
  %5341 = getelementptr inbounds double, ptr %5336, i64 %5340
  %5342 = load ptr, ptr %24, align 8, !tbaa !5
  %5343 = load i64, ptr %40, align 8, !tbaa !9
  %5344 = sub nsw i64 %5343, 1
  %5345 = load i64, ptr %32, align 8, !tbaa !9
  %5346 = mul nsw i64 %5344, %5345
  %5347 = add nsw i64 %5346, 1
  %5348 = getelementptr inbounds double, ptr %5342, i64 %5347
  %5349 = load ptr, ptr %26, align 8, !tbaa !5
  %5350 = load ptr, ptr %17, align 8, !tbaa !5
  %5351 = load i64, ptr %5350, align 8, !tbaa !9
  %5352 = load i64, ptr %43, align 8, !tbaa !9
  %5353 = add nsw i64 %5351, %5352
  %5354 = load ptr, ptr %19, align 8, !tbaa !5
  %5355 = load i64, ptr %5354, align 8, !tbaa !9
  %5356 = sub nsw i64 %5353, %5355
  %5357 = load i64, ptr %40, align 8, !tbaa !9
  %5358 = add nsw i64 %5356, %5357
  %5359 = getelementptr inbounds double, ptr %5349, i64 %5358
  %5360 = load ptr, ptr %26, align 8, !tbaa !5
  %5361 = load i64, ptr %43, align 8, !tbaa !9
  %5362 = load ptr, ptr %19, align 8, !tbaa !5
  %5363 = load i64, ptr %5362, align 8, !tbaa !9
  %5364 = sub nsw i64 %5361, %5363
  %5365 = load i64, ptr %40, align 8, !tbaa !9
  %5366 = add nsw i64 %5364, %5365
  %5367 = getelementptr inbounds double, ptr %5360, i64 %5366
  %5368 = call i32 @f2c_drot(ptr noundef %52, ptr noundef %5341, ptr noundef @c__1, ptr noundef %5348, ptr noundef @c__1, ptr noundef %5359, ptr noundef %5367)
  br label %5369

5369:                                             ; preds = %5335
  %5370 = load i64, ptr %37, align 8, !tbaa !9
  %5371 = load i64, ptr %40, align 8, !tbaa !9
  %5372 = add nsw i64 %5371, %5370
  store i64 %5372, ptr %40, align 8, !tbaa !9
  br label %5319, !llvm.loop !78

5373:                                             ; preds = %5332
  br label %5374

5374:                                             ; preds = %5373, %5312
  br label %5375

5375:                                             ; preds = %5374
  %5376 = load i64, ptr %41, align 8, !tbaa !9
  %5377 = add nsw i64 %5376, -1
  store i64 %5377, ptr %41, align 8, !tbaa !9
  br label %5075, !llvm.loop !79

5378:                                             ; preds = %5075
  %5379 = load ptr, ptr %19, align 8, !tbaa !5
  %5380 = load i64, ptr %5379, align 8, !tbaa !9
  %5381 = sub nsw i64 %5380, 1
  store i64 %5381, ptr %37, align 8, !tbaa !9
  store i64 1, ptr %41, align 8, !tbaa !9
  br label %5382

5382:                                             ; preds = %5463, %5378
  %5383 = load i64, ptr %41, align 8, !tbaa !9
  %5384 = load i64, ptr %37, align 8, !tbaa !9
  %5385 = icmp sle i64 %5383, %5384
  br i1 %5385, label %5386, label %5466

5386:                                             ; preds = %5382
  store i64 1, ptr %36, align 8, !tbaa !9
  %5387 = load i64, ptr %41, align 8, !tbaa !9
  %5388 = load i64, ptr %45, align 8, !tbaa !9
  %5389 = add nsw i64 %5387, %5388
  %5390 = load i64, ptr %43, align 8, !tbaa !9
  %5391 = sub nsw i64 %5389, %5390
  %5392 = add nsw i64 %5391, 1
  store i64 %5392, ptr %34, align 8, !tbaa !9
  %5393 = load i64, ptr %39, align 8, !tbaa !9
  %5394 = load i64, ptr %41, align 8, !tbaa !9
  %5395 = add nsw i64 %5393, %5394
  %5396 = add nsw i64 %5395, 1
  %5397 = load i64, ptr %36, align 8, !tbaa !9
  %5398 = load i64, ptr %34, align 8, !tbaa !9
  %5399 = icmp sge i64 %5397, %5398
  br i1 %5399, label %5400, label %5402

5400:                                             ; preds = %5386
  %5401 = load i64, ptr %36, align 8, !tbaa !9
  br label %5404

5402:                                             ; preds = %5386
  %5403 = load i64, ptr %34, align 8, !tbaa !9
  br label %5404

5404:                                             ; preds = %5402, %5400
  %5405 = phi i64 [ %5401, %5400 ], [ %5403, %5402 ]
  %5406 = load i64, ptr %53, align 8, !tbaa !9
  %5407 = mul nsw i64 %5405, %5406
  %5408 = sub nsw i64 %5396, %5407
  store i64 %5408, ptr %49, align 8, !tbaa !9
  %5409 = load ptr, ptr %19, align 8, !tbaa !5
  %5410 = load i64, ptr %5409, align 8, !tbaa !9
  %5411 = load i64, ptr %41, align 8, !tbaa !9
  %5412 = sub nsw i64 %5410, %5411
  store i64 %5412, ptr %42, align 8, !tbaa !9
  br label %5413

5413:                                             ; preds = %5459, %5404
  %5414 = load i64, ptr %42, align 8, !tbaa !9
  %5415 = icmp sge i64 %5414, 1
  br i1 %5415, label %5416, label %5462

5416:                                             ; preds = %5413
  %5417 = load i64, ptr %49, align 8, !tbaa !9
  %5418 = load i64, ptr %42, align 8, !tbaa !9
  %5419 = add nsw i64 %5417, %5418
  %5420 = sub nsw i64 %5419, 1
  %5421 = load i64, ptr %53, align 8, !tbaa !9
  %5422 = sdiv i64 %5420, %5421
  store i64 %5422, ptr %60, align 8, !tbaa !9
  %5423 = load i64, ptr %49, align 8, !tbaa !9
  %5424 = load i64, ptr %60, align 8, !tbaa !9
  %5425 = sub nsw i64 %5424, 1
  %5426 = load i64, ptr %53, align 8, !tbaa !9
  %5427 = mul nsw i64 %5425, %5426
  %5428 = sub nsw i64 %5423, %5427
  store i64 %5428, ptr %56, align 8, !tbaa !9
  %5429 = load i64, ptr %60, align 8, !tbaa !9
  %5430 = icmp sgt i64 %5429, 0
  br i1 %5430, label %5431, label %5458

5431:                                             ; preds = %5416
  %5432 = load ptr, ptr %20, align 8, !tbaa !5
  %5433 = load i64, ptr %42, align 8, !tbaa !9
  %5434 = load i64, ptr %56, align 8, !tbaa !9
  %5435 = load i64, ptr %28, align 8, !tbaa !9
  %5436 = mul nsw i64 %5434, %5435
  %5437 = add nsw i64 %5433, %5436
  %5438 = getelementptr inbounds double, ptr %5432, i64 %5437
  %5439 = load ptr, ptr %20, align 8, !tbaa !5
  %5440 = load i64, ptr %42, align 8, !tbaa !9
  %5441 = add nsw i64 %5440, 1
  %5442 = load i64, ptr %56, align 8, !tbaa !9
  %5443 = sub nsw i64 %5442, 1
  %5444 = load i64, ptr %28, align 8, !tbaa !9
  %5445 = mul nsw i64 %5443, %5444
  %5446 = add nsw i64 %5441, %5445
  %5447 = getelementptr inbounds double, ptr %5439, i64 %5446
  %5448 = load ptr, ptr %26, align 8, !tbaa !5
  %5449 = load ptr, ptr %17, align 8, !tbaa !5
  %5450 = load i64, ptr %5449, align 8, !tbaa !9
  %5451 = load i64, ptr %56, align 8, !tbaa !9
  %5452 = add nsw i64 %5450, %5451
  %5453 = getelementptr inbounds double, ptr %5448, i64 %5452
  %5454 = load ptr, ptr %26, align 8, !tbaa !5
  %5455 = load i64, ptr %56, align 8, !tbaa !9
  %5456 = getelementptr inbounds double, ptr %5454, i64 %5455
  %5457 = call i32 @dlartv_(ptr noundef %60, ptr noundef %5438, ptr noundef %61, ptr noundef %5447, ptr noundef %61, ptr noundef %5453, ptr noundef %5456, ptr noundef %53)
  br label %5458

5458:                                             ; preds = %5431, %5416
  br label %5459

5459:                                             ; preds = %5458
  %5460 = load i64, ptr %42, align 8, !tbaa !9
  %5461 = add nsw i64 %5460, -1
  store i64 %5461, ptr %42, align 8, !tbaa !9
  br label %5413, !llvm.loop !80

5462:                                             ; preds = %5413
  br label %5463

5463:                                             ; preds = %5462
  %5464 = load i64, ptr %41, align 8, !tbaa !9
  %5465 = add nsw i64 %5464, 1
  store i64 %5465, ptr %41, align 8, !tbaa !9
  br label %5382, !llvm.loop !81

5466:                                             ; preds = %5382
  %5467 = load ptr, ptr %19, align 8, !tbaa !5
  %5468 = load i64, ptr %5467, align 8, !tbaa !9
  %5469 = icmp sgt i64 %5468, 1
  br i1 %5469, label %5470, label %5524

5470:                                             ; preds = %5466
  %5471 = load i64, ptr %39, align 8, !tbaa !9
  %5472 = load ptr, ptr %19, align 8, !tbaa !5
  %5473 = load i64, ptr %5472, align 8, !tbaa !9
  %5474 = add nsw i64 %5471, %5473
  store i64 %5474, ptr %36, align 8, !tbaa !9
  %5475 = load i64, ptr %36, align 8, !tbaa !9
  %5476 = load i64, ptr %43, align 8, !tbaa !9
  %5477 = icmp sle i64 %5475, %5476
  br i1 %5477, label %5478, label %5480

5478:                                             ; preds = %5470
  %5479 = load i64, ptr %36, align 8, !tbaa !9
  br label %5482

5480:                                             ; preds = %5470
  %5481 = load i64, ptr %43, align 8, !tbaa !9
  br label %5482

5482:                                             ; preds = %5480, %5478
  %5483 = phi i64 [ %5479, %5478 ], [ %5481, %5480 ]
  %5484 = load ptr, ptr %18, align 8, !tbaa !5
  %5485 = load i64, ptr %5484, align 8, !tbaa !9
  %5486 = shl i64 %5485, 1
  %5487 = sub nsw i64 %5483, %5486
  %5488 = sub nsw i64 %5487, 1
  store i64 %5488, ptr %37, align 8, !tbaa !9
  store i64 2, ptr %40, align 8, !tbaa !9
  br label %5489

5489:                                             ; preds = %5520, %5482
  %5490 = load i64, ptr %40, align 8, !tbaa !9
  %5491 = load i64, ptr %37, align 8, !tbaa !9
  %5492 = icmp sle i64 %5490, %5491
  br i1 %5492, label %5493, label %5523

5493:                                             ; preds = %5489
  %5494 = load ptr, ptr %26, align 8, !tbaa !5
  %5495 = load ptr, ptr %17, align 8, !tbaa !5
  %5496 = load i64, ptr %5495, align 8, !tbaa !9
  %5497 = load i64, ptr %40, align 8, !tbaa !9
  %5498 = add nsw i64 %5496, %5497
  %5499 = load ptr, ptr %18, align 8, !tbaa !5
  %5500 = load i64, ptr %5499, align 8, !tbaa !9
  %5501 = add nsw i64 %5498, %5500
  %5502 = getelementptr inbounds double, ptr %5494, i64 %5501
  %5503 = load double, ptr %5502, align 8, !tbaa !11
  %5504 = load ptr, ptr %26, align 8, !tbaa !5
  %5505 = load ptr, ptr %17, align 8, !tbaa !5
  %5506 = load i64, ptr %5505, align 8, !tbaa !9
  %5507 = load i64, ptr %40, align 8, !tbaa !9
  %5508 = add nsw i64 %5506, %5507
  %5509 = getelementptr inbounds double, ptr %5504, i64 %5508
  store double %5503, ptr %5509, align 8, !tbaa !11
  %5510 = load ptr, ptr %26, align 8, !tbaa !5
  %5511 = load i64, ptr %40, align 8, !tbaa !9
  %5512 = load ptr, ptr %18, align 8, !tbaa !5
  %5513 = load i64, ptr %5512, align 8, !tbaa !9
  %5514 = add nsw i64 %5511, %5513
  %5515 = getelementptr inbounds double, ptr %5510, i64 %5514
  %5516 = load double, ptr %5515, align 8, !tbaa !11
  %5517 = load ptr, ptr %26, align 8, !tbaa !5
  %5518 = load i64, ptr %40, align 8, !tbaa !9
  %5519 = getelementptr inbounds double, ptr %5517, i64 %5518
  store double %5516, ptr %5519, align 8, !tbaa !11
  br label %5520

5520:                                             ; preds = %5493
  %5521 = load i64, ptr %40, align 8, !tbaa !9
  %5522 = add nsw i64 %5521, 1
  store i64 %5522, ptr %40, align 8, !tbaa !9
  br label %5489, !llvm.loop !82

5523:                                             ; preds = %5489
  br label %5524

5524:                                             ; preds = %5523, %5466
  br label %7263

5525:                                             ; preds = %3773
  %5526 = load i64, ptr %64, align 8, !tbaa !9
  %5527 = icmp ne i64 %5526, 0
  br i1 %5527, label %5528, label %5910

5528:                                             ; preds = %5525
  %5529 = load ptr, ptr %22, align 8, !tbaa !5
  %5530 = load i64, ptr %39, align 8, !tbaa !9
  %5531 = load i64, ptr %30, align 8, !tbaa !9
  %5532 = mul nsw i64 %5530, %5531
  %5533 = add nsw i64 %5532, 1
  %5534 = getelementptr inbounds double, ptr %5529, i64 %5533
  %5535 = load double, ptr %5534, align 8, !tbaa !11
  store double %5535, ptr %58, align 8, !tbaa !11
  %5536 = load i64, ptr %39, align 8, !tbaa !9
  store i64 %5536, ptr %37, align 8, !tbaa !9
  %5537 = load i64, ptr %46, align 8, !tbaa !9
  store i64 %5537, ptr %40, align 8, !tbaa !9
  br label %5538

5538:                                             ; preds = %5556, %5528
  %5539 = load i64, ptr %40, align 8, !tbaa !9
  %5540 = load i64, ptr %37, align 8, !tbaa !9
  %5541 = icmp sle i64 %5539, %5540
  br i1 %5541, label %5542, label %5559

5542:                                             ; preds = %5538
  %5543 = load double, ptr %58, align 8, !tbaa !11
  %5544 = load ptr, ptr %20, align 8, !tbaa !5
  %5545 = load i64, ptr %39, align 8, !tbaa !9
  %5546 = load i64, ptr %40, align 8, !tbaa !9
  %5547 = sub nsw i64 %5545, %5546
  %5548 = add nsw i64 %5547, 1
  %5549 = load i64, ptr %40, align 8, !tbaa !9
  %5550 = load i64, ptr %28, align 8, !tbaa !9
  %5551 = mul nsw i64 %5549, %5550
  %5552 = add nsw i64 %5548, %5551
  %5553 = getelementptr inbounds double, ptr %5544, i64 %5552
  %5554 = load double, ptr %5553, align 8, !tbaa !11
  %5555 = fdiv double %5554, %5543
  store double %5555, ptr %5553, align 8, !tbaa !11
  br label %5556

5556:                                             ; preds = %5542
  %5557 = load i64, ptr %40, align 8, !tbaa !9
  %5558 = add nsw i64 %5557, 1
  store i64 %5558, ptr %40, align 8, !tbaa !9
  br label %5538, !llvm.loop !83

5559:                                             ; preds = %5538
  %5560 = load ptr, ptr %17, align 8, !tbaa !5
  %5561 = load i64, ptr %5560, align 8, !tbaa !9
  store i64 %5561, ptr %36, align 8, !tbaa !9
  %5562 = load i64, ptr %39, align 8, !tbaa !9
  %5563 = load ptr, ptr %18, align 8, !tbaa !5
  %5564 = load i64, ptr %5563, align 8, !tbaa !9
  %5565 = add nsw i64 %5562, %5564
  store i64 %5565, ptr %34, align 8, !tbaa !9
  %5566 = load i64, ptr %36, align 8, !tbaa !9
  %5567 = load i64, ptr %34, align 8, !tbaa !9
  %5568 = icmp sle i64 %5566, %5567
  br i1 %5568, label %5569, label %5571

5569:                                             ; preds = %5559
  %5570 = load i64, ptr %36, align 8, !tbaa !9
  br label %5573

5571:                                             ; preds = %5559
  %5572 = load i64, ptr %34, align 8, !tbaa !9
  br label %5573

5573:                                             ; preds = %5571, %5569
  %5574 = phi i64 [ %5570, %5569 ], [ %5572, %5571 ]
  store i64 %5574, ptr %37, align 8, !tbaa !9
  %5575 = load i64, ptr %39, align 8, !tbaa !9
  store i64 %5575, ptr %40, align 8, !tbaa !9
  br label %5576

5576:                                             ; preds = %5594, %5573
  %5577 = load i64, ptr %40, align 8, !tbaa !9
  %5578 = load i64, ptr %37, align 8, !tbaa !9
  %5579 = icmp sle i64 %5577, %5578
  br i1 %5579, label %5580, label %5597

5580:                                             ; preds = %5576
  %5581 = load double, ptr %58, align 8, !tbaa !11
  %5582 = load ptr, ptr %20, align 8, !tbaa !5
  %5583 = load i64, ptr %40, align 8, !tbaa !9
  %5584 = load i64, ptr %39, align 8, !tbaa !9
  %5585 = sub nsw i64 %5583, %5584
  %5586 = add nsw i64 %5585, 1
  %5587 = load i64, ptr %39, align 8, !tbaa !9
  %5588 = load i64, ptr %28, align 8, !tbaa !9
  %5589 = mul nsw i64 %5587, %5588
  %5590 = add nsw i64 %5586, %5589
  %5591 = getelementptr inbounds double, ptr %5582, i64 %5590
  %5592 = load double, ptr %5591, align 8, !tbaa !11
  %5593 = fdiv double %5592, %5581
  store double %5593, ptr %5591, align 8, !tbaa !11
  br label %5594

5594:                                             ; preds = %5580
  %5595 = load i64, ptr %40, align 8, !tbaa !9
  %5596 = add nsw i64 %5595, 1
  store i64 %5596, ptr %40, align 8, !tbaa !9
  br label %5576, !llvm.loop !84

5597:                                             ; preds = %5576
  %5598 = load i64, ptr %39, align 8, !tbaa !9
  %5599 = load i64, ptr %59, align 8, !tbaa !9
  %5600 = add nsw i64 %5598, %5599
  store i64 %5600, ptr %37, align 8, !tbaa !9
  %5601 = load i64, ptr %39, align 8, !tbaa !9
  %5602 = add nsw i64 %5601, 1
  store i64 %5602, ptr %41, align 8, !tbaa !9
  br label %5603

5603:                                             ; preds = %5784, %5597
  %5604 = load i64, ptr %41, align 8, !tbaa !9
  %5605 = load i64, ptr %37, align 8, !tbaa !9
  %5606 = icmp sle i64 %5604, %5605
  br i1 %5606, label %5607, label %5787

5607:                                             ; preds = %5603
  %5608 = load i64, ptr %39, align 8, !tbaa !9
  %5609 = load i64, ptr %59, align 8, !tbaa !9
  %5610 = add nsw i64 %5608, %5609
  store i64 %5610, ptr %36, align 8, !tbaa !9
  %5611 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %5611, ptr %40, align 8, !tbaa !9
  br label %5612

5612:                                             ; preds = %5717, %5607
  %5613 = load i64, ptr %40, align 8, !tbaa !9
  %5614 = load i64, ptr %36, align 8, !tbaa !9
  %5615 = icmp sle i64 %5613, %5614
  br i1 %5615, label %5616, label %5720

5616:                                             ; preds = %5612
  %5617 = load ptr, ptr %20, align 8, !tbaa !5
  %5618 = load i64, ptr %40, align 8, !tbaa !9
  %5619 = load i64, ptr %41, align 8, !tbaa !9
  %5620 = sub nsw i64 %5618, %5619
  %5621 = add nsw i64 %5620, 1
  %5622 = load i64, ptr %41, align 8, !tbaa !9
  %5623 = load i64, ptr %28, align 8, !tbaa !9
  %5624 = mul nsw i64 %5622, %5623
  %5625 = add nsw i64 %5621, %5624
  %5626 = getelementptr inbounds double, ptr %5617, i64 %5625
  %5627 = load double, ptr %5626, align 8, !tbaa !11
  %5628 = load ptr, ptr %22, align 8, !tbaa !5
  %5629 = load i64, ptr %40, align 8, !tbaa !9
  %5630 = load i64, ptr %39, align 8, !tbaa !9
  %5631 = sub nsw i64 %5629, %5630
  %5632 = add nsw i64 %5631, 1
  %5633 = load i64, ptr %39, align 8, !tbaa !9
  %5634 = load i64, ptr %30, align 8, !tbaa !9
  %5635 = mul nsw i64 %5633, %5634
  %5636 = add nsw i64 %5632, %5635
  %5637 = getelementptr inbounds double, ptr %5628, i64 %5636
  %5638 = load double, ptr %5637, align 8, !tbaa !11
  %5639 = load ptr, ptr %20, align 8, !tbaa !5
  %5640 = load i64, ptr %41, align 8, !tbaa !9
  %5641 = load i64, ptr %39, align 8, !tbaa !9
  %5642 = sub nsw i64 %5640, %5641
  %5643 = add nsw i64 %5642, 1
  %5644 = load i64, ptr %39, align 8, !tbaa !9
  %5645 = load i64, ptr %28, align 8, !tbaa !9
  %5646 = mul nsw i64 %5644, %5645
  %5647 = add nsw i64 %5643, %5646
  %5648 = getelementptr inbounds double, ptr %5639, i64 %5647
  %5649 = load double, ptr %5648, align 8, !tbaa !11
  %5650 = fneg double %5638
  %5651 = call double @llvm.fmuladd.f64(double %5650, double %5649, double %5627)
  %5652 = load ptr, ptr %22, align 8, !tbaa !5
  %5653 = load i64, ptr %41, align 8, !tbaa !9
  %5654 = load i64, ptr %39, align 8, !tbaa !9
  %5655 = sub nsw i64 %5653, %5654
  %5656 = add nsw i64 %5655, 1
  %5657 = load i64, ptr %39, align 8, !tbaa !9
  %5658 = load i64, ptr %30, align 8, !tbaa !9
  %5659 = mul nsw i64 %5657, %5658
  %5660 = add nsw i64 %5656, %5659
  %5661 = getelementptr inbounds double, ptr %5652, i64 %5660
  %5662 = load double, ptr %5661, align 8, !tbaa !11
  %5663 = load ptr, ptr %20, align 8, !tbaa !5
  %5664 = load i64, ptr %40, align 8, !tbaa !9
  %5665 = load i64, ptr %39, align 8, !tbaa !9
  %5666 = sub nsw i64 %5664, %5665
  %5667 = add nsw i64 %5666, 1
  %5668 = load i64, ptr %39, align 8, !tbaa !9
  %5669 = load i64, ptr %28, align 8, !tbaa !9
  %5670 = mul nsw i64 %5668, %5669
  %5671 = add nsw i64 %5667, %5670
  %5672 = getelementptr inbounds double, ptr %5663, i64 %5671
  %5673 = load double, ptr %5672, align 8, !tbaa !11
  %5674 = fneg double %5662
  %5675 = call double @llvm.fmuladd.f64(double %5674, double %5673, double %5651)
  %5676 = load ptr, ptr %20, align 8, !tbaa !5
  %5677 = load i64, ptr %39, align 8, !tbaa !9
  %5678 = load i64, ptr %28, align 8, !tbaa !9
  %5679 = mul nsw i64 %5677, %5678
  %5680 = add nsw i64 %5679, 1
  %5681 = getelementptr inbounds double, ptr %5676, i64 %5680
  %5682 = load double, ptr %5681, align 8, !tbaa !11
  %5683 = load ptr, ptr %22, align 8, !tbaa !5
  %5684 = load i64, ptr %40, align 8, !tbaa !9
  %5685 = load i64, ptr %39, align 8, !tbaa !9
  %5686 = sub nsw i64 %5684, %5685
  %5687 = add nsw i64 %5686, 1
  %5688 = load i64, ptr %39, align 8, !tbaa !9
  %5689 = load i64, ptr %30, align 8, !tbaa !9
  %5690 = mul nsw i64 %5688, %5689
  %5691 = add nsw i64 %5687, %5690
  %5692 = getelementptr inbounds double, ptr %5683, i64 %5691
  %5693 = load double, ptr %5692, align 8, !tbaa !11
  %5694 = fmul double %5682, %5693
  %5695 = load ptr, ptr %22, align 8, !tbaa !5
  %5696 = load i64, ptr %41, align 8, !tbaa !9
  %5697 = load i64, ptr %39, align 8, !tbaa !9
  %5698 = sub nsw i64 %5696, %5697
  %5699 = add nsw i64 %5698, 1
  %5700 = load i64, ptr %39, align 8, !tbaa !9
  %5701 = load i64, ptr %30, align 8, !tbaa !9
  %5702 = mul nsw i64 %5700, %5701
  %5703 = add nsw i64 %5699, %5702
  %5704 = getelementptr inbounds double, ptr %5695, i64 %5703
  %5705 = load double, ptr %5704, align 8, !tbaa !11
  %5706 = call double @llvm.fmuladd.f64(double %5694, double %5705, double %5675)
  %5707 = load ptr, ptr %20, align 8, !tbaa !5
  %5708 = load i64, ptr %40, align 8, !tbaa !9
  %5709 = load i64, ptr %41, align 8, !tbaa !9
  %5710 = sub nsw i64 %5708, %5709
  %5711 = add nsw i64 %5710, 1
  %5712 = load i64, ptr %41, align 8, !tbaa !9
  %5713 = load i64, ptr %28, align 8, !tbaa !9
  %5714 = mul nsw i64 %5712, %5713
  %5715 = add nsw i64 %5711, %5714
  %5716 = getelementptr inbounds double, ptr %5707, i64 %5715
  store double %5706, ptr %5716, align 8, !tbaa !11
  br label %5717

5717:                                             ; preds = %5616
  %5718 = load i64, ptr %40, align 8, !tbaa !9
  %5719 = add nsw i64 %5718, 1
  store i64 %5719, ptr %40, align 8, !tbaa !9
  br label %5612, !llvm.loop !85

5720:                                             ; preds = %5612
  %5721 = load ptr, ptr %17, align 8, !tbaa !5
  %5722 = load i64, ptr %5721, align 8, !tbaa !9
  store i64 %5722, ptr %34, align 8, !tbaa !9
  %5723 = load i64, ptr %39, align 8, !tbaa !9
  %5724 = load ptr, ptr %18, align 8, !tbaa !5
  %5725 = load i64, ptr %5724, align 8, !tbaa !9
  %5726 = add nsw i64 %5723, %5725
  store i64 %5726, ptr %35, align 8, !tbaa !9
  %5727 = load i64, ptr %34, align 8, !tbaa !9
  %5728 = load i64, ptr %35, align 8, !tbaa !9
  %5729 = icmp sle i64 %5727, %5728
  br i1 %5729, label %5730, label %5732

5730:                                             ; preds = %5720
  %5731 = load i64, ptr %34, align 8, !tbaa !9
  br label %5734

5732:                                             ; preds = %5720
  %5733 = load i64, ptr %35, align 8, !tbaa !9
  br label %5734

5734:                                             ; preds = %5732, %5730
  %5735 = phi i64 [ %5731, %5730 ], [ %5733, %5732 ]
  store i64 %5735, ptr %36, align 8, !tbaa !9
  %5736 = load i64, ptr %39, align 8, !tbaa !9
  %5737 = load i64, ptr %59, align 8, !tbaa !9
  %5738 = add nsw i64 %5736, %5737
  %5739 = add nsw i64 %5738, 1
  store i64 %5739, ptr %40, align 8, !tbaa !9
  br label %5740

5740:                                             ; preds = %5780, %5734
  %5741 = load i64, ptr %40, align 8, !tbaa !9
  %5742 = load i64, ptr %36, align 8, !tbaa !9
  %5743 = icmp sle i64 %5741, %5742
  br i1 %5743, label %5744, label %5783

5744:                                             ; preds = %5740
  %5745 = load ptr, ptr %22, align 8, !tbaa !5
  %5746 = load i64, ptr %41, align 8, !tbaa !9
  %5747 = load i64, ptr %39, align 8, !tbaa !9
  %5748 = sub nsw i64 %5746, %5747
  %5749 = add nsw i64 %5748, 1
  %5750 = load i64, ptr %39, align 8, !tbaa !9
  %5751 = load i64, ptr %30, align 8, !tbaa !9
  %5752 = mul nsw i64 %5750, %5751
  %5753 = add nsw i64 %5749, %5752
  %5754 = getelementptr inbounds double, ptr %5745, i64 %5753
  %5755 = load double, ptr %5754, align 8, !tbaa !11
  %5756 = load ptr, ptr %20, align 8, !tbaa !5
  %5757 = load i64, ptr %40, align 8, !tbaa !9
  %5758 = load i64, ptr %39, align 8, !tbaa !9
  %5759 = sub nsw i64 %5757, %5758
  %5760 = add nsw i64 %5759, 1
  %5761 = load i64, ptr %39, align 8, !tbaa !9
  %5762 = load i64, ptr %28, align 8, !tbaa !9
  %5763 = mul nsw i64 %5761, %5762
  %5764 = add nsw i64 %5760, %5763
  %5765 = getelementptr inbounds double, ptr %5756, i64 %5764
  %5766 = load double, ptr %5765, align 8, !tbaa !11
  %5767 = load ptr, ptr %20, align 8, !tbaa !5
  %5768 = load i64, ptr %40, align 8, !tbaa !9
  %5769 = load i64, ptr %41, align 8, !tbaa !9
  %5770 = sub nsw i64 %5768, %5769
  %5771 = add nsw i64 %5770, 1
  %5772 = load i64, ptr %41, align 8, !tbaa !9
  %5773 = load i64, ptr %28, align 8, !tbaa !9
  %5774 = mul nsw i64 %5772, %5773
  %5775 = add nsw i64 %5771, %5774
  %5776 = getelementptr inbounds double, ptr %5767, i64 %5775
  %5777 = load double, ptr %5776, align 8, !tbaa !11
  %5778 = fneg double %5755
  %5779 = call double @llvm.fmuladd.f64(double %5778, double %5766, double %5777)
  store double %5779, ptr %5776, align 8, !tbaa !11
  br label %5780

5780:                                             ; preds = %5744
  %5781 = load i64, ptr %40, align 8, !tbaa !9
  %5782 = add nsw i64 %5781, 1
  store i64 %5782, ptr %40, align 8, !tbaa !9
  br label %5740, !llvm.loop !86

5783:                                             ; preds = %5740
  br label %5784

5784:                                             ; preds = %5783
  %5785 = load i64, ptr %41, align 8, !tbaa !9
  %5786 = add nsw i64 %5785, 1
  store i64 %5786, ptr %41, align 8, !tbaa !9
  br label %5603, !llvm.loop !87

5787:                                             ; preds = %5603
  %5788 = load i64, ptr %39, align 8, !tbaa !9
  store i64 %5788, ptr %37, align 8, !tbaa !9
  %5789 = load i64, ptr %46, align 8, !tbaa !9
  store i64 %5789, ptr %40, align 8, !tbaa !9
  br label %5790

5790:                                             ; preds = %5857, %5787
  %5791 = load i64, ptr %40, align 8, !tbaa !9
  %5792 = load i64, ptr %37, align 8, !tbaa !9
  %5793 = icmp sle i64 %5791, %5792
  br i1 %5793, label %5794, label %5860

5794:                                             ; preds = %5790
  %5795 = load i64, ptr %40, align 8, !tbaa !9
  %5796 = load ptr, ptr %18, align 8, !tbaa !5
  %5797 = load i64, ptr %5796, align 8, !tbaa !9
  %5798 = add nsw i64 %5795, %5797
  store i64 %5798, ptr %34, align 8, !tbaa !9
  %5799 = load i64, ptr %39, align 8, !tbaa !9
  %5800 = load i64, ptr %59, align 8, !tbaa !9
  %5801 = add nsw i64 %5799, %5800
  store i64 %5801, ptr %35, align 8, !tbaa !9
  %5802 = load i64, ptr %34, align 8, !tbaa !9
  %5803 = load i64, ptr %35, align 8, !tbaa !9
  %5804 = icmp sle i64 %5802, %5803
  br i1 %5804, label %5805, label %5807

5805:                                             ; preds = %5794
  %5806 = load i64, ptr %34, align 8, !tbaa !9
  br label %5809

5807:                                             ; preds = %5794
  %5808 = load i64, ptr %35, align 8, !tbaa !9
  br label %5809

5809:                                             ; preds = %5807, %5805
  %5810 = phi i64 [ %5806, %5805 ], [ %5808, %5807 ]
  store i64 %5810, ptr %36, align 8, !tbaa !9
  %5811 = load i64, ptr %39, align 8, !tbaa !9
  %5812 = add nsw i64 %5811, 1
  store i64 %5812, ptr %41, align 8, !tbaa !9
  br label %5813

5813:                                             ; preds = %5853, %5809
  %5814 = load i64, ptr %41, align 8, !tbaa !9
  %5815 = load i64, ptr %36, align 8, !tbaa !9
  %5816 = icmp sle i64 %5814, %5815
  br i1 %5816, label %5817, label %5856

5817:                                             ; preds = %5813
  %5818 = load ptr, ptr %22, align 8, !tbaa !5
  %5819 = load i64, ptr %41, align 8, !tbaa !9
  %5820 = load i64, ptr %39, align 8, !tbaa !9
  %5821 = sub nsw i64 %5819, %5820
  %5822 = add nsw i64 %5821, 1
  %5823 = load i64, ptr %39, align 8, !tbaa !9
  %5824 = load i64, ptr %30, align 8, !tbaa !9
  %5825 = mul nsw i64 %5823, %5824
  %5826 = add nsw i64 %5822, %5825
  %5827 = getelementptr inbounds double, ptr %5818, i64 %5826
  %5828 = load double, ptr %5827, align 8, !tbaa !11
  %5829 = load ptr, ptr %20, align 8, !tbaa !5
  %5830 = load i64, ptr %39, align 8, !tbaa !9
  %5831 = load i64, ptr %40, align 8, !tbaa !9
  %5832 = sub nsw i64 %5830, %5831
  %5833 = add nsw i64 %5832, 1
  %5834 = load i64, ptr %40, align 8, !tbaa !9
  %5835 = load i64, ptr %28, align 8, !tbaa !9
  %5836 = mul nsw i64 %5834, %5835
  %5837 = add nsw i64 %5833, %5836
  %5838 = getelementptr inbounds double, ptr %5829, i64 %5837
  %5839 = load double, ptr %5838, align 8, !tbaa !11
  %5840 = load ptr, ptr %20, align 8, !tbaa !5
  %5841 = load i64, ptr %41, align 8, !tbaa !9
  %5842 = load i64, ptr %40, align 8, !tbaa !9
  %5843 = sub nsw i64 %5841, %5842
  %5844 = add nsw i64 %5843, 1
  %5845 = load i64, ptr %40, align 8, !tbaa !9
  %5846 = load i64, ptr %28, align 8, !tbaa !9
  %5847 = mul nsw i64 %5845, %5846
  %5848 = add nsw i64 %5844, %5847
  %5849 = getelementptr inbounds double, ptr %5840, i64 %5848
  %5850 = load double, ptr %5849, align 8, !tbaa !11
  %5851 = fneg double %5828
  %5852 = call double @llvm.fmuladd.f64(double %5851, double %5839, double %5850)
  store double %5852, ptr %5849, align 8, !tbaa !11
  br label %5853

5853:                                             ; preds = %5817
  %5854 = load i64, ptr %41, align 8, !tbaa !9
  %5855 = add nsw i64 %5854, 1
  store i64 %5855, ptr %41, align 8, !tbaa !9
  br label %5813, !llvm.loop !88

5856:                                             ; preds = %5813
  br label %5857

5857:                                             ; preds = %5856
  %5858 = load i64, ptr %40, align 8, !tbaa !9
  %5859 = add nsw i64 %5858, 1
  store i64 %5859, ptr %40, align 8, !tbaa !9
  br label %5790, !llvm.loop !89

5860:                                             ; preds = %5790
  %5861 = load i64, ptr %63, align 8, !tbaa !9
  %5862 = icmp ne i64 %5861, 0
  br i1 %5862, label %5863, label %5898

5863:                                             ; preds = %5860
  %5864 = load double, ptr %58, align 8, !tbaa !11
  %5865 = fdiv double 1.000000e+00, %5864
  store double %5865, ptr %38, align 8, !tbaa !11
  %5866 = load ptr, ptr %24, align 8, !tbaa !5
  %5867 = load i64, ptr %39, align 8, !tbaa !9
  %5868 = load i64, ptr %32, align 8, !tbaa !9
  %5869 = mul nsw i64 %5867, %5868
  %5870 = add nsw i64 %5869, 1
  %5871 = getelementptr inbounds double, ptr %5866, i64 %5870
  %5872 = call i32 @f2c_dscal(ptr noundef %52, ptr noundef %38, ptr noundef %5871, ptr noundef @c__1)
  %5873 = load i64, ptr %59, align 8, !tbaa !9
  %5874 = icmp sgt i64 %5873, 0
  br i1 %5874, label %5875, label %5897

5875:                                             ; preds = %5863
  %5876 = load ptr, ptr %24, align 8, !tbaa !5
  %5877 = load i64, ptr %39, align 8, !tbaa !9
  %5878 = load i64, ptr %32, align 8, !tbaa !9
  %5879 = mul nsw i64 %5877, %5878
  %5880 = add nsw i64 %5879, 1
  %5881 = getelementptr inbounds double, ptr %5876, i64 %5880
  %5882 = load ptr, ptr %22, align 8, !tbaa !5
  %5883 = load i64, ptr %39, align 8, !tbaa !9
  %5884 = load i64, ptr %30, align 8, !tbaa !9
  %5885 = mul nsw i64 %5883, %5884
  %5886 = add nsw i64 %5885, 2
  %5887 = getelementptr inbounds double, ptr %5882, i64 %5886
  %5888 = load ptr, ptr %24, align 8, !tbaa !5
  %5889 = load i64, ptr %39, align 8, !tbaa !9
  %5890 = add nsw i64 %5889, 1
  %5891 = load i64, ptr %32, align 8, !tbaa !9
  %5892 = mul nsw i64 %5890, %5891
  %5893 = add nsw i64 %5892, 1
  %5894 = getelementptr inbounds double, ptr %5888, i64 %5893
  %5895 = load ptr, ptr %25, align 8, !tbaa !5
  %5896 = call i32 @f2c_dger(ptr noundef %52, ptr noundef %59, ptr noundef @c_b20, ptr noundef %5881, ptr noundef @c__1, ptr noundef %5887, ptr noundef @c__1, ptr noundef %5894, ptr noundef %5895)
  br label %5897

5897:                                             ; preds = %5875, %5863
  br label %5898

5898:                                             ; preds = %5897, %5860
  %5899 = load ptr, ptr %20, align 8, !tbaa !5
  %5900 = load i64, ptr %39, align 8, !tbaa !9
  %5901 = load i64, ptr %46, align 8, !tbaa !9
  %5902 = sub nsw i64 %5900, %5901
  %5903 = add nsw i64 %5902, 1
  %5904 = load i64, ptr %46, align 8, !tbaa !9
  %5905 = load i64, ptr %28, align 8, !tbaa !9
  %5906 = mul nsw i64 %5904, %5905
  %5907 = add nsw i64 %5903, %5906
  %5908 = getelementptr inbounds double, ptr %5899, i64 %5907
  %5909 = load double, ptr %5908, align 8, !tbaa !11
  store double %5909, ptr %55, align 8, !tbaa !11
  br label %5910

5910:                                             ; preds = %5898, %5525
  %5911 = load ptr, ptr %19, align 8, !tbaa !5
  %5912 = load i64, ptr %5911, align 8, !tbaa !9
  %5913 = sub nsw i64 %5912, 1
  store i64 %5913, ptr %37, align 8, !tbaa !9
  store i64 1, ptr %41, align 8, !tbaa !9
  br label %5914

5914:                                             ; preds = %6427, %5910
  %5915 = load i64, ptr %41, align 8, !tbaa !9
  %5916 = load i64, ptr %37, align 8, !tbaa !9
  %5917 = icmp sle i64 %5915, %5916
  br i1 %5917, label %5918, label %6430

5918:                                             ; preds = %5914
  %5919 = load i64, ptr %64, align 8, !tbaa !9
  %5920 = icmp ne i64 %5919, 0
  br i1 %5920, label %5921, label %6080

5921:                                             ; preds = %5918
  %5922 = load i64, ptr %39, align 8, !tbaa !9
  %5923 = load i64, ptr %41, align 8, !tbaa !9
  %5924 = add nsw i64 %5922, %5923
  %5925 = load i64, ptr %53, align 8, !tbaa !9
  %5926 = sub nsw i64 %5924, %5925
  %5927 = icmp sgt i64 %5926, 0
  br i1 %5927, label %5928, label %6079

5928:                                             ; preds = %5921
  %5929 = load i64, ptr %39, align 8, !tbaa !9
  %5930 = load i64, ptr %41, align 8, !tbaa !9
  %5931 = add nsw i64 %5929, %5930
  %5932 = load i64, ptr %43, align 8, !tbaa !9
  %5933 = icmp slt i64 %5931, %5932
  br i1 %5933, label %5934, label %6079

5934:                                             ; preds = %5928
  %5935 = load ptr, ptr %20, align 8, !tbaa !5
  %5936 = load i64, ptr %53, align 8, !tbaa !9
  %5937 = load i64, ptr %41, align 8, !tbaa !9
  %5938 = sub nsw i64 %5936, %5937
  %5939 = load i64, ptr %39, align 8, !tbaa !9
  %5940 = load i64, ptr %41, align 8, !tbaa !9
  %5941 = add nsw i64 %5939, %5940
  %5942 = load ptr, ptr %18, align 8, !tbaa !5
  %5943 = load i64, ptr %5942, align 8, !tbaa !9
  %5944 = sub nsw i64 %5941, %5943
  %5945 = load i64, ptr %28, align 8, !tbaa !9
  %5946 = mul nsw i64 %5944, %5945
  %5947 = add nsw i64 %5938, %5946
  %5948 = getelementptr inbounds double, ptr %5935, i64 %5947
  %5949 = load ptr, ptr %26, align 8, !tbaa !5
  %5950 = load ptr, ptr %17, align 8, !tbaa !5
  %5951 = load i64, ptr %5950, align 8, !tbaa !9
  %5952 = load i64, ptr %39, align 8, !tbaa !9
  %5953 = add nsw i64 %5951, %5952
  %5954 = load i64, ptr %41, align 8, !tbaa !9
  %5955 = add nsw i64 %5953, %5954
  %5956 = load ptr, ptr %18, align 8, !tbaa !5
  %5957 = load i64, ptr %5956, align 8, !tbaa !9
  %5958 = sub nsw i64 %5955, %5957
  %5959 = getelementptr inbounds double, ptr %5949, i64 %5958
  %5960 = load ptr, ptr %26, align 8, !tbaa !5
  %5961 = load i64, ptr %39, align 8, !tbaa !9
  %5962 = load i64, ptr %41, align 8, !tbaa !9
  %5963 = add nsw i64 %5961, %5962
  %5964 = load ptr, ptr %18, align 8, !tbaa !5
  %5965 = load i64, ptr %5964, align 8, !tbaa !9
  %5966 = sub nsw i64 %5963, %5965
  %5967 = getelementptr inbounds double, ptr %5960, i64 %5966
  %5968 = call i32 @dlartg_(ptr noundef %5948, ptr noundef %55, ptr noundef %5959, ptr noundef %5967, ptr noundef %50)
  %5969 = load ptr, ptr %22, align 8, !tbaa !5
  %5970 = load i64, ptr %41, align 8, !tbaa !9
  %5971 = add nsw i64 %5970, 1
  %5972 = load i64, ptr %39, align 8, !tbaa !9
  %5973 = load i64, ptr %30, align 8, !tbaa !9
  %5974 = mul nsw i64 %5972, %5973
  %5975 = add nsw i64 %5971, %5974
  %5976 = getelementptr inbounds double, ptr %5969, i64 %5975
  %5977 = load double, ptr %5976, align 8, !tbaa !11
  %5978 = fneg double %5977
  %5979 = load double, ptr %55, align 8, !tbaa !11
  %5980 = fmul double %5978, %5979
  store double %5980, ptr %44, align 8, !tbaa !11
  %5981 = load ptr, ptr %26, align 8, !tbaa !5
  %5982 = load ptr, ptr %17, align 8, !tbaa !5
  %5983 = load i64, ptr %5982, align 8, !tbaa !9
  %5984 = load i64, ptr %39, align 8, !tbaa !9
  %5985 = add nsw i64 %5983, %5984
  %5986 = load i64, ptr %41, align 8, !tbaa !9
  %5987 = add nsw i64 %5985, %5986
  %5988 = load ptr, ptr %18, align 8, !tbaa !5
  %5989 = load i64, ptr %5988, align 8, !tbaa !9
  %5990 = sub nsw i64 %5987, %5989
  %5991 = getelementptr inbounds double, ptr %5981, i64 %5990
  %5992 = load double, ptr %5991, align 8, !tbaa !11
  %5993 = load double, ptr %44, align 8, !tbaa !11
  %5994 = load ptr, ptr %26, align 8, !tbaa !5
  %5995 = load i64, ptr %39, align 8, !tbaa !9
  %5996 = load i64, ptr %41, align 8, !tbaa !9
  %5997 = add nsw i64 %5995, %5996
  %5998 = load ptr, ptr %18, align 8, !tbaa !5
  %5999 = load i64, ptr %5998, align 8, !tbaa !9
  %6000 = sub nsw i64 %5997, %5999
  %6001 = getelementptr inbounds double, ptr %5994, i64 %6000
  %6002 = load double, ptr %6001, align 8, !tbaa !11
  %6003 = load ptr, ptr %20, align 8, !tbaa !5
  %6004 = load i64, ptr %53, align 8, !tbaa !9
  %6005 = load i64, ptr %39, align 8, !tbaa !9
  %6006 = load i64, ptr %41, align 8, !tbaa !9
  %6007 = add nsw i64 %6005, %6006
  %6008 = load ptr, ptr %18, align 8, !tbaa !5
  %6009 = load i64, ptr %6008, align 8, !tbaa !9
  %6010 = sub nsw i64 %6007, %6009
  %6011 = load i64, ptr %28, align 8, !tbaa !9
  %6012 = mul nsw i64 %6010, %6011
  %6013 = add nsw i64 %6004, %6012
  %6014 = getelementptr inbounds double, ptr %6003, i64 %6013
  %6015 = load double, ptr %6014, align 8, !tbaa !11
  %6016 = fmul double %6002, %6015
  %6017 = fneg double %6016
  %6018 = call double @llvm.fmuladd.f64(double %5992, double %5993, double %6017)
  %6019 = load ptr, ptr %26, align 8, !tbaa !5
  %6020 = load i64, ptr %43, align 8, !tbaa !9
  %6021 = load ptr, ptr %19, align 8, !tbaa !5
  %6022 = load i64, ptr %6021, align 8, !tbaa !9
  %6023 = sub nsw i64 %6020, %6022
  %6024 = load i64, ptr %39, align 8, !tbaa !9
  %6025 = add nsw i64 %6023, %6024
  %6026 = load i64, ptr %41, align 8, !tbaa !9
  %6027 = add nsw i64 %6025, %6026
  %6028 = getelementptr inbounds double, ptr %6019, i64 %6027
  store double %6018, ptr %6028, align 8, !tbaa !11
  %6029 = load ptr, ptr %26, align 8, !tbaa !5
  %6030 = load i64, ptr %39, align 8, !tbaa !9
  %6031 = load i64, ptr %41, align 8, !tbaa !9
  %6032 = add nsw i64 %6030, %6031
  %6033 = load ptr, ptr %18, align 8, !tbaa !5
  %6034 = load i64, ptr %6033, align 8, !tbaa !9
  %6035 = sub nsw i64 %6032, %6034
  %6036 = getelementptr inbounds double, ptr %6029, i64 %6035
  %6037 = load double, ptr %6036, align 8, !tbaa !11
  %6038 = load double, ptr %44, align 8, !tbaa !11
  %6039 = load ptr, ptr %26, align 8, !tbaa !5
  %6040 = load ptr, ptr %17, align 8, !tbaa !5
  %6041 = load i64, ptr %6040, align 8, !tbaa !9
  %6042 = load i64, ptr %39, align 8, !tbaa !9
  %6043 = add nsw i64 %6041, %6042
  %6044 = load i64, ptr %41, align 8, !tbaa !9
  %6045 = add nsw i64 %6043, %6044
  %6046 = load ptr, ptr %18, align 8, !tbaa !5
  %6047 = load i64, ptr %6046, align 8, !tbaa !9
  %6048 = sub nsw i64 %6045, %6047
  %6049 = getelementptr inbounds double, ptr %6039, i64 %6048
  %6050 = load double, ptr %6049, align 8, !tbaa !11
  %6051 = load ptr, ptr %20, align 8, !tbaa !5
  %6052 = load i64, ptr %53, align 8, !tbaa !9
  %6053 = load i64, ptr %39, align 8, !tbaa !9
  %6054 = load i64, ptr %41, align 8, !tbaa !9
  %6055 = add nsw i64 %6053, %6054
  %6056 = load ptr, ptr %18, align 8, !tbaa !5
  %6057 = load i64, ptr %6056, align 8, !tbaa !9
  %6058 = sub nsw i64 %6055, %6057
  %6059 = load i64, ptr %28, align 8, !tbaa !9
  %6060 = mul nsw i64 %6058, %6059
  %6061 = add nsw i64 %6052, %6060
  %6062 = getelementptr inbounds double, ptr %6051, i64 %6061
  %6063 = load double, ptr %6062, align 8, !tbaa !11
  %6064 = fmul double %6050, %6063
  %6065 = call double @llvm.fmuladd.f64(double %6037, double %6038, double %6064)
  %6066 = load ptr, ptr %20, align 8, !tbaa !5
  %6067 = load i64, ptr %53, align 8, !tbaa !9
  %6068 = load i64, ptr %39, align 8, !tbaa !9
  %6069 = load i64, ptr %41, align 8, !tbaa !9
  %6070 = add nsw i64 %6068, %6069
  %6071 = load ptr, ptr %18, align 8, !tbaa !5
  %6072 = load i64, ptr %6071, align 8, !tbaa !9
  %6073 = sub nsw i64 %6070, %6072
  %6074 = load i64, ptr %28, align 8, !tbaa !9
  %6075 = mul nsw i64 %6073, %6074
  %6076 = add nsw i64 %6067, %6075
  %6077 = getelementptr inbounds double, ptr %6066, i64 %6076
  store double %6065, ptr %6077, align 8, !tbaa !11
  %6078 = load double, ptr %50, align 8, !tbaa !11
  store double %6078, ptr %55, align 8, !tbaa !11
  br label %6079

6079:                                             ; preds = %5934, %5928, %5921
  br label %6080

6080:                                             ; preds = %6079, %5918
  store i64 1, ptr %36, align 8, !tbaa !9
  %6081 = load i64, ptr %41, align 8, !tbaa !9
  %6082 = load i64, ptr %45, align 8, !tbaa !9
  %6083 = add nsw i64 %6081, %6082
  %6084 = load i64, ptr %43, align 8, !tbaa !9
  %6085 = sub nsw i64 %6083, %6084
  %6086 = add nsw i64 %6085, 1
  store i64 %6086, ptr %34, align 8, !tbaa !9
  %6087 = load i64, ptr %39, align 8, !tbaa !9
  %6088 = load i64, ptr %41, align 8, !tbaa !9
  %6089 = add nsw i64 %6087, %6088
  %6090 = add nsw i64 %6089, 1
  %6091 = load i64, ptr %36, align 8, !tbaa !9
  %6092 = load i64, ptr %34, align 8, !tbaa !9
  %6093 = icmp sge i64 %6091, %6092
  br i1 %6093, label %6094, label %6096

6094:                                             ; preds = %6080
  %6095 = load i64, ptr %36, align 8, !tbaa !9
  br label %6098

6096:                                             ; preds = %6080
  %6097 = load i64, ptr %34, align 8, !tbaa !9
  br label %6098

6098:                                             ; preds = %6096, %6094
  %6099 = phi i64 [ %6095, %6094 ], [ %6097, %6096 ]
  %6100 = load i64, ptr %53, align 8, !tbaa !9
  %6101 = mul nsw i64 %6099, %6100
  %6102 = sub nsw i64 %6090, %6101
  store i64 %6102, ptr %49, align 8, !tbaa !9
  %6103 = load i64, ptr %49, align 8, !tbaa !9
  %6104 = load ptr, ptr %18, align 8, !tbaa !5
  %6105 = load i64, ptr %6104, align 8, !tbaa !9
  %6106 = add nsw i64 %6103, %6105
  %6107 = sub nsw i64 %6106, 1
  %6108 = load i64, ptr %53, align 8, !tbaa !9
  %6109 = sdiv i64 %6107, %6108
  store i64 %6109, ptr %51, align 8, !tbaa !9
  %6110 = load i64, ptr %49, align 8, !tbaa !9
  %6111 = load i64, ptr %51, align 8, !tbaa !9
  %6112 = sub nsw i64 %6111, 1
  %6113 = load i64, ptr %53, align 8, !tbaa !9
  %6114 = mul nsw i64 %6112, %6113
  %6115 = sub nsw i64 %6110, %6114
  store i64 %6115, ptr %48, align 8, !tbaa !9
  %6116 = load i64, ptr %64, align 8, !tbaa !9
  %6117 = icmp ne i64 %6116, 0
  br i1 %6117, label %6118, label %6137

6118:                                             ; preds = %6098
  %6119 = load i64, ptr %49, align 8, !tbaa !9
  store i64 %6119, ptr %36, align 8, !tbaa !9
  %6120 = load i64, ptr %39, align 8, !tbaa !9
  %6121 = load ptr, ptr %18, align 8, !tbaa !5
  %6122 = load i64, ptr %6121, align 8, !tbaa !9
  %6123 = shl i64 %6122, 1
  %6124 = sub nsw i64 %6120, %6123
  %6125 = load i64, ptr %41, align 8, !tbaa !9
  %6126 = add nsw i64 %6124, %6125
  %6127 = sub nsw i64 %6126, 1
  store i64 %6127, ptr %34, align 8, !tbaa !9
  %6128 = load i64, ptr %36, align 8, !tbaa !9
  %6129 = load i64, ptr %34, align 8, !tbaa !9
  %6130 = icmp sle i64 %6128, %6129
  br i1 %6130, label %6131, label %6133

6131:                                             ; preds = %6118
  %6132 = load i64, ptr %36, align 8, !tbaa !9
  br label %6135

6133:                                             ; preds = %6118
  %6134 = load i64, ptr %34, align 8, !tbaa !9
  br label %6135

6135:                                             ; preds = %6133, %6131
  %6136 = phi i64 [ %6132, %6131 ], [ %6134, %6133 ]
  store i64 %6136, ptr %57, align 8, !tbaa !9
  br label %6139

6137:                                             ; preds = %6098
  %6138 = load i64, ptr %49, align 8, !tbaa !9
  store i64 %6138, ptr %57, align 8, !tbaa !9
  br label %6139

6139:                                             ; preds = %6137, %6135
  %6140 = load i64, ptr %57, align 8, !tbaa !9
  %6141 = load ptr, ptr %18, align 8, !tbaa !5
  %6142 = load i64, ptr %6141, align 8, !tbaa !9
  %6143 = add nsw i64 %6140, %6142
  %6144 = sub nsw i64 %6143, 1
  %6145 = load i64, ptr %53, align 8, !tbaa !9
  %6146 = sdiv i64 %6144, %6145
  store i64 %6146, ptr %60, align 8, !tbaa !9
  %6147 = load i64, ptr %57, align 8, !tbaa !9
  store i64 %6147, ptr %36, align 8, !tbaa !9
  %6148 = load i64, ptr %53, align 8, !tbaa !9
  store i64 %6148, ptr %34, align 8, !tbaa !9
  %6149 = load i64, ptr %48, align 8, !tbaa !9
  store i64 %6149, ptr %40, align 8, !tbaa !9
  br label %6150

6150:                                             ; preds = %6206, %6139
  %6151 = load i64, ptr %34, align 8, !tbaa !9
  %6152 = icmp slt i64 %6151, 0
  br i1 %6152, label %6153, label %6158

6153:                                             ; preds = %6150
  %6154 = load i64, ptr %40, align 8, !tbaa !9
  %6155 = load i64, ptr %36, align 8, !tbaa !9
  %6156 = icmp sge i64 %6154, %6155
  %6157 = zext i1 %6156 to i32
  br label %6163

6158:                                             ; preds = %6150
  %6159 = load i64, ptr %40, align 8, !tbaa !9
  %6160 = load i64, ptr %36, align 8, !tbaa !9
  %6161 = icmp sle i64 %6159, %6160
  %6162 = zext i1 %6161 to i32
  br label %6163

6163:                                             ; preds = %6158, %6153
  %6164 = phi i32 [ %6157, %6153 ], [ %6162, %6158 ]
  %6165 = icmp ne i32 %6164, 0
  br i1 %6165, label %6166, label %6210

6166:                                             ; preds = %6163
  %6167 = load ptr, ptr %20, align 8, !tbaa !5
  %6168 = load i64, ptr %53, align 8, !tbaa !9
  %6169 = load i64, ptr %40, align 8, !tbaa !9
  %6170 = sub nsw i64 %6169, 1
  %6171 = load i64, ptr %28, align 8, !tbaa !9
  %6172 = mul nsw i64 %6170, %6171
  %6173 = add nsw i64 %6168, %6172
  %6174 = getelementptr inbounds double, ptr %6167, i64 %6173
  %6175 = load double, ptr %6174, align 8, !tbaa !11
  %6176 = load ptr, ptr %26, align 8, !tbaa !5
  %6177 = load i64, ptr %40, align 8, !tbaa !9
  %6178 = getelementptr inbounds double, ptr %6176, i64 %6177
  %6179 = load double, ptr %6178, align 8, !tbaa !11
  %6180 = fmul double %6179, %6175
  store double %6180, ptr %6178, align 8, !tbaa !11
  %6181 = load ptr, ptr %26, align 8, !tbaa !5
  %6182 = load ptr, ptr %17, align 8, !tbaa !5
  %6183 = load i64, ptr %6182, align 8, !tbaa !9
  %6184 = load i64, ptr %40, align 8, !tbaa !9
  %6185 = add nsw i64 %6183, %6184
  %6186 = getelementptr inbounds double, ptr %6181, i64 %6185
  %6187 = load double, ptr %6186, align 8, !tbaa !11
  %6188 = load ptr, ptr %20, align 8, !tbaa !5
  %6189 = load i64, ptr %53, align 8, !tbaa !9
  %6190 = load i64, ptr %40, align 8, !tbaa !9
  %6191 = sub nsw i64 %6190, 1
  %6192 = load i64, ptr %28, align 8, !tbaa !9
  %6193 = mul nsw i64 %6191, %6192
  %6194 = add nsw i64 %6189, %6193
  %6195 = getelementptr inbounds double, ptr %6188, i64 %6194
  %6196 = load double, ptr %6195, align 8, !tbaa !11
  %6197 = fmul double %6187, %6196
  %6198 = load ptr, ptr %20, align 8, !tbaa !5
  %6199 = load i64, ptr %53, align 8, !tbaa !9
  %6200 = load i64, ptr %40, align 8, !tbaa !9
  %6201 = sub nsw i64 %6200, 1
  %6202 = load i64, ptr %28, align 8, !tbaa !9
  %6203 = mul nsw i64 %6201, %6202
  %6204 = add nsw i64 %6199, %6203
  %6205 = getelementptr inbounds double, ptr %6198, i64 %6204
  store double %6197, ptr %6205, align 8, !tbaa !11
  br label %6206

6206:                                             ; preds = %6166
  %6207 = load i64, ptr %34, align 8, !tbaa !9
  %6208 = load i64, ptr %40, align 8, !tbaa !9
  %6209 = add nsw i64 %6208, %6207
  store i64 %6209, ptr %40, align 8, !tbaa !9
  br label %6150, !llvm.loop !90

6210:                                             ; preds = %6163
  %6211 = load i64, ptr %60, align 8, !tbaa !9
  %6212 = icmp sgt i64 %6211, 0
  br i1 %6212, label %6213, label %6231

6213:                                             ; preds = %6210
  %6214 = load ptr, ptr %20, align 8, !tbaa !5
  %6215 = load i64, ptr %53, align 8, !tbaa !9
  %6216 = load i64, ptr %48, align 8, !tbaa !9
  %6217 = load i64, ptr %28, align 8, !tbaa !9
  %6218 = mul nsw i64 %6216, %6217
  %6219 = add nsw i64 %6215, %6218
  %6220 = getelementptr inbounds double, ptr %6214, i64 %6219
  %6221 = load ptr, ptr %26, align 8, !tbaa !5
  %6222 = load i64, ptr %48, align 8, !tbaa !9
  %6223 = getelementptr inbounds double, ptr %6221, i64 %6222
  %6224 = load ptr, ptr %26, align 8, !tbaa !5
  %6225 = load ptr, ptr %17, align 8, !tbaa !5
  %6226 = load i64, ptr %6225, align 8, !tbaa !9
  %6227 = load i64, ptr %48, align 8, !tbaa !9
  %6228 = add nsw i64 %6226, %6227
  %6229 = getelementptr inbounds double, ptr %6224, i64 %6228
  %6230 = call i32 @dlargv_(ptr noundef %60, ptr noundef %6220, ptr noundef %61, ptr noundef %6223, ptr noundef %53, ptr noundef %6229, ptr noundef %53)
  br label %6231

6231:                                             ; preds = %6213, %6210
  %6232 = load i64, ptr %51, align 8, !tbaa !9
  %6233 = icmp sgt i64 %6232, 0
  br i1 %6233, label %6234, label %6304

6234:                                             ; preds = %6231
  %6235 = load ptr, ptr %18, align 8, !tbaa !5
  %6236 = load i64, ptr %6235, align 8, !tbaa !9
  %6237 = sub nsw i64 %6236, 1
  store i64 %6237, ptr %34, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %6238

6238:                                             ; preds = %6270, %6234
  %6239 = load i64, ptr %42, align 8, !tbaa !9
  %6240 = load i64, ptr %34, align 8, !tbaa !9
  %6241 = icmp sle i64 %6239, %6240
  br i1 %6241, label %6242, label %6273

6242:                                             ; preds = %6238
  %6243 = load ptr, ptr %20, align 8, !tbaa !5
  %6244 = load i64, ptr %42, align 8, !tbaa !9
  %6245 = add nsw i64 %6244, 1
  %6246 = load i64, ptr %48, align 8, !tbaa !9
  %6247 = load i64, ptr %28, align 8, !tbaa !9
  %6248 = mul nsw i64 %6246, %6247
  %6249 = add nsw i64 %6245, %6248
  %6250 = getelementptr inbounds double, ptr %6243, i64 %6249
  %6251 = load ptr, ptr %20, align 8, !tbaa !5
  %6252 = load i64, ptr %42, align 8, !tbaa !9
  %6253 = add nsw i64 %6252, 2
  %6254 = load i64, ptr %48, align 8, !tbaa !9
  %6255 = sub nsw i64 %6254, 1
  %6256 = load i64, ptr %28, align 8, !tbaa !9
  %6257 = mul nsw i64 %6255, %6256
  %6258 = add nsw i64 %6253, %6257
  %6259 = getelementptr inbounds double, ptr %6251, i64 %6258
  %6260 = load ptr, ptr %26, align 8, !tbaa !5
  %6261 = load ptr, ptr %17, align 8, !tbaa !5
  %6262 = load i64, ptr %6261, align 8, !tbaa !9
  %6263 = load i64, ptr %48, align 8, !tbaa !9
  %6264 = add nsw i64 %6262, %6263
  %6265 = getelementptr inbounds double, ptr %6260, i64 %6264
  %6266 = load ptr, ptr %26, align 8, !tbaa !5
  %6267 = load i64, ptr %48, align 8, !tbaa !9
  %6268 = getelementptr inbounds double, ptr %6266, i64 %6267
  %6269 = call i32 @dlartv_(ptr noundef %51, ptr noundef %6250, ptr noundef %61, ptr noundef %6259, ptr noundef %61, ptr noundef %6265, ptr noundef %6268, ptr noundef %53)
  br label %6270

6270:                                             ; preds = %6242
  %6271 = load i64, ptr %42, align 8, !tbaa !9
  %6272 = add nsw i64 %6271, 1
  store i64 %6272, ptr %42, align 8, !tbaa !9
  br label %6238, !llvm.loop !91

6273:                                             ; preds = %6238
  %6274 = load ptr, ptr %20, align 8, !tbaa !5
  %6275 = load i64, ptr %48, align 8, !tbaa !9
  %6276 = load i64, ptr %28, align 8, !tbaa !9
  %6277 = mul nsw i64 %6275, %6276
  %6278 = add nsw i64 %6277, 1
  %6279 = getelementptr inbounds double, ptr %6274, i64 %6278
  %6280 = load ptr, ptr %20, align 8, !tbaa !5
  %6281 = load i64, ptr %48, align 8, !tbaa !9
  %6282 = sub nsw i64 %6281, 1
  %6283 = load i64, ptr %28, align 8, !tbaa !9
  %6284 = mul nsw i64 %6282, %6283
  %6285 = add nsw i64 %6284, 1
  %6286 = getelementptr inbounds double, ptr %6280, i64 %6285
  %6287 = load ptr, ptr %20, align 8, !tbaa !5
  %6288 = load i64, ptr %48, align 8, !tbaa !9
  %6289 = sub nsw i64 %6288, 1
  %6290 = load i64, ptr %28, align 8, !tbaa !9
  %6291 = mul nsw i64 %6289, %6290
  %6292 = add nsw i64 %6291, 2
  %6293 = getelementptr inbounds double, ptr %6287, i64 %6292
  %6294 = load ptr, ptr %26, align 8, !tbaa !5
  %6295 = load ptr, ptr %17, align 8, !tbaa !5
  %6296 = load i64, ptr %6295, align 8, !tbaa !9
  %6297 = load i64, ptr %48, align 8, !tbaa !9
  %6298 = add nsw i64 %6296, %6297
  %6299 = getelementptr inbounds double, ptr %6294, i64 %6298
  %6300 = load ptr, ptr %26, align 8, !tbaa !5
  %6301 = load i64, ptr %48, align 8, !tbaa !9
  %6302 = getelementptr inbounds double, ptr %6300, i64 %6301
  %6303 = call i32 @dlar2v_(ptr noundef %51, ptr noundef %6279, ptr noundef %6286, ptr noundef %6293, ptr noundef %61, ptr noundef %6299, ptr noundef %6302, ptr noundef %53)
  br label %6304

6304:                                             ; preds = %6273, %6231
  %6305 = load ptr, ptr %19, align 8, !tbaa !5
  %6306 = load i64, ptr %6305, align 8, !tbaa !9
  %6307 = load i64, ptr %41, align 8, !tbaa !9
  %6308 = sub nsw i64 %6306, %6307
  %6309 = add nsw i64 %6308, 1
  store i64 %6309, ptr %34, align 8, !tbaa !9
  %6310 = load ptr, ptr %18, align 8, !tbaa !5
  %6311 = load i64, ptr %6310, align 8, !tbaa !9
  %6312 = sub nsw i64 %6311, 1
  store i64 %6312, ptr %42, align 8, !tbaa !9
  br label %6313

6313:                                             ; preds = %6371, %6304
  %6314 = load i64, ptr %42, align 8, !tbaa !9
  %6315 = load i64, ptr %34, align 8, !tbaa !9
  %6316 = icmp sge i64 %6314, %6315
  br i1 %6316, label %6317, label %6374

6317:                                             ; preds = %6313
  %6318 = load i64, ptr %49, align 8, !tbaa !9
  %6319 = load i64, ptr %42, align 8, !tbaa !9
  %6320 = add nsw i64 %6318, %6319
  %6321 = sub nsw i64 %6320, 1
  %6322 = load i64, ptr %53, align 8, !tbaa !9
  %6323 = sdiv i64 %6321, %6322
  store i64 %6323, ptr %60, align 8, !tbaa !9
  %6324 = load i64, ptr %49, align 8, !tbaa !9
  %6325 = load i64, ptr %60, align 8, !tbaa !9
  %6326 = sub nsw i64 %6325, 1
  %6327 = load i64, ptr %53, align 8, !tbaa !9
  %6328 = mul nsw i64 %6326, %6327
  %6329 = sub nsw i64 %6324, %6328
  store i64 %6329, ptr %56, align 8, !tbaa !9
  %6330 = load i64, ptr %60, align 8, !tbaa !9
  %6331 = icmp sgt i64 %6330, 0
  br i1 %6331, label %6332, label %6370

6332:                                             ; preds = %6317
  %6333 = load ptr, ptr %20, align 8, !tbaa !5
  %6334 = load i64, ptr %53, align 8, !tbaa !9
  %6335 = load i64, ptr %42, align 8, !tbaa !9
  %6336 = sub nsw i64 %6334, %6335
  %6337 = add nsw i64 %6336, 1
  %6338 = load i64, ptr %56, align 8, !tbaa !9
  %6339 = load i64, ptr %53, align 8, !tbaa !9
  %6340 = sub nsw i64 %6338, %6339
  %6341 = load i64, ptr %42, align 8, !tbaa !9
  %6342 = add nsw i64 %6340, %6341
  %6343 = load i64, ptr %28, align 8, !tbaa !9
  %6344 = mul nsw i64 %6342, %6343
  %6345 = add nsw i64 %6337, %6344
  %6346 = getelementptr inbounds double, ptr %6333, i64 %6345
  %6347 = load ptr, ptr %20, align 8, !tbaa !5
  %6348 = load i64, ptr %53, align 8, !tbaa !9
  %6349 = load i64, ptr %42, align 8, !tbaa !9
  %6350 = sub nsw i64 %6348, %6349
  %6351 = load i64, ptr %56, align 8, !tbaa !9
  %6352 = load i64, ptr %53, align 8, !tbaa !9
  %6353 = sub nsw i64 %6351, %6352
  %6354 = load i64, ptr %42, align 8, !tbaa !9
  %6355 = add nsw i64 %6353, %6354
  %6356 = load i64, ptr %28, align 8, !tbaa !9
  %6357 = mul nsw i64 %6355, %6356
  %6358 = add nsw i64 %6350, %6357
  %6359 = getelementptr inbounds double, ptr %6347, i64 %6358
  %6360 = load ptr, ptr %26, align 8, !tbaa !5
  %6361 = load ptr, ptr %17, align 8, !tbaa !5
  %6362 = load i64, ptr %6361, align 8, !tbaa !9
  %6363 = load i64, ptr %56, align 8, !tbaa !9
  %6364 = add nsw i64 %6362, %6363
  %6365 = getelementptr inbounds double, ptr %6360, i64 %6364
  %6366 = load ptr, ptr %26, align 8, !tbaa !5
  %6367 = load i64, ptr %56, align 8, !tbaa !9
  %6368 = getelementptr inbounds double, ptr %6366, i64 %6367
  %6369 = call i32 @dlartv_(ptr noundef %60, ptr noundef %6346, ptr noundef %61, ptr noundef %6359, ptr noundef %61, ptr noundef %6365, ptr noundef %6368, ptr noundef %53)
  br label %6370

6370:                                             ; preds = %6332, %6317
  br label %6371

6371:                                             ; preds = %6370
  %6372 = load i64, ptr %42, align 8, !tbaa !9
  %6373 = add nsw i64 %6372, -1
  store i64 %6373, ptr %42, align 8, !tbaa !9
  br label %6313, !llvm.loop !92

6374:                                             ; preds = %6313
  %6375 = load i64, ptr %63, align 8, !tbaa !9
  %6376 = icmp ne i64 %6375, 0
  br i1 %6376, label %6377, label %6426

6377:                                             ; preds = %6374
  %6378 = load i64, ptr %49, align 8, !tbaa !9
  store i64 %6378, ptr %34, align 8, !tbaa !9
  %6379 = load i64, ptr %53, align 8, !tbaa !9
  store i64 %6379, ptr %36, align 8, !tbaa !9
  %6380 = load i64, ptr %48, align 8, !tbaa !9
  store i64 %6380, ptr %40, align 8, !tbaa !9
  br label %6381

6381:                                             ; preds = %6421, %6377
  %6382 = load i64, ptr %36, align 8, !tbaa !9
  %6383 = icmp slt i64 %6382, 0
  br i1 %6383, label %6384, label %6389

6384:                                             ; preds = %6381
  %6385 = load i64, ptr %40, align 8, !tbaa !9
  %6386 = load i64, ptr %34, align 8, !tbaa !9
  %6387 = icmp sge i64 %6385, %6386
  %6388 = zext i1 %6387 to i32
  br label %6394

6389:                                             ; preds = %6381
  %6390 = load i64, ptr %40, align 8, !tbaa !9
  %6391 = load i64, ptr %34, align 8, !tbaa !9
  %6392 = icmp sle i64 %6390, %6391
  %6393 = zext i1 %6392 to i32
  br label %6394

6394:                                             ; preds = %6389, %6384
  %6395 = phi i32 [ %6388, %6384 ], [ %6393, %6389 ]
  %6396 = icmp ne i32 %6395, 0
  br i1 %6396, label %6397, label %6425

6397:                                             ; preds = %6394
  %6398 = load ptr, ptr %24, align 8, !tbaa !5
  %6399 = load i64, ptr %40, align 8, !tbaa !9
  %6400 = load i64, ptr %32, align 8, !tbaa !9
  %6401 = mul nsw i64 %6399, %6400
  %6402 = add nsw i64 %6401, 1
  %6403 = getelementptr inbounds double, ptr %6398, i64 %6402
  %6404 = load ptr, ptr %24, align 8, !tbaa !5
  %6405 = load i64, ptr %40, align 8, !tbaa !9
  %6406 = sub nsw i64 %6405, 1
  %6407 = load i64, ptr %32, align 8, !tbaa !9
  %6408 = mul nsw i64 %6406, %6407
  %6409 = add nsw i64 %6408, 1
  %6410 = getelementptr inbounds double, ptr %6404, i64 %6409
  %6411 = load ptr, ptr %26, align 8, !tbaa !5
  %6412 = load ptr, ptr %17, align 8, !tbaa !5
  %6413 = load i64, ptr %6412, align 8, !tbaa !9
  %6414 = load i64, ptr %40, align 8, !tbaa !9
  %6415 = add nsw i64 %6413, %6414
  %6416 = getelementptr inbounds double, ptr %6411, i64 %6415
  %6417 = load ptr, ptr %26, align 8, !tbaa !5
  %6418 = load i64, ptr %40, align 8, !tbaa !9
  %6419 = getelementptr inbounds double, ptr %6417, i64 %6418
  %6420 = call i32 @f2c_drot(ptr noundef %52, ptr noundef %6403, ptr noundef @c__1, ptr noundef %6410, ptr noundef @c__1, ptr noundef %6416, ptr noundef %6419)
  br label %6421

6421:                                             ; preds = %6397
  %6422 = load i64, ptr %36, align 8, !tbaa !9
  %6423 = load i64, ptr %40, align 8, !tbaa !9
  %6424 = add nsw i64 %6423, %6422
  store i64 %6424, ptr %40, align 8, !tbaa !9
  br label %6381, !llvm.loop !93

6425:                                             ; preds = %6394
  br label %6426

6426:                                             ; preds = %6425, %6374
  br label %6427

6427:                                             ; preds = %6426
  %6428 = load i64, ptr %41, align 8, !tbaa !9
  %6429 = add nsw i64 %6428, 1
  store i64 %6429, ptr %41, align 8, !tbaa !9
  br label %5914, !llvm.loop !94

6430:                                             ; preds = %5914
  %6431 = load i64, ptr %64, align 8, !tbaa !9
  %6432 = icmp ne i64 %6431, 0
  br i1 %6432, label %6433, label %6463

6433:                                             ; preds = %6430
  %6434 = load i64, ptr %47, align 8, !tbaa !9
  %6435 = icmp sgt i64 %6434, 0
  br i1 %6435, label %6436, label %6462

6436:                                             ; preds = %6433
  %6437 = load i64, ptr %59, align 8, !tbaa !9
  %6438 = icmp sgt i64 %6437, 0
  br i1 %6438, label %6439, label %6462

6439:                                             ; preds = %6436
  %6440 = load ptr, ptr %22, align 8, !tbaa !5
  %6441 = load i64, ptr %59, align 8, !tbaa !9
  %6442 = add nsw i64 %6441, 1
  %6443 = load i64, ptr %39, align 8, !tbaa !9
  %6444 = load i64, ptr %30, align 8, !tbaa !9
  %6445 = mul nsw i64 %6443, %6444
  %6446 = add nsw i64 %6442, %6445
  %6447 = getelementptr inbounds double, ptr %6440, i64 %6446
  %6448 = load double, ptr %6447, align 8, !tbaa !11
  %6449 = fneg double %6448
  %6450 = load double, ptr %55, align 8, !tbaa !11
  %6451 = fmul double %6449, %6450
  %6452 = load ptr, ptr %26, align 8, !tbaa !5
  %6453 = load i64, ptr %43, align 8, !tbaa !9
  %6454 = load ptr, ptr %19, align 8, !tbaa !5
  %6455 = load i64, ptr %6454, align 8, !tbaa !9
  %6456 = sub nsw i64 %6453, %6455
  %6457 = load i64, ptr %39, align 8, !tbaa !9
  %6458 = add nsw i64 %6456, %6457
  %6459 = load i64, ptr %59, align 8, !tbaa !9
  %6460 = add nsw i64 %6458, %6459
  %6461 = getelementptr inbounds double, ptr %6452, i64 %6460
  store double %6451, ptr %6461, align 8, !tbaa !11
  br label %6462

6462:                                             ; preds = %6439, %6436, %6433
  br label %6463

6463:                                             ; preds = %6462, %6430
  %6464 = load ptr, ptr %19, align 8, !tbaa !5
  %6465 = load i64, ptr %6464, align 8, !tbaa !9
  store i64 %6465, ptr %41, align 8, !tbaa !9
  br label %6466

6466:                                             ; preds = %6796, %6463
  %6467 = load i64, ptr %41, align 8, !tbaa !9
  %6468 = icmp sge i64 %6467, 1
  br i1 %6468, label %6469, label %6799

6469:                                             ; preds = %6466
  %6470 = load i64, ptr %64, align 8, !tbaa !9
  %6471 = icmp ne i64 %6470, 0
  br i1 %6471, label %6472, label %6494

6472:                                             ; preds = %6469
  store i64 2, ptr %37, align 8, !tbaa !9
  %6473 = load i64, ptr %41, align 8, !tbaa !9
  %6474 = load i64, ptr %45, align 8, !tbaa !9
  %6475 = add nsw i64 %6473, %6474
  %6476 = load i64, ptr %43, align 8, !tbaa !9
  %6477 = sub nsw i64 %6475, %6476
  store i64 %6477, ptr %36, align 8, !tbaa !9
  %6478 = load i64, ptr %39, align 8, !tbaa !9
  %6479 = load i64, ptr %41, align 8, !tbaa !9
  %6480 = add nsw i64 %6478, %6479
  %6481 = add nsw i64 %6480, 1
  %6482 = load i64, ptr %37, align 8, !tbaa !9
  %6483 = load i64, ptr %36, align 8, !tbaa !9
  %6484 = icmp sge i64 %6482, %6483
  br i1 %6484, label %6485, label %6487

6485:                                             ; preds = %6472
  %6486 = load i64, ptr %37, align 8, !tbaa !9
  br label %6489

6487:                                             ; preds = %6472
  %6488 = load i64, ptr %36, align 8, !tbaa !9
  br label %6489

6489:                                             ; preds = %6487, %6485
  %6490 = phi i64 [ %6486, %6485 ], [ %6488, %6487 ]
  %6491 = load i64, ptr %53, align 8, !tbaa !9
  %6492 = mul nsw i64 %6490, %6491
  %6493 = sub nsw i64 %6481, %6492
  store i64 %6493, ptr %49, align 8, !tbaa !9
  br label %6516

6494:                                             ; preds = %6469
  store i64 1, ptr %37, align 8, !tbaa !9
  %6495 = load i64, ptr %41, align 8, !tbaa !9
  %6496 = load i64, ptr %45, align 8, !tbaa !9
  %6497 = add nsw i64 %6495, %6496
  %6498 = load i64, ptr %43, align 8, !tbaa !9
  %6499 = sub nsw i64 %6497, %6498
  store i64 %6499, ptr %36, align 8, !tbaa !9
  %6500 = load i64, ptr %39, align 8, !tbaa !9
  %6501 = load i64, ptr %41, align 8, !tbaa !9
  %6502 = add nsw i64 %6500, %6501
  %6503 = add nsw i64 %6502, 1
  %6504 = load i64, ptr %37, align 8, !tbaa !9
  %6505 = load i64, ptr %36, align 8, !tbaa !9
  %6506 = icmp sge i64 %6504, %6505
  br i1 %6506, label %6507, label %6509

6507:                                             ; preds = %6494
  %6508 = load i64, ptr %37, align 8, !tbaa !9
  br label %6511

6509:                                             ; preds = %6494
  %6510 = load i64, ptr %36, align 8, !tbaa !9
  br label %6511

6511:                                             ; preds = %6509, %6507
  %6512 = phi i64 [ %6508, %6507 ], [ %6510, %6509 ]
  %6513 = load i64, ptr %53, align 8, !tbaa !9
  %6514 = mul nsw i64 %6512, %6513
  %6515 = sub nsw i64 %6503, %6514
  store i64 %6515, ptr %49, align 8, !tbaa !9
  br label %6516

6516:                                             ; preds = %6511, %6489
  %6517 = load ptr, ptr %19, align 8, !tbaa !5
  %6518 = load i64, ptr %6517, align 8, !tbaa !9
  %6519 = load i64, ptr %41, align 8, !tbaa !9
  %6520 = sub nsw i64 %6518, %6519
  store i64 %6520, ptr %42, align 8, !tbaa !9
  br label %6521

6521:                                             ; preds = %6595, %6516
  %6522 = load i64, ptr %42, align 8, !tbaa !9
  %6523 = icmp sge i64 %6522, 1
  br i1 %6523, label %6524, label %6598

6524:                                             ; preds = %6521
  %6525 = load i64, ptr %49, align 8, !tbaa !9
  %6526 = load ptr, ptr %18, align 8, !tbaa !5
  %6527 = load i64, ptr %6526, align 8, !tbaa !9
  %6528 = add nsw i64 %6525, %6527
  %6529 = load i64, ptr %42, align 8, !tbaa !9
  %6530 = add nsw i64 %6528, %6529
  %6531 = sub nsw i64 %6530, 1
  %6532 = load i64, ptr %53, align 8, !tbaa !9
  %6533 = sdiv i64 %6531, %6532
  store i64 %6533, ptr %60, align 8, !tbaa !9
  %6534 = load i64, ptr %49, align 8, !tbaa !9
  %6535 = load i64, ptr %60, align 8, !tbaa !9
  %6536 = sub nsw i64 %6535, 1
  %6537 = load i64, ptr %53, align 8, !tbaa !9
  %6538 = mul nsw i64 %6536, %6537
  %6539 = sub nsw i64 %6534, %6538
  store i64 %6539, ptr %56, align 8, !tbaa !9
  %6540 = load i64, ptr %60, align 8, !tbaa !9
  %6541 = icmp sgt i64 %6540, 0
  br i1 %6541, label %6542, label %6594

6542:                                             ; preds = %6524
  %6543 = load ptr, ptr %20, align 8, !tbaa !5
  %6544 = load i64, ptr %53, align 8, !tbaa !9
  %6545 = load i64, ptr %42, align 8, !tbaa !9
  %6546 = sub nsw i64 %6544, %6545
  %6547 = add nsw i64 %6546, 1
  %6548 = load i64, ptr %56, align 8, !tbaa !9
  %6549 = load i64, ptr %42, align 8, !tbaa !9
  %6550 = add nsw i64 %6548, %6549
  %6551 = sub nsw i64 %6550, 1
  %6552 = load i64, ptr %28, align 8, !tbaa !9
  %6553 = mul nsw i64 %6551, %6552
  %6554 = add nsw i64 %6547, %6553
  %6555 = getelementptr inbounds double, ptr %6543, i64 %6554
  %6556 = load ptr, ptr %20, align 8, !tbaa !5
  %6557 = load i64, ptr %53, align 8, !tbaa !9
  %6558 = load i64, ptr %42, align 8, !tbaa !9
  %6559 = sub nsw i64 %6557, %6558
  %6560 = load i64, ptr %56, align 8, !tbaa !9
  %6561 = load i64, ptr %42, align 8, !tbaa !9
  %6562 = add nsw i64 %6560, %6561
  %6563 = sub nsw i64 %6562, 1
  %6564 = load i64, ptr %28, align 8, !tbaa !9
  %6565 = mul nsw i64 %6563, %6564
  %6566 = add nsw i64 %6559, %6565
  %6567 = getelementptr inbounds double, ptr %6556, i64 %6566
  %6568 = load ptr, ptr %26, align 8, !tbaa !5
  %6569 = load ptr, ptr %17, align 8, !tbaa !5
  %6570 = load i64, ptr %6569, align 8, !tbaa !9
  %6571 = load i64, ptr %43, align 8, !tbaa !9
  %6572 = add nsw i64 %6570, %6571
  %6573 = load ptr, ptr %19, align 8, !tbaa !5
  %6574 = load i64, ptr %6573, align 8, !tbaa !9
  %6575 = sub nsw i64 %6572, %6574
  %6576 = load i64, ptr %56, align 8, !tbaa !9
  %6577 = add nsw i64 %6575, %6576
  %6578 = load ptr, ptr %18, align 8, !tbaa !5
  %6579 = load i64, ptr %6578, align 8, !tbaa !9
  %6580 = add nsw i64 %6577, %6579
  %6581 = getelementptr inbounds double, ptr %6568, i64 %6580
  %6582 = load ptr, ptr %26, align 8, !tbaa !5
  %6583 = load i64, ptr %43, align 8, !tbaa !9
  %6584 = load ptr, ptr %19, align 8, !tbaa !5
  %6585 = load i64, ptr %6584, align 8, !tbaa !9
  %6586 = sub nsw i64 %6583, %6585
  %6587 = load i64, ptr %56, align 8, !tbaa !9
  %6588 = add nsw i64 %6586, %6587
  %6589 = load ptr, ptr %18, align 8, !tbaa !5
  %6590 = load i64, ptr %6589, align 8, !tbaa !9
  %6591 = add nsw i64 %6588, %6590
  %6592 = getelementptr inbounds double, ptr %6582, i64 %6591
  %6593 = call i32 @dlartv_(ptr noundef %60, ptr noundef %6555, ptr noundef %61, ptr noundef %6567, ptr noundef %61, ptr noundef %6581, ptr noundef %6592, ptr noundef %53)
  br label %6594

6594:                                             ; preds = %6542, %6524
  br label %6595

6595:                                             ; preds = %6594
  %6596 = load i64, ptr %42, align 8, !tbaa !9
  %6597 = add nsw i64 %6596, -1
  store i64 %6597, ptr %42, align 8, !tbaa !9
  br label %6521, !llvm.loop !95

6598:                                             ; preds = %6521
  %6599 = load i64, ptr %49, align 8, !tbaa !9
  %6600 = load ptr, ptr %18, align 8, !tbaa !5
  %6601 = load i64, ptr %6600, align 8, !tbaa !9
  %6602 = add nsw i64 %6599, %6601
  %6603 = sub nsw i64 %6602, 1
  %6604 = load i64, ptr %53, align 8, !tbaa !9
  %6605 = sdiv i64 %6603, %6604
  store i64 %6605, ptr %51, align 8, !tbaa !9
  %6606 = load i64, ptr %49, align 8, !tbaa !9
  %6607 = load i64, ptr %51, align 8, !tbaa !9
  %6608 = sub nsw i64 %6607, 1
  %6609 = load i64, ptr %53, align 8, !tbaa !9
  %6610 = mul nsw i64 %6608, %6609
  %6611 = sub nsw i64 %6606, %6610
  store i64 %6611, ptr %48, align 8, !tbaa !9
  %6612 = load i64, ptr %49, align 8, !tbaa !9
  store i64 %6612, ptr %37, align 8, !tbaa !9
  %6613 = load i64, ptr %53, align 8, !tbaa !9
  store i64 %6613, ptr %36, align 8, !tbaa !9
  %6614 = load i64, ptr %48, align 8, !tbaa !9
  store i64 %6614, ptr %40, align 8, !tbaa !9
  br label %6615

6615:                                             ; preds = %6678, %6598
  %6616 = load i64, ptr %36, align 8, !tbaa !9
  %6617 = icmp slt i64 %6616, 0
  br i1 %6617, label %6618, label %6623

6618:                                             ; preds = %6615
  %6619 = load i64, ptr %40, align 8, !tbaa !9
  %6620 = load i64, ptr %37, align 8, !tbaa !9
  %6621 = icmp sge i64 %6619, %6620
  %6622 = zext i1 %6621 to i32
  br label %6628

6623:                                             ; preds = %6615
  %6624 = load i64, ptr %40, align 8, !tbaa !9
  %6625 = load i64, ptr %37, align 8, !tbaa !9
  %6626 = icmp sle i64 %6624, %6625
  %6627 = zext i1 %6626 to i32
  br label %6628

6628:                                             ; preds = %6623, %6618
  %6629 = phi i32 [ %6622, %6618 ], [ %6627, %6623 ]
  %6630 = icmp ne i32 %6629, 0
  br i1 %6630, label %6631, label %6682

6631:                                             ; preds = %6628
  %6632 = load ptr, ptr %26, align 8, !tbaa !5
  %6633 = load i64, ptr %43, align 8, !tbaa !9
  %6634 = load ptr, ptr %19, align 8, !tbaa !5
  %6635 = load i64, ptr %6634, align 8, !tbaa !9
  %6636 = sub nsw i64 %6633, %6635
  %6637 = load i64, ptr %40, align 8, !tbaa !9
  %6638 = add nsw i64 %6636, %6637
  %6639 = load ptr, ptr %18, align 8, !tbaa !5
  %6640 = load i64, ptr %6639, align 8, !tbaa !9
  %6641 = add nsw i64 %6638, %6640
  %6642 = getelementptr inbounds double, ptr %6632, i64 %6641
  %6643 = load double, ptr %6642, align 8, !tbaa !11
  %6644 = load ptr, ptr %26, align 8, !tbaa !5
  %6645 = load i64, ptr %43, align 8, !tbaa !9
  %6646 = load ptr, ptr %19, align 8, !tbaa !5
  %6647 = load i64, ptr %6646, align 8, !tbaa !9
  %6648 = sub nsw i64 %6645, %6647
  %6649 = load i64, ptr %40, align 8, !tbaa !9
  %6650 = add nsw i64 %6648, %6649
  %6651 = getelementptr inbounds double, ptr %6644, i64 %6650
  store double %6643, ptr %6651, align 8, !tbaa !11
  %6652 = load ptr, ptr %26, align 8, !tbaa !5
  %6653 = load ptr, ptr %17, align 8, !tbaa !5
  %6654 = load i64, ptr %6653, align 8, !tbaa !9
  %6655 = load i64, ptr %43, align 8, !tbaa !9
  %6656 = add nsw i64 %6654, %6655
  %6657 = load ptr, ptr %19, align 8, !tbaa !5
  %6658 = load i64, ptr %6657, align 8, !tbaa !9
  %6659 = sub nsw i64 %6656, %6658
  %6660 = load i64, ptr %40, align 8, !tbaa !9
  %6661 = add nsw i64 %6659, %6660
  %6662 = load ptr, ptr %18, align 8, !tbaa !5
  %6663 = load i64, ptr %6662, align 8, !tbaa !9
  %6664 = add nsw i64 %6661, %6663
  %6665 = getelementptr inbounds double, ptr %6652, i64 %6664
  %6666 = load double, ptr %6665, align 8, !tbaa !11
  %6667 = load ptr, ptr %26, align 8, !tbaa !5
  %6668 = load ptr, ptr %17, align 8, !tbaa !5
  %6669 = load i64, ptr %6668, align 8, !tbaa !9
  %6670 = load i64, ptr %43, align 8, !tbaa !9
  %6671 = add nsw i64 %6669, %6670
  %6672 = load ptr, ptr %19, align 8, !tbaa !5
  %6673 = load i64, ptr %6672, align 8, !tbaa !9
  %6674 = sub nsw i64 %6671, %6673
  %6675 = load i64, ptr %40, align 8, !tbaa !9
  %6676 = add nsw i64 %6674, %6675
  %6677 = getelementptr inbounds double, ptr %6667, i64 %6676
  store double %6666, ptr %6677, align 8, !tbaa !11
  br label %6678

6678:                                             ; preds = %6631
  %6679 = load i64, ptr %36, align 8, !tbaa !9
  %6680 = load i64, ptr %40, align 8, !tbaa !9
  %6681 = add nsw i64 %6680, %6679
  store i64 %6681, ptr %40, align 8, !tbaa !9
  br label %6615, !llvm.loop !96

6682:                                             ; preds = %6628
  %6683 = load i64, ptr %49, align 8, !tbaa !9
  store i64 %6683, ptr %36, align 8, !tbaa !9
  %6684 = load i64, ptr %53, align 8, !tbaa !9
  store i64 %6684, ptr %37, align 8, !tbaa !9
  %6685 = load i64, ptr %48, align 8, !tbaa !9
  store i64 %6685, ptr %40, align 8, !tbaa !9
  br label %6686

6686:                                             ; preds = %6752, %6682
  %6687 = load i64, ptr %37, align 8, !tbaa !9
  %6688 = icmp slt i64 %6687, 0
  br i1 %6688, label %6689, label %6694

6689:                                             ; preds = %6686
  %6690 = load i64, ptr %40, align 8, !tbaa !9
  %6691 = load i64, ptr %36, align 8, !tbaa !9
  %6692 = icmp sge i64 %6690, %6691
  %6693 = zext i1 %6692 to i32
  br label %6699

6694:                                             ; preds = %6686
  %6695 = load i64, ptr %40, align 8, !tbaa !9
  %6696 = load i64, ptr %36, align 8, !tbaa !9
  %6697 = icmp sle i64 %6695, %6696
  %6698 = zext i1 %6697 to i32
  br label %6699

6699:                                             ; preds = %6694, %6689
  %6700 = phi i32 [ %6693, %6689 ], [ %6698, %6694 ]
  %6701 = icmp ne i32 %6700, 0
  br i1 %6701, label %6702, label %6756

6702:                                             ; preds = %6699
  %6703 = load ptr, ptr %20, align 8, !tbaa !5
  %6704 = load i64, ptr %53, align 8, !tbaa !9
  %6705 = load i64, ptr %40, align 8, !tbaa !9
  %6706 = sub nsw i64 %6705, 1
  %6707 = load i64, ptr %28, align 8, !tbaa !9
  %6708 = mul nsw i64 %6706, %6707
  %6709 = add nsw i64 %6704, %6708
  %6710 = getelementptr inbounds double, ptr %6703, i64 %6709
  %6711 = load double, ptr %6710, align 8, !tbaa !11
  %6712 = load ptr, ptr %26, align 8, !tbaa !5
  %6713 = load i64, ptr %43, align 8, !tbaa !9
  %6714 = load ptr, ptr %19, align 8, !tbaa !5
  %6715 = load i64, ptr %6714, align 8, !tbaa !9
  %6716 = sub nsw i64 %6713, %6715
  %6717 = load i64, ptr %40, align 8, !tbaa !9
  %6718 = add nsw i64 %6716, %6717
  %6719 = getelementptr inbounds double, ptr %6712, i64 %6718
  %6720 = load double, ptr %6719, align 8, !tbaa !11
  %6721 = fmul double %6720, %6711
  store double %6721, ptr %6719, align 8, !tbaa !11
  %6722 = load ptr, ptr %26, align 8, !tbaa !5
  %6723 = load ptr, ptr %17, align 8, !tbaa !5
  %6724 = load i64, ptr %6723, align 8, !tbaa !9
  %6725 = load i64, ptr %43, align 8, !tbaa !9
  %6726 = add nsw i64 %6724, %6725
  %6727 = load ptr, ptr %19, align 8, !tbaa !5
  %6728 = load i64, ptr %6727, align 8, !tbaa !9
  %6729 = sub nsw i64 %6726, %6728
  %6730 = load i64, ptr %40, align 8, !tbaa !9
  %6731 = add nsw i64 %6729, %6730
  %6732 = getelementptr inbounds double, ptr %6722, i64 %6731
  %6733 = load double, ptr %6732, align 8, !tbaa !11
  %6734 = load ptr, ptr %20, align 8, !tbaa !5
  %6735 = load i64, ptr %53, align 8, !tbaa !9
  %6736 = load i64, ptr %40, align 8, !tbaa !9
  %6737 = sub nsw i64 %6736, 1
  %6738 = load i64, ptr %28, align 8, !tbaa !9
  %6739 = mul nsw i64 %6737, %6738
  %6740 = add nsw i64 %6735, %6739
  %6741 = getelementptr inbounds double, ptr %6734, i64 %6740
  %6742 = load double, ptr %6741, align 8, !tbaa !11
  %6743 = fmul double %6733, %6742
  %6744 = load ptr, ptr %20, align 8, !tbaa !5
  %6745 = load i64, ptr %53, align 8, !tbaa !9
  %6746 = load i64, ptr %40, align 8, !tbaa !9
  %6747 = sub nsw i64 %6746, 1
  %6748 = load i64, ptr %28, align 8, !tbaa !9
  %6749 = mul nsw i64 %6747, %6748
  %6750 = add nsw i64 %6745, %6749
  %6751 = getelementptr inbounds double, ptr %6744, i64 %6750
  store double %6743, ptr %6751, align 8, !tbaa !11
  br label %6752

6752:                                             ; preds = %6702
  %6753 = load i64, ptr %37, align 8, !tbaa !9
  %6754 = load i64, ptr %40, align 8, !tbaa !9
  %6755 = add nsw i64 %6754, %6753
  store i64 %6755, ptr %40, align 8, !tbaa !9
  br label %6686, !llvm.loop !97

6756:                                             ; preds = %6699
  %6757 = load i64, ptr %64, align 8, !tbaa !9
  %6758 = icmp ne i64 %6757, 0
  br i1 %6758, label %6759, label %6795

6759:                                             ; preds = %6756
  %6760 = load i64, ptr %39, align 8, !tbaa !9
  %6761 = load i64, ptr %41, align 8, !tbaa !9
  %6762 = add nsw i64 %6760, %6761
  %6763 = load i64, ptr %53, align 8, !tbaa !9
  %6764 = icmp sgt i64 %6762, %6763
  br i1 %6764, label %6765, label %6794

6765:                                             ; preds = %6759
  %6766 = load i64, ptr %41, align 8, !tbaa !9
  %6767 = load i64, ptr %59, align 8, !tbaa !9
  %6768 = icmp sle i64 %6766, %6767
  br i1 %6768, label %6769, label %6794

6769:                                             ; preds = %6765
  %6770 = load ptr, ptr %26, align 8, !tbaa !5
  %6771 = load i64, ptr %43, align 8, !tbaa !9
  %6772 = load ptr, ptr %19, align 8, !tbaa !5
  %6773 = load i64, ptr %6772, align 8, !tbaa !9
  %6774 = sub nsw i64 %6771, %6773
  %6775 = load i64, ptr %39, align 8, !tbaa !9
  %6776 = add nsw i64 %6774, %6775
  %6777 = load i64, ptr %41, align 8, !tbaa !9
  %6778 = add nsw i64 %6776, %6777
  %6779 = getelementptr inbounds double, ptr %6770, i64 %6778
  %6780 = load double, ptr %6779, align 8, !tbaa !11
  %6781 = load ptr, ptr %26, align 8, !tbaa !5
  %6782 = load i64, ptr %43, align 8, !tbaa !9
  %6783 = load ptr, ptr %19, align 8, !tbaa !5
  %6784 = load i64, ptr %6783, align 8, !tbaa !9
  %6785 = sub nsw i64 %6782, %6784
  %6786 = load i64, ptr %39, align 8, !tbaa !9
  %6787 = add nsw i64 %6785, %6786
  %6788 = load i64, ptr %41, align 8, !tbaa !9
  %6789 = add nsw i64 %6787, %6788
  %6790 = load ptr, ptr %18, align 8, !tbaa !5
  %6791 = load i64, ptr %6790, align 8, !tbaa !9
  %6792 = sub nsw i64 %6789, %6791
  %6793 = getelementptr inbounds double, ptr %6781, i64 %6792
  store double %6780, ptr %6793, align 8, !tbaa !11
  br label %6794

6794:                                             ; preds = %6769, %6765, %6759
  br label %6795

6795:                                             ; preds = %6794, %6756
  br label %6796

6796:                                             ; preds = %6795
  %6797 = load i64, ptr %41, align 8, !tbaa !9
  %6798 = add nsw i64 %6797, -1
  store i64 %6798, ptr %41, align 8, !tbaa !9
  br label %6466, !llvm.loop !98

6799:                                             ; preds = %6466
  %6800 = load ptr, ptr %19, align 8, !tbaa !5
  %6801 = load i64, ptr %6800, align 8, !tbaa !9
  store i64 %6801, ptr %41, align 8, !tbaa !9
  br label %6802

6802:                                             ; preds = %7102, %6799
  %6803 = load i64, ptr %41, align 8, !tbaa !9
  %6804 = icmp sge i64 %6803, 1
  br i1 %6804, label %6805, label %7105

6805:                                             ; preds = %6802
  store i64 1, ptr %37, align 8, !tbaa !9
  %6806 = load i64, ptr %41, align 8, !tbaa !9
  %6807 = load i64, ptr %45, align 8, !tbaa !9
  %6808 = add nsw i64 %6806, %6807
  %6809 = load i64, ptr %43, align 8, !tbaa !9
  %6810 = sub nsw i64 %6808, %6809
  store i64 %6810, ptr %36, align 8, !tbaa !9
  %6811 = load i64, ptr %39, align 8, !tbaa !9
  %6812 = load i64, ptr %41, align 8, !tbaa !9
  %6813 = add nsw i64 %6811, %6812
  %6814 = add nsw i64 %6813, 1
  %6815 = load i64, ptr %37, align 8, !tbaa !9
  %6816 = load i64, ptr %36, align 8, !tbaa !9
  %6817 = icmp sge i64 %6815, %6816
  br i1 %6817, label %6818, label %6820

6818:                                             ; preds = %6805
  %6819 = load i64, ptr %37, align 8, !tbaa !9
  br label %6822

6820:                                             ; preds = %6805
  %6821 = load i64, ptr %36, align 8, !tbaa !9
  br label %6822

6822:                                             ; preds = %6820, %6818
  %6823 = phi i64 [ %6819, %6818 ], [ %6821, %6820 ]
  %6824 = load i64, ptr %53, align 8, !tbaa !9
  %6825 = mul nsw i64 %6823, %6824
  %6826 = sub nsw i64 %6814, %6825
  store i64 %6826, ptr %49, align 8, !tbaa !9
  %6827 = load i64, ptr %49, align 8, !tbaa !9
  %6828 = load ptr, ptr %18, align 8, !tbaa !5
  %6829 = load i64, ptr %6828, align 8, !tbaa !9
  %6830 = add nsw i64 %6827, %6829
  %6831 = sub nsw i64 %6830, 1
  %6832 = load i64, ptr %53, align 8, !tbaa !9
  %6833 = sdiv i64 %6831, %6832
  store i64 %6833, ptr %51, align 8, !tbaa !9
  %6834 = load i64, ptr %49, align 8, !tbaa !9
  %6835 = load i64, ptr %51, align 8, !tbaa !9
  %6836 = sub nsw i64 %6835, 1
  %6837 = load i64, ptr %53, align 8, !tbaa !9
  %6838 = mul nsw i64 %6836, %6837
  %6839 = sub nsw i64 %6834, %6838
  store i64 %6839, ptr %48, align 8, !tbaa !9
  %6840 = load i64, ptr %51, align 8, !tbaa !9
  %6841 = icmp sgt i64 %6840, 0
  br i1 %6841, label %6842, label %6959

6842:                                             ; preds = %6822
  %6843 = load ptr, ptr %20, align 8, !tbaa !5
  %6844 = load i64, ptr %53, align 8, !tbaa !9
  %6845 = load i64, ptr %48, align 8, !tbaa !9
  %6846 = load i64, ptr %28, align 8, !tbaa !9
  %6847 = mul nsw i64 %6845, %6846
  %6848 = add nsw i64 %6844, %6847
  %6849 = getelementptr inbounds double, ptr %6843, i64 %6848
  %6850 = load ptr, ptr %26, align 8, !tbaa !5
  %6851 = load i64, ptr %43, align 8, !tbaa !9
  %6852 = load ptr, ptr %19, align 8, !tbaa !5
  %6853 = load i64, ptr %6852, align 8, !tbaa !9
  %6854 = sub nsw i64 %6851, %6853
  %6855 = load i64, ptr %48, align 8, !tbaa !9
  %6856 = add nsw i64 %6854, %6855
  %6857 = getelementptr inbounds double, ptr %6850, i64 %6856
  %6858 = load ptr, ptr %26, align 8, !tbaa !5
  %6859 = load ptr, ptr %17, align 8, !tbaa !5
  %6860 = load i64, ptr %6859, align 8, !tbaa !9
  %6861 = load i64, ptr %43, align 8, !tbaa !9
  %6862 = add nsw i64 %6860, %6861
  %6863 = load ptr, ptr %19, align 8, !tbaa !5
  %6864 = load i64, ptr %6863, align 8, !tbaa !9
  %6865 = sub nsw i64 %6862, %6864
  %6866 = load i64, ptr %48, align 8, !tbaa !9
  %6867 = add nsw i64 %6865, %6866
  %6868 = getelementptr inbounds double, ptr %6858, i64 %6867
  %6869 = call i32 @dlargv_(ptr noundef %51, ptr noundef %6849, ptr noundef %61, ptr noundef %6857, ptr noundef %53, ptr noundef %6868, ptr noundef %53)
  %6870 = load ptr, ptr %18, align 8, !tbaa !5
  %6871 = load i64, ptr %6870, align 8, !tbaa !9
  %6872 = sub nsw i64 %6871, 1
  store i64 %6872, ptr %37, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %6873

6873:                                             ; preds = %6915, %6842
  %6874 = load i64, ptr %42, align 8, !tbaa !9
  %6875 = load i64, ptr %37, align 8, !tbaa !9
  %6876 = icmp sle i64 %6874, %6875
  br i1 %6876, label %6877, label %6918

6877:                                             ; preds = %6873
  %6878 = load ptr, ptr %20, align 8, !tbaa !5
  %6879 = load i64, ptr %42, align 8, !tbaa !9
  %6880 = add nsw i64 %6879, 1
  %6881 = load i64, ptr %48, align 8, !tbaa !9
  %6882 = load i64, ptr %28, align 8, !tbaa !9
  %6883 = mul nsw i64 %6881, %6882
  %6884 = add nsw i64 %6880, %6883
  %6885 = getelementptr inbounds double, ptr %6878, i64 %6884
  %6886 = load ptr, ptr %20, align 8, !tbaa !5
  %6887 = load i64, ptr %42, align 8, !tbaa !9
  %6888 = add nsw i64 %6887, 2
  %6889 = load i64, ptr %48, align 8, !tbaa !9
  %6890 = sub nsw i64 %6889, 1
  %6891 = load i64, ptr %28, align 8, !tbaa !9
  %6892 = mul nsw i64 %6890, %6891
  %6893 = add nsw i64 %6888, %6892
  %6894 = getelementptr inbounds double, ptr %6886, i64 %6893
  %6895 = load ptr, ptr %26, align 8, !tbaa !5
  %6896 = load ptr, ptr %17, align 8, !tbaa !5
  %6897 = load i64, ptr %6896, align 8, !tbaa !9
  %6898 = load i64, ptr %43, align 8, !tbaa !9
  %6899 = add nsw i64 %6897, %6898
  %6900 = load ptr, ptr %19, align 8, !tbaa !5
  %6901 = load i64, ptr %6900, align 8, !tbaa !9
  %6902 = sub nsw i64 %6899, %6901
  %6903 = load i64, ptr %48, align 8, !tbaa !9
  %6904 = add nsw i64 %6902, %6903
  %6905 = getelementptr inbounds double, ptr %6895, i64 %6904
  %6906 = load ptr, ptr %26, align 8, !tbaa !5
  %6907 = load i64, ptr %43, align 8, !tbaa !9
  %6908 = load ptr, ptr %19, align 8, !tbaa !5
  %6909 = load i64, ptr %6908, align 8, !tbaa !9
  %6910 = sub nsw i64 %6907, %6909
  %6911 = load i64, ptr %48, align 8, !tbaa !9
  %6912 = add nsw i64 %6910, %6911
  %6913 = getelementptr inbounds double, ptr %6906, i64 %6912
  %6914 = call i32 @dlartv_(ptr noundef %51, ptr noundef %6885, ptr noundef %61, ptr noundef %6894, ptr noundef %61, ptr noundef %6905, ptr noundef %6913, ptr noundef %53)
  br label %6915

6915:                                             ; preds = %6877
  %6916 = load i64, ptr %42, align 8, !tbaa !9
  %6917 = add nsw i64 %6916, 1
  store i64 %6917, ptr %42, align 8, !tbaa !9
  br label %6873, !llvm.loop !99

6918:                                             ; preds = %6873
  %6919 = load ptr, ptr %20, align 8, !tbaa !5
  %6920 = load i64, ptr %48, align 8, !tbaa !9
  %6921 = load i64, ptr %28, align 8, !tbaa !9
  %6922 = mul nsw i64 %6920, %6921
  %6923 = add nsw i64 %6922, 1
  %6924 = getelementptr inbounds double, ptr %6919, i64 %6923
  %6925 = load ptr, ptr %20, align 8, !tbaa !5
  %6926 = load i64, ptr %48, align 8, !tbaa !9
  %6927 = sub nsw i64 %6926, 1
  %6928 = load i64, ptr %28, align 8, !tbaa !9
  %6929 = mul nsw i64 %6927, %6928
  %6930 = add nsw i64 %6929, 1
  %6931 = getelementptr inbounds double, ptr %6925, i64 %6930
  %6932 = load ptr, ptr %20, align 8, !tbaa !5
  %6933 = load i64, ptr %48, align 8, !tbaa !9
  %6934 = sub nsw i64 %6933, 1
  %6935 = load i64, ptr %28, align 8, !tbaa !9
  %6936 = mul nsw i64 %6934, %6935
  %6937 = add nsw i64 %6936, 2
  %6938 = getelementptr inbounds double, ptr %6932, i64 %6937
  %6939 = load ptr, ptr %26, align 8, !tbaa !5
  %6940 = load ptr, ptr %17, align 8, !tbaa !5
  %6941 = load i64, ptr %6940, align 8, !tbaa !9
  %6942 = load i64, ptr %43, align 8, !tbaa !9
  %6943 = add nsw i64 %6941, %6942
  %6944 = load ptr, ptr %19, align 8, !tbaa !5
  %6945 = load i64, ptr %6944, align 8, !tbaa !9
  %6946 = sub nsw i64 %6943, %6945
  %6947 = load i64, ptr %48, align 8, !tbaa !9
  %6948 = add nsw i64 %6946, %6947
  %6949 = getelementptr inbounds double, ptr %6939, i64 %6948
  %6950 = load ptr, ptr %26, align 8, !tbaa !5
  %6951 = load i64, ptr %43, align 8, !tbaa !9
  %6952 = load ptr, ptr %19, align 8, !tbaa !5
  %6953 = load i64, ptr %6952, align 8, !tbaa !9
  %6954 = sub nsw i64 %6951, %6953
  %6955 = load i64, ptr %48, align 8, !tbaa !9
  %6956 = add nsw i64 %6954, %6955
  %6957 = getelementptr inbounds double, ptr %6950, i64 %6956
  %6958 = call i32 @dlar2v_(ptr noundef %51, ptr noundef %6924, ptr noundef %6931, ptr noundef %6938, ptr noundef %61, ptr noundef %6949, ptr noundef %6957, ptr noundef %53)
  br label %6959

6959:                                             ; preds = %6918, %6822
  %6960 = load ptr, ptr %19, align 8, !tbaa !5
  %6961 = load i64, ptr %6960, align 8, !tbaa !9
  %6962 = load i64, ptr %41, align 8, !tbaa !9
  %6963 = sub nsw i64 %6961, %6962
  %6964 = add nsw i64 %6963, 1
  store i64 %6964, ptr %37, align 8, !tbaa !9
  %6965 = load ptr, ptr %18, align 8, !tbaa !5
  %6966 = load i64, ptr %6965, align 8, !tbaa !9
  %6967 = sub nsw i64 %6966, 1
  store i64 %6967, ptr %42, align 8, !tbaa !9
  br label %6968

6968:                                             ; preds = %7036, %6959
  %6969 = load i64, ptr %42, align 8, !tbaa !9
  %6970 = load i64, ptr %37, align 8, !tbaa !9
  %6971 = icmp sge i64 %6969, %6970
  br i1 %6971, label %6972, label %7039

6972:                                             ; preds = %6968
  %6973 = load i64, ptr %49, align 8, !tbaa !9
  %6974 = load i64, ptr %42, align 8, !tbaa !9
  %6975 = add nsw i64 %6973, %6974
  %6976 = sub nsw i64 %6975, 1
  %6977 = load i64, ptr %53, align 8, !tbaa !9
  %6978 = sdiv i64 %6976, %6977
  store i64 %6978, ptr %60, align 8, !tbaa !9
  %6979 = load i64, ptr %49, align 8, !tbaa !9
  %6980 = load i64, ptr %60, align 8, !tbaa !9
  %6981 = sub nsw i64 %6980, 1
  %6982 = load i64, ptr %53, align 8, !tbaa !9
  %6983 = mul nsw i64 %6981, %6982
  %6984 = sub nsw i64 %6979, %6983
  store i64 %6984, ptr %56, align 8, !tbaa !9
  %6985 = load i64, ptr %60, align 8, !tbaa !9
  %6986 = icmp sgt i64 %6985, 0
  br i1 %6986, label %6987, label %7035

6987:                                             ; preds = %6972
  %6988 = load ptr, ptr %20, align 8, !tbaa !5
  %6989 = load i64, ptr %53, align 8, !tbaa !9
  %6990 = load i64, ptr %42, align 8, !tbaa !9
  %6991 = sub nsw i64 %6989, %6990
  %6992 = add nsw i64 %6991, 1
  %6993 = load i64, ptr %56, align 8, !tbaa !9
  %6994 = load i64, ptr %53, align 8, !tbaa !9
  %6995 = sub nsw i64 %6993, %6994
  %6996 = load i64, ptr %42, align 8, !tbaa !9
  %6997 = add nsw i64 %6995, %6996
  %6998 = load i64, ptr %28, align 8, !tbaa !9
  %6999 = mul nsw i64 %6997, %6998
  %7000 = add nsw i64 %6992, %6999
  %7001 = getelementptr inbounds double, ptr %6988, i64 %7000
  %7002 = load ptr, ptr %20, align 8, !tbaa !5
  %7003 = load i64, ptr %53, align 8, !tbaa !9
  %7004 = load i64, ptr %42, align 8, !tbaa !9
  %7005 = sub nsw i64 %7003, %7004
  %7006 = load i64, ptr %56, align 8, !tbaa !9
  %7007 = load i64, ptr %53, align 8, !tbaa !9
  %7008 = sub nsw i64 %7006, %7007
  %7009 = load i64, ptr %42, align 8, !tbaa !9
  %7010 = add nsw i64 %7008, %7009
  %7011 = load i64, ptr %28, align 8, !tbaa !9
  %7012 = mul nsw i64 %7010, %7011
  %7013 = add nsw i64 %7005, %7012
  %7014 = getelementptr inbounds double, ptr %7002, i64 %7013
  %7015 = load ptr, ptr %26, align 8, !tbaa !5
  %7016 = load ptr, ptr %17, align 8, !tbaa !5
  %7017 = load i64, ptr %7016, align 8, !tbaa !9
  %7018 = load i64, ptr %43, align 8, !tbaa !9
  %7019 = add nsw i64 %7017, %7018
  %7020 = load ptr, ptr %19, align 8, !tbaa !5
  %7021 = load i64, ptr %7020, align 8, !tbaa !9
  %7022 = sub nsw i64 %7019, %7021
  %7023 = load i64, ptr %56, align 8, !tbaa !9
  %7024 = add nsw i64 %7022, %7023
  %7025 = getelementptr inbounds double, ptr %7015, i64 %7024
  %7026 = load ptr, ptr %26, align 8, !tbaa !5
  %7027 = load i64, ptr %43, align 8, !tbaa !9
  %7028 = load ptr, ptr %19, align 8, !tbaa !5
  %7029 = load i64, ptr %7028, align 8, !tbaa !9
  %7030 = sub nsw i64 %7027, %7029
  %7031 = load i64, ptr %56, align 8, !tbaa !9
  %7032 = add nsw i64 %7030, %7031
  %7033 = getelementptr inbounds double, ptr %7026, i64 %7032
  %7034 = call i32 @dlartv_(ptr noundef %60, ptr noundef %7001, ptr noundef %61, ptr noundef %7014, ptr noundef %61, ptr noundef %7025, ptr noundef %7033, ptr noundef %53)
  br label %7035

7035:                                             ; preds = %6987, %6972
  br label %7036

7036:                                             ; preds = %7035
  %7037 = load i64, ptr %42, align 8, !tbaa !9
  %7038 = add nsw i64 %7037, -1
  store i64 %7038, ptr %42, align 8, !tbaa !9
  br label %6968, !llvm.loop !100

7039:                                             ; preds = %6968
  %7040 = load i64, ptr %63, align 8, !tbaa !9
  %7041 = icmp ne i64 %7040, 0
  br i1 %7041, label %7042, label %7101

7042:                                             ; preds = %7039
  %7043 = load i64, ptr %49, align 8, !tbaa !9
  store i64 %7043, ptr %37, align 8, !tbaa !9
  %7044 = load i64, ptr %53, align 8, !tbaa !9
  store i64 %7044, ptr %36, align 8, !tbaa !9
  %7045 = load i64, ptr %48, align 8, !tbaa !9
  store i64 %7045, ptr %40, align 8, !tbaa !9
  br label %7046

7046:                                             ; preds = %7096, %7042
  %7047 = load i64, ptr %36, align 8, !tbaa !9
  %7048 = icmp slt i64 %7047, 0
  br i1 %7048, label %7049, label %7054

7049:                                             ; preds = %7046
  %7050 = load i64, ptr %40, align 8, !tbaa !9
  %7051 = load i64, ptr %37, align 8, !tbaa !9
  %7052 = icmp sge i64 %7050, %7051
  %7053 = zext i1 %7052 to i32
  br label %7059

7054:                                             ; preds = %7046
  %7055 = load i64, ptr %40, align 8, !tbaa !9
  %7056 = load i64, ptr %37, align 8, !tbaa !9
  %7057 = icmp sle i64 %7055, %7056
  %7058 = zext i1 %7057 to i32
  br label %7059

7059:                                             ; preds = %7054, %7049
  %7060 = phi i32 [ %7053, %7049 ], [ %7058, %7054 ]
  %7061 = icmp ne i32 %7060, 0
  br i1 %7061, label %7062, label %7100

7062:                                             ; preds = %7059
  %7063 = load ptr, ptr %24, align 8, !tbaa !5
  %7064 = load i64, ptr %40, align 8, !tbaa !9
  %7065 = load i64, ptr %32, align 8, !tbaa !9
  %7066 = mul nsw i64 %7064, %7065
  %7067 = add nsw i64 %7066, 1
  %7068 = getelementptr inbounds double, ptr %7063, i64 %7067
  %7069 = load ptr, ptr %24, align 8, !tbaa !5
  %7070 = load i64, ptr %40, align 8, !tbaa !9
  %7071 = sub nsw i64 %7070, 1
  %7072 = load i64, ptr %32, align 8, !tbaa !9
  %7073 = mul nsw i64 %7071, %7072
  %7074 = add nsw i64 %7073, 1
  %7075 = getelementptr inbounds double, ptr %7069, i64 %7074
  %7076 = load ptr, ptr %26, align 8, !tbaa !5
  %7077 = load ptr, ptr %17, align 8, !tbaa !5
  %7078 = load i64, ptr %7077, align 8, !tbaa !9
  %7079 = load i64, ptr %43, align 8, !tbaa !9
  %7080 = add nsw i64 %7078, %7079
  %7081 = load ptr, ptr %19, align 8, !tbaa !5
  %7082 = load i64, ptr %7081, align 8, !tbaa !9
  %7083 = sub nsw i64 %7080, %7082
  %7084 = load i64, ptr %40, align 8, !tbaa !9
  %7085 = add nsw i64 %7083, %7084
  %7086 = getelementptr inbounds double, ptr %7076, i64 %7085
  %7087 = load ptr, ptr %26, align 8, !tbaa !5
  %7088 = load i64, ptr %43, align 8, !tbaa !9
  %7089 = load ptr, ptr %19, align 8, !tbaa !5
  %7090 = load i64, ptr %7089, align 8, !tbaa !9
  %7091 = sub nsw i64 %7088, %7090
  %7092 = load i64, ptr %40, align 8, !tbaa !9
  %7093 = add nsw i64 %7091, %7092
  %7094 = getelementptr inbounds double, ptr %7087, i64 %7093
  %7095 = call i32 @f2c_drot(ptr noundef %52, ptr noundef %7068, ptr noundef @c__1, ptr noundef %7075, ptr noundef @c__1, ptr noundef %7086, ptr noundef %7094)
  br label %7096

7096:                                             ; preds = %7062
  %7097 = load i64, ptr %36, align 8, !tbaa !9
  %7098 = load i64, ptr %40, align 8, !tbaa !9
  %7099 = add nsw i64 %7098, %7097
  store i64 %7099, ptr %40, align 8, !tbaa !9
  br label %7046, !llvm.loop !101

7100:                                             ; preds = %7059
  br label %7101

7101:                                             ; preds = %7100, %7039
  br label %7102

7102:                                             ; preds = %7101
  %7103 = load i64, ptr %41, align 8, !tbaa !9
  %7104 = add nsw i64 %7103, -1
  store i64 %7104, ptr %41, align 8, !tbaa !9
  br label %6802, !llvm.loop !102

7105:                                             ; preds = %6802
  %7106 = load ptr, ptr %19, align 8, !tbaa !5
  %7107 = load i64, ptr %7106, align 8, !tbaa !9
  %7108 = sub nsw i64 %7107, 1
  store i64 %7108, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %41, align 8, !tbaa !9
  br label %7109

7109:                                             ; preds = %7201, %7105
  %7110 = load i64, ptr %41, align 8, !tbaa !9
  %7111 = load i64, ptr %36, align 8, !tbaa !9
  %7112 = icmp sle i64 %7110, %7111
  br i1 %7112, label %7113, label %7204

7113:                                             ; preds = %7109
  store i64 1, ptr %37, align 8, !tbaa !9
  %7114 = load i64, ptr %41, align 8, !tbaa !9
  %7115 = load i64, ptr %45, align 8, !tbaa !9
  %7116 = add nsw i64 %7114, %7115
  %7117 = load i64, ptr %43, align 8, !tbaa !9
  %7118 = sub nsw i64 %7116, %7117
  %7119 = add nsw i64 %7118, 1
  store i64 %7119, ptr %34, align 8, !tbaa !9
  %7120 = load i64, ptr %39, align 8, !tbaa !9
  %7121 = load i64, ptr %41, align 8, !tbaa !9
  %7122 = add nsw i64 %7120, %7121
  %7123 = add nsw i64 %7122, 1
  %7124 = load i64, ptr %37, align 8, !tbaa !9
  %7125 = load i64, ptr %34, align 8, !tbaa !9
  %7126 = icmp sge i64 %7124, %7125
  br i1 %7126, label %7127, label %7129

7127:                                             ; preds = %7113
  %7128 = load i64, ptr %37, align 8, !tbaa !9
  br label %7131

7129:                                             ; preds = %7113
  %7130 = load i64, ptr %34, align 8, !tbaa !9
  br label %7131

7131:                                             ; preds = %7129, %7127
  %7132 = phi i64 [ %7128, %7127 ], [ %7130, %7129 ]
  %7133 = load i64, ptr %53, align 8, !tbaa !9
  %7134 = mul nsw i64 %7132, %7133
  %7135 = sub nsw i64 %7123, %7134
  store i64 %7135, ptr %49, align 8, !tbaa !9
  %7136 = load ptr, ptr %19, align 8, !tbaa !5
  %7137 = load i64, ptr %7136, align 8, !tbaa !9
  %7138 = load i64, ptr %41, align 8, !tbaa !9
  %7139 = sub nsw i64 %7137, %7138
  store i64 %7139, ptr %42, align 8, !tbaa !9
  br label %7140

7140:                                             ; preds = %7197, %7131
  %7141 = load i64, ptr %42, align 8, !tbaa !9
  %7142 = icmp sge i64 %7141, 1
  br i1 %7142, label %7143, label %7200

7143:                                             ; preds = %7140
  %7144 = load i64, ptr %49, align 8, !tbaa !9
  %7145 = load i64, ptr %42, align 8, !tbaa !9
  %7146 = add nsw i64 %7144, %7145
  %7147 = sub nsw i64 %7146, 1
  %7148 = load i64, ptr %53, align 8, !tbaa !9
  %7149 = sdiv i64 %7147, %7148
  store i64 %7149, ptr %60, align 8, !tbaa !9
  %7150 = load i64, ptr %49, align 8, !tbaa !9
  %7151 = load i64, ptr %60, align 8, !tbaa !9
  %7152 = sub nsw i64 %7151, 1
  %7153 = load i64, ptr %53, align 8, !tbaa !9
  %7154 = mul nsw i64 %7152, %7153
  %7155 = sub nsw i64 %7150, %7154
  store i64 %7155, ptr %56, align 8, !tbaa !9
  %7156 = load i64, ptr %60, align 8, !tbaa !9
  %7157 = icmp sgt i64 %7156, 0
  br i1 %7157, label %7158, label %7196

7158:                                             ; preds = %7143
  %7159 = load ptr, ptr %20, align 8, !tbaa !5
  %7160 = load i64, ptr %53, align 8, !tbaa !9
  %7161 = load i64, ptr %42, align 8, !tbaa !9
  %7162 = sub nsw i64 %7160, %7161
  %7163 = add nsw i64 %7162, 1
  %7164 = load i64, ptr %56, align 8, !tbaa !9
  %7165 = load i64, ptr %53, align 8, !tbaa !9
  %7166 = sub nsw i64 %7164, %7165
  %7167 = load i64, ptr %42, align 8, !tbaa !9
  %7168 = add nsw i64 %7166, %7167
  %7169 = load i64, ptr %28, align 8, !tbaa !9
  %7170 = mul nsw i64 %7168, %7169
  %7171 = add nsw i64 %7163, %7170
  %7172 = getelementptr inbounds double, ptr %7159, i64 %7171
  %7173 = load ptr, ptr %20, align 8, !tbaa !5
  %7174 = load i64, ptr %53, align 8, !tbaa !9
  %7175 = load i64, ptr %42, align 8, !tbaa !9
  %7176 = sub nsw i64 %7174, %7175
  %7177 = load i64, ptr %56, align 8, !tbaa !9
  %7178 = load i64, ptr %53, align 8, !tbaa !9
  %7179 = sub nsw i64 %7177, %7178
  %7180 = load i64, ptr %42, align 8, !tbaa !9
  %7181 = add nsw i64 %7179, %7180
  %7182 = load i64, ptr %28, align 8, !tbaa !9
  %7183 = mul nsw i64 %7181, %7182
  %7184 = add nsw i64 %7176, %7183
  %7185 = getelementptr inbounds double, ptr %7173, i64 %7184
  %7186 = load ptr, ptr %26, align 8, !tbaa !5
  %7187 = load ptr, ptr %17, align 8, !tbaa !5
  %7188 = load i64, ptr %7187, align 8, !tbaa !9
  %7189 = load i64, ptr %56, align 8, !tbaa !9
  %7190 = add nsw i64 %7188, %7189
  %7191 = getelementptr inbounds double, ptr %7186, i64 %7190
  %7192 = load ptr, ptr %26, align 8, !tbaa !5
  %7193 = load i64, ptr %56, align 8, !tbaa !9
  %7194 = getelementptr inbounds double, ptr %7192, i64 %7193
  %7195 = call i32 @dlartv_(ptr noundef %60, ptr noundef %7172, ptr noundef %61, ptr noundef %7185, ptr noundef %61, ptr noundef %7191, ptr noundef %7194, ptr noundef %53)
  br label %7196

7196:                                             ; preds = %7158, %7143
  br label %7197

7197:                                             ; preds = %7196
  %7198 = load i64, ptr %42, align 8, !tbaa !9
  %7199 = add nsw i64 %7198, -1
  store i64 %7199, ptr %42, align 8, !tbaa !9
  br label %7140, !llvm.loop !103

7200:                                             ; preds = %7140
  br label %7201

7201:                                             ; preds = %7200
  %7202 = load i64, ptr %41, align 8, !tbaa !9
  %7203 = add nsw i64 %7202, 1
  store i64 %7203, ptr %41, align 8, !tbaa !9
  br label %7109, !llvm.loop !104

7204:                                             ; preds = %7109
  %7205 = load ptr, ptr %19, align 8, !tbaa !5
  %7206 = load i64, ptr %7205, align 8, !tbaa !9
  %7207 = icmp sgt i64 %7206, 1
  br i1 %7207, label %7208, label %7262

7208:                                             ; preds = %7204
  %7209 = load i64, ptr %39, align 8, !tbaa !9
  %7210 = load ptr, ptr %19, align 8, !tbaa !5
  %7211 = load i64, ptr %7210, align 8, !tbaa !9
  %7212 = add nsw i64 %7209, %7211
  store i64 %7212, ptr %37, align 8, !tbaa !9
  %7213 = load i64, ptr %37, align 8, !tbaa !9
  %7214 = load i64, ptr %43, align 8, !tbaa !9
  %7215 = icmp sle i64 %7213, %7214
  br i1 %7215, label %7216, label %7218

7216:                                             ; preds = %7208
  %7217 = load i64, ptr %37, align 8, !tbaa !9
  br label %7220

7218:                                             ; preds = %7208
  %7219 = load i64, ptr %43, align 8, !tbaa !9
  br label %7220

7220:                                             ; preds = %7218, %7216
  %7221 = phi i64 [ %7217, %7216 ], [ %7219, %7218 ]
  %7222 = load ptr, ptr %18, align 8, !tbaa !5
  %7223 = load i64, ptr %7222, align 8, !tbaa !9
  %7224 = shl i64 %7223, 1
  %7225 = sub nsw i64 %7221, %7224
  %7226 = sub nsw i64 %7225, 1
  store i64 %7226, ptr %36, align 8, !tbaa !9
  store i64 2, ptr %40, align 8, !tbaa !9
  br label %7227

7227:                                             ; preds = %7258, %7220
  %7228 = load i64, ptr %40, align 8, !tbaa !9
  %7229 = load i64, ptr %36, align 8, !tbaa !9
  %7230 = icmp sle i64 %7228, %7229
  br i1 %7230, label %7231, label %7261

7231:                                             ; preds = %7227
  %7232 = load ptr, ptr %26, align 8, !tbaa !5
  %7233 = load ptr, ptr %17, align 8, !tbaa !5
  %7234 = load i64, ptr %7233, align 8, !tbaa !9
  %7235 = load i64, ptr %40, align 8, !tbaa !9
  %7236 = add nsw i64 %7234, %7235
  %7237 = load ptr, ptr %18, align 8, !tbaa !5
  %7238 = load i64, ptr %7237, align 8, !tbaa !9
  %7239 = add nsw i64 %7236, %7238
  %7240 = getelementptr inbounds double, ptr %7232, i64 %7239
  %7241 = load double, ptr %7240, align 8, !tbaa !11
  %7242 = load ptr, ptr %26, align 8, !tbaa !5
  %7243 = load ptr, ptr %17, align 8, !tbaa !5
  %7244 = load i64, ptr %7243, align 8, !tbaa !9
  %7245 = load i64, ptr %40, align 8, !tbaa !9
  %7246 = add nsw i64 %7244, %7245
  %7247 = getelementptr inbounds double, ptr %7242, i64 %7246
  store double %7241, ptr %7247, align 8, !tbaa !11
  %7248 = load ptr, ptr %26, align 8, !tbaa !5
  %7249 = load i64, ptr %40, align 8, !tbaa !9
  %7250 = load ptr, ptr %18, align 8, !tbaa !5
  %7251 = load i64, ptr %7250, align 8, !tbaa !9
  %7252 = add nsw i64 %7249, %7251
  %7253 = getelementptr inbounds double, ptr %7248, i64 %7252
  %7254 = load double, ptr %7253, align 8, !tbaa !11
  %7255 = load ptr, ptr %26, align 8, !tbaa !5
  %7256 = load i64, ptr %40, align 8, !tbaa !9
  %7257 = getelementptr inbounds double, ptr %7255, i64 %7256
  store double %7254, ptr %7257, align 8, !tbaa !11
  br label %7258

7258:                                             ; preds = %7231
  %7259 = load i64, ptr %40, align 8, !tbaa !9
  %7260 = add nsw i64 %7259, 1
  store i64 %7260, ptr %40, align 8, !tbaa !9
  br label %7227, !llvm.loop !105

7261:                                             ; preds = %7227
  br label %7262

7262:                                             ; preds = %7261, %7204
  br label %7263

7263:                                             ; preds = %7262, %5524
  br label %3699

7264:                                             ; preds = %3760, %3750, %204, %195
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #4
  %7265 = load i32, ptr %14, align 4
  ret i32 %7265
}

; 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

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

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

declare i32 @f2c_dger(ptr noundef, ptr noundef, 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 @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 @dlar2v_(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

; 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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !14}
!21 = distinct !{!21, !14}
!22 = distinct !{!22, !14}
!23 = distinct !{!23, !14}
!24 = distinct !{!24, !14}
!25 = distinct !{!25, !14}
!26 = distinct !{!26, !14}
!27 = distinct !{!27, !14}
!28 = distinct !{!28, !14}
!29 = distinct !{!29, !14}
!30 = distinct !{!30, !14}
!31 = distinct !{!31, !14}
!32 = distinct !{!32, !14}
!33 = distinct !{!33, !14}
!34 = distinct !{!34, !14}
!35 = distinct !{!35, !14}
!36 = distinct !{!36, !14}
!37 = distinct !{!37, !14}
!38 = distinct !{!38, !14}
!39 = distinct !{!39, !14}
!40 = distinct !{!40, !14}
!41 = distinct !{!41, !14}
!42 = distinct !{!42, !14}
!43 = distinct !{!43, !14}
!44 = distinct !{!44, !14}
!45 = distinct !{!45, !14}
!46 = distinct !{!46, !14}
!47 = distinct !{!47, !14}
!48 = distinct !{!48, !14}
!49 = distinct !{!49, !14}
!50 = distinct !{!50, !14}
!51 = distinct !{!51, !14}
!52 = distinct !{!52, !14}
!53 = distinct !{!53, !14}
!54 = distinct !{!54, !14}
!55 = distinct !{!55, !14}
!56 = distinct !{!56, !14}
!57 = distinct !{!57, !14}
!58 = distinct !{!58, !14}
!59 = distinct !{!59, !14}
!60 = distinct !{!60, !14}
!61 = distinct !{!61, !14}
!62 = distinct !{!62, !14}
!63 = distinct !{!63, !14}
!64 = distinct !{!64, !14}
!65 = distinct !{!65, !14}
!66 = distinct !{!66, !14}
!67 = distinct !{!67, !14}
!68 = distinct !{!68, !14}
!69 = distinct !{!69, !14}
!70 = distinct !{!70, !14}
!71 = distinct !{!71, !14}
!72 = distinct !{!72, !14}
!73 = distinct !{!73, !14}
!74 = distinct !{!74, !14}
!75 = distinct !{!75, !14}
!76 = distinct !{!76, !14}
!77 = distinct !{!77, !14}
!78 = distinct !{!78, !14}
!79 = distinct !{!79, !14}
!80 = distinct !{!80, !14}
!81 = distinct !{!81, !14}
!82 = distinct !{!82, !14}
!83 = distinct !{!83, !14}
!84 = distinct !{!84, !14}
!85 = distinct !{!85, !14}
!86 = distinct !{!86, !14}
!87 = distinct !{!87, !14}
!88 = distinct !{!88, !14}
!89 = distinct !{!89, !14}
!90 = distinct !{!90, !14}
!91 = distinct !{!91, !14}
!92 = distinct !{!92, !14}
!93 = distinct !{!93, !14}
!94 = distinct !{!94, !14}
!95 = distinct !{!95, !14}
!96 = distinct !{!96, !14}
!97 = distinct !{!97, !14}
!98 = distinct !{!98, !14}
!99 = distinct !{!99, !14}
!100 = distinct !{!100, !14}
!101 = distinct !{!101, !14}
!102 = distinct !{!102, !14}
!103 = distinct !{!103, !14}
!104 = distinct !{!104, !14}
!105 = distinct !{!105, !14}


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

@.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_b8 = external hidden global double, align 8
@c_b9 = external hidden global double, align 8
@c__1 = external hidden global i64, align 8
@c_b20 = external hidden global double, align 8

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

43:                                               ; preds = %13
  %44 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #5
  %.not2641 = icmp eq i64 %44, 0
  br i1 %.not2641, label %.thread.sink.split, label %45

45:                                               ; preds = %43, %13
  %.not2642 = icmp eq i64 %.fr, 0
  br i1 %.not2642, label %46, label %48

46:                                               ; preds = %45
  %47 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #5
  %.not2643 = icmp eq i64 %47, 0
  br i1 %.not2643, label %.thread.sink.split, label %48

48:                                               ; preds = %46, %45
  %49 = load i64, ptr %2, align 8, !tbaa !5
  %50 = icmp slt i64 %49, 0
  br i1 %50, label %.thread.sink.split, label %51

51:                                               ; preds = %48
  %52 = load i64, ptr %3, align 8, !tbaa !5
  %53 = icmp slt i64 %52, 0
  br i1 %53, label %.thread.sink.split, label %54

54:                                               ; preds = %51
  %55 = load i64, ptr %4, align 8, !tbaa !5
  %or.cond2756 = icmp ugt i64 %55, %52
  br i1 %or.cond2756, label %.thread.sink.split, label %56

56:                                               ; preds = %54
  %57 = load i64, ptr %6, align 8, !tbaa !5
  %.not2644 = icmp sgt i64 %57, %52
  br i1 %.not2644, label %58, label %.thread.sink.split

58:                                               ; preds = %56
  %59 = load i64, ptr %8, align 8, !tbaa !5
  %.not2645 = icmp sgt i64 %59, %55
  br i1 %.not2645, label %60, label %.thread.sink.split

60:                                               ; preds = %58
  %61 = load i64, ptr %10, align 8, !tbaa !5
  %62 = icmp slt i64 %61, 1
  %63 = icmp ugt i64 %49, %61
  %or.cond2810 = and i1 %.not, %63
  %or.cond3893 = or i1 %62, %or.cond2810
  br i1 %or.cond3893, label %.thread.sink.split, label %64

64:                                               ; preds = %60
  %.pr = load i64, ptr %12, align 8, !tbaa !5
  %.not2646 = icmp eq i64 %.pr, 0
  br i1 %.not2646, label %68, label %.thread

.thread.sink.split:                               ; preds = %60, %58, %56, %54, %51, %48, %46, %43
  %.sink3895 = phi i64 [ -1, %43 ], [ -2, %46 ], [ -3, %48 ], [ -4, %51 ], [ -5, %54 ], [ -7, %56 ], [ -9, %58 ], [ -11, %60 ]
  store i64 %.sink3895, ptr %12, align 8, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %64
  %65 = phi i64 [ %.pr, %64 ], [ %.sink3895, %.thread.sink.split ]
  %66 = sub nsw i64 0, %65
  store i64 %66, ptr %14, align 8, !tbaa !5
  %67 = call i32 @xerbla_(ptr noundef nonnull @.str.4, ptr noundef nonnull %14) #5
  br label %.loopexit2869

68:                                               ; preds = %64
  %69 = icmp eq i64 %49, 0
  br i1 %69, label %.loopexit2869, label %70

70:                                               ; preds = %68
  %71 = mul nsw i64 %40, %57
  store i64 %71, ptr %26, align 8, !tbaa !5
  br i1 %.not, label %72, label %74

72:                                               ; preds = %70
  %73 = tail call i32 @dlaset_(ptr noundef nonnull @.str.5, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_b8, ptr noundef nonnull @c_b9, ptr noundef %9, ptr noundef nonnull %10) #5
  %.pre = load i64, ptr %2, align 8, !tbaa !5
  %.pre3740 = load i64, ptr %4, align 8, !tbaa !5
  br label %74

74:                                               ; preds = %72, %70
  %75 = phi i64 [ %.pre3740, %72 ], [ %55, %70 ]
  %76 = phi i64 [ %.pre, %72 ], [ %49, %70 ]
  %77 = add nsw i64 %75, %76
  %78 = sdiv i64 %77, 2
  %79 = add nsw i64 %76, 1
  %invariant.gep3277 = getelementptr i8, ptr %32, i64 8
  %invariant.gep3281 = getelementptr i8, ptr %29, i64 8
  %80 = add nsw i64 %78, 1
  %81 = getelementptr double, ptr %32, i64 %42
  %82 = getelementptr double, ptr %35, i64 %78
  %83 = getelementptr i8, ptr %82, i64 8
  %invariant.gep3190 = getelementptr i8, ptr %29, i64 16
  %84 = shl i64 %78, 3
  %85 = sub i64 -16, %84
  %scevgep = getelementptr i8, ptr %11, i64 %85
  %scevgep3923 = getelementptr i8, ptr %11, i64 %85
  %scevgep3928 = getelementptr i8, ptr %11, i64 -16
  %scevgep3933 = getelementptr i8, ptr %11, i64 -16
  %scevgep3948 = getelementptr i8, ptr %11, i64 %85
  %scevgep3953 = getelementptr i8, ptr %11, i64 %85
  %scevgep3958 = getelementptr i8, ptr %11, i64 -16
  %scevgep3963 = getelementptr i8, ptr %11, i64 -16
  %86 = shl i64 %27, 3
  %87 = add i64 %86, -8
  %scevgep4013 = getelementptr i8, ptr %7, i64 8
  %scevgep4040 = getelementptr i8, ptr %5, i64 -8
  %88 = shl i64 %41, 3
  %scevgep4042 = getelementptr i8, ptr %7, i64 %88
  %scevgep4045 = getelementptr i8, ptr %5, i64 -8
  %89 = shl i64 %27, 3
  %90 = add i64 %89, -8
  %91 = shl i64 %27, 3
  %scevgep4081 = getelementptr i8, ptr %7, i64 %88
  %92 = add i64 %88, 8
  %scevgep4084 = getelementptr i8, ptr %5, i64 -8
  %invariant.gep4418 = getelementptr i8, ptr %5, i64 -8
  %stride.check4053 = icmp slt i64 %87, 0
  %invariant.gep4402 = getelementptr i8, ptr %36, i64 -8
  %invariant.gep4404 = getelementptr i8, ptr %36, i64 -8
  %invariant.gep4406 = getelementptr i8, ptr %36, i64 -8
  %invariant.gep4408 = getelementptr i8, ptr %36, i64 -8
  %invariant.gep4410 = getelementptr i8, ptr %36, i64 -8
  %invariant.gep4412 = getelementptr i8, ptr %36, i64 -8
  %invariant.gep4414 = getelementptr i8, ptr %36, i64 -8
  %invariant.gep4416 = getelementptr i8, ptr %36, i64 -8
  br label %.outer2878

.outer2878:                                       ; preds = %.loopexit2876, %74
  %.pre3742 = phi i64 [ %.pre3743.pre, %.loopexit2876 ], [ %76, %74 ]
  %93 = phi i64 [ %1471, %.loopexit2876 ], [ %75, %74 ]
  %.02607.ph = phi i64 [ %.126082773, %.loopexit2876 ], [ %79, %74 ]
  %.02549.ph = phi i64 [ %.125502776, %.loopexit2876 ], [ undef, %74 ]
  %.02544.ph = phi i64 [ %.125452779, %.loopexit2876 ], [ undef, %74 ]
  %.02540.ph = phi i64 [ %.125412782, %.loopexit2876 ], [ undef, %74 ]
  %.0.ph = phi i64 [ %.02908, %.loopexit2876 ], [ 1, %74 ]
  %.not26472925 = icmp eq i64 %.0.ph, 0
  %.pre3741 = load i64, ptr %3, align 8, !tbaa !5
  br i1 %.not26472925, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.outer2878
  %94 = add i64 %.02607.ph, -1
  %95 = add i64 %.02607.ph, -2
  %96 = call i64 @llvm.smin.i64(i64 %93, i64 %95)
  store i64 %96, ptr %24, align 8, !tbaa !5
  %97 = add i64 %.pre3741, %94
  %98 = call i64 @llvm.smin.i64(i64 %.pre3742, i64 %97)
  %99 = sub i64 %94, %96
  %100 = load i64, ptr %22, align 8
  %101 = add nsw i64 %99, %100
  %.not2651 = icmp sgt i64 %.02607.ph, %80
  br i1 %.not2651, label %.lr.ph.split.us, label %.lr.ph.split

.lr.ph.split.us:                                  ; preds = %.lr.ph
  store i64 %.pre3742, ptr %14, align 8, !tbaa !5
  %102 = mul nsw i64 %94, %30
  %.not26533023 = icmp sgt i64 %94, %98
  br i1 %.not2642, label %813, label %106

.lr.ph.split:                                     ; preds = %.lr.ph
  %103 = icmp eq i64 %.pre3741, 0
  store i64 %.pre3742, ptr %14, align 8, !tbaa !5
  store i64 %97, ptr %15, align 8, !tbaa !5
  br i1 %103, label %.loopexit2880, label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.split, %.outer2878
  %.02549.lcssa = phi i64 [ %.02549.ph, %.outer2878 ], [ %78, %.lr.ph.split ]
  %.02544.lcssa = phi i64 [ %.02544.ph, %.outer2878 ], [ %98, %.lr.ph.split ]
  %.02540.lcssa = phi i64 [ %.02540.ph, %.outer2878 ], [ %101, %.lr.ph.split ]
  %104 = add nsw i64 %.pre3741, %.02607.ph
  %.not2648 = icmp slt i64 %104, %.pre3742
  br i1 %.not2648, label %105, label %.loopexit2880

105:                                              ; preds = %._crit_edge
  br i1 %.not2642, label %973, label %328

106:                                              ; preds = %.lr.ph.split.us
  %107 = getelementptr double, ptr %81, i64 %102
  %108 = load double, ptr %107, align 8, !tbaa !9
  br i1 %.not26533023, label %._crit_edge2943, label %.lr.ph2942

.lr.ph2942:                                       ; preds = %106
  %invariant.gep = getelementptr double, ptr %29, i64 %100
  %109 = sub i64 %98, %.02607.ph
  %110 = add i64 %98, 1
  %xtraiter = and i64 %109, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.prol.loopexit, label %.prol.loopexit.unr-lcssa

.prol.loopexit.unr-lcssa:                         ; preds = %.lr.ph2942
  %111 = mul nsw i64 %94, %27
  %112 = getelementptr double, ptr %invariant.gep, i64 %111
  %113 = load double, ptr %112, align 8, !tbaa !9
  %114 = fdiv double %113, %108
  store double %114, ptr %112, align 8, !tbaa !9
  br label %.prol.loopexit

.prol.loopexit:                                   ; preds = %.prol.loopexit.unr-lcssa, %.lr.ph2942
  %.025832940.unr = phi i64 [ %94, %.lr.ph2942 ], [ %.02607.ph, %.prol.loopexit.unr-lcssa ]
  %115 = icmp eq i64 %110, %.02607.ph
  br i1 %115, label %._crit_edge2943, label %.lr.ph2942.new

.lr.ph2942.new:                                   ; preds = %.prol.loopexit, %.lr.ph2942.new
  %.025832940 = phi i64 [ %127, %.lr.ph2942.new ], [ %.025832940.unr, %.prol.loopexit ]
  %116 = sub nsw i64 %94, %.025832940
  %117 = mul nsw i64 %.025832940, %27
  %gep = getelementptr double, ptr %invariant.gep, i64 %116
  %118 = getelementptr double, ptr %gep, i64 %117
  %119 = load double, ptr %118, align 8, !tbaa !9
  %120 = fdiv double %119, %108
  store double %120, ptr %118, align 8, !tbaa !9
  %121 = add i64 %.025832940, 1
  %122 = sub nsw i64 %94, %121
  %123 = mul nsw i64 %121, %27
  %gep.1 = getelementptr double, ptr %invariant.gep, i64 %122
  %124 = getelementptr double, ptr %gep.1, i64 %123
  %125 = load double, ptr %124, align 8, !tbaa !9
  %126 = fdiv double %125, %108
  store double %126, ptr %124, align 8, !tbaa !9
  %127 = add i64 %.025832940, 2
  %exitcond.not.1 = icmp eq i64 %121, %98
  br i1 %exitcond.not.1, label %._crit_edge2943, label %.lr.ph2942.new, !llvm.loop !11

._crit_edge2943:                                  ; preds = %.prol.loopexit, %.lr.ph2942.new, %106
  store i64 1, ptr %14, align 8, !tbaa !5
  %128 = sub nsw i64 %94, %.pre3741
  store i64 %128, ptr %15, align 8, !tbaa !5
  store i64 %94, ptr %16, align 8, !tbaa !5
  %129 = call i64 @llvm.smax.i64(i64 %128, i64 1)
  %.not2676.not2944 = icmp slt i64 %129, %.02607.ph
  br i1 %.not2676.not2944, label %.lr.ph2947, label %._crit_edge2948

.lr.ph2947:                                       ; preds = %._crit_edge2943
  %130 = mul nsw i64 %94, %27
  %invariant.gep2949 = getelementptr double, ptr %29, i64 %100
  %invariant.gep2951 = getelementptr double, ptr %invariant.gep2949, i64 %130
  %131 = sub i64 %.02607.ph, %129
  %min.iters.check4131 = icmp ult i64 %131, 2
  br i1 %min.iters.check4131, label %scalar.ph4130.preheader, label %vector.ph4132

vector.ph4132:                                    ; preds = %.lr.ph2947
  %n.vec4134 = and i64 %131, -2
  %ind.end4135 = add i64 %129, %n.vec4134
  %broadcast.splatinsert4141 = insertelement <2 x double> poison, double %108, i64 0
  %broadcast.splat4142 = shufflevector <2 x double> %broadcast.splatinsert4141, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body4137

vector.body4137:                                  ; preds = %vector.body4137, %vector.ph4132
  %index4138 = phi i64 [ 0, %vector.ph4132 ], [ %index.next4143, %vector.body4137 ]
  %offset.idx4139 = add i64 %129, %index4138
  %132 = sub nsw i64 %offset.idx4139, %94
  %133 = getelementptr double, ptr %invariant.gep2951, i64 %132
  %wide.load4140 = load <2 x double>, ptr %133, align 8, !tbaa !9
  %134 = fdiv <2 x double> %wide.load4140, %broadcast.splat4142
  store <2 x double> %134, ptr %133, align 8, !tbaa !9
  %index.next4143 = add nuw i64 %index4138, 2
  %135 = icmp eq i64 %index.next4143, %n.vec4134
  br i1 %135, label %middle.block4129, label %vector.body4137, !llvm.loop !13

middle.block4129:                                 ; preds = %vector.body4137
  %cmp.n4144 = icmp eq i64 %131, %n.vec4134
  br i1 %cmp.n4144, label %._crit_edge2948, label %scalar.ph4130.preheader

scalar.ph4130.preheader:                          ; preds = %middle.block4129, %.lr.ph2947
  %.125842945.ph = phi i64 [ %129, %.lr.ph2947 ], [ %ind.end4135, %middle.block4129 ]
  br label %scalar.ph4130

scalar.ph4130:                                    ; preds = %scalar.ph4130.preheader, %scalar.ph4130
  %.125842945 = phi i64 [ %139, %scalar.ph4130 ], [ %.125842945.ph, %scalar.ph4130.preheader ]
  %136 = sub nsw i64 %.125842945, %94
  %gep2952 = getelementptr double, ptr %invariant.gep2951, i64 %136
  %137 = load double, ptr %gep2952, align 8, !tbaa !9
  %138 = fdiv double %137, %108
  store double %138, ptr %gep2952, align 8, !tbaa !9
  %139 = add nuw nsw i64 %.125842945, 1
  %exitcond3703.not = icmp eq i64 %139, %.02607.ph
  br i1 %exitcond3703.not, label %._crit_edge2948, label %scalar.ph4130, !llvm.loop !16

._crit_edge2948:                                  ; preds = %scalar.ph4130, %middle.block4129, %._crit_edge2943
  %.not26772991 = icmp sgt i64 %99, %95
  br i1 %.not26772991, label %252, label %.lr.ph2994

.lr.ph2994:                                       ; preds = %._crit_edge2948
  %invariant.gep2966 = getelementptr double, ptr %29, i64 %100
  %140 = mul i64 %94, %27
  %invariant.gep2998 = getelementptr double, ptr %invariant.gep2966, i64 %140
  %141 = xor i64 %96, -1
  %142 = add i64 %94, %141
  %.not26972978 = icmp sgt i64 %129, %142
  %143 = sub i64 %.02607.ph, %96
  %144 = shl i64 %.02607.ph, 3
  %145 = add i64 %144, -16
  %146 = shl i64 %96, 3
  %147 = sub i64 %145, %146
  %148 = mul i64 %27, %147
  %149 = add i64 %100, %96
  %150 = add i64 %149, %129
  %151 = shl i64 %150, 3
  %152 = add i64 %148, %151
  %153 = sub i64 %152, %144
  %scevgep4039 = getelementptr i8, ptr %5, i64 %153
  %154 = add i64 %96, -1
  %155 = mul i64 %87, %154
  %156 = shl i64 %100, 3
  %157 = getelementptr i8, ptr %scevgep4040, i64 %148
  %158 = getelementptr i8, ptr %157, i64 %155
  %scevgep4041 = getelementptr i8, ptr %158, i64 %156
  %159 = add i64 %144, -16
  %160 = mul i64 %30, %159
  %161 = sub i64 %160, %146
  %scevgep4043 = getelementptr i8, ptr %scevgep4042, i64 %161
  %162 = mul i64 %27, %159
  %163 = add i64 %100, %129
  %164 = shl i64 %163, 3
  %165 = add i64 %162, %164
  %166 = sub i64 %165, %144
  %scevgep4044 = getelementptr i8, ptr %5, i64 %166
  %167 = add i64 %162, %156
  %168 = sub i64 %167, %146
  %scevgep4046 = getelementptr i8, ptr %scevgep4045, i64 %168
  %169 = xor i64 %96, -1
  %170 = add i64 %.02607.ph, %169
  %171 = sub i64 %170, %129
  %172 = shl i64 %.02607.ph, 3
  %173 = add i64 %172, -16
  %174 = shl i64 %96, 3
  %175 = sub i64 %173, %174
  %176 = mul i64 %27, %175
  %177 = shl i64 %100, 3
  %178 = add i64 %172, -16
  %179 = mul i64 %30, %178
  %180 = sub i64 %179, %174
  %scevgep4082 = getelementptr i8, ptr %scevgep4081, i64 %180
  %181 = add i64 %92, %179
  %182 = sub i64 %181, %174
  %183 = mul i64 %27, %178
  %184 = add i64 %183, %177
  %185 = sub i64 %184, %174
  %scevgep4085 = getelementptr i8, ptr %scevgep4084, i64 %185
  %scevgep4087 = getelementptr i8, ptr %5, i64 %184
  %gep4419 = getelementptr i8, ptr %invariant.gep4418, i64 %176
  %186 = getelementptr i8, ptr %gep4419, i64 %177
  %187 = getelementptr i8, ptr %5, i64 %176
  %188 = getelementptr i8, ptr %187, i64 %177
  %189 = getelementptr i8, ptr %7, i64 %182
  %190 = getelementptr i8, ptr %5, i64 %185
  %min.iters.check4057 = icmp ult i64 %171, 4
  %bound04047 = icmp ult ptr %scevgep4039, %107
  %bound14048 = icmp ult ptr %scevgep4043, %scevgep4041
  %found.conflict4049 = and i1 %bound04047, %bound14048
  %bound04050 = icmp ult ptr %scevgep4039, %scevgep4046
  %bound14051 = icmp ult ptr %scevgep4044, %scevgep4041
  %found.conflict4052 = and i1 %bound04050, %bound14051
  %191 = or i1 %found.conflict4052, %stride.check4053
  %conflict.rdx4054 = or i1 %found.conflict4049, %191
  %n.vec4060 = and i64 %171, -4
  %ind.end4061 = add i64 %129, %n.vec4060
  %cmp.n4075 = icmp eq i64 %171, %n.vec4060
  br label %192

192:                                              ; preds = %.lr.ph2994, %._crit_edge2982
  %indvar4077 = phi i64 [ 0, %.lr.ph2994 ], [ %indvar.next4078, %._crit_edge2982 ]
  %indvars.iv = phi i64 [ %143, %.lr.ph2994 ], [ %indvars.iv.next, %._crit_edge2982 ]
  %.025592992 = phi i64 [ %99, %.lr.ph2994 ], [ %251, %._crit_edge2982 ]
  %193 = add i64 %indvar4077, 1
  %194 = mul i64 %90, %indvar4077
  %scevgep4079 = getelementptr i8, ptr %186, i64 %194
  %195 = mul i64 %91, %indvar4077
  %scevgep4080 = getelementptr i8, ptr %188, i64 %195
  %196 = shl i64 %indvar4077, 3
  %scevgep4083 = getelementptr i8, ptr %189, i64 %196
  %scevgep4086 = getelementptr i8, ptr %190, i64 %196
  %.not26952961 = icmp sgt i64 %99, %.025592992
  br i1 %.not26952961, label %._crit_edge2965, label %.lr.ph2964

.lr.ph2964:                                       ; preds = %192
  %197 = mul nsw i64 %.025592992, %27
  %invariant.gep2968 = getelementptr double, ptr %invariant.gep2966, i64 %197
  %198 = sub nsw i64 %.025592992, %94
  %gep2999 = getelementptr double, ptr %invariant.gep2998, i64 %198
  %gep2960 = getelementptr double, ptr %107, i64 %198
  %min.iters.check4109 = icmp ult i64 %193, 4
  br i1 %min.iters.check4109, label %scalar.ph4108.preheader, label %vector.memcheck4076

vector.memcheck4076:                              ; preds = %.lr.ph2964
  %bound04088 = icmp ult ptr %scevgep4079, %scevgep4083
  %bound14089 = icmp ult ptr %scevgep4082, %scevgep4080
  %found.conflict4090 = and i1 %bound04088, %bound14089
  %bound04091 = icmp ult ptr %scevgep4079, %invariant.gep2998
  %bound14092 = icmp ult ptr %scevgep4085, %scevgep4080
  %found.conflict4093 = and i1 %bound04091, %bound14092
  %conflict.rdx4094 = or i1 %found.conflict4090, %found.conflict4093
  %bound04095 = icmp ult ptr %scevgep4079, %107
  %bound14096 = icmp ult ptr %scevgep4082, %scevgep4080
  %found.conflict4097 = and i1 %bound04095, %bound14096
  %conflict.rdx4098 = or i1 %conflict.rdx4094, %found.conflict4097
  %bound04099 = icmp ult ptr %scevgep4079, %scevgep4086
  %bound14100 = icmp ult ptr %scevgep4085, %scevgep4080
  %found.conflict4101 = and i1 %bound04099, %bound14100
  %conflict.rdx4102 = or i1 %conflict.rdx4098, %found.conflict4101
  %bound04103 = icmp ult ptr %scevgep4079, %scevgep4087
  %bound14104 = icmp ult ptr %invariant.gep2998, %scevgep4080
  %found.conflict4105 = and i1 %bound04103, %bound14104
  %conflict.rdx4106 = or i1 %conflict.rdx4102, %found.conflict4105
  br i1 %conflict.rdx4106, label %scalar.ph4108.preheader, label %vector.ph4110

vector.ph4110:                                    ; preds = %vector.memcheck4076
  %n.vec4112 = and i64 %193, -2
  %ind.end4113 = add i64 %99, %n.vec4112
  %199 = load double, ptr %gep2999, align 8, !tbaa !9, !alias.scope !17
  %broadcast.splatinsert4120 = insertelement <2 x double> poison, double %199, i64 0
  %broadcast.splat4121 = shufflevector <2 x double> %broadcast.splatinsert4120, <2 x double> poison, <2 x i32> zeroinitializer
  %200 = load double, ptr %gep2960, align 8, !tbaa !9, !alias.scope !20
  %broadcast.splatinsert4123 = insertelement <2 x double> poison, double %200, i64 0
  %broadcast.splat4124 = shufflevector <2 x double> %broadcast.splatinsert4123, <2 x double> poison, <2 x i32> zeroinitializer
  %201 = fneg <2 x double> %broadcast.splat4124
  %202 = load double, ptr %invariant.gep2998, align 8, !tbaa !9, !alias.scope !22
  %broadcast.splatinsert4125 = insertelement <2 x double> poison, double %202, i64 0
  %broadcast.splat4126 = shufflevector <2 x double> %broadcast.splatinsert4125, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body4115

vector.body4115:                                  ; preds = %vector.body4115, %vector.ph4110
  %index4116 = phi i64 [ 0, %vector.ph4110 ], [ %index.next4127, %vector.body4115 ]
  %offset.idx4117 = add i64 %99, %index4116
  %203 = sub nsw i64 %offset.idx4117, %.025592992
  %204 = getelementptr double, ptr %invariant.gep2968, i64 %203
  %wide.load4118 = load <2 x double>, ptr %204, align 8, !tbaa !9, !alias.scope !24, !noalias !26
  %205 = sub nsw i64 %offset.idx4117, %94
  %206 = getelementptr double, ptr %107, i64 %205
  %wide.load4119 = load <2 x double>, ptr %206, align 8, !tbaa !9, !alias.scope !29
  %207 = fneg <2 x double> %wide.load4119
  %208 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %207, <2 x double> %broadcast.splat4121, <2 x double> %wide.load4118)
  %209 = getelementptr double, ptr %invariant.gep2998, i64 %205
  %wide.load4122 = load <2 x double>, ptr %209, align 8, !tbaa !9, !alias.scope !30
  %210 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %201, <2 x double> %wide.load4122, <2 x double> %208)
  %211 = fmul <2 x double> %wide.load4119, %broadcast.splat4126
  %212 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %211, <2 x double> %broadcast.splat4124, <2 x double> %210)
  store <2 x double> %212, ptr %204, align 8, !tbaa !9, !alias.scope !24, !noalias !26
  %index.next4127 = add nuw i64 %index4116, 2
  %213 = icmp eq i64 %index.next4127, %n.vec4112
  br i1 %213, label %middle.block4107, label %vector.body4115, !llvm.loop !31

middle.block4107:                                 ; preds = %vector.body4115
  %cmp.n4128 = icmp eq i64 %193, %n.vec4112
  br i1 %cmp.n4128, label %._crit_edge2965, label %scalar.ph4108.preheader

scalar.ph4108.preheader:                          ; preds = %middle.block4107, %vector.memcheck4076, %.lr.ph2964
  %.225852962.ph = phi i64 [ %99, %vector.memcheck4076 ], [ %99, %.lr.ph2964 ], [ %ind.end4113, %middle.block4107 ]
  br label %scalar.ph4108

scalar.ph4108:                                    ; preds = %scalar.ph4108.preheader, %scalar.ph4108
  %.225852962 = phi i64 [ %228, %scalar.ph4108 ], [ %.225852962.ph, %scalar.ph4108.preheader ]
  %214 = sub nsw i64 %.225852962, %.025592992
  %gep2969 = getelementptr double, ptr %invariant.gep2968, i64 %214
  %215 = load double, ptr %gep2969, align 8, !tbaa !9
  %216 = sub nsw i64 %.225852962, %94
  %gep2956 = getelementptr double, ptr %107, i64 %216
  %217 = load double, ptr %gep2956, align 8, !tbaa !9
  %218 = load double, ptr %gep2999, align 8, !tbaa !9
  %219 = fneg double %217
  %220 = call double @llvm.fmuladd.f64(double %219, double %218, double %215)
  %221 = load double, ptr %gep2960, align 8, !tbaa !9
  %gep2973 = getelementptr double, ptr %invariant.gep2998, i64 %216
  %222 = load double, ptr %gep2973, align 8, !tbaa !9
  %223 = fneg double %221
  %224 = call double @llvm.fmuladd.f64(double %223, double %222, double %220)
  %225 = load double, ptr %invariant.gep2998, align 8, !tbaa !9
  %226 = fmul double %217, %225
  %227 = call double @llvm.fmuladd.f64(double %226, double %221, double %224)
  store double %227, ptr %gep2969, align 8, !tbaa !9
  %228 = add i64 %.225852962, 1
  %exitcond3704.not = icmp eq i64 %228, %indvars.iv
  br i1 %exitcond3704.not, label %._crit_edge2965, label %scalar.ph4108, !llvm.loop !32

._crit_edge2965:                                  ; preds = %scalar.ph4108, %middle.block4107, %192
  br i1 %.not26972978, label %._crit_edge2982, label %.lr.ph2981

.lr.ph2981:                                       ; preds = %._crit_edge2965
  %229 = sub nsw i64 %.025592992, %94
  %gep2977 = getelementptr double, ptr %107, i64 %229
  %230 = mul nsw i64 %.025592992, %27
  %invariant.gep2989 = getelementptr double, ptr %invariant.gep2966, i64 %230
  %brmerge = select i1 %min.iters.check4057, i1 true, i1 %conflict.rdx4054
  br i1 %brmerge, label %scalar.ph4056.preheader, label %vector.ph4058

vector.ph4058:                                    ; preds = %.lr.ph2981
  %231 = load double, ptr %gep2977, align 8, !tbaa !9, !alias.scope !33
  %broadcast.splatinsert4072 = insertelement <2 x double> poison, double %231, i64 0
  %broadcast.splat4073 = shufflevector <2 x double> %broadcast.splatinsert4072, <2 x double> poison, <2 x i32> zeroinitializer
  %232 = fneg <2 x double> %broadcast.splat4073
  %233 = fneg <2 x double> %broadcast.splat4073
  br label %vector.body4063

vector.body4063:                                  ; preds = %vector.body4063, %vector.ph4058
  %index4064 = phi i64 [ 0, %vector.ph4058 ], [ %index.next4074, %vector.body4063 ]
  %offset.idx4065 = add i64 %129, %index4064
  %234 = sub nsw i64 %offset.idx4065, %94
  %235 = getelementptr double, ptr %invariant.gep2998, i64 %234
  %236 = getelementptr i8, ptr %235, i64 16
  %wide.load4066 = load <2 x double>, ptr %235, align 8, !tbaa !9, !alias.scope !36
  %wide.load4067 = load <2 x double>, ptr %236, align 8, !tbaa !9, !alias.scope !36
  %237 = sub nsw i64 %offset.idx4065, %.025592992
  %238 = getelementptr double, ptr %invariant.gep2989, i64 %237
  %239 = getelementptr i8, ptr %238, i64 16
  %wide.load4068 = load <2 x double>, ptr %238, align 8, !tbaa !9, !alias.scope !38, !noalias !40
  %wide.load4069 = load <2 x double>, ptr %239, align 8, !tbaa !9, !alias.scope !38, !noalias !40
  %240 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %232, <2 x double> %wide.load4066, <2 x double> %wide.load4068)
  %241 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %233, <2 x double> %wide.load4067, <2 x double> %wide.load4069)
  store <2 x double> %240, ptr %238, align 8, !tbaa !9, !alias.scope !38, !noalias !40
  store <2 x double> %241, ptr %239, align 8, !tbaa !9, !alias.scope !38, !noalias !40
  %index.next4074 = add nuw i64 %index4064, 4
  %242 = icmp eq i64 %index.next4074, %n.vec4060
  br i1 %242, label %middle.block4055, label %vector.body4063, !llvm.loop !41

middle.block4055:                                 ; preds = %vector.body4063
  br i1 %cmp.n4075, label %._crit_edge2982, label %scalar.ph4056.preheader

scalar.ph4056.preheader:                          ; preds = %.lr.ph2981, %middle.block4055
  %.325862979.ph = phi i64 [ %129, %.lr.ph2981 ], [ %ind.end4061, %middle.block4055 ]
  br label %scalar.ph4056

scalar.ph4056:                                    ; preds = %scalar.ph4056.preheader, %scalar.ph4056
  %.325862979 = phi i64 [ %250, %scalar.ph4056 ], [ %.325862979.ph, %scalar.ph4056.preheader ]
  %243 = load double, ptr %gep2977, align 8, !tbaa !9
  %244 = sub nsw i64 %.325862979, %94
  %gep2986 = getelementptr double, ptr %invariant.gep2998, i64 %244
  %245 = load double, ptr %gep2986, align 8, !tbaa !9
  %246 = sub nsw i64 %.325862979, %.025592992
  %gep2990 = getelementptr double, ptr %invariant.gep2989, i64 %246
  %247 = load double, ptr %gep2990, align 8, !tbaa !9
  %248 = fneg double %243
  %249 = call double @llvm.fmuladd.f64(double %248, double %245, double %247)
  store double %249, ptr %gep2990, align 8, !tbaa !9
  %250 = add nuw nsw i64 %.325862979, 1
  %.not2697.not = icmp slt i64 %.325862979, %142
  br i1 %.not2697.not, label %scalar.ph4056, label %._crit_edge2982, !llvm.loop !42

._crit_edge2982:                                  ; preds = %scalar.ph4056, %middle.block4055, %._crit_edge2965
  %251 = add i64 %.025592992, 1
  %indvars.iv.next = add i64 %indvars.iv, 1
  %exitcond3705.not = icmp eq i64 %251, %94
  %indvar.next4078 = add i64 %indvar4077, 1
  br i1 %exitcond3705.not, label %._crit_edge2995, label %192, !llvm.loop !43

._crit_edge2995:                                  ; preds = %._crit_edge2982
  store i64 1, ptr %14, align 8, !tbaa !5
  store i64 %128, ptr %15, align 8, !tbaa !5
  store i64 %142, ptr %17, align 8, !tbaa !5
  br label %252

252:                                              ; preds = %._crit_edge2995, %._crit_edge2948
  br i1 %.not26533023, label %301, label %.lr.ph3016

.lr.ph3016:                                       ; preds = %252
  %invariant.gep3018 = getelementptr double, ptr %29, i64 %100
  %253 = shl i64 %.02607.ph, 3
  %254 = add i64 %253, -16
  %255 = mul i64 %27, %254
  %256 = add i64 %255, -8
  %257 = shl i64 %100, 3
  %258 = add i64 %256, %257
  %259 = mul i64 %30, %254
  %260 = sub i64 %259, %253
  %scevgep4014 = getelementptr i8, ptr %scevgep4013, i64 %260
  %261 = getelementptr i8, ptr %5, i64 %258
  %262 = getelementptr i8, ptr %5, i64 %258
  br label %263

263:                                              ; preds = %.lr.ph3016, %._crit_edge3008
  %indvar = phi i64 [ 0, %.lr.ph3016 ], [ %indvar.next, %._crit_edge3008 ]
  %.425873014 = phi i64 [ %94, %.lr.ph3016 ], [ %300, %._crit_edge3008 ]
  %264 = add i64 %128, %indvar
  %smax4016 = call i64 @llvm.smax.i64(i64 %264, i64 %99)
  %265 = xor i64 %smax4016, -1
  %266 = add i64 %.02607.ph, %265
  %267 = mul i64 %86, %indvar
  %scevgep4010 = getelementptr i8, ptr %261, i64 %267
  %268 = add i64 %128, %indvar
  %smax = call i64 @llvm.smax.i64(i64 %268, i64 %99)
  %269 = add i64 %.02607.ph, %indvar
  %reass.sub4370 = sub i64 %smax, %269
  %270 = shl i64 %reass.sub4370, 3
  %271 = getelementptr i8, ptr %scevgep4010, i64 %270
  %scevgep4011 = getelementptr i8, ptr %271, i64 8
  %272 = mul i64 %87, %indvar
  %scevgep4012 = getelementptr i8, ptr %262, i64 %272
  %273 = add i64 %41, %smax
  %274 = shl i64 %273, 3
  %scevgep4015 = getelementptr i8, ptr %scevgep4014, i64 %274
  %275 = sub nsw i64 %.425873014, %.pre3741
  %276 = call i64 @llvm.smax.i64(i64 %275, i64 %99)
  %.not26943004 = icmp sgt i64 %276, %95
  br i1 %.not26943004, label %._crit_edge3008, label %.lr.ph3007

.lr.ph3007:                                       ; preds = %263
  %277 = sub nsw i64 %94, %.425873014
  %278 = mul nsw i64 %.425873014, %27
  %gep3019 = getelementptr double, ptr %invariant.gep3018, i64 %277
  %279 = getelementptr double, ptr %gep3019, i64 %278
  %invariant.gep3011 = getelementptr double, ptr %invariant.gep3018, i64 %278
  %min.iters.check4019 = icmp ult i64 %266, 4
  br i1 %min.iters.check4019, label %scalar.ph4018.preheader, label %vector.memcheck4009

vector.memcheck4009:                              ; preds = %.lr.ph3007
  %bound0 = icmp ult ptr %scevgep4011, %107
  %bound1 = icmp ult ptr %scevgep4015, %scevgep4012
  %found.conflict = and i1 %bound0, %bound1
  br i1 %found.conflict, label %scalar.ph4018.preheader, label %vector.ph4020

vector.ph4020:                                    ; preds = %vector.memcheck4009
  %n.vec4022 = and i64 %266, -4
  %ind.end4023 = add i64 %276, %n.vec4022
  br label %vector.body4025

vector.body4025:                                  ; preds = %vector.body4025, %vector.ph4020
  %index4026 = phi i64 [ 0, %vector.ph4020 ], [ %index.next4036, %vector.body4025 ]
  %offset.idx4027 = add i64 %276, %index4026
  %280 = sub nsw i64 %offset.idx4027, %94
  %281 = getelementptr double, ptr %107, i64 %280
  %282 = getelementptr i8, ptr %281, i64 16
  %wide.load4028 = load <2 x double>, ptr %281, align 8, !tbaa !9, !alias.scope !44
  %wide.load4029 = load <2 x double>, ptr %282, align 8, !tbaa !9, !alias.scope !44
  %283 = load double, ptr %279, align 8, !tbaa !9, !alias.scope !47
  %broadcast.splatinsert4034 = insertelement <2 x double> poison, double %283, i64 0
  %broadcast.splat4035 = shufflevector <2 x double> %broadcast.splatinsert4034, <2 x double> poison, <2 x i32> zeroinitializer
  %284 = sub nsw i64 %offset.idx4027, %.425873014
  %285 = getelementptr double, ptr %invariant.gep3011, i64 %284
  %286 = getelementptr i8, ptr %285, i64 16
  %wide.load4030 = load <2 x double>, ptr %285, align 8, !tbaa !9, !alias.scope !49, !noalias !44
  %wide.load4031 = load <2 x double>, ptr %286, align 8, !tbaa !9, !alias.scope !49, !noalias !44
  %287 = fneg <2 x double> %wide.load4028
  %288 = fneg <2 x double> %wide.load4029
  %289 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %287, <2 x double> %broadcast.splat4035, <2 x double> %wide.load4030)
  %290 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %288, <2 x double> %broadcast.splat4035, <2 x double> %wide.load4031)
  store <2 x double> %289, ptr %285, align 8, !tbaa !9, !alias.scope !49, !noalias !44
  store <2 x double> %290, ptr %286, align 8, !tbaa !9, !alias.scope !49, !noalias !44
  %index.next4036 = add nuw i64 %index4026, 4
  %291 = icmp eq i64 %index.next4036, %n.vec4022
  br i1 %291, label %middle.block4017, label %vector.body4025, !llvm.loop !51

middle.block4017:                                 ; preds = %vector.body4025
  %cmp.n4037 = icmp eq i64 %266, %n.vec4022
  br i1 %cmp.n4037, label %._crit_edge3008, label %scalar.ph4018.preheader

scalar.ph4018.preheader:                          ; preds = %middle.block4017, %vector.memcheck4009, %.lr.ph3007
  %.125603005.ph = phi i64 [ %276, %vector.memcheck4009 ], [ %276, %.lr.ph3007 ], [ %ind.end4023, %middle.block4017 ]
  br label %scalar.ph4018

scalar.ph4018:                                    ; preds = %scalar.ph4018.preheader, %scalar.ph4018
  %.125603005 = phi i64 [ %299, %scalar.ph4018 ], [ %.125603005.ph, %scalar.ph4018.preheader ]
  %292 = sub nsw i64 %.125603005, %94
  %gep3003 = getelementptr double, ptr %107, i64 %292
  %293 = load double, ptr %gep3003, align 8, !tbaa !9
  %294 = load double, ptr %279, align 8, !tbaa !9
  %295 = sub nsw i64 %.125603005, %.425873014
  %gep3012 = getelementptr double, ptr %invariant.gep3011, i64 %295
  %296 = load double, ptr %gep3012, align 8, !tbaa !9
  %297 = fneg double %293
  %298 = call double @llvm.fmuladd.f64(double %297, double %294, double %296)
  store double %298, ptr %gep3012, align 8, !tbaa !9
  %299 = add nsw i64 %.125603005, 1
  %.not2694.not = icmp slt i64 %.125603005, %95
  br i1 %.not2694.not, label %scalar.ph4018, label %._crit_edge3008, !llvm.loop !52

._crit_edge3008:                                  ; preds = %scalar.ph4018, %middle.block4017, %263
  %300 = add i64 %.425873014, 1
  %exitcond3706.not = icmp eq i64 %.425873014, %98
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond3706.not, label %._crit_edge3017, label %263, !llvm.loop !53

._crit_edge3017:                                  ; preds = %._crit_edge3008
  store i64 %275, ptr %17, align 8, !tbaa !5
  store i64 %99, ptr %14, align 8, !tbaa !5
  store i64 %95, ptr %15, align 8, !tbaa !5
  br label %301

301:                                              ; preds = %._crit_edge3017, %252
  br i1 %.not, label %302, label %320

302:                                              ; preds = %301
  %303 = sub nsw i64 %.pre3742, %78
  store i64 %303, ptr %16, align 8, !tbaa !5
  %304 = fdiv double 1.000000e+00, %108
  store double %304, ptr %18, align 8, !tbaa !9
  %305 = mul nsw i64 %94, %33
  %306 = getelementptr double, ptr %83, i64 %305
  %307 = call i32 @f2c_dscal(ptr noundef nonnull %16, ptr noundef nonnull %18, ptr noundef %306, ptr noundef nonnull @c__1) #5
  %308 = load i64, ptr %24, align 8, !tbaa !5
  %309 = icmp sgt i64 %308, 0
  br i1 %309, label %310, label %320

310:                                              ; preds = %302
  %311 = load i64, ptr %2, align 8, !tbaa !5
  %312 = sub nsw i64 %311, %78
  store i64 %312, ptr %16, align 8, !tbaa !5
  %313 = sub nsw i64 %42, %308
  %314 = getelementptr double, ptr %32, i64 %313
  %315 = getelementptr double, ptr %314, i64 %102
  %316 = sub nsw i64 %94, %308
  %317 = mul nsw i64 %316, %33
  %318 = getelementptr double, ptr %83, i64 %317
  %319 = call i32 @f2c_dger(ptr noundef nonnull %16, ptr noundef nonnull %24, ptr noundef nonnull @c_b20, ptr noundef %306, ptr noundef nonnull @c__1, ptr noundef %315, ptr noundef nonnull @c__1, ptr noundef %318, ptr noundef nonnull %10) #5
  br label %320

320:                                              ; preds = %302, %310, %301
  %321 = sub nsw i64 %94, %98
  %322 = load i64, ptr %22, align 8, !tbaa !5
  %323 = mul nsw i64 %98, %27
  %324 = getelementptr double, ptr %29, i64 %321
  %325 = getelementptr double, ptr %324, i64 %322
  %326 = getelementptr double, ptr %325, i64 %323
  %327 = load double, ptr %326, align 8, !tbaa !9
  store double %327, ptr %23, align 8, !tbaa !9
  %.pre3789 = load i64, ptr %4, align 8, !tbaa !5
  br label %328

328:                                              ; preds = %105, %320
  %329 = phi i64 [ %.pre3789, %320 ], [ %93, %105 ]
  %.02909 = phi i64 [ %.0.ph, %320 ], [ 0, %105 ]
  %.not26472905 = phi i1 [ false, %320 ], [ true, %105 ]
  %.1260827722796 = phi i64 [ %94, %320 ], [ %104, %105 ]
  %.1255027752794 = phi i64 [ %95, %320 ], [ %.02549.lcssa, %105 ]
  %.1254527782792 = phi i64 [ %98, %320 ], [ %.02544.lcssa, %105 ]
  %.1254127812790 = phi i64 [ %101, %320 ], [ %.02540.lcssa, %105 ]
  %330 = add nsw i64 %329, -1
  store i64 %330, ptr %16, align 8, !tbaa !5
  %.not26793114 = icmp slt i64 %329, 2
  br i1 %.not26793114, label %._crit_edge3119, label %.lr.ph3118

.lr.ph3118:                                       ; preds = %328
  %331 = mul nsw i64 %.1260827722796, %30
  %invariant.gep3120 = getelementptr double, ptr %32, i64 %331
  %332 = add i64 %.1260827722796, 1
  br label %333

333:                                              ; preds = %.lr.ph3118, %.loopexit2875
  %.22561.neg3116 = phi i64 [ -1, %.lr.ph3118 ], [ %381, %.loopexit2875 ]
  %.225613115 = phi i64 [ 1, %.lr.ph3118 ], [ %511, %.loopexit2875 ]
  %.pre3790 = load i64, ptr %2, align 8, !tbaa !5
  %.pre3791 = load i64, ptr %3, align 8, !tbaa !5
  br i1 %.not26472905, label %376, label %334

334:                                              ; preds = %333
  %335 = sub nsw i64 %.1260827722796, %.225613115
  %336 = add nsw i64 %.pre3791, %335
  %337 = icmp slt i64 %336, %.pre3790
  %338 = icmp sgt i64 %335, 1
  %or.cond2757 = and i1 %338, %337
  br i1 %or.cond2757, label %339, label %376

339:                                              ; preds = %334
  %340 = mul nsw i64 %336, %27
  %gep3109 = getelementptr double, ptr %invariant.gep3281, i64 %.225613115
  %341 = getelementptr double, ptr %gep3109, i64 %340
  %342 = add i64 %.225613115, %78
  %343 = sub i64 %.1260827722796, %342
  %344 = getelementptr double, ptr %36, i64 %343
  %345 = getelementptr double, ptr %344, i64 %.pre3791
  %346 = getelementptr double, ptr %345, i64 %.pre3790
  %347 = sub nsw i64 %336, %78
  %348 = getelementptr inbounds double, ptr %36, i64 %347
  %349 = call i32 @dlartg_(ptr noundef %341, ptr noundef nonnull %23, ptr noundef nonnull %346, ptr noundef nonnull %348, ptr noundef nonnull %19) #5
  %350 = sub nsw i64 %42, %.225613115
  %gep3121 = getelementptr double, ptr %invariant.gep3120, i64 %350
  %351 = load double, ptr %gep3121, align 8, !tbaa !9
  %352 = fneg double %351
  %353 = load double, ptr %23, align 8, !tbaa !9
  %354 = fmul double %353, %352
  %355 = load i64, ptr %2, align 8, !tbaa !5
  %356 = load i64, ptr %3, align 8, !tbaa !5
  %357 = getelementptr double, ptr %344, i64 %355
  %358 = getelementptr double, ptr %357, i64 %356
  %359 = load double, ptr %358, align 8, !tbaa !9
  %360 = add nsw i64 %356, %335
  %361 = sub nsw i64 %360, %78
  %362 = getelementptr inbounds double, ptr %36, i64 %361
  %363 = load double, ptr %362, align 8, !tbaa !9
  %364 = mul nsw i64 %360, %27
  %gep3111 = getelementptr double, ptr %invariant.gep3281, i64 %364
  %365 = load double, ptr %gep3111, align 8, !tbaa !9
  %366 = fneg double %363
  %367 = fmul double %365, %366
  %368 = call double @llvm.fmuladd.f64(double %359, double %354, double %367)
  %369 = getelementptr inbounds double, ptr %36, i64 %335
  store double %368, ptr %369, align 8, !tbaa !9
  %370 = load double, ptr %362, align 8, !tbaa !9
  %371 = load double, ptr %358, align 8, !tbaa !9
  %372 = load double, ptr %gep3111, align 8, !tbaa !9
  %373 = fmul double %371, %372
  %374 = call double @llvm.fmuladd.f64(double %370, double %354, double %373)
  store double %374, ptr %gep3111, align 8, !tbaa !9
  %375 = load double, ptr %19, align 8, !tbaa !9
  store double %375, ptr %23, align 8, !tbaa !9
  br label %376

376:                                              ; preds = %334, %339, %333
  %377 = phi i64 [ %.pre3791, %334 ], [ %356, %339 ], [ %.pre3791, %333 ]
  %378 = phi i64 [ %.pre3790, %334 ], [ %355, %339 ], [ %.pre3790, %333 ]
  %379 = sub nsw i64 %.225613115, %.1255027752794
  %380 = add nsw i64 %379, 2
  %381 = xor i64 %.225613115, -1
  %382 = add i64 %.1260827722796, %381
  %383 = icmp slt i64 %379, 0
  %384 = select i1 %383, i64 1, i64 %380
  %385 = load i64, ptr %22, align 8, !tbaa !5
  %386 = mul nsw i64 %385, %384
  %387 = add nsw i64 %382, %386
  %388 = sub i64 %378, %387
  %389 = add nsw i64 %388, %377
  %390 = sdiv i64 %389, %385
  store i64 %390, ptr %20, align 8, !tbaa !5
  %391 = add nsw i64 %390, -1
  %392 = mul nsw i64 %391, %385
  %393 = add nsw i64 %392, %387
  br i1 %.not26472905, label %399, label %394

394:                                              ; preds = %376
  %395 = shl i64 %377, 1
  %396 = add i64 %332, %.22561.neg3116
  %397 = add i64 %396, %395
  %398 = call i64 @llvm.smax.i64(i64 %387, i64 %397)
  br label %399

399:                                              ; preds = %376, %394
  %.02534 = phi i64 [ %398, %394 ], [ %387, %376 ]
  %400 = add i64 %377, %378
  %401 = sub i64 %400, %.02534
  %402 = sdiv i64 %401, %385
  store i64 %402, ptr %25, align 8, !tbaa !5
  store i64 %393, ptr %15, align 8, !tbaa !5
  store i64 %385, ptr %17, align 8, !tbaa !5
  %403 = icmp slt i64 %385, 0
  %404 = icmp sge i64 %.02534, %393
  %405 = icmp sle i64 %.02534, %393
  %.in26893083 = select i1 %403, i1 %404, i1 %405
  br i1 %.in26893083, label %.lr.ph3086, label %._crit_edge3087

.lr.ph3086:                                       ; preds = %399
  %406 = sub i64 %378, %78
  %407 = getelementptr double, ptr %36, i64 %406
  br label %408

408:                                              ; preds = %.lr.ph3086, %408
  %.525883084 = phi i64 [ %.02534, %.lr.ph3086 ], [ %420, %408 ]
  %409 = add nsw i64 %.525883084, 1
  %410 = mul nsw i64 %409, %27
  %gep3082 = getelementptr double, ptr %invariant.gep3281, i64 %410
  %411 = load double, ptr %gep3082, align 8, !tbaa !9
  %412 = sub nsw i64 %.525883084, %78
  %413 = getelementptr inbounds double, ptr %36, i64 %412
  %414 = load double, ptr %413, align 8, !tbaa !9
  %415 = fmul double %411, %414
  store double %415, ptr %413, align 8, !tbaa !9
  %416 = getelementptr double, ptr %407, i64 %.525883084
  %417 = load double, ptr %416, align 8, !tbaa !9
  %418 = load double, ptr %gep3082, align 8, !tbaa !9
  %419 = fmul double %417, %418
  store double %419, ptr %gep3082, align 8, !tbaa !9
  %420 = add nsw i64 %.525883084, %385
  %421 = icmp sge i64 %420, %393
  %422 = icmp sle i64 %420, %393
  %.in2689 = select i1 %403, i1 %421, i1 %422
  br i1 %.in2689, label %408, label %._crit_edge3087, !llvm.loop !54

._crit_edge3087:                                  ; preds = %408, %399
  %423 = icmp sgt i64 %402, 0
  br i1 %423, label %424, label %432

424:                                              ; preds = %._crit_edge3087
  %425 = mul nsw i64 %.02534, %27
  %gep3113 = getelementptr double, ptr %invariant.gep3281, i64 %425
  %426 = sub nsw i64 %.02534, %78
  %427 = getelementptr inbounds double, ptr %36, i64 %426
  %428 = sub i64 %378, %78
  %429 = getelementptr double, ptr %36, i64 %428
  %430 = getelementptr double, ptr %429, i64 %.02534
  %431 = call i32 @dlargv_(ptr noundef nonnull %25, ptr noundef %gep3113, ptr noundef nonnull %26, ptr noundef nonnull %427, ptr noundef nonnull %22, ptr noundef nonnull %430, ptr noundef nonnull %22) #5
  %.pre3792 = load i64, ptr %20, align 8, !tbaa !5
  %.pre3795.pre = load i64, ptr %3, align 8, !tbaa !5
  br label %432

432:                                              ; preds = %424, %._crit_edge3087
  %.pre3795 = phi i64 [ %.pre3795.pre, %424 ], [ %377, %._crit_edge3087 ]
  %433 = phi i64 [ %.pre3792, %424 ], [ %390, %._crit_edge3087 ]
  %434 = icmp sgt i64 %433, 0
  br i1 %434, label %435, label %462

435:                                              ; preds = %432
  %436 = add nsw i64 %.pre3795, -1
  store i64 %436, ptr %17, align 8, !tbaa !5
  %.not26903088 = icmp slt i64 %.pre3795, 2
  %.pre3841 = mul nsw i64 %387, %27
  br i1 %.not26903088, label %.._crit_edge3092_crit_edge, label %.lr.ph3091

.._crit_edge3092_crit_edge:                       ; preds = %435
  %.pre3843 = add nsw i64 %387, 1
  %.pre3845 = mul nsw i64 %.pre3843, %27
  %.pre3847 = sub i64 %387, %78
  br label %._crit_edge3092

.lr.ph3091:                                       ; preds = %435
  %invariant.gep3093 = getelementptr double, ptr %29, i64 %.pre3841
  %437 = add nsw i64 %387, 1
  %438 = mul nsw i64 %437, %27
  %invariant.gep3095 = getelementptr double, ptr %29, i64 %438
  %439 = sub i64 %387, %78
  %440 = getelementptr double, ptr %36, i64 %439
  br label %441

441:                                              ; preds = %.lr.ph3091, %441
  %.025543089 = phi i64 [ 1, %.lr.ph3091 ], [ %449, %441 ]
  %442 = load i64, ptr %22, align 8, !tbaa !5
  %443 = sub nsw i64 %442, %.025543089
  %gep3094 = getelementptr double, ptr %invariant.gep3093, i64 %443
  %444 = load i64, ptr %3, align 8, !tbaa !5
  %445 = sub nsw i64 %444, %.025543089
  %gep3096 = getelementptr double, ptr %invariant.gep3095, i64 %445
  %446 = load i64, ptr %2, align 8, !tbaa !5
  %447 = getelementptr double, ptr %440, i64 %446
  %448 = call i32 @dlartv_(ptr noundef nonnull %20, ptr noundef %gep3094, ptr noundef nonnull %26, ptr noundef %gep3096, ptr noundef nonnull %26, ptr noundef nonnull %447, ptr noundef nonnull %440, ptr noundef nonnull %22) #5
  %449 = add nuw nsw i64 %.025543089, 1
  %450 = load i64, ptr %17, align 8, !tbaa !5
  %.not2690.not = icmp slt i64 %.025543089, %450
  br i1 %.not2690.not, label %441, label %._crit_edge3092.loopexit, !llvm.loop !55

._crit_edge3092.loopexit:                         ; preds = %441
  %.pre3793 = load i64, ptr %3, align 8, !tbaa !5
  br label %._crit_edge3092

._crit_edge3092:                                  ; preds = %.._crit_edge3092_crit_edge, %._crit_edge3092.loopexit
  %.pre-phi3848 = phi i64 [ %.pre3847, %.._crit_edge3092_crit_edge ], [ %439, %._crit_edge3092.loopexit ]
  %.pre-phi3846 = phi i64 [ %.pre3845, %.._crit_edge3092_crit_edge ], [ %438, %._crit_edge3092.loopexit ]
  %451 = phi i64 [ %.pre3795, %.._crit_edge3092_crit_edge ], [ %.pre3793, %._crit_edge3092.loopexit ]
  %452 = load i64, ptr %22, align 8, !tbaa !5
  %453 = getelementptr double, ptr %29, i64 %452
  %454 = getelementptr double, ptr %453, i64 %.pre3841
  %455 = getelementptr double, ptr %453, i64 %.pre-phi3846
  %456 = getelementptr double, ptr %29, i64 %451
  %457 = getelementptr double, ptr %456, i64 %.pre-phi3846
  %458 = load i64, ptr %2, align 8, !tbaa !5
  %459 = getelementptr double, ptr %36, i64 %.pre-phi3848
  %460 = getelementptr double, ptr %459, i64 %458
  %461 = call i32 @dlar2v_(ptr noundef nonnull %20, ptr noundef %454, ptr noundef %455, ptr noundef %457, ptr noundef nonnull %26, ptr noundef nonnull %460, ptr noundef nonnull %459, ptr noundef nonnull %22) #5
  %.pre3794 = load i64, ptr %3, align 8, !tbaa !5
  br label %462

462:                                              ; preds = %._crit_edge3092, %432
  %463 = phi i64 [ %.pre3794, %._crit_edge3092 ], [ %.pre3795, %432 ]
  %464 = load i64, ptr %4, align 8, !tbaa !5
  %465 = add nsw i64 %.22561.neg3116, 1
  %466 = add i64 %465, %464
  store i64 %466, ptr %17, align 8, !tbaa !5
  %.not2691.not3098 = icmp sgt i64 %463, %466
  br i1 %.not2691.not3098, label %.lr.ph3102, label %._crit_edge3103

.lr.ph3102:                                       ; preds = %462
  %467 = sub i64 %387, %78
  %468 = getelementptr double, ptr %36, i64 %467
  br label %469

469:                                              ; preds = %.lr.ph3102, %487
  %470 = phi i64 [ %466, %.lr.ph3102 ], [ %488, %487 ]
  %.12555.in3099 = phi i64 [ %463, %.lr.ph3102 ], [ %.125553100, %487 ]
  %.125553100 = add nsw i64 %.12555.in3099, -1
  %471 = load i64, ptr %2, align 8, !tbaa !5
  %472 = sub i64 %.125553100, %387
  %473 = add i64 %472, %471
  %474 = load i64, ptr %22, align 8, !tbaa !5
  %475 = sdiv i64 %473, %474
  store i64 %475, ptr %25, align 8, !tbaa !5
  %476 = icmp sgt i64 %475, 0
  br i1 %476, label %477, label %487

477:                                              ; preds = %469
  %reass.sub3682 = sub i64 %387, %.12555.in3099
  %478 = add i64 %reass.sub3682, 1
  %479 = add i64 %478, %474
  %480 = mul nsw i64 %479, %27
  %481 = getelementptr double, ptr %29, i64 %.125553100
  %482 = getelementptr double, ptr %481, i64 %480
  %483 = getelementptr double, ptr %29, i64 %.12555.in3099
  %484 = getelementptr double, ptr %483, i64 %480
  %485 = getelementptr double, ptr %468, i64 %471
  %486 = call i32 @dlartv_(ptr noundef nonnull %25, ptr noundef %482, ptr noundef nonnull %26, ptr noundef %484, ptr noundef nonnull %26, ptr noundef nonnull %485, ptr noundef nonnull %468, ptr noundef nonnull %22) #5
  %.pre3796 = load i64, ptr %17, align 8, !tbaa !5
  br label %487

487:                                              ; preds = %469, %477
  %488 = phi i64 [ %470, %469 ], [ %.pre3796, %477 ]
  %.not2691.not = icmp sgt i64 %.125553100, %488
  br i1 %.not2691.not, label %469, label %._crit_edge3103, !llvm.loop !56

._crit_edge3103:                                  ; preds = %487, %462
  br i1 %.not, label %489, label %.loopexit2875

489:                                              ; preds = %._crit_edge3103
  store i64 %393, ptr %17, align 8, !tbaa !5
  %490 = load i64, ptr %22, align 8, !tbaa !5
  store i64 %490, ptr %15, align 8, !tbaa !5
  %491 = icmp slt i64 %490, 0
  %492 = icmp slt i64 %392, 1
  %493 = icmp sgt i64 %392, -1
  %.in26923104 = select i1 %491, i1 %492, i1 %493
  br i1 %.in26923104, label %.lr.ph3107, label %.loopexit2875

.lr.ph3107:                                       ; preds = %489, %.lr.ph3107
  %.625893105 = phi i64 [ %506, %.lr.ph3107 ], [ %387, %489 ]
  %494 = load i64, ptr %2, align 8, !tbaa !5
  %495 = sub nsw i64 %494, %78
  store i64 %495, ptr %14, align 8, !tbaa !5
  %496 = mul nsw i64 %.625893105, %33
  %497 = getelementptr double, ptr %83, i64 %496
  %498 = add nsw i64 %.625893105, 1
  %499 = mul nsw i64 %498, %33
  %500 = getelementptr double, ptr %83, i64 %499
  %501 = sub i64 %.625893105, %78
  %502 = getelementptr double, ptr %36, i64 %501
  %503 = getelementptr double, ptr %502, i64 %494
  %504 = call i32 @f2c_drot(ptr noundef nonnull %14, ptr noundef %497, ptr noundef nonnull @c__1, ptr noundef %500, ptr noundef nonnull @c__1, ptr noundef nonnull %503, ptr noundef nonnull %502) #5
  %505 = load i64, ptr %15, align 8, !tbaa !5
  %506 = add nsw i64 %505, %.625893105
  %507 = icmp slt i64 %505, 0
  %508 = load i64, ptr %17, align 8
  %509 = icmp sge i64 %506, %508
  %510 = icmp sle i64 %506, %508
  %.in2692 = select i1 %507, i1 %509, i1 %510
  br i1 %.in2692, label %.lr.ph3107, label %.loopexit2875, !llvm.loop !57

.loopexit2875:                                    ; preds = %.lr.ph3107, %489, %._crit_edge3103
  %511 = add nuw nsw i64 %.225613115, 1
  %512 = load i64, ptr %16, align 8, !tbaa !5
  %.not2679.not = icmp slt i64 %.225613115, %512
  br i1 %.not2679.not, label %333, label %._crit_edge3119, !llvm.loop !58

._crit_edge3119:                                  ; preds = %.loopexit2875, %328
  br i1 %.not26472905, label %529, label %513

513:                                              ; preds = %._crit_edge3119
  %514 = load i64, ptr %2, align 8, !tbaa !5
  %515 = icmp sle i64 %.1254127812790, %514
  %516 = load i64, ptr %24, align 8
  %517 = icmp sgt i64 %516, 0
  %or.cond = select i1 %515, i1 %517, i1 false
  br i1 %or.cond, label %518, label %529

518:                                              ; preds = %513
  %519 = sub nsw i64 %42, %516
  %520 = mul nsw i64 %.1260827722796, %30
  %521 = getelementptr double, ptr %32, i64 %519
  %522 = getelementptr double, ptr %521, i64 %520
  %523 = load double, ptr %522, align 8, !tbaa !9
  %524 = fneg double %523
  %525 = load double, ptr %23, align 8, !tbaa !9
  %526 = fmul double %525, %524
  %527 = sub nsw i64 %.1260827722796, %516
  %528 = getelementptr inbounds double, ptr %36, i64 %527
  store double %526, ptr %528, align 8, !tbaa !9
  br label %529

529:                                              ; preds = %513, %518, %._crit_edge3119
  %530 = load i64, ptr %4, align 8, !tbaa !5
  %531 = icmp sgt i64 %530, 0
  br i1 %531, label %.lr.ph3140.preheader, label %._crit_edge3171.thread

.lr.ph3140.preheader:                             ; preds = %529
  %. = select i1 %.not26472905, i64 1, i64 2
  br label %.lr.ph3140

.lr.ph3140:                                       ; preds = %.lr.ph3140.preheader, %619
  %.325623138 = phi i64 [ %620, %619 ], [ %530, %.lr.ph3140.preheader ]
  %532 = sub nsw i64 %.325623138, %.1255027752794
  %533 = add nsw i64 %532, 1
  %534 = xor i64 %.325623138, -1
  %535 = add i64 %.1260827722796, %534
  %536 = load i64, ptr %22, align 8, !tbaa !5
  %537 = icmp slt i64 %532, %.
  %538 = select i1 %537, i64 %., i64 %533
  %539 = mul nsw i64 %536, %538
  %540 = add nsw i64 %535, %539
  store i64 %., ptr %16, align 8
  store i64 %533, ptr %15, align 8
  %541 = load i64, ptr %4, align 8, !tbaa !5
  %542 = sub nsw i64 %541, %.325623138
  %543 = icmp sgt i64 %542, 0
  br i1 %543, label %.lr.ph3124, label %._crit_edge3125

.lr.ph3124:                                       ; preds = %.lr.ph3140
  %544 = add i64 %540, 1
  br label %545

545:                                              ; preds = %.lr.ph3124, %567
  %.225563122 = phi i64 [ %542, %.lr.ph3124 ], [ %568, %567 ]
  %546 = load i64, ptr %2, align 8, !tbaa !5
  %547 = load i64, ptr %3, align 8, !tbaa !5
  %548 = sub i64 %.225563122, %540
  %549 = add i64 %548, %546
  %550 = add i64 %549, %547
  %551 = load i64, ptr %22, align 8, !tbaa !5
  %552 = sdiv i64 %550, %551
  store i64 %552, ptr %25, align 8, !tbaa !5
  %553 = icmp sgt i64 %552, 0
  br i1 %553, label %554, label %567

554:                                              ; preds = %545
  %555 = sub i64 %544, %.225563122
  %556 = mul nsw i64 %555, %27
  %557 = getelementptr double, ptr %29, i64 %.225563122
  %558 = getelementptr double, ptr %557, i64 %556
  %559 = getelementptr i8, ptr %557, i64 8
  %560 = getelementptr double, ptr %559, i64 %556
  %561 = add nsw i64 %546, %540
  %562 = sub i64 %561, %547
  %563 = getelementptr inbounds double, ptr %36, i64 %562
  %564 = sub nsw i64 %540, %547
  %565 = getelementptr inbounds double, ptr %36, i64 %564
  %566 = call i32 @dlartv_(ptr noundef nonnull %25, ptr noundef %558, ptr noundef nonnull %26, ptr noundef %560, ptr noundef nonnull %26, ptr noundef nonnull %563, ptr noundef nonnull %565, ptr noundef nonnull %22) #5
  br label %567

567:                                              ; preds = %545, %554
  %568 = add nsw i64 %.225563122, -1
  %569 = icmp sgt i64 %.225563122, 1
  br i1 %569, label %545, label %._crit_edge3125.loopexit, !llvm.loop !59

._crit_edge3125.loopexit:                         ; preds = %567
  %.pre3797 = load i64, ptr %22, align 8, !tbaa !5
  br label %._crit_edge3125

._crit_edge3125:                                  ; preds = %._crit_edge3125.loopexit, %.lr.ph3140
  %570 = phi i64 [ %.pre3797, %._crit_edge3125.loopexit ], [ %536, %.lr.ph3140 ]
  %571 = load i64, ptr %2, align 8, !tbaa !5
  %572 = sub i64 %571, %540
  %573 = load i64, ptr %3, align 8, !tbaa !5
  %574 = add nsw i64 %572, %573
  %575 = sdiv i64 %574, %570
  store i64 %575, ptr %20, align 8, !tbaa !5
  %576 = add nsw i64 %575, -1
  %577 = mul nsw i64 %576, %570
  %578 = add nsw i64 %577, %540
  %579 = icmp sgt i64 %570, 0
  %580 = icmp sgt i64 %577, -1
  %581 = icmp slt i64 %577, 1
  %.in26853126 = select i1 %579, i1 %580, i1 %581
  br i1 %.in26853126, label %.lr.ph3129, label %._crit_edge3130

.lr.ph3129:                                       ; preds = %._crit_edge3125, %.lr.ph3129
  %.725903127 = phi i64 [ %591, %.lr.ph3129 ], [ %578, %._crit_edge3125 ]
  %582 = sub nsw i64 %.725903127, %573
  %583 = getelementptr inbounds double, ptr %36, i64 %582
  %584 = load double, ptr %583, align 8, !tbaa !9
  %585 = getelementptr inbounds double, ptr %36, i64 %.725903127
  store double %584, ptr %585, align 8, !tbaa !9
  %586 = add nsw i64 %.725903127, %571
  %587 = sub nsw i64 %586, %573
  %588 = getelementptr inbounds double, ptr %36, i64 %587
  %589 = load double, ptr %588, align 8, !tbaa !9
  %590 = getelementptr inbounds double, ptr %36, i64 %586
  store double %589, ptr %590, align 8, !tbaa !9
  %591 = sub i64 %.725903127, %570
  %592 = icmp sge i64 %591, %540
  %593 = icmp sle i64 %591, %540
  %.in2685 = select i1 %579, i1 %592, i1 %593
  br i1 %.in2685, label %.lr.ph3129, label %._crit_edge3130, !llvm.loop !60

._crit_edge3130:                                  ; preds = %.lr.ph3129, %._crit_edge3125
  store i64 %578, ptr %15, align 8, !tbaa !5
  store i64 %570, ptr %16, align 8, !tbaa !5
  %594 = icmp slt i64 %570, 0
  %.in26863133 = select i1 %594, i1 %581, i1 %580
  br i1 %.in26863133, label %.lr.ph3136, label %._crit_edge3137

.lr.ph3136:                                       ; preds = %._crit_edge3130
  %595 = getelementptr double, ptr %36, i64 %571
  br label %596

596:                                              ; preds = %.lr.ph3136, %596
  %.825913134 = phi i64 [ %540, %.lr.ph3136 ], [ %607, %596 ]
  %597 = add nsw i64 %.825913134, 1
  %598 = mul nsw i64 %597, %27
  %gep3132 = getelementptr double, ptr %invariant.gep3281, i64 %598
  %599 = load double, ptr %gep3132, align 8, !tbaa !9
  %600 = getelementptr inbounds double, ptr %36, i64 %.825913134
  %601 = load double, ptr %600, align 8, !tbaa !9
  %602 = fmul double %599, %601
  store double %602, ptr %600, align 8, !tbaa !9
  %603 = getelementptr double, ptr %595, i64 %.825913134
  %604 = load double, ptr %603, align 8, !tbaa !9
  %605 = load double, ptr %gep3132, align 8, !tbaa !9
  %606 = fmul double %604, %605
  store double %606, ptr %gep3132, align 8, !tbaa !9
  %607 = add nsw i64 %.825913134, %570
  %608 = icmp sge i64 %607, %578
  %609 = icmp sle i64 %607, %578
  %.in2686 = select i1 %594, i1 %608, i1 %609
  br i1 %.in2686, label %596, label %._crit_edge3137, !llvm.loop !61

._crit_edge3137:                                  ; preds = %596, %._crit_edge3130
  br i1 %.not26472905, label %619, label %610

610:                                              ; preds = %._crit_edge3137
  %611 = sub nsw i64 %.1260827722796, %.325623138
  %612 = sub nsw i64 %571, %573
  %613 = icmp sge i64 %611, %612
  %614 = load i64, ptr %24, align 8
  %.not2687 = icmp sgt i64 %.325623138, %614
  %or.cond2758 = select i1 %613, i1 true, i1 %.not2687
  br i1 %or.cond2758, label %619, label %615

615:                                              ; preds = %610
  %616 = getelementptr inbounds double, ptr %36, i64 %611
  %617 = load double, ptr %616, align 8, !tbaa !9
  %618 = getelementptr double, ptr %616, i64 %573
  store double %617, ptr %618, align 8, !tbaa !9
  br label %619

619:                                              ; preds = %._crit_edge3137, %615, %610
  %620 = add nsw i64 %.325623138, -1
  %621 = icmp sgt i64 %.325623138, 1
  br i1 %621, label %.lr.ph3140, label %._crit_edge3141, !llvm.loop !62

._crit_edge3141:                                  ; preds = %619
  %.pre3798 = load i64, ptr %4, align 8, !tbaa !5
  %622 = icmp sgt i64 %.pre3798, 0
  br i1 %622, label %.lr.ph3170, label %._crit_edge3171.thread

.lr.ph3170:                                       ; preds = %._crit_edge3141, %.loopexit2874
  %.425633168 = phi i64 [ %713, %.loopexit2874 ], [ %.pre3798, %._crit_edge3141 ]
  store i64 1, ptr %16, align 8, !tbaa !5
  %623 = sub nsw i64 %.425633168, %.1255027752794
  %624 = add nsw i64 %623, 1
  store i64 %624, ptr %15, align 8, !tbaa !5
  %625 = xor i64 %.425633168, -1
  %626 = add i64 %.1260827722796, %625
  %627 = icmp slt i64 %623, 1
  %628 = select i1 %627, i64 1, i64 %624
  %629 = load i64, ptr %22, align 8, !tbaa !5
  %630 = mul nsw i64 %629, %628
  %631 = add nsw i64 %626, %630
  %632 = load i64, ptr %2, align 8, !tbaa !5
  %633 = sub i64 %632, %631
  %634 = load i64, ptr %3, align 8, !tbaa !5
  %635 = add nsw i64 %633, %634
  %636 = sdiv i64 %635, %629
  store i64 %636, ptr %20, align 8, !tbaa !5
  %637 = add nsw i64 %636, -1
  %638 = mul nsw i64 %637, %629
  %639 = add nsw i64 %638, %631
  %640 = icmp sgt i64 %636, 0
  br i1 %640, label %641, label %669

641:                                              ; preds = %.lr.ph3170
  %642 = mul nsw i64 %631, %27
  %gep3167 = getelementptr double, ptr %invariant.gep3281, i64 %642
  %643 = getelementptr double, ptr %36, i64 %631
  %644 = getelementptr double, ptr %36, i64 %632
  %645 = getelementptr double, ptr %644, i64 %631
  %646 = call i32 @dlargv_(ptr noundef nonnull %20, ptr noundef %gep3167, ptr noundef nonnull %26, ptr noundef nonnull %643, ptr noundef nonnull %22, ptr noundef %645, ptr noundef nonnull %22) #5
  %647 = load i64, ptr %3, align 8, !tbaa !5
  %648 = add nsw i64 %647, -1
  store i64 %648, ptr %16, align 8, !tbaa !5
  %invariant.gep3142 = getelementptr double, ptr %29, i64 %642
  %.not26823146 = icmp slt i64 %647, 2
  %.pre3837 = add nsw i64 %631, 1
  %.pre3839 = mul nsw i64 %.pre3837, %27
  br i1 %.not26823146, label %._crit_edge3150, label %.lr.ph3149

.lr.ph3149:                                       ; preds = %641
  %invariant.gep3151 = getelementptr double, ptr %29, i64 %.pre3839
  br label %649

649:                                              ; preds = %.lr.ph3149, %649
  %.325573147 = phi i64 [ 1, %.lr.ph3149 ], [ %656, %649 ]
  %650 = load i64, ptr %22, align 8, !tbaa !5
  %651 = sub nsw i64 %650, %.325573147
  %gep3143 = getelementptr double, ptr %invariant.gep3142, i64 %651
  %652 = load i64, ptr %3, align 8, !tbaa !5
  %653 = sub nsw i64 %652, %.325573147
  %gep3152 = getelementptr double, ptr %invariant.gep3151, i64 %653
  %654 = load i64, ptr %2, align 8, !tbaa !5
  %gep3145 = getelementptr double, ptr %643, i64 %654
  %655 = call i32 @dlartv_(ptr noundef nonnull %20, ptr noundef %gep3143, ptr noundef nonnull %26, ptr noundef %gep3152, ptr noundef nonnull %26, ptr noundef %gep3145, ptr noundef nonnull %643, ptr noundef nonnull %22) #5
  %656 = add nuw nsw i64 %.325573147, 1
  %657 = load i64, ptr %16, align 8, !tbaa !5
  %.not2682.not = icmp slt i64 %.325573147, %657
  br i1 %.not2682.not, label %649, label %._crit_edge3150.loopexit, !llvm.loop !63

._crit_edge3150.loopexit:                         ; preds = %649
  %.pre3799 = load i64, ptr %3, align 8, !tbaa !5
  br label %._crit_edge3150

._crit_edge3150:                                  ; preds = %641, %._crit_edge3150.loopexit
  %658 = phi i64 [ %.pre3799, %._crit_edge3150.loopexit ], [ %647, %641 ]
  %659 = load i64, ptr %22, align 8, !tbaa !5
  %660 = getelementptr double, ptr %29, i64 %659
  %661 = getelementptr double, ptr %660, i64 %642
  %662 = getelementptr double, ptr %660, i64 %.pre3839
  %663 = getelementptr double, ptr %29, i64 %658
  %664 = getelementptr double, ptr %663, i64 %.pre3839
  %665 = load i64, ptr %2, align 8, !tbaa !5
  %666 = getelementptr double, ptr %36, i64 %665
  %667 = getelementptr double, ptr %666, i64 %631
  %668 = call i32 @dlar2v_(ptr noundef nonnull %20, ptr noundef %661, ptr noundef %662, ptr noundef %664, ptr noundef nonnull %26, ptr noundef %667, ptr noundef nonnull %643, ptr noundef nonnull %22) #5
  %.pre3800 = load i64, ptr %3, align 8, !tbaa !5
  br label %669

669:                                              ; preds = %._crit_edge3150, %.lr.ph3170
  %670 = phi i64 [ %.pre3800, %._crit_edge3150 ], [ %634, %.lr.ph3170 ]
  %671 = load i64, ptr %4, align 8, !tbaa !5
  %reass.sub3683 = sub i64 %671, %.425633168
  %672 = add i64 %reass.sub3683, 1
  store i64 %672, ptr %16, align 8, !tbaa !5
  %invariant.gep3153 = getelementptr double, ptr %36, i64 %631
  %.not2683.not3156 = icmp sgt i64 %670, %672
  br i1 %.not2683.not3156, label %.lr.ph3160, label %._crit_edge3161

.lr.ph3160:                                       ; preds = %669, %689
  %673 = phi i64 [ %690, %689 ], [ %672, %669 ]
  %.42558.in3157 = phi i64 [ %.425583158, %689 ], [ %670, %669 ]
  %.425583158 = add nsw i64 %.42558.in3157, -1
  %674 = load i64, ptr %2, align 8, !tbaa !5
  %675 = sub i64 %.425583158, %631
  %676 = add i64 %675, %674
  %677 = load i64, ptr %22, align 8, !tbaa !5
  %678 = sdiv i64 %676, %677
  store i64 %678, ptr %25, align 8, !tbaa !5
  %679 = icmp sgt i64 %678, 0
  br i1 %679, label %680, label %689

680:                                              ; preds = %.lr.ph3160
  %reass.sub3684 = sub i64 %631, %.42558.in3157
  %681 = add i64 %reass.sub3684, 1
  %682 = add i64 %681, %677
  %683 = mul nsw i64 %682, %27
  %684 = getelementptr double, ptr %29, i64 %.425583158
  %685 = getelementptr double, ptr %684, i64 %683
  %686 = getelementptr double, ptr %29, i64 %.42558.in3157
  %687 = getelementptr double, ptr %686, i64 %683
  %gep3154 = getelementptr double, ptr %invariant.gep3153, i64 %674
  %688 = call i32 @dlartv_(ptr noundef nonnull %25, ptr noundef %685, ptr noundef nonnull %26, ptr noundef %687, ptr noundef nonnull %26, ptr noundef %gep3154, ptr noundef nonnull %invariant.gep3153, ptr noundef nonnull %22) #5
  %.pre3801 = load i64, ptr %16, align 8, !tbaa !5
  br label %689

689:                                              ; preds = %.lr.ph3160, %680
  %690 = phi i64 [ %673, %.lr.ph3160 ], [ %.pre3801, %680 ]
  %.not2683.not = icmp sgt i64 %.425583158, %690
  br i1 %.not2683.not, label %.lr.ph3160, label %._crit_edge3161, !llvm.loop !64

._crit_edge3161:                                  ; preds = %689, %669
  br i1 %.not, label %691, label %.loopexit2874

691:                                              ; preds = %._crit_edge3161
  store i64 %639, ptr %16, align 8, !tbaa !5
  %692 = load i64, ptr %22, align 8, !tbaa !5
  store i64 %692, ptr %15, align 8, !tbaa !5
  %693 = icmp slt i64 %692, 0
  %694 = icmp slt i64 %638, 1
  %695 = icmp sgt i64 %638, -1
  %.in26843162 = select i1 %693, i1 %694, i1 %695
  br i1 %.in26843162, label %.lr.ph3165, label %.loopexit2874

.lr.ph3165:                                       ; preds = %691, %.lr.ph3165
  %.925923163 = phi i64 [ %708, %.lr.ph3165 ], [ %631, %691 ]
  %696 = load i64, ptr %2, align 8, !tbaa !5
  %697 = sub nsw i64 %696, %78
  store i64 %697, ptr %17, align 8, !tbaa !5
  %698 = mul nsw i64 %.925923163, %33
  %699 = getelementptr double, ptr %83, i64 %698
  %700 = add nsw i64 %.925923163, 1
  %701 = mul nsw i64 %700, %33
  %702 = getelementptr double, ptr %83, i64 %701
  %703 = getelementptr double, ptr %36, i64 %696
  %704 = getelementptr double, ptr %703, i64 %.925923163
  %705 = getelementptr inbounds double, ptr %36, i64 %.925923163
  %706 = call i32 @f2c_drot(ptr noundef nonnull %17, ptr noundef %699, ptr noundef nonnull @c__1, ptr noundef %702, ptr noundef nonnull @c__1, ptr noundef %704, ptr noundef nonnull %705) #5
  %707 = load i64, ptr %15, align 8, !tbaa !5
  %708 = add nsw i64 %707, %.925923163
  %709 = icmp slt i64 %707, 0
  %710 = load i64, ptr %16, align 8
  %711 = icmp sge i64 %708, %710
  %712 = icmp sle i64 %708, %710
  %.in2684 = select i1 %709, i1 %711, i1 %712
  br i1 %.in2684, label %.lr.ph3165, label %.loopexit2874, !llvm.loop !65

.loopexit2874:                                    ; preds = %.lr.ph3165, %691, %._crit_edge3161
  %713 = add nsw i64 %.425633168, -1
  %714 = icmp sgt i64 %.425633168, 1
  br i1 %714, label %.lr.ph3170, label %._crit_edge3171, !llvm.loop !66

._crit_edge3171.thread:                           ; preds = %._crit_edge3141, %529
  %.ph = phi i64 [ %.pre3798, %._crit_edge3141 ], [ %530, %529 ]
  %715 = add nsw i64 %.ph, -1
  store i64 %715, ptr %15, align 8, !tbaa !5
  br label %.loopexit2876

._crit_edge3171:                                  ; preds = %.loopexit2874
  %.pre3802 = load i64, ptr %4, align 8, !tbaa !5
  %716 = add nsw i64 %.pre3802, -1
  store i64 %716, ptr %15, align 8, !tbaa !5
  %.not26803176 = icmp slt i64 %.pre3802, 2
  br i1 %.not26803176, label %.loopexit2876, label %.lr.ph3179

.lr.ph3179:                                       ; preds = %._crit_edge3171, %._crit_edge3175
  %717 = phi i64 [ %752, %._crit_edge3175 ], [ %716, %._crit_edge3171 ]
  %.525643177 = phi i64 [ %753, %._crit_edge3175 ], [ 1, %._crit_edge3171 ]
  store i64 1, ptr %16, align 8, !tbaa !5
  %718 = sub nsw i64 %.525643177, %.1255027752794
  %719 = add nsw i64 %718, 2
  store i64 %719, ptr %17, align 8, !tbaa !5
  %720 = xor i64 %.525643177, -1
  %721 = add i64 %.1260827722796, %720
  %722 = icmp slt i64 %718, 0
  %723 = select i1 %722, i64 1, i64 %719
  %724 = load i64, ptr %22, align 8, !tbaa !5
  %725 = mul nsw i64 %724, %723
  %726 = add nsw i64 %721, %725
  %727 = load i64, ptr %4, align 8, !tbaa !5
  %728 = sub nsw i64 %727, %.525643177
  %729 = icmp sgt i64 %728, 0
  br i1 %729, label %.lr.ph3174, label %._crit_edge3175

.lr.ph3174:                                       ; preds = %.lr.ph3179
  %730 = sub i64 %726, %78
  %731 = getelementptr double, ptr %36, i64 %730
  br label %732

732:                                              ; preds = %.lr.ph3174, %749
  %.53172 = phi i64 [ %728, %.lr.ph3174 ], [ %750, %749 ]
  %733 = load i64, ptr %2, align 8, !tbaa !5
  %734 = sub i64 %.53172, %726
  %735 = add i64 %734, %733
  %736 = load i64, ptr %22, align 8, !tbaa !5
  %737 = sdiv i64 %735, %736
  store i64 %737, ptr %25, align 8, !tbaa !5
  %738 = icmp sgt i64 %737, 0
  br i1 %738, label %739, label %749

739:                                              ; preds = %732
  %740 = sub i64 %726, %.53172
  %741 = add i64 %740, %736
  %742 = mul nsw i64 %741, %27
  %743 = getelementptr double, ptr %29, i64 %.53172
  %744 = getelementptr double, ptr %743, i64 %742
  %745 = getelementptr i8, ptr %743, i64 8
  %746 = getelementptr double, ptr %745, i64 %742
  %747 = getelementptr double, ptr %731, i64 %733
  %748 = call i32 @dlartv_(ptr noundef nonnull %25, ptr noundef %744, ptr noundef nonnull %26, ptr noundef %746, ptr noundef nonnull %26, ptr noundef nonnull %747, ptr noundef nonnull %731, ptr noundef nonnull %22) #5
  br label %749

749:                                              ; preds = %732, %739
  %750 = add nsw i64 %.53172, -1
  %751 = icmp sgt i64 %.53172, 1
  br i1 %751, label %732, label %._crit_edge3175.loopexit, !llvm.loop !67

._crit_edge3175.loopexit:                         ; preds = %749
  %.pre3803 = load i64, ptr %15, align 8, !tbaa !5
  br label %._crit_edge3175

._crit_edge3175:                                  ; preds = %._crit_edge3175.loopexit, %.lr.ph3179
  %752 = phi i64 [ %.pre3803, %._crit_edge3175.loopexit ], [ %717, %.lr.ph3179 ]
  %753 = add nuw nsw i64 %.525643177, 1
  %.not2680.not = icmp slt i64 %.525643177, %752
  br i1 %.not2680.not, label %.lr.ph3179, label %._crit_edge3180, !llvm.loop !68

._crit_edge3180:                                  ; preds = %._crit_edge3175
  %.pre3804 = load i64, ptr %4, align 8, !tbaa !5
  %754 = icmp sgt i64 %.pre3804, 1
  br i1 %754, label %755, label %.loopexit2876

755:                                              ; preds = %._crit_edge3180
  %756 = load i64, ptr %3, align 8, !tbaa !5
  %757 = shl i64 %756, 1
  %758 = add i64 %.1260827722796, 1
  %759 = sub i64 %758, %.pre3804
  %760 = add i64 %759, %757
  store i64 %760, ptr %15, align 8, !tbaa !5
  %761 = load i64, ptr %2, align 8, !tbaa !5
  %.not2681.not3181 = icmp sgt i64 %761, %760
  br i1 %.not2681.not3181, label %.lr.ph3184, label %.loopexit2876

.lr.ph3184:                                       ; preds = %755
  %762 = add i64 %756, %78
  %763 = add nsw i64 %.pre3804, -1
  %764 = add i64 %763, %761
  %765 = add i64 %.1260827722796, %757
  %766 = sub i64 %764, %765
  %min.iters.check3978 = icmp ult i64 %766, 36
  br i1 %min.iters.check3978, label %scalar.ph3977.preheader, label %vector.scevcheck3947

vector.scevcheck3947:                             ; preds = %.lr.ph3184
  %767 = add nsw i64 %.pre3804, -2
  %768 = add i64 %767, %761
  %769 = add i64 %.1260827722796, %757
  %770 = sub i64 %768, %769
  %771 = shl i64 %761, 4
  %scevgep3949 = getelementptr i8, ptr %scevgep3948, i64 %771
  %mul.result3951.neg = mul i64 %770, -8
  %772 = getelementptr i8, ptr %scevgep3949, i64 %mul.result3951.neg
  %773 = icmp ugt ptr %772, %scevgep3949
  %774 = shl i64 %761, 3
  %scevgep3954 = getelementptr i8, ptr %scevgep3953, i64 %774
  %mul.result3956.neg = mul i64 %770, -8
  %mul.overflow3957 = icmp ugt i64 %770, 2305843009213693951
  %775 = getelementptr i8, ptr %scevgep3954, i64 %mul.result3956.neg
  %776 = icmp ugt ptr %775, %scevgep3954
  %777 = or i1 %776, %mul.overflow3957
  %778 = shl i64 %762, 3
  %779 = sub i64 %771, %778
  %scevgep3959 = getelementptr i8, ptr %scevgep3958, i64 %779
  %mul.result3961.neg = mul i64 %770, -8
  %780 = getelementptr i8, ptr %scevgep3959, i64 %mul.result3961.neg
  %781 = icmp ugt ptr %780, %scevgep3959
  %782 = sub i64 %774, %778
  %scevgep3964 = getelementptr i8, ptr %scevgep3963, i64 %782
  %mul.result3966.neg = mul i64 %770, -8
  %783 = getelementptr i8, ptr %scevgep3964, i64 %mul.result3966.neg
  %784 = icmp ugt ptr %783, %scevgep3964
  %785 = or i1 %773, %777
  %786 = or i1 %781, %785
  %787 = or i1 %784, %786
  br i1 %787, label %scalar.ph3977.preheader, label %vector.memcheck3968

vector.memcheck3968:                              ; preds = %vector.scevcheck3947
  %788 = and i64 %761, 2305843009213693950
  %diff.check3969 = icmp eq i64 %788, 0
  %789 = mul i64 %756, -8
  %diff.check3970 = icmp ult i64 %789, 16
  %conflict.rdx3971 = or i1 %diff.check3969, %diff.check3970
  %790 = add i64 %756, %761
  %791 = and i64 %790, 2305843009213693950
  %diff.check3972 = icmp eq i64 %791, 0
  %conflict.rdx3973 = or i1 %conflict.rdx3971, %diff.check3972
  %792 = sub i64 %761, %756
  %793 = and i64 %792, 2305843009213693950
  %diff.check3974 = icmp eq i64 %793, 0
  %conflict.rdx3975 = or i1 %conflict.rdx3973, %diff.check3974
  br i1 %conflict.rdx3975, label %scalar.ph3977.preheader, label %vector.ph3979

vector.ph3979:                                    ; preds = %vector.memcheck3968
  %n.vec3981 = and i64 %766, -2
  %ind.end3982 = sub i64 %761, %n.vec3981
  br label %vector.body3984

vector.body3984:                                  ; preds = %vector.body3984, %vector.ph3979
  %index3985 = phi i64 [ 0, %vector.ph3979 ], [ %index.next3993, %vector.body3984 ]
  %794 = xor i64 %index3985, -1
  %795 = add i64 %761, %794
  %796 = add nsw i64 %795, %761
  %797 = sub i64 %796, %762
  %gep4403 = getelementptr double, ptr %invariant.gep4402, i64 %797
  %wide.load3987 = load <2 x double>, ptr %gep4403, align 8, !tbaa !9
  %798 = sub nsw i64 %796, %78
  %gep4405 = getelementptr double, ptr %invariant.gep4404, i64 %798
  store <2 x double> %wide.load3987, ptr %gep4405, align 8, !tbaa !9
  %799 = sub i64 %795, %762
  %gep4407 = getelementptr double, ptr %invariant.gep4406, i64 %799
  %wide.load3990 = load <2 x double>, ptr %gep4407, align 8, !tbaa !9
  %800 = sub nsw i64 %795, %78
  %gep4409 = getelementptr double, ptr %invariant.gep4408, i64 %800
  store <2 x double> %wide.load3990, ptr %gep4409, align 8, !tbaa !9
  %index.next3993 = add nuw i64 %index3985, 2
  %801 = icmp eq i64 %index.next3993, %n.vec3981
  br i1 %801, label %middle.block3976, label %vector.body3984, !llvm.loop !69

middle.block3976:                                 ; preds = %vector.body3984
  %cmp.n3994 = icmp eq i64 %766, %n.vec3981
  br i1 %cmp.n3994, label %.loopexit2876, label %scalar.ph3977.preheader

scalar.ph3977.preheader:                          ; preds = %middle.block3976, %vector.memcheck3968, %vector.scevcheck3947, %.lr.ph3184
  %.102593.in3182.ph = phi i64 [ %761, %vector.memcheck3968 ], [ %761, %vector.scevcheck3947 ], [ %761, %.lr.ph3184 ], [ %ind.end3982, %middle.block3976 ]
  br label %scalar.ph3977

scalar.ph3977:                                    ; preds = %scalar.ph3977.preheader, %scalar.ph3977
  %.102593.in3182 = phi i64 [ %.102593, %scalar.ph3977 ], [ %.102593.in3182.ph, %scalar.ph3977.preheader ]
  %.102593 = add nsw i64 %.102593.in3182, -1
  %802 = add nsw i64 %.102593, %761
  %803 = sub i64 %802, %762
  %804 = getelementptr inbounds double, ptr %36, i64 %803
  %805 = load double, ptr %804, align 8, !tbaa !9
  %806 = sub nsw i64 %802, %78
  %807 = getelementptr inbounds double, ptr %36, i64 %806
  store double %805, ptr %807, align 8, !tbaa !9
  %808 = sub i64 %.102593, %762
  %809 = getelementptr inbounds double, ptr %36, i64 %808
  %810 = load double, ptr %809, align 8, !tbaa !9
  %811 = sub nsw i64 %.102593, %78
  %812 = getelementptr inbounds double, ptr %36, i64 %811
  store double %810, ptr %812, align 8, !tbaa !9
  %.not2681.not = icmp sgt i64 %.102593, %760
  br i1 %.not2681.not, label %scalar.ph3977, label %.loopexit2876, !llvm.loop !70

813:                                              ; preds = %.lr.ph.split.us
  %gep3278 = getelementptr double, ptr %invariant.gep3277, i64 %102
  %814 = load double, ptr %gep3278, align 8, !tbaa !9
  br i1 %.not26533023, label %._crit_edge3027, label %.lr.ph3026

.lr.ph3026:                                       ; preds = %813
  %815 = mul nsw i64 %94, %27
  %invariant.gep3028 = getelementptr double, ptr %invariant.gep3281, i64 %815
  %816 = add i64 %98, 2
  %817 = sub i64 %816, %.02607.ph
  %min.iters.check3997 = icmp ult i64 %817, 2
  br i1 %min.iters.check3997, label %scalar.ph3996.preheader, label %vector.ph3998

vector.ph3998:                                    ; preds = %.lr.ph3026
  %n.vec4000 = and i64 %817, -2
  %ind.end4001 = add i64 %94, %n.vec4000
  %broadcast.splatinsert = insertelement <2 x double> poison, double %814, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body4003

vector.body4003:                                  ; preds = %vector.body4003, %vector.ph3998
  %index4004 = phi i64 [ 0, %vector.ph3998 ], [ %index.next4007, %vector.body4003 ]
  %818 = getelementptr double, ptr %invariant.gep3028, i64 %index4004
  %wide.load4006 = load <2 x double>, ptr %818, align 8, !tbaa !9
  %819 = fdiv <2 x double> %wide.load4006, %broadcast.splat
  store <2 x double> %819, ptr %818, align 8, !tbaa !9
  %index.next4007 = add nuw i64 %index4004, 2
  %820 = icmp eq i64 %index.next4007, %n.vec4000
  br i1 %820, label %middle.block3995, label %vector.body4003, !llvm.loop !71

middle.block3995:                                 ; preds = %vector.body4003
  %cmp.n4008 = icmp eq i64 %817, %n.vec4000
  br i1 %cmp.n4008, label %._crit_edge3027, label %scalar.ph3996.preheader

scalar.ph3996.preheader:                          ; preds = %middle.block3995, %.lr.ph3026
  %.1125943024.ph = phi i64 [ %94, %.lr.ph3026 ], [ %ind.end4001, %middle.block3995 ]
  br label %scalar.ph3996

scalar.ph3996:                                    ; preds = %scalar.ph3996.preheader, %scalar.ph3996
  %.1125943024 = phi i64 [ %824, %scalar.ph3996 ], [ %.1125943024.ph, %scalar.ph3996.preheader ]
  %821 = sub nsw i64 %.1125943024, %94
  %gep3029 = getelementptr double, ptr %invariant.gep3028, i64 %821
  %822 = load double, ptr %gep3029, align 8, !tbaa !9
  %823 = fdiv double %822, %814
  store double %823, ptr %gep3029, align 8, !tbaa !9
  %824 = add i64 %.1125943024, 1
  %exitcond3707.not = icmp eq i64 %.1125943024, %98
  br i1 %exitcond3707.not, label %._crit_edge3027, label %scalar.ph3996, !llvm.loop !72

._crit_edge3027:                                  ; preds = %scalar.ph3996, %middle.block3995, %813
  store i64 1, ptr %15, align 8, !tbaa !5
  %825 = sub nsw i64 %94, %.pre3741
  store i64 %825, ptr %16, align 8, !tbaa !5
  store i64 %94, ptr %17, align 8, !tbaa !5
  %826 = call i64 @llvm.smax.i64(i64 %825, i64 1)
  %.not2654.not3032 = icmp slt i64 %826, %.02607.ph
  br i1 %.not2654.not3032, label %.lr.ph3035.preheader, label %._crit_edge3036

.lr.ph3035.preheader:                             ; preds = %._crit_edge3027
  %827 = sub i64 %.02607.ph, %826
  %.neg = add nuw i64 %826, 1
  %xtraiter4376 = and i64 %827, 1
  %lcmp.mod4377.not = icmp eq i64 %xtraiter4376, 0
  br i1 %lcmp.mod4377.not, label %.lr.ph3035.prol.loopexit, label %.lr.ph3035.prol

.lr.ph3035.prol:                                  ; preds = %.lr.ph3035.preheader
  %828 = sub nsw i64 %94, %826
  %829 = mul nsw i64 %826, %27
  %gep3031.prol = getelementptr double, ptr %invariant.gep3281, i64 %828
  %830 = getelementptr double, ptr %gep3031.prol, i64 %829
  %831 = load double, ptr %830, align 8, !tbaa !9
  %832 = fdiv double %831, %814
  store double %832, ptr %830, align 8, !tbaa !9
  %833 = add nuw nsw i64 %826, 1
  br label %.lr.ph3035.prol.loopexit

.lr.ph3035.prol.loopexit:                         ; preds = %.lr.ph3035.prol, %.lr.ph3035.preheader
  %.1225953033.unr = phi i64 [ %826, %.lr.ph3035.preheader ], [ %833, %.lr.ph3035.prol ]
  %834 = icmp eq i64 %.02607.ph, %.neg
  br i1 %834, label %._crit_edge3036, label %.lr.ph3035

.lr.ph3035:                                       ; preds = %.lr.ph3035.prol.loopexit, %.lr.ph3035
  %.1225953033 = phi i64 [ %846, %.lr.ph3035 ], [ %.1225953033.unr, %.lr.ph3035.prol.loopexit ]
  %835 = sub nsw i64 %94, %.1225953033
  %836 = mul nsw i64 %.1225953033, %27
  %gep3031 = getelementptr double, ptr %invariant.gep3281, i64 %835
  %837 = getelementptr double, ptr %gep3031, i64 %836
  %838 = load double, ptr %837, align 8, !tbaa !9
  %839 = fdiv double %838, %814
  store double %839, ptr %837, align 8, !tbaa !9
  %840 = add nuw nsw i64 %.1225953033, 1
  %841 = sub nsw i64 %94, %840
  %842 = mul nsw i64 %840, %27
  %gep3031.1 = getelementptr double, ptr %invariant.gep3281, i64 %841
  %843 = getelementptr double, ptr %gep3031.1, i64 %842
  %844 = load double, ptr %843, align 8, !tbaa !9
  %845 = fdiv double %844, %814
  store double %845, ptr %843, align 8, !tbaa !9
  %846 = add nuw nsw i64 %.1225953033, 2
  %exitcond3708.not.1 = icmp eq i64 %846, %.02607.ph
  br i1 %exitcond3708.not.1, label %._crit_edge3036, label %.lr.ph3035, !llvm.loop !73

._crit_edge3036:                                  ; preds = %.lr.ph3035.prol.loopexit, %.lr.ph3035, %._crit_edge3027
  %.not26553057 = icmp sgt i64 %99, %95
  br i1 %.not26553057, label %900, label %.lr.ph3060

.lr.ph3060:                                       ; preds = %._crit_edge3036
  %847 = mul nsw i64 %94, %27
  %gep3040 = getelementptr double, ptr %invariant.gep3281, i64 %847
  %848 = xor i64 %96, -1
  %849 = add i64 %94, %848
  %.not26743052 = icmp sgt i64 %826, %849
  %850 = sub i64 %.02607.ph, %96
  br label %851

851:                                              ; preds = %.lr.ph3060, %._crit_edge3056
  %indvars.iv3709 = phi i64 [ %850, %.lr.ph3060 ], [ %indvars.iv.next3710, %._crit_edge3056 ]
  %.625653058 = phi i64 [ %99, %.lr.ph3060 ], [ %899, %._crit_edge3056 ]
  %.not26723041 = icmp sgt i64 %99, %.625653058
  br i1 %.not26723041, label %._crit_edge3045, label %.lr.ph3044

.lr.ph3044:                                       ; preds = %851
  %852 = sub nsw i64 %94, %.625653058
  %853 = add nsw i64 %852, 1
  %854 = mul nsw i64 %.625653058, %27
  %855 = getelementptr double, ptr %29, i64 %853
  %856 = getelementptr double, ptr %855, i64 %854
  %857 = mul nsw i64 %.625653058, %30
  %858 = getelementptr double, ptr %32, i64 %853
  %859 = getelementptr double, ptr %858, i64 %857
  br label %860

860:                                              ; preds = %.lr.ph3044, %860
  %.1325963042 = phi i64 [ %99, %.lr.ph3044 ], [ %883, %860 ]
  %861 = sub nsw i64 %.625653058, %.1325963042
  %862 = mul nsw i64 %.1325963042, %27
  %gep3038 = getelementptr double, ptr %invariant.gep3281, i64 %861
  %863 = getelementptr double, ptr %gep3038, i64 %862
  %864 = load double, ptr %863, align 8, !tbaa !9
  %865 = sub nsw i64 %94, %.1325963042
  %866 = add nsw i64 %865, 1
  %867 = mul nsw i64 %.1325963042, %30
  %868 = getelementptr double, ptr %32, i64 %866
  %869 = getelementptr double, ptr %868, i64 %867
  %870 = load double, ptr %869, align 8, !tbaa !9
  %871 = load double, ptr %856, align 8, !tbaa !9
  %872 = fneg double %870
  %873 = call double @llvm.fmuladd.f64(double %872, double %871, double %864)
  %874 = load double, ptr %859, align 8, !tbaa !9
  %875 = getelementptr double, ptr %29, i64 %866
  %876 = getelementptr double, ptr %875, i64 %862
  %877 = load double, ptr %876, align 8, !tbaa !9
  %878 = fneg double %874
  %879 = call double @llvm.fmuladd.f64(double %878, double %877, double %873)
  %880 = load double, ptr %gep3040, align 8, !tbaa !9
  %881 = fmul double %870, %880
  %882 = call double @llvm.fmuladd.f64(double %881, double %874, double %879)
  store double %882, ptr %863, align 8, !tbaa !9
  %883 = add i64 %.1325963042, 1
  %exitcond3711.not = icmp eq i64 %883, %indvars.iv3709
  br i1 %exitcond3711.not, label %._crit_edge3045, label %860, !llvm.loop !74

._crit_edge3045:                                  ; preds = %860, %851
  br i1 %.not26743052, label %._crit_edge3056, label %.lr.ph3055

.lr.ph3055:                                       ; preds = %._crit_edge3045
  %884 = sub nsw i64 %94, %.625653058
  %885 = mul nsw i64 %.625653058, %30
  %gep3047 = getelementptr double, ptr %invariant.gep3277, i64 %884
  %886 = getelementptr double, ptr %gep3047, i64 %885
  br label %887

887:                                              ; preds = %.lr.ph3055, %887
  %.1425973053 = phi i64 [ %826, %.lr.ph3055 ], [ %898, %887 ]
  %888 = load double, ptr %886, align 8, !tbaa !9
  %889 = sub nsw i64 %94, %.1425973053
  %890 = mul nsw i64 %.1425973053, %27
  %gep3049 = getelementptr double, ptr %invariant.gep3281, i64 %889
  %891 = getelementptr double, ptr %gep3049, i64 %890
  %892 = load double, ptr %891, align 8, !tbaa !9
  %893 = sub nsw i64 %.625653058, %.1425973053
  %gep3051 = getelementptr double, ptr %invariant.gep3281, i64 %893
  %894 = getelementptr double, ptr %gep3051, i64 %890
  %895 = load double, ptr %894, align 8, !tbaa !9
  %896 = fneg double %888
  %897 = call double @llvm.fmuladd.f64(double %896, double %892, double %895)
  store double %897, ptr %894, align 8, !tbaa !9
  %898 = add nuw nsw i64 %.1425973053, 1
  %.not2674.not = icmp slt i64 %.1425973053, %849
  br i1 %.not2674.not, label %887, label %._crit_edge3056, !llvm.loop !75

._crit_edge3056:                                  ; preds = %887, %._crit_edge3045
  %899 = add i64 %.625653058, 1
  %indvars.iv.next3710 = add i64 %indvars.iv3709, 1
  %exitcond3712.not = icmp eq i64 %899, %94
  br i1 %exitcond3712.not, label %._crit_edge3061, label %851, !llvm.loop !76

._crit_edge3061:                                  ; preds = %._crit_edge3056
  store i64 1, ptr %15, align 8, !tbaa !5
  store i64 %825, ptr %16, align 8, !tbaa !5
  store i64 %849, ptr %14, align 8, !tbaa !5
  br label %900

900:                                              ; preds = %._crit_edge3061, %._crit_edge3036
  br i1 %.not26533023, label %948, label %.lr.ph3076

.lr.ph3076:                                       ; preds = %900
  %901 = mul nsw i64 %94, %27
  %invariant.gep3078 = getelementptr double, ptr %invariant.gep3281, i64 %901
  %902 = add i64 %.02607.ph, -2
  br label %903

903:                                              ; preds = %.lr.ph3076, %._crit_edge3072
  %indvar4380 = phi i64 [ 0, %.lr.ph3076 ], [ %indvar.next4381, %._crit_edge3072 ]
  %.1525983074 = phi i64 [ %94, %.lr.ph3076 ], [ %947, %._crit_edge3072 ]
  %904 = add i64 %825, %indvar4380
  %smax4382 = call i64 @llvm.smax.i64(i64 %904, i64 %99)
  %905 = sub nsw i64 %.1525983074, %.pre3741
  %906 = call i64 @llvm.smax.i64(i64 %905, i64 %99)
  %.not26713068 = icmp sgt i64 %906, %95
  br i1 %.not26713068, label %._crit_edge3072, label %.lr.ph3071

.lr.ph3071:                                       ; preds = %903
  %907 = sub nsw i64 %.1525983074, %94
  %gep3079 = getelementptr double, ptr %invariant.gep3078, i64 %907
  %908 = sub i64 %smax4382, %.02607.ph
  %909 = and i64 %908, 1
  %lcmp.mod4384.not.not = icmp eq i64 %909, 0
  br i1 %lcmp.mod4384.not.not, label %.prol.loopexit4379.unr-lcssa, label %.prol.loopexit4379

.prol.loopexit4379.unr-lcssa:                     ; preds = %.lr.ph3071
  %910 = sub nsw i64 %94, %906
  %911 = mul nsw i64 %906, %30
  %gep3063.prol = getelementptr double, ptr %invariant.gep3277, i64 %910
  %912 = getelementptr double, ptr %gep3063.prol, i64 %911
  %913 = load double, ptr %912, align 8, !tbaa !9
  %914 = load double, ptr %gep3079, align 8, !tbaa !9
  %915 = sub nsw i64 %.1525983074, %906
  %916 = mul nsw i64 %906, %27
  %gep3067.prol = getelementptr double, ptr %invariant.gep3281, i64 %915
  %917 = getelementptr double, ptr %gep3067.prol, i64 %916
  %918 = load double, ptr %917, align 8, !tbaa !9
  %919 = fneg double %913
  %920 = call double @llvm.fmuladd.f64(double %919, double %914, double %918)
  store double %920, ptr %917, align 8, !tbaa !9
  %921 = add nsw i64 %906, 1
  br label %.prol.loopexit4379

.prol.loopexit4379:                               ; preds = %.prol.loopexit4379.unr-lcssa, %.lr.ph3071
  %.725663069.unr = phi i64 [ %906, %.lr.ph3071 ], [ %921, %.prol.loopexit4379.unr-lcssa ]
  %922 = icmp eq i64 %902, %smax4382
  br i1 %922, label %._crit_edge3072, label %.lr.ph3071.new

.lr.ph3071.new:                                   ; preds = %.prol.loopexit4379, %.lr.ph3071.new
  %.725663069 = phi i64 [ %946, %.lr.ph3071.new ], [ %.725663069.unr, %.prol.loopexit4379 ]
  %923 = sub nsw i64 %94, %.725663069
  %924 = mul nsw i64 %.725663069, %30
  %gep3063 = getelementptr double, ptr %invariant.gep3277, i64 %923
  %925 = getelementptr double, ptr %gep3063, i64 %924
  %926 = load double, ptr %925, align 8, !tbaa !9
  %927 = load double, ptr %gep3079, align 8, !tbaa !9
  %928 = sub nsw i64 %.1525983074, %.725663069
  %929 = mul nsw i64 %.725663069, %27
  %gep3067 = getelementptr double, ptr %invariant.gep3281, i64 %928
  %930 = getelementptr double, ptr %gep3067, i64 %929
  %931 = load double, ptr %930, align 8, !tbaa !9
  %932 = fneg double %926
  %933 = call double @llvm.fmuladd.f64(double %932, double %927, double %931)
  store double %933, ptr %930, align 8, !tbaa !9
  %934 = add nsw i64 %.725663069, 1
  %935 = sub nsw i64 %94, %934
  %936 = mul nsw i64 %934, %30
  %gep3063.1 = getelementptr double, ptr %invariant.gep3277, i64 %935
  %937 = getelementptr double, ptr %gep3063.1, i64 %936
  %938 = load double, ptr %937, align 8, !tbaa !9
  %939 = load double, ptr %gep3079, align 8, !tbaa !9
  %940 = sub nsw i64 %.1525983074, %934
  %941 = mul nsw i64 %934, %27
  %gep3067.1 = getelementptr double, ptr %invariant.gep3281, i64 %940
  %942 = getelementptr double, ptr %gep3067.1, i64 %941
  %943 = load double, ptr %942, align 8, !tbaa !9
  %944 = fneg double %938
  %945 = call double @llvm.fmuladd.f64(double %944, double %939, double %943)
  store double %945, ptr %942, align 8, !tbaa !9
  %946 = add nsw i64 %.725663069, 2
  %.not2671.not.1 = icmp slt i64 %934, %95
  br i1 %.not2671.not.1, label %.lr.ph3071.new, label %._crit_edge3072, !llvm.loop !77

._crit_edge3072:                                  ; preds = %.prol.loopexit4379, %.lr.ph3071.new, %903
  %947 = add i64 %.1525983074, 1
  %exitcond3713.not = icmp eq i64 %.1525983074, %98
  %indvar.next4381 = add i64 %indvar4380, 1
  br i1 %exitcond3713.not, label %._crit_edge3077, label %903, !llvm.loop !78

._crit_edge3077:                                  ; preds = %._crit_edge3072
  store i64 %905, ptr %14, align 8, !tbaa !5
  store i64 %99, ptr %15, align 8, !tbaa !5
  store i64 %95, ptr %16, align 8, !tbaa !5
  br label %948

948:                                              ; preds = %._crit_edge3077, %900
  br i1 %.not, label %949, label %968

949:                                              ; preds = %948
  %950 = sub nsw i64 %.pre3742, %78
  store i64 %950, ptr %17, align 8, !tbaa !5
  %951 = fdiv double 1.000000e+00, %814
  store double %951, ptr %18, align 8, !tbaa !9
  %952 = mul nsw i64 %94, %33
  %953 = getelementptr double, ptr %83, i64 %952
  %954 = call i32 @f2c_dscal(ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef %953, ptr noundef nonnull @c__1) #5
  %955 = load i64, ptr %24, align 8, !tbaa !5
  %956 = icmp sgt i64 %955, 0
  br i1 %956, label %957, label %968

957:                                              ; preds = %949
  %958 = load i64, ptr %2, align 8, !tbaa !5
  %959 = sub nsw i64 %958, %78
  store i64 %959, ptr %17, align 8, !tbaa !5
  %960 = load i64, ptr %8, align 8, !tbaa !5
  %961 = add nsw i64 %960, -1
  store i64 %961, ptr %16, align 8, !tbaa !5
  %962 = sub nsw i64 %94, %955
  %963 = mul nsw i64 %962, %30
  %gep3280 = getelementptr double, ptr %invariant.gep3277, i64 %955
  %964 = getelementptr double, ptr %gep3280, i64 %963
  %965 = mul nsw i64 %962, %33
  %966 = getelementptr double, ptr %83, i64 %965
  %967 = call i32 @f2c_dger(ptr noundef nonnull %17, ptr noundef nonnull %24, ptr noundef nonnull @c_b20, ptr noundef %953, ptr noundef nonnull @c__1, ptr noundef %964, ptr noundef nonnull %16, ptr noundef %966, ptr noundef nonnull %10) #5
  br label %968

968:                                              ; preds = %949, %957, %948
  %969 = sub nsw i64 %98, %94
  %970 = mul nsw i64 %94, %27
  %gep3282 = getelementptr double, ptr %invariant.gep3281, i64 %969
  %971 = getelementptr double, ptr %gep3282, i64 %970
  %972 = load double, ptr %971, align 8, !tbaa !9
  store double %972, ptr %23, align 8, !tbaa !9
  %.pre3805 = load i64, ptr %4, align 8, !tbaa !5
  br label %973

973:                                              ; preds = %105, %968
  %974 = phi i64 [ %.pre3805, %968 ], [ %93, %105 ]
  %.02910 = phi i64 [ %.0.ph, %968 ], [ 0, %105 ]
  %.not26472904 = phi i1 [ false, %968 ], [ true, %105 ]
  %.1260827742809 = phi i64 [ %94, %968 ], [ %104, %105 ]
  %.1255027772807 = phi i64 [ %95, %968 ], [ %.02549.lcssa, %105 ]
  %.1254527802805 = phi i64 [ %98, %968 ], [ %.02544.lcssa, %105 ]
  %.1254127832803 = phi i64 [ %101, %968 ], [ %.02540.lcssa, %105 ]
  %975 = add nsw i64 %974, -1
  store i64 %975, ptr %17, align 8, !tbaa !5
  %.not26573211 = icmp slt i64 %974, 2
  br i1 %.not26573211, label %._crit_edge3216, label %.lr.ph3215

.lr.ph3215:                                       ; preds = %973
  %976 = mul nsw i64 %.1260827742809, %27
  %invariant.gep3217 = getelementptr double, ptr %29, i64 %976
  %977 = add i64 %.1260827742809, 1
  br label %978

978:                                              ; preds = %.lr.ph3215, %.loopexit2873
  %.82567.neg3213 = phi i64 [ -1, %.lr.ph3215 ], [ %1032, %.loopexit2873 ]
  %.825673212 = phi i64 [ 1, %.lr.ph3215 ], [ %1164, %.loopexit2873 ]
  br i1 %.not26472904, label %._crit_edge3806, label %979

._crit_edge3806:                                  ; preds = %978
  %.pre3807 = load i64, ptr %22, align 8, !tbaa !5
  %.pre3809 = load i64, ptr %2, align 8, !tbaa !5
  %.pre3810 = load i64, ptr %3, align 8, !tbaa !5
  br label %1026

979:                                              ; preds = %978
  %980 = sub nsw i64 %.1260827742809, %.825673212
  %981 = load i64, ptr %3, align 8, !tbaa !5
  %982 = add nsw i64 %981, %980
  %983 = load i64, ptr %2, align 8, !tbaa !5
  %984 = icmp slt i64 %982, %983
  %985 = icmp sgt i64 %980, 1
  %or.cond2759 = and i1 %985, %984
  %.pre3808 = load i64, ptr %22, align 8, !tbaa !5
  br i1 %or.cond2759, label %986, label %1026

986:                                              ; preds = %979
  %987 = sub nsw i64 %.pre3808, %.825673212
  %gep3218 = getelementptr double, ptr %invariant.gep3217, i64 %987
  %988 = add i64 %.825673212, %78
  %989 = sub i64 %.1260827742809, %988
  %990 = getelementptr double, ptr %36, i64 %989
  %991 = getelementptr double, ptr %990, i64 %981
  %992 = getelementptr double, ptr %991, i64 %983
  %993 = sub nsw i64 %982, %78
  %994 = getelementptr inbounds double, ptr %36, i64 %993
  %995 = call i32 @dlartg_(ptr noundef %gep3218, ptr noundef nonnull %23, ptr noundef nonnull %992, ptr noundef nonnull %994, ptr noundef nonnull %19) #5
  %996 = mul nsw i64 %980, %30
  %gep3208 = getelementptr double, ptr %invariant.gep3277, i64 %.825673212
  %997 = getelementptr double, ptr %gep3208, i64 %996
  %998 = load double, ptr %997, align 8, !tbaa !9
  %999 = fneg double %998
  %1000 = load double, ptr %23, align 8, !tbaa !9
  %1001 = fmul double %1000, %999
  %1002 = load i64, ptr %2, align 8, !tbaa !5
  %1003 = load i64, ptr %3, align 8, !tbaa !5
  %1004 = getelementptr double, ptr %990, i64 %1002
  %1005 = getelementptr double, ptr %1004, i64 %1003
  %1006 = load double, ptr %1005, align 8, !tbaa !9
  %1007 = sub i64 %980, %78
  %1008 = getelementptr double, ptr %36, i64 %1007
  %1009 = getelementptr double, ptr %1008, i64 %1003
  %1010 = load double, ptr %1009, align 8, !tbaa !9
  %1011 = load i64, ptr %22, align 8, !tbaa !5
  %1012 = mul nsw i64 %980, %27
  %1013 = getelementptr double, ptr %29, i64 %1011
  %1014 = getelementptr double, ptr %1013, i64 %1012
  %1015 = load double, ptr %1014, align 8, !tbaa !9
  %1016 = fneg double %1010
  %1017 = fmul double %1015, %1016
  %1018 = call double @llvm.fmuladd.f64(double %1006, double %1001, double %1017)
  %1019 = getelementptr inbounds double, ptr %36, i64 %980
  store double %1018, ptr %1019, align 8, !tbaa !9
  %1020 = load double, ptr %1009, align 8, !tbaa !9
  %1021 = load double, ptr %1005, align 8, !tbaa !9
  %1022 = load double, ptr %1014, align 8, !tbaa !9
  %1023 = fmul double %1021, %1022
  %1024 = call double @llvm.fmuladd.f64(double %1020, double %1001, double %1023)
  store double %1024, ptr %1014, align 8, !tbaa !9
  %1025 = load double, ptr %19, align 8, !tbaa !9
  store double %1025, ptr %23, align 8, !tbaa !9
  br label %1026

1026:                                             ; preds = %._crit_edge3806, %979, %986
  %1027 = phi i64 [ %.pre3810, %._crit_edge3806 ], [ %981, %979 ], [ %1003, %986 ]
  %1028 = phi i64 [ %.pre3809, %._crit_edge3806 ], [ %983, %979 ], [ %1002, %986 ]
  %1029 = phi i64 [ %.pre3807, %._crit_edge3806 ], [ %.pre3808, %979 ], [ %1011, %986 ]
  %1030 = sub nsw i64 %.825673212, %.1255027772807
  %1031 = add nsw i64 %1030, 2
  %1032 = xor i64 %.825673212, -1
  %1033 = add i64 %.1260827742809, %1032
  %1034 = icmp slt i64 %1030, 0
  %1035 = select i1 %1034, i64 1, i64 %1031
  %1036 = mul nsw i64 %1029, %1035
  %1037 = add nsw i64 %1033, %1036
  %1038 = sub i64 %1028, %1037
  %1039 = add nsw i64 %1038, %1027
  %1040 = sdiv i64 %1039, %1029
  store i64 %1040, ptr %20, align 8, !tbaa !5
  %1041 = add nsw i64 %1040, -1
  %1042 = mul nsw i64 %1041, %1029
  %1043 = add nsw i64 %1042, %1037
  br i1 %.not26472904, label %1049, label %1044

1044:                                             ; preds = %1026
  %1045 = shl i64 %1027, 1
  %1046 = add i64 %977, %.82567.neg3213
  %1047 = add i64 %1046, %1045
  %1048 = call i64 @llvm.smax.i64(i64 %1037, i64 %1047)
  br label %1049

1049:                                             ; preds = %1026, %1044
  %.12535 = phi i64 [ %1048, %1044 ], [ %1037, %1026 ]
  %1050 = add i64 %1027, %1028
  %1051 = sub i64 %1050, %.12535
  %1052 = sdiv i64 %1051, %1029
  store i64 %1052, ptr %25, align 8, !tbaa !5
  store i64 %1043, ptr %16, align 8, !tbaa !5
  store i64 %1029, ptr %14, align 8, !tbaa !5
  %1053 = icmp slt i64 %1029, 0
  %1054 = icmp sge i64 %.12535, %1043
  %1055 = icmp sle i64 %.12535, %1043
  %.in26663185 = select i1 %1053, i1 %1054, i1 %1055
  br i1 %.in26663185, label %.lr.ph3188, label %._crit_edge3189

.lr.ph3188:                                       ; preds = %1049
  %1056 = getelementptr double, ptr %29, i64 %1029
  %1057 = sub i64 %1028, %78
  %1058 = getelementptr double, ptr %36, i64 %1057
  br label %1059

1059:                                             ; preds = %.lr.ph3188, %1059
  %.1625993186 = phi i64 [ %.12535, %.lr.ph3188 ], [ %1072, %1059 ]
  %reass.sub3685 = sub i64 %.1625993186, %1027
  %1060 = add i64 %reass.sub3685, 1
  %1061 = mul nsw i64 %1060, %27
  %1062 = getelementptr double, ptr %1056, i64 %1061
  %1063 = load double, ptr %1062, align 8, !tbaa !9
  %1064 = sub nsw i64 %.1625993186, %78
  %1065 = getelementptr inbounds double, ptr %36, i64 %1064
  %1066 = load double, ptr %1065, align 8, !tbaa !9
  %1067 = fmul double %1063, %1066
  store double %1067, ptr %1065, align 8, !tbaa !9
  %1068 = getelementptr double, ptr %1058, i64 %.1625993186
  %1069 = load double, ptr %1068, align 8, !tbaa !9
  %1070 = load double, ptr %1062, align 8, !tbaa !9
  %1071 = fmul double %1069, %1070
  store double %1071, ptr %1062, align 8, !tbaa !9
  %1072 = add nsw i64 %.1625993186, %1029
  %1073 = icmp sge i64 %1072, %1043
  %1074 = icmp sle i64 %1072, %1043
  %.in2666 = select i1 %1053, i1 %1073, i1 %1074
  br i1 %.in2666, label %1059, label %._crit_edge3189, !llvm.loop !79

._crit_edge3189:                                  ; preds = %1059, %1049
  %1075 = icmp sgt i64 %1052, 0
  br i1 %1075, label %1076, label %1087

1076:                                             ; preds = %._crit_edge3189
  %1077 = sub nsw i64 %.12535, %1027
  %1078 = mul nsw i64 %1077, %27
  %1079 = getelementptr double, ptr %29, i64 %1029
  %1080 = getelementptr double, ptr %1079, i64 %1078
  %1081 = sub nsw i64 %.12535, %78
  %1082 = getelementptr inbounds double, ptr %36, i64 %1081
  %1083 = sub i64 %1028, %78
  %1084 = getelementptr double, ptr %36, i64 %1083
  %1085 = getelementptr double, ptr %1084, i64 %.12535
  %1086 = call i32 @dlargv_(ptr noundef nonnull %25, ptr noundef %1080, ptr noundef nonnull %26, ptr noundef nonnull %1082, ptr noundef nonnull %22, ptr noundef nonnull %1085, ptr noundef nonnull %22) #5
  %.pre3811 = load i64, ptr %20, align 8, !tbaa !5
  %.pre3813.pre = load i64, ptr %3, align 8, !tbaa !5
  br label %1087

1087:                                             ; preds = %1076, %._crit_edge3189
  %.pre3813 = phi i64 [ %.pre3813.pre, %1076 ], [ %1027, %._crit_edge3189 ]
  %1088 = phi i64 [ %.pre3811, %1076 ], [ %1040, %._crit_edge3189 ]
  %1089 = icmp sgt i64 %1088, 0
  br i1 %1089, label %1090, label %1114

1090:                                             ; preds = %1087
  %1091 = add nsw i64 %.pre3813, -1
  store i64 %1091, ptr %14, align 8, !tbaa !5
  %.not26673192 = icmp slt i64 %.pre3813, 2
  %.pre3835 = sub i64 %1037, %78
  br i1 %.not26673192, label %._crit_edge3196, label %.lr.ph3195

.lr.ph3195:                                       ; preds = %1090
  %1092 = getelementptr double, ptr %36, i64 %.pre3835
  br label %1093

1093:                                             ; preds = %.lr.ph3195, %1093
  %.63193 = phi i64 [ 1, %.lr.ph3195 ], [ %1094, %1093 ]
  %1094 = add nuw nsw i64 %.63193, 1
  %1095 = sub nsw i64 %1037, %.63193
  %1096 = mul nsw i64 %1095, %27
  %1097 = getelementptr double, ptr %29, i64 %1094
  %1098 = getelementptr double, ptr %1097, i64 %1096
  %gep3191 = getelementptr double, ptr %invariant.gep3190, i64 %.63193
  %1099 = getelementptr double, ptr %gep3191, i64 %1096
  %1100 = load i64, ptr %2, align 8, !tbaa !5
  %1101 = getelementptr double, ptr %1092, i64 %1100
  %1102 = call i32 @dlartv_(ptr noundef nonnull %20, ptr noundef %1098, ptr noundef nonnull %26, ptr noundef %1099, ptr noundef nonnull %26, ptr noundef nonnull %1101, ptr noundef nonnull %1092, ptr noundef nonnull %22) #5
  %1103 = load i64, ptr %14, align 8, !tbaa !5
  %.not2667.not = icmp slt i64 %.63193, %1103
  br i1 %.not2667.not, label %1093, label %._crit_edge3196, !llvm.loop !80

._crit_edge3196:                                  ; preds = %1093, %1090
  %1104 = mul nsw i64 %1037, %27
  %1105 = getelementptr double, ptr %29, i64 %1104
  %1106 = getelementptr i8, ptr %1105, i64 8
  %1107 = add nsw i64 %1037, 1
  %1108 = mul nsw i64 %1107, %27
  %gep3210 = getelementptr double, ptr %invariant.gep3281, i64 %1108
  %1109 = getelementptr i8, ptr %1105, i64 16
  %1110 = load i64, ptr %2, align 8, !tbaa !5
  %1111 = getelementptr double, ptr %36, i64 %.pre3835
  %1112 = getelementptr double, ptr %1111, i64 %1110
  %1113 = call i32 @dlar2v_(ptr noundef nonnull %20, ptr noundef %1106, ptr noundef %gep3210, ptr noundef %1109, ptr noundef nonnull %26, ptr noundef nonnull %1112, ptr noundef nonnull %1111, ptr noundef nonnull %22) #5
  %.pre3812 = load i64, ptr %3, align 8, !tbaa !5
  br label %1114

1114:                                             ; preds = %._crit_edge3196, %1087
  %1115 = phi i64 [ %.pre3812, %._crit_edge3196 ], [ %.pre3813, %1087 ]
  %1116 = load i64, ptr %4, align 8, !tbaa !5
  %1117 = add nsw i64 %.82567.neg3213, 1
  %1118 = add i64 %1117, %1116
  store i64 %1118, ptr %14, align 8, !tbaa !5
  %.not2668.not3198 = icmp sgt i64 %1115, %1118
  br i1 %.not2668.not3198, label %.lr.ph3201, label %._crit_edge3202

.lr.ph3201:                                       ; preds = %1114
  %1119 = mul nsw i64 %1037, %27
  %1120 = add nsw i64 %1037, 1
  %1121 = mul nsw i64 %1120, %27
  %1122 = sub i64 %1037, %78
  %1123 = getelementptr double, ptr %36, i64 %1122
  br label %1124

1124:                                             ; preds = %.lr.ph3201, %1140
  %1125 = phi i64 [ %1118, %.lr.ph3201 ], [ %1141, %1140 ]
  %.73199.in = phi i64 [ %1115, %.lr.ph3201 ], [ %.73199, %1140 ]
  %.73199 = add nsw i64 %.73199.in, -1
  %1126 = load i64, ptr %2, align 8, !tbaa !5
  %1127 = sub i64 %.73199, %1037
  %1128 = add i64 %1127, %1126
  %1129 = load i64, ptr %22, align 8, !tbaa !5
  %1130 = sdiv i64 %1128, %1129
  store i64 %1130, ptr %25, align 8, !tbaa !5
  %1131 = icmp sgt i64 %1130, 0
  br i1 %1131, label %1132, label %1140

1132:                                             ; preds = %1124
  %1133 = sub nsw i64 %1129, %.73199
  %1134 = getelementptr double, ptr %29, i64 %1133
  %1135 = getelementptr i8, ptr %1134, i64 8
  %1136 = getelementptr double, ptr %1135, i64 %1119
  %1137 = getelementptr double, ptr %1134, i64 %1121
  %1138 = getelementptr double, ptr %1123, i64 %1126
  %1139 = call i32 @dlartv_(ptr noundef nonnull %25, ptr noundef %1136, ptr noundef nonnull %26, ptr noundef %1137, ptr noundef nonnull %26, ptr noundef nonnull %1138, ptr noundef nonnull %1123, ptr noundef nonnull %22) #5
  %.pre3814 = load i64, ptr %14, align 8, !tbaa !5
  br label %1140

1140:                                             ; preds = %1124, %1132
  %1141 = phi i64 [ %1125, %1124 ], [ %.pre3814, %1132 ]
  %.not2668.not = icmp sgt i64 %.73199, %1141
  br i1 %.not2668.not, label %1124, label %._crit_edge3202, !llvm.loop !81

._crit_edge3202:                                  ; preds = %1140, %1114
  br i1 %.not, label %1142, label %.loopexit2873

1142:                                             ; preds = %._crit_edge3202
  store i64 %1043, ptr %14, align 8, !tbaa !5
  %1143 = load i64, ptr %22, align 8, !tbaa !5
  store i64 %1143, ptr %16, align 8, !tbaa !5
  %1144 = icmp slt i64 %1143, 0
  %1145 = icmp slt i64 %1042, 1
  %1146 = icmp sgt i64 %1042, -1
  %.in26693203 = select i1 %1144, i1 %1145, i1 %1146
  br i1 %.in26693203, label %.lr.ph3206, label %.loopexit2873

.lr.ph3206:                                       ; preds = %1142, %.lr.ph3206
  %.1726003204 = phi i64 [ %1159, %.lr.ph3206 ], [ %1037, %1142 ]
  %1147 = load i64, ptr %2, align 8, !tbaa !5
  %1148 = sub nsw i64 %1147, %78
  store i64 %1148, ptr %15, align 8, !tbaa !5
  %1149 = mul nsw i64 %.1726003204, %33
  %1150 = getelementptr double, ptr %83, i64 %1149
  %1151 = add nsw i64 %.1726003204, 1
  %1152 = mul nsw i64 %1151, %33
  %1153 = getelementptr double, ptr %83, i64 %1152
  %1154 = sub i64 %.1726003204, %78
  %1155 = getelementptr double, ptr %36, i64 %1154
  %1156 = getelementptr double, ptr %1155, i64 %1147
  %1157 = call i32 @f2c_drot(ptr noundef nonnull %15, ptr noundef %1150, ptr noundef nonnull @c__1, ptr noundef %1153, ptr noundef nonnull @c__1, ptr noundef nonnull %1156, ptr noundef nonnull %1155) #5
  %1158 = load i64, ptr %16, align 8, !tbaa !5
  %1159 = add nsw i64 %1158, %.1726003204
  %1160 = icmp slt i64 %1158, 0
  %1161 = load i64, ptr %14, align 8
  %1162 = icmp sge i64 %1159, %1161
  %1163 = icmp sle i64 %1159, %1161
  %.in2669 = select i1 %1160, i1 %1162, i1 %1163
  br i1 %.in2669, label %.lr.ph3206, label %.loopexit2873, !llvm.loop !82

.loopexit2873:                                    ; preds = %.lr.ph3206, %1142, %._crit_edge3202
  %1164 = add nuw nsw i64 %.825673212, 1
  %1165 = load i64, ptr %17, align 8, !tbaa !5
  %.not2657.not = icmp slt i64 %.825673212, %1165
  br i1 %.not2657.not, label %978, label %._crit_edge3216, !llvm.loop !83

._crit_edge3216:                                  ; preds = %.loopexit2873, %973
  br i1 %.not26472904, label %1180, label %1166

1166:                                             ; preds = %._crit_edge3216
  %1167 = load i64, ptr %2, align 8, !tbaa !5
  %1168 = icmp sle i64 %.1254127832803, %1167
  %1169 = load i64, ptr %24, align 8
  %1170 = icmp sgt i64 %1169, 0
  %or.cond3 = select i1 %1168, i1 %1170, i1 false
  br i1 %or.cond3, label %1171, label %1180

1171:                                             ; preds = %1166
  %1172 = sub nsw i64 %.1260827742809, %1169
  %1173 = mul nsw i64 %1172, %30
  %gep3284 = getelementptr double, ptr %invariant.gep3277, i64 %1169
  %1174 = getelementptr double, ptr %gep3284, i64 %1173
  %1175 = load double, ptr %1174, align 8, !tbaa !9
  %1176 = fneg double %1175
  %1177 = load double, ptr %23, align 8, !tbaa !9
  %1178 = fmul double %1177, %1176
  %1179 = getelementptr inbounds double, ptr %36, i64 %1172
  store double %1178, ptr %1179, align 8, !tbaa !9
  br label %1180

1180:                                             ; preds = %1166, %1171, %._crit_edge3216
  %1181 = load i64, ptr %4, align 8, !tbaa !5
  %1182 = icmp sgt i64 %1181, 0
  br i1 %1182, label %.lr.ph3235.preheader, label %._crit_edge3263.thread

.lr.ph3235.preheader:                             ; preds = %1180
  %.3910 = select i1 %.not26472904, i64 1, i64 2
  br label %.lr.ph3235

.lr.ph3235:                                       ; preds = %.lr.ph3235.preheader, %1272
  %.925683233 = phi i64 [ %1273, %1272 ], [ %1181, %.lr.ph3235.preheader ]
  %1183 = sub nsw i64 %.925683233, %.1255027772807
  %1184 = add nsw i64 %1183, 1
  %1185 = xor i64 %.925683233, -1
  %1186 = add i64 %.1260827742809, %1185
  %1187 = load i64, ptr %22, align 8, !tbaa !5
  %1188 = icmp slt i64 %1183, %.3910
  %1189 = select i1 %1188, i64 %.3910, i64 %1184
  %1190 = mul nsw i64 %1187, %1189
  %1191 = add nsw i64 %1186, %1190
  store i64 %.3910, ptr %17, align 8
  store i64 %1184, ptr %16, align 8
  %1192 = load i64, ptr %4, align 8, !tbaa !5
  %1193 = sub nsw i64 %1192, %.925683233
  %1194 = icmp sgt i64 %1193, 0
  br i1 %1194, label %.lr.ph3221, label %._crit_edge3222

.lr.ph3221:                                       ; preds = %.lr.ph3235, %1218
  %.83219 = phi i64 [ %1219, %1218 ], [ %1193, %.lr.ph3235 ]
  %1195 = load i64, ptr %2, align 8, !tbaa !5
  %1196 = load i64, ptr %3, align 8, !tbaa !5
  %1197 = sub i64 %.83219, %1191
  %1198 = add i64 %1197, %1195
  %1199 = add i64 %1198, %1196
  %1200 = load i64, ptr %22, align 8, !tbaa !5
  %1201 = sdiv i64 %1199, %1200
  store i64 %1201, ptr %25, align 8, !tbaa !5
  %1202 = icmp sgt i64 %1201, 0
  br i1 %1202, label %1203, label %1218

1203:                                             ; preds = %.lr.ph3221
  %1204 = sub nsw i64 %1200, %.83219
  %1205 = sub nsw i64 %1191, %1196
  %1206 = mul nsw i64 %1205, %27
  %1207 = getelementptr double, ptr %29, i64 %1204
  %1208 = getelementptr i8, ptr %1207, i64 8
  %1209 = getelementptr double, ptr %1208, i64 %1206
  %1210 = add nsw i64 %1205, 1
  %1211 = mul nsw i64 %1210, %27
  %1212 = getelementptr double, ptr %1207, i64 %1211
  %1213 = add nsw i64 %1195, %1191
  %1214 = sub i64 %1213, %1196
  %1215 = getelementptr inbounds double, ptr %36, i64 %1214
  %1216 = getelementptr inbounds double, ptr %36, i64 %1205
  %1217 = call i32 @dlartv_(ptr noundef nonnull %25, ptr noundef %1209, ptr noundef nonnull %26, ptr noundef %1212, ptr noundef nonnull %26, ptr noundef nonnull %1215, ptr noundef nonnull %1216, ptr noundef nonnull %22) #5
  br label %1218

1218:                                             ; preds = %.lr.ph3221, %1203
  %1219 = add nsw i64 %.83219, -1
  %1220 = icmp sgt i64 %.83219, 1
  br i1 %1220, label %.lr.ph3221, label %._crit_edge3222.loopexit, !llvm.loop !84

._crit_edge3222.loopexit:                         ; preds = %1218
  %.pre3815 = load i64, ptr %22, align 8, !tbaa !5
  br label %._crit_edge3222

._crit_edge3222:                                  ; preds = %._crit_edge3222.loopexit, %.lr.ph3235
  %1221 = phi i64 [ %.pre3815, %._crit_edge3222.loopexit ], [ %1187, %.lr.ph3235 ]
  %1222 = load i64, ptr %2, align 8, !tbaa !5
  %1223 = sub i64 %1222, %1191
  %1224 = load i64, ptr %3, align 8, !tbaa !5
  %1225 = add nsw i64 %1223, %1224
  %1226 = sdiv i64 %1225, %1221
  store i64 %1226, ptr %20, align 8, !tbaa !5
  %1227 = add nsw i64 %1226, -1
  %1228 = mul nsw i64 %1227, %1221
  %1229 = add nsw i64 %1228, %1191
  %1230 = icmp sgt i64 %1221, 0
  %1231 = icmp sgt i64 %1228, -1
  %1232 = icmp slt i64 %1228, 1
  %.in26623223 = select i1 %1230, i1 %1231, i1 %1232
  br i1 %.in26623223, label %.lr.ph3226, label %._crit_edge3227

.lr.ph3226:                                       ; preds = %._crit_edge3222, %.lr.ph3226
  %.1826013224 = phi i64 [ %1242, %.lr.ph3226 ], [ %1229, %._crit_edge3222 ]
  %1233 = sub nsw i64 %.1826013224, %1224
  %1234 = getelementptr inbounds double, ptr %36, i64 %1233
  %1235 = load double, ptr %1234, align 8, !tbaa !9
  %1236 = getelementptr inbounds double, ptr %36, i64 %.1826013224
  store double %1235, ptr %1236, align 8, !tbaa !9
  %1237 = add nsw i64 %.1826013224, %1222
  %1238 = sub nsw i64 %1237, %1224
  %1239 = getelementptr inbounds double, ptr %36, i64 %1238
  %1240 = load double, ptr %1239, align 8, !tbaa !9
  %1241 = getelementptr inbounds double, ptr %36, i64 %1237
  store double %1240, ptr %1241, align 8, !tbaa !9
  %1242 = sub i64 %.1826013224, %1221
  %1243 = icmp sge i64 %1242, %1191
  %1244 = icmp sle i64 %1242, %1191
  %.in2662 = select i1 %1230, i1 %1243, i1 %1244
  br i1 %.in2662, label %.lr.ph3226, label %._crit_edge3227, !llvm.loop !85

._crit_edge3227:                                  ; preds = %.lr.ph3226, %._crit_edge3222
  store i64 %1229, ptr %16, align 8, !tbaa !5
  store i64 %1221, ptr %17, align 8, !tbaa !5
  %1245 = icmp slt i64 %1221, 0
  %.in26633228 = select i1 %1245, i1 %1232, i1 %1231
  br i1 %.in26633228, label %.lr.ph3231, label %._crit_edge3232

.lr.ph3231:                                       ; preds = %._crit_edge3227
  %1246 = getelementptr double, ptr %29, i64 %1221
  %1247 = getelementptr double, ptr %36, i64 %1222
  br label %1248

1248:                                             ; preds = %.lr.ph3231, %1248
  %.1926023229 = phi i64 [ %1191, %.lr.ph3231 ], [ %1260, %1248 ]
  %reass.sub3686 = sub i64 %.1926023229, %1224
  %1249 = add i64 %reass.sub3686, 1
  %1250 = mul nsw i64 %1249, %27
  %1251 = getelementptr double, ptr %1246, i64 %1250
  %1252 = load double, ptr %1251, align 8, !tbaa !9
  %1253 = getelementptr inbounds double, ptr %36, i64 %.1926023229
  %1254 = load double, ptr %1253, align 8, !tbaa !9
  %1255 = fmul double %1252, %1254
  store double %1255, ptr %1253, align 8, !tbaa !9
  %1256 = getelementptr double, ptr %1247, i64 %.1926023229
  %1257 = load double, ptr %1256, align 8, !tbaa !9
  %1258 = load double, ptr %1251, align 8, !tbaa !9
  %1259 = fmul double %1257, %1258
  store double %1259, ptr %1251, align 8, !tbaa !9
  %1260 = add nsw i64 %.1926023229, %1221
  %1261 = icmp sge i64 %1260, %1229
  %1262 = icmp sle i64 %1260, %1229
  %.in2663 = select i1 %1245, i1 %1261, i1 %1262
  br i1 %.in2663, label %1248, label %._crit_edge3232, !llvm.loop !86

._crit_edge3232:                                  ; preds = %1248, %._crit_edge3227
  br i1 %.not26472904, label %1272, label %1263

1263:                                             ; preds = %._crit_edge3232
  %1264 = sub nsw i64 %.1260827742809, %.925683233
  %1265 = sub nsw i64 %1222, %1224
  %1266 = icmp sge i64 %1264, %1265
  %1267 = load i64, ptr %24, align 8
  %.not2664 = icmp sgt i64 %.925683233, %1267
  %or.cond2760 = select i1 %1266, i1 true, i1 %.not2664
  br i1 %or.cond2760, label %1272, label %1268

1268:                                             ; preds = %1263
  %1269 = getelementptr inbounds double, ptr %36, i64 %1264
  %1270 = load double, ptr %1269, align 8, !tbaa !9
  %1271 = getelementptr double, ptr %1269, i64 %1224
  store double %1270, ptr %1271, align 8, !tbaa !9
  br label %1272

1272:                                             ; preds = %._crit_edge3232, %1268, %1263
  %1273 = add nsw i64 %.925683233, -1
  %1274 = icmp sgt i64 %.925683233, 1
  br i1 %1274, label %.lr.ph3235, label %._crit_edge3236, !llvm.loop !87

._crit_edge3236:                                  ; preds = %1272
  %.pre3816 = load i64, ptr %4, align 8, !tbaa !5
  %1275 = icmp sgt i64 %.pre3816, 0
  br i1 %1275, label %.lr.ph3262, label %._crit_edge3263.thread

.lr.ph3262:                                       ; preds = %._crit_edge3236, %.loopexit2872
  %.1025693260 = phi i64 [ %1370, %.loopexit2872 ], [ %.pre3816, %._crit_edge3236 ]
  store i64 1, ptr %17, align 8, !tbaa !5
  %1276 = sub nsw i64 %.1025693260, %.1255027772807
  %1277 = add nsw i64 %1276, 1
  store i64 %1277, ptr %16, align 8, !tbaa !5
  %1278 = xor i64 %.1025693260, -1
  %1279 = add i64 %.1260827742809, %1278
  %1280 = icmp slt i64 %1276, 1
  %1281 = select i1 %1280, i64 1, i64 %1277
  %1282 = load i64, ptr %22, align 8, !tbaa !5
  %1283 = mul nsw i64 %1282, %1281
  %1284 = add nsw i64 %1279, %1283
  %1285 = load i64, ptr %2, align 8, !tbaa !5
  %1286 = sub i64 %1285, %1284
  %1287 = load i64, ptr %3, align 8, !tbaa !5
  %1288 = add nsw i64 %1286, %1287
  %1289 = sdiv i64 %1288, %1282
  store i64 %1289, ptr %20, align 8, !tbaa !5
  %1290 = add nsw i64 %1289, -1
  %1291 = mul nsw i64 %1290, %1282
  %1292 = add nsw i64 %1291, %1284
  %1293 = icmp sgt i64 %1289, 0
  br i1 %1293, label %1294, label %1324

1294:                                             ; preds = %.lr.ph3262
  %1295 = sub nsw i64 %1284, %1287
  %1296 = mul nsw i64 %1295, %27
  %1297 = getelementptr double, ptr %29, i64 %1282
  %1298 = getelementptr double, ptr %1297, i64 %1296
  %1299 = getelementptr double, ptr %36, i64 %1284
  %1300 = getelementptr double, ptr %36, i64 %1285
  %1301 = getelementptr double, ptr %1300, i64 %1284
  %1302 = call i32 @dlargv_(ptr noundef nonnull %20, ptr noundef %1298, ptr noundef nonnull %26, ptr noundef nonnull %1299, ptr noundef nonnull %22, ptr noundef %1301, ptr noundef nonnull %22) #5
  %1303 = load i64, ptr %3, align 8, !tbaa !5
  %1304 = add nsw i64 %1303, -1
  store i64 %1304, ptr %17, align 8, !tbaa !5
  %.not26603241 = icmp slt i64 %1303, 2
  br i1 %.not26603241, label %._crit_edge3245, label %.lr.ph3244

.lr.ph3244:                                       ; preds = %1294, %.lr.ph3244
  %.93242 = phi i64 [ %1305, %.lr.ph3244 ], [ 1, %1294 ]
  %1305 = add nuw nsw i64 %.93242, 1
  %1306 = sub nsw i64 %1284, %.93242
  %1307 = mul nsw i64 %1306, %27
  %1308 = getelementptr double, ptr %29, i64 %1305
  %1309 = getelementptr double, ptr %1308, i64 %1307
  %gep3238 = getelementptr double, ptr %invariant.gep3190, i64 %.93242
  %1310 = getelementptr double, ptr %gep3238, i64 %1307
  %1311 = load i64, ptr %2, align 8, !tbaa !5
  %gep3240 = getelementptr double, ptr %1299, i64 %1311
  %1312 = call i32 @dlartv_(ptr noundef nonnull %20, ptr noundef %1309, ptr noundef nonnull %26, ptr noundef %1310, ptr noundef nonnull %26, ptr noundef %gep3240, ptr noundef nonnull %1299, ptr noundef nonnull %22) #5
  %1313 = load i64, ptr %17, align 8, !tbaa !5
  %.not2660.not = icmp slt i64 %.93242, %1313
  br i1 %.not2660.not, label %.lr.ph3244, label %._crit_edge3245, !llvm.loop !88

._crit_edge3245:                                  ; preds = %.lr.ph3244, %1294
  %1314 = mul nsw i64 %1284, %27
  %1315 = getelementptr double, ptr %29, i64 %1314
  %1316 = getelementptr i8, ptr %1315, i64 8
  %1317 = add nsw i64 %1284, 1
  %1318 = mul nsw i64 %1317, %27
  %gep3259 = getelementptr double, ptr %invariant.gep3281, i64 %1318
  %1319 = getelementptr i8, ptr %1315, i64 16
  %1320 = load i64, ptr %2, align 8, !tbaa !5
  %1321 = getelementptr double, ptr %36, i64 %1320
  %1322 = getelementptr double, ptr %1321, i64 %1284
  %1323 = call i32 @dlar2v_(ptr noundef nonnull %20, ptr noundef %1316, ptr noundef %gep3259, ptr noundef %1319, ptr noundef nonnull %26, ptr noundef %1322, ptr noundef nonnull %1299, ptr noundef nonnull %22) #5
  %.pre3817 = load i64, ptr %3, align 8, !tbaa !5
  br label %1324

1324:                                             ; preds = %._crit_edge3245, %.lr.ph3262
  %1325 = phi i64 [ %.pre3817, %._crit_edge3245 ], [ %1287, %.lr.ph3262 ]
  %1326 = load i64, ptr %4, align 8, !tbaa !5
  %reass.sub3687 = sub i64 %1326, %.1025693260
  %1327 = add i64 %reass.sub3687, 1
  store i64 %1327, ptr %17, align 8, !tbaa !5
  %invariant.gep3246 = getelementptr double, ptr %36, i64 %1284
  %.not2661.not3249 = icmp sgt i64 %1325, %1327
  br i1 %.not2661.not3249, label %.lr.ph3252, label %._crit_edge3253

.lr.ph3252:                                       ; preds = %1324
  %1328 = mul nsw i64 %1284, %27
  %1329 = add nsw i64 %1284, 1
  %1330 = mul nsw i64 %1329, %27
  br label %1331

1331:                                             ; preds = %.lr.ph3252, %1346
  %1332 = phi i64 [ %1327, %.lr.ph3252 ], [ %1347, %1346 ]
  %.103250.in = phi i64 [ %1325, %.lr.ph3252 ], [ %.103250, %1346 ]
  %.103250 = add nsw i64 %.103250.in, -1
  %1333 = load i64, ptr %2, align 8, !tbaa !5
  %1334 = sub i64 %.103250, %1284
  %1335 = add i64 %1334, %1333
  %1336 = load i64, ptr %22, align 8, !tbaa !5
  %1337 = sdiv i64 %1335, %1336
  store i64 %1337, ptr %25, align 8, !tbaa !5
  %1338 = icmp sgt i64 %1337, 0
  br i1 %1338, label %1339, label %1346

1339:                                             ; preds = %1331
  %1340 = sub nsw i64 %1336, %.103250
  %1341 = getelementptr double, ptr %29, i64 %1340
  %1342 = getelementptr i8, ptr %1341, i64 8
  %1343 = getelementptr double, ptr %1342, i64 %1328
  %1344 = getelementptr double, ptr %1341, i64 %1330
  %gep3247 = getelementptr double, ptr %invariant.gep3246, i64 %1333
  %1345 = call i32 @dlartv_(ptr noundef nonnull %25, ptr noundef %1343, ptr noundef nonnull %26, ptr noundef %1344, ptr noundef nonnull %26, ptr noundef %gep3247, ptr noundef nonnull %invariant.gep3246, ptr noundef nonnull %22) #5
  %.pre3818 = load i64, ptr %17, align 8, !tbaa !5
  br label %1346

1346:                                             ; preds = %1331, %1339
  %1347 = phi i64 [ %1332, %1331 ], [ %.pre3818, %1339 ]
  %.not2661.not = icmp sgt i64 %.103250, %1347
  br i1 %.not2661.not, label %1331, label %._crit_edge3253, !llvm.loop !89

._crit_edge3253:                                  ; preds = %1346, %1324
  br i1 %.not, label %1348, label %.loopexit2872

1348:                                             ; preds = %._crit_edge3253
  store i64 %1292, ptr %17, align 8, !tbaa !5
  %1349 = load i64, ptr %22, align 8, !tbaa !5
  store i64 %1349, ptr %16, align 8, !tbaa !5
  %1350 = icmp slt i64 %1349, 0
  %1351 = icmp slt i64 %1291, 1
  %1352 = icmp sgt i64 %1291, -1
  %.in3254 = select i1 %1350, i1 %1351, i1 %1352
  br i1 %.in3254, label %.lr.ph3257, label %.loopexit2872

.lr.ph3257:                                       ; preds = %1348, %.lr.ph3257
  %.2026033255 = phi i64 [ %1365, %.lr.ph3257 ], [ %1284, %1348 ]
  %1353 = load i64, ptr %2, align 8, !tbaa !5
  %1354 = sub nsw i64 %1353, %78
  store i64 %1354, ptr %14, align 8, !tbaa !5
  %1355 = mul nsw i64 %.2026033255, %33
  %1356 = getelementptr double, ptr %83, i64 %1355
  %1357 = add nsw i64 %.2026033255, 1
  %1358 = mul nsw i64 %1357, %33
  %1359 = getelementptr double, ptr %83, i64 %1358
  %1360 = getelementptr double, ptr %36, i64 %1353
  %1361 = getelementptr double, ptr %1360, i64 %.2026033255
  %1362 = getelementptr inbounds double, ptr %36, i64 %.2026033255
  %1363 = call i32 @f2c_drot(ptr noundef nonnull %14, ptr noundef %1356, ptr noundef nonnull @c__1, ptr noundef %1359, ptr noundef nonnull @c__1, ptr noundef %1361, ptr noundef nonnull %1362) #5
  %1364 = load i64, ptr %16, align 8, !tbaa !5
  %1365 = add nsw i64 %1364, %.2026033255
  %1366 = icmp slt i64 %1364, 0
  %1367 = load i64, ptr %17, align 8
  %1368 = icmp sge i64 %1365, %1367
  %1369 = icmp sle i64 %1365, %1367
  %.in = select i1 %1366, i1 %1368, i1 %1369
  br i1 %.in, label %.lr.ph3257, label %.loopexit2872, !llvm.loop !90

.loopexit2872:                                    ; preds = %.lr.ph3257, %1348, %._crit_edge3253
  %1370 = add nsw i64 %.1025693260, -1
  %1371 = icmp sgt i64 %.1025693260, 1
  br i1 %1371, label %.lr.ph3262, label %._crit_edge3263, !llvm.loop !91

._crit_edge3263.thread:                           ; preds = %._crit_edge3236, %1180
  %.ph3867 = phi i64 [ %.pre3816, %._crit_edge3236 ], [ %1181, %1180 ]
  %1372 = add nsw i64 %.ph3867, -1
  store i64 %1372, ptr %16, align 8, !tbaa !5
  br label %.loopexit2876

._crit_edge3263:                                  ; preds = %.loopexit2872
  %.pre3819 = load i64, ptr %4, align 8, !tbaa !5
  %1373 = add nsw i64 %.pre3819, -1
  store i64 %1373, ptr %16, align 8, !tbaa !5
  %.not26583268 = icmp slt i64 %.pre3819, 2
  br i1 %.not26583268, label %.loopexit2876, label %.lr.ph3271

.lr.ph3271:                                       ; preds = %._crit_edge3263, %._crit_edge3267
  %1374 = phi i64 [ %1410, %._crit_edge3267 ], [ %1373, %._crit_edge3263 ]
  %.1125703269 = phi i64 [ %1411, %._crit_edge3267 ], [ 1, %._crit_edge3263 ]
  store i64 1, ptr %17, align 8, !tbaa !5
  %1375 = sub nsw i64 %.1125703269, %.1255027772807
  %1376 = add nsw i64 %1375, 2
  store i64 %1376, ptr %14, align 8, !tbaa !5
  %1377 = load i64, ptr %4, align 8, !tbaa !5
  %1378 = sub nsw i64 %1377, %.1125703269
  %1379 = icmp sgt i64 %1378, 0
  br i1 %1379, label %.lr.ph3266, label %._crit_edge3267

.lr.ph3266:                                       ; preds = %.lr.ph3271
  %1380 = xor i64 %.1125703269, -1
  %1381 = add i64 %.1260827742809, %1380
  %1382 = load i64, ptr %22, align 8, !tbaa !5
  %1383 = icmp slt i64 %1375, 0
  %1384 = select i1 %1383, i64 1, i64 %1376
  %1385 = mul nsw i64 %1382, %1384
  %1386 = add nsw i64 %1381, %1385
  %1387 = mul nsw i64 %1386, %27
  %1388 = add nsw i64 %1386, 1
  %1389 = mul nsw i64 %1388, %27
  %1390 = sub i64 %1386, %78
  %1391 = getelementptr double, ptr %36, i64 %1390
  br label %1392

1392:                                             ; preds = %.lr.ph3266, %1407
  %.113264 = phi i64 [ %1378, %.lr.ph3266 ], [ %1408, %1407 ]
  %1393 = load i64, ptr %2, align 8, !tbaa !5
  %1394 = sub i64 %.113264, %1386
  %1395 = add i64 %1394, %1393
  %1396 = load i64, ptr %22, align 8, !tbaa !5
  %1397 = sdiv i64 %1395, %1396
  store i64 %1397, ptr %25, align 8, !tbaa !5
  %1398 = icmp sgt i64 %1397, 0
  br i1 %1398, label %1399, label %1407

1399:                                             ; preds = %1392
  %1400 = sub nsw i64 %1396, %.113264
  %1401 = getelementptr double, ptr %29, i64 %1400
  %1402 = getelementptr i8, ptr %1401, i64 8
  %1403 = getelementptr double, ptr %1402, i64 %1387
  %1404 = getelementptr double, ptr %1401, i64 %1389
  %1405 = getelementptr double, ptr %1391, i64 %1393
  %1406 = call i32 @dlartv_(ptr noundef nonnull %25, ptr noundef %1403, ptr noundef nonnull %26, ptr noundef %1404, ptr noundef nonnull %26, ptr noundef nonnull %1405, ptr noundef nonnull %1391, ptr noundef nonnull %22) #5
  br label %1407

1407:                                             ; preds = %1392, %1399
  %1408 = add nsw i64 %.113264, -1
  %1409 = icmp sgt i64 %.113264, 1
  br i1 %1409, label %1392, label %._crit_edge3267.loopexit, !llvm.loop !92

._crit_edge3267.loopexit:                         ; preds = %1407
  %.pre3820 = load i64, ptr %16, align 8, !tbaa !5
  br label %._crit_edge3267

._crit_edge3267:                                  ; preds = %._crit_edge3267.loopexit, %.lr.ph3271
  %1410 = phi i64 [ %.pre3820, %._crit_edge3267.loopexit ], [ %1374, %.lr.ph3271 ]
  %1411 = add nuw nsw i64 %.1125703269, 1
  %.not2658.not = icmp slt i64 %.1125703269, %1410
  br i1 %.not2658.not, label %.lr.ph3271, label %._crit_edge3272, !llvm.loop !93

._crit_edge3272:                                  ; preds = %._crit_edge3267
  %.pre3821 = load i64, ptr %4, align 8, !tbaa !5
  %1412 = icmp sgt i64 %.pre3821, 1
  br i1 %1412, label %1413, label %.loopexit2876

1413:                                             ; preds = %._crit_edge3272
  %1414 = load i64, ptr %3, align 8, !tbaa !5
  %1415 = shl i64 %1414, 1
  %1416 = add i64 %.1260827742809, 1
  %1417 = sub i64 %1416, %.pre3821
  %1418 = add i64 %1417, %1415
  store i64 %1418, ptr %16, align 8, !tbaa !5
  %1419 = load i64, ptr %2, align 8, !tbaa !5
  %.not2659.not3273 = icmp sgt i64 %1419, %1418
  br i1 %.not2659.not3273, label %.lr.ph3276, label %.loopexit2876

.lr.ph3276:                                       ; preds = %1413
  %1420 = add i64 %1414, %78
  %1421 = add nsw i64 %.pre3821, -1
  %1422 = add i64 %1421, %1419
  %1423 = add i64 %.1260827742809, %1415
  %1424 = sub i64 %1422, %1423
  %min.iters.check = icmp ult i64 %1424, 36
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %.lr.ph3276
  %1425 = add nsw i64 %.pre3821, -2
  %1426 = add i64 %1425, %1419
  %1427 = add i64 %.1260827742809, %1415
  %1428 = sub i64 %1426, %1427
  %1429 = shl i64 %1419, 4
  %scevgep3922 = getelementptr i8, ptr %scevgep, i64 %1429
  %mul.result.neg = mul i64 %1428, -8
  %1430 = getelementptr i8, ptr %scevgep3922, i64 %mul.result.neg
  %1431 = icmp ugt ptr %1430, %scevgep3922
  %1432 = shl i64 %1419, 3
  %scevgep3924 = getelementptr i8, ptr %scevgep3923, i64 %1432
  %mul.result3926.neg = mul i64 %1428, -8
  %mul.overflow3927 = icmp ugt i64 %1428, 2305843009213693951
  %1433 = getelementptr i8, ptr %scevgep3924, i64 %mul.result3926.neg
  %1434 = icmp ugt ptr %1433, %scevgep3924
  %1435 = or i1 %1434, %mul.overflow3927
  %1436 = shl i64 %1420, 3
  %1437 = sub i64 %1429, %1436
  %scevgep3929 = getelementptr i8, ptr %scevgep3928, i64 %1437
  %mul.result3931.neg = mul i64 %1428, -8
  %1438 = getelementptr i8, ptr %scevgep3929, i64 %mul.result3931.neg
  %1439 = icmp ugt ptr %1438, %scevgep3929
  %1440 = sub i64 %1432, %1436
  %scevgep3934 = getelementptr i8, ptr %scevgep3933, i64 %1440
  %mul.result3936.neg = mul i64 %1428, -8
  %1441 = getelementptr i8, ptr %scevgep3934, i64 %mul.result3936.neg
  %1442 = icmp ugt ptr %1441, %scevgep3934
  %1443 = or i1 %1431, %1435
  %1444 = or i1 %1439, %1443
  %1445 = or i1 %1442, %1444
  br i1 %1445, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %vector.scevcheck
  %1446 = and i64 %1419, 2305843009213693950
  %diff.check = icmp eq i64 %1446, 0
  %1447 = mul i64 %1414, -8
  %diff.check3938 = icmp ult i64 %1447, 16
  %conflict.rdx = or i1 %diff.check, %diff.check3938
  %1448 = add i64 %1414, %1419
  %1449 = and i64 %1448, 2305843009213693950
  %diff.check3939 = icmp eq i64 %1449, 0
  %conflict.rdx3940 = or i1 %conflict.rdx, %diff.check3939
  %1450 = sub i64 %1419, %1414
  %1451 = and i64 %1450, 2305843009213693950
  %diff.check3941 = icmp eq i64 %1451, 0
  %conflict.rdx3942 = or i1 %conflict.rdx3940, %diff.check3941
  br i1 %conflict.rdx3942, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %1424, -2
  %ind.end = sub i64 %1419, %n.vec
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %1452 = xor i64 %index, -1
  %1453 = add i64 %1419, %1452
  %1454 = add nsw i64 %1453, %1419
  %1455 = sub i64 %1454, %1420
  %gep4411 = getelementptr double, ptr %invariant.gep4410, i64 %1455
  %wide.load = load <2 x double>, ptr %gep4411, align 8, !tbaa !9
  %1456 = sub nsw i64 %1454, %78
  %gep4413 = getelementptr double, ptr %invariant.gep4412, i64 %1456
  store <2 x double> %wide.load, ptr %gep4413, align 8, !tbaa !9
  %1457 = sub i64 %1453, %1420
  %gep4415 = getelementptr double, ptr %invariant.gep4414, i64 %1457
  %wide.load3944 = load <2 x double>, ptr %gep4415, align 8, !tbaa !9
  %1458 = sub nsw i64 %1453, %78
  %gep4417 = getelementptr double, ptr %invariant.gep4416, i64 %1458
  store <2 x double> %wide.load3944, ptr %gep4417, align 8, !tbaa !9
  %index.next = add nuw i64 %index, 2
  %1459 = icmp eq i64 %index.next, %n.vec
  br i1 %1459, label %middle.block, label %vector.body, !llvm.loop !94

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

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %vector.scevcheck, %.lr.ph3276
  %.212604.in3274.ph = phi i64 [ %1419, %vector.memcheck ], [ %1419, %vector.scevcheck ], [ %1419, %.lr.ph3276 ], [ %ind.end, %middle.block ]
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %.212604.in3274 = phi i64 [ %.212604, %scalar.ph ], [ %.212604.in3274.ph, %scalar.ph.preheader ]
  %.212604 = add nsw i64 %.212604.in3274, -1
  %1460 = add nsw i64 %.212604, %1419
  %1461 = sub i64 %1460, %1420
  %1462 = getelementptr inbounds double, ptr %36, i64 %1461
  %1463 = load double, ptr %1462, align 8, !tbaa !9
  %1464 = sub nsw i64 %1460, %78
  %1465 = getelementptr inbounds double, ptr %36, i64 %1464
  store double %1463, ptr %1465, align 8, !tbaa !9
  %1466 = sub i64 %.212604, %1420
  %1467 = getelementptr inbounds double, ptr %36, i64 %1466
  %1468 = load double, ptr %1467, align 8, !tbaa !9
  %1469 = sub nsw i64 %.212604, %78
  %1470 = getelementptr inbounds double, ptr %36, i64 %1469
  store double %1468, ptr %1470, align 8, !tbaa !9
  %.not2659.not = icmp sgt i64 %.212604, %1418
  br i1 %.not2659.not, label %scalar.ph, label %.loopexit2876, !llvm.loop !95

.loopexit2876:                                    ; preds = %scalar.ph3977, %scalar.ph, %middle.block3976, %middle.block, %._crit_edge3263.thread, %._crit_edge3263, %._crit_edge3171.thread, %._crit_edge3171, %755, %1413, %._crit_edge3272, %._crit_edge3180
  %1471 = phi i64 [ %.pre3821, %._crit_edge3272 ], [ %.pre3804, %._crit_edge3180 ], [ %.pre3821, %1413 ], [ %.pre3804, %755 ], [ %.ph, %._crit_edge3171.thread ], [ %.pre3802, %._crit_edge3171 ], [ %.ph3867, %._crit_edge3263.thread ], [ %.pre3819, %._crit_edge3263 ], [ %.pre3821, %middle.block ], [ %.pre3804, %middle.block3976 ], [ %.pre3821, %scalar.ph ], [ %.pre3804, %scalar.ph3977 ]
  %.02908 = phi i64 [ %.02910, %._crit_edge3272 ], [ %.02909, %._crit_edge3180 ], [ %.02910, %1413 ], [ %.02909, %755 ], [ %.02909, %._crit_edge3171.thread ], [ %.02909, %._crit_edge3171 ], [ %.02910, %._crit_edge3263.thread ], [ %.02910, %._crit_edge3263 ], [ %.02910, %middle.block ], [ %.02909, %middle.block3976 ], [ %.02910, %scalar.ph ], [ %.02909, %scalar.ph3977 ]
  %.125412782 = phi i64 [ %.1254127832803, %._crit_edge3272 ], [ %.1254127812790, %._crit_edge3180 ], [ %.1254127832803, %1413 ], [ %.1254127812790, %755 ], [ %.1254127812790, %._crit_edge3171.thread ], [ %.1254127812790, %._crit_edge3171 ], [ %.1254127832803, %._crit_edge3263.thread ], [ %.1254127832803, %._crit_edge3263 ], [ %.1254127832803, %middle.block ], [ %.1254127812790, %middle.block3976 ], [ %.1254127832803, %scalar.ph ], [ %.1254127812790, %scalar.ph3977 ]
  %.125452779 = phi i64 [ %.1254527802805, %._crit_edge3272 ], [ %.1254527782792, %._crit_edge3180 ], [ %.1254527802805, %1413 ], [ %.1254527782792, %755 ], [ %.1254527782792, %._crit_edge3171.thread ], [ %.1254527782792, %._crit_edge3171 ], [ %.1254527802805, %._crit_edge3263.thread ], [ %.1254527802805, %._crit_edge3263 ], [ %.1254527802805, %middle.block ], [ %.1254527782792, %middle.block3976 ], [ %.1254527802805, %scalar.ph ], [ %.1254527782792, %scalar.ph3977 ]
  %.125502776 = phi i64 [ %.1255027772807, %._crit_edge3272 ], [ %.1255027752794, %._crit_edge3180 ], [ %.1255027772807, %1413 ], [ %.1255027752794, %755 ], [ %.1255027752794, %._crit_edge3171.thread ], [ %.1255027752794, %._crit_edge3171 ], [ %.1255027772807, %._crit_edge3263.thread ], [ %.1255027772807, %._crit_edge3263 ], [ %.1255027772807, %middle.block ], [ %.1255027752794, %middle.block3976 ], [ %.1255027772807, %scalar.ph ], [ %.1255027752794, %scalar.ph3977 ]
  %.126082773 = phi i64 [ %.1260827742809, %._crit_edge3272 ], [ %.1260827722796, %._crit_edge3180 ], [ %.1260827742809, %1413 ], [ %.1260827722796, %755 ], [ %.1260827722796, %._crit_edge3171.thread ], [ %.1260827722796, %._crit_edge3171 ], [ %.1260827742809, %._crit_edge3263.thread ], [ %.1260827742809, %._crit_edge3263 ], [ %.1260827742809, %middle.block ], [ %.1260827722796, %middle.block3976 ], [ %.1260827742809, %scalar.ph ], [ %.1260827722796, %scalar.ph3977 ]
  %.pre3743.pre = load i64, ptr %2, align 8, !tbaa !5
  br label %.outer2878

.loopexit2880:                                    ; preds = %._crit_edge, %.lr.ph.split
  %.22551 = phi i64 [ %78, %.lr.ph.split ], [ %.02549.lcssa, %._crit_edge ]
  %.22546 = phi i64 [ %98, %.lr.ph.split ], [ %.02544.lcssa, %._crit_edge ]
  %.22542 = phi i64 [ %101, %.lr.ph.split ], [ %.02540.lcssa, %._crit_edge ]
  %invariant.gep3662 = getelementptr i8, ptr %35, i64 8
  br i1 %.not2642, label %.outer.us.preheader, label %.outer.preheader

.outer.preheader:                                 ; preds = %.loopexit2880
  %gep3347.prol = getelementptr i8, ptr %81, i64 -8
  br label %.outer

.outer.us.preheader:                              ; preds = %.loopexit2880
  %1472 = shl i64 %27, 3
  %1473 = add i64 %1472, -8
  %scevgep4218 = getelementptr i8, ptr %7, i64 8
  %scevgep4220 = getelementptr i8, ptr %7, i64 8
  %1474 = shl i64 %27, 3
  %1475 = add i64 %1474, -8
  %scevgep4252 = getelementptr i8, ptr %7, i64 8
  %scevgep4254 = getelementptr i8, ptr %7, i64 8
  %scevgep4256 = getelementptr i8, ptr %5, i64 8
  %scevgep4258 = getelementptr i8, ptr %5, i64 8
  %1476 = shl i64 %27, 3
  %1477 = shl i64 %27, 3
  %scevgep4300 = getelementptr i8, ptr %5, i64 8
  %scevgep4302 = getelementptr i8, ptr %5, i64 8
  %scevgep4305 = getelementptr i8, ptr %7, i64 8
  %scevgep4307 = getelementptr i8, ptr %7, i64 8
  %invariant.gep4422 = getelementptr i8, ptr %5, i64 16
  %invariant.gep4424 = getelementptr i8, ptr %5, i64 8
  %invariant.gep4426 = getelementptr i8, ptr %7, i64 16
  %invariant.gep4428 = getelementptr i8, ptr %7, i64 8
  %invariant.gep4430 = getelementptr i8, ptr %5, i64 8
  %stride.check4267 = icmp slt i64 %1475, 0
  br label %.outer.us

.outer.us:                                        ; preds = %.outer.us.backedge, %.outer.us.preheader
  %.pre3768 = phi i64 [ %.pre3741, %.outer.us.preheader ], [ %.pre3768.be, %.outer.us.backedge ]
  %1478 = phi i64 [ %93, %.outer.us.preheader ], [ %.be, %.outer.us.backedge ]
  %.22609.ph.us = phi i64 [ 0, %.outer.us.preheader ], [ %.32610.us, %.outer.us.backedge ]
  %.32552.ph.us = phi i64 [ %.22551, %.outer.us.preheader ], [ %.42553.us, %.outer.us.backedge ]
  %.32547.ph.us = phi i64 [ %.22546, %.outer.us.preheader ], [ %.42548.us, %.outer.us.backedge ]
  %.32543.ph.us = phi i64 [ %.22542, %.outer.us.preheader ], [ %.4.us, %.outer.us.backedge ]
  %.1.ph.us = phi i64 [ 1, %.outer.us.preheader ], [ %.12886.us, %.outer.us.backedge ]
  %.not26983285.us = icmp eq i64 %.1.ph.us, 0
  br i1 %.not26983285.us, label %1479, label %.lr.ph3288.us

1479:                                             ; preds = %.lr.ph3288.split.split.us, %.outer.us
  %.32552.lcssa.us = phi i64 [ %80, %.lr.ph3288.split.split.us ], [ %.32552.ph.us, %.outer.us ]
  %.32547.lcssa.us = phi i64 [ %2061, %.lr.ph3288.split.split.us ], [ %.32547.ph.us, %.outer.us ]
  %.32543.lcssa.us = phi i64 [ %2064, %.lr.ph3288.split.split.us ], [ %.32543.ph.us, %.outer.us ]
  %1480 = sub nsw i64 %.22609.ph.us, %.pre3768
  %1481 = icmp slt i64 %1480, 2
  br i1 %1481, label %.loopexit2869, label %1482

1482:                                             ; preds = %.lr.ph3288.split.us.us, %1479
  %.12886.us = phi i64 [ 0, %1479 ], [ %.1.ph.us, %.lr.ph3288.split.us.us ]
  %.not26982883.us = phi i1 [ true, %1479 ], [ false, %.lr.ph3288.split.us.us ]
  %.32610.us = phi i64 [ %1480, %1479 ], [ %2057, %.lr.ph3288.split.us.us ]
  %.42553.us = phi i64 [ %.32552.lcssa.us, %1479 ], [ %2066, %.lr.ph3288.split.us.us ]
  %.42548.us = phi i64 [ %.32547.lcssa.us, %1479 ], [ %2061, %.lr.ph3288.split.us.us ]
  %.4.us = phi i64 [ %.32543.lcssa.us, %1479 ], [ %2064, %.lr.ph3288.split.us.us ]
  %1483 = load i64, ptr %24, align 8, !tbaa !5
  %1484 = sub nsw i64 %78, %1483
  %1485 = icmp slt i64 %.32610.us, %1484
  br i1 %1485, label %1488, label %1486

1486:                                             ; preds = %1482
  %1487 = load i64, ptr %2, align 8, !tbaa !5
  br label %1488

1488:                                             ; preds = %1486, %1482
  %storemerge.us = phi i64 [ %1487, %1486 ], [ %78, %1482 ]
  store i64 %storemerge.us, ptr %21, align 8, !tbaa !5
  br i1 %.not26982883.us, label %1614, label %1489

1489:                                             ; preds = %1488
  %1490 = mul nsw i64 %.32610.us, %30
  %1491 = getelementptr double, ptr %32, i64 %1490
  %1492 = getelementptr i8, ptr %1491, i64 8
  %1493 = load double, ptr %1492, align 8, !tbaa !9
  store i64 %.32610.us, ptr %17, align 8, !tbaa !5
  %.not27023477.us = icmp sgt i64 %.42548.us, %.32610.us
  br i1 %.not27023477.us, label %._crit_edge3481.us, label %.lr.ph3480.us.preheader

.lr.ph3480.us.preheader:                          ; preds = %1489
  %1494 = add i64 %.32610.us, %.42548.us
  %1495 = and i64 %1494, 1
  %lcmp.mod4395.not.not = icmp eq i64 %1495, 0
  br i1 %lcmp.mod4395.not.not, label %.lr.ph3480.us.prol, label %.lr.ph3480.us.prol.loopexit

.lr.ph3480.us.prol:                               ; preds = %.lr.ph3480.us.preheader
  %1496 = sub nsw i64 %.32610.us, %.42548.us
  %1497 = mul nsw i64 %.42548.us, %27
  %gep3476.us.prol = getelementptr double, ptr %invariant.gep3281, i64 %1496
  %1498 = getelementptr double, ptr %gep3476.us.prol, i64 %1497
  %1499 = load double, ptr %1498, align 8, !tbaa !9
  %1500 = fdiv double %1499, %1493
  store double %1500, ptr %1498, align 8, !tbaa !9
  %1501 = add i64 %.42548.us, 1
  br label %.lr.ph3480.us.prol.loopexit

.lr.ph3480.us.prol.loopexit:                      ; preds = %.lr.ph3480.us.prol, %.lr.ph3480.us.preheader
  %.333478.us.unr = phi i64 [ %.42548.us, %.lr.ph3480.us.preheader ], [ %1501, %.lr.ph3480.us.prol ]
  %1502 = icmp eq i64 %.32610.us, %.42548.us
  br i1 %1502, label %._crit_edge3481.us, label %.lr.ph3480.us

.lr.ph3480.us:                                    ; preds = %.lr.ph3480.us.prol.loopexit, %.lr.ph3480.us
  %.333478.us = phi i64 [ %1514, %.lr.ph3480.us ], [ %.333478.us.unr, %.lr.ph3480.us.prol.loopexit ]
  %1503 = sub nsw i64 %.32610.us, %.333478.us
  %1504 = mul nsw i64 %.333478.us, %27
  %gep3476.us = getelementptr double, ptr %invariant.gep3281, i64 %1503
  %1505 = getelementptr double, ptr %gep3476.us, i64 %1504
  %1506 = load double, ptr %1505, align 8, !tbaa !9
  %1507 = fdiv double %1506, %1493
  store double %1507, ptr %1505, align 8, !tbaa !9
  %1508 = add i64 %.333478.us, 1
  %1509 = sub nsw i64 %.32610.us, %1508
  %1510 = mul nsw i64 %1508, %27
  %gep3476.us.1 = getelementptr double, ptr %invariant.gep3281, i64 %1509
  %1511 = getelementptr double, ptr %gep3476.us.1, i64 %1510
  %1512 = load double, ptr %1511, align 8, !tbaa !9
  %1513 = fdiv double %1512, %1493
  store double %1513, ptr %1511, align 8, !tbaa !9
  %1514 = add i64 %.333478.us, 2
  %exitcond3723.not.1 = icmp eq i64 %1508, %.32610.us
  br i1 %exitcond3723.not.1, label %._crit_edge3481.us, label %.lr.ph3480.us, !llvm.loop !96

._crit_edge3481.us:                               ; preds = %.lr.ph3480.us.prol.loopexit, %.lr.ph3480.us, %1489
  %1515 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %1515, ptr %16, align 8, !tbaa !5
  %1516 = add nsw i64 %.pre3768, %.32610.us
  store i64 %1516, ptr %14, align 8, !tbaa !5
  %1517 = call i64 @llvm.smin.i64(i64 %1515, i64 %1516)
  %.not27043484.us = icmp sgt i64 %.32610.us, %1517
  br i1 %.not27043484.us, label %._crit_edge3488.us, label %.lr.ph3487.us

scalar.ph4355:                                    ; preds = %scalar.ph4355.preheader, %scalar.ph4355
  %.343485.us = phi i64 [ %1521, %scalar.ph4355 ], [ %.343485.us.ph, %scalar.ph4355.preheader ]
  %1518 = sub nsw i64 %.343485.us, %.32610.us
  %gep3490.us = getelementptr double, ptr %invariant.gep3489.us, i64 %1518
  %1519 = load double, ptr %gep3490.us, align 8, !tbaa !9
  %1520 = fdiv double %1519, %1493
  store double %1520, ptr %gep3490.us, align 8, !tbaa !9
  %1521 = add i64 %.343485.us, 1
  %exitcond3724.not = icmp eq i64 %.343485.us, %1517
  br i1 %exitcond3724.not, label %._crit_edge3488.us, label %scalar.ph4355, !llvm.loop !97

._crit_edge3488.us:                               ; preds = %scalar.ph4355, %middle.block4354, %._crit_edge3481.us
  %1522 = add i64 %1483, %.32610.us
  %1523 = add i64 %.32610.us, 1
  %.not27053521.us = icmp slt i64 %1483, 1
  br i1 %.not27053521.us, label %1574, label %.lr.ph3524.us

1524:                                             ; preds = %.lr.ph3524.us, %._crit_edge3516.us
  %indvar4291 = phi i64 [ 0, %.lr.ph3524.us ], [ %indvar.next4292, %._crit_edge3516.us ]
  %.1825773522.us = phi i64 [ %1523, %.lr.ph3524.us ], [ %1566, %._crit_edge3516.us ]
  %smax4331 = call i64 @llvm.smax.i64(i64 %.1825773522.us, i64 %1522)
  %1525 = add i64 %.32610.us, %indvar4291
  %1526 = sub i64 %smax4331, %1525
  %1527 = mul nsw i64 %.1825773522.us, %27
  %invariant.gep3500.us = getelementptr double, ptr %invariant.gep3281, i64 %1527
  %1528 = sub nsw i64 %.1825773522.us, %.32610.us
  %1529 = add nsw i64 %1528, 1
  %gep3527.us = getelementptr double, ptr %invariant.gep3526.us, i64 %1529
  %gep3496.us = getelementptr double, ptr %1491, i64 %1529
  %min.iters.check4334 = icmp ult i64 %1526, 4
  br i1 %min.iters.check4334, label %scalar.ph4333.preheader, label %vector.memcheck4290

vector.memcheck4290:                              ; preds = %1524
  %1530 = shl i64 %indvar4291, 3
  %scevgep4310 = getelementptr i8, ptr %gep4423, i64 %1530
  %smax4295 = call i64 @llvm.smax.i64(i64 %.1825773522.us, i64 %1522)
  %1531 = sub i64 %2111, %indvar4291
  %1532 = add i64 %smax4295, %1531
  %1533 = shl i64 %1532, 3
  %scevgep4311 = getelementptr i8, ptr %scevgep4310, i64 %1533
  %scevgep4309 = getelementptr i8, ptr %gep4425, i64 %1530
  %scevgep4298 = getelementptr i8, ptr %gep4427, i64 %1530
  %scevgep4299 = getelementptr i8, ptr %scevgep4298, i64 %1533
  %scevgep4297 = getelementptr i8, ptr %gep4429, i64 %1530
  %1534 = mul i64 %1477, %indvar4291
  %scevgep4294 = getelementptr i8, ptr %gep4431, i64 %1534
  %scevgep4296 = getelementptr i8, ptr %scevgep4294, i64 %1533
  %scevgep4293 = getelementptr i8, ptr %2121, i64 %1534
  %bound04312 = icmp ult ptr %scevgep4293, %scevgep4299
  %bound14313 = icmp ult ptr %scevgep4297, %scevgep4296
  %found.conflict4314 = and i1 %bound04312, %bound14313
  %bound04315 = icmp ult ptr %scevgep4293, %scevgep4304
  %bound14316 = icmp ult ptr %scevgep4301, %scevgep4296
  %found.conflict4317 = and i1 %bound04315, %bound14316
  %conflict.rdx4318 = or i1 %found.conflict4314, %found.conflict4317
  %bound04319 = icmp ult ptr %scevgep4293, %scevgep4308
  %bound14320 = icmp ult ptr %scevgep4306, %scevgep4296
  %found.conflict4321 = and i1 %bound04319, %bound14320
  %conflict.rdx4322 = or i1 %conflict.rdx4318, %found.conflict4321
  %bound04323 = icmp ult ptr %scevgep4293, %scevgep4311
  %bound14324 = icmp ult ptr %scevgep4309, %scevgep4296
  %found.conflict4325 = and i1 %bound04323, %bound14324
  %conflict.rdx4326 = or i1 %conflict.rdx4322, %found.conflict4325
  %bound04327 = icmp ult ptr %scevgep4293, %scevgep4301
  %bound14328 = icmp ult ptr %gep3498.us, %scevgep4296
  %found.conflict4329 = and i1 %bound04327, %bound14328
  %conflict.rdx4330 = or i1 %conflict.rdx4326, %found.conflict4329
  br i1 %conflict.rdx4330, label %scalar.ph4333.preheader, label %vector.ph4335

vector.ph4335:                                    ; preds = %vector.memcheck4290
  %n.vec4337 = and i64 %1526, -2
  %ind.end4338 = add i64 %.1825773522.us, %n.vec4337
  %1535 = load double, ptr %gep3527.us, align 8, !tbaa !9, !alias.scope !98
  %broadcast.splatinsert4345 = insertelement <2 x double> poison, double %1535, i64 0
  %broadcast.splat4346 = shufflevector <2 x double> %broadcast.splatinsert4345, <2 x double> poison, <2 x i32> zeroinitializer
  %1536 = load double, ptr %gep3496.us, align 8, !tbaa !9, !alias.scope !101
  %broadcast.splatinsert4348 = insertelement <2 x double> poison, double %1536, i64 0
  %broadcast.splat4349 = shufflevector <2 x double> %broadcast.splatinsert4348, <2 x double> poison, <2 x i32> zeroinitializer
  %1537 = fneg <2 x double> %broadcast.splat4349
  %1538 = load double, ptr %gep3498.us, align 8, !tbaa !9, !alias.scope !103
  %broadcast.splatinsert4350 = insertelement <2 x double> poison, double %1538, i64 0
  %broadcast.splat4351 = shufflevector <2 x double> %broadcast.splatinsert4350, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body4340

vector.body4340:                                  ; preds = %vector.body4340, %vector.ph4335
  %index4341 = phi i64 [ 0, %vector.ph4335 ], [ %index.next4352, %vector.body4340 ]
  %offset.idx4342 = add i64 %.1825773522.us, %index4341
  %1539 = getelementptr double, ptr %invariant.gep3500.us, i64 %index4341
  %wide.load4343 = load <2 x double>, ptr %1539, align 8, !tbaa !9, !alias.scope !105, !noalias !107
  %1540 = sub nsw i64 %offset.idx4342, %.32610.us
  %1541 = add nsw i64 %1540, 1
  %1542 = getelementptr double, ptr %1491, i64 %1541
  %wide.load4344 = load <2 x double>, ptr %1542, align 8, !tbaa !9, !alias.scope !110
  %1543 = fneg <2 x double> %wide.load4344
  %1544 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1543, <2 x double> %broadcast.splat4346, <2 x double> %wide.load4343)
  %1545 = getelementptr double, ptr %invariant.gep3526.us, i64 %1541
  %wide.load4347 = load <2 x double>, ptr %1545, align 8, !tbaa !9, !alias.scope !111
  %1546 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1537, <2 x double> %wide.load4347, <2 x double> %1544)
  %1547 = fmul <2 x double> %wide.load4344, %broadcast.splat4351
  %1548 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1547, <2 x double> %broadcast.splat4349, <2 x double> %1546)
  store <2 x double> %1548, ptr %1539, align 8, !tbaa !9, !alias.scope !105, !noalias !107
  %index.next4352 = add nuw i64 %index4341, 2
  %1549 = icmp eq i64 %index.next4352, %n.vec4337
  br i1 %1549, label %middle.block4332, label %vector.body4340, !llvm.loop !112

middle.block4332:                                 ; preds = %vector.body4340
  %cmp.n4353 = icmp eq i64 %1526, %n.vec4337
  br i1 %cmp.n4353, label %.loopexit, label %scalar.ph4333.preheader

scalar.ph4333.preheader:                          ; preds = %middle.block4332, %vector.memcheck4290, %1524
  %.353499.us.ph = phi i64 [ %.1825773522.us, %vector.memcheck4290 ], [ %.1825773522.us, %1524 ], [ %ind.end4338, %middle.block4332 ]
  br label %scalar.ph4333

scalar.ph4333:                                    ; preds = %scalar.ph4333.preheader, %scalar.ph4333
  %.353499.us = phi i64 [ %1565, %scalar.ph4333 ], [ %.353499.us.ph, %scalar.ph4333.preheader ]
  %1550 = sub nsw i64 %.353499.us, %.1825773522.us
  %gep3501.us = getelementptr double, ptr %invariant.gep3500.us, i64 %1550
  %1551 = load double, ptr %gep3501.us, align 8, !tbaa !9
  %1552 = sub nsw i64 %.353499.us, %.32610.us
  %1553 = add nsw i64 %1552, 1
  %gep3494.us = getelementptr double, ptr %1491, i64 %1553
  %1554 = load double, ptr %gep3494.us, align 8, !tbaa !9
  %1555 = load double, ptr %gep3527.us, align 8, !tbaa !9
  %1556 = fneg double %1554
  %1557 = call double @llvm.fmuladd.f64(double %1556, double %1555, double %1551)
  %1558 = load double, ptr %gep3496.us, align 8, !tbaa !9
  %gep3503.us = getelementptr double, ptr %invariant.gep3526.us, i64 %1553
  %1559 = load double, ptr %gep3503.us, align 8, !tbaa !9
  %1560 = fneg double %1558
  %1561 = call double @llvm.fmuladd.f64(double %1560, double %1559, double %1557)
  %1562 = load double, ptr %gep3498.us, align 8, !tbaa !9
  %1563 = fmul double %1554, %1562
  %1564 = call double @llvm.fmuladd.f64(double %1563, double %1558, double %1561)
  store double %1564, ptr %gep3501.us, align 8, !tbaa !9
  %1565 = add nsw i64 %.353499.us, 1
  %.not2726.us.not = icmp slt i64 %.353499.us, %1522
  br i1 %.not2726.us.not, label %scalar.ph4333, label %.loopexit, !llvm.loop !113

.loopexit:                                        ; preds = %scalar.ph4333, %middle.block4332
  br i1 %.not2728.not3512.us, label %.lr.ph3515.us, label %._crit_edge3516.us

._crit_edge3516.us:                               ; preds = %scalar.ph4270, %middle.block4269, %.loopexit
  %1566 = add i64 %.1825773522.us, 1
  %.not2705.us.not = icmp slt i64 %.1825773522.us, %1522
  %indvar.next4292 = add i64 %indvar4291, 1
  br i1 %.not2705.us.not, label %1524, label %._crit_edge3525.us, !llvm.loop !114

scalar.ph4270:                                    ; preds = %scalar.ph4270.preheader, %scalar.ph4270
  %.36.in3513.us = phi i64 [ %.36.us, %scalar.ph4270 ], [ %.36.in3513.us.ph, %scalar.ph4270.preheader ]
  %.36.us = add nsw i64 %.36.in3513.us, 1
  %1567 = load double, ptr %gep3507.us, align 8, !tbaa !9
  %1568 = sub nsw i64 %.36.us, %.32610.us
  %gep3518.us = getelementptr double, ptr %gep3498.us, i64 %1568
  %1569 = load double, ptr %gep3518.us, align 8, !tbaa !9
  %1570 = sub nsw i64 %.36.us, %.1825773522.us
  %gep3520.us = getelementptr double, ptr %invariant.gep3500.us, i64 %1570
  %1571 = load double, ptr %gep3520.us, align 8, !tbaa !9
  %1572 = fneg double %1567
  %1573 = call double @llvm.fmuladd.f64(double %1572, double %1569, double %1571)
  store double %1573, ptr %gep3520.us, align 8, !tbaa !9
  %.not2728.not.us = icmp slt i64 %.36.us, %1517
  br i1 %.not2728.not.us, label %scalar.ph4270, label %._crit_edge3516.us, !llvm.loop !115

1574:                                             ; preds = %._crit_edge3525.us, %._crit_edge3488.us
  store i64 %.32610.us, ptr %17, align 8, !tbaa !5
  br i1 %.not27023477.us, label %1598, label %.lr.ph3546.us

1575:                                             ; preds = %.lr.ph3546.us, %._crit_edge3540.us
  %indvar4212 = phi i64 [ 0, %.lr.ph3546.us ], [ %indvar.next4213, %._crit_edge3540.us ]
  %indvars.iv3725 = phi i64 [ %2149, %.lr.ph3546.us ], [ %indvars.iv.next3726, %._crit_edge3540.us ]
  %.373544.us = phi i64 [ %.42548.us, %.lr.ph3546.us ], [ %1597, %._crit_edge3540.us ]
  %smin4396 = call i64 @llvm.smin.i64(i64 %indvars.iv3725, i64 %1522)
  %smin4226 = call i64 @llvm.smin.i64(i64 %indvars.iv3725, i64 %1522)
  %1576 = sub i64 %smin4226, %.32610.us
  %1577 = mul i64 %1473, %indvar4212
  %scevgep4214 = getelementptr i8, ptr %2161, i64 %1577
  %scevgep4215 = getelementptr i8, ptr %2162, i64 %1577
  %smin4216 = call i64 @llvm.smin.i64(i64 %indvars.iv3725, i64 %1522)
  %1578 = shl i64 %smin4216, 3
  %scevgep4217 = getelementptr i8, ptr %scevgep4215, i64 %1578
  %scevgep4222 = getelementptr i8, ptr %scevgep4221, i64 %1578
  %smin3727 = call i64 @llvm.smin.i64(i64 %indvars.iv3725, i64 %1522)
  %1579 = add nsw i64 %.373544.us, %.pre3768
  %1580 = call i64 @llvm.smin.i64(i64 %1579, i64 %1522)
  %.not27253536.us.not = icmp slt i64 %.32610.us, %1580
  br i1 %.not27253536.us.not, label %.lr.ph3539.us, label %._crit_edge3540.us

scalar.ph4228:                                    ; preds = %scalar.ph4228.prol.loopexit, %scalar.ph4228
  %.1925783537.us = phi i64 [ %1596, %scalar.ph4228 ], [ %.1925783537.us.unr, %scalar.ph4228.prol.loopexit ]
  %1581 = sub nsw i64 %.1925783537.us, %.32610.us
  %gep3531.us = getelementptr double, ptr %invariant.gep3530.us, i64 %1581
  %1582 = load double, ptr %gep3531.us, align 8, !tbaa !9
  %1583 = load double, ptr %2125, align 8, !tbaa !9
  %1584 = sub nsw i64 %.1925783537.us, %.373544.us
  %gep3542.us = getelementptr double, ptr %invariant.gep3541.us, i64 %1584
  %1585 = load double, ptr %gep3542.us, align 8, !tbaa !9
  %1586 = fneg double %1582
  %1587 = call double @llvm.fmuladd.f64(double %1586, double %1583, double %1585)
  store double %1587, ptr %gep3542.us, align 8, !tbaa !9
  %1588 = add i64 %.1925783537.us, 1
  %1589 = sub nsw i64 %1588, %.32610.us
  %gep3531.us.1 = getelementptr double, ptr %invariant.gep3530.us, i64 %1589
  %1590 = load double, ptr %gep3531.us.1, align 8, !tbaa !9
  %1591 = load double, ptr %2125, align 8, !tbaa !9
  %1592 = sub nsw i64 %1588, %.373544.us
  %gep3542.us.1 = getelementptr double, ptr %invariant.gep3541.us, i64 %1592
  %1593 = load double, ptr %gep3542.us.1, align 8, !tbaa !9
  %1594 = fneg double %1590
  %1595 = call double @llvm.fmuladd.f64(double %1594, double %1591, double %1593)
  store double %1595, ptr %gep3542.us.1, align 8, !tbaa !9
  %1596 = add i64 %.1925783537.us, 2
  %exitcond3728.not.1 = icmp eq i64 %1588, %smin3727
  br i1 %exitcond3728.not.1, label %._crit_edge3540.us, label %scalar.ph4228, !llvm.loop !116

._crit_edge3540.us:                               ; preds = %scalar.ph4228.prol.loopexit, %scalar.ph4228, %middle.block4227, %1575
  %1597 = add i64 %.373544.us, 1
  %indvars.iv.next3726 = add i64 %indvars.iv3725, 1
  %exitcond3730.not = icmp eq i64 %.373544.us, %.32610.us
  %indvar.next4213 = add i64 %indvar4212, 1
  br i1 %exitcond3730.not, label %._crit_edge3547.us, label %1575, !llvm.loop !117

1598:                                             ; preds = %._crit_edge3547.us, %1574
  br i1 %.not, label %1599, label %1609

1599:                                             ; preds = %1598
  %1600 = fdiv double 1.000000e+00, %1493
  store double %1600, ptr %18, align 8, !tbaa !9
  %1601 = mul nsw i64 %.32610.us, %33
  %gep3667.us = getelementptr double, ptr %invariant.gep3662, i64 %1601
  %1602 = call i32 @f2c_dscal(ptr noundef nonnull %21, ptr noundef nonnull %18, ptr noundef %gep3667.us, ptr noundef nonnull @c__1) #5
  %1603 = load i64, ptr %24, align 8, !tbaa !5
  %1604 = icmp sgt i64 %1603, 0
  br i1 %1604, label %1605, label %1609

1605:                                             ; preds = %1599
  %1606 = getelementptr i8, ptr %1491, i64 16
  %1607 = mul nsw i64 %1523, %33
  %gep3669.us = getelementptr double, ptr %invariant.gep3662, i64 %1607
  %1608 = call i32 @f2c_dger(ptr noundef nonnull %21, ptr noundef nonnull %24, ptr noundef nonnull @c_b20, ptr noundef %gep3667.us, ptr noundef nonnull @c__1, ptr noundef %1606, ptr noundef nonnull @c__1, ptr noundef %gep3669.us, ptr noundef nonnull %10) #5
  br label %1609

1609:                                             ; preds = %1605, %1599, %1598
  %1610 = sub nsw i64 %.32610.us, %.42548.us
  %1611 = mul nsw i64 %.42548.us, %27
  %gep3671.us = getelementptr double, ptr %invariant.gep3281, i64 %1610
  %1612 = getelementptr double, ptr %gep3671.us, i64 %1611
  %1613 = load double, ptr %1612, align 8, !tbaa !9
  store double %1613, ptr %23, align 8, !tbaa !9
  %.pre3769 = load i64, ptr %4, align 8, !tbaa !5
  br label %1614

1614:                                             ; preds = %1609, %1488
  %1615 = phi i64 [ %.pre3769, %1609 ], [ %1478, %1488 ]
  %1616 = add nsw i64 %1615, -1
  store i64 %1616, ptr %17, align 8, !tbaa !5
  %invariant.gep3584.us = getelementptr double, ptr %36, i64 %.32610.us
  %.not27073588.us = icmp slt i64 %1615, 2
  br i1 %.not27073588.us, label %._crit_edge3592.us, label %.lr.ph3591.us

1617:                                             ; preds = %.lr.ph3591.us, %.loopexit2864.us
  %.2025793589.us = phi i64 [ 1, %.lr.ph3591.us ], [ %1735, %.loopexit2864.us ]
  %.pre3770 = load i64, ptr %22, align 8, !tbaa !5
  br i1 %.not26982883.us, label %._crit_edge3771, label %1618

._crit_edge3771:                                  ; preds = %1617
  %.pre3772 = load i64, ptr %3, align 8, !tbaa !5
  br label %1662

1618:                                             ; preds = %1617
  %1619 = add i64 %.2025793589.us, %.32610.us
  %1620 = icmp sgt i64 %1619, %.pre3770
  %1621 = icmp slt i64 %1619, %78
  %or.cond2763.us = select i1 %1620, i1 %1621, i1 false
  %.pre3773 = load i64, ptr %3, align 8, !tbaa !5
  br i1 %or.cond2763.us, label %1622, label %1662

1622:                                             ; preds = %1618
  %1623 = sub nsw i64 %.pre3770, %.2025793589.us
  %1624 = sub i64 %1619, %.pre3773
  %1625 = mul nsw i64 %1624, %27
  %1626 = getelementptr double, ptr %29, i64 %1623
  %1627 = getelementptr double, ptr %1626, i64 %1625
  %1628 = load i64, ptr %2, align 8, !tbaa !5
  %1629 = getelementptr double, ptr %36, i64 %1624
  %1630 = getelementptr double, ptr %1629, i64 %1628
  %1631 = call i32 @dlartg_(ptr noundef %1627, ptr noundef nonnull %23, ptr noundef nonnull %1630, ptr noundef nonnull %1629, ptr noundef nonnull %19) #5
  %gep3594.us = getelementptr double, ptr %invariant.gep3593.us, i64 %.2025793589.us
  %1632 = load double, ptr %gep3594.us, align 8, !tbaa !9
  %1633 = fneg double %1632
  %1634 = load double, ptr %23, align 8, !tbaa !9
  %1635 = fmul double %1634, %1633
  %1636 = load i64, ptr %2, align 8, !tbaa !5
  %1637 = load i64, ptr %3, align 8, !tbaa !5
  %1638 = add i64 %1619, %1636
  %1639 = sub i64 %1638, %1637
  %1640 = getelementptr inbounds double, ptr %36, i64 %1639
  %1641 = load double, ptr %1640, align 8, !tbaa !9
  %1642 = sub nsw i64 %1619, %1637
  %1643 = getelementptr inbounds double, ptr %36, i64 %1642
  %1644 = load double, ptr %1643, align 8, !tbaa !9
  %1645 = load i64, ptr %22, align 8, !tbaa !5
  %1646 = mul nsw i64 %1642, %27
  %1647 = getelementptr double, ptr %29, i64 %1645
  %1648 = getelementptr double, ptr %1647, i64 %1646
  %1649 = load double, ptr %1648, align 8, !tbaa !9
  %1650 = fneg double %1644
  %1651 = fmul double %1649, %1650
  %1652 = call double @llvm.fmuladd.f64(double %1641, double %1635, double %1651)
  %1653 = load i64, ptr %4, align 8, !tbaa !5
  %1654 = sub nsw i64 %78, %1653
  %gep3585.us = getelementptr double, ptr %invariant.gep3584.us, i64 %1654
  %1655 = getelementptr double, ptr %gep3585.us, i64 %.2025793589.us
  store double %1652, ptr %1655, align 8, !tbaa !9
  %1656 = load double, ptr %1643, align 8, !tbaa !9
  %1657 = load double, ptr %1640, align 8, !tbaa !9
  %1658 = load double, ptr %1648, align 8, !tbaa !9
  %1659 = fmul double %1657, %1658
  %1660 = call double @llvm.fmuladd.f64(double %1656, double %1635, double %1659)
  store double %1660, ptr %1648, align 8, !tbaa !9
  %1661 = load double, ptr %19, align 8, !tbaa !9
  store double %1661, ptr %23, align 8, !tbaa !9
  br label %1662

1662:                                             ; preds = %._crit_edge3771, %1622, %1618
  %1663 = phi i64 [ %1637, %1622 ], [ %.pre3773, %1618 ], [ %.pre3772, %._crit_edge3771 ]
  %1664 = phi i64 [ %1645, %1622 ], [ %.pre3770, %1618 ], [ %.pre3770, %._crit_edge3771 ]
  %1665 = add i64 %2170, %.2025793589.us
  %1666 = call i64 @llvm.smax.i64(i64 %1665, i64 1)
  %1667 = mul nsw i64 %1664, %1666
  %1668 = add i64 %2171, %.2025793589.us
  %1669 = sub i64 %1668, %1667
  %1670 = add i64 %1663, -1
  %1671 = add i64 %1670, %1669
  %1672 = sdiv i64 %1671, %1664
  store i64 %1672, ptr %20, align 8, !tbaa !5
  %1673 = add nsw i64 %1672, -1
  %1674 = mul nsw i64 %1673, %1664
  %1675 = sub nsw i64 %1669, %1674
  br i1 %.not26982883.us, label %1681, label %1676

1676:                                             ; preds = %1662
  %1677 = add i64 %2172, %.2025793589.us
  %1678 = shl i64 %1663, 1
  %1679 = sub i64 %1677, %1678
  %1680 = call i64 @llvm.smin.i64(i64 %1669, i64 %1679)
  %.pre3831 = add i64 %1670, %1680
  %.pre3832 = sdiv i64 %.pre3831, %1664
  br label %1681

1681:                                             ; preds = %1676, %1662
  %.pre-phi3833 = phi i64 [ %.pre3832, %1676 ], [ %1672, %1662 ]
  %.3.us = phi i64 [ %1680, %1676 ], [ %1669, %1662 ]
  store i64 %.pre-phi3833, ptr %25, align 8, !tbaa !5
  store i64 %.3.us, ptr %16, align 8, !tbaa !5
  store i64 %1664, ptr %14, align 8, !tbaa !5
  %1682 = icmp slt i64 %1664, 0
  %1683 = icmp sge i64 %1675, %.3.us
  %1684 = icmp sle i64 %1675, %.3.us
  %.in27203550.us = select i1 %1682, i1 %1683, i1 %1684
  br i1 %.in27203550.us, label %.lr.ph3553.us, label %._crit_edge3554.us

._crit_edge3554.us:                               ; preds = %1762, %1681
  %1685 = icmp sgt i64 %.pre-phi3833, 0
  br i1 %1685, label %1686, label %1695

1686:                                             ; preds = %._crit_edge3554.us
  %1687 = mul nsw i64 %1675, %27
  %1688 = getelementptr double, ptr %29, i64 %1664
  %1689 = getelementptr double, ptr %1688, i64 %1687
  %1690 = getelementptr inbounds double, ptr %36, i64 %1675
  %1691 = load i64, ptr %2, align 8, !tbaa !5
  %1692 = getelementptr double, ptr %36, i64 %1691
  %1693 = getelementptr double, ptr %1692, i64 %1675
  %1694 = call i32 @dlargv_(ptr noundef nonnull %25, ptr noundef %1689, ptr noundef nonnull %26, ptr noundef nonnull %1690, ptr noundef nonnull %22, ptr noundef %1693, ptr noundef nonnull %22) #5
  %.pre3774 = load i64, ptr %20, align 8, !tbaa !5
  %.pre3776.pre = load i64, ptr %3, align 8, !tbaa !5
  br label %1695

1695:                                             ; preds = %1686, %._crit_edge3554.us
  %.pre3776 = phi i64 [ %.pre3776.pre, %1686 ], [ %1663, %._crit_edge3554.us ]
  %1696 = phi i64 [ %.pre3774, %1686 ], [ %1672, %._crit_edge3554.us ]
  %1697 = icmp sgt i64 %1696, 0
  br i1 %1697, label %1698, label %1712

1698:                                             ; preds = %1695
  %1699 = add nsw i64 %.pre3776, -1
  store i64 %1699, ptr %14, align 8, !tbaa !5
  %invariant.gep3557.us = getelementptr double, ptr %36, i64 %1675
  %.not27213559.us = icmp slt i64 %.pre3776, 2
  %.pre3857 = mul nsw i64 %1675, %27
  br i1 %.not27213559.us, label %.._crit_edge3563.us_crit_edge, label %.lr.ph3562.us

.._crit_edge3563.us_crit_edge:                    ; preds = %1698
  %.pre3859 = add nsw i64 %1675, -1
  %.pre3861 = mul nsw i64 %.pre3859, %27
  br label %._crit_edge3563.us

1700:                                             ; preds = %.lr.ph3562.us, %1700
  %.183560.us = phi i64 [ 1, %.lr.ph3562.us ], [ %1701, %1700 ]
  %1701 = add nuw nsw i64 %.183560.us, 1
  %gep3565.us = getelementptr double, ptr %invariant.gep3564.us, i64 %1701
  %gep3567.us = getelementptr double, ptr %invariant.gep3566.us, i64 %.183560.us
  %1702 = load i64, ptr %2, align 8, !tbaa !5
  %gep3558.us = getelementptr double, ptr %invariant.gep3557.us, i64 %1702
  %1703 = call i32 @dlartv_(ptr noundef nonnull %20, ptr noundef %gep3565.us, ptr noundef nonnull %26, ptr noundef %gep3567.us, ptr noundef nonnull %26, ptr noundef %gep3558.us, ptr noundef nonnull %invariant.gep3557.us, ptr noundef nonnull %22) #5
  %1704 = load i64, ptr %14, align 8, !tbaa !5
  %.not2721.us.not = icmp slt i64 %.183560.us, %1704
  br i1 %.not2721.us.not, label %1700, label %._crit_edge3563.us, !llvm.loop !118

._crit_edge3563.us:                               ; preds = %1700, %.._crit_edge3563.us_crit_edge
  %.pre-phi3862 = phi i64 [ %.pre3861, %.._crit_edge3563.us_crit_edge ], [ %2167, %1700 ]
  %gep3587.us = getelementptr double, ptr %invariant.gep3281, i64 %.pre3857
  %1705 = getelementptr double, ptr %29, i64 %.pre-phi3862
  %1706 = getelementptr i8, ptr %1705, i64 8
  %1707 = getelementptr i8, ptr %1705, i64 16
  %1708 = load i64, ptr %2, align 8, !tbaa !5
  %1709 = getelementptr double, ptr %36, i64 %1708
  %1710 = getelementptr double, ptr %1709, i64 %1675
  %1711 = call i32 @dlar2v_(ptr noundef nonnull %20, ptr noundef %gep3587.us, ptr noundef %1706, ptr noundef %1707, ptr noundef nonnull %26, ptr noundef %1710, ptr noundef nonnull %invariant.gep3557.us, ptr noundef nonnull %22) #5
  %.pre3775 = load i64, ptr %3, align 8, !tbaa !5
  br label %1712

1712:                                             ; preds = %._crit_edge3563.us, %1695
  %1713 = phi i64 [ %.pre3775, %._crit_edge3563.us ], [ %.pre3776, %1695 ]
  %1714 = load i64, ptr %4, align 8, !tbaa !5
  %reass.sub3679 = sub i64 %1714, %.2025793589.us
  %1715 = add i64 %reass.sub3679, 1
  store i64 %1715, ptr %14, align 8, !tbaa !5
  %.not2722.not3569.us = icmp sgt i64 %1713, %1715
  br i1 %.not2722.not3569.us, label %.lr.ph3572.us, label %._crit_edge3573.us

._crit_edge3573.us:                               ; preds = %1760, %1712
  br i1 %.not, label %1716, label %.loopexit2864.us

1716:                                             ; preds = %._crit_edge3573.us
  store i64 %1669, ptr %14, align 8, !tbaa !5
  %1717 = load i64, ptr %22, align 8, !tbaa !5
  store i64 %1717, ptr %16, align 8, !tbaa !5
  %1718 = icmp slt i64 %1717, 0
  %1719 = icmp slt i64 %1674, 1
  %1720 = icmp sgt i64 %1674, -1
  %.in27233578.us = select i1 %1718, i1 %1719, i1 %1720
  br i1 %.in27233578.us, label %.lr.ph3581.us, label %.loopexit2864.us

.lr.ph3581.us:                                    ; preds = %1716, %.lr.ph3581.us
  %.393579.us = phi i64 [ %1730, %.lr.ph3581.us ], [ %1675, %1716 ]
  %1721 = mul nsw i64 %.393579.us, %33
  %gep3575.us = getelementptr double, ptr %invariant.gep3662, i64 %1721
  %1722 = add nsw i64 %.393579.us, -1
  %1723 = mul nsw i64 %1722, %33
  %gep3577.us = getelementptr double, ptr %invariant.gep3662, i64 %1723
  %1724 = load i64, ptr %2, align 8, !tbaa !5
  %1725 = getelementptr double, ptr %36, i64 %1724
  %1726 = getelementptr double, ptr %1725, i64 %.393579.us
  %1727 = getelementptr inbounds double, ptr %36, i64 %.393579.us
  %1728 = call i32 @f2c_drot(ptr noundef nonnull %21, ptr noundef %gep3575.us, ptr noundef nonnull @c__1, ptr noundef %gep3577.us, ptr noundef nonnull @c__1, ptr noundef %1726, ptr noundef nonnull %1727) #5
  %1729 = load i64, ptr %16, align 8, !tbaa !5
  %1730 = add nsw i64 %1729, %.393579.us
  %1731 = icmp slt i64 %1729, 0
  %1732 = load i64, ptr %14, align 8
  %1733 = icmp sge i64 %1730, %1732
  %1734 = icmp sle i64 %1730, %1732
  %.in2723.us = select i1 %1731, i1 %1733, i1 %1734
  br i1 %.in2723.us, label %.lr.ph3581.us, label %.loopexit2864.us, !llvm.loop !119

.loopexit2864.us:                                 ; preds = %.lr.ph3581.us, %1716, %._crit_edge3573.us
  %1735 = add nuw nsw i64 %.2025793589.us, 1
  %1736 = load i64, ptr %17, align 8, !tbaa !5
  %.not2707.us.not = icmp slt i64 %.2025793589.us, %1736
  br i1 %.not2707.us.not, label %1617, label %._crit_edge3592.us, !llvm.loop !120

1737:                                             ; preds = %.lr.ph3572.us, %1760
  %1738 = phi i64 [ %1715, %.lr.ph3572.us ], [ %1761, %1760 ]
  %.193570.us.in = phi i64 [ %1713, %.lr.ph3572.us ], [ %.193570.us, %1760 ]
  %.193570.us = add nsw i64 %.193570.us.in, -1
  %1739 = add i64 %2168, %.193570.us
  %1740 = load i64, ptr %22, align 8, !tbaa !5
  %1741 = sdiv i64 %1739, %1740
  store i64 %1741, ptr %25, align 8, !tbaa !5
  %1742 = icmp sgt i64 %1741, 0
  br i1 %1742, label %1743, label %1760

1743:                                             ; preds = %1737
  %1744 = add nsw i64 %1741, -1
  %1745 = mul nsw i64 %1744, %1740
  %1746 = sub nsw i64 %1669, %1745
  %1747 = sub nsw i64 %1740, %.193570.us
  %1748 = sub i64 %.193570.us, %1740
  %1749 = add i64 %1748, %1746
  %1750 = mul nsw i64 %1749, %27
  %1751 = getelementptr double, ptr %29, i64 %1747
  %1752 = getelementptr i8, ptr %1751, i64 8
  %1753 = getelementptr double, ptr %1752, i64 %1750
  %1754 = getelementptr double, ptr %1751, i64 %1750
  %1755 = load i64, ptr %2, align 8, !tbaa !5
  %1756 = getelementptr double, ptr %36, i64 %1755
  %1757 = getelementptr double, ptr %1756, i64 %1746
  %1758 = getelementptr inbounds double, ptr %36, i64 %1746
  %1759 = call i32 @dlartv_(ptr noundef nonnull %25, ptr noundef %1753, ptr noundef nonnull %26, ptr noundef %1754, ptr noundef nonnull %26, ptr noundef %1757, ptr noundef nonnull %1758, ptr noundef nonnull %22) #5
  %.pre3777 = load i64, ptr %14, align 8, !tbaa !5
  br label %1760

1760:                                             ; preds = %1743, %1737
  %1761 = phi i64 [ %.pre3777, %1743 ], [ %1738, %1737 ]
  %.not2722.not.us = icmp sgt i64 %.193570.us, %1761
  br i1 %.not2722.not.us, label %1737, label %._crit_edge3573.us, !llvm.loop !121

1762:                                             ; preds = %.lr.ph3553.us, %1762
  %.383551.us = phi i64 [ %1675, %.lr.ph3553.us ], [ %1774, %1762 ]
  %1763 = add nsw i64 %.383551.us, -1
  %1764 = mul nsw i64 %1763, %27
  %1765 = getelementptr double, ptr %2163, i64 %1764
  %1766 = load double, ptr %1765, align 8, !tbaa !9
  %1767 = getelementptr inbounds double, ptr %36, i64 %.383551.us
  %1768 = load double, ptr %1767, align 8, !tbaa !9
  %1769 = fmul double %1766, %1768
  store double %1769, ptr %1767, align 8, !tbaa !9
  %1770 = getelementptr double, ptr %2165, i64 %.383551.us
  %1771 = load double, ptr %1770, align 8, !tbaa !9
  %1772 = load double, ptr %1765, align 8, !tbaa !9
  %1773 = fmul double %1771, %1772
  store double %1773, ptr %1765, align 8, !tbaa !9
  %1774 = add nsw i64 %.383551.us, %1664
  %1775 = icmp sge i64 %1774, %.3.us
  %1776 = icmp sle i64 %1774, %.3.us
  %.in2720.us = select i1 %1682, i1 %1775, i1 %1776
  br i1 %.in2720.us, label %1762, label %._crit_edge3554.us, !llvm.loop !122

._crit_edge3592.us:                               ; preds = %.loopexit2864.us, %1614
  br i1 %.not26982883.us, label %._crit_edge3592.us._crit_edge, label %1777

._crit_edge3592.us._crit_edge:                    ; preds = %._crit_edge3592.us
  %.pre3778 = load i64, ptr %4, align 8, !tbaa !5
  br label %1792

1777:                                             ; preds = %._crit_edge3592.us
  %1778 = icmp sgt i64 %.4.us, 0
  %1779 = load i64, ptr %24, align 8
  %1780 = icmp sgt i64 %1779, 0
  %or.cond7.us = select i1 %1778, i1 %1780, i1 false
  %.pre3779 = load i64, ptr %4, align 8, !tbaa !5
  br i1 %or.cond7.us, label %1781, label %1792

1781:                                             ; preds = %1777
  %1782 = mul nsw i64 %.32610.us, %30
  %gep3673.us = getelementptr double, ptr %invariant.gep3277, i64 %1779
  %1783 = getelementptr double, ptr %gep3673.us, i64 %1782
  %1784 = load double, ptr %1783, align 8, !tbaa !9
  %1785 = fneg double %1784
  %1786 = load double, ptr %23, align 8, !tbaa !9
  %1787 = fmul double %1786, %1785
  %1788 = sub nsw i64 %78, %.pre3779
  %1789 = getelementptr double, ptr %36, i64 %1788
  %1790 = getelementptr double, ptr %1789, i64 %.32610.us
  %1791 = getelementptr double, ptr %1790, i64 %1779
  store double %1787, ptr %1791, align 8, !tbaa !9
  br label %1792

1792:                                             ; preds = %._crit_edge3592.us._crit_edge, %1781, %1777
  %1793 = phi i64 [ %.pre3778, %._crit_edge3592.us._crit_edge ], [ %.pre3779, %1781 ], [ %.pre3779, %1777 ]
  %1794 = icmp sgt i64 %1793, 0
  br i1 %1794, label %.lr.ph3612.us, label %._crit_edge3648.us.thread

._crit_edge3613.us:                               ; preds = %1997
  %.pre3781 = load i64, ptr %4, align 8, !tbaa !5
  %1795 = icmp sgt i64 %.pre3781, 0
  br i1 %1795, label %.lr.ph3647.us, label %._crit_edge3648.us.thread

._crit_edge3648.us.thread:                        ; preds = %._crit_edge3613.us, %1792
  %.ph3870 = phi i64 [ %.pre3781, %._crit_edge3613.us ], [ %1793, %1792 ]
  %1796 = add nsw i64 %.ph3870, -1
  store i64 %1796, ptr %16, align 8, !tbaa !5
  br label %._crit_edge3657.us.thread

._crit_edge3648.us:                               ; preds = %.loopexit.us
  %.pre3786 = load i64, ptr %4, align 8, !tbaa !5
  %1797 = add nsw i64 %.pre3786, -1
  store i64 %1797, ptr %16, align 8, !tbaa !5
  %.not27083653.us = icmp slt i64 %.pre3786, 2
  br i1 %.not27083653.us, label %._crit_edge3657.us.thread, label %.lr.ph3656.us

1798:                                             ; preds = %.lr.ph3656.us, %._crit_edge3652.us
  %1799 = phi i64 [ %1797, %.lr.ph3656.us ], [ %1809, %._crit_edge3652.us ]
  %.2325823654.us = phi i64 [ 1, %.lr.ph3656.us ], [ %1810, %._crit_edge3652.us ]
  store i64 1, ptr %17, align 8, !tbaa !5
  %1800 = add i64 %2191, %.2325823654.us
  store i64 %1800, ptr %14, align 8, !tbaa !5
  %1801 = call i64 @llvm.smax.i64(i64 %1800, i64 1)
  %1802 = load i64, ptr %22, align 8, !tbaa !5
  %1803 = mul nsw i64 %1802, %1801
  %1804 = add i64 %2192, %.2325823654.us
  %1805 = sub i64 %1804, %1803
  %1806 = load i64, ptr %4, align 8, !tbaa !5
  %1807 = sub nsw i64 %1806, %.2325823654.us
  %1808 = icmp sgt i64 %1807, 0
  br i1 %1808, label %.lr.ph3651.us, label %._crit_edge3652.us

._crit_edge3652.us.loopexit:                      ; preds = %1833
  %.pre3787 = load i64, ptr %16, align 8, !tbaa !5
  br label %._crit_edge3652.us

._crit_edge3652.us:                               ; preds = %._crit_edge3652.us.loopexit, %1798
  %1809 = phi i64 [ %.pre3787, %._crit_edge3652.us.loopexit ], [ %1799, %1798 ]
  %1810 = add nuw nsw i64 %.2325823654.us, 1
  %.not2708.us.not = icmp slt i64 %.2325823654.us, %1809
  br i1 %.not2708.us.not, label %1798, label %._crit_edge3657.us, !llvm.loop !123

1811:                                             ; preds = %.lr.ph3651.us, %1833
  %.233649.us = phi i64 [ %1807, %.lr.ph3651.us ], [ %1834, %1833 ]
  %1812 = add i64 %2190, %.233649.us
  %1813 = load i64, ptr %22, align 8, !tbaa !5
  %1814 = sdiv i64 %1812, %1813
  store i64 %1814, ptr %25, align 8, !tbaa !5
  %1815 = icmp sgt i64 %1814, 0
  br i1 %1815, label %1816, label %1833

1816:                                             ; preds = %1811
  %1817 = add nsw i64 %1814, -1
  %1818 = mul nsw i64 %1817, %1813
  %1819 = sub nsw i64 %1805, %1818
  %1820 = sub nsw i64 %1813, %.233649.us
  %1821 = sub i64 %.233649.us, %1813
  %1822 = add i64 %1821, %1819
  %1823 = mul nsw i64 %1822, %27
  %1824 = getelementptr double, ptr %29, i64 %1820
  %1825 = getelementptr i8, ptr %1824, i64 8
  %1826 = getelementptr double, ptr %1825, i64 %1823
  %1827 = getelementptr double, ptr %1824, i64 %1823
  %1828 = load i64, ptr %2, align 8, !tbaa !5
  %1829 = getelementptr double, ptr %36, i64 %1828
  %1830 = getelementptr double, ptr %1829, i64 %1819
  %1831 = getelementptr inbounds double, ptr %36, i64 %1819
  %1832 = call i32 @dlartv_(ptr noundef nonnull %25, ptr noundef %1826, ptr noundef nonnull %26, ptr noundef %1827, ptr noundef nonnull %26, ptr noundef %1830, ptr noundef nonnull %1831, ptr noundef nonnull %22) #5
  br label %1833

1833:                                             ; preds = %1816, %1811
  %1834 = add nsw i64 %.233649.us, -1
  %1835 = icmp sgt i64 %.233649.us, 1
  br i1 %1835, label %1811, label %._crit_edge3652.us.loopexit, !llvm.loop !124

._crit_edge3657.us.thread:                        ; preds = %._crit_edge3648.us, %._crit_edge3648.us.thread
  %.ph3872 = phi i64 [ %.ph3870, %._crit_edge3648.us.thread ], [ %.pre3786, %._crit_edge3648.us ]
  %.pre3768.pre.pre3873 = load i64, ptr %3, align 8, !tbaa !5
  br label %.outer.us.backedge

._crit_edge3657.us:                               ; preds = %._crit_edge3652.us
  %.pre3788 = load i64, ptr %4, align 8, !tbaa !5
  %1836 = icmp sgt i64 %.pre3788, 1
  %.pre3768.pre.pre = load i64, ptr %3, align 8, !tbaa !5
  br i1 %1836, label %1837, label %.outer.us.backedge

1837:                                             ; preds = %._crit_edge3657.us
  %1838 = add nsw i64 %.pre3788, %.32610.us
  store i64 %1838, ptr %17, align 8, !tbaa !5
  %1839 = call i64 @llvm.smin.i64(i64 %1838, i64 %78)
  %1840 = shl i64 %.pre3768.pre.pre, 1
  %1841 = xor i64 %1840, -1
  %1842 = add i64 %1839, %1841
  store i64 %1842, ptr %16, align 8, !tbaa !5
  %.not27103658.us = icmp slt i64 %1842, 2
  br i1 %.not27103658.us, label %.outer.us.backedge, label %.lr.ph3661.us

scalar.ph4195:                                    ; preds = %scalar.ph4195.preheader, %scalar.ph4195
  %.433659.us = phi i64 [ %1849, %scalar.ph4195 ], [ %.433659.us.ph, %scalar.ph4195.preheader ]
  %1843 = getelementptr double, ptr %2194, i64 %.433659.us
  %1844 = getelementptr double, ptr %1843, i64 %.pre3768.pre.pre
  %1845 = load double, ptr %1844, align 8, !tbaa !9
  store double %1845, ptr %1843, align 8, !tbaa !9
  %1846 = getelementptr double, ptr %36, i64 %.433659.us
  %1847 = getelementptr double, ptr %1846, i64 %.pre3768.pre.pre
  %1848 = load double, ptr %1847, align 8, !tbaa !9
  store double %1848, ptr %1846, align 8, !tbaa !9
  %1849 = add nuw i64 %.433659.us, 1
  %exitcond3732.not = icmp eq i64 %1849, %2195
  br i1 %exitcond3732.not, label %.outer.us.backedge, label %scalar.ph4195, !llvm.loop !125

1850:                                             ; preds = %.lr.ph3647.us, %.loopexit.us
  %.2225813645.us = phi i64 [ %.pre3781, %.lr.ph3647.us ], [ %1928, %.loopexit.us ]
  store i64 1, ptr %17, align 8, !tbaa !5
  %1851 = add i64 %2188, %.2225813645.us
  store i64 %1851, ptr %16, align 8, !tbaa !5
  %1852 = call i64 @llvm.smax.i64(i64 %1851, i64 1)
  %1853 = load i64, ptr %22, align 8, !tbaa !5
  %1854 = mul nsw i64 %1853, %1852
  %1855 = add i64 %2189, %.2225813645.us
  %1856 = sub i64 %1855, %1854
  %1857 = load i64, ptr %3, align 8, !tbaa !5
  %1858 = add i64 %1857, -1
  %1859 = add i64 %1858, %1856
  %1860 = sdiv i64 %1859, %1853
  store i64 %1860, ptr %20, align 8, !tbaa !5
  %1861 = add nsw i64 %1860, -1
  %1862 = mul nsw i64 %1861, %1853
  %1863 = sub nsw i64 %1856, %1862
  %1864 = icmp sgt i64 %1860, 0
  %.pre3783 = load i64, ptr %4, align 8, !tbaa !5
  br i1 %1864, label %1865, label %1900

1865:                                             ; preds = %1850
  %1866 = mul nsw i64 %1863, %27
  %1867 = getelementptr double, ptr %29, i64 %1853
  %1868 = getelementptr double, ptr %1867, i64 %1866
  %1869 = sub i64 %78, %.pre3783
  %1870 = getelementptr double, ptr %36, i64 %1869
  %1871 = getelementptr double, ptr %1870, i64 %1863
  %1872 = load i64, ptr %2, align 8, !tbaa !5
  %1873 = getelementptr double, ptr %1870, i64 %1872
  %1874 = getelementptr double, ptr %1873, i64 %1863
  %1875 = call i32 @dlargv_(ptr noundef nonnull %20, ptr noundef %1868, ptr noundef nonnull %26, ptr noundef %1871, ptr noundef nonnull %22, ptr noundef %1874, ptr noundef nonnull %22) #5
  %1876 = load i64, ptr %3, align 8, !tbaa !5
  %1877 = add nsw i64 %1876, -1
  store i64 %1877, ptr %17, align 8, !tbaa !5
  %invariant.gep3614.us = getelementptr double, ptr %29, i64 %1866
  %invariant.gep3618.us = getelementptr double, ptr %36, i64 %1863
  %.not27123622.us = icmp slt i64 %1876, 2
  %.pre3853 = add nsw i64 %1863, -1
  %.pre3855 = mul nsw i64 %.pre3853, %27
  br i1 %.not27123622.us, label %._crit_edge3626.us, label %.lr.ph3625.us

1878:                                             ; preds = %.lr.ph3625.us, %1878
  %.213623.us = phi i64 [ 1, %.lr.ph3625.us ], [ %1879, %1878 ]
  %1879 = add nuw nsw i64 %.213623.us, 1
  %gep3615.us = getelementptr double, ptr %invariant.gep3614.us, i64 %1879
  %gep3628.us = getelementptr double, ptr %invariant.gep3627.us, i64 %.213623.us
  %1880 = load i64, ptr %2, align 8, !tbaa !5
  %1881 = add nsw i64 %1880, %78
  %1882 = load i64, ptr %4, align 8, !tbaa !5
  %1883 = sub i64 %1881, %1882
  %gep3619.us = getelementptr double, ptr %invariant.gep3618.us, i64 %1883
  %1884 = sub nsw i64 %78, %1882
  %gep3621.us = getelementptr double, ptr %invariant.gep3618.us, i64 %1884
  %1885 = call i32 @dlartv_(ptr noundef nonnull %20, ptr noundef %gep3615.us, ptr noundef nonnull %26, ptr noundef %gep3628.us, ptr noundef nonnull %26, ptr noundef %gep3619.us, ptr noundef %gep3621.us, ptr noundef nonnull %22) #5
  %1886 = load i64, ptr %17, align 8, !tbaa !5
  %.not2712.us.not = icmp slt i64 %.213623.us, %1886
  br i1 %.not2712.us.not, label %1878, label %._crit_edge3626.us, !llvm.loop !126

._crit_edge3626.us:                               ; preds = %1878, %1865
  %gep3644.us = getelementptr double, ptr %invariant.gep3281, i64 %1866
  %1887 = getelementptr double, ptr %29, i64 %.pre3855
  %1888 = getelementptr i8, ptr %1887, i64 8
  %1889 = getelementptr i8, ptr %1887, i64 16
  %1890 = load i64, ptr %2, align 8, !tbaa !5
  %1891 = add nsw i64 %1890, %78
  %1892 = load i64, ptr %4, align 8, !tbaa !5
  %1893 = sub i64 %1891, %1892
  %1894 = getelementptr double, ptr %36, i64 %1893
  %1895 = getelementptr double, ptr %1894, i64 %1863
  %1896 = sub nsw i64 %78, %1892
  %1897 = getelementptr double, ptr %36, i64 %1896
  %1898 = getelementptr double, ptr %1897, i64 %1863
  %1899 = call i32 @dlar2v_(ptr noundef nonnull %20, ptr noundef %gep3644.us, ptr noundef %1888, ptr noundef %1889, ptr noundef nonnull %26, ptr noundef %1895, ptr noundef %1898, ptr noundef nonnull %22) #5
  %.pre3782 = load i64, ptr %4, align 8, !tbaa !5
  %.pre3784 = load i64, ptr %3, align 8, !tbaa !5
  br label %1900

1900:                                             ; preds = %._crit_edge3626.us, %1850
  %1901 = phi i64 [ %.pre3784, %._crit_edge3626.us ], [ %1857, %1850 ]
  %1902 = phi i64 [ %.pre3782, %._crit_edge3626.us ], [ %.pre3783, %1850 ]
  %reass.sub3680 = sub i64 %1902, %.2225813645.us
  %1903 = add i64 %reass.sub3680, 1
  store i64 %1903, ptr %17, align 8, !tbaa !5
  %.not2713.not3630.us = icmp sgt i64 %1901, %1903
  br i1 %.not2713.not3630.us, label %.lr.ph3633.us, label %._crit_edge3634.us

._crit_edge3634.us:                               ; preds = %1958, %1900
  br i1 %.not, label %1904, label %.loopexit.us

1904:                                             ; preds = %._crit_edge3634.us
  store i64 %1856, ptr %17, align 8, !tbaa !5
  %1905 = load i64, ptr %22, align 8, !tbaa !5
  store i64 %1905, ptr %16, align 8, !tbaa !5
  %1906 = icmp slt i64 %1905, 0
  %1907 = icmp slt i64 %1862, 1
  %1908 = icmp sgt i64 %1862, -1
  %.in27143639.us = select i1 %1906, i1 %1907, i1 %1908
  br i1 %.in27143639.us, label %.lr.ph3642.us, label %.loopexit.us

.lr.ph3642.us:                                    ; preds = %1904, %.lr.ph3642.us
  %.423640.us = phi i64 [ %1923, %.lr.ph3642.us ], [ %1863, %1904 ]
  %1909 = mul nsw i64 %.423640.us, %33
  %gep3636.us = getelementptr double, ptr %invariant.gep3662, i64 %1909
  %1910 = add nsw i64 %.423640.us, -1
  %1911 = mul nsw i64 %1910, %33
  %gep3638.us = getelementptr double, ptr %invariant.gep3662, i64 %1911
  %1912 = load i64, ptr %2, align 8, !tbaa !5
  %1913 = add nsw i64 %1912, %78
  %1914 = load i64, ptr %4, align 8, !tbaa !5
  %1915 = sub i64 %1913, %1914
  %1916 = getelementptr double, ptr %36, i64 %1915
  %1917 = getelementptr double, ptr %1916, i64 %.423640.us
  %1918 = sub nsw i64 %78, %1914
  %1919 = getelementptr double, ptr %36, i64 %1918
  %1920 = getelementptr double, ptr %1919, i64 %.423640.us
  %1921 = call i32 @f2c_drot(ptr noundef nonnull %21, ptr noundef %gep3636.us, ptr noundef nonnull @c__1, ptr noundef %gep3638.us, ptr noundef nonnull @c__1, ptr noundef %1917, ptr noundef %1920) #5
  %1922 = load i64, ptr %16, align 8, !tbaa !5
  %1923 = add nsw i64 %1922, %.423640.us
  %1924 = icmp slt i64 %1922, 0
  %1925 = load i64, ptr %17, align 8
  %1926 = icmp sge i64 %1923, %1925
  %1927 = icmp sle i64 %1923, %1925
  %.in2714.us = select i1 %1924, i1 %1926, i1 %1927
  br i1 %.in2714.us, label %.lr.ph3642.us, label %.loopexit.us, !llvm.loop !127

.loopexit.us:                                     ; preds = %.lr.ph3642.us, %1904, %._crit_edge3634.us
  %1928 = add nsw i64 %.2225813645.us, -1
  %1929 = icmp sgt i64 %.2225813645.us, 1
  br i1 %1929, label %1850, label %._crit_edge3648.us, !llvm.loop !128

1930:                                             ; preds = %.lr.ph3633.us, %1958
  %1931 = phi i64 [ %1903, %.lr.ph3633.us ], [ %1959, %1958 ]
  %.223631.us.in = phi i64 [ %1901, %.lr.ph3633.us ], [ %.223631.us, %1958 ]
  %.223631.us = add nsw i64 %.223631.us.in, -1
  %1932 = add i64 %2187, %.223631.us
  %1933 = load i64, ptr %22, align 8, !tbaa !5
  %1934 = sdiv i64 %1932, %1933
  store i64 %1934, ptr %25, align 8, !tbaa !5
  %1935 = icmp sgt i64 %1934, 0
  br i1 %1935, label %1936, label %1958

1936:                                             ; preds = %1930
  %1937 = add nsw i64 %1934, -1
  %1938 = mul nsw i64 %1937, %1933
  %1939 = sub nsw i64 %1856, %1938
  %1940 = sub nsw i64 %1933, %.223631.us
  %1941 = sub i64 %.223631.us, %1933
  %1942 = add i64 %1941, %1939
  %1943 = mul nsw i64 %1942, %27
  %1944 = getelementptr double, ptr %29, i64 %1940
  %1945 = getelementptr i8, ptr %1944, i64 8
  %1946 = getelementptr double, ptr %1945, i64 %1943
  %1947 = getelementptr double, ptr %1944, i64 %1943
  %1948 = load i64, ptr %2, align 8, !tbaa !5
  %1949 = add nsw i64 %1948, %78
  %1950 = load i64, ptr %4, align 8, !tbaa !5
  %1951 = sub i64 %1949, %1950
  %1952 = getelementptr double, ptr %36, i64 %1951
  %1953 = getelementptr double, ptr %1952, i64 %1939
  %1954 = sub nsw i64 %78, %1950
  %1955 = getelementptr double, ptr %36, i64 %1954
  %1956 = getelementptr double, ptr %1955, i64 %1939
  %1957 = call i32 @dlartv_(ptr noundef nonnull %25, ptr noundef %1946, ptr noundef nonnull %26, ptr noundef %1947, ptr noundef nonnull %26, ptr noundef %1953, ptr noundef %1956, ptr noundef nonnull %22) #5
  %.pre3785 = load i64, ptr %17, align 8, !tbaa !5
  br label %1958

1958:                                             ; preds = %1936, %1930
  %1959 = phi i64 [ %.pre3785, %1936 ], [ %1931, %1930 ]
  %.not2713.not.us = icmp sgt i64 %.223631.us, %1959
  br i1 %.not2713.not.us, label %1930, label %._crit_edge3634.us, !llvm.loop !129

1960:                                             ; preds = %.lr.ph3612.us, %1997
  %.2125803610.us = phi i64 [ %1793, %.lr.ph3612.us ], [ %1998, %1997 ]
  %1961 = add i64 %2184, %.2125803610.us
  %1962 = load i64, ptr %22, align 8, !tbaa !5
  %1963 = add i64 %2185, %.2125803610.us
  br i1 %.not26982883.us, label %1966, label %1964

1964:                                             ; preds = %1960
  %1965 = call i64 @llvm.smax.i64(i64 %1961, i64 2)
  br label %1968

1966:                                             ; preds = %1960
  %1967 = call i64 @llvm.smax.i64(i64 %1961, i64 1)
  br label %1968

1968:                                             ; preds = %1966, %1964
  %.sink3907 = phi i64 [ %1967, %1966 ], [ %1965, %1964 ]
  %.sink3737 = phi i64 [ 1, %1966 ], [ 2, %1964 ]
  %1969 = mul nsw i64 %1962, %.sink3907
  %1970 = sub i64 %1963, %1969
  store i64 %.sink3737, ptr %17, align 8
  store i64 %1961, ptr %16, align 8
  %1971 = load i64, ptr %4, align 8, !tbaa !5
  %1972 = sub nsw i64 %1971, %.2125803610.us
  %1973 = icmp sgt i64 %1972, 0
  %1974 = add i64 %1970, -1
  br i1 %1973, label %.lr.ph3597.us, label %._crit_edge3598.us

._crit_edge3598.us.loopexit:                      ; preds = %2055
  %.pre3780 = load i64, ptr %22, align 8, !tbaa !5
  br label %._crit_edge3598.us

._crit_edge3598.us:                               ; preds = %1968, %._crit_edge3598.us.loopexit
  %1975 = phi i64 [ %.pre3780, %._crit_edge3598.us.loopexit ], [ %1962, %1968 ]
  %1976 = load i64, ptr %3, align 8, !tbaa !5
  %1977 = add i64 %1974, %1976
  %1978 = sdiv i64 %1977, %1975
  store i64 %1978, ptr %20, align 8, !tbaa !5
  %1979 = add nsw i64 %1978, -1
  %1980 = mul nsw i64 %1979, %1975
  %1981 = sub nsw i64 %1970, %1980
  %1982 = icmp slt i64 %1975, 0
  %1983 = icmp slt i64 %1980, 1
  %1984 = icmp sgt i64 %1980, -1
  %.in27153599.us = select i1 %1982, i1 %1983, i1 %1984
  br i1 %.in27153599.us, label %.lr.ph3602.us, label %._crit_edge3603.us.thread

._crit_edge3603.us.thread:                        ; preds = %._crit_edge3598.us
  store i64 %1970, ptr %16, align 8, !tbaa !5
  store i64 %1975, ptr %17, align 8, !tbaa !5
  br label %._crit_edge3609.us

._crit_edge3603.us:                               ; preds = %2015
  store i64 %1970, ptr %16, align 8, !tbaa !5
  store i64 %1975, ptr %17, align 8, !tbaa !5
  br i1 %.in27153599.us, label %.lr.ph3608.us, label %._crit_edge3609.us

._crit_edge3609.us:                               ; preds = %2000, %._crit_edge3603.us.thread, %._crit_edge3603.us
  br i1 %.not26982883.us, label %1997, label %1985

1985:                                             ; preds = %._crit_edge3609.us
  %1986 = add nsw i64 %.2125803610.us, %.32610.us
  %1987 = icmp sle i64 %1986, %1975
  %1988 = load i64, ptr %24, align 8
  %.not2717.us = icmp sgt i64 %.2125803610.us, %1988
  %or.cond2764.us = select i1 %1987, i1 true, i1 %.not2717.us
  br i1 %or.cond2764.us, label %1997, label %1989

1989:                                             ; preds = %1985
  %1990 = load i64, ptr %4, align 8, !tbaa !5
  %1991 = add i64 %2186, %.2125803610.us
  %1992 = sub i64 %1991, %1990
  %1993 = getelementptr inbounds double, ptr %36, i64 %1992
  %1994 = load double, ptr %1993, align 8, !tbaa !9
  %1995 = sub nsw i64 %1992, %1976
  %1996 = getelementptr inbounds double, ptr %36, i64 %1995
  store double %1994, ptr %1996, align 8, !tbaa !9
  br label %1997

1997:                                             ; preds = %1989, %1985, %._crit_edge3609.us
  %1998 = add nsw i64 %.2125803610.us, -1
  %1999 = icmp sgt i64 %.2125803610.us, 1
  br i1 %1999, label %1960, label %._crit_edge3613.us, !llvm.loop !130

2000:                                             ; preds = %.lr.ph3608.us, %2000
  %.413606.us = phi i64 [ %1981, %.lr.ph3608.us ], [ %2012, %2000 ]
  %2001 = add nsw i64 %.413606.us, -1
  %2002 = mul nsw i64 %2001, %27
  %2003 = getelementptr double, ptr %2178, i64 %2002
  %2004 = load double, ptr %2003, align 8, !tbaa !9
  %2005 = getelementptr double, ptr %2181, i64 %.413606.us
  %2006 = load double, ptr %2005, align 8, !tbaa !9
  %2007 = fmul double %2004, %2006
  store double %2007, ptr %2005, align 8, !tbaa !9
  %2008 = getelementptr double, ptr %2183, i64 %.413606.us
  %2009 = load double, ptr %2008, align 8, !tbaa !9
  %2010 = load double, ptr %2003, align 8, !tbaa !9
  %2011 = fmul double %2009, %2010
  store double %2011, ptr %2003, align 8, !tbaa !9
  %2012 = add nsw i64 %.413606.us, %1975
  %2013 = icmp sge i64 %2012, %1970
  %2014 = icmp sle i64 %2012, %1970
  %.in2716.us = select i1 %1982, i1 %2013, i1 %2014
  br i1 %.in2716.us, label %2000, label %._crit_edge3609.us, !llvm.loop !131

2015:                                             ; preds = %.lr.ph3602.us, %2015
  %.403600.us = phi i64 [ %1981, %.lr.ph3602.us ], [ %2022, %2015 ]
  %2016 = getelementptr double, ptr %2175, i64 %.403600.us
  %2017 = getelementptr double, ptr %2016, i64 %1976
  %2018 = load double, ptr %2017, align 8, !tbaa !9
  store double %2018, ptr %2016, align 8, !tbaa !9
  %2019 = getelementptr double, ptr %2177, i64 %.403600.us
  %2020 = getelementptr double, ptr %2019, i64 %1976
  %2021 = load double, ptr %2020, align 8, !tbaa !9
  store double %2021, ptr %2019, align 8, !tbaa !9
  %2022 = add nsw i64 %.403600.us, %1975
  %2023 = icmp sge i64 %2022, %1970
  %2024 = icmp sle i64 %2022, %1970
  %.in2715.us = select i1 %1982, i1 %2023, i1 %2024
  br i1 %.in2715.us, label %2015, label %._crit_edge3603.us, !llvm.loop !132

.lr.ph3597.us:                                    ; preds = %1968, %2055
  %.203595.us = phi i64 [ %.pre-phi3850, %2055 ], [ %1972, %1968 ]
  %2025 = load i64, ptr %3, align 8, !tbaa !5
  %2026 = add i64 %1974, %.203595.us
  %2027 = add i64 %2026, %2025
  %2028 = load i64, ptr %22, align 8, !tbaa !5
  %2029 = sdiv i64 %2027, %2028
  store i64 %2029, ptr %25, align 8, !tbaa !5
  %2030 = icmp sgt i64 %2029, 0
  br i1 %2030, label %2031, label %._crit_edge3834

._crit_edge3834:                                  ; preds = %.lr.ph3597.us
  %.pre3849 = add nsw i64 %.203595.us, -1
  br label %2055

2031:                                             ; preds = %.lr.ph3597.us
  %2032 = add nsw i64 %2029, -1
  %2033 = mul nsw i64 %2032, %2028
  %2034 = sub nsw i64 %1970, %2033
  %2035 = sub nsw i64 %2028, %.203595.us
  %2036 = add i64 %.203595.us, -1
  %2037 = add i64 %2036, %2034
  %2038 = mul nsw i64 %2037, %27
  %2039 = getelementptr double, ptr %29, i64 %2035
  %2040 = getelementptr i8, ptr %2039, i64 8
  %2041 = getelementptr double, ptr %2040, i64 %2038
  %2042 = getelementptr double, ptr %2039, i64 %2038
  %2043 = load i64, ptr %2, align 8, !tbaa !5
  %2044 = add nsw i64 %2043, %78
  %2045 = load i64, ptr %4, align 8, !tbaa !5
  %2046 = sub i64 %2044, %2045
  %2047 = getelementptr double, ptr %36, i64 %2046
  %2048 = getelementptr double, ptr %2047, i64 %2034
  %2049 = getelementptr double, ptr %2048, i64 %2025
  %2050 = sub nsw i64 %78, %2045
  %2051 = getelementptr double, ptr %36, i64 %2050
  %2052 = getelementptr double, ptr %2051, i64 %2034
  %2053 = getelementptr double, ptr %2052, i64 %2025
  %2054 = call i32 @dlartv_(ptr noundef nonnull %25, ptr noundef %2041, ptr noundef nonnull %26, ptr noundef %2042, ptr noundef nonnull %26, ptr noundef %2049, ptr noundef %2053, ptr noundef nonnull %22) #5
  br label %2055

2055:                                             ; preds = %._crit_edge3834, %2031
  %.pre-phi3850 = phi i64 [ %.pre3849, %._crit_edge3834 ], [ %2036, %2031 ]
  %2056 = icmp sgt i64 %.203595.us, 1
  br i1 %2056, label %.lr.ph3597.us, label %._crit_edge3598.us.loopexit, !llvm.loop !133

.lr.ph3288.us:                                    ; preds = %.outer.us
  %2057 = add nsw i64 %.22609.ph.us, 1
  %2058 = sub nsw i64 %78, %2057
  %2059 = call i64 @llvm.smin.i64(i64 %1478, i64 %2058)
  store i64 %2059, ptr %24, align 8, !tbaa !5
  %2060 = sub nsw i64 %2057, %.pre3768
  %2061 = call i64 @llvm.smax.i64(i64 %2060, i64 1)
  %2062 = add nsw i64 %2059, %2057
  %2063 = load i64, ptr %22, align 8, !tbaa !5
  %2064 = sub i64 %2062, %2063
  %.not2700.us = icmp slt i64 %.22609.ph.us, %78
  br i1 %.not2700.us, label %.lr.ph3288.split.us.us, label %.lr.ph3288.split.us3674

.lr.ph3288.split.us3674:                          ; preds = %.lr.ph3288.us
  %2065 = icmp eq i64 %.pre3768, 0
  br i1 %2065, label %.loopexit2869, label %.lr.ph3288.split.split.us

.lr.ph3288.split.us.us:                           ; preds = %.lr.ph3288.us
  store i64 1, ptr %16, align 8, !tbaa !5
  %2066 = add nsw i64 %.22609.ph.us, 2
  br label %1482

.lr.ph3288.split.split.us:                        ; preds = %.lr.ph3288.split.us3674
  store i64 1, ptr %16, align 8, !tbaa !5
  br label %1479

.lr.ph3487.us:                                    ; preds = %._crit_edge3481.us
  %2067 = mul nsw i64 %.32610.us, %27
  %invariant.gep3489.us = getelementptr double, ptr %invariant.gep3281, i64 %2067
  %2068 = add i64 %1517, 1
  %2069 = sub i64 %2068, %.32610.us
  %min.iters.check4356 = icmp ult i64 %2069, 2
  br i1 %min.iters.check4356, label %scalar.ph4355.preheader, label %vector.ph4357

scalar.ph4355.preheader:                          ; preds = %middle.block4354, %.lr.ph3487.us
  %.343485.us.ph = phi i64 [ %.32610.us, %.lr.ph3487.us ], [ %ind.end4360, %middle.block4354 ]
  br label %scalar.ph4355

vector.ph4357:                                    ; preds = %.lr.ph3487.us
  %n.vec4359 = and i64 %2069, -2
  %ind.end4360 = add i64 %.32610.us, %n.vec4359
  %broadcast.splatinsert4366 = insertelement <2 x double> poison, double %1493, i64 0
  %broadcast.splat4367 = shufflevector <2 x double> %broadcast.splatinsert4366, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body4362

vector.body4362:                                  ; preds = %vector.body4362, %vector.ph4357
  %index4363 = phi i64 [ 0, %vector.ph4357 ], [ %index.next4368, %vector.body4362 ]
  %2070 = getelementptr double, ptr %invariant.gep3489.us, i64 %index4363
  %wide.load4365 = load <2 x double>, ptr %2070, align 8, !tbaa !9
  %2071 = fdiv <2 x double> %wide.load4365, %broadcast.splat4367
  store <2 x double> %2071, ptr %2070, align 8, !tbaa !9
  %index.next4368 = add nuw i64 %index4363, 2
  %2072 = icmp eq i64 %index.next4368, %n.vec4359
  br i1 %2072, label %middle.block4354, label %vector.body4362, !llvm.loop !134

middle.block4354:                                 ; preds = %vector.body4362
  %cmp.n4369 = icmp eq i64 %2069, %n.vec4359
  br i1 %cmp.n4369, label %._crit_edge3488.us, label %scalar.ph4355.preheader

.lr.ph3515.us:                                    ; preds = %.loopexit
  %gep3507.us = getelementptr double, ptr %invariant.gep3506.us, i64 %1528
  %brmerge4432 = select i1 %min.iters.check4271, i1 true, i1 %conflict.rdx4268
  br i1 %brmerge4432, label %scalar.ph4270.preheader, label %vector.ph4272

scalar.ph4270.preheader:                          ; preds = %.lr.ph3515.us, %middle.block4269
  %.36.in3513.us.ph = phi i64 [ %1522, %.lr.ph3515.us ], [ %ind.end4275, %middle.block4269 ]
  br label %scalar.ph4270

vector.ph4272:                                    ; preds = %.lr.ph3515.us
  %2073 = load double, ptr %gep3507.us, align 8, !tbaa !9, !alias.scope !135
  %broadcast.splatinsert4286 = insertelement <2 x double> poison, double %2073, i64 0
  %broadcast.splat4287 = shufflevector <2 x double> %broadcast.splatinsert4286, <2 x double> poison, <2 x i32> zeroinitializer
  %2074 = fneg <2 x double> %broadcast.splat4287
  %2075 = fneg <2 x double> %broadcast.splat4287
  br label %vector.body4277

vector.body4277:                                  ; preds = %vector.body4277, %vector.ph4272
  %index4278 = phi i64 [ 0, %vector.ph4272 ], [ %index.next4288, %vector.body4277 ]
  %offset.idx4279 = add i64 %1522, %index4278
  %2076 = add nsw i64 %offset.idx4279, 1
  %2077 = sub nsw i64 %2076, %.32610.us
  %2078 = getelementptr double, ptr %gep3498.us, i64 %2077
  %2079 = getelementptr i8, ptr %2078, i64 16
  %wide.load4280 = load <2 x double>, ptr %2078, align 8, !tbaa !9, !alias.scope !138
  %wide.load4281 = load <2 x double>, ptr %2079, align 8, !tbaa !9, !alias.scope !138
  %2080 = sub nsw i64 %2076, %.1825773522.us
  %2081 = getelementptr double, ptr %invariant.gep3500.us, i64 %2080
  %2082 = getelementptr i8, ptr %2081, i64 16
  %wide.load4282 = load <2 x double>, ptr %2081, align 8, !tbaa !9, !alias.scope !140, !noalias !142
  %wide.load4283 = load <2 x double>, ptr %2082, align 8, !tbaa !9, !alias.scope !140, !noalias !142
  %2083 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2074, <2 x double> %wide.load4280, <2 x double> %wide.load4282)
  %2084 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2075, <2 x double> %wide.load4281, <2 x double> %wide.load4283)
  store <2 x double> %2083, ptr %2081, align 8, !tbaa !9, !alias.scope !140, !noalias !142
  store <2 x double> %2084, ptr %2082, align 8, !tbaa !9, !alias.scope !140, !noalias !142
  %index.next4288 = add nuw i64 %index4278, 4
  %2085 = icmp eq i64 %index.next4288, %n.vec4274
  br i1 %2085, label %middle.block4269, label %vector.body4277, !llvm.loop !143

middle.block4269:                                 ; preds = %vector.body4277
  br i1 %cmp.n4289, label %._crit_edge3516.us, label %scalar.ph4270.preheader

.lr.ph3524.us:                                    ; preds = %._crit_edge3488.us
  %2086 = mul i64 %.32610.us, %27
  %invariant.gep3526.us = getelementptr double, ptr %29, i64 %2086
  %gep3498.us = getelementptr double, ptr %invariant.gep3281, i64 %2086
  %invariant.gep3506.us = getelementptr double, ptr %invariant.gep3277, i64 %1490
  %.not2728.not3512.us = icmp slt i64 %1522, %1517
  %2087 = mul i64 %1474, %.32610.us
  %2088 = shl i64 %1483, 3
  %2089 = getelementptr i8, ptr %5, i64 %2087
  %scevgep4249 = getelementptr i8, ptr %2089, i64 %2088
  %smax4250 = call i64 @llvm.smax.i64(i64 %1522, i64 %1523)
  %2090 = xor i64 %.32610.us, -1
  %2091 = add i64 %smax4250, %2090
  %2092 = mul i64 %1475, %2091
  %2093 = add i64 %1517, %2086
  %2094 = shl i64 %2093, 3
  %2095 = add i64 %2092, %2094
  %2096 = shl i64 %.32610.us, 3
  %2097 = sub i64 %2095, %2096
  %scevgep4251 = getelementptr i8, ptr %5, i64 %2097
  %2098 = add i64 %2096, -8
  %2099 = mul i64 %30, %2098
  %scevgep4253 = getelementptr i8, ptr %scevgep4252, i64 %2099
  %2100 = shl i64 %smax4250, 3
  %2101 = add i64 %2099, %2100
  %2102 = sub i64 %2101, %2096
  %scevgep4255 = getelementptr i8, ptr %scevgep4254, i64 %2102
  %2103 = mul i64 %27, %2098
  %2104 = getelementptr i8, ptr %scevgep4256, i64 %2103
  %scevgep4257 = getelementptr i8, ptr %2104, i64 %2088
  %2105 = shl i64 %1517, 3
  %2106 = add i64 %2103, %2105
  %2107 = sub i64 %2106, %2096
  %scevgep4259 = getelementptr i8, ptr %scevgep4258, i64 %2107
  %2108 = add i64 %.32610.us, %1483
  %2109 = sub i64 %1517, %2108
  %2110 = mul i64 %1476, %.32610.us
  %2111 = xor i64 %.32610.us, -1
  %2112 = shl i64 %.32610.us, 3
  %2113 = add i64 %2112, -8
  %2114 = mul i64 %30, %2113
  %2115 = mul i64 %27, %2113
  %scevgep4301 = getelementptr i8, ptr %scevgep4300, i64 %2115
  %smax4303 = call i64 @llvm.smax.i64(i64 %1522, i64 %1523)
  %2116 = shl i64 %smax4303, 3
  %2117 = add i64 %2115, %2116
  %2118 = sub i64 %2117, %2112
  %scevgep4304 = getelementptr i8, ptr %scevgep4302, i64 %2118
  %scevgep4306 = getelementptr i8, ptr %scevgep4305, i64 %2114
  %2119 = add i64 %2114, %2116
  %2120 = sub i64 %2119, %2112
  %scevgep4308 = getelementptr i8, ptr %scevgep4307, i64 %2120
  %gep4423 = getelementptr i8, ptr %invariant.gep4422, i64 %2115
  %gep4425 = getelementptr i8, ptr %invariant.gep4424, i64 %2115
  %gep4427 = getelementptr i8, ptr %invariant.gep4426, i64 %2114
  %gep4429 = getelementptr i8, ptr %invariant.gep4428, i64 %2114
  %gep4431 = getelementptr i8, ptr %invariant.gep4430, i64 %2110
  %2121 = getelementptr i8, ptr %5, i64 %2110
  %min.iters.check4271 = icmp ult i64 %2109, 4
  %bound04260 = icmp ult ptr %scevgep4249, %scevgep4255
  %bound14261 = icmp ult ptr %scevgep4253, %scevgep4251
  %found.conflict4262 = and i1 %bound04260, %bound14261
  %bound04264 = icmp ult ptr %scevgep4249, %scevgep4259
  %bound14265 = icmp ult ptr %scevgep4257, %scevgep4251
  %found.conflict4266 = and i1 %bound04264, %bound14265
  %2122 = or i1 %found.conflict4266, %stride.check4267
  %conflict.rdx4268 = or i1 %found.conflict4262, %2122
  %n.vec4274 = and i64 %2109, -4
  %ind.end4275 = add i64 %1522, %n.vec4274
  %cmp.n4289 = icmp eq i64 %2109, %n.vec4274
  br label %1524

._crit_edge3525.us:                               ; preds = %._crit_edge3516.us
  store i64 %1517, ptr %16, align 8, !tbaa !5
  store i64 %1515, ptr %14, align 8, !tbaa !5
  store i64 %1516, ptr %15, align 8, !tbaa !5
  br label %1574

.lr.ph3539.us:                                    ; preds = %1575
  %2123 = sub nsw i64 %.32610.us, %.373544.us
  %2124 = mul nsw i64 %.373544.us, %27
  %gep3533.us = getelementptr double, ptr %invariant.gep3281, i64 %2123
  %2125 = getelementptr double, ptr %gep3533.us, i64 %2124
  %invariant.gep3541.us = getelementptr double, ptr %invariant.gep3281, i64 %2124
  %min.iters.check4229 = icmp ult i64 %1576, 4
  br i1 %min.iters.check4229, label %scalar.ph4228.preheader, label %vector.memcheck4211

scalar.ph4228.preheader:                          ; preds = %middle.block4227, %vector.memcheck4211, %.lr.ph3539.us
  %.1925783537.us.ph = phi i64 [ %1523, %vector.memcheck4211 ], [ %1523, %.lr.ph3539.us ], [ %ind.end4233, %middle.block4227 ]
  %2126 = add i64 %smin4396, %.1925783537.us.ph
  %2127 = and i64 %2126, 1
  %lcmp.mod4398.not.not = icmp eq i64 %2127, 0
  br i1 %lcmp.mod4398.not.not, label %scalar.ph4228.prol, label %scalar.ph4228.prol.loopexit

scalar.ph4228.prol:                               ; preds = %scalar.ph4228.preheader
  %2128 = sub nsw i64 %.1925783537.us.ph, %.32610.us
  %gep3531.us.prol = getelementptr double, ptr %invariant.gep3530.us, i64 %2128
  %2129 = load double, ptr %gep3531.us.prol, align 8, !tbaa !9
  %2130 = load double, ptr %2125, align 8, !tbaa !9
  %2131 = sub nsw i64 %.1925783537.us.ph, %.373544.us
  %gep3542.us.prol = getelementptr double, ptr %invariant.gep3541.us, i64 %2131
  %2132 = load double, ptr %gep3542.us.prol, align 8, !tbaa !9
  %2133 = fneg double %2129
  %2134 = call double @llvm.fmuladd.f64(double %2133, double %2130, double %2132)
  store double %2134, ptr %gep3542.us.prol, align 8, !tbaa !9
  %2135 = add i64 %.1925783537.us.ph, 1
  br label %scalar.ph4228.prol.loopexit

scalar.ph4228.prol.loopexit:                      ; preds = %scalar.ph4228.prol, %scalar.ph4228.preheader
  %.1925783537.us.unr = phi i64 [ %.1925783537.us.ph, %scalar.ph4228.preheader ], [ %2135, %scalar.ph4228.prol ]
  %2136 = icmp eq i64 %smin4396, %.1925783537.us.ph
  br i1 %2136, label %._crit_edge3540.us, label %scalar.ph4228

vector.memcheck4211:                              ; preds = %.lr.ph3539.us
  %bound04223 = icmp ult ptr %scevgep4214, %scevgep4222
  %bound14224 = icmp ult ptr %scevgep4219, %scevgep4217
  %found.conflict4225 = and i1 %bound04223, %bound14224
  br i1 %found.conflict4225, label %scalar.ph4228.preheader, label %vector.ph4230

vector.ph4230:                                    ; preds = %vector.memcheck4211
  %n.vec4232 = and i64 %1576, -4
  %ind.end4233 = add i64 %1523, %n.vec4232
  br label %vector.body4235

vector.body4235:                                  ; preds = %vector.body4235, %vector.ph4230
  %index4236 = phi i64 [ 0, %vector.ph4230 ], [ %index.next4246, %vector.body4235 ]
  %offset.idx4237 = add i64 %1523, %index4236
  %2137 = sub nsw i64 %offset.idx4237, %.32610.us
  %2138 = getelementptr double, ptr %invariant.gep3530.us, i64 %2137
  %2139 = getelementptr i8, ptr %2138, i64 16
  %wide.load4238 = load <2 x double>, ptr %2138, align 8, !tbaa !9, !alias.scope !144
  %wide.load4239 = load <2 x double>, ptr %2139, align 8, !tbaa !9, !alias.scope !144
  %2140 = load double, ptr %2125, align 8, !tbaa !9, !alias.scope !147
  %broadcast.splatinsert4244 = insertelement <2 x double> poison, double %2140, i64 0
  %broadcast.splat4245 = shufflevector <2 x double> %broadcast.splatinsert4244, <2 x double> poison, <2 x i32> zeroinitializer
  %2141 = sub nsw i64 %offset.idx4237, %.373544.us
  %2142 = getelementptr double, ptr %invariant.gep3541.us, i64 %2141
  %2143 = getelementptr i8, ptr %2142, i64 16
  %wide.load4240 = load <2 x double>, ptr %2142, align 8, !tbaa !9, !alias.scope !149, !noalias !144
  %wide.load4241 = load <2 x double>, ptr %2143, align 8, !tbaa !9, !alias.scope !149, !noalias !144
  %2144 = fneg <2 x double> %wide.load4238
  %2145 = fneg <2 x double> %wide.load4239
  %2146 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2144, <2 x double> %broadcast.splat4245, <2 x double> %wide.load4240)
  %2147 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %2145, <2 x double> %broadcast.splat4245, <2 x double> %wide.load4241)
  store <2 x double> %2146, ptr %2142, align 8, !tbaa !9, !alias.scope !149, !noalias !144
  store <2 x double> %2147, ptr %2143, align 8, !tbaa !9, !alias.scope !149, !noalias !144
  %index.next4246 = add nuw i64 %index4236, 4
  %2148 = icmp eq i64 %index.next4246, %n.vec4232
  br i1 %2148, label %middle.block4227, label %vector.body4235, !llvm.loop !151

middle.block4227:                                 ; preds = %vector.body4235
  %cmp.n4247 = icmp eq i64 %1576, %n.vec4232
  br i1 %cmp.n4247, label %._crit_edge3540.us, label %scalar.ph4228.preheader

.lr.ph3546.us:                                    ; preds = %1574
  %invariant.gep3530.us = getelementptr double, ptr %invariant.gep3277, i64 %1490
  %2149 = add i64 %.42548.us, %.pre3768
  %2150 = shl i64 %.42548.us, 3
  %2151 = add i64 %2150, -8
  %2152 = mul i64 %27, %2151
  %2153 = add i64 %2152, 8
  %2154 = shl i64 %.32610.us, 3
  %2155 = add i64 %2153, %2154
  %2156 = sub i64 %2155, %2150
  %2157 = sub i64 %2153, %2150
  %2158 = add i64 %2154, -8
  %2159 = mul i64 %30, %2158
  %scevgep4219 = getelementptr i8, ptr %scevgep4218, i64 %2159
  %2160 = sub i64 %2159, %2154
  %scevgep4221 = getelementptr i8, ptr %scevgep4220, i64 %2160
  %2161 = getelementptr i8, ptr %5, i64 %2156
  %2162 = getelementptr i8, ptr %5, i64 %2157
  br label %1575

._crit_edge3547.us:                               ; preds = %._crit_edge3540.us
  %smin3729 = call i64 @llvm.smin.i64(i64 %1516, i64 %1522)
  store i64 %1516, ptr %14, align 8, !tbaa !5
  store i64 %1522, ptr %15, align 8, !tbaa !5
  store i64 %smin3729, ptr %16, align 8, !tbaa !5
  br label %1598

.lr.ph3553.us:                                    ; preds = %1681
  %2163 = getelementptr double, ptr %29, i64 %1664
  %2164 = load i64, ptr %2, align 8, !tbaa !5
  %2165 = getelementptr double, ptr %36, i64 %2164
  br label %1762

.lr.ph3562.us:                                    ; preds = %1698
  %invariant.gep3564.us = getelementptr double, ptr %29, i64 %.pre3857
  %2166 = add nsw i64 %1675, -1
  %2167 = mul nsw i64 %2166, %27
  %invariant.gep3566.us = getelementptr double, ptr %invariant.gep3190, i64 %2167
  br label %1700

.lr.ph3572.us:                                    ; preds = %1712
  %2168 = add i64 %1669, -1
  br label %1737

.lr.ph3591.us:                                    ; preds = %1614
  %2169 = mul nsw i64 %.32610.us, %30
  %invariant.gep3593.us = getelementptr double, ptr %invariant.gep3277, i64 %2169
  %reass.sub3678 = sub i64 %.42553.us, %78
  %2170 = add i64 %reass.sub3678, 1
  %2171 = add i64 %.32610.us, 1
  %2172 = add i64 %.32610.us, -1
  br label %1617

.lr.ph3602.us:                                    ; preds = %._crit_edge3598.us
  %2173 = load i64, ptr %4, align 8, !tbaa !5
  %2174 = sub i64 %78, %2173
  %2175 = getelementptr double, ptr %36, i64 %2174
  %2176 = load i64, ptr %2, align 8, !tbaa !5
  %2177 = getelementptr double, ptr %2175, i64 %2176
  br label %2015

.lr.ph3608.us:                                    ; preds = %._crit_edge3603.us
  %2178 = getelementptr double, ptr %29, i64 %1975
  %2179 = load i64, ptr %4, align 8, !tbaa !5
  %2180 = sub i64 %78, %2179
  %2181 = getelementptr double, ptr %36, i64 %2180
  %2182 = load i64, ptr %2, align 8, !tbaa !5
  %2183 = getelementptr double, ptr %2181, i64 %2182
  br label %2000

.lr.ph3612.us:                                    ; preds = %1792
  %2184 = sub i64 %.42553.us, %78
  %2185 = add i64 %.32610.us, 1
  %2186 = add i64 %.32610.us, %78
  br label %1960

.lr.ph3625.us:                                    ; preds = %1865
  %invariant.gep3627.us = getelementptr double, ptr %invariant.gep3190, i64 %.pre3855
  br label %1878

.lr.ph3633.us:                                    ; preds = %1900
  %2187 = add i64 %1856, -1
  br label %1930

.lr.ph3647.us:                                    ; preds = %._crit_edge3613.us
  %2188 = sub i64 %.42553.us, %78
  %2189 = add i64 %.32610.us, 1
  br label %1850

.lr.ph3651.us:                                    ; preds = %1798
  %2190 = add i64 %1805, -1
  br label %1811

.lr.ph3656.us:                                    ; preds = %._crit_edge3648.us
  %reass.sub3681 = sub i64 %.42553.us, %78
  %2191 = add i64 %reass.sub3681, 1
  %2192 = add i64 %.32610.us, 1
  br label %1798

.lr.ph3661.us:                                    ; preds = %1837
  %2193 = load i64, ptr %2, align 8, !tbaa !5
  %2194 = getelementptr double, ptr %36, i64 %2193
  %2195 = sub i64 %1839, %1840
  %2196 = add i64 %1839, -2
  %2197 = sub i64 %2196, %1840
  %min.iters.check4196 = icmp ult i64 %2197, 14
  br i1 %min.iters.check4196, label %scalar.ph4195.preheader, label %vector.memcheck4186

scalar.ph4195.preheader:                          ; preds = %middle.block4194, %vector.memcheck4186, %.lr.ph3661.us
  %.433659.us.ph = phi i64 [ 2, %vector.memcheck4186 ], [ 2, %.lr.ph3661.us ], [ %ind.end4200, %middle.block4194 ]
  br label %scalar.ph4195

vector.memcheck4186:                              ; preds = %.lr.ph3661.us
  %2198 = mul i64 %2193, -8
  %diff.check4187 = icmp ult i64 %2198, 32
  %2199 = mul i64 %.pre3768.pre.pre, -8
  %diff.check4188 = icmp ult i64 %2199, 32
  %conflict.rdx4189 = or i1 %diff.check4187, %diff.check4188
  %2200 = sub i64 %.pre3768.pre.pre, %2193
  %2201 = and i64 %2200, 2305843009213693948
  %diff.check4190 = icmp eq i64 %2201, 0
  %conflict.rdx4191 = or i1 %conflict.rdx4189, %diff.check4190
  %2202 = add i64 %.pre3768.pre.pre, %2193
  %2203 = mul i64 %2202, -8
  %diff.check4192 = icmp ult i64 %2203, 32
  %conflict.rdx4193 = or i1 %conflict.rdx4191, %diff.check4192
  br i1 %conflict.rdx4193, label %scalar.ph4195.preheader, label %vector.ph4197

vector.ph4197:                                    ; preds = %vector.memcheck4186
  %n.vec4199 = and i64 %2197, -4
  %ind.end4200 = or disjoint i64 %n.vec4199, 2
  br label %vector.body4202

vector.body4202:                                  ; preds = %vector.body4202, %vector.ph4197
  %index4203 = phi i64 [ 0, %vector.ph4197 ], [ %index.next4209, %vector.body4202 ]
  %offset.idx4204 = or disjoint i64 %index4203, 2
  %2204 = getelementptr double, ptr %2194, i64 %offset.idx4204
  %2205 = getelementptr double, ptr %2204, i64 %.pre3768.pre.pre
  %2206 = getelementptr i8, ptr %2205, i64 16
  %wide.load4205 = load <2 x double>, ptr %2205, align 8, !tbaa !9
  %wide.load4206 = load <2 x double>, ptr %2206, align 8, !tbaa !9
  %2207 = getelementptr i8, ptr %2204, i64 16
  store <2 x double> %wide.load4205, ptr %2204, align 8, !tbaa !9
  store <2 x double> %wide.load4206, ptr %2207, align 8, !tbaa !9
  %2208 = getelementptr double, ptr %36, i64 %offset.idx4204
  %2209 = getelementptr double, ptr %2208, i64 %.pre3768.pre.pre
  %2210 = getelementptr i8, ptr %2209, i64 16
  %wide.load4207 = load <2 x double>, ptr %2209, align 8, !tbaa !9
  %wide.load4208 = load <2 x double>, ptr %2210, align 8, !tbaa !9
  %2211 = getelementptr i8, ptr %2208, i64 16
  store <2 x double> %wide.load4207, ptr %2208, align 8, !tbaa !9
  store <2 x double> %wide.load4208, ptr %2211, align 8, !tbaa !9
  %index.next4209 = add nuw i64 %index4203, 4
  %2212 = icmp eq i64 %index.next4209, %n.vec4199
  br i1 %2212, label %middle.block4194, label %vector.body4202, !llvm.loop !152

middle.block4194:                                 ; preds = %vector.body4202
  %cmp.n4210 = icmp eq i64 %2197, %n.vec4199
  br i1 %cmp.n4210, label %.outer.us.backedge, label %scalar.ph4195.preheader

.outer.us.backedge:                               ; preds = %scalar.ph4195, %middle.block4194, %._crit_edge3657.us.thread, %1837, %._crit_edge3657.us
  %.pre3768.be = phi i64 [ %.pre3768.pre.pre3873, %._crit_edge3657.us.thread ], [ %.pre3768.pre.pre, %1837 ], [ %.pre3768.pre.pre, %._crit_edge3657.us ], [ %.pre3768.pre.pre, %middle.block4194 ], [ %.pre3768.pre.pre, %scalar.ph4195 ]
  %.be = phi i64 [ %.ph3872, %._crit_edge3657.us.thread ], [ %.pre3788, %1837 ], [ %.pre3788, %._crit_edge3657.us ], [ %.pre3788, %middle.block4194 ], [ %.pre3788, %scalar.ph4195 ]
  br label %.outer.us

.outer:                                           ; preds = %.outer.backedge, %.outer.preheader
  %.pre3744 = phi i64 [ %.pre3741, %.outer.preheader ], [ %.pre3744.be, %.outer.backedge ]
  %2213 = phi i64 [ %93, %.outer.preheader ], [ %.be4372, %.outer.backedge ]
  %.22609.ph = phi i64 [ 0, %.outer.preheader ], [ %.32610, %.outer.backedge ]
  %.32552.ph = phi i64 [ %.22551, %.outer.preheader ], [ %.42553, %.outer.backedge ]
  %.32547.ph = phi i64 [ %.22546, %.outer.preheader ], [ %.42548, %.outer.backedge ]
  %.32543.ph = phi i64 [ %.22542, %.outer.preheader ], [ %.4, %.outer.backedge ]
  %.1.ph = phi i64 [ 1, %.outer.preheader ], [ %.12886, %.outer.backedge ]
  %.not26983285 = icmp eq i64 %.1.ph, 0
  br i1 %.not26983285, label %2224, label %.lr.ph3288

.lr.ph3288:                                       ; preds = %.outer
  %2214 = add nsw i64 %.22609.ph, 1
  %2215 = sub nsw i64 %78, %2214
  %2216 = call i64 @llvm.smin.i64(i64 %2213, i64 %2215)
  store i64 %2216, ptr %24, align 8, !tbaa !5
  %2217 = sub nsw i64 %2214, %.pre3744
  %2218 = call i64 @llvm.smax.i64(i64 %2217, i64 1)
  %2219 = add nsw i64 %2216, %2214
  %2220 = load i64, ptr %22, align 8, !tbaa !5
  %2221 = sub i64 %2219, %2220
  %.not2700 = icmp slt i64 %.22609.ph, %78
  br i1 %.not2700, label %.lr.ph3288.split.us, label %.lr.ph3288.split

.lr.ph3288.split.us:                              ; preds = %.lr.ph3288
  store i64 %2217, ptr %17, align 8, !tbaa !5
  %2222 = add nsw i64 %.22609.ph, 2
  br label %2227

.lr.ph3288.split:                                 ; preds = %.lr.ph3288
  %2223 = icmp eq i64 %.pre3744, 0
  br i1 %2223, label %.loopexit2869, label %._crit_edge3289

._crit_edge3289:                                  ; preds = %.lr.ph3288.split
  store i64 %2217, ptr %17, align 8, !tbaa !5
  br label %2224

2224:                                             ; preds = %._crit_edge3289, %.outer
  %.32552.lcssa = phi i64 [ %80, %._crit_edge3289 ], [ %.32552.ph, %.outer ]
  %.32547.lcssa = phi i64 [ %2218, %._crit_edge3289 ], [ %.32547.ph, %.outer ]
  %.32543.lcssa = phi i64 [ %2221, %._crit_edge3289 ], [ %.32543.ph, %.outer ]
  %2225 = sub nsw i64 %.22609.ph, %.pre3744
  %2226 = icmp slt i64 %2225, 2
  br i1 %2226, label %.loopexit2869, label %2227

2227:                                             ; preds = %.lr.ph3288.split.us, %2224
  %.12886 = phi i64 [ 0, %2224 ], [ %.1.ph, %.lr.ph3288.split.us ]
  %.not26982883 = phi i1 [ true, %2224 ], [ false, %.lr.ph3288.split.us ]
  %.32610 = phi i64 [ %2225, %2224 ], [ %2214, %.lr.ph3288.split.us ]
  %.42553 = phi i64 [ %.32552.lcssa, %2224 ], [ %2222, %.lr.ph3288.split.us ]
  %.42548 = phi i64 [ %.32547.lcssa, %2224 ], [ %2218, %.lr.ph3288.split.us ]
  %.4 = phi i64 [ %.32543.lcssa, %2224 ], [ %2221, %.lr.ph3288.split.us ]
  %2228 = load i64, ptr %24, align 8, !tbaa !5
  %2229 = sub nsw i64 %78, %2228
  %2230 = icmp slt i64 %.32610, %2229
  br i1 %2230, label %2233, label %2231

2231:                                             ; preds = %2227
  %2232 = load i64, ptr %2, align 8, !tbaa !5
  br label %2233

2233:                                             ; preds = %2227, %2231
  %storemerge = phi i64 [ %2232, %2231 ], [ %78, %2227 ]
  store i64 %storemerge, ptr %21, align 8, !tbaa !5
  br i1 %.not26982883, label %2389, label %2234

2234:                                             ; preds = %2233
  %2235 = mul nsw i64 %.32610, %30
  %2236 = getelementptr double, ptr %81, i64 %2235
  %2237 = load double, ptr %2236, align 8, !tbaa !9
  store i64 %.32610, ptr %16, align 8, !tbaa !5
  %.not27293299 = icmp sgt i64 %.42548, %.32610
  br i1 %.not27293299, label %._crit_edge3303, label %.lr.ph3302

.lr.ph3302:                                       ; preds = %2234
  %2238 = load i64, ptr %22, align 8, !tbaa !5
  %2239 = mul nsw i64 %.32610, %27
  %invariant.gep3304 = getelementptr double, ptr %29, i64 %2238
  %invariant.gep3306 = getelementptr double, ptr %invariant.gep3304, i64 %2239
  %2240 = add i64 %.32610, 1
  %2241 = sub i64 %2240, %.42548
  %min.iters.check4172 = icmp ult i64 %2241, 2
  br i1 %min.iters.check4172, label %scalar.ph4171.preheader, label %vector.ph4173

vector.ph4173:                                    ; preds = %.lr.ph3302
  %n.vec4175 = and i64 %2241, -2
  %ind.end4176 = add i64 %.42548, %n.vec4175
  %broadcast.splatinsert4182 = insertelement <2 x double> poison, double %2237, i64 0
  %broadcast.splat4183 = shufflevector <2 x double> %broadcast.splatinsert4182, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body4178

vector.body4178:                                  ; preds = %vector.body4178, %vector.ph4173
  %index4179 = phi i64 [ 0, %vector.ph4173 ], [ %index.next4184, %vector.body4178 ]
  %offset.idx4180 = add i64 %.42548, %index4179
  %2242 = sub nsw i64 %offset.idx4180, %.32610
  %2243 = getelementptr double, ptr %invariant.gep3306, i64 %2242
  %wide.load4181 = load <2 x double>, ptr %2243, align 8, !tbaa !9
  %2244 = fdiv <2 x double> %wide.load4181, %broadcast.splat4183
  store <2 x double> %2244, ptr %2243, align 8, !tbaa !9
  %index.next4184 = add nuw i64 %index4179, 2
  %2245 = icmp eq i64 %index.next4184, %n.vec4175
  br i1 %2245, label %middle.block4170, label %vector.body4178, !llvm.loop !153

middle.block4170:                                 ; preds = %vector.body4178
  %cmp.n4185 = icmp eq i64 %2241, %n.vec4175
  br i1 %cmp.n4185, label %._crit_edge3303, label %scalar.ph4171.preheader

scalar.ph4171.preheader:                          ; preds = %middle.block4170, %.lr.ph3302
  %.2226053300.ph = phi i64 [ %.42548, %.lr.ph3302 ], [ %ind.end4176, %middle.block4170 ]
  br label %scalar.ph4171

scalar.ph4171:                                    ; preds = %scalar.ph4171.preheader, %scalar.ph4171
  %.2226053300 = phi i64 [ %2249, %scalar.ph4171 ], [ %.2226053300.ph, %scalar.ph4171.preheader ]
  %2246 = sub nsw i64 %.2226053300, %.32610
  %gep3307 = getelementptr double, ptr %invariant.gep3306, i64 %2246
  %2247 = load double, ptr %gep3307, align 8, !tbaa !9
  %2248 = fdiv double %2247, %2237
  store double %2248, ptr %gep3307, align 8, !tbaa !9
  %2249 = add i64 %.2226053300, 1
  %exitcond3714.not = icmp eq i64 %.2226053300, %.32610
  br i1 %exitcond3714.not, label %._crit_edge3303, label %scalar.ph4171, !llvm.loop !154

._crit_edge3303:                                  ; preds = %scalar.ph4171, %middle.block4170, %2234
  %2250 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %2250, ptr %17, align 8, !tbaa !5
  %2251 = add i64 %.pre3744, %.32610
  store i64 %2251, ptr %14, align 8, !tbaa !5
  %2252 = call i64 @llvm.smin.i64(i64 %2250, i64 %2251)
  %.not27313308 = icmp sgt i64 %.32610, %2252
  br i1 %.not27313308, label %._crit_edge3312, label %.lr.ph3311

.lr.ph3311:                                       ; preds = %._crit_edge3303
  %2253 = load i64, ptr %22, align 8, !tbaa !5
  %invariant.gep3313 = getelementptr double, ptr %29, i64 %2253
  %2254 = add i64 %2252, %.32610
  %2255 = and i64 %2254, 1
  %lcmp.mod4388.not.not = icmp eq i64 %2255, 0
  br i1 %lcmp.mod4388.not.not, label %.prol.loopexit4386.unr-lcssa, label %.prol.loopexit4386

.prol.loopexit4386.unr-lcssa:                     ; preds = %.lr.ph3311
  %2256 = mul nsw i64 %.32610, %27
  %2257 = getelementptr double, ptr %invariant.gep3313, i64 %2256
  %2258 = load double, ptr %2257, align 8, !tbaa !9
  %2259 = fdiv double %2258, %2237
  store double %2259, ptr %2257, align 8, !tbaa !9
  %2260 = add i64 %.32610, 1
  br label %.prol.loopexit4386

.prol.loopexit4386:                               ; preds = %.prol.loopexit4386.unr-lcssa, %.lr.ph3311
  %.2326063309.unr = phi i64 [ %.32610, %.lr.ph3311 ], [ %2260, %.prol.loopexit4386.unr-lcssa ]
  %2261 = icmp eq i64 %2252, %.32610
  br i1 %2261, label %._crit_edge3312, label %.lr.ph3311.new

.lr.ph3311.new:                                   ; preds = %.prol.loopexit4386, %.lr.ph3311.new
  %.2326063309 = phi i64 [ %2273, %.lr.ph3311.new ], [ %.2326063309.unr, %.prol.loopexit4386 ]
  %2262 = sub nsw i64 %.32610, %.2326063309
  %2263 = mul nsw i64 %.2326063309, %27
  %gep3314 = getelementptr double, ptr %invariant.gep3313, i64 %2262
  %2264 = getelementptr double, ptr %gep3314, i64 %2263
  %2265 = load double, ptr %2264, align 8, !tbaa !9
  %2266 = fdiv double %2265, %2237
  store double %2266, ptr %2264, align 8, !tbaa !9
  %2267 = add i64 %.2326063309, 1
  %2268 = sub nsw i64 %.32610, %2267
  %2269 = mul nsw i64 %2267, %27
  %gep3314.1 = getelementptr double, ptr %invariant.gep3313, i64 %2268
  %2270 = getelementptr double, ptr %gep3314.1, i64 %2269
  %2271 = load double, ptr %2270, align 8, !tbaa !9
  %2272 = fdiv double %2271, %2237
  store double %2272, ptr %2270, align 8, !tbaa !9
  %2273 = add i64 %.2326063309, 2
  %exitcond3715.not.1 = icmp eq i64 %2267, %2252
  br i1 %exitcond3715.not.1, label %._crit_edge3312, label %.lr.ph3311.new, !llvm.loop !155

._crit_edge3312:                                  ; preds = %.prol.loopexit4386, %.lr.ph3311.new, %._crit_edge3303
  %2274 = add i64 %2228, %.32610
  %2275 = add i64 %.32610, 1
  %.not27323339 = icmp slt i64 %2228, 1
  br i1 %.not27323339, label %2321, label %.lr.ph3342

.lr.ph3342:                                       ; preds = %._crit_edge3312
  %2276 = load i64, ptr %22, align 8
  %invariant.gep3324 = getelementptr double, ptr %29, i64 %2276
  %2277 = mul nsw i64 %.32610, %27
  %2278 = getelementptr double, ptr %invariant.gep3324, i64 %2277
  %.not2755.not3330 = icmp slt i64 %2274, %2252
  br label %2279

2279:                                             ; preds = %.lr.ph3342, %._crit_edge3334
  %.1225713340 = phi i64 [ %2275, %.lr.ph3342 ], [ %2320, %._crit_edge3334 ]
  %.not27533319 = icmp sgt i64 %.1225713340, %2274
  br i1 %.not27533319, label %._crit_edge3323, label %.lr.ph3322

.lr.ph3322:                                       ; preds = %2279
  %2280 = sub nsw i64 %.32610, %.1225713340
  %2281 = mul nsw i64 %.1225713340, %27
  %gep3345 = getelementptr double, ptr %invariant.gep3324, i64 %2280
  %2282 = getelementptr double, ptr %gep3345, i64 %2281
  %2283 = mul nsw i64 %.1225713340, %30
  %gep3318 = getelementptr double, ptr %81, i64 %2280
  %2284 = getelementptr double, ptr %gep3318, i64 %2283
  br label %2285

2285:                                             ; preds = %.lr.ph3322, %2285
  %.243320 = phi i64 [ %.1225713340, %.lr.ph3322 ], [ %2305, %2285 ]
  %2286 = sub nsw i64 %.1225713340, %.243320
  %2287 = mul nsw i64 %.243320, %27
  %gep3325 = getelementptr double, ptr %invariant.gep3324, i64 %2286
  %2288 = getelementptr double, ptr %gep3325, i64 %2287
  %2289 = load double, ptr %2288, align 8, !tbaa !9
  %2290 = sub nsw i64 %.32610, %.243320
  %2291 = mul nsw i64 %.243320, %30
  %gep3316 = getelementptr double, ptr %81, i64 %2290
  %2292 = getelementptr double, ptr %gep3316, i64 %2291
  %2293 = load double, ptr %2292, align 8, !tbaa !9
  %2294 = load double, ptr %2282, align 8, !tbaa !9
  %2295 = fneg double %2293
  %2296 = call double @llvm.fmuladd.f64(double %2295, double %2294, double %2289)
  %2297 = load double, ptr %2284, align 8, !tbaa !9
  %gep3327 = getelementptr double, ptr %invariant.gep3324, i64 %2290
  %2298 = getelementptr double, ptr %gep3327, i64 %2287
  %2299 = load double, ptr %2298, align 8, !tbaa !9
  %2300 = fneg double %2297
  %2301 = call double @llvm.fmuladd.f64(double %2300, double %2299, double %2296)
  %2302 = load double, ptr %2278, align 8, !tbaa !9
  %2303 = fmul double %2293, %2302
  %2304 = call double @llvm.fmuladd.f64(double %2303, double %2297, double %2301)
  store double %2304, ptr %2288, align 8, !tbaa !9
  %2305 = add nsw i64 %.243320, 1
  %.not2753.not = icmp slt i64 %.243320, %2274
  br i1 %.not2753.not, label %2285, label %._crit_edge3323, !llvm.loop !156

._crit_edge3323:                                  ; preds = %2285, %2279
  br i1 %.not2755.not3330, label %.lr.ph3333, label %._crit_edge3334

.lr.ph3333:                                       ; preds = %._crit_edge3323
  %2306 = sub nsw i64 %.32610, %.1225713340
  %2307 = mul nsw i64 %.1225713340, %30
  %gep3329 = getelementptr double, ptr %81, i64 %2306
  %2308 = getelementptr double, ptr %gep3329, i64 %2307
  br label %2309

2309:                                             ; preds = %.lr.ph3333, %2309
  %.25.in3331 = phi i64 [ %2274, %.lr.ph3333 ], [ %.25, %2309 ]
  %.25 = add nsw i64 %.25.in3331, 1
  %2310 = load double, ptr %2308, align 8, !tbaa !9
  %2311 = sub nsw i64 %.32610, %.25
  %2312 = mul nsw i64 %.25, %27
  %gep3336 = getelementptr double, ptr %invariant.gep3324, i64 %2311
  %2313 = getelementptr double, ptr %gep3336, i64 %2312
  %2314 = load double, ptr %2313, align 8, !tbaa !9
  %2315 = sub nsw i64 %.1225713340, %.25
  %gep3338 = getelementptr double, ptr %invariant.gep3324, i64 %2315
  %2316 = getelementptr double, ptr %gep3338, i64 %2312
  %2317 = load double, ptr %2316, align 8, !tbaa !9
  %2318 = fneg double %2310
  %2319 = call double @llvm.fmuladd.f64(double %2318, double %2314, double %2317)
  store double %2319, ptr %2316, align 8, !tbaa !9
  %.not2755.not = icmp slt i64 %.25, %2252
  br i1 %.not2755.not, label %2309, label %._crit_edge3334, !llvm.loop !157

._crit_edge3334:                                  ; preds = %2309, %._crit_edge3323
  %2320 = add nsw i64 %.1225713340, 1
  %.not2732.not = icmp slt i64 %.1225713340, %2274
  br i1 %.not2732.not, label %2279, label %._crit_edge3343, !llvm.loop !158

._crit_edge3343:                                  ; preds = %._crit_edge3334
  store i64 %2252, ptr %17, align 8, !tbaa !5
  store i64 %2250, ptr %14, align 8, !tbaa !5
  store i64 %2251, ptr %15, align 8, !tbaa !5
  br label %2321

2321:                                             ; preds = %._crit_edge3343, %._crit_edge3312
  store i64 %.32610, ptr %16, align 8, !tbaa !5
  br i1 %.not27293299, label %2366, label %.lr.ph3358

.lr.ph3358:                                       ; preds = %2321
  %2322 = load i64, ptr %22, align 8
  %2323 = mul nsw i64 %.32610, %27
  %invariant.gep3360 = getelementptr double, ptr %29, i64 %2322
  %invariant.gep3362 = getelementptr double, ptr %invariant.gep3360, i64 %2323
  %2324 = add i64 %.42548, %.pre3744
  %.neg4399 = add i64 %.32610, 1
  %2325 = mul nsw i64 %2275, %30
  %2326 = getelementptr double, ptr %gep3347.prol, i64 %2325
  %2327 = mul nsw i64 %2275, %27
  %invariant.gep4420 = getelementptr double, ptr %invariant.gep3360, i64 %2327
  %2328 = add i64 %.32610, 2
  br label %2329

2329:                                             ; preds = %.lr.ph3358, %._crit_edge3352
  %indvars.iv3716 = phi i64 [ %2324, %.lr.ph3358 ], [ %indvars.iv.next3717, %._crit_edge3352 ]
  %.263356 = phi i64 [ %.42548, %.lr.ph3358 ], [ %2365, %._crit_edge3352 ]
  %smin4391 = call i64 @llvm.smin.i64(i64 %indvars.iv3716, i64 %2274)
  %smin = call i64 @llvm.smin.i64(i64 %indvars.iv3716, i64 %2274)
  %2330 = add nsw i64 %.pre3744, %.263356
  %2331 = call i64 @llvm.smin.i64(i64 %2330, i64 %2274)
  %.not27523348.not = icmp slt i64 %.32610, %2331
  br i1 %.not27523348.not, label %.lr.ph3351, label %._crit_edge3352

.lr.ph3351:                                       ; preds = %2329
  %2332 = sub i64 %smin4391, %.32610
  %2333 = sub nsw i64 %.263356, %.32610
  %gep3363 = getelementptr double, ptr %invariant.gep3362, i64 %2333
  %xtraiter4392 = and i64 %2332, 1
  %lcmp.mod4393.not = icmp eq i64 %xtraiter4392, 0
  br i1 %lcmp.mod4393.not, label %.prol.loopexit4390, label %.prol.loopexit4390.unr-lcssa

.prol.loopexit4390.unr-lcssa:                     ; preds = %.lr.ph3351
  %2334 = load double, ptr %2326, align 8, !tbaa !9
  %2335 = load double, ptr %gep3363, align 8, !tbaa !9
  %2336 = sub nsw i64 %.263356, %2275
  %gep4421 = getelementptr double, ptr %invariant.gep4420, i64 %2336
  %2337 = load double, ptr %gep4421, align 8, !tbaa !9
  %2338 = fneg double %2334
  %2339 = call double @llvm.fmuladd.f64(double %2338, double %2335, double %2337)
  store double %2339, ptr %gep4421, align 8, !tbaa !9
  br label %.prol.loopexit4390

.prol.loopexit4390:                               ; preds = %.prol.loopexit4390.unr-lcssa, %.lr.ph3351
  %.1325723349.unr = phi i64 [ %2275, %.lr.ph3351 ], [ %2328, %.prol.loopexit4390.unr-lcssa ]
  %2340 = icmp eq i64 %smin4391, %.neg4399
  br i1 %2340, label %._crit_edge3352, label %.lr.ph3351.new

.lr.ph3351.new:                                   ; preds = %.prol.loopexit4390, %.lr.ph3351.new
  %.1325723349 = phi i64 [ %2364, %.lr.ph3351.new ], [ %.1325723349.unr, %.prol.loopexit4390 ]
  %2341 = sub nsw i64 %.32610, %.1325723349
  %2342 = mul nsw i64 %.1325723349, %30
  %gep3347 = getelementptr double, ptr %81, i64 %2341
  %2343 = getelementptr double, ptr %gep3347, i64 %2342
  %2344 = load double, ptr %2343, align 8, !tbaa !9
  %2345 = load double, ptr %gep3363, align 8, !tbaa !9
  %2346 = sub nsw i64 %.263356, %.1325723349
  %2347 = mul nsw i64 %.1325723349, %27
  %gep3354 = getelementptr double, ptr %invariant.gep3360, i64 %2346
  %2348 = getelementptr double, ptr %gep3354, i64 %2347
  %2349 = load double, ptr %2348, align 8, !tbaa !9
  %2350 = fneg double %2344
  %2351 = call double @llvm.fmuladd.f64(double %2350, double %2345, double %2349)
  store double %2351, ptr %2348, align 8, !tbaa !9
  %2352 = add i64 %.1325723349, 1
  %2353 = sub nsw i64 %.32610, %2352
  %2354 = mul nsw i64 %2352, %30
  %gep3347.1 = getelementptr double, ptr %81, i64 %2353
  %2355 = getelementptr double, ptr %gep3347.1, i64 %2354
  %2356 = load double, ptr %2355, align 8, !tbaa !9
  %2357 = load double, ptr %gep3363, align 8, !tbaa !9
  %2358 = sub nsw i64 %.263356, %2352
  %2359 = mul nsw i64 %2352, %27
  %gep3354.1 = getelementptr double, ptr %invariant.gep3360, i64 %2358
  %2360 = getelementptr double, ptr %gep3354.1, i64 %2359
  %2361 = load double, ptr %2360, align 8, !tbaa !9
  %2362 = fneg double %2356
  %2363 = call double @llvm.fmuladd.f64(double %2362, double %2357, double %2361)
  store double %2363, ptr %2360, align 8, !tbaa !9
  %2364 = add i64 %.1325723349, 2
  %exitcond3718.not.1 = icmp eq i64 %2352, %smin
  br i1 %exitcond3718.not.1, label %._crit_edge3352, label %.lr.ph3351.new, !llvm.loop !159

._crit_edge3352:                                  ; preds = %.prol.loopexit4390, %.lr.ph3351.new, %2329
  %2365 = add i64 %.263356, 1
  %indvars.iv.next3717 = add i64 %indvars.iv3716, 1
  %exitcond3720.not = icmp eq i64 %.263356, %.32610
  br i1 %exitcond3720.not, label %._crit_edge3359, label %2329, !llvm.loop !160

._crit_edge3359:                                  ; preds = %._crit_edge3352
  %smin3719 = call i64 @llvm.smin.i64(i64 %2251, i64 %2274)
  store i64 %2251, ptr %14, align 8, !tbaa !5
  store i64 %2274, ptr %15, align 8, !tbaa !5
  store i64 %smin3719, ptr %17, align 8, !tbaa !5
  br label %2366

2366:                                             ; preds = %._crit_edge3359, %2321
  br i1 %.not, label %2367, label %2381

2367:                                             ; preds = %2366
  %2368 = fdiv double 1.000000e+00, %2237
  store double %2368, ptr %18, align 8, !tbaa !9
  %2369 = mul nsw i64 %.32610, %33
  %gep3663 = getelementptr double, ptr %invariant.gep3662, i64 %2369
  %2370 = call i32 @f2c_dscal(ptr noundef nonnull %21, ptr noundef nonnull %18, ptr noundef %gep3663, ptr noundef nonnull @c__1) #5
  %2371 = load i64, ptr %24, align 8, !tbaa !5
  %2372 = icmp sgt i64 %2371, 0
  %.pre3745.pre3824 = load i64, ptr %4, align 8, !tbaa !5
  br i1 %2372, label %2373, label %2381

2373:                                             ; preds = %2367
  %2374 = load i64, ptr %8, align 8, !tbaa !5
  %2375 = add nsw i64 %2374, -1
  store i64 %2375, ptr %16, align 8, !tbaa !5
  %2376 = mul nsw i64 %2275, %30
  %2377 = getelementptr double, ptr %32, i64 %.pre3745.pre3824
  %2378 = getelementptr double, ptr %2377, i64 %2376
  %2379 = mul nsw i64 %2275, %33
  %gep3665 = getelementptr double, ptr %invariant.gep3662, i64 %2379
  %2380 = call i32 @f2c_dger(ptr noundef nonnull %21, ptr noundef nonnull %24, ptr noundef nonnull @c_b20, ptr noundef %gep3663, ptr noundef nonnull @c__1, ptr noundef %2378, ptr noundef nonnull %16, ptr noundef %gep3665, ptr noundef nonnull %10) #5
  %.pre3745.pre = load i64, ptr %4, align 8, !tbaa !5
  br label %2381

2381:                                             ; preds = %2367, %2373, %2366
  %.pre3745 = phi i64 [ %.pre3745.pre3824, %2367 ], [ %.pre3745.pre, %2373 ], [ %2213, %2366 ]
  %2382 = sub nsw i64 %.42548, %.32610
  %2383 = load i64, ptr %22, align 8, !tbaa !5
  %2384 = mul nsw i64 %.32610, %27
  %2385 = getelementptr double, ptr %29, i64 %2382
  %2386 = getelementptr double, ptr %2385, i64 %2383
  %2387 = getelementptr double, ptr %2386, i64 %2384
  %2388 = load double, ptr %2387, align 8, !tbaa !9
  store double %2388, ptr %23, align 8, !tbaa !9
  br label %2389

2389:                                             ; preds = %2381, %2233
  %2390 = phi i64 [ %.pre3745, %2381 ], [ %2213, %2233 ]
  %2391 = add nsw i64 %2390, -1
  store i64 %2391, ptr %16, align 8, !tbaa !5
  %invariant.gep3400 = getelementptr double, ptr %36, i64 %.32610
  %.not27343404 = icmp slt i64 %2390, 2
  br i1 %.not27343404, label %._crit_edge3408, label %.lr.ph3407

.lr.ph3407:                                       ; preds = %2389
  %2392 = mul nsw i64 %.32610, %27
  %invariant.gep3409 = getelementptr double, ptr %invariant.gep3281, i64 %2392
  %reass.sub = sub i64 %.42553, %78
  %2393 = add i64 %reass.sub, 1
  %2394 = add i64 %.32610, 1
  %2395 = add i64 %.32610, -1
  br label %2396

2396:                                             ; preds = %.lr.ph3407, %.loopexit2866
  %.1425733405 = phi i64 [ 1, %.lr.ph3407 ], [ %2574, %.loopexit2866 ]
  %.pre3747 = load i64, ptr %22, align 8, !tbaa !5
  br i1 %.not26982883, label %._crit_edge3748, label %2397

._crit_edge3748:                                  ; preds = %2396
  %.pre3749 = load i64, ptr %3, align 8, !tbaa !5
  br label %2441

2397:                                             ; preds = %2396
  %2398 = add i64 %.1425733405, %.32610
  %2399 = icmp sgt i64 %2398, %.pre3747
  %2400 = icmp slt i64 %2398, %78
  %or.cond2761 = select i1 %2399, i1 %2400, i1 false
  %.pre3750 = load i64, ptr %3, align 8, !tbaa !5
  br i1 %or.cond2761, label %2401, label %2441

2401:                                             ; preds = %2397
  %gep3410 = getelementptr double, ptr %invariant.gep3409, i64 %.1425733405
  %2402 = load i64, ptr %2, align 8, !tbaa !5
  %2403 = add i64 %2398, %2402
  %2404 = sub i64 %2403, %.pre3750
  %2405 = getelementptr inbounds double, ptr %36, i64 %2404
  %2406 = sub nsw i64 %2398, %.pre3750
  %2407 = getelementptr inbounds double, ptr %36, i64 %2406
  %2408 = call i32 @dlartg_(ptr noundef %gep3410, ptr noundef nonnull %23, ptr noundef nonnull %2405, ptr noundef nonnull %2407, ptr noundef nonnull %19) #5
  %2409 = sub nsw i64 %42, %.1425733405
  %2410 = mul nsw i64 %2398, %30
  %2411 = getelementptr double, ptr %32, i64 %2409
  %2412 = getelementptr double, ptr %2411, i64 %2410
  %2413 = load double, ptr %2412, align 8, !tbaa !9
  %2414 = fneg double %2413
  %2415 = load double, ptr %23, align 8, !tbaa !9
  %2416 = fmul double %2415, %2414
  %2417 = load i64, ptr %2, align 8, !tbaa !5
  %2418 = load i64, ptr %3, align 8, !tbaa !5
  %2419 = add i64 %2398, %2417
  %2420 = sub i64 %2419, %2418
  %2421 = getelementptr inbounds double, ptr %36, i64 %2420
  %2422 = load double, ptr %2421, align 8, !tbaa !9
  %2423 = sub i64 %2398, %2418
  %2424 = getelementptr double, ptr %36, i64 %2423
  %2425 = load double, ptr %2424, align 8, !tbaa !9
  %2426 = mul nsw i64 %2398, %27
  %gep3399 = getelementptr double, ptr %invariant.gep3281, i64 %2426
  %2427 = load double, ptr %gep3399, align 8, !tbaa !9
  %2428 = fneg double %2425
  %2429 = fmul double %2427, %2428
  %2430 = call double @llvm.fmuladd.f64(double %2422, double %2416, double %2429)
  %2431 = load i64, ptr %4, align 8, !tbaa !5
  %2432 = sub nsw i64 %78, %2431
  %gep3401 = getelementptr double, ptr %invariant.gep3400, i64 %2432
  %2433 = getelementptr double, ptr %gep3401, i64 %.1425733405
  store double %2430, ptr %2433, align 8, !tbaa !9
  %2434 = load double, ptr %2424, align 8, !tbaa !9
  %2435 = getelementptr double, ptr %2424, i64 %2417
  %2436 = load double, ptr %2435, align 8, !tbaa !9
  %2437 = load double, ptr %gep3399, align 8, !tbaa !9
  %2438 = fmul double %2436, %2437
  %2439 = call double @llvm.fmuladd.f64(double %2434, double %2416, double %2438)
  store double %2439, ptr %gep3399, align 8, !tbaa !9
  %2440 = load double, ptr %19, align 8, !tbaa !9
  store double %2440, ptr %23, align 8, !tbaa !9
  %.pre3746 = load i64, ptr %22, align 8, !tbaa !5
  br label %2441

2441:                                             ; preds = %._crit_edge3748, %2397, %2401
  %2442 = phi i64 [ %.pre3750, %2397 ], [ %2418, %2401 ], [ %.pre3749, %._crit_edge3748 ]
  %2443 = phi i64 [ %.pre3747, %2397 ], [ %.pre3746, %2401 ], [ %.pre3747, %._crit_edge3748 ]
  %2444 = add i64 %2393, %.1425733405
  %2445 = call i64 @llvm.smax.i64(i64 %2444, i64 1)
  %2446 = mul nsw i64 %2445, %2443
  %2447 = add i64 %2394, %.1425733405
  %2448 = sub i64 %2447, %2446
  %2449 = add i64 %2442, -1
  %2450 = add i64 %2449, %2448
  %2451 = sdiv i64 %2450, %2443
  store i64 %2451, ptr %20, align 8, !tbaa !5
  %2452 = add nsw i64 %2451, -1
  %2453 = mul nsw i64 %2443, %2452
  %2454 = sub nsw i64 %2448, %2453
  br i1 %.not26982883, label %2460, label %2455

2455:                                             ; preds = %2441
  %2456 = add i64 %2395, %.1425733405
  %2457 = shl i64 %2442, 1
  %2458 = sub i64 %2456, %2457
  %2459 = call i64 @llvm.smin.i64(i64 %2448, i64 %2458)
  br label %2460

2460:                                             ; preds = %2441, %2455
  %.2 = phi i64 [ %2459, %2455 ], [ %2448, %2441 ]
  %2461 = add i64 %.2, -1
  %2462 = add i64 %2461, %2442
  %2463 = sdiv i64 %2462, %2443
  store i64 %2463, ptr %25, align 8, !tbaa !5
  store i64 %.2, ptr %17, align 8, !tbaa !5
  store i64 %2443, ptr %14, align 8, !tbaa !5
  %2464 = icmp slt i64 %2443, 0
  %2465 = icmp sge i64 %2454, %.2
  %2466 = icmp sle i64 %2454, %.2
  %.in27473369 = select i1 %2464, i1 %2465, i1 %2466
  br i1 %.in27473369, label %.lr.ph3372, label %._crit_edge3373

.lr.ph3372:                                       ; preds = %2460
  %2467 = load i64, ptr %2, align 8, !tbaa !5
  %2468 = getelementptr double, ptr %36, i64 %2467
  br label %2469

2469:                                             ; preds = %.lr.ph3372, %2469
  %.273370 = phi i64 [ %2454, %.lr.ph3372 ], [ %2481, %2469 ]
  %2470 = add i64 %.273370, -1
  %2471 = add i64 %2470, %2442
  %2472 = mul nsw i64 %2471, %27
  %gep3366 = getelementptr double, ptr %invariant.gep3281, i64 %2472
  %2473 = load double, ptr %gep3366, align 8, !tbaa !9
  %2474 = getelementptr inbounds double, ptr %36, i64 %.273370
  %2475 = load double, ptr %2474, align 8, !tbaa !9
  %2476 = fmul double %2473, %2475
  store double %2476, ptr %2474, align 8, !tbaa !9
  %2477 = getelementptr double, ptr %2468, i64 %.273370
  %2478 = load double, ptr %2477, align 8, !tbaa !9
  %2479 = load double, ptr %gep3366, align 8, !tbaa !9
  %2480 = fmul double %2478, %2479
  store double %2480, ptr %gep3366, align 8, !tbaa !9
  %2481 = add nsw i64 %2443, %.273370
  %2482 = icmp sge i64 %2481, %.2
  %2483 = icmp sle i64 %2481, %.2
  %.in2747 = select i1 %2464, i1 %2482, i1 %2483
  br i1 %.in2747, label %2469, label %._crit_edge3373, !llvm.loop !161

._crit_edge3373:                                  ; preds = %2469, %2460
  %2484 = icmp sgt i64 %2463, 0
  br i1 %2484, label %2485, label %2493

2485:                                             ; preds = %._crit_edge3373
  %2486 = add nsw i64 %2442, %2454
  %2487 = mul nsw i64 %2486, %27
  %gep3403 = getelementptr double, ptr %invariant.gep3281, i64 %2487
  %2488 = getelementptr inbounds double, ptr %36, i64 %2454
  %2489 = load i64, ptr %2, align 8, !tbaa !5
  %2490 = getelementptr double, ptr %36, i64 %2489
  %2491 = getelementptr double, ptr %2490, i64 %2454
  %2492 = call i32 @dlargv_(ptr noundef nonnull %25, ptr noundef %gep3403, ptr noundef nonnull %26, ptr noundef nonnull %2488, ptr noundef nonnull %22, ptr noundef %2491, ptr noundef nonnull %22) #5
  %.pre3751 = load i64, ptr %20, align 8, !tbaa !5
  %.pre3754.pre = load i64, ptr %3, align 8, !tbaa !5
  br label %2493

2493:                                             ; preds = %2485, %._crit_edge3373
  %.pre3754 = phi i64 [ %.pre3754.pre, %2485 ], [ %2442, %._crit_edge3373 ]
  %2494 = phi i64 [ %.pre3751, %2485 ], [ %2451, %._crit_edge3373 ]
  %2495 = icmp sgt i64 %2494, 0
  br i1 %2495, label %2496, label %2526

2496:                                             ; preds = %2493
  %2497 = add nsw i64 %.pre3754, -1
  store i64 %2497, ptr %14, align 8, !tbaa !5
  %invariant.gep3374 = getelementptr double, ptr %36, i64 %2454
  %.not27483376 = icmp slt i64 %.pre3754, 2
  br i1 %.not27483376, label %._crit_edge3380, label %.lr.ph3379

.lr.ph3379:                                       ; preds = %2496, %.lr.ph3379
  %.123377 = phi i64 [ %2510, %.lr.ph3379 ], [ 1, %2496 ]
  %2498 = load i64, ptr %22, align 8, !tbaa !5
  %2499 = sub nsw i64 %2498, %.123377
  %2500 = add nsw i64 %.123377, %2454
  %2501 = mul nsw i64 %2500, %27
  %2502 = getelementptr double, ptr %29, i64 %2499
  %2503 = getelementptr double, ptr %2502, i64 %2501
  %2504 = load i64, ptr %3, align 8, !tbaa !5
  %2505 = sub nsw i64 %2504, %.123377
  %2506 = getelementptr double, ptr %29, i64 %2505
  %2507 = getelementptr double, ptr %2506, i64 %2501
  %2508 = load i64, ptr %2, align 8, !tbaa !5
  %gep3375 = getelementptr double, ptr %invariant.gep3374, i64 %2508
  %2509 = call i32 @dlartv_(ptr noundef nonnull %20, ptr noundef %2503, ptr noundef nonnull %26, ptr noundef %2507, ptr noundef nonnull %26, ptr noundef %gep3375, ptr noundef nonnull %invariant.gep3374, ptr noundef nonnull %22) #5
  %2510 = add nuw nsw i64 %.123377, 1
  %2511 = load i64, ptr %14, align 8, !tbaa !5
  %.not2748.not = icmp slt i64 %.123377, %2511
  br i1 %.not2748.not, label %.lr.ph3379, label %._crit_edge3380.loopexit, !llvm.loop !162

._crit_edge3380.loopexit:                         ; preds = %.lr.ph3379
  %.pre3752 = load i64, ptr %3, align 8, !tbaa !5
  br label %._crit_edge3380

._crit_edge3380:                                  ; preds = %._crit_edge3380.loopexit, %2496
  %2512 = phi i64 [ %.pre3752, %._crit_edge3380.loopexit ], [ %.pre3754, %2496 ]
  %2513 = load i64, ptr %22, align 8, !tbaa !5
  %2514 = mul nsw i64 %2454, %27
  %2515 = getelementptr double, ptr %29, i64 %2513
  %2516 = getelementptr double, ptr %2515, i64 %2514
  %2517 = add nsw i64 %2454, -1
  %2518 = mul nsw i64 %2517, %27
  %2519 = getelementptr double, ptr %2515, i64 %2518
  %2520 = getelementptr double, ptr %29, i64 %2512
  %2521 = getelementptr double, ptr %2520, i64 %2514
  %2522 = load i64, ptr %2, align 8, !tbaa !5
  %2523 = getelementptr double, ptr %36, i64 %2522
  %2524 = getelementptr double, ptr %2523, i64 %2454
  %2525 = call i32 @dlar2v_(ptr noundef nonnull %20, ptr noundef %2516, ptr noundef %2519, ptr noundef %2521, ptr noundef nonnull %26, ptr noundef %2524, ptr noundef nonnull %invariant.gep3374, ptr noundef nonnull %22) #5
  %.pre3753 = load i64, ptr %3, align 8, !tbaa !5
  br label %2526

2526:                                             ; preds = %._crit_edge3380, %2493
  %2527 = phi i64 [ %.pre3753, %._crit_edge3380 ], [ %.pre3754, %2493 ]
  %2528 = load i64, ptr %4, align 8, !tbaa !5
  %reass.sub3675 = sub i64 %2528, %.1425733405
  %2529 = add i64 %reass.sub3675, 1
  store i64 %2529, ptr %14, align 8, !tbaa !5
  %.not2749.not3382 = icmp sgt i64 %2527, %2529
  br i1 %.not2749.not3382, label %.lr.ph3386, label %._crit_edge3387

.lr.ph3386:                                       ; preds = %2526
  %2530 = add i64 %2448, -1
  br label %2531

2531:                                             ; preds = %.lr.ph3386, %2553
  %2532 = phi i64 [ %2529, %.lr.ph3386 ], [ %2554, %2553 ]
  %.13.in3383 = phi i64 [ %2527, %.lr.ph3386 ], [ %.133384, %2553 ]
  %.133384 = add nsw i64 %.13.in3383, -1
  %2533 = add i64 %2530, %.133384
  %2534 = load i64, ptr %22, align 8, !tbaa !5
  %2535 = sdiv i64 %2533, %2534
  store i64 %2535, ptr %25, align 8, !tbaa !5
  %2536 = icmp sgt i64 %2535, 0
  br i1 %2536, label %2537, label %2553

2537:                                             ; preds = %2531
  %2538 = add nsw i64 %2535, -1
  %2539 = mul nsw i64 %2538, %2534
  %2540 = sub nsw i64 %2448, %2539
  %2541 = mul nsw i64 %2540, %27
  %2542 = getelementptr double, ptr %29, i64 %.133384
  %2543 = getelementptr double, ptr %2542, i64 %2541
  %2544 = add nsw i64 %2540, -1
  %2545 = mul nsw i64 %2544, %27
  %2546 = getelementptr double, ptr %29, i64 %.13.in3383
  %2547 = getelementptr double, ptr %2546, i64 %2545
  %2548 = load i64, ptr %2, align 8, !tbaa !5
  %2549 = getelementptr double, ptr %36, i64 %2548
  %2550 = getelementptr double, ptr %2549, i64 %2540
  %2551 = getelementptr inbounds double, ptr %36, i64 %2540
  %2552 = call i32 @dlartv_(ptr noundef nonnull %25, ptr noundef %2543, ptr noundef nonnull %26, ptr noundef %2547, ptr noundef nonnull %26, ptr noundef %2550, ptr noundef nonnull %2551, ptr noundef nonnull %22) #5
  %.pre3755 = load i64, ptr %14, align 8, !tbaa !5
  br label %2553

2553:                                             ; preds = %2531, %2537
  %2554 = phi i64 [ %2532, %2531 ], [ %.pre3755, %2537 ]
  %.not2749.not = icmp sgt i64 %.133384, %2554
  br i1 %.not2749.not, label %2531, label %._crit_edge3387, !llvm.loop !163

._crit_edge3387:                                  ; preds = %2553, %2526
  br i1 %.not, label %2555, label %.loopexit2866

2555:                                             ; preds = %._crit_edge3387
  store i64 %2448, ptr %14, align 8, !tbaa !5
  %2556 = load i64, ptr %22, align 8, !tbaa !5
  store i64 %2556, ptr %17, align 8, !tbaa !5
  %2557 = icmp slt i64 %2556, 0
  %2558 = icmp slt i64 %2453, 1
  %2559 = icmp sgt i64 %2453, -1
  %.in27503392 = select i1 %2557, i1 %2558, i1 %2559
  br i1 %.in27503392, label %.lr.ph3395, label %.loopexit2866

.lr.ph3395:                                       ; preds = %2555, %.lr.ph3395
  %.283393 = phi i64 [ %2569, %.lr.ph3395 ], [ %2454, %2555 ]
  %2560 = mul nsw i64 %.283393, %33
  %gep3389 = getelementptr double, ptr %invariant.gep3662, i64 %2560
  %2561 = add nsw i64 %.283393, -1
  %2562 = mul nsw i64 %2561, %33
  %gep3391 = getelementptr double, ptr %invariant.gep3662, i64 %2562
  %2563 = load i64, ptr %2, align 8, !tbaa !5
  %2564 = getelementptr double, ptr %36, i64 %2563
  %2565 = getelementptr double, ptr %2564, i64 %.283393
  %2566 = getelementptr inbounds double, ptr %36, i64 %.283393
  %2567 = call i32 @f2c_drot(ptr noundef nonnull %21, ptr noundef %gep3389, ptr noundef nonnull @c__1, ptr noundef %gep3391, ptr noundef nonnull @c__1, ptr noundef %2565, ptr noundef nonnull %2566) #5
  %2568 = load i64, ptr %17, align 8, !tbaa !5
  %2569 = add nsw i64 %2568, %.283393
  %2570 = icmp slt i64 %2568, 0
  %2571 = load i64, ptr %14, align 8
  %2572 = icmp sge i64 %2569, %2571
  %2573 = icmp sle i64 %2569, %2571
  %.in2750 = select i1 %2570, i1 %2572, i1 %2573
  br i1 %.in2750, label %.lr.ph3395, label %.loopexit2866, !llvm.loop !164

.loopexit2866:                                    ; preds = %.lr.ph3395, %2555, %._crit_edge3387
  %2574 = add nuw nsw i64 %.1425733405, 1
  %2575 = load i64, ptr %16, align 8, !tbaa !5
  %.not2734.not = icmp slt i64 %.1425733405, %2575
  br i1 %.not2734.not, label %2396, label %._crit_edge3408, !llvm.loop !165

._crit_edge3408:                                  ; preds = %.loopexit2866, %2389
  br i1 %.not26982883, label %._crit_edge3408._crit_edge, label %2576

._crit_edge3408._crit_edge:                       ; preds = %._crit_edge3408
  %.pre3756 = load i64, ptr %4, align 8, !tbaa !5
  br label %2594

2576:                                             ; preds = %._crit_edge3408
  %2577 = icmp sgt i64 %.4, 0
  %2578 = load i64, ptr %24, align 8
  %2579 = icmp sgt i64 %2578, 0
  %or.cond5 = select i1 %2577, i1 %2579, i1 false
  %.pre3757 = load i64, ptr %4, align 8, !tbaa !5
  br i1 %or.cond5, label %2580, label %2594

2580:                                             ; preds = %2576
  %2581 = sub nsw i64 %42, %2578
  %2582 = add nsw i64 %2578, %.32610
  %2583 = mul nsw i64 %2582, %30
  %2584 = getelementptr double, ptr %32, i64 %2581
  %2585 = getelementptr double, ptr %2584, i64 %2583
  %2586 = load double, ptr %2585, align 8, !tbaa !9
  %2587 = fneg double %2586
  %2588 = load double, ptr %23, align 8, !tbaa !9
  %2589 = fmul double %2588, %2587
  %2590 = sub nsw i64 %78, %.pre3757
  %2591 = getelementptr double, ptr %36, i64 %2590
  %2592 = getelementptr double, ptr %2591, i64 %.32610
  %2593 = getelementptr double, ptr %2592, i64 %2578
  store double %2589, ptr %2593, align 8, !tbaa !9
  br label %2594

2594:                                             ; preds = %._crit_edge3408._crit_edge, %2576, %2580
  %2595 = phi i64 [ %.pre3756, %._crit_edge3408._crit_edge ], [ %.pre3757, %2576 ], [ %.pre3757, %2580 ]
  %2596 = icmp sgt i64 %2595, 0
  br i1 %2596, label %.lr.ph3430, label %._crit_edge3461.thread

.lr.ph3430:                                       ; preds = %2594
  %2597 = sub i64 %.42553, %78
  %2598 = add i64 %.32610, 1
  %2599 = add i64 %.32610, %78
  br label %2600

2600:                                             ; preds = %.lr.ph3430, %2705
  %.1525743428 = phi i64 [ %2595, %.lr.ph3430 ], [ %2706, %2705 ]
  %2601 = add i64 %2597, %.1525743428
  %2602 = load i64, ptr %22, align 8, !tbaa !5
  %2603 = add i64 %2598, %.1525743428
  br i1 %.not26982883, label %2606, label %2604

2604:                                             ; preds = %2600
  %2605 = call i64 @llvm.smax.i64(i64 %2601, i64 2)
  br label %2608

2606:                                             ; preds = %2600
  %2607 = call i64 @llvm.smax.i64(i64 %2601, i64 1)
  br label %2608

2608:                                             ; preds = %2606, %2604
  %.sink3909 = phi i64 [ %2607, %2606 ], [ %2605, %2604 ]
  %.sink3739 = phi i64 [ 1, %2606 ], [ 2, %2604 ]
  %2609 = mul nsw i64 %2602, %.sink3909
  %2610 = sub i64 %2603, %2609
  store i64 %.sink3739, ptr %16, align 8
  store i64 %2601, ptr %17, align 8
  %2611 = load i64, ptr %4, align 8, !tbaa !5
  %2612 = sub nsw i64 %2611, %.1525743428
  %2613 = icmp sgt i64 %2612, 0
  %2614 = add i64 %2610, -1
  br i1 %2613, label %.lr.ph3413, label %._crit_edge3414

.lr.ph3413:                                       ; preds = %2608, %2645
  %.143411 = phi i64 [ %2646, %2645 ], [ %2612, %2608 ]
  %2615 = load i64, ptr %3, align 8, !tbaa !5
  %2616 = add i64 %2614, %.143411
  %2617 = add i64 %2616, %2615
  %2618 = load i64, ptr %22, align 8, !tbaa !5
  %2619 = sdiv i64 %2617, %2618
  store i64 %2619, ptr %25, align 8, !tbaa !5
  %2620 = icmp sgt i64 %2619, 0
  br i1 %2620, label %2621, label %2645

2621:                                             ; preds = %.lr.ph3413
  %2622 = add nsw i64 %2619, -1
  %2623 = mul nsw i64 %2622, %2618
  %2624 = sub nsw i64 %2610, %2623
  %2625 = add nsw i64 %2624, %2615
  %2626 = mul nsw i64 %2625, %27
  %2627 = getelementptr double, ptr %29, i64 %.143411
  %2628 = getelementptr double, ptr %2627, i64 %2626
  %2629 = add nsw i64 %2625, -1
  %2630 = mul nsw i64 %2629, %27
  %2631 = getelementptr i8, ptr %2627, i64 8
  %2632 = getelementptr double, ptr %2631, i64 %2630
  %2633 = load i64, ptr %2, align 8, !tbaa !5
  %2634 = add nsw i64 %2633, %78
  %2635 = load i64, ptr %4, align 8, !tbaa !5
  %2636 = sub i64 %2634, %2635
  %2637 = getelementptr double, ptr %36, i64 %2636
  %2638 = getelementptr double, ptr %2637, i64 %2624
  %2639 = getelementptr double, ptr %2638, i64 %2615
  %2640 = sub nsw i64 %78, %2635
  %2641 = getelementptr double, ptr %36, i64 %2640
  %2642 = getelementptr double, ptr %2641, i64 %2624
  %2643 = getelementptr double, ptr %2642, i64 %2615
  %2644 = call i32 @dlartv_(ptr noundef nonnull %25, ptr noundef %2628, ptr noundef nonnull %26, ptr noundef %2632, ptr noundef nonnull %26, ptr noundef %2639, ptr noundef %2643, ptr noundef nonnull %22) #5
  br label %2645

2645:                                             ; preds = %.lr.ph3413, %2621
  %2646 = add nsw i64 %.143411, -1
  %2647 = icmp sgt i64 %.143411, 1
  br i1 %2647, label %.lr.ph3413, label %._crit_edge3414.loopexit, !llvm.loop !166

._crit_edge3414.loopexit:                         ; preds = %2645
  %.pre3758 = load i64, ptr %22, align 8, !tbaa !5
  br label %._crit_edge3414

._crit_edge3414:                                  ; preds = %2608, %._crit_edge3414.loopexit
  %2648 = phi i64 [ %.pre3758, %._crit_edge3414.loopexit ], [ %2602, %2608 ]
  %2649 = load i64, ptr %3, align 8, !tbaa !5
  %2650 = add i64 %2614, %2649
  %2651 = sdiv i64 %2650, %2648
  store i64 %2651, ptr %20, align 8, !tbaa !5
  %2652 = add nsw i64 %2651, -1
  %2653 = mul nsw i64 %2652, %2648
  %2654 = sub nsw i64 %2610, %2653
  %2655 = icmp slt i64 %2648, 0
  %2656 = icmp slt i64 %2653, 1
  %2657 = icmp sgt i64 %2653, -1
  %.in27423415 = select i1 %2655, i1 %2656, i1 %2657
  br i1 %.in27423415, label %.lr.ph3418, label %._crit_edge3419.thread

._crit_edge3419.thread:                           ; preds = %._crit_edge3414
  store i64 %2610, ptr %17, align 8, !tbaa !5
  store i64 %2648, ptr %16, align 8, !tbaa !5
  br label %._crit_edge3427

.lr.ph3418:                                       ; preds = %._crit_edge3414
  %2658 = load i64, ptr %4, align 8, !tbaa !5
  %2659 = sub i64 %78, %2658
  %2660 = getelementptr double, ptr %36, i64 %2659
  %2661 = load i64, ptr %2, align 8, !tbaa !5
  %2662 = getelementptr double, ptr %2660, i64 %2661
  br label %2663

2663:                                             ; preds = %.lr.ph3418, %2663
  %.293416 = phi i64 [ %2654, %.lr.ph3418 ], [ %2670, %2663 ]
  %2664 = getelementptr double, ptr %2660, i64 %.293416
  %2665 = getelementptr double, ptr %2664, i64 %2649
  %2666 = load double, ptr %2665, align 8, !tbaa !9
  store double %2666, ptr %2664, align 8, !tbaa !9
  %2667 = getelementptr double, ptr %2662, i64 %.293416
  %2668 = getelementptr double, ptr %2667, i64 %2649
  %2669 = load double, ptr %2668, align 8, !tbaa !9
  store double %2669, ptr %2667, align 8, !tbaa !9
  %2670 = add nsw i64 %.293416, %2648
  %2671 = icmp sge i64 %2670, %2610
  %2672 = icmp sle i64 %2670, %2610
  %.in2742 = select i1 %2655, i1 %2671, i1 %2672
  br i1 %.in2742, label %2663, label %._crit_edge3419, !llvm.loop !167

._crit_edge3419:                                  ; preds = %2663
  store i64 %2610, ptr %17, align 8, !tbaa !5
  store i64 %2648, ptr %16, align 8, !tbaa !5
  br i1 %.in27423415, label %.lr.ph3426, label %._crit_edge3427

.lr.ph3426:                                       ; preds = %._crit_edge3419
  %2673 = add i64 %2649, -1
  %2674 = load i64, ptr %4, align 8, !tbaa !5
  %2675 = sub i64 %78, %2674
  %2676 = getelementptr double, ptr %36, i64 %2675
  %2677 = load i64, ptr %2, align 8, !tbaa !5
  %2678 = getelementptr double, ptr %2676, i64 %2677
  br label %2679

2679:                                             ; preds = %.lr.ph3426, %2679
  %.303424 = phi i64 [ %2654, %.lr.ph3426 ], [ %2690, %2679 ]
  %2680 = add i64 %2673, %.303424
  %2681 = mul nsw i64 %2680, %27
  %gep3422 = getelementptr double, ptr %invariant.gep3281, i64 %2681
  %2682 = load double, ptr %gep3422, align 8, !tbaa !9
  %2683 = getelementptr double, ptr %2676, i64 %.303424
  %2684 = load double, ptr %2683, align 8, !tbaa !9
  %2685 = fmul double %2682, %2684
  store double %2685, ptr %2683, align 8, !tbaa !9
  %2686 = getelementptr double, ptr %2678, i64 %.303424
  %2687 = load double, ptr %2686, align 8, !tbaa !9
  %2688 = load double, ptr %gep3422, align 8, !tbaa !9
  %2689 = fmul double %2687, %2688
  store double %2689, ptr %gep3422, align 8, !tbaa !9
  %2690 = add nsw i64 %.303424, %2648
  %2691 = icmp sge i64 %2690, %2610
  %2692 = icmp sle i64 %2690, %2610
  %.in2743 = select i1 %2655, i1 %2691, i1 %2692
  br i1 %.in2743, label %2679, label %._crit_edge3427, !llvm.loop !168

._crit_edge3427:                                  ; preds = %2679, %._crit_edge3419.thread, %._crit_edge3419
  br i1 %.not26982883, label %2705, label %2693

2693:                                             ; preds = %._crit_edge3427
  %2694 = add nsw i64 %.1525743428, %.32610
  %2695 = icmp sle i64 %2694, %2648
  %2696 = load i64, ptr %24, align 8
  %.not2744 = icmp sgt i64 %.1525743428, %2696
  %or.cond2762 = select i1 %2695, i1 true, i1 %.not2744
  br i1 %or.cond2762, label %2705, label %2697

2697:                                             ; preds = %2693
  %2698 = load i64, ptr %4, align 8, !tbaa !5
  %2699 = add i64 %2599, %.1525743428
  %2700 = sub i64 %2699, %2698
  %2701 = getelementptr inbounds double, ptr %36, i64 %2700
  %2702 = load double, ptr %2701, align 8, !tbaa !9
  %2703 = sub nsw i64 %2700, %2649
  %2704 = getelementptr inbounds double, ptr %36, i64 %2703
  store double %2702, ptr %2704, align 8, !tbaa !9
  br label %2705

2705:                                             ; preds = %._crit_edge3427, %2697, %2693
  %2706 = add nsw i64 %.1525743428, -1
  %2707 = icmp sgt i64 %.1525743428, 1
  br i1 %2707, label %2600, label %._crit_edge3431, !llvm.loop !169

._crit_edge3431:                                  ; preds = %2705
  %.pre3759 = load i64, ptr %4, align 8, !tbaa !5
  %2708 = icmp sgt i64 %.pre3759, 0
  br i1 %2708, label %.lr.ph3460, label %._crit_edge3461.thread

.lr.ph3460:                                       ; preds = %._crit_edge3431
  %2709 = sub i64 %.42553, %78
  %2710 = add i64 %.32610, 1
  br label %2711

2711:                                             ; preds = %.lr.ph3460, %.loopexit2865
  %.1625753458 = phi i64 [ %.pre3759, %.lr.ph3460 ], [ %2834, %.loopexit2865 ]
  store i64 1, ptr %16, align 8, !tbaa !5
  %2712 = add i64 %2709, %.1625753458
  store i64 %2712, ptr %17, align 8, !tbaa !5
  %2713 = call i64 @llvm.smax.i64(i64 %2712, i64 1)
  %2714 = load i64, ptr %22, align 8, !tbaa !5
  %2715 = mul nsw i64 %2714, %2713
  %2716 = add i64 %2710, %.1625753458
  %2717 = sub i64 %2716, %2715
  %2718 = load i64, ptr %3, align 8, !tbaa !5
  %2719 = add i64 %2718, -1
  %2720 = add i64 %2719, %2717
  %2721 = sdiv i64 %2720, %2714
  store i64 %2721, ptr %20, align 8, !tbaa !5
  %2722 = add nsw i64 %2721, -1
  %2723 = mul nsw i64 %2722, %2714
  %2724 = sub nsw i64 %2717, %2723
  %2725 = icmp sgt i64 %2721, 0
  %.pre3762 = load i64, ptr %4, align 8, !tbaa !5
  br i1 %2725, label %2726, label %2776

2726:                                             ; preds = %2711
  %2727 = add nsw i64 %2724, %2718
  %2728 = mul nsw i64 %2727, %27
  %gep3457 = getelementptr double, ptr %invariant.gep3281, i64 %2728
  %2729 = sub i64 %78, %.pre3762
  %2730 = getelementptr double, ptr %36, i64 %2729
  %2731 = getelementptr double, ptr %2730, i64 %2724
  %2732 = load i64, ptr %2, align 8, !tbaa !5
  %2733 = getelementptr double, ptr %2730, i64 %2732
  %2734 = getelementptr double, ptr %2733, i64 %2724
  %2735 = call i32 @dlargv_(ptr noundef nonnull %20, ptr noundef %gep3457, ptr noundef nonnull %26, ptr noundef %2731, ptr noundef nonnull %22, ptr noundef %2734, ptr noundef nonnull %22) #5
  %2736 = load i64, ptr %3, align 8, !tbaa !5
  %2737 = add nsw i64 %2736, -1
  store i64 %2737, ptr %16, align 8, !tbaa !5
  %invariant.gep3432 = getelementptr double, ptr %36, i64 %2724
  %.not27393436 = icmp slt i64 %2736, 2
  br i1 %.not27393436, label %._crit_edge3440, label %.lr.ph3439

.lr.ph3439:                                       ; preds = %2726, %.lr.ph3439
  %.153437 = phi i64 [ %2754, %.lr.ph3439 ], [ 1, %2726 ]
  %2738 = load i64, ptr %22, align 8, !tbaa !5
  %2739 = sub nsw i64 %2738, %.153437
  %2740 = add nsw i64 %.153437, %2724
  %2741 = mul nsw i64 %2740, %27
  %2742 = getelementptr double, ptr %29, i64 %2739
  %2743 = getelementptr double, ptr %2742, i64 %2741
  %2744 = load i64, ptr %3, align 8, !tbaa !5
  %2745 = sub nsw i64 %2744, %.153437
  %2746 = getelementptr double, ptr %29, i64 %2745
  %2747 = getelementptr double, ptr %2746, i64 %2741
  %2748 = load i64, ptr %2, align 8, !tbaa !5
  %2749 = add nsw i64 %2748, %78
  %2750 = load i64, ptr %4, align 8, !tbaa !5
  %2751 = sub i64 %2749, %2750
  %gep3433 = getelementptr double, ptr %invariant.gep3432, i64 %2751
  %2752 = sub nsw i64 %78, %2750
  %gep3435 = getelementptr double, ptr %invariant.gep3432, i64 %2752
  %2753 = call i32 @dlartv_(ptr noundef nonnull %20, ptr noundef %2743, ptr noundef nonnull %26, ptr noundef %2747, ptr noundef nonnull %26, ptr noundef %gep3433, ptr noundef %gep3435, ptr noundef nonnull %22) #5
  %2754 = add nuw nsw i64 %.153437, 1
  %2755 = load i64, ptr %16, align 8, !tbaa !5
  %.not2739.not = icmp slt i64 %.153437, %2755
  br i1 %.not2739.not, label %.lr.ph3439, label %._crit_edge3440.loopexit, !llvm.loop !170

._crit_edge3440.loopexit:                         ; preds = %.lr.ph3439
  %.pre3760 = load i64, ptr %3, align 8, !tbaa !5
  br label %._crit_edge3440

._crit_edge3440:                                  ; preds = %._crit_edge3440.loopexit, %2726
  %2756 = phi i64 [ %.pre3760, %._crit_edge3440.loopexit ], [ %2736, %2726 ]
  %2757 = load i64, ptr %22, align 8, !tbaa !5
  %2758 = mul nsw i64 %2724, %27
  %2759 = getelementptr double, ptr %29, i64 %2757
  %2760 = getelementptr double, ptr %2759, i64 %2758
  %2761 = add nsw i64 %2724, -1
  %2762 = mul nsw i64 %2761, %27
  %2763 = getelementptr double, ptr %2759, i64 %2762
  %2764 = getelementptr double, ptr %29, i64 %2756
  %2765 = getelementptr double, ptr %2764, i64 %2758
  %2766 = load i64, ptr %2, align 8, !tbaa !5
  %2767 = add nsw i64 %2766, %78
  %2768 = load i64, ptr %4, align 8, !tbaa !5
  %2769 = sub i64 %2767, %2768
  %2770 = getelementptr double, ptr %36, i64 %2769
  %2771 = getelementptr double, ptr %2770, i64 %2724
  %2772 = sub nsw i64 %78, %2768
  %2773 = getelementptr double, ptr %36, i64 %2772
  %2774 = getelementptr double, ptr %2773, i64 %2724
  %2775 = call i32 @dlar2v_(ptr noundef nonnull %20, ptr noundef %2760, ptr noundef %2763, ptr noundef %2765, ptr noundef nonnull %26, ptr noundef %2771, ptr noundef %2774, ptr noundef nonnull %22) #5
  %.pre3761 = load i64, ptr %4, align 8, !tbaa !5
  %.pre3763 = load i64, ptr %3, align 8, !tbaa !5
  br label %2776

2776:                                             ; preds = %._crit_edge3440, %2711
  %2777 = phi i64 [ %.pre3763, %._crit_edge3440 ], [ %2718, %2711 ]
  %2778 = phi i64 [ %.pre3761, %._crit_edge3440 ], [ %.pre3762, %2711 ]
  %reass.sub3676 = sub i64 %2778, %.1625753458
  %2779 = add i64 %reass.sub3676, 1
  store i64 %2779, ptr %16, align 8, !tbaa !5
  %.not2740.not3442 = icmp sgt i64 %2777, %2779
  br i1 %.not2740.not3442, label %.lr.ph3446, label %._crit_edge3447

.lr.ph3446:                                       ; preds = %2776
  %2780 = add i64 %2717, -1
  br label %2781

2781:                                             ; preds = %.lr.ph3446, %2808
  %2782 = phi i64 [ %2779, %.lr.ph3446 ], [ %2809, %2808 ]
  %.16.in3443 = phi i64 [ %2777, %.lr.ph3446 ], [ %.163444, %2808 ]
  %.163444 = add nsw i64 %.16.in3443, -1
  %2783 = add i64 %2780, %.163444
  %2784 = load i64, ptr %22, align 8, !tbaa !5
  %2785 = sdiv i64 %2783, %2784
  store i64 %2785, ptr %25, align 8, !tbaa !5
  %2786 = icmp sgt i64 %2785, 0
  br i1 %2786, label %2787, label %2808

2787:                                             ; preds = %2781
  %2788 = add nsw i64 %2785, -1
  %2789 = mul nsw i64 %2788, %2784
  %2790 = sub nsw i64 %2717, %2789
  %2791 = mul nsw i64 %2790, %27
  %2792 = getelementptr double, ptr %29, i64 %.163444
  %2793 = getelementptr double, ptr %2792, i64 %2791
  %2794 = add nsw i64 %2790, -1
  %2795 = mul nsw i64 %2794, %27
  %2796 = getelementptr double, ptr %29, i64 %.16.in3443
  %2797 = getelementptr double, ptr %2796, i64 %2795
  %2798 = load i64, ptr %2, align 8, !tbaa !5
  %2799 = add nsw i64 %2798, %78
  %2800 = load i64, ptr %4, align 8, !tbaa !5
  %2801 = sub i64 %2799, %2800
  %2802 = getelementptr double, ptr %36, i64 %2801
  %2803 = getelementptr double, ptr %2802, i64 %2790
  %2804 = sub nsw i64 %78, %2800
  %2805 = getelementptr double, ptr %36, i64 %2804
  %2806 = getelementptr double, ptr %2805, i64 %2790
  %2807 = call i32 @dlartv_(ptr noundef nonnull %25, ptr noundef %2793, ptr noundef nonnull %26, ptr noundef %2797, ptr noundef nonnull %26, ptr noundef %2803, ptr noundef %2806, ptr noundef nonnull %22) #5
  %.pre3764 = load i64, ptr %16, align 8, !tbaa !5
  br label %2808

2808:                                             ; preds = %2781, %2787
  %2809 = phi i64 [ %2782, %2781 ], [ %.pre3764, %2787 ]
  %.not2740.not = icmp sgt i64 %.163444, %2809
  br i1 %.not2740.not, label %2781, label %._crit_edge3447, !llvm.loop !171

._crit_edge3447:                                  ; preds = %2808, %2776
  br i1 %.not, label %2810, label %.loopexit2865

2810:                                             ; preds = %._crit_edge3447
  store i64 %2717, ptr %16, align 8, !tbaa !5
  %2811 = load i64, ptr %22, align 8, !tbaa !5
  store i64 %2811, ptr %17, align 8, !tbaa !5
  %2812 = icmp slt i64 %2811, 0
  %2813 = icmp slt i64 %2723, 1
  %2814 = icmp sgt i64 %2723, -1
  %.in27413452 = select i1 %2812, i1 %2813, i1 %2814
  br i1 %.in27413452, label %.lr.ph3455, label %.loopexit2865

.lr.ph3455:                                       ; preds = %2810, %.lr.ph3455
  %.313453 = phi i64 [ %2829, %.lr.ph3455 ], [ %2724, %2810 ]
  %2815 = mul nsw i64 %.313453, %33
  %gep3449 = getelementptr double, ptr %invariant.gep3662, i64 %2815
  %2816 = add nsw i64 %.313453, -1
  %2817 = mul nsw i64 %2816, %33
  %gep3451 = getelementptr double, ptr %invariant.gep3662, i64 %2817
  %2818 = load i64, ptr %2, align 8, !tbaa !5
  %2819 = add nsw i64 %2818, %78
  %2820 = load i64, ptr %4, align 8, !tbaa !5
  %2821 = sub i64 %2819, %2820
  %2822 = getelementptr double, ptr %36, i64 %2821
  %2823 = getelementptr double, ptr %2822, i64 %.313453
  %2824 = sub nsw i64 %78, %2820
  %2825 = getelementptr double, ptr %36, i64 %2824
  %2826 = getelementptr double, ptr %2825, i64 %.313453
  %2827 = call i32 @f2c_drot(ptr noundef nonnull %21, ptr noundef %gep3449, ptr noundef nonnull @c__1, ptr noundef %gep3451, ptr noundef nonnull @c__1, ptr noundef %2823, ptr noundef %2826) #5
  %2828 = load i64, ptr %17, align 8, !tbaa !5
  %2829 = add nsw i64 %2828, %.313453
  %2830 = icmp slt i64 %2828, 0
  %2831 = load i64, ptr %16, align 8
  %2832 = icmp sge i64 %2829, %2831
  %2833 = icmp sle i64 %2829, %2831
  %.in2741 = select i1 %2830, i1 %2832, i1 %2833
  br i1 %.in2741, label %.lr.ph3455, label %.loopexit2865, !llvm.loop !172

.loopexit2865:                                    ; preds = %.lr.ph3455, %2810, %._crit_edge3447
  %2834 = add nsw i64 %.1625753458, -1
  %2835 = icmp sgt i64 %.1625753458, 1
  br i1 %2835, label %2711, label %._crit_edge3461, !llvm.loop !173

._crit_edge3461.thread:                           ; preds = %._crit_edge3431, %2594
  %.ph3875 = phi i64 [ %.pre3759, %._crit_edge3431 ], [ %2595, %2594 ]
  %2836 = add nsw i64 %.ph3875, -1
  store i64 %2836, ptr %17, align 8, !tbaa !5
  br label %._crit_edge3470.thread

._crit_edge3461:                                  ; preds = %.loopexit2865
  %.pre3765 = load i64, ptr %4, align 8, !tbaa !5
  %2837 = add nsw i64 %.pre3765, -1
  store i64 %2837, ptr %17, align 8, !tbaa !5
  %.not27353466 = icmp slt i64 %.pre3765, 2
  br i1 %.not27353466, label %._crit_edge3470.thread, label %.lr.ph3469

.lr.ph3469:                                       ; preds = %._crit_edge3461
  %reass.sub3677 = sub i64 %.42553, %78
  %2838 = add i64 %reass.sub3677, 1
  %2839 = add i64 %.32610, 1
  br label %2840

2840:                                             ; preds = %.lr.ph3469, %._crit_edge3465
  %2841 = phi i64 [ %2837, %.lr.ph3469 ], [ %2876, %._crit_edge3465 ]
  %.1725763467 = phi i64 [ 1, %.lr.ph3469 ], [ %2877, %._crit_edge3465 ]
  store i64 1, ptr %16, align 8, !tbaa !5
  %2842 = add i64 %2838, %.1725763467
  store i64 %2842, ptr %14, align 8, !tbaa !5
  %2843 = call i64 @llvm.smax.i64(i64 %2842, i64 1)
  %2844 = load i64, ptr %22, align 8, !tbaa !5
  %2845 = mul nsw i64 %2843, %2844
  %2846 = add i64 %2839, %.1725763467
  %2847 = sub i64 %2846, %2845
  %2848 = load i64, ptr %4, align 8, !tbaa !5
  %2849 = sub nsw i64 %2848, %.1725763467
  %2850 = icmp sgt i64 %2849, 0
  br i1 %2850, label %.lr.ph3464, label %._crit_edge3465

.lr.ph3464:                                       ; preds = %2840
  %2851 = add i64 %2847, -1
  br label %2852

2852:                                             ; preds = %.lr.ph3464, %2873
  %.173462 = phi i64 [ %2849, %.lr.ph3464 ], [ %2874, %2873 ]
  %2853 = add i64 %2851, %.173462
  %2854 = load i64, ptr %22, align 8, !tbaa !5
  %2855 = sdiv i64 %2853, %2854
  store i64 %2855, ptr %25, align 8, !tbaa !5
  %2856 = icmp sgt i64 %2855, 0
  br i1 %2856, label %2857, label %2873

2857:                                             ; preds = %2852
  %2858 = add nsw i64 %2855, -1
  %2859 = mul nsw i64 %2858, %2854
  %2860 = sub nsw i64 %2847, %2859
  %2861 = mul nsw i64 %2860, %27
  %2862 = getelementptr double, ptr %29, i64 %.173462
  %2863 = getelementptr double, ptr %2862, i64 %2861
  %2864 = add nsw i64 %2860, -1
  %2865 = mul nsw i64 %2864, %27
  %2866 = getelementptr i8, ptr %2862, i64 8
  %2867 = getelementptr double, ptr %2866, i64 %2865
  %2868 = load i64, ptr %2, align 8, !tbaa !5
  %2869 = getelementptr double, ptr %36, i64 %2868
  %2870 = getelementptr double, ptr %2869, i64 %2860
  %2871 = getelementptr inbounds double, ptr %36, i64 %2860
  %2872 = call i32 @dlartv_(ptr noundef nonnull %25, ptr noundef %2863, ptr noundef nonnull %26, ptr noundef %2867, ptr noundef nonnull %26, ptr noundef %2870, ptr noundef nonnull %2871, ptr noundef nonnull %22) #5
  br label %2873

2873:                                             ; preds = %2852, %2857
  %2874 = add nsw i64 %.173462, -1
  %2875 = icmp sgt i64 %.173462, 1
  br i1 %2875, label %2852, label %._crit_edge3465.loopexit, !llvm.loop !174

._crit_edge3465.loopexit:                         ; preds = %2873
  %.pre3766 = load i64, ptr %17, align 8, !tbaa !5
  br label %._crit_edge3465

._crit_edge3465:                                  ; preds = %._crit_edge3465.loopexit, %2840
  %2876 = phi i64 [ %.pre3766, %._crit_edge3465.loopexit ], [ %2841, %2840 ]
  %2877 = add nuw nsw i64 %.1725763467, 1
  %.not2735.not = icmp slt i64 %.1725763467, %2876
  br i1 %.not2735.not, label %2840, label %._crit_edge3470, !llvm.loop !175

._crit_edge3470.thread:                           ; preds = %._crit_edge3461, %._crit_edge3461.thread
  %.ph3877 = phi i64 [ %.ph3875, %._crit_edge3461.thread ], [ %.pre3765, %._crit_edge3461 ]
  %.pre3744.pre.pre3878 = load i64, ptr %3, align 8, !tbaa !5
  br label %.outer.backedge

._crit_edge3470:                                  ; preds = %._crit_edge3465
  %.pre3767 = load i64, ptr %4, align 8, !tbaa !5
  %2878 = icmp sgt i64 %.pre3767, 1
  %.pre3744.pre.pre = load i64, ptr %3, align 8, !tbaa !5
  br i1 %2878, label %2879, label %.outer.backedge

2879:                                             ; preds = %._crit_edge3470
  %2880 = add nsw i64 %.pre3767, %.32610
  store i64 %2880, ptr %16, align 8, !tbaa !5
  %2881 = call i64 @llvm.smin.i64(i64 %2880, i64 %78)
  %2882 = shl i64 %.pre3744.pre.pre, 1
  %2883 = xor i64 %2882, -1
  %2884 = add i64 %2881, %2883
  store i64 %2884, ptr %17, align 8, !tbaa !5
  %.not27373471 = icmp slt i64 %2884, 2
  br i1 %.not27373471, label %.outer.backedge, label %.lr.ph3474

.lr.ph3474:                                       ; preds = %2879
  %2885 = load i64, ptr %2, align 8, !tbaa !5
  %2886 = getelementptr double, ptr %36, i64 %2885
  %2887 = sub i64 %2881, %2882
  %2888 = add i64 %2881, -2
  %2889 = sub i64 %2888, %2882
  %min.iters.check4155 = icmp ult i64 %2889, 14
  br i1 %min.iters.check4155, label %scalar.ph4154.preheader, label %vector.memcheck4145

vector.memcheck4145:                              ; preds = %.lr.ph3474
  %2890 = mul i64 %2885, -8
  %diff.check4146 = icmp ult i64 %2890, 32
  %2891 = mul i64 %.pre3744.pre.pre, -8
  %diff.check4147 = icmp ult i64 %2891, 32
  %conflict.rdx4148 = or i1 %diff.check4146, %diff.check4147
  %2892 = sub i64 %.pre3744.pre.pre, %2885
  %2893 = and i64 %2892, 2305843009213693948
  %diff.check4149 = icmp eq i64 %2893, 0
  %conflict.rdx4150 = or i1 %conflict.rdx4148, %diff.check4149
  %2894 = add i64 %.pre3744.pre.pre, %2885
  %2895 = mul i64 %2894, -8
  %diff.check4151 = icmp ult i64 %2895, 32
  %conflict.rdx4152 = or i1 %conflict.rdx4150, %diff.check4151
  br i1 %conflict.rdx4152, label %scalar.ph4154.preheader, label %vector.ph4156

vector.ph4156:                                    ; preds = %vector.memcheck4145
  %n.vec4158 = and i64 %2889, -4
  %ind.end4159 = or disjoint i64 %n.vec4158, 2
  br label %vector.body4161

vector.body4161:                                  ; preds = %vector.body4161, %vector.ph4156
  %index4162 = phi i64 [ 0, %vector.ph4156 ], [ %index.next4168, %vector.body4161 ]
  %offset.idx4163 = or disjoint i64 %index4162, 2
  %2896 = getelementptr double, ptr %2886, i64 %offset.idx4163
  %2897 = getelementptr double, ptr %2896, i64 %.pre3744.pre.pre
  %2898 = getelementptr i8, ptr %2897, i64 16
  %wide.load4164 = load <2 x double>, ptr %2897, align 8, !tbaa !9
  %wide.load4165 = load <2 x double>, ptr %2898, align 8, !tbaa !9
  %2899 = getelementptr i8, ptr %2896, i64 16
  store <2 x double> %wide.load4164, ptr %2896, align 8, !tbaa !9
  store <2 x double> %wide.load4165, ptr %2899, align 8, !tbaa !9
  %2900 = getelementptr double, ptr %36, i64 %offset.idx4163
  %2901 = getelementptr double, ptr %2900, i64 %.pre3744.pre.pre
  %2902 = getelementptr i8, ptr %2901, i64 16
  %wide.load4166 = load <2 x double>, ptr %2901, align 8, !tbaa !9
  %wide.load4167 = load <2 x double>, ptr %2902, align 8, !tbaa !9
  %2903 = getelementptr i8, ptr %2900, i64 16
  store <2 x double> %wide.load4166, ptr %2900, align 8, !tbaa !9
  store <2 x double> %wide.load4167, ptr %2903, align 8, !tbaa !9
  %index.next4168 = add nuw i64 %index4162, 4
  %2904 = icmp eq i64 %index.next4168, %n.vec4158
  br i1 %2904, label %middle.block4153, label %vector.body4161, !llvm.loop !176

middle.block4153:                                 ; preds = %vector.body4161
  %cmp.n4169 = icmp eq i64 %2889, %n.vec4158
  br i1 %cmp.n4169, label %.outer.backedge, label %scalar.ph4154.preheader

.outer.backedge:                                  ; preds = %scalar.ph4154, %middle.block4153, %._crit_edge3470.thread, %2879, %._crit_edge3470
  %.pre3744.be = phi i64 [ %.pre3744.pre.pre3878, %._crit_edge3470.thread ], [ %.pre3744.pre.pre, %2879 ], [ %.pre3744.pre.pre, %._crit_edge3470 ], [ %.pre3744.pre.pre, %middle.block4153 ], [ %.pre3744.pre.pre, %scalar.ph4154 ]
  %.be4372 = phi i64 [ %.ph3877, %._crit_edge3470.thread ], [ %.pre3767, %2879 ], [ %.pre3767, %._crit_edge3470 ], [ %.pre3767, %middle.block4153 ], [ %.pre3767, %scalar.ph4154 ]
  br label %.outer

scalar.ph4154.preheader:                          ; preds = %middle.block4153, %vector.memcheck4145, %.lr.ph3474
  %.323472.ph = phi i64 [ 2, %vector.memcheck4145 ], [ 2, %.lr.ph3474 ], [ %ind.end4159, %middle.block4153 ]
  br label %scalar.ph4154

scalar.ph4154:                                    ; preds = %scalar.ph4154.preheader, %scalar.ph4154
  %.323472 = phi i64 [ %2911, %scalar.ph4154 ], [ %.323472.ph, %scalar.ph4154.preheader ]
  %2905 = getelementptr double, ptr %2886, i64 %.323472
  %2906 = getelementptr double, ptr %2905, i64 %.pre3744.pre.pre
  %2907 = load double, ptr %2906, align 8, !tbaa !9
  store double %2907, ptr %2905, align 8, !tbaa !9
  %2908 = getelementptr double, ptr %36, i64 %.323472
  %2909 = getelementptr double, ptr %2908, i64 %.pre3744.pre.pre
  %2910 = load double, ptr %2909, align 8, !tbaa !9
  store double %2910, ptr %2908, align 8, !tbaa !9
  %2911 = add nuw i64 %.323472, 1
  %exitcond3722.not = icmp eq i64 %2911, %2887
  br i1 %exitcond3722.not, label %.outer.backedge, label %scalar.ph4154, !llvm.loop !177

.loopexit2869:                                    ; preds = %2224, %.lr.ph3288.split, %1479, %.lr.ph3288.split.us3674, %68, %.thread
  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
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #5
  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

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #3

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

declare i32 @f2c_dger(ptr noundef, ptr noundef, 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 @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 @dlar2v_(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

; 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) #4

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x double> @llvm.fmuladd.v2f64(<2 x double>, <2 x double>, <2 x double>) #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 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12, !14, !15}
!14 = !{!"llvm.loop.isvectorized", i32 1}
!15 = !{!"llvm.loop.unroll.runtime.disable"}
!16 = distinct !{!16, !12, !15, !14}
!17 = !{!18}
!18 = distinct !{!18, !19}
!19 = distinct !{!19, !"LVerDomain"}
!20 = !{!21}
!21 = distinct !{!21, !19}
!22 = !{!23}
!23 = distinct !{!23, !19}
!24 = !{!25}
!25 = distinct !{!25, !19}
!26 = !{!27, !18, !21, !28, !23}
!27 = distinct !{!27, !19}
!28 = distinct !{!28, !19}
!29 = !{!27}
!30 = !{!28}
!31 = distinct !{!31, !12, !14, !15}
!32 = distinct !{!32, !12, !14}
!33 = !{!34}
!34 = distinct !{!34, !35}
!35 = distinct !{!35, !"LVerDomain"}
!36 = !{!37}
!37 = distinct !{!37, !35}
!38 = !{!39}
!39 = distinct !{!39, !35}
!40 = !{!34, !37}
!41 = distinct !{!41, !12, !14, !15}
!42 = distinct !{!42, !12, !14}
!43 = distinct !{!43, !12}
!44 = !{!45}
!45 = distinct !{!45, !46}
!46 = distinct !{!46, !"LVerDomain"}
!47 = !{!48}
!48 = distinct !{!48, !46}
!49 = !{!50}
!50 = distinct !{!50, !46}
!51 = distinct !{!51, !12, !14, !15}
!52 = distinct !{!52, !12, !14}
!53 = distinct !{!53, !12}
!54 = distinct !{!54, !12}
!55 = distinct !{!55, !12}
!56 = distinct !{!56, !12}
!57 = distinct !{!57, !12}
!58 = distinct !{!58, !12}
!59 = distinct !{!59, !12}
!60 = distinct !{!60, !12}
!61 = distinct !{!61, !12}
!62 = distinct !{!62, !12}
!63 = distinct !{!63, !12}
!64 = distinct !{!64, !12}
!65 = distinct !{!65, !12}
!66 = distinct !{!66, !12}
!67 = distinct !{!67, !12}
!68 = distinct !{!68, !12}
!69 = distinct !{!69, !12, !14, !15}
!70 = distinct !{!70, !12, !14}
!71 = distinct !{!71, !12, !14, !15}
!72 = distinct !{!72, !12, !15, !14}
!73 = distinct !{!73, !12}
!74 = distinct !{!74, !12}
!75 = distinct !{!75, !12}
!76 = distinct !{!76, !12}
!77 = distinct !{!77, !12}
!78 = distinct !{!78, !12}
!79 = distinct !{!79, !12}
!80 = distinct !{!80, !12}
!81 = distinct !{!81, !12}
!82 = distinct !{!82, !12}
!83 = distinct !{!83, !12}
!84 = distinct !{!84, !12}
!85 = distinct !{!85, !12}
!86 = distinct !{!86, !12}
!87 = distinct !{!87, !12}
!88 = distinct !{!88, !12}
!89 = distinct !{!89, !12}
!90 = distinct !{!90, !12}
!91 = distinct !{!91, !12}
!92 = distinct !{!92, !12}
!93 = distinct !{!93, !12}
!94 = distinct !{!94, !12, !14, !15}
!95 = distinct !{!95, !12, !14}
!96 = distinct !{!96, !12}
!97 = distinct !{!97, !12, !15, !14}
!98 = !{!99}
!99 = distinct !{!99, !100}
!100 = distinct !{!100, !"LVerDomain"}
!101 = !{!102}
!102 = distinct !{!102, !100}
!103 = !{!104}
!104 = distinct !{!104, !100}
!105 = !{!106}
!106 = distinct !{!106, !100}
!107 = !{!108, !99, !102, !109, !104}
!108 = distinct !{!108, !100}
!109 = distinct !{!109, !100}
!110 = !{!108}
!111 = !{!109}
!112 = distinct !{!112, !12, !14, !15}
!113 = distinct !{!113, !12, !14}
!114 = distinct !{!114, !12}
!115 = distinct !{!115, !12, !14}
!116 = distinct !{!116, !12, !14}
!117 = distinct !{!117, !12}
!118 = distinct !{!118, !12}
!119 = distinct !{!119, !12}
!120 = distinct !{!120, !12}
!121 = distinct !{!121, !12}
!122 = distinct !{!122, !12}
!123 = distinct !{!123, !12}
!124 = distinct !{!124, !12}
!125 = distinct !{!125, !12, !14}
!126 = distinct !{!126, !12}
!127 = distinct !{!127, !12}
!128 = distinct !{!128, !12}
!129 = distinct !{!129, !12}
!130 = distinct !{!130, !12}
!131 = distinct !{!131, !12}
!132 = distinct !{!132, !12}
!133 = distinct !{!133, !12}
!134 = distinct !{!134, !12, !14, !15}
!135 = !{!136}
!136 = distinct !{!136, !137}
!137 = distinct !{!137, !"LVerDomain"}
!138 = !{!139}
!139 = distinct !{!139, !137}
!140 = !{!141}
!141 = distinct !{!141, !137}
!142 = !{!136, !139}
!143 = distinct !{!143, !12, !14, !15}
!144 = !{!145}
!145 = distinct !{!145, !146}
!146 = distinct !{!146, !"LVerDomain"}
!147 = !{!148}
!148 = distinct !{!148, !146}
!149 = !{!150}
!150 = distinct !{!150, !146}
!151 = distinct !{!151, !12, !14, !15}
!152 = distinct !{!152, !12, !14, !15}
!153 = distinct !{!153, !12, !14, !15}
!154 = distinct !{!154, !12, !15, !14}
!155 = distinct !{!155, !12}
!156 = distinct !{!156, !12}
!157 = distinct !{!157, !12}
!158 = distinct !{!158, !12}
!159 = distinct !{!159, !12}
!160 = distinct !{!160, !12}
!161 = distinct !{!161, !12}
!162 = distinct !{!162, !12}
!163 = distinct !{!163, !12}
!164 = distinct !{!164, !12}
!165 = distinct !{!165, !12}
!166 = distinct !{!166, !12}
!167 = distinct !{!167, !12}
!168 = distinct !{!168, !12}
!169 = distinct !{!169, !12}
!170 = distinct !{!170, !12}
!171 = distinct !{!171, !12}
!172 = distinct !{!172, !12}
!173 = distinct !{!173, !12}
!174 = distinct !{!174, !12}
!175 = distinct !{!175, !12}
!176 = distinct !{!176, !12, !14, !15}
!177 = distinct !{!177, !12, !14}


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