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

; 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 [10 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b10 = external hidden global double, align 8
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b14 = external hidden global double, align 8

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

79:                                               ; preds = %9
  %80 = load ptr, ptr %10, align 8, !tbaa !5
  %81 = call i32 @lsame_(ptr noundef %80, ptr noundef @.str.1)
  %82 = icmp ne i32 %81, 0
  br i1 %82, label %85, label %83

83:                                               ; preds = %79
  %84 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 -1, ptr %84, align 4, !tbaa !9
  br label %108

85:                                               ; preds = %79, %9
  %86 = load ptr, ptr %11, align 8, !tbaa !5
  %87 = load i32, ptr %86, align 4, !tbaa !9
  %88 = icmp slt i32 %87, 0
  br i1 %88, label %89, label %91

89:                                               ; preds = %85
  %90 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 -2, ptr %90, align 4, !tbaa !9
  br label %107

91:                                               ; preds = %85
  %92 = load ptr, ptr %13, align 8, !tbaa !5
  %93 = load i32, ptr %92, align 4, !tbaa !9
  %94 = load ptr, ptr %11, align 8, !tbaa !5
  %95 = load i32, ptr %94, align 4, !tbaa !9
  %96 = icmp sge i32 1, %95
  br i1 %96, label %97, label %98

97:                                               ; preds = %91
  br label %101

98:                                               ; preds = %91
  %99 = load ptr, ptr %11, align 8, !tbaa !5
  %100 = load i32, ptr %99, align 4, !tbaa !9
  br label %101

101:                                              ; preds = %98, %97
  %102 = phi i32 [ 1, %97 ], [ %100, %98 ]
  %103 = icmp slt i32 %93, %102
  br i1 %103, label %104, label %106

104:                                              ; preds = %101
  %105 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 -4, ptr %105, align 4, !tbaa !9
  br label %106

106:                                              ; preds = %104, %101
  br label %107

107:                                              ; preds = %106, %89
  br label %108

108:                                              ; preds = %107, %83
  %109 = load ptr, ptr %18, align 8, !tbaa !5
  %110 = load i32, ptr %109, align 4, !tbaa !9
  %111 = icmp ne i32 %110, 0
  br i1 %111, label %112, label %117

112:                                              ; preds = %108
  %113 = load ptr, ptr %18, align 8, !tbaa !5
  %114 = load i32, ptr %113, align 4, !tbaa !9
  %115 = sub nsw i32 0, %114
  store i32 %115, ptr %23, align 4, !tbaa !9
  %116 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef %23, i32 noundef 9)
  store i32 1, ptr %45, align 4
  br label %2200

117:                                              ; preds = %108
  %118 = load ptr, ptr %11, align 8, !tbaa !5
  %119 = load i32, ptr %118, align 4, !tbaa !9
  %120 = icmp eq i32 %119, 0
  br i1 %120, label %121, label %122

121:                                              ; preds = %117
  store i32 1, ptr %45, align 4
  br label %2200

122:                                              ; preds = %117
  %123 = load ptr, ptr %11, align 8, !tbaa !5
  %124 = load i32, ptr %123, align 4, !tbaa !9
  store i32 %124, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %31, align 4, !tbaa !9
  br label %125

125:                                              ; preds = %141, %122
  %126 = load i32, ptr %31, align 4, !tbaa !9
  %127 = load i32, ptr %23, align 4, !tbaa !9
  %128 = icmp sle i32 %126, %127
  br i1 %128, label %129, label %144

129:                                              ; preds = %125
  %130 = load ptr, ptr %14, align 8, !tbaa !5
  %131 = load i32, ptr %31, align 4, !tbaa !9
  %132 = sext i32 %131 to i64
  %133 = getelementptr inbounds double, ptr %130, i64 %132
  %134 = load double, ptr %133, align 8, !tbaa !11
  %135 = load ptr, ptr %16, align 8, !tbaa !5
  %136 = load i32, ptr %31, align 4, !tbaa !9
  %137 = load i32, ptr %21, align 4, !tbaa !9
  %138 = add nsw i32 %136, %137
  %139 = sext i32 %138 to i64
  %140 = getelementptr inbounds double, ptr %135, i64 %139
  store double %134, ptr %140, align 8, !tbaa !11
  br label %141

141:                                              ; preds = %129
  %142 = load i32, ptr %31, align 4, !tbaa !9
  %143 = add nsw i32 %142, 1
  store i32 %143, ptr %31, align 4, !tbaa !9
  br label %125, !llvm.loop !13

144:                                              ; preds = %125
  %145 = load i32, ptr %33, align 4, !tbaa !9
  %146 = icmp ne i32 %145, 0
  br i1 %146, label %147, label %183

147:                                              ; preds = %144
  %148 = load ptr, ptr %11, align 8, !tbaa !5
  %149 = load i32, ptr %148, align 4, !tbaa !9
  %150 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 %149, ptr %150, align 4, !tbaa !9
  br label %151

151:                                              ; preds = %178, %147
  %152 = load ptr, ptr %18, align 8, !tbaa !5
  %153 = load i32, ptr %152, align 4, !tbaa !9
  %154 = icmp sge i32 %153, 1
  br i1 %154, label %155, label %182

155:                                              ; preds = %151
  %156 = load ptr, ptr %15, align 8, !tbaa !5
  %157 = load ptr, ptr %18, align 8, !tbaa !5
  %158 = load i32, ptr %157, align 4, !tbaa !9
  %159 = sext i32 %158 to i64
  %160 = getelementptr inbounds i32, ptr %156, i64 %159
  %161 = load i32, ptr %160, align 4, !tbaa !9
  %162 = icmp sgt i32 %161, 0
  br i1 %162, label %163, label %177

163:                                              ; preds = %155
  %164 = load ptr, ptr %12, align 8, !tbaa !5
  %165 = load ptr, ptr %18, align 8, !tbaa !5
  %166 = load i32, ptr %165, align 4, !tbaa !9
  %167 = load ptr, ptr %18, align 8, !tbaa !5
  %168 = load i32, ptr %167, align 4, !tbaa !9
  %169 = load i32, ptr %19, align 4, !tbaa !9
  %170 = mul nsw i32 %168, %169
  %171 = add nsw i32 %166, %170
  %172 = sext i32 %171 to i64
  %173 = getelementptr inbounds double, ptr %164, i64 %172
  %174 = load double, ptr %173, align 8, !tbaa !11
  %175 = fcmp oeq double %174, 0.000000e+00
  br i1 %175, label %176, label %177

176:                                              ; preds = %163
  store i32 1, ptr %45, align 4
  br label %2200

177:                                              ; preds = %163, %155
  br label %178

178:                                              ; preds = %177
  %179 = load ptr, ptr %18, align 8, !tbaa !5
  %180 = load i32, ptr %179, align 4, !tbaa !9
  %181 = add nsw i32 %180, -1
  store i32 %181, ptr %179, align 4, !tbaa !9
  br label %151, !llvm.loop !15

182:                                              ; preds = %151
  br label %220

183:                                              ; preds = %144
  %184 = load ptr, ptr %11, align 8, !tbaa !5
  %185 = load i32, ptr %184, align 4, !tbaa !9
  store i32 %185, ptr %23, align 4, !tbaa !9
  %186 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 1, ptr %186, align 4, !tbaa !9
  br label %187

187:                                              ; preds = %215, %183
  %188 = load ptr, ptr %18, align 8, !tbaa !5
  %189 = load i32, ptr %188, align 4, !tbaa !9
  %190 = load i32, ptr %23, align 4, !tbaa !9
  %191 = icmp sle i32 %189, %190
  br i1 %191, label %192, label %219

192:                                              ; preds = %187
  %193 = load ptr, ptr %15, align 8, !tbaa !5
  %194 = load ptr, ptr %18, align 8, !tbaa !5
  %195 = load i32, ptr %194, align 4, !tbaa !9
  %196 = sext i32 %195 to i64
  %197 = getelementptr inbounds i32, ptr %193, i64 %196
  %198 = load i32, ptr %197, align 4, !tbaa !9
  %199 = icmp sgt i32 %198, 0
  br i1 %199, label %200, label %214

200:                                              ; preds = %192
  %201 = load ptr, ptr %12, align 8, !tbaa !5
  %202 = load ptr, ptr %18, align 8, !tbaa !5
  %203 = load i32, ptr %202, align 4, !tbaa !9
  %204 = load ptr, ptr %18, align 8, !tbaa !5
  %205 = load i32, ptr %204, align 4, !tbaa !9
  %206 = load i32, ptr %19, align 4, !tbaa !9
  %207 = mul nsw i32 %205, %206
  %208 = add nsw i32 %203, %207
  %209 = sext i32 %208 to i64
  %210 = getelementptr inbounds double, ptr %201, i64 %209
  %211 = load double, ptr %210, align 8, !tbaa !11
  %212 = fcmp oeq double %211, 0.000000e+00
  br i1 %212, label %213, label %214

213:                                              ; preds = %200
  store i32 1, ptr %45, align 4
  br label %2200

214:                                              ; preds = %200, %192
  br label %215

215:                                              ; preds = %214
  %216 = load ptr, ptr %18, align 8, !tbaa !5
  %217 = load i32, ptr %216, align 4, !tbaa !9
  %218 = add nsw i32 %217, 1
  store i32 %218, ptr %216, align 4, !tbaa !9
  br label %187, !llvm.loop !16

219:                                              ; preds = %187
  br label %220

220:                                              ; preds = %219, %182
  %221 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 0, ptr %221, align 4, !tbaa !9
  %222 = load ptr, ptr %11, align 8, !tbaa !5
  %223 = load i32, ptr %222, align 4, !tbaa !9
  store i32 %223, ptr %36, align 4, !tbaa !9
  %224 = load ptr, ptr %17, align 8, !tbaa !5
  %225 = load i32, ptr %224, align 4, !tbaa !9
  %226 = add nsw i32 %225, 2
  store i32 %226, ptr %26, align 4, !tbaa !9
  %227 = load i32, ptr %33, align 4, !tbaa !9
  %228 = icmp ne i32 %227, 0
  br i1 %228, label %229, label %1156

229:                                              ; preds = %220
  %230 = load ptr, ptr %10, align 8, !tbaa !5
  %231 = load ptr, ptr %11, align 8, !tbaa !5
  %232 = load ptr, ptr %12, align 8, !tbaa !5
  %233 = load i32, ptr %20, align 4, !tbaa !9
  %234 = sext i32 %233 to i64
  %235 = getelementptr inbounds double, ptr %232, i64 %234
  %236 = load ptr, ptr %13, align 8, !tbaa !5
  %237 = load ptr, ptr %18, align 8, !tbaa !5
  %238 = call i32 @dtrtri_(ptr noundef %230, ptr noundef @.str, ptr noundef %231, ptr noundef %235, ptr noundef %236, ptr noundef %237)
  store i32 1, ptr %31, align 4, !tbaa !9
  br label %239

239:                                              ; preds = %385, %229
  %240 = load i32, ptr %31, align 4, !tbaa !9
  %241 = load ptr, ptr %11, align 8, !tbaa !5
  %242 = load i32, ptr %241, align 4, !tbaa !9
  %243 = icmp sle i32 %240, %242
  br i1 %243, label %244, label %388

244:                                              ; preds = %239
  %245 = load ptr, ptr %15, align 8, !tbaa !5
  %246 = load i32, ptr %31, align 4, !tbaa !9
  %247 = sext i32 %246 to i64
  %248 = getelementptr inbounds i32, ptr %245, i64 %247
  %249 = load i32, ptr %248, align 4, !tbaa !9
  %250 = icmp sgt i32 %249, 0
  br i1 %250, label %251, label %279

251:                                              ; preds = %244
  %252 = load ptr, ptr %12, align 8, !tbaa !5
  %253 = load i32, ptr %31, align 4, !tbaa !9
  %254 = load i32, ptr %31, align 4, !tbaa !9
  %255 = load i32, ptr %19, align 4, !tbaa !9
  %256 = mul nsw i32 %254, %255
  %257 = add nsw i32 %253, %256
  %258 = sext i32 %257 to i64
  %259 = getelementptr inbounds double, ptr %252, i64 %258
  %260 = load double, ptr %259, align 8, !tbaa !11
  %261 = fdiv double 1.000000e+00, %260
  %262 = load ptr, ptr %16, align 8, !tbaa !5
  %263 = load i32, ptr %31, align 4, !tbaa !9
  %264 = load i32, ptr %26, align 4, !tbaa !9
  %265 = load i32, ptr %21, align 4, !tbaa !9
  %266 = mul nsw i32 %264, %265
  %267 = add nsw i32 %263, %266
  %268 = sext i32 %267 to i64
  %269 = getelementptr inbounds double, ptr %262, i64 %268
  store double %261, ptr %269, align 8, !tbaa !11
  %270 = load ptr, ptr %16, align 8, !tbaa !5
  %271 = load i32, ptr %31, align 4, !tbaa !9
  %272 = load i32, ptr %26, align 4, !tbaa !9
  %273 = add nsw i32 %272, 1
  %274 = load i32, ptr %21, align 4, !tbaa !9
  %275 = mul nsw i32 %273, %274
  %276 = add nsw i32 %271, %275
  %277 = sext i32 %276 to i64
  %278 = getelementptr inbounds double, ptr %270, i64 %277
  store double 0.000000e+00, ptr %278, align 8, !tbaa !11
  br label %385

279:                                              ; preds = %244
  %280 = load ptr, ptr %16, align 8, !tbaa !5
  %281 = load i32, ptr %31, align 4, !tbaa !9
  %282 = add nsw i32 %281, 1
  %283 = load i32, ptr %21, align 4, !tbaa !9
  %284 = add nsw i32 %282, %283
  %285 = sext i32 %284 to i64
  %286 = getelementptr inbounds double, ptr %280, i64 %285
  %287 = load double, ptr %286, align 8, !tbaa !11
  store double %287, ptr %32, align 8, !tbaa !11
  %288 = load ptr, ptr %12, align 8, !tbaa !5
  %289 = load i32, ptr %31, align 4, !tbaa !9
  %290 = load i32, ptr %31, align 4, !tbaa !9
  %291 = load i32, ptr %19, align 4, !tbaa !9
  %292 = mul nsw i32 %290, %291
  %293 = add nsw i32 %289, %292
  %294 = sext i32 %293 to i64
  %295 = getelementptr inbounds double, ptr %288, i64 %294
  %296 = load double, ptr %295, align 8, !tbaa !11
  %297 = load double, ptr %32, align 8, !tbaa !11
  %298 = fdiv double %296, %297
  store double %298, ptr %34, align 8, !tbaa !11
  %299 = load ptr, ptr %12, align 8, !tbaa !5
  %300 = load i32, ptr %31, align 4, !tbaa !9
  %301 = add nsw i32 %300, 1
  %302 = load i32, ptr %31, align 4, !tbaa !9
  %303 = add nsw i32 %302, 1
  %304 = load i32, ptr %19, align 4, !tbaa !9
  %305 = mul nsw i32 %303, %304
  %306 = add nsw i32 %301, %305
  %307 = sext i32 %306 to i64
  %308 = getelementptr inbounds double, ptr %299, i64 %307
  %309 = load double, ptr %308, align 8, !tbaa !11
  %310 = load double, ptr %32, align 8, !tbaa !11
  %311 = fdiv double %309, %310
  store double %311, ptr %42, align 8, !tbaa !11
  %312 = load ptr, ptr %16, align 8, !tbaa !5
  %313 = load i32, ptr %31, align 4, !tbaa !9
  %314 = add nsw i32 %313, 1
  %315 = load i32, ptr %21, align 4, !tbaa !9
  %316 = add nsw i32 %314, %315
  %317 = sext i32 %316 to i64
  %318 = getelementptr inbounds double, ptr %312, i64 %317
  %319 = load double, ptr %318, align 8, !tbaa !11
  %320 = load double, ptr %32, align 8, !tbaa !11
  %321 = fdiv double %319, %320
  store double %321, ptr %27, align 8, !tbaa !11
  %322 = load double, ptr %32, align 8, !tbaa !11
  %323 = load double, ptr %34, align 8, !tbaa !11
  %324 = load double, ptr %42, align 8, !tbaa !11
  %325 = call double @llvm.fmuladd.f64(double %323, double %324, double -1.000000e+00)
  %326 = fmul double %322, %325
  store double %326, ptr %28, align 8, !tbaa !11
  %327 = load double, ptr %42, align 8, !tbaa !11
  %328 = load double, ptr %28, align 8, !tbaa !11
  %329 = fdiv double %327, %328
  %330 = load ptr, ptr %16, align 8, !tbaa !5
  %331 = load i32, ptr %31, align 4, !tbaa !9
  %332 = load i32, ptr %26, align 4, !tbaa !9
  %333 = load i32, ptr %21, align 4, !tbaa !9
  %334 = mul nsw i32 %332, %333
  %335 = add nsw i32 %331, %334
  %336 = sext i32 %335 to i64
  %337 = getelementptr inbounds double, ptr %330, i64 %336
  store double %329, ptr %337, align 8, !tbaa !11
  %338 = load double, ptr %34, align 8, !tbaa !11
  %339 = load double, ptr %28, align 8, !tbaa !11
  %340 = fdiv double %338, %339
  %341 = load ptr, ptr %16, align 8, !tbaa !5
  %342 = load i32, ptr %31, align 4, !tbaa !9
  %343 = add nsw i32 %342, 1
  %344 = load i32, ptr %26, align 4, !tbaa !9
  %345 = add nsw i32 %344, 1
  %346 = load i32, ptr %21, align 4, !tbaa !9
  %347 = mul nsw i32 %345, %346
  %348 = add nsw i32 %343, %347
  %349 = sext i32 %348 to i64
  %350 = getelementptr inbounds double, ptr %341, i64 %349
  store double %340, ptr %350, align 8, !tbaa !11
  %351 = load double, ptr %27, align 8, !tbaa !11
  %352 = fneg double %351
  %353 = load double, ptr %28, align 8, !tbaa !11
  %354 = fdiv double %352, %353
  %355 = load ptr, ptr %16, align 8, !tbaa !5
  %356 = load i32, ptr %31, align 4, !tbaa !9
  %357 = load i32, ptr %26, align 4, !tbaa !9
  %358 = add nsw i32 %357, 1
  %359 = load i32, ptr %21, align 4, !tbaa !9
  %360 = mul nsw i32 %358, %359
  %361 = add nsw i32 %356, %360
  %362 = sext i32 %361 to i64
  %363 = getelementptr inbounds double, ptr %355, i64 %362
  store double %354, ptr %363, align 8, !tbaa !11
  %364 = load ptr, ptr %16, align 8, !tbaa !5
  %365 = load i32, ptr %31, align 4, !tbaa !9
  %366 = load i32, ptr %26, align 4, !tbaa !9
  %367 = add nsw i32 %366, 1
  %368 = load i32, ptr %21, align 4, !tbaa !9
  %369 = mul nsw i32 %367, %368
  %370 = add nsw i32 %365, %369
  %371 = sext i32 %370 to i64
  %372 = getelementptr inbounds double, ptr %364, i64 %371
  %373 = load double, ptr %372, align 8, !tbaa !11
  %374 = load ptr, ptr %16, align 8, !tbaa !5
  %375 = load i32, ptr %31, align 4, !tbaa !9
  %376 = add nsw i32 %375, 1
  %377 = load i32, ptr %26, align 4, !tbaa !9
  %378 = load i32, ptr %21, align 4, !tbaa !9
  %379 = mul nsw i32 %377, %378
  %380 = add nsw i32 %376, %379
  %381 = sext i32 %380 to i64
  %382 = getelementptr inbounds double, ptr %374, i64 %381
  store double %373, ptr %382, align 8, !tbaa !11
  %383 = load i32, ptr %31, align 4, !tbaa !9
  %384 = add nsw i32 %383, 1
  store i32 %384, ptr %31, align 4, !tbaa !9
  br label %385

385:                                              ; preds = %279, %251
  %386 = load i32, ptr %31, align 4, !tbaa !9
  %387 = add nsw i32 %386, 1
  store i32 %387, ptr %31, align 4, !tbaa !9
  br label %239, !llvm.loop !17

388:                                              ; preds = %239
  %389 = load ptr, ptr %11, align 8, !tbaa !5
  %390 = load i32, ptr %389, align 4, !tbaa !9
  store i32 %390, ptr %41, align 4, !tbaa !9
  br label %391

391:                                              ; preds = %1100, %388
  %392 = load i32, ptr %41, align 4, !tbaa !9
  %393 = icmp sgt i32 %392, 0
  br i1 %393, label %394, label %1101

394:                                              ; preds = %391
  %395 = load ptr, ptr %17, align 8, !tbaa !5
  %396 = load i32, ptr %395, align 4, !tbaa !9
  store i32 %396, ptr %40, align 4, !tbaa !9
  %397 = load i32, ptr %41, align 4, !tbaa !9
  %398 = load i32, ptr %40, align 4, !tbaa !9
  %399 = icmp sle i32 %397, %398
  br i1 %399, label %400, label %402

400:                                              ; preds = %394
  %401 = load i32, ptr %41, align 4, !tbaa !9
  store i32 %401, ptr %40, align 4, !tbaa !9
  br label %434

402:                                              ; preds = %394
  store i32 0, ptr %39, align 4, !tbaa !9
  %403 = load i32, ptr %41, align 4, !tbaa !9
  store i32 %403, ptr %23, align 4, !tbaa !9
  %404 = load i32, ptr %41, align 4, !tbaa !9
  %405 = add nsw i32 %404, 1
  %406 = load i32, ptr %40, align 4, !tbaa !9
  %407 = sub nsw i32 %405, %406
  store i32 %407, ptr %29, align 4, !tbaa !9
  br label %408

408:                                              ; preds = %423, %402
  %409 = load i32, ptr %29, align 4, !tbaa !9
  %410 = load i32, ptr %23, align 4, !tbaa !9
  %411 = icmp sle i32 %409, %410
  br i1 %411, label %412, label %426

412:                                              ; preds = %408
  %413 = load ptr, ptr %15, align 8, !tbaa !5
  %414 = load i32, ptr %29, align 4, !tbaa !9
  %415 = sext i32 %414 to i64
  %416 = getelementptr inbounds i32, ptr %413, i64 %415
  %417 = load i32, ptr %416, align 4, !tbaa !9
  %418 = icmp slt i32 %417, 0
  br i1 %418, label %419, label %422

419:                                              ; preds = %412
  %420 = load i32, ptr %39, align 4, !tbaa !9
  %421 = add nsw i32 %420, 1
  store i32 %421, ptr %39, align 4, !tbaa !9
  br label %422

422:                                              ; preds = %419, %412
  br label %423

423:                                              ; preds = %422
  %424 = load i32, ptr %29, align 4, !tbaa !9
  %425 = add nsw i32 %424, 1
  store i32 %425, ptr %29, align 4, !tbaa !9
  br label %408, !llvm.loop !18

426:                                              ; preds = %408
  %427 = load i32, ptr %39, align 4, !tbaa !9
  %428 = srem i32 %427, 2
  %429 = icmp eq i32 %428, 1
  br i1 %429, label %430, label %433

430:                                              ; preds = %426
  %431 = load i32, ptr %40, align 4, !tbaa !9
  %432 = add nsw i32 %431, 1
  store i32 %432, ptr %40, align 4, !tbaa !9
  br label %433

433:                                              ; preds = %430, %426
  br label %434

434:                                              ; preds = %433, %400
  %435 = load i32, ptr %40, align 4, !tbaa !9
  %436 = load i32, ptr %41, align 4, !tbaa !9
  %437 = sub nsw i32 %436, %435
  store i32 %437, ptr %41, align 4, !tbaa !9
  %438 = load i32, ptr %41, align 4, !tbaa !9
  store i32 %438, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %29, align 4, !tbaa !9
  br label %439

439:                                              ; preds = %473, %434
  %440 = load i32, ptr %29, align 4, !tbaa !9
  %441 = load i32, ptr %23, align 4, !tbaa !9
  %442 = icmp sle i32 %440, %441
  br i1 %442, label %443, label %476

443:                                              ; preds = %439
  %444 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %444, ptr %24, align 4, !tbaa !9
  store i32 1, ptr %30, align 4, !tbaa !9
  br label %445

445:                                              ; preds = %469, %443
  %446 = load i32, ptr %30, align 4, !tbaa !9
  %447 = load i32, ptr %24, align 4, !tbaa !9
  %448 = icmp sle i32 %446, %447
  br i1 %448, label %449, label %472

449:                                              ; preds = %445
  %450 = load ptr, ptr %12, align 8, !tbaa !5
  %451 = load i32, ptr %29, align 4, !tbaa !9
  %452 = load i32, ptr %41, align 4, !tbaa !9
  %453 = load i32, ptr %30, align 4, !tbaa !9
  %454 = add nsw i32 %452, %453
  %455 = load i32, ptr %19, align 4, !tbaa !9
  %456 = mul nsw i32 %454, %455
  %457 = add nsw i32 %451, %456
  %458 = sext i32 %457 to i64
  %459 = getelementptr inbounds double, ptr %450, i64 %458
  %460 = load double, ptr %459, align 8, !tbaa !11
  %461 = load ptr, ptr %16, align 8, !tbaa !5
  %462 = load i32, ptr %29, align 4, !tbaa !9
  %463 = load i32, ptr %30, align 4, !tbaa !9
  %464 = load i32, ptr %21, align 4, !tbaa !9
  %465 = mul nsw i32 %463, %464
  %466 = add nsw i32 %462, %465
  %467 = sext i32 %466 to i64
  %468 = getelementptr inbounds double, ptr %461, i64 %467
  store double %460, ptr %468, align 8, !tbaa !11
  br label %469

469:                                              ; preds = %449
  %470 = load i32, ptr %30, align 4, !tbaa !9
  %471 = add nsw i32 %470, 1
  store i32 %471, ptr %30, align 4, !tbaa !9
  br label %445, !llvm.loop !19

472:                                              ; preds = %445
  br label %473

473:                                              ; preds = %472
  %474 = load i32, ptr %29, align 4, !tbaa !9
  %475 = add nsw i32 %474, 1
  store i32 %475, ptr %29, align 4, !tbaa !9
  br label %439, !llvm.loop !20

476:                                              ; preds = %439
  %477 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %477, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %29, align 4, !tbaa !9
  br label %478

478:                                              ; preds = %549, %476
  %479 = load i32, ptr %29, align 4, !tbaa !9
  %480 = load i32, ptr %23, align 4, !tbaa !9
  %481 = icmp sle i32 %479, %480
  br i1 %481, label %482, label %552

482:                                              ; preds = %478
  %483 = load ptr, ptr %16, align 8, !tbaa !5
  %484 = load i32, ptr %36, align 4, !tbaa !9
  %485 = load i32, ptr %29, align 4, !tbaa !9
  %486 = add nsw i32 %484, %485
  %487 = load i32, ptr %29, align 4, !tbaa !9
  %488 = load i32, ptr %21, align 4, !tbaa !9
  %489 = mul nsw i32 %487, %488
  %490 = add nsw i32 %486, %489
  %491 = sext i32 %490 to i64
  %492 = getelementptr inbounds double, ptr %483, i64 %491
  store double 1.000000e+00, ptr %492, align 8, !tbaa !11
  %493 = load i32, ptr %29, align 4, !tbaa !9
  %494 = sub nsw i32 %493, 1
  store i32 %494, ptr %24, align 4, !tbaa !9
  store i32 1, ptr %30, align 4, !tbaa !9
  br label %495

495:                                              ; preds = %510, %482
  %496 = load i32, ptr %30, align 4, !tbaa !9
  %497 = load i32, ptr %24, align 4, !tbaa !9
  %498 = icmp sle i32 %496, %497
  br i1 %498, label %499, label %513

499:                                              ; preds = %495
  %500 = load ptr, ptr %16, align 8, !tbaa !5
  %501 = load i32, ptr %36, align 4, !tbaa !9
  %502 = load i32, ptr %29, align 4, !tbaa !9
  %503 = add nsw i32 %501, %502
  %504 = load i32, ptr %30, align 4, !tbaa !9
  %505 = load i32, ptr %21, align 4, !tbaa !9
  %506 = mul nsw i32 %504, %505
  %507 = add nsw i32 %503, %506
  %508 = sext i32 %507 to i64
  %509 = getelementptr inbounds double, ptr %500, i64 %508
  store double 0.000000e+00, ptr %509, align 8, !tbaa !11
  br label %510

510:                                              ; preds = %499
  %511 = load i32, ptr %30, align 4, !tbaa !9
  %512 = add nsw i32 %511, 1
  store i32 %512, ptr %30, align 4, !tbaa !9
  br label %495, !llvm.loop !21

513:                                              ; preds = %495
  %514 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %514, ptr %24, align 4, !tbaa !9
  %515 = load i32, ptr %29, align 4, !tbaa !9
  %516 = add nsw i32 %515, 1
  store i32 %516, ptr %30, align 4, !tbaa !9
  br label %517

517:                                              ; preds = %545, %513
  %518 = load i32, ptr %30, align 4, !tbaa !9
  %519 = load i32, ptr %24, align 4, !tbaa !9
  %520 = icmp sle i32 %518, %519
  br i1 %520, label %521, label %548

521:                                              ; preds = %517
  %522 = load ptr, ptr %12, align 8, !tbaa !5
  %523 = load i32, ptr %41, align 4, !tbaa !9
  %524 = load i32, ptr %29, align 4, !tbaa !9
  %525 = add nsw i32 %523, %524
  %526 = load i32, ptr %41, align 4, !tbaa !9
  %527 = load i32, ptr %30, align 4, !tbaa !9
  %528 = add nsw i32 %526, %527
  %529 = load i32, ptr %19, align 4, !tbaa !9
  %530 = mul nsw i32 %528, %529
  %531 = add nsw i32 %525, %530
  %532 = sext i32 %531 to i64
  %533 = getelementptr inbounds double, ptr %522, i64 %532
  %534 = load double, ptr %533, align 8, !tbaa !11
  %535 = load ptr, ptr %16, align 8, !tbaa !5
  %536 = load i32, ptr %36, align 4, !tbaa !9
  %537 = load i32, ptr %29, align 4, !tbaa !9
  %538 = add nsw i32 %536, %537
  %539 = load i32, ptr %30, align 4, !tbaa !9
  %540 = load i32, ptr %21, align 4, !tbaa !9
  %541 = mul nsw i32 %539, %540
  %542 = add nsw i32 %538, %541
  %543 = sext i32 %542 to i64
  %544 = getelementptr inbounds double, ptr %535, i64 %543
  store double %534, ptr %544, align 8, !tbaa !11
  br label %545

545:                                              ; preds = %521
  %546 = load i32, ptr %30, align 4, !tbaa !9
  %547 = add nsw i32 %546, 1
  store i32 %547, ptr %30, align 4, !tbaa !9
  br label %517, !llvm.loop !22

548:                                              ; preds = %517
  br label %549

549:                                              ; preds = %548
  %550 = load i32, ptr %29, align 4, !tbaa !9
  %551 = add nsw i32 %550, 1
  store i32 %551, ptr %29, align 4, !tbaa !9
  br label %478, !llvm.loop !23

552:                                              ; preds = %478
  store i32 1, ptr %29, align 4, !tbaa !9
  br label %553

553:                                              ; preds = %699, %552
  %554 = load i32, ptr %29, align 4, !tbaa !9
  %555 = load i32, ptr %41, align 4, !tbaa !9
  %556 = icmp sle i32 %554, %555
  br i1 %556, label %557, label %702

557:                                              ; preds = %553
  %558 = load ptr, ptr %15, align 8, !tbaa !5
  %559 = load i32, ptr %29, align 4, !tbaa !9
  %560 = sext i32 %559 to i64
  %561 = getelementptr inbounds i32, ptr %558, i64 %560
  %562 = load i32, ptr %561, align 4, !tbaa !9
  %563 = icmp sgt i32 %562, 0
  br i1 %563, label %564, label %602

564:                                              ; preds = %557
  %565 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %565, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %30, align 4, !tbaa !9
  br label %566

566:                                              ; preds = %598, %564
  %567 = load i32, ptr %30, align 4, !tbaa !9
  %568 = load i32, ptr %23, align 4, !tbaa !9
  %569 = icmp sle i32 %567, %568
  br i1 %569, label %570, label %601

570:                                              ; preds = %566
  %571 = load ptr, ptr %16, align 8, !tbaa !5
  %572 = load i32, ptr %29, align 4, !tbaa !9
  %573 = load i32, ptr %26, align 4, !tbaa !9
  %574 = load i32, ptr %21, align 4, !tbaa !9
  %575 = mul nsw i32 %573, %574
  %576 = add nsw i32 %572, %575
  %577 = sext i32 %576 to i64
  %578 = getelementptr inbounds double, ptr %571, i64 %577
  %579 = load double, ptr %578, align 8, !tbaa !11
  %580 = load ptr, ptr %16, align 8, !tbaa !5
  %581 = load i32, ptr %29, align 4, !tbaa !9
  %582 = load i32, ptr %30, align 4, !tbaa !9
  %583 = load i32, ptr %21, align 4, !tbaa !9
  %584 = mul nsw i32 %582, %583
  %585 = add nsw i32 %581, %584
  %586 = sext i32 %585 to i64
  %587 = getelementptr inbounds double, ptr %580, i64 %586
  %588 = load double, ptr %587, align 8, !tbaa !11
  %589 = fmul double %579, %588
  %590 = load ptr, ptr %16, align 8, !tbaa !5
  %591 = load i32, ptr %29, align 4, !tbaa !9
  %592 = load i32, ptr %30, align 4, !tbaa !9
  %593 = load i32, ptr %21, align 4, !tbaa !9
  %594 = mul nsw i32 %592, %593
  %595 = add nsw i32 %591, %594
  %596 = sext i32 %595 to i64
  %597 = getelementptr inbounds double, ptr %590, i64 %596
  store double %589, ptr %597, align 8, !tbaa !11
  br label %598

598:                                              ; preds = %570
  %599 = load i32, ptr %30, align 4, !tbaa !9
  %600 = add nsw i32 %599, 1
  store i32 %600, ptr %30, align 4, !tbaa !9
  br label %566, !llvm.loop !24

601:                                              ; preds = %566
  br label %699

602:                                              ; preds = %557
  %603 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %603, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %30, align 4, !tbaa !9
  br label %604

604:                                              ; preds = %693, %602
  %605 = load i32, ptr %30, align 4, !tbaa !9
  %606 = load i32, ptr %23, align 4, !tbaa !9
  %607 = icmp sle i32 %605, %606
  br i1 %607, label %608, label %696

608:                                              ; preds = %604
  %609 = load ptr, ptr %16, align 8, !tbaa !5
  %610 = load i32, ptr %29, align 4, !tbaa !9
  %611 = load i32, ptr %30, align 4, !tbaa !9
  %612 = load i32, ptr %21, align 4, !tbaa !9
  %613 = mul nsw i32 %611, %612
  %614 = add nsw i32 %610, %613
  %615 = sext i32 %614 to i64
  %616 = getelementptr inbounds double, ptr %609, i64 %615
  %617 = load double, ptr %616, align 8, !tbaa !11
  store double %617, ptr %35, align 8, !tbaa !11
  %618 = load ptr, ptr %16, align 8, !tbaa !5
  %619 = load i32, ptr %29, align 4, !tbaa !9
  %620 = add nsw i32 %619, 1
  %621 = load i32, ptr %30, align 4, !tbaa !9
  %622 = load i32, ptr %21, align 4, !tbaa !9
  %623 = mul nsw i32 %621, %622
  %624 = add nsw i32 %620, %623
  %625 = sext i32 %624 to i64
  %626 = getelementptr inbounds double, ptr %618, i64 %625
  %627 = load double, ptr %626, align 8, !tbaa !11
  store double %627, ptr %43, align 8, !tbaa !11
  %628 = load ptr, ptr %16, align 8, !tbaa !5
  %629 = load i32, ptr %29, align 4, !tbaa !9
  %630 = load i32, ptr %26, align 4, !tbaa !9
  %631 = load i32, ptr %21, align 4, !tbaa !9
  %632 = mul nsw i32 %630, %631
  %633 = add nsw i32 %629, %632
  %634 = sext i32 %633 to i64
  %635 = getelementptr inbounds double, ptr %628, i64 %634
  %636 = load double, ptr %635, align 8, !tbaa !11
  %637 = load double, ptr %35, align 8, !tbaa !11
  %638 = load ptr, ptr %16, align 8, !tbaa !5
  %639 = load i32, ptr %29, align 4, !tbaa !9
  %640 = load i32, ptr %26, align 4, !tbaa !9
  %641 = add nsw i32 %640, 1
  %642 = load i32, ptr %21, align 4, !tbaa !9
  %643 = mul nsw i32 %641, %642
  %644 = add nsw i32 %639, %643
  %645 = sext i32 %644 to i64
  %646 = getelementptr inbounds double, ptr %638, i64 %645
  %647 = load double, ptr %646, align 8, !tbaa !11
  %648 = load double, ptr %43, align 8, !tbaa !11
  %649 = fmul double %647, %648
  %650 = call double @llvm.fmuladd.f64(double %636, double %637, double %649)
  %651 = load ptr, ptr %16, align 8, !tbaa !5
  %652 = load i32, ptr %29, align 4, !tbaa !9
  %653 = load i32, ptr %30, align 4, !tbaa !9
  %654 = load i32, ptr %21, align 4, !tbaa !9
  %655 = mul nsw i32 %653, %654
  %656 = add nsw i32 %652, %655
  %657 = sext i32 %656 to i64
  %658 = getelementptr inbounds double, ptr %651, i64 %657
  store double %650, ptr %658, align 8, !tbaa !11
  %659 = load ptr, ptr %16, align 8, !tbaa !5
  %660 = load i32, ptr %29, align 4, !tbaa !9
  %661 = add nsw i32 %660, 1
  %662 = load i32, ptr %26, align 4, !tbaa !9
  %663 = load i32, ptr %21, align 4, !tbaa !9
  %664 = mul nsw i32 %662, %663
  %665 = add nsw i32 %661, %664
  %666 = sext i32 %665 to i64
  %667 = getelementptr inbounds double, ptr %659, i64 %666
  %668 = load double, ptr %667, align 8, !tbaa !11
  %669 = load double, ptr %35, align 8, !tbaa !11
  %670 = load ptr, ptr %16, align 8, !tbaa !5
  %671 = load i32, ptr %29, align 4, !tbaa !9
  %672 = add nsw i32 %671, 1
  %673 = load i32, ptr %26, align 4, !tbaa !9
  %674 = add nsw i32 %673, 1
  %675 = load i32, ptr %21, align 4, !tbaa !9
  %676 = mul nsw i32 %674, %675
  %677 = add nsw i32 %672, %676
  %678 = sext i32 %677 to i64
  %679 = getelementptr inbounds double, ptr %670, i64 %678
  %680 = load double, ptr %679, align 8, !tbaa !11
  %681 = load double, ptr %43, align 8, !tbaa !11
  %682 = fmul double %680, %681
  %683 = call double @llvm.fmuladd.f64(double %668, double %669, double %682)
  %684 = load ptr, ptr %16, align 8, !tbaa !5
  %685 = load i32, ptr %29, align 4, !tbaa !9
  %686 = add nsw i32 %685, 1
  %687 = load i32, ptr %30, align 4, !tbaa !9
  %688 = load i32, ptr %21, align 4, !tbaa !9
  %689 = mul nsw i32 %687, %688
  %690 = add nsw i32 %686, %689
  %691 = sext i32 %690 to i64
  %692 = getelementptr inbounds double, ptr %684, i64 %691
  store double %683, ptr %692, align 8, !tbaa !11
  br label %693

693:                                              ; preds = %608
  %694 = load i32, ptr %30, align 4, !tbaa !9
  %695 = add nsw i32 %694, 1
  store i32 %695, ptr %30, align 4, !tbaa !9
  br label %604, !llvm.loop !25

696:                                              ; preds = %604
  %697 = load i32, ptr %29, align 4, !tbaa !9
  %698 = add nsw i32 %697, 1
  store i32 %698, ptr %29, align 4, !tbaa !9
  br label %699

699:                                              ; preds = %696, %601
  %700 = load i32, ptr %29, align 4, !tbaa !9
  %701 = add nsw i32 %700, 1
  store i32 %701, ptr %29, align 4, !tbaa !9
  br label %553, !llvm.loop !26

702:                                              ; preds = %553
  store i32 1, ptr %29, align 4, !tbaa !9
  br label %703

703:                                              ; preds = %896, %702
  %704 = load i32, ptr %29, align 4, !tbaa !9
  %705 = load i32, ptr %40, align 4, !tbaa !9
  %706 = icmp sle i32 %704, %705
  br i1 %706, label %707, label %899

707:                                              ; preds = %703
  %708 = load ptr, ptr %15, align 8, !tbaa !5
  %709 = load i32, ptr %41, align 4, !tbaa !9
  %710 = load i32, ptr %29, align 4, !tbaa !9
  %711 = add nsw i32 %709, %710
  %712 = sext i32 %711 to i64
  %713 = getelementptr inbounds i32, ptr %708, i64 %712
  %714 = load i32, ptr %713, align 4, !tbaa !9
  %715 = icmp sgt i32 %714, 0
  br i1 %715, label %716, label %761

716:                                              ; preds = %707
  %717 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %717, ptr %23, align 4, !tbaa !9
  %718 = load i32, ptr %29, align 4, !tbaa !9
  store i32 %718, ptr %30, align 4, !tbaa !9
  br label %719

719:                                              ; preds = %757, %716
  %720 = load i32, ptr %30, align 4, !tbaa !9
  %721 = load i32, ptr %23, align 4, !tbaa !9
  %722 = icmp sle i32 %720, %721
  br i1 %722, label %723, label %760

723:                                              ; preds = %719
  %724 = load ptr, ptr %16, align 8, !tbaa !5
  %725 = load i32, ptr %41, align 4, !tbaa !9
  %726 = load i32, ptr %29, align 4, !tbaa !9
  %727 = add nsw i32 %725, %726
  %728 = load i32, ptr %26, align 4, !tbaa !9
  %729 = load i32, ptr %21, align 4, !tbaa !9
  %730 = mul nsw i32 %728, %729
  %731 = add nsw i32 %727, %730
  %732 = sext i32 %731 to i64
  %733 = getelementptr inbounds double, ptr %724, i64 %732
  %734 = load double, ptr %733, align 8, !tbaa !11
  %735 = load ptr, ptr %16, align 8, !tbaa !5
  %736 = load i32, ptr %36, align 4, !tbaa !9
  %737 = load i32, ptr %29, align 4, !tbaa !9
  %738 = add nsw i32 %736, %737
  %739 = load i32, ptr %30, align 4, !tbaa !9
  %740 = load i32, ptr %21, align 4, !tbaa !9
  %741 = mul nsw i32 %739, %740
  %742 = add nsw i32 %738, %741
  %743 = sext i32 %742 to i64
  %744 = getelementptr inbounds double, ptr %735, i64 %743
  %745 = load double, ptr %744, align 8, !tbaa !11
  %746 = fmul double %734, %745
  %747 = load ptr, ptr %16, align 8, !tbaa !5
  %748 = load i32, ptr %36, align 4, !tbaa !9
  %749 = load i32, ptr %29, align 4, !tbaa !9
  %750 = add nsw i32 %748, %749
  %751 = load i32, ptr %30, align 4, !tbaa !9
  %752 = load i32, ptr %21, align 4, !tbaa !9
  %753 = mul nsw i32 %751, %752
  %754 = add nsw i32 %750, %753
  %755 = sext i32 %754 to i64
  %756 = getelementptr inbounds double, ptr %747, i64 %755
  store double %746, ptr %756, align 8, !tbaa !11
  br label %757

757:                                              ; preds = %723
  %758 = load i32, ptr %30, align 4, !tbaa !9
  %759 = add nsw i32 %758, 1
  store i32 %759, ptr %30, align 4, !tbaa !9
  br label %719, !llvm.loop !27

760:                                              ; preds = %719
  br label %896

761:                                              ; preds = %707
  %762 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %762, ptr %23, align 4, !tbaa !9
  %763 = load i32, ptr %29, align 4, !tbaa !9
  store i32 %763, ptr %30, align 4, !tbaa !9
  br label %764

764:                                              ; preds = %890, %761
  %765 = load i32, ptr %30, align 4, !tbaa !9
  %766 = load i32, ptr %23, align 4, !tbaa !9
  %767 = icmp sle i32 %765, %766
  br i1 %767, label %768, label %893

768:                                              ; preds = %764
  %769 = load ptr, ptr %16, align 8, !tbaa !5
  %770 = load i32, ptr %36, align 4, !tbaa !9
  %771 = load i32, ptr %29, align 4, !tbaa !9
  %772 = add nsw i32 %770, %771
  %773 = load i32, ptr %30, align 4, !tbaa !9
  %774 = load i32, ptr %21, align 4, !tbaa !9
  %775 = mul nsw i32 %773, %774
  %776 = add nsw i32 %772, %775
  %777 = sext i32 %776 to i64
  %778 = getelementptr inbounds double, ptr %769, i64 %777
  %779 = load double, ptr %778, align 8, !tbaa !11
  store double %779, ptr %37, align 8, !tbaa !11
  %780 = load ptr, ptr %16, align 8, !tbaa !5
  %781 = load i32, ptr %36, align 4, !tbaa !9
  %782 = load i32, ptr %29, align 4, !tbaa !9
  %783 = add nsw i32 %781, %782
  %784 = add nsw i32 %783, 1
  %785 = load i32, ptr %30, align 4, !tbaa !9
  %786 = load i32, ptr %21, align 4, !tbaa !9
  %787 = mul nsw i32 %785, %786
  %788 = add nsw i32 %784, %787
  %789 = sext i32 %788 to i64
  %790 = getelementptr inbounds double, ptr %780, i64 %789
  %791 = load double, ptr %790, align 8, !tbaa !11
  store double %791, ptr %44, align 8, !tbaa !11
  %792 = load ptr, ptr %16, align 8, !tbaa !5
  %793 = load i32, ptr %41, align 4, !tbaa !9
  %794 = load i32, ptr %29, align 4, !tbaa !9
  %795 = add nsw i32 %793, %794
  %796 = load i32, ptr %26, align 4, !tbaa !9
  %797 = load i32, ptr %21, align 4, !tbaa !9
  %798 = mul nsw i32 %796, %797
  %799 = add nsw i32 %795, %798
  %800 = sext i32 %799 to i64
  %801 = getelementptr inbounds double, ptr %792, i64 %800
  %802 = load double, ptr %801, align 8, !tbaa !11
  %803 = load ptr, ptr %16, align 8, !tbaa !5
  %804 = load i32, ptr %36, align 4, !tbaa !9
  %805 = load i32, ptr %29, align 4, !tbaa !9
  %806 = add nsw i32 %804, %805
  %807 = load i32, ptr %30, align 4, !tbaa !9
  %808 = load i32, ptr %21, align 4, !tbaa !9
  %809 = mul nsw i32 %807, %808
  %810 = add nsw i32 %806, %809
  %811 = sext i32 %810 to i64
  %812 = getelementptr inbounds double, ptr %803, i64 %811
  %813 = load double, ptr %812, align 8, !tbaa !11
  %814 = load ptr, ptr %16, align 8, !tbaa !5
  %815 = load i32, ptr %41, align 4, !tbaa !9
  %816 = load i32, ptr %29, align 4, !tbaa !9
  %817 = add nsw i32 %815, %816
  %818 = load i32, ptr %26, align 4, !tbaa !9
  %819 = add nsw i32 %818, 1
  %820 = load i32, ptr %21, align 4, !tbaa !9
  %821 = mul nsw i32 %819, %820
  %822 = add nsw i32 %817, %821
  %823 = sext i32 %822 to i64
  %824 = getelementptr inbounds double, ptr %814, i64 %823
  %825 = load double, ptr %824, align 8, !tbaa !11
  %826 = load ptr, ptr %16, align 8, !tbaa !5
  %827 = load i32, ptr %36, align 4, !tbaa !9
  %828 = load i32, ptr %29, align 4, !tbaa !9
  %829 = add nsw i32 %827, %828
  %830 = add nsw i32 %829, 1
  %831 = load i32, ptr %30, align 4, !tbaa !9
  %832 = load i32, ptr %21, align 4, !tbaa !9
  %833 = mul nsw i32 %831, %832
  %834 = add nsw i32 %830, %833
  %835 = sext i32 %834 to i64
  %836 = getelementptr inbounds double, ptr %826, i64 %835
  %837 = load double, ptr %836, align 8, !tbaa !11
  %838 = fmul double %825, %837
  %839 = call double @llvm.fmuladd.f64(double %802, double %813, double %838)
  %840 = load ptr, ptr %16, align 8, !tbaa !5
  %841 = load i32, ptr %36, align 4, !tbaa !9
  %842 = load i32, ptr %29, align 4, !tbaa !9
  %843 = add nsw i32 %841, %842
  %844 = load i32, ptr %30, align 4, !tbaa !9
  %845 = load i32, ptr %21, align 4, !tbaa !9
  %846 = mul nsw i32 %844, %845
  %847 = add nsw i32 %843, %846
  %848 = sext i32 %847 to i64
  %849 = getelementptr inbounds double, ptr %840, i64 %848
  store double %839, ptr %849, align 8, !tbaa !11
  %850 = load ptr, ptr %16, align 8, !tbaa !5
  %851 = load i32, ptr %41, align 4, !tbaa !9
  %852 = load i32, ptr %29, align 4, !tbaa !9
  %853 = add nsw i32 %851, %852
  %854 = add nsw i32 %853, 1
  %855 = load i32, ptr %26, align 4, !tbaa !9
  %856 = load i32, ptr %21, align 4, !tbaa !9
  %857 = mul nsw i32 %855, %856
  %858 = add nsw i32 %854, %857
  %859 = sext i32 %858 to i64
  %860 = getelementptr inbounds double, ptr %850, i64 %859
  %861 = load double, ptr %860, align 8, !tbaa !11
  %862 = load double, ptr %37, align 8, !tbaa !11
  %863 = load ptr, ptr %16, align 8, !tbaa !5
  %864 = load i32, ptr %41, align 4, !tbaa !9
  %865 = load i32, ptr %29, align 4, !tbaa !9
  %866 = add nsw i32 %864, %865
  %867 = add nsw i32 %866, 1
  %868 = load i32, ptr %26, align 4, !tbaa !9
  %869 = add nsw i32 %868, 1
  %870 = load i32, ptr %21, align 4, !tbaa !9
  %871 = mul nsw i32 %869, %870
  %872 = add nsw i32 %867, %871
  %873 = sext i32 %872 to i64
  %874 = getelementptr inbounds double, ptr %863, i64 %873
  %875 = load double, ptr %874, align 8, !tbaa !11
  %876 = load double, ptr %44, align 8, !tbaa !11
  %877 = fmul double %875, %876
  %878 = call double @llvm.fmuladd.f64(double %861, double %862, double %877)
  %879 = load ptr, ptr %16, align 8, !tbaa !5
  %880 = load i32, ptr %36, align 4, !tbaa !9
  %881 = load i32, ptr %29, align 4, !tbaa !9
  %882 = add nsw i32 %880, %881
  %883 = add nsw i32 %882, 1
  %884 = load i32, ptr %30, align 4, !tbaa !9
  %885 = load i32, ptr %21, align 4, !tbaa !9
  %886 = mul nsw i32 %884, %885
  %887 = add nsw i32 %883, %886
  %888 = sext i32 %887 to i64
  %889 = getelementptr inbounds double, ptr %879, i64 %888
  store double %878, ptr %889, align 8, !tbaa !11
  br label %890

890:                                              ; preds = %768
  %891 = load i32, ptr %30, align 4, !tbaa !9
  %892 = add nsw i32 %891, 1
  store i32 %892, ptr %30, align 4, !tbaa !9
  br label %764, !llvm.loop !28

893:                                              ; preds = %764
  %894 = load i32, ptr %29, align 4, !tbaa !9
  %895 = add nsw i32 %894, 1
  store i32 %895, ptr %29, align 4, !tbaa !9
  br label %896

896:                                              ; preds = %893, %760
  %897 = load i32, ptr %29, align 4, !tbaa !9
  %898 = add nsw i32 %897, 1
  store i32 %898, ptr %29, align 4, !tbaa !9
  br label %703, !llvm.loop !29

899:                                              ; preds = %703
  %900 = load ptr, ptr %11, align 8, !tbaa !5
  %901 = load i32, ptr %900, align 4, !tbaa !9
  %902 = load ptr, ptr %17, align 8, !tbaa !5
  %903 = load i32, ptr %902, align 4, !tbaa !9
  %904 = add nsw i32 %901, %903
  %905 = add nsw i32 %904, 1
  store i32 %905, ptr %23, align 4, !tbaa !9
  %906 = load ptr, ptr %12, align 8, !tbaa !5
  %907 = load i32, ptr %41, align 4, !tbaa !9
  %908 = add nsw i32 %907, 1
  %909 = load i32, ptr %41, align 4, !tbaa !9
  %910 = add nsw i32 %909, 1
  %911 = load i32, ptr %19, align 4, !tbaa !9
  %912 = mul nsw i32 %910, %911
  %913 = add nsw i32 %908, %912
  %914 = sext i32 %913 to i64
  %915 = getelementptr inbounds double, ptr %906, i64 %914
  %916 = load ptr, ptr %13, align 8, !tbaa !5
  %917 = load ptr, ptr %16, align 8, !tbaa !5
  %918 = load i32, ptr %36, align 4, !tbaa !9
  %919 = add nsw i32 %918, 1
  %920 = load i32, ptr %21, align 4, !tbaa !9
  %921 = add nsw i32 %919, %920
  %922 = sext i32 %921 to i64
  %923 = getelementptr inbounds double, ptr %917, i64 %922
  call void @dtrmm_(ptr noundef @.str.1, ptr noundef @.str, ptr noundef @.str.3, ptr noundef @.str, ptr noundef %40, ptr noundef %40, ptr noundef @c_b10, ptr noundef %915, ptr noundef %916, ptr noundef %923, ptr noundef %23)
  %924 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %924, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %29, align 4, !tbaa !9
  br label %925

925:                                              ; preds = %964, %899
  %926 = load i32, ptr %29, align 4, !tbaa !9
  %927 = load i32, ptr %23, align 4, !tbaa !9
  %928 = icmp sle i32 %926, %927
  br i1 %928, label %929, label %967

929:                                              ; preds = %925
  %930 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %930, ptr %24, align 4, !tbaa !9
  %931 = load i32, ptr %29, align 4, !tbaa !9
  store i32 %931, ptr %30, align 4, !tbaa !9
  br label %932

932:                                              ; preds = %960, %929
  %933 = load i32, ptr %30, align 4, !tbaa !9
  %934 = load i32, ptr %24, align 4, !tbaa !9
  %935 = icmp sle i32 %933, %934
  br i1 %935, label %936, label %963

936:                                              ; preds = %932
  %937 = load ptr, ptr %16, align 8, !tbaa !5
  %938 = load i32, ptr %36, align 4, !tbaa !9
  %939 = load i32, ptr %29, align 4, !tbaa !9
  %940 = add nsw i32 %938, %939
  %941 = load i32, ptr %30, align 4, !tbaa !9
  %942 = load i32, ptr %21, align 4, !tbaa !9
  %943 = mul nsw i32 %941, %942
  %944 = add nsw i32 %940, %943
  %945 = sext i32 %944 to i64
  %946 = getelementptr inbounds double, ptr %937, i64 %945
  %947 = load double, ptr %946, align 8, !tbaa !11
  %948 = load ptr, ptr %12, align 8, !tbaa !5
  %949 = load i32, ptr %41, align 4, !tbaa !9
  %950 = load i32, ptr %29, align 4, !tbaa !9
  %951 = add nsw i32 %949, %950
  %952 = load i32, ptr %41, align 4, !tbaa !9
  %953 = load i32, ptr %30, align 4, !tbaa !9
  %954 = add nsw i32 %952, %953
  %955 = load i32, ptr %19, align 4, !tbaa !9
  %956 = mul nsw i32 %954, %955
  %957 = add nsw i32 %951, %956
  %958 = sext i32 %957 to i64
  %959 = getelementptr inbounds double, ptr %948, i64 %958
  store double %947, ptr %959, align 8, !tbaa !11
  br label %960

960:                                              ; preds = %936
  %961 = load i32, ptr %30, align 4, !tbaa !9
  %962 = add nsw i32 %961, 1
  store i32 %962, ptr %30, align 4, !tbaa !9
  br label %932, !llvm.loop !30

963:                                              ; preds = %932
  br label %964

964:                                              ; preds = %963
  %965 = load i32, ptr %29, align 4, !tbaa !9
  %966 = add nsw i32 %965, 1
  store i32 %966, ptr %29, align 4, !tbaa !9
  br label %925, !llvm.loop !31

967:                                              ; preds = %925
  %968 = load ptr, ptr %11, align 8, !tbaa !5
  %969 = load i32, ptr %968, align 4, !tbaa !9
  %970 = load ptr, ptr %17, align 8, !tbaa !5
  %971 = load i32, ptr %970, align 4, !tbaa !9
  %972 = add nsw i32 %969, %971
  %973 = add nsw i32 %972, 1
  store i32 %973, ptr %23, align 4, !tbaa !9
  %974 = load ptr, ptr %11, align 8, !tbaa !5
  %975 = load i32, ptr %974, align 4, !tbaa !9
  %976 = load ptr, ptr %17, align 8, !tbaa !5
  %977 = load i32, ptr %976, align 4, !tbaa !9
  %978 = add nsw i32 %975, %977
  %979 = add nsw i32 %978, 1
  store i32 %979, ptr %24, align 4, !tbaa !9
  %980 = load ptr, ptr %12, align 8, !tbaa !5
  %981 = load i32, ptr %41, align 4, !tbaa !9
  %982 = add nsw i32 %981, 1
  %983 = load i32, ptr %19, align 4, !tbaa !9
  %984 = mul nsw i32 %982, %983
  %985 = add nsw i32 %984, 1
  %986 = sext i32 %985 to i64
  %987 = getelementptr inbounds double, ptr %980, i64 %986
  %988 = load ptr, ptr %13, align 8, !tbaa !5
  %989 = load ptr, ptr %16, align 8, !tbaa !5
  %990 = load i32, ptr %22, align 4, !tbaa !9
  %991 = sext i32 %990 to i64
  %992 = getelementptr inbounds double, ptr %989, i64 %991
  %993 = load ptr, ptr %16, align 8, !tbaa !5
  %994 = load i32, ptr %36, align 4, !tbaa !9
  %995 = add nsw i32 %994, 1
  %996 = load i32, ptr %21, align 4, !tbaa !9
  %997 = add nsw i32 %995, %996
  %998 = sext i32 %997 to i64
  %999 = getelementptr inbounds double, ptr %993, i64 %998
  call void @dgemm_(ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef %40, ptr noundef %40, ptr noundef %41, ptr noundef @c_b10, ptr noundef %987, ptr noundef %988, ptr noundef %992, ptr noundef %23, ptr noundef @c_b14, ptr noundef %999, ptr noundef %24)
  %1000 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %1000, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %29, align 4, !tbaa !9
  br label %1001

1001:                                             ; preds = %1042, %967
  %1002 = load i32, ptr %29, align 4, !tbaa !9
  %1003 = load i32, ptr %23, align 4, !tbaa !9
  %1004 = icmp sle i32 %1002, %1003
  br i1 %1004, label %1005, label %1045

1005:                                             ; preds = %1001
  %1006 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %1006, ptr %24, align 4, !tbaa !9
  %1007 = load i32, ptr %29, align 4, !tbaa !9
  store i32 %1007, ptr %30, align 4, !tbaa !9
  br label %1008

1008:                                             ; preds = %1038, %1005
  %1009 = load i32, ptr %30, align 4, !tbaa !9
  %1010 = load i32, ptr %24, align 4, !tbaa !9
  %1011 = icmp sle i32 %1009, %1010
  br i1 %1011, label %1012, label %1041

1012:                                             ; preds = %1008
  %1013 = load ptr, ptr %16, align 8, !tbaa !5
  %1014 = load i32, ptr %36, align 4, !tbaa !9
  %1015 = load i32, ptr %29, align 4, !tbaa !9
  %1016 = add nsw i32 %1014, %1015
  %1017 = load i32, ptr %30, align 4, !tbaa !9
  %1018 = load i32, ptr %21, align 4, !tbaa !9
  %1019 = mul nsw i32 %1017, %1018
  %1020 = add nsw i32 %1016, %1019
  %1021 = sext i32 %1020 to i64
  %1022 = getelementptr inbounds double, ptr %1013, i64 %1021
  %1023 = load double, ptr %1022, align 8, !tbaa !11
  %1024 = load ptr, ptr %12, align 8, !tbaa !5
  %1025 = load i32, ptr %41, align 4, !tbaa !9
  %1026 = load i32, ptr %29, align 4, !tbaa !9
  %1027 = add nsw i32 %1025, %1026
  %1028 = load i32, ptr %41, align 4, !tbaa !9
  %1029 = load i32, ptr %30, align 4, !tbaa !9
  %1030 = add nsw i32 %1028, %1029
  %1031 = load i32, ptr %19, align 4, !tbaa !9
  %1032 = mul nsw i32 %1030, %1031
  %1033 = add nsw i32 %1027, %1032
  %1034 = sext i32 %1033 to i64
  %1035 = getelementptr inbounds double, ptr %1024, i64 %1034
  %1036 = load double, ptr %1035, align 8, !tbaa !11
  %1037 = fadd double %1036, %1023
  store double %1037, ptr %1035, align 8, !tbaa !11
  br label %1038

1038:                                             ; preds = %1012
  %1039 = load i32, ptr %30, align 4, !tbaa !9
  %1040 = add nsw i32 %1039, 1
  store i32 %1040, ptr %30, align 4, !tbaa !9
  br label %1008, !llvm.loop !32

1041:                                             ; preds = %1008
  br label %1042

1042:                                             ; preds = %1041
  %1043 = load i32, ptr %29, align 4, !tbaa !9
  %1044 = add nsw i32 %1043, 1
  store i32 %1044, ptr %29, align 4, !tbaa !9
  br label %1001, !llvm.loop !33

1045:                                             ; preds = %1001
  %1046 = load ptr, ptr %11, align 8, !tbaa !5
  %1047 = load i32, ptr %1046, align 4, !tbaa !9
  %1048 = load ptr, ptr %17, align 8, !tbaa !5
  %1049 = load i32, ptr %1048, align 4, !tbaa !9
  %1050 = add nsw i32 %1047, %1049
  %1051 = add nsw i32 %1050, 1
  store i32 %1051, ptr %23, align 4, !tbaa !9
  %1052 = load ptr, ptr %10, align 8, !tbaa !5
  %1053 = load ptr, ptr %12, align 8, !tbaa !5
  %1054 = load i32, ptr %20, align 4, !tbaa !9
  %1055 = sext i32 %1054 to i64
  %1056 = getelementptr inbounds double, ptr %1053, i64 %1055
  %1057 = load ptr, ptr %13, align 8, !tbaa !5
  %1058 = load ptr, ptr %16, align 8, !tbaa !5
  %1059 = load i32, ptr %22, align 4, !tbaa !9
  %1060 = sext i32 %1059 to i64
  %1061 = getelementptr inbounds double, ptr %1058, i64 %1060
  call void @dtrmm_(ptr noundef @.str.1, ptr noundef %1052, ptr noundef @.str.3, ptr noundef @.str, ptr noundef %41, ptr noundef %40, ptr noundef @c_b10, ptr noundef %1056, ptr noundef %1057, ptr noundef %1061, ptr noundef %23)
  %1062 = load i32, ptr %41, align 4, !tbaa !9
  store i32 %1062, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %29, align 4, !tbaa !9
  br label %1063

1063:                                             ; preds = %1097, %1045
  %1064 = load i32, ptr %29, align 4, !tbaa !9
  %1065 = load i32, ptr %23, align 4, !tbaa !9
  %1066 = icmp sle i32 %1064, %1065
  br i1 %1066, label %1067, label %1100

1067:                                             ; preds = %1063
  %1068 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %1068, ptr %24, align 4, !tbaa !9
  store i32 1, ptr %30, align 4, !tbaa !9
  br label %1069

1069:                                             ; preds = %1093, %1067
  %1070 = load i32, ptr %30, align 4, !tbaa !9
  %1071 = load i32, ptr %24, align 4, !tbaa !9
  %1072 = icmp sle i32 %1070, %1071
  br i1 %1072, label %1073, label %1096

1073:                                             ; preds = %1069
  %1074 = load ptr, ptr %16, align 8, !tbaa !5
  %1075 = load i32, ptr %29, align 4, !tbaa !9
  %1076 = load i32, ptr %30, align 4, !tbaa !9
  %1077 = load i32, ptr %21, align 4, !tbaa !9
  %1078 = mul nsw i32 %1076, %1077
  %1079 = add nsw i32 %1075, %1078
  %1080 = sext i32 %1079 to i64
  %1081 = getelementptr inbounds double, ptr %1074, i64 %1080
  %1082 = load double, ptr %1081, align 8, !tbaa !11
  %1083 = load ptr, ptr %12, align 8, !tbaa !5
  %1084 = load i32, ptr %29, align 4, !tbaa !9
  %1085 = load i32, ptr %41, align 4, !tbaa !9
  %1086 = load i32, ptr %30, align 4, !tbaa !9
  %1087 = add nsw i32 %1085, %1086
  %1088 = load i32, ptr %19, align 4, !tbaa !9
  %1089 = mul nsw i32 %1087, %1088
  %1090 = add nsw i32 %1084, %1089
  %1091 = sext i32 %1090 to i64
  %1092 = getelementptr inbounds double, ptr %1083, i64 %1091
  store double %1082, ptr %1092, align 8, !tbaa !11
  br label %1093

1093:                                             ; preds = %1073
  %1094 = load i32, ptr %30, align 4, !tbaa !9
  %1095 = add nsw i32 %1094, 1
  store i32 %1095, ptr %30, align 4, !tbaa !9
  br label %1069, !llvm.loop !34

1096:                                             ; preds = %1069
  br label %1097

1097:                                             ; preds = %1096
  %1098 = load i32, ptr %29, align 4, !tbaa !9
  %1099 = add nsw i32 %1098, 1
  store i32 %1099, ptr %29, align 4, !tbaa !9
  br label %1063, !llvm.loop !35

1100:                                             ; preds = %1063
  br label %391, !llvm.loop !36

1101:                                             ; preds = %391
  %1102 = load ptr, ptr %11, align 8, !tbaa !5
  %1103 = load i32, ptr %1102, align 4, !tbaa !9
  store i32 %1103, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %29, align 4, !tbaa !9
  br label %1104

1104:                                             ; preds = %1152, %1101
  %1105 = load i32, ptr %29, align 4, !tbaa !9
  %1106 = load i32, ptr %23, align 4, !tbaa !9
  %1107 = icmp sle i32 %1105, %1106
  br i1 %1107, label %1108, label %1155

1108:                                             ; preds = %1104
  %1109 = load ptr, ptr %15, align 8, !tbaa !5
  %1110 = load i32, ptr %29, align 4, !tbaa !9
  %1111 = sext i32 %1110 to i64
  %1112 = getelementptr inbounds i32, ptr %1109, i64 %1111
  %1113 = load i32, ptr %1112, align 4, !tbaa !9
  store i32 %1113, ptr %24, align 4, !tbaa !9
  %1114 = load i32, ptr %24, align 4, !tbaa !9
  %1115 = icmp sge i32 %1114, 0
  br i1 %1115, label %1116, label %1118

1116:                                             ; preds = %1108
  %1117 = load i32, ptr %24, align 4, !tbaa !9
  br label %1121

1118:                                             ; preds = %1108
  %1119 = load i32, ptr %24, align 4, !tbaa !9
  %1120 = sub nsw i32 0, %1119
  br label %1121

1121:                                             ; preds = %1118, %1116
  %1122 = phi i32 [ %1117, %1116 ], [ %1120, %1118 ]
  store i32 %1122, ptr %38, align 4, !tbaa !9
  %1123 = load i32, ptr %38, align 4, !tbaa !9
  %1124 = load i32, ptr %29, align 4, !tbaa !9
  %1125 = icmp ne i32 %1123, %1124
  br i1 %1125, label %1126, label %1151

1126:                                             ; preds = %1121
  %1127 = load i32, ptr %29, align 4, !tbaa !9
  %1128 = load i32, ptr %38, align 4, !tbaa !9
  %1129 = icmp slt i32 %1127, %1128
  br i1 %1129, label %1130, label %1138

1130:                                             ; preds = %1126
  %1131 = load ptr, ptr %10, align 8, !tbaa !5
  %1132 = load ptr, ptr %11, align 8, !tbaa !5
  %1133 = load ptr, ptr %12, align 8, !tbaa !5
  %1134 = load i32, ptr %20, align 4, !tbaa !9
  %1135 = sext i32 %1134 to i64
  %1136 = getelementptr inbounds double, ptr %1133, i64 %1135
  %1137 = load ptr, ptr %13, align 8, !tbaa !5
  call void @dsyswapr_(ptr noundef %1131, ptr noundef %1132, ptr noundef %1136, ptr noundef %1137, ptr noundef %29, ptr noundef %38)
  br label %1138

1138:                                             ; preds = %1130, %1126
  %1139 = load i32, ptr %29, align 4, !tbaa !9
  %1140 = load i32, ptr %38, align 4, !tbaa !9
  %1141 = icmp sgt i32 %1139, %1140
  br i1 %1141, label %1142, label %1150

1142:                                             ; preds = %1138
  %1143 = load ptr, ptr %10, align 8, !tbaa !5
  %1144 = load ptr, ptr %11, align 8, !tbaa !5
  %1145 = load ptr, ptr %12, align 8, !tbaa !5
  %1146 = load i32, ptr %20, align 4, !tbaa !9
  %1147 = sext i32 %1146 to i64
  %1148 = getelementptr inbounds double, ptr %1145, i64 %1147
  %1149 = load ptr, ptr %13, align 8, !tbaa !5
  call void @dsyswapr_(ptr noundef %1143, ptr noundef %1144, ptr noundef %1148, ptr noundef %1149, ptr noundef %38, ptr noundef %29)
  br label %1150

1150:                                             ; preds = %1142, %1138
  br label %1151

1151:                                             ; preds = %1150, %1121
  br label %1152

1152:                                             ; preds = %1151
  %1153 = load i32, ptr %29, align 4, !tbaa !9
  %1154 = add nsw i32 %1153, 1
  store i32 %1154, ptr %29, align 4, !tbaa !9
  br label %1104, !llvm.loop !37

1155:                                             ; preds = %1104
  br label %2199

1156:                                             ; preds = %220
  %1157 = load ptr, ptr %10, align 8, !tbaa !5
  %1158 = load ptr, ptr %11, align 8, !tbaa !5
  %1159 = load ptr, ptr %12, align 8, !tbaa !5
  %1160 = load i32, ptr %20, align 4, !tbaa !9
  %1161 = sext i32 %1160 to i64
  %1162 = getelementptr inbounds double, ptr %1159, i64 %1161
  %1163 = load ptr, ptr %13, align 8, !tbaa !5
  %1164 = load ptr, ptr %18, align 8, !tbaa !5
  %1165 = call i32 @dtrtri_(ptr noundef %1157, ptr noundef @.str, ptr noundef %1158, ptr noundef %1162, ptr noundef %1163, ptr noundef %1164)
  %1166 = load ptr, ptr %11, align 8, !tbaa !5
  %1167 = load i32, ptr %1166, align 4, !tbaa !9
  store i32 %1167, ptr %31, align 4, !tbaa !9
  br label %1168

1168:                                             ; preds = %1312, %1156
  %1169 = load i32, ptr %31, align 4, !tbaa !9
  %1170 = icmp sge i32 %1169, 1
  br i1 %1170, label %1171, label %1315

1171:                                             ; preds = %1168
  %1172 = load ptr, ptr %15, align 8, !tbaa !5
  %1173 = load i32, ptr %31, align 4, !tbaa !9
  %1174 = sext i32 %1173 to i64
  %1175 = getelementptr inbounds i32, ptr %1172, i64 %1174
  %1176 = load i32, ptr %1175, align 4, !tbaa !9
  %1177 = icmp sgt i32 %1176, 0
  br i1 %1177, label %1178, label %1206

1178:                                             ; preds = %1171
  %1179 = load ptr, ptr %12, align 8, !tbaa !5
  %1180 = load i32, ptr %31, align 4, !tbaa !9
  %1181 = load i32, ptr %31, align 4, !tbaa !9
  %1182 = load i32, ptr %19, align 4, !tbaa !9
  %1183 = mul nsw i32 %1181, %1182
  %1184 = add nsw i32 %1180, %1183
  %1185 = sext i32 %1184 to i64
  %1186 = getelementptr inbounds double, ptr %1179, i64 %1185
  %1187 = load double, ptr %1186, align 8, !tbaa !11
  %1188 = fdiv double 1.000000e+00, %1187
  %1189 = load ptr, ptr %16, align 8, !tbaa !5
  %1190 = load i32, ptr %31, align 4, !tbaa !9
  %1191 = load i32, ptr %26, align 4, !tbaa !9
  %1192 = load i32, ptr %21, align 4, !tbaa !9
  %1193 = mul nsw i32 %1191, %1192
  %1194 = add nsw i32 %1190, %1193
  %1195 = sext i32 %1194 to i64
  %1196 = getelementptr inbounds double, ptr %1189, i64 %1195
  store double %1188, ptr %1196, align 8, !tbaa !11
  %1197 = load ptr, ptr %16, align 8, !tbaa !5
  %1198 = load i32, ptr %31, align 4, !tbaa !9
  %1199 = load i32, ptr %26, align 4, !tbaa !9
  %1200 = add nsw i32 %1199, 1
  %1201 = load i32, ptr %21, align 4, !tbaa !9
  %1202 = mul nsw i32 %1200, %1201
  %1203 = add nsw i32 %1198, %1202
  %1204 = sext i32 %1203 to i64
  %1205 = getelementptr inbounds double, ptr %1197, i64 %1204
  store double 0.000000e+00, ptr %1205, align 8, !tbaa !11
  br label %1312

1206:                                             ; preds = %1171
  %1207 = load ptr, ptr %16, align 8, !tbaa !5
  %1208 = load i32, ptr %31, align 4, !tbaa !9
  %1209 = sub nsw i32 %1208, 1
  %1210 = load i32, ptr %21, align 4, !tbaa !9
  %1211 = add nsw i32 %1209, %1210
  %1212 = sext i32 %1211 to i64
  %1213 = getelementptr inbounds double, ptr %1207, i64 %1212
  %1214 = load double, ptr %1213, align 8, !tbaa !11
  store double %1214, ptr %32, align 8, !tbaa !11
  %1215 = load ptr, ptr %12, align 8, !tbaa !5
  %1216 = load i32, ptr %31, align 4, !tbaa !9
  %1217 = sub nsw i32 %1216, 1
  %1218 = load i32, ptr %31, align 4, !tbaa !9
  %1219 = sub nsw i32 %1218, 1
  %1220 = load i32, ptr %19, align 4, !tbaa !9
  %1221 = mul nsw i32 %1219, %1220
  %1222 = add nsw i32 %1217, %1221
  %1223 = sext i32 %1222 to i64
  %1224 = getelementptr inbounds double, ptr %1215, i64 %1223
  %1225 = load double, ptr %1224, align 8, !tbaa !11
  %1226 = load double, ptr %32, align 8, !tbaa !11
  %1227 = fdiv double %1225, %1226
  store double %1227, ptr %34, align 8, !tbaa !11
  %1228 = load ptr, ptr %12, align 8, !tbaa !5
  %1229 = load i32, ptr %31, align 4, !tbaa !9
  %1230 = load i32, ptr %31, align 4, !tbaa !9
  %1231 = load i32, ptr %19, align 4, !tbaa !9
  %1232 = mul nsw i32 %1230, %1231
  %1233 = add nsw i32 %1229, %1232
  %1234 = sext i32 %1233 to i64
  %1235 = getelementptr inbounds double, ptr %1228, i64 %1234
  %1236 = load double, ptr %1235, align 8, !tbaa !11
  %1237 = load double, ptr %32, align 8, !tbaa !11
  %1238 = fdiv double %1236, %1237
  store double %1238, ptr %42, align 8, !tbaa !11
  %1239 = load ptr, ptr %16, align 8, !tbaa !5
  %1240 = load i32, ptr %31, align 4, !tbaa !9
  %1241 = sub nsw i32 %1240, 1
  %1242 = load i32, ptr %21, align 4, !tbaa !9
  %1243 = add nsw i32 %1241, %1242
  %1244 = sext i32 %1243 to i64
  %1245 = getelementptr inbounds double, ptr %1239, i64 %1244
  %1246 = load double, ptr %1245, align 8, !tbaa !11
  %1247 = load double, ptr %32, align 8, !tbaa !11
  %1248 = fdiv double %1246, %1247
  store double %1248, ptr %27, align 8, !tbaa !11
  %1249 = load double, ptr %32, align 8, !tbaa !11
  %1250 = load double, ptr %34, align 8, !tbaa !11
  %1251 = load double, ptr %42, align 8, !tbaa !11
  %1252 = call double @llvm.fmuladd.f64(double %1250, double %1251, double -1.000000e+00)
  %1253 = fmul double %1249, %1252
  store double %1253, ptr %28, align 8, !tbaa !11
  %1254 = load double, ptr %42, align 8, !tbaa !11
  %1255 = load double, ptr %28, align 8, !tbaa !11
  %1256 = fdiv double %1254, %1255
  %1257 = load ptr, ptr %16, align 8, !tbaa !5
  %1258 = load i32, ptr %31, align 4, !tbaa !9
  %1259 = sub nsw i32 %1258, 1
  %1260 = load i32, ptr %26, align 4, !tbaa !9
  %1261 = load i32, ptr %21, align 4, !tbaa !9
  %1262 = mul nsw i32 %1260, %1261
  %1263 = add nsw i32 %1259, %1262
  %1264 = sext i32 %1263 to i64
  %1265 = getelementptr inbounds double, ptr %1257, i64 %1264
  store double %1256, ptr %1265, align 8, !tbaa !11
  %1266 = load double, ptr %34, align 8, !tbaa !11
  %1267 = load double, ptr %28, align 8, !tbaa !11
  %1268 = fdiv double %1266, %1267
  %1269 = load ptr, ptr %16, align 8, !tbaa !5
  %1270 = load i32, ptr %31, align 4, !tbaa !9
  %1271 = load i32, ptr %26, align 4, !tbaa !9
  %1272 = load i32, ptr %21, align 4, !tbaa !9
  %1273 = mul nsw i32 %1271, %1272
  %1274 = add nsw i32 %1270, %1273
  %1275 = sext i32 %1274 to i64
  %1276 = getelementptr inbounds double, ptr %1269, i64 %1275
  store double %1268, ptr %1276, align 8, !tbaa !11
  %1277 = load double, ptr %27, align 8, !tbaa !11
  %1278 = fneg double %1277
  %1279 = load double, ptr %28, align 8, !tbaa !11
  %1280 = fdiv double %1278, %1279
  %1281 = load ptr, ptr %16, align 8, !tbaa !5
  %1282 = load i32, ptr %31, align 4, !tbaa !9
  %1283 = load i32, ptr %26, align 4, !tbaa !9
  %1284 = add nsw i32 %1283, 1
  %1285 = load i32, ptr %21, align 4, !tbaa !9
  %1286 = mul nsw i32 %1284, %1285
  %1287 = add nsw i32 %1282, %1286
  %1288 = sext i32 %1287 to i64
  %1289 = getelementptr inbounds double, ptr %1281, i64 %1288
  store double %1280, ptr %1289, align 8, !tbaa !11
  %1290 = load ptr, ptr %16, align 8, !tbaa !5
  %1291 = load i32, ptr %31, align 4, !tbaa !9
  %1292 = load i32, ptr %26, align 4, !tbaa !9
  %1293 = add nsw i32 %1292, 1
  %1294 = load i32, ptr %21, align 4, !tbaa !9
  %1295 = mul nsw i32 %1293, %1294
  %1296 = add nsw i32 %1291, %1295
  %1297 = sext i32 %1296 to i64
  %1298 = getelementptr inbounds double, ptr %1290, i64 %1297
  %1299 = load double, ptr %1298, align 8, !tbaa !11
  %1300 = load ptr, ptr %16, align 8, !tbaa !5
  %1301 = load i32, ptr %31, align 4, !tbaa !9
  %1302 = sub nsw i32 %1301, 1
  %1303 = load i32, ptr %26, align 4, !tbaa !9
  %1304 = add nsw i32 %1303, 1
  %1305 = load i32, ptr %21, align 4, !tbaa !9
  %1306 = mul nsw i32 %1304, %1305
  %1307 = add nsw i32 %1302, %1306
  %1308 = sext i32 %1307 to i64
  %1309 = getelementptr inbounds double, ptr %1300, i64 %1308
  store double %1299, ptr %1309, align 8, !tbaa !11
  %1310 = load i32, ptr %31, align 4, !tbaa !9
  %1311 = add nsw i32 %1310, -1
  store i32 %1311, ptr %31, align 4, !tbaa !9
  br label %1312

1312:                                             ; preds = %1206, %1178
  %1313 = load i32, ptr %31, align 4, !tbaa !9
  %1314 = add nsw i32 %1313, -1
  store i32 %1314, ptr %31, align 4, !tbaa !9
  br label %1168, !llvm.loop !38

1315:                                             ; preds = %1168
  store i32 0, ptr %41, align 4, !tbaa !9
  br label %1316

1316:                                             ; preds = %2141, %1315
  %1317 = load i32, ptr %41, align 4, !tbaa !9
  %1318 = load ptr, ptr %11, align 8, !tbaa !5
  %1319 = load i32, ptr %1318, align 4, !tbaa !9
  %1320 = icmp slt i32 %1317, %1319
  br i1 %1320, label %1321, label %2145

1321:                                             ; preds = %1316
  %1322 = load ptr, ptr %17, align 8, !tbaa !5
  %1323 = load i32, ptr %1322, align 4, !tbaa !9
  store i32 %1323, ptr %40, align 4, !tbaa !9
  %1324 = load i32, ptr %41, align 4, !tbaa !9
  %1325 = load i32, ptr %40, align 4, !tbaa !9
  %1326 = add nsw i32 %1324, %1325
  %1327 = load ptr, ptr %11, align 8, !tbaa !5
  %1328 = load i32, ptr %1327, align 4, !tbaa !9
  %1329 = icmp sgt i32 %1326, %1328
  br i1 %1329, label %1330, label %1335

1330:                                             ; preds = %1321
  %1331 = load ptr, ptr %11, align 8, !tbaa !5
  %1332 = load i32, ptr %1331, align 4, !tbaa !9
  %1333 = load i32, ptr %41, align 4, !tbaa !9
  %1334 = sub nsw i32 %1332, %1333
  store i32 %1334, ptr %40, align 4, !tbaa !9
  br label %1367

1335:                                             ; preds = %1321
  store i32 0, ptr %39, align 4, !tbaa !9
  %1336 = load i32, ptr %41, align 4, !tbaa !9
  %1337 = load i32, ptr %40, align 4, !tbaa !9
  %1338 = add nsw i32 %1336, %1337
  store i32 %1338, ptr %23, align 4, !tbaa !9
  %1339 = load i32, ptr %41, align 4, !tbaa !9
  %1340 = add nsw i32 %1339, 1
  store i32 %1340, ptr %29, align 4, !tbaa !9
  br label %1341

1341:                                             ; preds = %1356, %1335
  %1342 = load i32, ptr %29, align 4, !tbaa !9
  %1343 = load i32, ptr %23, align 4, !tbaa !9
  %1344 = icmp sle i32 %1342, %1343
  br i1 %1344, label %1345, label %1359

1345:                                             ; preds = %1341
  %1346 = load ptr, ptr %15, align 8, !tbaa !5
  %1347 = load i32, ptr %29, align 4, !tbaa !9
  %1348 = sext i32 %1347 to i64
  %1349 = getelementptr inbounds i32, ptr %1346, i64 %1348
  %1350 = load i32, ptr %1349, align 4, !tbaa !9
  %1351 = icmp slt i32 %1350, 0
  br i1 %1351, label %1352, label %1355

1352:                                             ; preds = %1345
  %1353 = load i32, ptr %39, align 4, !tbaa !9
  %1354 = add nsw i32 %1353, 1
  store i32 %1354, ptr %39, align 4, !tbaa !9
  br label %1355

1355:                                             ; preds = %1352, %1345
  br label %1356

1356:                                             ; preds = %1355
  %1357 = load i32, ptr %29, align 4, !tbaa !9
  %1358 = add nsw i32 %1357, 1
  store i32 %1358, ptr %29, align 4, !tbaa !9
  br label %1341, !llvm.loop !39

1359:                                             ; preds = %1341
  %1360 = load i32, ptr %39, align 4, !tbaa !9
  %1361 = srem i32 %1360, 2
  %1362 = icmp eq i32 %1361, 1
  br i1 %1362, label %1363, label %1366

1363:                                             ; preds = %1359
  %1364 = load i32, ptr %40, align 4, !tbaa !9
  %1365 = add nsw i32 %1364, 1
  store i32 %1365, ptr %40, align 4, !tbaa !9
  br label %1366

1366:                                             ; preds = %1363, %1359
  br label %1367

1367:                                             ; preds = %1366, %1330
  %1368 = load ptr, ptr %11, align 8, !tbaa !5
  %1369 = load i32, ptr %1368, align 4, !tbaa !9
  %1370 = load i32, ptr %41, align 4, !tbaa !9
  %1371 = sub nsw i32 %1369, %1370
  %1372 = load i32, ptr %40, align 4, !tbaa !9
  %1373 = sub nsw i32 %1371, %1372
  store i32 %1373, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %29, align 4, !tbaa !9
  br label %1374

1374:                                             ; preds = %1412, %1367
  %1375 = load i32, ptr %29, align 4, !tbaa !9
  %1376 = load i32, ptr %23, align 4, !tbaa !9
  %1377 = icmp sle i32 %1375, %1376
  br i1 %1377, label %1378, label %1415

1378:                                             ; preds = %1374
  %1379 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %1379, ptr %24, align 4, !tbaa !9
  store i32 1, ptr %30, align 4, !tbaa !9
  br label %1380

1380:                                             ; preds = %1408, %1378
  %1381 = load i32, ptr %30, align 4, !tbaa !9
  %1382 = load i32, ptr %24, align 4, !tbaa !9
  %1383 = icmp sle i32 %1381, %1382
  br i1 %1383, label %1384, label %1411

1384:                                             ; preds = %1380
  %1385 = load ptr, ptr %12, align 8, !tbaa !5
  %1386 = load i32, ptr %41, align 4, !tbaa !9
  %1387 = load i32, ptr %40, align 4, !tbaa !9
  %1388 = add nsw i32 %1386, %1387
  %1389 = load i32, ptr %29, align 4, !tbaa !9
  %1390 = add nsw i32 %1388, %1389
  %1391 = load i32, ptr %41, align 4, !tbaa !9
  %1392 = load i32, ptr %30, align 4, !tbaa !9
  %1393 = add nsw i32 %1391, %1392
  %1394 = load i32, ptr %19, align 4, !tbaa !9
  %1395 = mul nsw i32 %1393, %1394
  %1396 = add nsw i32 %1390, %1395
  %1397 = sext i32 %1396 to i64
  %1398 = getelementptr inbounds double, ptr %1385, i64 %1397
  %1399 = load double, ptr %1398, align 8, !tbaa !11
  %1400 = load ptr, ptr %16, align 8, !tbaa !5
  %1401 = load i32, ptr %29, align 4, !tbaa !9
  %1402 = load i32, ptr %30, align 4, !tbaa !9
  %1403 = load i32, ptr %21, align 4, !tbaa !9
  %1404 = mul nsw i32 %1402, %1403
  %1405 = add nsw i32 %1401, %1404
  %1406 = sext i32 %1405 to i64
  %1407 = getelementptr inbounds double, ptr %1400, i64 %1406
  store double %1399, ptr %1407, align 8, !tbaa !11
  br label %1408

1408:                                             ; preds = %1384
  %1409 = load i32, ptr %30, align 4, !tbaa !9
  %1410 = add nsw i32 %1409, 1
  store i32 %1410, ptr %30, align 4, !tbaa !9
  br label %1380, !llvm.loop !40

1411:                                             ; preds = %1380
  br label %1412

1412:                                             ; preds = %1411
  %1413 = load i32, ptr %29, align 4, !tbaa !9
  %1414 = add nsw i32 %1413, 1
  store i32 %1414, ptr %29, align 4, !tbaa !9
  br label %1374, !llvm.loop !41

1415:                                             ; preds = %1374
  %1416 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %1416, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %29, align 4, !tbaa !9
  br label %1417

1417:                                             ; preds = %1488, %1415
  %1418 = load i32, ptr %29, align 4, !tbaa !9
  %1419 = load i32, ptr %23, align 4, !tbaa !9
  %1420 = icmp sle i32 %1418, %1419
  br i1 %1420, label %1421, label %1491

1421:                                             ; preds = %1417
  %1422 = load ptr, ptr %16, align 8, !tbaa !5
  %1423 = load i32, ptr %36, align 4, !tbaa !9
  %1424 = load i32, ptr %29, align 4, !tbaa !9
  %1425 = add nsw i32 %1423, %1424
  %1426 = load i32, ptr %29, align 4, !tbaa !9
  %1427 = load i32, ptr %21, align 4, !tbaa !9
  %1428 = mul nsw i32 %1426, %1427
  %1429 = add nsw i32 %1425, %1428
  %1430 = sext i32 %1429 to i64
  %1431 = getelementptr inbounds double, ptr %1422, i64 %1430
  store double 1.000000e+00, ptr %1431, align 8, !tbaa !11
  %1432 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %1432, ptr %24, align 4, !tbaa !9
  %1433 = load i32, ptr %29, align 4, !tbaa !9
  %1434 = add nsw i32 %1433, 1
  store i32 %1434, ptr %30, align 4, !tbaa !9
  br label %1435

1435:                                             ; preds = %1450, %1421
  %1436 = load i32, ptr %30, align 4, !tbaa !9
  %1437 = load i32, ptr %24, align 4, !tbaa !9
  %1438 = icmp sle i32 %1436, %1437
  br i1 %1438, label %1439, label %1453

1439:                                             ; preds = %1435
  %1440 = load ptr, ptr %16, align 8, !tbaa !5
  %1441 = load i32, ptr %36, align 4, !tbaa !9
  %1442 = load i32, ptr %29, align 4, !tbaa !9
  %1443 = add nsw i32 %1441, %1442
  %1444 = load i32, ptr %30, align 4, !tbaa !9
  %1445 = load i32, ptr %21, align 4, !tbaa !9
  %1446 = mul nsw i32 %1444, %1445
  %1447 = add nsw i32 %1443, %1446
  %1448 = sext i32 %1447 to i64
  %1449 = getelementptr inbounds double, ptr %1440, i64 %1448
  store double 0.000000e+00, ptr %1449, align 8, !tbaa !11
  br label %1450

1450:                                             ; preds = %1439
  %1451 = load i32, ptr %30, align 4, !tbaa !9
  %1452 = add nsw i32 %1451, 1
  store i32 %1452, ptr %30, align 4, !tbaa !9
  br label %1435, !llvm.loop !42

1453:                                             ; preds = %1435
  %1454 = load i32, ptr %29, align 4, !tbaa !9
  %1455 = sub nsw i32 %1454, 1
  store i32 %1455, ptr %24, align 4, !tbaa !9
  store i32 1, ptr %30, align 4, !tbaa !9
  br label %1456

1456:                                             ; preds = %1484, %1453
  %1457 = load i32, ptr %30, align 4, !tbaa !9
  %1458 = load i32, ptr %24, align 4, !tbaa !9
  %1459 = icmp sle i32 %1457, %1458
  br i1 %1459, label %1460, label %1487

1460:                                             ; preds = %1456
  %1461 = load ptr, ptr %12, align 8, !tbaa !5
  %1462 = load i32, ptr %41, align 4, !tbaa !9
  %1463 = load i32, ptr %29, align 4, !tbaa !9
  %1464 = add nsw i32 %1462, %1463
  %1465 = load i32, ptr %41, align 4, !tbaa !9
  %1466 = load i32, ptr %30, align 4, !tbaa !9
  %1467 = add nsw i32 %1465, %1466
  %1468 = load i32, ptr %19, align 4, !tbaa !9
  %1469 = mul nsw i32 %1467, %1468
  %1470 = add nsw i32 %1464, %1469
  %1471 = sext i32 %1470 to i64
  %1472 = getelementptr inbounds double, ptr %1461, i64 %1471
  %1473 = load double, ptr %1472, align 8, !tbaa !11
  %1474 = load ptr, ptr %16, align 8, !tbaa !5
  %1475 = load i32, ptr %36, align 4, !tbaa !9
  %1476 = load i32, ptr %29, align 4, !tbaa !9
  %1477 = add nsw i32 %1475, %1476
  %1478 = load i32, ptr %30, align 4, !tbaa !9
  %1479 = load i32, ptr %21, align 4, !tbaa !9
  %1480 = mul nsw i32 %1478, %1479
  %1481 = add nsw i32 %1477, %1480
  %1482 = sext i32 %1481 to i64
  %1483 = getelementptr inbounds double, ptr %1474, i64 %1482
  store double %1473, ptr %1483, align 8, !tbaa !11
  br label %1484

1484:                                             ; preds = %1460
  %1485 = load i32, ptr %30, align 4, !tbaa !9
  %1486 = add nsw i32 %1485, 1
  store i32 %1486, ptr %30, align 4, !tbaa !9
  br label %1456, !llvm.loop !43

1487:                                             ; preds = %1456
  br label %1488

1488:                                             ; preds = %1487
  %1489 = load i32, ptr %29, align 4, !tbaa !9
  %1490 = add nsw i32 %1489, 1
  store i32 %1490, ptr %29, align 4, !tbaa !9
  br label %1417, !llvm.loop !44

1491:                                             ; preds = %1417
  %1492 = load ptr, ptr %11, align 8, !tbaa !5
  %1493 = load i32, ptr %1492, align 4, !tbaa !9
  %1494 = load i32, ptr %41, align 4, !tbaa !9
  %1495 = sub nsw i32 %1493, %1494
  %1496 = load i32, ptr %40, align 4, !tbaa !9
  %1497 = sub nsw i32 %1495, %1496
  store i32 %1497, ptr %29, align 4, !tbaa !9
  br label %1498

1498:                                             ; preds = %1667, %1491
  %1499 = load i32, ptr %29, align 4, !tbaa !9
  %1500 = icmp sge i32 %1499, 1
  br i1 %1500, label %1501, label %1670

1501:                                             ; preds = %1498
  %1502 = load ptr, ptr %15, align 8, !tbaa !5
  %1503 = load i32, ptr %41, align 4, !tbaa !9
  %1504 = load i32, ptr %40, align 4, !tbaa !9
  %1505 = add nsw i32 %1503, %1504
  %1506 = load i32, ptr %29, align 4, !tbaa !9
  %1507 = add nsw i32 %1505, %1506
  %1508 = sext i32 %1507 to i64
  %1509 = getelementptr inbounds i32, ptr %1502, i64 %1508
  %1510 = load i32, ptr %1509, align 4, !tbaa !9
  %1511 = icmp sgt i32 %1510, 0
  br i1 %1511, label %1512, label %1554

1512:                                             ; preds = %1501
  %1513 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %1513, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %30, align 4, !tbaa !9
  br label %1514

1514:                                             ; preds = %1550, %1512
  %1515 = load i32, ptr %30, align 4, !tbaa !9
  %1516 = load i32, ptr %23, align 4, !tbaa !9
  %1517 = icmp sle i32 %1515, %1516
  br i1 %1517, label %1518, label %1553

1518:                                             ; preds = %1514
  %1519 = load ptr, ptr %16, align 8, !tbaa !5
  %1520 = load i32, ptr %41, align 4, !tbaa !9
  %1521 = load i32, ptr %40, align 4, !tbaa !9
  %1522 = add nsw i32 %1520, %1521
  %1523 = load i32, ptr %29, align 4, !tbaa !9
  %1524 = add nsw i32 %1522, %1523
  %1525 = load i32, ptr %26, align 4, !tbaa !9
  %1526 = load i32, ptr %21, align 4, !tbaa !9
  %1527 = mul nsw i32 %1525, %1526
  %1528 = add nsw i32 %1524, %1527
  %1529 = sext i32 %1528 to i64
  %1530 = getelementptr inbounds double, ptr %1519, i64 %1529
  %1531 = load double, ptr %1530, align 8, !tbaa !11
  %1532 = load ptr, ptr %16, align 8, !tbaa !5
  %1533 = load i32, ptr %29, align 4, !tbaa !9
  %1534 = load i32, ptr %30, align 4, !tbaa !9
  %1535 = load i32, ptr %21, align 4, !tbaa !9
  %1536 = mul nsw i32 %1534, %1535
  %1537 = add nsw i32 %1533, %1536
  %1538 = sext i32 %1537 to i64
  %1539 = getelementptr inbounds double, ptr %1532, i64 %1538
  %1540 = load double, ptr %1539, align 8, !tbaa !11
  %1541 = fmul double %1531, %1540
  %1542 = load ptr, ptr %16, align 8, !tbaa !5
  %1543 = load i32, ptr %29, align 4, !tbaa !9
  %1544 = load i32, ptr %30, align 4, !tbaa !9
  %1545 = load i32, ptr %21, align 4, !tbaa !9
  %1546 = mul nsw i32 %1544, %1545
  %1547 = add nsw i32 %1543, %1546
  %1548 = sext i32 %1547 to i64
  %1549 = getelementptr inbounds double, ptr %1542, i64 %1548
  store double %1541, ptr %1549, align 8, !tbaa !11
  br label %1550

1550:                                             ; preds = %1518
  %1551 = load i32, ptr %30, align 4, !tbaa !9
  %1552 = add nsw i32 %1551, 1
  store i32 %1552, ptr %30, align 4, !tbaa !9
  br label %1514, !llvm.loop !45

1553:                                             ; preds = %1514
  br label %1667

1554:                                             ; preds = %1501
  %1555 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %1555, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %30, align 4, !tbaa !9
  br label %1556

1556:                                             ; preds = %1661, %1554
  %1557 = load i32, ptr %30, align 4, !tbaa !9
  %1558 = load i32, ptr %23, align 4, !tbaa !9
  %1559 = icmp sle i32 %1557, %1558
  br i1 %1559, label %1560, label %1664

1560:                                             ; preds = %1556
  %1561 = load ptr, ptr %16, align 8, !tbaa !5
  %1562 = load i32, ptr %29, align 4, !tbaa !9
  %1563 = load i32, ptr %30, align 4, !tbaa !9
  %1564 = load i32, ptr %21, align 4, !tbaa !9
  %1565 = mul nsw i32 %1563, %1564
  %1566 = add nsw i32 %1562, %1565
  %1567 = sext i32 %1566 to i64
  %1568 = getelementptr inbounds double, ptr %1561, i64 %1567
  %1569 = load double, ptr %1568, align 8, !tbaa !11
  store double %1569, ptr %35, align 8, !tbaa !11
  %1570 = load ptr, ptr %16, align 8, !tbaa !5
  %1571 = load i32, ptr %29, align 4, !tbaa !9
  %1572 = sub nsw i32 %1571, 1
  %1573 = load i32, ptr %30, align 4, !tbaa !9
  %1574 = load i32, ptr %21, align 4, !tbaa !9
  %1575 = mul nsw i32 %1573, %1574
  %1576 = add nsw i32 %1572, %1575
  %1577 = sext i32 %1576 to i64
  %1578 = getelementptr inbounds double, ptr %1570, i64 %1577
  %1579 = load double, ptr %1578, align 8, !tbaa !11
  store double %1579, ptr %43, align 8, !tbaa !11
  %1580 = load ptr, ptr %16, align 8, !tbaa !5
  %1581 = load i32, ptr %41, align 4, !tbaa !9
  %1582 = load i32, ptr %40, align 4, !tbaa !9
  %1583 = add nsw i32 %1581, %1582
  %1584 = load i32, ptr %29, align 4, !tbaa !9
  %1585 = add nsw i32 %1583, %1584
  %1586 = load i32, ptr %26, align 4, !tbaa !9
  %1587 = load i32, ptr %21, align 4, !tbaa !9
  %1588 = mul nsw i32 %1586, %1587
  %1589 = add nsw i32 %1585, %1588
  %1590 = sext i32 %1589 to i64
  %1591 = getelementptr inbounds double, ptr %1580, i64 %1590
  %1592 = load double, ptr %1591, align 8, !tbaa !11
  %1593 = load double, ptr %35, align 8, !tbaa !11
  %1594 = load ptr, ptr %16, align 8, !tbaa !5
  %1595 = load i32, ptr %41, align 4, !tbaa !9
  %1596 = load i32, ptr %40, align 4, !tbaa !9
  %1597 = add nsw i32 %1595, %1596
  %1598 = load i32, ptr %29, align 4, !tbaa !9
  %1599 = add nsw i32 %1597, %1598
  %1600 = load i32, ptr %26, align 4, !tbaa !9
  %1601 = add nsw i32 %1600, 1
  %1602 = load i32, ptr %21, align 4, !tbaa !9
  %1603 = mul nsw i32 %1601, %1602
  %1604 = add nsw i32 %1599, %1603
  %1605 = sext i32 %1604 to i64
  %1606 = getelementptr inbounds double, ptr %1594, i64 %1605
  %1607 = load double, ptr %1606, align 8, !tbaa !11
  %1608 = load double, ptr %43, align 8, !tbaa !11
  %1609 = fmul double %1607, %1608
  %1610 = call double @llvm.fmuladd.f64(double %1592, double %1593, double %1609)
  %1611 = load ptr, ptr %16, align 8, !tbaa !5
  %1612 = load i32, ptr %29, align 4, !tbaa !9
  %1613 = load i32, ptr %30, align 4, !tbaa !9
  %1614 = load i32, ptr %21, align 4, !tbaa !9
  %1615 = mul nsw i32 %1613, %1614
  %1616 = add nsw i32 %1612, %1615
  %1617 = sext i32 %1616 to i64
  %1618 = getelementptr inbounds double, ptr %1611, i64 %1617
  store double %1610, ptr %1618, align 8, !tbaa !11
  %1619 = load ptr, ptr %16, align 8, !tbaa !5
  %1620 = load i32, ptr %41, align 4, !tbaa !9
  %1621 = load i32, ptr %40, align 4, !tbaa !9
  %1622 = add nsw i32 %1620, %1621
  %1623 = load i32, ptr %29, align 4, !tbaa !9
  %1624 = add nsw i32 %1622, %1623
  %1625 = sub nsw i32 %1624, 1
  %1626 = load i32, ptr %26, align 4, !tbaa !9
  %1627 = add nsw i32 %1626, 1
  %1628 = load i32, ptr %21, align 4, !tbaa !9
  %1629 = mul nsw i32 %1627, %1628
  %1630 = add nsw i32 %1625, %1629
  %1631 = sext i32 %1630 to i64
  %1632 = getelementptr inbounds double, ptr %1619, i64 %1631
  %1633 = load double, ptr %1632, align 8, !tbaa !11
  %1634 = load double, ptr %35, align 8, !tbaa !11
  %1635 = load ptr, ptr %16, align 8, !tbaa !5
  %1636 = load i32, ptr %41, align 4, !tbaa !9
  %1637 = load i32, ptr %40, align 4, !tbaa !9
  %1638 = add nsw i32 %1636, %1637
  %1639 = load i32, ptr %29, align 4, !tbaa !9
  %1640 = add nsw i32 %1638, %1639
  %1641 = sub nsw i32 %1640, 1
  %1642 = load i32, ptr %26, align 4, !tbaa !9
  %1643 = load i32, ptr %21, align 4, !tbaa !9
  %1644 = mul nsw i32 %1642, %1643
  %1645 = add nsw i32 %1641, %1644
  %1646 = sext i32 %1645 to i64
  %1647 = getelementptr inbounds double, ptr %1635, i64 %1646
  %1648 = load double, ptr %1647, align 8, !tbaa !11
  %1649 = load double, ptr %43, align 8, !tbaa !11
  %1650 = fmul double %1648, %1649
  %1651 = call double @llvm.fmuladd.f64(double %1633, double %1634, double %1650)
  %1652 = load ptr, ptr %16, align 8, !tbaa !5
  %1653 = load i32, ptr %29, align 4, !tbaa !9
  %1654 = sub nsw i32 %1653, 1
  %1655 = load i32, ptr %30, align 4, !tbaa !9
  %1656 = load i32, ptr %21, align 4, !tbaa !9
  %1657 = mul nsw i32 %1655, %1656
  %1658 = add nsw i32 %1654, %1657
  %1659 = sext i32 %1658 to i64
  %1660 = getelementptr inbounds double, ptr %1652, i64 %1659
  store double %1651, ptr %1660, align 8, !tbaa !11
  br label %1661

1661:                                             ; preds = %1560
  %1662 = load i32, ptr %30, align 4, !tbaa !9
  %1663 = add nsw i32 %1662, 1
  store i32 %1663, ptr %30, align 4, !tbaa !9
  br label %1556, !llvm.loop !46

1664:                                             ; preds = %1556
  %1665 = load i32, ptr %29, align 4, !tbaa !9
  %1666 = add nsw i32 %1665, -1
  store i32 %1666, ptr %29, align 4, !tbaa !9
  br label %1667

1667:                                             ; preds = %1664, %1553
  %1668 = load i32, ptr %29, align 4, !tbaa !9
  %1669 = add nsw i32 %1668, -1
  store i32 %1669, ptr %29, align 4, !tbaa !9
  br label %1498, !llvm.loop !47

1670:                                             ; preds = %1498
  %1671 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %1671, ptr %29, align 4, !tbaa !9
  br label %1672

1672:                                             ; preds = %1851, %1670
  %1673 = load i32, ptr %29, align 4, !tbaa !9
  %1674 = icmp sge i32 %1673, 1
  br i1 %1674, label %1675, label %1854

1675:                                             ; preds = %1672
  %1676 = load ptr, ptr %15, align 8, !tbaa !5
  %1677 = load i32, ptr %41, align 4, !tbaa !9
  %1678 = load i32, ptr %29, align 4, !tbaa !9
  %1679 = add nsw i32 %1677, %1678
  %1680 = sext i32 %1679 to i64
  %1681 = getelementptr inbounds i32, ptr %1676, i64 %1680
  %1682 = load i32, ptr %1681, align 4, !tbaa !9
  %1683 = icmp sgt i32 %1682, 0
  br i1 %1683, label %1684, label %1728

1684:                                             ; preds = %1675
  %1685 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %1685, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %30, align 4, !tbaa !9
  br label %1686

1686:                                             ; preds = %1724, %1684
  %1687 = load i32, ptr %30, align 4, !tbaa !9
  %1688 = load i32, ptr %23, align 4, !tbaa !9
  %1689 = icmp sle i32 %1687, %1688
  br i1 %1689, label %1690, label %1727

1690:                                             ; preds = %1686
  %1691 = load ptr, ptr %16, align 8, !tbaa !5
  %1692 = load i32, ptr %41, align 4, !tbaa !9
  %1693 = load i32, ptr %29, align 4, !tbaa !9
  %1694 = add nsw i32 %1692, %1693
  %1695 = load i32, ptr %26, align 4, !tbaa !9
  %1696 = load i32, ptr %21, align 4, !tbaa !9
  %1697 = mul nsw i32 %1695, %1696
  %1698 = add nsw i32 %1694, %1697
  %1699 = sext i32 %1698 to i64
  %1700 = getelementptr inbounds double, ptr %1691, i64 %1699
  %1701 = load double, ptr %1700, align 8, !tbaa !11
  %1702 = load ptr, ptr %16, align 8, !tbaa !5
  %1703 = load i32, ptr %36, align 4, !tbaa !9
  %1704 = load i32, ptr %29, align 4, !tbaa !9
  %1705 = add nsw i32 %1703, %1704
  %1706 = load i32, ptr %30, align 4, !tbaa !9
  %1707 = load i32, ptr %21, align 4, !tbaa !9
  %1708 = mul nsw i32 %1706, %1707
  %1709 = add nsw i32 %1705, %1708
  %1710 = sext i32 %1709 to i64
  %1711 = getelementptr inbounds double, ptr %1702, i64 %1710
  %1712 = load double, ptr %1711, align 8, !tbaa !11
  %1713 = fmul double %1701, %1712
  %1714 = load ptr, ptr %16, align 8, !tbaa !5
  %1715 = load i32, ptr %36, align 4, !tbaa !9
  %1716 = load i32, ptr %29, align 4, !tbaa !9
  %1717 = add nsw i32 %1715, %1716
  %1718 = load i32, ptr %30, align 4, !tbaa !9
  %1719 = load i32, ptr %21, align 4, !tbaa !9
  %1720 = mul nsw i32 %1718, %1719
  %1721 = add nsw i32 %1717, %1720
  %1722 = sext i32 %1721 to i64
  %1723 = getelementptr inbounds double, ptr %1714, i64 %1722
  store double %1713, ptr %1723, align 8, !tbaa !11
  br label %1724

1724:                                             ; preds = %1690
  %1725 = load i32, ptr %30, align 4, !tbaa !9
  %1726 = add nsw i32 %1725, 1
  store i32 %1726, ptr %30, align 4, !tbaa !9
  br label %1686, !llvm.loop !48

1727:                                             ; preds = %1686
  br label %1851

1728:                                             ; preds = %1675
  %1729 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %1729, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %30, align 4, !tbaa !9
  br label %1730

1730:                                             ; preds = %1845, %1728
  %1731 = load i32, ptr %30, align 4, !tbaa !9
  %1732 = load i32, ptr %23, align 4, !tbaa !9
  %1733 = icmp sle i32 %1731, %1732
  br i1 %1733, label %1734, label %1848

1734:                                             ; preds = %1730
  %1735 = load ptr, ptr %16, align 8, !tbaa !5
  %1736 = load i32, ptr %36, align 4, !tbaa !9
  %1737 = load i32, ptr %29, align 4, !tbaa !9
  %1738 = add nsw i32 %1736, %1737
  %1739 = load i32, ptr %30, align 4, !tbaa !9
  %1740 = load i32, ptr %21, align 4, !tbaa !9
  %1741 = mul nsw i32 %1739, %1740
  %1742 = add nsw i32 %1738, %1741
  %1743 = sext i32 %1742 to i64
  %1744 = getelementptr inbounds double, ptr %1735, i64 %1743
  %1745 = load double, ptr %1744, align 8, !tbaa !11
  store double %1745, ptr %37, align 8, !tbaa !11
  %1746 = load ptr, ptr %16, align 8, !tbaa !5
  %1747 = load i32, ptr %36, align 4, !tbaa !9
  %1748 = load i32, ptr %29, align 4, !tbaa !9
  %1749 = add nsw i32 %1747, %1748
  %1750 = sub nsw i32 %1749, 1
  %1751 = load i32, ptr %30, align 4, !tbaa !9
  %1752 = load i32, ptr %21, align 4, !tbaa !9
  %1753 = mul nsw i32 %1751, %1752
  %1754 = add nsw i32 %1750, %1753
  %1755 = sext i32 %1754 to i64
  %1756 = getelementptr inbounds double, ptr %1746, i64 %1755
  %1757 = load double, ptr %1756, align 8, !tbaa !11
  store double %1757, ptr %44, align 8, !tbaa !11
  %1758 = load ptr, ptr %16, align 8, !tbaa !5
  %1759 = load i32, ptr %41, align 4, !tbaa !9
  %1760 = load i32, ptr %29, align 4, !tbaa !9
  %1761 = add nsw i32 %1759, %1760
  %1762 = load i32, ptr %26, align 4, !tbaa !9
  %1763 = load i32, ptr %21, align 4, !tbaa !9
  %1764 = mul nsw i32 %1762, %1763
  %1765 = add nsw i32 %1761, %1764
  %1766 = sext i32 %1765 to i64
  %1767 = getelementptr inbounds double, ptr %1758, i64 %1766
  %1768 = load double, ptr %1767, align 8, !tbaa !11
  %1769 = load ptr, ptr %16, align 8, !tbaa !5
  %1770 = load i32, ptr %36, align 4, !tbaa !9
  %1771 = load i32, ptr %29, align 4, !tbaa !9
  %1772 = add nsw i32 %1770, %1771
  %1773 = load i32, ptr %30, align 4, !tbaa !9
  %1774 = load i32, ptr %21, align 4, !tbaa !9
  %1775 = mul nsw i32 %1773, %1774
  %1776 = add nsw i32 %1772, %1775
  %1777 = sext i32 %1776 to i64
  %1778 = getelementptr inbounds double, ptr %1769, i64 %1777
  %1779 = load double, ptr %1778, align 8, !tbaa !11
  %1780 = load ptr, ptr %16, align 8, !tbaa !5
  %1781 = load i32, ptr %41, align 4, !tbaa !9
  %1782 = load i32, ptr %29, align 4, !tbaa !9
  %1783 = add nsw i32 %1781, %1782
  %1784 = load i32, ptr %26, align 4, !tbaa !9
  %1785 = add nsw i32 %1784, 1
  %1786 = load i32, ptr %21, align 4, !tbaa !9
  %1787 = mul nsw i32 %1785, %1786
  %1788 = add nsw i32 %1783, %1787
  %1789 = sext i32 %1788 to i64
  %1790 = getelementptr inbounds double, ptr %1780, i64 %1789
  %1791 = load double, ptr %1790, align 8, !tbaa !11
  %1792 = load double, ptr %44, align 8, !tbaa !11
  %1793 = fmul double %1791, %1792
  %1794 = call double @llvm.fmuladd.f64(double %1768, double %1779, double %1793)
  %1795 = load ptr, ptr %16, align 8, !tbaa !5
  %1796 = load i32, ptr %36, align 4, !tbaa !9
  %1797 = load i32, ptr %29, align 4, !tbaa !9
  %1798 = add nsw i32 %1796, %1797
  %1799 = load i32, ptr %30, align 4, !tbaa !9
  %1800 = load i32, ptr %21, align 4, !tbaa !9
  %1801 = mul nsw i32 %1799, %1800
  %1802 = add nsw i32 %1798, %1801
  %1803 = sext i32 %1802 to i64
  %1804 = getelementptr inbounds double, ptr %1795, i64 %1803
  store double %1794, ptr %1804, align 8, !tbaa !11
  %1805 = load ptr, ptr %16, align 8, !tbaa !5
  %1806 = load i32, ptr %41, align 4, !tbaa !9
  %1807 = load i32, ptr %29, align 4, !tbaa !9
  %1808 = add nsw i32 %1806, %1807
  %1809 = sub nsw i32 %1808, 1
  %1810 = load i32, ptr %26, align 4, !tbaa !9
  %1811 = add nsw i32 %1810, 1
  %1812 = load i32, ptr %21, align 4, !tbaa !9
  %1813 = mul nsw i32 %1811, %1812
  %1814 = add nsw i32 %1809, %1813
  %1815 = sext i32 %1814 to i64
  %1816 = getelementptr inbounds double, ptr %1805, i64 %1815
  %1817 = load double, ptr %1816, align 8, !tbaa !11
  %1818 = load double, ptr %37, align 8, !tbaa !11
  %1819 = load ptr, ptr %16, align 8, !tbaa !5
  %1820 = load i32, ptr %41, align 4, !tbaa !9
  %1821 = load i32, ptr %29, align 4, !tbaa !9
  %1822 = add nsw i32 %1820, %1821
  %1823 = sub nsw i32 %1822, 1
  %1824 = load i32, ptr %26, align 4, !tbaa !9
  %1825 = load i32, ptr %21, align 4, !tbaa !9
  %1826 = mul nsw i32 %1824, %1825
  %1827 = add nsw i32 %1823, %1826
  %1828 = sext i32 %1827 to i64
  %1829 = getelementptr inbounds double, ptr %1819, i64 %1828
  %1830 = load double, ptr %1829, align 8, !tbaa !11
  %1831 = load double, ptr %44, align 8, !tbaa !11
  %1832 = fmul double %1830, %1831
  %1833 = call double @llvm.fmuladd.f64(double %1817, double %1818, double %1832)
  %1834 = load ptr, ptr %16, align 8, !tbaa !5
  %1835 = load i32, ptr %36, align 4, !tbaa !9
  %1836 = load i32, ptr %29, align 4, !tbaa !9
  %1837 = add nsw i32 %1835, %1836
  %1838 = sub nsw i32 %1837, 1
  %1839 = load i32, ptr %30, align 4, !tbaa !9
  %1840 = load i32, ptr %21, align 4, !tbaa !9
  %1841 = mul nsw i32 %1839, %1840
  %1842 = add nsw i32 %1838, %1841
  %1843 = sext i32 %1842 to i64
  %1844 = getelementptr inbounds double, ptr %1834, i64 %1843
  store double %1833, ptr %1844, align 8, !tbaa !11
  br label %1845

1845:                                             ; preds = %1734
  %1846 = load i32, ptr %30, align 4, !tbaa !9
  %1847 = add nsw i32 %1846, 1
  store i32 %1847, ptr %30, align 4, !tbaa !9
  br label %1730, !llvm.loop !49

1848:                                             ; preds = %1730
  %1849 = load i32, ptr %29, align 4, !tbaa !9
  %1850 = add nsw i32 %1849, -1
  store i32 %1850, ptr %29, align 4, !tbaa !9
  br label %1851

1851:                                             ; preds = %1848, %1727
  %1852 = load i32, ptr %29, align 4, !tbaa !9
  %1853 = add nsw i32 %1852, -1
  store i32 %1853, ptr %29, align 4, !tbaa !9
  br label %1672, !llvm.loop !50

1854:                                             ; preds = %1672
  %1855 = load ptr, ptr %11, align 8, !tbaa !5
  %1856 = load i32, ptr %1855, align 4, !tbaa !9
  %1857 = load ptr, ptr %17, align 8, !tbaa !5
  %1858 = load i32, ptr %1857, align 4, !tbaa !9
  %1859 = add nsw i32 %1856, %1858
  %1860 = add nsw i32 %1859, 1
  store i32 %1860, ptr %23, align 4, !tbaa !9
  %1861 = load ptr, ptr %10, align 8, !tbaa !5
  %1862 = load ptr, ptr %12, align 8, !tbaa !5
  %1863 = load i32, ptr %41, align 4, !tbaa !9
  %1864 = add nsw i32 %1863, 1
  %1865 = load i32, ptr %41, align 4, !tbaa !9
  %1866 = add nsw i32 %1865, 1
  %1867 = load i32, ptr %19, align 4, !tbaa !9
  %1868 = mul nsw i32 %1866, %1867
  %1869 = add nsw i32 %1864, %1868
  %1870 = sext i32 %1869 to i64
  %1871 = getelementptr inbounds double, ptr %1862, i64 %1870
  %1872 = load ptr, ptr %13, align 8, !tbaa !5
  %1873 = load ptr, ptr %16, align 8, !tbaa !5
  %1874 = load i32, ptr %36, align 4, !tbaa !9
  %1875 = add nsw i32 %1874, 1
  %1876 = load i32, ptr %21, align 4, !tbaa !9
  %1877 = add nsw i32 %1875, %1876
  %1878 = sext i32 %1877 to i64
  %1879 = getelementptr inbounds double, ptr %1873, i64 %1878
  call void @dtrmm_(ptr noundef @.str.1, ptr noundef %1861, ptr noundef @.str.3, ptr noundef @.str, ptr noundef %40, ptr noundef %40, ptr noundef @c_b10, ptr noundef %1871, ptr noundef %1872, ptr noundef %1879, ptr noundef %23)
  %1880 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %1880, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %29, align 4, !tbaa !9
  br label %1881

1881:                                             ; preds = %1919, %1854
  %1882 = load i32, ptr %29, align 4, !tbaa !9
  %1883 = load i32, ptr %23, align 4, !tbaa !9
  %1884 = icmp sle i32 %1882, %1883
  br i1 %1884, label %1885, label %1922

1885:                                             ; preds = %1881
  %1886 = load i32, ptr %29, align 4, !tbaa !9
  store i32 %1886, ptr %24, align 4, !tbaa !9
  store i32 1, ptr %30, align 4, !tbaa !9
  br label %1887

1887:                                             ; preds = %1915, %1885
  %1888 = load i32, ptr %30, align 4, !tbaa !9
  %1889 = load i32, ptr %24, align 4, !tbaa !9
  %1890 = icmp sle i32 %1888, %1889
  br i1 %1890, label %1891, label %1918

1891:                                             ; preds = %1887
  %1892 = load ptr, ptr %16, align 8, !tbaa !5
  %1893 = load i32, ptr %36, align 4, !tbaa !9
  %1894 = load i32, ptr %29, align 4, !tbaa !9
  %1895 = add nsw i32 %1893, %1894
  %1896 = load i32, ptr %30, align 4, !tbaa !9
  %1897 = load i32, ptr %21, align 4, !tbaa !9
  %1898 = mul nsw i32 %1896, %1897
  %1899 = add nsw i32 %1895, %1898
  %1900 = sext i32 %1899 to i64
  %1901 = getelementptr inbounds double, ptr %1892, i64 %1900
  %1902 = load double, ptr %1901, align 8, !tbaa !11
  %1903 = load ptr, ptr %12, align 8, !tbaa !5
  %1904 = load i32, ptr %41, align 4, !tbaa !9
  %1905 = load i32, ptr %29, align 4, !tbaa !9
  %1906 = add nsw i32 %1904, %1905
  %1907 = load i32, ptr %41, align 4, !tbaa !9
  %1908 = load i32, ptr %30, align 4, !tbaa !9
  %1909 = add nsw i32 %1907, %1908
  %1910 = load i32, ptr %19, align 4, !tbaa !9
  %1911 = mul nsw i32 %1909, %1910
  %1912 = add nsw i32 %1906, %1911
  %1913 = sext i32 %1912 to i64
  %1914 = getelementptr inbounds double, ptr %1903, i64 %1913
  store double %1902, ptr %1914, align 8, !tbaa !11
  br label %1915

1915:                                             ; preds = %1891
  %1916 = load i32, ptr %30, align 4, !tbaa !9
  %1917 = add nsw i32 %1916, 1
  store i32 %1917, ptr %30, align 4, !tbaa !9
  br label %1887, !llvm.loop !51

1918:                                             ; preds = %1887
  br label %1919

1919:                                             ; preds = %1918
  %1920 = load i32, ptr %29, align 4, !tbaa !9
  %1921 = add nsw i32 %1920, 1
  store i32 %1921, ptr %29, align 4, !tbaa !9
  br label %1881, !llvm.loop !52

1922:                                             ; preds = %1881
  %1923 = load i32, ptr %41, align 4, !tbaa !9
  %1924 = load i32, ptr %40, align 4, !tbaa !9
  %1925 = add nsw i32 %1923, %1924
  %1926 = load ptr, ptr %11, align 8, !tbaa !5
  %1927 = load i32, ptr %1926, align 4, !tbaa !9
  %1928 = icmp slt i32 %1925, %1927
  br i1 %1928, label %1929, label %2097

1929:                                             ; preds = %1922
  %1930 = load ptr, ptr %11, align 8, !tbaa !5
  %1931 = load i32, ptr %1930, align 4, !tbaa !9
  %1932 = load i32, ptr %40, align 4, !tbaa !9
  %1933 = sub nsw i32 %1931, %1932
  %1934 = load i32, ptr %41, align 4, !tbaa !9
  %1935 = sub nsw i32 %1933, %1934
  store i32 %1935, ptr %23, align 4, !tbaa !9
  %1936 = load ptr, ptr %11, align 8, !tbaa !5
  %1937 = load i32, ptr %1936, align 4, !tbaa !9
  %1938 = load ptr, ptr %17, align 8, !tbaa !5
  %1939 = load i32, ptr %1938, align 4, !tbaa !9
  %1940 = add nsw i32 %1937, %1939
  %1941 = add nsw i32 %1940, 1
  store i32 %1941, ptr %24, align 4, !tbaa !9
  %1942 = load ptr, ptr %11, align 8, !tbaa !5
  %1943 = load i32, ptr %1942, align 4, !tbaa !9
  %1944 = load ptr, ptr %17, align 8, !tbaa !5
  %1945 = load i32, ptr %1944, align 4, !tbaa !9
  %1946 = add nsw i32 %1943, %1945
  %1947 = add nsw i32 %1946, 1
  store i32 %1947, ptr %25, align 4, !tbaa !9
  %1948 = load ptr, ptr %12, align 8, !tbaa !5
  %1949 = load i32, ptr %41, align 4, !tbaa !9
  %1950 = load i32, ptr %40, align 4, !tbaa !9
  %1951 = add nsw i32 %1949, %1950
  %1952 = add nsw i32 %1951, 1
  %1953 = load i32, ptr %41, align 4, !tbaa !9
  %1954 = add nsw i32 %1953, 1
  %1955 = load i32, ptr %19, align 4, !tbaa !9
  %1956 = mul nsw i32 %1954, %1955
  %1957 = add nsw i32 %1952, %1956
  %1958 = sext i32 %1957 to i64
  %1959 = getelementptr inbounds double, ptr %1948, i64 %1958
  %1960 = load ptr, ptr %13, align 8, !tbaa !5
  %1961 = load ptr, ptr %16, align 8, !tbaa !5
  %1962 = load i32, ptr %22, align 4, !tbaa !9
  %1963 = sext i32 %1962 to i64
  %1964 = getelementptr inbounds double, ptr %1961, i64 %1963
  %1965 = load ptr, ptr %16, align 8, !tbaa !5
  %1966 = load i32, ptr %36, align 4, !tbaa !9
  %1967 = add nsw i32 %1966, 1
  %1968 = load i32, ptr %21, align 4, !tbaa !9
  %1969 = add nsw i32 %1967, %1968
  %1970 = sext i32 %1969 to i64
  %1971 = getelementptr inbounds double, ptr %1965, i64 %1970
  call void @dgemm_(ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef %40, ptr noundef %40, ptr noundef %23, ptr noundef @c_b10, ptr noundef %1959, ptr noundef %1960, ptr noundef %1964, ptr noundef %24, ptr noundef @c_b14, ptr noundef %1971, ptr noundef %25)
  %1972 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %1972, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %29, align 4, !tbaa !9
  br label %1973

1973:                                             ; preds = %2013, %1929
  %1974 = load i32, ptr %29, align 4, !tbaa !9
  %1975 = load i32, ptr %23, align 4, !tbaa !9
  %1976 = icmp sle i32 %1974, %1975
  br i1 %1976, label %1977, label %2016

1977:                                             ; preds = %1973
  %1978 = load i32, ptr %29, align 4, !tbaa !9
  store i32 %1978, ptr %24, align 4, !tbaa !9
  store i32 1, ptr %30, align 4, !tbaa !9
  br label %1979

1979:                                             ; preds = %2009, %1977
  %1980 = load i32, ptr %30, align 4, !tbaa !9
  %1981 = load i32, ptr %24, align 4, !tbaa !9
  %1982 = icmp sle i32 %1980, %1981
  br i1 %1982, label %1983, label %2012

1983:                                             ; preds = %1979
  %1984 = load ptr, ptr %16, align 8, !tbaa !5
  %1985 = load i32, ptr %36, align 4, !tbaa !9
  %1986 = load i32, ptr %29, align 4, !tbaa !9
  %1987 = add nsw i32 %1985, %1986
  %1988 = load i32, ptr %30, align 4, !tbaa !9
  %1989 = load i32, ptr %21, align 4, !tbaa !9
  %1990 = mul nsw i32 %1988, %1989
  %1991 = add nsw i32 %1987, %1990
  %1992 = sext i32 %1991 to i64
  %1993 = getelementptr inbounds double, ptr %1984, i64 %1992
  %1994 = load double, ptr %1993, align 8, !tbaa !11
  %1995 = load ptr, ptr %12, align 8, !tbaa !5
  %1996 = load i32, ptr %41, align 4, !tbaa !9
  %1997 = load i32, ptr %29, align 4, !tbaa !9
  %1998 = add nsw i32 %1996, %1997
  %1999 = load i32, ptr %41, align 4, !tbaa !9
  %2000 = load i32, ptr %30, align 4, !tbaa !9
  %2001 = add nsw i32 %1999, %2000
  %2002 = load i32, ptr %19, align 4, !tbaa !9
  %2003 = mul nsw i32 %2001, %2002
  %2004 = add nsw i32 %1998, %2003
  %2005 = sext i32 %2004 to i64
  %2006 = getelementptr inbounds double, ptr %1995, i64 %2005
  %2007 = load double, ptr %2006, align 8, !tbaa !11
  %2008 = fadd double %2007, %1994
  store double %2008, ptr %2006, align 8, !tbaa !11
  br label %2009

2009:                                             ; preds = %1983
  %2010 = load i32, ptr %30, align 4, !tbaa !9
  %2011 = add nsw i32 %2010, 1
  store i32 %2011, ptr %30, align 4, !tbaa !9
  br label %1979, !llvm.loop !53

2012:                                             ; preds = %1979
  br label %2013

2013:                                             ; preds = %2012
  %2014 = load i32, ptr %29, align 4, !tbaa !9
  %2015 = add nsw i32 %2014, 1
  store i32 %2015, ptr %29, align 4, !tbaa !9
  br label %1973, !llvm.loop !54

2016:                                             ; preds = %1973
  %2017 = load ptr, ptr %11, align 8, !tbaa !5
  %2018 = load i32, ptr %2017, align 4, !tbaa !9
  %2019 = load i32, ptr %40, align 4, !tbaa !9
  %2020 = sub nsw i32 %2018, %2019
  %2021 = load i32, ptr %41, align 4, !tbaa !9
  %2022 = sub nsw i32 %2020, %2021
  store i32 %2022, ptr %23, align 4, !tbaa !9
  %2023 = load ptr, ptr %11, align 8, !tbaa !5
  %2024 = load i32, ptr %2023, align 4, !tbaa !9
  %2025 = load ptr, ptr %17, align 8, !tbaa !5
  %2026 = load i32, ptr %2025, align 4, !tbaa !9
  %2027 = add nsw i32 %2024, %2026
  %2028 = add nsw i32 %2027, 1
  store i32 %2028, ptr %24, align 4, !tbaa !9
  %2029 = load ptr, ptr %10, align 8, !tbaa !5
  %2030 = load ptr, ptr %12, align 8, !tbaa !5
  %2031 = load i32, ptr %41, align 4, !tbaa !9
  %2032 = load i32, ptr %40, align 4, !tbaa !9
  %2033 = add nsw i32 %2031, %2032
  %2034 = add nsw i32 %2033, 1
  %2035 = load i32, ptr %41, align 4, !tbaa !9
  %2036 = load i32, ptr %40, align 4, !tbaa !9
  %2037 = add nsw i32 %2035, %2036
  %2038 = add nsw i32 %2037, 1
  %2039 = load i32, ptr %19, align 4, !tbaa !9
  %2040 = mul nsw i32 %2038, %2039
  %2041 = add nsw i32 %2034, %2040
  %2042 = sext i32 %2041 to i64
  %2043 = getelementptr inbounds double, ptr %2030, i64 %2042
  %2044 = load ptr, ptr %13, align 8, !tbaa !5
  %2045 = load ptr, ptr %16, align 8, !tbaa !5
  %2046 = load i32, ptr %22, align 4, !tbaa !9
  %2047 = sext i32 %2046 to i64
  %2048 = getelementptr inbounds double, ptr %2045, i64 %2047
  call void @dtrmm_(ptr noundef @.str.1, ptr noundef %2029, ptr noundef @.str.3, ptr noundef @.str, ptr noundef %23, ptr noundef %40, ptr noundef @c_b10, ptr noundef %2043, ptr noundef %2044, ptr noundef %2048, ptr noundef %24)
  %2049 = load ptr, ptr %11, align 8, !tbaa !5
  %2050 = load i32, ptr %2049, align 4, !tbaa !9
  %2051 = load i32, ptr %41, align 4, !tbaa !9
  %2052 = sub nsw i32 %2050, %2051
  %2053 = load i32, ptr %40, align 4, !tbaa !9
  %2054 = sub nsw i32 %2052, %2053
  store i32 %2054, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %29, align 4, !tbaa !9
  br label %2055

2055:                                             ; preds = %2093, %2016
  %2056 = load i32, ptr %29, align 4, !tbaa !9
  %2057 = load i32, ptr %23, align 4, !tbaa !9
  %2058 = icmp sle i32 %2056, %2057
  br i1 %2058, label %2059, label %2096

2059:                                             ; preds = %2055
  %2060 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %2060, ptr %24, align 4, !tbaa !9
  store i32 1, ptr %30, align 4, !tbaa !9
  br label %2061

2061:                                             ; preds = %2089, %2059
  %2062 = load i32, ptr %30, align 4, !tbaa !9
  %2063 = load i32, ptr %24, align 4, !tbaa !9
  %2064 = icmp sle i32 %2062, %2063
  br i1 %2064, label %2065, label %2092

2065:                                             ; preds = %2061
  %2066 = load ptr, ptr %16, align 8, !tbaa !5
  %2067 = load i32, ptr %29, align 4, !tbaa !9
  %2068 = load i32, ptr %30, align 4, !tbaa !9
  %2069 = load i32, ptr %21, align 4, !tbaa !9
  %2070 = mul nsw i32 %2068, %2069
  %2071 = add nsw i32 %2067, %2070
  %2072 = sext i32 %2071 to i64
  %2073 = getelementptr inbounds double, ptr %2066, i64 %2072
  %2074 = load double, ptr %2073, align 8, !tbaa !11
  %2075 = load ptr, ptr %12, align 8, !tbaa !5
  %2076 = load i32, ptr %41, align 4, !tbaa !9
  %2077 = load i32, ptr %40, align 4, !tbaa !9
  %2078 = add nsw i32 %2076, %2077
  %2079 = load i32, ptr %29, align 4, !tbaa !9
  %2080 = add nsw i32 %2078, %2079
  %2081 = load i32, ptr %41, align 4, !tbaa !9
  %2082 = load i32, ptr %30, align 4, !tbaa !9
  %2083 = add nsw i32 %2081, %2082
  %2084 = load i32, ptr %19, align 4, !tbaa !9
  %2085 = mul nsw i32 %2083, %2084
  %2086 = add nsw i32 %2080, %2085
  %2087 = sext i32 %2086 to i64
  %2088 = getelementptr inbounds double, ptr %2075, i64 %2087
  store double %2074, ptr %2088, align 8, !tbaa !11
  br label %2089

2089:                                             ; preds = %2065
  %2090 = load i32, ptr %30, align 4, !tbaa !9
  %2091 = add nsw i32 %2090, 1
  store i32 %2091, ptr %30, align 4, !tbaa !9
  br label %2061, !llvm.loop !55

2092:                                             ; preds = %2061
  br label %2093

2093:                                             ; preds = %2092
  %2094 = load i32, ptr %29, align 4, !tbaa !9
  %2095 = add nsw i32 %2094, 1
  store i32 %2095, ptr %29, align 4, !tbaa !9
  br label %2055, !llvm.loop !56

2096:                                             ; preds = %2055
  br label %2141

2097:                                             ; preds = %1922
  %2098 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %2098, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %29, align 4, !tbaa !9
  br label %2099

2099:                                             ; preds = %2137, %2097
  %2100 = load i32, ptr %29, align 4, !tbaa !9
  %2101 = load i32, ptr %23, align 4, !tbaa !9
  %2102 = icmp sle i32 %2100, %2101
  br i1 %2102, label %2103, label %2140

2103:                                             ; preds = %2099
  %2104 = load i32, ptr %29, align 4, !tbaa !9
  store i32 %2104, ptr %24, align 4, !tbaa !9
  store i32 1, ptr %30, align 4, !tbaa !9
  br label %2105

2105:                                             ; preds = %2133, %2103
  %2106 = load i32, ptr %30, align 4, !tbaa !9
  %2107 = load i32, ptr %24, align 4, !tbaa !9
  %2108 = icmp sle i32 %2106, %2107
  br i1 %2108, label %2109, label %2136

2109:                                             ; preds = %2105
  %2110 = load ptr, ptr %16, align 8, !tbaa !5
  %2111 = load i32, ptr %36, align 4, !tbaa !9
  %2112 = load i32, ptr %29, align 4, !tbaa !9
  %2113 = add nsw i32 %2111, %2112
  %2114 = load i32, ptr %30, align 4, !tbaa !9
  %2115 = load i32, ptr %21, align 4, !tbaa !9
  %2116 = mul nsw i32 %2114, %2115
  %2117 = add nsw i32 %2113, %2116
  %2118 = sext i32 %2117 to i64
  %2119 = getelementptr inbounds double, ptr %2110, i64 %2118
  %2120 = load double, ptr %2119, align 8, !tbaa !11
  %2121 = load ptr, ptr %12, align 8, !tbaa !5
  %2122 = load i32, ptr %41, align 4, !tbaa !9
  %2123 = load i32, ptr %29, align 4, !tbaa !9
  %2124 = add nsw i32 %2122, %2123
  %2125 = load i32, ptr %41, align 4, !tbaa !9
  %2126 = load i32, ptr %30, align 4, !tbaa !9
  %2127 = add nsw i32 %2125, %2126
  %2128 = load i32, ptr %19, align 4, !tbaa !9
  %2129 = mul nsw i32 %2127, %2128
  %2130 = add nsw i32 %2124, %2129
  %2131 = sext i32 %2130 to i64
  %2132 = getelementptr inbounds double, ptr %2121, i64 %2131
  store double %2120, ptr %2132, align 8, !tbaa !11
  br label %2133

2133:                                             ; preds = %2109
  %2134 = load i32, ptr %30, align 4, !tbaa !9
  %2135 = add nsw i32 %2134, 1
  store i32 %2135, ptr %30, align 4, !tbaa !9
  br label %2105, !llvm.loop !57

2136:                                             ; preds = %2105
  br label %2137

2137:                                             ; preds = %2136
  %2138 = load i32, ptr %29, align 4, !tbaa !9
  %2139 = add nsw i32 %2138, 1
  store i32 %2139, ptr %29, align 4, !tbaa !9
  br label %2099, !llvm.loop !58

2140:                                             ; preds = %2099
  br label %2141

2141:                                             ; preds = %2140, %2096
  %2142 = load i32, ptr %40, align 4, !tbaa !9
  %2143 = load i32, ptr %41, align 4, !tbaa !9
  %2144 = add nsw i32 %2143, %2142
  store i32 %2144, ptr %41, align 4, !tbaa !9
  br label %1316, !llvm.loop !59

2145:                                             ; preds = %1316
  %2146 = load ptr, ptr %11, align 8, !tbaa !5
  %2147 = load i32, ptr %2146, align 4, !tbaa !9
  store i32 %2147, ptr %29, align 4, !tbaa !9
  br label %2148

2148:                                             ; preds = %2195, %2145
  %2149 = load i32, ptr %29, align 4, !tbaa !9
  %2150 = icmp sge i32 %2149, 1
  br i1 %2150, label %2151, label %2198

2151:                                             ; preds = %2148
  %2152 = load ptr, ptr %15, align 8, !tbaa !5
  %2153 = load i32, ptr %29, align 4, !tbaa !9
  %2154 = sext i32 %2153 to i64
  %2155 = getelementptr inbounds i32, ptr %2152, i64 %2154
  %2156 = load i32, ptr %2155, align 4, !tbaa !9
  store i32 %2156, ptr %23, align 4, !tbaa !9
  %2157 = load i32, ptr %23, align 4, !tbaa !9
  %2158 = icmp sge i32 %2157, 0
  br i1 %2158, label %2159, label %2161

2159:                                             ; preds = %2151
  %2160 = load i32, ptr %23, align 4, !tbaa !9
  br label %2164

2161:                                             ; preds = %2151
  %2162 = load i32, ptr %23, align 4, !tbaa !9
  %2163 = sub nsw i32 0, %2162
  br label %2164

2164:                                             ; preds = %2161, %2159
  %2165 = phi i32 [ %2160, %2159 ], [ %2163, %2161 ]
  store i32 %2165, ptr %38, align 4, !tbaa !9
  %2166 = load i32, ptr %38, align 4, !tbaa !9
  %2167 = load i32, ptr %29, align 4, !tbaa !9
  %2168 = icmp ne i32 %2166, %2167
  br i1 %2168, label %2169, label %2194

2169:                                             ; preds = %2164
  %2170 = load i32, ptr %29, align 4, !tbaa !9
  %2171 = load i32, ptr %38, align 4, !tbaa !9
  %2172 = icmp slt i32 %2170, %2171
  br i1 %2172, label %2173, label %2181

2173:                                             ; preds = %2169
  %2174 = load ptr, ptr %10, align 8, !tbaa !5
  %2175 = load ptr, ptr %11, align 8, !tbaa !5
  %2176 = load ptr, ptr %12, align 8, !tbaa !5
  %2177 = load i32, ptr %20, align 4, !tbaa !9
  %2178 = sext i32 %2177 to i64
  %2179 = getelementptr inbounds double, ptr %2176, i64 %2178
  %2180 = load ptr, ptr %13, align 8, !tbaa !5
  call void @dsyswapr_(ptr noundef %2174, ptr noundef %2175, ptr noundef %2179, ptr noundef %2180, ptr noundef %29, ptr noundef %38)
  br label %2181

2181:                                             ; preds = %2173, %2169
  %2182 = load i32, ptr %29, align 4, !tbaa !9
  %2183 = load i32, ptr %38, align 4, !tbaa !9
  %2184 = icmp sgt i32 %2182, %2183
  br i1 %2184, label %2185, label %2193

2185:                                             ; preds = %2181
  %2186 = load ptr, ptr %10, align 8, !tbaa !5
  %2187 = load ptr, ptr %11, align 8, !tbaa !5
  %2188 = load ptr, ptr %12, align 8, !tbaa !5
  %2189 = load i32, ptr %20, align 4, !tbaa !9
  %2190 = sext i32 %2189 to i64
  %2191 = getelementptr inbounds double, ptr %2188, i64 %2190
  %2192 = load ptr, ptr %13, align 8, !tbaa !5
  call void @dsyswapr_(ptr noundef %2186, ptr noundef %2187, ptr noundef %2191, ptr noundef %2192, ptr noundef %38, ptr noundef %29)
  br label %2193

2193:                                             ; preds = %2185, %2181
  br label %2194

2194:                                             ; preds = %2193, %2164
  br label %2195

2195:                                             ; preds = %2194
  %2196 = load i32, ptr %29, align 4, !tbaa !9
  %2197 = add nsw i32 %2196, -1
  store i32 %2197, ptr %29, align 4, !tbaa !9
  br label %2148, !llvm.loop !60

2198:                                             ; preds = %2148
  br label %2199

2199:                                             ; preds = %2198, %1155
  store i32 1, ptr %45, align 4
  br label %2200

2200:                                             ; preds = %2199, %213, %176, %121, %112
  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 4, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #4
  ret void
}

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

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

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

declare i32 @dtrtri_(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 void @dtrmm_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

declare void @dsyswapr_(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 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !14}
!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}


; 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 [10 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b10 = external hidden global double, align 8
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b14 = external hidden global double, align 8

; Function Attrs: nounwind uwtable
define dso_local void @dsytri_3x_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr nocapture noundef readonly %4, ptr nocapture noundef readonly %5, ptr noundef %6, ptr nocapture noundef readonly %7, ptr noundef %8) local_unnamed_addr #0 {
  %10 = ptrtoint ptr %4 to i64
  %11 = ptrtoint ptr %6 to i64
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #5
  %19 = load i32, ptr %3, align 4, !tbaa !5
  %narrow = xor i32 %19, -1
  %20 = sext i32 %narrow to i64
  %21 = getelementptr inbounds double, ptr %2, i64 %20
  %22 = getelementptr inbounds i8, ptr %4, i64 -8
  %23 = getelementptr inbounds i8, ptr %5, i64 -4
  %24 = load i32, ptr %1, align 4, !tbaa !5
  %25 = load i32, ptr %7, align 4, !tbaa !5
  %26 = add i32 %25, %24
  %27 = add nsw i32 %26, 1
  %narrow689 = sub nsw i32 -2, %26
  %28 = sext i32 %narrow689 to i64
  %29 = getelementptr inbounds double, ptr %6, i64 %28
  store i32 0, ptr %8, align 4, !tbaa !5
  %30 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %.not = icmp eq i32 %30, 0
  br i1 %.not, label %31, label %33

31:                                               ; preds = %9
  %32 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #5
  %.not637 = icmp eq i32 %32, 0
  br i1 %.not637, label %.thread.sink.split, label %33

33:                                               ; preds = %31, %9
  %34 = load i32, ptr %1, align 4, !tbaa !5
  %35 = icmp slt i32 %34, 0
  br i1 %35, label %.thread.sink.split, label %36

36:                                               ; preds = %33
  %37 = load i32, ptr %3, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %34, i32 1)
  %38 = icmp slt i32 %37, %spec.select
  br i1 %38, label %.thread.sink.split, label %39

39:                                               ; preds = %36
  %.pr = load i32, ptr %8, align 4, !tbaa !5
  %.not638 = icmp eq i32 %.pr, 0
  br i1 %.not638, label %43, label %.thread

.thread.sink.split:                               ; preds = %36, %33, %31
  %.sink = phi i32 [ -1, %31 ], [ -2, %33 ], [ -4, %36 ]
  store i32 %.sink, ptr %8, align 4, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %39
  %40 = phi i32 [ %.pr, %39 ], [ %.sink, %.thread.sink.split ]
  %41 = sub nsw i32 0, %40
  store i32 %41, ptr %12, align 4, !tbaa !5
  %42 = call i32 @xerbla_(ptr noundef nonnull @.str.2, ptr noundef nonnull %12, i32 noundef 9) #5
  br label %.loopexit

43:                                               ; preds = %39
  %44 = icmp eq i32 %34, 0
  br i1 %44, label %.loopexit, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %43
  store i32 %34, ptr %12, align 4, !tbaa !5
  %45 = sext i32 %27 to i64
  %46 = add nuw i32 %34, 1
  %wide.trip.count = zext i32 %46 to i64
  %invariant.gep1196 = getelementptr double, ptr %29, i64 %45
  %47 = zext nneg i32 %34 to i64
  %min.iters.check = icmp ult i32 %34, 20
  br i1 %min.iters.check, label %.lr.ph.preheader1337, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph.preheader
  %48 = shl nsw i64 %45, 3
  %49 = add i64 %48, %11
  %50 = add i64 %49, -8
  %51 = sext i32 %26 to i64
  %52 = shl nsw i64 %51, 3
  %53 = add i64 %52, %10
  %54 = sub i64 %50, %53
  %diff.check = icmp ult i64 %54, 32
  br i1 %diff.check, label %.lr.ph.preheader1337, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %47, 2147483644
  %ind.end = or disjoint i64 %n.vec, 1
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = or disjoint i64 %index, 1
  %55 = getelementptr double, ptr %4, i64 %index
  %56 = getelementptr inbounds i8, ptr %55, i64 16
  %wide.load = load <2 x double>, ptr %55, align 8, !tbaa !9
  %wide.load1284 = load <2 x double>, ptr %56, align 8, !tbaa !9
  %57 = getelementptr double, ptr %invariant.gep1196, i64 %offset.idx
  %58 = getelementptr i8, ptr %57, i64 16
  store <2 x double> %wide.load, ptr %57, align 8, !tbaa !9
  store <2 x double> %wide.load1284, ptr %58, align 8, !tbaa !9
  %index.next = add nuw i64 %index, 4
  %59 = icmp eq i64 %index.next, %n.vec
  br i1 %59, label %middle.block, label %vector.body, !llvm.loop !11

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

.lr.ph.preheader1337:                             ; preds = %middle.block, %vector.memcheck, %.lr.ph.preheader
  %indvars.iv.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph.preheader ], [ %ind.end, %middle.block ]
  %60 = sub nsw i64 %wide.trip.count, %indvars.iv.ph
  %61 = zext nneg i32 %34 to i64
  %62 = sub nsw i64 %61, %indvars.iv.ph
  %xtraiter = and i64 %60, 3
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph.prol.loopexit, label %.lr.ph.prol

.lr.ph.prol:                                      ; preds = %.lr.ph.preheader1337, %.lr.ph.prol
  %indvars.iv.prol = phi i64 [ %indvars.iv.next.prol, %.lr.ph.prol ], [ %indvars.iv.ph, %.lr.ph.preheader1337 ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph.prol ], [ 0, %.lr.ph.preheader1337 ]
  %63 = getelementptr inbounds double, ptr %22, i64 %indvars.iv.prol
  %64 = load double, ptr %63, align 8, !tbaa !9
  %gep1197.prol = getelementptr double, ptr %invariant.gep1196, i64 %indvars.iv.prol
  store double %64, ptr %gep1197.prol, align 8, !tbaa !9
  %indvars.iv.next.prol = add nuw nsw i64 %indvars.iv.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %.lr.ph.prol.loopexit, label %.lr.ph.prol, !llvm.loop !15

.lr.ph.prol.loopexit:                             ; preds = %.lr.ph.prol, %.lr.ph.preheader1337
  %indvars.iv.unr = phi i64 [ %indvars.iv.ph, %.lr.ph.preheader1337 ], [ %indvars.iv.next.prol, %.lr.ph.prol ]
  %65 = icmp ult i64 %62, 3
  br i1 %65, label %._crit_edge, label %.lr.ph.preheader1337.new

.lr.ph.preheader1337.new:                         ; preds = %.lr.ph.prol.loopexit
  %invariant.gep1442 = getelementptr i8, ptr %invariant.gep1196, i64 8
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader1337.new
  %indvars.iv = phi i64 [ %indvars.iv.unr, %.lr.ph.preheader1337.new ], [ %indvars.iv.next.3, %.lr.ph ]
  %66 = getelementptr inbounds double, ptr %22, i64 %indvars.iv
  %67 = load double, ptr %66, align 8, !tbaa !9
  %gep1197 = getelementptr double, ptr %invariant.gep1196, i64 %indvars.iv
  store double %67, ptr %gep1197, align 8, !tbaa !9
  %68 = getelementptr double, ptr %4, i64 %indvars.iv
  %69 = load double, ptr %68, align 8, !tbaa !9
  %gep1443 = getelementptr double, ptr %invariant.gep1442, i64 %indvars.iv
  store double %69, ptr %gep1443, align 8, !tbaa !9
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %70 = getelementptr inbounds double, ptr %22, i64 %indvars.iv.next.1
  %71 = load double, ptr %70, align 8, !tbaa !9
  %gep1197.2 = getelementptr double, ptr %invariant.gep1196, i64 %indvars.iv.next.1
  store double %71, ptr %gep1197.2, align 8, !tbaa !9
  %indvars.iv.next.2 = add nuw nsw i64 %indvars.iv, 3
  %72 = getelementptr inbounds double, ptr %22, i64 %indvars.iv.next.2
  %73 = load double, ptr %72, align 8, !tbaa !9
  %gep1197.3 = getelementptr double, ptr %invariant.gep1196, i64 %indvars.iv.next.2
  store double %73, ptr %gep1197.3, align 8, !tbaa !9
  %indvars.iv.next.3 = add nuw nsw i64 %indvars.iv, 4
  %exitcond.not.3 = icmp eq i64 %indvars.iv.next.3, %wide.trip.count
  br i1 %exitcond.not.3, label %._crit_edge, label %.lr.ph, !llvm.loop !17

._crit_edge:                                      ; preds = %.lr.ph.prol.loopexit, %.lr.ph, %middle.block
  br i1 %.not, label %.lr.ph734, label %.lr.ph730

.lr.ph730:                                        ; preds = %._crit_edge
  store i32 %34, ptr %8, align 4, !tbaa !5
  %74 = add i32 %19, 1
  %75 = zext nneg i32 %34 to i64
  br label %76

76:                                               ; preds = %.lr.ph730, %87
  %indvars.iv973 = phi i64 [ %75, %.lr.ph730 ], [ %indvars.iv.next974, %87 ]
  %77 = getelementptr inbounds i32, ptr %23, i64 %indvars.iv973
  %78 = load i32, ptr %77, align 4, !tbaa !5
  %79 = icmp sgt i32 %78, 0
  br i1 %79, label %80, label %87

80:                                               ; preds = %76
  %81 = trunc nuw nsw i64 %indvars.iv973 to i32
  %82 = mul i32 %74, %81
  %83 = sext i32 %82 to i64
  %84 = getelementptr inbounds double, ptr %21, i64 %83
  %85 = load double, ptr %84, align 8, !tbaa !9
  %86 = fcmp oeq double %85, 0.000000e+00
  br i1 %86, label %.loopexit, label %87

87:                                               ; preds = %76, %80
  %indvars.iv.next974 = add nsw i64 %indvars.iv973, -1
  %88 = trunc nuw nsw i64 %indvars.iv.next974 to i32
  store i32 %88, ptr %8, align 4, !tbaa !5
  %89 = icmp sgt i64 %indvars.iv973, 1
  br i1 %89, label %76, label %.loopexit721, !llvm.loop !18

.lr.ph734:                                        ; preds = %._crit_edge
  store i32 %34, ptr %12, align 4, !tbaa !5
  store i32 1, ptr %8, align 4, !tbaa !5
  %90 = add i32 %19, 1
  %91 = add nuw i32 %34, 1
  %wide.trip.count979 = zext i32 %91 to i64
  br label %92

92:                                               ; preds = %.lr.ph734, %103
  %indvars.iv976 = phi i64 [ 1, %.lr.ph734 ], [ %indvars.iv.next977, %103 ]
  %93 = getelementptr inbounds i32, ptr %23, i64 %indvars.iv976
  %94 = load i32, ptr %93, align 4, !tbaa !5
  %95 = icmp sgt i32 %94, 0
  br i1 %95, label %96, label %103

96:                                               ; preds = %92
  %97 = trunc nuw nsw i64 %indvars.iv976 to i32
  %98 = mul i32 %90, %97
  %99 = sext i32 %98 to i64
  %100 = getelementptr inbounds double, ptr %21, i64 %99
  %101 = load double, ptr %100, align 8, !tbaa !9
  %102 = fcmp oeq double %101, 0.000000e+00
  br i1 %102, label %.loopexit, label %103

103:                                              ; preds = %92, %96
  %indvars.iv.next977 = add nuw nsw i64 %indvars.iv976, 1
  %104 = trunc nsw i64 %indvars.iv.next977 to i32
  store i32 %104, ptr %8, align 4, !tbaa !5
  %exitcond980.not = icmp eq i64 %indvars.iv.next977, %wide.trip.count979
  br i1 %exitcond980.not, label %.loopexit721, label %92, !llvm.loop !19

.loopexit721:                                     ; preds = %87, %103
  store i32 0, ptr %8, align 4, !tbaa !5
  %105 = load i32, ptr %1, align 4, !tbaa !5
  %106 = load i32, ptr %7, align 4, !tbaa !5
  %107 = add nsw i32 %106, 2
  %108 = tail call i32 @dtrtri_(ptr noundef %0, ptr noundef nonnull @.str, ptr noundef nonnull %1, ptr noundef %2, ptr noundef nonnull %3, ptr noundef nonnull %8) #5
  %109 = load i32, ptr %1, align 4, !tbaa !5
  br i1 %.not, label %492, label %110

110:                                              ; preds = %.loopexit721
  %.not672735 = icmp slt i32 %109, 1
  br i1 %.not672735, label %.loopexit, label %.lr.ph738

.lr.ph738:                                        ; preds = %110
  %111 = add i32 %19, 1
  %112 = mul nsw i32 %107, %27
  %113 = add nsw i32 %106, 3
  %114 = mul nsw i32 %113, %27
  br label %115

115:                                              ; preds = %.lr.ph738, %163
  %.1599736 = phi i32 [ 1, %.lr.ph738 ], [ %166, %163 ]
  %116 = sext i32 %.1599736 to i64
  %117 = getelementptr inbounds i32, ptr %23, i64 %116
  %118 = load i32, ptr %117, align 4, !tbaa !5
  %119 = icmp sgt i32 %118, 0
  br i1 %119, label %120, label %130

120:                                              ; preds = %115
  %121 = mul i32 %.1599736, %111
  %122 = sext i32 %121 to i64
  %123 = getelementptr inbounds double, ptr %21, i64 %122
  %124 = load double, ptr %123, align 8, !tbaa !9
  %125 = fdiv double 1.000000e+00, %124
  %126 = add nsw i32 %.1599736, %112
  %127 = sext i32 %126 to i64
  %128 = getelementptr inbounds double, ptr %29, i64 %127
  store double %125, ptr %128, align 8, !tbaa !9
  %129 = add nsw i32 %.1599736, %114
  br label %163

130:                                              ; preds = %115
  %131 = add nsw i32 %.1599736, 1
  %132 = add nsw i32 %131, %27
  %133 = sext i32 %132 to i64
  %134 = getelementptr inbounds double, ptr %29, i64 %133
  %135 = load double, ptr %134, align 8, !tbaa !9
  %136 = mul i32 %.1599736, %111
  %137 = sext i32 %136 to i64
  %138 = getelementptr inbounds double, ptr %21, i64 %137
  %139 = load double, ptr %138, align 8, !tbaa !9
  %140 = fdiv double %139, %135
  %141 = mul i32 %131, %111
  %142 = sext i32 %141 to i64
  %143 = getelementptr inbounds double, ptr %21, i64 %142
  %144 = load double, ptr %143, align 8, !tbaa !9
  %145 = fdiv double %144, %135
  %146 = tail call double @llvm.fmuladd.f64(double %140, double %145, double -1.000000e+00)
  %147 = fmul double %135, %146
  %148 = fdiv double %145, %147
  %149 = add nsw i32 %.1599736, %112
  %150 = sext i32 %149 to i64
  %151 = getelementptr inbounds double, ptr %29, i64 %150
  store double %148, ptr %151, align 8, !tbaa !9
  %152 = fdiv double %140, %147
  %153 = add nsw i32 %131, %114
  %154 = sext i32 %153 to i64
  %155 = getelementptr inbounds double, ptr %29, i64 %154
  store double %152, ptr %155, align 8, !tbaa !9
  %156 = fneg double %135
  %157 = fdiv double %156, %135
  %158 = fdiv double %157, %147
  %159 = add nsw i32 %.1599736, %114
  %160 = sext i32 %159 to i64
  %161 = getelementptr inbounds double, ptr %29, i64 %160
  store double %158, ptr %161, align 8, !tbaa !9
  %162 = add nsw i32 %131, %112
  br label %163

163:                                              ; preds = %130, %120
  %.sink1265 = phi i32 [ %162, %130 ], [ %129, %120 ]
  %.sink1262 = phi double [ %158, %130 ], [ 0.000000e+00, %120 ]
  %.2600 = phi i32 [ %131, %130 ], [ %.1599736, %120 ]
  %164 = sext i32 %.sink1265 to i64
  %165 = getelementptr inbounds double, ptr %29, i64 %164
  store double %.sink1262, ptr %165, align 8, !tbaa !9
  %166 = add nsw i32 %.2600, 1
  %.not672.not = icmp slt i32 %.2600, %109
  br i1 %.not672.not, label %115, label %._crit_edge739, !llvm.loop !20

._crit_edge739:                                   ; preds = %163
  %invariant.gep = getelementptr i8, ptr %21, i64 8
  %167 = mul nsw i32 %107, %27
  %168 = add nsw i32 %106, 3
  %169 = mul nsw i32 %168, %27
  %170 = add i32 %19, 1
  %171 = add i32 %26, 2
  %172 = add i32 %171, %105
  %173 = sext i32 %172 to i64
  %174 = getelementptr inbounds double, ptr %29, i64 %173
  %175 = sext i32 %27 to i64
  %176 = sext i32 %105 to i64
  %177 = sext i32 %19 to i64
  %invariant.gep1214 = getelementptr double, ptr %29, i64 %176
  %invariant.gep1218 = getelementptr double, ptr %29, i64 %176
  br label %178

thread-pre-split707:                              ; preds = %._crit_edge821, %.lr.ph825.split.us.preheader
  %.us-phi827 = phi i32 [ %463, %.lr.ph825.split.us.preheader ], [ %460, %._crit_edge821 ]
  store i32 %458, ptr %13, align 4, !tbaa !5
  store i32 %.us-phi827, ptr %15, align 4, !tbaa !5
  br label %178

178:                                              ; preds = %thread-pre-split707, %._crit_edge739
  %179 = phi i32 [ %109, %._crit_edge739 ], [ %457, %thread-pre-split707 ]
  %180 = load i32, ptr %7, align 4, !tbaa !5
  store i32 %180, ptr %17, align 4, !tbaa !5
  %.not676 = icmp sgt i32 %179, %180
  br i1 %.not676, label %182, label %181

181:                                              ; preds = %178
  store i32 %179, ptr %17, align 4, !tbaa !5
  br label %._crit_edge745.thread

182:                                              ; preds = %178
  store i32 %179, ptr %12, align 4, !tbaa !5
  %183 = add nuw nsw i32 %179, 1
  %184 = sub i32 %183, %180
  %.not678740 = icmp sgt i32 %184, %179
  br i1 %.not678740, label %._crit_edge745.thread, label %.lr.ph744.preheader

.lr.ph744.preheader:                              ; preds = %182
  %185 = sext i32 %184 to i64
  %186 = add i32 %180, -1
  %187 = zext i32 %186 to i64
  %188 = add nuw nsw i64 %187, 1
  %min.iters.check1287 = icmp ult i32 %186, 7
  br i1 %min.iters.check1287, label %.lr.ph744.preheader1329, label %vector.ph1288

vector.ph1288:                                    ; preds = %.lr.ph744.preheader
  %n.vec1290 = and i64 %188, 8589934584
  %ind.end1291 = add nsw i64 %n.vec1290, %185
  %invariant.gep1444 = getelementptr i32, ptr %23, i64 %185
  br label %vector.body1293

vector.body1293:                                  ; preds = %vector.body1293, %vector.ph1288
  %index1294 = phi i64 [ 0, %vector.ph1288 ], [ %index.next1299, %vector.body1293 ]
  %vec.phi = phi <4 x i32> [ zeroinitializer, %vector.ph1288 ], [ %192, %vector.body1293 ]
  %vec.phi1295 = phi <4 x i32> [ zeroinitializer, %vector.ph1288 ], [ %193, %vector.body1293 ]
  %gep1445 = getelementptr i32, ptr %invariant.gep1444, i64 %index1294
  %189 = getelementptr inbounds i8, ptr %gep1445, i64 16
  %wide.load1297 = load <4 x i32>, ptr %gep1445, align 4, !tbaa !5
  %wide.load1298 = load <4 x i32>, ptr %189, align 4, !tbaa !5
  %190 = lshr <4 x i32> %wide.load1297, <i32 31, i32 31, i32 31, i32 31>
  %191 = lshr <4 x i32> %wide.load1298, <i32 31, i32 31, i32 31, i32 31>
  %192 = add <4 x i32> %190, %vec.phi
  %193 = add <4 x i32> %191, %vec.phi1295
  %index.next1299 = add nuw i64 %index1294, 8
  %194 = icmp eq i64 %index.next1299, %n.vec1290
  br i1 %194, label %middle.block1285, label %vector.body1293, !llvm.loop !21

middle.block1285:                                 ; preds = %vector.body1293
  %bin.rdx = add <4 x i32> %193, %192
  %195 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %bin.rdx)
  %cmp.n1300 = icmp eq i64 %188, %n.vec1290
  br i1 %cmp.n1300, label %._crit_edge745, label %.lr.ph744.preheader1329

.lr.ph744.preheader1329:                          ; preds = %middle.block1285, %.lr.ph744.preheader
  %indvars.iv981.ph = phi i64 [ %185, %.lr.ph744.preheader ], [ %ind.end1291, %middle.block1285 ]
  %.0742.ph = phi i32 [ 0, %.lr.ph744.preheader ], [ %195, %middle.block1285 ]
  br label %.lr.ph744

.lr.ph744:                                        ; preds = %.lr.ph744.preheader1329, %.lr.ph744
  %indvars.iv981 = phi i64 [ %indvars.iv.next982, %.lr.ph744 ], [ %indvars.iv981.ph, %.lr.ph744.preheader1329 ]
  %.0742 = phi i32 [ %spec.select704, %.lr.ph744 ], [ %.0742.ph, %.lr.ph744.preheader1329 ]
  %196 = getelementptr inbounds i32, ptr %23, i64 %indvars.iv981
  %197 = load i32, ptr %196, align 4, !tbaa !5
  %198 = lshr i32 %197, 31
  %spec.select704 = add i32 %198, %.0742
  %indvars.iv.next982 = add nsw i64 %indvars.iv981, 1
  %lftr.wideiv = trunc i64 %indvars.iv.next982 to i32
  %exitcond984.not = icmp eq i32 %183, %lftr.wideiv
  br i1 %exitcond984.not, label %._crit_edge745, label %.lr.ph744, !llvm.loop !22

._crit_edge745:                                   ; preds = %.lr.ph744, %middle.block1285
  %spec.select704.lcssa = phi i32 [ %195, %middle.block1285 ], [ %spec.select704, %.lr.ph744 ]
  %199 = and i32 %spec.select704.lcssa, -2147483647
  %200 = icmp eq i32 %199, 1
  br i1 %200, label %201, label %._crit_edge745.thread

201:                                              ; preds = %._crit_edge745
  %202 = add nsw i32 %180, 1
  store i32 %202, ptr %17, align 4, !tbaa !5
  br label %._crit_edge745.thread

._crit_edge745.thread:                            ; preds = %182, %._crit_edge745, %201, %181
  %203 = phi i32 [ %180, %._crit_edge745 ], [ %202, %201 ], [ %179, %181 ], [ %180, %182 ]
  %204 = sub nsw i32 %179, %203
  store i32 %204, ptr %18, align 4, !tbaa !5
  %.not680753 = icmp slt i32 %204, 1
  br i1 %.not680753, label %233, label %.lr.ph756

.lr.ph756:                                        ; preds = %._crit_edge745.thread
  %.not703748 = icmp slt i32 %203, 1
  br i1 %.not703748, label %.lr.ph756.split.us.preheader, label %.lr.ph751.preheader

.lr.ph751.preheader:                              ; preds = %.lr.ph756
  %205 = add nuw i32 %179, 1
  %206 = sub i32 %205, %203
  %wide.trip.count993 = zext i32 %206 to i64
  %207 = zext nneg i32 %203 to i64
  %xtraiter1338 = and i64 %207, 1
  %208 = icmp eq i32 %203, 1
  %unroll_iter = and i64 %207, 2147483646
  %lcmp.mod1339.not = icmp eq i64 %xtraiter1338, 0
  br label %.lr.ph751

.lr.ph756.split.us.preheader:                     ; preds = %.lr.ph756
  %209 = add nuw i32 %179, 1
  %210 = sub i32 %209, %203
  br label %._crit_edge757

.lr.ph751:                                        ; preds = %.lr.ph751.preheader, %._crit_edge752
  %indvars.iv990 = phi i64 [ 1, %.lr.ph751.preheader ], [ %indvars.iv.next991, %._crit_edge752 ]
  %211 = getelementptr double, ptr %21, i64 %indvars.iv990
  %invariant.gep1198 = getelementptr double, ptr %29, i64 %indvars.iv990
  br i1 %208, label %._crit_edge752.unr-lcssa, label %.lr.ph751.new

.lr.ph751.new:                                    ; preds = %.lr.ph751, %.lr.ph751.new
  %indvars.iv985 = phi i64 [ %indvars.iv.next986.1, %.lr.ph751.new ], [ 1, %.lr.ph751 ]
  %niter = phi i64 [ %niter.next.1, %.lr.ph751.new ], [ 0, %.lr.ph751 ]
  %212 = trunc nuw nsw i64 %indvars.iv985 to i32
  %213 = add nuw nsw i32 %204, %212
  %214 = mul nsw i32 %213, %19
  %215 = sext i32 %214 to i64
  %216 = getelementptr double, ptr %211, i64 %215
  %217 = load double, ptr %216, align 8, !tbaa !9
  %218 = mul nsw i64 %indvars.iv985, %175
  %gep1199 = getelementptr double, ptr %invariant.gep1198, i64 %218
  store double %217, ptr %gep1199, align 8, !tbaa !9
  %indvars.iv.next986 = add nuw nsw i64 %indvars.iv985, 1
  %219 = trunc nuw nsw i64 %indvars.iv.next986 to i32
  %220 = add nuw nsw i32 %204, %219
  %221 = mul nsw i32 %220, %19
  %222 = sext i32 %221 to i64
  %223 = getelementptr double, ptr %211, i64 %222
  %224 = load double, ptr %223, align 8, !tbaa !9
  %225 = mul nsw i64 %indvars.iv.next986, %175
  %gep1199.1 = getelementptr double, ptr %invariant.gep1198, i64 %225
  store double %224, ptr %gep1199.1, align 8, !tbaa !9
  %indvars.iv.next986.1 = add nuw nsw i64 %indvars.iv985, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge752.unr-lcssa, label %.lr.ph751.new, !llvm.loop !23

._crit_edge752.unr-lcssa:                         ; preds = %.lr.ph751.new, %.lr.ph751
  %indvars.iv985.unr = phi i64 [ 1, %.lr.ph751 ], [ %indvars.iv.next986.1, %.lr.ph751.new ]
  br i1 %lcmp.mod1339.not, label %._crit_edge752, label %._crit_edge752.epilog-lcssa

._crit_edge752.epilog-lcssa:                      ; preds = %._crit_edge752.unr-lcssa
  %226 = trunc nuw nsw i64 %indvars.iv985.unr to i32
  %227 = add nuw nsw i32 %204, %226
  %228 = mul nsw i32 %227, %19
  %229 = sext i32 %228 to i64
  %230 = getelementptr double, ptr %211, i64 %229
  %231 = load double, ptr %230, align 8, !tbaa !9
  %232 = mul nsw i64 %indvars.iv985.unr, %175
  %gep1199.epil = getelementptr double, ptr %invariant.gep1198, i64 %232
  store double %231, ptr %gep1199.epil, align 8, !tbaa !9
  br label %._crit_edge752

._crit_edge752:                                   ; preds = %._crit_edge752.unr-lcssa, %._crit_edge752.epilog-lcssa
  %indvars.iv.next991 = add nuw nsw i64 %indvars.iv990, 1
  %exitcond994.not = icmp eq i64 %indvars.iv.next991, %wide.trip.count993
  br i1 %exitcond994.not, label %._crit_edge757, label %.lr.ph751, !llvm.loop !24

._crit_edge757:                                   ; preds = %._crit_edge752, %.lr.ph756.split.us.preheader
  %.us-phi = phi i32 [ %210, %.lr.ph756.split.us.preheader ], [ %206, %._crit_edge752 ]
  store i32 %203, ptr %13, align 4, !tbaa !5
  br label %233

233:                                              ; preds = %._crit_edge757, %._crit_edge745.thread
  %storemerge679.lcssa = phi i32 [ %.us-phi, %._crit_edge757 ], [ 1, %._crit_edge745.thread ]
  store i32 %storemerge679.lcssa, ptr %15, align 4, !tbaa !5
  %.not682769 = icmp slt i32 %203, 1
  br i1 %.not682769, label %.preheader720, label %.lr.ph772.preheader

.lr.ph772.preheader:                              ; preds = %233
  %234 = zext nneg i32 %203 to i64
  %235 = add nuw i32 %203, 1
  %wide.trip.count1008 = zext i32 %235 to i64
  %wide.trip.count1005 = zext nneg i32 %203 to i64
  br label %.lr.ph772

..preheader720_crit_edge:                         ; preds = %._crit_edge768
  store i32 %203, ptr %13, align 4, !tbaa !5
  br label %.preheader720

.preheader720:                                    ; preds = %..preheader720_crit_edge, %233
  br i1 %.not680753, label %.preheader719, label %.lr.ph786

.lr.ph786:                                        ; preds = %.preheader720
  %236 = add i32 %203, 1
  %wide.trip.count1013 = zext i32 %236 to i64
  %237 = add nsw i64 %wide.trip.count1013, -1
  %xtraiter1345 = and i64 %237, 1
  %238 = icmp eq i32 %236, 2
  %unroll_iter1348 = and i64 %237, -2
  %lcmp.mod1347.not = icmp eq i64 %xtraiter1345, 0
  br label %262

.lr.ph772:                                        ; preds = %.lr.ph772.preheader, %._crit_edge768
  %indvar = phi i64 [ 0, %.lr.ph772.preheader ], [ %indvar.next, %._crit_edge768 ]
  %indvars.iv1000 = phi i64 [ 1, %.lr.ph772.preheader ], [ %indvars.iv.next1001, %._crit_edge768 ]
  %239 = add nsw i64 %indvars.iv1000, %176
  %240 = mul nsw i64 %indvars.iv1000, %175
  %241 = getelementptr double, ptr %29, i64 %239
  %242 = getelementptr double, ptr %241, i64 %240
  store double 1.000000e+00, ptr %242, align 8, !tbaa !9
  %.not701.not759 = icmp ugt i64 %indvars.iv1000, 1
  br i1 %.not701.not759, label %.lr.ph762.preheader, label %._crit_edge763

.lr.ph762.preheader:                              ; preds = %.lr.ph772
  %243 = add i64 %indvar, -1
  %invariant.gep1200 = getelementptr double, ptr %29, i64 %239
  %xtraiter1340 = and i64 %indvar, 3
  %244 = icmp ult i64 %243, 3
  br i1 %244, label %._crit_edge763.loopexit.unr-lcssa, label %.lr.ph762.preheader.new

.lr.ph762.preheader.new:                          ; preds = %.lr.ph762.preheader
  %unroll_iter1342 = and i64 %indvar, -4
  br label %.lr.ph762

.lr.ph762:                                        ; preds = %.lr.ph762, %.lr.ph762.preheader.new
  %indvars.iv995 = phi i64 [ 1, %.lr.ph762.preheader.new ], [ %indvars.iv.next996.3, %.lr.ph762 ]
  %niter1343 = phi i64 [ 0, %.lr.ph762.preheader.new ], [ %niter1343.next.3, %.lr.ph762 ]
  %245 = mul nsw i64 %indvars.iv995, %175
  %gep1201 = getelementptr double, ptr %invariant.gep1200, i64 %245
  store double 0.000000e+00, ptr %gep1201, align 8, !tbaa !9
  %indvars.iv.next996 = add nuw nsw i64 %indvars.iv995, 1
  %246 = mul nsw i64 %indvars.iv.next996, %175
  %gep1201.1 = getelementptr double, ptr %invariant.gep1200, i64 %246
  store double 0.000000e+00, ptr %gep1201.1, align 8, !tbaa !9
  %indvars.iv.next996.1 = add nuw nsw i64 %indvars.iv995, 2
  %247 = mul nsw i64 %indvars.iv.next996.1, %175
  %gep1201.2 = getelementptr double, ptr %invariant.gep1200, i64 %247
  store double 0.000000e+00, ptr %gep1201.2, align 8, !tbaa !9
  %indvars.iv.next996.2 = add nuw nsw i64 %indvars.iv995, 3
  %248 = mul nsw i64 %indvars.iv.next996.2, %175
  %gep1201.3 = getelementptr double, ptr %invariant.gep1200, i64 %248
  store double 0.000000e+00, ptr %gep1201.3, align 8, !tbaa !9
  %indvars.iv.next996.3 = add nuw nsw i64 %indvars.iv995, 4
  %niter1343.next.3 = add nuw i64 %niter1343, 4
  %niter1343.ncmp.3 = icmp eq i64 %niter1343.next.3, %unroll_iter1342
  br i1 %niter1343.ncmp.3, label %._crit_edge763.loopexit.unr-lcssa, label %.lr.ph762, !llvm.loop !25

._crit_edge763.loopexit.unr-lcssa:                ; preds = %.lr.ph762, %.lr.ph762.preheader
  %indvars.iv995.unr = phi i64 [ 1, %.lr.ph762.preheader ], [ %indvars.iv.next996.3, %.lr.ph762 ]
  %lcmp.mod1341.not = icmp eq i64 %xtraiter1340, 0
  br i1 %lcmp.mod1341.not, label %._crit_edge763, label %.lr.ph762.epil

.lr.ph762.epil:                                   ; preds = %._crit_edge763.loopexit.unr-lcssa, %.lr.ph762.epil
  %indvars.iv995.epil = phi i64 [ %indvars.iv.next996.epil, %.lr.ph762.epil ], [ %indvars.iv995.unr, %._crit_edge763.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph762.epil ], [ 0, %._crit_edge763.loopexit.unr-lcssa ]
  %249 = mul nsw i64 %indvars.iv995.epil, %175
  %gep1201.epil = getelementptr double, ptr %invariant.gep1200, i64 %249
  store double 0.000000e+00, ptr %gep1201.epil, align 8, !tbaa !9
  %indvars.iv.next996.epil = add nuw nsw i64 %indvars.iv995.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter1340
  br i1 %epil.iter.cmp.not, label %._crit_edge763, label %.lr.ph762.epil, !llvm.loop !26

._crit_edge763:                                   ; preds = %._crit_edge763.loopexit.unr-lcssa, %.lr.ph762.epil, %.lr.ph772
  %.not702.not764 = icmp ult i64 %indvars.iv1000, %234
  br i1 %.not702.not764, label %.lr.ph767, label %._crit_edge768

.lr.ph767:                                        ; preds = %._crit_edge763
  %250 = trunc nuw nsw i64 %indvars.iv1000 to i32
  %251 = add nsw i32 %204, %250
  %invariant.gep1202 = getelementptr double, ptr %29, i64 %239
  br label %252

252:                                              ; preds = %.lr.ph767, %252
  %indvars.iv1002 = phi i64 [ %indvars.iv1000, %.lr.ph767 ], [ %indvars.iv.next1003, %252 ]
  %indvars.iv.next1003 = add nuw nsw i64 %indvars.iv1002, 1
  %253 = trunc nsw i64 %indvars.iv.next1003 to i32
  %254 = add nsw i32 %204, %253
  %255 = mul nsw i32 %254, %19
  %256 = add nsw i32 %251, %255
  %257 = sext i32 %256 to i64
  %258 = getelementptr inbounds double, ptr %21, i64 %257
  %259 = load double, ptr %258, align 8, !tbaa !9
  %260 = mul nsw i64 %indvars.iv.next1003, %175
  %gep1203 = getelementptr double, ptr %invariant.gep1202, i64 %260
  store double %259, ptr %gep1203, align 8, !tbaa !9
  %exitcond1006.not = icmp eq i64 %indvars.iv.next1003, %wide.trip.count1005
  br i1 %exitcond1006.not, label %._crit_edge768, label %252, !llvm.loop !27

._crit_edge768:                                   ; preds = %252, %._crit_edge763
  %indvars.iv.next1001 = add nuw nsw i64 %indvars.iv1000, 1
  %exitcond1009.not = icmp eq i64 %indvars.iv.next1001, %wide.trip.count1008
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond1009.not, label %..preheader720_crit_edge, label %.lr.ph772, !llvm.loop !28

.preheader719:                                    ; preds = %.loopexit718, %.preheader720
  br i1 %.not682769, label %._crit_edge801, label %.lr.ph800.preheader

.lr.ph800.preheader:                              ; preds = %.preheader719
  %261 = add nuw i32 %203, 1
  br label %.lr.ph800

262:                                              ; preds = %.lr.ph786, %.loopexit718
  %storemerge683785 = phi i32 [ 1, %.lr.ph786 ], [ %309, %.loopexit718 ]
  %263 = sext i32 %storemerge683785 to i64
  %264 = getelementptr inbounds i32, ptr %23, i64 %263
  %265 = load i32, ptr %264, align 4, !tbaa !5
  %266 = icmp sgt i32 %265, 0
  br i1 %266, label %267, label %279

267:                                              ; preds = %262
  br i1 %.not682769, label %.loopexit718, label %.lr.ph782

.lr.ph782:                                        ; preds = %267
  %268 = add nsw i32 %storemerge683785, %167
  %269 = sext i32 %268 to i64
  %270 = getelementptr inbounds double, ptr %29, i64 %269
  %invariant.gep1208 = getelementptr double, ptr %29, i64 %263
  br i1 %238, label %.loopexit718.loopexit.unr-lcssa, label %.lr.ph782.new

.lr.ph782.new:                                    ; preds = %.lr.ph782, %.lr.ph782.new
  %indvars.iv1015 = phi i64 [ %indvars.iv.next1016.1, %.lr.ph782.new ], [ 1, %.lr.ph782 ]
  %niter1349 = phi i64 [ %niter1349.next.1, %.lr.ph782.new ], [ 0, %.lr.ph782 ]
  %271 = load double, ptr %270, align 8, !tbaa !9
  %272 = mul nsw i64 %indvars.iv1015, %175
  %gep1209 = getelementptr double, ptr %invariant.gep1208, i64 %272
  %273 = load double, ptr %gep1209, align 8, !tbaa !9
  %274 = fmul double %271, %273
  store double %274, ptr %gep1209, align 8, !tbaa !9
  %indvars.iv.next1016 = add nuw nsw i64 %indvars.iv1015, 1
  %275 = load double, ptr %270, align 8, !tbaa !9
  %276 = mul nsw i64 %indvars.iv.next1016, %175
  %gep1209.1 = getelementptr double, ptr %invariant.gep1208, i64 %276
  %277 = load double, ptr %gep1209.1, align 8, !tbaa !9
  %278 = fmul double %275, %277
  store double %278, ptr %gep1209.1, align 8, !tbaa !9
  %indvars.iv.next1016.1 = add nuw nsw i64 %indvars.iv1015, 2
  %niter1349.next.1 = add i64 %niter1349, 2
  %niter1349.ncmp.1 = icmp eq i64 %niter1349.next.1, %unroll_iter1348
  br i1 %niter1349.ncmp.1, label %.loopexit718.loopexit.unr-lcssa, label %.lr.ph782.new, !llvm.loop !29

279:                                              ; preds = %262
  %.pre1175 = add nsw i32 %storemerge683785, 1
  br i1 %.not682769, label %.loopexit718, label %.lr.ph777

.lr.ph777:                                        ; preds = %279
  %280 = add nsw i32 %storemerge683785, %167
  %281 = sext i32 %280 to i64
  %282 = getelementptr inbounds double, ptr %29, i64 %281
  %283 = add nsw i32 %storemerge683785, %169
  %284 = sext i32 %283 to i64
  %285 = getelementptr inbounds double, ptr %29, i64 %284
  %286 = add nsw i32 %.pre1175, %167
  %287 = sext i32 %286 to i64
  %288 = getelementptr inbounds double, ptr %29, i64 %287
  %289 = add nsw i32 %.pre1175, %169
  %290 = sext i32 %289 to i64
  %291 = getelementptr inbounds double, ptr %29, i64 %290
  %292 = sext i32 %.pre1175 to i64
  %invariant.gep1204 = getelementptr double, ptr %29, i64 %263
  %invariant.gep1206 = getelementptr double, ptr %29, i64 %292
  br label %293

293:                                              ; preds = %.lr.ph777, %293
  %indvars.iv1010 = phi i64 [ 1, %.lr.ph777 ], [ %indvars.iv.next1011, %293 ]
  %294 = mul nsw i64 %indvars.iv1010, %175
  %gep1205 = getelementptr double, ptr %invariant.gep1204, i64 %294
  %295 = load double, ptr %gep1205, align 8, !tbaa !9
  %gep1207 = getelementptr double, ptr %invariant.gep1206, i64 %294
  %296 = load double, ptr %gep1207, align 8, !tbaa !9
  %297 = load double, ptr %282, align 8, !tbaa !9
  %298 = load double, ptr %285, align 8, !tbaa !9
  %299 = fmul double %296, %298
  %300 = call double @llvm.fmuladd.f64(double %297, double %295, double %299)
  store double %300, ptr %gep1205, align 8, !tbaa !9
  %301 = load double, ptr %288, align 8, !tbaa !9
  %302 = load double, ptr %291, align 8, !tbaa !9
  %303 = fmul double %296, %302
  %304 = call double @llvm.fmuladd.f64(double %301, double %295, double %303)
  store double %304, ptr %gep1207, align 8, !tbaa !9
  %indvars.iv.next1011 = add nuw nsw i64 %indvars.iv1010, 1
  %exitcond1014.not = icmp eq i64 %indvars.iv.next1011, %wide.trip.count1013
  br i1 %exitcond1014.not, label %.loopexit718, label %293, !llvm.loop !30

.loopexit718.loopexit.unr-lcssa:                  ; preds = %.lr.ph782.new, %.lr.ph782
  %indvars.iv1015.unr = phi i64 [ 1, %.lr.ph782 ], [ %indvars.iv.next1016.1, %.lr.ph782.new ]
  br i1 %lcmp.mod1347.not, label %.loopexit718, label %.loopexit718.loopexit.epilog-lcssa

.loopexit718.loopexit.epilog-lcssa:               ; preds = %.loopexit718.loopexit.unr-lcssa
  %305 = load double, ptr %270, align 8, !tbaa !9
  %306 = mul nsw i64 %indvars.iv1015.unr, %175
  %gep1209.epil = getelementptr double, ptr %invariant.gep1208, i64 %306
  %307 = load double, ptr %gep1209.epil, align 8, !tbaa !9
  %308 = fmul double %305, %307
  store double %308, ptr %gep1209.epil, align 8, !tbaa !9
  br label %.loopexit718

.loopexit718:                                     ; preds = %293, %.loopexit718.loopexit.epilog-lcssa, %.loopexit718.loopexit.unr-lcssa, %279, %267
  %storemerge683783 = phi i32 [ %storemerge683785, %267 ], [ %.pre1175, %279 ], [ %storemerge683785, %.loopexit718.loopexit.unr-lcssa ], [ %storemerge683785, %.loopexit718.loopexit.epilog-lcssa ], [ %.pre1175, %293 ]
  %309 = add nsw i32 %storemerge683783, 1
  %.not684.not = icmp slt i32 %storemerge683783, %204
  br i1 %.not684.not, label %262, label %.preheader719, !llvm.loop !31

.lr.ph800:                                        ; preds = %.lr.ph800.preheader, %.loopexit717
  %storemerge685799 = phi i32 [ %372, %.loopexit717 ], [ 1, %.lr.ph800.preheader ]
  %310 = add nsw i32 %storemerge685799, %204
  %311 = sext i32 %310 to i64
  %312 = getelementptr inbounds i32, ptr %23, i64 %311
  %313 = load i32, ptr %312, align 4, !tbaa !5
  %314 = icmp sgt i32 %313, 0
  %.not698793 = icmp sgt i32 %storemerge685799, %203
  br i1 %314, label %315, label %337

315:                                              ; preds = %.lr.ph800
  br i1 %.not698793, label %.loopexit717, label %.lr.ph796

.lr.ph796:                                        ; preds = %315
  %316 = add nsw i32 %310, %167
  %317 = sext i32 %316 to i64
  %318 = getelementptr inbounds double, ptr %29, i64 %317
  %319 = add nsw i32 %storemerge685799, %105
  %320 = sext i32 %storemerge685799 to i64
  %321 = sext i32 %319 to i64
  %invariant.gep1212 = getelementptr double, ptr %29, i64 %321
  %322 = add i32 %203, %storemerge685799
  %323 = and i32 %322, 1
  %lcmp.mod1351.not.not = icmp eq i32 %323, 0
  br i1 %lcmp.mod1351.not.not, label %.prol.loopexit.unr-lcssa, label %.prol.loopexit

.prol.loopexit.unr-lcssa:                         ; preds = %.lr.ph796
  %324 = load double, ptr %318, align 8, !tbaa !9
  %325 = mul nsw i64 %320, %175
  %gep1213.prol = getelementptr double, ptr %invariant.gep1212, i64 %325
  %326 = load double, ptr %gep1213.prol, align 8, !tbaa !9
  %327 = fmul double %324, %326
  store double %327, ptr %gep1213.prol, align 8, !tbaa !9
  %indvars.iv.next1026.prol = add nsw i64 %320, 1
  br label %.prol.loopexit

.prol.loopexit:                                   ; preds = %.prol.loopexit.unr-lcssa, %.lr.ph796
  %indvars.iv1025.unr = phi i64 [ %320, %.lr.ph796 ], [ %indvars.iv.next1026.prol, %.prol.loopexit.unr-lcssa ]
  %328 = icmp eq i32 %203, %storemerge685799
  br i1 %328, label %.loopexit717, label %.lr.ph796.new

.lr.ph796.new:                                    ; preds = %.prol.loopexit, %.lr.ph796.new
  %indvars.iv1025 = phi i64 [ %indvars.iv.next1026.1, %.lr.ph796.new ], [ %indvars.iv1025.unr, %.prol.loopexit ]
  %329 = load double, ptr %318, align 8, !tbaa !9
  %330 = mul nsw i64 %indvars.iv1025, %175
  %gep1213 = getelementptr double, ptr %invariant.gep1212, i64 %330
  %331 = load double, ptr %gep1213, align 8, !tbaa !9
  %332 = fmul double %329, %331
  store double %332, ptr %gep1213, align 8, !tbaa !9
  %indvars.iv.next1026 = add nsw i64 %indvars.iv1025, 1
  %333 = load double, ptr %318, align 8, !tbaa !9
  %334 = mul nsw i64 %indvars.iv.next1026, %175
  %gep1213.1 = getelementptr double, ptr %invariant.gep1212, i64 %334
  %335 = load double, ptr %gep1213.1, align 8, !tbaa !9
  %336 = fmul double %333, %335
  store double %336, ptr %gep1213.1, align 8, !tbaa !9
  %indvars.iv.next1026.1 = add nsw i64 %indvars.iv1025, 2
  %lftr.wideiv1028.1 = trunc i64 %indvars.iv.next1026.1 to i32
  %exitcond1029.not.1 = icmp eq i32 %261, %lftr.wideiv1028.1
  br i1 %exitcond1029.not.1, label %.loopexit717, label %.lr.ph796.new, !llvm.loop !32

337:                                              ; preds = %.lr.ph800
  br i1 %.not698793, label %._crit_edge792, label %.lr.ph791

.lr.ph791:                                        ; preds = %337
  %338 = add nsw i32 %storemerge685799, %105
  %339 = add nsw i32 %310, %167
  %340 = sext i32 %339 to i64
  %341 = getelementptr inbounds double, ptr %29, i64 %340
  %342 = add nsw i32 %310, %169
  %343 = sext i32 %342 to i64
  %344 = getelementptr inbounds double, ptr %29, i64 %343
  %345 = add nsw i32 %310, 1
  %346 = add nsw i32 %345, %167
  %347 = sext i32 %346 to i64
  %348 = getelementptr inbounds double, ptr %29, i64 %347
  %349 = add nsw i32 %345, %169
  %350 = sext i32 %349 to i64
  %351 = getelementptr inbounds double, ptr %29, i64 %350
  %352 = sext i32 %storemerge685799 to i64
  %353 = sext i32 %338 to i64
  %invariant.gep1210 = getelementptr double, ptr %29, i64 %353
  br label %354

354:                                              ; preds = %.lr.ph791, %354
  %indvars.iv1020 = phi i64 [ %352, %.lr.ph791 ], [ %indvars.iv.next1021, %354 ]
  %355 = mul nsw i64 %indvars.iv1020, %175
  %gep1211 = getelementptr double, ptr %invariant.gep1210, i64 %355
  %356 = load double, ptr %gep1211, align 8, !tbaa !9
  %357 = trunc nsw i64 %355 to i32
  %358 = add i32 %338, %357
  %359 = add i32 %358, 1
  %360 = sext i32 %359 to i64
  %361 = getelementptr inbounds double, ptr %29, i64 %360
  %362 = load double, ptr %361, align 8, !tbaa !9
  %363 = load double, ptr %341, align 8, !tbaa !9
  %364 = load double, ptr %344, align 8, !tbaa !9
  %365 = fmul double %362, %364
  %366 = call double @llvm.fmuladd.f64(double %363, double %356, double %365)
  store double %366, ptr %gep1211, align 8, !tbaa !9
  %367 = load double, ptr %348, align 8, !tbaa !9
  %368 = load double, ptr %351, align 8, !tbaa !9
  %369 = fmul double %362, %368
  %370 = call double @llvm.fmuladd.f64(double %367, double %356, double %369)
  store double %370, ptr %361, align 8, !tbaa !9
  %indvars.iv.next1021 = add nsw i64 %indvars.iv1020, 1
  %lftr.wideiv1023 = trunc i64 %indvars.iv.next1021 to i32
  %exitcond1024.not = icmp eq i32 %261, %lftr.wideiv1023
  br i1 %exitcond1024.not, label %._crit_edge792, label %354, !llvm.loop !33

._crit_edge792:                                   ; preds = %354, %337
  %371 = add nsw i32 %storemerge685799, 1
  br label %.loopexit717

.loopexit717:                                     ; preds = %.prol.loopexit, %.lr.ph796.new, %315, %._crit_edge792
  %storemerge685797 = phi i32 [ %371, %._crit_edge792 ], [ %storemerge685799, %315 ], [ %storemerge685799, %.lr.ph796.new ], [ %storemerge685799, %.prol.loopexit ]
  %372 = add nsw i32 %storemerge685797, 1
  %.not686.not = icmp slt i32 %storemerge685797, %203
  br i1 %.not686.not, label %.lr.ph800, label %._crit_edge801.loopexit, !llvm.loop !34

._crit_edge801.loopexit:                          ; preds = %.loopexit717
  store i32 %203, ptr %12, align 4, !tbaa !5
  br label %._crit_edge801

._crit_edge801:                                   ; preds = %._crit_edge801.loopexit, %.preheader719
  %storemerge685.lcssa = phi i32 [ 1, %.preheader719 ], [ %372, %._crit_edge801.loopexit ]
  store i32 %storemerge685.lcssa, ptr %15, align 4, !tbaa !5
  %373 = load i32, ptr %1, align 4, !tbaa !5
  %374 = add i32 %180, 1
  %375 = add i32 %374, %373
  store i32 %375, ptr %12, align 4, !tbaa !5
  %376 = add nsw i32 %204, 1
  %377 = mul i32 %376, %170
  %378 = sext i32 %377 to i64
  %379 = getelementptr inbounds double, ptr %21, i64 %378
  call void @dtrmm_(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str, ptr noundef nonnull %17, ptr noundef nonnull %17, ptr noundef nonnull @c_b10, ptr noundef %379, ptr noundef nonnull %3, ptr noundef %174, ptr noundef nonnull %12) #5
  %380 = load i32, ptr %17, align 4, !tbaa !5
  %.not688804 = icmp slt i32 %380, 1
  %.pre = load i32, ptr %18, align 4, !tbaa !5
  br i1 %.not688804, label %._crit_edge808, label %.lr.ph807

.lr.ph807:                                        ; preds = %._crit_edge801
  %381 = sext i32 %.pre to i64
  %382 = add nuw i32 %380, 1
  %wide.trip.count1038 = zext i32 %382 to i64
  %invariant.gep1216 = getelementptr double, ptr %21, i64 %381
  %383 = zext nneg i32 %380 to i64
  %xtraiter1354 = and i64 %383, 1
  %384 = icmp eq i32 %382, 2
  br i1 %384, label %._crit_edge808.loopexit.unr-lcssa, label %.lr.ph807.new

.lr.ph807.new:                                    ; preds = %.lr.ph807
  %unroll_iter1357 = and i64 %383, 2147483646
  br label %385

385:                                              ; preds = %401, %.lr.ph807.new
  %indvars.iv1030 = phi i64 [ 1, %.lr.ph807.new ], [ %indvars.iv.next1031.1, %401 ]
  %niter1358 = phi i64 [ 0, %.lr.ph807.new ], [ %niter1358.next.1, %401 ]
  %gep1215 = getelementptr double, ptr %invariant.gep1214, i64 %indvars.iv1030
  %gep1217 = getelementptr double, ptr %invariant.gep1216, i64 %indvars.iv1030
  br label %386

386:                                              ; preds = %385, %386
  %indvars.iv1032 = phi i64 [ %indvars.iv1030, %385 ], [ %indvars.iv.next1033, %386 ]
  %387 = mul nsw i64 %indvars.iv1032, %175
  %388 = getelementptr double, ptr %gep1215, i64 %387
  %389 = load double, ptr %388, align 8, !tbaa !9
  %390 = add nsw i64 %indvars.iv1032, %381
  %391 = mul nsw i64 %390, %177
  %392 = getelementptr double, ptr %gep1217, i64 %391
  store double %389, ptr %392, align 8, !tbaa !9
  %indvars.iv.next1033 = add nuw nsw i64 %indvars.iv1032, 1
  %exitcond1036.not = icmp eq i64 %indvars.iv.next1033, %wide.trip.count1038
  br i1 %exitcond1036.not, label %393, label %386, !llvm.loop !35

393:                                              ; preds = %386
  %indvars.iv.next1031 = add nuw nsw i64 %indvars.iv1030, 1
  %gep1215.1 = getelementptr double, ptr %invariant.gep1214, i64 %indvars.iv.next1031
  %gep1217.1 = getelementptr double, ptr %invariant.gep1216, i64 %indvars.iv.next1031
  br label %394

394:                                              ; preds = %394, %393
  %indvars.iv1032.1 = phi i64 [ %indvars.iv.next1031, %393 ], [ %indvars.iv.next1033.1, %394 ]
  %395 = mul nsw i64 %indvars.iv1032.1, %175
  %396 = getelementptr double, ptr %gep1215.1, i64 %395
  %397 = load double, ptr %396, align 8, !tbaa !9
  %398 = add nsw i64 %indvars.iv1032.1, %381
  %399 = mul nsw i64 %398, %177
  %400 = getelementptr double, ptr %gep1217.1, i64 %399
  store double %397, ptr %400, align 8, !tbaa !9
  %indvars.iv.next1033.1 = add nuw nsw i64 %indvars.iv1032.1, 1
  %exitcond1036.not.1 = icmp eq i64 %indvars.iv.next1033.1, %wide.trip.count1038
  br i1 %exitcond1036.not.1, label %401, label %394, !llvm.loop !35

401:                                              ; preds = %394
  %indvars.iv.next1031.1 = add nuw nsw i64 %indvars.iv1030, 2
  %niter1358.next.1 = add nuw i64 %niter1358, 2
  %niter1358.ncmp.1 = icmp eq i64 %niter1358.next.1, %unroll_iter1357
  br i1 %niter1358.ncmp.1, label %._crit_edge808.loopexit.unr-lcssa, label %385, !llvm.loop !36

._crit_edge808.loopexit.unr-lcssa:                ; preds = %401, %.lr.ph807
  %indvars.iv1030.unr = phi i64 [ 1, %.lr.ph807 ], [ %indvars.iv.next1031.1, %401 ]
  %lcmp.mod1356.not = icmp eq i64 %xtraiter1354, 0
  br i1 %lcmp.mod1356.not, label %._crit_edge808, label %.epil.preheader1353

.epil.preheader1353:                              ; preds = %._crit_edge808.loopexit.unr-lcssa
  %gep1215.epil = getelementptr double, ptr %invariant.gep1214, i64 %indvars.iv1030.unr
  %gep1217.epil = getelementptr double, ptr %invariant.gep1216, i64 %indvars.iv1030.unr
  br label %402

402:                                              ; preds = %402, %.epil.preheader1353
  %indvars.iv1032.epil = phi i64 [ %indvars.iv1030.unr, %.epil.preheader1353 ], [ %indvars.iv.next1033.epil, %402 ]
  %403 = mul nsw i64 %indvars.iv1032.epil, %175
  %404 = getelementptr double, ptr %gep1215.epil, i64 %403
  %405 = load double, ptr %404, align 8, !tbaa !9
  %406 = add nsw i64 %indvars.iv1032.epil, %381
  %407 = mul nsw i64 %406, %177
  %408 = getelementptr double, ptr %gep1217.epil, i64 %407
  store double %405, ptr %408, align 8, !tbaa !9
  %indvars.iv.next1033.epil = add nuw nsw i64 %indvars.iv1032.epil, 1
  %exitcond1036.not.epil = icmp eq i64 %indvars.iv.next1033.epil, %wide.trip.count1038
  br i1 %exitcond1036.not.epil, label %._crit_edge808, label %402, !llvm.loop !35

._crit_edge808:                                   ; preds = %._crit_edge808.loopexit.unr-lcssa, %402, %._crit_edge801
  %storemerge687.lcssa = phi i32 [ 1, %._crit_edge801 ], [ %382, %402 ], [ %382, %._crit_edge808.loopexit.unr-lcssa ]
  store i32 %storemerge687.lcssa, ptr %15, align 4, !tbaa !5
  %409 = load i32, ptr %1, align 4, !tbaa !5
  %410 = load i32, ptr %7, align 4, !tbaa !5
  %411 = add i32 %409, 1
  %412 = add i32 %411, %410
  store i32 %412, ptr %12, align 4, !tbaa !5
  store i32 %412, ptr %13, align 4, !tbaa !5
  %413 = add nsw i32 %.pre, 1
  %414 = mul nsw i32 %413, %19
  %415 = sext i32 %414 to i64
  %gep = getelementptr double, ptr %invariant.gep, i64 %415
  call void @dgemm_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull %17, ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef nonnull @c_b10, ptr noundef %gep, ptr noundef nonnull %3, ptr noundef %6, ptr noundef nonnull %12, ptr noundef nonnull @c_b14, ptr noundef %174, ptr noundef nonnull %13) #5
  %416 = load i32, ptr %17, align 4, !tbaa !5
  %.not691811 = icmp slt i32 %416, 1
  br i1 %.not691811, label %452, label %.lr.ph814

.lr.ph814:                                        ; preds = %._crit_edge808
  %417 = load i32, ptr %18, align 4, !tbaa !5
  %418 = sext i32 %417 to i64
  %419 = add nuw i32 %416, 1
  %wide.trip.count1048 = zext i32 %419 to i64
  %invariant.gep1220 = getelementptr double, ptr %21, i64 %418
  %420 = zext nneg i32 %416 to i64
  %xtraiter1360 = and i64 %420, 1
  %421 = icmp eq i32 %419, 2
  br i1 %421, label %._crit_edge815.unr-lcssa, label %.lr.ph814.new

.lr.ph814.new:                                    ; preds = %.lr.ph814
  %unroll_iter1363 = and i64 %420, 2147483646
  br label %422

422:                                              ; preds = %442, %.lr.ph814.new
  %indvars.iv1040 = phi i64 [ 1, %.lr.ph814.new ], [ %indvars.iv.next1041.1, %442 ]
  %niter1364 = phi i64 [ 0, %.lr.ph814.new ], [ %niter1364.next.1, %442 ]
  %gep1219 = getelementptr double, ptr %invariant.gep1218, i64 %indvars.iv1040
  %gep1221 = getelementptr double, ptr %invariant.gep1220, i64 %indvars.iv1040
  br label %423

423:                                              ; preds = %422, %423
  %indvars.iv1042 = phi i64 [ %indvars.iv1040, %422 ], [ %indvars.iv.next1043, %423 ]
  %424 = mul nsw i64 %indvars.iv1042, %175
  %425 = getelementptr double, ptr %gep1219, i64 %424
  %426 = load double, ptr %425, align 8, !tbaa !9
  %427 = add nsw i64 %indvars.iv1042, %418
  %428 = mul nsw i64 %427, %177
  %429 = getelementptr double, ptr %gep1221, i64 %428
  %430 = load double, ptr %429, align 8, !tbaa !9
  %431 = fadd double %426, %430
  store double %431, ptr %429, align 8, !tbaa !9
  %indvars.iv.next1043 = add nuw nsw i64 %indvars.iv1042, 1
  %exitcond1046.not = icmp eq i64 %indvars.iv.next1043, %wide.trip.count1048
  br i1 %exitcond1046.not, label %432, label %423, !llvm.loop !37

432:                                              ; preds = %423
  %indvars.iv.next1041 = add nuw nsw i64 %indvars.iv1040, 1
  %gep1219.1 = getelementptr double, ptr %invariant.gep1218, i64 %indvars.iv.next1041
  %gep1221.1 = getelementptr double, ptr %invariant.gep1220, i64 %indvars.iv.next1041
  br label %433

433:                                              ; preds = %433, %432
  %indvars.iv1042.1 = phi i64 [ %indvars.iv.next1041, %432 ], [ %indvars.iv.next1043.1, %433 ]
  %434 = mul nsw i64 %indvars.iv1042.1, %175
  %435 = getelementptr double, ptr %gep1219.1, i64 %434
  %436 = load double, ptr %435, align 8, !tbaa !9
  %437 = add nsw i64 %indvars.iv1042.1, %418
  %438 = mul nsw i64 %437, %177
  %439 = getelementptr double, ptr %gep1221.1, i64 %438
  %440 = load double, ptr %439, align 8, !tbaa !9
  %441 = fadd double %436, %440
  store double %441, ptr %439, align 8, !tbaa !9
  %indvars.iv.next1043.1 = add nuw nsw i64 %indvars.iv1042.1, 1
  %exitcond1046.not.1 = icmp eq i64 %indvars.iv.next1043.1, %wide.trip.count1048
  br i1 %exitcond1046.not.1, label %442, label %433, !llvm.loop !37

442:                                              ; preds = %433
  %indvars.iv.next1041.1 = add nuw nsw i64 %indvars.iv1040, 2
  %niter1364.next.1 = add nuw i64 %niter1364, 2
  %niter1364.ncmp.1 = icmp eq i64 %niter1364.next.1, %unroll_iter1363
  br i1 %niter1364.ncmp.1, label %._crit_edge815.unr-lcssa, label %422, !llvm.loop !38

._crit_edge815.unr-lcssa:                         ; preds = %442, %.lr.ph814
  %indvars.iv1040.unr = phi i64 [ 1, %.lr.ph814 ], [ %indvars.iv.next1041.1, %442 ]
  %lcmp.mod1362.not = icmp eq i64 %xtraiter1360, 0
  br i1 %lcmp.mod1362.not, label %._crit_edge815, label %.epil.preheader1359

.epil.preheader1359:                              ; preds = %._crit_edge815.unr-lcssa
  %gep1219.epil = getelementptr double, ptr %invariant.gep1218, i64 %indvars.iv1040.unr
  %gep1221.epil = getelementptr double, ptr %invariant.gep1220, i64 %indvars.iv1040.unr
  br label %443

443:                                              ; preds = %443, %.epil.preheader1359
  %indvars.iv1042.epil = phi i64 [ %indvars.iv1040.unr, %.epil.preheader1359 ], [ %indvars.iv.next1043.epil, %443 ]
  %444 = mul nsw i64 %indvars.iv1042.epil, %175
  %445 = getelementptr double, ptr %gep1219.epil, i64 %444
  %446 = load double, ptr %445, align 8, !tbaa !9
  %447 = add nsw i64 %indvars.iv1042.epil, %418
  %448 = mul nsw i64 %447, %177
  %449 = getelementptr double, ptr %gep1221.epil, i64 %448
  %450 = load double, ptr %449, align 8, !tbaa !9
  %451 = fadd double %446, %450
  store double %451, ptr %449, align 8, !tbaa !9
  %indvars.iv.next1043.epil = add nuw nsw i64 %indvars.iv1042.epil, 1
  %exitcond1046.not.epil = icmp eq i64 %indvars.iv.next1043.epil, %wide.trip.count1048
  br i1 %exitcond1046.not.epil, label %._crit_edge815, label %443, !llvm.loop !37

._crit_edge815:                                   ; preds = %443, %._crit_edge815.unr-lcssa
  store i32 %416, ptr %13, align 4, !tbaa !5
  br label %452

452:                                              ; preds = %._crit_edge815, %._crit_edge808
  %storemerge690.lcssa = phi i32 [ %419, %._crit_edge815 ], [ 1, %._crit_edge808 ]
  store i32 %storemerge690.lcssa, ptr %15, align 4, !tbaa !5
  %453 = load i32, ptr %1, align 4, !tbaa !5
  %454 = load i32, ptr %7, align 4, !tbaa !5
  %455 = add i32 %453, 1
  %456 = add i32 %455, %454
  store i32 %456, ptr %12, align 4, !tbaa !5
  call void @dtrmm_(ptr noundef nonnull @.str.1, ptr noundef %0, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str, ptr noundef nonnull %18, ptr noundef nonnull %17, ptr noundef nonnull @c_b10, ptr noundef %2, ptr noundef nonnull %3, ptr noundef %6, ptr noundef nonnull %12) #5
  %457 = load i32, ptr %18, align 4, !tbaa !5
  store i32 %457, ptr %12, align 4, !tbaa !5
  %.not693822 = icmp slt i32 %457, 1
  br i1 %.not693822, label %._crit_edge830, label %.lr.ph825, !llvm.loop !39

.lr.ph825:                                        ; preds = %452
  %458 = load i32, ptr %17, align 4, !tbaa !5
  %.not694817 = icmp slt i32 %458, 1
  br i1 %.not694817, label %.lr.ph825.split.us.preheader, label %.lr.ph820.preheader

.lr.ph820.preheader:                              ; preds = %.lr.ph825
  %459 = zext nneg i32 %457 to i64
  %460 = add nuw i32 %457, 1
  %wide.trip.count1058 = zext i32 %460 to i64
  %461 = zext nneg i32 %458 to i64
  %xtraiter1366 = and i64 %461, 1
  %462 = icmp eq i32 %458, 1
  %unroll_iter1369 = and i64 %461, 2147483646
  %lcmp.mod1368.not = icmp eq i64 %xtraiter1366, 0
  br label %.lr.ph820

.lr.ph825.split.us.preheader:                     ; preds = %.lr.ph825
  %463 = add nuw i32 %457, 1
  br label %thread-pre-split707

.lr.ph820:                                        ; preds = %.lr.ph820.preheader, %._crit_edge821
  %indvars.iv1055 = phi i64 [ 1, %.lr.ph820.preheader ], [ %indvars.iv.next1056, %._crit_edge821 ]
  %invariant.gep1222 = getelementptr double, ptr %29, i64 %indvars.iv1055
  %invariant.gep1224 = getelementptr double, ptr %21, i64 %indvars.iv1055
  br i1 %462, label %._crit_edge821.unr-lcssa, label %.lr.ph820.new

.lr.ph820.new:                                    ; preds = %.lr.ph820, %.lr.ph820.new
  %indvars.iv1050 = phi i64 [ %indvars.iv.next1051.1, %.lr.ph820.new ], [ 1, %.lr.ph820 ]
  %niter1370 = phi i64 [ %niter1370.next.1, %.lr.ph820.new ], [ 0, %.lr.ph820 ]
  %464 = mul nsw i64 %indvars.iv1050, %175
  %gep1223 = getelementptr double, ptr %invariant.gep1222, i64 %464
  %465 = load double, ptr %gep1223, align 8, !tbaa !9
  %466 = add nuw nsw i64 %indvars.iv1050, %459
  %467 = mul nsw i64 %466, %177
  %gep1225 = getelementptr double, ptr %invariant.gep1224, i64 %467
  store double %465, ptr %gep1225, align 8, !tbaa !9
  %indvars.iv.next1051 = add nuw nsw i64 %indvars.iv1050, 1
  %468 = mul nsw i64 %indvars.iv.next1051, %175
  %gep1223.1 = getelementptr double, ptr %invariant.gep1222, i64 %468
  %469 = load double, ptr %gep1223.1, align 8, !tbaa !9
  %470 = add nuw nsw i64 %indvars.iv.next1051, %459
  %471 = mul nsw i64 %470, %177
  %gep1225.1 = getelementptr double, ptr %invariant.gep1224, i64 %471
  store double %469, ptr %gep1225.1, align 8, !tbaa !9
  %indvars.iv.next1051.1 = add nuw nsw i64 %indvars.iv1050, 2
  %niter1370.next.1 = add i64 %niter1370, 2
  %niter1370.ncmp.1 = icmp eq i64 %niter1370.next.1, %unroll_iter1369
  br i1 %niter1370.ncmp.1, label %._crit_edge821.unr-lcssa, label %.lr.ph820.new, !llvm.loop !40

._crit_edge821.unr-lcssa:                         ; preds = %.lr.ph820.new, %.lr.ph820
  %indvars.iv1050.unr = phi i64 [ 1, %.lr.ph820 ], [ %indvars.iv.next1051.1, %.lr.ph820.new ]
  br i1 %lcmp.mod1368.not, label %._crit_edge821, label %._crit_edge821.epilog-lcssa

._crit_edge821.epilog-lcssa:                      ; preds = %._crit_edge821.unr-lcssa
  %472 = mul nsw i64 %indvars.iv1050.unr, %175
  %gep1223.epil = getelementptr double, ptr %invariant.gep1222, i64 %472
  %473 = load double, ptr %gep1223.epil, align 8, !tbaa !9
  %474 = add nuw nsw i64 %indvars.iv1050.unr, %459
  %475 = mul nsw i64 %474, %177
  %gep1225.epil = getelementptr double, ptr %invariant.gep1224, i64 %475
  store double %473, ptr %gep1225.epil, align 8, !tbaa !9
  br label %._crit_edge821

._crit_edge821:                                   ; preds = %._crit_edge821.unr-lcssa, %._crit_edge821.epilog-lcssa
  %indvars.iv.next1056 = add nuw nsw i64 %indvars.iv1055, 1
  %exitcond1059.not = icmp eq i64 %indvars.iv.next1056, %wide.trip.count1058
  br i1 %exitcond1059.not, label %thread-pre-split707, label %.lr.ph820, !llvm.loop !41

._crit_edge830:                                   ; preds = %452
  %.pre1164 = load i32, ptr %1, align 4, !tbaa !5
  store i32 %.pre1164, ptr %12, align 4, !tbaa !5
  store i32 1, ptr %15, align 4, !tbaa !5
  %.not674831 = icmp slt i32 %.pre1164, 1
  br i1 %.not674831, label %.loopexit, label %.lr.ph834

.lr.ph834:                                        ; preds = %._crit_edge830, %488
  %storemerge673832 = phi i32 [ %490, %488 ], [ 1, %._crit_edge830 ]
  %476 = sext i32 %storemerge673832 to i64
  %477 = getelementptr inbounds i32, ptr %23, i64 %476
  %478 = load i32, ptr %477, align 4, !tbaa !5
  store i32 %478, ptr %13, align 4, !tbaa !5
  %479 = call i32 @llvm.abs.i32(i32 %478, i1 true)
  store i32 %479, ptr %16, align 4, !tbaa !5
  %.not675 = icmp eq i32 %479, %storemerge673832
  br i1 %.not675, label %488, label %480

480:                                              ; preds = %.lr.ph834
  %481 = icmp slt i32 %storemerge673832, %479
  br i1 %481, label %482, label %483

482:                                              ; preds = %480
  call void @dsyswapr_(ptr noundef %0, ptr noundef nonnull %1, ptr noundef %2, ptr noundef nonnull %3, ptr noundef nonnull %15, ptr noundef nonnull %16) #5
  %.pre1165 = load i32, ptr %15, align 4, !tbaa !5
  %.pre1166 = load i32, ptr %16, align 4, !tbaa !5
  br label %483

483:                                              ; preds = %482, %480
  %484 = phi i32 [ %.pre1166, %482 ], [ %479, %480 ]
  %485 = phi i32 [ %.pre1165, %482 ], [ %storemerge673832, %480 ]
  %486 = icmp sgt i32 %485, %484
  br i1 %486, label %487, label %488

487:                                              ; preds = %483
  call void @dsyswapr_(ptr noundef %0, ptr noundef nonnull %1, ptr noundef %2, ptr noundef nonnull %3, ptr noundef nonnull %16, ptr noundef nonnull %15) #5
  %.pre1167 = load i32, ptr %15, align 4, !tbaa !5
  br label %488

488:                                              ; preds = %.lr.ph834, %487, %483
  %489 = phi i32 [ %storemerge673832, %.lr.ph834 ], [ %.pre1167, %487 ], [ %485, %483 ]
  %490 = add nsw i32 %489, 1
  store i32 %490, ptr %15, align 4, !tbaa !5
  %491 = load i32, ptr %12, align 4, !tbaa !5
  %.not674.not = icmp slt i32 %489, %491
  br i1 %.not674.not, label %.lr.ph834, label %.loopexit, !llvm.loop !42

492:                                              ; preds = %.loopexit721
  %493 = icmp sgt i32 %109, 0
  br i1 %493, label %.lr.ph837, label %.loopexit

.lr.ph837:                                        ; preds = %492
  %494 = add i32 %19, 1
  %495 = mul nsw i32 %107, %27
  %496 = add nsw i32 %106, 3
  %497 = mul nsw i32 %496, %27
  br label %509

.preheader715:                                    ; preds = %549
  store i32 0, ptr %18, align 4, !tbaa !5
  br i1 %493, label %.lr.ph938, label %.loopexit

.lr.ph938:                                        ; preds = %.preheader715
  %498 = mul nsw i32 %107, %27
  %499 = add nsw i32 %106, 3
  %500 = mul nsw i32 %499, %27
  %501 = add i32 %19, 1
  %502 = add i32 %26, 2
  %503 = add i32 %502, %105
  %504 = sext i32 %503 to i64
  %505 = getelementptr inbounds double, ptr %29, i64 %504
  %506 = sext i32 %19 to i64
  %507 = sext i32 %27 to i64
  %508 = sext i32 %105 to i64
  %invariant.gep1246 = getelementptr double, ptr %29, i64 %508
  %invariant.gep1250 = getelementptr double, ptr %29, i64 %508
  %invariant.gep1254 = getelementptr double, ptr %29, i64 %508
  br label %559

509:                                              ; preds = %.lr.ph837, %549
  %.3601835 = phi i32 [ %109, %.lr.ph837 ], [ %556, %549 ]
  %510 = zext nneg i32 %.3601835 to i64
  %511 = getelementptr inbounds i32, ptr %23, i64 %510
  %512 = load i32, ptr %511, align 4, !tbaa !5
  %513 = icmp sgt i32 %512, 0
  br i1 %513, label %514, label %520

514:                                              ; preds = %509
  %515 = mul i32 %.3601835, %494
  %516 = sext i32 %515 to i64
  %517 = getelementptr inbounds double, ptr %21, i64 %516
  %518 = load double, ptr %517, align 8, !tbaa !9
  %519 = fdiv double 1.000000e+00, %518
  br label %549

520:                                              ; preds = %509
  %521 = add nsw i32 %.3601835, -1
  %522 = add i32 %.3601835, %26
  %523 = sext i32 %522 to i64
  %524 = getelementptr inbounds double, ptr %29, i64 %523
  %525 = load double, ptr %524, align 8, !tbaa !9
  %526 = mul i32 %521, %494
  %527 = sext i32 %526 to i64
  %528 = getelementptr inbounds double, ptr %21, i64 %527
  %529 = load double, ptr %528, align 8, !tbaa !9
  %530 = fdiv double %529, %525
  %531 = mul i32 %.3601835, %494
  %532 = sext i32 %531 to i64
  %533 = getelementptr inbounds double, ptr %21, i64 %532
  %534 = load double, ptr %533, align 8, !tbaa !9
  %535 = fdiv double %534, %525
  %536 = tail call double @llvm.fmuladd.f64(double %530, double %535, double -1.000000e+00)
  %537 = fmul double %525, %536
  %538 = fdiv double %535, %537
  %539 = add nsw i32 %521, %495
  %540 = sext i32 %539 to i64
  %541 = getelementptr inbounds double, ptr %29, i64 %540
  store double %538, ptr %541, align 8, !tbaa !9
  %542 = fdiv double %530, %537
  %543 = add nsw i32 %.3601835, %495
  %544 = sext i32 %543 to i64
  %545 = getelementptr inbounds double, ptr %29, i64 %544
  store double %542, ptr %545, align 8, !tbaa !9
  %546 = fneg double %525
  %547 = fdiv double %546, %525
  %548 = fdiv double %547, %537
  br label %549

549:                                              ; preds = %520, %514
  %.sink1275 = phi i32 [ %497, %520 ], [ %495, %514 ]
  %.sink1271 = phi double [ %548, %520 ], [ %519, %514 ]
  %.sink1270 = phi i32 [ %521, %520 ], [ %.3601835, %514 ]
  %.sink1266 = phi double [ %548, %520 ], [ 0.000000e+00, %514 ]
  %550 = add nsw i32 %.3601835, %.sink1275
  %551 = sext i32 %550 to i64
  %552 = getelementptr inbounds double, ptr %29, i64 %551
  store double %.sink1271, ptr %552, align 8, !tbaa !9
  %553 = add nsw i32 %.sink1270, %497
  %554 = sext i32 %553 to i64
  %555 = getelementptr inbounds double, ptr %29, i64 %554
  store double %.sink1266, ptr %555, align 8, !tbaa !9
  %556 = add nsw i32 %.sink1270, -1
  %557 = icmp sgt i32 %.sink1270, 1
  br i1 %557, label %509, label %.preheader715, !llvm.loop !43

.preheader:                                       ; preds = %.loopexit711
  store i32 %933, ptr %15, align 4, !tbaa !5
  %558 = icmp sgt i32 %933, 0
  br i1 %558, label %.lr.ph941, label %.loopexit

559:                                              ; preds = %.lr.ph938, %.loopexit711
  %560 = phi i32 [ %109, %.lr.ph938 ], [ %933, %.loopexit711 ]
  %storemerge645.in838 = phi i32 [ 0, %.lr.ph938 ], [ %.pre-phi, %.loopexit711 ]
  %561 = load i32, ptr %7, align 4, !tbaa !5
  store i32 %561, ptr %17, align 4, !tbaa !5
  %562 = add nsw i32 %561, %storemerge645.in838
  %563 = icmp sgt i32 %562, %560
  br i1 %563, label %564, label %566

564:                                              ; preds = %559
  %565 = sub nsw i32 %560, %storemerge645.in838
  store i32 %565, ptr %17, align 4, !tbaa !5
  br label %.thread1183

566:                                              ; preds = %559
  store i32 %562, ptr %12, align 4, !tbaa !5
  %.not646.not840 = icmp sgt i32 %561, 0
  br i1 %.not646.not840, label %.lr.ph844.preheader, label %.thread1183

.lr.ph844.preheader:                              ; preds = %566
  %min.iters.check1303 = icmp ult i32 %561, 8
  br i1 %min.iters.check1303, label %.lr.ph844.preheader1322, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %.lr.ph844.preheader
  %567 = add i32 %storemerge645.in838, 1
  %568 = add i32 %storemerge645.in838, %561
  %569 = icmp slt i32 %568, %567
  br i1 %569, label %.lr.ph844.preheader1322, label %vector.ph1304

vector.ph1304:                                    ; preds = %vector.scevcheck
  %n.vec1306 = and i32 %561, 2147483640
  %ind.end1307 = add i32 %storemerge645.in838, %n.vec1306
  br label %vector.body1309

vector.body1309:                                  ; preds = %vector.body1309, %vector.ph1304
  %index1310 = phi i32 [ 0, %vector.ph1304 ], [ %index.next1316, %vector.body1309 ]
  %vec.phi1311 = phi <4 x i32> [ zeroinitializer, %vector.ph1304 ], [ %576, %vector.body1309 ]
  %vec.phi1312 = phi <4 x i32> [ zeroinitializer, %vector.ph1304 ], [ %577, %vector.body1309 ]
  %offset.idx1313 = add i32 %storemerge645.in838, %index1310
  %570 = add i32 %offset.idx1313, 1
  %571 = sext i32 %570 to i64
  %572 = getelementptr inbounds i32, ptr %23, i64 %571
  %573 = getelementptr inbounds i8, ptr %572, i64 16
  %wide.load1314 = load <4 x i32>, ptr %572, align 4, !tbaa !5
  %wide.load1315 = load <4 x i32>, ptr %573, align 4, !tbaa !5
  %574 = lshr <4 x i32> %wide.load1314, <i32 31, i32 31, i32 31, i32 31>
  %575 = lshr <4 x i32> %wide.load1315, <i32 31, i32 31, i32 31, i32 31>
  %576 = add <4 x i32> %574, %vec.phi1311
  %577 = add <4 x i32> %575, %vec.phi1312
  %index.next1316 = add nuw i32 %index1310, 8
  %578 = icmp eq i32 %index.next1316, %n.vec1306
  br i1 %578, label %middle.block1301, label %vector.body1309, !llvm.loop !44

middle.block1301:                                 ; preds = %vector.body1309
  %bin.rdx1317 = add <4 x i32> %577, %576
  %579 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %bin.rdx1317)
  %cmp.n1318 = icmp eq i32 %561, %n.vec1306
  br i1 %cmp.n1318, label %.loopexit1320, label %.lr.ph844.preheader1322

.lr.ph844.preheader1322:                          ; preds = %middle.block1301, %vector.scevcheck, %.lr.ph844.preheader
  %storemerge645.in847.in.ph = phi i32 [ %storemerge645.in838, %vector.scevcheck ], [ %storemerge645.in838, %.lr.ph844.preheader ], [ %ind.end1307, %middle.block1301 ]
  %.2841.ph = phi i32 [ 0, %vector.scevcheck ], [ 0, %.lr.ph844.preheader ], [ %579, %middle.block1301 ]
  %580 = add i32 %storemerge645.in838, %561
  %581 = sub i32 %580, %storemerge645.in847.in.ph
  %582 = add i32 %storemerge645.in838, -1
  %583 = add i32 %582, %561
  %584 = sub i32 %583, %storemerge645.in847.in.ph
  %xtraiter1371 = and i32 %581, 3
  %lcmp.mod1372.not = icmp eq i32 %xtraiter1371, 0
  br i1 %lcmp.mod1372.not, label %.lr.ph844.prol.loopexit, label %.lr.ph844.prol

.lr.ph844.prol:                                   ; preds = %.lr.ph844.preheader1322, %.lr.ph844.prol
  %storemerge645.in847.in.prol = phi i32 [ %storemerge645.in847.prol, %.lr.ph844.prol ], [ %storemerge645.in847.in.ph, %.lr.ph844.preheader1322 ]
  %.2841.prol = phi i32 [ %spec.select705.prol, %.lr.ph844.prol ], [ %.2841.ph, %.lr.ph844.preheader1322 ]
  %prol.iter1373 = phi i32 [ %prol.iter1373.next, %.lr.ph844.prol ], [ 0, %.lr.ph844.preheader1322 ]
  %storemerge645.in847.prol = add i32 %storemerge645.in847.in.prol, 1
  %585 = sext i32 %storemerge645.in847.prol to i64
  %586 = getelementptr inbounds i32, ptr %23, i64 %585
  %587 = load i32, ptr %586, align 4, !tbaa !5
  %588 = lshr i32 %587, 31
  %spec.select705.prol = add i32 %588, %.2841.prol
  %prol.iter1373.next = add i32 %prol.iter1373, 1
  %prol.iter1373.cmp.not = icmp eq i32 %prol.iter1373.next, %xtraiter1371
  br i1 %prol.iter1373.cmp.not, label %.lr.ph844.prol.loopexit, label %.lr.ph844.prol, !llvm.loop !45

.lr.ph844.prol.loopexit:                          ; preds = %.lr.ph844.prol, %.lr.ph844.preheader1322
  %spec.select705.lcssa1324.unr = phi i32 [ poison, %.lr.ph844.preheader1322 ], [ %spec.select705.prol, %.lr.ph844.prol ]
  %storemerge645.in847.in.unr = phi i32 [ %storemerge645.in847.in.ph, %.lr.ph844.preheader1322 ], [ %storemerge645.in847.prol, %.lr.ph844.prol ]
  %.2841.unr = phi i32 [ %.2841.ph, %.lr.ph844.preheader1322 ], [ %spec.select705.prol, %.lr.ph844.prol ]
  %589 = icmp ult i32 %584, 3
  br i1 %589, label %.loopexit1320, label %.lr.ph844

.lr.ph844:                                        ; preds = %.lr.ph844.prol.loopexit, %.lr.ph844
  %storemerge645.in847.in = phi i32 [ %storemerge645.in847.3, %.lr.ph844 ], [ %storemerge645.in847.in.unr, %.lr.ph844.prol.loopexit ]
  %.2841 = phi i32 [ %spec.select705.3, %.lr.ph844 ], [ %.2841.unr, %.lr.ph844.prol.loopexit ]
  %storemerge645.in847 = add i32 %storemerge645.in847.in, 1
  %590 = sext i32 %storemerge645.in847 to i64
  %591 = getelementptr inbounds i32, ptr %23, i64 %590
  %592 = load i32, ptr %591, align 4, !tbaa !5
  %593 = lshr i32 %592, 31
  %spec.select705 = add i32 %593, %.2841
  %storemerge645.in847.1 = add i32 %storemerge645.in847.in, 2
  %594 = sext i32 %storemerge645.in847.1 to i64
  %595 = getelementptr inbounds i32, ptr %23, i64 %594
  %596 = load i32, ptr %595, align 4, !tbaa !5
  %597 = lshr i32 %596, 31
  %spec.select705.1 = add i32 %597, %spec.select705
  %storemerge645.in847.2 = add i32 %storemerge645.in847.in, 3
  %598 = sext i32 %storemerge645.in847.2 to i64
  %599 = getelementptr inbounds i32, ptr %23, i64 %598
  %600 = load i32, ptr %599, align 4, !tbaa !5
  %601 = lshr i32 %600, 31
  %spec.select705.2 = add i32 %601, %spec.select705.1
  %storemerge645.in847.3 = add i32 %storemerge645.in847.in, 4
  %602 = sext i32 %storemerge645.in847.3 to i64
  %603 = getelementptr inbounds i32, ptr %23, i64 %602
  %604 = load i32, ptr %603, align 4, !tbaa !5
  %605 = lshr i32 %604, 31
  %spec.select705.3 = add i32 %605, %spec.select705.2
  %exitcond1060.not.3 = icmp eq i32 %storemerge645.in847.3, %562
  br i1 %exitcond1060.not.3, label %.loopexit1320, label %.lr.ph844, !llvm.loop !46

.loopexit1320:                                    ; preds = %.lr.ph844.prol.loopexit, %.lr.ph844, %middle.block1301
  %spec.select705.lcssa = phi i32 [ %579, %middle.block1301 ], [ %spec.select705.lcssa1324.unr, %.lr.ph844.prol.loopexit ], [ %spec.select705.3, %.lr.ph844 ]
  %606 = and i32 %spec.select705.lcssa, -2147483647
  %607 = icmp eq i32 %606, 1
  br i1 %607, label %608, label %.thread1183

608:                                              ; preds = %.loopexit1320
  %609 = add nuw nsw i32 %561, 1
  store i32 %609, ptr %17, align 4, !tbaa !5
  br label %.thread1183

.thread1183:                                      ; preds = %566, %.loopexit1320, %608, %564
  %610 = phi i32 [ %561, %.loopexit1320 ], [ %609, %608 ], [ %565, %564 ], [ %561, %566 ]
  %611 = add i32 %610, %storemerge645.in838
  %612 = sub i32 %560, %611
  %.not648853 = icmp slt i32 %612, 1
  br i1 %.not648853, label %636, label %.lr.ph856

.lr.ph856:                                        ; preds = %.thread1183
  %.not671848 = icmp slt i32 %610, 1
  br i1 %.not671848, label %.lr.ph856.split.us.preheader, label %.lr.ph851.preheader

.lr.ph851.preheader:                              ; preds = %.lr.ph856
  %613 = sext i32 %storemerge645.in838 to i64
  %614 = sext i32 %611 to i64
  %615 = add i32 %560, 1
  %616 = sub i32 %615, %611
  %wide.trip.count1069 = zext i32 %616 to i64
  %invariant.gep1228 = getelementptr double, ptr %21, i64 %614
  %617 = zext nneg i32 %610 to i64
  %xtraiter1375 = and i64 %617, 1
  %618 = icmp eq i32 %610, 1
  %unroll_iter1378 = and i64 %617, 2147483646
  %lcmp.mod1377.not = icmp eq i64 %xtraiter1375, 0
  br label %.lr.ph851

.lr.ph856.split.us.preheader:                     ; preds = %.lr.ph856
  %619 = add i32 %560, 1
  %620 = sub i32 %619, %611
  br label %._crit_edge857

.lr.ph851:                                        ; preds = %.lr.ph851.preheader, %._crit_edge852
  %indvars.iv1066 = phi i64 [ 1, %.lr.ph851.preheader ], [ %indvars.iv.next1067, %._crit_edge852 ]
  %gep1229 = getelementptr double, ptr %invariant.gep1228, i64 %indvars.iv1066
  %invariant.gep1226 = getelementptr double, ptr %29, i64 %indvars.iv1066
  br i1 %618, label %._crit_edge852.unr-lcssa, label %.lr.ph851.new

.lr.ph851.new:                                    ; preds = %.lr.ph851, %.lr.ph851.new
  %indvars.iv1061 = phi i64 [ %indvars.iv.next1062.1, %.lr.ph851.new ], [ 1, %.lr.ph851 ]
  %niter1379 = phi i64 [ %niter1379.next.1, %.lr.ph851.new ], [ 0, %.lr.ph851 ]
  %621 = add nsw i64 %indvars.iv1061, %613
  %622 = mul nsw i64 %621, %506
  %623 = getelementptr double, ptr %gep1229, i64 %622
  %624 = load double, ptr %623, align 8, !tbaa !9
  %625 = mul nsw i64 %indvars.iv1061, %507
  %gep1227 = getelementptr double, ptr %invariant.gep1226, i64 %625
  store double %624, ptr %gep1227, align 8, !tbaa !9
  %indvars.iv.next1062 = add nuw nsw i64 %indvars.iv1061, 1
  %626 = add nsw i64 %indvars.iv.next1062, %613
  %627 = mul nsw i64 %626, %506
  %628 = getelementptr double, ptr %gep1229, i64 %627
  %629 = load double, ptr %628, align 8, !tbaa !9
  %630 = mul nsw i64 %indvars.iv.next1062, %507
  %gep1227.1 = getelementptr double, ptr %invariant.gep1226, i64 %630
  store double %629, ptr %gep1227.1, align 8, !tbaa !9
  %indvars.iv.next1062.1 = add nuw nsw i64 %indvars.iv1061, 2
  %niter1379.next.1 = add i64 %niter1379, 2
  %niter1379.ncmp.1 = icmp eq i64 %niter1379.next.1, %unroll_iter1378
  br i1 %niter1379.ncmp.1, label %._crit_edge852.unr-lcssa, label %.lr.ph851.new, !llvm.loop !47

._crit_edge852.unr-lcssa:                         ; preds = %.lr.ph851.new, %.lr.ph851
  %indvars.iv1061.unr = phi i64 [ 1, %.lr.ph851 ], [ %indvars.iv.next1062.1, %.lr.ph851.new ]
  br i1 %lcmp.mod1377.not, label %._crit_edge852, label %._crit_edge852.epilog-lcssa

._crit_edge852.epilog-lcssa:                      ; preds = %._crit_edge852.unr-lcssa
  %631 = add nsw i64 %indvars.iv1061.unr, %613
  %632 = mul nsw i64 %631, %506
  %633 = getelementptr double, ptr %gep1229, i64 %632
  %634 = load double, ptr %633, align 8, !tbaa !9
  %635 = mul nsw i64 %indvars.iv1061.unr, %507
  %gep1227.epil = getelementptr double, ptr %invariant.gep1226, i64 %635
  store double %634, ptr %gep1227.epil, align 8, !tbaa !9
  br label %._crit_edge852

._crit_edge852:                                   ; preds = %._crit_edge852.unr-lcssa, %._crit_edge852.epilog-lcssa
  %indvars.iv.next1067 = add nuw nsw i64 %indvars.iv1066, 1
  %exitcond1070.not = icmp eq i64 %indvars.iv.next1067, %wide.trip.count1069
  br i1 %exitcond1070.not, label %._crit_edge857, label %.lr.ph851, !llvm.loop !48

._crit_edge857:                                   ; preds = %._crit_edge852, %.lr.ph856.split.us.preheader
  %.us-phi859 = phi i32 [ %620, %.lr.ph856.split.us.preheader ], [ %616, %._crit_edge852 ]
  store i32 %610, ptr %13, align 4, !tbaa !5
  br label %636

636:                                              ; preds = %._crit_edge857, %.thread1183
  %storemerge647.lcssa = phi i32 [ %.us-phi859, %._crit_edge857 ], [ 1, %.thread1183 ]
  store i32 %storemerge647.lcssa, ptr %15, align 4, !tbaa !5
  %.not650870 = icmp slt i32 %610, 1
  br i1 %.not650870, label %.preheader714, label %.lr.ph873.preheader

.lr.ph873.preheader:                              ; preds = %636
  %637 = sext i32 %storemerge645.in838 to i64
  %638 = zext nneg i32 %610 to i64
  %639 = add nsw i32 %610, -1
  %640 = add nuw i32 %610, 1
  %wide.trip.count1084 = zext i32 %640 to i64
  %wide.trip.count1076 = zext nneg i32 %610 to i64
  %invariant.gep1234 = getelementptr double, ptr %21, i64 %637
  br label %.lr.ph873

..preheader714_crit_edge:                         ; preds = %._crit_edge869
  store i32 %639, ptr %13, align 4, !tbaa !5
  br label %.preheader714

.preheader714:                                    ; preds = %..preheader714_crit_edge, %636
  %641 = icmp sgt i32 %612, 0
  br i1 %641, label %.lr.ph888, label %.preheader713

.lr.ph888:                                        ; preds = %.preheader714
  %642 = add i32 %610, 1
  %wide.trip.count1089 = zext i32 %642 to i64
  %643 = add nsw i64 %wide.trip.count1089, -1
  %xtraiter1389 = and i64 %643, 1
  %644 = icmp eq i32 %642, 2
  %unroll_iter1392 = and i64 %643, -2
  %lcmp.mod1391.not = icmp eq i64 %xtraiter1389, 0
  br label %671

.lr.ph873:                                        ; preds = %.lr.ph873.preheader, %._crit_edge869
  %indvar1381 = phi i64 [ 0, %.lr.ph873.preheader ], [ %indvar.next1382, %._crit_edge869 ]
  %indvars.iv1071 = phi i64 [ 1, %.lr.ph873.preheader ], [ %indvars.iv.next1072, %._crit_edge869 ]
  %645 = add nsw i64 %indvars.iv1071, %508
  %646 = mul nsw i64 %indvars.iv1071, %507
  %647 = getelementptr double, ptr %29, i64 %645
  %648 = getelementptr double, ptr %647, i64 %646
  store double 1.000000e+00, ptr %648, align 8, !tbaa !9
  %.not669.not860 = icmp ult i64 %indvars.iv1071, %638
  br i1 %.not669.not860, label %.lr.ph863.preheader, label %._crit_edge864

.lr.ph863.preheader:                              ; preds = %.lr.ph873
  %invariant.gep1230 = getelementptr double, ptr %29, i64 %645
  br label %.lr.ph863

.lr.ph863:                                        ; preds = %.lr.ph863.preheader, %.lr.ph863
  %indvars.iv1073 = phi i64 [ %indvars.iv1071, %.lr.ph863.preheader ], [ %indvars.iv.next1074, %.lr.ph863 ]
  %indvars.iv.next1074 = add nuw nsw i64 %indvars.iv1073, 1
  %649 = mul nsw i64 %indvars.iv.next1074, %507
  %gep1231 = getelementptr double, ptr %invariant.gep1230, i64 %649
  store double 0.000000e+00, ptr %gep1231, align 8, !tbaa !9
  %exitcond1077.not = icmp eq i64 %indvars.iv.next1074, %wide.trip.count1076
  br i1 %exitcond1077.not, label %._crit_edge864, label %.lr.ph863, !llvm.loop !49

._crit_edge864:                                   ; preds = %.lr.ph863, %.lr.ph873
  %.not670.not865 = icmp ugt i64 %indvars.iv1071, 1
  br i1 %.not670.not865, label %.lr.ph868, label %._crit_edge869

.lr.ph868:                                        ; preds = %._crit_edge864
  %gep1235 = getelementptr double, ptr %invariant.gep1234, i64 %indvars.iv1071
  %invariant.gep1232 = getelementptr double, ptr %29, i64 %645
  %xtraiter1383 = and i64 %indvar1381, 1
  %650 = icmp eq i64 %indvar1381, 1
  br i1 %650, label %._crit_edge869.loopexit.unr-lcssa, label %.lr.ph868.new

.lr.ph868.new:                                    ; preds = %.lr.ph868
  %unroll_iter1386 = and i64 %indvar1381, -2
  br label %651

651:                                              ; preds = %651, %.lr.ph868.new
  %indvars.iv1078 = phi i64 [ 1, %.lr.ph868.new ], [ %indvars.iv.next1079.1, %651 ]
  %niter1387 = phi i64 [ 0, %.lr.ph868.new ], [ %niter1387.next.1, %651 ]
  %652 = add nsw i64 %indvars.iv1078, %637
  %653 = mul nsw i64 %652, %506
  %654 = getelementptr double, ptr %gep1235, i64 %653
  %655 = load double, ptr %654, align 8, !tbaa !9
  %656 = mul nsw i64 %indvars.iv1078, %507
  %gep1233 = getelementptr double, ptr %invariant.gep1232, i64 %656
  store double %655, ptr %gep1233, align 8, !tbaa !9
  %indvars.iv.next1079 = add nuw nsw i64 %indvars.iv1078, 1
  %657 = add nsw i64 %indvars.iv.next1079, %637
  %658 = mul nsw i64 %657, %506
  %659 = getelementptr double, ptr %gep1235, i64 %658
  %660 = load double, ptr %659, align 8, !tbaa !9
  %661 = mul nsw i64 %indvars.iv.next1079, %507
  %gep1233.1 = getelementptr double, ptr %invariant.gep1232, i64 %661
  store double %660, ptr %gep1233.1, align 8, !tbaa !9
  %indvars.iv.next1079.1 = add nuw nsw i64 %indvars.iv1078, 2
  %niter1387.next.1 = add i64 %niter1387, 2
  %niter1387.ncmp.1 = icmp eq i64 %niter1387.next.1, %unroll_iter1386
  br i1 %niter1387.ncmp.1, label %._crit_edge869.loopexit.unr-lcssa, label %651, !llvm.loop !50

._crit_edge869.loopexit.unr-lcssa:                ; preds = %651, %.lr.ph868
  %indvars.iv1078.unr = phi i64 [ 1, %.lr.ph868 ], [ %indvars.iv.next1079.1, %651 ]
  %lcmp.mod1385.not = icmp eq i64 %xtraiter1383, 0
  br i1 %lcmp.mod1385.not, label %._crit_edge869, label %._crit_edge869.loopexit.epilog-lcssa

._crit_edge869.loopexit.epilog-lcssa:             ; preds = %._crit_edge869.loopexit.unr-lcssa
  %662 = add nsw i64 %indvars.iv1078.unr, %637
  %663 = mul nsw i64 %662, %506
  %664 = getelementptr double, ptr %gep1235, i64 %663
  %665 = load double, ptr %664, align 8, !tbaa !9
  %666 = mul nsw i64 %indvars.iv1078.unr, %507
  %gep1233.epil = getelementptr double, ptr %invariant.gep1232, i64 %666
  store double %665, ptr %gep1233.epil, align 8, !tbaa !9
  br label %._crit_edge869

._crit_edge869:                                   ; preds = %._crit_edge869.loopexit.epilog-lcssa, %._crit_edge869.loopexit.unr-lcssa, %._crit_edge864
  %indvars.iv.next1072 = add nuw nsw i64 %indvars.iv1071, 1
  %exitcond1085.not = icmp eq i64 %indvars.iv.next1072, %wide.trip.count1084
  %indvar.next1382 = add i64 %indvar1381, 1
  br i1 %exitcond1085.not, label %..preheader714_crit_edge, label %.lr.ph873, !llvm.loop !51

.preheader713:                                    ; preds = %.loopexit710, %.preheader714
  %667 = icmp sgt i32 %610, 0
  br i1 %667, label %.lr.ph902.preheader, label %._crit_edge903

.lr.ph902.preheader:                              ; preds = %.preheader713
  %668 = add nuw i32 %610, 1
  %wide.trip.count1099 = zext i32 %668 to i64
  %669 = zext nneg i32 %610 to i64
  %xtraiter1395 = and i64 %669, 1
  %670 = icmp eq i32 %668, 2
  %unroll_iter1398 = and i64 %669, 2147483646
  %lcmp.mod1397.not = icmp eq i64 %xtraiter1395, 0
  br label %.lr.ph902

671:                                              ; preds = %.lr.ph888, %.loopexit710
  %storemerge651887 = phi i32 [ %612, %.lr.ph888 ], [ %722, %.loopexit710 ]
  %672 = add nsw i32 %storemerge651887, %611
  %673 = sext i32 %672 to i64
  %674 = getelementptr inbounds i32, ptr %23, i64 %673
  %675 = load i32, ptr %674, align 4, !tbaa !5
  %676 = icmp sgt i32 %675, 0
  br i1 %676, label %677, label %690

677:                                              ; preds = %671
  br i1 %.not650870, label %.loopexit710, label %.lr.ph884

.lr.ph884:                                        ; preds = %677
  %678 = add nsw i32 %672, %498
  %679 = sext i32 %678 to i64
  %680 = getelementptr inbounds double, ptr %29, i64 %679
  %681 = zext nneg i32 %storemerge651887 to i64
  %invariant.gep1240 = getelementptr double, ptr %29, i64 %681
  br i1 %644, label %.loopexit710.loopexit.unr-lcssa, label %.lr.ph884.new

.lr.ph884.new:                                    ; preds = %.lr.ph884, %.lr.ph884.new
  %indvars.iv1091 = phi i64 [ %indvars.iv.next1092.1, %.lr.ph884.new ], [ 1, %.lr.ph884 ]
  %niter1393 = phi i64 [ %niter1393.next.1, %.lr.ph884.new ], [ 0, %.lr.ph884 ]
  %682 = load double, ptr %680, align 8, !tbaa !9
  %683 = mul nsw i64 %indvars.iv1091, %507
  %gep1241 = getelementptr double, ptr %invariant.gep1240, i64 %683
  %684 = load double, ptr %gep1241, align 8, !tbaa !9
  %685 = fmul double %682, %684
  store double %685, ptr %gep1241, align 8, !tbaa !9
  %indvars.iv.next1092 = add nuw nsw i64 %indvars.iv1091, 1
  %686 = load double, ptr %680, align 8, !tbaa !9
  %687 = mul nsw i64 %indvars.iv.next1092, %507
  %gep1241.1 = getelementptr double, ptr %invariant.gep1240, i64 %687
  %688 = load double, ptr %gep1241.1, align 8, !tbaa !9
  %689 = fmul double %686, %688
  store double %689, ptr %gep1241.1, align 8, !tbaa !9
  %indvars.iv.next1092.1 = add nuw nsw i64 %indvars.iv1091, 2
  %niter1393.next.1 = add i64 %niter1393, 2
  %niter1393.ncmp.1 = icmp eq i64 %niter1393.next.1, %unroll_iter1392
  br i1 %niter1393.ncmp.1, label %.loopexit710.loopexit.unr-lcssa, label %.lr.ph884.new, !llvm.loop !52

690:                                              ; preds = %671
  %.pre1173 = add nsw i32 %storemerge651887, -1
  br i1 %.not650870, label %.loopexit710, label %.lr.ph879

.lr.ph879:                                        ; preds = %690
  %691 = add nsw i32 %672, %498
  %692 = sext i32 %691 to i64
  %693 = getelementptr inbounds double, ptr %29, i64 %692
  %694 = add nsw i32 %672, %500
  %695 = sext i32 %694 to i64
  %696 = getelementptr inbounds double, ptr %29, i64 %695
  %697 = add nsw i32 %672, -1
  %698 = add nsw i32 %697, %500
  %699 = sext i32 %698 to i64
  %700 = getelementptr inbounds double, ptr %29, i64 %699
  %701 = add nsw i32 %697, %498
  %702 = sext i32 %701 to i64
  %703 = getelementptr inbounds double, ptr %29, i64 %702
  %704 = zext nneg i32 %storemerge651887 to i64
  %705 = zext nneg i32 %.pre1173 to i64
  %invariant.gep1236 = getelementptr double, ptr %29, i64 %704
  %invariant.gep1238 = getelementptr double, ptr %29, i64 %705
  br label %706

706:                                              ; preds = %.lr.ph879, %706
  %indvars.iv1086 = phi i64 [ 1, %.lr.ph879 ], [ %indvars.iv.next1087, %706 ]
  %707 = mul nsw i64 %indvars.iv1086, %507
  %gep1237 = getelementptr double, ptr %invariant.gep1236, i64 %707
  %708 = load double, ptr %gep1237, align 8, !tbaa !9
  %gep1239 = getelementptr double, ptr %invariant.gep1238, i64 %707
  %709 = load double, ptr %gep1239, align 8, !tbaa !9
  %710 = load double, ptr %693, align 8, !tbaa !9
  %711 = load double, ptr %696, align 8, !tbaa !9
  %712 = fmul double %709, %711
  %713 = call double @llvm.fmuladd.f64(double %710, double %708, double %712)
  store double %713, ptr %gep1237, align 8, !tbaa !9
  %714 = load double, ptr %700, align 8, !tbaa !9
  %715 = load double, ptr %703, align 8, !tbaa !9
  %716 = fmul double %709, %715
  %717 = call double @llvm.fmuladd.f64(double %714, double %708, double %716)
  store double %717, ptr %gep1239, align 8, !tbaa !9
  %indvars.iv.next1087 = add nuw nsw i64 %indvars.iv1086, 1
  %exitcond1090.not = icmp eq i64 %indvars.iv.next1087, %wide.trip.count1089
  br i1 %exitcond1090.not, label %.loopexit710, label %706, !llvm.loop !53

.loopexit710.loopexit.unr-lcssa:                  ; preds = %.lr.ph884.new, %.lr.ph884
  %indvars.iv1091.unr = phi i64 [ 1, %.lr.ph884 ], [ %indvars.iv.next1092.1, %.lr.ph884.new ]
  br i1 %lcmp.mod1391.not, label %.loopexit710, label %.loopexit710.loopexit.epilog-lcssa

.loopexit710.loopexit.epilog-lcssa:               ; preds = %.loopexit710.loopexit.unr-lcssa
  %718 = load double, ptr %680, align 8, !tbaa !9
  %719 = mul nsw i64 %indvars.iv1091.unr, %507
  %gep1241.epil = getelementptr double, ptr %invariant.gep1240, i64 %719
  %720 = load double, ptr %gep1241.epil, align 8, !tbaa !9
  %721 = fmul double %718, %720
  store double %721, ptr %gep1241.epil, align 8, !tbaa !9
  br label %.loopexit710

.loopexit710:                                     ; preds = %706, %.loopexit710.loopexit.epilog-lcssa, %.loopexit710.loopexit.unr-lcssa, %690, %677
  %storemerge651886 = phi i32 [ %storemerge651887, %677 ], [ %.pre1173, %690 ], [ %storemerge651887, %.loopexit710.loopexit.unr-lcssa ], [ %storemerge651887, %.loopexit710.loopexit.epilog-lcssa ], [ %.pre1173, %706 ]
  %722 = add nsw i32 %storemerge651886, -1
  %723 = icmp sgt i32 %storemerge651886, 1
  br i1 %723, label %671, label %.preheader713, !llvm.loop !54

.lr.ph902:                                        ; preds = %.lr.ph902.preheader, %.loopexit709
  %storemerge652901 = phi i32 [ %779, %.loopexit709 ], [ %610, %.lr.ph902.preheader ]
  %724 = add nsw i32 %storemerge652901, %storemerge645.in838
  %725 = sext i32 %724 to i64
  %726 = getelementptr inbounds i32, ptr %23, i64 %725
  %727 = load i32, ptr %726, align 4, !tbaa !5
  %728 = icmp sgt i32 %727, 0
  br i1 %728, label %.lr.ph898, label %.lr.ph893

.lr.ph898:                                        ; preds = %.lr.ph902
  %729 = add nsw i32 %724, %498
  %730 = sext i32 %729 to i64
  %731 = getelementptr inbounds double, ptr %29, i64 %730
  %732 = add nsw i32 %storemerge652901, %105
  %733 = sext i32 %732 to i64
  %invariant.gep1244 = getelementptr double, ptr %29, i64 %733
  br i1 %670, label %.loopexit709.loopexit.unr-lcssa, label %.lr.ph898.new

.lr.ph898.new:                                    ; preds = %.lr.ph898, %.lr.ph898.new
  %indvars.iv1101 = phi i64 [ %indvars.iv.next1102.1, %.lr.ph898.new ], [ 1, %.lr.ph898 ]
  %niter1399 = phi i64 [ %niter1399.next.1, %.lr.ph898.new ], [ 0, %.lr.ph898 ]
  %734 = load double, ptr %731, align 8, !tbaa !9
  %735 = mul nsw i64 %indvars.iv1101, %507
  %gep1245 = getelementptr double, ptr %invariant.gep1244, i64 %735
  %736 = load double, ptr %gep1245, align 8, !tbaa !9
  %737 = fmul double %734, %736
  store double %737, ptr %gep1245, align 8, !tbaa !9
  %indvars.iv.next1102 = add nuw nsw i64 %indvars.iv1101, 1
  %738 = load double, ptr %731, align 8, !tbaa !9
  %739 = mul nsw i64 %indvars.iv.next1102, %507
  %gep1245.1 = getelementptr double, ptr %invariant.gep1244, i64 %739
  %740 = load double, ptr %gep1245.1, align 8, !tbaa !9
  %741 = fmul double %738, %740
  store double %741, ptr %gep1245.1, align 8, !tbaa !9
  %indvars.iv.next1102.1 = add nuw nsw i64 %indvars.iv1101, 2
  %niter1399.next.1 = add i64 %niter1399, 2
  %niter1399.ncmp.1 = icmp eq i64 %niter1399.next.1, %unroll_iter1398
  br i1 %niter1399.ncmp.1, label %.loopexit709.loopexit.unr-lcssa, label %.lr.ph898.new, !llvm.loop !55

.lr.ph893:                                        ; preds = %.lr.ph902
  %742 = add nsw i32 %storemerge652901, %105
  %743 = add nsw i32 %724, %498
  %744 = sext i32 %743 to i64
  %745 = getelementptr inbounds double, ptr %29, i64 %744
  %746 = add nsw i32 %724, %500
  %747 = sext i32 %746 to i64
  %748 = getelementptr inbounds double, ptr %29, i64 %747
  %749 = add nsw i32 %724, -1
  %750 = add nsw i32 %749, %500
  %751 = sext i32 %750 to i64
  %752 = getelementptr inbounds double, ptr %29, i64 %751
  %753 = add nsw i32 %749, %498
  %754 = sext i32 %753 to i64
  %755 = getelementptr inbounds double, ptr %29, i64 %754
  %756 = sext i32 %742 to i64
  %invariant.gep1242 = getelementptr double, ptr %29, i64 %756
  br label %757

757:                                              ; preds = %.lr.ph893, %757
  %indvars.iv1096 = phi i64 [ 1, %.lr.ph893 ], [ %indvars.iv.next1097, %757 ]
  %758 = mul nsw i64 %indvars.iv1096, %507
  %gep1243 = getelementptr double, ptr %invariant.gep1242, i64 %758
  %759 = load double, ptr %gep1243, align 8, !tbaa !9
  %760 = trunc nsw i64 %758 to i32
  %761 = add i32 %742, %760
  %762 = add i32 %761, -1
  %763 = sext i32 %762 to i64
  %764 = getelementptr inbounds double, ptr %29, i64 %763
  %765 = load double, ptr %764, align 8, !tbaa !9
  %766 = load double, ptr %745, align 8, !tbaa !9
  %767 = load double, ptr %748, align 8, !tbaa !9
  %768 = fmul double %765, %767
  %769 = call double @llvm.fmuladd.f64(double %766, double %759, double %768)
  store double %769, ptr %gep1243, align 8, !tbaa !9
  %770 = load double, ptr %752, align 8, !tbaa !9
  %771 = load double, ptr %755, align 8, !tbaa !9
  %772 = fmul double %765, %771
  %773 = call double @llvm.fmuladd.f64(double %770, double %759, double %772)
  store double %773, ptr %764, align 8, !tbaa !9
  %indvars.iv.next1097 = add nuw nsw i64 %indvars.iv1096, 1
  %exitcond1100.not = icmp eq i64 %indvars.iv.next1097, %wide.trip.count1099
  br i1 %exitcond1100.not, label %._crit_edge894, label %757, !llvm.loop !56

._crit_edge894:                                   ; preds = %757
  %774 = add nsw i32 %storemerge652901, -1
  br label %.loopexit709

.loopexit709.loopexit.unr-lcssa:                  ; preds = %.lr.ph898.new, %.lr.ph898
  %indvars.iv1101.unr = phi i64 [ 1, %.lr.ph898 ], [ %indvars.iv.next1102.1, %.lr.ph898.new ]
  br i1 %lcmp.mod1397.not, label %.loopexit709, label %.loopexit709.loopexit.epilog-lcssa

.loopexit709.loopexit.epilog-lcssa:               ; preds = %.loopexit709.loopexit.unr-lcssa
  %775 = load double, ptr %731, align 8, !tbaa !9
  %776 = mul nsw i64 %indvars.iv1101.unr, %507
  %gep1245.epil = getelementptr double, ptr %invariant.gep1244, i64 %776
  %777 = load double, ptr %gep1245.epil, align 8, !tbaa !9
  %778 = fmul double %775, %777
  store double %778, ptr %gep1245.epil, align 8, !tbaa !9
  br label %.loopexit709

.loopexit709:                                     ; preds = %.loopexit709.loopexit.epilog-lcssa, %.loopexit709.loopexit.unr-lcssa, %._crit_edge894
  %storemerge652900 = phi i32 [ %774, %._crit_edge894 ], [ %storemerge652901, %.loopexit709.loopexit.unr-lcssa ], [ %storemerge652901, %.loopexit709.loopexit.epilog-lcssa ]
  %779 = add nsw i32 %storemerge652900, -1
  %780 = icmp sgt i32 %storemerge652900, 1
  br i1 %780, label %.lr.ph902, label %._crit_edge903.loopexit, !llvm.loop !57

._crit_edge903.loopexit:                          ; preds = %.loopexit709
  store i32 %610, ptr %12, align 4, !tbaa !5
  br label %._crit_edge903

._crit_edge903:                                   ; preds = %._crit_edge903.loopexit, %.preheader713
  %storemerge652.lcssa = phi i32 [ %610, %.preheader713 ], [ %779, %._crit_edge903.loopexit ]
  store i32 %storemerge652.lcssa, ptr %15, align 4, !tbaa !5
  %781 = add i32 %560, 1
  %782 = add i32 %781, %561
  store i32 %782, ptr %12, align 4, !tbaa !5
  %783 = add nsw i32 %storemerge645.in838, 1
  %784 = mul i32 %783, %501
  %785 = sext i32 %784 to i64
  %786 = getelementptr inbounds double, ptr %21, i64 %785
  call void @dtrmm_(ptr noundef nonnull @.str.1, ptr noundef %0, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str, ptr noundef nonnull %17, ptr noundef nonnull %17, ptr noundef nonnull @c_b10, ptr noundef %786, ptr noundef nonnull %3, ptr noundef %505, ptr noundef nonnull %12) #5
  %787 = load i32, ptr %17, align 4, !tbaa !5
  %.not654906 = icmp slt i32 %787, 1
  %.pre1168 = load i32, ptr %18, align 4, !tbaa !5
  br i1 %.not654906, label %.thread1185, label %.lr.ph909

.lr.ph909:                                        ; preds = %._crit_edge903
  %788 = sext i32 %.pre1168 to i64
  %789 = add nuw i32 %787, 1
  %wide.trip.count1120 = zext i32 %789 to i64
  %invariant.gep1248 = getelementptr double, ptr %21, i64 %788
  br label %790

790:                                              ; preds = %.lr.ph909, %813
  %indvar1401 = phi i64 [ 0, %.lr.ph909 ], [ %indvar.next1402, %813 ]
  %indvars.iv1115 = phi i64 [ 1, %.lr.ph909 ], [ %indvars.iv.next1116, %813 ]
  %gep1247 = getelementptr double, ptr %invariant.gep1246, i64 %indvars.iv1115
  %gep1249 = getelementptr double, ptr %invariant.gep1248, i64 %indvars.iv1115
  %791 = icmp eq i64 %indvar1401, 0
  br i1 %791, label %.unr-lcssa, label %.new

.new:                                             ; preds = %790
  %792 = add i64 %indvar1401, 1
  %unroll_iter1406 = and i64 %792, -2
  br label %793

793:                                              ; preds = %793, %.new
  %indvars.iv1106 = phi i64 [ 1, %.new ], [ %indvars.iv.next1107.1, %793 ]
  %niter1407 = phi i64 [ 0, %.new ], [ %niter1407.next.1, %793 ]
  %794 = mul nsw i64 %indvars.iv1106, %507
  %795 = getelementptr double, ptr %gep1247, i64 %794
  %796 = load double, ptr %795, align 8, !tbaa !9
  %797 = add nsw i64 %indvars.iv1106, %788
  %798 = mul nsw i64 %797, %506
  %799 = getelementptr double, ptr %gep1249, i64 %798
  store double %796, ptr %799, align 8, !tbaa !9
  %indvars.iv.next1107 = add nuw nsw i64 %indvars.iv1106, 1
  %800 = mul nsw i64 %indvars.iv.next1107, %507
  %801 = getelementptr double, ptr %gep1247, i64 %800
  %802 = load double, ptr %801, align 8, !tbaa !9
  %803 = add nsw i64 %indvars.iv.next1107, %788
  %804 = mul nsw i64 %803, %506
  %805 = getelementptr double, ptr %gep1249, i64 %804
  store double %802, ptr %805, align 8, !tbaa !9
  %indvars.iv.next1107.1 = add nuw nsw i64 %indvars.iv1106, 2
  %niter1407.next.1 = add i64 %niter1407, 2
  %niter1407.ncmp.1 = icmp eq i64 %niter1407.next.1, %unroll_iter1406
  br i1 %niter1407.ncmp.1, label %.unr-lcssa, label %793, !llvm.loop !58

.unr-lcssa:                                       ; preds = %793, %790
  %indvars.iv1106.unr = phi i64 [ 1, %790 ], [ %indvars.iv.next1107.1, %793 ]
  %806 = and i64 %indvar1401, 1
  %lcmp.mod1405.not.not = icmp eq i64 %806, 0
  br i1 %lcmp.mod1405.not.not, label %.epilog-lcssa, label %813

.epilog-lcssa:                                    ; preds = %.unr-lcssa
  %807 = mul nsw i64 %indvars.iv1106.unr, %507
  %808 = getelementptr double, ptr %gep1247, i64 %807
  %809 = load double, ptr %808, align 8, !tbaa !9
  %810 = add nsw i64 %indvars.iv1106.unr, %788
  %811 = mul nsw i64 %810, %506
  %812 = getelementptr double, ptr %gep1249, i64 %811
  store double %809, ptr %812, align 8, !tbaa !9
  br label %813

813:                                              ; preds = %.unr-lcssa, %.epilog-lcssa
  %indvars.iv.next1116 = add nuw nsw i64 %indvars.iv1115, 1
  %exitcond1121.not = icmp eq i64 %indvars.iv.next1116, %wide.trip.count1120
  %indvar.next1402 = add i64 %indvar1401, 1
  br i1 %exitcond1121.not, label %814, label %790, !llvm.loop !59

814:                                              ; preds = %813
  %815 = trunc nuw nsw i64 %indvars.iv1115 to i32
  store i32 %815, ptr %13, align 4, !tbaa !5
  store i32 %789, ptr %15, align 4, !tbaa !5
  %816 = add nsw i32 %.pre1168, %787
  %817 = load i32, ptr %1, align 4, !tbaa !5
  %818 = icmp slt i32 %816, %817
  br i1 %818, label %822, label %906

.thread1185:                                      ; preds = %._crit_edge903
  store i32 1, ptr %15, align 4, !tbaa !5
  %819 = add nsw i32 %.pre1168, %787
  %820 = load i32, ptr %1, align 4, !tbaa !5
  %821 = icmp slt i32 %819, %820
  br i1 %821, label %822, label %.thread1187

.thread1187:                                      ; preds = %.thread1185
  store i32 %787, ptr %12, align 4, !tbaa !5
  br label %.loopexit711

822:                                              ; preds = %.thread1185, %814
  %823 = phi i32 [ %820, %.thread1185 ], [ %817, %814 ]
  %824 = phi i32 [ %819, %.thread1185 ], [ %816, %814 ]
  %825 = sub i32 %823, %824
  store i32 %825, ptr %12, align 4, !tbaa !5
  %826 = load i32, ptr %7, align 4, !tbaa !5
  %827 = add i32 %823, 1
  %828 = add i32 %827, %826
  store i32 %828, ptr %13, align 4, !tbaa !5
  store i32 %828, ptr %14, align 4, !tbaa !5
  %829 = add nsw i32 %824, 1
  %830 = add nsw i32 %.pre1168, 1
  %831 = mul nsw i32 %830, %19
  %832 = add nsw i32 %829, %831
  %833 = sext i32 %832 to i64
  %834 = getelementptr inbounds double, ptr %21, i64 %833
  call void @dgemm_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull %17, ptr noundef nonnull %17, ptr noundef nonnull %12, ptr noundef nonnull @c_b10, ptr noundef %834, ptr noundef nonnull %3, ptr noundef %6, ptr noundef nonnull %13, ptr noundef nonnull @c_b14, ptr noundef %505, ptr noundef nonnull %14) #5
  %835 = load i32, ptr %17, align 4, !tbaa !5
  %.not659919 = icmp slt i32 %835, 1
  %.pre1169 = load i32, ptr %18, align 4, !tbaa !5
  br i1 %.not659919, label %._crit_edge923, label %.lr.ph922

.lr.ph922:                                        ; preds = %822
  %836 = sext i32 %.pre1169 to i64
  %837 = add nuw i32 %835, 1
  %wide.trip.count1152 = zext i32 %837 to i64
  %invariant.gep1256 = getelementptr double, ptr %21, i64 %836
  br label %838

838:                                              ; preds = %.lr.ph922, %867
  %indvar1421 = phi i64 [ 0, %.lr.ph922 ], [ %indvar.next1422, %867 ]
  %indvars.iv1147 = phi i64 [ 1, %.lr.ph922 ], [ %indvars.iv.next1148, %867 ]
  %gep1255 = getelementptr double, ptr %invariant.gep1254, i64 %indvars.iv1147
  %gep1257 = getelementptr double, ptr %invariant.gep1256, i64 %indvars.iv1147
  %839 = icmp eq i64 %indvar1421, 0
  br i1 %839, label %.unr-lcssa1419, label %.new1418

.new1418:                                         ; preds = %838
  %840 = add i64 %indvar1421, 1
  %unroll_iter1427 = and i64 %840, -2
  br label %841

841:                                              ; preds = %841, %.new1418
  %indvars.iv1138 = phi i64 [ 1, %.new1418 ], [ %indvars.iv.next1139.1, %841 ]
  %niter1428 = phi i64 [ 0, %.new1418 ], [ %niter1428.next.1, %841 ]
  %842 = mul nsw i64 %indvars.iv1138, %507
  %843 = getelementptr double, ptr %gep1255, i64 %842
  %844 = load double, ptr %843, align 8, !tbaa !9
  %845 = add nsw i64 %indvars.iv1138, %836
  %846 = mul nsw i64 %845, %506
  %847 = getelementptr double, ptr %gep1257, i64 %846
  %848 = load double, ptr %847, align 8, !tbaa !9
  %849 = fadd double %844, %848
  store double %849, ptr %847, align 8, !tbaa !9
  %indvars.iv.next1139 = add nuw nsw i64 %indvars.iv1138, 1
  %850 = mul nsw i64 %indvars.iv.next1139, %507
  %851 = getelementptr double, ptr %gep1255, i64 %850
  %852 = load double, ptr %851, align 8, !tbaa !9
  %853 = add nsw i64 %indvars.iv.next1139, %836
  %854 = mul nsw i64 %853, %506
  %855 = getelementptr double, ptr %gep1257, i64 %854
  %856 = load double, ptr %855, align 8, !tbaa !9
  %857 = fadd double %852, %856
  store double %857, ptr %855, align 8, !tbaa !9
  %indvars.iv.next1139.1 = add nuw nsw i64 %indvars.iv1138, 2
  %niter1428.next.1 = add i64 %niter1428, 2
  %niter1428.ncmp.1 = icmp eq i64 %niter1428.next.1, %unroll_iter1427
  br i1 %niter1428.ncmp.1, label %.unr-lcssa1419, label %841, !llvm.loop !60

.unr-lcssa1419:                                   ; preds = %841, %838
  %indvars.iv1138.unr = phi i64 [ 1, %838 ], [ %indvars.iv.next1139.1, %841 ]
  %858 = and i64 %indvar1421, 1
  %lcmp.mod1425.not.not = icmp eq i64 %858, 0
  br i1 %lcmp.mod1425.not.not, label %.epilog-lcssa1426, label %867

.epilog-lcssa1426:                                ; preds = %.unr-lcssa1419
  %859 = mul nsw i64 %indvars.iv1138.unr, %507
  %860 = getelementptr double, ptr %gep1255, i64 %859
  %861 = load double, ptr %860, align 8, !tbaa !9
  %862 = add nsw i64 %indvars.iv1138.unr, %836
  %863 = mul nsw i64 %862, %506
  %864 = getelementptr double, ptr %gep1257, i64 %863
  %865 = load double, ptr %864, align 8, !tbaa !9
  %866 = fadd double %861, %865
  store double %866, ptr %864, align 8, !tbaa !9
  br label %867

867:                                              ; preds = %.unr-lcssa1419, %.epilog-lcssa1426
  %indvars.iv.next1148 = add nuw nsw i64 %indvars.iv1147, 1
  %exitcond1153.not = icmp eq i64 %indvars.iv.next1148, %wide.trip.count1152
  %indvar.next1422 = add i64 %indvar1421, 1
  br i1 %exitcond1153.not, label %._crit_edge923, label %838, !llvm.loop !61

._crit_edge923:                                   ; preds = %867, %822
  %storemerge658.lcssa = phi i32 [ 1, %822 ], [ %837, %867 ]
  store i32 %storemerge658.lcssa, ptr %15, align 4, !tbaa !5
  %868 = load i32, ptr %1, align 4, !tbaa !5
  %869 = add i32 %.pre1169, %835
  %870 = sub i32 %868, %869
  store i32 %870, ptr %12, align 4, !tbaa !5
  %871 = load i32, ptr %7, align 4, !tbaa !5
  %872 = add i32 %868, 1
  %873 = add i32 %872, %871
  store i32 %873, ptr %13, align 4, !tbaa !5
  %874 = add nsw i32 %869, 1
  %875 = mul i32 %874, %501
  %876 = sext i32 %875 to i64
  %877 = getelementptr inbounds double, ptr %21, i64 %876
  call void @dtrmm_(ptr noundef nonnull @.str.1, ptr noundef %0, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str, ptr noundef nonnull %12, ptr noundef nonnull %17, ptr noundef nonnull @c_b10, ptr noundef %877, ptr noundef nonnull %3, ptr noundef %6, ptr noundef nonnull %13) #5
  %878 = load i32, ptr %1, align 4, !tbaa !5
  %879 = load i32, ptr %18, align 4, !tbaa !5
  %880 = load i32, ptr %17, align 4, !tbaa !5
  %881 = add i32 %880, %879
  %882 = sub i32 %878, %881
  store i32 %882, ptr %12, align 4, !tbaa !5
  %.not661930 = icmp slt i32 %882, 1
  br i1 %.not661930, label %.loopexit711, label %.lr.ph933

.lr.ph933:                                        ; preds = %._crit_edge923
  %.not662925 = icmp slt i32 %880, 1
  br i1 %.not662925, label %.lr.ph933.split.us.preheader, label %.lr.ph928.preheader

.lr.ph928.preheader:                              ; preds = %.lr.ph933
  %883 = sext i32 %879 to i64
  %884 = sext i32 %881 to i64
  %885 = add i32 %878, 1
  %886 = sub i32 %885, %881
  %wide.trip.count1162 = zext i32 %886 to i64
  %invariant.gep1260 = getelementptr double, ptr %21, i64 %884
  %887 = zext nneg i32 %880 to i64
  %xtraiter1430 = and i64 %887, 1
  %888 = icmp eq i32 %880, 1
  %unroll_iter1433 = and i64 %887, 2147483646
  %lcmp.mod1432.not = icmp eq i64 %xtraiter1430, 0
  br label %.lr.ph928

.lr.ph933.split.us.preheader:                     ; preds = %.lr.ph933
  %889 = add i32 %878, 1
  %890 = sub i32 %889, %881
  br label %..loopexit711_crit_edge

.lr.ph928:                                        ; preds = %.lr.ph928.preheader, %._crit_edge929
  %indvars.iv1159 = phi i64 [ 1, %.lr.ph928.preheader ], [ %indvars.iv.next1160, %._crit_edge929 ]
  %invariant.gep1258 = getelementptr double, ptr %29, i64 %indvars.iv1159
  %gep1261 = getelementptr double, ptr %invariant.gep1260, i64 %indvars.iv1159
  br i1 %888, label %._crit_edge929.unr-lcssa, label %.lr.ph928.new

.lr.ph928.new:                                    ; preds = %.lr.ph928, %.lr.ph928.new
  %indvars.iv1154 = phi i64 [ %indvars.iv.next1155.1, %.lr.ph928.new ], [ 1, %.lr.ph928 ]
  %niter1434 = phi i64 [ %niter1434.next.1, %.lr.ph928.new ], [ 0, %.lr.ph928 ]
  %891 = mul nsw i64 %indvars.iv1154, %507
  %gep1259 = getelementptr double, ptr %invariant.gep1258, i64 %891
  %892 = load double, ptr %gep1259, align 8, !tbaa !9
  %893 = add nsw i64 %indvars.iv1154, %883
  %894 = mul nsw i64 %893, %506
  %895 = getelementptr double, ptr %gep1261, i64 %894
  store double %892, ptr %895, align 8, !tbaa !9
  %indvars.iv.next1155 = add nuw nsw i64 %indvars.iv1154, 1
  %896 = mul nsw i64 %indvars.iv.next1155, %507
  %gep1259.1 = getelementptr double, ptr %invariant.gep1258, i64 %896
  %897 = load double, ptr %gep1259.1, align 8, !tbaa !9
  %898 = add nsw i64 %indvars.iv.next1155, %883
  %899 = mul nsw i64 %898, %506
  %900 = getelementptr double, ptr %gep1261, i64 %899
  store double %897, ptr %900, align 8, !tbaa !9
  %indvars.iv.next1155.1 = add nuw nsw i64 %indvars.iv1154, 2
  %niter1434.next.1 = add i64 %niter1434, 2
  %niter1434.ncmp.1 = icmp eq i64 %niter1434.next.1, %unroll_iter1433
  br i1 %niter1434.ncmp.1, label %._crit_edge929.unr-lcssa, label %.lr.ph928.new, !llvm.loop !62

._crit_edge929.unr-lcssa:                         ; preds = %.lr.ph928.new, %.lr.ph928
  %indvars.iv1154.unr = phi i64 [ 1, %.lr.ph928 ], [ %indvars.iv.next1155.1, %.lr.ph928.new ]
  br i1 %lcmp.mod1432.not, label %._crit_edge929, label %._crit_edge929.epilog-lcssa

._crit_edge929.epilog-lcssa:                      ; preds = %._crit_edge929.unr-lcssa
  %901 = mul nsw i64 %indvars.iv1154.unr, %507
  %gep1259.epil = getelementptr double, ptr %invariant.gep1258, i64 %901
  %902 = load double, ptr %gep1259.epil, align 8, !tbaa !9
  %903 = add nsw i64 %indvars.iv1154.unr, %883
  %904 = mul nsw i64 %903, %506
  %905 = getelementptr double, ptr %gep1261, i64 %904
  store double %902, ptr %905, align 8, !tbaa !9
  br label %._crit_edge929

._crit_edge929:                                   ; preds = %._crit_edge929.unr-lcssa, %._crit_edge929.epilog-lcssa
  %indvars.iv.next1160 = add nuw nsw i64 %indvars.iv1159, 1
  %exitcond1163.not = icmp eq i64 %indvars.iv.next1160, %wide.trip.count1162
  br i1 %exitcond1163.not, label %..loopexit711_crit_edge, label %.lr.ph928, !llvm.loop !63

906:                                              ; preds = %814
  store i32 %787, ptr %12, align 4, !tbaa !5
  br i1 %.not654906, label %.loopexit711, label %.lr.ph916.preheader

.lr.ph916.preheader:                              ; preds = %906
  %907 = sext i32 %.pre1168 to i64
  %908 = add nuw i32 %787, 1
  %wide.trip.count1136 = zext i32 %908 to i64
  %invariant.gep1252 = getelementptr double, ptr %21, i64 %907
  br label %.lr.ph916

.lr.ph916:                                        ; preds = %.lr.ph916.preheader, %931
  %indvar1410 = phi i64 [ 0, %.lr.ph916.preheader ], [ %indvar.next1411, %931 ]
  %indvars.iv1131 = phi i64 [ 1, %.lr.ph916.preheader ], [ %indvars.iv.next1132, %931 ]
  %gep1251 = getelementptr double, ptr %invariant.gep1250, i64 %indvars.iv1131
  %gep1253 = getelementptr double, ptr %invariant.gep1252, i64 %indvars.iv1131
  %909 = icmp eq i64 %indvar1410, 0
  br i1 %909, label %.unr-lcssa1408, label %.lr.ph916.new

.lr.ph916.new:                                    ; preds = %.lr.ph916
  %910 = add i64 %indvar1410, 1
  %unroll_iter1416 = and i64 %910, -2
  br label %911

911:                                              ; preds = %911, %.lr.ph916.new
  %indvars.iv1122 = phi i64 [ 1, %.lr.ph916.new ], [ %indvars.iv.next1123.1, %911 ]
  %niter1417 = phi i64 [ 0, %.lr.ph916.new ], [ %niter1417.next.1, %911 ]
  %912 = mul nsw i64 %indvars.iv1122, %507
  %913 = getelementptr double, ptr %gep1251, i64 %912
  %914 = load double, ptr %913, align 8, !tbaa !9
  %915 = add nsw i64 %indvars.iv1122, %907
  %916 = mul nsw i64 %915, %506
  %917 = getelementptr double, ptr %gep1253, i64 %916
  store double %914, ptr %917, align 8, !tbaa !9
  %indvars.iv.next1123 = add nuw nsw i64 %indvars.iv1122, 1
  %918 = mul nsw i64 %indvars.iv.next1123, %507
  %919 = getelementptr double, ptr %gep1251, i64 %918
  %920 = load double, ptr %919, align 8, !tbaa !9
  %921 = add nsw i64 %indvars.iv.next1123, %907
  %922 = mul nsw i64 %921, %506
  %923 = getelementptr double, ptr %gep1253, i64 %922
  store double %920, ptr %923, align 8, !tbaa !9
  %indvars.iv.next1123.1 = add nuw nsw i64 %indvars.iv1122, 2
  %niter1417.next.1 = add i64 %niter1417, 2
  %niter1417.ncmp.1 = icmp eq i64 %niter1417.next.1, %unroll_iter1416
  br i1 %niter1417.ncmp.1, label %.unr-lcssa1408, label %911, !llvm.loop !64

.unr-lcssa1408:                                   ; preds = %911, %.lr.ph916
  %indvars.iv1122.unr = phi i64 [ 1, %.lr.ph916 ], [ %indvars.iv.next1123.1, %911 ]
  %924 = and i64 %indvar1410, 1
  %lcmp.mod1414.not.not = icmp eq i64 %924, 0
  br i1 %lcmp.mod1414.not.not, label %.epilog-lcssa1415, label %931

.epilog-lcssa1415:                                ; preds = %.unr-lcssa1408
  %925 = mul nsw i64 %indvars.iv1122.unr, %507
  %926 = getelementptr double, ptr %gep1251, i64 %925
  %927 = load double, ptr %926, align 8, !tbaa !9
  %928 = add nsw i64 %indvars.iv1122.unr, %907
  %929 = mul nsw i64 %928, %506
  %930 = getelementptr double, ptr %gep1253, i64 %929
  store double %927, ptr %930, align 8, !tbaa !9
  br label %931

931:                                              ; preds = %.unr-lcssa1408, %.epilog-lcssa1415
  %indvars.iv.next1132 = add nuw nsw i64 %indvars.iv1131, 1
  %exitcond1137.not = icmp eq i64 %indvars.iv.next1132, %wide.trip.count1136
  %indvar.next1411 = add i64 %indvar1410, 1
  br i1 %exitcond1137.not, label %..loopexit712_crit_edge, label %.lr.ph916, !llvm.loop !65

..loopexit711_crit_edge:                          ; preds = %._crit_edge929, %.lr.ph933.split.us.preheader
  %.us-phi935 = phi i32 [ %890, %.lr.ph933.split.us.preheader ], [ %886, %._crit_edge929 ]
  store i32 %880, ptr %13, align 4, !tbaa !5
  br label %.loopexit711

..loopexit712_crit_edge:                          ; preds = %931
  %932 = trunc nuw nsw i64 %indvars.iv1131 to i32
  store i32 %932, ptr %13, align 4, !tbaa !5
  br label %.loopexit711

.loopexit711:                                     ; preds = %906, %..loopexit712_crit_edge, %.thread1187, %._crit_edge923, %..loopexit711_crit_edge
  %.pre-phi = phi i32 [ %881, %..loopexit711_crit_edge ], [ %881, %._crit_edge923 ], [ %816, %..loopexit712_crit_edge ], [ %816, %906 ], [ %819, %.thread1187 ]
  %933 = phi i32 [ %878, %..loopexit711_crit_edge ], [ %878, %._crit_edge923 ], [ %817, %..loopexit712_crit_edge ], [ %817, %906 ], [ %820, %.thread1187 ]
  %storemerge = phi i32 [ %.us-phi935, %..loopexit711_crit_edge ], [ 1, %._crit_edge923 ], [ %908, %..loopexit712_crit_edge ], [ 1, %906 ], [ 1, %.thread1187 ]
  store i32 %storemerge, ptr %15, align 4, !tbaa !5
  store i32 %.pre-phi, ptr %18, align 4, !tbaa !5
  %934 = icmp slt i32 %.pre-phi, %933
  br i1 %934, label %559, label %.preheader, !llvm.loop !66

.lr.ph941:                                        ; preds = %.preheader, %947
  %storemerge643940 = phi i32 [ %949, %947 ], [ %933, %.preheader ]
  %935 = zext nneg i32 %storemerge643940 to i64
  %936 = getelementptr inbounds i32, ptr %23, i64 %935
  %937 = load i32, ptr %936, align 4, !tbaa !5
  store i32 %937, ptr %12, align 4, !tbaa !5
  %938 = call i32 @llvm.abs.i32(i32 %937, i1 true)
  store i32 %938, ptr %16, align 4, !tbaa !5
  %.not644 = icmp eq i32 %938, %storemerge643940
  br i1 %.not644, label %947, label %939

939:                                              ; preds = %.lr.ph941
  %940 = icmp ult i32 %storemerge643940, %938
  br i1 %940, label %941, label %942

941:                                              ; preds = %939
  call void @dsyswapr_(ptr noundef %0, ptr noundef nonnull %1, ptr noundef %2, ptr noundef nonnull %3, ptr noundef nonnull %15, ptr noundef nonnull %16) #5
  %.pre1170 = load i32, ptr %15, align 4, !tbaa !5
  %.pre1171 = load i32, ptr %16, align 4, !tbaa !5
  br label %942

942:                                              ; preds = %941, %939
  %943 = phi i32 [ %.pre1171, %941 ], [ %938, %939 ]
  %944 = phi i32 [ %.pre1170, %941 ], [ %storemerge643940, %939 ]
  %945 = icmp sgt i32 %944, %943
  br i1 %945, label %946, label %947

946:                                              ; preds = %942
  call void @dsyswapr_(ptr noundef %0, ptr noundef nonnull %1, ptr noundef %2, ptr noundef nonnull %3, ptr noundef nonnull %16, ptr noundef nonnull %15) #5
  %.pre1172 = load i32, ptr %15, align 4, !tbaa !5
  br label %947

947:                                              ; preds = %.lr.ph941, %946, %942
  %948 = phi i32 [ %storemerge643940, %.lr.ph941 ], [ %.pre1172, %946 ], [ %944, %942 ]
  %949 = add nsw i32 %948, -1
  store i32 %949, ptr %15, align 4, !tbaa !5
  %950 = icmp sgt i32 %948, 1
  br i1 %950, label %.lr.ph941, label %.loopexit, !llvm.loop !67

.loopexit:                                        ; preds = %80, %96, %488, %947, %.preheader715, %492, %110, %._crit_edge830, %.preheader, %43, %.thread
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #5
  ret void
}

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

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

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

declare i32 @dtrtri_(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 void @dtrmm_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.abs.i32(i32, i1 immarg) #4

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.vector.reduce.add.v4i32(<4 x i32>) #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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = distinct !{!11, !12, !13, !14}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!"llvm.loop.isvectorized", i32 1}
!14 = !{!"llvm.loop.unroll.runtime.disable"}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.unroll.disable"}
!17 = distinct !{!17, !12, !13}
!18 = distinct !{!18, !12}
!19 = distinct !{!19, !12}
!20 = distinct !{!20, !12}
!21 = distinct !{!21, !12, !13, !14}
!22 = distinct !{!22, !12, !14, !13}
!23 = distinct !{!23, !12}
!24 = distinct !{!24, !12}
!25 = distinct !{!25, !12}
!26 = distinct !{!26, !16}
!27 = distinct !{!27, !12}
!28 = distinct !{!28, !12}
!29 = distinct !{!29, !12}
!30 = distinct !{!30, !12}
!31 = distinct !{!31, !12}
!32 = distinct !{!32, !12}
!33 = distinct !{!33, !12}
!34 = distinct !{!34, !12}
!35 = distinct !{!35, !12}
!36 = distinct !{!36, !12}
!37 = distinct !{!37, !12}
!38 = distinct !{!38, !12}
!39 = distinct !{!39, !12}
!40 = distinct !{!40, !12}
!41 = distinct !{!41, !12}
!42 = distinct !{!42, !12}
!43 = distinct !{!43, !12}
!44 = distinct !{!44, !12, !13, !14}
!45 = distinct !{!45, !16}
!46 = distinct !{!46, !12, !13}
!47 = distinct !{!47, !12}
!48 = distinct !{!48, !12}
!49 = distinct !{!49, !12}
!50 = distinct !{!50, !12}
!51 = distinct !{!51, !12}
!52 = distinct !{!52, !12}
!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}


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