; LLVM IR from OpenMathLib/OpenBLAS :: lapack-netlib/LAPACKE/src (lapacke_dgesvd_work)

; 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 [20 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @LAPACKE_dgesvd_work(i32 noundef %0, i8 noundef signext %1, i8 noundef signext %2, i32 noundef %3, i32 noundef %4, ptr noundef %5, i32 noundef %6, ptr noundef %7, ptr noundef %8, i32 noundef %9, ptr noundef %10, i32 noundef %11, ptr noundef %12, i32 noundef %13) #0 {
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i8, align 1
  %18 = alloca i8, align 1
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca ptr, align 8
  %22 = alloca i32, align 4
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca i32, align 4
  %26 = alloca ptr, align 8
  %27 = alloca i32, align 4
  %28 = alloca ptr, align 8
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca i32, align 4
  store i32 %0, ptr %16, align 4, !tbaa !5
  store i8 %1, ptr %17, align 1, !tbaa !9
  store i8 %2, ptr %18, align 1, !tbaa !9
  store i32 %3, ptr %19, align 4, !tbaa !5
  store i32 %4, ptr %20, align 4, !tbaa !5
  store ptr %5, ptr %21, align 8, !tbaa !10
  store i32 %6, ptr %22, align 4, !tbaa !5
  store ptr %7, ptr %23, align 8, !tbaa !10
  store ptr %8, ptr %24, align 8, !tbaa !10
  store i32 %9, ptr %25, align 4, !tbaa !5
  store ptr %10, ptr %26, align 8, !tbaa !10
  store i32 %11, ptr %27, align 4, !tbaa !5
  store ptr %12, ptr %28, align 8, !tbaa !10
  store i32 %13, ptr %29, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #6
  store i32 0, ptr %30, align 4, !tbaa !5
  %42 = load i32, ptr %16, align 4, !tbaa !5
  %43 = icmp eq i32 %42, 102
  br i1 %43, label %44, label %56

44:                                               ; preds = %14
  %45 = load ptr, ptr %21, align 8, !tbaa !10
  %46 = load ptr, ptr %23, align 8, !tbaa !10
  %47 = load ptr, ptr %24, align 8, !tbaa !10
  %48 = load ptr, ptr %26, align 8, !tbaa !10
  %49 = load ptr, ptr %28, align 8, !tbaa !10
  call void @dgesvd_(ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %45, ptr noundef %22, ptr noundef %46, ptr noundef %47, ptr noundef %25, ptr noundef %48, ptr noundef %27, ptr noundef %49, ptr noundef %29, ptr noundef %30, i64 noundef 1, i64 noundef 1)
  %50 = load i32, ptr %30, align 4, !tbaa !5
  %51 = icmp slt i32 %50, 0
  br i1 %51, label %52, label %55

52:                                               ; preds = %44
  %53 = load i32, ptr %30, align 4, !tbaa !5
  %54 = sub nsw i32 %53, 1
  store i32 %54, ptr %30, align 4, !tbaa !5
  br label %55

55:                                               ; preds = %52, %44
  br label %359

56:                                               ; preds = %14
  %57 = load i32, ptr %16, align 4, !tbaa !5
  %58 = icmp eq i32 %57, 101
  br i1 %58, label %59, label %356

59:                                               ; preds = %56
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #6
  %60 = load i8, ptr %17, align 1, !tbaa !9
  %61 = call i32 @LAPACKE_lsame(i8 noundef signext %60, i8 noundef signext 97) #7
  %62 = icmp ne i32 %61, 0
  br i1 %62, label %67, label %63

63:                                               ; preds = %59
  %64 = load i8, ptr %17, align 1, !tbaa !9
  %65 = call i32 @LAPACKE_lsame(i8 noundef signext %64, i8 noundef signext 115) #7
  %66 = icmp ne i32 %65, 0
  br i1 %66, label %67, label %69

67:                                               ; preds = %63, %59
  %68 = load i32, ptr %19, align 4, !tbaa !5
  br label %70

69:                                               ; preds = %63
  br label %70

70:                                               ; preds = %69, %67
  %71 = phi i32 [ %68, %67 ], [ 1, %69 ]
  store i32 %71, ptr %31, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #6
  %72 = load i8, ptr %17, align 1, !tbaa !9
  %73 = call i32 @LAPACKE_lsame(i8 noundef signext %72, i8 noundef signext 97) #7
  %74 = icmp ne i32 %73, 0
  br i1 %74, label %75, label %77

75:                                               ; preds = %70
  %76 = load i32, ptr %19, align 4, !tbaa !5
  br label %94

77:                                               ; preds = %70
  %78 = load i8, ptr %17, align 1, !tbaa !9
  %79 = call i32 @LAPACKE_lsame(i8 noundef signext %78, i8 noundef signext 115) #7
  %80 = icmp ne i32 %79, 0
  br i1 %80, label %81, label %91

81:                                               ; preds = %77
  %82 = load i32, ptr %19, align 4, !tbaa !5
  %83 = load i32, ptr %20, align 4, !tbaa !5
  %84 = icmp slt i32 %82, %83
  br i1 %84, label %85, label %87

85:                                               ; preds = %81
  %86 = load i32, ptr %19, align 4, !tbaa !5
  br label %89

87:                                               ; preds = %81
  %88 = load i32, ptr %20, align 4, !tbaa !5
  br label %89

89:                                               ; preds = %87, %85
  %90 = phi i32 [ %86, %85 ], [ %88, %87 ]
  br label %92

91:                                               ; preds = %77
  br label %92

92:                                               ; preds = %91, %89
  %93 = phi i32 [ %90, %89 ], [ 1, %91 ]
  br label %94

94:                                               ; preds = %92, %75
  %95 = phi i32 [ %76, %75 ], [ %93, %92 ]
  store i32 %95, ptr %32, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #6
  %96 = load i8, ptr %18, align 1, !tbaa !9
  %97 = call i32 @LAPACKE_lsame(i8 noundef signext %96, i8 noundef signext 97) #7
  %98 = icmp ne i32 %97, 0
  br i1 %98, label %99, label %101

99:                                               ; preds = %94
  %100 = load i32, ptr %20, align 4, !tbaa !5
  br label %118

101:                                              ; preds = %94
  %102 = load i8, ptr %18, align 1, !tbaa !9
  %103 = call i32 @LAPACKE_lsame(i8 noundef signext %102, i8 noundef signext 115) #7
  %104 = icmp ne i32 %103, 0
  br i1 %104, label %105, label %115

105:                                              ; preds = %101
  %106 = load i32, ptr %19, align 4, !tbaa !5
  %107 = load i32, ptr %20, align 4, !tbaa !5
  %108 = icmp slt i32 %106, %107
  br i1 %108, label %109, label %111

109:                                              ; preds = %105
  %110 = load i32, ptr %19, align 4, !tbaa !5
  br label %113

111:                                              ; preds = %105
  %112 = load i32, ptr %20, align 4, !tbaa !5
  br label %113

113:                                              ; preds = %111, %109
  %114 = phi i32 [ %110, %109 ], [ %112, %111 ]
  br label %116

115:                                              ; preds = %101
  br label %116

116:                                              ; preds = %115, %113
  %117 = phi i32 [ %114, %113 ], [ 1, %115 ]
  br label %118

118:                                              ; preds = %116, %99
  %119 = phi i32 [ %100, %99 ], [ %117, %116 ]
  store i32 %119, ptr %33, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #6
  %120 = load i8, ptr %18, align 1, !tbaa !9
  %121 = call i32 @LAPACKE_lsame(i8 noundef signext %120, i8 noundef signext 97) #7
  %122 = icmp ne i32 %121, 0
  br i1 %122, label %127, label %123

123:                                              ; preds = %118
  %124 = load i8, ptr %18, align 1, !tbaa !9
  %125 = call i32 @LAPACKE_lsame(i8 noundef signext %124, i8 noundef signext 115) #7
  %126 = icmp ne i32 %125, 0
  br i1 %126, label %127, label %129

127:                                              ; preds = %123, %118
  %128 = load i32, ptr %20, align 4, !tbaa !5
  br label %130

129:                                              ; preds = %123
  br label %130

130:                                              ; preds = %129, %127
  %131 = phi i32 [ %128, %127 ], [ 1, %129 ]
  store i32 %131, ptr %34, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #6
  %132 = load i32, ptr %19, align 4, !tbaa !5
  %133 = icmp sgt i32 1, %132
  br i1 %133, label %134, label %135

134:                                              ; preds = %130
  br label %137

135:                                              ; preds = %130
  %136 = load i32, ptr %19, align 4, !tbaa !5
  br label %137

137:                                              ; preds = %135, %134
  %138 = phi i32 [ 1, %134 ], [ %136, %135 ]
  store i32 %138, ptr %35, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #6
  %139 = load i32, ptr %31, align 4, !tbaa !5
  %140 = icmp sgt i32 1, %139
  br i1 %140, label %141, label %142

141:                                              ; preds = %137
  br label %144

142:                                              ; preds = %137
  %143 = load i32, ptr %31, align 4, !tbaa !5
  br label %144

144:                                              ; preds = %142, %141
  %145 = phi i32 [ 1, %141 ], [ %143, %142 ]
  store i32 %145, ptr %36, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #6
  %146 = load i32, ptr %33, align 4, !tbaa !5
  %147 = icmp sgt i32 1, %146
  br i1 %147, label %148, label %149

148:                                              ; preds = %144
  br label %151

149:                                              ; preds = %144
  %150 = load i32, ptr %33, align 4, !tbaa !5
  br label %151

151:                                              ; preds = %149, %148
  %152 = phi i32 [ 1, %148 ], [ %150, %149 ]
  store i32 %152, ptr %37, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #6
  store ptr null, ptr %38, align 8, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #6
  store ptr null, ptr %39, align 8, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #6
  store ptr null, ptr %40, align 8, !tbaa !10
  %153 = load i32, ptr %22, align 4, !tbaa !5
  %154 = load i32, ptr %20, align 4, !tbaa !5
  %155 = icmp slt i32 %153, %154
  br i1 %155, label %156, label %159

156:                                              ; preds = %151
  store i32 -7, ptr %30, align 4, !tbaa !5
  %157 = load i32, ptr %30, align 4, !tbaa !5
  call void @LAPACKE_xerbla(ptr noundef @.str, i32 noundef %157)
  %158 = load i32, ptr %30, align 4, !tbaa !5
  store i32 %158, ptr %15, align 4
  store i32 1, ptr %41, align 4
  br label %353

159:                                              ; preds = %151
  %160 = load i32, ptr %25, align 4, !tbaa !5
  %161 = load i32, ptr %32, align 4, !tbaa !5
  %162 = icmp slt i32 %160, %161
  br i1 %162, label %163, label %166

163:                                              ; preds = %159
  store i32 -10, ptr %30, align 4, !tbaa !5
  %164 = load i32, ptr %30, align 4, !tbaa !5
  call void @LAPACKE_xerbla(ptr noundef @.str, i32 noundef %164)
  %165 = load i32, ptr %30, align 4, !tbaa !5
  store i32 %165, ptr %15, align 4
  store i32 1, ptr %41, align 4
  br label %353

166:                                              ; preds = %159
  %167 = load i8, ptr %18, align 1, !tbaa !9
  %168 = call i32 @LAPACKE_lsame(i8 noundef signext %167, i8 noundef signext 97) #7
  %169 = icmp ne i32 %168, 0
  br i1 %169, label %174, label %170

170:                                              ; preds = %166
  %171 = load i8, ptr %18, align 1, !tbaa !9
  %172 = call i32 @LAPACKE_lsame(i8 noundef signext %171, i8 noundef signext 115) #7
  %173 = icmp ne i32 %172, 0
  br i1 %173, label %174, label %182

174:                                              ; preds = %170, %166
  %175 = load i32, ptr %27, align 4, !tbaa !5
  %176 = load i32, ptr %34, align 4, !tbaa !5
  %177 = icmp slt i32 %175, %176
  br i1 %177, label %178, label %181

178:                                              ; preds = %174
  store i32 -12, ptr %30, align 4, !tbaa !5
  %179 = load i32, ptr %30, align 4, !tbaa !5
  call void @LAPACKE_xerbla(ptr noundef @.str, i32 noundef %179)
  %180 = load i32, ptr %30, align 4, !tbaa !5
  store i32 %180, ptr %15, align 4
  store i32 1, ptr %41, align 4
  br label %353

181:                                              ; preds = %174
  br label %182

182:                                              ; preds = %181, %170
  %183 = load i32, ptr %29, align 4, !tbaa !5
  %184 = icmp eq i32 %183, -1
  br i1 %184, label %185, label %200

185:                                              ; preds = %182
  %186 = load ptr, ptr %21, align 8, !tbaa !10
  %187 = load ptr, ptr %23, align 8, !tbaa !10
  %188 = load ptr, ptr %24, align 8, !tbaa !10
  %189 = load ptr, ptr %26, align 8, !tbaa !10
  %190 = load ptr, ptr %28, align 8, !tbaa !10
  call void @dgesvd_(ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %186, ptr noundef %35, ptr noundef %187, ptr noundef %188, ptr noundef %36, ptr noundef %189, ptr noundef %37, ptr noundef %190, ptr noundef %29, ptr noundef %30, i64 noundef 1, i64 noundef 1)
  %191 = load i32, ptr %30, align 4, !tbaa !5
  %192 = icmp slt i32 %191, 0
  br i1 %192, label %193, label %196

193:                                              ; preds = %185
  %194 = load i32, ptr %30, align 4, !tbaa !5
  %195 = sub nsw i32 %194, 1
  br label %198

196:                                              ; preds = %185
  %197 = load i32, ptr %30, align 4, !tbaa !5
  br label %198

198:                                              ; preds = %196, %193
  %199 = phi i32 [ %195, %193 ], [ %197, %196 ]
  store i32 %199, ptr %15, align 4
  store i32 1, ptr %41, align 4
  br label %353

200:                                              ; preds = %182
  %201 = load i32, ptr %35, align 4, !tbaa !5
  %202 = sext i32 %201 to i64
  %203 = mul i64 8, %202
  %204 = load i32, ptr %20, align 4, !tbaa !5
  %205 = icmp sgt i32 1, %204
  br i1 %205, label %206, label %207

206:                                              ; preds = %200
  br label %209

207:                                              ; preds = %200
  %208 = load i32, ptr %20, align 4, !tbaa !5
  br label %209

209:                                              ; preds = %207, %206
  %210 = phi i32 [ 1, %206 ], [ %208, %207 ]
  %211 = sext i32 %210 to i64
  %212 = mul i64 %203, %211
  %213 = call noalias ptr @malloc(i64 noundef %212) #8
  store ptr %213, ptr %38, align 8, !tbaa !10
  %214 = load ptr, ptr %38, align 8, !tbaa !10
  %215 = icmp eq ptr %214, null
  br i1 %215, label %216, label %217

216:                                              ; preds = %209
  store i32 -1011, ptr %30, align 4, !tbaa !5
  br label %347

217:                                              ; preds = %209
  %218 = load i8, ptr %17, align 1, !tbaa !9
  %219 = call i32 @LAPACKE_lsame(i8 noundef signext %218, i8 noundef signext 97) #7
  %220 = icmp ne i32 %219, 0
  br i1 %220, label %225, label %221

221:                                              ; preds = %217
  %222 = load i8, ptr %17, align 1, !tbaa !9
  %223 = call i32 @LAPACKE_lsame(i8 noundef signext %222, i8 noundef signext 115) #7
  %224 = icmp ne i32 %223, 0
  br i1 %224, label %225, label %243

225:                                              ; preds = %221, %217
  %226 = load i32, ptr %36, align 4, !tbaa !5
  %227 = sext i32 %226 to i64
  %228 = mul i64 8, %227
  %229 = load i32, ptr %32, align 4, !tbaa !5
  %230 = icmp sgt i32 1, %229
  br i1 %230, label %231, label %232

231:                                              ; preds = %225
  br label %234

232:                                              ; preds = %225
  %233 = load i32, ptr %32, align 4, !tbaa !5
  br label %234

234:                                              ; preds = %232, %231
  %235 = phi i32 [ 1, %231 ], [ %233, %232 ]
  %236 = sext i32 %235 to i64
  %237 = mul i64 %228, %236
  %238 = call noalias ptr @malloc(i64 noundef %237) #8
  store ptr %238, ptr %39, align 8, !tbaa !10
  %239 = load ptr, ptr %39, align 8, !tbaa !10
  %240 = icmp eq ptr %239, null
  br i1 %240, label %241, label %242

241:                                              ; preds = %234
  store i32 -1011, ptr %30, align 4, !tbaa !5
  br label %345

242:                                              ; preds = %234
  br label %243

243:                                              ; preds = %242, %221
  %244 = load i8, ptr %18, align 1, !tbaa !9
  %245 = call i32 @LAPACKE_lsame(i8 noundef signext %244, i8 noundef signext 97) #7
  %246 = icmp ne i32 %245, 0
  br i1 %246, label %251, label %247

247:                                              ; preds = %243
  %248 = load i8, ptr %18, align 1, !tbaa !9
  %249 = call i32 @LAPACKE_lsame(i8 noundef signext %248, i8 noundef signext 115) #7
  %250 = icmp ne i32 %249, 0
  br i1 %250, label %251, label %269

251:                                              ; preds = %247, %243
  %252 = load i32, ptr %37, align 4, !tbaa !5
  %253 = sext i32 %252 to i64
  %254 = mul i64 8, %253
  %255 = load i32, ptr %20, align 4, !tbaa !5
  %256 = icmp sgt i32 1, %255
  br i1 %256, label %257, label %258

257:                                              ; preds = %251
  br label %260

258:                                              ; preds = %251
  %259 = load i32, ptr %20, align 4, !tbaa !5
  br label %260

260:                                              ; preds = %258, %257
  %261 = phi i32 [ 1, %257 ], [ %259, %258 ]
  %262 = sext i32 %261 to i64
  %263 = mul i64 %254, %262
  %264 = call noalias ptr @malloc(i64 noundef %263) #8
  store ptr %264, ptr %40, align 8, !tbaa !10
  %265 = load ptr, ptr %40, align 8, !tbaa !10
  %266 = icmp eq ptr %265, null
  br i1 %266, label %267, label %268

267:                                              ; preds = %260
  store i32 -1011, ptr %30, align 4, !tbaa !5
  br label %334

268:                                              ; preds = %260
  br label %269

269:                                              ; preds = %268, %247
  %270 = load i32, ptr %16, align 4, !tbaa !5
  %271 = load i32, ptr %19, align 4, !tbaa !5
  %272 = load i32, ptr %20, align 4, !tbaa !5
  %273 = load ptr, ptr %21, align 8, !tbaa !10
  %274 = load i32, ptr %22, align 4, !tbaa !5
  %275 = load ptr, ptr %38, align 8, !tbaa !10
  %276 = load i32, ptr %35, align 4, !tbaa !5
  call void @LAPACKE_dge_trans(i32 noundef %270, i32 noundef %271, i32 noundef %272, ptr noundef %273, i32 noundef %274, ptr noundef %275, i32 noundef %276)
  %277 = load ptr, ptr %38, align 8, !tbaa !10
  %278 = load ptr, ptr %23, align 8, !tbaa !10
  %279 = load ptr, ptr %39, align 8, !tbaa !10
  %280 = load ptr, ptr %40, align 8, !tbaa !10
  %281 = load ptr, ptr %28, align 8, !tbaa !10
  call void @dgesvd_(ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %277, ptr noundef %35, ptr noundef %278, ptr noundef %279, ptr noundef %36, ptr noundef %280, ptr noundef %37, ptr noundef %281, ptr noundef %29, ptr noundef %30, i64 noundef 1, i64 noundef 1)
  %282 = load i32, ptr %30, align 4, !tbaa !5
  %283 = icmp slt i32 %282, 0
  br i1 %283, label %284, label %287

284:                                              ; preds = %269
  %285 = load i32, ptr %30, align 4, !tbaa !5
  %286 = sub nsw i32 %285, 1
  store i32 %286, ptr %30, align 4, !tbaa !5
  br label %287

287:                                              ; preds = %284, %269
  %288 = load i32, ptr %19, align 4, !tbaa !5
  %289 = load i32, ptr %20, align 4, !tbaa !5
  %290 = load ptr, ptr %38, align 8, !tbaa !10
  %291 = load i32, ptr %35, align 4, !tbaa !5
  %292 = load ptr, ptr %21, align 8, !tbaa !10
  %293 = load i32, ptr %22, align 4, !tbaa !5
  call void @LAPACKE_dge_trans(i32 noundef 102, i32 noundef %288, i32 noundef %289, ptr noundef %290, i32 noundef %291, ptr noundef %292, i32 noundef %293)
  %294 = load i8, ptr %17, align 1, !tbaa !9
  %295 = call i32 @LAPACKE_lsame(i8 noundef signext %294, i8 noundef signext 97) #7
  %296 = icmp ne i32 %295, 0
  br i1 %296, label %301, label %297

297:                                              ; preds = %287
  %298 = load i8, ptr %17, align 1, !tbaa !9
  %299 = call i32 @LAPACKE_lsame(i8 noundef signext %298, i8 noundef signext 115) #7
  %300 = icmp ne i32 %299, 0
  br i1 %300, label %301, label %308

301:                                              ; preds = %297, %287
  %302 = load i32, ptr %31, align 4, !tbaa !5
  %303 = load i32, ptr %32, align 4, !tbaa !5
  %304 = load ptr, ptr %39, align 8, !tbaa !10
  %305 = load i32, ptr %36, align 4, !tbaa !5
  %306 = load ptr, ptr %24, align 8, !tbaa !10
  %307 = load i32, ptr %25, align 4, !tbaa !5
  call void @LAPACKE_dge_trans(i32 noundef 102, i32 noundef %302, i32 noundef %303, ptr noundef %304, i32 noundef %305, ptr noundef %306, i32 noundef %307)
  br label %308

308:                                              ; preds = %301, %297
  %309 = load i8, ptr %18, align 1, !tbaa !9
  %310 = call i32 @LAPACKE_lsame(i8 noundef signext %309, i8 noundef signext 97) #7
  %311 = icmp ne i32 %310, 0
  br i1 %311, label %316, label %312

312:                                              ; preds = %308
  %313 = load i8, ptr %18, align 1, !tbaa !9
  %314 = call i32 @LAPACKE_lsame(i8 noundef signext %313, i8 noundef signext 115) #7
  %315 = icmp ne i32 %314, 0
  br i1 %315, label %316, label %323

316:                                              ; preds = %312, %308
  %317 = load i32, ptr %33, align 4, !tbaa !5
  %318 = load i32, ptr %20, align 4, !tbaa !5
  %319 = load ptr, ptr %40, align 8, !tbaa !10
  %320 = load i32, ptr %37, align 4, !tbaa !5
  %321 = load ptr, ptr %26, align 8, !tbaa !10
  %322 = load i32, ptr %27, align 4, !tbaa !5
  call void @LAPACKE_dge_trans(i32 noundef 102, i32 noundef %317, i32 noundef %318, ptr noundef %319, i32 noundef %320, ptr noundef %321, i32 noundef %322)
  br label %323

323:                                              ; preds = %316, %312
  %324 = load i8, ptr %18, align 1, !tbaa !9
  %325 = call i32 @LAPACKE_lsame(i8 noundef signext %324, i8 noundef signext 97) #7
  %326 = icmp ne i32 %325, 0
  br i1 %326, label %331, label %327

327:                                              ; preds = %323
  %328 = load i8, ptr %18, align 1, !tbaa !9
  %329 = call i32 @LAPACKE_lsame(i8 noundef signext %328, i8 noundef signext 115) #7
  %330 = icmp ne i32 %329, 0
  br i1 %330, label %331, label %333

331:                                              ; preds = %327, %323
  %332 = load ptr, ptr %40, align 8, !tbaa !10
  call void @free(ptr noundef %332) #6
  br label %333

333:                                              ; preds = %331, %327
  br label %334

334:                                              ; preds = %333, %267
  %335 = load i8, ptr %17, align 1, !tbaa !9
  %336 = call i32 @LAPACKE_lsame(i8 noundef signext %335, i8 noundef signext 97) #7
  %337 = icmp ne i32 %336, 0
  br i1 %337, label %342, label %338

338:                                              ; preds = %334
  %339 = load i8, ptr %17, align 1, !tbaa !9
  %340 = call i32 @LAPACKE_lsame(i8 noundef signext %339, i8 noundef signext 115) #7
  %341 = icmp ne i32 %340, 0
  br i1 %341, label %342, label %344

342:                                              ; preds = %338, %334
  %343 = load ptr, ptr %39, align 8, !tbaa !10
  call void @free(ptr noundef %343) #6
  br label %344

344:                                              ; preds = %342, %338
  br label %345

345:                                              ; preds = %344, %241
  %346 = load ptr, ptr %38, align 8, !tbaa !10
  call void @free(ptr noundef %346) #6
  br label %347

347:                                              ; preds = %345, %216
  %348 = load i32, ptr %30, align 4, !tbaa !5
  %349 = icmp eq i32 %348, -1011
  br i1 %349, label %350, label %352

350:                                              ; preds = %347
  %351 = load i32, ptr %30, align 4, !tbaa !5
  call void @LAPACKE_xerbla(ptr noundef @.str, i32 noundef %351)
  br label %352

352:                                              ; preds = %350, %347
  store i32 0, ptr %41, align 4
  br label %353

353:                                              ; preds = %352, %198, %178, %163, %156
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  %354 = load i32, ptr %41, align 4
  switch i32 %354, label %361 [
    i32 0, label %355
  ]

355:                                              ; preds = %353
  br label %358

356:                                              ; preds = %56
  store i32 -1, ptr %30, align 4, !tbaa !5
  %357 = load i32, ptr %30, align 4, !tbaa !5
  call void @LAPACKE_xerbla(ptr noundef @.str, i32 noundef %357)
  br label %358

358:                                              ; preds = %356, %355
  br label %359

359:                                              ; preds = %358, %55
  %360 = load i32, ptr %30, align 4, !tbaa !5
  store i32 %360, ptr %15, align 4
  store i32 1, ptr %41, align 4
  br label %361

361:                                              ; preds = %359, %353
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #6
  %362 = load i32, ptr %15, align 4
  ret i32 %362
}

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

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

; Function Attrs: nounwind willreturn memory(none)
declare i32 @LAPACKE_lsame(i8 noundef signext, i8 noundef signext) #3

declare void @LAPACKE_xerbla(ptr noundef, i32 noundef) #2

; Function Attrs: nounwind allocsize(0)
declare noalias ptr @malloc(i64 noundef) #4

declare void @LAPACKE_dge_trans(i32 noundef, i32 noundef, i32 noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef) #2

; Function Attrs: nounwind
declare void @free(ptr noundef) #5

; 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 willreturn memory(none) "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 allocsize(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 #5 = { 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 #6 = { nounwind }
attributes #7 = { nounwind willreturn memory(none) }
attributes #8 = { nounwind allocsize(0) }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!7, !7, i64 0}
!10 = !{!11, !11, i64 0}
!11 = !{!"any pointer", !7, i64 0}


; 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 [20 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @LAPACKE_dgesvd_work(i32 noundef %0, i8 noundef signext %1, i8 noundef signext %2, i32 noundef %3, i32 noundef %4, ptr noundef %5, i32 noundef %6, ptr noundef %7, ptr noundef %8, i32 noundef %9, ptr noundef %10, i32 noundef %11, ptr noundef %12, i32 noundef %13) local_unnamed_addr #0 {
  %15 = alloca i8, align 1
  %16 = alloca i8, align 1
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  store i8 %1, ptr %15, align 1, !tbaa !5
  store i8 %2, ptr %16, align 1, !tbaa !5
  store i32 %3, ptr %17, align 4, !tbaa !8
  store i32 %4, ptr %18, align 4, !tbaa !8
  store i32 %6, ptr %19, align 4, !tbaa !8
  store i32 %9, ptr %20, align 4, !tbaa !8
  store i32 %11, ptr %21, align 4, !tbaa !8
  store i32 %13, ptr %22, align 4, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #7
  store i32 0, ptr %23, align 4, !tbaa !8
  switch i32 %0, label %131 [
    i32 102, label %27
    i32 101, label %29
  ]

27:                                               ; preds = %14
  call void @dgesvd_(ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef %5, ptr noundef nonnull %19, ptr noundef %7, ptr noundef %8, ptr noundef nonnull %20, ptr noundef %10, ptr noundef nonnull %21, ptr noundef %12, ptr noundef nonnull %22, ptr noundef nonnull %23, i64 noundef 1, i64 noundef 1) #7
  %28 = load i32, ptr %23, align 4, !tbaa !8
  %.lobit89 = ashr i32 %28, 31
  %spec.select = add nsw i32 %28, %.lobit89
  br label %132

29:                                               ; preds = %14
  %30 = tail call i32 @LAPACKE_lsame(i8 noundef signext %1, i8 noundef signext 97) #8
  %.not = icmp eq i32 %30, 0
  br i1 %.not, label %.thread77, label %34

.thread77:                                        ; preds = %29
  %31 = tail call i32 @LAPACKE_lsame(i8 noundef signext %1, i8 noundef signext 115) #8
  %.not55 = icmp eq i32 %31, 0
  br i1 %.not55, label %34, label %32

32:                                               ; preds = %.thread77
  %33 = tail call i32 @llvm.smin.i32(i32 %3, i32 %4)
  br label %34

34:                                               ; preds = %29, %32, %.thread77
  %35 = phi i32 [ %3, %32 ], [ 1, %.thread77 ], [ %3, %29 ]
  %36 = phi i32 [ %33, %32 ], [ 1, %.thread77 ], [ %3, %29 ]
  %37 = tail call i32 @LAPACKE_lsame(i8 noundef signext %2, i8 noundef signext 97) #8
  %.not58 = icmp eq i32 %37, 0
  br i1 %.not58, label %38, label %41

38:                                               ; preds = %34
  %39 = tail call i32 @LAPACKE_lsame(i8 noundef signext %2, i8 noundef signext 115) #8
  %.not59 = icmp eq i32 %39, 0
  %40 = tail call i32 @llvm.smin.i32(i32 %3, i32 %4)
  %.ph = select i1 %.not59, i32 1, i32 %40
  %spec.select86 = select i1 %.not59, i32 1, i32 %4
  br label %41

41:                                               ; preds = %38, %34
  %42 = phi i32 [ %4, %34 ], [ %.ph, %38 ]
  %43 = phi i32 [ %4, %34 ], [ %spec.select86, %38 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #7
  %44 = tail call i32 @llvm.smax.i32(i32 %3, i32 1)
  store i32 %44, ptr %24, align 4, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #7
  %45 = tail call i32 @llvm.smax.i32(i32 %35, i32 1)
  store i32 %45, ptr %25, align 4, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #7
  %46 = tail call i32 @llvm.smax.i32(i32 %42, i32 1)
  store i32 %46, ptr %26, align 4, !tbaa !8
  %47 = icmp slt i32 %6, %4
  br i1 %47, label %48, label %49

48:                                               ; preds = %41
  tail call void @LAPACKE_xerbla(ptr noundef nonnull @.str, i32 noundef -7) #7
  br label %.thread83

49:                                               ; preds = %41
  %50 = icmp sgt i32 %36, %9
  br i1 %50, label %51, label %52

51:                                               ; preds = %49
  tail call void @LAPACKE_xerbla(ptr noundef nonnull @.str, i32 noundef -10) #7
  br label %.thread83

52:                                               ; preds = %49
  br i1 %.not58, label %53, label %56

53:                                               ; preds = %52
  %54 = tail call i32 @LAPACKE_lsame(i8 noundef signext %2, i8 noundef signext 115) #8
  %.not63 = icmp ne i32 %54, 0
  %55 = icmp sgt i32 %43, %11
  %or.cond = select i1 %.not63, i1 %55, i1 false
  br i1 %or.cond, label %57, label %58

56:                                               ; preds = %52
  %.old76 = icmp sgt i32 %43, %11
  br i1 %.old76, label %57, label %58

57:                                               ; preds = %53, %56
  tail call void @LAPACKE_xerbla(ptr noundef nonnull @.str, i32 noundef -12) #7
  br label %.thread83

58:                                               ; preds = %56, %53
  %59 = icmp eq i32 %13, -1
  br i1 %59, label %60, label %63

60:                                               ; preds = %58
  call void @dgesvd_(ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef %5, ptr noundef nonnull %24, ptr noundef %7, ptr noundef %8, ptr noundef nonnull %25, ptr noundef %10, ptr noundef nonnull %26, ptr noundef %12, ptr noundef nonnull %22, ptr noundef nonnull %23, i64 noundef 1, i64 noundef 1) #7
  %61 = load i32, ptr %23, align 4
  %.lobit = ashr i32 %61, 31
  %62 = add nsw i32 %.lobit, %61
  br label %.thread83

63:                                               ; preds = %58
  %64 = zext nneg i32 %44 to i64
  %65 = shl nuw nsw i64 %64, 3
  %66 = tail call i32 @llvm.smax.i32(i32 %4, i32 1)
  %67 = zext nneg i32 %66 to i64
  %68 = mul i64 %65, %67
  %69 = tail call noalias ptr @malloc(i64 noundef %68) #9
  %70 = icmp eq ptr %69, null
  br i1 %70, label %.thread79, label %71

.thread79:                                        ; preds = %63
  store i32 -1011, ptr %23, align 4, !tbaa !8
  br label %129

71:                                               ; preds = %63
  br i1 %.not, label %72, label %74

72:                                               ; preds = %71
  %73 = tail call i32 @LAPACKE_lsame(i8 noundef signext %1, i8 noundef signext 115) #8
  %.not65 = icmp eq i32 %73, 0
  br i1 %.not65, label %82, label %74

74:                                               ; preds = %72, %71
  %75 = zext nneg i32 %45 to i64
  %76 = shl nuw nsw i64 %75, 3
  %77 = tail call i32 @llvm.smax.i32(i32 %36, i32 1)
  %78 = zext nneg i32 %77 to i64
  %79 = mul i64 %76, %78
  %80 = tail call noalias ptr @malloc(i64 noundef %79) #9
  %81 = icmp eq ptr %80, null
  br i1 %81, label %.thread80, label %82

.thread80:                                        ; preds = %74
  store i32 -1011, ptr %23, align 4, !tbaa !8
  tail call void @free(ptr noundef nonnull %69) #7
  br label %129

82:                                               ; preds = %74, %72
  %.045 = phi ptr [ %80, %74 ], [ null, %72 ]
  br i1 %.not58, label %83, label %85

83:                                               ; preds = %82
  %84 = tail call i32 @LAPACKE_lsame(i8 noundef signext %2, i8 noundef signext 115) #8
  %.not67 = icmp eq i32 %84, 0
  br i1 %.not67, label %92, label %85

85:                                               ; preds = %83, %82
  %86 = zext nneg i32 %46 to i64
  %87 = shl nuw nsw i64 %67, 3
  %88 = mul i64 %87, %86
  %89 = tail call noalias ptr @malloc(i64 noundef %88) #9
  %90 = icmp eq ptr %89, null
  br i1 %90, label %91, label %92

91:                                               ; preds = %85
  store i32 -1011, ptr %23, align 4, !tbaa !8
  br label %121

92:                                               ; preds = %85, %83
  %.044 = phi ptr [ %89, %85 ], [ null, %83 ]
  tail call void @LAPACKE_dge_trans(i32 noundef 101, i32 noundef %3, i32 noundef %4, ptr noundef %5, i32 noundef %6, ptr noundef nonnull %69, i32 noundef %44) #7
  call void @dgesvd_(ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef nonnull %69, ptr noundef nonnull %24, ptr noundef %7, ptr noundef %.045, ptr noundef nonnull %25, ptr noundef %.044, ptr noundef nonnull %26, ptr noundef %12, ptr noundef nonnull %22, ptr noundef nonnull %23, i64 noundef 1, i64 noundef 1) #7
  %93 = load i32, ptr %23, align 4, !tbaa !8
  %94 = icmp slt i32 %93, 0
  br i1 %94, label %95, label %97

95:                                               ; preds = %92
  %96 = add nsw i32 %93, -1
  store i32 %96, ptr %23, align 4, !tbaa !8
  br label %97

97:                                               ; preds = %95, %92
  %98 = load i32, ptr %17, align 4, !tbaa !8
  %99 = load i32, ptr %18, align 4, !tbaa !8
  %100 = load i32, ptr %24, align 4, !tbaa !8
  call void @LAPACKE_dge_trans(i32 noundef 102, i32 noundef %98, i32 noundef %99, ptr noundef nonnull %69, i32 noundef %100, ptr noundef %5, i32 noundef %6) #7
  %101 = load i8, ptr %15, align 1, !tbaa !5
  %102 = call i32 @LAPACKE_lsame(i8 noundef signext %101, i8 noundef signext 97) #8
  %.not68 = icmp eq i32 %102, 0
  br i1 %.not68, label %103, label %105

103:                                              ; preds = %97
  %104 = call i32 @LAPACKE_lsame(i8 noundef signext %101, i8 noundef signext 115) #8
  %.not69 = icmp eq i32 %104, 0
  br i1 %.not69, label %107, label %105

105:                                              ; preds = %103, %97
  %106 = load i32, ptr %25, align 4, !tbaa !8
  call void @LAPACKE_dge_trans(i32 noundef 102, i32 noundef %35, i32 noundef %36, ptr noundef %.045, i32 noundef %106, ptr noundef %8, i32 noundef %9) #7
  br label %107

107:                                              ; preds = %105, %103
  %108 = load i8, ptr %16, align 1, !tbaa !5
  %109 = call i32 @LAPACKE_lsame(i8 noundef signext %108, i8 noundef signext 97) #8
  %.not70 = icmp eq i32 %109, 0
  br i1 %.not70, label %110, label %112

110:                                              ; preds = %107
  %111 = call i32 @LAPACKE_lsame(i8 noundef signext %108, i8 noundef signext 115) #8
  %.not71 = icmp eq i32 %111, 0
  br i1 %.not71, label %115, label %112

112:                                              ; preds = %110, %107
  %113 = load i32, ptr %18, align 4, !tbaa !8
  %114 = load i32, ptr %26, align 4, !tbaa !8
  call void @LAPACKE_dge_trans(i32 noundef 102, i32 noundef %42, i32 noundef %113, ptr noundef %.044, i32 noundef %114, ptr noundef %10, i32 noundef %11) #7
  %.pre = load i8, ptr %16, align 1, !tbaa !5
  br label %115

115:                                              ; preds = %112, %110
  %116 = phi i8 [ %.pre, %112 ], [ %108, %110 ]
  %117 = call i32 @LAPACKE_lsame(i8 noundef signext %116, i8 noundef signext 97) #8
  %.not72 = icmp eq i32 %117, 0
  br i1 %.not72, label %118, label %120

118:                                              ; preds = %115
  %119 = call i32 @LAPACKE_lsame(i8 noundef signext %116, i8 noundef signext 115) #8
  %.not73 = icmp eq i32 %119, 0
  br i1 %.not73, label %121, label %120

120:                                              ; preds = %118, %115
  call void @free(ptr noundef %.044) #7
  br label %121

121:                                              ; preds = %118, %120, %91
  %122 = load i8, ptr %15, align 1, !tbaa !5
  %123 = call i32 @LAPACKE_lsame(i8 noundef signext %122, i8 noundef signext 97) #8
  %.not74 = icmp eq i32 %123, 0
  br i1 %.not74, label %124, label %126

124:                                              ; preds = %121
  %125 = call i32 @LAPACKE_lsame(i8 noundef signext %122, i8 noundef signext 115) #8
  %.not75 = icmp eq i32 %125, 0
  br i1 %.not75, label %127, label %126

126:                                              ; preds = %124, %121
  call void @free(ptr noundef %.045) #7
  br label %127

127:                                              ; preds = %126, %124
  %.pr.pr = load i32, ptr %23, align 4, !tbaa !8
  call void @free(ptr noundef nonnull %69) #7
  %128 = icmp eq i32 %.pr.pr, -1011
  br i1 %128, label %129, label %130

129:                                              ; preds = %.thread80, %.thread79, %127
  call void @LAPACKE_xerbla(ptr noundef nonnull @.str, i32 noundef -1011) #7
  %.pre87.pre = load i32, ptr %23, align 4, !tbaa !8
  br label %130

.thread83:                                        ; preds = %48, %51, %57, %60
  %.046.ph = phi i32 [ %62, %60 ], [ -12, %57 ], [ -10, %51 ], [ -7, %48 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #7
  br label %132

130:                                              ; preds = %127, %129
  %.pre87 = phi i32 [ %.pr.pr, %127 ], [ %.pre87.pre, %129 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #7
  br label %132

131:                                              ; preds = %14
  tail call void @LAPACKE_xerbla(ptr noundef nonnull @.str, i32 noundef -1) #7
  br label %132

132:                                              ; preds = %27, %131, %130, %.thread83
  %.1 = phi i32 [ %.046.ph, %.thread83 ], [ %.pre87, %130 ], [ -1, %131 ], [ %spec.select, %27 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #7
  ret i32 %.1
}

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

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

; Function Attrs: mustprogress nofree nosync nounwind willreturn memory(none)
declare i32 @LAPACKE_lsame(i8 noundef signext, i8 noundef signext) local_unnamed_addr #3

declare void @LAPACKE_xerbla(ptr noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite)
declare noalias noundef ptr @malloc(i64 noundef) local_unnamed_addr #4

declare void @LAPACKE_dge_trans(i32 noundef, i32 noundef, i32 noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite)
declare void @free(ptr allocptr nocapture noundef) local_unnamed_addr #5

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smin.i32(i32, i32) #6

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smax.i32(i32, i32) #6

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 nosync nounwind willreturn memory(none) "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 = { mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" "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 #5 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "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 #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { nounwind }
attributes #8 = { nounwind willreturn memory(none) }
attributes #9 = { nounwind allocsize(0) }

!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 = !{!"omnipotent char", !7, i64 0}
!7 = !{!"Simple C/C++ TBAA"}
!8 = !{!9, !9, i64 0}
!9 = !{!"int", !6, i64 0}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass