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

; 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 [7 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i32, align 4
@c_b7 = external hidden global double, align 8
@c__1 = external hidden global i32, align 4
@c_n1 = external hidden global i32, align 4

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

88:                                               ; preds = %14
  %89 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -1, ptr %89, align 4, !tbaa !9
  br label %108

90:                                               ; preds = %14
  %91 = load ptr, ptr %16, align 8, !tbaa !5
  %92 = load i32, ptr %91, align 4, !tbaa !9
  %93 = icmp slt i32 %92, 1
  br i1 %93, label %94, label %96

94:                                               ; preds = %90
  %95 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -2, ptr %95, align 4, !tbaa !9
  br label %107

96:                                               ; preds = %90
  %97 = load ptr, ptr %17, align 8, !tbaa !5
  %98 = load i32, ptr %97, align 4, !tbaa !9
  %99 = icmp slt i32 %98, 0
  br i1 %99, label %104, label %100

100:                                              ; preds = %96
  %101 = load ptr, ptr %17, align 8, !tbaa !5
  %102 = load i32, ptr %101, align 4, !tbaa !9
  %103 = icmp sgt i32 %102, 1
  br i1 %103, label %104, label %106

104:                                              ; preds = %100, %96
  %105 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -3, ptr %105, align 4, !tbaa !9
  br label %106

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

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

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

112:                                              ; preds = %108
  %113 = load ptr, ptr %28, align 8, !tbaa !5
  %114 = load i32, ptr %113, align 4, !tbaa !9
  %115 = sub nsw i32 0, %114
  store i32 %115, ptr %33, align 4, !tbaa !9
  %116 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %33, i32 noundef 6)
  store i32 1, ptr %55, align 4
  br label %360

117:                                              ; preds = %108
  %118 = load ptr, ptr %15, align 8, !tbaa !5
  %119 = load i32, ptr %118, align 4, !tbaa !9
  %120 = load ptr, ptr %16, align 8, !tbaa !5
  %121 = load i32, ptr %120, align 4, !tbaa !9
  %122 = add nsw i32 %119, %121
  %123 = add nsw i32 %122, 1
  store i32 %123, ptr %42, align 4, !tbaa !9
  %124 = load i32, ptr %42, align 4, !tbaa !9
  %125 = load ptr, ptr %17, align 8, !tbaa !5
  %126 = load i32, ptr %125, align 4, !tbaa !9
  %127 = add nsw i32 %124, %126
  store i32 %127, ptr %41, align 4, !tbaa !9
  %128 = load i32, ptr %42, align 4, !tbaa !9
  store i32 %128, ptr %53, align 4, !tbaa !9
  %129 = load i32, ptr %41, align 4, !tbaa !9
  store i32 %129, ptr %38, align 4, !tbaa !9
  store i32 1, ptr %46, align 4, !tbaa !9
  %130 = load i32, ptr %46, align 4, !tbaa !9
  %131 = load i32, ptr %41, align 4, !tbaa !9
  %132 = add nsw i32 %130, %131
  store i32 %132, ptr %47, align 4, !tbaa !9
  %133 = load i32, ptr %47, align 4, !tbaa !9
  %134 = load i32, ptr %42, align 4, !tbaa !9
  %135 = add nsw i32 %133, %134
  store i32 %135, ptr %50, align 4, !tbaa !9
  %136 = load i32, ptr %50, align 4, !tbaa !9
  %137 = load i32, ptr %53, align 4, !tbaa !9
  %138 = load i32, ptr %42, align 4, !tbaa !9
  %139 = mul nsw i32 %137, %138
  %140 = add nsw i32 %136, %139
  store i32 %140, ptr %54, align 4, !tbaa !9
  %141 = load i32, ptr %54, align 4, !tbaa !9
  %142 = load i32, ptr %38, align 4, !tbaa !9
  %143 = load i32, ptr %41, align 4, !tbaa !9
  %144 = mul nsw i32 %142, %143
  %145 = add nsw i32 %141, %144
  store i32 %145, ptr %45, align 4, !tbaa !9
  store i32 1, ptr %52, align 4, !tbaa !9
  %146 = load i32, ptr %52, align 4, !tbaa !9
  %147 = load i32, ptr %42, align 4, !tbaa !9
  %148 = add nsw i32 %146, %147
  store i32 %148, ptr %36, align 4, !tbaa !9
  %149 = load i32, ptr %36, align 4, !tbaa !9
  %150 = load i32, ptr %42, align 4, !tbaa !9
  %151 = add nsw i32 %149, %150
  store i32 %151, ptr %49, align 4, !tbaa !9
  %152 = load i32, ptr %49, align 4, !tbaa !9
  %153 = load i32, ptr %42, align 4, !tbaa !9
  %154 = add nsw i32 %152, %153
  store i32 %154, ptr %37, align 4, !tbaa !9
  %155 = load ptr, ptr %19, align 8, !tbaa !5
  %156 = load double, ptr %155, align 8, !tbaa !11
  %157 = fcmp oge double %156, 0.000000e+00
  br i1 %157, label %158, label %161

158:                                              ; preds = %117
  %159 = load ptr, ptr %19, align 8, !tbaa !5
  %160 = load double, ptr %159, align 8, !tbaa !11
  br label %165

161:                                              ; preds = %117
  %162 = load ptr, ptr %19, align 8, !tbaa !5
  %163 = load double, ptr %162, align 8, !tbaa !11
  %164 = fneg double %163
  br label %165

165:                                              ; preds = %161, %158
  %166 = phi double [ %160, %158 ], [ %164, %161 ]
  store double %166, ptr %34, align 8, !tbaa !11
  %167 = load ptr, ptr %20, align 8, !tbaa !5
  %168 = load double, ptr %167, align 8, !tbaa !11
  %169 = fcmp oge double %168, 0.000000e+00
  br i1 %169, label %170, label %173

170:                                              ; preds = %165
  %171 = load ptr, ptr %20, align 8, !tbaa !5
  %172 = load double, ptr %171, align 8, !tbaa !11
  br label %177

173:                                              ; preds = %165
  %174 = load ptr, ptr %20, align 8, !tbaa !5
  %175 = load double, ptr %174, align 8, !tbaa !11
  %176 = fneg double %175
  br label %177

177:                                              ; preds = %173, %170
  %178 = phi double [ %172, %170 ], [ %176, %173 ]
  store double %178, ptr %35, align 8, !tbaa !11
  %179 = load double, ptr %34, align 8, !tbaa !11
  %180 = load double, ptr %35, align 8, !tbaa !11
  %181 = fcmp oge double %179, %180
  br i1 %181, label %182, label %184

182:                                              ; preds = %177
  %183 = load double, ptr %34, align 8, !tbaa !11
  br label %186

184:                                              ; preds = %177
  %185 = load double, ptr %35, align 8, !tbaa !11
  br label %186

186:                                              ; preds = %184, %182
  %187 = phi double [ %183, %182 ], [ %185, %184 ]
  store double %187, ptr %48, align 8, !tbaa !11
  %188 = load ptr, ptr %18, align 8, !tbaa !5
  %189 = load ptr, ptr %15, align 8, !tbaa !5
  %190 = load i32, ptr %189, align 4, !tbaa !9
  %191 = add nsw i32 %190, 1
  %192 = sext i32 %191 to i64
  %193 = getelementptr inbounds double, ptr %188, i64 %192
  store double 0.000000e+00, ptr %193, align 8, !tbaa !11
  %194 = load i32, ptr %42, align 4, !tbaa !9
  store i32 %194, ptr %33, align 4, !tbaa !9
  store i32 1, ptr %39, align 4, !tbaa !9
  br label %195

195:                                              ; preds = %232, %186
  %196 = load i32, ptr %39, align 4, !tbaa !9
  %197 = load i32, ptr %33, align 4, !tbaa !9
  %198 = icmp sle i32 %196, %197
  br i1 %198, label %199, label %235

199:                                              ; preds = %195
  %200 = load ptr, ptr %18, align 8, !tbaa !5
  %201 = load i32, ptr %39, align 4, !tbaa !9
  %202 = sext i32 %201 to i64
  %203 = getelementptr inbounds double, ptr %200, i64 %202
  %204 = load double, ptr %203, align 8, !tbaa !11
  store double %204, ptr %34, align 8, !tbaa !11
  %205 = load double, ptr %34, align 8, !tbaa !11
  %206 = fcmp oge double %205, 0.000000e+00
  br i1 %206, label %207, label %209

207:                                              ; preds = %199
  %208 = load double, ptr %34, align 8, !tbaa !11
  br label %212

209:                                              ; preds = %199
  %210 = load double, ptr %34, align 8, !tbaa !11
  %211 = fneg double %210
  br label %212

212:                                              ; preds = %209, %207
  %213 = phi double [ %208, %207 ], [ %211, %209 ]
  %214 = load double, ptr %48, align 8, !tbaa !11
  %215 = fcmp ogt double %213, %214
  br i1 %215, label %216, label %231

216:                                              ; preds = %212
  %217 = load ptr, ptr %18, align 8, !tbaa !5
  %218 = load i32, ptr %39, align 4, !tbaa !9
  %219 = sext i32 %218 to i64
  %220 = getelementptr inbounds double, ptr %217, i64 %219
  %221 = load double, ptr %220, align 8, !tbaa !11
  store double %221, ptr %34, align 8, !tbaa !11
  %222 = load double, ptr %34, align 8, !tbaa !11
  %223 = fcmp oge double %222, 0.000000e+00
  br i1 %223, label %224, label %226

224:                                              ; preds = %216
  %225 = load double, ptr %34, align 8, !tbaa !11
  br label %229

226:                                              ; preds = %216
  %227 = load double, ptr %34, align 8, !tbaa !11
  %228 = fneg double %227
  br label %229

229:                                              ; preds = %226, %224
  %230 = phi double [ %225, %224 ], [ %228, %226 ]
  store double %230, ptr %48, align 8, !tbaa !11
  br label %231

231:                                              ; preds = %229, %212
  br label %232

232:                                              ; preds = %231
  %233 = load i32, ptr %39, align 4, !tbaa !9
  %234 = add nsw i32 %233, 1
  store i32 %234, ptr %39, align 4, !tbaa !9
  br label %195, !llvm.loop !13

235:                                              ; preds = %195
  %236 = load ptr, ptr %18, align 8, !tbaa !5
  %237 = getelementptr inbounds double, ptr %236, i64 1
  %238 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.1, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %48, ptr noundef @c_b7, ptr noundef %42, ptr noundef @c__1, ptr noundef %237, ptr noundef %42, ptr noundef %238)
  %239 = load double, ptr %48, align 8, !tbaa !11
  %240 = load ptr, ptr %19, align 8, !tbaa !5
  %241 = load double, ptr %240, align 8, !tbaa !11
  %242 = fdiv double %241, %239
  store double %242, ptr %240, align 8, !tbaa !11
  %243 = load double, ptr %48, align 8, !tbaa !11
  %244 = load ptr, ptr %20, align 8, !tbaa !5
  %245 = load double, ptr %244, align 8, !tbaa !11
  %246 = fdiv double %245, %243
  store double %246, ptr %244, align 8, !tbaa !11
  %247 = load ptr, ptr %15, align 8, !tbaa !5
  %248 = load ptr, ptr %16, align 8, !tbaa !5
  %249 = load ptr, ptr %17, align 8, !tbaa !5
  %250 = load ptr, ptr %18, align 8, !tbaa !5
  %251 = getelementptr inbounds double, ptr %250, i64 1
  %252 = load ptr, ptr %27, align 8, !tbaa !5
  %253 = load i32, ptr %46, align 4, !tbaa !9
  %254 = sext i32 %253 to i64
  %255 = getelementptr inbounds double, ptr %252, i64 %254
  %256 = load ptr, ptr %19, align 8, !tbaa !5
  %257 = load ptr, ptr %20, align 8, !tbaa !5
  %258 = load ptr, ptr %21, align 8, !tbaa !5
  %259 = load i32, ptr %30, align 4, !tbaa !9
  %260 = sext i32 %259 to i64
  %261 = getelementptr inbounds double, ptr %258, i64 %260
  %262 = load ptr, ptr %22, align 8, !tbaa !5
  %263 = load ptr, ptr %23, align 8, !tbaa !5
  %264 = load i32, ptr %32, align 4, !tbaa !9
  %265 = sext i32 %264 to i64
  %266 = getelementptr inbounds double, ptr %263, i64 %265
  %267 = load ptr, ptr %24, align 8, !tbaa !5
  %268 = load ptr, ptr %27, align 8, !tbaa !5
  %269 = load i32, ptr %47, align 4, !tbaa !9
  %270 = sext i32 %269 to i64
  %271 = getelementptr inbounds double, ptr %268, i64 %270
  %272 = load ptr, ptr %27, align 8, !tbaa !5
  %273 = load i32, ptr %50, align 4, !tbaa !9
  %274 = sext i32 %273 to i64
  %275 = getelementptr inbounds double, ptr %272, i64 %274
  %276 = load ptr, ptr %27, align 8, !tbaa !5
  %277 = load i32, ptr %54, align 4, !tbaa !9
  %278 = sext i32 %277 to i64
  %279 = getelementptr inbounds double, ptr %276, i64 %278
  %280 = load ptr, ptr %26, align 8, !tbaa !5
  %281 = load i32, ptr %37, align 4, !tbaa !9
  %282 = sext i32 %281 to i64
  %283 = getelementptr inbounds i32, ptr %280, i64 %282
  %284 = load ptr, ptr %26, align 8, !tbaa !5
  %285 = load i32, ptr %52, align 4, !tbaa !9
  %286 = sext i32 %285 to i64
  %287 = getelementptr inbounds i32, ptr %284, i64 %286
  %288 = load ptr, ptr %26, align 8, !tbaa !5
  %289 = load i32, ptr %36, align 4, !tbaa !9
  %290 = sext i32 %289 to i64
  %291 = getelementptr inbounds i32, ptr %288, i64 %290
  %292 = load ptr, ptr %25, align 8, !tbaa !5
  %293 = getelementptr inbounds i32, ptr %292, i64 1
  %294 = load ptr, ptr %26, align 8, !tbaa !5
  %295 = load i32, ptr %49, align 4, !tbaa !9
  %296 = sext i32 %295 to i64
  %297 = getelementptr inbounds i32, ptr %294, i64 %296
  %298 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dlasd2_(ptr noundef %247, ptr noundef %248, ptr noundef %249, ptr noundef %40, ptr noundef %251, ptr noundef %255, ptr noundef %256, ptr noundef %257, ptr noundef %261, ptr noundef %262, ptr noundef %266, ptr noundef %267, ptr noundef %271, ptr noundef %275, ptr noundef %53, ptr noundef %279, ptr noundef %38, ptr noundef %283, ptr noundef %287, ptr noundef %291, ptr noundef %293, ptr noundef %297, ptr noundef %298)
  %299 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %299, ptr %51, align 4, !tbaa !9
  %300 = load ptr, ptr %15, align 8, !tbaa !5
  %301 = load ptr, ptr %16, align 8, !tbaa !5
  %302 = load ptr, ptr %17, align 8, !tbaa !5
  %303 = load ptr, ptr %18, align 8, !tbaa !5
  %304 = getelementptr inbounds double, ptr %303, i64 1
  %305 = load ptr, ptr %27, align 8, !tbaa !5
  %306 = load i32, ptr %45, align 4, !tbaa !9
  %307 = sext i32 %306 to i64
  %308 = getelementptr inbounds double, ptr %305, i64 %307
  %309 = load ptr, ptr %27, align 8, !tbaa !5
  %310 = load i32, ptr %47, align 4, !tbaa !9
  %311 = sext i32 %310 to i64
  %312 = getelementptr inbounds double, ptr %309, i64 %311
  %313 = load ptr, ptr %21, align 8, !tbaa !5
  %314 = load i32, ptr %30, align 4, !tbaa !9
  %315 = sext i32 %314 to i64
  %316 = getelementptr inbounds double, ptr %313, i64 %315
  %317 = load ptr, ptr %22, align 8, !tbaa !5
  %318 = load ptr, ptr %27, align 8, !tbaa !5
  %319 = load i32, ptr %50, align 4, !tbaa !9
  %320 = sext i32 %319 to i64
  %321 = getelementptr inbounds double, ptr %318, i64 %320
  %322 = load ptr, ptr %23, align 8, !tbaa !5
  %323 = load i32, ptr %32, align 4, !tbaa !9
  %324 = sext i32 %323 to i64
  %325 = getelementptr inbounds double, ptr %322, i64 %324
  %326 = load ptr, ptr %24, align 8, !tbaa !5
  %327 = load ptr, ptr %27, align 8, !tbaa !5
  %328 = load i32, ptr %54, align 4, !tbaa !9
  %329 = sext i32 %328 to i64
  %330 = getelementptr inbounds double, ptr %327, i64 %329
  %331 = load ptr, ptr %26, align 8, !tbaa !5
  %332 = load i32, ptr %36, align 4, !tbaa !9
  %333 = sext i32 %332 to i64
  %334 = getelementptr inbounds i32, ptr %331, i64 %333
  %335 = load ptr, ptr %26, align 8, !tbaa !5
  %336 = load i32, ptr %49, align 4, !tbaa !9
  %337 = sext i32 %336 to i64
  %338 = getelementptr inbounds i32, ptr %335, i64 %337
  %339 = load ptr, ptr %27, align 8, !tbaa !5
  %340 = load i32, ptr %46, align 4, !tbaa !9
  %341 = sext i32 %340 to i64
  %342 = getelementptr inbounds double, ptr %339, i64 %341
  %343 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dlasd3_(ptr noundef %300, ptr noundef %301, ptr noundef %302, ptr noundef %40, ptr noundef %304, ptr noundef %308, ptr noundef %51, ptr noundef %312, ptr noundef %316, ptr noundef %317, ptr noundef %321, ptr noundef %53, ptr noundef %325, ptr noundef %326, ptr noundef %330, ptr noundef %38, ptr noundef %334, ptr noundef %338, ptr noundef %342, ptr noundef %343)
  %344 = load ptr, ptr %28, align 8, !tbaa !5
  %345 = load i32, ptr %344, align 4, !tbaa !9
  %346 = icmp ne i32 %345, 0
  br i1 %346, label %347, label %348

347:                                              ; preds = %235
  store i32 1, ptr %55, align 4
  br label %360

348:                                              ; preds = %235
  %349 = load ptr, ptr %18, align 8, !tbaa !5
  %350 = getelementptr inbounds double, ptr %349, i64 1
  %351 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.1, ptr noundef @c__0, ptr noundef @c__0, ptr noundef @c_b7, ptr noundef %48, ptr noundef %42, ptr noundef @c__1, ptr noundef %350, ptr noundef %42, ptr noundef %351)
  %352 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %352, ptr %43, align 4, !tbaa !9
  %353 = load i32, ptr %42, align 4, !tbaa !9
  %354 = load i32, ptr %40, align 4, !tbaa !9
  %355 = sub nsw i32 %353, %354
  store i32 %355, ptr %44, align 4, !tbaa !9
  %356 = load ptr, ptr %18, align 8, !tbaa !5
  %357 = getelementptr inbounds double, ptr %356, i64 1
  %358 = load ptr, ptr %25, align 8, !tbaa !5
  %359 = getelementptr inbounds i32, ptr %358, i64 1
  call void @dlamrg_(ptr noundef %43, ptr noundef %44, ptr noundef %357, ptr noundef @c__1, ptr noundef @c_n1, ptr noundef %359)
  store i32 1, ptr %55, align 4
  br label %360

360:                                              ; preds = %348, %347, %112
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #3
  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 @xerbla_(ptr noundef, ptr noundef, i32 noundef) #2

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

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

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

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

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

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


; 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 [7 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i32, align 4
@c_b7 = external hidden global double, align 8
@c__1 = external hidden global i32, align 4
@c_n1 = external hidden global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local void @dlasd1_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13) local_unnamed_addr #0 {
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca double, align 8
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #3
  %24 = getelementptr inbounds i8, ptr %3, i64 -8
  %25 = getelementptr inbounds i8, ptr %11, i64 -4
  %26 = getelementptr inbounds i8, ptr %12, i64 -8
  store i32 0, ptr %13, align 4, !tbaa !5
  %27 = load i32, ptr %0, align 4, !tbaa !5
  %28 = icmp slt i32 %27, 1
  br i1 %28, label %.thread, label %29

29:                                               ; preds = %14
  %30 = load i32, ptr %1, align 4, !tbaa !5
  %31 = icmp slt i32 %30, 1
  br i1 %31, label %.thread, label %32

32:                                               ; preds = %29
  %33 = load i32, ptr %2, align 4, !tbaa !5
  %or.cond = icmp ugt i32 %33, 1
  br i1 %or.cond, label %.thread, label %35

.thread:                                          ; preds = %32, %29, %14
  %.sink = phi i32 [ -1, %14 ], [ -2, %29 ], [ -3, %32 ]
  %.neg = phi i32 [ 1, %14 ], [ 2, %29 ], [ 3, %32 ]
  store i32 %.sink, ptr %13, align 4, !tbaa !5
  store i32 %.neg, ptr %15, align 4, !tbaa !5
  %34 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %15, i32 noundef 6) #3
  br label %109

35:                                               ; preds = %32
  %36 = add nuw i32 %30, %27
  %37 = add nuw nsw i32 %36, 1
  store i32 %37, ptr %18, align 4, !tbaa !5
  %38 = add nsw i32 %37, %33
  store i32 %37, ptr %23, align 4, !tbaa !5
  store i32 %38, ptr %16, align 4, !tbaa !5
  %39 = add nsw i32 %38, 1
  %40 = add nsw i32 %39, %37
  %41 = mul nsw i32 %37, %37
  %42 = add nsw i32 %40, %41
  %43 = mul nsw i32 %38, %38
  %44 = add nsw i32 %42, %43
  %45 = add i32 %36, 2
  %46 = add nsw i32 %45, %37
  %47 = add nsw i32 %46, %37
  %48 = load double, ptr %4, align 8, !tbaa !9
  %49 = fcmp ult double %48, 0.000000e+00
  %50 = fneg double %48
  %51 = select i1 %49, double %50, double %48
  %52 = load double, ptr %5, align 8, !tbaa !9
  %53 = fcmp ult double %52, 0.000000e+00
  %54 = fneg double %52
  %55 = select i1 %53, double %54, double %52
  %56 = fcmp oge double %51, %55
  %57 = select i1 %56, double %51, double %55
  %58 = zext nneg i32 %27 to i64
  %59 = getelementptr double, ptr %24, i64 %58
  %60 = getelementptr i8, ptr %59, i64 8
  store double 0.000000e+00, ptr %60, align 8, !tbaa !9
  %.not128131 = icmp slt i32 %36, 0
  br i1 %.not128131, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %35
  %wide.trip.count = zext i32 %45 to i64
  %61 = add nsw i64 %wide.trip.count, -1
  %xtraiter = and i64 %61, 1
  %unroll_iter = and i64 %61, -2
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader
  %indvars.iv = phi i64 [ 1, %.lr.ph.preheader ], [ %indvars.iv.next.1, %.lr.ph ]
  %62 = phi double [ %57, %.lr.ph.preheader ], [ %76, %.lr.ph ]
  %niter = phi i64 [ 0, %.lr.ph.preheader ], [ %niter.next.1, %.lr.ph ]
  %63 = getelementptr inbounds double, ptr %24, i64 %indvars.iv
  %64 = load double, ptr %63, align 8, !tbaa !9
  %65 = fcmp oge double %64, 0.000000e+00
  %66 = fneg double %64
  %67 = select i1 %65, double %64, double %66
  %68 = fcmp ogt double %67, %62
  %69 = select i1 %68, double %67, double %62
  %70 = getelementptr double, ptr %3, i64 %indvars.iv
  %71 = load double, ptr %70, align 8, !tbaa !9
  %72 = fcmp oge double %71, 0.000000e+00
  %73 = fneg double %71
  %74 = select i1 %72, double %71, double %73
  %75 = fcmp ogt double %74, %69
  %76 = select i1 %75, double %74, double %69
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph, !llvm.loop !11

._crit_edge.loopexit.unr-lcssa:                   ; preds = %.lr.ph
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph.epil

.lr.ph.epil:                                      ; preds = %._crit_edge.loopexit.unr-lcssa
  %77 = getelementptr inbounds double, ptr %24, i64 %indvars.iv.next.1
  %78 = load double, ptr %77, align 8, !tbaa !9
  %79 = fcmp oge double %78, 0.000000e+00
  %80 = fneg double %78
  %81 = select i1 %79, double %78, double %80
  %82 = fcmp ogt double %81, %76
  %83 = select i1 %82, double %81, double %76
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.epil, %._crit_edge.loopexit.unr-lcssa, %35
  %.lcssa = phi double [ %57, %35 ], [ %76, %._crit_edge.loopexit.unr-lcssa ], [ %83, %.lr.ph.epil ]
  store double %.lcssa, ptr %21, align 8, !tbaa !9
  call void @dlascl_(ptr noundef nonnull @.str.1, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %21, ptr noundef nonnull @c_b7, ptr noundef nonnull %18, ptr noundef nonnull @c__1, ptr noundef nonnull %3, ptr noundef nonnull %18, ptr noundef nonnull %13) #3
  %84 = load double, ptr %21, align 8, !tbaa !9
  %85 = load double, ptr %4, align 8, !tbaa !9
  %86 = fdiv double %85, %84
  store double %86, ptr %4, align 8, !tbaa !9
  %87 = load double, ptr %5, align 8, !tbaa !9
  %88 = fdiv double %87, %84
  store double %88, ptr %5, align 8, !tbaa !9
  %89 = sext i32 %39 to i64
  %90 = getelementptr inbounds double, ptr %26, i64 %89
  %91 = sext i32 %40 to i64
  %92 = getelementptr inbounds double, ptr %26, i64 %91
  %93 = sext i32 %42 to i64
  %94 = getelementptr inbounds double, ptr %26, i64 %93
  %95 = sext i32 %47 to i64
  %96 = getelementptr inbounds i32, ptr %25, i64 %95
  %97 = sext i32 %45 to i64
  %98 = getelementptr inbounds i32, ptr %25, i64 %97
  %99 = sext i32 %46 to i64
  %100 = getelementptr inbounds i32, ptr %25, i64 %99
  call void @dlasd2_(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull %17, ptr noundef nonnull %3, ptr noundef %12, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef nonnull %90, ptr noundef nonnull %92, ptr noundef nonnull %23, ptr noundef nonnull %94, ptr noundef nonnull %16, ptr noundef nonnull %96, ptr noundef %11, ptr noundef nonnull %98, ptr noundef %10, ptr noundef nonnull %100, ptr noundef nonnull %13) #3
  %101 = load i32, ptr %17, align 4, !tbaa !5
  store i32 %101, ptr %22, align 4, !tbaa !5
  %102 = sext i32 %44 to i64
  %103 = getelementptr inbounds double, ptr %26, i64 %102
  call void @dlasd3_(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull %17, ptr noundef nonnull %3, ptr noundef nonnull %103, ptr noundef nonnull %22, ptr noundef nonnull %90, ptr noundef %6, ptr noundef %7, ptr noundef nonnull %92, ptr noundef nonnull %23, ptr noundef %8, ptr noundef %9, ptr noundef nonnull %94, ptr noundef nonnull %16, ptr noundef nonnull %98, ptr noundef nonnull %100, ptr noundef %12, ptr noundef nonnull %13) #3
  %104 = load i32, ptr %13, align 4, !tbaa !5
  %.not129 = icmp eq i32 %104, 0
  br i1 %.not129, label %105, label %109

105:                                              ; preds = %._crit_edge
  call void @dlascl_(ptr noundef nonnull @.str.1, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull @c_b7, ptr noundef nonnull %21, ptr noundef nonnull %18, ptr noundef nonnull @c__1, ptr noundef nonnull %3, ptr noundef nonnull %18, ptr noundef nonnull %13) #3
  %106 = load i32, ptr %17, align 4, !tbaa !5
  store i32 %106, ptr %19, align 4, !tbaa !5
  %107 = load i32, ptr %18, align 4, !tbaa !5
  %108 = sub nsw i32 %107, %106
  store i32 %108, ptr %20, align 4, !tbaa !5
  call void @dlamrg_(ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef nonnull %3, ptr noundef nonnull @c__1, ptr noundef nonnull @c_n1, ptr noundef %10) #3
  br label %109

109:                                              ; preds = %._crit_edge, %105, %.thread
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #3
  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 @xerbla_(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

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

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

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

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

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

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 = { 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"}


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