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

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

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

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

59:                                               ; preds = %11
  %60 = load ptr, ptr %12, align 8, !tbaa !5
  %61 = load i32, ptr %60, align 4, !tbaa !9
  %62 = call i32 @ilatrans_(ptr noundef @.str.1)
  %63 = icmp eq i32 %61, %62
  br i1 %63, label %70, label %64

64:                                               ; preds = %59
  %65 = load ptr, ptr %12, align 8, !tbaa !5
  %66 = load i32, ptr %65, align 4, !tbaa !9
  %67 = call i32 @ilatrans_(ptr noundef @.str.2)
  %68 = icmp eq i32 %66, %67
  br i1 %68, label %70, label %69

69:                                               ; preds = %64
  store i32 1, ptr %28, align 4, !tbaa !9
  br label %109

70:                                               ; preds = %64, %59, %11
  %71 = load ptr, ptr %13, align 8, !tbaa !5
  %72 = load i32, ptr %71, align 4, !tbaa !9
  %73 = icmp slt i32 %72, 0
  br i1 %73, label %74, label %75

74:                                               ; preds = %70
  store i32 2, ptr %28, align 4, !tbaa !9
  br label %108

75:                                               ; preds = %70
  %76 = load ptr, ptr %14, align 8, !tbaa !5
  %77 = load i32, ptr %76, align 4, !tbaa !9
  %78 = icmp slt i32 %77, 0
  br i1 %78, label %79, label %80

79:                                               ; preds = %75
  store i32 3, ptr %28, align 4, !tbaa !9
  br label %107

80:                                               ; preds = %75
  %81 = load ptr, ptr %17, align 8, !tbaa !5
  %82 = load i32, ptr %81, align 4, !tbaa !9
  %83 = load ptr, ptr %13, align 8, !tbaa !5
  %84 = load i32, ptr %83, align 4, !tbaa !9
  %85 = icmp sge i32 1, %84
  br i1 %85, label %86, label %87

86:                                               ; preds = %80
  br label %90

87:                                               ; preds = %80
  %88 = load ptr, ptr %13, align 8, !tbaa !5
  %89 = load i32, ptr %88, align 4, !tbaa !9
  br label %90

90:                                               ; preds = %87, %86
  %91 = phi i32 [ 1, %86 ], [ %89, %87 ]
  %92 = icmp slt i32 %82, %91
  br i1 %92, label %93, label %94

93:                                               ; preds = %90
  store i32 6, ptr %28, align 4, !tbaa !9
  br label %106

94:                                               ; preds = %90
  %95 = load ptr, ptr %19, align 8, !tbaa !5
  %96 = load i32, ptr %95, align 4, !tbaa !9
  %97 = icmp eq i32 %96, 0
  br i1 %97, label %98, label %99

98:                                               ; preds = %94
  store i32 8, ptr %28, align 4, !tbaa !9
  br label %105

99:                                               ; preds = %94
  %100 = load ptr, ptr %22, align 8, !tbaa !5
  %101 = load i32, ptr %100, align 4, !tbaa !9
  %102 = icmp eq i32 %101, 0
  br i1 %102, label %103, label %104

103:                                              ; preds = %99
  store i32 11, ptr %28, align 4, !tbaa !9
  br label %104

104:                                              ; preds = %103, %99
  br label %105

105:                                              ; preds = %104, %98
  br label %106

106:                                              ; preds = %105, %93
  br label %107

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

108:                                              ; preds = %107, %74
  br label %109

109:                                              ; preds = %108, %69
  %110 = load i32, ptr %28, align 4, !tbaa !9
  %111 = icmp ne i32 %110, 0
  br i1 %111, label %112, label %114

112:                                              ; preds = %109
  %113 = call i32 @xerbla_(ptr noundef @.str.3, ptr noundef %28, i32 noundef 10)
  store i32 1, ptr %40, align 4
  br label %877

114:                                              ; preds = %109
  %115 = load ptr, ptr %13, align 8, !tbaa !5
  %116 = load i32, ptr %115, align 4, !tbaa !9
  %117 = icmp eq i32 %116, 0
  br i1 %117, label %130, label %118

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

122:                                              ; preds = %118
  %123 = load ptr, ptr %15, align 8, !tbaa !5
  %124 = load double, ptr %123, align 8, !tbaa !11
  %125 = fcmp oeq double %124, 0.000000e+00
  br i1 %125, label %126, label %131

126:                                              ; preds = %122
  %127 = load ptr, ptr %20, align 8, !tbaa !5
  %128 = load double, ptr %127, align 8, !tbaa !11
  %129 = fcmp oeq double %128, 1.000000e+00
  br i1 %129, label %130, label %131

130:                                              ; preds = %126, %118, %114
  store i32 1, ptr %40, align 4
  br label %877

131:                                              ; preds = %126, %122
  %132 = load ptr, ptr %12, align 8, !tbaa !5
  %133 = load i32, ptr %132, align 4, !tbaa !9
  %134 = call i32 @ilatrans_(ptr noundef @.str)
  %135 = icmp eq i32 %133, %134
  br i1 %135, label %136, label %141

136:                                              ; preds = %131
  %137 = load ptr, ptr %14, align 8, !tbaa !5
  %138 = load i32, ptr %137, align 4, !tbaa !9
  store i32 %138, ptr %30, align 4, !tbaa !9
  %139 = load ptr, ptr %13, align 8, !tbaa !5
  %140 = load i32, ptr %139, align 4, !tbaa !9
  store i32 %140, ptr %31, align 4, !tbaa !9
  br label %146

141:                                              ; preds = %131
  %142 = load ptr, ptr %13, align 8, !tbaa !5
  %143 = load i32, ptr %142, align 4, !tbaa !9
  store i32 %143, ptr %30, align 4, !tbaa !9
  %144 = load ptr, ptr %14, align 8, !tbaa !5
  %145 = load i32, ptr %144, align 4, !tbaa !9
  store i32 %145, ptr %31, align 4, !tbaa !9
  br label %146

146:                                              ; preds = %141, %136
  %147 = load ptr, ptr %19, align 8, !tbaa !5
  %148 = load i32, ptr %147, align 4, !tbaa !9
  %149 = icmp sgt i32 %148, 0
  br i1 %149, label %150, label %151

150:                                              ; preds = %146
  store i32 1, ptr %38, align 4, !tbaa !9
  br label %158

151:                                              ; preds = %146
  %152 = load i32, ptr %30, align 4, !tbaa !9
  %153 = sub nsw i32 %152, 1
  %154 = load ptr, ptr %19, align 8, !tbaa !5
  %155 = load i32, ptr %154, align 4, !tbaa !9
  %156 = mul nsw i32 %153, %155
  %157 = sub nsw i32 1, %156
  store i32 %157, ptr %38, align 4, !tbaa !9
  br label %158

158:                                              ; preds = %151, %150
  %159 = load ptr, ptr %22, align 8, !tbaa !5
  %160 = load i32, ptr %159, align 4, !tbaa !9
  %161 = icmp sgt i32 %160, 0
  br i1 %161, label %162, label %163

162:                                              ; preds = %158
  store i32 1, ptr %39, align 4, !tbaa !9
  br label %170

163:                                              ; preds = %158
  %164 = load i32, ptr %31, align 4, !tbaa !9
  %165 = sub nsw i32 %164, 1
  %166 = load ptr, ptr %22, align 8, !tbaa !5
  %167 = load i32, ptr %166, align 4, !tbaa !9
  %168 = mul nsw i32 %165, %167
  %169 = sub nsw i32 1, %168
  store i32 %169, ptr %39, align 4, !tbaa !9
  br label %170

170:                                              ; preds = %163, %162
  %171 = call double @dlamch_(ptr noundef @.str.4)
  store double %171, ptr %32, align 8, !tbaa !11
  %172 = load ptr, ptr %14, align 8, !tbaa !5
  %173 = load i32, ptr %172, align 4, !tbaa !9
  %174 = add nsw i32 %173, 1
  %175 = sitofp i32 %174 to double
  %176 = load double, ptr %32, align 8, !tbaa !11
  %177 = fmul double %175, %176
  store double %177, ptr %32, align 8, !tbaa !11
  %178 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %178, ptr %36, align 4, !tbaa !9
  %179 = load ptr, ptr %19, align 8, !tbaa !5
  %180 = load i32, ptr %179, align 4, !tbaa !9
  %181 = icmp eq i32 %180, 1
  br i1 %181, label %182, label %524

182:                                              ; preds = %170
  %183 = load ptr, ptr %12, align 8, !tbaa !5
  %184 = load i32, ptr %183, align 4, !tbaa !9
  %185 = call i32 @ilatrans_(ptr noundef @.str)
  %186 = icmp eq i32 %184, %185
  br i1 %186, label %187, label %355

187:                                              ; preds = %182
  %188 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %188, ptr %25, align 4, !tbaa !9
  store i32 1, ptr %33, align 4, !tbaa !9
  br label %189

189:                                              ; preds = %351, %187
  %190 = load i32, ptr %33, align 4, !tbaa !9
  %191 = load i32, ptr %25, align 4, !tbaa !9
  %192 = icmp sle i32 %190, %191
  br i1 %192, label %193, label %354

193:                                              ; preds = %189
  %194 = load ptr, ptr %20, align 8, !tbaa !5
  %195 = load double, ptr %194, align 8, !tbaa !11
  %196 = fcmp oeq double %195, 0.000000e+00
  br i1 %196, label %197, label %202

197:                                              ; preds = %193
  store i32 1, ptr %35, align 4, !tbaa !9
  %198 = load ptr, ptr %21, align 8, !tbaa !5
  %199 = load i32, ptr %36, align 4, !tbaa !9
  %200 = sext i32 %199 to i64
  %201 = getelementptr inbounds double, ptr %198, i64 %200
  store double 0.000000e+00, ptr %201, align 8, !tbaa !11
  br label %233

202:                                              ; preds = %193
  %203 = load ptr, ptr %21, align 8, !tbaa !5
  %204 = load i32, ptr %36, align 4, !tbaa !9
  %205 = sext i32 %204 to i64
  %206 = getelementptr inbounds double, ptr %203, i64 %205
  %207 = load double, ptr %206, align 8, !tbaa !11
  %208 = fcmp oeq double %207, 0.000000e+00
  br i1 %208, label %209, label %210

209:                                              ; preds = %202
  store i32 1, ptr %35, align 4, !tbaa !9
  br label %232

210:                                              ; preds = %202
  store i32 0, ptr %35, align 4, !tbaa !9
  %211 = load ptr, ptr %20, align 8, !tbaa !5
  %212 = load double, ptr %211, align 8, !tbaa !11
  %213 = load ptr, ptr %21, align 8, !tbaa !5
  %214 = load i32, ptr %36, align 4, !tbaa !9
  %215 = sext i32 %214 to i64
  %216 = getelementptr inbounds double, ptr %213, i64 %215
  %217 = load double, ptr %216, align 8, !tbaa !11
  store double %217, ptr %27, align 8, !tbaa !11
  %218 = load double, ptr %27, align 8, !tbaa !11
  %219 = fcmp oge double %218, 0.000000e+00
  br i1 %219, label %220, label %222

220:                                              ; preds = %210
  %221 = load double, ptr %27, align 8, !tbaa !11
  br label %225

222:                                              ; preds = %210
  %223 = load double, ptr %27, align 8, !tbaa !11
  %224 = fneg double %223
  br label %225

225:                                              ; preds = %222, %220
  %226 = phi double [ %221, %220 ], [ %224, %222 ]
  %227 = fmul double %212, %226
  %228 = load ptr, ptr %21, align 8, !tbaa !5
  %229 = load i32, ptr %36, align 4, !tbaa !9
  %230 = sext i32 %229 to i64
  %231 = getelementptr inbounds double, ptr %228, i64 %230
  store double %227, ptr %231, align 8, !tbaa !11
  br label %232

232:                                              ; preds = %225, %209
  br label %233

233:                                              ; preds = %232, %197
  %234 = load ptr, ptr %15, align 8, !tbaa !5
  %235 = load double, ptr %234, align 8, !tbaa !11
  %236 = fcmp une double %235, 0.000000e+00
  br i1 %236, label %237, label %307

237:                                              ; preds = %233
  %238 = load i32, ptr %30, align 4, !tbaa !9
  store i32 %238, ptr %26, align 4, !tbaa !9
  store i32 1, ptr %34, align 4, !tbaa !9
  br label %239

239:                                              ; preds = %303, %237
  %240 = load i32, ptr %34, align 4, !tbaa !9
  %241 = load i32, ptr %26, align 4, !tbaa !9
  %242 = icmp sle i32 %240, %241
  br i1 %242, label %243, label %306

243:                                              ; preds = %239
  %244 = load ptr, ptr %16, align 8, !tbaa !5
  %245 = load i32, ptr %33, align 4, !tbaa !9
  %246 = load i32, ptr %34, align 4, !tbaa !9
  %247 = load i32, ptr %23, align 4, !tbaa !9
  %248 = mul nsw i32 %246, %247
  %249 = add nsw i32 %245, %248
  %250 = sext i32 %249 to i64
  %251 = getelementptr inbounds double, ptr %244, i64 %250
  %252 = load double, ptr %251, align 8, !tbaa !11
  store double %252, ptr %27, align 8, !tbaa !11
  %253 = load double, ptr %27, align 8, !tbaa !11
  %254 = fcmp oge double %253, 0.000000e+00
  br i1 %254, label %255, label %257

255:                                              ; preds = %243
  %256 = load double, ptr %27, align 8, !tbaa !11
  br label %260

257:                                              ; preds = %243
  %258 = load double, ptr %27, align 8, !tbaa !11
  %259 = fneg double %258
  br label %260

260:                                              ; preds = %257, %255
  %261 = phi double [ %256, %255 ], [ %259, %257 ]
  store double %261, ptr %29, align 8, !tbaa !11
  %262 = load i32, ptr %35, align 4, !tbaa !9
  %263 = icmp ne i32 %262, 0
  br i1 %263, label %264, label %276

264:                                              ; preds = %260
  %265 = load ptr, ptr %18, align 8, !tbaa !5
  %266 = load i32, ptr %34, align 4, !tbaa !9
  %267 = sext i32 %266 to i64
  %268 = getelementptr inbounds double, ptr %265, i64 %267
  %269 = load double, ptr %268, align 8, !tbaa !11
  %270 = fcmp oeq double %269, 0.000000e+00
  br i1 %270, label %274, label %271

271:                                              ; preds = %264
  %272 = load double, ptr %29, align 8, !tbaa !11
  %273 = fcmp oeq double %272, 0.000000e+00
  br label %274

274:                                              ; preds = %271, %264
  %275 = phi i1 [ true, %264 ], [ %273, %271 ]
  br label %276

276:                                              ; preds = %274, %260
  %277 = phi i1 [ false, %260 ], [ %275, %274 ]
  %278 = zext i1 %277 to i32
  store i32 %278, ptr %35, align 4, !tbaa !9
  %279 = load ptr, ptr %15, align 8, !tbaa !5
  %280 = load double, ptr %279, align 8, !tbaa !11
  %281 = load ptr, ptr %18, align 8, !tbaa !5
  %282 = load i32, ptr %34, align 4, !tbaa !9
  %283 = sext i32 %282 to i64
  %284 = getelementptr inbounds double, ptr %281, i64 %283
  %285 = load double, ptr %284, align 8, !tbaa !11
  store double %285, ptr %27, align 8, !tbaa !11
  %286 = load double, ptr %27, align 8, !tbaa !11
  %287 = fcmp oge double %286, 0.000000e+00
  br i1 %287, label %288, label %290

288:                                              ; preds = %276
  %289 = load double, ptr %27, align 8, !tbaa !11
  br label %293

290:                                              ; preds = %276
  %291 = load double, ptr %27, align 8, !tbaa !11
  %292 = fneg double %291
  br label %293

293:                                              ; preds = %290, %288
  %294 = phi double [ %289, %288 ], [ %292, %290 ]
  %295 = fmul double %280, %294
  %296 = load double, ptr %29, align 8, !tbaa !11
  %297 = load ptr, ptr %21, align 8, !tbaa !5
  %298 = load i32, ptr %36, align 4, !tbaa !9
  %299 = sext i32 %298 to i64
  %300 = getelementptr inbounds double, ptr %297, i64 %299
  %301 = load double, ptr %300, align 8, !tbaa !11
  %302 = call double @llvm.fmuladd.f64(double %295, double %296, double %301)
  store double %302, ptr %300, align 8, !tbaa !11
  br label %303

303:                                              ; preds = %293
  %304 = load i32, ptr %34, align 4, !tbaa !9
  %305 = add nsw i32 %304, 1
  store i32 %305, ptr %34, align 4, !tbaa !9
  br label %239, !llvm.loop !13

306:                                              ; preds = %239
  br label %307

307:                                              ; preds = %306, %233
  %308 = load i32, ptr %35, align 4, !tbaa !9
  %309 = icmp ne i32 %308, 0
  br i1 %309, label %346, label %310

310:                                              ; preds = %307
  %311 = load ptr, ptr %21, align 8, !tbaa !5
  %312 = load i32, ptr %36, align 4, !tbaa !9
  %313 = sext i32 %312 to i64
  %314 = getelementptr inbounds double, ptr %311, i64 %313
  %315 = load double, ptr %314, align 8, !tbaa !11
  %316 = fcmp oge double %315, 0.000000e+00
  br i1 %316, label %317, label %327

317:                                              ; preds = %310
  %318 = load double, ptr %32, align 8, !tbaa !11
  %319 = fcmp oge double %318, 0.000000e+00
  br i1 %319, label %320, label %322

320:                                              ; preds = %317
  %321 = load double, ptr %32, align 8, !tbaa !11
  br label %325

322:                                              ; preds = %317
  %323 = load double, ptr %32, align 8, !tbaa !11
  %324 = fneg double %323
  br label %325

325:                                              ; preds = %322, %320
  %326 = phi double [ %321, %320 ], [ %324, %322 ]
  br label %338

327:                                              ; preds = %310
  %328 = load double, ptr %32, align 8, !tbaa !11
  %329 = fcmp oge double %328, 0.000000e+00
  br i1 %329, label %330, label %332

330:                                              ; preds = %327
  %331 = load double, ptr %32, align 8, !tbaa !11
  br label %335

332:                                              ; preds = %327
  %333 = load double, ptr %32, align 8, !tbaa !11
  %334 = fneg double %333
  br label %335

335:                                              ; preds = %332, %330
  %336 = phi double [ %331, %330 ], [ %334, %332 ]
  %337 = fneg double %336
  br label %338

338:                                              ; preds = %335, %325
  %339 = phi double [ %326, %325 ], [ %337, %335 ]
  %340 = load ptr, ptr %21, align 8, !tbaa !5
  %341 = load i32, ptr %36, align 4, !tbaa !9
  %342 = sext i32 %341 to i64
  %343 = getelementptr inbounds double, ptr %340, i64 %342
  %344 = load double, ptr %343, align 8, !tbaa !11
  %345 = fadd double %344, %339
  store double %345, ptr %343, align 8, !tbaa !11
  br label %346

346:                                              ; preds = %338, %307
  %347 = load ptr, ptr %22, align 8, !tbaa !5
  %348 = load i32, ptr %347, align 4, !tbaa !9
  %349 = load i32, ptr %36, align 4, !tbaa !9
  %350 = add nsw i32 %349, %348
  store i32 %350, ptr %36, align 4, !tbaa !9
  br label %351

351:                                              ; preds = %346
  %352 = load i32, ptr %33, align 4, !tbaa !9
  %353 = add nsw i32 %352, 1
  store i32 %353, ptr %33, align 4, !tbaa !9
  br label %189, !llvm.loop !15

354:                                              ; preds = %189
  br label %523

355:                                              ; preds = %182
  %356 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %356, ptr %25, align 4, !tbaa !9
  store i32 1, ptr %33, align 4, !tbaa !9
  br label %357

357:                                              ; preds = %519, %355
  %358 = load i32, ptr %33, align 4, !tbaa !9
  %359 = load i32, ptr %25, align 4, !tbaa !9
  %360 = icmp sle i32 %358, %359
  br i1 %360, label %361, label %522

361:                                              ; preds = %357
  %362 = load ptr, ptr %20, align 8, !tbaa !5
  %363 = load double, ptr %362, align 8, !tbaa !11
  %364 = fcmp oeq double %363, 0.000000e+00
  br i1 %364, label %365, label %370

365:                                              ; preds = %361
  store i32 1, ptr %35, align 4, !tbaa !9
  %366 = load ptr, ptr %21, align 8, !tbaa !5
  %367 = load i32, ptr %36, align 4, !tbaa !9
  %368 = sext i32 %367 to i64
  %369 = getelementptr inbounds double, ptr %366, i64 %368
  store double 0.000000e+00, ptr %369, align 8, !tbaa !11
  br label %401

370:                                              ; preds = %361
  %371 = load ptr, ptr %21, align 8, !tbaa !5
  %372 = load i32, ptr %36, align 4, !tbaa !9
  %373 = sext i32 %372 to i64
  %374 = getelementptr inbounds double, ptr %371, 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 = %370
  store i32 1, ptr %35, align 4, !tbaa !9
  br label %400

378:                                              ; preds = %370
  store i32 0, ptr %35, align 4, !tbaa !9
  %379 = load ptr, ptr %20, align 8, !tbaa !5
  %380 = load double, ptr %379, align 8, !tbaa !11
  %381 = load ptr, ptr %21, align 8, !tbaa !5
  %382 = load i32, ptr %36, align 4, !tbaa !9
  %383 = sext i32 %382 to i64
  %384 = getelementptr inbounds double, ptr %381, i64 %383
  %385 = load double, ptr %384, align 8, !tbaa !11
  store double %385, ptr %27, align 8, !tbaa !11
  %386 = load double, ptr %27, align 8, !tbaa !11
  %387 = fcmp oge double %386, 0.000000e+00
  br i1 %387, label %388, label %390

388:                                              ; preds = %378
  %389 = load double, ptr %27, align 8, !tbaa !11
  br label %393

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

393:                                              ; preds = %390, %388
  %394 = phi double [ %389, %388 ], [ %392, %390 ]
  %395 = fmul double %380, %394
  %396 = load ptr, ptr %21, align 8, !tbaa !5
  %397 = load i32, ptr %36, align 4, !tbaa !9
  %398 = sext i32 %397 to i64
  %399 = getelementptr inbounds double, ptr %396, i64 %398
  store double %395, ptr %399, align 8, !tbaa !11
  br label %400

400:                                              ; preds = %393, %377
  br label %401

401:                                              ; preds = %400, %365
  %402 = load ptr, ptr %15, align 8, !tbaa !5
  %403 = load double, ptr %402, align 8, !tbaa !11
  %404 = fcmp une double %403, 0.000000e+00
  br i1 %404, label %405, label %475

405:                                              ; preds = %401
  %406 = load i32, ptr %30, align 4, !tbaa !9
  store i32 %406, ptr %26, align 4, !tbaa !9
  store i32 1, ptr %34, align 4, !tbaa !9
  br label %407

407:                                              ; preds = %471, %405
  %408 = load i32, ptr %34, align 4, !tbaa !9
  %409 = load i32, ptr %26, align 4, !tbaa !9
  %410 = icmp sle i32 %408, %409
  br i1 %410, label %411, label %474

411:                                              ; preds = %407
  %412 = load ptr, ptr %16, align 8, !tbaa !5
  %413 = load i32, ptr %34, align 4, !tbaa !9
  %414 = load i32, ptr %33, align 4, !tbaa !9
  %415 = load i32, ptr %23, align 4, !tbaa !9
  %416 = mul nsw i32 %414, %415
  %417 = add nsw i32 %413, %416
  %418 = sext i32 %417 to i64
  %419 = getelementptr inbounds double, ptr %412, i64 %418
  %420 = load double, ptr %419, align 8, !tbaa !11
  store double %420, ptr %27, align 8, !tbaa !11
  %421 = load double, ptr %27, align 8, !tbaa !11
  %422 = fcmp oge double %421, 0.000000e+00
  br i1 %422, label %423, label %425

423:                                              ; preds = %411
  %424 = load double, ptr %27, align 8, !tbaa !11
  br label %428

425:                                              ; preds = %411
  %426 = load double, ptr %27, align 8, !tbaa !11
  %427 = fneg double %426
  br label %428

428:                                              ; preds = %425, %423
  %429 = phi double [ %424, %423 ], [ %427, %425 ]
  store double %429, ptr %29, align 8, !tbaa !11
  %430 = load i32, ptr %35, align 4, !tbaa !9
  %431 = icmp ne i32 %430, 0
  br i1 %431, label %432, label %444

432:                                              ; preds = %428
  %433 = load ptr, ptr %18, align 8, !tbaa !5
  %434 = load i32, ptr %34, align 4, !tbaa !9
  %435 = sext i32 %434 to i64
  %436 = getelementptr inbounds double, ptr %433, i64 %435
  %437 = load double, ptr %436, align 8, !tbaa !11
  %438 = fcmp oeq double %437, 0.000000e+00
  br i1 %438, label %442, label %439

439:                                              ; preds = %432
  %440 = load double, ptr %29, align 8, !tbaa !11
  %441 = fcmp oeq double %440, 0.000000e+00
  br label %442

442:                                              ; preds = %439, %432
  %443 = phi i1 [ true, %432 ], [ %441, %439 ]
  br label %444

444:                                              ; preds = %442, %428
  %445 = phi i1 [ false, %428 ], [ %443, %442 ]
  %446 = zext i1 %445 to i32
  store i32 %446, ptr %35, align 4, !tbaa !9
  %447 = load ptr, ptr %15, align 8, !tbaa !5
  %448 = load double, ptr %447, align 8, !tbaa !11
  %449 = load ptr, ptr %18, align 8, !tbaa !5
  %450 = load i32, ptr %34, align 4, !tbaa !9
  %451 = sext i32 %450 to i64
  %452 = getelementptr inbounds double, ptr %449, i64 %451
  %453 = load double, ptr %452, align 8, !tbaa !11
  store double %453, ptr %27, align 8, !tbaa !11
  %454 = load double, ptr %27, align 8, !tbaa !11
  %455 = fcmp oge double %454, 0.000000e+00
  br i1 %455, label %456, label %458

456:                                              ; preds = %444
  %457 = load double, ptr %27, align 8, !tbaa !11
  br label %461

458:                                              ; preds = %444
  %459 = load double, ptr %27, align 8, !tbaa !11
  %460 = fneg double %459
  br label %461

461:                                              ; preds = %458, %456
  %462 = phi double [ %457, %456 ], [ %460, %458 ]
  %463 = fmul double %448, %462
  %464 = load double, ptr %29, align 8, !tbaa !11
  %465 = load ptr, ptr %21, align 8, !tbaa !5
  %466 = load i32, ptr %36, align 4, !tbaa !9
  %467 = sext i32 %466 to i64
  %468 = getelementptr inbounds double, ptr %465, i64 %467
  %469 = load double, ptr %468, align 8, !tbaa !11
  %470 = call double @llvm.fmuladd.f64(double %463, double %464, double %469)
  store double %470, ptr %468, align 8, !tbaa !11
  br label %471

471:                                              ; preds = %461
  %472 = load i32, ptr %34, align 4, !tbaa !9
  %473 = add nsw i32 %472, 1
  store i32 %473, ptr %34, align 4, !tbaa !9
  br label %407, !llvm.loop !16

474:                                              ; preds = %407
  br label %475

475:                                              ; preds = %474, %401
  %476 = load i32, ptr %35, align 4, !tbaa !9
  %477 = icmp ne i32 %476, 0
  br i1 %477, label %514, label %478

478:                                              ; preds = %475
  %479 = load ptr, ptr %21, align 8, !tbaa !5
  %480 = load i32, ptr %36, align 4, !tbaa !9
  %481 = sext i32 %480 to i64
  %482 = getelementptr inbounds double, ptr %479, i64 %481
  %483 = load double, ptr %482, align 8, !tbaa !11
  %484 = fcmp oge double %483, 0.000000e+00
  br i1 %484, label %485, label %495

485:                                              ; preds = %478
  %486 = load double, ptr %32, align 8, !tbaa !11
  %487 = fcmp oge double %486, 0.000000e+00
  br i1 %487, label %488, label %490

488:                                              ; preds = %485
  %489 = load double, ptr %32, align 8, !tbaa !11
  br label %493

490:                                              ; preds = %485
  %491 = load double, ptr %32, align 8, !tbaa !11
  %492 = fneg double %491
  br label %493

493:                                              ; preds = %490, %488
  %494 = phi double [ %489, %488 ], [ %492, %490 ]
  br label %506

495:                                              ; preds = %478
  %496 = load double, ptr %32, align 8, !tbaa !11
  %497 = fcmp oge double %496, 0.000000e+00
  br i1 %497, label %498, label %500

498:                                              ; preds = %495
  %499 = load double, ptr %32, align 8, !tbaa !11
  br label %503

500:                                              ; preds = %495
  %501 = load double, ptr %32, align 8, !tbaa !11
  %502 = fneg double %501
  br label %503

503:                                              ; preds = %500, %498
  %504 = phi double [ %499, %498 ], [ %502, %500 ]
  %505 = fneg double %504
  br label %506

506:                                              ; preds = %503, %493
  %507 = phi double [ %494, %493 ], [ %505, %503 ]
  %508 = load ptr, ptr %21, align 8, !tbaa !5
  %509 = load i32, ptr %36, align 4, !tbaa !9
  %510 = sext i32 %509 to i64
  %511 = getelementptr inbounds double, ptr %508, i64 %510
  %512 = load double, ptr %511, align 8, !tbaa !11
  %513 = fadd double %512, %507
  store double %513, ptr %511, align 8, !tbaa !11
  br label %514

514:                                              ; preds = %506, %475
  %515 = load ptr, ptr %22, align 8, !tbaa !5
  %516 = load i32, ptr %515, align 4, !tbaa !9
  %517 = load i32, ptr %36, align 4, !tbaa !9
  %518 = add nsw i32 %517, %516
  store i32 %518, ptr %36, align 4, !tbaa !9
  br label %519

519:                                              ; preds = %514
  %520 = load i32, ptr %33, align 4, !tbaa !9
  %521 = add nsw i32 %520, 1
  store i32 %521, ptr %33, align 4, !tbaa !9
  br label %357, !llvm.loop !17

522:                                              ; preds = %357
  br label %523

523:                                              ; preds = %522, %354
  br label %876

524:                                              ; preds = %170
  %525 = load ptr, ptr %12, align 8, !tbaa !5
  %526 = load i32, ptr %525, align 4, !tbaa !9
  %527 = call i32 @ilatrans_(ptr noundef @.str)
  %528 = icmp eq i32 %526, %527
  br i1 %528, label %529, label %702

529:                                              ; preds = %524
  %530 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %530, ptr %25, align 4, !tbaa !9
  store i32 1, ptr %33, align 4, !tbaa !9
  br label %531

531:                                              ; preds = %698, %529
  %532 = load i32, ptr %33, align 4, !tbaa !9
  %533 = load i32, ptr %25, align 4, !tbaa !9
  %534 = icmp sle i32 %532, %533
  br i1 %534, label %535, label %701

535:                                              ; preds = %531
  %536 = load ptr, ptr %20, align 8, !tbaa !5
  %537 = load double, ptr %536, align 8, !tbaa !11
  %538 = fcmp oeq double %537, 0.000000e+00
  br i1 %538, label %539, label %544

539:                                              ; preds = %535
  store i32 1, ptr %35, align 4, !tbaa !9
  %540 = load ptr, ptr %21, align 8, !tbaa !5
  %541 = load i32, ptr %36, align 4, !tbaa !9
  %542 = sext i32 %541 to i64
  %543 = getelementptr inbounds double, ptr %540, i64 %542
  store double 0.000000e+00, ptr %543, align 8, !tbaa !11
  br label %575

544:                                              ; preds = %535
  %545 = load ptr, ptr %21, align 8, !tbaa !5
  %546 = load i32, ptr %36, align 4, !tbaa !9
  %547 = sext i32 %546 to i64
  %548 = getelementptr inbounds double, ptr %545, i64 %547
  %549 = load double, ptr %548, align 8, !tbaa !11
  %550 = fcmp oeq double %549, 0.000000e+00
  br i1 %550, label %551, label %552

551:                                              ; preds = %544
  store i32 1, ptr %35, align 4, !tbaa !9
  br label %574

552:                                              ; preds = %544
  store i32 0, ptr %35, align 4, !tbaa !9
  %553 = load ptr, ptr %20, align 8, !tbaa !5
  %554 = load double, ptr %553, align 8, !tbaa !11
  %555 = load ptr, ptr %21, align 8, !tbaa !5
  %556 = load i32, ptr %36, align 4, !tbaa !9
  %557 = sext i32 %556 to i64
  %558 = getelementptr inbounds double, ptr %555, i64 %557
  %559 = load double, ptr %558, align 8, !tbaa !11
  store double %559, ptr %27, align 8, !tbaa !11
  %560 = load double, ptr %27, align 8, !tbaa !11
  %561 = fcmp oge double %560, 0.000000e+00
  br i1 %561, label %562, label %564

562:                                              ; preds = %552
  %563 = load double, ptr %27, align 8, !tbaa !11
  br label %567

564:                                              ; preds = %552
  %565 = load double, ptr %27, align 8, !tbaa !11
  %566 = fneg double %565
  br label %567

567:                                              ; preds = %564, %562
  %568 = phi double [ %563, %562 ], [ %566, %564 ]
  %569 = fmul double %554, %568
  %570 = load ptr, ptr %21, align 8, !tbaa !5
  %571 = load i32, ptr %36, align 4, !tbaa !9
  %572 = sext i32 %571 to i64
  %573 = getelementptr inbounds double, ptr %570, i64 %572
  store double %569, ptr %573, align 8, !tbaa !11
  br label %574

574:                                              ; preds = %567, %551
  br label %575

575:                                              ; preds = %574, %539
  %576 = load ptr, ptr %15, align 8, !tbaa !5
  %577 = load double, ptr %576, align 8, !tbaa !11
  %578 = fcmp une double %577, 0.000000e+00
  br i1 %578, label %579, label %654

579:                                              ; preds = %575
  %580 = load i32, ptr %38, align 4, !tbaa !9
  store i32 %580, ptr %37, align 4, !tbaa !9
  %581 = load i32, ptr %30, align 4, !tbaa !9
  store i32 %581, ptr %26, align 4, !tbaa !9
  store i32 1, ptr %34, align 4, !tbaa !9
  br label %582

582:                                              ; preds = %650, %579
  %583 = load i32, ptr %34, align 4, !tbaa !9
  %584 = load i32, ptr %26, align 4, !tbaa !9
  %585 = icmp sle i32 %583, %584
  br i1 %585, label %586, label %653

586:                                              ; preds = %582
  %587 = load ptr, ptr %16, align 8, !tbaa !5
  %588 = load i32, ptr %33, align 4, !tbaa !9
  %589 = load i32, ptr %34, align 4, !tbaa !9
  %590 = load i32, ptr %23, align 4, !tbaa !9
  %591 = mul nsw i32 %589, %590
  %592 = add nsw i32 %588, %591
  %593 = sext i32 %592 to i64
  %594 = getelementptr inbounds double, ptr %587, i64 %593
  %595 = load double, ptr %594, align 8, !tbaa !11
  store double %595, ptr %27, align 8, !tbaa !11
  %596 = load double, ptr %27, align 8, !tbaa !11
  %597 = fcmp oge double %596, 0.000000e+00
  br i1 %597, label %598, label %600

598:                                              ; preds = %586
  %599 = load double, ptr %27, align 8, !tbaa !11
  br label %603

600:                                              ; preds = %586
  %601 = load double, ptr %27, align 8, !tbaa !11
  %602 = fneg double %601
  br label %603

603:                                              ; preds = %600, %598
  %604 = phi double [ %599, %598 ], [ %602, %600 ]
  store double %604, ptr %29, align 8, !tbaa !11
  %605 = load i32, ptr %35, align 4, !tbaa !9
  %606 = icmp ne i32 %605, 0
  br i1 %606, label %607, label %619

607:                                              ; preds = %603
  %608 = load ptr, ptr %18, align 8, !tbaa !5
  %609 = load i32, ptr %37, align 4, !tbaa !9
  %610 = sext i32 %609 to i64
  %611 = getelementptr inbounds double, ptr %608, i64 %610
  %612 = load double, ptr %611, align 8, !tbaa !11
  %613 = fcmp oeq double %612, 0.000000e+00
  br i1 %613, label %617, label %614

614:                                              ; preds = %607
  %615 = load double, ptr %29, align 8, !tbaa !11
  %616 = fcmp oeq double %615, 0.000000e+00
  br label %617

617:                                              ; preds = %614, %607
  %618 = phi i1 [ true, %607 ], [ %616, %614 ]
  br label %619

619:                                              ; preds = %617, %603
  %620 = phi i1 [ false, %603 ], [ %618, %617 ]
  %621 = zext i1 %620 to i32
  store i32 %621, ptr %35, align 4, !tbaa !9
  %622 = load ptr, ptr %15, align 8, !tbaa !5
  %623 = load double, ptr %622, align 8, !tbaa !11
  %624 = load ptr, ptr %18, align 8, !tbaa !5
  %625 = load i32, ptr %37, align 4, !tbaa !9
  %626 = sext i32 %625 to i64
  %627 = getelementptr inbounds double, ptr %624, i64 %626
  %628 = load double, ptr %627, align 8, !tbaa !11
  store double %628, ptr %27, align 8, !tbaa !11
  %629 = load double, ptr %27, align 8, !tbaa !11
  %630 = fcmp oge double %629, 0.000000e+00
  br i1 %630, label %631, label %633

631:                                              ; preds = %619
  %632 = load double, ptr %27, align 8, !tbaa !11
  br label %636

633:                                              ; preds = %619
  %634 = load double, ptr %27, align 8, !tbaa !11
  %635 = fneg double %634
  br label %636

636:                                              ; preds = %633, %631
  %637 = phi double [ %632, %631 ], [ %635, %633 ]
  %638 = fmul double %623, %637
  %639 = load double, ptr %29, align 8, !tbaa !11
  %640 = load ptr, ptr %21, align 8, !tbaa !5
  %641 = load i32, ptr %36, align 4, !tbaa !9
  %642 = sext i32 %641 to i64
  %643 = getelementptr inbounds double, ptr %640, i64 %642
  %644 = load double, ptr %643, align 8, !tbaa !11
  %645 = call double @llvm.fmuladd.f64(double %638, double %639, double %644)
  store double %645, ptr %643, align 8, !tbaa !11
  %646 = load ptr, ptr %19, align 8, !tbaa !5
  %647 = load i32, ptr %646, align 4, !tbaa !9
  %648 = load i32, ptr %37, align 4, !tbaa !9
  %649 = add nsw i32 %648, %647
  store i32 %649, ptr %37, align 4, !tbaa !9
  br label %650

650:                                              ; preds = %636
  %651 = load i32, ptr %34, align 4, !tbaa !9
  %652 = add nsw i32 %651, 1
  store i32 %652, ptr %34, align 4, !tbaa !9
  br label %582, !llvm.loop !18

653:                                              ; preds = %582
  br label %654

654:                                              ; preds = %653, %575
  %655 = load i32, ptr %35, align 4, !tbaa !9
  %656 = icmp ne i32 %655, 0
  br i1 %656, label %693, label %657

657:                                              ; preds = %654
  %658 = load ptr, ptr %21, align 8, !tbaa !5
  %659 = load i32, ptr %36, align 4, !tbaa !9
  %660 = sext i32 %659 to i64
  %661 = getelementptr inbounds double, ptr %658, i64 %660
  %662 = load double, ptr %661, align 8, !tbaa !11
  %663 = fcmp oge double %662, 0.000000e+00
  br i1 %663, label %664, label %674

664:                                              ; preds = %657
  %665 = load double, ptr %32, align 8, !tbaa !11
  %666 = fcmp oge double %665, 0.000000e+00
  br i1 %666, label %667, label %669

667:                                              ; preds = %664
  %668 = load double, ptr %32, align 8, !tbaa !11
  br label %672

669:                                              ; preds = %664
  %670 = load double, ptr %32, align 8, !tbaa !11
  %671 = fneg double %670
  br label %672

672:                                              ; preds = %669, %667
  %673 = phi double [ %668, %667 ], [ %671, %669 ]
  br label %685

674:                                              ; preds = %657
  %675 = load double, ptr %32, align 8, !tbaa !11
  %676 = fcmp oge double %675, 0.000000e+00
  br i1 %676, label %677, label %679

677:                                              ; preds = %674
  %678 = load double, ptr %32, align 8, !tbaa !11
  br label %682

679:                                              ; preds = %674
  %680 = load double, ptr %32, align 8, !tbaa !11
  %681 = fneg double %680
  br label %682

682:                                              ; preds = %679, %677
  %683 = phi double [ %678, %677 ], [ %681, %679 ]
  %684 = fneg double %683
  br label %685

685:                                              ; preds = %682, %672
  %686 = phi double [ %673, %672 ], [ %684, %682 ]
  %687 = load ptr, ptr %21, align 8, !tbaa !5
  %688 = load i32, ptr %36, align 4, !tbaa !9
  %689 = sext i32 %688 to i64
  %690 = getelementptr inbounds double, ptr %687, i64 %689
  %691 = load double, ptr %690, align 8, !tbaa !11
  %692 = fadd double %691, %686
  store double %692, ptr %690, align 8, !tbaa !11
  br label %693

693:                                              ; preds = %685, %654
  %694 = load ptr, ptr %22, align 8, !tbaa !5
  %695 = load i32, ptr %694, align 4, !tbaa !9
  %696 = load i32, ptr %36, align 4, !tbaa !9
  %697 = add nsw i32 %696, %695
  store i32 %697, ptr %36, align 4, !tbaa !9
  br label %698

698:                                              ; preds = %693
  %699 = load i32, ptr %33, align 4, !tbaa !9
  %700 = add nsw i32 %699, 1
  store i32 %700, ptr %33, align 4, !tbaa !9
  br label %531, !llvm.loop !19

701:                                              ; preds = %531
  br label %875

702:                                              ; preds = %524
  %703 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %703, ptr %25, align 4, !tbaa !9
  store i32 1, ptr %33, align 4, !tbaa !9
  br label %704

704:                                              ; preds = %871, %702
  %705 = load i32, ptr %33, align 4, !tbaa !9
  %706 = load i32, ptr %25, align 4, !tbaa !9
  %707 = icmp sle i32 %705, %706
  br i1 %707, label %708, label %874

708:                                              ; preds = %704
  %709 = load ptr, ptr %20, align 8, !tbaa !5
  %710 = load double, ptr %709, align 8, !tbaa !11
  %711 = fcmp oeq double %710, 0.000000e+00
  br i1 %711, label %712, label %717

712:                                              ; preds = %708
  store i32 1, ptr %35, align 4, !tbaa !9
  %713 = load ptr, ptr %21, align 8, !tbaa !5
  %714 = load i32, ptr %36, align 4, !tbaa !9
  %715 = sext i32 %714 to i64
  %716 = getelementptr inbounds double, ptr %713, i64 %715
  store double 0.000000e+00, ptr %716, align 8, !tbaa !11
  br label %748

717:                                              ; preds = %708
  %718 = load ptr, ptr %21, align 8, !tbaa !5
  %719 = load i32, ptr %36, align 4, !tbaa !9
  %720 = sext i32 %719 to i64
  %721 = getelementptr inbounds double, ptr %718, i64 %720
  %722 = load double, ptr %721, align 8, !tbaa !11
  %723 = fcmp oeq double %722, 0.000000e+00
  br i1 %723, label %724, label %725

724:                                              ; preds = %717
  store i32 1, ptr %35, align 4, !tbaa !9
  br label %747

725:                                              ; preds = %717
  store i32 0, ptr %35, align 4, !tbaa !9
  %726 = load ptr, ptr %20, align 8, !tbaa !5
  %727 = load double, ptr %726, align 8, !tbaa !11
  %728 = load ptr, ptr %21, align 8, !tbaa !5
  %729 = load i32, ptr %36, align 4, !tbaa !9
  %730 = sext i32 %729 to i64
  %731 = getelementptr inbounds double, ptr %728, i64 %730
  %732 = load double, ptr %731, align 8, !tbaa !11
  store double %732, ptr %27, align 8, !tbaa !11
  %733 = load double, ptr %27, align 8, !tbaa !11
  %734 = fcmp oge double %733, 0.000000e+00
  br i1 %734, label %735, label %737

735:                                              ; preds = %725
  %736 = load double, ptr %27, align 8, !tbaa !11
  br label %740

737:                                              ; preds = %725
  %738 = load double, ptr %27, align 8, !tbaa !11
  %739 = fneg double %738
  br label %740

740:                                              ; preds = %737, %735
  %741 = phi double [ %736, %735 ], [ %739, %737 ]
  %742 = fmul double %727, %741
  %743 = load ptr, ptr %21, align 8, !tbaa !5
  %744 = load i32, ptr %36, align 4, !tbaa !9
  %745 = sext i32 %744 to i64
  %746 = getelementptr inbounds double, ptr %743, i64 %745
  store double %742, ptr %746, align 8, !tbaa !11
  br label %747

747:                                              ; preds = %740, %724
  br label %748

748:                                              ; preds = %747, %712
  %749 = load ptr, ptr %15, align 8, !tbaa !5
  %750 = load double, ptr %749, align 8, !tbaa !11
  %751 = fcmp une double %750, 0.000000e+00
  br i1 %751, label %752, label %827

752:                                              ; preds = %748
  %753 = load i32, ptr %38, align 4, !tbaa !9
  store i32 %753, ptr %37, align 4, !tbaa !9
  %754 = load i32, ptr %30, align 4, !tbaa !9
  store i32 %754, ptr %26, align 4, !tbaa !9
  store i32 1, ptr %34, align 4, !tbaa !9
  br label %755

755:                                              ; preds = %823, %752
  %756 = load i32, ptr %34, align 4, !tbaa !9
  %757 = load i32, ptr %26, align 4, !tbaa !9
  %758 = icmp sle i32 %756, %757
  br i1 %758, label %759, label %826

759:                                              ; preds = %755
  %760 = load ptr, ptr %16, align 8, !tbaa !5
  %761 = load i32, ptr %34, align 4, !tbaa !9
  %762 = load i32, ptr %33, align 4, !tbaa !9
  %763 = load i32, ptr %23, align 4, !tbaa !9
  %764 = mul nsw i32 %762, %763
  %765 = add nsw i32 %761, %764
  %766 = sext i32 %765 to i64
  %767 = getelementptr inbounds double, ptr %760, i64 %766
  %768 = load double, ptr %767, align 8, !tbaa !11
  store double %768, ptr %27, align 8, !tbaa !11
  %769 = load double, ptr %27, align 8, !tbaa !11
  %770 = fcmp oge double %769, 0.000000e+00
  br i1 %770, label %771, label %773

771:                                              ; preds = %759
  %772 = load double, ptr %27, align 8, !tbaa !11
  br label %776

773:                                              ; preds = %759
  %774 = load double, ptr %27, align 8, !tbaa !11
  %775 = fneg double %774
  br label %776

776:                                              ; preds = %773, %771
  %777 = phi double [ %772, %771 ], [ %775, %773 ]
  store double %777, ptr %29, align 8, !tbaa !11
  %778 = load i32, ptr %35, align 4, !tbaa !9
  %779 = icmp ne i32 %778, 0
  br i1 %779, label %780, label %792

780:                                              ; preds = %776
  %781 = load ptr, ptr %18, align 8, !tbaa !5
  %782 = load i32, ptr %37, align 4, !tbaa !9
  %783 = sext i32 %782 to i64
  %784 = getelementptr inbounds double, ptr %781, i64 %783
  %785 = load double, ptr %784, align 8, !tbaa !11
  %786 = fcmp oeq double %785, 0.000000e+00
  br i1 %786, label %790, label %787

787:                                              ; preds = %780
  %788 = load double, ptr %29, align 8, !tbaa !11
  %789 = fcmp oeq double %788, 0.000000e+00
  br label %790

790:                                              ; preds = %787, %780
  %791 = phi i1 [ true, %780 ], [ %789, %787 ]
  br label %792

792:                                              ; preds = %790, %776
  %793 = phi i1 [ false, %776 ], [ %791, %790 ]
  %794 = zext i1 %793 to i32
  store i32 %794, ptr %35, align 4, !tbaa !9
  %795 = load ptr, ptr %15, align 8, !tbaa !5
  %796 = load double, ptr %795, align 8, !tbaa !11
  %797 = load ptr, ptr %18, align 8, !tbaa !5
  %798 = load i32, ptr %37, align 4, !tbaa !9
  %799 = sext i32 %798 to i64
  %800 = getelementptr inbounds double, ptr %797, i64 %799
  %801 = load double, ptr %800, align 8, !tbaa !11
  store double %801, ptr %27, align 8, !tbaa !11
  %802 = load double, ptr %27, align 8, !tbaa !11
  %803 = fcmp oge double %802, 0.000000e+00
  br i1 %803, label %804, label %806

804:                                              ; preds = %792
  %805 = load double, ptr %27, align 8, !tbaa !11
  br label %809

806:                                              ; preds = %792
  %807 = load double, ptr %27, align 8, !tbaa !11
  %808 = fneg double %807
  br label %809

809:                                              ; preds = %806, %804
  %810 = phi double [ %805, %804 ], [ %808, %806 ]
  %811 = fmul double %796, %810
  %812 = load double, ptr %29, align 8, !tbaa !11
  %813 = load ptr, ptr %21, align 8, !tbaa !5
  %814 = load i32, ptr %36, align 4, !tbaa !9
  %815 = sext i32 %814 to i64
  %816 = getelementptr inbounds double, ptr %813, i64 %815
  %817 = load double, ptr %816, align 8, !tbaa !11
  %818 = call double @llvm.fmuladd.f64(double %811, double %812, double %817)
  store double %818, ptr %816, align 8, !tbaa !11
  %819 = load ptr, ptr %19, align 8, !tbaa !5
  %820 = load i32, ptr %819, align 4, !tbaa !9
  %821 = load i32, ptr %37, align 4, !tbaa !9
  %822 = add nsw i32 %821, %820
  store i32 %822, ptr %37, align 4, !tbaa !9
  br label %823

823:                                              ; preds = %809
  %824 = load i32, ptr %34, align 4, !tbaa !9
  %825 = add nsw i32 %824, 1
  store i32 %825, ptr %34, align 4, !tbaa !9
  br label %755, !llvm.loop !20

826:                                              ; preds = %755
  br label %827

827:                                              ; preds = %826, %748
  %828 = load i32, ptr %35, align 4, !tbaa !9
  %829 = icmp ne i32 %828, 0
  br i1 %829, label %866, label %830

830:                                              ; preds = %827
  %831 = load ptr, ptr %21, align 8, !tbaa !5
  %832 = load i32, ptr %36, align 4, !tbaa !9
  %833 = sext i32 %832 to i64
  %834 = getelementptr inbounds double, ptr %831, i64 %833
  %835 = load double, ptr %834, align 8, !tbaa !11
  %836 = fcmp oge double %835, 0.000000e+00
  br i1 %836, label %837, label %847

837:                                              ; preds = %830
  %838 = load double, ptr %32, align 8, !tbaa !11
  %839 = fcmp oge double %838, 0.000000e+00
  br i1 %839, label %840, label %842

840:                                              ; preds = %837
  %841 = load double, ptr %32, align 8, !tbaa !11
  br label %845

842:                                              ; preds = %837
  %843 = load double, ptr %32, align 8, !tbaa !11
  %844 = fneg double %843
  br label %845

845:                                              ; preds = %842, %840
  %846 = phi double [ %841, %840 ], [ %844, %842 ]
  br label %858

847:                                              ; preds = %830
  %848 = load double, ptr %32, align 8, !tbaa !11
  %849 = fcmp oge double %848, 0.000000e+00
  br i1 %849, label %850, label %852

850:                                              ; preds = %847
  %851 = load double, ptr %32, align 8, !tbaa !11
  br label %855

852:                                              ; preds = %847
  %853 = load double, ptr %32, align 8, !tbaa !11
  %854 = fneg double %853
  br label %855

855:                                              ; preds = %852, %850
  %856 = phi double [ %851, %850 ], [ %854, %852 ]
  %857 = fneg double %856
  br label %858

858:                                              ; preds = %855, %845
  %859 = phi double [ %846, %845 ], [ %857, %855 ]
  %860 = load ptr, ptr %21, align 8, !tbaa !5
  %861 = load i32, ptr %36, align 4, !tbaa !9
  %862 = sext i32 %861 to i64
  %863 = getelementptr inbounds double, ptr %860, i64 %862
  %864 = load double, ptr %863, align 8, !tbaa !11
  %865 = fadd double %864, %859
  store double %865, ptr %863, align 8, !tbaa !11
  br label %866

866:                                              ; preds = %858, %827
  %867 = load ptr, ptr %22, align 8, !tbaa !5
  %868 = load i32, ptr %867, align 4, !tbaa !9
  %869 = load i32, ptr %36, align 4, !tbaa !9
  %870 = add nsw i32 %869, %868
  store i32 %870, ptr %36, align 4, !tbaa !9
  br label %871

871:                                              ; preds = %866
  %872 = load i32, ptr %33, align 4, !tbaa !9
  %873 = add nsw i32 %872, 1
  store i32 %873, ptr %33, align 4, !tbaa !9
  br label %704, !llvm.loop !21

874:                                              ; preds = %704
  br label %875

875:                                              ; preds = %874, %701
  br label %876

876:                                              ; preds = %875, %523
  store i32 1, ptr %40, align 4
  br label %877

877:                                              ; preds = %876, %130, %112
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #4
  ret void
}

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

declare i32 @ilatrans_(ptr noundef) #2

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

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

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

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

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


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

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

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

21:                                               ; preds = %11
  %22 = load i32, ptr %0, align 4, !tbaa !5
  %23 = tail call i32 @ilatrans_(ptr noundef nonnull @.str.1) #5
  %24 = icmp eq i32 %22, %23
  br i1 %24, label %30, label %25

25:                                               ; preds = %21
  %26 = load i32, ptr %0, align 4, !tbaa !5
  %27 = tail call i32 @ilatrans_(ptr noundef nonnull @.str.2) #5
  %28 = icmp eq i32 %26, %27
  br i1 %28, label %30, label %29

29:                                               ; preds = %25
  store i32 1, ptr %12, align 4, !tbaa !5
  br label %.thread

30:                                               ; preds = %25, %21, %11
  %31 = load i32, ptr %1, align 4, !tbaa !5
  %32 = icmp slt i32 %31, 0
  br i1 %32, label %33, label %34

33:                                               ; preds = %30
  store i32 2, ptr %12, align 4, !tbaa !5
  br label %.thread

34:                                               ; preds = %30
  %35 = load i32, ptr %2, align 4, !tbaa !5
  %36 = icmp slt i32 %35, 0
  br i1 %36, label %37, label %38

37:                                               ; preds = %34
  store i32 3, ptr %12, align 4, !tbaa !5
  br label %.thread

38:                                               ; preds = %34
  %39 = load i32, ptr %5, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %31, i32 1)
  %40 = icmp slt i32 %39, %spec.select
  br i1 %40, label %41, label %42

41:                                               ; preds = %38
  store i32 6, ptr %12, align 4, !tbaa !5
  br label %.thread

42:                                               ; preds = %38
  %43 = load i32, ptr %7, align 4, !tbaa !5
  %44 = icmp eq i32 %43, 0
  br i1 %44, label %45, label %46

45:                                               ; preds = %42
  store i32 8, ptr %12, align 4, !tbaa !5
  br label %.thread

46:                                               ; preds = %42
  %47 = load i32, ptr %10, align 4, !tbaa !5
  %48 = icmp eq i32 %47, 0
  br i1 %48, label %49, label %51

49:                                               ; preds = %46
  store i32 11, ptr %12, align 4, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %29, %37, %45, %49, %41, %33
  %50 = call i32 @xerbla_(ptr noundef nonnull @.str.3, ptr noundef nonnull %12, i32 noundef 10) #5
  br label %.loopexit314

51:                                               ; preds = %46
  %52 = icmp eq i32 %31, 0
  %53 = icmp eq i32 %35, 0
  %or.cond = or i1 %52, %53
  br i1 %or.cond, label %.loopexit314, label %54

54:                                               ; preds = %51
  %55 = load double, ptr %3, align 8, !tbaa !9
  %56 = fcmp oeq double %55, 0.000000e+00
  br i1 %56, label %57, label %60

57:                                               ; preds = %54
  %58 = load double, ptr %8, align 8, !tbaa !9
  %59 = fcmp oeq double %58, 1.000000e+00
  br i1 %59, label %.loopexit314, label %60

60:                                               ; preds = %57, %54
  %61 = load i32, ptr %0, align 4, !tbaa !5
  %62 = tail call i32 @ilatrans_(ptr noundef nonnull @.str) #5
  %63 = icmp eq i32 %61, %62
  %. = select i1 %63, ptr %2, ptr %1
  %.310 = select i1 %63, ptr %1, ptr %2
  %.0278 = load i32, ptr %.310, align 4, !tbaa !5
  %.0279 = load i32, ptr %., align 4, !tbaa !5
  %64 = load i32, ptr %7, align 4, !tbaa !5
  %65 = add nsw i32 %.0279, -1
  %66 = mul nsw i32 %65, %64
  %67 = sub nsw i32 1, %66
  %.inv = icmp slt i32 %64, 1
  %.0262 = select i1 %.inv, i32 %67, i32 1
  %68 = load i32, ptr %10, align 4, !tbaa !5
  %69 = add nsw i32 %.0278, -1
  %70 = mul nsw i32 %68, %69
  %71 = sub nsw i32 1, %70
  %.inv312 = icmp slt i32 %68, 1
  %.0 = select i1 %.inv312, i32 %71, i32 1
  %72 = tail call double @dlamch_(ptr noundef nonnull @.str.4) #5
  %73 = load i32, ptr %2, align 4, !tbaa !5
  %74 = add nsw i32 %73, 1
  %75 = sitofp i32 %74 to double
  %76 = fmul double %72, %75
  %77 = load i32, ptr %7, align 4, !tbaa !5
  %78 = icmp eq i32 %77, 1
  %79 = load i32, ptr %0, align 4, !tbaa !5
  %80 = tail call i32 @ilatrans_(ptr noundef nonnull @.str) #5
  %81 = icmp eq i32 %79, %80
  %.not305362 = icmp slt i32 %.0278, 1
  br i1 %78, label %82, label %185

82:                                               ; preds = %60
  br i1 %81, label %.preheader313, label %.preheader317

.preheader317:                                    ; preds = %82
  br i1 %.not305362, label %.loopexit314, label %.lr.ph356

.lr.ph356:                                        ; preds = %.preheader317
  %.not301347 = icmp slt i32 %.0279, 1
  %83 = fcmp oge double %76, 0.000000e+00
  %84 = fneg double %76
  %85 = load i32, ptr %10, align 4, !tbaa !5
  %86 = add i32 %.0279, 1
  %87 = sext i32 %.0 to i64
  %88 = sext i32 %85 to i64
  %89 = sext i32 %13 to i64
  %90 = add nuw i32 %.0278, 1
  %wide.trip.count428 = zext i32 %90 to i64
  %wide.trip.count419 = zext i32 %86 to i64
  br label %142

.preheader313:                                    ; preds = %82
  br i1 %.not305362, label %.loopexit314, label %.lr.ph366

.lr.ph366:                                        ; preds = %.preheader313
  %.not306357 = icmp slt i32 %.0279, 1
  %91 = fcmp oge double %76, 0.000000e+00
  %92 = fneg double %76
  %93 = load i32, ptr %10, align 4, !tbaa !5
  %94 = sext i32 %13 to i64
  %95 = add i32 %.0279, 1
  %96 = sext i32 %.0 to i64
  %97 = sext i32 %93 to i64
  %98 = add nuw i32 %.0278, 1
  %wide.trip.count442 = zext i32 %98 to i64
  %wide.trip.count433 = zext i32 %95 to i64
  br label %99

99:                                               ; preds = %.lr.ph366, %141
  %indvars.iv437 = phi i64 [ 1, %.lr.ph366 ], [ %indvars.iv.next438, %141 ]
  %indvars.iv435 = phi i64 [ %96, %.lr.ph366 ], [ %indvars.iv.next436, %141 ]
  %100 = load double, ptr %8, align 8, !tbaa !9
  %101 = fcmp oeq double %100, 0.000000e+00
  %102 = getelementptr inbounds double, ptr %17, i64 %indvars.iv435
  br i1 %101, label %.sink.split, label %103

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

106:                                              ; preds = %103
  %107 = fcmp oge double %104, 0.000000e+00
  %108 = fneg double %104
  %109 = select i1 %107, double %104, double %108
  %110 = fmul double %100, %109
  br label %.sink.split

.sink.split:                                      ; preds = %99, %106
  %.sink = phi double [ %110, %106 ], [ 0.000000e+00, %99 ]
  %.0266.ph = phi i32 [ 0, %106 ], [ 1, %99 ]
  store double %.sink, ptr %102, align 8, !tbaa !9
  br label %111

111:                                              ; preds = %.sink.split, %103
  %112 = phi double [ %104, %103 ], [ %.sink, %.sink.split ]
  %.0266 = phi i32 [ 1, %103 ], [ %.0266.ph, %.sink.split ]
  %113 = load double, ptr %3, align 8, !tbaa !9
  %114 = fcmp oeq double %113, 0.000000e+00
  %brmerge = select i1 %114, i1 true, i1 %.not306357
  br i1 %brmerge, label %.loopexit, label %.lr.ph360

.lr.ph360:                                        ; preds = %111
  %115 = getelementptr inbounds double, ptr %17, i64 %indvars.iv435
  %invariant.gep467 = getelementptr double, ptr %15, i64 %indvars.iv437
  br label %116

116:                                              ; preds = %.lr.ph360, %._crit_edge450
  %117 = phi double [ %112, %.lr.ph360 ], [ %134, %._crit_edge450 ]
  %indvars.iv430 = phi i64 [ 1, %.lr.ph360 ], [ %indvars.iv.next431, %._crit_edge450 ]
  %.1267359 = phi i32 [ %.0266, %.lr.ph360 ], [ %128, %._crit_edge450 ]
  %118 = mul nsw i64 %indvars.iv430, %94
  %gep468 = getelementptr double, ptr %invariant.gep467, i64 %118
  %119 = load double, ptr %gep468, align 8, !tbaa !9
  %120 = fcmp oge double %119, 0.000000e+00
  %121 = fneg double %119
  %122 = select i1 %120, double %119, double %121
  %.not309 = icmp eq i32 %.1267359, 0
  %.phi.trans.insert451 = getelementptr inbounds double, ptr %16, i64 %indvars.iv430
  %.pre452 = load double, ptr %.phi.trans.insert451, align 8, !tbaa !9
  br i1 %.not309, label %._crit_edge450, label %123

123:                                              ; preds = %116
  %124 = fcmp oeq double %.pre452, 0.000000e+00
  %125 = fcmp oeq double %119, 0.000000e+00
  %126 = select i1 %124, i1 true, i1 %125
  br label %._crit_edge450

._crit_edge450:                                   ; preds = %116, %123
  %127 = phi i1 [ %126, %123 ], [ false, %116 ]
  %128 = zext i1 %127 to i32
  %129 = load double, ptr %3, align 8, !tbaa !9
  %130 = fcmp oge double %.pre452, 0.000000e+00
  %131 = fneg double %.pre452
  %132 = select i1 %130, double %.pre452, double %131
  %133 = fmul double %129, %132
  %134 = tail call double @llvm.fmuladd.f64(double %133, double %122, double %117)
  store double %134, ptr %115, align 8, !tbaa !9
  %indvars.iv.next431 = add nuw nsw i64 %indvars.iv430, 1
  %exitcond434.not = icmp eq i64 %indvars.iv.next431, %wide.trip.count433
  br i1 %exitcond434.not, label %.loopexit, label %116, !llvm.loop !11

.loopexit:                                        ; preds = %._crit_edge450, %111
  %135 = phi double [ %112, %111 ], [ %134, %._crit_edge450 ]
  %.2268 = phi i32 [ %.0266, %111 ], [ %128, %._crit_edge450 ]
  %.not307 = icmp eq i32 %.2268, 0
  br i1 %.not307, label %136, label %141

136:                                              ; preds = %.loopexit
  %137 = getelementptr inbounds double, ptr %17, i64 %indvars.iv435
  %138 = fcmp ult double %135, 0.000000e+00
  %139 = xor i1 %91, %138
  %.367 = select i1 %139, double %76, double %92
  %140 = fadd double %135, %.367
  store double %140, ptr %137, align 8, !tbaa !9
  br label %141

141:                                              ; preds = %136, %.loopexit
  %indvars.iv.next436 = add nsw i64 %indvars.iv435, %97
  %indvars.iv.next438 = add nuw nsw i64 %indvars.iv437, 1
  %exitcond443.not = icmp eq i64 %indvars.iv.next438, %wide.trip.count442
  br i1 %exitcond443.not, label %.loopexit314, label %99, !llvm.loop !13

142:                                              ; preds = %.lr.ph356, %184
  %indvars.iv423 = phi i64 [ 1, %.lr.ph356 ], [ %indvars.iv.next424, %184 ]
  %indvars.iv421 = phi i64 [ %87, %.lr.ph356 ], [ %indvars.iv.next422, %184 ]
  %143 = load double, ptr %8, align 8, !tbaa !9
  %144 = fcmp oeq double %143, 0.000000e+00
  %145 = getelementptr inbounds double, ptr %17, i64 %indvars.iv421
  br i1 %144, label %.sink.split469, label %146

146:                                              ; preds = %142
  %147 = load double, ptr %145, align 8, !tbaa !9
  %148 = fcmp oeq double %147, 0.000000e+00
  br i1 %148, label %154, label %149

149:                                              ; preds = %146
  %150 = fcmp oge double %147, 0.000000e+00
  %151 = fneg double %147
  %152 = select i1 %150, double %147, double %151
  %153 = fmul double %143, %152
  br label %.sink.split469

.sink.split469:                                   ; preds = %142, %149
  %.sink471 = phi double [ %153, %149 ], [ 0.000000e+00, %142 ]
  %.3269.ph = phi i32 [ 0, %149 ], [ 1, %142 ]
  store double %.sink471, ptr %145, align 8, !tbaa !9
  br label %154

154:                                              ; preds = %.sink.split469, %146
  %155 = phi double [ %147, %146 ], [ %.sink471, %.sink.split469 ]
  %.3269 = phi i32 [ 1, %146 ], [ %.3269.ph, %.sink.split469 ]
  %156 = load double, ptr %3, align 8, !tbaa !9
  %157 = fcmp oeq double %156, 0.000000e+00
  %brmerge373 = select i1 %157, i1 true, i1 %.not301347
  br i1 %brmerge373, label %.loopexit316, label %.lr.ph350

.lr.ph350:                                        ; preds = %154
  %158 = mul nsw i64 %indvars.iv423, %89
  %159 = getelementptr inbounds double, ptr %17, i64 %indvars.iv421
  %invariant.gep465 = getelementptr double, ptr %15, i64 %158
  br label %160

160:                                              ; preds = %.lr.ph350, %._crit_edge447
  %161 = phi double [ %155, %.lr.ph350 ], [ %177, %._crit_edge447 ]
  %indvars.iv416 = phi i64 [ 1, %.lr.ph350 ], [ %indvars.iv.next417, %._crit_edge447 ]
  %.4349 = phi i32 [ %.3269, %.lr.ph350 ], [ %171, %._crit_edge447 ]
  %gep466 = getelementptr double, ptr %invariant.gep465, i64 %indvars.iv416
  %162 = load double, ptr %gep466, align 8, !tbaa !9
  %163 = fcmp oge double %162, 0.000000e+00
  %164 = fneg double %162
  %165 = select i1 %163, double %162, double %164
  %.not304 = icmp eq i32 %.4349, 0
  %.phi.trans.insert448 = getelementptr inbounds double, ptr %16, i64 %indvars.iv416
  %.pre449 = load double, ptr %.phi.trans.insert448, align 8, !tbaa !9
  br i1 %.not304, label %._crit_edge447, label %166

166:                                              ; preds = %160
  %167 = fcmp oeq double %.pre449, 0.000000e+00
  %168 = fcmp oeq double %162, 0.000000e+00
  %169 = select i1 %167, i1 true, i1 %168
  br label %._crit_edge447

._crit_edge447:                                   ; preds = %160, %166
  %170 = phi i1 [ %169, %166 ], [ false, %160 ]
  %171 = zext i1 %170 to i32
  %172 = load double, ptr %3, align 8, !tbaa !9
  %173 = fcmp oge double %.pre449, 0.000000e+00
  %174 = fneg double %.pre449
  %175 = select i1 %173, double %.pre449, double %174
  %176 = fmul double %172, %175
  %177 = tail call double @llvm.fmuladd.f64(double %176, double %165, double %161)
  store double %177, ptr %159, align 8, !tbaa !9
  %indvars.iv.next417 = add nuw nsw i64 %indvars.iv416, 1
  %exitcond420.not = icmp eq i64 %indvars.iv.next417, %wide.trip.count419
  br i1 %exitcond420.not, label %.loopexit316, label %160, !llvm.loop !14

.loopexit316:                                     ; preds = %._crit_edge447, %154
  %178 = phi double [ %155, %154 ], [ %177, %._crit_edge447 ]
  %.5 = phi i32 [ %.3269, %154 ], [ %171, %._crit_edge447 ]
  %.not302 = icmp eq i32 %.5, 0
  br i1 %.not302, label %179, label %184

179:                                              ; preds = %.loopexit316
  %180 = getelementptr inbounds double, ptr %17, i64 %indvars.iv421
  %181 = fcmp ult double %178, 0.000000e+00
  %182 = xor i1 %83, %181
  %.368 = select i1 %182, double %76, double %84
  %183 = fadd double %178, %.368
  store double %183, ptr %180, align 8, !tbaa !9
  br label %184

184:                                              ; preds = %179, %.loopexit316
  %indvars.iv.next422 = add nsw i64 %indvars.iv421, %88
  %indvars.iv.next424 = add nuw nsw i64 %indvars.iv423, 1
  %exitcond429.not = icmp eq i64 %indvars.iv.next424, %wide.trip.count428
  br i1 %exitcond429.not, label %.loopexit314, label %142, !llvm.loop !15

185:                                              ; preds = %60
  br i1 %81, label %.preheader321, label %.preheader325

.preheader325:                                    ; preds = %185
  br i1 %.not305362, label %.loopexit314, label %.lr.ph335

.lr.ph335:                                        ; preds = %.preheader325
  %.not292327 = icmp slt i32 %.0279, 1
  %186 = fcmp oge double %76, 0.000000e+00
  %187 = fneg double %76
  %188 = load i32, ptr %10, align 4, !tbaa !5
  %189 = sext i32 %.0262 to i64
  %190 = add i32 %.0279, 1
  %191 = sext i32 %.0 to i64
  %192 = sext i32 %188 to i64
  %193 = sext i32 %13 to i64
  %194 = add nuw i32 %.0278, 1
  %wide.trip.count396 = zext i32 %194 to i64
  %wide.trip.count = zext i32 %190 to i64
  br label %249

.preheader321:                                    ; preds = %185
  br i1 %.not305362, label %.loopexit314, label %.lr.ph346

.lr.ph346:                                        ; preds = %.preheader321
  %.not296336 = icmp slt i32 %.0279, 1
  %195 = fcmp oge double %76, 0.000000e+00
  %196 = fneg double %76
  %197 = load i32, ptr %10, align 4, !tbaa !5
  %198 = sext i32 %.0262 to i64
  %199 = sext i32 %13 to i64
  %200 = add i32 %.0279, 1
  %201 = sext i32 %.0 to i64
  %202 = sext i32 %197 to i64
  %203 = add nuw i32 %.0278, 1
  %wide.trip.count414 = zext i32 %203 to i64
  %wide.trip.count405 = zext i32 %200 to i64
  br label %204

204:                                              ; preds = %.lr.ph346, %248
  %indvars.iv409 = phi i64 [ 1, %.lr.ph346 ], [ %indvars.iv.next410, %248 ]
  %indvars.iv407 = phi i64 [ %201, %.lr.ph346 ], [ %indvars.iv.next408, %248 ]
  %205 = load double, ptr %8, align 8, !tbaa !9
  %206 = fcmp oeq double %205, 0.000000e+00
  %207 = getelementptr inbounds double, ptr %17, i64 %indvars.iv407
  br i1 %206, label %.sink.split472, label %208

208:                                              ; preds = %204
  %209 = load double, ptr %207, align 8, !tbaa !9
  %210 = fcmp oeq double %209, 0.000000e+00
  br i1 %210, label %216, label %211

211:                                              ; preds = %208
  %212 = fcmp oge double %209, 0.000000e+00
  %213 = fneg double %209
  %214 = select i1 %212, double %209, double %213
  %215 = fmul double %205, %214
  br label %.sink.split472

.sink.split472:                                   ; preds = %204, %211
  %.sink474 = phi double [ %215, %211 ], [ 0.000000e+00, %204 ]
  %.6.ph = phi i32 [ 0, %211 ], [ 1, %204 ]
  store double %.sink474, ptr %207, align 8, !tbaa !9
  br label %216

216:                                              ; preds = %.sink.split472, %208
  %217 = phi double [ %209, %208 ], [ %.sink474, %.sink.split472 ]
  %.6 = phi i32 [ 1, %208 ], [ %.6.ph, %.sink.split472 ]
  %218 = load double, ptr %3, align 8, !tbaa !9
  %219 = fcmp oeq double %218, 0.000000e+00
  %brmerge375 = select i1 %219, i1 true, i1 %.not296336
  br i1 %brmerge375, label %.loopexit320, label %.lr.ph340

.lr.ph340:                                        ; preds = %216
  %220 = getelementptr inbounds double, ptr %17, i64 %indvars.iv407
  %221 = load i32, ptr %7, align 4, !tbaa !5
  %222 = sext i32 %221 to i64
  %invariant.gep463 = getelementptr double, ptr %15, i64 %indvars.iv409
  br label %223

223:                                              ; preds = %.lr.ph340, %._crit_edge444
  %224 = phi double [ %217, %.lr.ph340 ], [ %241, %._crit_edge444 ]
  %indvars.iv400 = phi i64 [ 1, %.lr.ph340 ], [ %indvars.iv.next401, %._crit_edge444 ]
  %indvars.iv398 = phi i64 [ %198, %.lr.ph340 ], [ %indvars.iv.next399, %._crit_edge444 ]
  %.7338 = phi i32 [ %.6, %.lr.ph340 ], [ %235, %._crit_edge444 ]
  %225 = mul nsw i64 %indvars.iv400, %199
  %gep464 = getelementptr double, ptr %invariant.gep463, i64 %225
  %226 = load double, ptr %gep464, align 8, !tbaa !9
  %227 = fcmp oge double %226, 0.000000e+00
  %228 = fneg double %226
  %229 = select i1 %227, double %226, double %228
  %.not299 = icmp eq i32 %.7338, 0
  %.phi.trans.insert445 = getelementptr inbounds double, ptr %16, i64 %indvars.iv398
  %.pre446 = load double, ptr %.phi.trans.insert445, align 8, !tbaa !9
  br i1 %.not299, label %._crit_edge444, label %230

230:                                              ; preds = %223
  %231 = fcmp oeq double %.pre446, 0.000000e+00
  %232 = fcmp oeq double %226, 0.000000e+00
  %233 = select i1 %231, i1 true, i1 %232
  br label %._crit_edge444

._crit_edge444:                                   ; preds = %223, %230
  %234 = phi i1 [ %233, %230 ], [ false, %223 ]
  %235 = zext i1 %234 to i32
  %236 = load double, ptr %3, align 8, !tbaa !9
  %237 = fcmp oge double %.pre446, 0.000000e+00
  %238 = fneg double %.pre446
  %239 = select i1 %237, double %.pre446, double %238
  %240 = fmul double %236, %239
  %241 = tail call double @llvm.fmuladd.f64(double %240, double %229, double %224)
  store double %241, ptr %220, align 8, !tbaa !9
  %indvars.iv.next399 = add nsw i64 %indvars.iv398, %222
  %indvars.iv.next401 = add nuw nsw i64 %indvars.iv400, 1
  %exitcond406.not = icmp eq i64 %indvars.iv.next401, %wide.trip.count405
  br i1 %exitcond406.not, label %.loopexit320, label %223, !llvm.loop !16

.loopexit320:                                     ; preds = %._crit_edge444, %216
  %242 = phi double [ %217, %216 ], [ %241, %._crit_edge444 ]
  %.8 = phi i32 [ %.6, %216 ], [ %235, %._crit_edge444 ]
  %.not297 = icmp eq i32 %.8, 0
  br i1 %.not297, label %243, label %248

243:                                              ; preds = %.loopexit320
  %244 = getelementptr inbounds double, ptr %17, i64 %indvars.iv407
  %245 = fcmp ult double %242, 0.000000e+00
  %246 = xor i1 %195, %245
  %.369 = select i1 %246, double %76, double %196
  %247 = fadd double %242, %.369
  store double %247, ptr %244, align 8, !tbaa !9
  br label %248

248:                                              ; preds = %243, %.loopexit320
  %indvars.iv.next408 = add nsw i64 %indvars.iv407, %202
  %indvars.iv.next410 = add nuw nsw i64 %indvars.iv409, 1
  %exitcond415.not = icmp eq i64 %indvars.iv.next410, %wide.trip.count414
  br i1 %exitcond415.not, label %.loopexit314, label %204, !llvm.loop !17

249:                                              ; preds = %.lr.ph335, %293
  %indvars.iv391 = phi i64 [ 1, %.lr.ph335 ], [ %indvars.iv.next392, %293 ]
  %indvars.iv389 = phi i64 [ %191, %.lr.ph335 ], [ %indvars.iv.next390, %293 ]
  %250 = load double, ptr %8, align 8, !tbaa !9
  %251 = fcmp oeq double %250, 0.000000e+00
  %252 = getelementptr inbounds double, ptr %17, i64 %indvars.iv389
  br i1 %251, label %.sink.split475, label %253

253:                                              ; preds = %249
  %254 = load double, ptr %252, align 8, !tbaa !9
  %255 = fcmp oeq double %254, 0.000000e+00
  br i1 %255, label %261, label %256

256:                                              ; preds = %253
  %257 = fcmp oge double %254, 0.000000e+00
  %258 = fneg double %254
  %259 = select i1 %257, double %254, double %258
  %260 = fmul double %250, %259
  br label %.sink.split475

.sink.split475:                                   ; preds = %249, %256
  %.sink477 = phi double [ %260, %256 ], [ 0.000000e+00, %249 ]
  %.9.ph = phi i32 [ 0, %256 ], [ 1, %249 ]
  store double %.sink477, ptr %252, align 8, !tbaa !9
  br label %261

261:                                              ; preds = %.sink.split475, %253
  %262 = phi double [ %254, %253 ], [ %.sink477, %.sink.split475 ]
  %.9 = phi i32 [ 1, %253 ], [ %.9.ph, %.sink.split475 ]
  %263 = load double, ptr %3, align 8, !tbaa !9
  %264 = fcmp oeq double %263, 0.000000e+00
  %brmerge377 = select i1 %264, i1 true, i1 %.not292327
  br i1 %brmerge377, label %.loopexit324, label %.lr.ph

.lr.ph:                                           ; preds = %261
  %265 = mul nsw i64 %indvars.iv391, %193
  %266 = getelementptr inbounds double, ptr %17, i64 %indvars.iv389
  %267 = load i32, ptr %7, align 4, !tbaa !5
  %268 = sext i32 %267 to i64
  %invariant.gep = getelementptr double, ptr %15, i64 %265
  br label %269

269:                                              ; preds = %.lr.ph, %._crit_edge
  %270 = phi double [ %262, %.lr.ph ], [ %286, %._crit_edge ]
  %indvars.iv384 = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next385, %._crit_edge ]
  %indvars.iv = phi i64 [ %189, %.lr.ph ], [ %indvars.iv.next, %._crit_edge ]
  %.10329 = phi i32 [ %.9, %.lr.ph ], [ %280, %._crit_edge ]
  %gep = getelementptr double, ptr %invariant.gep, i64 %indvars.iv384
  %271 = load double, ptr %gep, align 8, !tbaa !9
  %272 = fcmp oge double %271, 0.000000e+00
  %273 = fneg double %271
  %274 = select i1 %272, double %271, double %273
  %.not294 = icmp eq i32 %.10329, 0
  %.phi.trans.insert = getelementptr inbounds double, ptr %16, i64 %indvars.iv
  %.pre = load double, ptr %.phi.trans.insert, align 8, !tbaa !9
  br i1 %.not294, label %._crit_edge, label %275

275:                                              ; preds = %269
  %276 = fcmp oeq double %.pre, 0.000000e+00
  %277 = fcmp oeq double %271, 0.000000e+00
  %278 = select i1 %276, i1 true, i1 %277
  br label %._crit_edge

._crit_edge:                                      ; preds = %269, %275
  %279 = phi i1 [ %278, %275 ], [ false, %269 ]
  %280 = zext i1 %279 to i32
  %281 = load double, ptr %3, align 8, !tbaa !9
  %282 = fcmp oge double %.pre, 0.000000e+00
  %283 = fneg double %.pre
  %284 = select i1 %282, double %.pre, double %283
  %285 = fmul double %281, %284
  %286 = tail call double @llvm.fmuladd.f64(double %285, double %274, double %270)
  store double %286, ptr %266, align 8, !tbaa !9
  %indvars.iv.next = add nsw i64 %indvars.iv, %268
  %indvars.iv.next385 = add nuw nsw i64 %indvars.iv384, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next385, %wide.trip.count
  br i1 %exitcond.not, label %.loopexit324, label %269, !llvm.loop !18

.loopexit324:                                     ; preds = %._crit_edge, %261
  %287 = phi double [ %262, %261 ], [ %286, %._crit_edge ]
  %.11 = phi i32 [ %.9, %261 ], [ %280, %._crit_edge ]
  %.not293 = icmp eq i32 %.11, 0
  br i1 %.not293, label %288, label %293

288:                                              ; preds = %.loopexit324
  %289 = getelementptr inbounds double, ptr %17, i64 %indvars.iv389
  %290 = fcmp ult double %287, 0.000000e+00
  %291 = xor i1 %186, %290
  %.370 = select i1 %291, double %76, double %187
  %292 = fadd double %287, %.370
  store double %292, ptr %289, align 8, !tbaa !9
  br label %293

293:                                              ; preds = %288, %.loopexit324
  %indvars.iv.next390 = add nsw i64 %indvars.iv389, %192
  %indvars.iv.next392 = add nuw nsw i64 %indvars.iv391, 1
  %exitcond397.not = icmp eq i64 %indvars.iv.next392, %wide.trip.count396
  br i1 %exitcond397.not, label %.loopexit314, label %249, !llvm.loop !19

.loopexit314:                                     ; preds = %293, %248, %184, %141, %.preheader325, %.preheader321, %.preheader317, %.preheader313, %51, %57, %.thread
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #5
  ret void
}

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

declare i32 @ilatrans_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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