; LLVM IR from OpenMathLib/OpenBLAS :: lapack-netlib/LAPACKE/src (lapacke_cgesvd_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_cgesvd_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, ptr noundef %14) #0 {
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i8, align 1
  %19 = alloca i8, align 1
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca ptr, align 8
  %23 = alloca i32, align 4
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca i32, align 4
  %27 = alloca ptr, align 8
  %28 = alloca i32, align 4
  %29 = alloca ptr, align 8
  %30 = alloca i32, align 4
  %31 = alloca ptr, align 8
  %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 i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca i32, align 4
  store i32 %0, ptr %17, align 4, !tbaa !5
  store i8 %1, ptr %18, align 1, !tbaa !9
  store i8 %2, ptr %19, align 1, !tbaa !9
  store i32 %3, ptr %20, align 4, !tbaa !5
  store i32 %4, ptr %21, align 4, !tbaa !5
  store ptr %5, ptr %22, align 8, !tbaa !10
  store i32 %6, ptr %23, align 4, !tbaa !5
  store ptr %7, ptr %24, align 8, !tbaa !10
  store ptr %8, ptr %25, align 8, !tbaa !10
  store i32 %9, ptr %26, align 4, !tbaa !5
  store ptr %10, ptr %27, align 8, !tbaa !10
  store i32 %11, ptr %28, align 4, !tbaa !5
  store ptr %12, ptr %29, align 8, !tbaa !10
  store i32 %13, ptr %30, align 4, !tbaa !5
  store ptr %14, ptr %31, align 8, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #6
  store i32 0, ptr %32, align 4, !tbaa !5
  %44 = load i32, ptr %17, align 4, !tbaa !5
  %45 = icmp eq i32 %44, 102
  br i1 %45, label %46, label %59

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

55:                                               ; preds = %46
  %56 = load i32, ptr %32, align 4, !tbaa !5
  %57 = sub nsw i32 %56, 1
  store i32 %57, ptr %32, align 4, !tbaa !5
  br label %58

58:                                               ; preds = %55, %46
  br label %364

59:                                               ; preds = %15
  %60 = load i32, ptr %17, align 4, !tbaa !5
  %61 = icmp eq i32 %60, 101
  br i1 %61, label %62, label %361

62:                                               ; preds = %59
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #6
  %63 = load i8, ptr %18, align 1, !tbaa !9
  %64 = call i32 @LAPACKE_lsame(i8 noundef signext %63, i8 noundef signext 97) #7
  %65 = icmp ne i32 %64, 0
  br i1 %65, label %70, label %66

66:                                               ; preds = %62
  %67 = load i8, ptr %18, align 1, !tbaa !9
  %68 = call i32 @LAPACKE_lsame(i8 noundef signext %67, i8 noundef signext 115) #7
  %69 = icmp ne i32 %68, 0
  br i1 %69, label %70, label %72

70:                                               ; preds = %66, %62
  %71 = load i32, ptr %20, align 4, !tbaa !5
  br label %73

72:                                               ; preds = %66
  br label %73

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

78:                                               ; preds = %73
  %79 = load i32, ptr %20, align 4, !tbaa !5
  br label %97

80:                                               ; preds = %73
  %81 = load i8, ptr %18, align 1, !tbaa !9
  %82 = call i32 @LAPACKE_lsame(i8 noundef signext %81, i8 noundef signext 115) #7
  %83 = icmp ne i32 %82, 0
  br i1 %83, label %84, label %94

84:                                               ; preds = %80
  %85 = load i32, ptr %20, align 4, !tbaa !5
  %86 = load i32, ptr %21, align 4, !tbaa !5
  %87 = icmp slt i32 %85, %86
  br i1 %87, label %88, label %90

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

90:                                               ; preds = %84
  %91 = load i32, ptr %21, align 4, !tbaa !5
  br label %92

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

94:                                               ; preds = %80
  br label %95

95:                                               ; preds = %94, %92
  %96 = phi i32 [ %93, %92 ], [ 1, %94 ]
  br label %97

97:                                               ; preds = %95, %78
  %98 = phi i32 [ %79, %78 ], [ %96, %95 ]
  store i32 %98, ptr %34, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #6
  %99 = load i8, ptr %19, align 1, !tbaa !9
  %100 = call i32 @LAPACKE_lsame(i8 noundef signext %99, i8 noundef signext 97) #7
  %101 = icmp ne i32 %100, 0
  br i1 %101, label %102, label %104

102:                                              ; preds = %97
  %103 = load i32, ptr %21, align 4, !tbaa !5
  br label %121

104:                                              ; preds = %97
  %105 = load i8, ptr %19, align 1, !tbaa !9
  %106 = call i32 @LAPACKE_lsame(i8 noundef signext %105, i8 noundef signext 115) #7
  %107 = icmp ne i32 %106, 0
  br i1 %107, label %108, label %118

108:                                              ; preds = %104
  %109 = load i32, ptr %20, align 4, !tbaa !5
  %110 = load i32, ptr %21, align 4, !tbaa !5
  %111 = icmp slt i32 %109, %110
  br i1 %111, label %112, label %114

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

114:                                              ; preds = %108
  %115 = load i32, ptr %21, align 4, !tbaa !5
  br label %116

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

118:                                              ; preds = %104
  br label %119

119:                                              ; preds = %118, %116
  %120 = phi i32 [ %117, %116 ], [ 1, %118 ]
  br label %121

121:                                              ; preds = %119, %102
  %122 = phi i32 [ %103, %102 ], [ %120, %119 ]
  store i32 %122, ptr %35, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #6
  %123 = load i8, ptr %19, align 1, !tbaa !9
  %124 = call i32 @LAPACKE_lsame(i8 noundef signext %123, i8 noundef signext 97) #7
  %125 = icmp ne i32 %124, 0
  br i1 %125, label %130, label %126

126:                                              ; preds = %121
  %127 = load i8, ptr %19, align 1, !tbaa !9
  %128 = call i32 @LAPACKE_lsame(i8 noundef signext %127, i8 noundef signext 115) #7
  %129 = icmp ne i32 %128, 0
  br i1 %129, label %130, label %132

130:                                              ; preds = %126, %121
  %131 = load i32, ptr %21, align 4, !tbaa !5
  br label %133

132:                                              ; preds = %126
  br label %133

133:                                              ; preds = %132, %130
  %134 = phi i32 [ %131, %130 ], [ 1, %132 ]
  store i32 %134, ptr %36, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #6
  %135 = load i32, ptr %20, align 4, !tbaa !5
  %136 = icmp sgt i32 1, %135
  br i1 %136, label %137, label %138

137:                                              ; preds = %133
  br label %140

138:                                              ; preds = %133
  %139 = load i32, ptr %20, align 4, !tbaa !5
  br label %140

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

144:                                              ; preds = %140
  br label %147

145:                                              ; preds = %140
  %146 = load i32, ptr %33, align 4, !tbaa !5
  br label %147

147:                                              ; preds = %145, %144
  %148 = phi i32 [ 1, %144 ], [ %146, %145 ]
  store i32 %148, ptr %38, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #6
  %149 = load i32, ptr %35, align 4, !tbaa !5
  %150 = icmp sgt i32 1, %149
  br i1 %150, label %151, label %152

151:                                              ; preds = %147
  br label %154

152:                                              ; preds = %147
  %153 = load i32, ptr %35, align 4, !tbaa !5
  br label %154

154:                                              ; preds = %152, %151
  %155 = phi i32 [ 1, %151 ], [ %153, %152 ]
  store i32 %155, ptr %39, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #6
  store ptr null, ptr %40, align 8, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #6
  store ptr null, ptr %41, align 8, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #6
  store ptr null, ptr %42, align 8, !tbaa !10
  %156 = load i32, ptr %23, align 4, !tbaa !5
  %157 = load i32, ptr %21, align 4, !tbaa !5
  %158 = icmp slt i32 %156, %157
  br i1 %158, label %159, label %162

159:                                              ; preds = %154
  store i32 -7, ptr %32, align 4, !tbaa !5
  %160 = load i32, ptr %32, align 4, !tbaa !5
  call void @LAPACKE_xerbla(ptr noundef @.str, i32 noundef %160)
  %161 = load i32, ptr %32, align 4, !tbaa !5
  store i32 %161, ptr %16, align 4
  store i32 1, ptr %43, align 4
  br label %358

162:                                              ; preds = %154
  %163 = load i32, ptr %26, align 4, !tbaa !5
  %164 = load i32, ptr %34, align 4, !tbaa !5
  %165 = icmp slt i32 %163, %164
  br i1 %165, label %166, label %169

166:                                              ; preds = %162
  store i32 -10, ptr %32, align 4, !tbaa !5
  %167 = load i32, ptr %32, align 4, !tbaa !5
  call void @LAPACKE_xerbla(ptr noundef @.str, i32 noundef %167)
  %168 = load i32, ptr %32, align 4, !tbaa !5
  store i32 %168, ptr %16, align 4
  store i32 1, ptr %43, align 4
  br label %358

169:                                              ; preds = %162
  %170 = load i8, ptr %19, align 1, !tbaa !9
  %171 = call i32 @LAPACKE_lsame(i8 noundef signext %170, i8 noundef signext 97) #7
  %172 = icmp ne i32 %171, 0
  br i1 %172, label %177, label %173

173:                                              ; preds = %169
  %174 = load i8, ptr %19, align 1, !tbaa !9
  %175 = call i32 @LAPACKE_lsame(i8 noundef signext %174, i8 noundef signext 115) #7
  %176 = icmp ne i32 %175, 0
  br i1 %176, label %177, label %185

177:                                              ; preds = %173, %169
  %178 = load i32, ptr %28, align 4, !tbaa !5
  %179 = load i32, ptr %36, align 4, !tbaa !5
  %180 = icmp slt i32 %178, %179
  br i1 %180, label %181, label %184

181:                                              ; preds = %177
  store i32 -12, ptr %32, align 4, !tbaa !5
  %182 = load i32, ptr %32, align 4, !tbaa !5
  call void @LAPACKE_xerbla(ptr noundef @.str, i32 noundef %182)
  %183 = load i32, ptr %32, align 4, !tbaa !5
  store i32 %183, ptr %16, align 4
  store i32 1, ptr %43, align 4
  br label %358

184:                                              ; preds = %177
  br label %185

185:                                              ; preds = %184, %173
  %186 = load i32, ptr %30, align 4, !tbaa !5
  %187 = icmp eq i32 %186, -1
  br i1 %187, label %188, label %204

188:                                              ; preds = %185
  %189 = load ptr, ptr %22, align 8, !tbaa !10
  %190 = load ptr, ptr %24, align 8, !tbaa !10
  %191 = load ptr, ptr %25, align 8, !tbaa !10
  %192 = load ptr, ptr %27, align 8, !tbaa !10
  %193 = load ptr, ptr %29, align 8, !tbaa !10
  %194 = load ptr, ptr %31, align 8, !tbaa !10
  call void @cgesvd_(ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %189, ptr noundef %37, ptr noundef %190, ptr noundef %191, ptr noundef %38, ptr noundef %192, ptr noundef %39, ptr noundef %193, ptr noundef %30, ptr noundef %194, ptr noundef %32, i64 noundef 1, i64 noundef 1)
  %195 = load i32, ptr %32, align 4, !tbaa !5
  %196 = icmp slt i32 %195, 0
  br i1 %196, label %197, label %200

197:                                              ; preds = %188
  %198 = load i32, ptr %32, align 4, !tbaa !5
  %199 = sub nsw i32 %198, 1
  br label %202

200:                                              ; preds = %188
  %201 = load i32, ptr %32, align 4, !tbaa !5
  br label %202

202:                                              ; preds = %200, %197
  %203 = phi i32 [ %199, %197 ], [ %201, %200 ]
  store i32 %203, ptr %16, align 4
  store i32 1, ptr %43, align 4
  br label %358

204:                                              ; preds = %185
  %205 = load i32, ptr %37, align 4, !tbaa !5
  %206 = sext i32 %205 to i64
  %207 = mul i64 8, %206
  %208 = load i32, ptr %21, align 4, !tbaa !5
  %209 = icmp sgt i32 1, %208
  br i1 %209, label %210, label %211

210:                                              ; preds = %204
  br label %213

211:                                              ; preds = %204
  %212 = load i32, ptr %21, align 4, !tbaa !5
  br label %213

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

220:                                              ; preds = %213
  store i32 -1011, ptr %32, align 4, !tbaa !5
  br label %352

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

225:                                              ; preds = %221
  %226 = load i8, ptr %18, align 1, !tbaa !9
  %227 = call i32 @LAPACKE_lsame(i8 noundef signext %226, i8 noundef signext 115) #7
  %228 = icmp ne i32 %227, 0
  br i1 %228, label %229, label %247

229:                                              ; preds = %225, %221
  %230 = load i32, ptr %38, align 4, !tbaa !5
  %231 = sext i32 %230 to i64
  %232 = mul i64 8, %231
  %233 = load i32, ptr %34, align 4, !tbaa !5
  %234 = icmp sgt i32 1, %233
  br i1 %234, label %235, label %236

235:                                              ; preds = %229
  br label %238

236:                                              ; preds = %229
  %237 = load i32, ptr %34, align 4, !tbaa !5
  br label %238

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

245:                                              ; preds = %238
  store i32 -1011, ptr %32, align 4, !tbaa !5
  br label %350

246:                                              ; preds = %238
  br label %247

247:                                              ; preds = %246, %225
  %248 = load i8, ptr %19, align 1, !tbaa !9
  %249 = call i32 @LAPACKE_lsame(i8 noundef signext %248, i8 noundef signext 97) #7
  %250 = icmp ne i32 %249, 0
  br i1 %250, label %255, label %251

251:                                              ; preds = %247
  %252 = load i8, ptr %19, align 1, !tbaa !9
  %253 = call i32 @LAPACKE_lsame(i8 noundef signext %252, i8 noundef signext 115) #7
  %254 = icmp ne i32 %253, 0
  br i1 %254, label %255, label %273

255:                                              ; preds = %251, %247
  %256 = load i32, ptr %39, align 4, !tbaa !5
  %257 = sext i32 %256 to i64
  %258 = mul i64 8, %257
  %259 = load i32, ptr %21, align 4, !tbaa !5
  %260 = icmp sgt i32 1, %259
  br i1 %260, label %261, label %262

261:                                              ; preds = %255
  br label %264

262:                                              ; preds = %255
  %263 = load i32, ptr %21, align 4, !tbaa !5
  br label %264

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

271:                                              ; preds = %264
  store i32 -1011, ptr %32, align 4, !tbaa !5
  br label %339

272:                                              ; preds = %264
  br label %273

273:                                              ; preds = %272, %251
  %274 = load i32, ptr %17, align 4, !tbaa !5
  %275 = load i32, ptr %20, align 4, !tbaa !5
  %276 = load i32, ptr %21, align 4, !tbaa !5
  %277 = load ptr, ptr %22, align 8, !tbaa !10
  %278 = load i32, ptr %23, align 4, !tbaa !5
  %279 = load ptr, ptr %40, align 8, !tbaa !10
  %280 = load i32, ptr %37, align 4, !tbaa !5
  call void @LAPACKE_cge_trans(i32 noundef %274, i32 noundef %275, i32 noundef %276, ptr noundef %277, i32 noundef %278, ptr noundef %279, i32 noundef %280)
  %281 = load ptr, ptr %40, align 8, !tbaa !10
  %282 = load ptr, ptr %24, align 8, !tbaa !10
  %283 = load ptr, ptr %41, align 8, !tbaa !10
  %284 = load ptr, ptr %42, align 8, !tbaa !10
  %285 = load ptr, ptr %29, align 8, !tbaa !10
  %286 = load ptr, ptr %31, align 8, !tbaa !10
  call void @cgesvd_(ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %281, ptr noundef %37, ptr noundef %282, ptr noundef %283, ptr noundef %38, ptr noundef %284, ptr noundef %39, ptr noundef %285, ptr noundef %30, ptr noundef %286, ptr noundef %32, i64 noundef 1, i64 noundef 1)
  %287 = load i32, ptr %32, align 4, !tbaa !5
  %288 = icmp slt i32 %287, 0
  br i1 %288, label %289, label %292

289:                                              ; preds = %273
  %290 = load i32, ptr %32, align 4, !tbaa !5
  %291 = sub nsw i32 %290, 1
  store i32 %291, ptr %32, align 4, !tbaa !5
  br label %292

292:                                              ; preds = %289, %273
  %293 = load i32, ptr %20, align 4, !tbaa !5
  %294 = load i32, ptr %21, align 4, !tbaa !5
  %295 = load ptr, ptr %40, align 8, !tbaa !10
  %296 = load i32, ptr %37, align 4, !tbaa !5
  %297 = load ptr, ptr %22, align 8, !tbaa !10
  %298 = load i32, ptr %23, align 4, !tbaa !5
  call void @LAPACKE_cge_trans(i32 noundef 102, i32 noundef %293, i32 noundef %294, ptr noundef %295, i32 noundef %296, ptr noundef %297, i32 noundef %298)
  %299 = load i8, ptr %18, align 1, !tbaa !9
  %300 = call i32 @LAPACKE_lsame(i8 noundef signext %299, i8 noundef signext 97) #7
  %301 = icmp ne i32 %300, 0
  br i1 %301, label %306, label %302

302:                                              ; preds = %292
  %303 = load i8, ptr %18, align 1, !tbaa !9
  %304 = call i32 @LAPACKE_lsame(i8 noundef signext %303, i8 noundef signext 115) #7
  %305 = icmp ne i32 %304, 0
  br i1 %305, label %306, label %313

306:                                              ; preds = %302, %292
  %307 = load i32, ptr %33, align 4, !tbaa !5
  %308 = load i32, ptr %34, align 4, !tbaa !5
  %309 = load ptr, ptr %41, align 8, !tbaa !10
  %310 = load i32, ptr %38, align 4, !tbaa !5
  %311 = load ptr, ptr %25, align 8, !tbaa !10
  %312 = load i32, ptr %26, align 4, !tbaa !5
  call void @LAPACKE_cge_trans(i32 noundef 102, i32 noundef %307, i32 noundef %308, ptr noundef %309, i32 noundef %310, ptr noundef %311, i32 noundef %312)
  br label %313

313:                                              ; preds = %306, %302
  %314 = load i8, ptr %19, align 1, !tbaa !9
  %315 = call i32 @LAPACKE_lsame(i8 noundef signext %314, i8 noundef signext 97) #7
  %316 = icmp ne i32 %315, 0
  br i1 %316, label %321, label %317

317:                                              ; preds = %313
  %318 = load i8, ptr %19, align 1, !tbaa !9
  %319 = call i32 @LAPACKE_lsame(i8 noundef signext %318, i8 noundef signext 115) #7
  %320 = icmp ne i32 %319, 0
  br i1 %320, label %321, label %328

321:                                              ; preds = %317, %313
  %322 = load i32, ptr %35, align 4, !tbaa !5
  %323 = load i32, ptr %21, align 4, !tbaa !5
  %324 = load ptr, ptr %42, align 8, !tbaa !10
  %325 = load i32, ptr %39, align 4, !tbaa !5
  %326 = load ptr, ptr %27, align 8, !tbaa !10
  %327 = load i32, ptr %28, align 4, !tbaa !5
  call void @LAPACKE_cge_trans(i32 noundef 102, i32 noundef %322, i32 noundef %323, ptr noundef %324, i32 noundef %325, ptr noundef %326, i32 noundef %327)
  br label %328

328:                                              ; preds = %321, %317
  %329 = load i8, ptr %19, align 1, !tbaa !9
  %330 = call i32 @LAPACKE_lsame(i8 noundef signext %329, i8 noundef signext 97) #7
  %331 = icmp ne i32 %330, 0
  br i1 %331, label %336, label %332

332:                                              ; preds = %328
  %333 = load i8, ptr %19, align 1, !tbaa !9
  %334 = call i32 @LAPACKE_lsame(i8 noundef signext %333, i8 noundef signext 115) #7
  %335 = icmp ne i32 %334, 0
  br i1 %335, label %336, label %338

336:                                              ; preds = %332, %328
  %337 = load ptr, ptr %42, align 8, !tbaa !10
  call void @free(ptr noundef %337) #6
  br label %338

338:                                              ; preds = %336, %332
  br label %339

339:                                              ; preds = %338, %271
  %340 = load i8, ptr %18, align 1, !tbaa !9
  %341 = call i32 @LAPACKE_lsame(i8 noundef signext %340, i8 noundef signext 97) #7
  %342 = icmp ne i32 %341, 0
  br i1 %342, label %347, label %343

343:                                              ; preds = %339
  %344 = load i8, ptr %18, align 1, !tbaa !9
  %345 = call i32 @LAPACKE_lsame(i8 noundef signext %344, i8 noundef signext 115) #7
  %346 = icmp ne i32 %345, 0
  br i1 %346, label %347, label %349

347:                                              ; preds = %343, %339
  %348 = load ptr, ptr %41, align 8, !tbaa !10
  call void @free(ptr noundef %348) #6
  br label %349

349:                                              ; preds = %347, %343
  br label %350

350:                                              ; preds = %349, %245
  %351 = load ptr, ptr %40, align 8, !tbaa !10
  call void @free(ptr noundef %351) #6
  br label %352

352:                                              ; preds = %350, %220
  %353 = load i32, ptr %32, align 4, !tbaa !5
  %354 = icmp eq i32 %353, -1011
  br i1 %354, label %355, label %357

355:                                              ; preds = %352
  %356 = load i32, ptr %32, align 4, !tbaa !5
  call void @LAPACKE_xerbla(ptr noundef @.str, i32 noundef %356)
  br label %357

357:                                              ; preds = %355, %352
  store i32 0, ptr %43, align 4
  br label %358

358:                                              ; preds = %357, %202, %181, %166, %159
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 4, 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
  %359 = load i32, ptr %43, align 4
  switch i32 %359, label %366 [
    i32 0, label %360
  ]

360:                                              ; preds = %358
  br label %363

361:                                              ; preds = %59
  store i32 -1, ptr %32, align 4, !tbaa !5
  %362 = load i32, ptr %32, align 4, !tbaa !5
  call void @LAPACKE_xerbla(ptr noundef @.str, i32 noundef %362)
  br label %363

363:                                              ; preds = %361, %360
  br label %364

364:                                              ; preds = %363, %58
  %365 = load i32, ptr %32, align 4, !tbaa !5
  store i32 %365, ptr %16, align 4
  store i32 1, ptr %43, align 4
  br label %366

366:                                              ; preds = %364, %358
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #6
  %367 = load i32, ptr %16, align 4
  ret i32 %367
}

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

declare void @cgesvd_(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, 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_cge_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_cgesvd_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, ptr noundef %14) local_unnamed_addr #0 {
  %16 = alloca i8, align 1
  %17 = alloca i8, align 1
  %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
  %27 = alloca i32, align 4
  store i8 %1, ptr %16, align 1, !tbaa !5
  store i8 %2, ptr %17, align 1, !tbaa !5
  store i32 %3, ptr %18, align 4, !tbaa !8
  store i32 %4, ptr %19, align 4, !tbaa !8
  store i32 %6, ptr %20, align 4, !tbaa !8
  store i32 %9, ptr %21, align 4, !tbaa !8
  store i32 %11, ptr %22, align 4, !tbaa !8
  store i32 %13, ptr %23, align 4, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #7
  store i32 0, ptr %24, align 4, !tbaa !8
  switch i32 %0, label %132 [
    i32 102, label %28
    i32 101, label %30
  ]

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

30:                                               ; preds = %15
  %31 = tail call i32 @LAPACKE_lsame(i8 noundef signext %1, i8 noundef signext 97) #8
  %.not = icmp eq i32 %31, 0
  br i1 %.not, label %.thread80, label %35

.thread80:                                        ; preds = %30
  %32 = tail call i32 @LAPACKE_lsame(i8 noundef signext %1, i8 noundef signext 115) #8
  %.not58 = icmp eq i32 %32, 0
  br i1 %.not58, label %35, label %33

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

35:                                               ; preds = %30, %33, %.thread80
  %36 = phi i32 [ %3, %33 ], [ 1, %.thread80 ], [ %3, %30 ]
  %37 = phi i32 [ %34, %33 ], [ 1, %.thread80 ], [ %3, %30 ]
  %38 = tail call i32 @LAPACKE_lsame(i8 noundef signext %2, i8 noundef signext 97) #8
  %.not61 = icmp eq i32 %38, 0
  br i1 %.not61, label %39, label %42

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

42:                                               ; preds = %39, %35
  %43 = phi i32 [ %4, %35 ], [ %.ph, %39 ]
  %44 = phi i32 [ %4, %35 ], [ %spec.select89, %39 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #7
  %45 = tail call i32 @llvm.smax.i32(i32 %3, 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 %36, i32 1)
  store i32 %46, ptr %26, align 4, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #7
  %47 = tail call i32 @llvm.smax.i32(i32 %43, i32 1)
  store i32 %47, ptr %27, align 4, !tbaa !8
  %48 = icmp slt i32 %6, %4
  br i1 %48, label %49, label %50

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

50:                                               ; preds = %42
  %51 = icmp sgt i32 %37, %9
  br i1 %51, label %52, label %53

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

53:                                               ; preds = %50
  br i1 %.not61, label %54, label %57

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

57:                                               ; preds = %53
  %.old79 = icmp sgt i32 %44, %11
  br i1 %.old79, label %58, label %59

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

59:                                               ; preds = %57, %54
  %60 = icmp eq i32 %13, -1
  br i1 %60, label %61, label %64

61:                                               ; preds = %59
  call void @cgesvd_(ptr noundef nonnull %16, ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef %5, ptr noundef nonnull %25, ptr noundef %7, ptr noundef %8, ptr noundef nonnull %26, ptr noundef %10, ptr noundef nonnull %27, ptr noundef %12, ptr noundef nonnull %23, ptr noundef %14, ptr noundef nonnull %24, i64 noundef 1, i64 noundef 1) #7
  %62 = load i32, ptr %24, align 4
  %.lobit = ashr i32 %62, 31
  %63 = add nsw i32 %.lobit, %62
  br label %.thread86

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

.thread82:                                        ; preds = %64
  store i32 -1011, ptr %24, align 4, !tbaa !8
  br label %130

72:                                               ; preds = %64
  br i1 %.not, label %73, label %75

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

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

.thread83:                                        ; preds = %75
  store i32 -1011, ptr %24, align 4, !tbaa !8
  tail call void @free(ptr noundef nonnull %70) #7
  br label %130

83:                                               ; preds = %75, %73
  %.048 = phi ptr [ %81, %75 ], [ null, %73 ]
  br i1 %.not61, label %84, label %86

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

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

92:                                               ; preds = %86
  store i32 -1011, ptr %24, align 4, !tbaa !8
  br label %122

93:                                               ; preds = %86, %84
  %.047 = phi ptr [ %90, %86 ], [ null, %84 ]
  tail call void @LAPACKE_cge_trans(i32 noundef 101, i32 noundef %3, i32 noundef %4, ptr noundef %5, i32 noundef %6, ptr noundef nonnull %70, i32 noundef %45) #7
  call void @cgesvd_(ptr noundef nonnull %16, ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef nonnull %70, ptr noundef nonnull %25, ptr noundef %7, ptr noundef %.048, ptr noundef nonnull %26, ptr noundef %.047, ptr noundef nonnull %27, ptr noundef %12, ptr noundef nonnull %23, ptr noundef %14, ptr noundef nonnull %24, i64 noundef 1, i64 noundef 1) #7
  %94 = load i32, ptr %24, align 4, !tbaa !8
  %95 = icmp slt i32 %94, 0
  br i1 %95, label %96, label %98

96:                                               ; preds = %93
  %97 = add nsw i32 %94, -1
  store i32 %97, ptr %24, align 4, !tbaa !8
  br label %98

98:                                               ; preds = %96, %93
  %99 = load i32, ptr %18, align 4, !tbaa !8
  %100 = load i32, ptr %19, align 4, !tbaa !8
  %101 = load i32, ptr %25, align 4, !tbaa !8
  call void @LAPACKE_cge_trans(i32 noundef 102, i32 noundef %99, i32 noundef %100, ptr noundef nonnull %70, i32 noundef %101, ptr noundef %5, i32 noundef %6) #7
  %102 = load i8, ptr %16, align 1, !tbaa !5
  %103 = call i32 @LAPACKE_lsame(i8 noundef signext %102, i8 noundef signext 97) #8
  %.not71 = icmp eq i32 %103, 0
  br i1 %.not71, label %104, label %106

104:                                              ; preds = %98
  %105 = call i32 @LAPACKE_lsame(i8 noundef signext %102, i8 noundef signext 115) #8
  %.not72 = icmp eq i32 %105, 0
  br i1 %.not72, label %108, label %106

106:                                              ; preds = %104, %98
  %107 = load i32, ptr %26, align 4, !tbaa !8
  call void @LAPACKE_cge_trans(i32 noundef 102, i32 noundef %36, i32 noundef %37, ptr noundef %.048, i32 noundef %107, ptr noundef %8, i32 noundef %9) #7
  br label %108

108:                                              ; preds = %106, %104
  %109 = load i8, ptr %17, align 1, !tbaa !5
  %110 = call i32 @LAPACKE_lsame(i8 noundef signext %109, i8 noundef signext 97) #8
  %.not73 = icmp eq i32 %110, 0
  br i1 %.not73, label %111, label %113

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

113:                                              ; preds = %111, %108
  %114 = load i32, ptr %19, align 4, !tbaa !8
  %115 = load i32, ptr %27, align 4, !tbaa !8
  call void @LAPACKE_cge_trans(i32 noundef 102, i32 noundef %43, i32 noundef %114, ptr noundef %.047, i32 noundef %115, ptr noundef %10, i32 noundef %11) #7
  %.pre = load i8, ptr %17, align 1, !tbaa !5
  br label %116

116:                                              ; preds = %113, %111
  %117 = phi i8 [ %.pre, %113 ], [ %109, %111 ]
  %118 = call i32 @LAPACKE_lsame(i8 noundef signext %117, i8 noundef signext 97) #8
  %.not75 = icmp eq i32 %118, 0
  br i1 %.not75, label %119, label %121

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

121:                                              ; preds = %119, %116
  call void @free(ptr noundef %.047) #7
  br label %122

122:                                              ; preds = %119, %121, %92
  %123 = load i8, ptr %16, align 1, !tbaa !5
  %124 = call i32 @LAPACKE_lsame(i8 noundef signext %123, i8 noundef signext 97) #8
  %.not77 = icmp eq i32 %124, 0
  br i1 %.not77, label %125, label %127

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

127:                                              ; preds = %125, %122
  call void @free(ptr noundef %.048) #7
  br label %128

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

130:                                              ; preds = %.thread83, %.thread82, %128
  call void @LAPACKE_xerbla(ptr noundef nonnull @.str, i32 noundef -1011) #7
  %.pre90.pre = load i32, ptr %24, align 4, !tbaa !8
  br label %131

.thread86:                                        ; preds = %49, %52, %58, %61
  %.049.ph = phi i32 [ %63, %61 ], [ -12, %58 ], [ -10, %52 ], [ -7, %49 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #7
  br label %133

131:                                              ; preds = %128, %130
  %.pre90 = phi i32 [ %.pr.pr, %128 ], [ %.pre90.pre, %130 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #7
  br label %133

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

133:                                              ; preds = %28, %132, %131, %.thread86
  %.1 = phi i32 [ %.049.ph, %.thread86 ], [ %.pre90, %131 ], [ -1, %132 ], [ %spec.select, %28 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #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 @cgesvd_(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, 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_cge_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