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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

231:                                              ; preds = %218, %215
  br label %232

232:                                              ; preds = %231, %201
  %233 = load ptr, ptr %19, align 8, !tbaa !5
  %234 = getelementptr inbounds float, ptr %233, i64 1
  %235 = load float, ptr %234, align 4, !tbaa !11
  %236 = fcmp oge float %235, 0.000000e+00
  br i1 %236, label %237, label %241

237:                                              ; preds = %232
  %238 = load ptr, ptr %19, align 8, !tbaa !5
  %239 = getelementptr inbounds float, ptr %238, i64 1
  %240 = load float, ptr %239, align 4, !tbaa !11
  br label %246

241:                                              ; preds = %232
  %242 = load ptr, ptr %19, align 8, !tbaa !5
  %243 = getelementptr inbounds float, ptr %242, i64 1
  %244 = load float, ptr %243, align 4, !tbaa !11
  %245 = fneg float %244
  br label %246

246:                                              ; preds = %241, %237
  %247 = phi float [ %240, %237 ], [ %245, %241 ]
  %248 = fpext float %247 to double
  %249 = fptrunc double %248 to float
  %250 = load ptr, ptr %19, align 8, !tbaa !5
  %251 = getelementptr inbounds float, ptr %250, i64 1
  store float %249, ptr %251, align 4, !tbaa !11
  store i32 0, ptr %15, align 4
  store i32 1, ptr %72, align 4
  br label %1130

252:                                              ; preds = %193
  %253 = load ptr, ptr %18, align 8, !tbaa !5
  %254 = load i64, ptr %253, align 8, !tbaa !9
  %255 = sub nsw i64 %254, 1
  store i64 %255, ptr %50, align 8, !tbaa !9
  store i64 1, ptr %70, align 8, !tbaa !9
  store i64 3, ptr %68, align 8, !tbaa !9
  %256 = load i64, ptr %64, align 8, !tbaa !9
  %257 = icmp eq i64 %256, 1
  br i1 %257, label %258, label %276

258:                                              ; preds = %252
  %259 = load ptr, ptr %18, align 8, !tbaa !5
  %260 = load ptr, ptr %19, align 8, !tbaa !5
  %261 = getelementptr inbounds float, ptr %260, i64 1
  %262 = load ptr, ptr %25, align 8, !tbaa !5
  %263 = getelementptr inbounds float, ptr %262, i64 1
  %264 = call i32 @f2c_scopy(ptr noundef %259, ptr noundef %261, ptr noundef @c__1, ptr noundef %263, ptr noundef @c__1)
  %265 = load ptr, ptr %18, align 8, !tbaa !5
  %266 = load i64, ptr %265, align 8, !tbaa !9
  %267 = sub nsw i64 %266, 1
  store i64 %267, ptr %34, align 8, !tbaa !9
  %268 = load ptr, ptr %20, align 8, !tbaa !5
  %269 = getelementptr inbounds float, ptr %268, i64 1
  %270 = load ptr, ptr %25, align 8, !tbaa !5
  %271 = load ptr, ptr %18, align 8, !tbaa !5
  %272 = load i64, ptr %271, align 8, !tbaa !9
  %273 = add nsw i64 %272, 1
  %274 = getelementptr inbounds float, ptr %270, i64 %273
  %275 = call i32 @f2c_scopy(ptr noundef %34, ptr noundef %269, ptr noundef @c__1, ptr noundef %274, ptr noundef @c__1)
  br label %276

276:                                              ; preds = %258, %252
  %277 = load i64, ptr %60, align 8, !tbaa !9
  %278 = icmp eq i64 %277, 2
  br i1 %278, label %279, label %364

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

287:                                              ; preds = %360, %279
  %288 = load i64, ptr %37, align 8, !tbaa !9
  %289 = load i64, ptr %34, align 8, !tbaa !9
  %290 = icmp sle i64 %288, %289
  br i1 %290, label %291, label %363

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

326:                                              ; preds = %291
  %327 = load float, ptr %46, align 4, !tbaa !11
  %328 = load ptr, ptr %25, align 8, !tbaa !5
  %329 = load i64, ptr %37, align 8, !tbaa !9
  %330 = load ptr, ptr %18, align 8, !tbaa !5
  %331 = load i64, ptr %330, align 8, !tbaa !9
  %332 = shl i64 %331, 1
  %333 = add nsw i64 %329, %332
  %334 = getelementptr inbounds float, ptr %328, i64 %333
  store float %327, ptr %334, align 4, !tbaa !11
  %335 = load float, ptr %49, align 4, !tbaa !11
  %336 = load ptr, ptr %25, align 8, !tbaa !5
  %337 = load i64, ptr %37, align 8, !tbaa !9
  %338 = load ptr, ptr %18, align 8, !tbaa !5
  %339 = load i64, ptr %338, align 8, !tbaa !9
  %340 = mul nsw i64 %339, 3
  %341 = add nsw i64 %337, %340
  %342 = getelementptr inbounds float, ptr %336, i64 %341
  store float %335, ptr %342, align 4, !tbaa !11
  br label %359

343:                                              ; preds = %291
  %344 = load i64, ptr %64, align 8, !tbaa !9
  %345 = icmp eq i64 %344, 2
  br i1 %345, label %346, label %358

346:                                              ; preds = %343
  %347 = load float, ptr %46, align 4, !tbaa !11
  %348 = load ptr, ptr %27, align 8, !tbaa !5
  %349 = load i64, ptr %37, align 8, !tbaa !9
  %350 = getelementptr inbounds float, ptr %348, i64 %349
  store float %347, ptr %350, align 4, !tbaa !11
  %351 = load float, ptr %49, align 4, !tbaa !11
  %352 = fneg float %351
  %353 = load ptr, ptr %27, align 8, !tbaa !5
  %354 = load i64, ptr %50, align 8, !tbaa !9
  %355 = load i64, ptr %37, align 8, !tbaa !9
  %356 = add nsw i64 %354, %355
  %357 = getelementptr inbounds float, ptr %353, i64 %356
  store float %352, ptr %357, align 4, !tbaa !11
  br label %358

358:                                              ; preds = %346, %343
  br label %359

359:                                              ; preds = %358, %326
  br label %360

360:                                              ; preds = %359
  %361 = load i64, ptr %37, align 8, !tbaa !9
  %362 = add nsw i64 %361, 1
  store i64 %362, ptr %37, align 8, !tbaa !9
  br label %287, !llvm.loop !13

363:                                              ; preds = %287
  br label %364

364:                                              ; preds = %363, %276
  %365 = load i64, ptr %64, align 8, !tbaa !9
  %366 = icmp eq i64 %365, 0
  br i1 %366, label %367, label %390

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

390:                                              ; preds = %364
  %391 = load ptr, ptr %18, align 8, !tbaa !5
  %392 = load i64, ptr %391, align 8, !tbaa !9
  %393 = load i64, ptr %69, align 8, !tbaa !9
  %394 = icmp sle i64 %392, %393
  br i1 %394, label %395, label %515

395:                                              ; preds = %390
  %396 = load i64, ptr %64, align 8, !tbaa !9
  %397 = icmp eq i64 %396, 2
  br i1 %397, label %398, label %437

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

437:                                              ; preds = %395
  %438 = load i64, ptr %64, align 8, !tbaa !9
  %439 = icmp eq i64 %438, 1
  br i1 %439, label %440, label %513

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

513:                                              ; preds = %440, %437
  br label %514

514:                                              ; preds = %513, %398
  br label %983

515:                                              ; preds = %390
  %516 = load i64, ptr %64, align 8, !tbaa !9
  %517 = icmp eq i64 %516, 2
  br i1 %517, label %518, label %533

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

533:                                              ; preds = %518, %515
  %534 = load ptr, ptr %18, align 8, !tbaa !5
  %535 = load ptr, ptr %19, align 8, !tbaa !5
  %536 = getelementptr inbounds float, ptr %535, i64 1
  %537 = load ptr, ptr %20, align 8, !tbaa !5
  %538 = getelementptr inbounds float, ptr %537, i64 1
  %539 = call double @slanst_(ptr noundef @.str.8, ptr noundef %534, ptr noundef %536, ptr noundef %538)
  %540 = fptrunc double %539 to float
  store float %540, ptr %65, align 4, !tbaa !11
  %541 = load float, ptr %65, align 4, !tbaa !11
  %542 = fcmp oeq float %541, 0.000000e+00
  br i1 %542, label %543, label %544

543:                                              ; preds = %533
  store i32 0, ptr %15, align 4
  store i32 1, ptr %72, align 4
  br label %1130

544:                                              ; preds = %533
  %545 = load ptr, ptr %18, align 8, !tbaa !5
  %546 = load ptr, ptr %19, align 8, !tbaa !5
  %547 = getelementptr inbounds float, ptr %546, i64 1
  %548 = load ptr, ptr %18, align 8, !tbaa !5
  %549 = call i32 @slascl_(ptr noundef @.str.9, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %65, ptr noundef @c_b15, ptr noundef %545, ptr noundef @c__1, ptr noundef %547, ptr noundef %548, ptr noundef %55)
  %550 = load ptr, ptr %20, align 8, !tbaa !5
  %551 = getelementptr inbounds float, ptr %550, i64 1
  %552 = call i32 @slascl_(ptr noundef @.str.9, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %65, ptr noundef @c_b15, ptr noundef %50, ptr noundef @c__1, ptr noundef %551, ptr noundef %50, ptr noundef %55)
  %553 = call double @slamch_(ptr noundef @.str.10)
  %554 = fptrunc double %553 to float
  store float %554, ptr %51, align 4, !tbaa !11
  %555 = load ptr, ptr %18, align 8, !tbaa !5
  %556 = load i64, ptr %555, align 8, !tbaa !9
  %557 = sitofp i64 %556 to float
  %558 = load i64, ptr %69, align 8, !tbaa !9
  %559 = add nsw i64 %558, 1
  %560 = sitofp i64 %559 to float
  %561 = fdiv float %557, %560
  %562 = fpext float %561 to double
  %563 = call double @log(double noundef %562) #4
  %564 = call double @log(double noundef 2.000000e+00) #4
  %565 = fdiv double %563, %564
  %566 = fptosi double %565 to i64
  %567 = add nsw i64 %566, 1
  store i64 %567, ptr %57, align 8, !tbaa !9
  %568 = load i64, ptr %69, align 8, !tbaa !9
  %569 = add nsw i64 %568, 1
  store i64 %569, ptr %71, align 8, !tbaa !9
  %570 = load i64, ptr %64, align 8, !tbaa !9
  %571 = icmp eq i64 %570, 1
  br i1 %571, label %572, label %599

572:                                              ; preds = %544
  store i64 1, ptr %48, align 8, !tbaa !9
  %573 = load i64, ptr %69, align 8, !tbaa !9
  %574 = add nsw i64 %573, 1
  store i64 %574, ptr %52, align 8, !tbaa !9
  %575 = load i64, ptr %52, align 8, !tbaa !9
  %576 = load i64, ptr %71, align 8, !tbaa !9
  %577 = add nsw i64 %575, %576
  store i64 %577, ptr %53, align 8, !tbaa !9
  %578 = load i64, ptr %53, align 8, !tbaa !9
  %579 = load i64, ptr %57, align 8, !tbaa !9
  %580 = add nsw i64 %578, %579
  store i64 %580, ptr %54, align 8, !tbaa !9
  %581 = load i64, ptr %54, align 8, !tbaa !9
  %582 = load i64, ptr %57, align 8, !tbaa !9
  %583 = shl i64 %582, 1
  %584 = add nsw i64 %581, %583
  store i64 %584, ptr %42, align 8, !tbaa !9
  %585 = load i64, ptr %42, align 8, !tbaa !9
  %586 = load i64, ptr %57, align 8, !tbaa !9
  %587 = add nsw i64 %585, %586
  store i64 %587, ptr %43, align 8, !tbaa !9
  %588 = load i64, ptr %43, align 8, !tbaa !9
  %589 = add nsw i64 %588, 1
  store i64 %589, ptr %47, align 8, !tbaa !9
  %590 = load i64, ptr %47, align 8, !tbaa !9
  %591 = add nsw i64 %590, 1
  store i64 %591, ptr %59, align 8, !tbaa !9
  %592 = load i64, ptr %59, align 8, !tbaa !9
  %593 = load i64, ptr %57, align 8, !tbaa !9
  %594 = shl i64 %593, 1
  %595 = add nsw i64 %592, %594
  store i64 %595, ptr %66, align 8, !tbaa !9
  store i64 1, ptr %39, align 8, !tbaa !9
  store i64 2, ptr %67, align 8, !tbaa !9
  store i64 3, ptr %56, align 8, !tbaa !9
  %596 = load i64, ptr %56, align 8, !tbaa !9
  %597 = load i64, ptr %57, align 8, !tbaa !9
  %598 = add nsw i64 %596, %597
  store i64 %598, ptr %63, align 8, !tbaa !9
  br label %599

599:                                              ; preds = %572, %544
  %600 = load ptr, ptr %18, align 8, !tbaa !5
  %601 = load i64, ptr %600, align 8, !tbaa !9
  store i64 %601, ptr %34, align 8, !tbaa !9
  store i64 1, ptr %37, align 8, !tbaa !9
  br label %602

602:                                              ; preds = %634, %599
  %603 = load i64, ptr %37, align 8, !tbaa !9
  %604 = load i64, ptr %34, align 8, !tbaa !9
  %605 = icmp sle i64 %603, %604
  br i1 %605, label %606, label %637

606:                                              ; preds = %602
  %607 = load ptr, ptr %19, align 8, !tbaa !5
  %608 = load i64, ptr %37, align 8, !tbaa !9
  %609 = getelementptr inbounds float, ptr %607, i64 %608
  %610 = load float, ptr %609, align 4, !tbaa !11
  store float %610, ptr %36, align 4, !tbaa !11
  %611 = load float, ptr %36, align 4, !tbaa !11
  %612 = fcmp oge float %611, 0.000000e+00
  br i1 %612, label %613, label %615

613:                                              ; preds = %606
  %614 = load float, ptr %36, align 4, !tbaa !11
  br label %618

615:                                              ; preds = %606
  %616 = load float, ptr %36, align 4, !tbaa !11
  %617 = fneg float %616
  br label %618

618:                                              ; preds = %615, %613
  %619 = phi float [ %614, %613 ], [ %617, %615 ]
  %620 = fpext float %619 to double
  %621 = load float, ptr %51, align 4, !tbaa !11
  %622 = fpext float %621 to double
  %623 = fcmp olt double %620, %622
  br i1 %623, label %624, label %633

624:                                              ; preds = %618
  %625 = load ptr, ptr %19, align 8, !tbaa !5
  %626 = load i64, ptr %37, align 8, !tbaa !9
  %627 = getelementptr inbounds float, ptr %625, i64 %626
  %628 = call double @r_sign(ptr noundef %51, ptr noundef %627)
  %629 = fptrunc double %628 to float
  %630 = load ptr, ptr %19, align 8, !tbaa !5
  %631 = load i64, ptr %37, align 8, !tbaa !9
  %632 = getelementptr inbounds float, ptr %630, i64 %631
  store float %629, ptr %632, align 4, !tbaa !11
  br label %633

633:                                              ; preds = %624, %618
  br label %634

634:                                              ; preds = %633
  %635 = load i64, ptr %37, align 8, !tbaa !9
  %636 = add nsw i64 %635, 1
  store i64 %636, ptr %37, align 8, !tbaa !9
  br label %602, !llvm.loop !15

637:                                              ; preds = %602
  store i64 1, ptr %62, align 8, !tbaa !9
  store i64 0, ptr %58, align 8, !tbaa !9
  %638 = load i64, ptr %50, align 8, !tbaa !9
  store i64 %638, ptr %34, align 8, !tbaa !9
  store i64 1, ptr %37, align 8, !tbaa !9
  br label %639

639:                                              ; preds = %974, %637
  %640 = load i64, ptr %37, align 8, !tbaa !9
  %641 = load i64, ptr %34, align 8, !tbaa !9
  %642 = icmp sle i64 %640, %641
  br i1 %642, label %643, label %977

643:                                              ; preds = %639
  %644 = load ptr, ptr %20, align 8, !tbaa !5
  %645 = load i64, ptr %37, align 8, !tbaa !9
  %646 = getelementptr inbounds float, ptr %644, i64 %645
  %647 = load float, ptr %646, align 4, !tbaa !11
  store float %647, ptr %36, align 4, !tbaa !11
  %648 = load float, ptr %36, align 4, !tbaa !11
  %649 = fcmp oge float %648, 0.000000e+00
  br i1 %649, label %650, label %652

650:                                              ; preds = %643
  %651 = load float, ptr %36, align 4, !tbaa !11
  br label %655

652:                                              ; preds = %643
  %653 = load float, ptr %36, align 4, !tbaa !11
  %654 = fneg float %653
  br label %655

655:                                              ; preds = %652, %650
  %656 = phi float [ %651, %650 ], [ %654, %652 ]
  %657 = fpext float %656 to double
  %658 = load float, ptr %51, align 4, !tbaa !11
  %659 = fpext float %658 to double
  %660 = fcmp olt double %657, %659
  br i1 %660, label %665, label %661

661:                                              ; preds = %655
  %662 = load i64, ptr %37, align 8, !tbaa !9
  %663 = load i64, ptr %50, align 8, !tbaa !9
  %664 = icmp eq i64 %662, %663
  br i1 %664, label %665, label %973

665:                                              ; preds = %661, %655
  %666 = load i64, ptr %37, align 8, !tbaa !9
  %667 = load i64, ptr %50, align 8, !tbaa !9
  %668 = icmp slt i64 %666, %667
  br i1 %668, label %669, label %674

669:                                              ; preds = %665
  %670 = load i64, ptr %37, align 8, !tbaa !9
  %671 = load i64, ptr %62, align 8, !tbaa !9
  %672 = sub nsw i64 %670, %671
  %673 = add nsw i64 %672, 1
  store i64 %673, ptr %61, align 8, !tbaa !9
  br label %785

674:                                              ; preds = %665
  %675 = load ptr, ptr %20, align 8, !tbaa !5
  %676 = load i64, ptr %37, align 8, !tbaa !9
  %677 = getelementptr inbounds float, ptr %675, i64 %676
  %678 = load float, ptr %677, align 4, !tbaa !11
  store float %678, ptr %36, align 4, !tbaa !11
  %679 = load float, ptr %36, align 4, !tbaa !11
  %680 = fcmp oge float %679, 0.000000e+00
  br i1 %680, label %681, label %683

681:                                              ; preds = %674
  %682 = load float, ptr %36, align 4, !tbaa !11
  br label %686

683:                                              ; preds = %674
  %684 = load float, ptr %36, align 4, !tbaa !11
  %685 = fneg float %684
  br label %686

686:                                              ; preds = %683, %681
  %687 = phi float [ %682, %681 ], [ %685, %683 ]
  %688 = fpext float %687 to double
  %689 = load float, ptr %51, align 4, !tbaa !11
  %690 = fpext float %689 to double
  %691 = fcmp oge double %688, %690
  br i1 %691, label %692, label %698

692:                                              ; preds = %686
  %693 = load ptr, ptr %18, align 8, !tbaa !5
  %694 = load i64, ptr %693, align 8, !tbaa !9
  %695 = load i64, ptr %62, align 8, !tbaa !9
  %696 = sub nsw i64 %694, %695
  %697 = add nsw i64 %696, 1
  store i64 %697, ptr %61, align 8, !tbaa !9
  br label %784

698:                                              ; preds = %686
  %699 = load i64, ptr %37, align 8, !tbaa !9
  %700 = load i64, ptr %62, align 8, !tbaa !9
  %701 = sub nsw i64 %699, %700
  %702 = add nsw i64 %701, 1
  store i64 %702, ptr %61, align 8, !tbaa !9
  %703 = load i64, ptr %64, align 8, !tbaa !9
  %704 = icmp eq i64 %703, 2
  br i1 %704, label %705, label %730

705:                                              ; preds = %698
  %706 = load ptr, ptr %19, align 8, !tbaa !5
  %707 = load ptr, ptr %18, align 8, !tbaa !5
  %708 = load i64, ptr %707, align 8, !tbaa !9
  %709 = getelementptr inbounds float, ptr %706, i64 %708
  %710 = call double @r_sign(ptr noundef @c_b15, ptr noundef %709)
  %711 = fptrunc double %710 to float
  %712 = load ptr, ptr %21, align 8, !tbaa !5
  %713 = load ptr, ptr %18, align 8, !tbaa !5
  %714 = load i64, ptr %713, align 8, !tbaa !9
  %715 = load ptr, ptr %18, align 8, !tbaa !5
  %716 = load i64, ptr %715, align 8, !tbaa !9
  %717 = load i64, ptr %30, align 8, !tbaa !9
  %718 = mul nsw i64 %716, %717
  %719 = add nsw i64 %714, %718
  %720 = getelementptr inbounds float, ptr %712, i64 %719
  store float %711, ptr %720, align 4, !tbaa !11
  %721 = load ptr, ptr %23, align 8, !tbaa !5
  %722 = load ptr, ptr %18, align 8, !tbaa !5
  %723 = load i64, ptr %722, align 8, !tbaa !9
  %724 = load ptr, ptr %18, align 8, !tbaa !5
  %725 = load i64, ptr %724, align 8, !tbaa !9
  %726 = load i64, ptr %32, align 8, !tbaa !9
  %727 = mul nsw i64 %725, %726
  %728 = add nsw i64 %723, %727
  %729 = getelementptr inbounds float, ptr %721, i64 %728
  store float 1.000000e+00, ptr %729, align 4, !tbaa !11
  br label %763

730:                                              ; preds = %698
  %731 = load i64, ptr %64, align 8, !tbaa !9
  %732 = icmp eq i64 %731, 1
  br i1 %732, label %733, label %762

733:                                              ; preds = %730
  %734 = load ptr, ptr %19, align 8, !tbaa !5
  %735 = load ptr, ptr %18, align 8, !tbaa !5
  %736 = load i64, ptr %735, align 8, !tbaa !9
  %737 = getelementptr inbounds float, ptr %734, i64 %736
  %738 = call double @r_sign(ptr noundef @c_b15, ptr noundef %737)
  %739 = fptrunc double %738 to float
  %740 = load ptr, ptr %25, align 8, !tbaa !5
  %741 = load ptr, ptr %18, align 8, !tbaa !5
  %742 = load i64, ptr %741, align 8, !tbaa !9
  %743 = load i64, ptr %68, align 8, !tbaa !9
  %744 = sub nsw i64 %743, 1
  %745 = load ptr, ptr %18, align 8, !tbaa !5
  %746 = load i64, ptr %745, align 8, !tbaa !9
  %747 = mul nsw i64 %744, %746
  %748 = add nsw i64 %742, %747
  %749 = getelementptr inbounds float, ptr %740, i64 %748
  store float %739, ptr %749, align 4, !tbaa !11
  %750 = load ptr, ptr %25, align 8, !tbaa !5
  %751 = load ptr, ptr %18, align 8, !tbaa !5
  %752 = load i64, ptr %751, align 8, !tbaa !9
  %753 = load i64, ptr %69, align 8, !tbaa !9
  %754 = load i64, ptr %68, align 8, !tbaa !9
  %755 = add nsw i64 %753, %754
  %756 = sub nsw i64 %755, 1
  %757 = load ptr, ptr %18, align 8, !tbaa !5
  %758 = load i64, ptr %757, align 8, !tbaa !9
  %759 = mul nsw i64 %756, %758
  %760 = add nsw i64 %752, %759
  %761 = getelementptr inbounds float, ptr %750, i64 %760
  store float 1.000000e+00, ptr %761, align 4, !tbaa !11
  br label %762

762:                                              ; preds = %733, %730
  br label %763

763:                                              ; preds = %762, %705
  %764 = load ptr, ptr %19, align 8, !tbaa !5
  %765 = load ptr, ptr %18, align 8, !tbaa !5
  %766 = load i64, ptr %765, align 8, !tbaa !9
  %767 = getelementptr inbounds float, ptr %764, i64 %766
  %768 = load float, ptr %767, align 4, !tbaa !11
  store float %768, ptr %36, align 4, !tbaa !11
  %769 = load float, ptr %36, align 4, !tbaa !11
  %770 = fcmp oge float %769, 0.000000e+00
  br i1 %770, label %771, label %773

771:                                              ; preds = %763
  %772 = load float, ptr %36, align 4, !tbaa !11
  br label %776

773:                                              ; preds = %763
  %774 = load float, ptr %36, align 4, !tbaa !11
  %775 = fneg float %774
  br label %776

776:                                              ; preds = %773, %771
  %777 = phi float [ %772, %771 ], [ %775, %773 ]
  %778 = fpext float %777 to double
  %779 = fptrunc double %778 to float
  %780 = load ptr, ptr %19, align 8, !tbaa !5
  %781 = load ptr, ptr %18, align 8, !tbaa !5
  %782 = load i64, ptr %781, align 8, !tbaa !9
  %783 = getelementptr inbounds float, ptr %780, i64 %782
  store float %779, ptr %783, align 4, !tbaa !11
  br label %784

784:                                              ; preds = %776, %692
  br label %785

785:                                              ; preds = %784, %669
  %786 = load i64, ptr %64, align 8, !tbaa !9
  %787 = icmp eq i64 %786, 2
  br i1 %787, label %788, label %818

788:                                              ; preds = %785
  %789 = load ptr, ptr %19, align 8, !tbaa !5
  %790 = load i64, ptr %62, align 8, !tbaa !9
  %791 = getelementptr inbounds float, ptr %789, i64 %790
  %792 = load ptr, ptr %20, align 8, !tbaa !5
  %793 = load i64, ptr %62, align 8, !tbaa !9
  %794 = getelementptr inbounds float, ptr %792, i64 %793
  %795 = load ptr, ptr %21, align 8, !tbaa !5
  %796 = load i64, ptr %62, align 8, !tbaa !9
  %797 = load i64, ptr %62, align 8, !tbaa !9
  %798 = load i64, ptr %30, align 8, !tbaa !9
  %799 = mul nsw i64 %797, %798
  %800 = add nsw i64 %796, %799
  %801 = getelementptr inbounds float, ptr %795, i64 %800
  %802 = load ptr, ptr %22, align 8, !tbaa !5
  %803 = load ptr, ptr %23, align 8, !tbaa !5
  %804 = load i64, ptr %62, align 8, !tbaa !9
  %805 = load i64, ptr %62, align 8, !tbaa !9
  %806 = load i64, ptr %32, align 8, !tbaa !9
  %807 = mul nsw i64 %805, %806
  %808 = add nsw i64 %804, %807
  %809 = getelementptr inbounds float, ptr %803, i64 %808
  %810 = load ptr, ptr %24, align 8, !tbaa !5
  %811 = load ptr, ptr %28, align 8, !tbaa !5
  %812 = getelementptr inbounds i64, ptr %811, i64 1
  %813 = load ptr, ptr %27, align 8, !tbaa !5
  %814 = load i64, ptr %70, align 8, !tbaa !9
  %815 = getelementptr inbounds float, ptr %813, i64 %814
  %816 = load ptr, ptr %29, align 8, !tbaa !5
  %817 = call i32 @slasd0_(ptr noundef %61, ptr noundef %58, ptr noundef %791, ptr noundef %794, ptr noundef %801, ptr noundef %802, ptr noundef %809, ptr noundef %810, ptr noundef %69, ptr noundef %812, ptr noundef %815, ptr noundef %816)
  br label %970

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

968:                                              ; preds = %818
  store i32 0, ptr %15, align 4
  store i32 1, ptr %72, align 4
  br label %1130

969:                                              ; preds = %818
  br label %970

970:                                              ; preds = %969, %788
  %971 = load i64, ptr %37, align 8, !tbaa !9
  %972 = add nsw i64 %971, 1
  store i64 %972, ptr %62, align 8, !tbaa !9
  br label %973

973:                                              ; preds = %970, %661
  br label %974

974:                                              ; preds = %973
  %975 = load i64, ptr %37, align 8, !tbaa !9
  %976 = add nsw i64 %975, 1
  store i64 %976, ptr %37, align 8, !tbaa !9
  br label %639, !llvm.loop !16

977:                                              ; preds = %639
  %978 = load ptr, ptr %18, align 8, !tbaa !5
  %979 = load ptr, ptr %19, align 8, !tbaa !5
  %980 = getelementptr inbounds float, ptr %979, i64 1
  %981 = load ptr, ptr %18, align 8, !tbaa !5
  %982 = call i32 @slascl_(ptr noundef @.str.9, ptr noundef @c__0, ptr noundef @c__0, ptr noundef @c_b15, ptr noundef %65, ptr noundef %978, ptr noundef @c__1, ptr noundef %980, ptr noundef %981, ptr noundef %55)
  br label %983

983:                                              ; preds = %977, %514, %367
  %984 = load ptr, ptr %18, align 8, !tbaa !5
  %985 = load i64, ptr %984, align 8, !tbaa !9
  store i64 %985, ptr %34, align 8, !tbaa !9
  store i64 2, ptr %44, align 8, !tbaa !9
  br label %986

986:                                              ; preds = %1089, %983
  %987 = load i64, ptr %44, align 8, !tbaa !9
  %988 = load i64, ptr %34, align 8, !tbaa !9
  %989 = icmp sle i64 %987, %988
  br i1 %989, label %990, label %1092

990:                                              ; preds = %986
  %991 = load i64, ptr %44, align 8, !tbaa !9
  %992 = sub nsw i64 %991, 1
  store i64 %992, ptr %37, align 8, !tbaa !9
  %993 = load i64, ptr %37, align 8, !tbaa !9
  store i64 %993, ptr %45, align 8, !tbaa !9
  %994 = load ptr, ptr %19, align 8, !tbaa !5
  %995 = load i64, ptr %37, align 8, !tbaa !9
  %996 = getelementptr inbounds float, ptr %994, i64 %995
  %997 = load float, ptr %996, align 4, !tbaa !11
  store float %997, ptr %40, align 4, !tbaa !11
  %998 = load ptr, ptr %18, align 8, !tbaa !5
  %999 = load i64, ptr %998, align 8, !tbaa !9
  store i64 %999, ptr %35, align 8, !tbaa !9
  %1000 = load i64, ptr %44, align 8, !tbaa !9
  store i64 %1000, ptr %38, align 8, !tbaa !9
  br label %1001

1001:                                             ; preds = %1019, %990
  %1002 = load i64, ptr %38, align 8, !tbaa !9
  %1003 = load i64, ptr %35, align 8, !tbaa !9
  %1004 = icmp sle i64 %1002, %1003
  br i1 %1004, label %1005, label %1022

1005:                                             ; preds = %1001
  %1006 = load ptr, ptr %19, align 8, !tbaa !5
  %1007 = load i64, ptr %38, align 8, !tbaa !9
  %1008 = getelementptr inbounds float, ptr %1006, i64 %1007
  %1009 = load float, ptr %1008, align 4, !tbaa !11
  %1010 = load float, ptr %40, align 4, !tbaa !11
  %1011 = fcmp ogt float %1009, %1010
  br i1 %1011, label %1012, label %1018

1012:                                             ; preds = %1005
  %1013 = load i64, ptr %38, align 8, !tbaa !9
  store i64 %1013, ptr %45, align 8, !tbaa !9
  %1014 = load ptr, ptr %19, align 8, !tbaa !5
  %1015 = load i64, ptr %38, align 8, !tbaa !9
  %1016 = getelementptr inbounds float, ptr %1014, i64 %1015
  %1017 = load float, ptr %1016, align 4, !tbaa !11
  store float %1017, ptr %40, align 4, !tbaa !11
  br label %1018

1018:                                             ; preds = %1012, %1005
  br label %1019

1019:                                             ; preds = %1018
  %1020 = load i64, ptr %38, align 8, !tbaa !9
  %1021 = add nsw i64 %1020, 1
  store i64 %1021, ptr %38, align 8, !tbaa !9
  br label %1001, !llvm.loop !17

1022:                                             ; preds = %1001
  %1023 = load i64, ptr %45, align 8, !tbaa !9
  %1024 = load i64, ptr %37, align 8, !tbaa !9
  %1025 = icmp ne i64 %1023, %1024
  br i1 %1025, label %1026, label %1079

1026:                                             ; preds = %1022
  %1027 = load ptr, ptr %19, align 8, !tbaa !5
  %1028 = load i64, ptr %37, align 8, !tbaa !9
  %1029 = getelementptr inbounds float, ptr %1027, i64 %1028
  %1030 = load float, ptr %1029, align 4, !tbaa !11
  %1031 = load ptr, ptr %19, align 8, !tbaa !5
  %1032 = load i64, ptr %45, align 8, !tbaa !9
  %1033 = getelementptr inbounds float, ptr %1031, i64 %1032
  store float %1030, ptr %1033, align 4, !tbaa !11
  %1034 = load float, ptr %40, align 4, !tbaa !11
  %1035 = load ptr, ptr %19, align 8, !tbaa !5
  %1036 = load i64, ptr %37, align 8, !tbaa !9
  %1037 = getelementptr inbounds float, ptr %1035, i64 %1036
  store float %1034, ptr %1037, align 4, !tbaa !11
  %1038 = load i64, ptr %64, align 8, !tbaa !9
  %1039 = icmp eq i64 %1038, 1
  br i1 %1039, label %1040, label %1045

1040:                                             ; preds = %1026
  %1041 = load i64, ptr %45, align 8, !tbaa !9
  %1042 = load ptr, ptr %26, align 8, !tbaa !5
  %1043 = load i64, ptr %37, align 8, !tbaa !9
  %1044 = getelementptr inbounds i64, ptr %1042, i64 %1043
  store i64 %1041, ptr %1044, align 8, !tbaa !9
  br label %1078

1045:                                             ; preds = %1026
  %1046 = load i64, ptr %64, align 8, !tbaa !9
  %1047 = icmp eq i64 %1046, 2
  br i1 %1047, label %1048, label %1077

1048:                                             ; preds = %1045
  %1049 = load ptr, ptr %18, align 8, !tbaa !5
  %1050 = load ptr, ptr %21, align 8, !tbaa !5
  %1051 = load i64, ptr %37, align 8, !tbaa !9
  %1052 = load i64, ptr %30, align 8, !tbaa !9
  %1053 = mul nsw i64 %1051, %1052
  %1054 = add nsw i64 %1053, 1
  %1055 = getelementptr inbounds float, ptr %1050, i64 %1054
  %1056 = load ptr, ptr %21, align 8, !tbaa !5
  %1057 = load i64, ptr %45, align 8, !tbaa !9
  %1058 = load i64, ptr %30, align 8, !tbaa !9
  %1059 = mul nsw i64 %1057, %1058
  %1060 = add nsw i64 %1059, 1
  %1061 = getelementptr inbounds float, ptr %1056, i64 %1060
  %1062 = call i32 @f2c_sswap(ptr noundef %1049, ptr noundef %1055, ptr noundef @c__1, ptr noundef %1061, ptr noundef @c__1)
  %1063 = load ptr, ptr %18, align 8, !tbaa !5
  %1064 = load ptr, ptr %23, align 8, !tbaa !5
  %1065 = load i64, ptr %37, align 8, !tbaa !9
  %1066 = load i64, ptr %32, align 8, !tbaa !9
  %1067 = add nsw i64 %1065, %1066
  %1068 = getelementptr inbounds float, ptr %1064, i64 %1067
  %1069 = load ptr, ptr %24, align 8, !tbaa !5
  %1070 = load ptr, ptr %23, align 8, !tbaa !5
  %1071 = load i64, ptr %45, align 8, !tbaa !9
  %1072 = load i64, ptr %32, align 8, !tbaa !9
  %1073 = add nsw i64 %1071, %1072
  %1074 = getelementptr inbounds float, ptr %1070, i64 %1073
  %1075 = load ptr, ptr %24, align 8, !tbaa !5
  %1076 = call i32 @f2c_sswap(ptr noundef %1063, ptr noundef %1068, ptr noundef %1069, ptr noundef %1074, ptr noundef %1075)
  br label %1077

1077:                                             ; preds = %1048, %1045
  br label %1078

1078:                                             ; preds = %1077, %1040
  br label %1088

1079:                                             ; preds = %1022
  %1080 = load i64, ptr %64, align 8, !tbaa !9
  %1081 = icmp eq i64 %1080, 1
  br i1 %1081, label %1082, label %1087

1082:                                             ; preds = %1079
  %1083 = load i64, ptr %37, align 8, !tbaa !9
  %1084 = load ptr, ptr %26, align 8, !tbaa !5
  %1085 = load i64, ptr %37, align 8, !tbaa !9
  %1086 = getelementptr inbounds i64, ptr %1084, i64 %1085
  store i64 %1083, ptr %1086, align 8, !tbaa !9
  br label %1087

1087:                                             ; preds = %1082, %1079
  br label %1088

1088:                                             ; preds = %1087, %1078
  br label %1089

1089:                                             ; preds = %1088
  %1090 = load i64, ptr %44, align 8, !tbaa !9
  %1091 = add nsw i64 %1090, 1
  store i64 %1091, ptr %44, align 8, !tbaa !9
  br label %986, !llvm.loop !18

1092:                                             ; preds = %986
  %1093 = load i64, ptr %64, align 8, !tbaa !9
  %1094 = icmp eq i64 %1093, 1
  br i1 %1094, label %1095, label %1109

1095:                                             ; preds = %1092
  %1096 = load i64, ptr %60, align 8, !tbaa !9
  %1097 = icmp eq i64 %1096, 1
  br i1 %1097, label %1098, label %1103

1098:                                             ; preds = %1095
  %1099 = load ptr, ptr %26, align 8, !tbaa !5
  %1100 = load ptr, ptr %18, align 8, !tbaa !5
  %1101 = load i64, ptr %1100, align 8, !tbaa !9
  %1102 = getelementptr inbounds i64, ptr %1099, i64 %1101
  store i64 1, ptr %1102, align 8, !tbaa !9
  br label %1108

1103:                                             ; preds = %1095
  %1104 = load ptr, ptr %26, align 8, !tbaa !5
  %1105 = load ptr, ptr %18, align 8, !tbaa !5
  %1106 = load i64, ptr %1105, align 8, !tbaa !9
  %1107 = getelementptr inbounds i64, ptr %1104, i64 %1106
  store i64 0, ptr %1107, align 8, !tbaa !9
  br label %1108

1108:                                             ; preds = %1103, %1098
  br label %1109

1109:                                             ; preds = %1108, %1092
  %1110 = load i64, ptr %60, align 8, !tbaa !9
  %1111 = icmp eq i64 %1110, 2
  br i1 %1111, label %1112, label %1129

1112:                                             ; preds = %1109
  %1113 = load i64, ptr %64, align 8, !tbaa !9
  %1114 = icmp eq i64 %1113, 2
  br i1 %1114, label %1115, label %1129

1115:                                             ; preds = %1112
  %1116 = load ptr, ptr %18, align 8, !tbaa !5
  %1117 = load ptr, ptr %18, align 8, !tbaa !5
  %1118 = load ptr, ptr %27, align 8, !tbaa !5
  %1119 = getelementptr inbounds float, ptr %1118, i64 1
  %1120 = load ptr, ptr %27, align 8, !tbaa !5
  %1121 = load ptr, ptr %18, align 8, !tbaa !5
  %1122 = load i64, ptr %1121, align 8, !tbaa !9
  %1123 = getelementptr inbounds float, ptr %1120, i64 %1122
  %1124 = load ptr, ptr %21, align 8, !tbaa !5
  %1125 = load i64, ptr %31, align 8, !tbaa !9
  %1126 = getelementptr inbounds float, ptr %1124, i64 %1125
  %1127 = load ptr, ptr %22, align 8, !tbaa !5
  %1128 = call i32 @slasr_(ptr noundef @.str.1, ptr noundef @.str.11, ptr noundef @.str.12, ptr noundef %1116, ptr noundef %1117, ptr noundef %1119, ptr noundef %1123, ptr noundef %1126, ptr noundef %1127)
  br label %1129

1129:                                             ; preds = %1115, %1112, %1109
  store i32 0, ptr %15, align 4
  store i32 1, ptr %72, align 4
  br label %1130

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

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

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

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

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

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

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

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

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

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

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

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

declare double @slamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

82:                                               ; preds = %75
  %83 = tail call double @r_sign(ptr noundef nonnull @c_b15, ptr noundef %3) #4
  %84 = fptrunc double %83 to float
  store float %84, ptr %5, align 4, !tbaa !9
  br label %.sink.split

.sink.split:                                      ; preds = %76, %82
  %.sink526 = phi ptr [ %7, %82 ], [ %81, %76 ]
  store float 1.000000e+00, ptr %.sink526, align 4, !tbaa !9
  br label %85

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

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

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

98:                                               ; preds = %92, %90
  br i1 %.not457, label %99, label %.loopexit

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

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

117:                                              ; preds = %.lr.ph
  %118 = load i64, ptr %2, align 8, !tbaa !5
  %119 = getelementptr float, ptr %35, i64 %.0439483
  %.idx471 = shl i64 %118, 3
  %120 = getelementptr i8, ptr %119, i64 %.idx471
  store float %113, ptr %120, align 4, !tbaa !9
  %.idx472 = mul i64 %118, 12
  %121 = getelementptr i8, ptr %119, i64 %.idx472
  store float %108, ptr %121, align 4, !tbaa !9
  br label %128

122:                                              ; preds = %.lr.ph
  %123 = getelementptr inbounds float, ptr %37, i64 %.0439483
  store float %113, ptr %123, align 4, !tbaa !9
  %124 = fneg float %108
  %125 = load i64, ptr %19, align 8, !tbaa !5
  %126 = getelementptr float, ptr %37, i64 %125
  %127 = getelementptr float, ptr %126, i64 %.0439483
  store float %124, ptr %127, align 4, !tbaa !9
  br label %128

128:                                              ; preds = %.lr.ph, %117, %122
  %129 = load i64, ptr %15, align 8, !tbaa !5
  %.not462.not = icmp slt i64 %.0439483, %129
  br i1 %.not462.not, label %.lr.ph, label %.loopexit, !llvm.loop !11

.loopexit:                                        ; preds = %128, %99, %98
  %.0419 = phi i64 [ 3, %98 ], [ 5, %99 ], [ 5, %128 ]
  %.0418 = phi i64 [ 1, %98 ], [ %102, %99 ], [ %102, %128 ]
  %130 = load i64, ptr %24, align 8, !tbaa !5
  %131 = icmp eq i64 %130, 0
  br i1 %131, label %132, label %135

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

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

138:                                              ; preds = %135
  switch i64 %130, label %326 [
    i64 2, label %139
    i64 1, label %144
  ]

139:                                              ; preds = %138
  %140 = call i32 @slaset_(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
  %141 = call i32 @slaset_(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
  %142 = getelementptr inbounds float, ptr %37, i64 %.0418
  %143 = call i32 @slasdq_(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 %142, ptr noundef nonnull %13) #4
  br label %thread-pre-split

144:                                              ; preds = %138
  %145 = add nsw i64 %.0419, -1
  %146 = mul nsw i64 %136, %145
  %147 = getelementptr float, ptr %9, i64 %146
  %148 = call i32 @slaset_(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 %147, ptr noundef nonnull %2) #4
  %149 = load i64, ptr %2, align 8, !tbaa !5
  %150 = mul nsw i64 %149, %145
  %151 = getelementptr float, ptr %9, i64 %136
  %152 = getelementptr float, ptr %151, i64 %150
  %153 = call i32 @slaset_(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 %152, ptr noundef nonnull %2) #4
  %154 = load i64, ptr %2, align 8, !tbaa !5
  %155 = mul nsw i64 %154, %145
  %156 = getelementptr float, ptr %151, i64 %155
  %157 = getelementptr float, ptr %9, i64 %155
  %158 = getelementptr inbounds float, ptr %37, i64 %.0418
  %159 = call i32 @slasdq_(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 %156, ptr noundef nonnull %2, ptr noundef %157, ptr noundef nonnull %2, ptr noundef %157, ptr noundef nonnull %2, ptr noundef nonnull %158, ptr noundef nonnull %13) #4
  br label %thread-pre-split

160:                                              ; preds = %135
  %161 = icmp eq i64 %130, 2
  br i1 %161, label %162, label %165

162:                                              ; preds = %160
  %163 = call i32 @slaset_(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
  %164 = call i32 @slaset_(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 %165

165:                                              ; preds = %162, %160
  %166 = call double @slanst_(ptr noundef nonnull @.str.8, ptr noundef nonnull %2, ptr noundef %3, ptr noundef %4) #4
  %167 = fptrunc double %166 to float
  store float %167, ptr %25, align 4, !tbaa !9
  %168 = fcmp oeq float %167, 0.000000e+00
  br i1 %168, label %.thread478, label %169

169:                                              ; preds = %165
  %170 = call i32 @slascl_(ptr noundef nonnull @.str.9, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %25, ptr noundef nonnull @c_b15, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef %3, ptr noundef nonnull %2, ptr noundef nonnull %21) #4
  %171 = call i32 @slascl_(ptr noundef nonnull @.str.9, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %25, ptr noundef nonnull @c_b15, ptr noundef nonnull %19, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef nonnull %19, ptr noundef nonnull %21) #4
  %172 = call double @slamch_(ptr noundef nonnull @.str.10) #4
  %173 = fptrunc double %172 to float
  store float %173, ptr %20, align 4, !tbaa !9
  %174 = load i64, ptr %2, align 8, !tbaa !5
  %175 = sitofp i64 %174 to float
  %176 = load i64, ptr %26, align 8, !tbaa !5
  %177 = add nsw i64 %176, 1
  %178 = sitofp i64 %177 to float
  %179 = fdiv float %175, %178
  %180 = fpext float %179 to double
  %181 = call double @log(double noundef %180) #4
  %182 = load i64, ptr %26, align 8, !tbaa !5
  %183 = add nsw i64 %182, 1
  %184 = load i64, ptr %24, align 8, !tbaa !5
  %185 = icmp eq i64 %184, 1
  br i1 %185, label %186, label %199

186:                                              ; preds = %169
  %187 = fdiv double %181, 0x3FE62E42FEFA39EF
  %188 = fptosi double %187 to i64
  %189 = add nsw i64 %188, 1
  %190 = shl nsw i64 %183, 1
  %191 = add nsw i64 %190, %189
  %192 = shl i64 %189, 1
  %193 = add nsw i64 %191, %192
  %194 = add nsw i64 %193, %189
  %195 = add nsw i64 %194, 1
  %196 = add nsw i64 %194, 2
  %197 = add nsw i64 %196, %192
  %198 = add nsw i64 %188, 4
  br label %199

199:                                              ; preds = %186, %169
  %.0435 = phi i64 [ %193, %186 ], [ undef, %169 ]
  %.0434 = phi i64 [ %194, %186 ], [ undef, %169 ]
  %.0430 = phi i64 [ %195, %186 ], [ undef, %169 ]
  %.0427 = phi i64 [ %190, %186 ], [ undef, %169 ]
  %.0426 = phi i64 [ %191, %186 ], [ undef, %169 ]
  %.0425 = phi i64 [ %196, %186 ], [ undef, %169 ]
  %.0421 = phi i64 [ %198, %186 ], [ undef, %169 ]
  %.0420 = phi i64 [ %197, %186 ], [ undef, %169 ]
  %200 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %200, ptr %15, align 8, !tbaa !5
  %.not464484 = icmp slt i64 %200, 1
  br i1 %.not464484, label %._crit_edge, label %.lr.ph486

.lr.ph486:                                        ; preds = %199, %212
  %201 = phi i64 [ %213, %212 ], [ %200, %199 ]
  %.1440485 = phi i64 [ %214, %212 ], [ 1, %199 ]
  %202 = getelementptr inbounds float, ptr %27, i64 %.1440485
  %203 = load float, ptr %202, align 4, !tbaa !9
  %204 = fcmp oge float %203, 0.000000e+00
  %205 = fneg float %203
  %206 = select i1 %204, float %203, float %205
  %207 = load float, ptr %20, align 4, !tbaa !9
  %208 = fcmp olt float %206, %207
  br i1 %208, label %209, label %212

209:                                              ; preds = %.lr.ph486
  %210 = call double @r_sign(ptr noundef nonnull %20, ptr noundef nonnull %202) #4
  %211 = fptrunc double %210 to float
  store float %211, ptr %202, align 4, !tbaa !9
  %.pre = load i64, ptr %15, align 8, !tbaa !5
  br label %212

212:                                              ; preds = %.lr.ph486, %209
  %213 = phi i64 [ %201, %.lr.ph486 ], [ %.pre, %209 ]
  %214 = add nuw nsw i64 %.1440485, 1
  %.not464.not = icmp slt i64 %.1440485, %213
  br i1 %.not464.not, label %.lr.ph486, label %._crit_edge, !llvm.loop !13

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

.lr.ph492:                                        ; preds = %._crit_edge
  %216 = add i64 %29, 1
  %217 = add i64 %32, 1
  %218 = add nsw i64 %.0419, -1
  %219 = add nsw i64 %.0419, -2
  %220 = add i64 %219, %183
  %221 = add i64 %219, %.0427
  %222 = add i64 %219, %.0426
  %223 = add i64 %219, %.0435
  %224 = add i64 %219, %.0425
  %225 = add i64 %219, %.0420
  %226 = add i64 %219, %.0434
  %227 = add i64 %219, %.0430
  %228 = getelementptr inbounds float, ptr %37, i64 %.0418
  br label %229

229:                                              ; preds = %.lr.ph492, %323
  %230 = phi i64 [ %215, %.lr.ph492 ], [ %324, %323 ]
  %.0422.neg490 = phi i64 [ -1, %.lr.ph492 ], [ %.0422.neg, %323 ]
  %.0422489 = phi i64 [ 1, %.lr.ph492 ], [ %.1, %323 ]
  %.2488 = phi i64 [ 1, %.lr.ph492 ], [ %.pre-phi, %323 ]
  %231 = getelementptr inbounds float, ptr %28, i64 %.2488
  %232 = load float, ptr %231, align 4, !tbaa !9
  %233 = fcmp oge float %232, 0.000000e+00
  %234 = fneg float %232
  %235 = select i1 %233, float %232, float %234
  %236 = load float, ptr %20, align 4, !tbaa !9
  %237 = fcmp olt float %235, %236
  %238 = load i64, ptr %19, align 8
  %239 = icmp eq i64 %.2488, %238
  %or.cond475 = select i1 %237, i1 true, i1 %239
  br i1 %or.cond475, label %240, label %._crit_edge517

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

240:                                              ; preds = %229
  %241 = icmp slt i64 %.2488, %238
  br i1 %241, label %242, label %245

242:                                              ; preds = %240
  %243 = add nuw nsw i64 %.2488, 1
  %244 = add i64 %243, %.0422.neg490
  store i64 %244, ptr %23, align 8, !tbaa !5
  br label %281

245:                                              ; preds = %240
  %246 = fcmp ult float %235, %236
  br i1 %246, label %251, label %247

247:                                              ; preds = %245
  %248 = load i64, ptr %2, align 8, !tbaa !5
  %249 = add i64 %.0422.neg490, 1
  %250 = add i64 %249, %248
  store i64 %250, ptr %23, align 8, !tbaa !5
  br label %281

251:                                              ; preds = %245
  %252 = add nuw i64 %.2488, 1
  %253 = add i64 %252, %.0422.neg490
  store i64 %253, ptr %23, align 8, !tbaa !5
  %254 = load i64, ptr %24, align 8, !tbaa !5
  %.pre514 = load i64, ptr %2, align 8, !tbaa !5
  switch i64 %254, label %._crit_edge513 [
    i64 2, label %255
    i64 1, label %264
  ]

255:                                              ; preds = %251
  %256 = getelementptr inbounds float, ptr %27, i64 %.pre514
  %257 = call double @r_sign(ptr noundef nonnull @c_b15, ptr noundef nonnull %256) #4
  %258 = fptrunc double %257 to float
  %259 = load i64, ptr %2, align 8, !tbaa !5
  %260 = mul i64 %259, %216
  %261 = getelementptr inbounds float, ptr %31, i64 %260
  store float %258, ptr %261, align 4, !tbaa !9
  %262 = mul i64 %259, %217
  %263 = getelementptr inbounds float, ptr %34, i64 %262
  br label %._crit_edge513.sink.split

264:                                              ; preds = %251
  %265 = getelementptr inbounds float, ptr %27, i64 %.pre514
  %266 = call double @r_sign(ptr noundef nonnull @c_b15, ptr noundef nonnull %265) #4
  %267 = fptrunc double %266 to float
  %268 = load i64, ptr %2, align 8, !tbaa !5
  %269 = mul i64 %268, %.0419
  %270 = getelementptr inbounds float, ptr %35, i64 %269
  store float %267, ptr %270, align 4, !tbaa !9
  %271 = load i64, ptr %26, align 8, !tbaa !5
  %272 = add nsw i64 %271, %.0419
  %273 = mul i64 %272, %268
  %274 = getelementptr inbounds float, ptr %35, i64 %273
  br label %._crit_edge513.sink.split

._crit_edge513.sink.split:                        ; preds = %255, %264
  %.sink528 = phi ptr [ %274, %264 ], [ %263, %255 ]
  %.ph527 = phi i64 [ %268, %264 ], [ %259, %255 ]
  store float 1.000000e+00, ptr %.sink528, align 4, !tbaa !9
  br label %._crit_edge513

._crit_edge513:                                   ; preds = %._crit_edge513.sink.split, %251
  %275 = phi i64 [ %.pre514, %251 ], [ %.ph527, %._crit_edge513.sink.split ]
  %276 = getelementptr inbounds float, ptr %27, i64 %275
  %277 = load float, ptr %276, align 4, !tbaa !9
  %278 = fcmp oge float %277, 0.000000e+00
  %279 = fneg float %277
  %280 = select i1 %278, float %277, float %279
  store float %280, ptr %276, align 4, !tbaa !9
  br label %281

281:                                              ; preds = %247, %._crit_edge513, %242
  %282 = load i64, ptr %24, align 8, !tbaa !5
  %283 = icmp eq i64 %282, 2
  %284 = getelementptr inbounds float, ptr %27, i64 %.0422489
  %285 = getelementptr inbounds float, ptr %28, i64 %.0422489
  br i1 %283, label %286, label %292

286:                                              ; preds = %281
  %287 = mul i64 %.0422489, %216
  %288 = getelementptr inbounds float, ptr %31, i64 %287
  %289 = mul i64 %.0422489, %217
  %290 = getelementptr inbounds float, ptr %34, i64 %289
  %291 = call i32 @slasd0_(ptr noundef nonnull %23, ptr noundef nonnull %22, ptr noundef nonnull %284, ptr noundef nonnull %285, ptr noundef %288, ptr noundef nonnull %6, ptr noundef %290, ptr noundef nonnull %8, ptr noundef nonnull %26, ptr noundef %12, ptr noundef nonnull %228, ptr noundef nonnull %13) #4
  br label %321

292:                                              ; preds = %281
  %293 = load i64, ptr %2, align 8, !tbaa !5
  %294 = mul nsw i64 %293, %218
  %295 = getelementptr float, ptr %35, i64 %.0422489
  %296 = getelementptr float, ptr %295, i64 %294
  %297 = mul nsw i64 %293, %220
  %298 = getelementptr float, ptr %295, i64 %297
  %299 = getelementptr i64, ptr %36, i64 %.0422489
  %300 = getelementptr i64, ptr %299, i64 %293
  %301 = mul nsw i64 %293, %221
  %302 = getelementptr float, ptr %295, i64 %301
  %303 = mul nsw i64 %293, %222
  %304 = getelementptr float, ptr %295, i64 %303
  %305 = mul nsw i64 %293, %223
  %306 = getelementptr float, ptr %295, i64 %305
  %307 = mul nsw i64 %293, %224
  %308 = getelementptr float, ptr %295, i64 %307
  %.idx = shl i64 %293, 4
  %309 = getelementptr i8, ptr %299, i64 %.idx
  %310 = mul nsw i64 %293, %.0421
  %311 = getelementptr i64, ptr %299, i64 %310
  %.idx466 = mul i64 %293, 24
  %312 = getelementptr i8, ptr %299, i64 %.idx466
  %313 = mul nsw i64 %293, %225
  %314 = getelementptr float, ptr %295, i64 %313
  %315 = mul nsw i64 %293, %226
  %316 = getelementptr float, ptr %295, i64 %315
  %317 = mul nsw i64 %293, %227
  %318 = getelementptr float, ptr %295, i64 %317
  %319 = call i32 @slasda_(ptr noundef nonnull %24, ptr noundef nonnull %26, ptr noundef nonnull %23, ptr noundef nonnull %22, ptr noundef nonnull %284, ptr noundef nonnull %285, ptr noundef %296, ptr noundef nonnull %2, ptr noundef %298, ptr noundef %300, ptr noundef %302, ptr noundef %304, ptr noundef %306, ptr noundef %308, ptr noundef %309, ptr noundef %311, ptr noundef nonnull %2, ptr noundef %312, ptr noundef %314, ptr noundef %316, ptr noundef %318, ptr noundef nonnull %228, ptr noundef %12, ptr noundef nonnull %13) #4
  %320 = load i64, ptr %13, align 8, !tbaa !5
  %.not467 = icmp eq i64 %320, 0
  br i1 %.not467, label %321, label %.thread478

321:                                              ; preds = %292, %286
  %322 = add nuw nsw i64 %.2488, 1
  %.pre515 = load i64, ptr %15, align 8, !tbaa !5
  br label %323

323:                                              ; preds = %._crit_edge517, %321
  %.pre-phi = phi i64 [ %.pre518, %._crit_edge517 ], [ %322, %321 ]
  %324 = phi i64 [ %230, %._crit_edge517 ], [ %.pre515, %321 ]
  %.1 = phi i64 [ %.0422489, %._crit_edge517 ], [ %322, %321 ]
  %.0422.neg = sub i64 0, %.1
  %.not465.not = icmp slt i64 %.2488, %324
  br i1 %.not465.not, label %229, label %._crit_edge493, !llvm.loop !14

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

thread-pre-split:                                 ; preds = %132, %._crit_edge493, %144, %139
  %.pr521 = load i64, ptr %2, align 8, !tbaa !5
  br label %326

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

.lr.ph511:                                        ; preds = %326, %351
  %328 = phi i64 [ %352, %351 ], [ %327, %326 ]
  %.0433509 = phi i64 [ %353, %351 ], [ 2, %326 ]
  %329 = add nsw i64 %.0433509, -1
  %330 = getelementptr inbounds float, ptr %27, i64 %329
  %331 = load float, ptr %330, align 4, !tbaa !9
  %332 = load i64, ptr %2, align 8, !tbaa !5
  %.not469494 = icmp sgt i64 %.0433509, %332
  br i1 %.not469494, label %._crit_edge500.thread, label %.lr.ph499

.lr.ph499:                                        ; preds = %.lr.ph511, %.lr.ph499
  %.0431497 = phi i64 [ %.1432, %.lr.ph499 ], [ %329, %.lr.ph511 ]
  %.0436496 = phi float [ %.1437, %.lr.ph499 ], [ %331, %.lr.ph511 ]
  %.0438495 = phi i64 [ %336, %.lr.ph499 ], [ %.0433509, %.lr.ph511 ]
  %333 = getelementptr inbounds float, ptr %27, i64 %.0438495
  %334 = load float, ptr %333, align 4, !tbaa !9
  %335 = fcmp ogt float %334, %.0436496
  %.1437 = select i1 %335, float %334, float %.0436496
  %.1432 = select i1 %335, i64 %.0438495, i64 %.0431497
  %336 = add nuw nsw i64 %.0438495, 1
  %.not469.not = icmp slt i64 %.0438495, %332
  br i1 %.not469.not, label %.lr.ph499, label %._crit_edge500, !llvm.loop !15

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

337:                                              ; preds = %._crit_edge500
  %338 = getelementptr inbounds float, ptr %27, i64 %.1432
  store float %331, ptr %338, align 4, !tbaa !9
  store float %.1437, ptr %330, align 4, !tbaa !9
  %339 = load i64, ptr %24, align 8, !tbaa !5
  switch i64 %339, label %351 [
    i64 1, label %340
    i64 2, label %342
  ]

340:                                              ; preds = %337
  %341 = getelementptr inbounds i64, ptr %36, i64 %329
  store i64 %.1432, ptr %341, align 8, !tbaa !5
  br label %351

342:                                              ; preds = %337
  %343 = mul nsw i64 %329, %29
  %gep = getelementptr float, ptr %invariant.gep, i64 %343
  %344 = mul nsw i64 %.1432, %29
  %gep503 = getelementptr float, ptr %invariant.gep, i64 %344
  %345 = call i32 @f2c_sswap(ptr noundef nonnull %2, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %gep503, ptr noundef nonnull @c__1) #4
  %gep505 = getelementptr float, ptr %invariant.gep504, i64 %329
  %gep507 = getelementptr float, ptr %invariant.gep504, i64 %.1432
  %346 = call i32 @f2c_sswap(ptr noundef nonnull %2, ptr noundef %gep505, ptr noundef nonnull %8, ptr noundef %gep507, ptr noundef nonnull %8) #4
  %.pre516 = load i64, ptr %15, align 8, !tbaa !5
  br label %351

._crit_edge500.thread:                            ; preds = %.lr.ph511, %._crit_edge500
  %347 = load i64, ptr %24, align 8, !tbaa !5
  %348 = icmp eq i64 %347, 1
  br i1 %348, label %349, label %351

349:                                              ; preds = %._crit_edge500.thread
  %350 = getelementptr inbounds i64, ptr %36, i64 %329
  store i64 %329, ptr %350, align 8, !tbaa !5
  br label %351

351:                                              ; preds = %337, %342, %340, %349, %._crit_edge500.thread
  %352 = phi i64 [ %328, %337 ], [ %.pre516, %342 ], [ %328, %340 ], [ %328, %349 ], [ %328, %._crit_edge500.thread ]
  %353 = add nuw nsw i64 %.0433509, 1
  %.not468.not = icmp slt i64 %.0433509, %352
  br i1 %.not468.not, label %.lr.ph511, label %._crit_edge512, !llvm.loop !16

._crit_edge512:                                   ; preds = %351, %326
  %354 = load i64, ptr %24, align 8
  %355 = icmp eq i64 %354, 1
  br i1 %355, label %356, label %362

356:                                              ; preds = %._crit_edge512
  %not..not457 = xor i1 %.not457, true
  %357 = select i1 %not..not457, i1 %.not, i1 false
  %358 = load i64, ptr %2, align 8, !tbaa !5
  %359 = getelementptr inbounds i64, ptr %36, i64 %358
  br i1 %357, label %360, label %361

360:                                              ; preds = %356
  store i64 1, ptr %359, align 8, !tbaa !5
  br label %.thread478

361:                                              ; preds = %356
  store i64 0, ptr %359, align 8, !tbaa !5
  br label %.thread478

362:                                              ; preds = %._crit_edge512
  %363 = icmp eq i64 %354, 2
  %or.cond = and i1 %.not457, %363
  br i1 %or.cond, label %364, label %.thread478

364:                                              ; preds = %362
  %365 = load i64, ptr %2, align 8, !tbaa !5
  %366 = getelementptr inbounds float, ptr %37, i64 %365
  %367 = call i32 @slasr_(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 %366, ptr noundef %5, ptr noundef nonnull %6) #4
  br label %.thread478

.thread478:                                       ; preds = %292, %361, %360, %362, %364, %165, %69, %85, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 8, ptr nonnull %15) #4
  ret i32 0
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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