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

; 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

; Function Attrs: nounwind uwtable
define dso_local i32 @dlagtm_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11) #0 {
  %13 = alloca i32, align 4
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca i64, align 8
  %27 = alloca i64, align 8
  %28 = alloca i64, align 8
  %29 = alloca i64, align 8
  %30 = alloca i64, align 8
  %31 = alloca i64, align 8
  %32 = alloca i64, align 8
  %33 = alloca i64, align 8
  %34 = alloca i32, align 4
  store ptr %0, ptr %14, align 8, !tbaa !5
  store ptr %1, ptr %15, align 8, !tbaa !5
  store ptr %2, ptr %16, align 8, !tbaa !5
  store ptr %3, ptr %17, align 8, !tbaa !5
  store ptr %4, ptr %18, align 8, !tbaa !5
  store ptr %5, ptr %19, align 8, !tbaa !5
  store ptr %6, ptr %20, align 8, !tbaa !5
  store ptr %7, ptr %21, align 8, !tbaa !5
  store ptr %8, ptr %22, align 8, !tbaa !5
  store ptr %9, ptr %23, align 8, !tbaa !5
  store ptr %10, ptr %24, align 8, !tbaa !5
  store ptr %11, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #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 8, ptr %29) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #4
  %35 = load ptr, ptr %18, align 8, !tbaa !5
  %36 = getelementptr inbounds double, ptr %35, i32 -1
  store ptr %36, ptr %18, align 8, !tbaa !5
  %37 = load ptr, ptr %19, align 8, !tbaa !5
  %38 = getelementptr inbounds double, ptr %37, i32 -1
  store ptr %38, ptr %19, align 8, !tbaa !5
  %39 = load ptr, ptr %20, align 8, !tbaa !5
  %40 = getelementptr inbounds double, ptr %39, i32 -1
  store ptr %40, ptr %20, align 8, !tbaa !5
  %41 = load ptr, ptr %22, align 8, !tbaa !5
  %42 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %42, ptr %28, align 8, !tbaa !9
  %43 = load i64, ptr %28, align 8, !tbaa !9
  %44 = add nsw i64 1, %43
  store i64 %44, ptr %29, align 8, !tbaa !9
  %45 = load i64, ptr %29, align 8, !tbaa !9
  %46 = load ptr, ptr %21, align 8, !tbaa !5
  %47 = sub i64 0, %45
  %48 = getelementptr inbounds double, ptr %46, i64 %47
  store ptr %48, ptr %21, align 8, !tbaa !5
  %49 = load ptr, ptr %25, align 8, !tbaa !5
  %50 = load i64, ptr %49, align 8, !tbaa !9
  store i64 %50, ptr %26, align 8, !tbaa !9
  %51 = load i64, ptr %26, align 8, !tbaa !9
  %52 = add nsw i64 1, %51
  store i64 %52, ptr %27, align 8, !tbaa !9
  %53 = load i64, ptr %27, align 8, !tbaa !9
  %54 = load ptr, ptr %24, align 8, !tbaa !5
  %55 = sub i64 0, %53
  %56 = getelementptr inbounds double, ptr %54, i64 %55
  store ptr %56, ptr %24, align 8, !tbaa !5
  %57 = load ptr, ptr %15, align 8, !tbaa !5
  %58 = load i64, ptr %57, align 8, !tbaa !9
  %59 = icmp eq i64 %58, 0
  br i1 %59, label %60, label %61

60:                                               ; preds = %12
  store i32 0, ptr %13, align 4
  store i32 1, ptr %34, align 4
  br label %931

61:                                               ; preds = %12
  %62 = load ptr, ptr %23, align 8, !tbaa !5
  %63 = load double, ptr %62, align 8, !tbaa !11
  %64 = fcmp oeq double %63, 0.000000e+00
  br i1 %64, label %65, label %95

65:                                               ; preds = %61
  %66 = load ptr, ptr %16, align 8, !tbaa !5
  %67 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %67, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %33, align 8, !tbaa !9
  br label %68

68:                                               ; preds = %91, %65
  %69 = load i64, ptr %33, align 8, !tbaa !9
  %70 = load i64, ptr %30, align 8, !tbaa !9
  %71 = icmp sle i64 %69, %70
  br i1 %71, label %72, label %94

72:                                               ; preds = %68
  %73 = load ptr, ptr %15, align 8, !tbaa !5
  %74 = load i64, ptr %73, align 8, !tbaa !9
  store i64 %74, ptr %31, align 8, !tbaa !9
  store i64 1, ptr %32, align 8, !tbaa !9
  br label %75

75:                                               ; preds = %87, %72
  %76 = load i64, ptr %32, align 8, !tbaa !9
  %77 = load i64, ptr %31, align 8, !tbaa !9
  %78 = icmp sle i64 %76, %77
  br i1 %78, label %79, label %90

79:                                               ; preds = %75
  %80 = load ptr, ptr %24, align 8, !tbaa !5
  %81 = load i64, ptr %32, align 8, !tbaa !9
  %82 = load i64, ptr %33, align 8, !tbaa !9
  %83 = load i64, ptr %26, align 8, !tbaa !9
  %84 = mul nsw i64 %82, %83
  %85 = add nsw i64 %81, %84
  %86 = getelementptr inbounds double, ptr %80, i64 %85
  store double 0.000000e+00, ptr %86, align 8, !tbaa !11
  br label %87

87:                                               ; preds = %79
  %88 = load i64, ptr %32, align 8, !tbaa !9
  %89 = add nsw i64 %88, 1
  store i64 %89, ptr %32, align 8, !tbaa !9
  br label %75, !llvm.loop !13

90:                                               ; preds = %75
  br label %91

91:                                               ; preds = %90
  %92 = load i64, ptr %33, align 8, !tbaa !9
  %93 = add nsw i64 %92, 1
  store i64 %93, ptr %33, align 8, !tbaa !9
  br label %68, !llvm.loop !15

94:                                               ; preds = %68
  br label %139

95:                                               ; preds = %61
  %96 = load ptr, ptr %23, align 8, !tbaa !5
  %97 = load double, ptr %96, align 8, !tbaa !11
  %98 = fcmp oeq double %97, -1.000000e+00
  br i1 %98, label %99, label %138

99:                                               ; preds = %95
  %100 = load ptr, ptr %16, align 8, !tbaa !5
  %101 = load i64, ptr %100, align 8, !tbaa !9
  store i64 %101, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %33, align 8, !tbaa !9
  br label %102

102:                                              ; preds = %134, %99
  %103 = load i64, ptr %33, align 8, !tbaa !9
  %104 = load i64, ptr %30, align 8, !tbaa !9
  %105 = icmp sle i64 %103, %104
  br i1 %105, label %106, label %137

106:                                              ; preds = %102
  %107 = load ptr, ptr %15, align 8, !tbaa !5
  %108 = load i64, ptr %107, align 8, !tbaa !9
  store i64 %108, ptr %31, align 8, !tbaa !9
  store i64 1, ptr %32, align 8, !tbaa !9
  br label %109

109:                                              ; preds = %130, %106
  %110 = load i64, ptr %32, align 8, !tbaa !9
  %111 = load i64, ptr %31, align 8, !tbaa !9
  %112 = icmp sle i64 %110, %111
  br i1 %112, label %113, label %133

113:                                              ; preds = %109
  %114 = load ptr, ptr %24, align 8, !tbaa !5
  %115 = load i64, ptr %32, align 8, !tbaa !9
  %116 = load i64, ptr %33, align 8, !tbaa !9
  %117 = load i64, ptr %26, align 8, !tbaa !9
  %118 = mul nsw i64 %116, %117
  %119 = add nsw i64 %115, %118
  %120 = getelementptr inbounds double, ptr %114, i64 %119
  %121 = load double, ptr %120, align 8, !tbaa !11
  %122 = fneg double %121
  %123 = load ptr, ptr %24, align 8, !tbaa !5
  %124 = load i64, ptr %32, align 8, !tbaa !9
  %125 = load i64, ptr %33, align 8, !tbaa !9
  %126 = load i64, ptr %26, align 8, !tbaa !9
  %127 = mul nsw i64 %125, %126
  %128 = add nsw i64 %124, %127
  %129 = getelementptr inbounds double, ptr %123, i64 %128
  store double %122, ptr %129, align 8, !tbaa !11
  br label %130

130:                                              ; preds = %113
  %131 = load i64, ptr %32, align 8, !tbaa !9
  %132 = add nsw i64 %131, 1
  store i64 %132, ptr %32, align 8, !tbaa !9
  br label %109, !llvm.loop !16

133:                                              ; preds = %109
  br label %134

134:                                              ; preds = %133
  %135 = load i64, ptr %33, align 8, !tbaa !9
  %136 = add nsw i64 %135, 1
  store i64 %136, ptr %33, align 8, !tbaa !9
  br label %102, !llvm.loop !17

137:                                              ; preds = %102
  br label %138

138:                                              ; preds = %137, %95
  br label %139

139:                                              ; preds = %138, %94
  %140 = load ptr, ptr %17, align 8, !tbaa !5
  %141 = load double, ptr %140, align 8, !tbaa !11
  %142 = fcmp oeq double %141, 1.000000e+00
  br i1 %142, label %143, label %526

143:                                              ; preds = %139
  %144 = load ptr, ptr %14, align 8, !tbaa !5
  %145 = call i64 @lsame_(ptr noundef %144, ptr noundef @.str)
  %146 = icmp ne i64 %145, 0
  br i1 %146, label %147, label %336

147:                                              ; preds = %143
  %148 = load ptr, ptr %16, align 8, !tbaa !5
  %149 = load i64, ptr %148, align 8, !tbaa !9
  store i64 %149, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %33, align 8, !tbaa !9
  br label %150

150:                                              ; preds = %332, %147
  %151 = load i64, ptr %33, align 8, !tbaa !9
  %152 = load i64, ptr %30, align 8, !tbaa !9
  %153 = icmp sle i64 %151, %152
  br i1 %153, label %154, label %335

154:                                              ; preds = %150
  %155 = load ptr, ptr %15, align 8, !tbaa !5
  %156 = load i64, ptr %155, align 8, !tbaa !9
  %157 = icmp eq i64 %156, 1
  br i1 %157, label %158, label %177

158:                                              ; preds = %154
  %159 = load ptr, ptr %19, align 8, !tbaa !5
  %160 = getelementptr inbounds double, ptr %159, i64 1
  %161 = load double, ptr %160, align 8, !tbaa !11
  %162 = load ptr, ptr %21, align 8, !tbaa !5
  %163 = load i64, ptr %33, align 8, !tbaa !9
  %164 = load i64, ptr %28, align 8, !tbaa !9
  %165 = mul nsw i64 %163, %164
  %166 = add nsw i64 %165, 1
  %167 = getelementptr inbounds double, ptr %162, i64 %166
  %168 = load double, ptr %167, align 8, !tbaa !11
  %169 = load ptr, ptr %24, align 8, !tbaa !5
  %170 = load i64, ptr %33, align 8, !tbaa !9
  %171 = load i64, ptr %26, align 8, !tbaa !9
  %172 = mul nsw i64 %170, %171
  %173 = add nsw i64 %172, 1
  %174 = getelementptr inbounds double, ptr %169, i64 %173
  %175 = load double, ptr %174, align 8, !tbaa !11
  %176 = call double @llvm.fmuladd.f64(double %161, double %168, double %175)
  store double %176, ptr %174, align 8, !tbaa !11
  br label %331

177:                                              ; preds = %154
  %178 = load ptr, ptr %24, align 8, !tbaa !5
  %179 = load i64, ptr %33, align 8, !tbaa !9
  %180 = load i64, ptr %26, align 8, !tbaa !9
  %181 = mul nsw i64 %179, %180
  %182 = add nsw i64 %181, 1
  %183 = getelementptr inbounds double, ptr %178, i64 %182
  %184 = load double, ptr %183, align 8, !tbaa !11
  %185 = load ptr, ptr %19, align 8, !tbaa !5
  %186 = getelementptr inbounds double, ptr %185, i64 1
  %187 = load double, ptr %186, align 8, !tbaa !11
  %188 = load ptr, ptr %21, align 8, !tbaa !5
  %189 = load i64, ptr %33, align 8, !tbaa !9
  %190 = load i64, ptr %28, align 8, !tbaa !9
  %191 = mul nsw i64 %189, %190
  %192 = add nsw i64 %191, 1
  %193 = getelementptr inbounds double, ptr %188, i64 %192
  %194 = load double, ptr %193, align 8, !tbaa !11
  %195 = call double @llvm.fmuladd.f64(double %187, double %194, double %184)
  %196 = load ptr, ptr %20, align 8, !tbaa !5
  %197 = getelementptr inbounds double, ptr %196, i64 1
  %198 = load double, ptr %197, align 8, !tbaa !11
  %199 = load ptr, ptr %21, align 8, !tbaa !5
  %200 = load i64, ptr %33, align 8, !tbaa !9
  %201 = load i64, ptr %28, align 8, !tbaa !9
  %202 = mul nsw i64 %200, %201
  %203 = add nsw i64 %202, 2
  %204 = getelementptr inbounds double, ptr %199, i64 %203
  %205 = load double, ptr %204, align 8, !tbaa !11
  %206 = call double @llvm.fmuladd.f64(double %198, double %205, double %195)
  %207 = load ptr, ptr %24, align 8, !tbaa !5
  %208 = load i64, ptr %33, align 8, !tbaa !9
  %209 = load i64, ptr %26, align 8, !tbaa !9
  %210 = mul nsw i64 %208, %209
  %211 = add nsw i64 %210, 1
  %212 = getelementptr inbounds double, ptr %207, i64 %211
  store double %206, ptr %212, align 8, !tbaa !11
  %213 = load ptr, ptr %24, align 8, !tbaa !5
  %214 = load ptr, ptr %15, align 8, !tbaa !5
  %215 = load i64, ptr %214, align 8, !tbaa !9
  %216 = load i64, ptr %33, align 8, !tbaa !9
  %217 = load i64, ptr %26, align 8, !tbaa !9
  %218 = mul nsw i64 %216, %217
  %219 = add nsw i64 %215, %218
  %220 = getelementptr inbounds double, ptr %213, i64 %219
  %221 = load double, ptr %220, align 8, !tbaa !11
  %222 = load ptr, ptr %18, align 8, !tbaa !5
  %223 = load ptr, ptr %15, align 8, !tbaa !5
  %224 = load i64, ptr %223, align 8, !tbaa !9
  %225 = sub nsw i64 %224, 1
  %226 = getelementptr inbounds double, ptr %222, i64 %225
  %227 = load double, ptr %226, align 8, !tbaa !11
  %228 = load ptr, ptr %21, align 8, !tbaa !5
  %229 = load ptr, ptr %15, align 8, !tbaa !5
  %230 = load i64, ptr %229, align 8, !tbaa !9
  %231 = sub nsw i64 %230, 1
  %232 = load i64, ptr %33, align 8, !tbaa !9
  %233 = load i64, ptr %28, align 8, !tbaa !9
  %234 = mul nsw i64 %232, %233
  %235 = add nsw i64 %231, %234
  %236 = getelementptr inbounds double, ptr %228, i64 %235
  %237 = load double, ptr %236, align 8, !tbaa !11
  %238 = call double @llvm.fmuladd.f64(double %227, double %237, double %221)
  %239 = load ptr, ptr %19, align 8, !tbaa !5
  %240 = load ptr, ptr %15, align 8, !tbaa !5
  %241 = load i64, ptr %240, align 8, !tbaa !9
  %242 = getelementptr inbounds double, ptr %239, i64 %241
  %243 = load double, ptr %242, align 8, !tbaa !11
  %244 = load ptr, ptr %21, align 8, !tbaa !5
  %245 = load ptr, ptr %15, align 8, !tbaa !5
  %246 = load i64, ptr %245, align 8, !tbaa !9
  %247 = load i64, ptr %33, align 8, !tbaa !9
  %248 = load i64, ptr %28, align 8, !tbaa !9
  %249 = mul nsw i64 %247, %248
  %250 = add nsw i64 %246, %249
  %251 = getelementptr inbounds double, ptr %244, i64 %250
  %252 = load double, ptr %251, align 8, !tbaa !11
  %253 = call double @llvm.fmuladd.f64(double %243, double %252, double %238)
  %254 = load ptr, ptr %24, align 8, !tbaa !5
  %255 = load ptr, ptr %15, align 8, !tbaa !5
  %256 = load i64, ptr %255, align 8, !tbaa !9
  %257 = load i64, ptr %33, align 8, !tbaa !9
  %258 = load i64, ptr %26, align 8, !tbaa !9
  %259 = mul nsw i64 %257, %258
  %260 = add nsw i64 %256, %259
  %261 = getelementptr inbounds double, ptr %254, i64 %260
  store double %253, ptr %261, align 8, !tbaa !11
  %262 = load ptr, ptr %15, align 8, !tbaa !5
  %263 = load i64, ptr %262, align 8, !tbaa !9
  %264 = sub nsw i64 %263, 1
  store i64 %264, ptr %31, align 8, !tbaa !9
  store i64 2, ptr %32, align 8, !tbaa !9
  br label %265

265:                                              ; preds = %327, %177
  %266 = load i64, ptr %32, align 8, !tbaa !9
  %267 = load i64, ptr %31, align 8, !tbaa !9
  %268 = icmp sle i64 %266, %267
  br i1 %268, label %269, label %330

269:                                              ; preds = %265
  %270 = load ptr, ptr %24, align 8, !tbaa !5
  %271 = load i64, ptr %32, align 8, !tbaa !9
  %272 = load i64, ptr %33, align 8, !tbaa !9
  %273 = load i64, ptr %26, align 8, !tbaa !9
  %274 = mul nsw i64 %272, %273
  %275 = add nsw i64 %271, %274
  %276 = getelementptr inbounds double, ptr %270, i64 %275
  %277 = load double, ptr %276, align 8, !tbaa !11
  %278 = load ptr, ptr %18, align 8, !tbaa !5
  %279 = load i64, ptr %32, align 8, !tbaa !9
  %280 = sub nsw i64 %279, 1
  %281 = getelementptr inbounds double, ptr %278, i64 %280
  %282 = load double, ptr %281, align 8, !tbaa !11
  %283 = load ptr, ptr %21, align 8, !tbaa !5
  %284 = load i64, ptr %32, align 8, !tbaa !9
  %285 = sub nsw i64 %284, 1
  %286 = load i64, ptr %33, align 8, !tbaa !9
  %287 = load i64, ptr %28, align 8, !tbaa !9
  %288 = mul nsw i64 %286, %287
  %289 = add nsw i64 %285, %288
  %290 = getelementptr inbounds double, ptr %283, i64 %289
  %291 = load double, ptr %290, align 8, !tbaa !11
  %292 = call double @llvm.fmuladd.f64(double %282, double %291, double %277)
  %293 = load ptr, ptr %19, align 8, !tbaa !5
  %294 = load i64, ptr %32, align 8, !tbaa !9
  %295 = getelementptr inbounds double, ptr %293, i64 %294
  %296 = load double, ptr %295, align 8, !tbaa !11
  %297 = load ptr, ptr %21, align 8, !tbaa !5
  %298 = load i64, ptr %32, align 8, !tbaa !9
  %299 = load i64, ptr %33, align 8, !tbaa !9
  %300 = load i64, ptr %28, align 8, !tbaa !9
  %301 = mul nsw i64 %299, %300
  %302 = add nsw i64 %298, %301
  %303 = getelementptr inbounds double, ptr %297, i64 %302
  %304 = load double, ptr %303, align 8, !tbaa !11
  %305 = call double @llvm.fmuladd.f64(double %296, double %304, double %292)
  %306 = load ptr, ptr %20, align 8, !tbaa !5
  %307 = load i64, ptr %32, align 8, !tbaa !9
  %308 = getelementptr inbounds double, ptr %306, i64 %307
  %309 = load double, ptr %308, align 8, !tbaa !11
  %310 = load ptr, ptr %21, align 8, !tbaa !5
  %311 = load i64, ptr %32, align 8, !tbaa !9
  %312 = add nsw i64 %311, 1
  %313 = load i64, ptr %33, align 8, !tbaa !9
  %314 = load i64, ptr %28, align 8, !tbaa !9
  %315 = mul nsw i64 %313, %314
  %316 = add nsw i64 %312, %315
  %317 = getelementptr inbounds double, ptr %310, i64 %316
  %318 = load double, ptr %317, align 8, !tbaa !11
  %319 = call double @llvm.fmuladd.f64(double %309, double %318, double %305)
  %320 = load ptr, ptr %24, align 8, !tbaa !5
  %321 = load i64, ptr %32, align 8, !tbaa !9
  %322 = load i64, ptr %33, align 8, !tbaa !9
  %323 = load i64, ptr %26, align 8, !tbaa !9
  %324 = mul nsw i64 %322, %323
  %325 = add nsw i64 %321, %324
  %326 = getelementptr inbounds double, ptr %320, i64 %325
  store double %319, ptr %326, align 8, !tbaa !11
  br label %327

327:                                              ; preds = %269
  %328 = load i64, ptr %32, align 8, !tbaa !9
  %329 = add nsw i64 %328, 1
  store i64 %329, ptr %32, align 8, !tbaa !9
  br label %265, !llvm.loop !18

330:                                              ; preds = %265
  br label %331

331:                                              ; preds = %330, %158
  br label %332

332:                                              ; preds = %331
  %333 = load i64, ptr %33, align 8, !tbaa !9
  %334 = add nsw i64 %333, 1
  store i64 %334, ptr %33, align 8, !tbaa !9
  br label %150, !llvm.loop !19

335:                                              ; preds = %150
  br label %525

336:                                              ; preds = %143
  %337 = load ptr, ptr %16, align 8, !tbaa !5
  %338 = load i64, ptr %337, align 8, !tbaa !9
  store i64 %338, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %33, align 8, !tbaa !9
  br label %339

339:                                              ; preds = %521, %336
  %340 = load i64, ptr %33, align 8, !tbaa !9
  %341 = load i64, ptr %30, align 8, !tbaa !9
  %342 = icmp sle i64 %340, %341
  br i1 %342, label %343, label %524

343:                                              ; preds = %339
  %344 = load ptr, ptr %15, align 8, !tbaa !5
  %345 = load i64, ptr %344, align 8, !tbaa !9
  %346 = icmp eq i64 %345, 1
  br i1 %346, label %347, label %366

347:                                              ; preds = %343
  %348 = load ptr, ptr %19, align 8, !tbaa !5
  %349 = getelementptr inbounds double, ptr %348, i64 1
  %350 = load double, ptr %349, align 8, !tbaa !11
  %351 = load ptr, ptr %21, align 8, !tbaa !5
  %352 = load i64, ptr %33, align 8, !tbaa !9
  %353 = load i64, ptr %28, align 8, !tbaa !9
  %354 = mul nsw i64 %352, %353
  %355 = add nsw i64 %354, 1
  %356 = getelementptr inbounds double, ptr %351, i64 %355
  %357 = load double, ptr %356, align 8, !tbaa !11
  %358 = load ptr, ptr %24, align 8, !tbaa !5
  %359 = load i64, ptr %33, align 8, !tbaa !9
  %360 = load i64, ptr %26, align 8, !tbaa !9
  %361 = mul nsw i64 %359, %360
  %362 = add nsw i64 %361, 1
  %363 = getelementptr inbounds double, ptr %358, i64 %362
  %364 = load double, ptr %363, align 8, !tbaa !11
  %365 = call double @llvm.fmuladd.f64(double %350, double %357, double %364)
  store double %365, ptr %363, align 8, !tbaa !11
  br label %520

366:                                              ; preds = %343
  %367 = load ptr, ptr %24, align 8, !tbaa !5
  %368 = load i64, ptr %33, align 8, !tbaa !9
  %369 = load i64, ptr %26, align 8, !tbaa !9
  %370 = mul nsw i64 %368, %369
  %371 = add nsw i64 %370, 1
  %372 = getelementptr inbounds double, ptr %367, i64 %371
  %373 = load double, ptr %372, align 8, !tbaa !11
  %374 = load ptr, ptr %19, align 8, !tbaa !5
  %375 = getelementptr inbounds double, ptr %374, i64 1
  %376 = load double, ptr %375, align 8, !tbaa !11
  %377 = load ptr, ptr %21, align 8, !tbaa !5
  %378 = load i64, ptr %33, align 8, !tbaa !9
  %379 = load i64, ptr %28, align 8, !tbaa !9
  %380 = mul nsw i64 %378, %379
  %381 = add nsw i64 %380, 1
  %382 = getelementptr inbounds double, ptr %377, i64 %381
  %383 = load double, ptr %382, align 8, !tbaa !11
  %384 = call double @llvm.fmuladd.f64(double %376, double %383, double %373)
  %385 = load ptr, ptr %18, align 8, !tbaa !5
  %386 = getelementptr inbounds double, ptr %385, i64 1
  %387 = load double, ptr %386, align 8, !tbaa !11
  %388 = load ptr, ptr %21, align 8, !tbaa !5
  %389 = load i64, ptr %33, align 8, !tbaa !9
  %390 = load i64, ptr %28, align 8, !tbaa !9
  %391 = mul nsw i64 %389, %390
  %392 = add nsw i64 %391, 2
  %393 = getelementptr inbounds double, ptr %388, i64 %392
  %394 = load double, ptr %393, align 8, !tbaa !11
  %395 = call double @llvm.fmuladd.f64(double %387, double %394, double %384)
  %396 = load ptr, ptr %24, align 8, !tbaa !5
  %397 = load i64, ptr %33, align 8, !tbaa !9
  %398 = load i64, ptr %26, align 8, !tbaa !9
  %399 = mul nsw i64 %397, %398
  %400 = add nsw i64 %399, 1
  %401 = getelementptr inbounds double, ptr %396, i64 %400
  store double %395, ptr %401, align 8, !tbaa !11
  %402 = load ptr, ptr %24, align 8, !tbaa !5
  %403 = load ptr, ptr %15, align 8, !tbaa !5
  %404 = load i64, ptr %403, align 8, !tbaa !9
  %405 = load i64, ptr %33, align 8, !tbaa !9
  %406 = load i64, ptr %26, align 8, !tbaa !9
  %407 = mul nsw i64 %405, %406
  %408 = add nsw i64 %404, %407
  %409 = getelementptr inbounds double, ptr %402, i64 %408
  %410 = load double, ptr %409, align 8, !tbaa !11
  %411 = load ptr, ptr %20, align 8, !tbaa !5
  %412 = load ptr, ptr %15, align 8, !tbaa !5
  %413 = load i64, ptr %412, align 8, !tbaa !9
  %414 = sub nsw i64 %413, 1
  %415 = getelementptr inbounds double, ptr %411, i64 %414
  %416 = load double, ptr %415, align 8, !tbaa !11
  %417 = load ptr, ptr %21, align 8, !tbaa !5
  %418 = load ptr, ptr %15, align 8, !tbaa !5
  %419 = load i64, ptr %418, align 8, !tbaa !9
  %420 = sub nsw i64 %419, 1
  %421 = load i64, ptr %33, align 8, !tbaa !9
  %422 = load i64, ptr %28, align 8, !tbaa !9
  %423 = mul nsw i64 %421, %422
  %424 = add nsw i64 %420, %423
  %425 = getelementptr inbounds double, ptr %417, i64 %424
  %426 = load double, ptr %425, align 8, !tbaa !11
  %427 = call double @llvm.fmuladd.f64(double %416, double %426, double %410)
  %428 = load ptr, ptr %19, align 8, !tbaa !5
  %429 = load ptr, ptr %15, align 8, !tbaa !5
  %430 = load i64, ptr %429, align 8, !tbaa !9
  %431 = getelementptr inbounds double, ptr %428, i64 %430
  %432 = load double, ptr %431, align 8, !tbaa !11
  %433 = load ptr, ptr %21, align 8, !tbaa !5
  %434 = load ptr, ptr %15, align 8, !tbaa !5
  %435 = load i64, ptr %434, align 8, !tbaa !9
  %436 = load i64, ptr %33, align 8, !tbaa !9
  %437 = load i64, ptr %28, align 8, !tbaa !9
  %438 = mul nsw i64 %436, %437
  %439 = add nsw i64 %435, %438
  %440 = getelementptr inbounds double, ptr %433, i64 %439
  %441 = load double, ptr %440, align 8, !tbaa !11
  %442 = call double @llvm.fmuladd.f64(double %432, double %441, double %427)
  %443 = load ptr, ptr %24, align 8, !tbaa !5
  %444 = load ptr, ptr %15, align 8, !tbaa !5
  %445 = load i64, ptr %444, align 8, !tbaa !9
  %446 = load i64, ptr %33, align 8, !tbaa !9
  %447 = load i64, ptr %26, align 8, !tbaa !9
  %448 = mul nsw i64 %446, %447
  %449 = add nsw i64 %445, %448
  %450 = getelementptr inbounds double, ptr %443, i64 %449
  store double %442, ptr %450, align 8, !tbaa !11
  %451 = load ptr, ptr %15, align 8, !tbaa !5
  %452 = load i64, ptr %451, align 8, !tbaa !9
  %453 = sub nsw i64 %452, 1
  store i64 %453, ptr %31, align 8, !tbaa !9
  store i64 2, ptr %32, align 8, !tbaa !9
  br label %454

454:                                              ; preds = %516, %366
  %455 = load i64, ptr %32, align 8, !tbaa !9
  %456 = load i64, ptr %31, align 8, !tbaa !9
  %457 = icmp sle i64 %455, %456
  br i1 %457, label %458, label %519

458:                                              ; preds = %454
  %459 = load ptr, ptr %24, align 8, !tbaa !5
  %460 = load i64, ptr %32, align 8, !tbaa !9
  %461 = load i64, ptr %33, align 8, !tbaa !9
  %462 = load i64, ptr %26, align 8, !tbaa !9
  %463 = mul nsw i64 %461, %462
  %464 = add nsw i64 %460, %463
  %465 = getelementptr inbounds double, ptr %459, i64 %464
  %466 = load double, ptr %465, align 8, !tbaa !11
  %467 = load ptr, ptr %20, align 8, !tbaa !5
  %468 = load i64, ptr %32, align 8, !tbaa !9
  %469 = sub nsw i64 %468, 1
  %470 = getelementptr inbounds double, ptr %467, i64 %469
  %471 = load double, ptr %470, align 8, !tbaa !11
  %472 = load ptr, ptr %21, align 8, !tbaa !5
  %473 = load i64, ptr %32, align 8, !tbaa !9
  %474 = sub nsw i64 %473, 1
  %475 = load i64, ptr %33, align 8, !tbaa !9
  %476 = load i64, ptr %28, align 8, !tbaa !9
  %477 = mul nsw i64 %475, %476
  %478 = add nsw i64 %474, %477
  %479 = getelementptr inbounds double, ptr %472, i64 %478
  %480 = load double, ptr %479, align 8, !tbaa !11
  %481 = call double @llvm.fmuladd.f64(double %471, double %480, double %466)
  %482 = load ptr, ptr %19, align 8, !tbaa !5
  %483 = load i64, ptr %32, align 8, !tbaa !9
  %484 = getelementptr inbounds double, ptr %482, i64 %483
  %485 = load double, ptr %484, align 8, !tbaa !11
  %486 = load ptr, ptr %21, align 8, !tbaa !5
  %487 = load i64, ptr %32, align 8, !tbaa !9
  %488 = load i64, ptr %33, align 8, !tbaa !9
  %489 = load i64, ptr %28, align 8, !tbaa !9
  %490 = mul nsw i64 %488, %489
  %491 = add nsw i64 %487, %490
  %492 = getelementptr inbounds double, ptr %486, i64 %491
  %493 = load double, ptr %492, align 8, !tbaa !11
  %494 = call double @llvm.fmuladd.f64(double %485, double %493, double %481)
  %495 = load ptr, ptr %18, align 8, !tbaa !5
  %496 = load i64, ptr %32, align 8, !tbaa !9
  %497 = getelementptr inbounds double, ptr %495, i64 %496
  %498 = load double, ptr %497, align 8, !tbaa !11
  %499 = load ptr, ptr %21, align 8, !tbaa !5
  %500 = load i64, ptr %32, align 8, !tbaa !9
  %501 = add nsw i64 %500, 1
  %502 = load i64, ptr %33, align 8, !tbaa !9
  %503 = load i64, ptr %28, align 8, !tbaa !9
  %504 = mul nsw i64 %502, %503
  %505 = add nsw i64 %501, %504
  %506 = getelementptr inbounds double, ptr %499, i64 %505
  %507 = load double, ptr %506, align 8, !tbaa !11
  %508 = call double @llvm.fmuladd.f64(double %498, double %507, double %494)
  %509 = load ptr, ptr %24, align 8, !tbaa !5
  %510 = load i64, ptr %32, align 8, !tbaa !9
  %511 = load i64, ptr %33, align 8, !tbaa !9
  %512 = load i64, ptr %26, align 8, !tbaa !9
  %513 = mul nsw i64 %511, %512
  %514 = add nsw i64 %510, %513
  %515 = getelementptr inbounds double, ptr %509, i64 %514
  store double %508, ptr %515, align 8, !tbaa !11
  br label %516

516:                                              ; preds = %458
  %517 = load i64, ptr %32, align 8, !tbaa !9
  %518 = add nsw i64 %517, 1
  store i64 %518, ptr %32, align 8, !tbaa !9
  br label %454, !llvm.loop !20

519:                                              ; preds = %454
  br label %520

520:                                              ; preds = %519, %347
  br label %521

521:                                              ; preds = %520
  %522 = load i64, ptr %33, align 8, !tbaa !9
  %523 = add nsw i64 %522, 1
  store i64 %523, ptr %33, align 8, !tbaa !9
  br label %339, !llvm.loop !21

524:                                              ; preds = %339
  br label %525

525:                                              ; preds = %524, %335
  br label %930

526:                                              ; preds = %139
  %527 = load ptr, ptr %17, align 8, !tbaa !5
  %528 = load double, ptr %527, align 8, !tbaa !11
  %529 = fcmp oeq double %528, -1.000000e+00
  br i1 %529, label %530, label %929

530:                                              ; preds = %526
  %531 = load ptr, ptr %14, align 8, !tbaa !5
  %532 = call i64 @lsame_(ptr noundef %531, ptr noundef @.str)
  %533 = icmp ne i64 %532, 0
  br i1 %533, label %534, label %731

534:                                              ; preds = %530
  %535 = load ptr, ptr %16, align 8, !tbaa !5
  %536 = load i64, ptr %535, align 8, !tbaa !9
  store i64 %536, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %33, align 8, !tbaa !9
  br label %537

537:                                              ; preds = %727, %534
  %538 = load i64, ptr %33, align 8, !tbaa !9
  %539 = load i64, ptr %30, align 8, !tbaa !9
  %540 = icmp sle i64 %538, %539
  br i1 %540, label %541, label %730

541:                                              ; preds = %537
  %542 = load ptr, ptr %15, align 8, !tbaa !5
  %543 = load i64, ptr %542, align 8, !tbaa !9
  %544 = icmp eq i64 %543, 1
  br i1 %544, label %545, label %565

545:                                              ; preds = %541
  %546 = load ptr, ptr %19, align 8, !tbaa !5
  %547 = getelementptr inbounds double, ptr %546, i64 1
  %548 = load double, ptr %547, align 8, !tbaa !11
  %549 = load ptr, ptr %21, align 8, !tbaa !5
  %550 = load i64, ptr %33, align 8, !tbaa !9
  %551 = load i64, ptr %28, align 8, !tbaa !9
  %552 = mul nsw i64 %550, %551
  %553 = add nsw i64 %552, 1
  %554 = getelementptr inbounds double, ptr %549, i64 %553
  %555 = load double, ptr %554, align 8, !tbaa !11
  %556 = load ptr, ptr %24, align 8, !tbaa !5
  %557 = load i64, ptr %33, align 8, !tbaa !9
  %558 = load i64, ptr %26, align 8, !tbaa !9
  %559 = mul nsw i64 %557, %558
  %560 = add nsw i64 %559, 1
  %561 = getelementptr inbounds double, ptr %556, i64 %560
  %562 = load double, ptr %561, align 8, !tbaa !11
  %563 = fneg double %548
  %564 = call double @llvm.fmuladd.f64(double %563, double %555, double %562)
  store double %564, ptr %561, align 8, !tbaa !11
  br label %726

565:                                              ; preds = %541
  %566 = load ptr, ptr %24, align 8, !tbaa !5
  %567 = load i64, ptr %33, align 8, !tbaa !9
  %568 = load i64, ptr %26, align 8, !tbaa !9
  %569 = mul nsw i64 %567, %568
  %570 = add nsw i64 %569, 1
  %571 = getelementptr inbounds double, ptr %566, i64 %570
  %572 = load double, ptr %571, align 8, !tbaa !11
  %573 = load ptr, ptr %19, align 8, !tbaa !5
  %574 = getelementptr inbounds double, ptr %573, i64 1
  %575 = load double, ptr %574, align 8, !tbaa !11
  %576 = load ptr, ptr %21, align 8, !tbaa !5
  %577 = load i64, ptr %33, align 8, !tbaa !9
  %578 = load i64, ptr %28, align 8, !tbaa !9
  %579 = mul nsw i64 %577, %578
  %580 = add nsw i64 %579, 1
  %581 = getelementptr inbounds double, ptr %576, i64 %580
  %582 = load double, ptr %581, align 8, !tbaa !11
  %583 = fneg double %575
  %584 = call double @llvm.fmuladd.f64(double %583, double %582, double %572)
  %585 = load ptr, ptr %20, align 8, !tbaa !5
  %586 = getelementptr inbounds double, ptr %585, i64 1
  %587 = load double, ptr %586, align 8, !tbaa !11
  %588 = load ptr, ptr %21, align 8, !tbaa !5
  %589 = load i64, ptr %33, align 8, !tbaa !9
  %590 = load i64, ptr %28, align 8, !tbaa !9
  %591 = mul nsw i64 %589, %590
  %592 = add nsw i64 %591, 2
  %593 = getelementptr inbounds double, ptr %588, i64 %592
  %594 = load double, ptr %593, align 8, !tbaa !11
  %595 = fneg double %587
  %596 = call double @llvm.fmuladd.f64(double %595, double %594, double %584)
  %597 = load ptr, ptr %24, align 8, !tbaa !5
  %598 = load i64, ptr %33, align 8, !tbaa !9
  %599 = load i64, ptr %26, align 8, !tbaa !9
  %600 = mul nsw i64 %598, %599
  %601 = add nsw i64 %600, 1
  %602 = getelementptr inbounds double, ptr %597, i64 %601
  store double %596, ptr %602, align 8, !tbaa !11
  %603 = load ptr, ptr %24, align 8, !tbaa !5
  %604 = load ptr, ptr %15, align 8, !tbaa !5
  %605 = load i64, ptr %604, align 8, !tbaa !9
  %606 = load i64, ptr %33, align 8, !tbaa !9
  %607 = load i64, ptr %26, align 8, !tbaa !9
  %608 = mul nsw i64 %606, %607
  %609 = add nsw i64 %605, %608
  %610 = getelementptr inbounds double, ptr %603, i64 %609
  %611 = load double, ptr %610, align 8, !tbaa !11
  %612 = load ptr, ptr %18, align 8, !tbaa !5
  %613 = load ptr, ptr %15, align 8, !tbaa !5
  %614 = load i64, ptr %613, align 8, !tbaa !9
  %615 = sub nsw i64 %614, 1
  %616 = getelementptr inbounds double, ptr %612, i64 %615
  %617 = load double, ptr %616, align 8, !tbaa !11
  %618 = load ptr, ptr %21, align 8, !tbaa !5
  %619 = load ptr, ptr %15, align 8, !tbaa !5
  %620 = load i64, ptr %619, align 8, !tbaa !9
  %621 = sub nsw i64 %620, 1
  %622 = load i64, ptr %33, align 8, !tbaa !9
  %623 = load i64, ptr %28, align 8, !tbaa !9
  %624 = mul nsw i64 %622, %623
  %625 = add nsw i64 %621, %624
  %626 = getelementptr inbounds double, ptr %618, i64 %625
  %627 = load double, ptr %626, align 8, !tbaa !11
  %628 = fneg double %617
  %629 = call double @llvm.fmuladd.f64(double %628, double %627, double %611)
  %630 = load ptr, ptr %19, align 8, !tbaa !5
  %631 = load ptr, ptr %15, align 8, !tbaa !5
  %632 = load i64, ptr %631, align 8, !tbaa !9
  %633 = getelementptr inbounds double, ptr %630, i64 %632
  %634 = load double, ptr %633, align 8, !tbaa !11
  %635 = load ptr, ptr %21, align 8, !tbaa !5
  %636 = load ptr, ptr %15, align 8, !tbaa !5
  %637 = load i64, ptr %636, align 8, !tbaa !9
  %638 = load i64, ptr %33, align 8, !tbaa !9
  %639 = load i64, ptr %28, align 8, !tbaa !9
  %640 = mul nsw i64 %638, %639
  %641 = add nsw i64 %637, %640
  %642 = getelementptr inbounds double, ptr %635, i64 %641
  %643 = load double, ptr %642, align 8, !tbaa !11
  %644 = fneg double %634
  %645 = call double @llvm.fmuladd.f64(double %644, double %643, double %629)
  %646 = load ptr, ptr %24, align 8, !tbaa !5
  %647 = load ptr, ptr %15, align 8, !tbaa !5
  %648 = load i64, ptr %647, align 8, !tbaa !9
  %649 = load i64, ptr %33, align 8, !tbaa !9
  %650 = load i64, ptr %26, align 8, !tbaa !9
  %651 = mul nsw i64 %649, %650
  %652 = add nsw i64 %648, %651
  %653 = getelementptr inbounds double, ptr %646, i64 %652
  store double %645, ptr %653, align 8, !tbaa !11
  %654 = load ptr, ptr %15, align 8, !tbaa !5
  %655 = load i64, ptr %654, align 8, !tbaa !9
  %656 = sub nsw i64 %655, 1
  store i64 %656, ptr %31, align 8, !tbaa !9
  store i64 2, ptr %32, align 8, !tbaa !9
  br label %657

657:                                              ; preds = %722, %565
  %658 = load i64, ptr %32, align 8, !tbaa !9
  %659 = load i64, ptr %31, align 8, !tbaa !9
  %660 = icmp sle i64 %658, %659
  br i1 %660, label %661, label %725

661:                                              ; preds = %657
  %662 = load ptr, ptr %24, align 8, !tbaa !5
  %663 = load i64, ptr %32, align 8, !tbaa !9
  %664 = load i64, ptr %33, align 8, !tbaa !9
  %665 = load i64, ptr %26, align 8, !tbaa !9
  %666 = mul nsw i64 %664, %665
  %667 = add nsw i64 %663, %666
  %668 = getelementptr inbounds double, ptr %662, i64 %667
  %669 = load double, ptr %668, align 8, !tbaa !11
  %670 = load ptr, ptr %18, align 8, !tbaa !5
  %671 = load i64, ptr %32, align 8, !tbaa !9
  %672 = sub nsw i64 %671, 1
  %673 = getelementptr inbounds double, ptr %670, i64 %672
  %674 = load double, ptr %673, align 8, !tbaa !11
  %675 = load ptr, ptr %21, align 8, !tbaa !5
  %676 = load i64, ptr %32, align 8, !tbaa !9
  %677 = sub nsw i64 %676, 1
  %678 = load i64, ptr %33, align 8, !tbaa !9
  %679 = load i64, ptr %28, align 8, !tbaa !9
  %680 = mul nsw i64 %678, %679
  %681 = add nsw i64 %677, %680
  %682 = getelementptr inbounds double, ptr %675, i64 %681
  %683 = load double, ptr %682, align 8, !tbaa !11
  %684 = fneg double %674
  %685 = call double @llvm.fmuladd.f64(double %684, double %683, double %669)
  %686 = load ptr, ptr %19, align 8, !tbaa !5
  %687 = load i64, ptr %32, align 8, !tbaa !9
  %688 = getelementptr inbounds double, ptr %686, i64 %687
  %689 = load double, ptr %688, align 8, !tbaa !11
  %690 = load ptr, ptr %21, align 8, !tbaa !5
  %691 = load i64, ptr %32, align 8, !tbaa !9
  %692 = load i64, ptr %33, align 8, !tbaa !9
  %693 = load i64, ptr %28, align 8, !tbaa !9
  %694 = mul nsw i64 %692, %693
  %695 = add nsw i64 %691, %694
  %696 = getelementptr inbounds double, ptr %690, i64 %695
  %697 = load double, ptr %696, align 8, !tbaa !11
  %698 = fneg double %689
  %699 = call double @llvm.fmuladd.f64(double %698, double %697, double %685)
  %700 = load ptr, ptr %20, align 8, !tbaa !5
  %701 = load i64, ptr %32, align 8, !tbaa !9
  %702 = getelementptr inbounds double, ptr %700, i64 %701
  %703 = load double, ptr %702, align 8, !tbaa !11
  %704 = load ptr, ptr %21, align 8, !tbaa !5
  %705 = load i64, ptr %32, align 8, !tbaa !9
  %706 = add nsw i64 %705, 1
  %707 = load i64, ptr %33, align 8, !tbaa !9
  %708 = load i64, ptr %28, align 8, !tbaa !9
  %709 = mul nsw i64 %707, %708
  %710 = add nsw i64 %706, %709
  %711 = getelementptr inbounds double, ptr %704, i64 %710
  %712 = load double, ptr %711, align 8, !tbaa !11
  %713 = fneg double %703
  %714 = call double @llvm.fmuladd.f64(double %713, double %712, double %699)
  %715 = load ptr, ptr %24, align 8, !tbaa !5
  %716 = load i64, ptr %32, align 8, !tbaa !9
  %717 = load i64, ptr %33, align 8, !tbaa !9
  %718 = load i64, ptr %26, align 8, !tbaa !9
  %719 = mul nsw i64 %717, %718
  %720 = add nsw i64 %716, %719
  %721 = getelementptr inbounds double, ptr %715, i64 %720
  store double %714, ptr %721, align 8, !tbaa !11
  br label %722

722:                                              ; preds = %661
  %723 = load i64, ptr %32, align 8, !tbaa !9
  %724 = add nsw i64 %723, 1
  store i64 %724, ptr %32, align 8, !tbaa !9
  br label %657, !llvm.loop !22

725:                                              ; preds = %657
  br label %726

726:                                              ; preds = %725, %545
  br label %727

727:                                              ; preds = %726
  %728 = load i64, ptr %33, align 8, !tbaa !9
  %729 = add nsw i64 %728, 1
  store i64 %729, ptr %33, align 8, !tbaa !9
  br label %537, !llvm.loop !23

730:                                              ; preds = %537
  br label %928

731:                                              ; preds = %530
  %732 = load ptr, ptr %16, align 8, !tbaa !5
  %733 = load i64, ptr %732, align 8, !tbaa !9
  store i64 %733, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %33, align 8, !tbaa !9
  br label %734

734:                                              ; preds = %924, %731
  %735 = load i64, ptr %33, align 8, !tbaa !9
  %736 = load i64, ptr %30, align 8, !tbaa !9
  %737 = icmp sle i64 %735, %736
  br i1 %737, label %738, label %927

738:                                              ; preds = %734
  %739 = load ptr, ptr %15, align 8, !tbaa !5
  %740 = load i64, ptr %739, align 8, !tbaa !9
  %741 = icmp eq i64 %740, 1
  br i1 %741, label %742, label %762

742:                                              ; preds = %738
  %743 = load ptr, ptr %19, align 8, !tbaa !5
  %744 = getelementptr inbounds double, ptr %743, i64 1
  %745 = load double, ptr %744, align 8, !tbaa !11
  %746 = load ptr, ptr %21, align 8, !tbaa !5
  %747 = load i64, ptr %33, align 8, !tbaa !9
  %748 = load i64, ptr %28, align 8, !tbaa !9
  %749 = mul nsw i64 %747, %748
  %750 = add nsw i64 %749, 1
  %751 = getelementptr inbounds double, ptr %746, i64 %750
  %752 = load double, ptr %751, align 8, !tbaa !11
  %753 = load ptr, ptr %24, align 8, !tbaa !5
  %754 = load i64, ptr %33, align 8, !tbaa !9
  %755 = load i64, ptr %26, align 8, !tbaa !9
  %756 = mul nsw i64 %754, %755
  %757 = add nsw i64 %756, 1
  %758 = getelementptr inbounds double, ptr %753, i64 %757
  %759 = load double, ptr %758, align 8, !tbaa !11
  %760 = fneg double %745
  %761 = call double @llvm.fmuladd.f64(double %760, double %752, double %759)
  store double %761, ptr %758, align 8, !tbaa !11
  br label %923

762:                                              ; preds = %738
  %763 = load ptr, ptr %24, align 8, !tbaa !5
  %764 = load i64, ptr %33, align 8, !tbaa !9
  %765 = load i64, ptr %26, align 8, !tbaa !9
  %766 = mul nsw i64 %764, %765
  %767 = add nsw i64 %766, 1
  %768 = getelementptr inbounds double, ptr %763, i64 %767
  %769 = load double, ptr %768, align 8, !tbaa !11
  %770 = load ptr, ptr %19, align 8, !tbaa !5
  %771 = getelementptr inbounds double, ptr %770, i64 1
  %772 = load double, ptr %771, align 8, !tbaa !11
  %773 = load ptr, ptr %21, align 8, !tbaa !5
  %774 = load i64, ptr %33, align 8, !tbaa !9
  %775 = load i64, ptr %28, align 8, !tbaa !9
  %776 = mul nsw i64 %774, %775
  %777 = add nsw i64 %776, 1
  %778 = getelementptr inbounds double, ptr %773, i64 %777
  %779 = load double, ptr %778, align 8, !tbaa !11
  %780 = fneg double %772
  %781 = call double @llvm.fmuladd.f64(double %780, double %779, double %769)
  %782 = load ptr, ptr %18, align 8, !tbaa !5
  %783 = getelementptr inbounds double, ptr %782, i64 1
  %784 = load double, ptr %783, align 8, !tbaa !11
  %785 = load ptr, ptr %21, align 8, !tbaa !5
  %786 = load i64, ptr %33, align 8, !tbaa !9
  %787 = load i64, ptr %28, align 8, !tbaa !9
  %788 = mul nsw i64 %786, %787
  %789 = add nsw i64 %788, 2
  %790 = getelementptr inbounds double, ptr %785, i64 %789
  %791 = load double, ptr %790, align 8, !tbaa !11
  %792 = fneg double %784
  %793 = call double @llvm.fmuladd.f64(double %792, double %791, double %781)
  %794 = load ptr, ptr %24, align 8, !tbaa !5
  %795 = load i64, ptr %33, align 8, !tbaa !9
  %796 = load i64, ptr %26, align 8, !tbaa !9
  %797 = mul nsw i64 %795, %796
  %798 = add nsw i64 %797, 1
  %799 = getelementptr inbounds double, ptr %794, i64 %798
  store double %793, ptr %799, align 8, !tbaa !11
  %800 = load ptr, ptr %24, align 8, !tbaa !5
  %801 = load ptr, ptr %15, align 8, !tbaa !5
  %802 = load i64, ptr %801, align 8, !tbaa !9
  %803 = load i64, ptr %33, align 8, !tbaa !9
  %804 = load i64, ptr %26, align 8, !tbaa !9
  %805 = mul nsw i64 %803, %804
  %806 = add nsw i64 %802, %805
  %807 = getelementptr inbounds double, ptr %800, i64 %806
  %808 = load double, ptr %807, align 8, !tbaa !11
  %809 = load ptr, ptr %20, align 8, !tbaa !5
  %810 = load ptr, ptr %15, align 8, !tbaa !5
  %811 = load i64, ptr %810, align 8, !tbaa !9
  %812 = sub nsw i64 %811, 1
  %813 = getelementptr inbounds double, ptr %809, i64 %812
  %814 = load double, ptr %813, align 8, !tbaa !11
  %815 = load ptr, ptr %21, align 8, !tbaa !5
  %816 = load ptr, ptr %15, align 8, !tbaa !5
  %817 = load i64, ptr %816, align 8, !tbaa !9
  %818 = sub nsw i64 %817, 1
  %819 = load i64, ptr %33, align 8, !tbaa !9
  %820 = load i64, ptr %28, align 8, !tbaa !9
  %821 = mul nsw i64 %819, %820
  %822 = add nsw i64 %818, %821
  %823 = getelementptr inbounds double, ptr %815, i64 %822
  %824 = load double, ptr %823, align 8, !tbaa !11
  %825 = fneg double %814
  %826 = call double @llvm.fmuladd.f64(double %825, double %824, double %808)
  %827 = load ptr, ptr %19, align 8, !tbaa !5
  %828 = load ptr, ptr %15, align 8, !tbaa !5
  %829 = load i64, ptr %828, align 8, !tbaa !9
  %830 = getelementptr inbounds double, ptr %827, i64 %829
  %831 = load double, ptr %830, align 8, !tbaa !11
  %832 = load ptr, ptr %21, align 8, !tbaa !5
  %833 = load ptr, ptr %15, align 8, !tbaa !5
  %834 = load i64, ptr %833, align 8, !tbaa !9
  %835 = load i64, ptr %33, align 8, !tbaa !9
  %836 = load i64, ptr %28, align 8, !tbaa !9
  %837 = mul nsw i64 %835, %836
  %838 = add nsw i64 %834, %837
  %839 = getelementptr inbounds double, ptr %832, i64 %838
  %840 = load double, ptr %839, align 8, !tbaa !11
  %841 = fneg double %831
  %842 = call double @llvm.fmuladd.f64(double %841, double %840, double %826)
  %843 = load ptr, ptr %24, align 8, !tbaa !5
  %844 = load ptr, ptr %15, align 8, !tbaa !5
  %845 = load i64, ptr %844, align 8, !tbaa !9
  %846 = load i64, ptr %33, align 8, !tbaa !9
  %847 = load i64, ptr %26, align 8, !tbaa !9
  %848 = mul nsw i64 %846, %847
  %849 = add nsw i64 %845, %848
  %850 = getelementptr inbounds double, ptr %843, i64 %849
  store double %842, ptr %850, align 8, !tbaa !11
  %851 = load ptr, ptr %15, align 8, !tbaa !5
  %852 = load i64, ptr %851, align 8, !tbaa !9
  %853 = sub nsw i64 %852, 1
  store i64 %853, ptr %31, align 8, !tbaa !9
  store i64 2, ptr %32, align 8, !tbaa !9
  br label %854

854:                                              ; preds = %919, %762
  %855 = load i64, ptr %32, align 8, !tbaa !9
  %856 = load i64, ptr %31, align 8, !tbaa !9
  %857 = icmp sle i64 %855, %856
  br i1 %857, label %858, label %922

858:                                              ; preds = %854
  %859 = load ptr, ptr %24, align 8, !tbaa !5
  %860 = load i64, ptr %32, align 8, !tbaa !9
  %861 = load i64, ptr %33, align 8, !tbaa !9
  %862 = load i64, ptr %26, align 8, !tbaa !9
  %863 = mul nsw i64 %861, %862
  %864 = add nsw i64 %860, %863
  %865 = getelementptr inbounds double, ptr %859, i64 %864
  %866 = load double, ptr %865, align 8, !tbaa !11
  %867 = load ptr, ptr %20, align 8, !tbaa !5
  %868 = load i64, ptr %32, align 8, !tbaa !9
  %869 = sub nsw i64 %868, 1
  %870 = getelementptr inbounds double, ptr %867, i64 %869
  %871 = load double, ptr %870, align 8, !tbaa !11
  %872 = load ptr, ptr %21, align 8, !tbaa !5
  %873 = load i64, ptr %32, align 8, !tbaa !9
  %874 = sub nsw i64 %873, 1
  %875 = load i64, ptr %33, align 8, !tbaa !9
  %876 = load i64, ptr %28, align 8, !tbaa !9
  %877 = mul nsw i64 %875, %876
  %878 = add nsw i64 %874, %877
  %879 = getelementptr inbounds double, ptr %872, i64 %878
  %880 = load double, ptr %879, align 8, !tbaa !11
  %881 = fneg double %871
  %882 = call double @llvm.fmuladd.f64(double %881, double %880, double %866)
  %883 = load ptr, ptr %19, align 8, !tbaa !5
  %884 = load i64, ptr %32, align 8, !tbaa !9
  %885 = getelementptr inbounds double, ptr %883, i64 %884
  %886 = load double, ptr %885, align 8, !tbaa !11
  %887 = load ptr, ptr %21, align 8, !tbaa !5
  %888 = load i64, ptr %32, align 8, !tbaa !9
  %889 = load i64, ptr %33, align 8, !tbaa !9
  %890 = load i64, ptr %28, align 8, !tbaa !9
  %891 = mul nsw i64 %889, %890
  %892 = add nsw i64 %888, %891
  %893 = getelementptr inbounds double, ptr %887, i64 %892
  %894 = load double, ptr %893, align 8, !tbaa !11
  %895 = fneg double %886
  %896 = call double @llvm.fmuladd.f64(double %895, double %894, double %882)
  %897 = load ptr, ptr %18, align 8, !tbaa !5
  %898 = load i64, ptr %32, align 8, !tbaa !9
  %899 = getelementptr inbounds double, ptr %897, i64 %898
  %900 = load double, ptr %899, align 8, !tbaa !11
  %901 = load ptr, ptr %21, align 8, !tbaa !5
  %902 = load i64, ptr %32, align 8, !tbaa !9
  %903 = add nsw i64 %902, 1
  %904 = load i64, ptr %33, align 8, !tbaa !9
  %905 = load i64, ptr %28, align 8, !tbaa !9
  %906 = mul nsw i64 %904, %905
  %907 = add nsw i64 %903, %906
  %908 = getelementptr inbounds double, ptr %901, i64 %907
  %909 = load double, ptr %908, align 8, !tbaa !11
  %910 = fneg double %900
  %911 = call double @llvm.fmuladd.f64(double %910, double %909, double %896)
  %912 = load ptr, ptr %24, align 8, !tbaa !5
  %913 = load i64, ptr %32, align 8, !tbaa !9
  %914 = load i64, ptr %33, align 8, !tbaa !9
  %915 = load i64, ptr %26, align 8, !tbaa !9
  %916 = mul nsw i64 %914, %915
  %917 = add nsw i64 %913, %916
  %918 = getelementptr inbounds double, ptr %912, i64 %917
  store double %911, ptr %918, align 8, !tbaa !11
  br label %919

919:                                              ; preds = %858
  %920 = load i64, ptr %32, align 8, !tbaa !9
  %921 = add nsw i64 %920, 1
  store i64 %921, ptr %32, align 8, !tbaa !9
  br label %854, !llvm.loop !24

922:                                              ; preds = %854
  br label %923

923:                                              ; preds = %922, %742
  br label %924

924:                                              ; preds = %923
  %925 = load i64, ptr %33, align 8, !tbaa !9
  %926 = add nsw i64 %925, 1
  store i64 %926, ptr %33, align 8, !tbaa !9
  br label %734, !llvm.loop !25

927:                                              ; preds = %734
  br label %928

928:                                              ; preds = %927, %730
  br label %929

929:                                              ; preds = %928, %526
  br label %930

930:                                              ; preds = %929, %525
  store i32 0, ptr %13, align 4
  store i32 1, ptr %34, align 4
  br label %931

931:                                              ; preds = %930, %60
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #4
  %932 = load i32, ptr %13, align 4
  ret i32 %932
}

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !14}
!21 = distinct !{!21, !14}
!22 = distinct !{!22, !14}
!23 = distinct !{!23, !14}
!24 = distinct !{!24, !14}
!25 = distinct !{!25, !14}


; 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

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @dlagtm_(ptr noundef %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, ptr nocapture noundef readonly %3, ptr nocapture noundef readonly %4, ptr nocapture noundef readonly %5, ptr nocapture noundef readonly %6, ptr nocapture noundef readonly %7, ptr nocapture noundef readonly %8, ptr nocapture noundef readonly %9, ptr nocapture noundef %10, ptr nocapture noundef readonly %11) local_unnamed_addr #0 {
  %13 = getelementptr inbounds i8, ptr %4, i64 -8
  %14 = getelementptr inbounds i8, ptr %5, i64 -8
  %15 = getelementptr inbounds i8, ptr %6, i64 -8
  %16 = load i64, ptr %8, align 8, !tbaa !5
  %17 = xor i64 %16, -1
  %18 = getelementptr inbounds double, ptr %7, i64 %17
  %19 = load i64, ptr %11, align 8, !tbaa !5
  %20 = xor i64 %19, -1
  %21 = getelementptr inbounds double, ptr %10, i64 %20
  %22 = load i64, ptr %1, align 8, !tbaa !5
  %23 = icmp eq i64 %22, 0
  br i1 %23, label %.loopexit372, label %24

24:                                               ; preds = %12
  %25 = load double, ptr %9, align 8, !tbaa !9
  %26 = fcmp oeq double %25, 0.000000e+00
  br i1 %26, label %27, label %41

27:                                               ; preds = %24
  %28 = load i64, ptr %2, align 8, !tbaa !5
  %.not360391 = icmp slt i64 %28, 1
  %.not371386 = icmp slt i64 %22, 1
  %or.cond = or i1 %.not360391, %.not371386
  br i1 %or.cond, label %.loopexit379, label %.preheader.preheader

.preheader.preheader:                             ; preds = %27
  %29 = shl i64 %19, 3
  %30 = shl nuw i64 %22, 3
  %31 = add nsw i64 %28, -1
  %xtraiter = and i64 %28, 7
  %32 = icmp ult i64 %31, 7
  br i1 %32, label %.loopexit379.loopexit.unr-lcssa, label %.preheader.preheader.new

.preheader.preheader.new:                         ; preds = %.preheader.preheader
  %unroll_iter = and i64 %28, 9223372036854775800
  br label %.preheader

.preheader:                                       ; preds = %.preheader, %.preheader.preheader.new
  %indvar = phi i64 [ 0, %.preheader.preheader.new ], [ %indvar.next.7, %.preheader ]
  %niter = phi i64 [ 0, %.preheader.preheader.new ], [ %niter.next.7, %.preheader ]
  %33 = mul i64 %29, %indvar
  %scevgep = getelementptr i8, ptr %10, i64 %33
  tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep, i8 0, i64 %30, i1 false), !tbaa !9
  %indvar.next = or disjoint i64 %indvar, 1
  %34 = mul i64 %29, %indvar.next
  %scevgep.1 = getelementptr i8, ptr %10, i64 %34
  tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep.1, i8 0, i64 %30, i1 false), !tbaa !9
  %indvar.next.1 = or disjoint i64 %indvar, 2
  %35 = mul i64 %29, %indvar.next.1
  %scevgep.2 = getelementptr i8, ptr %10, i64 %35
  tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep.2, i8 0, i64 %30, i1 false), !tbaa !9
  %indvar.next.2 = or disjoint i64 %indvar, 3
  %36 = mul i64 %29, %indvar.next.2
  %scevgep.3 = getelementptr i8, ptr %10, i64 %36
  tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep.3, i8 0, i64 %30, i1 false), !tbaa !9
  %indvar.next.3 = or disjoint i64 %indvar, 4
  %37 = mul i64 %29, %indvar.next.3
  %scevgep.4 = getelementptr i8, ptr %10, i64 %37
  tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep.4, i8 0, i64 %30, i1 false), !tbaa !9
  %indvar.next.4 = or disjoint i64 %indvar, 5
  %38 = mul i64 %29, %indvar.next.4
  %scevgep.5 = getelementptr i8, ptr %10, i64 %38
  tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep.5, i8 0, i64 %30, i1 false), !tbaa !9
  %indvar.next.5 = or disjoint i64 %indvar, 6
  %39 = mul i64 %29, %indvar.next.5
  %scevgep.6 = getelementptr i8, ptr %10, i64 %39
  tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep.6, i8 0, i64 %30, i1 false), !tbaa !9
  %indvar.next.6 = or disjoint i64 %indvar, 7
  %40 = mul i64 %29, %indvar.next.6
  %scevgep.7 = getelementptr i8, ptr %10, i64 %40
  tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep.7, i8 0, i64 %30, i1 false), !tbaa !9
  %indvar.next.7 = add nuw nsw i64 %indvar, 8
  %niter.next.7 = add i64 %niter, 8
  %niter.ncmp.7 = icmp eq i64 %niter.next.7, %unroll_iter
  br i1 %niter.ncmp.7, label %.loopexit379.loopexit.unr-lcssa, label %.preheader, !llvm.loop !11

41:                                               ; preds = %24
  %42 = fcmp oeq double %25, -1.000000e+00
  br i1 %42, label %43, label %.loopexit379

43:                                               ; preds = %41
  %44 = load i64, ptr %2, align 8, !tbaa !5
  %.not384 = icmp slt i64 %44, 1
  %.not359382 = icmp slt i64 %22, 1
  %or.cond512 = or i1 %.not384, %.not359382
  br i1 %or.cond512, label %.loopexit379, label %.preheader380.preheader

.preheader380.preheader:                          ; preds = %43
  %min.iters.check = icmp ult i64 %22, 4
  %n.vec = and i64 %22, 9223372036854775804
  %ind.end = or disjoint i64 %n.vec, 1
  %cmp.n = icmp eq i64 %22, %n.vec
  br label %.preheader380

.preheader380:                                    ; preds = %.preheader380.preheader, %._crit_edge
  %.1385 = phi i64 [ %54, %._crit_edge ], [ 1, %.preheader380.preheader ]
  %45 = mul nsw i64 %.1385, %19
  %invariant.gep = getelementptr double, ptr %21, i64 %45
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.body

vector.body:                                      ; preds = %.preheader380, %vector.body
  %index = phi i64 [ %index.next, %vector.body ], [ 0, %.preheader380 ]
  %offset.idx = or disjoint i64 %index, 1
  %46 = getelementptr double, ptr %invariant.gep, i64 %offset.idx
  %47 = getelementptr i8, ptr %46, i64 16
  %wide.load = load <2 x double>, ptr %46, align 8, !tbaa !9
  %wide.load521 = load <2 x double>, ptr %47, align 8, !tbaa !9
  %48 = fneg <2 x double> %wide.load
  %49 = fneg <2 x double> %wide.load521
  store <2 x double> %48, ptr %46, align 8, !tbaa !9
  store <2 x double> %49, ptr %47, align 8, !tbaa !9
  %index.next = add nuw i64 %index, 4
  %50 = icmp eq i64 %index.next, %n.vec
  br i1 %50, label %middle.block, label %vector.body, !llvm.loop !13

middle.block:                                     ; preds = %vector.body
  br i1 %cmp.n, label %._crit_edge, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %.preheader380
  %.1351383.ph = phi i64 [ 1, %.preheader380 ], [ %ind.end, %middle.block ]
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %.1351383 = phi i64 [ %53, %scalar.ph ], [ %.1351383.ph, %scalar.ph.preheader ]
  %gep = getelementptr double, ptr %invariant.gep, i64 %.1351383
  %51 = load double, ptr %gep, align 8, !tbaa !9
  %52 = fneg double %51
  store double %52, ptr %gep, align 8, !tbaa !9
  %53 = add nuw i64 %.1351383, 1
  %exitcond.not = icmp eq i64 %.1351383, %22
  br i1 %exitcond.not, label %._crit_edge, label %scalar.ph, !llvm.loop !16

._crit_edge:                                      ; preds = %scalar.ph, %middle.block
  %54 = add nuw i64 %.1385, 1
  %exitcond490.not = icmp eq i64 %.1385, %44
  br i1 %exitcond490.not, label %.loopexit379, label %.preheader380, !llvm.loop !17

.loopexit379.loopexit.unr-lcssa:                  ; preds = %.preheader, %.preheader.preheader
  %indvar.unr = phi i64 [ 0, %.preheader.preheader ], [ %indvar.next.7, %.preheader ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.loopexit379, label %.preheader.epil

.preheader.epil:                                  ; preds = %.loopexit379.loopexit.unr-lcssa, %.preheader.epil
  %indvar.epil = phi i64 [ %indvar.next.epil, %.preheader.epil ], [ %indvar.unr, %.loopexit379.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.preheader.epil ], [ 0, %.loopexit379.loopexit.unr-lcssa ]
  %55 = mul i64 %29, %indvar.epil
  %scevgep.epil = getelementptr i8, ptr %10, i64 %55
  tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep.epil, i8 0, i64 %30, i1 false), !tbaa !9
  %indvar.next.epil = add nuw nsw i64 %indvar.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %.loopexit379, label %.preheader.epil, !llvm.loop !18

.loopexit379:                                     ; preds = %._crit_edge, %.loopexit379.loopexit.unr-lcssa, %.preheader.epil, %43, %27, %41
  %56 = load double, ptr %3, align 8, !tbaa !9
  %57 = fcmp oeq double %56, 1.000000e+00
  br i1 %57, label %58, label %273

58:                                               ; preds = %.loopexit379
  %59 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %.not366 = icmp eq i64 %59, 0
  %60 = load i64, ptr %2, align 8, !tbaa !5
  %invariant.gep470 = getelementptr i8, ptr %21, i64 8
  %invariant.gep472 = getelementptr i8, ptr %18, i64 8
  %.not367476 = icmp slt i64 %60, 1
  br i1 %.not366, label %167, label %61

61:                                               ; preds = %58
  br i1 %.not367476, label %.loopexit372, label %.lr.ph457

.lr.ph457:                                        ; preds = %61
  %62 = load i64, ptr %1, align 8, !tbaa !5
  %63 = icmp eq i64 %62, 1
  %64 = getelementptr double, ptr %21, i64 %62
  %65 = add nsw i64 %62, -1
  %66 = getelementptr inbounds double, ptr %13, i64 %65
  %67 = getelementptr double, ptr %18, i64 %65
  %68 = getelementptr inbounds double, ptr %14, i64 %62
  %69 = getelementptr double, ptr %18, i64 %62
  %.not370.not444 = icmp sgt i64 %62, 2
  br i1 %63, label %.lr.ph457.split.us.preheader, label %.lr.ph457.split.preheader

.lr.ph457.split.preheader:                        ; preds = %.lr.ph457
  %scevgep679 = getelementptr i8, ptr %10, i64 8
  %70 = add nsw i64 %60, -1
  %71 = mul i64 %19, %70
  %72 = shl i64 %62, 3
  %73 = add i64 %71, %62
  %74 = shl i64 %73, 3
  %75 = getelementptr i8, ptr %10, i64 %74
  %scevgep680 = getelementptr i8, ptr %75, i64 -8
  %76 = getelementptr i8, ptr %4, i64 %72
  %scevgep681 = getelementptr i8, ptr %76, i64 -16
  %77 = mul i64 %16, %70
  %78 = add i64 %77, %62
  %79 = shl i64 %78, 3
  %scevgep682 = getelementptr i8, ptr %7, i64 %79
  %scevgep683 = getelementptr i8, ptr %5, i64 8
  %80 = add i64 %72, -8
  %scevgep684 = getelementptr i8, ptr %5, i64 %80
  %scevgep685 = getelementptr i8, ptr %6, i64 8
  %scevgep686 = getelementptr i8, ptr %6, i64 %80
  %81 = add i64 %62, -2
  %min.iters.check709 = icmp ult i64 %81, 6
  %bound0687 = icmp ult ptr %scevgep679, %scevgep681
  %bound1688 = icmp ugt ptr %scevgep680, %4
  %found.conflict689 = and i1 %bound0687, %bound1688
  %bound0691 = icmp ult ptr %scevgep679, %scevgep682
  %bound1692 = icmp ugt ptr %scevgep680, %7
  %found.conflict693 = and i1 %bound0691, %bound1692
  %82 = or i64 %19, %16
  %83 = and i64 %82, 1152921504606846976
  %84 = icmp ne i64 %83, 0
  %85 = or i1 %found.conflict693, %84
  %conflict.rdx696 = or i1 %found.conflict689, %85
  %bound0697 = icmp ult ptr %scevgep679, %scevgep684
  %bound1698 = icmp ult ptr %scevgep683, %scevgep680
  %found.conflict699 = and i1 %bound0697, %bound1698
  %conflict.rdx701 = or i1 %found.conflict699, %conflict.rdx696
  %bound0702 = icmp ult ptr %scevgep679, %scevgep686
  %bound1703 = icmp ult ptr %scevgep685, %scevgep680
  %found.conflict704 = and i1 %bound0702, %bound1703
  %conflict.rdx706 = or i1 %found.conflict704, %conflict.rdx701
  %n.vec712 = and i64 %81, -2
  %ind.end713 = add i64 %n.vec712, 2
  %cmp.n726 = icmp eq i64 %81, %n.vec712
  br label %.lr.ph457.split

.lr.ph457.split.us.preheader:                     ; preds = %.lr.ph457
  %min.iters.check743 = icmp ult i64 %60, 12
  br i1 %min.iters.check743, label %.lr.ph457.split.us.preheader852, label %vector.scevcheck727

vector.scevcheck727:                              ; preds = %.lr.ph457.split.us.preheader
  %ident.check728 = icmp ne i64 %19, 1
  %ident.check729 = icmp ne i64 %16, 1
  %86 = or i1 %ident.check728, %ident.check729
  br i1 %86, label %.lr.ph457.split.us.preheader852, label %vector.memcheck730

vector.memcheck730:                               ; preds = %vector.scevcheck727
  %87 = shl i64 %60, 3
  %scevgep731 = getelementptr i8, ptr %10, i64 %87
  %scevgep732 = getelementptr i8, ptr %5, i64 8
  %scevgep733 = getelementptr i8, ptr %7, i64 %87
  %bound0734 = icmp ugt ptr %scevgep732, %10
  %bound1735 = icmp ugt ptr %scevgep731, %5
  %found.conflict736 = and i1 %bound0734, %bound1735
  %bound0737 = icmp ugt ptr %scevgep733, %10
  %bound1738 = icmp ugt ptr %scevgep731, %7
  %found.conflict739 = and i1 %bound0737, %bound1738
  %conflict.rdx740 = or i1 %found.conflict736, %found.conflict739
  br i1 %conflict.rdx740, label %.lr.ph457.split.us.preheader852, label %vector.ph744

vector.ph744:                                     ; preds = %vector.memcheck730
  %n.vec746 = and i64 %60, 9223372036854775804
  %ind.end747 = or disjoint i64 %n.vec746, 1
  %88 = load double, ptr %5, align 8, !tbaa !9, !alias.scope !20
  %broadcast.splatinsert756 = insertelement <2 x double> poison, double %88, i64 0
  %broadcast.splat757 = shufflevector <2 x double> %broadcast.splatinsert756, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body749

vector.body749:                                   ; preds = %vector.body749, %vector.ph744
  %index750 = phi i64 [ 0, %vector.ph744 ], [ %index.next758, %vector.body749 ]
  %offset.idx751 = or disjoint i64 %index750, 1
  %89 = getelementptr double, ptr %invariant.gep472, i64 %offset.idx751
  %90 = getelementptr i8, ptr %89, i64 16
  %wide.load752 = load <2 x double>, ptr %89, align 8, !tbaa !9, !alias.scope !23
  %wide.load753 = load <2 x double>, ptr %90, align 8, !tbaa !9, !alias.scope !23
  %91 = getelementptr double, ptr %invariant.gep470, i64 %offset.idx751
  %92 = getelementptr i8, ptr %91, i64 16
  %wide.load754 = load <2 x double>, ptr %91, align 8, !tbaa !9, !alias.scope !25, !noalias !27
  %wide.load755 = load <2 x double>, ptr %92, align 8, !tbaa !9, !alias.scope !25, !noalias !27
  %93 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat757, <2 x double> %wide.load752, <2 x double> %wide.load754)
  %94 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat757, <2 x double> %wide.load753, <2 x double> %wide.load755)
  store <2 x double> %93, ptr %91, align 8, !tbaa !9, !alias.scope !25, !noalias !27
  store <2 x double> %94, ptr %92, align 8, !tbaa !9, !alias.scope !25, !noalias !27
  %index.next758 = add nuw i64 %index750, 4
  %95 = icmp eq i64 %index.next758, %n.vec746
  br i1 %95, label %middle.block741, label %vector.body749, !llvm.loop !28

middle.block741:                                  ; preds = %vector.body749
  %cmp.n759 = icmp eq i64 %60, %n.vec746
  br i1 %cmp.n759, label %.loopexit372, label %.lr.ph457.split.us.preheader852

.lr.ph457.split.us.preheader852:                  ; preds = %middle.block741, %vector.memcheck730, %vector.scevcheck727, %.lr.ph457.split.us.preheader
  %.2455.us.ph = phi i64 [ 1, %vector.memcheck730 ], [ 1, %vector.scevcheck727 ], [ 1, %.lr.ph457.split.us.preheader ], [ %ind.end747, %middle.block741 ]
  %xtraiter869 = and i64 %60, 1
  %lcmp.mod870.not = icmp eq i64 %xtraiter869, 0
  br i1 %lcmp.mod870.not, label %.lr.ph457.split.us.prol.loopexit, label %.lr.ph457.split.us.prol

.lr.ph457.split.us.prol:                          ; preds = %.lr.ph457.split.us.preheader852
  %96 = load double, ptr %5, align 8, !tbaa !9
  %97 = mul nsw i64 %.2455.us.ph, %16
  %gep451.us.prol = getelementptr double, ptr %invariant.gep472, i64 %97
  %98 = load double, ptr %gep451.us.prol, align 8, !tbaa !9
  %99 = mul nsw i64 %.2455.us.ph, %19
  %gep453.us.prol = getelementptr double, ptr %invariant.gep470, i64 %99
  %100 = load double, ptr %gep453.us.prol, align 8, !tbaa !9
  %101 = tail call double @llvm.fmuladd.f64(double %96, double %98, double %100)
  store double %101, ptr %gep453.us.prol, align 8, !tbaa !9
  %102 = add nuw i64 %.2455.us.ph, 1
  br label %.lr.ph457.split.us.prol.loopexit

.lr.ph457.split.us.prol.loopexit:                 ; preds = %.lr.ph457.split.us.prol, %.lr.ph457.split.us.preheader852
  %.2455.us.unr = phi i64 [ %.2455.us.ph, %.lr.ph457.split.us.preheader852 ], [ %102, %.lr.ph457.split.us.prol ]
  %103 = icmp eq i64 %60, %.2455.us.ph
  br i1 %103, label %.loopexit372, label %.lr.ph457.split.us

.lr.ph457.split.us:                               ; preds = %.lr.ph457.split.us.prol.loopexit, %.lr.ph457.split.us
  %.2455.us = phi i64 [ %117, %.lr.ph457.split.us ], [ %.2455.us.unr, %.lr.ph457.split.us.prol.loopexit ]
  %104 = load double, ptr %5, align 8, !tbaa !9
  %105 = mul nsw i64 %.2455.us, %16
  %gep451.us = getelementptr double, ptr %invariant.gep472, i64 %105
  %106 = load double, ptr %gep451.us, align 8, !tbaa !9
  %107 = mul nsw i64 %.2455.us, %19
  %gep453.us = getelementptr double, ptr %invariant.gep470, i64 %107
  %108 = load double, ptr %gep453.us, align 8, !tbaa !9
  %109 = tail call double @llvm.fmuladd.f64(double %104, double %106, double %108)
  store double %109, ptr %gep453.us, align 8, !tbaa !9
  %110 = add nuw i64 %.2455.us, 1
  %111 = load double, ptr %5, align 8, !tbaa !9
  %112 = mul nsw i64 %110, %16
  %gep451.us.1 = getelementptr double, ptr %invariant.gep472, i64 %112
  %113 = load double, ptr %gep451.us.1, align 8, !tbaa !9
  %114 = mul nsw i64 %110, %19
  %gep453.us.1 = getelementptr double, ptr %invariant.gep470, i64 %114
  %115 = load double, ptr %gep453.us.1, align 8, !tbaa !9
  %116 = tail call double @llvm.fmuladd.f64(double %111, double %113, double %115)
  store double %116, ptr %gep453.us.1, align 8, !tbaa !9
  %117 = add nuw i64 %.2455.us, 2
  %exitcond500.not.1 = icmp eq i64 %110, %60
  br i1 %exitcond500.not.1, label %.loopexit372, label %.lr.ph457.split.us, !llvm.loop !29

.lr.ph457.split:                                  ; preds = %.lr.ph457.split.preheader, %.loopexit373
  %.2455 = phi i64 [ %166, %.loopexit373 ], [ 1, %.lr.ph457.split.preheader ]
  %118 = mul nsw i64 %.2455, %19
  %gep449 = getelementptr double, ptr %invariant.gep470, i64 %118
  %119 = load double, ptr %gep449, align 8, !tbaa !9
  %120 = load double, ptr %5, align 8, !tbaa !9
  %121 = mul nsw i64 %.2455, %16
  %122 = getelementptr double, ptr %18, i64 %121
  %123 = getelementptr i8, ptr %122, i64 8
  %124 = load double, ptr %123, align 8, !tbaa !9
  %125 = tail call double @llvm.fmuladd.f64(double %120, double %124, double %119)
  %126 = load double, ptr %6, align 8, !tbaa !9
  %127 = getelementptr i8, ptr %122, i64 16
  %128 = load double, ptr %127, align 8, !tbaa !9
  %129 = tail call double @llvm.fmuladd.f64(double %126, double %128, double %125)
  store double %129, ptr %gep449, align 8, !tbaa !9
  %130 = getelementptr double, ptr %64, i64 %118
  %131 = load double, ptr %130, align 8, !tbaa !9
  %132 = load double, ptr %66, align 8, !tbaa !9
  %133 = getelementptr double, ptr %67, i64 %121
  %134 = load double, ptr %133, align 8, !tbaa !9
  %135 = tail call double @llvm.fmuladd.f64(double %132, double %134, double %131)
  %136 = load double, ptr %68, align 8, !tbaa !9
  %137 = getelementptr double, ptr %69, i64 %121
  %138 = load double, ptr %137, align 8, !tbaa !9
  %139 = tail call double @llvm.fmuladd.f64(double %136, double %138, double %135)
  store double %139, ptr %130, align 8, !tbaa !9
  %invariant.gep436 = getelementptr double, ptr %21, i64 %118
  br i1 %.not370.not444, label %.lr.ph447.preheader, label %.loopexit373

.lr.ph447.preheader:                              ; preds = %.lr.ph457.split
  %brmerge = select i1 %min.iters.check709, i1 true, i1 %conflict.rdx706
  br i1 %brmerge, label %.lr.ph447.preheader854, label %vector.ph710

vector.ph710:                                     ; preds = %.lr.ph447.preheader
  %invariant.gep877 = getelementptr i8, ptr %122, i64 24
  br label %vector.body715

vector.body715:                                   ; preds = %vector.body715, %vector.ph710
  %index716 = phi i64 [ 0, %vector.ph710 ], [ %index.next725, %vector.body715 ]
  %offset.idx717 = add i64 %index716, 2
  %140 = getelementptr double, ptr %invariant.gep436, i64 %offset.idx717
  %wide.load718 = load <2 x double>, ptr %140, align 8, !tbaa !9, !alias.scope !30, !noalias !33
  %141 = or disjoint i64 %index716, 1
  %142 = getelementptr double, ptr %4, i64 %index716
  %wide.load719 = load <2 x double>, ptr %142, align 8, !tbaa !9, !alias.scope !38
  %143 = getelementptr double, ptr %122, i64 %141
  %wide.load720 = load <2 x double>, ptr %143, align 8, !tbaa !9, !alias.scope !39
  %144 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %wide.load719, <2 x double> %wide.load720, <2 x double> %wide.load718)
  %145 = getelementptr inbounds double, ptr %14, i64 %offset.idx717
  %wide.load721 = load <2 x double>, ptr %145, align 8, !tbaa !9, !alias.scope !40
  %146 = getelementptr double, ptr %122, i64 %offset.idx717
  %wide.load722 = load <2 x double>, ptr %146, align 8, !tbaa !9, !alias.scope !39
  %147 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %wide.load721, <2 x double> %wide.load722, <2 x double> %144)
  %148 = getelementptr inbounds double, ptr %15, i64 %offset.idx717
  %wide.load723 = load <2 x double>, ptr %148, align 8, !tbaa !9, !alias.scope !41
  %gep878 = getelementptr double, ptr %invariant.gep877, i64 %index716
  %wide.load724 = load <2 x double>, ptr %gep878, align 8, !tbaa !9, !alias.scope !39
  %149 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %wide.load723, <2 x double> %wide.load724, <2 x double> %147)
  store <2 x double> %149, ptr %140, align 8, !tbaa !9, !alias.scope !30, !noalias !33
  %index.next725 = add nuw i64 %index716, 2
  %150 = icmp eq i64 %index.next725, %n.vec712
  br i1 %150, label %middle.block707, label %vector.body715, !llvm.loop !42

middle.block707:                                  ; preds = %vector.body715
  br i1 %cmp.n726, label %.loopexit373, label %.lr.ph447.preheader854

.lr.ph447.preheader854:                           ; preds = %.lr.ph447.preheader, %middle.block707
  %.2352445.ph = phi i64 [ 2, %.lr.ph447.preheader ], [ %ind.end713, %middle.block707 ]
  br label %.lr.ph447

.lr.ph447:                                        ; preds = %.lr.ph447.preheader854, %.lr.ph447
  %.2352445 = phi i64 [ %163, %.lr.ph447 ], [ %.2352445.ph, %.lr.ph447.preheader854 ]
  %gep437 = getelementptr double, ptr %invariant.gep436, i64 %.2352445
  %151 = load double, ptr %gep437, align 8, !tbaa !9
  %152 = add nsw i64 %.2352445, -1
  %153 = getelementptr inbounds double, ptr %13, i64 %152
  %154 = load double, ptr %153, align 8, !tbaa !9
  %gep439 = getelementptr double, ptr %122, i64 %152
  %155 = load double, ptr %gep439, align 8, !tbaa !9
  %156 = tail call double @llvm.fmuladd.f64(double %154, double %155, double %151)
  %157 = getelementptr inbounds double, ptr %14, i64 %.2352445
  %158 = load double, ptr %157, align 8, !tbaa !9
  %gep441 = getelementptr double, ptr %122, i64 %.2352445
  %159 = load double, ptr %gep441, align 8, !tbaa !9
  %160 = tail call double @llvm.fmuladd.f64(double %158, double %159, double %156)
  %161 = getelementptr inbounds double, ptr %15, i64 %.2352445
  %162 = load double, ptr %161, align 8, !tbaa !9
  %163 = add nuw nsw i64 %.2352445, 1
  %gep443 = getelementptr double, ptr %122, i64 %163
  %164 = load double, ptr %gep443, align 8, !tbaa !9
  %165 = tail call double @llvm.fmuladd.f64(double %162, double %164, double %160)
  store double %165, ptr %gep437, align 8, !tbaa !9
  %exitcond498.not = icmp eq i64 %163, %62
  br i1 %exitcond498.not, label %.loopexit373, label %.lr.ph447, !llvm.loop !43

.loopexit373:                                     ; preds = %.lr.ph447, %middle.block707, %.lr.ph457.split
  %166 = add nuw i64 %.2455, 1
  %exitcond499.not = icmp eq i64 %.2455, %60
  br i1 %exitcond499.not, label %.loopexit372, label %.lr.ph457.split, !llvm.loop !44

167:                                              ; preds = %58
  br i1 %.not367476, label %.loopexit372, label %.lr.ph479

.lr.ph479:                                        ; preds = %167
  %168 = load i64, ptr %1, align 8, !tbaa !5
  %169 = icmp eq i64 %168, 1
  %170 = getelementptr double, ptr %21, i64 %168
  %171 = add nsw i64 %168, -1
  %172 = getelementptr inbounds double, ptr %15, i64 %171
  %173 = getelementptr double, ptr %18, i64 %171
  %174 = getelementptr inbounds double, ptr %14, i64 %168
  %175 = getelementptr double, ptr %18, i64 %168
  %.not368.not466 = icmp sgt i64 %168, 2
  br i1 %169, label %.lr.ph479.split.us.preheader, label %.lr.ph479.split.preheader

.lr.ph479.split.preheader:                        ; preds = %.lr.ph479
  %scevgep761 = getelementptr i8, ptr %10, i64 8
  %176 = add nsw i64 %60, -1
  %177 = mul i64 %19, %176
  %178 = shl i64 %168, 3
  %179 = add i64 %177, %168
  %180 = shl i64 %179, 3
  %181 = getelementptr i8, ptr %10, i64 %180
  %scevgep762 = getelementptr i8, ptr %181, i64 -8
  %182 = getelementptr i8, ptr %6, i64 %178
  %scevgep763 = getelementptr i8, ptr %182, i64 -16
  %183 = mul i64 %16, %176
  %184 = add i64 %183, %168
  %185 = shl i64 %184, 3
  %scevgep764 = getelementptr i8, ptr %7, i64 %185
  %scevgep765 = getelementptr i8, ptr %5, i64 8
  %186 = add i64 %178, -8
  %scevgep766 = getelementptr i8, ptr %5, i64 %186
  %scevgep767 = getelementptr i8, ptr %4, i64 8
  %scevgep768 = getelementptr i8, ptr %4, i64 %186
  %187 = add i64 %168, -2
  %min.iters.check791 = icmp ult i64 %187, 6
  %bound0769 = icmp ult ptr %scevgep761, %scevgep763
  %bound1770 = icmp ugt ptr %scevgep762, %6
  %found.conflict771 = and i1 %bound0769, %bound1770
  %bound0773 = icmp ult ptr %scevgep761, %scevgep764
  %bound1774 = icmp ugt ptr %scevgep762, %7
  %found.conflict775 = and i1 %bound0773, %bound1774
  %188 = or i64 %19, %16
  %189 = and i64 %188, 1152921504606846976
  %190 = icmp ne i64 %189, 0
  %191 = or i1 %found.conflict775, %190
  %conflict.rdx778 = or i1 %found.conflict771, %191
  %bound0779 = icmp ult ptr %scevgep761, %scevgep766
  %bound1780 = icmp ult ptr %scevgep765, %scevgep762
  %found.conflict781 = and i1 %bound0779, %bound1780
  %conflict.rdx783 = or i1 %found.conflict781, %conflict.rdx778
  %bound0784 = icmp ult ptr %scevgep761, %scevgep768
  %bound1785 = icmp ult ptr %scevgep767, %scevgep762
  %found.conflict786 = and i1 %bound0784, %bound1785
  %conflict.rdx788 = or i1 %found.conflict786, %conflict.rdx783
  %n.vec794 = and i64 %187, -2
  %ind.end795 = add i64 %n.vec794, 2
  %cmp.n808 = icmp eq i64 %187, %n.vec794
  br label %.lr.ph479.split

.lr.ph479.split.us.preheader:                     ; preds = %.lr.ph479
  %min.iters.check825 = icmp ult i64 %60, 12
  br i1 %min.iters.check825, label %.lr.ph479.split.us.preheader849, label %vector.scevcheck809

vector.scevcheck809:                              ; preds = %.lr.ph479.split.us.preheader
  %ident.check810 = icmp ne i64 %19, 1
  %ident.check811 = icmp ne i64 %16, 1
  %192 = or i1 %ident.check810, %ident.check811
  br i1 %192, label %.lr.ph479.split.us.preheader849, label %vector.memcheck812

vector.memcheck812:                               ; preds = %vector.scevcheck809
  %193 = shl i64 %60, 3
  %scevgep813 = getelementptr i8, ptr %10, i64 %193
  %scevgep814 = getelementptr i8, ptr %5, i64 8
  %scevgep815 = getelementptr i8, ptr %7, i64 %193
  %bound0816 = icmp ugt ptr %scevgep814, %10
  %bound1817 = icmp ugt ptr %scevgep813, %5
  %found.conflict818 = and i1 %bound0816, %bound1817
  %bound0819 = icmp ugt ptr %scevgep815, %10
  %bound1820 = icmp ugt ptr %scevgep813, %7
  %found.conflict821 = and i1 %bound0819, %bound1820
  %conflict.rdx822 = or i1 %found.conflict818, %found.conflict821
  br i1 %conflict.rdx822, label %.lr.ph479.split.us.preheader849, label %vector.ph826

vector.ph826:                                     ; preds = %vector.memcheck812
  %n.vec828 = and i64 %60, 9223372036854775804
  %ind.end829 = or disjoint i64 %n.vec828, 1
  %194 = load double, ptr %5, align 8, !tbaa !9, !alias.scope !45
  %broadcast.splatinsert838 = insertelement <2 x double> poison, double %194, i64 0
  %broadcast.splat839 = shufflevector <2 x double> %broadcast.splatinsert838, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body831

vector.body831:                                   ; preds = %vector.body831, %vector.ph826
  %index832 = phi i64 [ 0, %vector.ph826 ], [ %index.next840, %vector.body831 ]
  %offset.idx833 = or disjoint i64 %index832, 1
  %195 = getelementptr double, ptr %invariant.gep472, i64 %offset.idx833
  %196 = getelementptr i8, ptr %195, i64 16
  %wide.load834 = load <2 x double>, ptr %195, align 8, !tbaa !9, !alias.scope !48
  %wide.load835 = load <2 x double>, ptr %196, align 8, !tbaa !9, !alias.scope !48
  %197 = getelementptr double, ptr %invariant.gep470, i64 %offset.idx833
  %198 = getelementptr i8, ptr %197, i64 16
  %wide.load836 = load <2 x double>, ptr %197, align 8, !tbaa !9, !alias.scope !50, !noalias !52
  %wide.load837 = load <2 x double>, ptr %198, align 8, !tbaa !9, !alias.scope !50, !noalias !52
  %199 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat839, <2 x double> %wide.load834, <2 x double> %wide.load836)
  %200 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat839, <2 x double> %wide.load835, <2 x double> %wide.load837)
  store <2 x double> %199, ptr %197, align 8, !tbaa !9, !alias.scope !50, !noalias !52
  store <2 x double> %200, ptr %198, align 8, !tbaa !9, !alias.scope !50, !noalias !52
  %index.next840 = add nuw i64 %index832, 4
  %201 = icmp eq i64 %index.next840, %n.vec828
  br i1 %201, label %middle.block823, label %vector.body831, !llvm.loop !53

middle.block823:                                  ; preds = %vector.body831
  %cmp.n841 = icmp eq i64 %60, %n.vec828
  br i1 %cmp.n841, label %.loopexit372, label %.lr.ph479.split.us.preheader849

.lr.ph479.split.us.preheader849:                  ; preds = %middle.block823, %vector.memcheck812, %vector.scevcheck809, %.lr.ph479.split.us.preheader
  %.3477.us.ph = phi i64 [ 1, %vector.memcheck812 ], [ 1, %vector.scevcheck809 ], [ 1, %.lr.ph479.split.us.preheader ], [ %ind.end829, %middle.block823 ]
  %xtraiter871 = and i64 %60, 1
  %lcmp.mod872.not = icmp eq i64 %xtraiter871, 0
  br i1 %lcmp.mod872.not, label %.lr.ph479.split.us.prol.loopexit, label %.lr.ph479.split.us.prol

.lr.ph479.split.us.prol:                          ; preds = %.lr.ph479.split.us.preheader849
  %202 = load double, ptr %5, align 8, !tbaa !9
  %203 = mul nsw i64 %.3477.us.ph, %16
  %gep473.us.prol = getelementptr double, ptr %invariant.gep472, i64 %203
  %204 = load double, ptr %gep473.us.prol, align 8, !tbaa !9
  %205 = mul nsw i64 %.3477.us.ph, %19
  %gep475.us.prol = getelementptr double, ptr %invariant.gep470, i64 %205
  %206 = load double, ptr %gep475.us.prol, align 8, !tbaa !9
  %207 = tail call double @llvm.fmuladd.f64(double %202, double %204, double %206)
  store double %207, ptr %gep475.us.prol, align 8, !tbaa !9
  %208 = add nuw i64 %.3477.us.ph, 1
  br label %.lr.ph479.split.us.prol.loopexit

.lr.ph479.split.us.prol.loopexit:                 ; preds = %.lr.ph479.split.us.prol, %.lr.ph479.split.us.preheader849
  %.3477.us.unr = phi i64 [ %.3477.us.ph, %.lr.ph479.split.us.preheader849 ], [ %208, %.lr.ph479.split.us.prol ]
  %209 = icmp eq i64 %60, %.3477.us.ph
  br i1 %209, label %.loopexit372, label %.lr.ph479.split.us

.lr.ph479.split.us:                               ; preds = %.lr.ph479.split.us.prol.loopexit, %.lr.ph479.split.us
  %.3477.us = phi i64 [ %223, %.lr.ph479.split.us ], [ %.3477.us.unr, %.lr.ph479.split.us.prol.loopexit ]
  %210 = load double, ptr %5, align 8, !tbaa !9
  %211 = mul nsw i64 %.3477.us, %16
  %gep473.us = getelementptr double, ptr %invariant.gep472, i64 %211
  %212 = load double, ptr %gep473.us, align 8, !tbaa !9
  %213 = mul nsw i64 %.3477.us, %19
  %gep475.us = getelementptr double, ptr %invariant.gep470, i64 %213
  %214 = load double, ptr %gep475.us, align 8, !tbaa !9
  %215 = tail call double @llvm.fmuladd.f64(double %210, double %212, double %214)
  store double %215, ptr %gep475.us, align 8, !tbaa !9
  %216 = add nuw i64 %.3477.us, 1
  %217 = load double, ptr %5, align 8, !tbaa !9
  %218 = mul nsw i64 %216, %16
  %gep473.us.1 = getelementptr double, ptr %invariant.gep472, i64 %218
  %219 = load double, ptr %gep473.us.1, align 8, !tbaa !9
  %220 = mul nsw i64 %216, %19
  %gep475.us.1 = getelementptr double, ptr %invariant.gep470, i64 %220
  %221 = load double, ptr %gep475.us.1, align 8, !tbaa !9
  %222 = tail call double @llvm.fmuladd.f64(double %217, double %219, double %221)
  store double %222, ptr %gep475.us.1, align 8, !tbaa !9
  %223 = add nuw i64 %.3477.us, 2
  %exitcond503.not.1 = icmp eq i64 %216, %60
  br i1 %exitcond503.not.1, label %.loopexit372, label %.lr.ph479.split.us, !llvm.loop !54

.lr.ph479.split:                                  ; preds = %.lr.ph479.split.preheader, %.loopexit
  %.3477 = phi i64 [ %272, %.loopexit ], [ 1, %.lr.ph479.split.preheader ]
  %224 = mul nsw i64 %.3477, %19
  %gep471 = getelementptr double, ptr %invariant.gep470, i64 %224
  %225 = load double, ptr %gep471, align 8, !tbaa !9
  %226 = load double, ptr %5, align 8, !tbaa !9
  %227 = mul nsw i64 %.3477, %16
  %228 = getelementptr double, ptr %18, i64 %227
  %229 = getelementptr i8, ptr %228, i64 8
  %230 = load double, ptr %229, align 8, !tbaa !9
  %231 = tail call double @llvm.fmuladd.f64(double %226, double %230, double %225)
  %232 = load double, ptr %4, align 8, !tbaa !9
  %233 = getelementptr i8, ptr %228, i64 16
  %234 = load double, ptr %233, align 8, !tbaa !9
  %235 = tail call double @llvm.fmuladd.f64(double %232, double %234, double %231)
  store double %235, ptr %gep471, align 8, !tbaa !9
  %236 = getelementptr double, ptr %170, i64 %224
  %237 = load double, ptr %236, align 8, !tbaa !9
  %238 = load double, ptr %172, align 8, !tbaa !9
  %239 = getelementptr double, ptr %173, i64 %227
  %240 = load double, ptr %239, align 8, !tbaa !9
  %241 = tail call double @llvm.fmuladd.f64(double %238, double %240, double %237)
  %242 = load double, ptr %174, align 8, !tbaa !9
  %243 = getelementptr double, ptr %175, i64 %227
  %244 = load double, ptr %243, align 8, !tbaa !9
  %245 = tail call double @llvm.fmuladd.f64(double %242, double %244, double %241)
  store double %245, ptr %236, align 8, !tbaa !9
  %invariant.gep458 = getelementptr double, ptr %21, i64 %224
  br i1 %.not368.not466, label %.lr.ph469.preheader, label %.loopexit

.lr.ph469.preheader:                              ; preds = %.lr.ph479.split
  %brmerge881 = select i1 %min.iters.check791, i1 true, i1 %conflict.rdx788
  br i1 %brmerge881, label %.lr.ph469.preheader850, label %vector.ph792

vector.ph792:                                     ; preds = %.lr.ph469.preheader
  %invariant.gep879 = getelementptr i8, ptr %228, i64 24
  br label %vector.body797

vector.body797:                                   ; preds = %vector.body797, %vector.ph792
  %index798 = phi i64 [ 0, %vector.ph792 ], [ %index.next807, %vector.body797 ]
  %offset.idx799 = add i64 %index798, 2
  %246 = getelementptr double, ptr %invariant.gep458, i64 %offset.idx799
  %wide.load800 = load <2 x double>, ptr %246, align 8, !tbaa !9, !alias.scope !55, !noalias !58
  %247 = or disjoint i64 %index798, 1
  %248 = getelementptr double, ptr %6, i64 %index798
  %wide.load801 = load <2 x double>, ptr %248, align 8, !tbaa !9, !alias.scope !63
  %249 = getelementptr double, ptr %228, i64 %247
  %wide.load802 = load <2 x double>, ptr %249, align 8, !tbaa !9, !alias.scope !64
  %250 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %wide.load801, <2 x double> %wide.load802, <2 x double> %wide.load800)
  %251 = getelementptr inbounds double, ptr %14, i64 %offset.idx799
  %wide.load803 = load <2 x double>, ptr %251, align 8, !tbaa !9, !alias.scope !65
  %252 = getelementptr double, ptr %228, i64 %offset.idx799
  %wide.load804 = load <2 x double>, ptr %252, align 8, !tbaa !9, !alias.scope !64
  %253 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %wide.load803, <2 x double> %wide.load804, <2 x double> %250)
  %254 = getelementptr inbounds double, ptr %13, i64 %offset.idx799
  %wide.load805 = load <2 x double>, ptr %254, align 8, !tbaa !9, !alias.scope !66
  %gep880 = getelementptr double, ptr %invariant.gep879, i64 %index798
  %wide.load806 = load <2 x double>, ptr %gep880, align 8, !tbaa !9, !alias.scope !64
  %255 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %wide.load805, <2 x double> %wide.load806, <2 x double> %253)
  store <2 x double> %255, ptr %246, align 8, !tbaa !9, !alias.scope !55, !noalias !58
  %index.next807 = add nuw i64 %index798, 2
  %256 = icmp eq i64 %index.next807, %n.vec794
  br i1 %256, label %middle.block789, label %vector.body797, !llvm.loop !67

middle.block789:                                  ; preds = %vector.body797
  br i1 %cmp.n808, label %.loopexit, label %.lr.ph469.preheader850

.lr.ph469.preheader850:                           ; preds = %.lr.ph469.preheader, %middle.block789
  %.3353467.ph = phi i64 [ 2, %.lr.ph469.preheader ], [ %ind.end795, %middle.block789 ]
  br label %.lr.ph469

.lr.ph469:                                        ; preds = %.lr.ph469.preheader850, %.lr.ph469
  %.3353467 = phi i64 [ %269, %.lr.ph469 ], [ %.3353467.ph, %.lr.ph469.preheader850 ]
  %gep459 = getelementptr double, ptr %invariant.gep458, i64 %.3353467
  %257 = load double, ptr %gep459, align 8, !tbaa !9
  %258 = add nsw i64 %.3353467, -1
  %259 = getelementptr inbounds double, ptr %15, i64 %258
  %260 = load double, ptr %259, align 8, !tbaa !9
  %gep461 = getelementptr double, ptr %228, i64 %258
  %261 = load double, ptr %gep461, align 8, !tbaa !9
  %262 = tail call double @llvm.fmuladd.f64(double %260, double %261, double %257)
  %263 = getelementptr inbounds double, ptr %14, i64 %.3353467
  %264 = load double, ptr %263, align 8, !tbaa !9
  %gep463 = getelementptr double, ptr %228, i64 %.3353467
  %265 = load double, ptr %gep463, align 8, !tbaa !9
  %266 = tail call double @llvm.fmuladd.f64(double %264, double %265, double %262)
  %267 = getelementptr inbounds double, ptr %13, i64 %.3353467
  %268 = load double, ptr %267, align 8, !tbaa !9
  %269 = add nuw nsw i64 %.3353467, 1
  %gep465 = getelementptr double, ptr %228, i64 %269
  %270 = load double, ptr %gep465, align 8, !tbaa !9
  %271 = tail call double @llvm.fmuladd.f64(double %268, double %270, double %266)
  store double %271, ptr %gep459, align 8, !tbaa !9
  %exitcond501.not = icmp eq i64 %269, %168
  br i1 %exitcond501.not, label %.loopexit, label %.lr.ph469, !llvm.loop !68

.loopexit:                                        ; preds = %.lr.ph469, %middle.block789, %.lr.ph479.split
  %272 = add nuw i64 %.3477, 1
  %exitcond502.not = icmp eq i64 %.3477, %60
  br i1 %exitcond502.not, label %.loopexit372, label %.lr.ph479.split, !llvm.loop !69

273:                                              ; preds = %.loopexit379
  %274 = fcmp oeq double %56, -1.000000e+00
  br i1 %274, label %275, label %.loopexit372

275:                                              ; preds = %273
  %276 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %.not361 = icmp eq i64 %276, 0
  %277 = load i64, ptr %2, align 8, !tbaa !5
  %invariant.gep426 = getelementptr i8, ptr %21, i64 8
  %invariant.gep428 = getelementptr i8, ptr %18, i64 8
  %.not362432 = icmp slt i64 %277, 1
  br i1 %.not361, label %399, label %278

278:                                              ; preds = %275
  br i1 %.not362432, label %.loopexit372, label %.lr.ph413

.lr.ph413:                                        ; preds = %278
  %279 = load i64, ptr %1, align 8, !tbaa !5
  %280 = icmp eq i64 %279, 1
  %281 = getelementptr double, ptr %21, i64 %279
  %282 = add nsw i64 %279, -1
  %283 = getelementptr inbounds double, ptr %13, i64 %282
  %284 = getelementptr double, ptr %18, i64 %282
  %285 = getelementptr inbounds double, ptr %14, i64 %279
  %286 = getelementptr double, ptr %18, i64 %279
  %.not365.not401 = icmp sgt i64 %279, 2
  br i1 %280, label %.lr.ph413.split.us.preheader, label %.lr.ph413.split.preheader

.lr.ph413.split.preheader:                        ; preds = %.lr.ph413
  %scevgep522 = getelementptr i8, ptr %10, i64 8
  %287 = add nsw i64 %277, -1
  %288 = mul i64 %19, %287
  %289 = shl i64 %279, 3
  %290 = add i64 %288, %279
  %291 = shl i64 %290, 3
  %292 = getelementptr i8, ptr %10, i64 %291
  %scevgep523 = getelementptr i8, ptr %292, i64 -8
  %293 = getelementptr i8, ptr %4, i64 %289
  %scevgep524 = getelementptr i8, ptr %293, i64 -16
  %294 = mul i64 %16, %287
  %295 = add i64 %294, %279
  %296 = shl i64 %295, 3
  %scevgep525 = getelementptr i8, ptr %7, i64 %296
  %scevgep526 = getelementptr i8, ptr %5, i64 8
  %297 = add i64 %289, -8
  %scevgep527 = getelementptr i8, ptr %5, i64 %297
  %scevgep528 = getelementptr i8, ptr %6, i64 8
  %scevgep529 = getelementptr i8, ptr %6, i64 %297
  %298 = add i64 %279, -2
  %min.iters.check547 = icmp ult i64 %298, 6
  %bound0 = icmp ult ptr %scevgep522, %scevgep524
  %bound1 = icmp ugt ptr %scevgep523, %4
  %found.conflict = and i1 %bound0, %bound1
  %bound0530 = icmp ult ptr %scevgep522, %scevgep525
  %bound1531 = icmp ugt ptr %scevgep523, %7
  %found.conflict532 = and i1 %bound0530, %bound1531
  %299 = or i64 %19, %16
  %300 = and i64 %299, 1152921504606846976
  %301 = icmp ne i64 %300, 0
  %302 = or i1 %found.conflict532, %301
  %conflict.rdx = or i1 %found.conflict, %302
  %bound0535 = icmp ult ptr %scevgep522, %scevgep527
  %bound1536 = icmp ult ptr %scevgep526, %scevgep523
  %found.conflict537 = and i1 %bound0535, %bound1536
  %conflict.rdx539 = or i1 %found.conflict537, %conflict.rdx
  %bound0540 = icmp ult ptr %scevgep522, %scevgep529
  %bound1541 = icmp ult ptr %scevgep528, %scevgep523
  %found.conflict542 = and i1 %bound0540, %bound1541
  %conflict.rdx544 = or i1 %found.conflict542, %conflict.rdx539
  %n.vec550 = and i64 %298, -2
  %ind.end551 = add i64 %n.vec550, 2
  %cmp.n564 = icmp eq i64 %298, %n.vec550
  br label %.lr.ph413.split

.lr.ph413.split.us.preheader:                     ; preds = %.lr.ph413
  %min.iters.check579 = icmp ult i64 %277, 10
  br i1 %min.iters.check579, label %.lr.ph413.split.us.preheader860, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %.lr.ph413.split.us.preheader
  %ident.check = icmp ne i64 %19, 1
  %ident.check565 = icmp ne i64 %16, 1
  %303 = or i1 %ident.check, %ident.check565
  br i1 %303, label %.lr.ph413.split.us.preheader860, label %vector.memcheck566

vector.memcheck566:                               ; preds = %vector.scevcheck
  %304 = shl i64 %277, 3
  %scevgep567 = getelementptr i8, ptr %10, i64 %304
  %scevgep568 = getelementptr i8, ptr %5, i64 8
  %scevgep569 = getelementptr i8, ptr %7, i64 %304
  %bound0570 = icmp ugt ptr %scevgep568, %10
  %bound1571 = icmp ugt ptr %scevgep567, %5
  %found.conflict572 = and i1 %bound0570, %bound1571
  %bound0573 = icmp ugt ptr %scevgep569, %10
  %bound1574 = icmp ugt ptr %scevgep567, %7
  %found.conflict575 = and i1 %bound0573, %bound1574
  %conflict.rdx576 = or i1 %found.conflict572, %found.conflict575
  br i1 %conflict.rdx576, label %.lr.ph413.split.us.preheader860, label %vector.ph580

vector.ph580:                                     ; preds = %vector.memcheck566
  %n.vec582 = and i64 %277, 9223372036854775804
  %ind.end583 = or disjoint i64 %n.vec582, 1
  %305 = load double, ptr %5, align 8, !tbaa !9, !alias.scope !70
  %broadcast.splatinsert592 = insertelement <2 x double> poison, double %305, i64 0
  %broadcast.splat593 = shufflevector <2 x double> %broadcast.splatinsert592, <2 x double> poison, <2 x i32> zeroinitializer
  %306 = fneg <2 x double> %broadcast.splat593
  %307 = fneg <2 x double> %broadcast.splat593
  br label %vector.body585

vector.body585:                                   ; preds = %vector.body585, %vector.ph580
  %index586 = phi i64 [ 0, %vector.ph580 ], [ %index.next594, %vector.body585 ]
  %offset.idx587 = or disjoint i64 %index586, 1
  %308 = getelementptr double, ptr %invariant.gep428, i64 %offset.idx587
  %309 = getelementptr i8, ptr %308, i64 16
  %wide.load588 = load <2 x double>, ptr %308, align 8, !tbaa !9, !alias.scope !73
  %wide.load589 = load <2 x double>, ptr %309, align 8, !tbaa !9, !alias.scope !73
  %310 = getelementptr double, ptr %invariant.gep426, i64 %offset.idx587
  %311 = getelementptr i8, ptr %310, i64 16
  %wide.load590 = load <2 x double>, ptr %310, align 8, !tbaa !9, !alias.scope !75, !noalias !77
  %wide.load591 = load <2 x double>, ptr %311, align 8, !tbaa !9, !alias.scope !75, !noalias !77
  %312 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %306, <2 x double> %wide.load588, <2 x double> %wide.load590)
  %313 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %307, <2 x double> %wide.load589, <2 x double> %wide.load591)
  store <2 x double> %312, ptr %310, align 8, !tbaa !9, !alias.scope !75, !noalias !77
  store <2 x double> %313, ptr %311, align 8, !tbaa !9, !alias.scope !75, !noalias !77
  %index.next594 = add nuw i64 %index586, 4
  %314 = icmp eq i64 %index.next594, %n.vec582
  br i1 %314, label %middle.block577, label %vector.body585, !llvm.loop !78

middle.block577:                                  ; preds = %vector.body585
  %cmp.n595 = icmp eq i64 %277, %n.vec582
  br i1 %cmp.n595, label %.loopexit372, label %.lr.ph413.split.us.preheader860

.lr.ph413.split.us.preheader860:                  ; preds = %middle.block577, %vector.memcheck566, %vector.scevcheck, %.lr.ph413.split.us.preheader
  %.4411.us.ph = phi i64 [ 1, %vector.memcheck566 ], [ 1, %vector.scevcheck ], [ 1, %.lr.ph413.split.us.preheader ], [ %ind.end583, %middle.block577 ]
  %xtraiter865 = and i64 %277, 1
  %lcmp.mod866.not = icmp eq i64 %xtraiter865, 0
  br i1 %lcmp.mod866.not, label %.lr.ph413.split.us.prol.loopexit, label %.lr.ph413.split.us.prol

.lr.ph413.split.us.prol:                          ; preds = %.lr.ph413.split.us.preheader860
  %315 = load double, ptr %5, align 8, !tbaa !9
  %316 = mul nsw i64 %.4411.us.ph, %16
  %gep407.us.prol = getelementptr double, ptr %invariant.gep428, i64 %316
  %317 = load double, ptr %gep407.us.prol, align 8, !tbaa !9
  %318 = mul nsw i64 %.4411.us.ph, %19
  %gep409.us.prol = getelementptr double, ptr %invariant.gep426, i64 %318
  %319 = load double, ptr %gep409.us.prol, align 8, !tbaa !9
  %320 = fneg double %315
  %321 = tail call double @llvm.fmuladd.f64(double %320, double %317, double %319)
  store double %321, ptr %gep409.us.prol, align 8, !tbaa !9
  %322 = add nuw i64 %.4411.us.ph, 1
  br label %.lr.ph413.split.us.prol.loopexit

.lr.ph413.split.us.prol.loopexit:                 ; preds = %.lr.ph413.split.us.prol, %.lr.ph413.split.us.preheader860
  %.4411.us.unr = phi i64 [ %.4411.us.ph, %.lr.ph413.split.us.preheader860 ], [ %322, %.lr.ph413.split.us.prol ]
  %323 = icmp eq i64 %277, %.4411.us.ph
  br i1 %323, label %.loopexit372, label %.lr.ph413.split.us

.lr.ph413.split.us:                               ; preds = %.lr.ph413.split.us.prol.loopexit, %.lr.ph413.split.us
  %.4411.us = phi i64 [ %339, %.lr.ph413.split.us ], [ %.4411.us.unr, %.lr.ph413.split.us.prol.loopexit ]
  %324 = load double, ptr %5, align 8, !tbaa !9
  %325 = mul nsw i64 %.4411.us, %16
  %gep407.us = getelementptr double, ptr %invariant.gep428, i64 %325
  %326 = load double, ptr %gep407.us, align 8, !tbaa !9
  %327 = mul nsw i64 %.4411.us, %19
  %gep409.us = getelementptr double, ptr %invariant.gep426, i64 %327
  %328 = load double, ptr %gep409.us, align 8, !tbaa !9
  %329 = fneg double %324
  %330 = tail call double @llvm.fmuladd.f64(double %329, double %326, double %328)
  store double %330, ptr %gep409.us, align 8, !tbaa !9
  %331 = add nuw i64 %.4411.us, 1
  %332 = load double, ptr %5, align 8, !tbaa !9
  %333 = mul nsw i64 %331, %16
  %gep407.us.1 = getelementptr double, ptr %invariant.gep428, i64 %333
  %334 = load double, ptr %gep407.us.1, align 8, !tbaa !9
  %335 = mul nsw i64 %331, %19
  %gep409.us.1 = getelementptr double, ptr %invariant.gep426, i64 %335
  %336 = load double, ptr %gep409.us.1, align 8, !tbaa !9
  %337 = fneg double %332
  %338 = tail call double @llvm.fmuladd.f64(double %337, double %334, double %336)
  store double %338, ptr %gep409.us.1, align 8, !tbaa !9
  %339 = add nuw i64 %.4411.us, 2
  %exitcond494.not.1 = icmp eq i64 %331, %277
  br i1 %exitcond494.not.1, label %.loopexit372, label %.lr.ph413.split.us, !llvm.loop !79

.lr.ph413.split:                                  ; preds = %.lr.ph413.split.preheader, %.loopexit377
  %.4411 = phi i64 [ %398, %.loopexit377 ], [ 1, %.lr.ph413.split.preheader ]
  %340 = mul nsw i64 %.4411, %19
  %gep405 = getelementptr double, ptr %invariant.gep426, i64 %340
  %341 = load double, ptr %gep405, align 8, !tbaa !9
  %342 = load double, ptr %5, align 8, !tbaa !9
  %343 = mul nsw i64 %.4411, %16
  %344 = getelementptr double, ptr %18, i64 %343
  %345 = getelementptr i8, ptr %344, i64 8
  %346 = load double, ptr %345, align 8, !tbaa !9
  %347 = fneg double %342
  %348 = tail call double @llvm.fmuladd.f64(double %347, double %346, double %341)
  %349 = load double, ptr %6, align 8, !tbaa !9
  %350 = getelementptr i8, ptr %344, i64 16
  %351 = load double, ptr %350, align 8, !tbaa !9
  %352 = fneg double %349
  %353 = tail call double @llvm.fmuladd.f64(double %352, double %351, double %348)
  store double %353, ptr %gep405, align 8, !tbaa !9
  %354 = getelementptr double, ptr %281, i64 %340
  %355 = load double, ptr %354, align 8, !tbaa !9
  %356 = load double, ptr %283, align 8, !tbaa !9
  %357 = getelementptr double, ptr %284, i64 %343
  %358 = load double, ptr %357, align 8, !tbaa !9
  %359 = fneg double %356
  %360 = tail call double @llvm.fmuladd.f64(double %359, double %358, double %355)
  %361 = load double, ptr %285, align 8, !tbaa !9
  %362 = getelementptr double, ptr %286, i64 %343
  %363 = load double, ptr %362, align 8, !tbaa !9
  %364 = fneg double %361
  %365 = tail call double @llvm.fmuladd.f64(double %364, double %363, double %360)
  store double %365, ptr %354, align 8, !tbaa !9
  %invariant.gep393 = getelementptr double, ptr %21, i64 %340
  br i1 %.not365.not401, label %.lr.ph.preheader, label %.loopexit377

.lr.ph.preheader:                                 ; preds = %.lr.ph413.split
  %brmerge882 = select i1 %min.iters.check547, i1 true, i1 %conflict.rdx544
  br i1 %brmerge882, label %.lr.ph.preheader862, label %vector.ph548

vector.ph548:                                     ; preds = %.lr.ph.preheader
  %invariant.gep873 = getelementptr i8, ptr %344, i64 24
  br label %vector.body553

vector.body553:                                   ; preds = %vector.body553, %vector.ph548
  %index554 = phi i64 [ 0, %vector.ph548 ], [ %index.next563, %vector.body553 ]
  %offset.idx555 = add i64 %index554, 2
  %366 = getelementptr double, ptr %invariant.gep393, i64 %offset.idx555
  %wide.load556 = load <2 x double>, ptr %366, align 8, !tbaa !9, !alias.scope !80, !noalias !83
  %367 = or disjoint i64 %index554, 1
  %368 = getelementptr double, ptr %4, i64 %index554
  %wide.load557 = load <2 x double>, ptr %368, align 8, !tbaa !9, !alias.scope !88
  %369 = getelementptr double, ptr %344, i64 %367
  %wide.load558 = load <2 x double>, ptr %369, align 8, !tbaa !9, !alias.scope !89
  %370 = fneg <2 x double> %wide.load557
  %371 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %370, <2 x double> %wide.load558, <2 x double> %wide.load556)
  %372 = getelementptr inbounds double, ptr %14, i64 %offset.idx555
  %wide.load559 = load <2 x double>, ptr %372, align 8, !tbaa !9, !alias.scope !90
  %373 = getelementptr double, ptr %344, i64 %offset.idx555
  %wide.load560 = load <2 x double>, ptr %373, align 8, !tbaa !9, !alias.scope !89
  %374 = fneg <2 x double> %wide.load559
  %375 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %374, <2 x double> %wide.load560, <2 x double> %371)
  %376 = getelementptr inbounds double, ptr %15, i64 %offset.idx555
  %wide.load561 = load <2 x double>, ptr %376, align 8, !tbaa !9, !alias.scope !91
  %gep874 = getelementptr double, ptr %invariant.gep873, i64 %index554
  %wide.load562 = load <2 x double>, ptr %gep874, align 8, !tbaa !9, !alias.scope !89
  %377 = fneg <2 x double> %wide.load561
  %378 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %377, <2 x double> %wide.load562, <2 x double> %375)
  store <2 x double> %378, ptr %366, align 8, !tbaa !9, !alias.scope !80, !noalias !83
  %index.next563 = add nuw i64 %index554, 2
  %379 = icmp eq i64 %index.next563, %n.vec550
  br i1 %379, label %middle.block545, label %vector.body553, !llvm.loop !92

middle.block545:                                  ; preds = %vector.body553
  br i1 %cmp.n564, label %.loopexit377, label %.lr.ph.preheader862

.lr.ph.preheader862:                              ; preds = %.lr.ph.preheader, %middle.block545
  %.4354402.ph = phi i64 [ 2, %.lr.ph.preheader ], [ %ind.end551, %middle.block545 ]
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader862, %.lr.ph
  %.4354402 = phi i64 [ %394, %.lr.ph ], [ %.4354402.ph, %.lr.ph.preheader862 ]
  %gep394 = getelementptr double, ptr %invariant.gep393, i64 %.4354402
  %380 = load double, ptr %gep394, align 8, !tbaa !9
  %381 = add nsw i64 %.4354402, -1
  %382 = getelementptr inbounds double, ptr %13, i64 %381
  %383 = load double, ptr %382, align 8, !tbaa !9
  %gep396 = getelementptr double, ptr %344, i64 %381
  %384 = load double, ptr %gep396, align 8, !tbaa !9
  %385 = fneg double %383
  %386 = tail call double @llvm.fmuladd.f64(double %385, double %384, double %380)
  %387 = getelementptr inbounds double, ptr %14, i64 %.4354402
  %388 = load double, ptr %387, align 8, !tbaa !9
  %gep398 = getelementptr double, ptr %344, i64 %.4354402
  %389 = load double, ptr %gep398, align 8, !tbaa !9
  %390 = fneg double %388
  %391 = tail call double @llvm.fmuladd.f64(double %390, double %389, double %386)
  %392 = getelementptr inbounds double, ptr %15, i64 %.4354402
  %393 = load double, ptr %392, align 8, !tbaa !9
  %394 = add nuw nsw i64 %.4354402, 1
  %gep400 = getelementptr double, ptr %344, i64 %394
  %395 = load double, ptr %gep400, align 8, !tbaa !9
  %396 = fneg double %393
  %397 = tail call double @llvm.fmuladd.f64(double %396, double %395, double %391)
  store double %397, ptr %gep394, align 8, !tbaa !9
  %exitcond492.not = icmp eq i64 %394, %279
  br i1 %exitcond492.not, label %.loopexit377, label %.lr.ph, !llvm.loop !93

.loopexit377:                                     ; preds = %.lr.ph, %middle.block545, %.lr.ph413.split
  %398 = add nuw i64 %.4411, 1
  %exitcond493.not = icmp eq i64 %.4411, %277
  br i1 %exitcond493.not, label %.loopexit372, label %.lr.ph413.split, !llvm.loop !94

399:                                              ; preds = %275
  br i1 %.not362432, label %.loopexit372, label %.lr.ph435

.lr.ph435:                                        ; preds = %399
  %400 = load i64, ptr %1, align 8, !tbaa !5
  %401 = icmp eq i64 %400, 1
  %402 = getelementptr double, ptr %21, i64 %400
  %403 = add nsw i64 %400, -1
  %404 = getelementptr inbounds double, ptr %15, i64 %403
  %405 = getelementptr double, ptr %18, i64 %403
  %406 = getelementptr inbounds double, ptr %14, i64 %400
  %407 = getelementptr double, ptr %18, i64 %400
  %.not363.not422 = icmp sgt i64 %400, 2
  br i1 %401, label %.lr.ph435.split.us.preheader, label %.lr.ph435.split.preheader

.lr.ph435.split.preheader:                        ; preds = %.lr.ph435
  %scevgep597 = getelementptr i8, ptr %10, i64 8
  %408 = add nsw i64 %277, -1
  %409 = mul i64 %19, %408
  %410 = shl i64 %400, 3
  %411 = add i64 %409, %400
  %412 = shl i64 %411, 3
  %413 = getelementptr i8, ptr %10, i64 %412
  %scevgep598 = getelementptr i8, ptr %413, i64 -8
  %414 = getelementptr i8, ptr %6, i64 %410
  %scevgep599 = getelementptr i8, ptr %414, i64 -16
  %415 = mul i64 %16, %408
  %416 = add i64 %415, %400
  %417 = shl i64 %416, 3
  %scevgep600 = getelementptr i8, ptr %7, i64 %417
  %scevgep601 = getelementptr i8, ptr %5, i64 8
  %418 = add i64 %410, -8
  %scevgep602 = getelementptr i8, ptr %5, i64 %418
  %scevgep603 = getelementptr i8, ptr %4, i64 8
  %scevgep604 = getelementptr i8, ptr %4, i64 %418
  %419 = add i64 %400, -2
  %min.iters.check627 = icmp ult i64 %419, 6
  %bound0605 = icmp ult ptr %scevgep597, %scevgep599
  %bound1606 = icmp ugt ptr %scevgep598, %6
  %found.conflict607 = and i1 %bound0605, %bound1606
  %bound0609 = icmp ult ptr %scevgep597, %scevgep600
  %bound1610 = icmp ugt ptr %scevgep598, %7
  %found.conflict611 = and i1 %bound0609, %bound1610
  %420 = or i64 %19, %16
  %421 = and i64 %420, 1152921504606846976
  %422 = icmp ne i64 %421, 0
  %423 = or i1 %found.conflict611, %422
  %conflict.rdx614 = or i1 %found.conflict607, %423
  %bound0615 = icmp ult ptr %scevgep597, %scevgep602
  %bound1616 = icmp ult ptr %scevgep601, %scevgep598
  %found.conflict617 = and i1 %bound0615, %bound1616
  %conflict.rdx619 = or i1 %found.conflict617, %conflict.rdx614
  %bound0620 = icmp ult ptr %scevgep597, %scevgep604
  %bound1621 = icmp ult ptr %scevgep603, %scevgep598
  %found.conflict622 = and i1 %bound0620, %bound1621
  %conflict.rdx624 = or i1 %found.conflict622, %conflict.rdx619
  %n.vec630 = and i64 %419, -2
  %ind.end631 = add i64 %n.vec630, 2
  %cmp.n644 = icmp eq i64 %419, %n.vec630
  br label %.lr.ph435.split

.lr.ph435.split.us.preheader:                     ; preds = %.lr.ph435
  %min.iters.check661 = icmp ult i64 %277, 10
  br i1 %min.iters.check661, label %.lr.ph435.split.us.preheader856, label %vector.scevcheck645

vector.scevcheck645:                              ; preds = %.lr.ph435.split.us.preheader
  %ident.check646 = icmp ne i64 %19, 1
  %ident.check647 = icmp ne i64 %16, 1
  %424 = or i1 %ident.check646, %ident.check647
  br i1 %424, label %.lr.ph435.split.us.preheader856, label %vector.memcheck648

vector.memcheck648:                               ; preds = %vector.scevcheck645
  %425 = shl i64 %277, 3
  %scevgep649 = getelementptr i8, ptr %10, i64 %425
  %scevgep650 = getelementptr i8, ptr %5, i64 8
  %scevgep651 = getelementptr i8, ptr %7, i64 %425
  %bound0652 = icmp ugt ptr %scevgep650, %10
  %bound1653 = icmp ugt ptr %scevgep649, %5
  %found.conflict654 = and i1 %bound0652, %bound1653
  %bound0655 = icmp ugt ptr %scevgep651, %10
  %bound1656 = icmp ugt ptr %scevgep649, %7
  %found.conflict657 = and i1 %bound0655, %bound1656
  %conflict.rdx658 = or i1 %found.conflict654, %found.conflict657
  br i1 %conflict.rdx658, label %.lr.ph435.split.us.preheader856, label %vector.ph662

vector.ph662:                                     ; preds = %vector.memcheck648
  %n.vec664 = and i64 %277, 9223372036854775804
  %ind.end665 = or disjoint i64 %n.vec664, 1
  %426 = load double, ptr %5, align 8, !tbaa !9, !alias.scope !95
  %broadcast.splatinsert674 = insertelement <2 x double> poison, double %426, i64 0
  %broadcast.splat675 = shufflevector <2 x double> %broadcast.splatinsert674, <2 x double> poison, <2 x i32> zeroinitializer
  %427 = fneg <2 x double> %broadcast.splat675
  %428 = fneg <2 x double> %broadcast.splat675
  br label %vector.body667

vector.body667:                                   ; preds = %vector.body667, %vector.ph662
  %index668 = phi i64 [ 0, %vector.ph662 ], [ %index.next676, %vector.body667 ]
  %offset.idx669 = or disjoint i64 %index668, 1
  %429 = getelementptr double, ptr %invariant.gep428, i64 %offset.idx669
  %430 = getelementptr i8, ptr %429, i64 16
  %wide.load670 = load <2 x double>, ptr %429, align 8, !tbaa !9, !alias.scope !98
  %wide.load671 = load <2 x double>, ptr %430, align 8, !tbaa !9, !alias.scope !98
  %431 = getelementptr double, ptr %invariant.gep426, i64 %offset.idx669
  %432 = getelementptr i8, ptr %431, i64 16
  %wide.load672 = load <2 x double>, ptr %431, align 8, !tbaa !9, !alias.scope !100, !noalias !102
  %wide.load673 = load <2 x double>, ptr %432, align 8, !tbaa !9, !alias.scope !100, !noalias !102
  %433 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %427, <2 x double> %wide.load670, <2 x double> %wide.load672)
  %434 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %428, <2 x double> %wide.load671, <2 x double> %wide.load673)
  store <2 x double> %433, ptr %431, align 8, !tbaa !9, !alias.scope !100, !noalias !102
  store <2 x double> %434, ptr %432, align 8, !tbaa !9, !alias.scope !100, !noalias !102
  %index.next676 = add nuw i64 %index668, 4
  %435 = icmp eq i64 %index.next676, %n.vec664
  br i1 %435, label %middle.block659, label %vector.body667, !llvm.loop !103

middle.block659:                                  ; preds = %vector.body667
  %cmp.n677 = icmp eq i64 %277, %n.vec664
  br i1 %cmp.n677, label %.loopexit372, label %.lr.ph435.split.us.preheader856

.lr.ph435.split.us.preheader856:                  ; preds = %middle.block659, %vector.memcheck648, %vector.scevcheck645, %.lr.ph435.split.us.preheader
  %.5433.us.ph = phi i64 [ 1, %vector.memcheck648 ], [ 1, %vector.scevcheck645 ], [ 1, %.lr.ph435.split.us.preheader ], [ %ind.end665, %middle.block659 ]
  %xtraiter867 = and i64 %277, 1
  %lcmp.mod868.not = icmp eq i64 %xtraiter867, 0
  br i1 %lcmp.mod868.not, label %.lr.ph435.split.us.prol.loopexit, label %.lr.ph435.split.us.prol

.lr.ph435.split.us.prol:                          ; preds = %.lr.ph435.split.us.preheader856
  %436 = load double, ptr %5, align 8, !tbaa !9
  %437 = mul nsw i64 %.5433.us.ph, %16
  %gep429.us.prol = getelementptr double, ptr %invariant.gep428, i64 %437
  %438 = load double, ptr %gep429.us.prol, align 8, !tbaa !9
  %439 = mul nsw i64 %.5433.us.ph, %19
  %gep431.us.prol = getelementptr double, ptr %invariant.gep426, i64 %439
  %440 = load double, ptr %gep431.us.prol, align 8, !tbaa !9
  %441 = fneg double %436
  %442 = tail call double @llvm.fmuladd.f64(double %441, double %438, double %440)
  store double %442, ptr %gep431.us.prol, align 8, !tbaa !9
  %443 = add nuw i64 %.5433.us.ph, 1
  br label %.lr.ph435.split.us.prol.loopexit

.lr.ph435.split.us.prol.loopexit:                 ; preds = %.lr.ph435.split.us.prol, %.lr.ph435.split.us.preheader856
  %.5433.us.unr = phi i64 [ %.5433.us.ph, %.lr.ph435.split.us.preheader856 ], [ %443, %.lr.ph435.split.us.prol ]
  %444 = icmp eq i64 %277, %.5433.us.ph
  br i1 %444, label %.loopexit372, label %.lr.ph435.split.us

.lr.ph435.split.us:                               ; preds = %.lr.ph435.split.us.prol.loopexit, %.lr.ph435.split.us
  %.5433.us = phi i64 [ %460, %.lr.ph435.split.us ], [ %.5433.us.unr, %.lr.ph435.split.us.prol.loopexit ]
  %445 = load double, ptr %5, align 8, !tbaa !9
  %446 = mul nsw i64 %.5433.us, %16
  %gep429.us = getelementptr double, ptr %invariant.gep428, i64 %446
  %447 = load double, ptr %gep429.us, align 8, !tbaa !9
  %448 = mul nsw i64 %.5433.us, %19
  %gep431.us = getelementptr double, ptr %invariant.gep426, i64 %448
  %449 = load double, ptr %gep431.us, align 8, !tbaa !9
  %450 = fneg double %445
  %451 = tail call double @llvm.fmuladd.f64(double %450, double %447, double %449)
  store double %451, ptr %gep431.us, align 8, !tbaa !9
  %452 = add nuw i64 %.5433.us, 1
  %453 = load double, ptr %5, align 8, !tbaa !9
  %454 = mul nsw i64 %452, %16
  %gep429.us.1 = getelementptr double, ptr %invariant.gep428, i64 %454
  %455 = load double, ptr %gep429.us.1, align 8, !tbaa !9
  %456 = mul nsw i64 %452, %19
  %gep431.us.1 = getelementptr double, ptr %invariant.gep426, i64 %456
  %457 = load double, ptr %gep431.us.1, align 8, !tbaa !9
  %458 = fneg double %453
  %459 = tail call double @llvm.fmuladd.f64(double %458, double %455, double %457)
  store double %459, ptr %gep431.us.1, align 8, !tbaa !9
  %460 = add nuw i64 %.5433.us, 2
  %exitcond497.not.1 = icmp eq i64 %452, %277
  br i1 %exitcond497.not.1, label %.loopexit372, label %.lr.ph435.split.us, !llvm.loop !104

.lr.ph435.split:                                  ; preds = %.lr.ph435.split.preheader, %.loopexit375
  %.5433 = phi i64 [ %519, %.loopexit375 ], [ 1, %.lr.ph435.split.preheader ]
  %461 = mul nsw i64 %.5433, %19
  %gep427 = getelementptr double, ptr %invariant.gep426, i64 %461
  %462 = load double, ptr %gep427, align 8, !tbaa !9
  %463 = load double, ptr %5, align 8, !tbaa !9
  %464 = mul nsw i64 %.5433, %16
  %465 = getelementptr double, ptr %18, i64 %464
  %466 = getelementptr i8, ptr %465, i64 8
  %467 = load double, ptr %466, align 8, !tbaa !9
  %468 = fneg double %463
  %469 = tail call double @llvm.fmuladd.f64(double %468, double %467, double %462)
  %470 = load double, ptr %4, align 8, !tbaa !9
  %471 = getelementptr i8, ptr %465, i64 16
  %472 = load double, ptr %471, align 8, !tbaa !9
  %473 = fneg double %470
  %474 = tail call double @llvm.fmuladd.f64(double %473, double %472, double %469)
  store double %474, ptr %gep427, align 8, !tbaa !9
  %475 = getelementptr double, ptr %402, i64 %461
  %476 = load double, ptr %475, align 8, !tbaa !9
  %477 = load double, ptr %404, align 8, !tbaa !9
  %478 = getelementptr double, ptr %405, i64 %464
  %479 = load double, ptr %478, align 8, !tbaa !9
  %480 = fneg double %477
  %481 = tail call double @llvm.fmuladd.f64(double %480, double %479, double %476)
  %482 = load double, ptr %406, align 8, !tbaa !9
  %483 = getelementptr double, ptr %407, i64 %464
  %484 = load double, ptr %483, align 8, !tbaa !9
  %485 = fneg double %482
  %486 = tail call double @llvm.fmuladd.f64(double %485, double %484, double %481)
  store double %486, ptr %475, align 8, !tbaa !9
  %invariant.gep414 = getelementptr double, ptr %21, i64 %461
  br i1 %.not363.not422, label %.lr.ph425.preheader, label %.loopexit375

.lr.ph425.preheader:                              ; preds = %.lr.ph435.split
  %brmerge883 = select i1 %min.iters.check627, i1 true, i1 %conflict.rdx624
  br i1 %brmerge883, label %.lr.ph425.preheader858, label %vector.ph628

vector.ph628:                                     ; preds = %.lr.ph425.preheader
  %invariant.gep875 = getelementptr i8, ptr %465, i64 24
  br label %vector.body633

vector.body633:                                   ; preds = %vector.body633, %vector.ph628
  %index634 = phi i64 [ 0, %vector.ph628 ], [ %index.next643, %vector.body633 ]
  %offset.idx635 = add i64 %index634, 2
  %487 = getelementptr double, ptr %invariant.gep414, i64 %offset.idx635
  %wide.load636 = load <2 x double>, ptr %487, align 8, !tbaa !9, !alias.scope !105, !noalias !108
  %488 = or disjoint i64 %index634, 1
  %489 = getelementptr double, ptr %6, i64 %index634
  %wide.load637 = load <2 x double>, ptr %489, align 8, !tbaa !9, !alias.scope !113
  %490 = getelementptr double, ptr %465, i64 %488
  %wide.load638 = load <2 x double>, ptr %490, align 8, !tbaa !9, !alias.scope !114
  %491 = fneg <2 x double> %wide.load637
  %492 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %491, <2 x double> %wide.load638, <2 x double> %wide.load636)
  %493 = getelementptr inbounds double, ptr %14, i64 %offset.idx635
  %wide.load639 = load <2 x double>, ptr %493, align 8, !tbaa !9, !alias.scope !115
  %494 = getelementptr double, ptr %465, i64 %offset.idx635
  %wide.load640 = load <2 x double>, ptr %494, align 8, !tbaa !9, !alias.scope !114
  %495 = fneg <2 x double> %wide.load639
  %496 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %495, <2 x double> %wide.load640, <2 x double> %492)
  %497 = getelementptr inbounds double, ptr %13, i64 %offset.idx635
  %wide.load641 = load <2 x double>, ptr %497, align 8, !tbaa !9, !alias.scope !116
  %gep876 = getelementptr double, ptr %invariant.gep875, i64 %index634
  %wide.load642 = load <2 x double>, ptr %gep876, align 8, !tbaa !9, !alias.scope !114
  %498 = fneg <2 x double> %wide.load641
  %499 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %498, <2 x double> %wide.load642, <2 x double> %496)
  store <2 x double> %499, ptr %487, align 8, !tbaa !9, !alias.scope !105, !noalias !108
  %index.next643 = add nuw i64 %index634, 2
  %500 = icmp eq i64 %index.next643, %n.vec630
  br i1 %500, label %middle.block625, label %vector.body633, !llvm.loop !117

middle.block625:                                  ; preds = %vector.body633
  br i1 %cmp.n644, label %.loopexit375, label %.lr.ph425.preheader858

.lr.ph425.preheader858:                           ; preds = %.lr.ph425.preheader, %middle.block625
  %.5355423.ph = phi i64 [ 2, %.lr.ph425.preheader ], [ %ind.end631, %middle.block625 ]
  br label %.lr.ph425

.lr.ph425:                                        ; preds = %.lr.ph425.preheader858, %.lr.ph425
  %.5355423 = phi i64 [ %515, %.lr.ph425 ], [ %.5355423.ph, %.lr.ph425.preheader858 ]
  %gep415 = getelementptr double, ptr %invariant.gep414, i64 %.5355423
  %501 = load double, ptr %gep415, align 8, !tbaa !9
  %502 = add nsw i64 %.5355423, -1
  %503 = getelementptr inbounds double, ptr %15, i64 %502
  %504 = load double, ptr %503, align 8, !tbaa !9
  %gep417 = getelementptr double, ptr %465, i64 %502
  %505 = load double, ptr %gep417, align 8, !tbaa !9
  %506 = fneg double %504
  %507 = tail call double @llvm.fmuladd.f64(double %506, double %505, double %501)
  %508 = getelementptr inbounds double, ptr %14, i64 %.5355423
  %509 = load double, ptr %508, align 8, !tbaa !9
  %gep419 = getelementptr double, ptr %465, i64 %.5355423
  %510 = load double, ptr %gep419, align 8, !tbaa !9
  %511 = fneg double %509
  %512 = tail call double @llvm.fmuladd.f64(double %511, double %510, double %507)
  %513 = getelementptr inbounds double, ptr %13, i64 %.5355423
  %514 = load double, ptr %513, align 8, !tbaa !9
  %515 = add nuw nsw i64 %.5355423, 1
  %gep421 = getelementptr double, ptr %465, i64 %515
  %516 = load double, ptr %gep421, align 8, !tbaa !9
  %517 = fneg double %514
  %518 = tail call double @llvm.fmuladd.f64(double %517, double %516, double %512)
  store double %518, ptr %gep415, align 8, !tbaa !9
  %exitcond495.not = icmp eq i64 %515, %400
  br i1 %exitcond495.not, label %.loopexit375, label %.lr.ph425, !llvm.loop !118

.loopexit375:                                     ; preds = %.lr.ph425, %middle.block625, %.lr.ph435.split
  %519 = add nuw i64 %.5433, 1
  %exitcond496.not = icmp eq i64 %.5433, %277
  br i1 %exitcond496.not, label %.loopexit372, label %.lr.ph435.split, !llvm.loop !119

.loopexit372:                                     ; preds = %.loopexit377, %.lr.ph413.split.us.prol.loopexit, %.lr.ph413.split.us, %.loopexit375, %.lr.ph435.split.us.prol.loopexit, %.lr.ph435.split.us, %.loopexit373, %.lr.ph457.split.us.prol.loopexit, %.lr.ph457.split.us, %.loopexit, %.lr.ph479.split.us.prol.loopexit, %.lr.ph479.split.us, %middle.block577, %middle.block659, %middle.block741, %middle.block823, %278, %399, %61, %167, %273, %12
  ret i32 0
}

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x double> @llvm.fmuladd.v2f64(<2 x double>, <2 x double>, <2 x double>) #4

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

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

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


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