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

108:                                              ; preds = %14
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %109

109:                                              ; preds = %108, %14
  %110 = load ptr, ptr %15, align 8, !tbaa !5
  %111 = call i32 @lsame_(ptr noundef %110, ptr noundef @.str.1)
  %112 = icmp ne i32 %111, 0
  br i1 %112, label %113, label %114

113:                                              ; preds = %109
  store i32 2, ptr %49, align 4, !tbaa !9
  br label %114

114:                                              ; preds = %113, %109
  %115 = load ptr, ptr %16, align 8, !tbaa !5
  %116 = call i32 @lsame_(ptr noundef %115, ptr noundef @.str.2)
  %117 = icmp ne i32 %116, 0
  br i1 %117, label %118, label %119

118:                                              ; preds = %114
  store i32 0, ptr %60, align 4, !tbaa !9
  br label %132

119:                                              ; preds = %114
  %120 = load ptr, ptr %16, align 8, !tbaa !5
  %121 = call i32 @lsame_(ptr noundef %120, ptr noundef @.str.3)
  %122 = icmp ne i32 %121, 0
  br i1 %122, label %123, label %124

123:                                              ; preds = %119
  store i32 1, ptr %60, align 4, !tbaa !9
  br label %131

124:                                              ; preds = %119
  %125 = load ptr, ptr %16, align 8, !tbaa !5
  %126 = call i32 @lsame_(ptr noundef %125, ptr noundef @.str.4)
  %127 = icmp ne i32 %126, 0
  br i1 %127, label %128, label %129

128:                                              ; preds = %124
  store i32 2, ptr %60, align 4, !tbaa !9
  br label %130

129:                                              ; preds = %124
  store i32 -1, ptr %60, align 4, !tbaa !9
  br label %130

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

131:                                              ; preds = %130, %123
  br label %132

132:                                              ; preds = %131, %118
  %133 = load i32, ptr %49, align 4, !tbaa !9
  %134 = icmp eq i32 %133, 0
  br i1 %134, label %135, label %137

135:                                              ; preds = %132
  %136 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -1, ptr %136, align 4, !tbaa !9
  br label %182

137:                                              ; preds = %132
  %138 = load i32, ptr %60, align 4, !tbaa !9
  %139 = icmp slt i32 %138, 0
  br i1 %139, label %140, label %142

140:                                              ; preds = %137
  %141 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -2, ptr %141, align 4, !tbaa !9
  br label %181

142:                                              ; preds = %137
  %143 = load ptr, ptr %17, align 8, !tbaa !5
  %144 = load i32, ptr %143, align 4, !tbaa !9
  %145 = icmp slt i32 %144, 0
  br i1 %145, label %146, label %148

146:                                              ; preds = %142
  %147 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -3, ptr %147, align 4, !tbaa !9
  br label %180

148:                                              ; preds = %142
  %149 = load ptr, ptr %21, align 8, !tbaa !5
  %150 = load i32, ptr %149, align 4, !tbaa !9
  %151 = icmp slt i32 %150, 1
  br i1 %151, label %161, label %152

152:                                              ; preds = %148
  %153 = load i32, ptr %60, align 4, !tbaa !9
  %154 = icmp eq i32 %153, 2
  br i1 %154, label %155, label %163

155:                                              ; preds = %152
  %156 = load ptr, ptr %21, align 8, !tbaa !5
  %157 = load i32, ptr %156, align 4, !tbaa !9
  %158 = load ptr, ptr %17, align 8, !tbaa !5
  %159 = load i32, ptr %158, align 4, !tbaa !9
  %160 = icmp slt i32 %157, %159
  br i1 %160, label %161, label %163

161:                                              ; preds = %155, %148
  %162 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -7, ptr %162, align 4, !tbaa !9
  br label %179

163:                                              ; preds = %155, %152
  %164 = load ptr, ptr %23, align 8, !tbaa !5
  %165 = load i32, ptr %164, align 4, !tbaa !9
  %166 = icmp slt i32 %165, 1
  br i1 %166, label %176, label %167

167:                                              ; preds = %163
  %168 = load i32, ptr %60, align 4, !tbaa !9
  %169 = icmp eq i32 %168, 2
  br i1 %169, label %170, label %178

170:                                              ; preds = %167
  %171 = load ptr, ptr %23, align 8, !tbaa !5
  %172 = load i32, ptr %171, align 4, !tbaa !9
  %173 = load ptr, ptr %17, align 8, !tbaa !5
  %174 = load i32, ptr %173, align 4, !tbaa !9
  %175 = icmp slt i32 %172, %174
  br i1 %175, label %176, label %178

176:                                              ; preds = %170, %163
  %177 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -9, ptr %177, align 4, !tbaa !9
  br label %178

178:                                              ; preds = %176, %170, %167
  br label %179

179:                                              ; preds = %178, %161
  br label %180

180:                                              ; preds = %179, %146
  br label %181

181:                                              ; preds = %180, %140
  br label %182

182:                                              ; preds = %181, %135
  %183 = load ptr, ptr %28, align 8, !tbaa !5
  %184 = load i32, ptr %183, align 4, !tbaa !9
  %185 = icmp ne i32 %184, 0
  br i1 %185, label %186, label %191

186:                                              ; preds = %182
  %187 = load ptr, ptr %28, align 8, !tbaa !5
  %188 = load i32, ptr %187, align 4, !tbaa !9
  %189 = sub nsw i32 0, %188
  store i32 %189, ptr %33, align 4, !tbaa !9
  %190 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %33, i32 noundef 6)
  store i32 1, ptr %71, align 4
  br label %1301

191:                                              ; preds = %182
  %192 = load ptr, ptr %17, align 8, !tbaa !5
  %193 = load i32, ptr %192, align 4, !tbaa !9
  %194 = icmp eq i32 %193, 0
  br i1 %194, label %195, label %196

195:                                              ; preds = %191
  store i32 1, ptr %71, align 4
  br label %1301

196:                                              ; preds = %191
  %197 = call i32 @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, i32 noundef 6, i32 noundef 1)
  store i32 %197, ptr %66, align 4, !tbaa !9
  %198 = load ptr, ptr %17, align 8, !tbaa !5
  %199 = load i32, ptr %198, align 4, !tbaa !9
  %200 = icmp eq i32 %199, 1
  br i1 %200, label %201, label %302

201:                                              ; preds = %196
  %202 = load i32, ptr %60, align 4, !tbaa !9
  %203 = icmp eq i32 %202, 1
  br i1 %203, label %204, label %242

204:                                              ; preds = %201
  %205 = load ptr, ptr %18, align 8, !tbaa !5
  %206 = getelementptr inbounds double, ptr %205, i64 1
  %207 = load double, ptr %206, align 8, !tbaa !11
  %208 = fcmp oge double %207, 0.000000e+00
  br i1 %208, label %209, label %219

209:                                              ; preds = %204
  %210 = load double, ptr @c_b15, align 8, !tbaa !11
  %211 = fcmp oge double %210, 0.000000e+00
  br i1 %211, label %212, label %214

212:                                              ; preds = %209
  %213 = load double, ptr @c_b15, align 8, !tbaa !11
  br label %217

214:                                              ; preds = %209
  %215 = load double, ptr @c_b15, align 8, !tbaa !11
  %216 = fneg double %215
  br label %217

217:                                              ; preds = %214, %212
  %218 = phi double [ %213, %212 ], [ %216, %214 ]
  br label %230

219:                                              ; preds = %204
  %220 = load double, ptr @c_b15, align 8, !tbaa !11
  %221 = fcmp oge double %220, 0.000000e+00
  br i1 %221, label %222, label %224

222:                                              ; preds = %219
  %223 = load double, ptr @c_b15, align 8, !tbaa !11
  br label %227

224:                                              ; preds = %219
  %225 = load double, ptr @c_b15, align 8, !tbaa !11
  %226 = fneg double %225
  br label %227

227:                                              ; preds = %224, %222
  %228 = phi double [ %223, %222 ], [ %226, %224 ]
  %229 = fneg double %228
  br label %230

230:                                              ; preds = %227, %217
  %231 = phi double [ %218, %217 ], [ %229, %227 ]
  %232 = load ptr, ptr %24, align 8, !tbaa !5
  %233 = getelementptr inbounds double, ptr %232, i64 1
  store double %231, ptr %233, align 8, !tbaa !11
  %234 = load ptr, ptr %24, align 8, !tbaa !5
  %235 = load i32, ptr %66, align 4, !tbaa !9
  %236 = load ptr, ptr %17, align 8, !tbaa !5
  %237 = load i32, ptr %236, align 4, !tbaa !9
  %238 = mul nsw i32 %235, %237
  %239 = add nsw i32 %238, 1
  %240 = sext i32 %239 to i64
  %241 = getelementptr inbounds double, ptr %234, i64 %240
  store double 1.000000e+00, ptr %241, align 8, !tbaa !11
  br label %284

242:                                              ; preds = %201
  %243 = load i32, ptr %60, align 4, !tbaa !9
  %244 = icmp eq i32 %243, 2
  br i1 %244, label %245, label %283

245:                                              ; preds = %242
  %246 = load ptr, ptr %18, align 8, !tbaa !5
  %247 = getelementptr inbounds double, ptr %246, i64 1
  %248 = load double, ptr %247, align 8, !tbaa !11
  %249 = fcmp oge double %248, 0.000000e+00
  br i1 %249, label %250, label %260

250:                                              ; preds = %245
  %251 = load double, ptr @c_b15, align 8, !tbaa !11
  %252 = fcmp oge double %251, 0.000000e+00
  br i1 %252, label %253, label %255

253:                                              ; preds = %250
  %254 = load double, ptr @c_b15, align 8, !tbaa !11
  br label %258

255:                                              ; preds = %250
  %256 = load double, ptr @c_b15, align 8, !tbaa !11
  %257 = fneg double %256
  br label %258

258:                                              ; preds = %255, %253
  %259 = phi double [ %254, %253 ], [ %257, %255 ]
  br label %271

260:                                              ; preds = %245
  %261 = load double, ptr @c_b15, align 8, !tbaa !11
  %262 = fcmp oge double %261, 0.000000e+00
  br i1 %262, label %263, label %265

263:                                              ; preds = %260
  %264 = load double, ptr @c_b15, align 8, !tbaa !11
  br label %268

265:                                              ; preds = %260
  %266 = load double, ptr @c_b15, align 8, !tbaa !11
  %267 = fneg double %266
  br label %268

268:                                              ; preds = %265, %263
  %269 = phi double [ %264, %263 ], [ %267, %265 ]
  %270 = fneg double %269
  br label %271

271:                                              ; preds = %268, %258
  %272 = phi double [ %259, %258 ], [ %270, %268 ]
  %273 = load ptr, ptr %20, align 8, !tbaa !5
  %274 = load i32, ptr %29, align 4, !tbaa !9
  %275 = add nsw i32 %274, 1
  %276 = sext i32 %275 to i64
  %277 = getelementptr inbounds double, ptr %273, i64 %276
  store double %272, ptr %277, align 8, !tbaa !11
  %278 = load ptr, ptr %22, align 8, !tbaa !5
  %279 = load i32, ptr %31, align 4, !tbaa !9
  %280 = add nsw i32 %279, 1
  %281 = sext i32 %280 to i64
  %282 = getelementptr inbounds double, ptr %278, i64 %281
  store double 1.000000e+00, ptr %282, align 8, !tbaa !11
  br label %283

283:                                              ; preds = %271, %242
  br label %284

284:                                              ; preds = %283, %230
  %285 = load ptr, ptr %18, align 8, !tbaa !5
  %286 = getelementptr inbounds double, ptr %285, i64 1
  %287 = load double, ptr %286, align 8, !tbaa !11
  %288 = fcmp oge double %287, 0.000000e+00
  br i1 %288, label %289, label %293

289:                                              ; preds = %284
  %290 = load ptr, ptr %18, align 8, !tbaa !5
  %291 = getelementptr inbounds double, ptr %290, i64 1
  %292 = load double, ptr %291, align 8, !tbaa !11
  br label %298

293:                                              ; preds = %284
  %294 = load ptr, ptr %18, align 8, !tbaa !5
  %295 = getelementptr inbounds double, ptr %294, i64 1
  %296 = load double, ptr %295, align 8, !tbaa !11
  %297 = fneg double %296
  br label %298

298:                                              ; preds = %293, %289
  %299 = phi double [ %292, %289 ], [ %297, %293 ]
  %300 = load ptr, ptr %18, align 8, !tbaa !5
  %301 = getelementptr inbounds double, ptr %300, i64 1
  store double %299, ptr %301, align 8, !tbaa !11
  store i32 1, ptr %71, align 4
  br label %1301

302:                                              ; preds = %196
  %303 = load ptr, ptr %17, align 8, !tbaa !5
  %304 = load i32, ptr %303, align 4, !tbaa !9
  %305 = sub nsw i32 %304, 1
  store i32 %305, ptr %64, align 4, !tbaa !9
  store i32 1, ptr %67, align 4, !tbaa !9
  store i32 3, ptr %65, align 4, !tbaa !9
  %306 = load i32, ptr %60, align 4, !tbaa !9
  %307 = icmp eq i32 %306, 1
  br i1 %307, label %308, label %325

308:                                              ; preds = %302
  %309 = load ptr, ptr %17, align 8, !tbaa !5
  %310 = load ptr, ptr %18, align 8, !tbaa !5
  %311 = getelementptr inbounds double, ptr %310, i64 1
  %312 = load ptr, ptr %24, align 8, !tbaa !5
  %313 = getelementptr inbounds double, ptr %312, i64 1
  call void @dcopy_(ptr noundef %309, ptr noundef %311, ptr noundef @c__1, ptr noundef %313, ptr noundef @c__1)
  %314 = load ptr, ptr %17, align 8, !tbaa !5
  %315 = load i32, ptr %314, align 4, !tbaa !9
  %316 = sub nsw i32 %315, 1
  store i32 %316, ptr %33, align 4, !tbaa !9
  %317 = load ptr, ptr %19, align 8, !tbaa !5
  %318 = getelementptr inbounds double, ptr %317, i64 1
  %319 = load ptr, ptr %24, align 8, !tbaa !5
  %320 = load ptr, ptr %17, align 8, !tbaa !5
  %321 = load i32, ptr %320, align 4, !tbaa !9
  %322 = add nsw i32 %321, 1
  %323 = sext i32 %322 to i64
  %324 = getelementptr inbounds double, ptr %319, i64 %323
  call void @dcopy_(ptr noundef %33, ptr noundef %318, ptr noundef @c__1, ptr noundef %324, ptr noundef @c__1)
  br label %325

325:                                              ; preds = %308, %302
  %326 = load i32, ptr %49, align 4, !tbaa !9
  %327 = icmp eq i32 %326, 2
  br i1 %327, label %328, label %427

328:                                              ; preds = %325
  store i32 5, ptr %65, align 4, !tbaa !9
  %329 = load i32, ptr %60, align 4, !tbaa !9
  %330 = icmp eq i32 %329, 2
  br i1 %330, label %331, label %336

331:                                              ; preds = %328
  %332 = load ptr, ptr %17, align 8, !tbaa !5
  %333 = load i32, ptr %332, align 4, !tbaa !9
  %334 = shl i32 %333, 1
  %335 = sub nsw i32 %334, 1
  store i32 %335, ptr %67, align 4, !tbaa !9
  br label %336

336:                                              ; preds = %331, %328
  %337 = load ptr, ptr %17, align 8, !tbaa !5
  %338 = load i32, ptr %337, align 4, !tbaa !9
  %339 = sub nsw i32 %338, 1
  store i32 %339, ptr %33, align 4, !tbaa !9
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %340

340:                                              ; preds = %423, %336
  %341 = load i32, ptr %42, align 4, !tbaa !9
  %342 = load i32, ptr %33, align 4, !tbaa !9
  %343 = icmp sle i32 %341, %342
  br i1 %343, label %344, label %426

344:                                              ; preds = %340
  %345 = load ptr, ptr %18, align 8, !tbaa !5
  %346 = load i32, ptr %42, align 4, !tbaa !9
  %347 = sext i32 %346 to i64
  %348 = getelementptr inbounds double, ptr %345, i64 %347
  %349 = load ptr, ptr %19, align 8, !tbaa !5
  %350 = load i32, ptr %42, align 4, !tbaa !9
  %351 = sext i32 %350 to i64
  %352 = getelementptr inbounds double, ptr %349, i64 %351
  call void @dlartg_(ptr noundef %348, ptr noundef %352, ptr noundef %55, ptr noundef %58, ptr noundef %46)
  %353 = load double, ptr %46, align 8, !tbaa !11
  %354 = load ptr, ptr %18, align 8, !tbaa !5
  %355 = load i32, ptr %42, align 4, !tbaa !9
  %356 = sext i32 %355 to i64
  %357 = getelementptr inbounds double, ptr %354, i64 %356
  store double %353, ptr %357, align 8, !tbaa !11
  %358 = load double, ptr %58, align 8, !tbaa !11
  %359 = load ptr, ptr %18, align 8, !tbaa !5
  %360 = load i32, ptr %42, align 4, !tbaa !9
  %361 = add nsw i32 %360, 1
  %362 = sext i32 %361 to i64
  %363 = getelementptr inbounds double, ptr %359, i64 %362
  %364 = load double, ptr %363, align 8, !tbaa !11
  %365 = fmul double %358, %364
  %366 = load ptr, ptr %19, align 8, !tbaa !5
  %367 = load i32, ptr %42, align 4, !tbaa !9
  %368 = sext i32 %367 to i64
  %369 = getelementptr inbounds double, ptr %366, i64 %368
  store double %365, ptr %369, align 8, !tbaa !11
  %370 = load double, ptr %55, align 8, !tbaa !11
  %371 = load ptr, ptr %18, align 8, !tbaa !5
  %372 = load i32, ptr %42, align 4, !tbaa !9
  %373 = add nsw i32 %372, 1
  %374 = sext i32 %373 to i64
  %375 = getelementptr inbounds double, ptr %371, i64 %374
  %376 = load double, ptr %375, align 8, !tbaa !11
  %377 = fmul double %370, %376
  %378 = load ptr, ptr %18, align 8, !tbaa !5
  %379 = load i32, ptr %42, align 4, !tbaa !9
  %380 = add nsw i32 %379, 1
  %381 = sext i32 %380 to i64
  %382 = getelementptr inbounds double, ptr %378, i64 %381
  store double %377, ptr %382, align 8, !tbaa !11
  %383 = load i32, ptr %60, align 4, !tbaa !9
  %384 = icmp eq i32 %383, 1
  br i1 %384, label %385, label %404

385:                                              ; preds = %344
  %386 = load double, ptr %55, align 8, !tbaa !11
  %387 = load ptr, ptr %24, align 8, !tbaa !5
  %388 = load i32, ptr %42, align 4, !tbaa !9
  %389 = load ptr, ptr %17, align 8, !tbaa !5
  %390 = load i32, ptr %389, align 4, !tbaa !9
  %391 = shl i32 %390, 1
  %392 = add nsw i32 %388, %391
  %393 = sext i32 %392 to i64
  %394 = getelementptr inbounds double, ptr %387, i64 %393
  store double %386, ptr %394, align 8, !tbaa !11
  %395 = load double, ptr %58, align 8, !tbaa !11
  %396 = load ptr, ptr %24, align 8, !tbaa !5
  %397 = load i32, ptr %42, align 4, !tbaa !9
  %398 = load ptr, ptr %17, align 8, !tbaa !5
  %399 = load i32, ptr %398, align 4, !tbaa !9
  %400 = mul nsw i32 %399, 3
  %401 = add nsw i32 %397, %400
  %402 = sext i32 %401 to i64
  %403 = getelementptr inbounds double, ptr %396, i64 %402
  store double %395, ptr %403, align 8, !tbaa !11
  br label %422

404:                                              ; preds = %344
  %405 = load i32, ptr %60, align 4, !tbaa !9
  %406 = icmp eq i32 %405, 2
  br i1 %406, label %407, label %421

407:                                              ; preds = %404
  %408 = load double, ptr %55, align 8, !tbaa !11
  %409 = load ptr, ptr %26, align 8, !tbaa !5
  %410 = load i32, ptr %42, align 4, !tbaa !9
  %411 = sext i32 %410 to i64
  %412 = getelementptr inbounds double, ptr %409, i64 %411
  store double %408, ptr %412, align 8, !tbaa !11
  %413 = load double, ptr %58, align 8, !tbaa !11
  %414 = fneg double %413
  %415 = load ptr, ptr %26, align 8, !tbaa !5
  %416 = load i32, ptr %64, align 4, !tbaa !9
  %417 = load i32, ptr %42, align 4, !tbaa !9
  %418 = add nsw i32 %416, %417
  %419 = sext i32 %418 to i64
  %420 = getelementptr inbounds double, ptr %415, i64 %419
  store double %414, ptr %420, align 8, !tbaa !11
  br label %421

421:                                              ; preds = %407, %404
  br label %422

422:                                              ; preds = %421, %385
  br label %423

423:                                              ; preds = %422
  %424 = load i32, ptr %42, align 4, !tbaa !9
  %425 = add nsw i32 %424, 1
  store i32 %425, ptr %42, align 4, !tbaa !9
  br label %340, !llvm.loop !13

426:                                              ; preds = %340
  br label %427

427:                                              ; preds = %426, %325
  %428 = load i32, ptr %60, align 4, !tbaa !9
  %429 = icmp eq i32 %428, 0
  br i1 %429, label %430, label %454

430:                                              ; preds = %427
  %431 = load ptr, ptr %17, align 8, !tbaa !5
  %432 = load ptr, ptr %18, align 8, !tbaa !5
  %433 = getelementptr inbounds double, ptr %432, i64 1
  %434 = load ptr, ptr %19, align 8, !tbaa !5
  %435 = getelementptr inbounds double, ptr %434, i64 1
  %436 = load ptr, ptr %22, align 8, !tbaa !5
  %437 = load i32, ptr %32, align 4, !tbaa !9
  %438 = sext i32 %437 to i64
  %439 = getelementptr inbounds double, ptr %436, i64 %438
  %440 = load ptr, ptr %23, align 8, !tbaa !5
  %441 = load ptr, ptr %20, align 8, !tbaa !5
  %442 = load i32, ptr %30, align 4, !tbaa !9
  %443 = sext i32 %442 to i64
  %444 = getelementptr inbounds double, ptr %441, i64 %443
  %445 = load ptr, ptr %21, align 8, !tbaa !5
  %446 = load ptr, ptr %20, align 8, !tbaa !5
  %447 = load i32, ptr %30, align 4, !tbaa !9
  %448 = sext i32 %447 to i64
  %449 = getelementptr inbounds double, ptr %446, i64 %448
  %450 = load ptr, ptr %21, align 8, !tbaa !5
  %451 = load ptr, ptr %26, align 8, !tbaa !5
  %452 = getelementptr inbounds double, ptr %451, i64 1
  %453 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dlasdq_(ptr noundef @.str, ptr noundef @c__0, ptr noundef %431, ptr noundef @c__0, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %433, ptr noundef %435, ptr noundef %439, ptr noundef %440, ptr noundef %444, ptr noundef %445, ptr noundef %449, ptr noundef %450, ptr noundef %452, ptr noundef %453)
  br label %1141

454:                                              ; preds = %427
  %455 = load ptr, ptr %17, align 8, !tbaa !5
  %456 = load i32, ptr %455, align 4, !tbaa !9
  %457 = load i32, ptr %66, align 4, !tbaa !9
  %458 = icmp sle i32 %456, %457
  br i1 %458, label %459, label %585

459:                                              ; preds = %454
  %460 = load i32, ptr %60, align 4, !tbaa !9
  %461 = icmp eq i32 %460, 2
  br i1 %461, label %462, label %504

462:                                              ; preds = %459
  %463 = load ptr, ptr %17, align 8, !tbaa !5
  %464 = load ptr, ptr %17, align 8, !tbaa !5
  %465 = load ptr, ptr %20, align 8, !tbaa !5
  %466 = load i32, ptr %30, align 4, !tbaa !9
  %467 = sext i32 %466 to i64
  %468 = getelementptr inbounds double, ptr %465, i64 %467
  %469 = load ptr, ptr %21, align 8, !tbaa !5
  call void @dlaset_(ptr noundef @.str.7, ptr noundef %463, ptr noundef %464, ptr noundef @c_b29, ptr noundef @c_b15, ptr noundef %468, ptr noundef %469)
  %470 = load ptr, ptr %17, align 8, !tbaa !5
  %471 = load ptr, ptr %17, align 8, !tbaa !5
  %472 = load ptr, ptr %22, align 8, !tbaa !5
  %473 = load i32, ptr %32, align 4, !tbaa !9
  %474 = sext i32 %473 to i64
  %475 = getelementptr inbounds double, ptr %472, i64 %474
  %476 = load ptr, ptr %23, align 8, !tbaa !5
  call void @dlaset_(ptr noundef @.str.7, ptr noundef %470, ptr noundef %471, ptr noundef @c_b29, ptr noundef @c_b15, ptr noundef %475, ptr noundef %476)
  %477 = load ptr, ptr %17, align 8, !tbaa !5
  %478 = load ptr, ptr %17, align 8, !tbaa !5
  %479 = load ptr, ptr %17, align 8, !tbaa !5
  %480 = load ptr, ptr %18, align 8, !tbaa !5
  %481 = getelementptr inbounds double, ptr %480, i64 1
  %482 = load ptr, ptr %19, align 8, !tbaa !5
  %483 = getelementptr inbounds double, ptr %482, i64 1
  %484 = load ptr, ptr %22, align 8, !tbaa !5
  %485 = load i32, ptr %32, align 4, !tbaa !9
  %486 = sext i32 %485 to i64
  %487 = getelementptr inbounds double, ptr %484, i64 %486
  %488 = load ptr, ptr %23, align 8, !tbaa !5
  %489 = load ptr, ptr %20, align 8, !tbaa !5
  %490 = load i32, ptr %30, align 4, !tbaa !9
  %491 = sext i32 %490 to i64
  %492 = getelementptr inbounds double, ptr %489, i64 %491
  %493 = load ptr, ptr %21, align 8, !tbaa !5
  %494 = load ptr, ptr %20, align 8, !tbaa !5
  %495 = load i32, ptr %30, align 4, !tbaa !9
  %496 = sext i32 %495 to i64
  %497 = getelementptr inbounds double, ptr %494, i64 %496
  %498 = load ptr, ptr %21, align 8, !tbaa !5
  %499 = load ptr, ptr %26, align 8, !tbaa !5
  %500 = load i32, ptr %67, align 4, !tbaa !9
  %501 = sext i32 %500 to i64
  %502 = getelementptr inbounds double, ptr %499, i64 %501
  %503 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dlasdq_(ptr noundef @.str, ptr noundef @c__0, ptr noundef %477, ptr noundef %478, ptr noundef %479, ptr noundef @c__0, ptr noundef %481, ptr noundef %483, ptr noundef %487, ptr noundef %488, ptr noundef %492, ptr noundef %493, ptr noundef %497, ptr noundef %498, ptr noundef %502, ptr noundef %503)
  br label %584

504:                                              ; preds = %459
  %505 = load i32, ptr %60, align 4, !tbaa !9
  %506 = icmp eq i32 %505, 1
  br i1 %506, label %507, label %583

507:                                              ; preds = %504
  store i32 1, ptr %57, align 4, !tbaa !9
  %508 = load i32, ptr %57, align 4, !tbaa !9
  %509 = load ptr, ptr %17, align 8, !tbaa !5
  %510 = load i32, ptr %509, align 4, !tbaa !9
  %511 = add nsw i32 %508, %510
  store i32 %511, ptr %70, align 4, !tbaa !9
  %512 = load ptr, ptr %17, align 8, !tbaa !5
  %513 = load ptr, ptr %17, align 8, !tbaa !5
  %514 = load ptr, ptr %24, align 8, !tbaa !5
  %515 = load i32, ptr %57, align 4, !tbaa !9
  %516 = load i32, ptr %65, align 4, !tbaa !9
  %517 = sub nsw i32 %516, 1
  %518 = load ptr, ptr %17, align 8, !tbaa !5
  %519 = load i32, ptr %518, align 4, !tbaa !9
  %520 = mul nsw i32 %517, %519
  %521 = add nsw i32 %515, %520
  %522 = sext i32 %521 to i64
  %523 = getelementptr inbounds double, ptr %514, i64 %522
  %524 = load ptr, ptr %17, align 8, !tbaa !5
  call void @dlaset_(ptr noundef @.str.7, ptr noundef %512, ptr noundef %513, ptr noundef @c_b29, ptr noundef @c_b15, ptr noundef %523, ptr noundef %524)
  %525 = load ptr, ptr %17, align 8, !tbaa !5
  %526 = load ptr, ptr %17, align 8, !tbaa !5
  %527 = load ptr, ptr %24, align 8, !tbaa !5
  %528 = load i32, ptr %70, align 4, !tbaa !9
  %529 = load i32, ptr %65, align 4, !tbaa !9
  %530 = sub nsw i32 %529, 1
  %531 = load ptr, ptr %17, align 8, !tbaa !5
  %532 = load i32, ptr %531, align 4, !tbaa !9
  %533 = mul nsw i32 %530, %532
  %534 = add nsw i32 %528, %533
  %535 = sext i32 %534 to i64
  %536 = getelementptr inbounds double, ptr %527, i64 %535
  %537 = load ptr, ptr %17, align 8, !tbaa !5
  call void @dlaset_(ptr noundef @.str.7, ptr noundef %525, ptr noundef %526, ptr noundef @c_b29, ptr noundef @c_b15, ptr noundef %536, ptr noundef %537)
  %538 = load ptr, ptr %17, align 8, !tbaa !5
  %539 = load ptr, ptr %17, align 8, !tbaa !5
  %540 = load ptr, ptr %17, align 8, !tbaa !5
  %541 = load ptr, ptr %18, align 8, !tbaa !5
  %542 = getelementptr inbounds double, ptr %541, i64 1
  %543 = load ptr, ptr %19, align 8, !tbaa !5
  %544 = getelementptr inbounds double, ptr %543, i64 1
  %545 = load ptr, ptr %24, align 8, !tbaa !5
  %546 = load i32, ptr %70, align 4, !tbaa !9
  %547 = load i32, ptr %65, align 4, !tbaa !9
  %548 = sub nsw i32 %547, 1
  %549 = load ptr, ptr %17, align 8, !tbaa !5
  %550 = load i32, ptr %549, align 4, !tbaa !9
  %551 = mul nsw i32 %548, %550
  %552 = add nsw i32 %546, %551
  %553 = sext i32 %552 to i64
  %554 = getelementptr inbounds double, ptr %545, i64 %553
  %555 = load ptr, ptr %17, align 8, !tbaa !5
  %556 = load ptr, ptr %24, align 8, !tbaa !5
  %557 = load i32, ptr %57, align 4, !tbaa !9
  %558 = load i32, ptr %65, align 4, !tbaa !9
  %559 = sub nsw i32 %558, 1
  %560 = load ptr, ptr %17, align 8, !tbaa !5
  %561 = load i32, ptr %560, align 4, !tbaa !9
  %562 = mul nsw i32 %559, %561
  %563 = add nsw i32 %557, %562
  %564 = sext i32 %563 to i64
  %565 = getelementptr inbounds double, ptr %556, i64 %564
  %566 = load ptr, ptr %17, align 8, !tbaa !5
  %567 = load ptr, ptr %24, align 8, !tbaa !5
  %568 = load i32, ptr %57, align 4, !tbaa !9
  %569 = load i32, ptr %65, align 4, !tbaa !9
  %570 = sub nsw i32 %569, 1
  %571 = load ptr, ptr %17, align 8, !tbaa !5
  %572 = load i32, ptr %571, align 4, !tbaa !9
  %573 = mul nsw i32 %570, %572
  %574 = add nsw i32 %568, %573
  %575 = sext i32 %574 to i64
  %576 = getelementptr inbounds double, ptr %567, i64 %575
  %577 = load ptr, ptr %17, align 8, !tbaa !5
  %578 = load ptr, ptr %26, align 8, !tbaa !5
  %579 = load i32, ptr %67, align 4, !tbaa !9
  %580 = sext i32 %579 to i64
  %581 = getelementptr inbounds double, ptr %578, i64 %580
  %582 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dlasdq_(ptr noundef @.str, ptr noundef @c__0, ptr noundef %538, ptr noundef %539, ptr noundef %540, ptr noundef @c__0, ptr noundef %542, ptr noundef %544, ptr noundef %554, ptr noundef %555, ptr noundef %565, ptr noundef %566, ptr noundef %576, ptr noundef %577, ptr noundef %581, ptr noundef %582)
  br label %583

583:                                              ; preds = %507, %504
  br label %584

584:                                              ; preds = %583, %462
  br label %1141

585:                                              ; preds = %454
  %586 = load i32, ptr %60, align 4, !tbaa !9
  %587 = icmp eq i32 %586, 2
  br i1 %587, label %588, label %603

588:                                              ; preds = %585
  %589 = load ptr, ptr %17, align 8, !tbaa !5
  %590 = load ptr, ptr %17, align 8, !tbaa !5
  %591 = load ptr, ptr %20, align 8, !tbaa !5
  %592 = load i32, ptr %30, align 4, !tbaa !9
  %593 = sext i32 %592 to i64
  %594 = getelementptr inbounds double, ptr %591, i64 %593
  %595 = load ptr, ptr %21, align 8, !tbaa !5
  call void @dlaset_(ptr noundef @.str.7, ptr noundef %589, ptr noundef %590, ptr noundef @c_b29, ptr noundef @c_b15, ptr noundef %594, ptr noundef %595)
  %596 = load ptr, ptr %17, align 8, !tbaa !5
  %597 = load ptr, ptr %17, align 8, !tbaa !5
  %598 = load ptr, ptr %22, align 8, !tbaa !5
  %599 = load i32, ptr %32, align 4, !tbaa !9
  %600 = sext i32 %599 to i64
  %601 = getelementptr inbounds double, ptr %598, i64 %600
  %602 = load ptr, ptr %23, align 8, !tbaa !5
  call void @dlaset_(ptr noundef @.str.7, ptr noundef %596, ptr noundef %597, ptr noundef @c_b29, ptr noundef @c_b15, ptr noundef %601, ptr noundef %602)
  br label %603

603:                                              ; preds = %588, %585
  %604 = load ptr, ptr %17, align 8, !tbaa !5
  %605 = load ptr, ptr %18, align 8, !tbaa !5
  %606 = getelementptr inbounds double, ptr %605, i64 1
  %607 = load ptr, ptr %19, align 8, !tbaa !5
  %608 = getelementptr inbounds double, ptr %607, i64 1
  %609 = call double @dlanst_(ptr noundef @.str.8, ptr noundef %604, ptr noundef %606, ptr noundef %608)
  store double %609, ptr %61, align 8, !tbaa !11
  %610 = load double, ptr %61, align 8, !tbaa !11
  %611 = fcmp oeq double %610, 0.000000e+00
  br i1 %611, label %612, label %613

612:                                              ; preds = %603
  store i32 1, ptr %71, align 4
  br label %1301

613:                                              ; preds = %603
  %614 = load ptr, ptr %17, align 8, !tbaa !5
  %615 = load ptr, ptr %18, align 8, !tbaa !5
  %616 = getelementptr inbounds double, ptr %615, i64 1
  %617 = load ptr, ptr %17, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.9, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %61, ptr noundef @c_b15, ptr noundef %614, ptr noundef @c__1, ptr noundef %616, ptr noundef %617, ptr noundef %38)
  %618 = load ptr, ptr %19, align 8, !tbaa !5
  %619 = getelementptr inbounds double, ptr %618, i64 1
  call void @dlascl_(ptr noundef @.str.9, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %61, ptr noundef @c_b15, ptr noundef %64, ptr noundef @c__1, ptr noundef %619, ptr noundef %64, ptr noundef %38)
  %620 = call double @dlamch_(ptr noundef @.str.10)
  %621 = fmul double %620, 9.000000e-01
  store double %621, ptr %69, align 8, !tbaa !11
  %622 = load ptr, ptr %17, align 8, !tbaa !5
  %623 = load i32, ptr %622, align 4, !tbaa !9
  %624 = sitofp i32 %623 to double
  %625 = load i32, ptr %66, align 4, !tbaa !9
  %626 = add nsw i32 %625, 1
  %627 = sitofp i32 %626 to double
  %628 = fdiv double %624, %627
  %629 = call double @log(double noundef %628) #4
  %630 = call double @log(double noundef 2.000000e+00) #4
  %631 = fdiv double %629, %630
  %632 = fptosi double %631 to i32
  %633 = add nsw i32 %632, 1
  store i32 %633, ptr %40, align 4, !tbaa !9
  %634 = load i32, ptr %66, align 4, !tbaa !9
  %635 = add nsw i32 %634, 1
  store i32 %635, ptr %68, align 4, !tbaa !9
  %636 = load i32, ptr %60, align 4, !tbaa !9
  %637 = icmp eq i32 %636, 1
  br i1 %637, label %638, label %665

638:                                              ; preds = %613
  store i32 1, ptr %57, align 4, !tbaa !9
  %639 = load i32, ptr %66, align 4, !tbaa !9
  %640 = add nsw i32 %639, 1
  store i32 %640, ptr %70, align 4, !tbaa !9
  %641 = load i32, ptr %70, align 4, !tbaa !9
  %642 = load i32, ptr %68, align 4, !tbaa !9
  %643 = add nsw i32 %641, %642
  store i32 %643, ptr %36, align 4, !tbaa !9
  %644 = load i32, ptr %36, align 4, !tbaa !9
  %645 = load i32, ptr %40, align 4, !tbaa !9
  %646 = add nsw i32 %644, %645
  store i32 %646, ptr %37, align 4, !tbaa !9
  %647 = load i32, ptr %37, align 4, !tbaa !9
  %648 = load i32, ptr %40, align 4, !tbaa !9
  %649 = shl i32 %648, 1
  %650 = add nsw i32 %647, %649
  store i32 %650, ptr %47, align 4, !tbaa !9
  %651 = load i32, ptr %47, align 4, !tbaa !9
  %652 = load i32, ptr %40, align 4, !tbaa !9
  %653 = add nsw i32 %651, %652
  store i32 %653, ptr %52, align 4, !tbaa !9
  %654 = load i32, ptr %52, align 4, !tbaa !9
  %655 = add nsw i32 %654, 1
  store i32 %655, ptr %56, align 4, !tbaa !9
  %656 = load i32, ptr %56, align 4, !tbaa !9
  %657 = add nsw i32 %656, 1
  store i32 %657, ptr %48, align 4, !tbaa !9
  %658 = load i32, ptr %48, align 4, !tbaa !9
  %659 = load i32, ptr %40, align 4, !tbaa !9
  %660 = shl i32 %659, 1
  %661 = add nsw i32 %658, %660
  store i32 %661, ptr %62, align 4, !tbaa !9
  store i32 1, ptr %44, align 4, !tbaa !9
  store i32 2, ptr %63, align 4, !tbaa !9
  store i32 3, ptr %39, align 4, !tbaa !9
  %662 = load i32, ptr %39, align 4, !tbaa !9
  %663 = load i32, ptr %40, align 4, !tbaa !9
  %664 = add nsw i32 %662, %663
  store i32 %664, ptr %59, align 4, !tbaa !9
  br label %665

665:                                              ; preds = %638, %613
  %666 = load ptr, ptr %17, align 8, !tbaa !5
  %667 = load i32, ptr %666, align 4, !tbaa !9
  store i32 %667, ptr %33, align 4, !tbaa !9
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %668

668:                                              ; preds = %724, %665
  %669 = load i32, ptr %42, align 4, !tbaa !9
  %670 = load i32, ptr %33, align 4, !tbaa !9
  %671 = icmp sle i32 %669, %670
  br i1 %671, label %672, label %727

672:                                              ; preds = %668
  %673 = load ptr, ptr %18, align 8, !tbaa !5
  %674 = load i32, ptr %42, align 4, !tbaa !9
  %675 = sext i32 %674 to i64
  %676 = getelementptr inbounds double, ptr %673, i64 %675
  %677 = load double, ptr %676, align 8, !tbaa !11
  store double %677, ptr %35, align 8, !tbaa !11
  %678 = load double, ptr %35, align 8, !tbaa !11
  %679 = fcmp oge double %678, 0.000000e+00
  br i1 %679, label %680, label %682

680:                                              ; preds = %672
  %681 = load double, ptr %35, align 8, !tbaa !11
  br label %685

682:                                              ; preds = %672
  %683 = load double, ptr %35, align 8, !tbaa !11
  %684 = fneg double %683
  br label %685

685:                                              ; preds = %682, %680
  %686 = phi double [ %681, %680 ], [ %684, %682 ]
  %687 = load double, ptr %69, align 8, !tbaa !11
  %688 = fcmp olt double %686, %687
  br i1 %688, label %689, label %723

689:                                              ; preds = %685
  %690 = load ptr, ptr %18, align 8, !tbaa !5
  %691 = load i32, ptr %42, align 4, !tbaa !9
  %692 = sext i32 %691 to i64
  %693 = getelementptr inbounds double, ptr %690, i64 %692
  %694 = load double, ptr %693, align 8, !tbaa !11
  %695 = fcmp oge double %694, 0.000000e+00
  br i1 %695, label %696, label %706

696:                                              ; preds = %689
  %697 = load double, ptr %69, align 8, !tbaa !11
  %698 = fcmp oge double %697, 0.000000e+00
  br i1 %698, label %699, label %701

699:                                              ; preds = %696
  %700 = load double, ptr %69, align 8, !tbaa !11
  br label %704

701:                                              ; preds = %696
  %702 = load double, ptr %69, align 8, !tbaa !11
  %703 = fneg double %702
  br label %704

704:                                              ; preds = %701, %699
  %705 = phi double [ %700, %699 ], [ %703, %701 ]
  br label %717

706:                                              ; preds = %689
  %707 = load double, ptr %69, align 8, !tbaa !11
  %708 = fcmp oge double %707, 0.000000e+00
  br i1 %708, label %709, label %711

709:                                              ; preds = %706
  %710 = load double, ptr %69, align 8, !tbaa !11
  br label %714

711:                                              ; preds = %706
  %712 = load double, ptr %69, align 8, !tbaa !11
  %713 = fneg double %712
  br label %714

714:                                              ; preds = %711, %709
  %715 = phi double [ %710, %709 ], [ %713, %711 ]
  %716 = fneg double %715
  br label %717

717:                                              ; preds = %714, %704
  %718 = phi double [ %705, %704 ], [ %716, %714 ]
  %719 = load ptr, ptr %18, align 8, !tbaa !5
  %720 = load i32, ptr %42, align 4, !tbaa !9
  %721 = sext i32 %720 to i64
  %722 = getelementptr inbounds double, ptr %719, i64 %721
  store double %718, ptr %722, align 8, !tbaa !11
  br label %723

723:                                              ; preds = %717, %685
  br label %724

724:                                              ; preds = %723
  %725 = load i32, ptr %42, align 4, !tbaa !9
  %726 = add nsw i32 %725, 1
  store i32 %726, ptr %42, align 4, !tbaa !9
  br label %668, !llvm.loop !15

727:                                              ; preds = %668
  store i32 1, ptr %51, align 4, !tbaa !9
  store i32 0, ptr %41, align 4, !tbaa !9
  %728 = load i32, ptr %64, align 4, !tbaa !9
  store i32 %728, ptr %33, align 4, !tbaa !9
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %729

729:                                              ; preds = %1133, %727
  %730 = load i32, ptr %42, align 4, !tbaa !9
  %731 = load i32, ptr %33, align 4, !tbaa !9
  %732 = icmp sle i32 %730, %731
  br i1 %732, label %733, label %1136

733:                                              ; preds = %729
  %734 = load ptr, ptr %19, align 8, !tbaa !5
  %735 = load i32, ptr %42, align 4, !tbaa !9
  %736 = sext i32 %735 to i64
  %737 = getelementptr inbounds double, ptr %734, i64 %736
  %738 = load double, ptr %737, align 8, !tbaa !11
  store double %738, ptr %35, align 8, !tbaa !11
  %739 = load double, ptr %35, align 8, !tbaa !11
  %740 = fcmp oge double %739, 0.000000e+00
  br i1 %740, label %741, label %743

741:                                              ; preds = %733
  %742 = load double, ptr %35, align 8, !tbaa !11
  br label %746

743:                                              ; preds = %733
  %744 = load double, ptr %35, align 8, !tbaa !11
  %745 = fneg double %744
  br label %746

746:                                              ; preds = %743, %741
  %747 = phi double [ %742, %741 ], [ %745, %743 ]
  %748 = load double, ptr %69, align 8, !tbaa !11
  %749 = fcmp olt double %747, %748
  br i1 %749, label %754, label %750

750:                                              ; preds = %746
  %751 = load i32, ptr %42, align 4, !tbaa !9
  %752 = load i32, ptr %64, align 4, !tbaa !9
  %753 = icmp eq i32 %751, %752
  br i1 %753, label %754, label %1132

754:                                              ; preds = %750, %746
  %755 = load i32, ptr %42, align 4, !tbaa !9
  %756 = load i32, ptr %64, align 4, !tbaa !9
  %757 = icmp slt i32 %755, %756
  br i1 %757, label %758, label %763

758:                                              ; preds = %754
  %759 = load i32, ptr %42, align 4, !tbaa !9
  %760 = load i32, ptr %51, align 4, !tbaa !9
  %761 = sub nsw i32 %759, %760
  %762 = add nsw i32 %761, 1
  store i32 %762, ptr %50, align 4, !tbaa !9
  br label %925

763:                                              ; preds = %754
  %764 = load ptr, ptr %19, align 8, !tbaa !5
  %765 = load i32, ptr %42, align 4, !tbaa !9
  %766 = sext i32 %765 to i64
  %767 = getelementptr inbounds double, ptr %764, i64 %766
  %768 = load double, ptr %767, align 8, !tbaa !11
  store double %768, ptr %35, align 8, !tbaa !11
  %769 = load double, ptr %35, align 8, !tbaa !11
  %770 = fcmp oge double %769, 0.000000e+00
  br i1 %770, label %771, label %773

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

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

776:                                              ; preds = %773, %771
  %777 = phi double [ %772, %771 ], [ %775, %773 ]
  %778 = load double, ptr %69, align 8, !tbaa !11
  %779 = fcmp oge double %777, %778
  br i1 %779, label %780, label %786

780:                                              ; preds = %776
  %781 = load ptr, ptr %17, align 8, !tbaa !5
  %782 = load i32, ptr %781, align 4, !tbaa !9
  %783 = load i32, ptr %51, align 4, !tbaa !9
  %784 = sub nsw i32 %782, %783
  %785 = add nsw i32 %784, 1
  store i32 %785, ptr %50, align 4, !tbaa !9
  br label %924

786:                                              ; preds = %776
  %787 = load i32, ptr %42, align 4, !tbaa !9
  %788 = load i32, ptr %51, align 4, !tbaa !9
  %789 = sub nsw i32 %787, %788
  %790 = add nsw i32 %789, 1
  store i32 %790, ptr %50, align 4, !tbaa !9
  %791 = load i32, ptr %60, align 4, !tbaa !9
  %792 = icmp eq i32 %791, 2
  br i1 %792, label %793, label %844

793:                                              ; preds = %786
  %794 = load ptr, ptr %18, align 8, !tbaa !5
  %795 = load ptr, ptr %17, align 8, !tbaa !5
  %796 = load i32, ptr %795, align 4, !tbaa !9
  %797 = sext i32 %796 to i64
  %798 = getelementptr inbounds double, ptr %794, i64 %797
  %799 = load double, ptr %798, align 8, !tbaa !11
  %800 = fcmp oge double %799, 0.000000e+00
  br i1 %800, label %801, label %811

801:                                              ; preds = %793
  %802 = load double, ptr @c_b15, align 8, !tbaa !11
  %803 = fcmp oge double %802, 0.000000e+00
  br i1 %803, label %804, label %806

804:                                              ; preds = %801
  %805 = load double, ptr @c_b15, align 8, !tbaa !11
  br label %809

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

809:                                              ; preds = %806, %804
  %810 = phi double [ %805, %804 ], [ %808, %806 ]
  br label %822

811:                                              ; preds = %793
  %812 = load double, ptr @c_b15, align 8, !tbaa !11
  %813 = fcmp oge double %812, 0.000000e+00
  br i1 %813, label %814, label %816

814:                                              ; preds = %811
  %815 = load double, ptr @c_b15, align 8, !tbaa !11
  br label %819

816:                                              ; preds = %811
  %817 = load double, ptr @c_b15, align 8, !tbaa !11
  %818 = fneg double %817
  br label %819

819:                                              ; preds = %816, %814
  %820 = phi double [ %815, %814 ], [ %818, %816 ]
  %821 = fneg double %820
  br label %822

822:                                              ; preds = %819, %809
  %823 = phi double [ %810, %809 ], [ %821, %819 ]
  %824 = load ptr, ptr %20, align 8, !tbaa !5
  %825 = load ptr, ptr %17, align 8, !tbaa !5
  %826 = load i32, ptr %825, align 4, !tbaa !9
  %827 = load ptr, ptr %17, align 8, !tbaa !5
  %828 = load i32, ptr %827, align 4, !tbaa !9
  %829 = load i32, ptr %29, align 4, !tbaa !9
  %830 = mul nsw i32 %828, %829
  %831 = add nsw i32 %826, %830
  %832 = sext i32 %831 to i64
  %833 = getelementptr inbounds double, ptr %824, i64 %832
  store double %823, ptr %833, align 8, !tbaa !11
  %834 = load ptr, ptr %22, align 8, !tbaa !5
  %835 = load ptr, ptr %17, align 8, !tbaa !5
  %836 = load i32, ptr %835, align 4, !tbaa !9
  %837 = load ptr, ptr %17, align 8, !tbaa !5
  %838 = load i32, ptr %837, align 4, !tbaa !9
  %839 = load i32, ptr %31, align 4, !tbaa !9
  %840 = mul nsw i32 %838, %839
  %841 = add nsw i32 %836, %840
  %842 = sext i32 %841 to i64
  %843 = getelementptr inbounds double, ptr %834, i64 %842
  store double 1.000000e+00, ptr %843, align 8, !tbaa !11
  br label %903

844:                                              ; preds = %786
  %845 = load i32, ptr %60, align 4, !tbaa !9
  %846 = icmp eq i32 %845, 1
  br i1 %846, label %847, label %902

847:                                              ; preds = %844
  %848 = load ptr, ptr %18, align 8, !tbaa !5
  %849 = load ptr, ptr %17, align 8, !tbaa !5
  %850 = load i32, ptr %849, align 4, !tbaa !9
  %851 = sext i32 %850 to i64
  %852 = getelementptr inbounds double, ptr %848, i64 %851
  %853 = load double, ptr %852, align 8, !tbaa !11
  %854 = fcmp oge double %853, 0.000000e+00
  br i1 %854, label %855, label %865

855:                                              ; preds = %847
  %856 = load double, ptr @c_b15, align 8, !tbaa !11
  %857 = fcmp oge double %856, 0.000000e+00
  br i1 %857, label %858, label %860

858:                                              ; preds = %855
  %859 = load double, ptr @c_b15, align 8, !tbaa !11
  br label %863

860:                                              ; preds = %855
  %861 = load double, ptr @c_b15, align 8, !tbaa !11
  %862 = fneg double %861
  br label %863

863:                                              ; preds = %860, %858
  %864 = phi double [ %859, %858 ], [ %862, %860 ]
  br label %876

865:                                              ; preds = %847
  %866 = load double, ptr @c_b15, align 8, !tbaa !11
  %867 = fcmp oge double %866, 0.000000e+00
  br i1 %867, label %868, label %870

868:                                              ; preds = %865
  %869 = load double, ptr @c_b15, align 8, !tbaa !11
  br label %873

870:                                              ; preds = %865
  %871 = load double, ptr @c_b15, align 8, !tbaa !11
  %872 = fneg double %871
  br label %873

873:                                              ; preds = %870, %868
  %874 = phi double [ %869, %868 ], [ %872, %870 ]
  %875 = fneg double %874
  br label %876

876:                                              ; preds = %873, %863
  %877 = phi double [ %864, %863 ], [ %875, %873 ]
  %878 = load ptr, ptr %24, align 8, !tbaa !5
  %879 = load ptr, ptr %17, align 8, !tbaa !5
  %880 = load i32, ptr %879, align 4, !tbaa !9
  %881 = load i32, ptr %65, align 4, !tbaa !9
  %882 = sub nsw i32 %881, 1
  %883 = load ptr, ptr %17, align 8, !tbaa !5
  %884 = load i32, ptr %883, align 4, !tbaa !9
  %885 = mul nsw i32 %882, %884
  %886 = add nsw i32 %880, %885
  %887 = sext i32 %886 to i64
  %888 = getelementptr inbounds double, ptr %878, i64 %887
  store double %877, ptr %888, align 8, !tbaa !11
  %889 = load ptr, ptr %24, align 8, !tbaa !5
  %890 = load ptr, ptr %17, align 8, !tbaa !5
  %891 = load i32, ptr %890, align 4, !tbaa !9
  %892 = load i32, ptr %66, align 4, !tbaa !9
  %893 = load i32, ptr %65, align 4, !tbaa !9
  %894 = add nsw i32 %892, %893
  %895 = sub nsw i32 %894, 1
  %896 = load ptr, ptr %17, align 8, !tbaa !5
  %897 = load i32, ptr %896, align 4, !tbaa !9
  %898 = mul nsw i32 %895, %897
  %899 = add nsw i32 %891, %898
  %900 = sext i32 %899 to i64
  %901 = getelementptr inbounds double, ptr %889, i64 %900
  store double 1.000000e+00, ptr %901, align 8, !tbaa !11
  br label %902

902:                                              ; preds = %876, %844
  br label %903

903:                                              ; preds = %902, %822
  %904 = load ptr, ptr %18, align 8, !tbaa !5
  %905 = load ptr, ptr %17, align 8, !tbaa !5
  %906 = load i32, ptr %905, align 4, !tbaa !9
  %907 = sext i32 %906 to i64
  %908 = getelementptr inbounds double, ptr %904, i64 %907
  %909 = load double, ptr %908, align 8, !tbaa !11
  store double %909, ptr %35, align 8, !tbaa !11
  %910 = load double, ptr %35, align 8, !tbaa !11
  %911 = fcmp oge double %910, 0.000000e+00
  br i1 %911, label %912, label %914

912:                                              ; preds = %903
  %913 = load double, ptr %35, align 8, !tbaa !11
  br label %917

914:                                              ; preds = %903
  %915 = load double, ptr %35, align 8, !tbaa !11
  %916 = fneg double %915
  br label %917

917:                                              ; preds = %914, %912
  %918 = phi double [ %913, %912 ], [ %916, %914 ]
  %919 = load ptr, ptr %18, align 8, !tbaa !5
  %920 = load ptr, ptr %17, align 8, !tbaa !5
  %921 = load i32, ptr %920, align 4, !tbaa !9
  %922 = sext i32 %921 to i64
  %923 = getelementptr inbounds double, ptr %919, i64 %922
  store double %918, ptr %923, align 8, !tbaa !11
  br label %924

924:                                              ; preds = %917, %780
  br label %925

925:                                              ; preds = %924, %758
  %926 = load i32, ptr %60, align 4, !tbaa !9
  %927 = icmp eq i32 %926, 2
  br i1 %927, label %928, label %962

928:                                              ; preds = %925
  %929 = load ptr, ptr %18, align 8, !tbaa !5
  %930 = load i32, ptr %51, align 4, !tbaa !9
  %931 = sext i32 %930 to i64
  %932 = getelementptr inbounds double, ptr %929, i64 %931
  %933 = load ptr, ptr %19, align 8, !tbaa !5
  %934 = load i32, ptr %51, align 4, !tbaa !9
  %935 = sext i32 %934 to i64
  %936 = getelementptr inbounds double, ptr %933, i64 %935
  %937 = load ptr, ptr %20, align 8, !tbaa !5
  %938 = load i32, ptr %51, align 4, !tbaa !9
  %939 = load i32, ptr %51, align 4, !tbaa !9
  %940 = load i32, ptr %29, align 4, !tbaa !9
  %941 = mul nsw i32 %939, %940
  %942 = add nsw i32 %938, %941
  %943 = sext i32 %942 to i64
  %944 = getelementptr inbounds double, ptr %937, i64 %943
  %945 = load ptr, ptr %21, align 8, !tbaa !5
  %946 = load ptr, ptr %22, align 8, !tbaa !5
  %947 = load i32, ptr %51, align 4, !tbaa !9
  %948 = load i32, ptr %51, align 4, !tbaa !9
  %949 = load i32, ptr %31, align 4, !tbaa !9
  %950 = mul nsw i32 %948, %949
  %951 = add nsw i32 %947, %950
  %952 = sext i32 %951 to i64
  %953 = getelementptr inbounds double, ptr %946, i64 %952
  %954 = load ptr, ptr %23, align 8, !tbaa !5
  %955 = load ptr, ptr %27, align 8, !tbaa !5
  %956 = getelementptr inbounds i32, ptr %955, i64 1
  %957 = load ptr, ptr %26, align 8, !tbaa !5
  %958 = load i32, ptr %67, align 4, !tbaa !9
  %959 = sext i32 %958 to i64
  %960 = getelementptr inbounds double, ptr %957, i64 %959
  %961 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dlasd0_(ptr noundef %50, ptr noundef %41, ptr noundef %932, ptr noundef %936, ptr noundef %944, ptr noundef %945, ptr noundef %953, ptr noundef %954, ptr noundef %66, ptr noundef %956, ptr noundef %960, ptr noundef %961)
  br label %1124

962:                                              ; preds = %925
  %963 = load ptr, ptr %18, align 8, !tbaa !5
  %964 = load i32, ptr %51, align 4, !tbaa !9
  %965 = sext i32 %964 to i64
  %966 = getelementptr inbounds double, ptr %963, i64 %965
  %967 = load ptr, ptr %19, align 8, !tbaa !5
  %968 = load i32, ptr %51, align 4, !tbaa !9
  %969 = sext i32 %968 to i64
  %970 = getelementptr inbounds double, ptr %967, i64 %969
  %971 = load ptr, ptr %24, align 8, !tbaa !5
  %972 = load i32, ptr %51, align 4, !tbaa !9
  %973 = load i32, ptr %57, align 4, !tbaa !9
  %974 = load i32, ptr %65, align 4, !tbaa !9
  %975 = add nsw i32 %973, %974
  %976 = sub nsw i32 %975, 2
  %977 = load ptr, ptr %17, align 8, !tbaa !5
  %978 = load i32, ptr %977, align 4, !tbaa !9
  %979 = mul nsw i32 %976, %978
  %980 = add nsw i32 %972, %979
  %981 = sext i32 %980 to i64
  %982 = getelementptr inbounds double, ptr %971, i64 %981
  %983 = load ptr, ptr %17, align 8, !tbaa !5
  %984 = load ptr, ptr %24, align 8, !tbaa !5
  %985 = load i32, ptr %51, align 4, !tbaa !9
  %986 = load i32, ptr %70, align 4, !tbaa !9
  %987 = load i32, ptr %65, align 4, !tbaa !9
  %988 = add nsw i32 %986, %987
  %989 = sub nsw i32 %988, 2
  %990 = load ptr, ptr %17, align 8, !tbaa !5
  %991 = load i32, ptr %990, align 4, !tbaa !9
  %992 = mul nsw i32 %989, %991
  %993 = add nsw i32 %985, %992
  %994 = sext i32 %993 to i64
  %995 = getelementptr inbounds double, ptr %984, i64 %994
  %996 = load ptr, ptr %25, align 8, !tbaa !5
  %997 = load i32, ptr %51, align 4, !tbaa !9
  %998 = load i32, ptr %44, align 4, !tbaa !9
  %999 = load ptr, ptr %17, align 8, !tbaa !5
  %1000 = load i32, ptr %999, align 4, !tbaa !9
  %1001 = mul nsw i32 %998, %1000
  %1002 = add nsw i32 %997, %1001
  %1003 = sext i32 %1002 to i64
  %1004 = getelementptr inbounds i32, ptr %996, i64 %1003
  %1005 = load ptr, ptr %24, align 8, !tbaa !5
  %1006 = load i32, ptr %51, align 4, !tbaa !9
  %1007 = load i32, ptr %36, align 4, !tbaa !9
  %1008 = load i32, ptr %65, align 4, !tbaa !9
  %1009 = add nsw i32 %1007, %1008
  %1010 = sub nsw i32 %1009, 2
  %1011 = load ptr, ptr %17, align 8, !tbaa !5
  %1012 = load i32, ptr %1011, align 4, !tbaa !9
  %1013 = mul nsw i32 %1010, %1012
  %1014 = add nsw i32 %1006, %1013
  %1015 = sext i32 %1014 to i64
  %1016 = getelementptr inbounds double, ptr %1005, i64 %1015
  %1017 = load ptr, ptr %24, align 8, !tbaa !5
  %1018 = load i32, ptr %51, align 4, !tbaa !9
  %1019 = load i32, ptr %37, align 4, !tbaa !9
  %1020 = load i32, ptr %65, align 4, !tbaa !9
  %1021 = add nsw i32 %1019, %1020
  %1022 = sub nsw i32 %1021, 2
  %1023 = load ptr, ptr %17, align 8, !tbaa !5
  %1024 = load i32, ptr %1023, align 4, !tbaa !9
  %1025 = mul nsw i32 %1022, %1024
  %1026 = add nsw i32 %1018, %1025
  %1027 = sext i32 %1026 to i64
  %1028 = getelementptr inbounds double, ptr %1017, i64 %1027
  %1029 = load ptr, ptr %24, align 8, !tbaa !5
  %1030 = load i32, ptr %51, align 4, !tbaa !9
  %1031 = load i32, ptr %47, align 4, !tbaa !9
  %1032 = load i32, ptr %65, align 4, !tbaa !9
  %1033 = add nsw i32 %1031, %1032
  %1034 = sub nsw i32 %1033, 2
  %1035 = load ptr, ptr %17, align 8, !tbaa !5
  %1036 = load i32, ptr %1035, align 4, !tbaa !9
  %1037 = mul nsw i32 %1034, %1036
  %1038 = add nsw i32 %1030, %1037
  %1039 = sext i32 %1038 to i64
  %1040 = getelementptr inbounds double, ptr %1029, i64 %1039
  %1041 = load ptr, ptr %24, align 8, !tbaa !5
  %1042 = load i32, ptr %51, align 4, !tbaa !9
  %1043 = load i32, ptr %48, align 4, !tbaa !9
  %1044 = load i32, ptr %65, align 4, !tbaa !9
  %1045 = add nsw i32 %1043, %1044
  %1046 = sub nsw i32 %1045, 2
  %1047 = load ptr, ptr %17, align 8, !tbaa !5
  %1048 = load i32, ptr %1047, align 4, !tbaa !9
  %1049 = mul nsw i32 %1046, %1048
  %1050 = add nsw i32 %1042, %1049
  %1051 = sext i32 %1050 to i64
  %1052 = getelementptr inbounds double, ptr %1041, i64 %1051
  %1053 = load ptr, ptr %25, align 8, !tbaa !5
  %1054 = load i32, ptr %51, align 4, !tbaa !9
  %1055 = load i32, ptr %63, align 4, !tbaa !9
  %1056 = load ptr, ptr %17, align 8, !tbaa !5
  %1057 = load i32, ptr %1056, align 4, !tbaa !9
  %1058 = mul nsw i32 %1055, %1057
  %1059 = add nsw i32 %1054, %1058
  %1060 = sext i32 %1059 to i64
  %1061 = getelementptr inbounds i32, ptr %1053, i64 %1060
  %1062 = load ptr, ptr %25, align 8, !tbaa !5
  %1063 = load i32, ptr %51, align 4, !tbaa !9
  %1064 = load i32, ptr %59, align 4, !tbaa !9
  %1065 = load ptr, ptr %17, align 8, !tbaa !5
  %1066 = load i32, ptr %1065, align 4, !tbaa !9
  %1067 = mul nsw i32 %1064, %1066
  %1068 = add nsw i32 %1063, %1067
  %1069 = sext i32 %1068 to i64
  %1070 = getelementptr inbounds i32, ptr %1062, i64 %1069
  %1071 = load ptr, ptr %17, align 8, !tbaa !5
  %1072 = load ptr, ptr %25, align 8, !tbaa !5
  %1073 = load i32, ptr %51, align 4, !tbaa !9
  %1074 = load i32, ptr %39, align 4, !tbaa !9
  %1075 = load ptr, ptr %17, align 8, !tbaa !5
  %1076 = load i32, ptr %1075, align 4, !tbaa !9
  %1077 = mul nsw i32 %1074, %1076
  %1078 = add nsw i32 %1073, %1077
  %1079 = sext i32 %1078 to i64
  %1080 = getelementptr inbounds i32, ptr %1072, i64 %1079
  %1081 = load ptr, ptr %24, align 8, !tbaa !5
  %1082 = load i32, ptr %51, align 4, !tbaa !9
  %1083 = load i32, ptr %62, align 4, !tbaa !9
  %1084 = load i32, ptr %65, align 4, !tbaa !9
  %1085 = add nsw i32 %1083, %1084
  %1086 = sub nsw i32 %1085, 2
  %1087 = load ptr, ptr %17, align 8, !tbaa !5
  %1088 = load i32, ptr %1087, align 4, !tbaa !9
  %1089 = mul nsw i32 %1086, %1088
  %1090 = add nsw i32 %1082, %1089
  %1091 = sext i32 %1090 to i64
  %1092 = getelementptr inbounds double, ptr %1081, i64 %1091
  %1093 = load ptr, ptr %24, align 8, !tbaa !5
  %1094 = load i32, ptr %51, align 4, !tbaa !9
  %1095 = load i32, ptr %52, align 4, !tbaa !9
  %1096 = load i32, ptr %65, align 4, !tbaa !9
  %1097 = add nsw i32 %1095, %1096
  %1098 = sub nsw i32 %1097, 2
  %1099 = load ptr, ptr %17, align 8, !tbaa !5
  %1100 = load i32, ptr %1099, align 4, !tbaa !9
  %1101 = mul nsw i32 %1098, %1100
  %1102 = add nsw i32 %1094, %1101
  %1103 = sext i32 %1102 to i64
  %1104 = getelementptr inbounds double, ptr %1093, i64 %1103
  %1105 = load ptr, ptr %24, align 8, !tbaa !5
  %1106 = load i32, ptr %51, align 4, !tbaa !9
  %1107 = load i32, ptr %56, align 4, !tbaa !9
  %1108 = load i32, ptr %65, align 4, !tbaa !9
  %1109 = add nsw i32 %1107, %1108
  %1110 = sub nsw i32 %1109, 2
  %1111 = load ptr, ptr %17, align 8, !tbaa !5
  %1112 = load i32, ptr %1111, align 4, !tbaa !9
  %1113 = mul nsw i32 %1110, %1112
  %1114 = add nsw i32 %1106, %1113
  %1115 = sext i32 %1114 to i64
  %1116 = getelementptr inbounds double, ptr %1105, i64 %1115
  %1117 = load ptr, ptr %26, align 8, !tbaa !5
  %1118 = load i32, ptr %67, align 4, !tbaa !9
  %1119 = sext i32 %1118 to i64
  %1120 = getelementptr inbounds double, ptr %1117, i64 %1119
  %1121 = load ptr, ptr %27, align 8, !tbaa !5
  %1122 = getelementptr inbounds i32, ptr %1121, i64 1
  %1123 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dlasda_(ptr noundef %60, ptr noundef %66, ptr noundef %50, ptr noundef %41, ptr noundef %966, ptr noundef %970, ptr noundef %982, ptr noundef %983, ptr noundef %995, ptr noundef %1004, ptr noundef %1016, ptr noundef %1028, ptr noundef %1040, ptr noundef %1052, ptr noundef %1061, ptr noundef %1070, ptr noundef %1071, ptr noundef %1080, ptr noundef %1092, ptr noundef %1104, ptr noundef %1116, ptr noundef %1120, ptr noundef %1122, ptr noundef %1123)
  br label %1124

1124:                                             ; preds = %962, %928
  %1125 = load ptr, ptr %28, align 8, !tbaa !5
  %1126 = load i32, ptr %1125, align 4, !tbaa !9
  %1127 = icmp ne i32 %1126, 0
  br i1 %1127, label %1128, label %1129

1128:                                             ; preds = %1124
  store i32 1, ptr %71, align 4
  br label %1301

1129:                                             ; preds = %1124
  %1130 = load i32, ptr %42, align 4, !tbaa !9
  %1131 = add nsw i32 %1130, 1
  store i32 %1131, ptr %51, align 4, !tbaa !9
  br label %1132

1132:                                             ; preds = %1129, %750
  br label %1133

1133:                                             ; preds = %1132
  %1134 = load i32, ptr %42, align 4, !tbaa !9
  %1135 = add nsw i32 %1134, 1
  store i32 %1135, ptr %42, align 4, !tbaa !9
  br label %729, !llvm.loop !16

1136:                                             ; preds = %729
  %1137 = load ptr, ptr %17, align 8, !tbaa !5
  %1138 = load ptr, ptr %18, align 8, !tbaa !5
  %1139 = getelementptr inbounds double, ptr %1138, i64 1
  %1140 = load ptr, ptr %17, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.9, ptr noundef @c__0, ptr noundef @c__0, ptr noundef @c_b15, ptr noundef %61, ptr noundef %1137, ptr noundef @c__1, ptr noundef %1139, ptr noundef %1140, ptr noundef %38)
  br label %1141

1141:                                             ; preds = %1136, %584, %430
  %1142 = load ptr, ptr %17, align 8, !tbaa !5
  %1143 = load i32, ptr %1142, align 4, !tbaa !9
  store i32 %1143, ptr %33, align 4, !tbaa !9
  store i32 2, ptr %53, align 4, !tbaa !9
  br label %1144

1144:                                             ; preds = %1257, %1141
  %1145 = load i32, ptr %53, align 4, !tbaa !9
  %1146 = load i32, ptr %33, align 4, !tbaa !9
  %1147 = icmp sle i32 %1145, %1146
  br i1 %1147, label %1148, label %1260

1148:                                             ; preds = %1144
  %1149 = load i32, ptr %53, align 4, !tbaa !9
  %1150 = sub nsw i32 %1149, 1
  store i32 %1150, ptr %42, align 4, !tbaa !9
  %1151 = load i32, ptr %42, align 4, !tbaa !9
  store i32 %1151, ptr %54, align 4, !tbaa !9
  %1152 = load ptr, ptr %18, align 8, !tbaa !5
  %1153 = load i32, ptr %42, align 4, !tbaa !9
  %1154 = sext i32 %1153 to i64
  %1155 = getelementptr inbounds double, ptr %1152, i64 %1154
  %1156 = load double, ptr %1155, align 8, !tbaa !11
  store double %1156, ptr %45, align 8, !tbaa !11
  %1157 = load ptr, ptr %17, align 8, !tbaa !5
  %1158 = load i32, ptr %1157, align 4, !tbaa !9
  store i32 %1158, ptr %34, align 4, !tbaa !9
  %1159 = load i32, ptr %53, align 4, !tbaa !9
  store i32 %1159, ptr %43, align 4, !tbaa !9
  br label %1160

1160:                                             ; preds = %1180, %1148
  %1161 = load i32, ptr %43, align 4, !tbaa !9
  %1162 = load i32, ptr %34, align 4, !tbaa !9
  %1163 = icmp sle i32 %1161, %1162
  br i1 %1163, label %1164, label %1183

1164:                                             ; preds = %1160
  %1165 = load ptr, ptr %18, align 8, !tbaa !5
  %1166 = load i32, ptr %43, align 4, !tbaa !9
  %1167 = sext i32 %1166 to i64
  %1168 = getelementptr inbounds double, ptr %1165, i64 %1167
  %1169 = load double, ptr %1168, align 8, !tbaa !11
  %1170 = load double, ptr %45, align 8, !tbaa !11
  %1171 = fcmp ogt double %1169, %1170
  br i1 %1171, label %1172, label %1179

1172:                                             ; preds = %1164
  %1173 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %1173, ptr %54, align 4, !tbaa !9
  %1174 = load ptr, ptr %18, align 8, !tbaa !5
  %1175 = load i32, ptr %43, align 4, !tbaa !9
  %1176 = sext i32 %1175 to i64
  %1177 = getelementptr inbounds double, ptr %1174, i64 %1176
  %1178 = load double, ptr %1177, align 8, !tbaa !11
  store double %1178, ptr %45, align 8, !tbaa !11
  br label %1179

1179:                                             ; preds = %1172, %1164
  br label %1180

1180:                                             ; preds = %1179
  %1181 = load i32, ptr %43, align 4, !tbaa !9
  %1182 = add nsw i32 %1181, 1
  store i32 %1182, ptr %43, align 4, !tbaa !9
  br label %1160, !llvm.loop !17

1183:                                             ; preds = %1160
  %1184 = load i32, ptr %54, align 4, !tbaa !9
  %1185 = load i32, ptr %42, align 4, !tbaa !9
  %1186 = icmp ne i32 %1184, %1185
  br i1 %1186, label %1187, label %1246

1187:                                             ; preds = %1183
  %1188 = load ptr, ptr %18, align 8, !tbaa !5
  %1189 = load i32, ptr %42, align 4, !tbaa !9
  %1190 = sext i32 %1189 to i64
  %1191 = getelementptr inbounds double, ptr %1188, i64 %1190
  %1192 = load double, ptr %1191, align 8, !tbaa !11
  %1193 = load ptr, ptr %18, align 8, !tbaa !5
  %1194 = load i32, ptr %54, align 4, !tbaa !9
  %1195 = sext i32 %1194 to i64
  %1196 = getelementptr inbounds double, ptr %1193, i64 %1195
  store double %1192, ptr %1196, align 8, !tbaa !11
  %1197 = load double, ptr %45, align 8, !tbaa !11
  %1198 = load ptr, ptr %18, align 8, !tbaa !5
  %1199 = load i32, ptr %42, align 4, !tbaa !9
  %1200 = sext i32 %1199 to i64
  %1201 = getelementptr inbounds double, ptr %1198, i64 %1200
  store double %1197, ptr %1201, align 8, !tbaa !11
  %1202 = load i32, ptr %60, align 4, !tbaa !9
  %1203 = icmp eq i32 %1202, 1
  br i1 %1203, label %1204, label %1210

1204:                                             ; preds = %1187
  %1205 = load i32, ptr %54, align 4, !tbaa !9
  %1206 = load ptr, ptr %25, align 8, !tbaa !5
  %1207 = load i32, ptr %42, align 4, !tbaa !9
  %1208 = sext i32 %1207 to i64
  %1209 = getelementptr inbounds i32, ptr %1206, i64 %1208
  store i32 %1205, ptr %1209, align 4, !tbaa !9
  br label %1245

1210:                                             ; preds = %1187
  %1211 = load i32, ptr %60, align 4, !tbaa !9
  %1212 = icmp eq i32 %1211, 2
  br i1 %1212, label %1213, label %1244

1213:                                             ; preds = %1210
  %1214 = load ptr, ptr %17, align 8, !tbaa !5
  %1215 = load ptr, ptr %20, align 8, !tbaa !5
  %1216 = load i32, ptr %42, align 4, !tbaa !9
  %1217 = load i32, ptr %29, align 4, !tbaa !9
  %1218 = mul nsw i32 %1216, %1217
  %1219 = add nsw i32 %1218, 1
  %1220 = sext i32 %1219 to i64
  %1221 = getelementptr inbounds double, ptr %1215, i64 %1220
  %1222 = load ptr, ptr %20, align 8, !tbaa !5
  %1223 = load i32, ptr %54, align 4, !tbaa !9
  %1224 = load i32, ptr %29, align 4, !tbaa !9
  %1225 = mul nsw i32 %1223, %1224
  %1226 = add nsw i32 %1225, 1
  %1227 = sext i32 %1226 to i64
  %1228 = getelementptr inbounds double, ptr %1222, i64 %1227
  call void @dswap_(ptr noundef %1214, ptr noundef %1221, ptr noundef @c__1, ptr noundef %1228, ptr noundef @c__1)
  %1229 = load ptr, ptr %17, align 8, !tbaa !5
  %1230 = load ptr, ptr %22, align 8, !tbaa !5
  %1231 = load i32, ptr %42, align 4, !tbaa !9
  %1232 = load i32, ptr %31, align 4, !tbaa !9
  %1233 = add nsw i32 %1231, %1232
  %1234 = sext i32 %1233 to i64
  %1235 = getelementptr inbounds double, ptr %1230, i64 %1234
  %1236 = load ptr, ptr %23, align 8, !tbaa !5
  %1237 = load ptr, ptr %22, align 8, !tbaa !5
  %1238 = load i32, ptr %54, align 4, !tbaa !9
  %1239 = load i32, ptr %31, align 4, !tbaa !9
  %1240 = add nsw i32 %1238, %1239
  %1241 = sext i32 %1240 to i64
  %1242 = getelementptr inbounds double, ptr %1237, i64 %1241
  %1243 = load ptr, ptr %23, align 8, !tbaa !5
  call void @dswap_(ptr noundef %1229, ptr noundef %1235, ptr noundef %1236, ptr noundef %1242, ptr noundef %1243)
  br label %1244

1244:                                             ; preds = %1213, %1210
  br label %1245

1245:                                             ; preds = %1244, %1204
  br label %1256

1246:                                             ; preds = %1183
  %1247 = load i32, ptr %60, align 4, !tbaa !9
  %1248 = icmp eq i32 %1247, 1
  br i1 %1248, label %1249, label %1255

1249:                                             ; preds = %1246
  %1250 = load i32, ptr %42, align 4, !tbaa !9
  %1251 = load ptr, ptr %25, align 8, !tbaa !5
  %1252 = load i32, ptr %42, align 4, !tbaa !9
  %1253 = sext i32 %1252 to i64
  %1254 = getelementptr inbounds i32, ptr %1251, i64 %1253
  store i32 %1250, ptr %1254, align 4, !tbaa !9
  br label %1255

1255:                                             ; preds = %1249, %1246
  br label %1256

1256:                                             ; preds = %1255, %1245
  br label %1257

1257:                                             ; preds = %1256
  %1258 = load i32, ptr %53, align 4, !tbaa !9
  %1259 = add nsw i32 %1258, 1
  store i32 %1259, ptr %53, align 4, !tbaa !9
  br label %1144, !llvm.loop !18

1260:                                             ; preds = %1144
  %1261 = load i32, ptr %60, align 4, !tbaa !9
  %1262 = icmp eq i32 %1261, 1
  br i1 %1262, label %1263, label %1279

1263:                                             ; preds = %1260
  %1264 = load i32, ptr %49, align 4, !tbaa !9
  %1265 = icmp eq i32 %1264, 1
  br i1 %1265, label %1266, label %1272

1266:                                             ; preds = %1263
  %1267 = load ptr, ptr %25, align 8, !tbaa !5
  %1268 = load ptr, ptr %17, align 8, !tbaa !5
  %1269 = load i32, ptr %1268, align 4, !tbaa !9
  %1270 = sext i32 %1269 to i64
  %1271 = getelementptr inbounds i32, ptr %1267, i64 %1270
  store i32 1, ptr %1271, align 4, !tbaa !9
  br label %1278

1272:                                             ; preds = %1263
  %1273 = load ptr, ptr %25, align 8, !tbaa !5
  %1274 = load ptr, ptr %17, align 8, !tbaa !5
  %1275 = load i32, ptr %1274, align 4, !tbaa !9
  %1276 = sext i32 %1275 to i64
  %1277 = getelementptr inbounds i32, ptr %1273, i64 %1276
  store i32 0, ptr %1277, align 4, !tbaa !9
  br label %1278

1278:                                             ; preds = %1272, %1266
  br label %1279

1279:                                             ; preds = %1278, %1260
  %1280 = load i32, ptr %49, align 4, !tbaa !9
  %1281 = icmp eq i32 %1280, 2
  br i1 %1281, label %1282, label %1300

1282:                                             ; preds = %1279
  %1283 = load i32, ptr %60, align 4, !tbaa !9
  %1284 = icmp eq i32 %1283, 2
  br i1 %1284, label %1285, label %1300

1285:                                             ; preds = %1282
  %1286 = load ptr, ptr %17, align 8, !tbaa !5
  %1287 = load ptr, ptr %17, align 8, !tbaa !5
  %1288 = load ptr, ptr %26, align 8, !tbaa !5
  %1289 = getelementptr inbounds double, ptr %1288, i64 1
  %1290 = load ptr, ptr %26, align 8, !tbaa !5
  %1291 = load ptr, ptr %17, align 8, !tbaa !5
  %1292 = load i32, ptr %1291, align 4, !tbaa !9
  %1293 = sext i32 %1292 to i64
  %1294 = getelementptr inbounds double, ptr %1290, i64 %1293
  %1295 = load ptr, ptr %20, align 8, !tbaa !5
  %1296 = load i32, ptr %30, align 4, !tbaa !9
  %1297 = sext i32 %1296 to i64
  %1298 = getelementptr inbounds double, ptr %1295, i64 %1297
  %1299 = load ptr, ptr %21, align 8, !tbaa !5
  call void @dlasr_(ptr noundef @.str.1, ptr noundef @.str.11, ptr noundef @.str.12, ptr noundef %1286, ptr noundef %1287, ptr noundef %1289, ptr noundef %1294, ptr noundef %1298, ptr noundef %1299)
  br label %1300

1300:                                             ; preds = %1285, %1282, %1279
  store i32 1, ptr %71, align 4
  br label %1301

1301:                                             ; preds = %1300, %1128, %612, %298, %195, %186
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #4
  ret void
}

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

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

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

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

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

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

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

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

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


; 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 i32, align 4
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i32, align 4
@c_b15 = external hidden global double, align 8
@c__1 = external hidden global i32, align 4
@.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 void @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 i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca double, align 8
  %19 = alloca i32, align 4
  %20 = alloca double, align 8
  %21 = alloca double, align 8
  %22 = alloca i32, align 4
  %23 = alloca double, align 8
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #4
  call void @llvm.lifetime.start.p0(i64 4, 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 4, ptr nonnull %22) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #4
  %26 = getelementptr inbounds i8, ptr %3, i64 -8
  %27 = getelementptr inbounds i8, ptr %4, i64 -8
  %28 = load i32, ptr %6, align 4, !tbaa !5
  %narrow = xor i32 %28, -1
  %29 = sext i32 %narrow to i64
  %30 = getelementptr inbounds double, ptr %5, i64 %29
  %31 = load i32, ptr %8, align 4, !tbaa !5
  %narrow481 = xor i32 %31, -1
  %32 = sext i32 %narrow481 to i64
  %33 = getelementptr inbounds double, ptr %7, i64 %32
  %34 = getelementptr inbounds i8, ptr %9, i64 -8
  %35 = getelementptr inbounds i8, ptr %10, i64 -4
  %36 = getelementptr inbounds i8, ptr %11, i64 -8
  store i32 0, ptr %13, align 4, !tbaa !5
  %37 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #4
  %.not = icmp ne i32 %37, 0
  %38 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #4
  %.not465 = icmp ne i32 %38, 0
  %39 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #4
  %.not466 = icmp eq i32 %39, 0
  br i1 %.not466, label %41, label %40

40:                                               ; preds = %14
  store i32 0, ptr %22, align 4, !tbaa !5
  br label %47

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

43:                                               ; preds = %41
  store i32 1, ptr %22, align 4, !tbaa !5
  br label %47

44:                                               ; preds = %41
  %45 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #4
  %.not468 = icmp eq i32 %45, 0
  br i1 %.not468, label %.thread543, label %46

46:                                               ; preds = %44
  store i32 2, ptr %22, align 4, !tbaa !5
  br label %47

47:                                               ; preds = %43, %46, %40
  %48 = phi i1 [ false, %43 ], [ true, %46 ], [ false, %40 ]
  %49 = phi i1 [ true, %43 ], [ false, %46 ], [ false, %40 ]
  %50 = phi i32 [ 1, %43 ], [ 2, %46 ], [ 0, %40 ]
  %51 = select i1 %.not465, i1 true, i1 %.not
  br i1 %51, label %53, label %.thread.sink.split

.thread543:                                       ; preds = %44
  %52 = select i1 %.not465, i1 true, i1 %.not
  %spec.select = select i1 %52, i32 -2, i32 -1
  br label %.thread.sink.split

53:                                               ; preds = %47
  %54 = load i32, ptr %2, align 4, !tbaa !5
  %55 = icmp slt i32 %54, 0
  br i1 %55, label %.thread.sink.split, label %56

56:                                               ; preds = %53
  %57 = load i32, ptr %6, align 4, !tbaa !5
  %58 = icmp slt i32 %57, 1
  %59 = icmp ult i32 %57, %54
  %or.cond483 = and i1 %48, %59
  %or.cond548 = or i1 %58, %or.cond483
  br i1 %or.cond548, label %.thread.sink.split, label %60

60:                                               ; preds = %56
  %61 = load i32, ptr %8, align 4, !tbaa !5
  %62 = icmp slt i32 %61, 1
  %63 = icmp ult i32 %61, %54
  %or.cond490 = and i1 %48, %63
  %or.cond491 = or i1 %62, %or.cond490
  br i1 %or.cond491, label %.thread.sink.split, label %64

64:                                               ; preds = %60
  %.pr = load i32, ptr %13, align 4, !tbaa !5
  %.not469 = icmp eq i32 %.pr, 0
  br i1 %.not469, label %68, label %.thread

.thread.sink.split:                               ; preds = %.thread543, %60, %56, %53, %47
  %.sink = phi i32 [ -1, %47 ], [ -3, %53 ], [ -7, %56 ], [ -9, %60 ], [ %spec.select, %.thread543 ]
  store i32 %.sink, ptr %13, align 4, !tbaa !5
  br label %.thread

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

68:                                               ; preds = %64
  %69 = icmp eq i32 %54, 0
  br i1 %69, label %.thread488, label %70

70:                                               ; preds = %68
  %71 = tail call i32 @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, i32 noundef 6, i32 noundef 1) #4
  store i32 %71, ptr %25, align 4, !tbaa !5
  %72 = load i32, ptr %2, align 4, !tbaa !5
  %73 = icmp eq i32 %72, 1
  br i1 %73, label %74, label %105

74:                                               ; preds = %70
  switch i32 %50, label %100 [
    i32 1, label %75
    i32 2, label %89
  ]

75:                                               ; preds = %74
  %76 = load double, ptr %3, align 8, !tbaa !9
  %77 = fcmp ult double %76, 0.000000e+00
  %78 = load double, ptr @c_b15, align 8
  %79 = fcmp oge double %78, 0.000000e+00
  %.neg482 = fneg double %78
  br i1 %77, label %82, label %80

80:                                               ; preds = %75
  %81 = select i1 %79, double %78, double %.neg482
  br label %84

82:                                               ; preds = %75
  %83 = select i1 %79, double %.neg482, double %78
  br label %84

84:                                               ; preds = %82, %80
  %85 = phi double [ %81, %80 ], [ %83, %82 ]
  store double %85, ptr %9, align 8, !tbaa !9
  %86 = sext i32 %71 to i64
  %87 = getelementptr double, ptr %34, i64 %86
  %88 = getelementptr i8, ptr %87, i64 8
  br label %.sink.split

89:                                               ; preds = %74
  %90 = load double, ptr %3, align 8, !tbaa !9
  %91 = fcmp ult double %90, 0.000000e+00
  %92 = load double, ptr @c_b15, align 8
  %93 = fcmp oge double %92, 0.000000e+00
  %.neg480 = fneg double %92
  br i1 %91, label %96, label %94

94:                                               ; preds = %89
  %95 = select i1 %93, double %92, double %.neg480
  br label %98

96:                                               ; preds = %89
  %97 = select i1 %93, double %.neg480, double %92
  br label %98

98:                                               ; preds = %96, %94
  %99 = phi double [ %95, %94 ], [ %97, %96 ]
  store double %99, ptr %5, align 8, !tbaa !9
  br label %.sink.split

.sink.split:                                      ; preds = %84, %98
  %.sink549 = phi ptr [ %7, %98 ], [ %88, %84 ]
  store double 1.000000e+00, ptr %.sink549, align 8, !tbaa !9
  br label %100

100:                                              ; preds = %.sink.split, %74
  %101 = load double, ptr %3, align 8, !tbaa !9
  %102 = fcmp ult double %101, 0.000000e+00
  %103 = fneg double %101
  %104 = select i1 %102, double %103, double %101
  store double %104, ptr %3, align 8, !tbaa !9
  br label %.thread488

105:                                              ; preds = %70
  %106 = add nsw i32 %72, -1
  store i32 %106, ptr %24, align 4, !tbaa !5
  br i1 %49, label %107, label %113

107:                                              ; preds = %105
  tail call void @dcopy_(ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull @c__1, ptr noundef %9, ptr noundef nonnull @c__1) #4
  %108 = load i32, ptr %2, align 4, !tbaa !5
  %109 = add nsw i32 %108, -1
  store i32 %109, ptr %15, align 4, !tbaa !5
  %110 = sext i32 %108 to i64
  %111 = getelementptr double, ptr %34, i64 %110
  %112 = getelementptr i8, ptr %111, i64 8
  call void @dcopy_(ptr noundef nonnull %15, ptr noundef %4, ptr noundef nonnull @c__1, ptr noundef %112, ptr noundef nonnull @c__1) #4
  %.pre534.pre = load i32, ptr %22, align 4, !tbaa !5
  br label %113

113:                                              ; preds = %107, %105
  %.pre534 = phi i32 [ %.pre534.pre, %107 ], [ %50, %105 ]
  br i1 %.not465, label %114, label %.loopexit

114:                                              ; preds = %113
  %115 = icmp eq i32 %.pre534, 2
  %.pre = load i32, ptr %2, align 4, !tbaa !5
  %116 = shl i32 %.pre, 1
  %117 = add nsw i32 %116, -1
  %.0425 = select i1 %115, i32 %117, i32 1
  %118 = add nsw i32 %.pre, -1
  store i32 %118, ptr %15, align 4, !tbaa !5
  %.not470492 = icmp slt i32 %.pre, 2
  br i1 %.not470492, label %.loopexit, label %.lr.ph

.lr.ph:                                           ; preds = %114, %149
  %indvars.iv = phi i64 [ %indvars.iv.next, %149 ], [ 1, %114 ]
  %119 = getelementptr inbounds double, ptr %26, i64 %indvars.iv
  %120 = getelementptr inbounds double, ptr %27, i64 %indvars.iv
  call void @dlartg_(ptr noundef nonnull %119, ptr noundef nonnull %120, ptr noundef nonnull %20, ptr noundef nonnull %21, ptr noundef nonnull %18) #4
  %121 = load double, ptr %18, align 8, !tbaa !9
  store double %121, ptr %119, align 8, !tbaa !9
  %122 = load double, ptr %21, align 8, !tbaa !9
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %123 = getelementptr double, ptr %3, i64 %indvars.iv
  %124 = load double, ptr %123, align 8, !tbaa !9
  %125 = fmul double %122, %124
  store double %125, ptr %120, align 8, !tbaa !9
  %126 = load double, ptr %20, align 8, !tbaa !9
  %127 = load double, ptr %123, align 8, !tbaa !9
  %128 = fmul double %126, %127
  store double %128, ptr %123, align 8, !tbaa !9
  %129 = load i32, ptr %22, align 4, !tbaa !5
  switch i32 %129, label %149 [
    i32 1, label %130
    i32 2, label %139
  ]

130:                                              ; preds = %.lr.ph
  %131 = load i32, ptr %2, align 4, !tbaa !5
  %132 = shl i32 %131, 1
  %133 = trunc nuw nsw i64 %indvars.iv to i32
  %134 = add nsw i32 %132, %133
  %135 = sext i32 %134 to i64
  %136 = getelementptr inbounds double, ptr %34, i64 %135
  store double %126, ptr %136, align 8, !tbaa !9
  %137 = mul nsw i32 %131, 3
  %138 = add nsw i32 %137, %133
  br label %.sink.split550

139:                                              ; preds = %.lr.ph
  %140 = getelementptr inbounds double, ptr %36, i64 %indvars.iv
  store double %126, ptr %140, align 8, !tbaa !9
  %141 = fneg double %122
  %142 = load i32, ptr %24, align 4, !tbaa !5
  %143 = trunc nuw nsw i64 %indvars.iv to i32
  %144 = add nsw i32 %142, %143
  br label %.sink.split550

.sink.split550:                                   ; preds = %139, %130
  %.sink555 = phi i32 [ %138, %130 ], [ %144, %139 ]
  %145 = phi ptr [ %9, %130 ], [ %11, %139 ]
  %.sink551 = phi double [ %122, %130 ], [ %141, %139 ]
  %146 = getelementptr inbounds i8, ptr %145, i64 -8
  %147 = sext i32 %.sink555 to i64
  %148 = getelementptr inbounds double, ptr %146, i64 %147
  store double %.sink551, ptr %148, align 8, !tbaa !9
  br label %149

149:                                              ; preds = %.sink.split550, %.lr.ph
  %150 = load i32, ptr %15, align 4, !tbaa !5
  %151 = sext i32 %150 to i64
  %.not470.not = icmp slt i64 %indvars.iv, %151
  br i1 %.not470.not, label %.lr.ph, label %.loopexit, !llvm.loop !11

.loopexit:                                        ; preds = %149, %114, %113
  %152 = phi i32 [ %.pre534, %113 ], [ %.pre534, %114 ], [ %129, %149 ]
  %.0426 = phi i32 [ 3, %113 ], [ 5, %114 ], [ 5, %149 ]
  %.1 = phi i32 [ 1, %113 ], [ %.0425, %114 ], [ %.0425, %149 ]
  %153 = icmp eq i32 %152, 0
  br i1 %153, label %154, label %155

154:                                              ; preds = %.loopexit
  call void @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 %11, ptr noundef nonnull %13) #4
  br label %thread-pre-split

155:                                              ; preds = %.loopexit
  %156 = load i32, ptr %2, align 4, !tbaa !5
  %157 = load i32, ptr %25, align 4, !tbaa !5
  %.not471 = icmp sgt i32 %156, %157
  br i1 %.not471, label %184, label %158

158:                                              ; preds = %155
  switch i32 %152, label %422 [
    i32 2, label %159
    i32 1, label %162
  ]

159:                                              ; preds = %158
  call void @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
  call void @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
  %160 = sext i32 %.1 to i64
  %161 = getelementptr inbounds double, ptr %36, i64 %160
  call void @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 %161, ptr noundef nonnull %13) #4
  br label %thread-pre-split

162:                                              ; preds = %158
  %163 = add nsw i32 %156, 1
  %164 = add nsw i32 %.0426, -1
  %165 = mul nsw i32 %156, %164
  %166 = or disjoint i32 %165, 1
  %167 = sext i32 %166 to i64
  %168 = getelementptr inbounds double, ptr %34, i64 %167
  call void @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 nonnull %168, ptr noundef nonnull %2) #4
  %169 = load i32, ptr %2, align 4, !tbaa !5
  %170 = mul nsw i32 %169, %164
  %171 = add nsw i32 %170, %163
  %172 = sext i32 %171 to i64
  %173 = getelementptr inbounds double, ptr %34, i64 %172
  call void @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 nonnull %173, ptr noundef nonnull %2) #4
  %174 = load i32, ptr %2, align 4, !tbaa !5
  %175 = mul nsw i32 %174, %164
  %176 = add nsw i32 %175, %163
  %177 = sext i32 %176 to i64
  %178 = getelementptr inbounds double, ptr %34, i64 %177
  %179 = or disjoint i32 %175, 1
  %180 = sext i32 %179 to i64
  %181 = getelementptr inbounds double, ptr %34, i64 %180
  %182 = sext i32 %.1 to i64
  %183 = getelementptr inbounds double, ptr %36, i64 %182
  call void @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 nonnull %178, ptr noundef nonnull %2, ptr noundef nonnull %181, ptr noundef nonnull %2, ptr noundef nonnull %181, ptr noundef nonnull %2, ptr noundef nonnull %183, ptr noundef nonnull %13) #4
  br label %thread-pre-split

184:                                              ; preds = %155
  %185 = icmp eq i32 %152, 2
  br i1 %185, label %186, label %187

186:                                              ; preds = %184
  call void @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
  call void @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 %187

187:                                              ; preds = %186, %184
  %188 = call double @dlanst_(ptr noundef nonnull @.str.8, ptr noundef nonnull %2, ptr noundef %3, ptr noundef %4) #4
  store double %188, ptr %23, align 8, !tbaa !9
  %189 = fcmp oeq double %188, 0.000000e+00
  br i1 %189, label %.thread488, label %190

190:                                              ; preds = %187
  call void @dlascl_(ptr noundef nonnull @.str.9, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %23, ptr noundef nonnull @c_b15, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef %3, ptr noundef nonnull %2, ptr noundef nonnull %16) #4
  call void @dlascl_(ptr noundef nonnull @.str.9, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %23, ptr noundef nonnull @c_b15, ptr noundef nonnull %24, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef nonnull %24, ptr noundef nonnull %16) #4
  %191 = call double @dlamch_(ptr noundef nonnull @.str.10) #4
  %192 = fmul double %191, 9.000000e-01
  %193 = load i32, ptr %2, align 4, !tbaa !5
  %194 = sitofp i32 %193 to double
  %195 = load i32, ptr %25, align 4, !tbaa !5
  %196 = add nsw i32 %195, 1
  %197 = sitofp i32 %196 to double
  %198 = fdiv double %194, %197
  %199 = call double @log(double noundef %198) #4
  %200 = load i32, ptr %25, align 4, !tbaa !5
  %201 = add nsw i32 %200, 1
  %202 = load i32, ptr %22, align 4, !tbaa !5
  %203 = icmp eq i32 %202, 1
  br i1 %203, label %204, label %217

204:                                              ; preds = %190
  %205 = fdiv double %199, 0x3FE62E42FEFA39EF
  %206 = fptosi double %205 to i32
  %207 = add nsw i32 %206, 1
  %208 = shl nsw i32 %201, 1
  %209 = add nsw i32 %208, %207
  %210 = shl i32 %207, 1
  %211 = add nsw i32 %209, %210
  %212 = add nsw i32 %211, %207
  %213 = add nsw i32 %212, 1
  %214 = add nsw i32 %212, 2
  %215 = add nsw i32 %214, %210
  %216 = add nsw i32 %206, 4
  br label %217

217:                                              ; preds = %204, %190
  %.0447 = phi i32 [ %208, %204 ], [ undef, %190 ]
  %.0446 = phi i32 [ %209, %204 ], [ undef, %190 ]
  %.0440 = phi i32 [ %211, %204 ], [ undef, %190 ]
  %.0439 = phi i32 [ %214, %204 ], [ undef, %190 ]
  %.0434 = phi i32 [ %212, %204 ], [ undef, %190 ]
  %.0430 = phi i32 [ %213, %204 ], [ undef, %190 ]
  %.0428 = phi i32 [ %216, %204 ], [ undef, %190 ]
  %.0427 = phi i32 [ %215, %204 ], [ undef, %190 ]
  %218 = load i32, ptr %2, align 4, !tbaa !5
  %.not472494 = icmp slt i32 %218, 1
  br i1 %.not472494, label %._crit_edge, label %.lr.ph496

.lr.ph496:                                        ; preds = %217
  %219 = fcmp oge double %192, 0.000000e+00
  %.neg476 = fneg double %192
  %220 = add nuw i32 %218, 1
  %wide.trip.count = zext i32 %220 to i64
  %221 = zext nneg i32 %218 to i64
  %min.iters.check = icmp ult i32 %218, 4
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph496
  %n.vec = and i64 %221, 2147483644
  %ind.end = or disjoint i64 %n.vec, 1
  %broadcast.splatinsert = insertelement <2 x double> poison, double %192, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  %invariant.gep567 = getelementptr i8, ptr %26, i64 32
  br label %vector.body

vector.body:                                      ; preds = %pred.store.continue566, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %pred.store.continue566 ]
  %222 = or disjoint i64 %index, 3
  %223 = getelementptr double, ptr %3, i64 %index
  %224 = getelementptr inbounds i8, ptr %223, i64 16
  %wide.load = load <2 x double>, ptr %223, align 8, !tbaa !9
  %wide.load560 = load <2 x double>, ptr %224, align 8, !tbaa !9
  %225 = fcmp oge <2 x double> %wide.load, zeroinitializer
  %226 = fcmp oge <2 x double> %wide.load560, zeroinitializer
  %227 = fneg <2 x double> %wide.load
  %228 = fneg <2 x double> %wide.load560
  %229 = select <2 x i1> %225, <2 x double> %wide.load, <2 x double> %227
  %230 = select <2 x i1> %226, <2 x double> %wide.load560, <2 x double> %228
  %231 = fcmp olt <2 x double> %229, %broadcast.splat
  %232 = fcmp olt <2 x double> %230, %broadcast.splat
  %233 = extractelement <2 x i1> %231, i64 0
  br i1 %233, label %pred.store.if, label %pred.store.continue

pred.store.if:                                    ; preds = %vector.body
  %234 = extractelement <2 x i1> %225, i64 0
  %235 = xor i1 %219, %234
  %236 = getelementptr double, ptr %3, i64 %index
  %237 = select i1 %235, double %.neg476, double %192
  store double %237, ptr %236, align 8, !tbaa !9
  br label %pred.store.continue

pred.store.continue:                              ; preds = %pred.store.if, %vector.body
  %238 = extractelement <2 x i1> %231, i64 1
  br i1 %238, label %pred.store.if561, label %pred.store.continue562

pred.store.if561:                                 ; preds = %pred.store.continue
  %239 = or disjoint i64 %index, 2
  %240 = extractelement <2 x i1> %225, i64 1
  %241 = xor i1 %219, %240
  %242 = getelementptr inbounds double, ptr %26, i64 %239
  %243 = select i1 %241, double %.neg476, double %192
  store double %243, ptr %242, align 8, !tbaa !9
  br label %pred.store.continue562

pred.store.continue562:                           ; preds = %pred.store.if561, %pred.store.continue
  %244 = extractelement <2 x i1> %232, i64 0
  br i1 %244, label %pred.store.if563, label %pred.store.continue564

pred.store.if563:                                 ; preds = %pred.store.continue562
  %245 = extractelement <2 x i1> %226, i64 0
  %246 = xor i1 %219, %245
  %247 = getelementptr inbounds double, ptr %26, i64 %222
  %248 = select i1 %246, double %.neg476, double %192
  store double %248, ptr %247, align 8, !tbaa !9
  br label %pred.store.continue564

pred.store.continue564:                           ; preds = %pred.store.if563, %pred.store.continue562
  %249 = extractelement <2 x i1> %232, i64 1
  br i1 %249, label %pred.store.if565, label %pred.store.continue566

pred.store.if565:                                 ; preds = %pred.store.continue564
  %250 = extractelement <2 x i1> %226, i64 1
  %251 = xor i1 %219, %250
  %gep568 = getelementptr double, ptr %invariant.gep567, i64 %index
  %252 = select i1 %251, double %.neg476, double %192
  store double %252, ptr %gep568, align 8, !tbaa !9
  br label %pred.store.continue566

pred.store.continue566:                           ; preds = %pred.store.if565, %pred.store.continue564
  %index.next = add nuw i64 %index, 4
  %253 = icmp eq i64 %index.next, %n.vec
  br i1 %253, label %middle.block, label %vector.body, !llvm.loop !13

middle.block:                                     ; preds = %pred.store.continue566
  %cmp.n = icmp eq i64 %n.vec, %221
  br i1 %cmp.n, label %._crit_edge, label %scalar.ph.preheader

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

scalar.ph:                                        ; preds = %scalar.ph.preheader, %262
  %indvars.iv520 = phi i64 [ %indvars.iv.next521, %262 ], [ %indvars.iv520.ph, %scalar.ph.preheader ]
  %254 = getelementptr inbounds double, ptr %26, i64 %indvars.iv520
  %255 = load double, ptr %254, align 8, !tbaa !9
  %256 = fcmp oge double %255, 0.000000e+00
  %257 = fneg double %255
  %258 = select i1 %256, double %255, double %257
  %259 = fcmp olt double %258, %192
  br i1 %259, label %260, label %262

260:                                              ; preds = %scalar.ph
  %261 = xor i1 %219, %256
  %. = select i1 %261, double %.neg476, double %192
  store double %., ptr %254, align 8, !tbaa !9
  br label %262

262:                                              ; preds = %scalar.ph, %260
  %indvars.iv.next521 = add nuw nsw i64 %indvars.iv520, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next521, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %scalar.ph, !llvm.loop !16

._crit_edge:                                      ; preds = %262, %middle.block, %217
  store i32 0, ptr %17, align 4, !tbaa !5
  %263 = load i32, ptr %24, align 4, !tbaa !5
  store i32 %263, ptr %15, align 4, !tbaa !5
  %.not473497 = icmp slt i32 %263, 1
  br i1 %.not473497, label %._crit_edge503, label %.lr.ph502

.lr.ph502:                                        ; preds = %._crit_edge
  %264 = add i32 %28, 1
  %265 = add i32 %31, 1
  %266 = add nsw i32 %.0426, -1
  %267 = add nsw i32 %.0426, -2
  %268 = add i32 %267, %201
  %269 = add i32 %267, %.0447
  %270 = add i32 %267, %.0446
  %271 = add i32 %267, %.0440
  %272 = add i32 %267, %.0439
  %273 = add i32 %267, %.0427
  %274 = add i32 %267, %.0434
  %275 = add i32 %267, %.0430
  %276 = sext i32 %.1 to i64
  %277 = getelementptr inbounds double, ptr %36, i64 %276
  br label %278

278:                                              ; preds = %.lr.ph502, %419
  %279 = phi i32 [ %263, %.lr.ph502 ], [ %420, %419 ]
  %indvars.iv523 = phi i64 [ 1, %.lr.ph502 ], [ %indvars.iv.next524.pre-phi, %419 ]
  %.0435.neg500 = phi i32 [ -1, %.lr.ph502 ], [ %.0435.neg, %419 ]
  %.0435499 = phi i32 [ 1, %.lr.ph502 ], [ %.1436, %419 ]
  %280 = getelementptr inbounds double, ptr %27, i64 %indvars.iv523
  %281 = load double, ptr %280, align 8, !tbaa !9
  %282 = fcmp oge double %281, 0.000000e+00
  %283 = fneg double %281
  %284 = select i1 %282, double %281, double %283
  %285 = fcmp olt double %284, %192
  %286 = load i32, ptr %24, align 4
  %287 = zext i32 %286 to i64
  %288 = icmp eq i64 %indvars.iv523, %287
  %or.cond485 = select i1 %285, i1 true, i1 %288
  br i1 %or.cond485, label %289, label %._crit_edge541

._crit_edge541:                                   ; preds = %278
  %.pre542 = add nuw nsw i64 %indvars.iv523, 1
  br label %419

289:                                              ; preds = %278
  %290 = sext i32 %286 to i64
  %291 = icmp slt i64 %indvars.iv523, %290
  br i1 %291, label %292, label %296

292:                                              ; preds = %289
  %293 = trunc i64 %indvars.iv523 to i32
  %294 = add i32 %293, 1
  %295 = add i32 %294, %.0435.neg500
  store i32 %295, ptr %19, align 4, !tbaa !5
  br label %348

296:                                              ; preds = %289
  %297 = fcmp ult double %284, %192
  br i1 %297, label %302, label %298

298:                                              ; preds = %296
  %299 = load i32, ptr %2, align 4, !tbaa !5
  %300 = add i32 %.0435.neg500, 1
  %301 = add i32 %300, %299
  store i32 %301, ptr %19, align 4, !tbaa !5
  br label %348

302:                                              ; preds = %296
  %303 = trunc i64 %indvars.iv523 to i32
  %304 = add i32 %303, 1
  %305 = add i32 %304, %.0435.neg500
  store i32 %305, ptr %19, align 4, !tbaa !5
  %306 = load i32, ptr %22, align 4, !tbaa !5
  %.pre536 = load i32, ptr %2, align 4, !tbaa !5
  %.pre540 = sext i32 %.pre536 to i64
  switch i32 %306, label %._crit_edge535 [
    i32 2, label %307
    i32 1, label %323
  ]

307:                                              ; preds = %302
  %308 = getelementptr inbounds double, ptr %26, i64 %.pre540
  %309 = load double, ptr %308, align 8, !tbaa !9
  %310 = fcmp ult double %309, 0.000000e+00
  %311 = load double, ptr @c_b15, align 8
  %312 = fcmp oge double %311, 0.000000e+00
  %.neg474 = fneg double %311
  br i1 %310, label %315, label %313

313:                                              ; preds = %307
  %314 = select i1 %312, double %311, double %.neg474
  br label %317

315:                                              ; preds = %307
  %316 = select i1 %312, double %.neg474, double %311
  br label %317

317:                                              ; preds = %315, %313
  %318 = phi double [ %314, %313 ], [ %316, %315 ]
  %319 = mul i32 %.pre536, %264
  %320 = sext i32 %319 to i64
  %321 = getelementptr inbounds double, ptr %30, i64 %320
  store double %318, ptr %321, align 8, !tbaa !9
  %322 = mul i32 %.pre536, %265
  br label %._crit_edge535.sink.split

323:                                              ; preds = %302
  %324 = getelementptr inbounds double, ptr %26, i64 %.pre540
  %325 = load double, ptr %324, align 8, !tbaa !9
  %326 = fcmp ult double %325, 0.000000e+00
  %327 = load double, ptr @c_b15, align 8
  %328 = fcmp oge double %327, 0.000000e+00
  %.neg = fneg double %327
  br i1 %326, label %331, label %329

329:                                              ; preds = %323
  %330 = select i1 %328, double %327, double %.neg
  br label %333

331:                                              ; preds = %323
  %332 = select i1 %328, double %.neg, double %327
  br label %333

333:                                              ; preds = %331, %329
  %334 = phi double [ %330, %329 ], [ %332, %331 ]
  %335 = mul i32 %.pre536, %.0426
  %336 = sext i32 %335 to i64
  %337 = getelementptr inbounds double, ptr %34, i64 %336
  store double %334, ptr %337, align 8, !tbaa !9
  %338 = load i32, ptr %25, align 4, !tbaa !5
  %339 = add nsw i32 %338, %.0426
  %340 = mul i32 %339, %.pre536
  br label %._crit_edge535.sink.split

._crit_edge535.sink.split:                        ; preds = %317, %333
  %.sink559 = phi i32 [ %340, %333 ], [ %322, %317 ]
  %.sink557 = phi ptr [ %34, %333 ], [ %33, %317 ]
  %341 = sext i32 %.sink559 to i64
  %342 = getelementptr inbounds double, ptr %.sink557, i64 %341
  store double 1.000000e+00, ptr %342, align 8, !tbaa !9
  br label %._crit_edge535

._crit_edge535:                                   ; preds = %._crit_edge535.sink.split, %302
  %343 = getelementptr inbounds double, ptr %26, i64 %.pre540
  %344 = load double, ptr %343, align 8, !tbaa !9
  %345 = fcmp oge double %344, 0.000000e+00
  %346 = fneg double %344
  %347 = select i1 %345, double %344, double %346
  store double %347, ptr %343, align 8, !tbaa !9
  br label %348

348:                                              ; preds = %298, %._crit_edge535, %292
  %349 = load i32, ptr %22, align 4, !tbaa !5
  %350 = icmp eq i32 %349, 2
  %351 = sext i32 %.0435499 to i64
  %352 = getelementptr inbounds double, ptr %26, i64 %351
  %353 = getelementptr inbounds double, ptr %27, i64 %351
  br i1 %350, label %354, label %361

354:                                              ; preds = %348
  %355 = mul i32 %.0435499, %264
  %356 = sext i32 %355 to i64
  %357 = getelementptr inbounds double, ptr %30, i64 %356
  %358 = mul i32 %.0435499, %265
  %359 = sext i32 %358 to i64
  %360 = getelementptr inbounds double, ptr %33, i64 %359
  call void @dlasd0_(ptr noundef nonnull %19, ptr noundef nonnull %17, ptr noundef nonnull %352, ptr noundef nonnull %353, ptr noundef %357, ptr noundef nonnull %6, ptr noundef %360, ptr noundef nonnull %8, ptr noundef nonnull %25, ptr noundef %12, ptr noundef nonnull %277, ptr noundef nonnull %13) #4
  br label %414

361:                                              ; preds = %348
  %362 = load i32, ptr %2, align 4, !tbaa !5
  %363 = mul nsw i32 %362, %266
  %364 = add nsw i32 %363, %.0435499
  %365 = sext i32 %364 to i64
  %366 = getelementptr inbounds double, ptr %34, i64 %365
  %367 = mul nsw i32 %362, %268
  %368 = add nsw i32 %367, %.0435499
  %369 = sext i32 %368 to i64
  %370 = getelementptr inbounds double, ptr %34, i64 %369
  %371 = add nsw i32 %362, %.0435499
  %372 = sext i32 %371 to i64
  %373 = getelementptr inbounds i32, ptr %35, i64 %372
  %374 = mul nsw i32 %362, %269
  %375 = add nsw i32 %374, %.0435499
  %376 = sext i32 %375 to i64
  %377 = getelementptr inbounds double, ptr %34, i64 %376
  %378 = mul nsw i32 %362, %270
  %379 = add nsw i32 %378, %.0435499
  %380 = sext i32 %379 to i64
  %381 = getelementptr inbounds double, ptr %34, i64 %380
  %382 = mul nsw i32 %362, %271
  %383 = add nsw i32 %382, %.0435499
  %384 = sext i32 %383 to i64
  %385 = getelementptr inbounds double, ptr %34, i64 %384
  %386 = mul nsw i32 %362, %272
  %387 = add nsw i32 %386, %.0435499
  %388 = sext i32 %387 to i64
  %389 = getelementptr inbounds double, ptr %34, i64 %388
  %390 = shl nsw i32 %362, 1
  %391 = add nsw i32 %390, %.0435499
  %392 = sext i32 %391 to i64
  %393 = getelementptr inbounds i32, ptr %35, i64 %392
  %394 = mul nsw i32 %362, %.0428
  %395 = add nsw i32 %394, %.0435499
  %396 = sext i32 %395 to i64
  %397 = getelementptr inbounds i32, ptr %35, i64 %396
  %398 = mul nsw i32 %362, 3
  %399 = add nsw i32 %398, %.0435499
  %400 = sext i32 %399 to i64
  %401 = getelementptr inbounds i32, ptr %35, i64 %400
  %402 = mul nsw i32 %362, %273
  %403 = add nsw i32 %402, %.0435499
  %404 = sext i32 %403 to i64
  %405 = getelementptr inbounds double, ptr %34, i64 %404
  %406 = mul nsw i32 %362, %274
  %407 = add nsw i32 %406, %.0435499
  %408 = sext i32 %407 to i64
  %409 = getelementptr inbounds double, ptr %34, i64 %408
  %410 = mul nsw i32 %362, %275
  %411 = add nsw i32 %410, %.0435499
  %412 = sext i32 %411 to i64
  %413 = getelementptr inbounds double, ptr %34, i64 %412
  call void @dlasda_(ptr noundef nonnull %22, ptr noundef nonnull %25, ptr noundef nonnull %19, ptr noundef nonnull %17, ptr noundef nonnull %352, ptr noundef nonnull %353, ptr noundef nonnull %366, ptr noundef nonnull %2, ptr noundef nonnull %370, ptr noundef nonnull %373, ptr noundef nonnull %377, ptr noundef nonnull %381, ptr noundef nonnull %385, ptr noundef nonnull %389, ptr noundef nonnull %393, ptr noundef nonnull %397, ptr noundef nonnull %2, ptr noundef nonnull %401, ptr noundef nonnull %405, ptr noundef nonnull %409, ptr noundef nonnull %413, ptr noundef nonnull %277, ptr noundef %12, ptr noundef nonnull %13) #4
  br label %414

414:                                              ; preds = %361, %354
  %415 = load i32, ptr %13, align 4, !tbaa !5
  %.not475 = icmp eq i32 %415, 0
  br i1 %.not475, label %416, label %.thread488

416:                                              ; preds = %414
  %417 = add nuw nsw i64 %indvars.iv523, 1
  %418 = trunc nuw i64 %417 to i32
  %.pre537 = load i32, ptr %15, align 4, !tbaa !5
  br label %419

419:                                              ; preds = %._crit_edge541, %416
  %indvars.iv.next524.pre-phi = phi i64 [ %.pre542, %._crit_edge541 ], [ %417, %416 ]
  %420 = phi i32 [ %279, %._crit_edge541 ], [ %.pre537, %416 ]
  %.1436 = phi i32 [ %.0435499, %._crit_edge541 ], [ %418, %416 ]
  %.0435.neg = sub i32 0, %.1436
  %421 = sext i32 %420 to i64
  %.not473.not = icmp slt i64 %indvars.iv523, %421
  br i1 %.not473.not, label %278, label %._crit_edge503, !llvm.loop !17

._crit_edge503:                                   ; preds = %419, %._crit_edge
  call void @dlascl_(ptr noundef nonnull @.str.9, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull @c_b15, ptr noundef nonnull %23, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef %3, ptr noundef nonnull %2, ptr noundef nonnull %16) #4
  br label %thread-pre-split

thread-pre-split:                                 ; preds = %154, %._crit_edge503, %162, %159
  %.pr545 = load i32, ptr %2, align 4, !tbaa !5
  br label %422

422:                                              ; preds = %thread-pre-split, %158
  %423 = phi i32 [ %.pr545, %thread-pre-split ], [ %156, %158 ]
  store i32 %423, ptr %15, align 4, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %30, i64 8
  %.not477514 = icmp slt i32 %423, 2
  br i1 %.not477514, label %._crit_edge518, label %.lr.ph517.preheader

.lr.ph517.preheader:                              ; preds = %422
  %424 = sext i32 %28 to i64
  %425 = sext i32 %31 to i64
  %invariant.gep546 = getelementptr double, ptr %33, i64 %425
  br label %.lr.ph517

.lr.ph517:                                        ; preds = %.lr.ph517.preheader, %457
  %426 = phi i32 [ %423, %.lr.ph517.preheader ], [ %458, %457 ]
  %indvars.iv526 = phi i64 [ 2, %.lr.ph517.preheader ], [ %indvars.iv.next527, %457 ]
  %427 = add nsw i64 %indvars.iv526, -1
  %428 = getelementptr inbounds double, ptr %26, i64 %427
  %429 = load double, ptr %428, align 8, !tbaa !9
  %430 = load i32, ptr %2, align 4, !tbaa !5
  %431 = sext i32 %430 to i64
  %.not478504 = icmp sgt i64 %indvars.iv526, %431
  %432 = trunc nuw nsw i64 %427 to i32
  br i1 %.not478504, label %._crit_edge510, label %.lr.ph509.preheader

.lr.ph509.preheader:                              ; preds = %.lr.ph517
  %433 = add i32 %430, 1
  %wide.trip.count531 = zext i32 %433 to i64
  br label %.lr.ph509

.lr.ph509:                                        ; preds = %.lr.ph509.preheader, %.lr.ph509
  %indvars.iv528 = phi i64 [ %indvars.iv526, %.lr.ph509.preheader ], [ %indvars.iv.next529, %.lr.ph509 ]
  %.0431507 = phi i32 [ %432, %.lr.ph509.preheader ], [ %.1432, %.lr.ph509 ]
  %.0441506 = phi double [ %429, %.lr.ph509.preheader ], [ %.1442, %.lr.ph509 ]
  %434 = getelementptr inbounds double, ptr %26, i64 %indvars.iv528
  %435 = load double, ptr %434, align 8, !tbaa !9
  %436 = fcmp ogt double %435, %.0441506
  %.1442 = select i1 %436, double %435, double %.0441506
  %437 = trunc nuw nsw i64 %indvars.iv528 to i32
  %.1432 = select i1 %436, i32 %437, i32 %.0431507
  %indvars.iv.next529 = add nuw nsw i64 %indvars.iv528, 1
  %exitcond532.not = icmp eq i64 %indvars.iv.next529, %wide.trip.count531
  br i1 %exitcond532.not, label %._crit_edge510, label %.lr.ph509, !llvm.loop !18

._crit_edge510:                                   ; preds = %.lr.ph509, %.lr.ph517
  %.0441.lcssa = phi double [ %429, %.lr.ph517 ], [ %.1442, %.lr.ph509 ]
  %.0431.lcssa = phi i32 [ %432, %.lr.ph517 ], [ %.1432, %.lr.ph509 ]
  %438 = zext i32 %.0431.lcssa to i64
  %.not479 = icmp eq i64 %427, %438
  br i1 %.not479, label %452, label %439

439:                                              ; preds = %._crit_edge510
  %440 = sext i32 %.0431.lcssa to i64
  %441 = getelementptr inbounds double, ptr %26, i64 %440
  store double %429, ptr %441, align 8, !tbaa !9
  store double %.0441.lcssa, ptr %428, align 8, !tbaa !9
  %442 = load i32, ptr %22, align 4, !tbaa !5
  switch i32 %442, label %457 [
    i32 1, label %443
    i32 2, label %445
  ]

443:                                              ; preds = %439
  %444 = getelementptr inbounds i32, ptr %35, i64 %427
  store i32 %.0431.lcssa, ptr %444, align 4, !tbaa !5
  br label %457

445:                                              ; preds = %439
  %446 = mul nsw i64 %427, %424
  %gep = getelementptr double, ptr %invariant.gep, i64 %446
  %447 = mul nsw i32 %.0431.lcssa, %28
  %448 = sext i32 %447 to i64
  %gep513 = getelementptr double, ptr %invariant.gep, i64 %448
  call void @dswap_(ptr noundef nonnull %2, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %gep513, ptr noundef nonnull @c__1) #4
  %gep547 = getelementptr double, ptr %invariant.gep546, i64 %427
  %449 = add nsw i32 %.0431.lcssa, %31
  %450 = sext i32 %449 to i64
  %451 = getelementptr inbounds double, ptr %33, i64 %450
  call void @dswap_(ptr noundef nonnull %2, ptr noundef %gep547, ptr noundef nonnull %8, ptr noundef %451, ptr noundef nonnull %8) #4
  %.pre538 = load i32, ptr %15, align 4, !tbaa !5
  br label %457

452:                                              ; preds = %._crit_edge510
  %453 = load i32, ptr %22, align 4, !tbaa !5
  %454 = icmp eq i32 %453, 1
  br i1 %454, label %455, label %457

455:                                              ; preds = %452
  %456 = getelementptr inbounds i32, ptr %35, i64 %427
  store i32 %432, ptr %456, align 4, !tbaa !5
  br label %457

457:                                              ; preds = %439, %445, %443, %455, %452
  %458 = phi i32 [ %426, %439 ], [ %.pre538, %445 ], [ %426, %443 ], [ %426, %455 ], [ %426, %452 ]
  %indvars.iv.next527 = add nuw nsw i64 %indvars.iv526, 1
  %459 = sext i32 %458 to i64
  %.not477.not = icmp slt i64 %indvars.iv526, %459
  br i1 %.not477.not, label %.lr.ph517, label %._crit_edge518, !llvm.loop !19

._crit_edge518:                                   ; preds = %457, %422
  %460 = load i32, ptr %22, align 4
  %461 = icmp eq i32 %460, 1
  br i1 %461, label %462, label %469

462:                                              ; preds = %._crit_edge518
  %not..not465 = xor i1 %.not465, true
  %463 = select i1 %not..not465, i1 %.not, i1 false
  %464 = load i32, ptr %2, align 4, !tbaa !5
  %465 = sext i32 %464 to i64
  %466 = getelementptr inbounds i32, ptr %35, i64 %465
  br i1 %463, label %467, label %468

467:                                              ; preds = %462
  store i32 1, ptr %466, align 4, !tbaa !5
  br label %.thread488

468:                                              ; preds = %462
  store i32 0, ptr %466, align 4, !tbaa !5
  br label %.thread488

469:                                              ; preds = %._crit_edge518
  %470 = icmp eq i32 %460, 2
  %or.cond = and i1 %.not465, %470
  br i1 %or.cond, label %471, label %.thread488

471:                                              ; preds = %469
  %472 = load i32, ptr %2, align 4, !tbaa !5
  %473 = sext i32 %472 to i64
  %474 = getelementptr inbounds double, ptr %36, i64 %473
  call void @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 %474, ptr noundef %5, ptr noundef nonnull %6) #4
  br label %.thread488

.thread488:                                       ; preds = %414, %468, %467, %469, %471, %187, %68, %100, %.thread
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr nonnull %19) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #4
  ret void
}

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

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

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

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

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

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

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

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

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

declare void @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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12, !14, !15}
!14 = !{!"llvm.loop.isvectorized", i32 1}
!15 = !{!"llvm.loop.unroll.runtime.disable"}
!16 = distinct !{!16, !12, !15, !14}
!17 = distinct !{!17, !12}
!18 = distinct !{!18, !12}
!19 = distinct !{!19, !12}


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