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

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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@c__9 = external hidden global i64, align 8
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i64, align 8
@c_b15 = external hidden global double, align 8
@c__1 = external hidden global i64, align 8
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b29 = external hidden global double, align 8
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [2 x i8], align 1

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

105:                                              ; preds = %14
  store i64 1, ptr %60, align 8, !tbaa !9
  br label %106

106:                                              ; preds = %105, %14
  %107 = load ptr, ptr %16, align 8, !tbaa !5
  %108 = call i64 @lsame_(ptr noundef %107, ptr noundef @.str.1)
  %109 = icmp ne i64 %108, 0
  br i1 %109, label %110, label %111

110:                                              ; preds = %106
  store i64 2, ptr %60, align 8, !tbaa !9
  br label %111

111:                                              ; preds = %110, %106
  %112 = load ptr, ptr %17, align 8, !tbaa !5
  %113 = call i64 @lsame_(ptr noundef %112, ptr noundef @.str.2)
  %114 = icmp ne i64 %113, 0
  br i1 %114, label %115, label %116

115:                                              ; preds = %111
  store i64 0, ptr %64, align 8, !tbaa !9
  br label %129

116:                                              ; preds = %111
  %117 = load ptr, ptr %17, align 8, !tbaa !5
  %118 = call i64 @lsame_(ptr noundef %117, ptr noundef @.str.3)
  %119 = icmp ne i64 %118, 0
  br i1 %119, label %120, label %121

120:                                              ; preds = %116
  store i64 1, ptr %64, align 8, !tbaa !9
  br label %128

121:                                              ; preds = %116
  %122 = load ptr, ptr %17, align 8, !tbaa !5
  %123 = call i64 @lsame_(ptr noundef %122, ptr noundef @.str.4)
  %124 = icmp ne i64 %123, 0
  br i1 %124, label %125, label %126

125:                                              ; preds = %121
  store i64 2, ptr %64, align 8, !tbaa !9
  br label %127

126:                                              ; preds = %121
  store i64 -1, ptr %64, align 8, !tbaa !9
  br label %127

127:                                              ; preds = %126, %125
  br label %128

128:                                              ; preds = %127, %120
  br label %129

129:                                              ; preds = %128, %115
  %130 = load i64, ptr %60, align 8, !tbaa !9
  %131 = icmp eq i64 %130, 0
  br i1 %131, label %132, label %134

132:                                              ; preds = %129
  %133 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -1, ptr %133, align 8, !tbaa !9
  br label %179

134:                                              ; preds = %129
  %135 = load i64, ptr %64, align 8, !tbaa !9
  %136 = icmp slt i64 %135, 0
  br i1 %136, label %137, label %139

137:                                              ; preds = %134
  %138 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -2, ptr %138, align 8, !tbaa !9
  br label %178

139:                                              ; preds = %134
  %140 = load ptr, ptr %18, align 8, !tbaa !5
  %141 = load i64, ptr %140, align 8, !tbaa !9
  %142 = icmp slt i64 %141, 0
  br i1 %142, label %143, label %145

143:                                              ; preds = %139
  %144 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -3, ptr %144, align 8, !tbaa !9
  br label %177

145:                                              ; preds = %139
  %146 = load ptr, ptr %22, align 8, !tbaa !5
  %147 = load i64, ptr %146, align 8, !tbaa !9
  %148 = icmp slt i64 %147, 1
  br i1 %148, label %158, label %149

149:                                              ; preds = %145
  %150 = load i64, ptr %64, align 8, !tbaa !9
  %151 = icmp eq i64 %150, 2
  br i1 %151, label %152, label %160

152:                                              ; preds = %149
  %153 = load ptr, ptr %22, align 8, !tbaa !5
  %154 = load i64, ptr %153, align 8, !tbaa !9
  %155 = load ptr, ptr %18, align 8, !tbaa !5
  %156 = load i64, ptr %155, align 8, !tbaa !9
  %157 = icmp slt i64 %154, %156
  br i1 %157, label %158, label %160

158:                                              ; preds = %152, %145
  %159 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -7, ptr %159, align 8, !tbaa !9
  br label %176

160:                                              ; preds = %152, %149
  %161 = load ptr, ptr %24, align 8, !tbaa !5
  %162 = load i64, ptr %161, align 8, !tbaa !9
  %163 = icmp slt i64 %162, 1
  br i1 %163, label %173, label %164

164:                                              ; preds = %160
  %165 = load i64, ptr %64, align 8, !tbaa !9
  %166 = icmp eq i64 %165, 2
  br i1 %166, label %167, label %175

167:                                              ; preds = %164
  %168 = load ptr, ptr %24, align 8, !tbaa !5
  %169 = load i64, ptr %168, align 8, !tbaa !9
  %170 = load ptr, ptr %18, align 8, !tbaa !5
  %171 = load i64, ptr %170, align 8, !tbaa !9
  %172 = icmp slt i64 %169, %171
  br i1 %172, label %173, label %175

173:                                              ; preds = %167, %160
  %174 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -9, ptr %174, align 8, !tbaa !9
  br label %175

175:                                              ; preds = %173, %167, %164
  br label %176

176:                                              ; preds = %175, %158
  br label %177

177:                                              ; preds = %176, %143
  br label %178

178:                                              ; preds = %177, %137
  br label %179

179:                                              ; preds = %178, %132
  %180 = load ptr, ptr %29, align 8, !tbaa !5
  %181 = load i64, ptr %180, align 8, !tbaa !9
  %182 = icmp ne i64 %181, 0
  br i1 %182, label %183, label %188

183:                                              ; preds = %179
  %184 = load ptr, ptr %29, align 8, !tbaa !5
  %185 = load i64, ptr %184, align 8, !tbaa !9
  %186 = sub nsw i64 0, %185
  store i64 %186, ptr %34, align 8, !tbaa !9
  %187 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %34)
  store i32 0, ptr %15, align 4
  store i32 1, ptr %72, align 4
  br label %1112

188:                                              ; preds = %179
  %189 = load ptr, ptr %18, align 8, !tbaa !5
  %190 = load i64, ptr %189, align 8, !tbaa !9
  %191 = icmp eq i64 %190, 0
  br i1 %191, label %192, label %193

192:                                              ; preds = %188
  store i32 0, ptr %15, align 4
  store i32 1, ptr %72, align 4
  br label %1112

193:                                              ; preds = %188
  %194 = call i64 @ilaenv_(ptr noundef @c__9, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef @c__0, ptr noundef @c__0, ptr noundef @c__0, ptr noundef @c__0)
  store i64 %194, ptr %69, align 8, !tbaa !9
  %195 = load ptr, ptr %18, align 8, !tbaa !5
  %196 = load i64, ptr %195, align 8, !tbaa !9
  %197 = icmp eq i64 %196, 1
  br i1 %197, label %198, label %248

198:                                              ; preds = %193
  %199 = load i64, ptr %64, align 8, !tbaa !9
  %200 = icmp eq i64 %199, 1
  br i1 %200, label %201, label %214

201:                                              ; preds = %198
  %202 = load ptr, ptr %19, align 8, !tbaa !5
  %203 = getelementptr inbounds double, ptr %202, i64 1
  %204 = call double @d_sign(ptr noundef @c_b15, ptr noundef %203)
  %205 = load ptr, ptr %25, align 8, !tbaa !5
  %206 = getelementptr inbounds double, ptr %205, i64 1
  store double %204, ptr %206, align 8, !tbaa !11
  %207 = load ptr, ptr %25, align 8, !tbaa !5
  %208 = load i64, ptr %69, align 8, !tbaa !9
  %209 = load ptr, ptr %18, align 8, !tbaa !5
  %210 = load i64, ptr %209, align 8, !tbaa !9
  %211 = mul nsw i64 %208, %210
  %212 = add nsw i64 %211, 1
  %213 = getelementptr inbounds double, ptr %207, i64 %212
  store double 1.000000e+00, ptr %213, align 8, !tbaa !11
  br label %230

214:                                              ; preds = %198
  %215 = load i64, ptr %64, align 8, !tbaa !9
  %216 = icmp eq i64 %215, 2
  br i1 %216, label %217, label %229

217:                                              ; preds = %214
  %218 = load ptr, ptr %19, align 8, !tbaa !5
  %219 = getelementptr inbounds double, ptr %218, i64 1
  %220 = call double @d_sign(ptr noundef @c_b15, ptr noundef %219)
  %221 = load ptr, ptr %21, align 8, !tbaa !5
  %222 = load i64, ptr %30, align 8, !tbaa !9
  %223 = add nsw i64 %222, 1
  %224 = getelementptr inbounds double, ptr %221, i64 %223
  store double %220, ptr %224, align 8, !tbaa !11
  %225 = load ptr, ptr %23, align 8, !tbaa !5
  %226 = load i64, ptr %32, align 8, !tbaa !9
  %227 = add nsw i64 %226, 1
  %228 = getelementptr inbounds double, ptr %225, i64 %227
  store double 1.000000e+00, ptr %228, align 8, !tbaa !11
  br label %229

229:                                              ; preds = %217, %214
  br label %230

230:                                              ; preds = %229, %201
  %231 = load ptr, ptr %19, align 8, !tbaa !5
  %232 = getelementptr inbounds double, ptr %231, i64 1
  %233 = load double, ptr %232, align 8, !tbaa !11
  %234 = fcmp oge double %233, 0.000000e+00
  br i1 %234, label %235, label %239

235:                                              ; preds = %230
  %236 = load ptr, ptr %19, align 8, !tbaa !5
  %237 = getelementptr inbounds double, ptr %236, i64 1
  %238 = load double, ptr %237, align 8, !tbaa !11
  br label %244

239:                                              ; preds = %230
  %240 = load ptr, ptr %19, align 8, !tbaa !5
  %241 = getelementptr inbounds double, ptr %240, i64 1
  %242 = load double, ptr %241, align 8, !tbaa !11
  %243 = fneg double %242
  br label %244

244:                                              ; preds = %239, %235
  %245 = phi double [ %238, %235 ], [ %243, %239 ]
  %246 = load ptr, ptr %19, align 8, !tbaa !5
  %247 = getelementptr inbounds double, ptr %246, i64 1
  store double %245, ptr %247, align 8, !tbaa !11
  store i32 0, ptr %15, align 4
  store i32 1, ptr %72, align 4
  br label %1112

248:                                              ; preds = %193
  %249 = load ptr, ptr %18, align 8, !tbaa !5
  %250 = load i64, ptr %249, align 8, !tbaa !9
  %251 = sub nsw i64 %250, 1
  store i64 %251, ptr %50, align 8, !tbaa !9
  store i64 1, ptr %70, align 8, !tbaa !9
  store i64 3, ptr %68, align 8, !tbaa !9
  %252 = load i64, ptr %64, align 8, !tbaa !9
  %253 = icmp eq i64 %252, 1
  br i1 %253, label %254, label %272

254:                                              ; preds = %248
  %255 = load ptr, ptr %18, align 8, !tbaa !5
  %256 = load ptr, ptr %19, align 8, !tbaa !5
  %257 = getelementptr inbounds double, ptr %256, i64 1
  %258 = load ptr, ptr %25, align 8, !tbaa !5
  %259 = getelementptr inbounds double, ptr %258, i64 1
  %260 = call i32 @f2c_dcopy(ptr noundef %255, ptr noundef %257, ptr noundef @c__1, ptr noundef %259, ptr noundef @c__1)
  %261 = load ptr, ptr %18, align 8, !tbaa !5
  %262 = load i64, ptr %261, align 8, !tbaa !9
  %263 = sub nsw i64 %262, 1
  store i64 %263, ptr %34, align 8, !tbaa !9
  %264 = load ptr, ptr %20, align 8, !tbaa !5
  %265 = getelementptr inbounds double, ptr %264, i64 1
  %266 = load ptr, ptr %25, align 8, !tbaa !5
  %267 = load ptr, ptr %18, align 8, !tbaa !5
  %268 = load i64, ptr %267, align 8, !tbaa !9
  %269 = add nsw i64 %268, 1
  %270 = getelementptr inbounds double, ptr %266, i64 %269
  %271 = call i32 @f2c_dcopy(ptr noundef %34, ptr noundef %265, ptr noundef @c__1, ptr noundef %270, ptr noundef @c__1)
  br label %272

272:                                              ; preds = %254, %248
  %273 = load i64, ptr %60, align 8, !tbaa !9
  %274 = icmp eq i64 %273, 2
  br i1 %274, label %275, label %360

275:                                              ; preds = %272
  store i64 5, ptr %68, align 8, !tbaa !9
  %276 = load ptr, ptr %18, align 8, !tbaa !5
  %277 = load i64, ptr %276, align 8, !tbaa !9
  %278 = shl i64 %277, 1
  %279 = sub nsw i64 %278, 1
  store i64 %279, ptr %70, align 8, !tbaa !9
  %280 = load ptr, ptr %18, align 8, !tbaa !5
  %281 = load i64, ptr %280, align 8, !tbaa !9
  %282 = sub nsw i64 %281, 1
  store i64 %282, ptr %34, align 8, !tbaa !9
  store i64 1, ptr %37, align 8, !tbaa !9
  br label %283

283:                                              ; preds = %356, %275
  %284 = load i64, ptr %37, align 8, !tbaa !9
  %285 = load i64, ptr %34, align 8, !tbaa !9
  %286 = icmp sle i64 %284, %285
  br i1 %286, label %287, label %359

287:                                              ; preds = %283
  %288 = load ptr, ptr %19, align 8, !tbaa !5
  %289 = load i64, ptr %37, align 8, !tbaa !9
  %290 = getelementptr inbounds double, ptr %288, i64 %289
  %291 = load ptr, ptr %20, align 8, !tbaa !5
  %292 = load i64, ptr %37, align 8, !tbaa !9
  %293 = getelementptr inbounds double, ptr %291, i64 %292
  %294 = call i32 @dlartg_(ptr noundef %290, ptr noundef %293, ptr noundef %46, ptr noundef %49, ptr noundef %41)
  %295 = load double, ptr %41, align 8, !tbaa !11
  %296 = load ptr, ptr %19, align 8, !tbaa !5
  %297 = load i64, ptr %37, align 8, !tbaa !9
  %298 = getelementptr inbounds double, ptr %296, i64 %297
  store double %295, ptr %298, align 8, !tbaa !11
  %299 = load double, ptr %49, align 8, !tbaa !11
  %300 = load ptr, ptr %19, align 8, !tbaa !5
  %301 = load i64, ptr %37, align 8, !tbaa !9
  %302 = add nsw i64 %301, 1
  %303 = getelementptr inbounds double, ptr %300, i64 %302
  %304 = load double, ptr %303, align 8, !tbaa !11
  %305 = fmul double %299, %304
  %306 = load ptr, ptr %20, align 8, !tbaa !5
  %307 = load i64, ptr %37, align 8, !tbaa !9
  %308 = getelementptr inbounds double, ptr %306, i64 %307
  store double %305, ptr %308, align 8, !tbaa !11
  %309 = load double, ptr %46, align 8, !tbaa !11
  %310 = load ptr, ptr %19, align 8, !tbaa !5
  %311 = load i64, ptr %37, align 8, !tbaa !9
  %312 = add nsw i64 %311, 1
  %313 = getelementptr inbounds double, ptr %310, i64 %312
  %314 = load double, ptr %313, align 8, !tbaa !11
  %315 = fmul double %309, %314
  %316 = load ptr, ptr %19, align 8, !tbaa !5
  %317 = load i64, ptr %37, align 8, !tbaa !9
  %318 = add nsw i64 %317, 1
  %319 = getelementptr inbounds double, ptr %316, i64 %318
  store double %315, ptr %319, align 8, !tbaa !11
  %320 = load i64, ptr %64, align 8, !tbaa !9
  %321 = icmp eq i64 %320, 1
  br i1 %321, label %322, label %339

322:                                              ; preds = %287
  %323 = load double, ptr %46, align 8, !tbaa !11
  %324 = load ptr, ptr %25, align 8, !tbaa !5
  %325 = load i64, ptr %37, align 8, !tbaa !9
  %326 = load ptr, ptr %18, align 8, !tbaa !5
  %327 = load i64, ptr %326, align 8, !tbaa !9
  %328 = shl i64 %327, 1
  %329 = add nsw i64 %325, %328
  %330 = getelementptr inbounds double, ptr %324, i64 %329
  store double %323, ptr %330, align 8, !tbaa !11
  %331 = load double, ptr %49, align 8, !tbaa !11
  %332 = load ptr, ptr %25, align 8, !tbaa !5
  %333 = load i64, ptr %37, align 8, !tbaa !9
  %334 = load ptr, ptr %18, align 8, !tbaa !5
  %335 = load i64, ptr %334, align 8, !tbaa !9
  %336 = mul nsw i64 %335, 3
  %337 = add nsw i64 %333, %336
  %338 = getelementptr inbounds double, ptr %332, i64 %337
  store double %331, ptr %338, align 8, !tbaa !11
  br label %355

339:                                              ; preds = %287
  %340 = load i64, ptr %64, align 8, !tbaa !9
  %341 = icmp eq i64 %340, 2
  br i1 %341, label %342, label %354

342:                                              ; preds = %339
  %343 = load double, ptr %46, align 8, !tbaa !11
  %344 = load ptr, ptr %27, align 8, !tbaa !5
  %345 = load i64, ptr %37, align 8, !tbaa !9
  %346 = getelementptr inbounds double, ptr %344, i64 %345
  store double %343, ptr %346, align 8, !tbaa !11
  %347 = load double, ptr %49, align 8, !tbaa !11
  %348 = fneg double %347
  %349 = load ptr, ptr %27, align 8, !tbaa !5
  %350 = load i64, ptr %50, align 8, !tbaa !9
  %351 = load i64, ptr %37, align 8, !tbaa !9
  %352 = add nsw i64 %350, %351
  %353 = getelementptr inbounds double, ptr %349, i64 %352
  store double %348, ptr %353, align 8, !tbaa !11
  br label %354

354:                                              ; preds = %342, %339
  br label %355

355:                                              ; preds = %354, %322
  br label %356

356:                                              ; preds = %355
  %357 = load i64, ptr %37, align 8, !tbaa !9
  %358 = add nsw i64 %357, 1
  store i64 %358, ptr %37, align 8, !tbaa !9
  br label %283, !llvm.loop !13

359:                                              ; preds = %283
  br label %360

360:                                              ; preds = %359, %272
  %361 = load i64, ptr %64, align 8, !tbaa !9
  %362 = icmp eq i64 %361, 0
  br i1 %362, label %363, label %386

363:                                              ; preds = %360
  %364 = load ptr, ptr %18, align 8, !tbaa !5
  %365 = load ptr, ptr %19, align 8, !tbaa !5
  %366 = getelementptr inbounds double, ptr %365, i64 1
  %367 = load ptr, ptr %20, align 8, !tbaa !5
  %368 = getelementptr inbounds double, ptr %367, i64 1
  %369 = load ptr, ptr %23, align 8, !tbaa !5
  %370 = load i64, ptr %33, align 8, !tbaa !9
  %371 = getelementptr inbounds double, ptr %369, i64 %370
  %372 = load ptr, ptr %24, align 8, !tbaa !5
  %373 = load ptr, ptr %21, align 8, !tbaa !5
  %374 = load i64, ptr %31, align 8, !tbaa !9
  %375 = getelementptr inbounds double, ptr %373, i64 %374
  %376 = load ptr, ptr %22, align 8, !tbaa !5
  %377 = load ptr, ptr %21, align 8, !tbaa !5
  %378 = load i64, ptr %31, align 8, !tbaa !9
  %379 = getelementptr inbounds double, ptr %377, i64 %378
  %380 = load ptr, ptr %22, align 8, !tbaa !5
  %381 = load ptr, ptr %27, align 8, !tbaa !5
  %382 = load i64, ptr %70, align 8, !tbaa !9
  %383 = getelementptr inbounds double, ptr %381, i64 %382
  %384 = load ptr, ptr %29, align 8, !tbaa !5
  %385 = call i32 @dlasdq_(ptr noundef @.str, ptr noundef @c__0, ptr noundef %364, ptr noundef @c__0, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %366, ptr noundef %368, ptr noundef %371, ptr noundef %372, ptr noundef %375, ptr noundef %376, ptr noundef %379, ptr noundef %380, ptr noundef %383, ptr noundef %384)
  br label %965

386:                                              ; preds = %360
  %387 = load ptr, ptr %18, align 8, !tbaa !5
  %388 = load i64, ptr %387, align 8, !tbaa !9
  %389 = load i64, ptr %69, align 8, !tbaa !9
  %390 = icmp sle i64 %388, %389
  br i1 %390, label %391, label %511

391:                                              ; preds = %386
  %392 = load i64, ptr %64, align 8, !tbaa !9
  %393 = icmp eq i64 %392, 2
  br i1 %393, label %394, label %433

394:                                              ; preds = %391
  %395 = load ptr, ptr %18, align 8, !tbaa !5
  %396 = load ptr, ptr %18, align 8, !tbaa !5
  %397 = load ptr, ptr %21, align 8, !tbaa !5
  %398 = load i64, ptr %31, align 8, !tbaa !9
  %399 = getelementptr inbounds double, ptr %397, i64 %398
  %400 = load ptr, ptr %22, align 8, !tbaa !5
  %401 = call i32 @dlaset_(ptr noundef @.str.7, ptr noundef %395, ptr noundef %396, ptr noundef @c_b29, ptr noundef @c_b15, ptr noundef %399, ptr noundef %400)
  %402 = load ptr, ptr %18, align 8, !tbaa !5
  %403 = load ptr, ptr %18, align 8, !tbaa !5
  %404 = load ptr, ptr %23, align 8, !tbaa !5
  %405 = load i64, ptr %33, align 8, !tbaa !9
  %406 = getelementptr inbounds double, ptr %404, i64 %405
  %407 = load ptr, ptr %24, align 8, !tbaa !5
  %408 = call i32 @dlaset_(ptr noundef @.str.7, ptr noundef %402, ptr noundef %403, ptr noundef @c_b29, ptr noundef @c_b15, ptr noundef %406, ptr noundef %407)
  %409 = load ptr, ptr %18, align 8, !tbaa !5
  %410 = load ptr, ptr %18, align 8, !tbaa !5
  %411 = load ptr, ptr %18, align 8, !tbaa !5
  %412 = load ptr, ptr %19, align 8, !tbaa !5
  %413 = getelementptr inbounds double, ptr %412, i64 1
  %414 = load ptr, ptr %20, align 8, !tbaa !5
  %415 = getelementptr inbounds double, ptr %414, i64 1
  %416 = load ptr, ptr %23, align 8, !tbaa !5
  %417 = load i64, ptr %33, align 8, !tbaa !9
  %418 = getelementptr inbounds double, ptr %416, i64 %417
  %419 = load ptr, ptr %24, align 8, !tbaa !5
  %420 = load ptr, ptr %21, align 8, !tbaa !5
  %421 = load i64, ptr %31, align 8, !tbaa !9
  %422 = getelementptr inbounds double, ptr %420, i64 %421
  %423 = load ptr, ptr %22, align 8, !tbaa !5
  %424 = load ptr, ptr %21, align 8, !tbaa !5
  %425 = load i64, ptr %31, align 8, !tbaa !9
  %426 = getelementptr inbounds double, ptr %424, i64 %425
  %427 = load ptr, ptr %22, align 8, !tbaa !5
  %428 = load ptr, ptr %27, align 8, !tbaa !5
  %429 = load i64, ptr %70, align 8, !tbaa !9
  %430 = getelementptr inbounds double, ptr %428, i64 %429
  %431 = load ptr, ptr %29, align 8, !tbaa !5
  %432 = call i32 @dlasdq_(ptr noundef @.str, ptr noundef @c__0, ptr noundef %409, ptr noundef %410, ptr noundef %411, ptr noundef @c__0, ptr noundef %413, ptr noundef %415, ptr noundef %418, ptr noundef %419, ptr noundef %422, ptr noundef %423, ptr noundef %426, ptr noundef %427, ptr noundef %430, ptr noundef %431)
  br label %510

433:                                              ; preds = %391
  %434 = load i64, ptr %64, align 8, !tbaa !9
  %435 = icmp eq i64 %434, 1
  br i1 %435, label %436, label %509

436:                                              ; preds = %433
  store i64 1, ptr %48, align 8, !tbaa !9
  %437 = load i64, ptr %48, align 8, !tbaa !9
  %438 = load ptr, ptr %18, align 8, !tbaa !5
  %439 = load i64, ptr %438, align 8, !tbaa !9
  %440 = add nsw i64 %437, %439
  store i64 %440, ptr %52, align 8, !tbaa !9
  %441 = load ptr, ptr %18, align 8, !tbaa !5
  %442 = load ptr, ptr %18, align 8, !tbaa !5
  %443 = load ptr, ptr %25, align 8, !tbaa !5
  %444 = load i64, ptr %48, align 8, !tbaa !9
  %445 = load i64, ptr %68, align 8, !tbaa !9
  %446 = sub nsw i64 %445, 1
  %447 = load ptr, ptr %18, align 8, !tbaa !5
  %448 = load i64, ptr %447, align 8, !tbaa !9
  %449 = mul nsw i64 %446, %448
  %450 = add nsw i64 %444, %449
  %451 = getelementptr inbounds double, ptr %443, i64 %450
  %452 = load ptr, ptr %18, align 8, !tbaa !5
  %453 = call i32 @dlaset_(ptr noundef @.str.7, ptr noundef %441, ptr noundef %442, ptr noundef @c_b29, ptr noundef @c_b15, ptr noundef %451, ptr noundef %452)
  %454 = load ptr, ptr %18, align 8, !tbaa !5
  %455 = load ptr, ptr %18, align 8, !tbaa !5
  %456 = load ptr, ptr %25, align 8, !tbaa !5
  %457 = load i64, ptr %52, align 8, !tbaa !9
  %458 = load i64, ptr %68, align 8, !tbaa !9
  %459 = sub nsw i64 %458, 1
  %460 = load ptr, ptr %18, align 8, !tbaa !5
  %461 = load i64, ptr %460, align 8, !tbaa !9
  %462 = mul nsw i64 %459, %461
  %463 = add nsw i64 %457, %462
  %464 = getelementptr inbounds double, ptr %456, i64 %463
  %465 = load ptr, ptr %18, align 8, !tbaa !5
  %466 = call i32 @dlaset_(ptr noundef @.str.7, ptr noundef %454, ptr noundef %455, ptr noundef @c_b29, ptr noundef @c_b15, ptr noundef %464, ptr noundef %465)
  %467 = load ptr, ptr %18, align 8, !tbaa !5
  %468 = load ptr, ptr %18, align 8, !tbaa !5
  %469 = load ptr, ptr %18, align 8, !tbaa !5
  %470 = load ptr, ptr %19, align 8, !tbaa !5
  %471 = getelementptr inbounds double, ptr %470, i64 1
  %472 = load ptr, ptr %20, align 8, !tbaa !5
  %473 = getelementptr inbounds double, ptr %472, i64 1
  %474 = load ptr, ptr %25, align 8, !tbaa !5
  %475 = load i64, ptr %52, align 8, !tbaa !9
  %476 = load i64, ptr %68, align 8, !tbaa !9
  %477 = sub nsw i64 %476, 1
  %478 = load ptr, ptr %18, align 8, !tbaa !5
  %479 = load i64, ptr %478, align 8, !tbaa !9
  %480 = mul nsw i64 %477, %479
  %481 = add nsw i64 %475, %480
  %482 = getelementptr inbounds double, ptr %474, i64 %481
  %483 = load ptr, ptr %18, align 8, !tbaa !5
  %484 = load ptr, ptr %25, align 8, !tbaa !5
  %485 = load i64, ptr %48, align 8, !tbaa !9
  %486 = load i64, ptr %68, align 8, !tbaa !9
  %487 = sub nsw i64 %486, 1
  %488 = load ptr, ptr %18, align 8, !tbaa !5
  %489 = load i64, ptr %488, align 8, !tbaa !9
  %490 = mul nsw i64 %487, %489
  %491 = add nsw i64 %485, %490
  %492 = getelementptr inbounds double, ptr %484, i64 %491
  %493 = load ptr, ptr %18, align 8, !tbaa !5
  %494 = load ptr, ptr %25, align 8, !tbaa !5
  %495 = load i64, ptr %48, align 8, !tbaa !9
  %496 = load i64, ptr %68, align 8, !tbaa !9
  %497 = sub nsw i64 %496, 1
  %498 = load ptr, ptr %18, align 8, !tbaa !5
  %499 = load i64, ptr %498, align 8, !tbaa !9
  %500 = mul nsw i64 %497, %499
  %501 = add nsw i64 %495, %500
  %502 = getelementptr inbounds double, ptr %494, i64 %501
  %503 = load ptr, ptr %18, align 8, !tbaa !5
  %504 = load ptr, ptr %27, align 8, !tbaa !5
  %505 = load i64, ptr %70, align 8, !tbaa !9
  %506 = getelementptr inbounds double, ptr %504, i64 %505
  %507 = load ptr, ptr %29, align 8, !tbaa !5
  %508 = call i32 @dlasdq_(ptr noundef @.str, ptr noundef @c__0, ptr noundef %467, ptr noundef %468, ptr noundef %469, ptr noundef @c__0, ptr noundef %471, ptr noundef %473, ptr noundef %482, ptr noundef %483, ptr noundef %492, ptr noundef %493, ptr noundef %502, ptr noundef %503, ptr noundef %506, ptr noundef %507)
  br label %509

509:                                              ; preds = %436, %433
  br label %510

510:                                              ; preds = %509, %394
  br label %965

511:                                              ; preds = %386
  %512 = load i64, ptr %64, align 8, !tbaa !9
  %513 = icmp eq i64 %512, 2
  br i1 %513, label %514, label %529

514:                                              ; preds = %511
  %515 = load ptr, ptr %18, align 8, !tbaa !5
  %516 = load ptr, ptr %18, align 8, !tbaa !5
  %517 = load ptr, ptr %21, align 8, !tbaa !5
  %518 = load i64, ptr %31, align 8, !tbaa !9
  %519 = getelementptr inbounds double, ptr %517, i64 %518
  %520 = load ptr, ptr %22, align 8, !tbaa !5
  %521 = call i32 @dlaset_(ptr noundef @.str.7, ptr noundef %515, ptr noundef %516, ptr noundef @c_b29, ptr noundef @c_b15, ptr noundef %519, ptr noundef %520)
  %522 = load ptr, ptr %18, align 8, !tbaa !5
  %523 = load ptr, ptr %18, align 8, !tbaa !5
  %524 = load ptr, ptr %23, align 8, !tbaa !5
  %525 = load i64, ptr %33, align 8, !tbaa !9
  %526 = getelementptr inbounds double, ptr %524, i64 %525
  %527 = load ptr, ptr %24, align 8, !tbaa !5
  %528 = call i32 @dlaset_(ptr noundef @.str.7, ptr noundef %522, ptr noundef %523, ptr noundef @c_b29, ptr noundef @c_b15, ptr noundef %526, ptr noundef %527)
  br label %529

529:                                              ; preds = %514, %511
  %530 = load ptr, ptr %18, align 8, !tbaa !5
  %531 = load ptr, ptr %19, align 8, !tbaa !5
  %532 = getelementptr inbounds double, ptr %531, i64 1
  %533 = load ptr, ptr %20, align 8, !tbaa !5
  %534 = getelementptr inbounds double, ptr %533, i64 1
  %535 = call double @dlanst_(ptr noundef @.str.8, ptr noundef %530, ptr noundef %532, ptr noundef %534)
  store double %535, ptr %65, align 8, !tbaa !11
  %536 = load double, ptr %65, align 8, !tbaa !11
  %537 = fcmp oeq double %536, 0.000000e+00
  br i1 %537, label %538, label %539

538:                                              ; preds = %529
  store i32 0, ptr %15, align 4
  store i32 1, ptr %72, align 4
  br label %1112

539:                                              ; preds = %529
  %540 = load ptr, ptr %18, align 8, !tbaa !5
  %541 = load ptr, ptr %19, align 8, !tbaa !5
  %542 = getelementptr inbounds double, ptr %541, i64 1
  %543 = load ptr, ptr %18, align 8, !tbaa !5
  %544 = call i32 @dlascl_(ptr noundef @.str.9, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %65, ptr noundef @c_b15, ptr noundef %540, ptr noundef @c__1, ptr noundef %542, ptr noundef %543, ptr noundef %55)
  %545 = load ptr, ptr %20, align 8, !tbaa !5
  %546 = getelementptr inbounds double, ptr %545, i64 1
  %547 = call i32 @dlascl_(ptr noundef @.str.9, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %65, ptr noundef @c_b15, ptr noundef %50, ptr noundef @c__1, ptr noundef %546, ptr noundef %50, ptr noundef %55)
  %548 = call double @dlamch_(ptr noundef @.str.10)
  store double %548, ptr %51, align 8, !tbaa !11
  %549 = load ptr, ptr %18, align 8, !tbaa !5
  %550 = load i64, ptr %549, align 8, !tbaa !9
  %551 = sitofp i64 %550 to double
  %552 = load i64, ptr %69, align 8, !tbaa !9
  %553 = add nsw i64 %552, 1
  %554 = sitofp i64 %553 to double
  %555 = fdiv double %551, %554
  %556 = call double @log(double noundef %555) #4
  %557 = call double @log(double noundef 2.000000e+00) #4
  %558 = fdiv double %556, %557
  %559 = fptosi double %558 to i64
  %560 = add nsw i64 %559, 1
  store i64 %560, ptr %57, align 8, !tbaa !9
  %561 = load i64, ptr %69, align 8, !tbaa !9
  %562 = add nsw i64 %561, 1
  store i64 %562, ptr %71, align 8, !tbaa !9
  %563 = load i64, ptr %64, align 8, !tbaa !9
  %564 = icmp eq i64 %563, 1
  br i1 %564, label %565, label %592

565:                                              ; preds = %539
  store i64 1, ptr %48, align 8, !tbaa !9
  %566 = load i64, ptr %69, align 8, !tbaa !9
  %567 = add nsw i64 %566, 1
  store i64 %567, ptr %52, align 8, !tbaa !9
  %568 = load i64, ptr %52, align 8, !tbaa !9
  %569 = load i64, ptr %71, align 8, !tbaa !9
  %570 = add nsw i64 %568, %569
  store i64 %570, ptr %53, align 8, !tbaa !9
  %571 = load i64, ptr %53, align 8, !tbaa !9
  %572 = load i64, ptr %57, align 8, !tbaa !9
  %573 = add nsw i64 %571, %572
  store i64 %573, ptr %54, align 8, !tbaa !9
  %574 = load i64, ptr %54, align 8, !tbaa !9
  %575 = load i64, ptr %57, align 8, !tbaa !9
  %576 = shl i64 %575, 1
  %577 = add nsw i64 %574, %576
  store i64 %577, ptr %42, align 8, !tbaa !9
  %578 = load i64, ptr %42, align 8, !tbaa !9
  %579 = load i64, ptr %57, align 8, !tbaa !9
  %580 = add nsw i64 %578, %579
  store i64 %580, ptr %43, align 8, !tbaa !9
  %581 = load i64, ptr %43, align 8, !tbaa !9
  %582 = add nsw i64 %581, 1
  store i64 %582, ptr %47, align 8, !tbaa !9
  %583 = load i64, ptr %47, align 8, !tbaa !9
  %584 = add nsw i64 %583, 1
  store i64 %584, ptr %59, align 8, !tbaa !9
  %585 = load i64, ptr %59, align 8, !tbaa !9
  %586 = load i64, ptr %57, align 8, !tbaa !9
  %587 = shl i64 %586, 1
  %588 = add nsw i64 %585, %587
  store i64 %588, ptr %66, align 8, !tbaa !9
  store i64 1, ptr %39, align 8, !tbaa !9
  store i64 2, ptr %67, align 8, !tbaa !9
  store i64 3, ptr %56, align 8, !tbaa !9
  %589 = load i64, ptr %56, align 8, !tbaa !9
  %590 = load i64, ptr %57, align 8, !tbaa !9
  %591 = add nsw i64 %589, %590
  store i64 %591, ptr %63, align 8, !tbaa !9
  br label %592

592:                                              ; preds = %565, %539
  %593 = load ptr, ptr %18, align 8, !tbaa !5
  %594 = load i64, ptr %593, align 8, !tbaa !9
  store i64 %594, ptr %34, align 8, !tbaa !9
  store i64 1, ptr %37, align 8, !tbaa !9
  br label %595

595:                                              ; preds = %624, %592
  %596 = load i64, ptr %37, align 8, !tbaa !9
  %597 = load i64, ptr %34, align 8, !tbaa !9
  %598 = icmp sle i64 %596, %597
  br i1 %598, label %599, label %627

599:                                              ; preds = %595
  %600 = load ptr, ptr %19, align 8, !tbaa !5
  %601 = load i64, ptr %37, align 8, !tbaa !9
  %602 = getelementptr inbounds double, ptr %600, i64 %601
  %603 = load double, ptr %602, align 8, !tbaa !11
  store double %603, ptr %36, align 8, !tbaa !11
  %604 = load double, ptr %36, align 8, !tbaa !11
  %605 = fcmp oge double %604, 0.000000e+00
  br i1 %605, label %606, label %608

606:                                              ; preds = %599
  %607 = load double, ptr %36, align 8, !tbaa !11
  br label %611

608:                                              ; preds = %599
  %609 = load double, ptr %36, align 8, !tbaa !11
  %610 = fneg double %609
  br label %611

611:                                              ; preds = %608, %606
  %612 = phi double [ %607, %606 ], [ %610, %608 ]
  %613 = load double, ptr %51, align 8, !tbaa !11
  %614 = fcmp olt double %612, %613
  br i1 %614, label %615, label %623

615:                                              ; preds = %611
  %616 = load ptr, ptr %19, align 8, !tbaa !5
  %617 = load i64, ptr %37, align 8, !tbaa !9
  %618 = getelementptr inbounds double, ptr %616, i64 %617
  %619 = call double @d_sign(ptr noundef %51, ptr noundef %618)
  %620 = load ptr, ptr %19, align 8, !tbaa !5
  %621 = load i64, ptr %37, align 8, !tbaa !9
  %622 = getelementptr inbounds double, ptr %620, i64 %621
  store double %619, ptr %622, align 8, !tbaa !11
  br label %623

623:                                              ; preds = %615, %611
  br label %624

624:                                              ; preds = %623
  %625 = load i64, ptr %37, align 8, !tbaa !9
  %626 = add nsw i64 %625, 1
  store i64 %626, ptr %37, align 8, !tbaa !9
  br label %595, !llvm.loop !15

627:                                              ; preds = %595
  store i64 1, ptr %62, align 8, !tbaa !9
  store i64 0, ptr %58, align 8, !tbaa !9
  %628 = load i64, ptr %50, align 8, !tbaa !9
  store i64 %628, ptr %34, align 8, !tbaa !9
  store i64 1, ptr %37, align 8, !tbaa !9
  br label %629

629:                                              ; preds = %956, %627
  %630 = load i64, ptr %37, align 8, !tbaa !9
  %631 = load i64, ptr %34, align 8, !tbaa !9
  %632 = icmp sle i64 %630, %631
  br i1 %632, label %633, label %959

633:                                              ; preds = %629
  %634 = load ptr, ptr %20, align 8, !tbaa !5
  %635 = load i64, ptr %37, align 8, !tbaa !9
  %636 = getelementptr inbounds double, ptr %634, i64 %635
  %637 = load double, ptr %636, align 8, !tbaa !11
  store double %637, ptr %36, align 8, !tbaa !11
  %638 = load double, ptr %36, align 8, !tbaa !11
  %639 = fcmp oge double %638, 0.000000e+00
  br i1 %639, label %640, label %642

640:                                              ; preds = %633
  %641 = load double, ptr %36, align 8, !tbaa !11
  br label %645

642:                                              ; preds = %633
  %643 = load double, ptr %36, align 8, !tbaa !11
  %644 = fneg double %643
  br label %645

645:                                              ; preds = %642, %640
  %646 = phi double [ %641, %640 ], [ %644, %642 ]
  %647 = load double, ptr %51, align 8, !tbaa !11
  %648 = fcmp olt double %646, %647
  br i1 %648, label %653, label %649

649:                                              ; preds = %645
  %650 = load i64, ptr %37, align 8, !tbaa !9
  %651 = load i64, ptr %50, align 8, !tbaa !9
  %652 = icmp eq i64 %650, %651
  br i1 %652, label %653, label %955

653:                                              ; preds = %649, %645
  %654 = load i64, ptr %37, align 8, !tbaa !9
  %655 = load i64, ptr %50, align 8, !tbaa !9
  %656 = icmp slt i64 %654, %655
  br i1 %656, label %657, label %662

657:                                              ; preds = %653
  %658 = load i64, ptr %37, align 8, !tbaa !9
  %659 = load i64, ptr %62, align 8, !tbaa !9
  %660 = sub nsw i64 %658, %659
  %661 = add nsw i64 %660, 1
  store i64 %661, ptr %61, align 8, !tbaa !9
  br label %767

662:                                              ; preds = %653
  %663 = load ptr, ptr %20, align 8, !tbaa !5
  %664 = load i64, ptr %37, align 8, !tbaa !9
  %665 = getelementptr inbounds double, ptr %663, i64 %664
  %666 = load double, ptr %665, align 8, !tbaa !11
  store double %666, ptr %36, align 8, !tbaa !11
  %667 = load double, ptr %36, align 8, !tbaa !11
  %668 = fcmp oge double %667, 0.000000e+00
  br i1 %668, label %669, label %671

669:                                              ; preds = %662
  %670 = load double, ptr %36, align 8, !tbaa !11
  br label %674

671:                                              ; preds = %662
  %672 = load double, ptr %36, align 8, !tbaa !11
  %673 = fneg double %672
  br label %674

674:                                              ; preds = %671, %669
  %675 = phi double [ %670, %669 ], [ %673, %671 ]
  %676 = load double, ptr %51, align 8, !tbaa !11
  %677 = fcmp oge double %675, %676
  br i1 %677, label %678, label %684

678:                                              ; preds = %674
  %679 = load ptr, ptr %18, align 8, !tbaa !5
  %680 = load i64, ptr %679, align 8, !tbaa !9
  %681 = load i64, ptr %62, align 8, !tbaa !9
  %682 = sub nsw i64 %680, %681
  %683 = add nsw i64 %682, 1
  store i64 %683, ptr %61, align 8, !tbaa !9
  br label %766

684:                                              ; preds = %674
  %685 = load i64, ptr %37, align 8, !tbaa !9
  %686 = load i64, ptr %62, align 8, !tbaa !9
  %687 = sub nsw i64 %685, %686
  %688 = add nsw i64 %687, 1
  store i64 %688, ptr %61, align 8, !tbaa !9
  %689 = load i64, ptr %64, align 8, !tbaa !9
  %690 = icmp eq i64 %689, 2
  br i1 %690, label %691, label %715

691:                                              ; preds = %684
  %692 = load ptr, ptr %19, align 8, !tbaa !5
  %693 = load ptr, ptr %18, align 8, !tbaa !5
  %694 = load i64, ptr %693, align 8, !tbaa !9
  %695 = getelementptr inbounds double, ptr %692, i64 %694
  %696 = call double @d_sign(ptr noundef @c_b15, ptr noundef %695)
  %697 = load ptr, ptr %21, align 8, !tbaa !5
  %698 = load ptr, ptr %18, align 8, !tbaa !5
  %699 = load i64, ptr %698, align 8, !tbaa !9
  %700 = load ptr, ptr %18, align 8, !tbaa !5
  %701 = load i64, ptr %700, align 8, !tbaa !9
  %702 = load i64, ptr %30, align 8, !tbaa !9
  %703 = mul nsw i64 %701, %702
  %704 = add nsw i64 %699, %703
  %705 = getelementptr inbounds double, ptr %697, i64 %704
  store double %696, ptr %705, align 8, !tbaa !11
  %706 = load ptr, ptr %23, align 8, !tbaa !5
  %707 = load ptr, ptr %18, align 8, !tbaa !5
  %708 = load i64, ptr %707, align 8, !tbaa !9
  %709 = load ptr, ptr %18, align 8, !tbaa !5
  %710 = load i64, ptr %709, align 8, !tbaa !9
  %711 = load i64, ptr %32, align 8, !tbaa !9
  %712 = mul nsw i64 %710, %711
  %713 = add nsw i64 %708, %712
  %714 = getelementptr inbounds double, ptr %706, i64 %713
  store double 1.000000e+00, ptr %714, align 8, !tbaa !11
  br label %747

715:                                              ; preds = %684
  %716 = load i64, ptr %64, align 8, !tbaa !9
  %717 = icmp eq i64 %716, 1
  br i1 %717, label %718, label %746

718:                                              ; preds = %715
  %719 = load ptr, ptr %19, align 8, !tbaa !5
  %720 = load ptr, ptr %18, align 8, !tbaa !5
  %721 = load i64, ptr %720, align 8, !tbaa !9
  %722 = getelementptr inbounds double, ptr %719, i64 %721
  %723 = call double @d_sign(ptr noundef @c_b15, ptr noundef %722)
  %724 = load ptr, ptr %25, align 8, !tbaa !5
  %725 = load ptr, ptr %18, align 8, !tbaa !5
  %726 = load i64, ptr %725, align 8, !tbaa !9
  %727 = load i64, ptr %68, align 8, !tbaa !9
  %728 = sub nsw i64 %727, 1
  %729 = load ptr, ptr %18, align 8, !tbaa !5
  %730 = load i64, ptr %729, align 8, !tbaa !9
  %731 = mul nsw i64 %728, %730
  %732 = add nsw i64 %726, %731
  %733 = getelementptr inbounds double, ptr %724, i64 %732
  store double %723, ptr %733, align 8, !tbaa !11
  %734 = load ptr, ptr %25, align 8, !tbaa !5
  %735 = load ptr, ptr %18, align 8, !tbaa !5
  %736 = load i64, ptr %735, align 8, !tbaa !9
  %737 = load i64, ptr %69, align 8, !tbaa !9
  %738 = load i64, ptr %68, align 8, !tbaa !9
  %739 = add nsw i64 %737, %738
  %740 = sub nsw i64 %739, 1
  %741 = load ptr, ptr %18, align 8, !tbaa !5
  %742 = load i64, ptr %741, align 8, !tbaa !9
  %743 = mul nsw i64 %740, %742
  %744 = add nsw i64 %736, %743
  %745 = getelementptr inbounds double, ptr %734, i64 %744
  store double 1.000000e+00, ptr %745, align 8, !tbaa !11
  br label %746

746:                                              ; preds = %718, %715
  br label %747

747:                                              ; preds = %746, %691
  %748 = load ptr, ptr %19, align 8, !tbaa !5
  %749 = load ptr, ptr %18, align 8, !tbaa !5
  %750 = load i64, ptr %749, align 8, !tbaa !9
  %751 = getelementptr inbounds double, ptr %748, i64 %750
  %752 = load double, ptr %751, align 8, !tbaa !11
  store double %752, ptr %36, align 8, !tbaa !11
  %753 = load double, ptr %36, align 8, !tbaa !11
  %754 = fcmp oge double %753, 0.000000e+00
  br i1 %754, label %755, label %757

755:                                              ; preds = %747
  %756 = load double, ptr %36, align 8, !tbaa !11
  br label %760

757:                                              ; preds = %747
  %758 = load double, ptr %36, align 8, !tbaa !11
  %759 = fneg double %758
  br label %760

760:                                              ; preds = %757, %755
  %761 = phi double [ %756, %755 ], [ %759, %757 ]
  %762 = load ptr, ptr %19, align 8, !tbaa !5
  %763 = load ptr, ptr %18, align 8, !tbaa !5
  %764 = load i64, ptr %763, align 8, !tbaa !9
  %765 = getelementptr inbounds double, ptr %762, i64 %764
  store double %761, ptr %765, align 8, !tbaa !11
  br label %766

766:                                              ; preds = %760, %678
  br label %767

767:                                              ; preds = %766, %657
  %768 = load i64, ptr %64, align 8, !tbaa !9
  %769 = icmp eq i64 %768, 2
  br i1 %769, label %770, label %800

770:                                              ; preds = %767
  %771 = load ptr, ptr %19, align 8, !tbaa !5
  %772 = load i64, ptr %62, align 8, !tbaa !9
  %773 = getelementptr inbounds double, ptr %771, i64 %772
  %774 = load ptr, ptr %20, align 8, !tbaa !5
  %775 = load i64, ptr %62, align 8, !tbaa !9
  %776 = getelementptr inbounds double, ptr %774, i64 %775
  %777 = load ptr, ptr %21, align 8, !tbaa !5
  %778 = load i64, ptr %62, align 8, !tbaa !9
  %779 = load i64, ptr %62, align 8, !tbaa !9
  %780 = load i64, ptr %30, align 8, !tbaa !9
  %781 = mul nsw i64 %779, %780
  %782 = add nsw i64 %778, %781
  %783 = getelementptr inbounds double, ptr %777, i64 %782
  %784 = load ptr, ptr %22, align 8, !tbaa !5
  %785 = load ptr, ptr %23, align 8, !tbaa !5
  %786 = load i64, ptr %62, align 8, !tbaa !9
  %787 = load i64, ptr %62, align 8, !tbaa !9
  %788 = load i64, ptr %32, align 8, !tbaa !9
  %789 = mul nsw i64 %787, %788
  %790 = add nsw i64 %786, %789
  %791 = getelementptr inbounds double, ptr %785, i64 %790
  %792 = load ptr, ptr %24, align 8, !tbaa !5
  %793 = load ptr, ptr %28, align 8, !tbaa !5
  %794 = getelementptr inbounds i64, ptr %793, i64 1
  %795 = load ptr, ptr %27, align 8, !tbaa !5
  %796 = load i64, ptr %70, align 8, !tbaa !9
  %797 = getelementptr inbounds double, ptr %795, i64 %796
  %798 = load ptr, ptr %29, align 8, !tbaa !5
  %799 = call i32 @dlasd0_(ptr noundef %61, ptr noundef %58, ptr noundef %773, ptr noundef %776, ptr noundef %783, ptr noundef %784, ptr noundef %791, ptr noundef %792, ptr noundef %69, ptr noundef %794, ptr noundef %797, ptr noundef %798)
  br label %952

800:                                              ; preds = %767
  %801 = load ptr, ptr %19, align 8, !tbaa !5
  %802 = load i64, ptr %62, align 8, !tbaa !9
  %803 = getelementptr inbounds double, ptr %801, i64 %802
  %804 = load ptr, ptr %20, align 8, !tbaa !5
  %805 = load i64, ptr %62, align 8, !tbaa !9
  %806 = getelementptr inbounds double, ptr %804, i64 %805
  %807 = load ptr, ptr %25, align 8, !tbaa !5
  %808 = load i64, ptr %62, align 8, !tbaa !9
  %809 = load i64, ptr %48, align 8, !tbaa !9
  %810 = load i64, ptr %68, align 8, !tbaa !9
  %811 = add nsw i64 %809, %810
  %812 = sub nsw i64 %811, 2
  %813 = load ptr, ptr %18, align 8, !tbaa !5
  %814 = load i64, ptr %813, align 8, !tbaa !9
  %815 = mul nsw i64 %812, %814
  %816 = add nsw i64 %808, %815
  %817 = getelementptr inbounds double, ptr %807, i64 %816
  %818 = load ptr, ptr %18, align 8, !tbaa !5
  %819 = load ptr, ptr %25, align 8, !tbaa !5
  %820 = load i64, ptr %62, align 8, !tbaa !9
  %821 = load i64, ptr %52, align 8, !tbaa !9
  %822 = load i64, ptr %68, align 8, !tbaa !9
  %823 = add nsw i64 %821, %822
  %824 = sub nsw i64 %823, 2
  %825 = load ptr, ptr %18, align 8, !tbaa !5
  %826 = load i64, ptr %825, align 8, !tbaa !9
  %827 = mul nsw i64 %824, %826
  %828 = add nsw i64 %820, %827
  %829 = getelementptr inbounds double, ptr %819, i64 %828
  %830 = load ptr, ptr %26, align 8, !tbaa !5
  %831 = load i64, ptr %62, align 8, !tbaa !9
  %832 = load i64, ptr %39, align 8, !tbaa !9
  %833 = load ptr, ptr %18, align 8, !tbaa !5
  %834 = load i64, ptr %833, align 8, !tbaa !9
  %835 = mul nsw i64 %832, %834
  %836 = add nsw i64 %831, %835
  %837 = getelementptr inbounds i64, ptr %830, i64 %836
  %838 = load ptr, ptr %25, align 8, !tbaa !5
  %839 = load i64, ptr %62, align 8, !tbaa !9
  %840 = load i64, ptr %53, align 8, !tbaa !9
  %841 = load i64, ptr %68, align 8, !tbaa !9
  %842 = add nsw i64 %840, %841
  %843 = sub nsw i64 %842, 2
  %844 = load ptr, ptr %18, align 8, !tbaa !5
  %845 = load i64, ptr %844, align 8, !tbaa !9
  %846 = mul nsw i64 %843, %845
  %847 = add nsw i64 %839, %846
  %848 = getelementptr inbounds double, ptr %838, i64 %847
  %849 = load ptr, ptr %25, align 8, !tbaa !5
  %850 = load i64, ptr %62, align 8, !tbaa !9
  %851 = load i64, ptr %54, align 8, !tbaa !9
  %852 = load i64, ptr %68, align 8, !tbaa !9
  %853 = add nsw i64 %851, %852
  %854 = sub nsw i64 %853, 2
  %855 = load ptr, ptr %18, align 8, !tbaa !5
  %856 = load i64, ptr %855, align 8, !tbaa !9
  %857 = mul nsw i64 %854, %856
  %858 = add nsw i64 %850, %857
  %859 = getelementptr inbounds double, ptr %849, i64 %858
  %860 = load ptr, ptr %25, align 8, !tbaa !5
  %861 = load i64, ptr %62, align 8, !tbaa !9
  %862 = load i64, ptr %42, align 8, !tbaa !9
  %863 = load i64, ptr %68, align 8, !tbaa !9
  %864 = add nsw i64 %862, %863
  %865 = sub nsw i64 %864, 2
  %866 = load ptr, ptr %18, align 8, !tbaa !5
  %867 = load i64, ptr %866, align 8, !tbaa !9
  %868 = mul nsw i64 %865, %867
  %869 = add nsw i64 %861, %868
  %870 = getelementptr inbounds double, ptr %860, i64 %869
  %871 = load ptr, ptr %25, align 8, !tbaa !5
  %872 = load i64, ptr %62, align 8, !tbaa !9
  %873 = load i64, ptr %59, align 8, !tbaa !9
  %874 = load i64, ptr %68, align 8, !tbaa !9
  %875 = add nsw i64 %873, %874
  %876 = sub nsw i64 %875, 2
  %877 = load ptr, ptr %18, align 8, !tbaa !5
  %878 = load i64, ptr %877, align 8, !tbaa !9
  %879 = mul nsw i64 %876, %878
  %880 = add nsw i64 %872, %879
  %881 = getelementptr inbounds double, ptr %871, i64 %880
  %882 = load ptr, ptr %26, align 8, !tbaa !5
  %883 = load i64, ptr %62, align 8, !tbaa !9
  %884 = load i64, ptr %67, align 8, !tbaa !9
  %885 = load ptr, ptr %18, align 8, !tbaa !5
  %886 = load i64, ptr %885, align 8, !tbaa !9
  %887 = mul nsw i64 %884, %886
  %888 = add nsw i64 %883, %887
  %889 = getelementptr inbounds i64, ptr %882, i64 %888
  %890 = load ptr, ptr %26, align 8, !tbaa !5
  %891 = load i64, ptr %62, align 8, !tbaa !9
  %892 = load i64, ptr %63, align 8, !tbaa !9
  %893 = load ptr, ptr %18, align 8, !tbaa !5
  %894 = load i64, ptr %893, align 8, !tbaa !9
  %895 = mul nsw i64 %892, %894
  %896 = add nsw i64 %891, %895
  %897 = getelementptr inbounds i64, ptr %890, i64 %896
  %898 = load ptr, ptr %18, align 8, !tbaa !5
  %899 = load ptr, ptr %26, align 8, !tbaa !5
  %900 = load i64, ptr %62, align 8, !tbaa !9
  %901 = load i64, ptr %56, align 8, !tbaa !9
  %902 = load ptr, ptr %18, align 8, !tbaa !5
  %903 = load i64, ptr %902, align 8, !tbaa !9
  %904 = mul nsw i64 %901, %903
  %905 = add nsw i64 %900, %904
  %906 = getelementptr inbounds i64, ptr %899, i64 %905
  %907 = load ptr, ptr %25, align 8, !tbaa !5
  %908 = load i64, ptr %62, align 8, !tbaa !9
  %909 = load i64, ptr %66, align 8, !tbaa !9
  %910 = load i64, ptr %68, align 8, !tbaa !9
  %911 = add nsw i64 %909, %910
  %912 = sub nsw i64 %911, 2
  %913 = load ptr, ptr %18, align 8, !tbaa !5
  %914 = load i64, ptr %913, align 8, !tbaa !9
  %915 = mul nsw i64 %912, %914
  %916 = add nsw i64 %908, %915
  %917 = getelementptr inbounds double, ptr %907, i64 %916
  %918 = load ptr, ptr %25, align 8, !tbaa !5
  %919 = load i64, ptr %62, align 8, !tbaa !9
  %920 = load i64, ptr %43, align 8, !tbaa !9
  %921 = load i64, ptr %68, align 8, !tbaa !9
  %922 = add nsw i64 %920, %921
  %923 = sub nsw i64 %922, 2
  %924 = load ptr, ptr %18, align 8, !tbaa !5
  %925 = load i64, ptr %924, align 8, !tbaa !9
  %926 = mul nsw i64 %923, %925
  %927 = add nsw i64 %919, %926
  %928 = getelementptr inbounds double, ptr %918, i64 %927
  %929 = load ptr, ptr %25, align 8, !tbaa !5
  %930 = load i64, ptr %62, align 8, !tbaa !9
  %931 = load i64, ptr %47, align 8, !tbaa !9
  %932 = load i64, ptr %68, align 8, !tbaa !9
  %933 = add nsw i64 %931, %932
  %934 = sub nsw i64 %933, 2
  %935 = load ptr, ptr %18, align 8, !tbaa !5
  %936 = load i64, ptr %935, align 8, !tbaa !9
  %937 = mul nsw i64 %934, %936
  %938 = add nsw i64 %930, %937
  %939 = getelementptr inbounds double, ptr %929, i64 %938
  %940 = load ptr, ptr %27, align 8, !tbaa !5
  %941 = load i64, ptr %70, align 8, !tbaa !9
  %942 = getelementptr inbounds double, ptr %940, i64 %941
  %943 = load ptr, ptr %28, align 8, !tbaa !5
  %944 = getelementptr inbounds i64, ptr %943, i64 1
  %945 = load ptr, ptr %29, align 8, !tbaa !5
  %946 = call i32 @dlasda_(ptr noundef %64, ptr noundef %69, ptr noundef %61, ptr noundef %58, ptr noundef %803, ptr noundef %806, ptr noundef %817, ptr noundef %818, ptr noundef %829, ptr noundef %837, ptr noundef %848, ptr noundef %859, ptr noundef %870, ptr noundef %881, ptr noundef %889, ptr noundef %897, ptr noundef %898, ptr noundef %906, ptr noundef %917, ptr noundef %928, ptr noundef %939, ptr noundef %942, ptr noundef %944, ptr noundef %945)
  %947 = load ptr, ptr %29, align 8, !tbaa !5
  %948 = load i64, ptr %947, align 8, !tbaa !9
  %949 = icmp ne i64 %948, 0
  br i1 %949, label %950, label %951

950:                                              ; preds = %800
  store i32 0, ptr %15, align 4
  store i32 1, ptr %72, align 4
  br label %1112

951:                                              ; preds = %800
  br label %952

952:                                              ; preds = %951, %770
  %953 = load i64, ptr %37, align 8, !tbaa !9
  %954 = add nsw i64 %953, 1
  store i64 %954, ptr %62, align 8, !tbaa !9
  br label %955

955:                                              ; preds = %952, %649
  br label %956

956:                                              ; preds = %955
  %957 = load i64, ptr %37, align 8, !tbaa !9
  %958 = add nsw i64 %957, 1
  store i64 %958, ptr %37, align 8, !tbaa !9
  br label %629, !llvm.loop !16

959:                                              ; preds = %629
  %960 = load ptr, ptr %18, align 8, !tbaa !5
  %961 = load ptr, ptr %19, align 8, !tbaa !5
  %962 = getelementptr inbounds double, ptr %961, i64 1
  %963 = load ptr, ptr %18, align 8, !tbaa !5
  %964 = call i32 @dlascl_(ptr noundef @.str.9, ptr noundef @c__0, ptr noundef @c__0, ptr noundef @c_b15, ptr noundef %65, ptr noundef %960, ptr noundef @c__1, ptr noundef %962, ptr noundef %963, ptr noundef %55)
  br label %965

965:                                              ; preds = %959, %510, %363
  %966 = load ptr, ptr %18, align 8, !tbaa !5
  %967 = load i64, ptr %966, align 8, !tbaa !9
  store i64 %967, ptr %34, align 8, !tbaa !9
  store i64 2, ptr %44, align 8, !tbaa !9
  br label %968

968:                                              ; preds = %1071, %965
  %969 = load i64, ptr %44, align 8, !tbaa !9
  %970 = load i64, ptr %34, align 8, !tbaa !9
  %971 = icmp sle i64 %969, %970
  br i1 %971, label %972, label %1074

972:                                              ; preds = %968
  %973 = load i64, ptr %44, align 8, !tbaa !9
  %974 = sub nsw i64 %973, 1
  store i64 %974, ptr %37, align 8, !tbaa !9
  %975 = load i64, ptr %37, align 8, !tbaa !9
  store i64 %975, ptr %45, align 8, !tbaa !9
  %976 = load ptr, ptr %19, align 8, !tbaa !5
  %977 = load i64, ptr %37, align 8, !tbaa !9
  %978 = getelementptr inbounds double, ptr %976, i64 %977
  %979 = load double, ptr %978, align 8, !tbaa !11
  store double %979, ptr %40, align 8, !tbaa !11
  %980 = load ptr, ptr %18, align 8, !tbaa !5
  %981 = load i64, ptr %980, align 8, !tbaa !9
  store i64 %981, ptr %35, align 8, !tbaa !9
  %982 = load i64, ptr %44, align 8, !tbaa !9
  store i64 %982, ptr %38, align 8, !tbaa !9
  br label %983

983:                                              ; preds = %1001, %972
  %984 = load i64, ptr %38, align 8, !tbaa !9
  %985 = load i64, ptr %35, align 8, !tbaa !9
  %986 = icmp sle i64 %984, %985
  br i1 %986, label %987, label %1004

987:                                              ; preds = %983
  %988 = load ptr, ptr %19, align 8, !tbaa !5
  %989 = load i64, ptr %38, align 8, !tbaa !9
  %990 = getelementptr inbounds double, ptr %988, i64 %989
  %991 = load double, ptr %990, align 8, !tbaa !11
  %992 = load double, ptr %40, align 8, !tbaa !11
  %993 = fcmp ogt double %991, %992
  br i1 %993, label %994, label %1000

994:                                              ; preds = %987
  %995 = load i64, ptr %38, align 8, !tbaa !9
  store i64 %995, ptr %45, align 8, !tbaa !9
  %996 = load ptr, ptr %19, align 8, !tbaa !5
  %997 = load i64, ptr %38, align 8, !tbaa !9
  %998 = getelementptr inbounds double, ptr %996, i64 %997
  %999 = load double, ptr %998, align 8, !tbaa !11
  store double %999, ptr %40, align 8, !tbaa !11
  br label %1000

1000:                                             ; preds = %994, %987
  br label %1001

1001:                                             ; preds = %1000
  %1002 = load i64, ptr %38, align 8, !tbaa !9
  %1003 = add nsw i64 %1002, 1
  store i64 %1003, ptr %38, align 8, !tbaa !9
  br label %983, !llvm.loop !17

1004:                                             ; preds = %983
  %1005 = load i64, ptr %45, align 8, !tbaa !9
  %1006 = load i64, ptr %37, align 8, !tbaa !9
  %1007 = icmp ne i64 %1005, %1006
  br i1 %1007, label %1008, label %1061

1008:                                             ; preds = %1004
  %1009 = load ptr, ptr %19, align 8, !tbaa !5
  %1010 = load i64, ptr %37, align 8, !tbaa !9
  %1011 = getelementptr inbounds double, ptr %1009, i64 %1010
  %1012 = load double, ptr %1011, align 8, !tbaa !11
  %1013 = load ptr, ptr %19, align 8, !tbaa !5
  %1014 = load i64, ptr %45, align 8, !tbaa !9
  %1015 = getelementptr inbounds double, ptr %1013, i64 %1014
  store double %1012, ptr %1015, align 8, !tbaa !11
  %1016 = load double, ptr %40, align 8, !tbaa !11
  %1017 = load ptr, ptr %19, align 8, !tbaa !5
  %1018 = load i64, ptr %37, align 8, !tbaa !9
  %1019 = getelementptr inbounds double, ptr %1017, i64 %1018
  store double %1016, ptr %1019, align 8, !tbaa !11
  %1020 = load i64, ptr %64, align 8, !tbaa !9
  %1021 = icmp eq i64 %1020, 1
  br i1 %1021, label %1022, label %1027

1022:                                             ; preds = %1008
  %1023 = load i64, ptr %45, align 8, !tbaa !9
  %1024 = load ptr, ptr %26, align 8, !tbaa !5
  %1025 = load i64, ptr %37, align 8, !tbaa !9
  %1026 = getelementptr inbounds i64, ptr %1024, i64 %1025
  store i64 %1023, ptr %1026, align 8, !tbaa !9
  br label %1060

1027:                                             ; preds = %1008
  %1028 = load i64, ptr %64, align 8, !tbaa !9
  %1029 = icmp eq i64 %1028, 2
  br i1 %1029, label %1030, label %1059

1030:                                             ; preds = %1027
  %1031 = load ptr, ptr %18, align 8, !tbaa !5
  %1032 = load ptr, ptr %21, align 8, !tbaa !5
  %1033 = load i64, ptr %37, align 8, !tbaa !9
  %1034 = load i64, ptr %30, align 8, !tbaa !9
  %1035 = mul nsw i64 %1033, %1034
  %1036 = add nsw i64 %1035, 1
  %1037 = getelementptr inbounds double, ptr %1032, i64 %1036
  %1038 = load ptr, ptr %21, align 8, !tbaa !5
  %1039 = load i64, ptr %45, align 8, !tbaa !9
  %1040 = load i64, ptr %30, align 8, !tbaa !9
  %1041 = mul nsw i64 %1039, %1040
  %1042 = add nsw i64 %1041, 1
  %1043 = getelementptr inbounds double, ptr %1038, i64 %1042
  %1044 = call i32 @f2c_dswap(ptr noundef %1031, ptr noundef %1037, ptr noundef @c__1, ptr noundef %1043, ptr noundef @c__1)
  %1045 = load ptr, ptr %18, align 8, !tbaa !5
  %1046 = load ptr, ptr %23, align 8, !tbaa !5
  %1047 = load i64, ptr %37, align 8, !tbaa !9
  %1048 = load i64, ptr %32, align 8, !tbaa !9
  %1049 = add nsw i64 %1047, %1048
  %1050 = getelementptr inbounds double, ptr %1046, i64 %1049
  %1051 = load ptr, ptr %24, align 8, !tbaa !5
  %1052 = load ptr, ptr %23, align 8, !tbaa !5
  %1053 = load i64, ptr %45, align 8, !tbaa !9
  %1054 = load i64, ptr %32, align 8, !tbaa !9
  %1055 = add nsw i64 %1053, %1054
  %1056 = getelementptr inbounds double, ptr %1052, i64 %1055
  %1057 = load ptr, ptr %24, align 8, !tbaa !5
  %1058 = call i32 @f2c_dswap(ptr noundef %1045, ptr noundef %1050, ptr noundef %1051, ptr noundef %1056, ptr noundef %1057)
  br label %1059

1059:                                             ; preds = %1030, %1027
  br label %1060

1060:                                             ; preds = %1059, %1022
  br label %1070

1061:                                             ; preds = %1004
  %1062 = load i64, ptr %64, align 8, !tbaa !9
  %1063 = icmp eq i64 %1062, 1
  br i1 %1063, label %1064, label %1069

1064:                                             ; preds = %1061
  %1065 = load i64, ptr %37, align 8, !tbaa !9
  %1066 = load ptr, ptr %26, align 8, !tbaa !5
  %1067 = load i64, ptr %37, align 8, !tbaa !9
  %1068 = getelementptr inbounds i64, ptr %1066, i64 %1067
  store i64 %1065, ptr %1068, align 8, !tbaa !9
  br label %1069

1069:                                             ; preds = %1064, %1061
  br label %1070

1070:                                             ; preds = %1069, %1060
  br label %1071

1071:                                             ; preds = %1070
  %1072 = load i64, ptr %44, align 8, !tbaa !9
  %1073 = add nsw i64 %1072, 1
  store i64 %1073, ptr %44, align 8, !tbaa !9
  br label %968, !llvm.loop !18

1074:                                             ; preds = %968
  %1075 = load i64, ptr %64, align 8, !tbaa !9
  %1076 = icmp eq i64 %1075, 1
  br i1 %1076, label %1077, label %1091

1077:                                             ; preds = %1074
  %1078 = load i64, ptr %60, align 8, !tbaa !9
  %1079 = icmp eq i64 %1078, 1
  br i1 %1079, label %1080, label %1085

1080:                                             ; preds = %1077
  %1081 = load ptr, ptr %26, align 8, !tbaa !5
  %1082 = load ptr, ptr %18, align 8, !tbaa !5
  %1083 = load i64, ptr %1082, align 8, !tbaa !9
  %1084 = getelementptr inbounds i64, ptr %1081, i64 %1083
  store i64 1, ptr %1084, align 8, !tbaa !9
  br label %1090

1085:                                             ; preds = %1077
  %1086 = load ptr, ptr %26, align 8, !tbaa !5
  %1087 = load ptr, ptr %18, align 8, !tbaa !5
  %1088 = load i64, ptr %1087, align 8, !tbaa !9
  %1089 = getelementptr inbounds i64, ptr %1086, i64 %1088
  store i64 0, ptr %1089, align 8, !tbaa !9
  br label %1090

1090:                                             ; preds = %1085, %1080
  br label %1091

1091:                                             ; preds = %1090, %1074
  %1092 = load i64, ptr %60, align 8, !tbaa !9
  %1093 = icmp eq i64 %1092, 2
  br i1 %1093, label %1094, label %1111

1094:                                             ; preds = %1091
  %1095 = load i64, ptr %64, align 8, !tbaa !9
  %1096 = icmp eq i64 %1095, 2
  br i1 %1096, label %1097, label %1111

1097:                                             ; preds = %1094
  %1098 = load ptr, ptr %18, align 8, !tbaa !5
  %1099 = load ptr, ptr %18, align 8, !tbaa !5
  %1100 = load ptr, ptr %27, align 8, !tbaa !5
  %1101 = getelementptr inbounds double, ptr %1100, i64 1
  %1102 = load ptr, ptr %27, align 8, !tbaa !5
  %1103 = load ptr, ptr %18, align 8, !tbaa !5
  %1104 = load i64, ptr %1103, align 8, !tbaa !9
  %1105 = getelementptr inbounds double, ptr %1102, i64 %1104
  %1106 = load ptr, ptr %21, align 8, !tbaa !5
  %1107 = load i64, ptr %31, align 8, !tbaa !9
  %1108 = getelementptr inbounds double, ptr %1106, i64 %1107
  %1109 = load ptr, ptr %22, align 8, !tbaa !5
  %1110 = call i32 @dlasr_(ptr noundef @.str.1, ptr noundef @.str.11, ptr noundef @.str.12, ptr noundef %1098, ptr noundef %1099, ptr noundef %1101, ptr noundef %1105, ptr noundef %1108, ptr noundef %1109)
  br label %1111

1111:                                             ; preds = %1097, %1094, %1091
  store i32 0, ptr %15, align 4
  store i32 1, ptr %72, align 4
  br label %1112

1112:                                             ; preds = %1111, %950, %538, %244, %192, %183
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  %1113 = load i32, ptr %15, align 4
  ret i32 %1113
}

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

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

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

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

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

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

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

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

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

declare double @dlamch_(ptr noundef) #2

; Function Attrs: nounwind
declare double @log(double noundef) #3

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

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

declare i32 @dlasr_(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 "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 #4 = { nounwind }

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

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


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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@c__9 = external hidden global i64, align 8
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i64, align 8
@c_b15 = external hidden global double, align 8
@c__1 = external hidden global i64, align 8
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b29 = external hidden global double, align 8
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @dbdsdc_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13) local_unnamed_addr #0 {
  %15 = alloca i64, align 8
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  %18 = alloca double, align 8
  %19 = alloca i64, align 8
  %20 = alloca double, align 8
  %21 = alloca i64, align 8
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca i64, align 8
  %25 = alloca double, align 8
  %26 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #4
  %27 = getelementptr inbounds i8, ptr %3, i64 -8
  %28 = getelementptr inbounds i8, ptr %4, i64 -8
  %29 = load i64, ptr %6, align 8, !tbaa !5
  %30 = xor i64 %29, -1
  %31 = getelementptr inbounds double, ptr %5, i64 %30
  %32 = load i64, ptr %8, align 8, !tbaa !5
  %33 = xor i64 %32, -1
  %34 = getelementptr inbounds double, ptr %7, i64 %33
  %35 = getelementptr inbounds i8, ptr %9, i64 -8
  %36 = getelementptr inbounds i8, ptr %10, i64 -8
  %37 = getelementptr inbounds i8, ptr %11, i64 -8
  store i64 0, ptr %13, align 8, !tbaa !5
  %38 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #4
  %.not = icmp ne i64 %38, 0
  %39 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #4
  %.not457 = icmp ne i64 %39, 0
  %40 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #4
  %.not458 = icmp eq i64 %40, 0
  br i1 %.not458, label %42, label %41

41:                                               ; preds = %14
  store i64 0, ptr %24, align 8, !tbaa !5
  br label %48

42:                                               ; preds = %14
  %43 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #4
  %.not459 = icmp eq i64 %43, 0
  br i1 %.not459, label %45, label %44

44:                                               ; preds = %42
  store i64 1, ptr %24, align 8, !tbaa !5
  br label %48

45:                                               ; preds = %42
  %46 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #4
  %.not460 = icmp eq i64 %46, 0
  br i1 %.not460, label %.thread519, label %47

47:                                               ; preds = %45
  store i64 2, ptr %24, align 8, !tbaa !5
  br label %48

48:                                               ; preds = %44, %47, %41
  %49 = phi i1 [ false, %44 ], [ true, %47 ], [ false, %41 ]
  %50 = phi i1 [ true, %44 ], [ false, %47 ], [ false, %41 ]
  %51 = phi i64 [ 1, %44 ], [ 2, %47 ], [ 0, %41 ]
  %52 = select i1 %.not457, i1 true, i1 %.not
  br i1 %52, label %54, label %.thread.sink.split

.thread519:                                       ; preds = %45
  %53 = select i1 %.not457, i1 true, i1 %.not
  %spec.select = select i1 %53, i64 -2, i64 -1
  br label %.thread.sink.split

54:                                               ; preds = %48
  %55 = load i64, ptr %2, align 8, !tbaa !5
  %56 = icmp slt i64 %55, 0
  br i1 %56, label %.thread.sink.split, label %57

57:                                               ; preds = %54
  %58 = load i64, ptr %6, align 8, !tbaa !5
  %59 = icmp slt i64 %58, 1
  %60 = icmp ult i64 %58, %55
  %or.cond473 = and i1 %49, %60
  %or.cond525 = or i1 %59, %or.cond473
  br i1 %or.cond525, label %.thread.sink.split, label %61

61:                                               ; preds = %57
  %62 = load i64, ptr %8, align 8, !tbaa !5
  %63 = icmp slt i64 %62, 1
  %64 = icmp ult i64 %62, %55
  %or.cond480 = and i1 %49, %64
  %or.cond481 = or i1 %63, %or.cond480
  br i1 %or.cond481, label %.thread.sink.split, label %65

65:                                               ; preds = %61
  %.pr = load i64, ptr %13, align 8, !tbaa !5
  %.not461 = icmp eq i64 %.pr, 0
  br i1 %.not461, label %69, label %.thread

.thread.sink.split:                               ; preds = %.thread519, %61, %57, %54, %48
  %.sink = phi i64 [ -1, %48 ], [ -3, %54 ], [ -7, %57 ], [ -9, %61 ], [ %spec.select, %.thread519 ]
  store i64 %.sink, ptr %13, align 8, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %65
  %66 = phi i64 [ %.pr, %65 ], [ %.sink, %.thread.sink.split ]
  %67 = sub nsw i64 0, %66
  store i64 %67, ptr %15, align 8, !tbaa !5
  %68 = call i32 @xerbla_(ptr noundef nonnull @.str.5, ptr noundef nonnull %15) #4
  br label %.thread478

69:                                               ; preds = %65
  %70 = icmp eq i64 %55, 0
  br i1 %70, label %.thread478, label %71

71:                                               ; preds = %69
  %72 = tail call i64 @ilaenv_(ptr noundef nonnull @c__9, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0) #4
  store i64 %72, ptr %26, align 8, !tbaa !5
  %73 = load i64, ptr %2, align 8, !tbaa !5
  %74 = icmp eq i64 %73, 1
  br i1 %74, label %75, label %88

75:                                               ; preds = %71
  switch i64 %51, label %83 [
    i64 1, label %76
    i64 2, label %81
  ]

76:                                               ; preds = %75
  %77 = tail call double @d_sign(ptr noundef nonnull @c_b15, ptr noundef %3) #4
  store double %77, ptr %9, align 8, !tbaa !9
  %78 = load i64, ptr %2, align 8, !tbaa !5
  %79 = mul nsw i64 %78, %72
  %80 = getelementptr double, ptr %9, i64 %79
  br label %.sink.split

81:                                               ; preds = %75
  %82 = tail call double @d_sign(ptr noundef nonnull @c_b15, ptr noundef %3) #4
  store double %82, ptr %5, align 8, !tbaa !9
  br label %.sink.split

.sink.split:                                      ; preds = %76, %81
  %.sink526 = phi ptr [ %7, %81 ], [ %80, %76 ]
  store double 1.000000e+00, ptr %.sink526, align 8, !tbaa !9
  br label %83

83:                                               ; preds = %.sink.split, %75
  %84 = load double, ptr %3, align 8, !tbaa !9
  %85 = fcmp ult double %84, 0.000000e+00
  %86 = fneg double %84
  %87 = select i1 %85, double %86, double %84
  store double %87, ptr %3, align 8, !tbaa !9
  br label %.thread478

88:                                               ; preds = %71
  %89 = add nsw i64 %73, -1
  store i64 %89, ptr %19, align 8, !tbaa !5
  br i1 %50, label %90, label %96

90:                                               ; preds = %88
  %91 = tail call i32 @f2c_dcopy(ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull @c__1, ptr noundef %9, ptr noundef nonnull @c__1) #4
  %92 = load i64, ptr %2, align 8, !tbaa !5
  %93 = add nsw i64 %92, -1
  store i64 %93, ptr %15, align 8, !tbaa !5
  %94 = getelementptr double, ptr %9, i64 %92
  %95 = call i32 @f2c_dcopy(ptr noundef nonnull %15, ptr noundef %4, ptr noundef nonnull @c__1, ptr noundef %94, ptr noundef nonnull @c__1) #4
  br label %96

96:                                               ; preds = %90, %88
  br i1 %.not457, label %97, label %.loopexit

97:                                               ; preds = %96
  %98 = load i64, ptr %2, align 8, !tbaa !5
  %99 = shl i64 %98, 1
  %100 = add nsw i64 %99, -1
  %101 = add nsw i64 %98, -1
  store i64 %101, ptr %15, align 8, !tbaa !5
  %.not462482 = icmp slt i64 %98, 2
  br i1 %.not462482, label %.loopexit, label %.lr.ph

.lr.ph:                                           ; preds = %97, %126
  %.0439483 = phi i64 [ %107, %126 ], [ 1, %97 ]
  %102 = getelementptr inbounds double, ptr %27, i64 %.0439483
  %103 = getelementptr inbounds double, ptr %28, i64 %.0439483
  %104 = call i32 @dlartg_(ptr noundef nonnull %102, ptr noundef nonnull %103, ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef nonnull %16) #4
  %105 = load double, ptr %16, align 8, !tbaa !9
  store double %105, ptr %102, align 8, !tbaa !9
  %106 = load double, ptr %18, align 8, !tbaa !9
  %107 = add nuw nsw i64 %.0439483, 1
  %108 = getelementptr double, ptr %3, i64 %.0439483
  %109 = load double, ptr %108, align 8, !tbaa !9
  %110 = fmul double %106, %109
  store double %110, ptr %103, align 8, !tbaa !9
  %111 = load double, ptr %17, align 8, !tbaa !9
  %112 = load double, ptr %108, align 8, !tbaa !9
  %113 = fmul double %111, %112
  store double %113, ptr %108, align 8, !tbaa !9
  %114 = load i64, ptr %24, align 8, !tbaa !5
  switch i64 %114, label %126 [
    i64 1, label %115
    i64 2, label %120
  ]

115:                                              ; preds = %.lr.ph
  %116 = load i64, ptr %2, align 8, !tbaa !5
  %117 = getelementptr double, ptr %35, i64 %.0439483
  %.idx471 = shl i64 %116, 4
  %118 = getelementptr i8, ptr %117, i64 %.idx471
  store double %111, ptr %118, align 8, !tbaa !9
  %.idx472 = mul i64 %116, 24
  %119 = getelementptr i8, ptr %117, i64 %.idx472
  store double %106, ptr %119, align 8, !tbaa !9
  br label %126

120:                                              ; preds = %.lr.ph
  %121 = getelementptr inbounds double, ptr %37, i64 %.0439483
  store double %111, ptr %121, align 8, !tbaa !9
  %122 = fneg double %106
  %123 = load i64, ptr %19, align 8, !tbaa !5
  %124 = getelementptr double, ptr %37, i64 %123
  %125 = getelementptr double, ptr %124, i64 %.0439483
  store double %122, ptr %125, align 8, !tbaa !9
  br label %126

126:                                              ; preds = %.lr.ph, %115, %120
  %127 = load i64, ptr %15, align 8, !tbaa !5
  %.not462.not = icmp slt i64 %.0439483, %127
  br i1 %.not462.not, label %.lr.ph, label %.loopexit, !llvm.loop !11

.loopexit:                                        ; preds = %126, %97, %96
  %.0419 = phi i64 [ 3, %96 ], [ 5, %97 ], [ 5, %126 ]
  %.0418 = phi i64 [ 1, %96 ], [ %100, %97 ], [ %100, %126 ]
  %128 = load i64, ptr %24, align 8, !tbaa !5
  %129 = icmp eq i64 %128, 0
  br i1 %129, label %130, label %133

130:                                              ; preds = %.loopexit
  %131 = getelementptr inbounds double, ptr %37, i64 %.0418
  %132 = call i32 @dlasdq_(ptr noundef nonnull @.str, ptr noundef nonnull @c__0, ptr noundef nonnull %2, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef %3, ptr noundef %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %131, ptr noundef nonnull %13) #4
  br label %thread-pre-split

133:                                              ; preds = %.loopexit
  %134 = load i64, ptr %2, align 8, !tbaa !5
  %135 = load i64, ptr %26, align 8, !tbaa !5
  %.not463 = icmp sgt i64 %134, %135
  br i1 %.not463, label %158, label %136

136:                                              ; preds = %133
  switch i64 %128, label %318 [
    i64 2, label %137
    i64 1, label %142
  ]

137:                                              ; preds = %136
  %138 = call i32 @dlaset_(ptr noundef nonnull @.str.7, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_b29, ptr noundef nonnull @c_b15, ptr noundef %5, ptr noundef nonnull %6) #4
  %139 = call i32 @dlaset_(ptr noundef nonnull @.str.7, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_b29, ptr noundef nonnull @c_b15, ptr noundef %7, ptr noundef nonnull %8) #4
  %140 = getelementptr inbounds double, ptr %37, i64 %.0418
  %141 = call i32 @dlasdq_(ptr noundef nonnull @.str, ptr noundef nonnull @c__0, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c__0, ptr noundef %3, ptr noundef %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %140, ptr noundef nonnull %13) #4
  br label %thread-pre-split

142:                                              ; preds = %136
  %143 = add nsw i64 %.0419, -1
  %144 = mul nsw i64 %134, %143
  %145 = getelementptr double, ptr %9, i64 %144
  %146 = call i32 @dlaset_(ptr noundef nonnull @.str.7, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_b29, ptr noundef nonnull @c_b15, ptr noundef %145, ptr noundef nonnull %2) #4
  %147 = load i64, ptr %2, align 8, !tbaa !5
  %148 = mul nsw i64 %147, %143
  %149 = getelementptr double, ptr %9, i64 %134
  %150 = getelementptr double, ptr %149, i64 %148
  %151 = call i32 @dlaset_(ptr noundef nonnull @.str.7, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_b29, ptr noundef nonnull @c_b15, ptr noundef %150, ptr noundef nonnull %2) #4
  %152 = load i64, ptr %2, align 8, !tbaa !5
  %153 = mul nsw i64 %152, %143
  %154 = getelementptr double, ptr %149, i64 %153
  %155 = getelementptr double, ptr %9, i64 %153
  %156 = getelementptr inbounds double, ptr %37, i64 %.0418
  %157 = call i32 @dlasdq_(ptr noundef nonnull @.str, ptr noundef nonnull @c__0, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c__0, ptr noundef %3, ptr noundef %4, ptr noundef %154, ptr noundef nonnull %2, ptr noundef %155, ptr noundef nonnull %2, ptr noundef %155, ptr noundef nonnull %2, ptr noundef nonnull %156, ptr noundef nonnull %13) #4
  br label %thread-pre-split

158:                                              ; preds = %133
  %159 = icmp eq i64 %128, 2
  br i1 %159, label %160, label %163

160:                                              ; preds = %158
  %161 = call i32 @dlaset_(ptr noundef nonnull @.str.7, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_b29, ptr noundef nonnull @c_b15, ptr noundef %5, ptr noundef nonnull %6) #4
  %162 = call i32 @dlaset_(ptr noundef nonnull @.str.7, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_b29, ptr noundef nonnull @c_b15, ptr noundef %7, ptr noundef nonnull %8) #4
  br label %163

163:                                              ; preds = %160, %158
  %164 = call double @dlanst_(ptr noundef nonnull @.str.8, ptr noundef nonnull %2, ptr noundef %3, ptr noundef %4) #4
  store double %164, ptr %25, align 8, !tbaa !9
  %165 = fcmp oeq double %164, 0.000000e+00
  br i1 %165, label %.thread478, label %166

166:                                              ; preds = %163
  %167 = call i32 @dlascl_(ptr noundef nonnull @.str.9, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %25, ptr noundef nonnull @c_b15, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef %3, ptr noundef nonnull %2, ptr noundef nonnull %21) #4
  %168 = call i32 @dlascl_(ptr noundef nonnull @.str.9, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %25, ptr noundef nonnull @c_b15, ptr noundef nonnull %19, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef nonnull %19, ptr noundef nonnull %21) #4
  %169 = call double @dlamch_(ptr noundef nonnull @.str.10) #4
  store double %169, ptr %20, align 8, !tbaa !9
  %170 = load i64, ptr %2, align 8, !tbaa !5
  %171 = sitofp i64 %170 to double
  %172 = load i64, ptr %26, align 8, !tbaa !5
  %173 = add nsw i64 %172, 1
  %174 = sitofp i64 %173 to double
  %175 = fdiv double %171, %174
  %176 = call double @log(double noundef %175) #4
  %177 = load i64, ptr %26, align 8, !tbaa !5
  %178 = add nsw i64 %177, 1
  %179 = load i64, ptr %24, align 8, !tbaa !5
  %180 = icmp eq i64 %179, 1
  br i1 %180, label %181, label %194

181:                                              ; preds = %166
  %182 = fdiv double %176, 0x3FE62E42FEFA39EF
  %183 = fptosi double %182 to i64
  %184 = add nsw i64 %183, 1
  %185 = shl nsw i64 %178, 1
  %186 = add nsw i64 %185, %184
  %187 = shl i64 %184, 1
  %188 = add nsw i64 %186, %187
  %189 = add nsw i64 %188, %184
  %190 = add nsw i64 %189, 1
  %191 = add nsw i64 %189, 2
  %192 = add nsw i64 %191, %187
  %193 = add nsw i64 %183, 4
  br label %194

194:                                              ; preds = %181, %166
  %.0435 = phi i64 [ %188, %181 ], [ undef, %166 ]
  %.0434 = phi i64 [ %189, %181 ], [ undef, %166 ]
  %.0430 = phi i64 [ %190, %181 ], [ undef, %166 ]
  %.0427 = phi i64 [ %185, %181 ], [ undef, %166 ]
  %.0426 = phi i64 [ %186, %181 ], [ undef, %166 ]
  %.0425 = phi i64 [ %191, %181 ], [ undef, %166 ]
  %.0421 = phi i64 [ %193, %181 ], [ undef, %166 ]
  %.0420 = phi i64 [ %192, %181 ], [ undef, %166 ]
  %195 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %195, ptr %15, align 8, !tbaa !5
  %.not464484 = icmp slt i64 %195, 1
  br i1 %.not464484, label %._crit_edge, label %.lr.ph486

.lr.ph486:                                        ; preds = %194, %206
  %196 = phi i64 [ %207, %206 ], [ %195, %194 ]
  %.1440485 = phi i64 [ %208, %206 ], [ 1, %194 ]
  %197 = getelementptr inbounds double, ptr %27, i64 %.1440485
  %198 = load double, ptr %197, align 8, !tbaa !9
  %199 = fcmp oge double %198, 0.000000e+00
  %200 = fneg double %198
  %201 = select i1 %199, double %198, double %200
  %202 = load double, ptr %20, align 8, !tbaa !9
  %203 = fcmp olt double %201, %202
  br i1 %203, label %204, label %206

204:                                              ; preds = %.lr.ph486
  %205 = call double @d_sign(ptr noundef nonnull %20, ptr noundef nonnull %197) #4
  store double %205, ptr %197, align 8, !tbaa !9
  %.pre = load i64, ptr %15, align 8, !tbaa !5
  br label %206

206:                                              ; preds = %.lr.ph486, %204
  %207 = phi i64 [ %196, %.lr.ph486 ], [ %.pre, %204 ]
  %208 = add nuw nsw i64 %.1440485, 1
  %.not464.not = icmp slt i64 %.1440485, %207
  br i1 %.not464.not, label %.lr.ph486, label %._crit_edge, !llvm.loop !13

._crit_edge:                                      ; preds = %206, %194
  store i64 0, ptr %22, align 8, !tbaa !5
  %209 = load i64, ptr %19, align 8, !tbaa !5
  store i64 %209, ptr %15, align 8, !tbaa !5
  %.not465487 = icmp slt i64 %209, 1
  br i1 %.not465487, label %._crit_edge493, label %.lr.ph492

.lr.ph492:                                        ; preds = %._crit_edge
  %210 = add i64 %29, 1
  %211 = add i64 %32, 1
  %212 = add nsw i64 %.0419, -1
  %213 = add nsw i64 %.0419, -2
  %214 = add i64 %213, %178
  %215 = add i64 %213, %.0427
  %216 = add i64 %213, %.0426
  %217 = add i64 %213, %.0435
  %218 = add i64 %213, %.0425
  %219 = add i64 %213, %.0420
  %220 = add i64 %213, %.0434
  %221 = add i64 %213, %.0430
  %222 = getelementptr inbounds double, ptr %37, i64 %.0418
  br label %223

223:                                              ; preds = %.lr.ph492, %315
  %224 = phi i64 [ %209, %.lr.ph492 ], [ %316, %315 ]
  %.0422.neg490 = phi i64 [ -1, %.lr.ph492 ], [ %.0422.neg, %315 ]
  %.0422489 = phi i64 [ 1, %.lr.ph492 ], [ %.1, %315 ]
  %.2488 = phi i64 [ 1, %.lr.ph492 ], [ %.pre-phi, %315 ]
  %225 = getelementptr inbounds double, ptr %28, i64 %.2488
  %226 = load double, ptr %225, align 8, !tbaa !9
  %227 = fcmp oge double %226, 0.000000e+00
  %228 = fneg double %226
  %229 = select i1 %227, double %226, double %228
  %230 = load double, ptr %20, align 8, !tbaa !9
  %231 = fcmp olt double %229, %230
  %232 = load i64, ptr %19, align 8
  %233 = icmp eq i64 %.2488, %232
  %or.cond475 = select i1 %231, i1 true, i1 %233
  br i1 %or.cond475, label %234, label %._crit_edge517

._crit_edge517:                                   ; preds = %223
  %.pre518 = add nuw nsw i64 %.2488, 1
  br label %315

234:                                              ; preds = %223
  %235 = icmp slt i64 %.2488, %232
  br i1 %235, label %236, label %239

236:                                              ; preds = %234
  %237 = add nuw nsw i64 %.2488, 1
  %238 = add i64 %237, %.0422.neg490
  store i64 %238, ptr %23, align 8, !tbaa !5
  br label %273

239:                                              ; preds = %234
  %240 = fcmp ult double %229, %230
  br i1 %240, label %245, label %241

241:                                              ; preds = %239
  %242 = load i64, ptr %2, align 8, !tbaa !5
  %243 = add i64 %.0422.neg490, 1
  %244 = add i64 %243, %242
  store i64 %244, ptr %23, align 8, !tbaa !5
  br label %273

245:                                              ; preds = %239
  %246 = add nuw i64 %.2488, 1
  %247 = add i64 %246, %.0422.neg490
  store i64 %247, ptr %23, align 8, !tbaa !5
  %248 = load i64, ptr %24, align 8, !tbaa !5
  %.pre514 = load i64, ptr %2, align 8, !tbaa !5
  switch i64 %248, label %._crit_edge513 [
    i64 2, label %249
    i64 1, label %257
  ]

249:                                              ; preds = %245
  %250 = getelementptr inbounds double, ptr %27, i64 %.pre514
  %251 = call double @d_sign(ptr noundef nonnull @c_b15, ptr noundef nonnull %250) #4
  %252 = load i64, ptr %2, align 8, !tbaa !5
  %253 = mul i64 %252, %210
  %254 = getelementptr inbounds double, ptr %31, i64 %253
  store double %251, ptr %254, align 8, !tbaa !9
  %255 = mul i64 %252, %211
  %256 = getelementptr inbounds double, ptr %34, i64 %255
  br label %._crit_edge513.sink.split

257:                                              ; preds = %245
  %258 = getelementptr inbounds double, ptr %27, i64 %.pre514
  %259 = call double @d_sign(ptr noundef nonnull @c_b15, ptr noundef nonnull %258) #4
  %260 = load i64, ptr %2, align 8, !tbaa !5
  %261 = mul i64 %260, %.0419
  %262 = getelementptr inbounds double, ptr %35, i64 %261
  store double %259, ptr %262, align 8, !tbaa !9
  %263 = load i64, ptr %26, align 8, !tbaa !5
  %264 = add nsw i64 %263, %.0419
  %265 = mul i64 %264, %260
  %266 = getelementptr inbounds double, ptr %35, i64 %265
  br label %._crit_edge513.sink.split

._crit_edge513.sink.split:                        ; preds = %249, %257
  %.sink528 = phi ptr [ %266, %257 ], [ %256, %249 ]
  %.ph527 = phi i64 [ %260, %257 ], [ %252, %249 ]
  store double 1.000000e+00, ptr %.sink528, align 8, !tbaa !9
  br label %._crit_edge513

._crit_edge513:                                   ; preds = %._crit_edge513.sink.split, %245
  %267 = phi i64 [ %.pre514, %245 ], [ %.ph527, %._crit_edge513.sink.split ]
  %268 = getelementptr inbounds double, ptr %27, i64 %267
  %269 = load double, ptr %268, align 8, !tbaa !9
  %270 = fcmp oge double %269, 0.000000e+00
  %271 = fneg double %269
  %272 = select i1 %270, double %269, double %271
  store double %272, ptr %268, align 8, !tbaa !9
  br label %273

273:                                              ; preds = %241, %._crit_edge513, %236
  %274 = load i64, ptr %24, align 8, !tbaa !5
  %275 = icmp eq i64 %274, 2
  %276 = getelementptr inbounds double, ptr %27, i64 %.0422489
  %277 = getelementptr inbounds double, ptr %28, i64 %.0422489
  br i1 %275, label %278, label %284

278:                                              ; preds = %273
  %279 = mul i64 %.0422489, %210
  %280 = getelementptr inbounds double, ptr %31, i64 %279
  %281 = mul i64 %.0422489, %211
  %282 = getelementptr inbounds double, ptr %34, i64 %281
  %283 = call i32 @dlasd0_(ptr noundef nonnull %23, ptr noundef nonnull %22, ptr noundef nonnull %276, ptr noundef nonnull %277, ptr noundef %280, ptr noundef nonnull %6, ptr noundef %282, ptr noundef nonnull %8, ptr noundef nonnull %26, ptr noundef %12, ptr noundef nonnull %222, ptr noundef nonnull %13) #4
  br label %313

284:                                              ; preds = %273
  %285 = load i64, ptr %2, align 8, !tbaa !5
  %286 = mul nsw i64 %285, %212
  %287 = getelementptr double, ptr %35, i64 %.0422489
  %288 = getelementptr double, ptr %287, i64 %286
  %289 = mul nsw i64 %285, %214
  %290 = getelementptr double, ptr %287, i64 %289
  %291 = getelementptr i64, ptr %36, i64 %.0422489
  %292 = getelementptr i64, ptr %291, i64 %285
  %293 = mul nsw i64 %285, %215
  %294 = getelementptr double, ptr %287, i64 %293
  %295 = mul nsw i64 %285, %216
  %296 = getelementptr double, ptr %287, i64 %295
  %297 = mul nsw i64 %285, %217
  %298 = getelementptr double, ptr %287, i64 %297
  %299 = mul nsw i64 %285, %218
  %300 = getelementptr double, ptr %287, i64 %299
  %.idx = shl i64 %285, 4
  %301 = getelementptr i8, ptr %291, i64 %.idx
  %302 = mul nsw i64 %285, %.0421
  %303 = getelementptr i64, ptr %291, i64 %302
  %.idx466 = mul i64 %285, 24
  %304 = getelementptr i8, ptr %291, i64 %.idx466
  %305 = mul nsw i64 %285, %219
  %306 = getelementptr double, ptr %287, i64 %305
  %307 = mul nsw i64 %285, %220
  %308 = getelementptr double, ptr %287, i64 %307
  %309 = mul nsw i64 %285, %221
  %310 = getelementptr double, ptr %287, i64 %309
  %311 = call i32 @dlasda_(ptr noundef nonnull %24, ptr noundef nonnull %26, ptr noundef nonnull %23, ptr noundef nonnull %22, ptr noundef nonnull %276, ptr noundef nonnull %277, ptr noundef %288, ptr noundef nonnull %2, ptr noundef %290, ptr noundef %292, ptr noundef %294, ptr noundef %296, ptr noundef %298, ptr noundef %300, ptr noundef %301, ptr noundef %303, ptr noundef nonnull %2, ptr noundef %304, ptr noundef %306, ptr noundef %308, ptr noundef %310, ptr noundef nonnull %222, ptr noundef %12, ptr noundef nonnull %13) #4
  %312 = load i64, ptr %13, align 8, !tbaa !5
  %.not467 = icmp eq i64 %312, 0
  br i1 %.not467, label %313, label %.thread478

313:                                              ; preds = %284, %278
  %314 = add nuw nsw i64 %.2488, 1
  %.pre515 = load i64, ptr %15, align 8, !tbaa !5
  br label %315

315:                                              ; preds = %._crit_edge517, %313
  %.pre-phi = phi i64 [ %.pre518, %._crit_edge517 ], [ %314, %313 ]
  %316 = phi i64 [ %224, %._crit_edge517 ], [ %.pre515, %313 ]
  %.1 = phi i64 [ %.0422489, %._crit_edge517 ], [ %314, %313 ]
  %.0422.neg = sub i64 0, %.1
  %.not465.not = icmp slt i64 %.2488, %316
  br i1 %.not465.not, label %223, label %._crit_edge493, !llvm.loop !14

._crit_edge493:                                   ; preds = %315, %._crit_edge
  %317 = call i32 @dlascl_(ptr noundef nonnull @.str.9, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull @c_b15, ptr noundef nonnull %25, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef %3, ptr noundef nonnull %2, ptr noundef nonnull %21) #4
  br label %thread-pre-split

thread-pre-split:                                 ; preds = %130, %._crit_edge493, %142, %137
  %.pr521 = load i64, ptr %2, align 8, !tbaa !5
  br label %318

318:                                              ; preds = %thread-pre-split, %136
  %319 = phi i64 [ %.pr521, %thread-pre-split ], [ %134, %136 ]
  store i64 %319, ptr %15, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %31, i64 8
  %invariant.gep504 = getelementptr i8, ptr %7, i64 -8
  %.not468508 = icmp slt i64 %319, 2
  br i1 %.not468508, label %._crit_edge512, label %.lr.ph511

.lr.ph511:                                        ; preds = %318, %343
  %320 = phi i64 [ %344, %343 ], [ %319, %318 ]
  %.0433509 = phi i64 [ %345, %343 ], [ 2, %318 ]
  %321 = add nsw i64 %.0433509, -1
  %322 = getelementptr inbounds double, ptr %27, i64 %321
  %323 = load double, ptr %322, align 8, !tbaa !9
  %324 = load i64, ptr %2, align 8, !tbaa !5
  %.not469494 = icmp sgt i64 %.0433509, %324
  br i1 %.not469494, label %._crit_edge500.thread, label %.lr.ph499

.lr.ph499:                                        ; preds = %.lr.ph511, %.lr.ph499
  %.0431497 = phi i64 [ %.1432, %.lr.ph499 ], [ %321, %.lr.ph511 ]
  %.0436496 = phi double [ %.1437, %.lr.ph499 ], [ %323, %.lr.ph511 ]
  %.0438495 = phi i64 [ %328, %.lr.ph499 ], [ %.0433509, %.lr.ph511 ]
  %325 = getelementptr inbounds double, ptr %27, i64 %.0438495
  %326 = load double, ptr %325, align 8, !tbaa !9
  %327 = fcmp ogt double %326, %.0436496
  %.1437 = select i1 %327, double %326, double %.0436496
  %.1432 = select i1 %327, i64 %.0438495, i64 %.0431497
  %328 = add nuw nsw i64 %.0438495, 1
  %.not469.not = icmp slt i64 %.0438495, %324
  br i1 %.not469.not, label %.lr.ph499, label %._crit_edge500, !llvm.loop !15

._crit_edge500:                                   ; preds = %.lr.ph499
  %.not470 = icmp eq i64 %.1432, %321
  br i1 %.not470, label %._crit_edge500.thread, label %329

329:                                              ; preds = %._crit_edge500
  %330 = getelementptr inbounds double, ptr %27, i64 %.1432
  store double %323, ptr %330, align 8, !tbaa !9
  store double %.1437, ptr %322, align 8, !tbaa !9
  %331 = load i64, ptr %24, align 8, !tbaa !5
  switch i64 %331, label %343 [
    i64 1, label %332
    i64 2, label %334
  ]

332:                                              ; preds = %329
  %333 = getelementptr inbounds i64, ptr %36, i64 %321
  store i64 %.1432, ptr %333, align 8, !tbaa !5
  br label %343

334:                                              ; preds = %329
  %335 = mul nsw i64 %321, %29
  %gep = getelementptr double, ptr %invariant.gep, i64 %335
  %336 = mul nsw i64 %.1432, %29
  %gep503 = getelementptr double, ptr %invariant.gep, i64 %336
  %337 = call i32 @f2c_dswap(ptr noundef nonnull %2, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %gep503, ptr noundef nonnull @c__1) #4
  %gep505 = getelementptr double, ptr %invariant.gep504, i64 %321
  %gep507 = getelementptr double, ptr %invariant.gep504, i64 %.1432
  %338 = call i32 @f2c_dswap(ptr noundef nonnull %2, ptr noundef %gep505, ptr noundef nonnull %8, ptr noundef %gep507, ptr noundef nonnull %8) #4
  %.pre516 = load i64, ptr %15, align 8, !tbaa !5
  br label %343

._crit_edge500.thread:                            ; preds = %.lr.ph511, %._crit_edge500
  %339 = load i64, ptr %24, align 8, !tbaa !5
  %340 = icmp eq i64 %339, 1
  br i1 %340, label %341, label %343

341:                                              ; preds = %._crit_edge500.thread
  %342 = getelementptr inbounds i64, ptr %36, i64 %321
  store i64 %321, ptr %342, align 8, !tbaa !5
  br label %343

343:                                              ; preds = %329, %334, %332, %341, %._crit_edge500.thread
  %344 = phi i64 [ %320, %329 ], [ %.pre516, %334 ], [ %320, %332 ], [ %320, %341 ], [ %320, %._crit_edge500.thread ]
  %345 = add nuw nsw i64 %.0433509, 1
  %.not468.not = icmp slt i64 %.0433509, %344
  br i1 %.not468.not, label %.lr.ph511, label %._crit_edge512, !llvm.loop !16

._crit_edge512:                                   ; preds = %343, %318
  %346 = load i64, ptr %24, align 8
  %347 = icmp eq i64 %346, 1
  br i1 %347, label %348, label %354

348:                                              ; preds = %._crit_edge512
  %not..not457 = xor i1 %.not457, true
  %349 = select i1 %not..not457, i1 %.not, i1 false
  %350 = load i64, ptr %2, align 8, !tbaa !5
  %351 = getelementptr inbounds i64, ptr %36, i64 %350
  br i1 %349, label %352, label %353

352:                                              ; preds = %348
  store i64 1, ptr %351, align 8, !tbaa !5
  br label %.thread478

353:                                              ; preds = %348
  store i64 0, ptr %351, align 8, !tbaa !5
  br label %.thread478

354:                                              ; preds = %._crit_edge512
  %355 = icmp eq i64 %346, 2
  %or.cond = and i1 %.not457, %355
  br i1 %or.cond, label %356, label %.thread478

356:                                              ; preds = %354
  %357 = load i64, ptr %2, align 8, !tbaa !5
  %358 = getelementptr inbounds double, ptr %37, i64 %357
  %359 = call i32 @dlasr_(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.12, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %11, ptr noundef nonnull %358, ptr noundef %5, ptr noundef nonnull %6) #4
  br label %.thread478

.thread478:                                       ; preds = %284, %353, %352, %354, %356, %163, %69, %83, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #4
  ret i32 0
}

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

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

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

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

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

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

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

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @log(double noundef) local_unnamed_addr #3

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

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

declare i32 @dlasr_(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 = { mustprogress nofree nounwind willreturn memory(write) "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 #4 = { nounwind }

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

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


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