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

; 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__2 = external hidden global i32, align 4

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

93:                                               ; preds = %12
  %94 = load ptr, ptr %24, align 8, !tbaa !5
  store i32 -1, ptr %94, align 4, !tbaa !9
  br label %106

95:                                               ; preds = %12
  %96 = load ptr, ptr %14, align 8, !tbaa !5
  %97 = load i32, ptr %96, align 4, !tbaa !9
  %98 = icmp slt i32 %97, 0
  br i1 %98, label %103, label %99

99:                                               ; preds = %95
  %100 = load ptr, ptr %14, align 8, !tbaa !5
  %101 = load i32, ptr %100, align 4, !tbaa !9
  %102 = icmp sgt i32 %101, 1
  br i1 %102, label %103, label %105

103:                                              ; preds = %99, %95
  %104 = load ptr, ptr %24, align 8, !tbaa !5
  store i32 -2, ptr %104, align 4, !tbaa !9
  br label %105

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

106:                                              ; preds = %105, %93
  %107 = load ptr, ptr %13, align 8, !tbaa !5
  %108 = load i32, ptr %107, align 4, !tbaa !9
  %109 = load ptr, ptr %14, align 8, !tbaa !5
  %110 = load i32, ptr %109, align 4, !tbaa !9
  %111 = add nsw i32 %108, %110
  store i32 %111, ptr %36, align 4, !tbaa !9
  %112 = load ptr, ptr %18, align 8, !tbaa !5
  %113 = load i32, ptr %112, align 4, !tbaa !9
  %114 = load ptr, ptr %13, align 8, !tbaa !5
  %115 = load i32, ptr %114, align 4, !tbaa !9
  %116 = icmp slt i32 %113, %115
  br i1 %116, label %117, label %119

117:                                              ; preds = %106
  %118 = load ptr, ptr %24, align 8, !tbaa !5
  store i32 -6, ptr %118, align 4, !tbaa !9
  br label %134

119:                                              ; preds = %106
  %120 = load ptr, ptr %20, align 8, !tbaa !5
  %121 = load i32, ptr %120, align 4, !tbaa !9
  %122 = load i32, ptr %36, align 4, !tbaa !9
  %123 = icmp slt i32 %121, %122
  br i1 %123, label %124, label %126

124:                                              ; preds = %119
  %125 = load ptr, ptr %24, align 8, !tbaa !5
  store i32 -8, ptr %125, align 4, !tbaa !9
  br label %133

126:                                              ; preds = %119
  %127 = load ptr, ptr %21, align 8, !tbaa !5
  %128 = load i32, ptr %127, align 4, !tbaa !9
  %129 = icmp slt i32 %128, 3
  br i1 %129, label %130, label %132

130:                                              ; preds = %126
  %131 = load ptr, ptr %24, align 8, !tbaa !5
  store i32 -9, ptr %131, align 4, !tbaa !9
  br label %132

132:                                              ; preds = %130, %126
  br label %133

133:                                              ; preds = %132, %124
  br label %134

134:                                              ; preds = %133, %117
  %135 = load ptr, ptr %24, align 8, !tbaa !5
  %136 = load i32, ptr %135, align 4, !tbaa !9
  %137 = icmp ne i32 %136, 0
  br i1 %137, label %138, label %143

138:                                              ; preds = %134
  %139 = load ptr, ptr %24, align 8, !tbaa !5
  %140 = load i32, ptr %139, align 4, !tbaa !9
  %141 = sub nsw i32 0, %140
  store i32 %141, ptr %29, align 4, !tbaa !9
  %142 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %29, i32 noundef 6)
  store i32 1, ptr %60, align 4
  br label %514

143:                                              ; preds = %134
  %144 = load ptr, ptr %13, align 8, !tbaa !5
  %145 = load i32, ptr %144, align 4, !tbaa !9
  %146 = load ptr, ptr %21, align 8, !tbaa !5
  %147 = load i32, ptr %146, align 4, !tbaa !9
  %148 = icmp sle i32 %145, %147
  br i1 %148, label %149, label %175

149:                                              ; preds = %143
  %150 = load ptr, ptr %14, align 8, !tbaa !5
  %151 = load ptr, ptr %13, align 8, !tbaa !5
  %152 = load ptr, ptr %13, align 8, !tbaa !5
  %153 = load ptr, ptr %15, align 8, !tbaa !5
  %154 = getelementptr inbounds double, ptr %153, i64 1
  %155 = load ptr, ptr %16, align 8, !tbaa !5
  %156 = getelementptr inbounds double, ptr %155, i64 1
  %157 = load ptr, ptr %19, align 8, !tbaa !5
  %158 = load i32, ptr %28, align 4, !tbaa !9
  %159 = sext i32 %158 to i64
  %160 = getelementptr inbounds double, ptr %157, i64 %159
  %161 = load ptr, ptr %20, align 8, !tbaa !5
  %162 = load ptr, ptr %17, align 8, !tbaa !5
  %163 = load i32, ptr %26, align 4, !tbaa !9
  %164 = sext i32 %163 to i64
  %165 = getelementptr inbounds double, ptr %162, i64 %164
  %166 = load ptr, ptr %18, align 8, !tbaa !5
  %167 = load ptr, ptr %17, align 8, !tbaa !5
  %168 = load i32, ptr %26, align 4, !tbaa !9
  %169 = sext i32 %168 to i64
  %170 = getelementptr inbounds double, ptr %167, i64 %169
  %171 = load ptr, ptr %18, align 8, !tbaa !5
  %172 = load ptr, ptr %23, align 8, !tbaa !5
  %173 = getelementptr inbounds double, ptr %172, i64 1
  %174 = load ptr, ptr %24, align 8, !tbaa !5
  call void @dlasdq_(ptr noundef @.str.1, ptr noundef %150, ptr noundef %151, ptr noundef %36, ptr noundef %152, ptr noundef @c__0, ptr noundef %154, ptr noundef %156, ptr noundef %160, ptr noundef %161, ptr noundef %165, ptr noundef %166, ptr noundef %170, ptr noundef %171, ptr noundef %173, ptr noundef %174)
  store i32 1, ptr %60, align 4
  br label %514

175:                                              ; preds = %143
  store i32 1, ptr %38, align 4, !tbaa !9
  %176 = load i32, ptr %38, align 4, !tbaa !9
  %177 = load ptr, ptr %13, align 8, !tbaa !5
  %178 = load i32, ptr %177, align 4, !tbaa !9
  %179 = add nsw i32 %176, %178
  store i32 %179, ptr %39, align 4, !tbaa !9
  %180 = load i32, ptr %39, align 4, !tbaa !9
  %181 = load ptr, ptr %13, align 8, !tbaa !5
  %182 = load i32, ptr %181, align 4, !tbaa !9
  %183 = add nsw i32 %180, %182
  store i32 %183, ptr %41, align 4, !tbaa !9
  %184 = load i32, ptr %41, align 4, !tbaa !9
  %185 = load ptr, ptr %13, align 8, !tbaa !5
  %186 = load i32, ptr %185, align 4, !tbaa !9
  %187 = add nsw i32 %184, %186
  store i32 %187, ptr %32, align 4, !tbaa !9
  %188 = load i32, ptr %32, align 4, !tbaa !9
  %189 = load ptr, ptr %13, align 8, !tbaa !5
  %190 = load i32, ptr %189, align 4, !tbaa !9
  %191 = add nsw i32 %188, %190
  store i32 %191, ptr %55, align 4, !tbaa !9
  %192 = load ptr, ptr %13, align 8, !tbaa !5
  %193 = load ptr, ptr %22, align 8, !tbaa !5
  %194 = load i32, ptr %38, align 4, !tbaa !9
  %195 = sext i32 %194 to i64
  %196 = getelementptr inbounds i32, ptr %193, i64 %195
  %197 = load ptr, ptr %22, align 8, !tbaa !5
  %198 = load i32, ptr %39, align 4, !tbaa !9
  %199 = sext i32 %198 to i64
  %200 = getelementptr inbounds i32, ptr %197, i64 %199
  %201 = load ptr, ptr %22, align 8, !tbaa !5
  %202 = load i32, ptr %41, align 4, !tbaa !9
  %203 = sext i32 %202 to i64
  %204 = getelementptr inbounds i32, ptr %201, i64 %203
  %205 = load ptr, ptr %21, align 8, !tbaa !5
  call void @dlasdt_(ptr noundef %192, ptr noundef %33, ptr noundef %47, ptr noundef %196, ptr noundef %200, ptr noundef %204, ptr noundef %205)
  %206 = load i32, ptr %47, align 4, !tbaa !9
  %207 = add nsw i32 %206, 1
  %208 = sdiv i32 %207, 2
  store i32 %208, ptr %57, align 4, !tbaa !9
  store i32 0, ptr %52, align 4, !tbaa !9
  %209 = load i32, ptr %47, align 4, !tbaa !9
  store i32 %209, ptr %29, align 4, !tbaa !9
  %210 = load i32, ptr %57, align 4, !tbaa !9
  store i32 %210, ptr %34, align 4, !tbaa !9
  br label %211

211:                                              ; preds = %387, %175
  %212 = load i32, ptr %34, align 4, !tbaa !9
  %213 = load i32, ptr %29, align 4, !tbaa !9
  %214 = icmp sle i32 %212, %213
  br i1 %214, label %215, label %390

215:                                              ; preds = %211
  %216 = load i32, ptr %34, align 4, !tbaa !9
  %217 = sub nsw i32 %216, 1
  store i32 %217, ptr %44, align 4, !tbaa !9
  %218 = load ptr, ptr %22, align 8, !tbaa !5
  %219 = load i32, ptr %38, align 4, !tbaa !9
  %220 = load i32, ptr %44, align 4, !tbaa !9
  %221 = add nsw i32 %219, %220
  %222 = sext i32 %221 to i64
  %223 = getelementptr inbounds i32, ptr %218, i64 %222
  %224 = load i32, ptr %223, align 4, !tbaa !9
  store i32 %224, ptr %45, align 4, !tbaa !9
  %225 = load ptr, ptr %22, align 8, !tbaa !5
  %226 = load i32, ptr %39, align 4, !tbaa !9
  %227 = load i32, ptr %44, align 4, !tbaa !9
  %228 = add nsw i32 %226, %227
  %229 = sext i32 %228 to i64
  %230 = getelementptr inbounds i32, ptr %225, i64 %229
  %231 = load i32, ptr %230, align 4, !tbaa !9
  store i32 %231, ptr %49, align 4, !tbaa !9
  %232 = load i32, ptr %49, align 4, !tbaa !9
  %233 = add nsw i32 %232, 1
  store i32 %233, ptr %58, align 4, !tbaa !9
  %234 = load ptr, ptr %22, align 8, !tbaa !5
  %235 = load i32, ptr %41, align 4, !tbaa !9
  %236 = load i32, ptr %44, align 4, !tbaa !9
  %237 = add nsw i32 %235, %236
  %238 = sext i32 %237 to i64
  %239 = getelementptr inbounds i32, ptr %234, i64 %238
  %240 = load i32, ptr %239, align 4, !tbaa !9
  store i32 %240, ptr %50, align 4, !tbaa !9
  %241 = load i32, ptr %50, align 4, !tbaa !9
  %242 = add nsw i32 %241, 1
  store i32 %242, ptr %59, align 4, !tbaa !9
  %243 = load i32, ptr %45, align 4, !tbaa !9
  %244 = load i32, ptr %49, align 4, !tbaa !9
  %245 = sub nsw i32 %243, %244
  store i32 %245, ptr %53, align 4, !tbaa !9
  %246 = load i32, ptr %45, align 4, !tbaa !9
  %247 = add nsw i32 %246, 1
  store i32 %247, ptr %54, align 4, !tbaa !9
  store i32 1, ptr %43, align 4, !tbaa !9
  %248 = load ptr, ptr %15, align 8, !tbaa !5
  %249 = load i32, ptr %53, align 4, !tbaa !9
  %250 = sext i32 %249 to i64
  %251 = getelementptr inbounds double, ptr %248, i64 %250
  %252 = load ptr, ptr %16, align 8, !tbaa !5
  %253 = load i32, ptr %53, 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 i32, ptr %53, align 4, !tbaa !9
  %258 = load i32, ptr %53, align 4, !tbaa !9
  %259 = load i32, ptr %27, align 4, !tbaa !9
  %260 = mul nsw i32 %258, %259
  %261 = add nsw i32 %257, %260
  %262 = sext i32 %261 to i64
  %263 = getelementptr inbounds double, ptr %256, i64 %262
  %264 = load ptr, ptr %20, align 8, !tbaa !5
  %265 = load ptr, ptr %17, align 8, !tbaa !5
  %266 = load i32, ptr %53, align 4, !tbaa !9
  %267 = load i32, ptr %53, align 4, !tbaa !9
  %268 = load i32, ptr %25, align 4, !tbaa !9
  %269 = mul nsw i32 %267, %268
  %270 = add nsw i32 %266, %269
  %271 = sext i32 %270 to i64
  %272 = getelementptr inbounds double, ptr %265, i64 %271
  %273 = load ptr, ptr %18, align 8, !tbaa !5
  %274 = load ptr, ptr %17, align 8, !tbaa !5
  %275 = load i32, ptr %53, align 4, !tbaa !9
  %276 = load i32, ptr %53, align 4, !tbaa !9
  %277 = load i32, ptr %25, align 4, !tbaa !9
  %278 = mul nsw i32 %276, %277
  %279 = add nsw i32 %275, %278
  %280 = sext i32 %279 to i64
  %281 = getelementptr inbounds double, ptr %274, i64 %280
  %282 = load ptr, ptr %18, align 8, !tbaa !5
  %283 = load ptr, ptr %23, align 8, !tbaa !5
  %284 = getelementptr inbounds double, ptr %283, i64 1
  %285 = load ptr, ptr %24, align 8, !tbaa !5
  call void @dlasdq_(ptr noundef @.str.1, ptr noundef %43, ptr noundef %49, ptr noundef %58, ptr noundef %49, ptr noundef %52, ptr noundef %251, ptr noundef %255, ptr noundef %263, ptr noundef %264, ptr noundef %272, ptr noundef %273, ptr noundef %281, ptr noundef %282, ptr noundef %284, ptr noundef %285)
  %286 = load ptr, ptr %24, align 8, !tbaa !5
  %287 = load i32, ptr %286, align 4, !tbaa !9
  %288 = icmp ne i32 %287, 0
  br i1 %288, label %289, label %290

289:                                              ; preds = %215
  store i32 1, ptr %60, align 4
  br label %514

290:                                              ; preds = %215
  %291 = load i32, ptr %32, align 4, !tbaa !9
  %292 = load i32, ptr %53, align 4, !tbaa !9
  %293 = add nsw i32 %291, %292
  %294 = sub nsw i32 %293, 2
  store i32 %294, ptr %42, align 4, !tbaa !9
  %295 = load i32, ptr %49, align 4, !tbaa !9
  store i32 %295, ptr %30, align 4, !tbaa !9
  store i32 1, ptr %35, align 4, !tbaa !9
  br label %296

296:                                              ; preds = %308, %290
  %297 = load i32, ptr %35, align 4, !tbaa !9
  %298 = load i32, ptr %30, align 4, !tbaa !9
  %299 = icmp sle i32 %297, %298
  br i1 %299, label %300, label %311

300:                                              ; preds = %296
  %301 = load i32, ptr %35, align 4, !tbaa !9
  %302 = load ptr, ptr %22, align 8, !tbaa !5
  %303 = load i32, ptr %42, align 4, !tbaa !9
  %304 = load i32, ptr %35, align 4, !tbaa !9
  %305 = add nsw i32 %303, %304
  %306 = sext i32 %305 to i64
  %307 = getelementptr inbounds i32, ptr %302, i64 %306
  store i32 %301, ptr %307, align 4, !tbaa !9
  br label %308

308:                                              ; preds = %300
  %309 = load i32, ptr %35, align 4, !tbaa !9
  %310 = add nsw i32 %309, 1
  store i32 %310, ptr %35, align 4, !tbaa !9
  br label %296, !llvm.loop !11

311:                                              ; preds = %296
  %312 = load i32, ptr %34, align 4, !tbaa !9
  %313 = load i32, ptr %47, align 4, !tbaa !9
  %314 = icmp eq i32 %312, %313
  br i1 %314, label %315, label %318

315:                                              ; preds = %311
  %316 = load ptr, ptr %14, align 8, !tbaa !5
  %317 = load i32, ptr %316, align 4, !tbaa !9
  store i32 %317, ptr %43, align 4, !tbaa !9
  br label %319

318:                                              ; preds = %311
  store i32 1, ptr %43, align 4, !tbaa !9
  br label %319

319:                                              ; preds = %318, %315
  %320 = load i32, ptr %50, align 4, !tbaa !9
  %321 = load i32, ptr %43, align 4, !tbaa !9
  %322 = add nsw i32 %320, %321
  store i32 %322, ptr %59, align 4, !tbaa !9
  %323 = load ptr, ptr %15, align 8, !tbaa !5
  %324 = load i32, ptr %54, align 4, !tbaa !9
  %325 = sext i32 %324 to i64
  %326 = getelementptr inbounds double, ptr %323, i64 %325
  %327 = load ptr, ptr %16, 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 %19, align 8, !tbaa !5
  %332 = load i32, ptr %54, align 4, !tbaa !9
  %333 = load i32, ptr %54, align 4, !tbaa !9
  %334 = load i32, ptr %27, align 4, !tbaa !9
  %335 = mul nsw i32 %333, %334
  %336 = add nsw i32 %332, %335
  %337 = sext i32 %336 to i64
  %338 = getelementptr inbounds double, ptr %331, i64 %337
  %339 = load ptr, ptr %20, align 8, !tbaa !5
  %340 = load ptr, ptr %17, align 8, !tbaa !5
  %341 = load i32, ptr %54, align 4, !tbaa !9
  %342 = load i32, ptr %54, align 4, !tbaa !9
  %343 = load i32, ptr %25, align 4, !tbaa !9
  %344 = mul nsw i32 %342, %343
  %345 = add nsw i32 %341, %344
  %346 = sext i32 %345 to i64
  %347 = getelementptr inbounds double, ptr %340, i64 %346
  %348 = load ptr, ptr %18, align 8, !tbaa !5
  %349 = load ptr, ptr %17, align 8, !tbaa !5
  %350 = load i32, ptr %54, align 4, !tbaa !9
  %351 = load i32, ptr %54, align 4, !tbaa !9
  %352 = load i32, ptr %25, align 4, !tbaa !9
  %353 = mul nsw i32 %351, %352
  %354 = add nsw i32 %350, %353
  %355 = sext i32 %354 to i64
  %356 = getelementptr inbounds double, ptr %349, i64 %355
  %357 = load ptr, ptr %18, align 8, !tbaa !5
  %358 = load ptr, ptr %23, align 8, !tbaa !5
  %359 = getelementptr inbounds double, ptr %358, i64 1
  %360 = load ptr, ptr %24, align 8, !tbaa !5
  call void @dlasdq_(ptr noundef @.str.1, ptr noundef %43, ptr noundef %50, ptr noundef %59, ptr noundef %50, ptr noundef %52, ptr noundef %326, ptr noundef %330, ptr noundef %338, ptr noundef %339, ptr noundef %347, ptr noundef %348, ptr noundef %356, ptr noundef %357, ptr noundef %359, ptr noundef %360)
  %361 = load ptr, ptr %24, align 8, !tbaa !5
  %362 = load i32, ptr %361, align 4, !tbaa !9
  %363 = icmp ne i32 %362, 0
  br i1 %363, label %364, label %365

364:                                              ; preds = %319
  store i32 1, ptr %60, align 4
  br label %514

365:                                              ; preds = %319
  %366 = load i32, ptr %32, align 4, !tbaa !9
  %367 = load i32, ptr %45, align 4, !tbaa !9
  %368 = add nsw i32 %366, %367
  store i32 %368, ptr %42, align 4, !tbaa !9
  %369 = load i32, ptr %50, align 4, !tbaa !9
  store i32 %369, ptr %30, align 4, !tbaa !9
  store i32 1, ptr %35, align 4, !tbaa !9
  br label %370

370:                                              ; preds = %383, %365
  %371 = load i32, ptr %35, align 4, !tbaa !9
  %372 = load i32, ptr %30, align 4, !tbaa !9
  %373 = icmp sle i32 %371, %372
  br i1 %373, label %374, label %386

374:                                              ; preds = %370
  %375 = load i32, ptr %35, align 4, !tbaa !9
  %376 = load ptr, ptr %22, align 8, !tbaa !5
  %377 = load i32, ptr %42, align 4, !tbaa !9
  %378 = load i32, ptr %35, align 4, !tbaa !9
  %379 = add nsw i32 %377, %378
  %380 = sub nsw i32 %379, 1
  %381 = sext i32 %380 to i64
  %382 = getelementptr inbounds i32, ptr %376, i64 %381
  store i32 %375, ptr %382, align 4, !tbaa !9
  br label %383

383:                                              ; preds = %374
  %384 = load i32, ptr %35, align 4, !tbaa !9
  %385 = add nsw i32 %384, 1
  store i32 %385, ptr %35, align 4, !tbaa !9
  br label %370, !llvm.loop !13

386:                                              ; preds = %370
  br label %387

387:                                              ; preds = %386
  %388 = load i32, ptr %34, align 4, !tbaa !9
  %389 = add nsw i32 %388, 1
  store i32 %389, ptr %34, align 4, !tbaa !9
  br label %211, !llvm.loop !14

390:                                              ; preds = %211
  %391 = load i32, ptr %33, align 4, !tbaa !9
  store i32 %391, ptr %56, align 4, !tbaa !9
  br label %392

392:                                              ; preds = %510, %390
  %393 = load i32, ptr %56, align 4, !tbaa !9
  %394 = icmp sge i32 %393, 1
  br i1 %394, label %395, label %513

395:                                              ; preds = %392
  %396 = load i32, ptr %56, align 4, !tbaa !9
  %397 = icmp eq i32 %396, 1
  br i1 %397, label %398, label %399

398:                                              ; preds = %395
  store i32 1, ptr %46, align 4, !tbaa !9
  store i32 1, ptr %48, align 4, !tbaa !9
  br label %408

399:                                              ; preds = %395
  %400 = load i32, ptr %56, align 4, !tbaa !9
  %401 = sub nsw i32 %400, 1
  store i32 %401, ptr %29, align 4, !tbaa !9
  %402 = load i32, ptr @c__2, align 4, !tbaa !9
  %403 = load i32, ptr %29, align 4, !tbaa !9
  %404 = call i32 @pow_ii(i32 noundef %402, i32 noundef %403)
  store i32 %404, ptr %46, align 4, !tbaa !9
  %405 = load i32, ptr %46, align 4, !tbaa !9
  %406 = shl i32 %405, 1
  %407 = sub nsw i32 %406, 1
  store i32 %407, ptr %48, align 4, !tbaa !9
  br label %408

408:                                              ; preds = %399, %398
  %409 = load i32, ptr %48, align 4, !tbaa !9
  store i32 %409, ptr %29, align 4, !tbaa !9
  %410 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %410, ptr %34, align 4, !tbaa !9
  br label %411

411:                                              ; preds = %506, %408
  %412 = load i32, ptr %34, align 4, !tbaa !9
  %413 = load i32, ptr %29, align 4, !tbaa !9
  %414 = icmp sle i32 %412, %413
  br i1 %414, label %415, label %509

415:                                              ; preds = %411
  %416 = load i32, ptr %34, align 4, !tbaa !9
  %417 = sub nsw i32 %416, 1
  store i32 %417, ptr %51, align 4, !tbaa !9
  %418 = load ptr, ptr %22, align 8, !tbaa !5
  %419 = load i32, ptr %38, align 4, !tbaa !9
  %420 = load i32, ptr %51, align 4, !tbaa !9
  %421 = add nsw i32 %419, %420
  %422 = sext i32 %421 to i64
  %423 = getelementptr inbounds i32, ptr %418, i64 %422
  %424 = load i32, ptr %423, align 4, !tbaa !9
  store i32 %424, ptr %45, align 4, !tbaa !9
  %425 = load ptr, ptr %22, align 8, !tbaa !5
  %426 = load i32, ptr %39, align 4, !tbaa !9
  %427 = load i32, ptr %51, align 4, !tbaa !9
  %428 = add nsw i32 %426, %427
  %429 = sext i32 %428 to i64
  %430 = getelementptr inbounds i32, ptr %425, i64 %429
  %431 = load i32, ptr %430, align 4, !tbaa !9
  store i32 %431, ptr %49, align 4, !tbaa !9
  %432 = load ptr, ptr %22, align 8, !tbaa !5
  %433 = load i32, ptr %41, align 4, !tbaa !9
  %434 = load i32, ptr %51, align 4, !tbaa !9
  %435 = add nsw i32 %433, %434
  %436 = sext i32 %435 to i64
  %437 = getelementptr inbounds i32, ptr %432, i64 %436
  %438 = load i32, ptr %437, align 4, !tbaa !9
  store i32 %438, ptr %50, align 4, !tbaa !9
  %439 = load i32, ptr %45, align 4, !tbaa !9
  %440 = load i32, ptr %49, align 4, !tbaa !9
  %441 = sub nsw i32 %439, %440
  store i32 %441, ptr %53, align 4, !tbaa !9
  %442 = load ptr, ptr %14, align 8, !tbaa !5
  %443 = load i32, ptr %442, align 4, !tbaa !9
  %444 = icmp eq i32 %443, 0
  br i1 %444, label %445, label %452

445:                                              ; preds = %415
  %446 = load i32, ptr %34, align 4, !tbaa !9
  %447 = load i32, ptr %48, align 4, !tbaa !9
  %448 = icmp eq i32 %446, %447
  br i1 %448, label %449, label %452

449:                                              ; preds = %445
  %450 = load ptr, ptr %14, align 8, !tbaa !5
  %451 = load i32, ptr %450, align 4, !tbaa !9
  store i32 %451, ptr %43, align 4, !tbaa !9
  br label %453

452:                                              ; preds = %445, %415
  store i32 1, ptr %43, align 4, !tbaa !9
  br label %453

453:                                              ; preds = %452, %449
  %454 = load i32, ptr %32, align 4, !tbaa !9
  %455 = load i32, ptr %53, align 4, !tbaa !9
  %456 = add nsw i32 %454, %455
  %457 = sub nsw i32 %456, 1
  store i32 %457, ptr %40, align 4, !tbaa !9
  %458 = load ptr, ptr %15, align 8, !tbaa !5
  %459 = load i32, ptr %45, align 4, !tbaa !9
  %460 = sext i32 %459 to i64
  %461 = getelementptr inbounds double, ptr %458, i64 %460
  %462 = load double, ptr %461, align 8, !tbaa !15
  store double %462, ptr %37, align 8, !tbaa !15
  %463 = load ptr, ptr %16, align 8, !tbaa !5
  %464 = load i32, ptr %45, align 4, !tbaa !9
  %465 = sext i32 %464 to i64
  %466 = getelementptr inbounds double, ptr %463, i64 %465
  %467 = load double, ptr %466, align 8, !tbaa !15
  store double %467, ptr %31, align 8, !tbaa !15
  %468 = load ptr, ptr %15, align 8, !tbaa !5
  %469 = load i32, ptr %53, align 4, !tbaa !9
  %470 = sext i32 %469 to i64
  %471 = getelementptr inbounds double, ptr %468, i64 %470
  %472 = load ptr, ptr %17, align 8, !tbaa !5
  %473 = load i32, ptr %53, align 4, !tbaa !9
  %474 = load i32, ptr %53, align 4, !tbaa !9
  %475 = load i32, ptr %25, align 4, !tbaa !9
  %476 = mul nsw i32 %474, %475
  %477 = add nsw i32 %473, %476
  %478 = sext i32 %477 to i64
  %479 = getelementptr inbounds double, ptr %472, i64 %478
  %480 = load ptr, ptr %18, align 8, !tbaa !5
  %481 = load ptr, ptr %19, align 8, !tbaa !5
  %482 = load i32, ptr %53, align 4, !tbaa !9
  %483 = load i32, ptr %53, align 4, !tbaa !9
  %484 = load i32, ptr %27, align 4, !tbaa !9
  %485 = mul nsw i32 %483, %484
  %486 = add nsw i32 %482, %485
  %487 = sext i32 %486 to i64
  %488 = getelementptr inbounds double, ptr %481, i64 %487
  %489 = load ptr, ptr %20, align 8, !tbaa !5
  %490 = load ptr, ptr %22, align 8, !tbaa !5
  %491 = load i32, ptr %40, align 4, !tbaa !9
  %492 = sext i32 %491 to i64
  %493 = getelementptr inbounds i32, ptr %490, i64 %492
  %494 = load ptr, ptr %22, align 8, !tbaa !5
  %495 = load i32, ptr %55, align 4, !tbaa !9
  %496 = sext i32 %495 to i64
  %497 = getelementptr inbounds i32, ptr %494, i64 %496
  %498 = load ptr, ptr %23, align 8, !tbaa !5
  %499 = getelementptr inbounds double, ptr %498, i64 1
  %500 = load ptr, ptr %24, align 8, !tbaa !5
  call void @dlasd1_(ptr noundef %49, ptr noundef %50, ptr noundef %43, ptr noundef %471, ptr noundef %37, ptr noundef %31, ptr noundef %479, ptr noundef %480, ptr noundef %488, ptr noundef %489, ptr noundef %493, ptr noundef %497, ptr noundef %499, ptr noundef %500)
  %501 = load ptr, ptr %24, align 8, !tbaa !5
  %502 = load i32, ptr %501, align 4, !tbaa !9
  %503 = icmp ne i32 %502, 0
  br i1 %503, label %504, label %505

504:                                              ; preds = %453
  store i32 1, ptr %60, align 4
  br label %514

505:                                              ; preds = %453
  br label %506

506:                                              ; preds = %505
  %507 = load i32, ptr %34, align 4, !tbaa !9
  %508 = add nsw i32 %507, 1
  store i32 %508, ptr %34, align 4, !tbaa !9
  br label %411, !llvm.loop !17

509:                                              ; preds = %411
  br label %510

510:                                              ; preds = %509
  %511 = load i32, ptr %56, align 4, !tbaa !9
  %512 = add nsw i32 %511, -1
  store i32 %512, ptr %56, align 4, !tbaa !9
  br label %392, !llvm.loop !18

513:                                              ; preds = %392
  store i32 1, ptr %60, align 4
  br label %514

514:                                              ; preds = %513, %504, %364, %289, %149, %138
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #3
  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 4, 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 8, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 4, 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 8, 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
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #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 @dlasdq_(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 @dlasdt_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

; Function Attrs: nounwind uwtable
declare hidden i32 @pow_ii(i32 noundef, i32 noundef) #0

declare void @dlasd1_(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

; 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 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !12}
!15 = !{!16, !16, i64 0}
!16 = !{!"double", !7, i64 0}
!17 = distinct !{!17, !12}
!18 = distinct !{!18, !12}


; 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__2 = external hidden local_unnamed_addr global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local void @dlasd0_(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) local_unnamed_addr #0 {
  %13 = alloca i32, align 4
  %14 = alloca double, align 8
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca double, align 8
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #3
  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 8, 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 4, 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
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #3
  %25 = getelementptr inbounds i8, ptr %2, i64 -8
  %26 = getelementptr inbounds i8, ptr %3, i64 -8
  %27 = load i32, ptr %5, align 4, !tbaa !5
  %narrow208 = xor i32 %27, -1
  %28 = sext i32 %narrow208 to i64
  %29 = getelementptr inbounds double, ptr %4, i64 %28
  %30 = load i32, ptr %7, align 4, !tbaa !5
  %narrow = xor i32 %30, -1
  %31 = sext i32 %narrow to i64
  %32 = getelementptr inbounds double, ptr %6, i64 %31
  %33 = getelementptr inbounds i8, ptr %9, i64 -4
  store i32 0, ptr %11, align 4, !tbaa !5
  %34 = load i32, ptr %0, align 4, !tbaa !5
  %35 = icmp slt i32 %34, 0
  br i1 %35, label %.sink.split, label %36

36:                                               ; preds = %12
  %37 = load i32, ptr %1, align 4, !tbaa !5
  %or.cond = icmp ugt i32 %37, 1
  br i1 %or.cond, label %.sink.split, label %38

.sink.split:                                      ; preds = %36, %12
  %.sink = phi i32 [ -1, %12 ], [ -2, %36 ]
  %.pr.neg.ph = phi i32 [ 1, %12 ], [ 2, %36 ]
  store i32 %.sink, ptr %11, align 4, !tbaa !5
  br label %38

38:                                               ; preds = %.sink.split, %36
  %.not = phi i1 [ true, %36 ], [ false, %.sink.split ]
  %.pr.neg = phi i32 [ 0, %36 ], [ %.pr.neg.ph, %.sink.split ]
  %39 = load i32, ptr %0, align 4, !tbaa !5
  %40 = load i32, ptr %1, align 4, !tbaa !5
  %41 = add nsw i32 %40, %39
  store i32 %41, ptr %16, align 4, !tbaa !5
  %42 = load i32, ptr %5, align 4, !tbaa !5
  %43 = icmp slt i32 %42, %39
  br i1 %43, label %.thread.sink.split, label %44

44:                                               ; preds = %38
  %45 = load i32, ptr %7, align 4, !tbaa !5
  %46 = icmp slt i32 %45, %41
  br i1 %46, label %.thread.sink.split, label %47

47:                                               ; preds = %44
  %48 = load i32, ptr %8, align 4, !tbaa !5
  %49 = icmp slt i32 %48, 3
  br i1 %49, label %.thread.sink.split, label %50

50:                                               ; preds = %47
  br i1 %.not, label %52, label %.thread

.thread.sink.split:                               ; preds = %47, %44, %38
  %.sink262 = phi i32 [ -6, %38 ], [ -8, %44 ], [ -9, %47 ]
  %.neg.ph = phi i32 [ 6, %38 ], [ 8, %44 ], [ 9, %47 ]
  store i32 %.sink262, ptr %11, align 4, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %50
  %.neg = phi i32 [ %.pr.neg, %50 ], [ %.neg.ph, %.thread.sink.split ]
  store i32 %.neg, ptr %13, align 4, !tbaa !5
  %51 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %13, i32 noundef 6) #3
  br label %.loopexit

52:                                               ; preds = %50
  %.not199 = icmp sgt i32 %39, %48
  br i1 %.not199, label %54, label %53

53:                                               ; preds = %52
  call void @dlasdq_(ptr noundef nonnull @.str.1, ptr noundef nonnull %1, ptr noundef nonnull %0, ptr noundef nonnull %16, ptr noundef nonnull %0, ptr noundef nonnull @c__0, ptr noundef %2, ptr noundef %3, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %10, ptr noundef nonnull %11) #3
  br label %.loopexit

54:                                               ; preds = %52
  %55 = add nuw nsw i32 %39, 1
  %56 = add nuw nsw i32 %55, %39
  %57 = add nuw nsw i32 %56, %39
  %58 = add nuw nsw i32 %57, %39
  %59 = zext nneg i32 %55 to i64
  %60 = getelementptr inbounds i32, ptr %33, i64 %59
  %61 = zext nneg i32 %56 to i64
  %62 = getelementptr inbounds i32, ptr %33, i64 %61
  call void @dlasdt_(ptr noundef nonnull %0, ptr noundef nonnull %15, ptr noundef nonnull %19, ptr noundef %9, ptr noundef nonnull %60, ptr noundef nonnull %62, ptr noundef nonnull %8) #3
  %63 = load i32, ptr %19, align 4, !tbaa !5
  %64 = add nsw i32 %63, 1
  %65 = sdiv i32 %64, 2
  store i32 0, ptr %22, align 4, !tbaa !5
  %.not200222 = icmp sgt i32 %65, %63
  br i1 %.not200222, label %._crit_edge226, label %.lr.ph225

.lr.ph225:                                        ; preds = %54
  %66 = shl nuw i32 %39, 1
  %67 = add i32 %30, 1
  %68 = add i32 %27, 1
  %69 = add nsw i32 %57, -2
  %invariant.gep = getelementptr i8, ptr %9, i64 -8
  %70 = sext i32 %65 to i64
  %71 = sext i32 %63 to i64
  br label %72

72:                                               ; preds = %.lr.ph225, %._crit_edge221
  %indvars.iv245 = phi i64 [ %70, %.lr.ph225 ], [ %indvars.iv.next246, %._crit_edge221 ]
  %73 = getelementptr inbounds i32, ptr %33, i64 %indvars.iv245
  %74 = load i32, ptr %73, align 4, !tbaa !5
  %75 = trunc nsw i64 %indvars.iv245 to i32
  %76 = add i32 %39, %75
  %77 = sext i32 %76 to i64
  %78 = getelementptr inbounds i32, ptr %33, i64 %77
  %79 = load i32, ptr %78, align 4, !tbaa !5
  store i32 %79, ptr %20, align 4, !tbaa !5
  %80 = add nsw i32 %79, 1
  store i32 %80, ptr %23, align 4, !tbaa !5
  %81 = add i32 %66, %75
  %82 = sext i32 %81 to i64
  %83 = getelementptr inbounds i32, ptr %33, i64 %82
  %84 = load i32, ptr %83, align 4, !tbaa !5
  store i32 %84, ptr %21, align 4, !tbaa !5
  %85 = add nsw i32 %84, 1
  store i32 %85, ptr %24, align 4, !tbaa !5
  %86 = sub nsw i32 %74, %79
  %87 = add nsw i32 %74, 1
  store i32 1, ptr %18, align 4, !tbaa !5
  %88 = sext i32 %86 to i64
  %89 = getelementptr inbounds double, ptr %25, i64 %88
  %90 = getelementptr inbounds double, ptr %26, i64 %88
  %91 = mul i32 %86, %67
  %92 = sext i32 %91 to i64
  %93 = getelementptr inbounds double, ptr %32, i64 %92
  %94 = mul i32 %86, %68
  %95 = sext i32 %94 to i64
  %96 = getelementptr inbounds double, ptr %29, i64 %95
  call void @dlasdq_(ptr noundef nonnull @.str.1, ptr noundef nonnull %18, ptr noundef nonnull %20, ptr noundef nonnull %23, ptr noundef nonnull %20, ptr noundef nonnull %22, ptr noundef nonnull %89, ptr noundef nonnull %90, ptr noundef %93, ptr noundef nonnull %7, ptr noundef %96, ptr noundef nonnull %5, ptr noundef %96, ptr noundef nonnull %5, ptr noundef %10, ptr noundef nonnull %11) #3
  %97 = load i32, ptr %11, align 4, !tbaa !5
  %.not203 = icmp eq i32 %97, 0
  br i1 %.not203, label %98, label %.loopexit

98:                                               ; preds = %72
  %99 = load i32, ptr %20, align 4, !tbaa !5
  %.not204215 = icmp slt i32 %99, 1
  br i1 %.not204215, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %98
  %100 = add i32 %69, %86
  %101 = sext i32 %100 to i64
  %102 = add nuw i32 %99, 1
  %wide.trip.count = zext i32 %102 to i64
  %invariant.gep258 = getelementptr i32, ptr %33, i64 %101
  %103 = zext nneg i32 %99 to i64
  %min.iters.check268 = icmp ult i32 %99, 8
  br i1 %min.iters.check268, label %scalar.ph267.preheader, label %vector.ph269

vector.ph269:                                     ; preds = %.lr.ph
  %n.vec271 = and i64 %103, 2147483640
  %ind.end272 = or disjoint i64 %n.vec271, 1
  br label %vector.body274

vector.body274:                                   ; preds = %vector.body274, %vector.ph269
  %index275 = phi i64 [ 0, %vector.ph269 ], [ %index.next281, %vector.body274 ]
  %vec.ind276 = phi <4 x i32> [ <i32 1, i32 2, i32 3, i32 4>, %vector.ph269 ], [ %vec.ind.next279, %vector.body274 ]
  %step.add277 = add <4 x i32> %vec.ind276, <i32 4, i32 4, i32 4, i32 4>
  %offset.idx280 = or disjoint i64 %index275, 1
  %104 = getelementptr i32, ptr %invariant.gep258, i64 %offset.idx280
  %105 = getelementptr i8, ptr %104, i64 16
  store <4 x i32> %vec.ind276, ptr %104, align 4, !tbaa !5
  store <4 x i32> %step.add277, ptr %105, align 4, !tbaa !5
  %index.next281 = add nuw i64 %index275, 8
  %vec.ind.next279 = add <4 x i32> %vec.ind276, <i32 8, i32 8, i32 8, i32 8>
  %106 = icmp eq i64 %index.next281, %n.vec271
  br i1 %106, label %middle.block266, label %vector.body274, !llvm.loop !9

middle.block266:                                  ; preds = %vector.body274
  %cmp.n282 = icmp eq i64 %n.vec271, %103
  br i1 %cmp.n282, label %._crit_edge, label %scalar.ph267.preheader

scalar.ph267.preheader:                           ; preds = %middle.block266, %.lr.ph
  %indvars.iv.ph = phi i64 [ 1, %.lr.ph ], [ %ind.end272, %middle.block266 ]
  br label %scalar.ph267

scalar.ph267:                                     ; preds = %scalar.ph267.preheader, %scalar.ph267
  %indvars.iv = phi i64 [ %indvars.iv.next, %scalar.ph267 ], [ %indvars.iv.ph, %scalar.ph267.preheader ]
  %gep259 = getelementptr i32, ptr %invariant.gep258, i64 %indvars.iv
  %107 = trunc nuw nsw i64 %indvars.iv to i32
  store i32 %107, ptr %gep259, align 4, !tbaa !5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %scalar.ph267, !llvm.loop !13

._crit_edge:                                      ; preds = %scalar.ph267, %middle.block266, %98
  %108 = load i32, ptr %19, align 4, !tbaa !5
  %109 = icmp eq i32 %108, %75
  br i1 %109, label %110, label %112

110:                                              ; preds = %._crit_edge
  %111 = load i32, ptr %1, align 4, !tbaa !5
  br label %112

112:                                              ; preds = %._crit_edge, %110
  %storemerge205 = phi i32 [ %111, %110 ], [ 1, %._crit_edge ]
  store i32 %storemerge205, ptr %18, align 4, !tbaa !5
  %113 = load i32, ptr %21, align 4, !tbaa !5
  %114 = add nsw i32 %113, %storemerge205
  store i32 %114, ptr %24, align 4, !tbaa !5
  %115 = sext i32 %87 to i64
  %116 = getelementptr inbounds double, ptr %25, i64 %115
  %117 = getelementptr inbounds double, ptr %26, i64 %115
  %118 = mul i32 %87, %67
  %119 = sext i32 %118 to i64
  %120 = getelementptr inbounds double, ptr %32, i64 %119
  %121 = mul i32 %87, %68
  %122 = sext i32 %121 to i64
  %123 = getelementptr inbounds double, ptr %29, i64 %122
  call void @dlasdq_(ptr noundef nonnull @.str.1, ptr noundef nonnull %18, ptr noundef nonnull %21, ptr noundef nonnull %24, ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull %116, ptr noundef nonnull %117, ptr noundef %120, ptr noundef nonnull %7, ptr noundef %123, ptr noundef nonnull %5, ptr noundef %123, ptr noundef nonnull %5, ptr noundef %10, ptr noundef nonnull %11) #3
  %124 = load i32, ptr %11, align 4, !tbaa !5
  %.not206 = icmp eq i32 %124, 0
  br i1 %.not206, label %125, label %.loopexit

125:                                              ; preds = %112
  %126 = load i32, ptr %21, align 4, !tbaa !5
  %.not207217 = icmp slt i32 %126, 1
  br i1 %.not207217, label %._crit_edge221, label %.lr.ph220.preheader

.lr.ph220.preheader:                              ; preds = %125
  %127 = add nsw i32 %74, %57
  %128 = sext i32 %127 to i64
  %129 = add nuw i32 %126, 1
  %wide.trip.count243 = zext i32 %129 to i64
  %invariant.gep260 = getelementptr i32, ptr %invariant.gep, i64 %128
  %130 = zext nneg i32 %126 to i64
  %min.iters.check = icmp ult i32 %126, 8
  br i1 %min.iters.check, label %.lr.ph220.preheader284, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph220.preheader
  %n.vec = and i64 %130, 2147483640
  %ind.end = or disjoint i64 %n.vec, 1
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %vec.ind = phi <4 x i32> [ <i32 1, i32 2, i32 3, i32 4>, %vector.ph ], [ %vec.ind.next, %vector.body ]
  %step.add = add <4 x i32> %vec.ind, <i32 4, i32 4, i32 4, i32 4>
  %offset.idx = or disjoint i64 %index, 1
  %131 = getelementptr i32, ptr %invariant.gep260, i64 %offset.idx
  %132 = getelementptr i8, ptr %131, i64 16
  store <4 x i32> %vec.ind, ptr %131, align 4, !tbaa !5
  store <4 x i32> %step.add, ptr %132, align 4, !tbaa !5
  %index.next = add nuw i64 %index, 8
  %vec.ind.next = add <4 x i32> %vec.ind, <i32 8, i32 8, i32 8, i32 8>
  %133 = icmp eq i64 %index.next, %n.vec
  br i1 %133, label %middle.block, label %vector.body, !llvm.loop !14

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %130
  br i1 %cmp.n, label %._crit_edge221, label %.lr.ph220.preheader284

.lr.ph220.preheader284:                           ; preds = %middle.block, %.lr.ph220.preheader
  %indvars.iv240.ph = phi i64 [ 1, %.lr.ph220.preheader ], [ %ind.end, %middle.block ]
  br label %.lr.ph220

.lr.ph220:                                        ; preds = %.lr.ph220.preheader284, %.lr.ph220
  %indvars.iv240 = phi i64 [ %indvars.iv.next241, %.lr.ph220 ], [ %indvars.iv240.ph, %.lr.ph220.preheader284 ]
  %gep261 = getelementptr i32, ptr %invariant.gep260, i64 %indvars.iv240
  %134 = trunc nuw nsw i64 %indvars.iv240 to i32
  store i32 %134, ptr %gep261, align 4, !tbaa !5
  %indvars.iv.next241 = add nuw nsw i64 %indvars.iv240, 1
  %exitcond244.not = icmp eq i64 %indvars.iv.next241, %wide.trip.count243
  br i1 %exitcond244.not, label %._crit_edge221, label %.lr.ph220, !llvm.loop !15

._crit_edge221:                                   ; preds = %.lr.ph220, %middle.block, %125
  %indvars.iv.next246 = add nsw i64 %indvars.iv245, 1
  %.not200.not = icmp slt i64 %indvars.iv245, %71
  br i1 %.not200.not, label %72, label %._crit_edge226, !llvm.loop !16

._crit_edge226:                                   ; preds = %._crit_edge221, %54
  %135 = load i32, ptr %15, align 4, !tbaa !5
  %136 = icmp sgt i32 %135, 0
  br i1 %136, label %.lr.ph236, label %.loopexit

.lr.ph236:                                        ; preds = %._crit_edge226
  %invariant.gep227 = getelementptr i8, ptr %9, i64 -8
  %137 = shl i32 %39, 1
  %138 = add i32 %27, 1
  %139 = add i32 %30, 1
  %140 = sext i32 %58 to i64
  %141 = getelementptr inbounds i32, ptr %33, i64 %140
  br label %142

142:                                              ; preds = %.lr.ph236, %._crit_edge233
  %.0234 = phi i32 [ %135, %.lr.ph236 ], [ %184, %._crit_edge233 ]
  %143 = icmp eq i32 %.0234, 1
  br i1 %143, label %.lr.ph232.preheader, label %144

144:                                              ; preds = %142
  %145 = add nsw i32 %.0234, -1
  %146 = load i32, ptr @c__2, align 4, !tbaa !5
  %147 = call i32 @pow_ii(i32 noundef %146, i32 noundef %145)
  %148 = shl i32 %147, 1
  %149 = add nsw i32 %148, -1
  %.not201229.not = icmp slt i32 %147, %148
  br i1 %.not201229.not, label %.lr.ph232.preheader, label %._crit_edge233

.lr.ph232.preheader:                              ; preds = %142, %144
  %150 = phi i32 [ %149, %144 ], [ 1, %142 ]
  %.0191255 = phi i32 [ %147, %144 ], [ 1, %142 ]
  %151 = sext i32 %.0191255 to i64
  %sext = sext i32 %150 to i64
  br label %.lr.ph232

152:                                              ; preds = %.lr.ph232
  %indvars.iv.next249 = add nsw i64 %indvars.iv248, 1
  %.not201.not = icmp slt i64 %indvars.iv248, %sext
  br i1 %.not201.not, label %.lr.ph232, label %._crit_edge233, !llvm.loop !17

.lr.ph232:                                        ; preds = %.lr.ph232.preheader, %152
  %indvars.iv248 = phi i64 [ %151, %.lr.ph232.preheader ], [ %indvars.iv.next249, %152 ]
  %153 = getelementptr inbounds i32, ptr %33, i64 %indvars.iv248
  %154 = load i32, ptr %153, align 4, !tbaa !5
  %155 = trunc nsw i64 %indvars.iv248 to i32
  %156 = add i32 %39, %155
  %157 = sext i32 %156 to i64
  %158 = getelementptr inbounds i32, ptr %33, i64 %157
  %159 = load i32, ptr %158, align 4, !tbaa !5
  store i32 %159, ptr %20, align 4, !tbaa !5
  %160 = add i32 %137, %155
  %161 = sext i32 %160 to i64
  %162 = getelementptr inbounds i32, ptr %33, i64 %161
  %163 = load i32, ptr %162, align 4, !tbaa !5
  store i32 %163, ptr %21, align 4, !tbaa !5
  %164 = sub nsw i32 %154, %159
  %165 = load i32, ptr %1, align 4, !tbaa !5
  %166 = icmp ne i32 %165, 0
  %167 = icmp ne i64 %indvars.iv248, %sext
  %or.cond209.not = or i1 %166, %167
  %storemerge = zext i1 %or.cond209.not to i32
  store i32 %storemerge, ptr %18, align 4, !tbaa !5
  %168 = add nsw i32 %164, %57
  %169 = sext i32 %154 to i64
  %170 = getelementptr inbounds double, ptr %25, i64 %169
  %171 = load double, ptr %170, align 8, !tbaa !18
  store double %171, ptr %17, align 8, !tbaa !18
  %172 = getelementptr inbounds double, ptr %26, i64 %169
  %173 = load double, ptr %172, align 8, !tbaa !18
  store double %173, ptr %14, align 8, !tbaa !18
  %174 = sext i32 %164 to i64
  %175 = getelementptr inbounds double, ptr %25, i64 %174
  %176 = mul i32 %164, %138
  %177 = sext i32 %176 to i64
  %178 = getelementptr inbounds double, ptr %29, i64 %177
  %179 = mul i32 %164, %139
  %180 = sext i32 %179 to i64
  %181 = getelementptr inbounds double, ptr %32, i64 %180
  %182 = sext i32 %168 to i64
  %gep228 = getelementptr i32, ptr %invariant.gep227, i64 %182
  call void @dlasd1_(ptr noundef nonnull %20, ptr noundef nonnull %21, ptr noundef nonnull %18, ptr noundef nonnull %175, ptr noundef nonnull %17, ptr noundef nonnull %14, ptr noundef %178, ptr noundef nonnull %5, ptr noundef %181, ptr noundef nonnull %7, ptr noundef %gep228, ptr noundef nonnull %141, ptr noundef %10, ptr noundef nonnull %11) #3
  %183 = load i32, ptr %11, align 4, !tbaa !5
  %.not202 = icmp eq i32 %183, 0
  br i1 %.not202, label %152, label %.loopexit

._crit_edge233:                                   ; preds = %152, %144
  %184 = add nsw i32 %.0234, -1
  %185 = icmp sgt i32 %.0234, 1
  br i1 %185, label %142, label %.loopexit, !llvm.loop !20

.loopexit:                                        ; preds = %112, %72, %._crit_edge233, %.lr.ph232, %._crit_edge226, %53, %.thread
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #3
  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 4, 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 8, 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
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #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 @dlasdq_(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 @dlasdt_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare hidden i32 @pow_ii(i32 noundef, i32 noundef) local_unnamed_addr #0

declare void @dlasd1_(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

; 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 = distinct !{!9, !10, !11, !12}
!10 = !{!"llvm.loop.mustprogress"}
!11 = !{!"llvm.loop.isvectorized", i32 1}
!12 = !{!"llvm.loop.unroll.runtime.disable"}
!13 = distinct !{!13, !10, !12, !11}
!14 = distinct !{!14, !10, !11, !12}
!15 = distinct !{!15, !10, !12, !11}
!16 = distinct !{!16, !10}
!17 = distinct !{!17, !10}
!18 = !{!19, !19, i64 0}
!19 = !{!"double", !7, i64 0}
!20 = distinct !{!20, !10}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopInstSimplifyPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,ReassociatePass,SROAPass,SimplifyCFGPass