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

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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [13 x i8], align 1

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

54:                                               ; preds = %10
  %55 = load ptr, ptr %12, align 8, !tbaa !5
  %56 = load i64, ptr %55, align 8, !tbaa !9
  %57 = call i64 @ilauplo_(ptr noundef @.str.1)
  %58 = icmp ne i64 %56, %57
  br i1 %58, label %59, label %60

59:                                               ; preds = %54
  store i64 1, ptr %34, align 8, !tbaa !9
  br label %93

60:                                               ; preds = %54, %10
  %61 = load ptr, ptr %13, align 8, !tbaa !5
  %62 = load i64, ptr %61, align 8, !tbaa !9
  %63 = icmp slt i64 %62, 0
  br i1 %63, label %64, label %65

64:                                               ; preds = %60
  store i64 2, ptr %34, align 8, !tbaa !9
  br label %92

65:                                               ; preds = %60
  %66 = load ptr, ptr %16, align 8, !tbaa !5
  %67 = load i64, ptr %66, align 8, !tbaa !9
  %68 = load ptr, ptr %13, align 8, !tbaa !5
  %69 = load i64, ptr %68, align 8, !tbaa !9
  %70 = icmp sge i64 1, %69
  br i1 %70, label %71, label %72

71:                                               ; preds = %65
  br label %75

72:                                               ; preds = %65
  %73 = load ptr, ptr %13, align 8, !tbaa !5
  %74 = load i64, ptr %73, align 8, !tbaa !9
  br label %75

75:                                               ; preds = %72, %71
  %76 = phi i64 [ 1, %71 ], [ %74, %72 ]
  %77 = icmp slt i64 %67, %76
  br i1 %77, label %78, label %79

78:                                               ; preds = %75
  store i64 5, ptr %34, align 8, !tbaa !9
  br label %91

79:                                               ; preds = %75
  %80 = load ptr, ptr %18, align 8, !tbaa !5
  %81 = load i64, ptr %80, align 8, !tbaa !9
  %82 = icmp eq i64 %81, 0
  br i1 %82, label %83, label %84

83:                                               ; preds = %79
  store i64 7, ptr %34, align 8, !tbaa !9
  br label %90

84:                                               ; preds = %79
  %85 = load ptr, ptr %21, align 8, !tbaa !5
  %86 = load i64, ptr %85, align 8, !tbaa !9
  %87 = icmp eq i64 %86, 0
  br i1 %87, label %88, label %89

88:                                               ; preds = %84
  store i64 10, ptr %34, align 8, !tbaa !9
  br label %89

89:                                               ; preds = %88, %84
  br label %90

90:                                               ; preds = %89, %83
  br label %91

91:                                               ; preds = %90, %78
  br label %92

92:                                               ; preds = %91, %64
  br label %93

93:                                               ; preds = %92, %59
  %94 = load i64, ptr %34, align 8, !tbaa !9
  %95 = icmp ne i64 %94, 0
  br i1 %95, label %96, label %98

96:                                               ; preds = %93
  %97 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef %34)
  store i32 0, ptr %11, align 4
  store i32 1, ptr %37, align 4
  br label %569

98:                                               ; preds = %93
  %99 = load ptr, ptr %13, align 8, !tbaa !5
  %100 = load i64, ptr %99, align 8, !tbaa !9
  %101 = icmp eq i64 %100, 0
  br i1 %101, label %110, label %102

102:                                              ; preds = %98
  %103 = load ptr, ptr %14, align 8, !tbaa !5
  %104 = load double, ptr %103, align 8, !tbaa !11
  %105 = fcmp oeq double %104, 0.000000e+00
  br i1 %105, label %106, label %111

106:                                              ; preds = %102
  %107 = load ptr, ptr %19, align 8, !tbaa !5
  %108 = load double, ptr %107, align 8, !tbaa !11
  %109 = fcmp oeq double %108, 1.000000e+00
  br i1 %109, label %110, label %111

110:                                              ; preds = %106, %98
  store i32 0, ptr %11, align 4
  store i32 1, ptr %37, align 4
  br label %569

111:                                              ; preds = %106, %102
  %112 = load ptr, ptr %18, align 8, !tbaa !5
  %113 = load i64, ptr %112, align 8, !tbaa !9
  %114 = icmp sgt i64 %113, 0
  br i1 %114, label %115, label %116

115:                                              ; preds = %111
  store i64 1, ptr %32, align 8, !tbaa !9
  br label %124

116:                                              ; preds = %111
  %117 = load ptr, ptr %13, align 8, !tbaa !5
  %118 = load i64, ptr %117, align 8, !tbaa !9
  %119 = sub nsw i64 %118, 1
  %120 = load ptr, ptr %18, align 8, !tbaa !5
  %121 = load i64, ptr %120, align 8, !tbaa !9
  %122 = mul nsw i64 %119, %121
  %123 = sub nsw i64 1, %122
  store i64 %123, ptr %32, align 8, !tbaa !9
  br label %124

124:                                              ; preds = %116, %115
  %125 = load ptr, ptr %21, align 8, !tbaa !5
  %126 = load i64, ptr %125, align 8, !tbaa !9
  %127 = icmp sgt i64 %126, 0
  br i1 %127, label %128, label %129

128:                                              ; preds = %124
  store i64 1, ptr %33, align 8, !tbaa !9
  br label %137

129:                                              ; preds = %124
  %130 = load ptr, ptr %13, align 8, !tbaa !5
  %131 = load i64, ptr %130, align 8, !tbaa !9
  %132 = sub nsw i64 %131, 1
  %133 = load ptr, ptr %21, align 8, !tbaa !5
  %134 = load i64, ptr %133, align 8, !tbaa !9
  %135 = mul nsw i64 %132, %134
  %136 = sub nsw i64 1, %135
  store i64 %136, ptr %33, align 8, !tbaa !9
  br label %137

137:                                              ; preds = %129, %128
  %138 = call double @dlamch_(ptr noundef @.str.3)
  store double %138, ptr %36, align 8, !tbaa !11
  %139 = load ptr, ptr %13, align 8, !tbaa !5
  %140 = load i64, ptr %139, align 8, !tbaa !9
  %141 = add nsw i64 %140, 1
  %142 = sitofp i64 %141 to double
  %143 = load double, ptr %36, align 8, !tbaa !11
  %144 = fmul double %142, %143
  store double %144, ptr %36, align 8, !tbaa !11
  %145 = load i64, ptr %33, align 8, !tbaa !9
  store i64 %145, ptr %30, align 8, !tbaa !9
  %146 = load ptr, ptr %18, align 8, !tbaa !5
  %147 = load i64, ptr %146, align 8, !tbaa !9
  %148 = icmp eq i64 %147, 1
  br i1 %148, label %149, label %356

149:                                              ; preds = %137
  %150 = load ptr, ptr %13, align 8, !tbaa !5
  %151 = load i64, ptr %150, align 8, !tbaa !9
  store i64 %151, ptr %24, align 8, !tbaa !9
  store i64 1, ptr %27, align 8, !tbaa !9
  br label %152

152:                                              ; preds = %352, %149
  %153 = load i64, ptr %27, align 8, !tbaa !9
  %154 = load i64, ptr %24, align 8, !tbaa !9
  %155 = icmp sle i64 %153, %154
  br i1 %155, label %156, label %355

156:                                              ; preds = %152
  %157 = load ptr, ptr %19, align 8, !tbaa !5
  %158 = load double, ptr %157, align 8, !tbaa !11
  %159 = fcmp oeq double %158, 0.000000e+00
  br i1 %159, label %160, label %164

160:                                              ; preds = %156
  store i64 1, ptr %29, align 8, !tbaa !9
  %161 = load ptr, ptr %20, align 8, !tbaa !5
  %162 = load i64, ptr %30, align 8, !tbaa !9
  %163 = getelementptr inbounds double, ptr %161, i64 %162
  store double 0.000000e+00, ptr %163, align 8, !tbaa !11
  br label %192

164:                                              ; preds = %156
  %165 = load ptr, ptr %20, align 8, !tbaa !5
  %166 = load i64, ptr %30, align 8, !tbaa !9
  %167 = getelementptr inbounds double, ptr %165, i64 %166
  %168 = load double, ptr %167, align 8, !tbaa !11
  %169 = fcmp oeq double %168, 0.000000e+00
  br i1 %169, label %170, label %171

170:                                              ; preds = %164
  store i64 1, ptr %29, align 8, !tbaa !9
  br label %191

171:                                              ; preds = %164
  store i64 0, ptr %29, align 8, !tbaa !9
  %172 = load ptr, ptr %19, align 8, !tbaa !5
  %173 = load double, ptr %172, align 8, !tbaa !11
  %174 = load ptr, ptr %20, align 8, !tbaa !5
  %175 = load i64, ptr %30, align 8, !tbaa !9
  %176 = getelementptr inbounds double, ptr %174, i64 %175
  %177 = load double, ptr %176, align 8, !tbaa !11
  store double %177, ptr %26, align 8, !tbaa !11
  %178 = load double, ptr %26, align 8, !tbaa !11
  %179 = fcmp oge double %178, 0.000000e+00
  br i1 %179, label %180, label %182

180:                                              ; preds = %171
  %181 = load double, ptr %26, align 8, !tbaa !11
  br label %185

182:                                              ; preds = %171
  %183 = load double, ptr %26, align 8, !tbaa !11
  %184 = fneg double %183
  br label %185

185:                                              ; preds = %182, %180
  %186 = phi double [ %181, %180 ], [ %184, %182 ]
  %187 = fmul double %173, %186
  %188 = load ptr, ptr %20, align 8, !tbaa !5
  %189 = load i64, ptr %30, align 8, !tbaa !9
  %190 = getelementptr inbounds double, ptr %188, i64 %189
  store double %187, ptr %190, align 8, !tbaa !11
  br label %191

191:                                              ; preds = %185, %170
  br label %192

192:                                              ; preds = %191, %160
  %193 = load ptr, ptr %14, align 8, !tbaa !5
  %194 = load double, ptr %193, align 8, !tbaa !11
  %195 = fcmp une double %194, 0.000000e+00
  br i1 %195, label %196, label %334

196:                                              ; preds = %192
  %197 = load ptr, ptr %13, align 8, !tbaa !5
  %198 = load i64, ptr %197, align 8, !tbaa !9
  store i64 %198, ptr %25, align 8, !tbaa !9
  store i64 1, ptr %28, align 8, !tbaa !9
  br label %199

199:                                              ; preds = %330, %196
  %200 = load i64, ptr %28, align 8, !tbaa !9
  %201 = load i64, ptr %25, align 8, !tbaa !9
  %202 = icmp sle i64 %200, %201
  br i1 %202, label %203, label %333

203:                                              ; preds = %199
  %204 = load ptr, ptr %12, align 8, !tbaa !5
  %205 = load i64, ptr %204, align 8, !tbaa !9
  %206 = call i64 @ilauplo_(ptr noundef @.str)
  %207 = icmp eq i64 %205, %206
  br i1 %207, label %208, label %249

208:                                              ; preds = %203
  %209 = load i64, ptr %27, align 8, !tbaa !9
  %210 = load i64, ptr %28, align 8, !tbaa !9
  %211 = icmp sle i64 %209, %210
  br i1 %211, label %212, label %230

212:                                              ; preds = %208
  %213 = load ptr, ptr %15, align 8, !tbaa !5
  %214 = load i64, ptr %27, align 8, !tbaa !9
  %215 = load i64, ptr %28, align 8, !tbaa !9
  %216 = load i64, ptr %22, align 8, !tbaa !9
  %217 = mul nsw i64 %215, %216
  %218 = add nsw i64 %214, %217
  %219 = getelementptr inbounds double, ptr %213, i64 %218
  %220 = load double, ptr %219, align 8, !tbaa !11
  store double %220, ptr %26, align 8, !tbaa !11
  %221 = load double, ptr %26, align 8, !tbaa !11
  %222 = fcmp oge double %221, 0.000000e+00
  br i1 %222, label %223, label %225

223:                                              ; preds = %212
  %224 = load double, ptr %26, align 8, !tbaa !11
  br label %228

225:                                              ; preds = %212
  %226 = load double, ptr %26, align 8, !tbaa !11
  %227 = fneg double %226
  br label %228

228:                                              ; preds = %225, %223
  %229 = phi double [ %224, %223 ], [ %227, %225 ]
  store double %229, ptr %35, align 8, !tbaa !11
  br label %248

230:                                              ; preds = %208
  %231 = load ptr, ptr %15, align 8, !tbaa !5
  %232 = load i64, ptr %28, align 8, !tbaa !9
  %233 = load i64, ptr %27, align 8, !tbaa !9
  %234 = load i64, ptr %22, align 8, !tbaa !9
  %235 = mul nsw i64 %233, %234
  %236 = add nsw i64 %232, %235
  %237 = getelementptr inbounds double, ptr %231, i64 %236
  %238 = load double, ptr %237, align 8, !tbaa !11
  store double %238, ptr %26, align 8, !tbaa !11
  %239 = load double, ptr %26, align 8, !tbaa !11
  %240 = fcmp oge double %239, 0.000000e+00
  br i1 %240, label %241, label %243

241:                                              ; preds = %230
  %242 = load double, ptr %26, align 8, !tbaa !11
  br label %246

243:                                              ; preds = %230
  %244 = load double, ptr %26, align 8, !tbaa !11
  %245 = fneg double %244
  br label %246

246:                                              ; preds = %243, %241
  %247 = phi double [ %242, %241 ], [ %245, %243 ]
  store double %247, ptr %35, align 8, !tbaa !11
  br label %248

248:                                              ; preds = %246, %228
  br label %290

249:                                              ; preds = %203
  %250 = load i64, ptr %27, align 8, !tbaa !9
  %251 = load i64, ptr %28, align 8, !tbaa !9
  %252 = icmp sge i64 %250, %251
  br i1 %252, label %253, label %271

253:                                              ; preds = %249
  %254 = load ptr, ptr %15, align 8, !tbaa !5
  %255 = load i64, ptr %27, align 8, !tbaa !9
  %256 = load i64, ptr %28, align 8, !tbaa !9
  %257 = load i64, ptr %22, align 8, !tbaa !9
  %258 = mul nsw i64 %256, %257
  %259 = add nsw i64 %255, %258
  %260 = getelementptr inbounds double, ptr %254, i64 %259
  %261 = load double, ptr %260, align 8, !tbaa !11
  store double %261, ptr %26, align 8, !tbaa !11
  %262 = load double, ptr %26, align 8, !tbaa !11
  %263 = fcmp oge double %262, 0.000000e+00
  br i1 %263, label %264, label %266

264:                                              ; preds = %253
  %265 = load double, ptr %26, align 8, !tbaa !11
  br label %269

266:                                              ; preds = %253
  %267 = load double, ptr %26, align 8, !tbaa !11
  %268 = fneg double %267
  br label %269

269:                                              ; preds = %266, %264
  %270 = phi double [ %265, %264 ], [ %268, %266 ]
  store double %270, ptr %35, align 8, !tbaa !11
  br label %289

271:                                              ; preds = %249
  %272 = load ptr, ptr %15, align 8, !tbaa !5
  %273 = load i64, ptr %28, align 8, !tbaa !9
  %274 = load i64, ptr %27, align 8, !tbaa !9
  %275 = load i64, ptr %22, align 8, !tbaa !9
  %276 = mul nsw i64 %274, %275
  %277 = add nsw i64 %273, %276
  %278 = getelementptr inbounds double, ptr %272, i64 %277
  %279 = load double, ptr %278, align 8, !tbaa !11
  store double %279, ptr %26, align 8, !tbaa !11
  %280 = load double, ptr %26, align 8, !tbaa !11
  %281 = fcmp oge double %280, 0.000000e+00
  br i1 %281, label %282, label %284

282:                                              ; preds = %271
  %283 = load double, ptr %26, align 8, !tbaa !11
  br label %287

284:                                              ; preds = %271
  %285 = load double, ptr %26, align 8, !tbaa !11
  %286 = fneg double %285
  br label %287

287:                                              ; preds = %284, %282
  %288 = phi double [ %283, %282 ], [ %286, %284 ]
  store double %288, ptr %35, align 8, !tbaa !11
  br label %289

289:                                              ; preds = %287, %269
  br label %290

290:                                              ; preds = %289, %248
  %291 = load i64, ptr %29, align 8, !tbaa !9
  %292 = icmp ne i64 %291, 0
  br i1 %292, label %293, label %304

293:                                              ; preds = %290
  %294 = load ptr, ptr %17, align 8, !tbaa !5
  %295 = load i64, ptr %28, align 8, !tbaa !9
  %296 = getelementptr inbounds double, ptr %294, i64 %295
  %297 = load double, ptr %296, align 8, !tbaa !11
  %298 = fcmp oeq double %297, 0.000000e+00
  br i1 %298, label %302, label %299

299:                                              ; preds = %293
  %300 = load double, ptr %35, align 8, !tbaa !11
  %301 = fcmp oeq double %300, 0.000000e+00
  br label %302

302:                                              ; preds = %299, %293
  %303 = phi i1 [ true, %293 ], [ %301, %299 ]
  br label %304

304:                                              ; preds = %302, %290
  %305 = phi i1 [ false, %290 ], [ %303, %302 ]
  %306 = zext i1 %305 to i32
  %307 = sext i32 %306 to i64
  store i64 %307, ptr %29, align 8, !tbaa !9
  %308 = load ptr, ptr %14, align 8, !tbaa !5
  %309 = load double, ptr %308, align 8, !tbaa !11
  %310 = load ptr, ptr %17, align 8, !tbaa !5
  %311 = load i64, ptr %28, align 8, !tbaa !9
  %312 = getelementptr inbounds double, ptr %310, i64 %311
  %313 = load double, ptr %312, align 8, !tbaa !11
  store double %313, ptr %26, align 8, !tbaa !11
  %314 = load double, ptr %26, align 8, !tbaa !11
  %315 = fcmp oge double %314, 0.000000e+00
  br i1 %315, label %316, label %318

316:                                              ; preds = %304
  %317 = load double, ptr %26, align 8, !tbaa !11
  br label %321

318:                                              ; preds = %304
  %319 = load double, ptr %26, align 8, !tbaa !11
  %320 = fneg double %319
  br label %321

321:                                              ; preds = %318, %316
  %322 = phi double [ %317, %316 ], [ %320, %318 ]
  %323 = fmul double %309, %322
  %324 = load double, ptr %35, align 8, !tbaa !11
  %325 = load ptr, ptr %20, align 8, !tbaa !5
  %326 = load i64, ptr %30, align 8, !tbaa !9
  %327 = getelementptr inbounds double, ptr %325, i64 %326
  %328 = load double, ptr %327, align 8, !tbaa !11
  %329 = call double @llvm.fmuladd.f64(double %323, double %324, double %328)
  store double %329, ptr %327, align 8, !tbaa !11
  br label %330

330:                                              ; preds = %321
  %331 = load i64, ptr %28, align 8, !tbaa !9
  %332 = add nsw i64 %331, 1
  store i64 %332, ptr %28, align 8, !tbaa !9
  br label %199, !llvm.loop !13

333:                                              ; preds = %199
  br label %334

334:                                              ; preds = %333, %192
  %335 = load i64, ptr %29, align 8, !tbaa !9
  %336 = icmp ne i64 %335, 0
  br i1 %336, label %347, label %337

337:                                              ; preds = %334
  %338 = load ptr, ptr %20, align 8, !tbaa !5
  %339 = load i64, ptr %30, align 8, !tbaa !9
  %340 = getelementptr inbounds double, ptr %338, i64 %339
  %341 = call double @d_sign(ptr noundef %36, ptr noundef %340)
  %342 = load ptr, ptr %20, align 8, !tbaa !5
  %343 = load i64, ptr %30, align 8, !tbaa !9
  %344 = getelementptr inbounds double, ptr %342, i64 %343
  %345 = load double, ptr %344, align 8, !tbaa !11
  %346 = fadd double %345, %341
  store double %346, ptr %344, align 8, !tbaa !11
  br label %347

347:                                              ; preds = %337, %334
  %348 = load ptr, ptr %21, align 8, !tbaa !5
  %349 = load i64, ptr %348, align 8, !tbaa !9
  %350 = load i64, ptr %30, align 8, !tbaa !9
  %351 = add nsw i64 %350, %349
  store i64 %351, ptr %30, align 8, !tbaa !9
  br label %352

352:                                              ; preds = %347
  %353 = load i64, ptr %27, align 8, !tbaa !9
  %354 = add nsw i64 %353, 1
  store i64 %354, ptr %27, align 8, !tbaa !9
  br label %152, !llvm.loop !15

355:                                              ; preds = %152
  br label %568

356:                                              ; preds = %137
  %357 = load ptr, ptr %13, align 8, !tbaa !5
  %358 = load i64, ptr %357, align 8, !tbaa !9
  store i64 %358, ptr %24, align 8, !tbaa !9
  store i64 1, ptr %27, align 8, !tbaa !9
  br label %359

359:                                              ; preds = %564, %356
  %360 = load i64, ptr %27, align 8, !tbaa !9
  %361 = load i64, ptr %24, align 8, !tbaa !9
  %362 = icmp sle i64 %360, %361
  br i1 %362, label %363, label %567

363:                                              ; preds = %359
  %364 = load ptr, ptr %19, align 8, !tbaa !5
  %365 = load double, ptr %364, align 8, !tbaa !11
  %366 = fcmp oeq double %365, 0.000000e+00
  br i1 %366, label %367, label %371

367:                                              ; preds = %363
  store i64 1, ptr %29, align 8, !tbaa !9
  %368 = load ptr, ptr %20, align 8, !tbaa !5
  %369 = load i64, ptr %30, align 8, !tbaa !9
  %370 = getelementptr inbounds double, ptr %368, i64 %369
  store double 0.000000e+00, ptr %370, align 8, !tbaa !11
  br label %399

371:                                              ; preds = %363
  %372 = load ptr, ptr %20, align 8, !tbaa !5
  %373 = load i64, ptr %30, align 8, !tbaa !9
  %374 = getelementptr inbounds double, ptr %372, i64 %373
  %375 = load double, ptr %374, align 8, !tbaa !11
  %376 = fcmp oeq double %375, 0.000000e+00
  br i1 %376, label %377, label %378

377:                                              ; preds = %371
  store i64 1, ptr %29, align 8, !tbaa !9
  br label %398

378:                                              ; preds = %371
  store i64 0, ptr %29, align 8, !tbaa !9
  %379 = load ptr, ptr %19, align 8, !tbaa !5
  %380 = load double, ptr %379, align 8, !tbaa !11
  %381 = load ptr, ptr %20, align 8, !tbaa !5
  %382 = load i64, ptr %30, align 8, !tbaa !9
  %383 = getelementptr inbounds double, ptr %381, i64 %382
  %384 = load double, ptr %383, align 8, !tbaa !11
  store double %384, ptr %26, align 8, !tbaa !11
  %385 = load double, ptr %26, align 8, !tbaa !11
  %386 = fcmp oge double %385, 0.000000e+00
  br i1 %386, label %387, label %389

387:                                              ; preds = %378
  %388 = load double, ptr %26, align 8, !tbaa !11
  br label %392

389:                                              ; preds = %378
  %390 = load double, ptr %26, align 8, !tbaa !11
  %391 = fneg double %390
  br label %392

392:                                              ; preds = %389, %387
  %393 = phi double [ %388, %387 ], [ %391, %389 ]
  %394 = fmul double %380, %393
  %395 = load ptr, ptr %20, align 8, !tbaa !5
  %396 = load i64, ptr %30, align 8, !tbaa !9
  %397 = getelementptr inbounds double, ptr %395, i64 %396
  store double %394, ptr %397, align 8, !tbaa !11
  br label %398

398:                                              ; preds = %392, %377
  br label %399

399:                                              ; preds = %398, %367
  %400 = load i64, ptr %32, align 8, !tbaa !9
  store i64 %400, ptr %31, align 8, !tbaa !9
  %401 = load ptr, ptr %14, align 8, !tbaa !5
  %402 = load double, ptr %401, align 8, !tbaa !11
  %403 = fcmp une double %402, 0.000000e+00
  br i1 %403, label %404, label %546

404:                                              ; preds = %399
  %405 = load ptr, ptr %13, align 8, !tbaa !5
  %406 = load i64, ptr %405, align 8, !tbaa !9
  store i64 %406, ptr %25, align 8, !tbaa !9
  store i64 1, ptr %28, align 8, !tbaa !9
  br label %407

407:                                              ; preds = %542, %404
  %408 = load i64, ptr %28, align 8, !tbaa !9
  %409 = load i64, ptr %25, align 8, !tbaa !9
  %410 = icmp sle i64 %408, %409
  br i1 %410, label %411, label %545

411:                                              ; preds = %407
  %412 = load ptr, ptr %12, align 8, !tbaa !5
  %413 = load i64, ptr %412, align 8, !tbaa !9
  %414 = call i64 @ilauplo_(ptr noundef @.str)
  %415 = icmp eq i64 %413, %414
  br i1 %415, label %416, label %457

416:                                              ; preds = %411
  %417 = load i64, ptr %27, align 8, !tbaa !9
  %418 = load i64, ptr %28, align 8, !tbaa !9
  %419 = icmp sle i64 %417, %418
  br i1 %419, label %420, label %438

420:                                              ; preds = %416
  %421 = load ptr, ptr %15, align 8, !tbaa !5
  %422 = load i64, ptr %27, align 8, !tbaa !9
  %423 = load i64, ptr %28, align 8, !tbaa !9
  %424 = load i64, ptr %22, align 8, !tbaa !9
  %425 = mul nsw i64 %423, %424
  %426 = add nsw i64 %422, %425
  %427 = getelementptr inbounds double, ptr %421, i64 %426
  %428 = load double, ptr %427, align 8, !tbaa !11
  store double %428, ptr %26, align 8, !tbaa !11
  %429 = load double, ptr %26, align 8, !tbaa !11
  %430 = fcmp oge double %429, 0.000000e+00
  br i1 %430, label %431, label %433

431:                                              ; preds = %420
  %432 = load double, ptr %26, align 8, !tbaa !11
  br label %436

433:                                              ; preds = %420
  %434 = load double, ptr %26, align 8, !tbaa !11
  %435 = fneg double %434
  br label %436

436:                                              ; preds = %433, %431
  %437 = phi double [ %432, %431 ], [ %435, %433 ]
  store double %437, ptr %35, align 8, !tbaa !11
  br label %456

438:                                              ; preds = %416
  %439 = load ptr, ptr %15, align 8, !tbaa !5
  %440 = load i64, ptr %28, align 8, !tbaa !9
  %441 = load i64, ptr %27, align 8, !tbaa !9
  %442 = load i64, ptr %22, align 8, !tbaa !9
  %443 = mul nsw i64 %441, %442
  %444 = add nsw i64 %440, %443
  %445 = getelementptr inbounds double, ptr %439, i64 %444
  %446 = load double, ptr %445, align 8, !tbaa !11
  store double %446, ptr %26, align 8, !tbaa !11
  %447 = load double, ptr %26, align 8, !tbaa !11
  %448 = fcmp oge double %447, 0.000000e+00
  br i1 %448, label %449, label %451

449:                                              ; preds = %438
  %450 = load double, ptr %26, align 8, !tbaa !11
  br label %454

451:                                              ; preds = %438
  %452 = load double, ptr %26, align 8, !tbaa !11
  %453 = fneg double %452
  br label %454

454:                                              ; preds = %451, %449
  %455 = phi double [ %450, %449 ], [ %453, %451 ]
  store double %455, ptr %35, align 8, !tbaa !11
  br label %456

456:                                              ; preds = %454, %436
  br label %498

457:                                              ; preds = %411
  %458 = load i64, ptr %27, align 8, !tbaa !9
  %459 = load i64, ptr %28, align 8, !tbaa !9
  %460 = icmp sge i64 %458, %459
  br i1 %460, label %461, label %479

461:                                              ; preds = %457
  %462 = load ptr, ptr %15, align 8, !tbaa !5
  %463 = load i64, ptr %27, align 8, !tbaa !9
  %464 = load i64, ptr %28, align 8, !tbaa !9
  %465 = load i64, ptr %22, align 8, !tbaa !9
  %466 = mul nsw i64 %464, %465
  %467 = add nsw i64 %463, %466
  %468 = getelementptr inbounds double, ptr %462, i64 %467
  %469 = load double, ptr %468, align 8, !tbaa !11
  store double %469, ptr %26, align 8, !tbaa !11
  %470 = load double, ptr %26, align 8, !tbaa !11
  %471 = fcmp oge double %470, 0.000000e+00
  br i1 %471, label %472, label %474

472:                                              ; preds = %461
  %473 = load double, ptr %26, align 8, !tbaa !11
  br label %477

474:                                              ; preds = %461
  %475 = load double, ptr %26, align 8, !tbaa !11
  %476 = fneg double %475
  br label %477

477:                                              ; preds = %474, %472
  %478 = phi double [ %473, %472 ], [ %476, %474 ]
  store double %478, ptr %35, align 8, !tbaa !11
  br label %497

479:                                              ; preds = %457
  %480 = load ptr, ptr %15, align 8, !tbaa !5
  %481 = load i64, ptr %28, align 8, !tbaa !9
  %482 = load i64, ptr %27, align 8, !tbaa !9
  %483 = load i64, ptr %22, align 8, !tbaa !9
  %484 = mul nsw i64 %482, %483
  %485 = add nsw i64 %481, %484
  %486 = getelementptr inbounds double, ptr %480, i64 %485
  %487 = load double, ptr %486, align 8, !tbaa !11
  store double %487, ptr %26, align 8, !tbaa !11
  %488 = load double, ptr %26, align 8, !tbaa !11
  %489 = fcmp oge double %488, 0.000000e+00
  br i1 %489, label %490, label %492

490:                                              ; preds = %479
  %491 = load double, ptr %26, align 8, !tbaa !11
  br label %495

492:                                              ; preds = %479
  %493 = load double, ptr %26, align 8, !tbaa !11
  %494 = fneg double %493
  br label %495

495:                                              ; preds = %492, %490
  %496 = phi double [ %491, %490 ], [ %494, %492 ]
  store double %496, ptr %35, align 8, !tbaa !11
  br label %497

497:                                              ; preds = %495, %477
  br label %498

498:                                              ; preds = %497, %456
  %499 = load i64, ptr %29, align 8, !tbaa !9
  %500 = icmp ne i64 %499, 0
  br i1 %500, label %501, label %512

501:                                              ; preds = %498
  %502 = load ptr, ptr %17, align 8, !tbaa !5
  %503 = load i64, ptr %28, align 8, !tbaa !9
  %504 = getelementptr inbounds double, ptr %502, i64 %503
  %505 = load double, ptr %504, align 8, !tbaa !11
  %506 = fcmp oeq double %505, 0.000000e+00
  br i1 %506, label %510, label %507

507:                                              ; preds = %501
  %508 = load double, ptr %35, align 8, !tbaa !11
  %509 = fcmp oeq double %508, 0.000000e+00
  br label %510

510:                                              ; preds = %507, %501
  %511 = phi i1 [ true, %501 ], [ %509, %507 ]
  br label %512

512:                                              ; preds = %510, %498
  %513 = phi i1 [ false, %498 ], [ %511, %510 ]
  %514 = zext i1 %513 to i32
  %515 = sext i32 %514 to i64
  store i64 %515, ptr %29, align 8, !tbaa !9
  %516 = load ptr, ptr %14, align 8, !tbaa !5
  %517 = load double, ptr %516, align 8, !tbaa !11
  %518 = load ptr, ptr %17, align 8, !tbaa !5
  %519 = load i64, ptr %31, align 8, !tbaa !9
  %520 = getelementptr inbounds double, ptr %518, i64 %519
  %521 = load double, ptr %520, align 8, !tbaa !11
  store double %521, ptr %26, align 8, !tbaa !11
  %522 = load double, ptr %26, align 8, !tbaa !11
  %523 = fcmp oge double %522, 0.000000e+00
  br i1 %523, label %524, label %526

524:                                              ; preds = %512
  %525 = load double, ptr %26, align 8, !tbaa !11
  br label %529

526:                                              ; preds = %512
  %527 = load double, ptr %26, align 8, !tbaa !11
  %528 = fneg double %527
  br label %529

529:                                              ; preds = %526, %524
  %530 = phi double [ %525, %524 ], [ %528, %526 ]
  %531 = fmul double %517, %530
  %532 = load double, ptr %35, align 8, !tbaa !11
  %533 = load ptr, ptr %20, align 8, !tbaa !5
  %534 = load i64, ptr %30, align 8, !tbaa !9
  %535 = getelementptr inbounds double, ptr %533, i64 %534
  %536 = load double, ptr %535, align 8, !tbaa !11
  %537 = call double @llvm.fmuladd.f64(double %531, double %532, double %536)
  store double %537, ptr %535, align 8, !tbaa !11
  %538 = load ptr, ptr %18, align 8, !tbaa !5
  %539 = load i64, ptr %538, align 8, !tbaa !9
  %540 = load i64, ptr %31, align 8, !tbaa !9
  %541 = add nsw i64 %540, %539
  store i64 %541, ptr %31, align 8, !tbaa !9
  br label %542

542:                                              ; preds = %529
  %543 = load i64, ptr %28, align 8, !tbaa !9
  %544 = add nsw i64 %543, 1
  store i64 %544, ptr %28, align 8, !tbaa !9
  br label %407, !llvm.loop !16

545:                                              ; preds = %407
  br label %546

546:                                              ; preds = %545, %399
  %547 = load i64, ptr %29, align 8, !tbaa !9
  %548 = icmp ne i64 %547, 0
  br i1 %548, label %559, label %549

549:                                              ; preds = %546
  %550 = load ptr, ptr %20, align 8, !tbaa !5
  %551 = load i64, ptr %30, align 8, !tbaa !9
  %552 = getelementptr inbounds double, ptr %550, i64 %551
  %553 = call double @d_sign(ptr noundef %36, ptr noundef %552)
  %554 = load ptr, ptr %20, align 8, !tbaa !5
  %555 = load i64, ptr %30, align 8, !tbaa !9
  %556 = getelementptr inbounds double, ptr %554, i64 %555
  %557 = load double, ptr %556, align 8, !tbaa !11
  %558 = fadd double %557, %553
  store double %558, ptr %556, align 8, !tbaa !11
  br label %559

559:                                              ; preds = %549, %546
  %560 = load ptr, ptr %21, align 8, !tbaa !5
  %561 = load i64, ptr %560, align 8, !tbaa !9
  %562 = load i64, ptr %30, align 8, !tbaa !9
  %563 = add nsw i64 %562, %561
  store i64 %563, ptr %30, align 8, !tbaa !9
  br label %564

564:                                              ; preds = %559
  %565 = load i64, ptr %27, align 8, !tbaa !9
  %566 = add nsw i64 %565, 1
  store i64 %566, ptr %27, align 8, !tbaa !9
  br label %359, !llvm.loop !17

567:                                              ; preds = %359
  br label %568

568:                                              ; preds = %567, %355
  store i32 0, ptr %11, align 4
  store i32 1, ptr %37, align 4
  br label %569

569:                                              ; preds = %568, %110, %96
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #4
  %570 = load i32, ptr %11, align 4
  ret i32 %570
}

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

declare i64 @ilauplo_(ptr noundef) #2

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

declare double @dlamch_(ptr noundef) #2

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

declare double @d_sign(ptr noundef, ptr noundef) #2

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

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

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

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


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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [13 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @dla_syamv__(ptr nocapture noundef readonly %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 noundef %8, ptr nocapture noundef readonly %9) local_unnamed_addr #0 {
  %11 = alloca i64, align 8
  %12 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #5
  %13 = load i64, ptr %4, align 8, !tbaa !5
  %14 = xor i64 %13, -1
  %15 = getelementptr inbounds double, ptr %3, i64 %14
  %16 = getelementptr inbounds i8, ptr %5, i64 -8
  %17 = getelementptr inbounds i8, ptr %8, i64 -8
  %18 = load i64, ptr %0, align 8, !tbaa !5
  %19 = tail call i64 @ilauplo_(ptr noundef nonnull @.str) #5
  %.not = icmp eq i64 %18, %19
  br i1 %.not, label %24, label %20

20:                                               ; preds = %10
  %21 = load i64, ptr %0, align 8, !tbaa !5
  %22 = tail call i64 @ilauplo_(ptr noundef nonnull @.str.1) #5
  %.not198 = icmp eq i64 %21, %22
  br i1 %.not198, label %24, label %23

23:                                               ; preds = %20
  store i64 1, ptr %11, align 8, !tbaa !5
  br label %.thread

24:                                               ; preds = %20, %10
  %25 = load i64, ptr %1, align 8, !tbaa !5
  %26 = icmp slt i64 %25, 0
  br i1 %26, label %27, label %28

27:                                               ; preds = %24
  store i64 2, ptr %11, align 8, !tbaa !5
  br label %.thread

28:                                               ; preds = %24
  %29 = load i64, ptr %4, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %25, i64 1)
  %30 = icmp slt i64 %29, %spec.select
  br i1 %30, label %31, label %32

31:                                               ; preds = %28
  store i64 5, ptr %11, align 8, !tbaa !5
  br label %.thread

32:                                               ; preds = %28
  %33 = load i64, ptr %6, align 8, !tbaa !5
  %34 = icmp eq i64 %33, 0
  br i1 %34, label %35, label %36

35:                                               ; preds = %32
  store i64 7, ptr %11, align 8, !tbaa !5
  br label %.thread

36:                                               ; preds = %32
  %37 = load i64, ptr %9, align 8, !tbaa !5
  %38 = icmp eq i64 %37, 0
  br i1 %38, label %39, label %41

39:                                               ; preds = %36
  store i64 10, ptr %11, align 8, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %23, %31, %39, %35, %27
  %40 = call i32 @xerbla_(ptr noundef nonnull @.str.2, ptr noundef nonnull %11) #5
  br label %.loopexit214

41:                                               ; preds = %36
  %42 = icmp eq i64 %25, 0
  br i1 %42, label %.loopexit214, label %43

43:                                               ; preds = %41
  %44 = load double, ptr %2, align 8, !tbaa !9
  %45 = fcmp oeq double %44, 0.000000e+00
  br i1 %45, label %46, label %49

46:                                               ; preds = %43
  %47 = load double, ptr %7, align 8, !tbaa !9
  %48 = fcmp oeq double %47, 1.000000e+00
  br i1 %48, label %.loopexit214, label %49

49:                                               ; preds = %46, %43
  %50 = add nsw i64 %25, -1
  %51 = mul nsw i64 %33, %50
  %52 = sub nsw i64 1, %51
  %.inv = icmp slt i64 %33, 1
  %.0180 = select i1 %.inv, i64 %52, i64 1
  %53 = mul nsw i64 %37, %50
  %54 = sub nsw i64 1, %53
  %.inv213 = icmp slt i64 %37, 1
  %.0179 = select i1 %.inv213, i64 %54, i64 1
  %55 = tail call double @dlamch_(ptr noundef nonnull @.str.3) #5
  %56 = load i64, ptr %1, align 8, !tbaa !5
  %57 = add i64 %56, 1
  %58 = sitofp i64 %57 to double
  %59 = fmul double %55, %58
  store double %59, ptr %12, align 8, !tbaa !9
  %60 = load i64, ptr %6, align 8, !tbaa !5
  %61 = icmp eq i64 %60, 1
  %.not206238 = icmp slt i64 %56, 1
  br i1 %61, label %.preheader, label %.preheader216

.preheader216:                                    ; preds = %49
  br i1 %.not206238, label %.loopexit214, label %.lr.ph228

.preheader:                                       ; preds = %49
  br i1 %.not206238, label %.loopexit214, label %.lr.ph242

.lr.ph242:                                        ; preds = %.preheader, %119
  %.0182241 = phi i64 [ %121, %119 ], [ %.0179, %.preheader ]
  %.0188239 = phi i64 [ %122, %119 ], [ 1, %.preheader ]
  %62 = load double, ptr %7, align 8, !tbaa !9
  %63 = fcmp oeq double %62, 0.000000e+00
  %64 = getelementptr inbounds double, ptr %17, i64 %.0182241
  br i1 %63, label %.sink.split, label %65

65:                                               ; preds = %.lr.ph242
  %66 = load double, ptr %64, align 8, !tbaa !9
  %67 = fcmp oeq double %66, 0.000000e+00
  br i1 %67, label %73, label %68

68:                                               ; preds = %65
  %69 = fcmp oge double %66, 0.000000e+00
  %70 = fneg double %66
  %71 = select i1 %69, double %66, double %70
  %72 = fmul double %62, %71
  br label %.sink.split

.sink.split:                                      ; preds = %.lr.ph242, %68
  %.sink = phi double [ %72, %68 ], [ 0.000000e+00, %.lr.ph242 ]
  %.0184.ph = phi i64 [ 0, %68 ], [ 1, %.lr.ph242 ]
  store double %.sink, ptr %64, align 8, !tbaa !9
  br label %73

73:                                               ; preds = %.sink.split, %65
  %.0184 = phi i64 [ 1, %65 ], [ %.0184.ph, %.sink.split ]
  %74 = load double, ptr %2, align 8, !tbaa !9
  %75 = fcmp une double %74, 0.000000e+00
  br i1 %75, label %76, label %.loopexit

76:                                               ; preds = %73
  %77 = load i64, ptr %1, align 8, !tbaa !5
  %.not207229 = icmp slt i64 %77, 1
  br i1 %.not207229, label %.loopexit, label %.lr.ph232

.lr.ph232:                                        ; preds = %76
  %78 = getelementptr double, ptr %15, i64 %.0188239
  %79 = mul nsw i64 %.0188239, %13
  %invariant.gep234 = getelementptr double, ptr %15, i64 %79
  %80 = getelementptr inbounds double, ptr %17, i64 %.0182241
  br label %81

81:                                               ; preds = %.lr.ph232, %._crit_edge
  %.1185231 = phi i64 [ %.0184, %.lr.ph232 ], [ %105, %._crit_edge ]
  %.0186230 = phi i64 [ 1, %.lr.ph232 ], [ %113, %._crit_edge ]
  %82 = load i64, ptr %0, align 8, !tbaa !5
  %83 = call i64 @ilauplo_(ptr noundef nonnull @.str) #5
  %84 = icmp eq i64 %82, %83
  br i1 %84, label %85, label %90

85:                                               ; preds = %81
  %.not210 = icmp ugt i64 %.0188239, %.0186230
  br i1 %.not210, label %89, label %86

86:                                               ; preds = %85
  %87 = mul nsw i64 %.0186230, %13
  %88 = getelementptr double, ptr %78, i64 %87
  br label %95

89:                                               ; preds = %85
  %gep237 = getelementptr double, ptr %invariant.gep234, i64 %.0186230
  br label %95

90:                                               ; preds = %81
  %.not209 = icmp ult i64 %.0188239, %.0186230
  br i1 %.not209, label %94, label %91

91:                                               ; preds = %90
  %92 = mul nsw i64 %.0186230, %13
  %93 = getelementptr double, ptr %78, i64 %92
  br label %95

94:                                               ; preds = %90
  %gep235 = getelementptr double, ptr %invariant.gep234, i64 %.0186230
  br label %95

95:                                               ; preds = %91, %94, %86, %89
  %.sink255 = phi ptr [ %93, %91 ], [ %gep235, %94 ], [ %88, %86 ], [ %gep237, %89 ]
  %96 = load double, ptr %.sink255, align 8, !tbaa !9
  %97 = fcmp oge double %96, 0.000000e+00
  %98 = fneg double %96
  %99 = select i1 %97, double %96, double %98
  %.not211 = icmp eq i64 %.1185231, 0
  %.phi.trans.insert = getelementptr inbounds double, ptr %16, i64 %.0186230
  %.pre = load double, ptr %.phi.trans.insert, align 8, !tbaa !9
  br i1 %.not211, label %._crit_edge, label %100

100:                                              ; preds = %95
  %101 = fcmp oeq double %.pre, 0.000000e+00
  %102 = fcmp oeq double %96, 0.000000e+00
  %103 = select i1 %101, i1 true, i1 %102
  br label %._crit_edge

._crit_edge:                                      ; preds = %95, %100
  %104 = phi i1 [ %103, %100 ], [ false, %95 ]
  %105 = zext i1 %104 to i64
  %106 = load double, ptr %2, align 8, !tbaa !9
  %107 = fcmp oge double %.pre, 0.000000e+00
  %108 = fneg double %.pre
  %109 = select i1 %107, double %.pre, double %108
  %110 = fmul double %106, %109
  %111 = load double, ptr %80, align 8, !tbaa !9
  %112 = call double @llvm.fmuladd.f64(double %110, double %99, double %111)
  store double %112, ptr %80, align 8, !tbaa !9
  %113 = add nuw i64 %.0186230, 1
  %exitcond246.not = icmp eq i64 %.0186230, %77
  br i1 %exitcond246.not, label %.loopexit, label %81, !llvm.loop !11

.loopexit:                                        ; preds = %._crit_edge, %76, %73
  %.2 = phi i64 [ %.0184, %73 ], [ %.0184, %76 ], [ %105, %._crit_edge ]
  %.not208 = icmp eq i64 %.2, 0
  br i1 %.not208, label %114, label %119

114:                                              ; preds = %.loopexit
  %115 = getelementptr inbounds double, ptr %17, i64 %.0182241
  %116 = call double @d_sign(ptr noundef nonnull %12, ptr noundef nonnull %115) #5
  %117 = load double, ptr %115, align 8, !tbaa !9
  %118 = fadd double %116, %117
  store double %118, ptr %115, align 8, !tbaa !9
  br label %119

119:                                              ; preds = %114, %.loopexit
  %120 = load i64, ptr %9, align 8, !tbaa !5
  %121 = add nsw i64 %120, %.0182241
  %122 = add nuw i64 %.0188239, 1
  %exitcond247.not = icmp eq i64 %.0188239, %56
  br i1 %exitcond247.not, label %.loopexit214, label %.lr.ph242, !llvm.loop !13

.lr.ph228:                                        ; preds = %.preheader216, %187
  %.1183227 = phi i64 [ %189, %187 ], [ %.0179, %.preheader216 ]
  %.1189225 = phi i64 [ %190, %187 ], [ 1, %.preheader216 ]
  %123 = load double, ptr %7, align 8, !tbaa !9
  %124 = fcmp oeq double %123, 0.000000e+00
  %125 = getelementptr inbounds double, ptr %17, i64 %.1183227
  br i1 %124, label %.sink.split256, label %126

126:                                              ; preds = %.lr.ph228
  %127 = load double, ptr %125, align 8, !tbaa !9
  %128 = fcmp oeq double %127, 0.000000e+00
  br i1 %128, label %134, label %129

129:                                              ; preds = %126
  %130 = fcmp oge double %127, 0.000000e+00
  %131 = fneg double %127
  %132 = select i1 %130, double %127, double %131
  %133 = fmul double %123, %132
  br label %.sink.split256

.sink.split256:                                   ; preds = %.lr.ph228, %129
  %.sink257 = phi double [ %133, %129 ], [ 0.000000e+00, %.lr.ph228 ]
  %.3.ph = phi i64 [ 0, %129 ], [ 1, %.lr.ph228 ]
  store double %.sink257, ptr %125, align 8, !tbaa !9
  br label %134

134:                                              ; preds = %.sink.split256, %126
  %.3 = phi i64 [ 1, %126 ], [ %.3.ph, %.sink.split256 ]
  %135 = load double, ptr %2, align 8, !tbaa !9
  %136 = fcmp une double %135, 0.000000e+00
  br i1 %136, label %137, label %.loopexit215

137:                                              ; preds = %134
  %138 = load i64, ptr %1, align 8, !tbaa !5
  %.not201218 = icmp slt i64 %138, 1
  br i1 %.not201218, label %.loopexit215, label %.lr.ph

.lr.ph:                                           ; preds = %137
  %139 = getelementptr double, ptr %15, i64 %.1189225
  %140 = mul nsw i64 %.1189225, %13
  %invariant.gep = getelementptr double, ptr %15, i64 %140
  %141 = getelementptr inbounds double, ptr %17, i64 %.1183227
  br label %142

142:                                              ; preds = %.lr.ph, %167
  %.0181221 = phi i64 [ %.0180, %.lr.ph ], [ %180, %167 ]
  %.4220 = phi i64 [ %.3, %.lr.ph ], [ %169, %167 ]
  %.1187219 = phi i64 [ 1, %.lr.ph ], [ %181, %167 ]
  %143 = load i64, ptr %0, align 8, !tbaa !5
  %144 = call i64 @ilauplo_(ptr noundef nonnull @.str) #5
  %145 = icmp eq i64 %143, %144
  br i1 %145, label %146, label %151

146:                                              ; preds = %142
  %.not204 = icmp ugt i64 %.1189225, %.1187219
  br i1 %.not204, label %150, label %147

147:                                              ; preds = %146
  %148 = mul nsw i64 %.1187219, %13
  %149 = getelementptr double, ptr %139, i64 %148
  br label %156

150:                                              ; preds = %146
  %gep223 = getelementptr double, ptr %invariant.gep, i64 %.1187219
  br label %156

151:                                              ; preds = %142
  %.not203 = icmp ult i64 %.1189225, %.1187219
  br i1 %.not203, label %155, label %152

152:                                              ; preds = %151
  %153 = mul nsw i64 %.1187219, %13
  %154 = getelementptr double, ptr %139, i64 %153
  br label %156

155:                                              ; preds = %151
  %gep = getelementptr double, ptr %invariant.gep, i64 %.1187219
  br label %156

156:                                              ; preds = %152, %155, %147, %150
  %.sink263 = phi ptr [ %154, %152 ], [ %gep, %155 ], [ %149, %147 ], [ %gep223, %150 ]
  %157 = load double, ptr %.sink263, align 8, !tbaa !9
  %158 = fcmp oge double %157, 0.000000e+00
  %159 = fneg double %157
  %160 = select i1 %158, double %157, double %159
  %.not205 = icmp eq i64 %.4220, 0
  br i1 %.not205, label %167, label %161

161:                                              ; preds = %156
  %162 = getelementptr inbounds double, ptr %16, i64 %.1187219
  %163 = load double, ptr %162, align 8, !tbaa !9
  %164 = fcmp oeq double %163, 0.000000e+00
  %165 = fcmp oeq double %157, 0.000000e+00
  %166 = select i1 %164, i1 true, i1 %165
  br label %167

167:                                              ; preds = %161, %156
  %168 = phi i1 [ false, %156 ], [ %166, %161 ]
  %169 = zext i1 %168 to i64
  %170 = load double, ptr %2, align 8, !tbaa !9
  %171 = getelementptr inbounds double, ptr %16, i64 %.0181221
  %172 = load double, ptr %171, align 8, !tbaa !9
  %173 = fcmp oge double %172, 0.000000e+00
  %174 = fneg double %172
  %175 = select i1 %173, double %172, double %174
  %176 = fmul double %170, %175
  %177 = load double, ptr %141, align 8, !tbaa !9
  %178 = call double @llvm.fmuladd.f64(double %176, double %160, double %177)
  store double %178, ptr %141, align 8, !tbaa !9
  %179 = load i64, ptr %6, align 8, !tbaa !5
  %180 = add nsw i64 %179, %.0181221
  %181 = add nuw i64 %.1187219, 1
  %exitcond.not = icmp eq i64 %.1187219, %138
  br i1 %exitcond.not, label %.loopexit215, label %142, !llvm.loop !14

.loopexit215:                                     ; preds = %167, %137, %134
  %.5 = phi i64 [ %.3, %134 ], [ %.3, %137 ], [ %169, %167 ]
  %.not202 = icmp eq i64 %.5, 0
  br i1 %.not202, label %182, label %187

182:                                              ; preds = %.loopexit215
  %183 = getelementptr inbounds double, ptr %17, i64 %.1183227
  %184 = call double @d_sign(ptr noundef nonnull %12, ptr noundef nonnull %183) #5
  %185 = load double, ptr %183, align 8, !tbaa !9
  %186 = fadd double %184, %185
  store double %186, ptr %183, align 8, !tbaa !9
  br label %187

187:                                              ; preds = %182, %.loopexit215
  %188 = load i64, ptr %9, align 8, !tbaa !5
  %189 = add nsw i64 %188, %.1183227
  %190 = add nuw i64 %.1189225, 1
  %exitcond245.not = icmp eq i64 %.1189225, %56
  br i1 %exitcond245.not, label %.loopexit214, label %.lr.ph228, !llvm.loop !15

.loopexit214:                                     ; preds = %187, %119, %.preheader216, %.preheader, %41, %46, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #5
  ret i32 0
}

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

declare i64 @ilauplo_(ptr noundef) local_unnamed_addr #2

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

declare double @d_sign(ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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


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