; LLVM IR from niuyishuai/PDCABB :: LAPACK_BLAS/LAPACK (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 i64, align 8
@c__2 = external hidden global i64, align 8

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

90:                                               ; preds = %12
  %91 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 -1, ptr %91, align 8, !tbaa !9
  br label %103

92:                                               ; preds = %12
  %93 = load ptr, ptr %15, align 8, !tbaa !5
  %94 = load i64, ptr %93, align 8, !tbaa !9
  %95 = icmp slt i64 %94, 0
  br i1 %95, label %100, label %96

96:                                               ; preds = %92
  %97 = load ptr, ptr %15, align 8, !tbaa !5
  %98 = load i64, ptr %97, align 8, !tbaa !9
  %99 = icmp sgt i64 %98, 1
  br i1 %99, label %100, label %102

100:                                              ; preds = %96, %92
  %101 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 -2, ptr %101, align 8, !tbaa !9
  br label %102

102:                                              ; preds = %100, %96
  br label %103

103:                                              ; preds = %102, %90
  %104 = load ptr, ptr %14, align 8, !tbaa !5
  %105 = load i64, ptr %104, align 8, !tbaa !9
  %106 = load ptr, ptr %15, align 8, !tbaa !5
  %107 = load i64, ptr %106, align 8, !tbaa !9
  %108 = add nsw i64 %105, %107
  store i64 %108, ptr %34, align 8, !tbaa !9
  %109 = load ptr, ptr %19, align 8, !tbaa !5
  %110 = load i64, ptr %109, align 8, !tbaa !9
  %111 = load ptr, ptr %14, align 8, !tbaa !5
  %112 = load i64, ptr %111, align 8, !tbaa !9
  %113 = icmp slt i64 %110, %112
  br i1 %113, label %114, label %116

114:                                              ; preds = %103
  %115 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 -6, ptr %115, align 8, !tbaa !9
  br label %131

116:                                              ; preds = %103
  %117 = load ptr, ptr %21, align 8, !tbaa !5
  %118 = load i64, ptr %117, align 8, !tbaa !9
  %119 = load i64, ptr %34, align 8, !tbaa !9
  %120 = icmp slt i64 %118, %119
  br i1 %120, label %121, label %123

121:                                              ; preds = %116
  %122 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 -8, ptr %122, align 8, !tbaa !9
  br label %130

123:                                              ; preds = %116
  %124 = load ptr, ptr %22, align 8, !tbaa !5
  %125 = load i64, ptr %124, align 8, !tbaa !9
  %126 = icmp slt i64 %125, 3
  br i1 %126, label %127, label %129

127:                                              ; preds = %123
  %128 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 -9, ptr %128, align 8, !tbaa !9
  br label %129

129:                                              ; preds = %127, %123
  br label %130

130:                                              ; preds = %129, %121
  br label %131

131:                                              ; preds = %130, %114
  %132 = load ptr, ptr %25, align 8, !tbaa !5
  %133 = load i64, ptr %132, align 8, !tbaa !9
  %134 = icmp ne i64 %133, 0
  br i1 %134, label %135, label %140

135:                                              ; preds = %131
  %136 = load ptr, ptr %25, align 8, !tbaa !5
  %137 = load i64, ptr %136, align 8, !tbaa !9
  %138 = sub nsw i64 0, %137
  store i64 %138, ptr %30, align 8, !tbaa !9
  %139 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %30)
  store i32 0, ptr %13, align 4
  store i32 1, ptr %61, align 4
  br label %483

140:                                              ; preds = %131
  %141 = load ptr, ptr %14, align 8, !tbaa !5
  %142 = load i64, ptr %141, align 8, !tbaa !9
  %143 = load ptr, ptr %22, align 8, !tbaa !5
  %144 = load i64, ptr %143, align 8, !tbaa !9
  %145 = icmp sle i64 %142, %144
  br i1 %145, label %146, label %170

146:                                              ; preds = %140
  %147 = load ptr, ptr %15, align 8, !tbaa !5
  %148 = load ptr, ptr %14, align 8, !tbaa !5
  %149 = load ptr, ptr %14, align 8, !tbaa !5
  %150 = load ptr, ptr %16, align 8, !tbaa !5
  %151 = getelementptr inbounds double, ptr %150, i64 1
  %152 = load ptr, ptr %17, align 8, !tbaa !5
  %153 = getelementptr inbounds double, ptr %152, i64 1
  %154 = load ptr, ptr %20, align 8, !tbaa !5
  %155 = load i64, ptr %29, align 8, !tbaa !9
  %156 = getelementptr inbounds double, ptr %154, i64 %155
  %157 = load ptr, ptr %21, align 8, !tbaa !5
  %158 = load ptr, ptr %18, align 8, !tbaa !5
  %159 = load i64, ptr %27, align 8, !tbaa !9
  %160 = getelementptr inbounds double, ptr %158, i64 %159
  %161 = load ptr, ptr %19, align 8, !tbaa !5
  %162 = load ptr, ptr %18, align 8, !tbaa !5
  %163 = load i64, ptr %27, align 8, !tbaa !9
  %164 = getelementptr inbounds double, ptr %162, i64 %163
  %165 = load ptr, ptr %19, align 8, !tbaa !5
  %166 = load ptr, ptr %24, align 8, !tbaa !5
  %167 = getelementptr inbounds double, ptr %166, i64 1
  %168 = load ptr, ptr %25, align 8, !tbaa !5
  %169 = call i32 @dlasdq_(ptr noundef @.str.1, ptr noundef %147, ptr noundef %148, ptr noundef %34, ptr noundef %149, ptr noundef @c__0, ptr noundef %151, ptr noundef %153, ptr noundef %156, ptr noundef %157, ptr noundef %160, ptr noundef %161, ptr noundef %164, ptr noundef %165, ptr noundef %167, ptr noundef %168)
  store i32 0, ptr %13, align 4
  store i32 1, ptr %61, align 4
  br label %483

170:                                              ; preds = %140
  store i64 1, ptr %55, align 8, !tbaa !9
  %171 = load i64, ptr %55, align 8, !tbaa !9
  %172 = load ptr, ptr %14, align 8, !tbaa !5
  %173 = load i64, ptr %172, align 8, !tbaa !9
  %174 = add nsw i64 %171, %173
  store i64 %174, ptr %56, align 8, !tbaa !9
  %175 = load i64, ptr %56, align 8, !tbaa !9
  %176 = load ptr, ptr %14, align 8, !tbaa !5
  %177 = load i64, ptr %176, align 8, !tbaa !9
  %178 = add nsw i64 %175, %177
  store i64 %178, ptr %58, align 8, !tbaa !9
  %179 = load i64, ptr %58, align 8, !tbaa !9
  %180 = load ptr, ptr %14, align 8, !tbaa !5
  %181 = load i64, ptr %180, align 8, !tbaa !9
  %182 = add nsw i64 %179, %181
  store i64 %182, ptr %52, align 8, !tbaa !9
  %183 = load i64, ptr %52, align 8, !tbaa !9
  %184 = load ptr, ptr %14, align 8, !tbaa !5
  %185 = load i64, ptr %184, align 8, !tbaa !9
  %186 = add nsw i64 %183, %185
  store i64 %186, ptr %46, align 8, !tbaa !9
  %187 = load ptr, ptr %14, align 8, !tbaa !5
  %188 = load ptr, ptr %23, align 8, !tbaa !5
  %189 = load i64, ptr %55, align 8, !tbaa !9
  %190 = getelementptr inbounds i64, ptr %188, i64 %189
  %191 = load ptr, ptr %23, align 8, !tbaa !5
  %192 = load i64, ptr %56, align 8, !tbaa !9
  %193 = getelementptr inbounds i64, ptr %191, i64 %192
  %194 = load ptr, ptr %23, align 8, !tbaa !5
  %195 = load i64, ptr %58, align 8, !tbaa !9
  %196 = getelementptr inbounds i64, ptr %194, i64 %195
  %197 = load ptr, ptr %22, align 8, !tbaa !5
  %198 = call i32 @dlasdt_(ptr noundef %187, ptr noundef %53, ptr noundef %38, ptr noundef %190, ptr noundef %193, ptr noundef %196, ptr noundef %197)
  %199 = load i64, ptr %38, align 8, !tbaa !9
  %200 = add nsw i64 %199, 1
  %201 = sdiv i64 %200, 2
  store i64 %201, ptr %48, align 8, !tbaa !9
  store i64 0, ptr %43, align 8, !tbaa !9
  %202 = load i64, ptr %38, align 8, !tbaa !9
  store i64 %202, ptr %30, align 8, !tbaa !9
  %203 = load i64, ptr %48, align 8, !tbaa !9
  store i64 %203, ptr %32, align 8, !tbaa !9
  br label %204

204:                                              ; preds = %367, %170
  %205 = load i64, ptr %32, align 8, !tbaa !9
  %206 = load i64, ptr %30, align 8, !tbaa !9
  %207 = icmp sle i64 %205, %206
  br i1 %207, label %208, label %370

208:                                              ; preds = %204
  %209 = load i64, ptr %32, align 8, !tbaa !9
  %210 = sub nsw i64 %209, 1
  store i64 %210, ptr %35, align 8, !tbaa !9
  %211 = load ptr, ptr %23, align 8, !tbaa !5
  %212 = load i64, ptr %55, align 8, !tbaa !9
  %213 = load i64, ptr %35, align 8, !tbaa !9
  %214 = add nsw i64 %212, %213
  %215 = getelementptr inbounds i64, ptr %211, i64 %214
  %216 = load i64, ptr %215, align 8, !tbaa !9
  store i64 %216, ptr %36, align 8, !tbaa !9
  %217 = load ptr, ptr %23, align 8, !tbaa !5
  %218 = load i64, ptr %56, align 8, !tbaa !9
  %219 = load i64, ptr %35, align 8, !tbaa !9
  %220 = add nsw i64 %218, %219
  %221 = getelementptr inbounds i64, ptr %217, i64 %220
  %222 = load i64, ptr %221, align 8, !tbaa !9
  store i64 %222, ptr %40, align 8, !tbaa !9
  %223 = load i64, ptr %40, align 8, !tbaa !9
  %224 = add nsw i64 %223, 1
  store i64 %224, ptr %49, align 8, !tbaa !9
  %225 = load ptr, ptr %23, align 8, !tbaa !5
  %226 = load i64, ptr %58, align 8, !tbaa !9
  %227 = load i64, ptr %35, align 8, !tbaa !9
  %228 = add nsw i64 %226, %227
  %229 = getelementptr inbounds i64, ptr %225, i64 %228
  %230 = load i64, ptr %229, align 8, !tbaa !9
  store i64 %230, ptr %41, align 8, !tbaa !9
  %231 = load i64, ptr %41, align 8, !tbaa !9
  %232 = add nsw i64 %231, 1
  store i64 %232, ptr %50, align 8, !tbaa !9
  %233 = load i64, ptr %36, align 8, !tbaa !9
  %234 = load i64, ptr %40, align 8, !tbaa !9
  %235 = sub nsw i64 %233, %234
  store i64 %235, ptr %44, align 8, !tbaa !9
  %236 = load i64, ptr %36, align 8, !tbaa !9
  %237 = add nsw i64 %236, 1
  store i64 %237, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %60, align 8, !tbaa !9
  %238 = load ptr, ptr %16, align 8, !tbaa !5
  %239 = load i64, ptr %44, align 8, !tbaa !9
  %240 = getelementptr inbounds double, ptr %238, i64 %239
  %241 = load ptr, ptr %17, align 8, !tbaa !5
  %242 = load i64, ptr %44, align 8, !tbaa !9
  %243 = getelementptr inbounds double, ptr %241, i64 %242
  %244 = load ptr, ptr %20, align 8, !tbaa !5
  %245 = load i64, ptr %44, align 8, !tbaa !9
  %246 = load i64, ptr %44, align 8, !tbaa !9
  %247 = load i64, ptr %28, align 8, !tbaa !9
  %248 = mul nsw i64 %246, %247
  %249 = add nsw i64 %245, %248
  %250 = getelementptr inbounds double, ptr %244, i64 %249
  %251 = load ptr, ptr %21, align 8, !tbaa !5
  %252 = load ptr, ptr %18, align 8, !tbaa !5
  %253 = load i64, ptr %44, align 8, !tbaa !9
  %254 = load i64, ptr %44, align 8, !tbaa !9
  %255 = load i64, ptr %26, align 8, !tbaa !9
  %256 = mul nsw i64 %254, %255
  %257 = add nsw i64 %253, %256
  %258 = getelementptr inbounds double, ptr %252, i64 %257
  %259 = load ptr, ptr %19, align 8, !tbaa !5
  %260 = load ptr, ptr %18, align 8, !tbaa !5
  %261 = load i64, ptr %44, align 8, !tbaa !9
  %262 = load i64, ptr %44, align 8, !tbaa !9
  %263 = load i64, ptr %26, align 8, !tbaa !9
  %264 = mul nsw i64 %262, %263
  %265 = add nsw i64 %261, %264
  %266 = getelementptr inbounds double, ptr %260, i64 %265
  %267 = load ptr, ptr %19, align 8, !tbaa !5
  %268 = load ptr, ptr %24, align 8, !tbaa !5
  %269 = getelementptr inbounds double, ptr %268, i64 1
  %270 = load ptr, ptr %25, align 8, !tbaa !5
  %271 = call i32 @dlasdq_(ptr noundef @.str.1, ptr noundef %60, ptr noundef %40, ptr noundef %49, ptr noundef %40, ptr noundef %43, ptr noundef %240, ptr noundef %243, ptr noundef %250, ptr noundef %251, ptr noundef %258, ptr noundef %259, ptr noundef %266, ptr noundef %267, ptr noundef %269, ptr noundef %270)
  %272 = load ptr, ptr %25, align 8, !tbaa !5
  %273 = load i64, ptr %272, align 8, !tbaa !9
  %274 = icmp ne i64 %273, 0
  br i1 %274, label %275, label %276

275:                                              ; preds = %208
  store i32 0, ptr %13, align 4
  store i32 1, ptr %61, align 4
  br label %483

276:                                              ; preds = %208
  %277 = load i64, ptr %52, align 8, !tbaa !9
  %278 = load i64, ptr %44, align 8, !tbaa !9
  %279 = add nsw i64 %277, %278
  %280 = sub nsw i64 %279, 2
  store i64 %280, ptr %59, align 8, !tbaa !9
  %281 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %281, ptr %31, align 8, !tbaa !9
  store i64 1, ptr %33, align 8, !tbaa !9
  br label %282

282:                                              ; preds = %293, %276
  %283 = load i64, ptr %33, align 8, !tbaa !9
  %284 = load i64, ptr %31, align 8, !tbaa !9
  %285 = icmp sle i64 %283, %284
  br i1 %285, label %286, label %296

286:                                              ; preds = %282
  %287 = load i64, ptr %33, align 8, !tbaa !9
  %288 = load ptr, ptr %23, align 8, !tbaa !5
  %289 = load i64, ptr %59, align 8, !tbaa !9
  %290 = load i64, ptr %33, align 8, !tbaa !9
  %291 = add nsw i64 %289, %290
  %292 = getelementptr inbounds i64, ptr %288, i64 %291
  store i64 %287, ptr %292, align 8, !tbaa !9
  br label %293

293:                                              ; preds = %286
  %294 = load i64, ptr %33, align 8, !tbaa !9
  %295 = add nsw i64 %294, 1
  store i64 %295, ptr %33, align 8, !tbaa !9
  br label %282, !llvm.loop !11

296:                                              ; preds = %282
  %297 = load i64, ptr %32, align 8, !tbaa !9
  %298 = load i64, ptr %38, align 8, !tbaa !9
  %299 = icmp eq i64 %297, %298
  br i1 %299, label %300, label %303

300:                                              ; preds = %296
  %301 = load ptr, ptr %15, align 8, !tbaa !5
  %302 = load i64, ptr %301, align 8, !tbaa !9
  store i64 %302, ptr %60, align 8, !tbaa !9
  br label %304

303:                                              ; preds = %296
  store i64 1, ptr %60, align 8, !tbaa !9
  br label %304

304:                                              ; preds = %303, %300
  %305 = load i64, ptr %41, align 8, !tbaa !9
  %306 = load i64, ptr %60, align 8, !tbaa !9
  %307 = add nsw i64 %305, %306
  store i64 %307, ptr %50, align 8, !tbaa !9
  %308 = load ptr, ptr %16, align 8, !tbaa !5
  %309 = load i64, ptr %45, align 8, !tbaa !9
  %310 = getelementptr inbounds double, ptr %308, i64 %309
  %311 = load ptr, ptr %17, align 8, !tbaa !5
  %312 = load i64, ptr %45, align 8, !tbaa !9
  %313 = getelementptr inbounds double, ptr %311, i64 %312
  %314 = load ptr, ptr %20, align 8, !tbaa !5
  %315 = load i64, ptr %45, align 8, !tbaa !9
  %316 = load i64, ptr %45, align 8, !tbaa !9
  %317 = load i64, ptr %28, align 8, !tbaa !9
  %318 = mul nsw i64 %316, %317
  %319 = add nsw i64 %315, %318
  %320 = getelementptr inbounds double, ptr %314, i64 %319
  %321 = load ptr, ptr %21, align 8, !tbaa !5
  %322 = load ptr, ptr %18, align 8, !tbaa !5
  %323 = load i64, ptr %45, align 8, !tbaa !9
  %324 = load i64, ptr %45, align 8, !tbaa !9
  %325 = load i64, ptr %26, align 8, !tbaa !9
  %326 = mul nsw i64 %324, %325
  %327 = add nsw i64 %323, %326
  %328 = getelementptr inbounds double, ptr %322, i64 %327
  %329 = load ptr, ptr %19, align 8, !tbaa !5
  %330 = load ptr, ptr %18, align 8, !tbaa !5
  %331 = load i64, ptr %45, align 8, !tbaa !9
  %332 = load i64, ptr %45, align 8, !tbaa !9
  %333 = load i64, ptr %26, align 8, !tbaa !9
  %334 = mul nsw i64 %332, %333
  %335 = add nsw i64 %331, %334
  %336 = getelementptr inbounds double, ptr %330, i64 %335
  %337 = load ptr, ptr %19, align 8, !tbaa !5
  %338 = load ptr, ptr %24, align 8, !tbaa !5
  %339 = getelementptr inbounds double, ptr %338, i64 1
  %340 = load ptr, ptr %25, align 8, !tbaa !5
  %341 = call i32 @dlasdq_(ptr noundef @.str.1, ptr noundef %60, ptr noundef %41, ptr noundef %50, ptr noundef %41, ptr noundef %43, ptr noundef %310, ptr noundef %313, ptr noundef %320, ptr noundef %321, ptr noundef %328, ptr noundef %329, ptr noundef %336, ptr noundef %337, ptr noundef %339, ptr noundef %340)
  %342 = load ptr, ptr %25, align 8, !tbaa !5
  %343 = load i64, ptr %342, align 8, !tbaa !9
  %344 = icmp ne i64 %343, 0
  br i1 %344, label %345, label %346

345:                                              ; preds = %304
  store i32 0, ptr %13, align 4
  store i32 1, ptr %61, align 4
  br label %483

346:                                              ; preds = %304
  %347 = load i64, ptr %52, align 8, !tbaa !9
  %348 = load i64, ptr %36, align 8, !tbaa !9
  %349 = add nsw i64 %347, %348
  store i64 %349, ptr %59, align 8, !tbaa !9
  %350 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %350, ptr %31, align 8, !tbaa !9
  store i64 1, ptr %33, align 8, !tbaa !9
  br label %351

351:                                              ; preds = %363, %346
  %352 = load i64, ptr %33, align 8, !tbaa !9
  %353 = load i64, ptr %31, align 8, !tbaa !9
  %354 = icmp sle i64 %352, %353
  br i1 %354, label %355, label %366

355:                                              ; preds = %351
  %356 = load i64, ptr %33, align 8, !tbaa !9
  %357 = load ptr, ptr %23, align 8, !tbaa !5
  %358 = load i64, ptr %59, align 8, !tbaa !9
  %359 = load i64, ptr %33, align 8, !tbaa !9
  %360 = add nsw i64 %358, %359
  %361 = sub nsw i64 %360, 1
  %362 = getelementptr inbounds i64, ptr %357, i64 %361
  store i64 %356, ptr %362, align 8, !tbaa !9
  br label %363

363:                                              ; preds = %355
  %364 = load i64, ptr %33, align 8, !tbaa !9
  %365 = add nsw i64 %364, 1
  store i64 %365, ptr %33, align 8, !tbaa !9
  br label %351, !llvm.loop !13

366:                                              ; preds = %351
  br label %367

367:                                              ; preds = %366
  %368 = load i64, ptr %32, align 8, !tbaa !9
  %369 = add nsw i64 %368, 1
  store i64 %369, ptr %32, align 8, !tbaa !9
  br label %204, !llvm.loop !14

370:                                              ; preds = %204
  %371 = load i64, ptr %53, align 8, !tbaa !9
  store i64 %371, ptr %47, align 8, !tbaa !9
  br label %372

372:                                              ; preds = %479, %370
  %373 = load i64, ptr %47, align 8, !tbaa !9
  %374 = icmp sge i64 %373, 1
  br i1 %374, label %375, label %482

375:                                              ; preds = %372
  %376 = load i64, ptr %47, align 8, !tbaa !9
  %377 = icmp eq i64 %376, 1
  br i1 %377, label %378, label %379

378:                                              ; preds = %375
  store i64 1, ptr %37, align 8, !tbaa !9
  store i64 1, ptr %39, align 8, !tbaa !9
  br label %386

379:                                              ; preds = %375
  %380 = load i64, ptr %47, align 8, !tbaa !9
  %381 = sub nsw i64 %380, 1
  store i64 %381, ptr %30, align 8, !tbaa !9
  %382 = call i64 @pow_ii(ptr noundef @c__2, ptr noundef %30)
  store i64 %382, ptr %37, align 8, !tbaa !9
  %383 = load i64, ptr %37, align 8, !tbaa !9
  %384 = shl i64 %383, 1
  %385 = sub nsw i64 %384, 1
  store i64 %385, ptr %39, align 8, !tbaa !9
  br label %386

386:                                              ; preds = %379, %378
  %387 = load i64, ptr %39, align 8, !tbaa !9
  store i64 %387, ptr %30, align 8, !tbaa !9
  %388 = load i64, ptr %37, align 8, !tbaa !9
  store i64 %388, ptr %32, align 8, !tbaa !9
  br label %389

389:                                              ; preds = %475, %386
  %390 = load i64, ptr %32, align 8, !tbaa !9
  %391 = load i64, ptr %30, align 8, !tbaa !9
  %392 = icmp sle i64 %390, %391
  br i1 %392, label %393, label %478

393:                                              ; preds = %389
  %394 = load i64, ptr %32, align 8, !tbaa !9
  %395 = sub nsw i64 %394, 1
  store i64 %395, ptr %42, align 8, !tbaa !9
  %396 = load ptr, ptr %23, align 8, !tbaa !5
  %397 = load i64, ptr %55, align 8, !tbaa !9
  %398 = load i64, ptr %42, align 8, !tbaa !9
  %399 = add nsw i64 %397, %398
  %400 = getelementptr inbounds i64, ptr %396, i64 %399
  %401 = load i64, ptr %400, align 8, !tbaa !9
  store i64 %401, ptr %36, align 8, !tbaa !9
  %402 = load ptr, ptr %23, align 8, !tbaa !5
  %403 = load i64, ptr %56, align 8, !tbaa !9
  %404 = load i64, ptr %42, align 8, !tbaa !9
  %405 = add nsw i64 %403, %404
  %406 = getelementptr inbounds i64, ptr %402, i64 %405
  %407 = load i64, ptr %406, align 8, !tbaa !9
  store i64 %407, ptr %40, align 8, !tbaa !9
  %408 = load ptr, ptr %23, align 8, !tbaa !5
  %409 = load i64, ptr %58, align 8, !tbaa !9
  %410 = load i64, ptr %42, align 8, !tbaa !9
  %411 = add nsw i64 %409, %410
  %412 = getelementptr inbounds i64, ptr %408, i64 %411
  %413 = load i64, ptr %412, align 8, !tbaa !9
  store i64 %413, ptr %41, align 8, !tbaa !9
  %414 = load i64, ptr %36, align 8, !tbaa !9
  %415 = load i64, ptr %40, align 8, !tbaa !9
  %416 = sub nsw i64 %414, %415
  store i64 %416, ptr %44, align 8, !tbaa !9
  %417 = load ptr, ptr %15, align 8, !tbaa !5
  %418 = load i64, ptr %417, align 8, !tbaa !9
  %419 = icmp eq i64 %418, 0
  br i1 %419, label %420, label %427

420:                                              ; preds = %393
  %421 = load i64, ptr %32, align 8, !tbaa !9
  %422 = load i64, ptr %39, align 8, !tbaa !9
  %423 = icmp eq i64 %421, %422
  br i1 %423, label %424, label %427

424:                                              ; preds = %420
  %425 = load ptr, ptr %15, align 8, !tbaa !5
  %426 = load i64, ptr %425, align 8, !tbaa !9
  store i64 %426, ptr %60, align 8, !tbaa !9
  br label %428

427:                                              ; preds = %420, %393
  store i64 1, ptr %60, align 8, !tbaa !9
  br label %428

428:                                              ; preds = %427, %424
  %429 = load i64, ptr %52, align 8, !tbaa !9
  %430 = load i64, ptr %44, align 8, !tbaa !9
  %431 = add nsw i64 %429, %430
  %432 = sub nsw i64 %431, 1
  store i64 %432, ptr %57, align 8, !tbaa !9
  %433 = load ptr, ptr %16, align 8, !tbaa !5
  %434 = load i64, ptr %36, align 8, !tbaa !9
  %435 = getelementptr inbounds double, ptr %433, i64 %434
  %436 = load double, ptr %435, align 8, !tbaa !15
  store double %436, ptr %54, align 8, !tbaa !15
  %437 = load ptr, ptr %17, align 8, !tbaa !5
  %438 = load i64, ptr %36, align 8, !tbaa !9
  %439 = getelementptr inbounds double, ptr %437, i64 %438
  %440 = load double, ptr %439, align 8, !tbaa !15
  store double %440, ptr %51, align 8, !tbaa !15
  %441 = load ptr, ptr %16, align 8, !tbaa !5
  %442 = load i64, ptr %44, align 8, !tbaa !9
  %443 = getelementptr inbounds double, ptr %441, i64 %442
  %444 = load ptr, ptr %18, align 8, !tbaa !5
  %445 = load i64, ptr %44, align 8, !tbaa !9
  %446 = load i64, ptr %44, align 8, !tbaa !9
  %447 = load i64, ptr %26, align 8, !tbaa !9
  %448 = mul nsw i64 %446, %447
  %449 = add nsw i64 %445, %448
  %450 = getelementptr inbounds double, ptr %444, i64 %449
  %451 = load ptr, ptr %19, align 8, !tbaa !5
  %452 = load ptr, ptr %20, align 8, !tbaa !5
  %453 = load i64, ptr %44, align 8, !tbaa !9
  %454 = load i64, ptr %44, align 8, !tbaa !9
  %455 = load i64, ptr %28, align 8, !tbaa !9
  %456 = mul nsw i64 %454, %455
  %457 = add nsw i64 %453, %456
  %458 = getelementptr inbounds double, ptr %452, i64 %457
  %459 = load ptr, ptr %21, align 8, !tbaa !5
  %460 = load ptr, ptr %23, align 8, !tbaa !5
  %461 = load i64, ptr %57, align 8, !tbaa !9
  %462 = getelementptr inbounds i64, ptr %460, i64 %461
  %463 = load ptr, ptr %23, align 8, !tbaa !5
  %464 = load i64, ptr %46, align 8, !tbaa !9
  %465 = getelementptr inbounds i64, ptr %463, i64 %464
  %466 = load ptr, ptr %24, align 8, !tbaa !5
  %467 = getelementptr inbounds double, ptr %466, i64 1
  %468 = load ptr, ptr %25, align 8, !tbaa !5
  %469 = call i32 @dlasd1_(ptr noundef %40, ptr noundef %41, ptr noundef %60, ptr noundef %443, ptr noundef %54, ptr noundef %51, ptr noundef %450, ptr noundef %451, ptr noundef %458, ptr noundef %459, ptr noundef %462, ptr noundef %465, ptr noundef %467, ptr noundef %468)
  %470 = load ptr, ptr %25, align 8, !tbaa !5
  %471 = load i64, ptr %470, align 8, !tbaa !9
  %472 = icmp ne i64 %471, 0
  br i1 %472, label %473, label %474

473:                                              ; preds = %428
  store i32 0, ptr %13, align 4
  store i32 1, ptr %61, align 4
  br label %483

474:                                              ; preds = %428
  br label %475

475:                                              ; preds = %474
  %476 = load i64, ptr %32, align 8, !tbaa !9
  %477 = add nsw i64 %476, 1
  store i64 %477, ptr %32, align 8, !tbaa !9
  br label %389, !llvm.loop !17

478:                                              ; preds = %389
  br label %479

479:                                              ; preds = %478
  %480 = load i64, ptr %47, align 8, !tbaa !9
  %481 = add nsw i64 %480, -1
  store i64 %481, ptr %47, align 8, !tbaa !9
  br label %372, !llvm.loop !18

482:                                              ; preds = %372
  store i32 0, ptr %13, align 4
  store i32 1, ptr %61, align 4
  br label %483

483:                                              ; preds = %482, %473, %345, %275, %146, %135
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #3
  %484 = load i32, ptr %13, align 4
  ret i32 %484
}

; 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) #2

declare i32 @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 i32 @dlasdt_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

declare i32 @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 = !{!"long", !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 i64, align 8
@c__2 = external hidden global i64, align 8

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

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

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

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

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

47:                                               ; preds = %44
  %48 = load i64, ptr %8, align 8, !tbaa !5
  %49 = icmp slt i64 %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
  %.sink256 = phi i64 [ -6, %38 ], [ -8, %44 ], [ -9, %47 ]
  %.neg.ph = phi i64 [ 6, %38 ], [ 8, %44 ], [ 9, %47 ]
  store i64 %.sink256, ptr %11, align 8, !tbaa !5
  br label %.thread

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

52:                                               ; preds = %50
  %.not200 = icmp sgt i64 %39, %48
  br i1 %.not200, label %55, label %53

53:                                               ; preds = %52
  %54 = call i32 @dlasdq_(ptr noundef nonnull @.str.1, ptr noundef nonnull %1, ptr noundef nonnull %0, ptr noundef nonnull %14, 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

55:                                               ; preds = %52
  %reass.add = shl nuw i64 %39, 1
  %56 = or disjoint i64 %reass.add, 1
  %57 = add nsw i64 %56, %39
  %58 = getelementptr i64, ptr %9, i64 %39
  %59 = getelementptr i64, ptr %9, i64 %reass.add
  %60 = call i32 @dlasdt_(ptr noundef nonnull %0, ptr noundef nonnull %22, ptr noundef nonnull %15, ptr noundef %9, ptr noundef %58, ptr noundef nonnull %59, ptr noundef nonnull %8) #3
  %61 = load i64, ptr %15, align 8, !tbaa !5
  %62 = add nsw i64 %61, 1
  %63 = sdiv i64 %62, 2
  store i64 0, ptr %18, align 8, !tbaa !5
  store i64 %61, ptr %13, align 8, !tbaa !5
  %invariant.gep222 = getelementptr i8, ptr %59, i64 -8
  %.not201224 = icmp sgt i64 %63, %61
  br i1 %.not201224, label %._crit_edge228, label %.lr.ph227

.lr.ph227:                                        ; preds = %55
  %64 = getelementptr i64, ptr %33, i64 %39
  %65 = add i64 %30, 1
  %66 = add i64 %27, 1
  %67 = getelementptr i64, ptr %33, i64 %57
  %invariant.gep229 = getelementptr i8, ptr %67, i64 -16
  %invariant.gep231 = getelementptr i8, ptr %67, i64 -8
  br label %68

68:                                               ; preds = %.lr.ph227, %._crit_edge221
  %.0192225 = phi i64 [ %63, %.lr.ph227 ], [ %114, %._crit_edge221 ]
  %69 = getelementptr inbounds i64, ptr %33, i64 %.0192225
  %70 = load i64, ptr %69, align 8, !tbaa !5
  %71 = getelementptr i64, ptr %64, i64 %.0192225
  %72 = load i64, ptr %71, align 8, !tbaa !5
  store i64 %72, ptr %16, align 8, !tbaa !5
  %73 = add nsw i64 %72, 1
  store i64 %73, ptr %19, align 8, !tbaa !5
  %gep223 = getelementptr i64, ptr %invariant.gep222, i64 %.0192225
  %74 = load i64, ptr %gep223, align 8, !tbaa !5
  store i64 %74, ptr %17, align 8, !tbaa !5
  %75 = add nsw i64 %74, 1
  store i64 %75, ptr %20, align 8, !tbaa !5
  %76 = sub nsw i64 %70, %72
  %77 = add nsw i64 %70, 1
  store i64 1, ptr %24, align 8, !tbaa !5
  %78 = getelementptr inbounds double, ptr %25, i64 %76
  %79 = getelementptr inbounds double, ptr %26, i64 %76
  %80 = mul i64 %76, %65
  %81 = getelementptr inbounds double, ptr %32, i64 %80
  %82 = mul i64 %76, %66
  %83 = getelementptr inbounds double, ptr %29, i64 %82
  %84 = call i32 @dlasdq_(ptr noundef nonnull @.str.1, ptr noundef nonnull %24, ptr noundef nonnull %16, ptr noundef nonnull %19, ptr noundef nonnull %16, ptr noundef nonnull %18, ptr noundef nonnull %78, ptr noundef nonnull %79, ptr noundef %81, ptr noundef nonnull %7, ptr noundef %83, ptr noundef nonnull %5, ptr noundef %83, ptr noundef nonnull %5, ptr noundef %10, ptr noundef nonnull %11) #3
  %85 = load i64, ptr %11, align 8, !tbaa !5
  %.not204 = icmp eq i64 %85, 0
  br i1 %.not204, label %86, label %.loopexit

86:                                               ; preds = %68
  %87 = load i64, ptr %16, align 8, !tbaa !5
  %.not205215 = icmp slt i64 %87, 1
  br i1 %.not205215, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %86
  %gep230 = getelementptr i64, ptr %invariant.gep229, i64 %76
  %min.iters.check262 = icmp ult i64 %87, 4
  br i1 %min.iters.check262, label %scalar.ph261.preheader, label %vector.ph263

vector.ph263:                                     ; preds = %.lr.ph
  %n.vec265 = and i64 %87, 9223372036854775804
  %ind.end266 = or disjoint i64 %n.vec265, 1
  br label %vector.body268

vector.body268:                                   ; preds = %vector.body268, %vector.ph263
  %index269 = phi i64 [ 0, %vector.ph263 ], [ %index.next275, %vector.body268 ]
  %vec.ind270 = phi <2 x i64> [ <i64 1, i64 2>, %vector.ph263 ], [ %vec.ind.next273, %vector.body268 ]
  %step.add271 = add <2 x i64> %vec.ind270, <i64 2, i64 2>
  %offset.idx274 = or disjoint i64 %index269, 1
  %88 = getelementptr i64, ptr %gep230, i64 %offset.idx274
  %89 = getelementptr i8, ptr %88, i64 16
  store <2 x i64> %vec.ind270, ptr %88, align 8, !tbaa !5
  store <2 x i64> %step.add271, ptr %89, align 8, !tbaa !5
  %index.next275 = add nuw i64 %index269, 4
  %vec.ind.next273 = add <2 x i64> %vec.ind270, <i64 4, i64 4>
  %90 = icmp eq i64 %index.next275, %n.vec265
  br i1 %90, label %middle.block260, label %vector.body268, !llvm.loop !9

middle.block260:                                  ; preds = %vector.body268
  %cmp.n276 = icmp eq i64 %87, %n.vec265
  br i1 %cmp.n276, label %._crit_edge, label %scalar.ph261.preheader

scalar.ph261.preheader:                           ; preds = %middle.block260, %.lr.ph
  %.0195216.ph = phi i64 [ 1, %.lr.ph ], [ %ind.end266, %middle.block260 ]
  br label %scalar.ph261

scalar.ph261:                                     ; preds = %scalar.ph261.preheader, %scalar.ph261
  %.0195216 = phi i64 [ %92, %scalar.ph261 ], [ %.0195216.ph, %scalar.ph261.preheader ]
  %91 = getelementptr i64, ptr %gep230, i64 %.0195216
  store i64 %.0195216, ptr %91, align 8, !tbaa !5
  %92 = add nuw i64 %.0195216, 1
  %exitcond.not = icmp eq i64 %.0195216, %87
  br i1 %exitcond.not, label %._crit_edge, label %scalar.ph261, !llvm.loop !13

._crit_edge:                                      ; preds = %scalar.ph261, %middle.block260, %86
  %93 = load i64, ptr %15, align 8, !tbaa !5
  %94 = icmp eq i64 %.0192225, %93
  br i1 %94, label %95, label %97

95:                                               ; preds = %._crit_edge
  %96 = load i64, ptr %1, align 8, !tbaa !5
  br label %97

97:                                               ; preds = %._crit_edge, %95
  %storemerge206 = phi i64 [ %96, %95 ], [ 1, %._crit_edge ]
  store i64 %storemerge206, ptr %24, align 8, !tbaa !5
  %98 = load i64, ptr %17, align 8, !tbaa !5
  %99 = add nsw i64 %98, %storemerge206
  store i64 %99, ptr %20, align 8, !tbaa !5
  %100 = getelementptr double, ptr %2, i64 %70
  %101 = getelementptr double, ptr %3, i64 %70
  %102 = mul i64 %77, %65
  %103 = getelementptr inbounds double, ptr %32, i64 %102
  %104 = mul i64 %77, %66
  %105 = getelementptr inbounds double, ptr %29, i64 %104
  %106 = call i32 @dlasdq_(ptr noundef nonnull @.str.1, ptr noundef nonnull %24, ptr noundef nonnull %17, ptr noundef nonnull %20, ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef %100, ptr noundef %101, ptr noundef %103, ptr noundef nonnull %7, ptr noundef %105, ptr noundef nonnull %5, ptr noundef %105, ptr noundef nonnull %5, ptr noundef %10, ptr noundef nonnull %11) #3
  %107 = load i64, ptr %11, align 8, !tbaa !5
  %.not207 = icmp eq i64 %107, 0
  br i1 %.not207, label %108, label %.loopexit

108:                                              ; preds = %97
  %109 = load i64, ptr %17, align 8, !tbaa !5
  %.not208217 = icmp slt i64 %109, 1
  br i1 %.not208217, label %._crit_edge221, label %.lr.ph220

.lr.ph220:                                        ; preds = %108
  %gep232 = getelementptr i64, ptr %invariant.gep231, i64 %70
  %min.iters.check = icmp ult i64 %109, 4
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph220
  %n.vec = and i64 %109, 9223372036854775804
  %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 <2 x i64> [ <i64 1, i64 2>, %vector.ph ], [ %vec.ind.next, %vector.body ]
  %step.add = add <2 x i64> %vec.ind, <i64 2, i64 2>
  %offset.idx = or disjoint i64 %index, 1
  %110 = getelementptr i64, ptr %gep232, i64 %offset.idx
  %111 = getelementptr i8, ptr %110, i64 16
  store <2 x i64> %vec.ind, ptr %110, align 8, !tbaa !5
  store <2 x i64> %step.add, ptr %111, align 8, !tbaa !5
  %index.next = add nuw i64 %index, 4
  %vec.ind.next = add <2 x i64> %vec.ind, <i64 4, i64 4>
  %112 = icmp eq i64 %index.next, %n.vec
  br i1 %112, label %middle.block, label %vector.body, !llvm.loop !14

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %109, %n.vec
  br i1 %cmp.n, label %._crit_edge221, label %scalar.ph.preheader

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

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %.1196218 = phi i64 [ %113, %scalar.ph ], [ %.1196218.ph, %scalar.ph.preheader ]
  %gep = getelementptr i64, ptr %gep232, i64 %.1196218
  store i64 %.1196218, ptr %gep, align 8, !tbaa !5
  %113 = add nuw i64 %.1196218, 1
  %exitcond246.not = icmp eq i64 %.1196218, %109
  br i1 %exitcond246.not, label %._crit_edge221, label %scalar.ph, !llvm.loop !15

._crit_edge221:                                   ; preds = %scalar.ph, %middle.block, %108
  %114 = add nsw i64 %.0192225, 1
  %115 = load i64, ptr %13, align 8, !tbaa !5
  %.not201.not = icmp slt i64 %.0192225, %115
  br i1 %.not201.not, label %68, label %._crit_edge228, !llvm.loop !16

._crit_edge228:                                   ; preds = %._crit_edge221, %55
  %116 = load i64, ptr %22, align 8, !tbaa !5
  %117 = icmp sgt i64 %116, 0
  br i1 %117, label %.lr.ph243, label %.loopexit

.lr.ph243:                                        ; preds = %._crit_edge228
  %118 = getelementptr i64, ptr %33, i64 %39
  %119 = add i64 %27, 1
  %120 = add i64 %30, 1
  %121 = getelementptr i64, ptr %33, i64 %57
  %invariant.gep239 = getelementptr i8, ptr %121, i64 -8
  %122 = getelementptr i64, ptr %121, i64 %39
  br label %123

123:                                              ; preds = %.lr.ph243, %._crit_edge238
  %.0191241 = phi i64 [ %116, %.lr.ph243 ], [ %153, %._crit_edge238 ]
  %124 = icmp eq i64 %.0191241, 1
  br i1 %124, label %.thread248, label %125

.thread248:                                       ; preds = %123
  store i64 1, ptr %13, align 8, !tbaa !5
  br label %.lr.ph237.preheader

125:                                              ; preds = %123
  %126 = add nsw i64 %.0191241, -1
  store i64 %126, ptr %13, align 8, !tbaa !5
  %127 = call i64 @pow_ii(ptr noundef nonnull @c__2, ptr noundef nonnull %13) #3
  %128 = shl i64 %127, 1
  %129 = add nsw i64 %128, -1
  store i64 %129, ptr %13, align 8, !tbaa !5
  %.not202234.not = icmp slt i64 %127, %128
  br i1 %.not202234.not, label %.lr.ph237.preheader, label %._crit_edge238

.lr.ph237.preheader:                              ; preds = %.thread248, %125
  %.0193253 = phi i64 [ 1, %.thread248 ], [ %129, %125 ]
  %.0194252 = phi i64 [ 1, %.thread248 ], [ %127, %125 ]
  br label %.lr.ph237

130:                                              ; preds = %.lr.ph237
  %131 = add nsw i64 %.1235, 1
  %132 = load i64, ptr %13, align 8, !tbaa !5
  %.not202.not = icmp slt i64 %.1235, %132
  br i1 %.not202.not, label %.lr.ph237, label %._crit_edge238, !llvm.loop !17

.lr.ph237:                                        ; preds = %.lr.ph237.preheader, %130
  %.1235 = phi i64 [ %131, %130 ], [ %.0194252, %.lr.ph237.preheader ]
  %133 = getelementptr inbounds i64, ptr %33, i64 %.1235
  %134 = load i64, ptr %133, align 8, !tbaa !5
  %135 = getelementptr i64, ptr %118, i64 %.1235
  %136 = load i64, ptr %135, align 8, !tbaa !5
  store i64 %136, ptr %16, align 8, !tbaa !5
  %gep233 = getelementptr i64, ptr %invariant.gep222, i64 %.1235
  %137 = load i64, ptr %gep233, align 8, !tbaa !5
  store i64 %137, ptr %17, align 8, !tbaa !5
  %138 = sub nsw i64 %134, %136
  %139 = load i64, ptr %1, align 8, !tbaa !5
  %140 = icmp ne i64 %139, 0
  %141 = icmp ne i64 %.1235, %.0193253
  %or.cond209.not = or i1 %140, %141
  %storemerge = zext i1 %or.cond209.not to i64
  store i64 %storemerge, ptr %24, align 8, !tbaa !5
  %142 = getelementptr inbounds double, ptr %25, i64 %134
  %143 = load double, ptr %142, align 8, !tbaa !18
  store double %143, ptr %23, align 8, !tbaa !18
  %144 = getelementptr inbounds double, ptr %26, i64 %134
  %145 = load double, ptr %144, align 8, !tbaa !18
  store double %145, ptr %21, align 8, !tbaa !18
  %146 = getelementptr inbounds double, ptr %25, i64 %138
  %147 = mul i64 %138, %119
  %148 = getelementptr inbounds double, ptr %29, i64 %147
  %149 = mul i64 %138, %120
  %150 = getelementptr inbounds double, ptr %32, i64 %149
  %gep240 = getelementptr i64, ptr %invariant.gep239, i64 %138
  %151 = call i32 @dlasd1_(ptr noundef nonnull %16, ptr noundef nonnull %17, ptr noundef nonnull %24, ptr noundef nonnull %146, ptr noundef nonnull %23, ptr noundef nonnull %21, ptr noundef %148, ptr noundef nonnull %5, ptr noundef %150, ptr noundef nonnull %7, ptr noundef %gep240, ptr noundef %122, ptr noundef %10, ptr noundef nonnull %11) #3
  %152 = load i64, ptr %11, align 8, !tbaa !5
  %.not203 = icmp eq i64 %152, 0
  br i1 %.not203, label %130, label %.loopexit

._crit_edge238:                                   ; preds = %130, %125
  %153 = add nsw i64 %.0191241, -1
  %154 = icmp sgt i64 %.0191241, 1
  br i1 %154, label %123, label %.loopexit, !llvm.loop !20

.loopexit:                                        ; preds = %97, %68, %._crit_edge238, %.lr.ph237, %._crit_edge228, %53, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #3
  ret i32 0
}

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

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

declare i32 @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 i32 @dlasdt_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare i64 @pow_ii(ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @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 = !{!"long", !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,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopInstSimplifyPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass