; LLVM IR from OpenMathLib/OpenBLAS :: lapack-netlib/LAPACKE/src (lapacke_zgedmdq_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 [21 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @LAPACKE_zgedmdq_work(i32 noundef %0, i8 noundef signext %1, i8 noundef signext %2, i8 noundef signext %3, i8 noundef signext %4, i8 noundef signext %5, i8 noundef signext %6, i32 noundef %7, i32 noundef %8, i32 noundef %9, ptr noundef %10, i32 noundef %11, ptr noundef %12, i32 noundef %13, ptr noundef %14, i32 noundef %15, i32 noundef %16, ptr noundef %17, i32 noundef %18, ptr noundef %19, ptr noundef %20, i32 noundef %21, ptr noundef %22, ptr noundef %23, i32 noundef %24, ptr noundef %25, i32 noundef %26, ptr noundef %27, i32 noundef %28, ptr noundef %29, i32 noundef %30, ptr noundef %31, i32 noundef %32, ptr noundef %33, i32 noundef %34) #0 {
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i8, align 1
  %39 = alloca i8, align 1
  %40 = alloca i8, align 1
  %41 = alloca i8, align 1
  %42 = alloca i8, align 1
  %43 = alloca i8, align 1
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca ptr, align 8
  %48 = alloca i32, align 4
  %49 = alloca ptr, align 8
  %50 = alloca i32, align 4
  %51 = alloca ptr, align 8
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca ptr, align 8
  %55 = alloca i32, align 4
  %56 = alloca ptr, align 8
  %57 = alloca ptr, align 8
  %58 = alloca i32, align 4
  %59 = alloca ptr, align 8
  %60 = alloca ptr, align 8
  %61 = alloca i32, align 4
  %62 = alloca ptr, align 8
  %63 = alloca i32, align 4
  %64 = alloca ptr, align 8
  %65 = alloca i32, align 4
  %66 = alloca ptr, align 8
  %67 = alloca i32, align 4
  %68 = alloca ptr, align 8
  %69 = alloca i32, align 4
  %70 = alloca ptr, align 8
  %71 = alloca i32, align 4
  %72 = alloca i32, align 4
  %73 = alloca i32, align 4
  %74 = alloca i32, align 4
  %75 = alloca i32, align 4
  %76 = alloca i32, align 4
  %77 = alloca i32, align 4
  %78 = alloca i32, align 4
  %79 = alloca i32, align 4
  %80 = alloca ptr, align 8
  %81 = alloca ptr, align 8
  %82 = alloca ptr, align 8
  %83 = alloca ptr, align 8
  %84 = alloca ptr, align 8
  %85 = alloca ptr, align 8
  %86 = alloca ptr, align 8
  %87 = alloca i32, align 4
  store i32 %0, ptr %37, align 4, !tbaa !5
  store i8 %1, ptr %38, align 1, !tbaa !9
  store i8 %2, ptr %39, align 1, !tbaa !9
  store i8 %3, ptr %40, align 1, !tbaa !9
  store i8 %4, ptr %41, align 1, !tbaa !9
  store i8 %5, ptr %42, align 1, !tbaa !9
  store i8 %6, ptr %43, align 1, !tbaa !9
  store i32 %7, ptr %44, align 4, !tbaa !5
  store i32 %8, ptr %45, align 4, !tbaa !5
  store i32 %9, ptr %46, align 4, !tbaa !5
  store ptr %10, ptr %47, align 8, !tbaa !10
  store i32 %11, ptr %48, align 4, !tbaa !5
  store ptr %12, ptr %49, align 8, !tbaa !10
  store i32 %13, ptr %50, align 4, !tbaa !5
  store ptr %14, ptr %51, align 8, !tbaa !10
  store i32 %15, ptr %52, align 4, !tbaa !5
  store i32 %16, ptr %53, align 4, !tbaa !5
  store ptr %17, ptr %54, align 8, !tbaa !10
  store i32 %18, ptr %55, align 4, !tbaa !5
  store ptr %19, ptr %56, align 8, !tbaa !10
  store ptr %20, ptr %57, align 8, !tbaa !10
  store i32 %21, ptr %58, align 4, !tbaa !5
  store ptr %22, ptr %59, align 8, !tbaa !10
  store ptr %23, ptr %60, align 8, !tbaa !10
  store i32 %24, ptr %61, align 4, !tbaa !5
  store ptr %25, ptr %62, align 8, !tbaa !10
  store i32 %26, ptr %63, align 4, !tbaa !5
  store ptr %27, ptr %64, align 8, !tbaa !10
  store i32 %28, ptr %65, align 4, !tbaa !5
  store ptr %29, ptr %66, align 8, !tbaa !10
  store i32 %30, ptr %67, align 4, !tbaa !5
  store ptr %31, ptr %68, align 8, !tbaa !10
  store i32 %32, ptr %69, align 4, !tbaa !5
  store ptr %33, ptr %70, align 8, !tbaa !10
  store i32 %34, ptr %71, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #5
  store i32 0, ptr %72, align 4, !tbaa !5
  %88 = load i32, ptr %37, align 4, !tbaa !5
  %89 = icmp eq i32 %88, 102
  br i1 %89, label %90, label %110

90:                                               ; preds = %35
  %91 = load ptr, ptr %47, align 8, !tbaa !10
  %92 = load ptr, ptr %49, align 8, !tbaa !10
  %93 = load ptr, ptr %51, align 8, !tbaa !10
  %94 = load ptr, ptr %54, align 8, !tbaa !10
  %95 = load ptr, ptr %56, align 8, !tbaa !10
  %96 = load ptr, ptr %57, align 8, !tbaa !10
  %97 = load ptr, ptr %59, align 8, !tbaa !10
  %98 = load ptr, ptr %60, align 8, !tbaa !10
  %99 = load ptr, ptr %62, align 8, !tbaa !10
  %100 = load ptr, ptr %64, align 8, !tbaa !10
  %101 = load ptr, ptr %66, align 8, !tbaa !10
  %102 = load ptr, ptr %68, align 8, !tbaa !10
  %103 = load ptr, ptr %70, align 8, !tbaa !10
  call void @zgedmdq_(ptr noundef %38, ptr noundef %39, ptr noundef %40, ptr noundef %41, ptr noundef %42, ptr noundef %43, ptr noundef %44, ptr noundef %45, ptr noundef %46, ptr noundef %91, ptr noundef %48, ptr noundef %92, ptr noundef %50, ptr noundef %93, ptr noundef %52, ptr noundef %53, ptr noundef %94, ptr noundef %55, ptr noundef %95, ptr noundef %96, ptr noundef %58, ptr noundef %97, ptr noundef %98, ptr noundef %61, ptr noundef %99, ptr noundef %63, ptr noundef %100, ptr noundef %65, ptr noundef %101, ptr noundef %67, ptr noundef %102, ptr noundef %69, ptr noundef %103, ptr noundef %71, ptr noundef %72, i64 noundef 1, i64 noundef 1, i64 noundef 1, i64 noundef 1, i64 noundef 1, i64 noundef 1)
  %104 = load i32, ptr %72, align 4, !tbaa !5
  %105 = icmp slt i32 %104, 0
  br i1 %105, label %106, label %109

106:                                              ; preds = %90
  %107 = load i32, ptr %72, align 4, !tbaa !5
  %108 = sub nsw i32 %107, 1
  store i32 %108, ptr %72, align 4, !tbaa !5
  br label %109

109:                                              ; preds = %106, %90
  br label %495

110:                                              ; preds = %35
  %111 = load i32, ptr %37, align 4, !tbaa !5
  %112 = icmp eq i32 %111, 101
  br i1 %112, label %113, label %492

113:                                              ; preds = %110
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #5
  %114 = load i32, ptr %45, align 4, !tbaa !5
  %115 = icmp sgt i32 1, %114
  br i1 %115, label %116, label %117

116:                                              ; preds = %113
  br label %119

117:                                              ; preds = %113
  %118 = load i32, ptr %45, align 4, !tbaa !5
  br label %119

119:                                              ; preds = %117, %116
  %120 = phi i32 [ 1, %116 ], [ %118, %117 ]
  store i32 %120, ptr %73, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #5
  %121 = load i32, ptr %45, align 4, !tbaa !5
  %122 = icmp sgt i32 1, %121
  br i1 %122, label %123, label %124

123:                                              ; preds = %119
  br label %126

124:                                              ; preds = %119
  %125 = load i32, ptr %45, align 4, !tbaa !5
  br label %126

126:                                              ; preds = %124, %123
  %127 = phi i32 [ 1, %123 ], [ %125, %124 ]
  store i32 %127, ptr %74, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #5
  %128 = load i32, ptr %45, align 4, !tbaa !5
  %129 = icmp sgt i32 1, %128
  br i1 %129, label %130, label %131

130:                                              ; preds = %126
  br label %133

131:                                              ; preds = %126
  %132 = load i32, ptr %45, align 4, !tbaa !5
  br label %133

133:                                              ; preds = %131, %130
  %134 = phi i32 [ 1, %130 ], [ %132, %131 ]
  store i32 %134, ptr %75, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #5
  %135 = load i32, ptr %45, 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 %45, align 4, !tbaa !5
  br label %140

140:                                              ; preds = %138, %137
  %141 = phi i32 [ 1, %137 ], [ %139, %138 ]
  store i32 %141, ptr %76, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #5
  %142 = load i32, ptr %45, 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 %45, align 4, !tbaa !5
  br label %147

147:                                              ; preds = %145, %144
  %148 = phi i32 [ 1, %144 ], [ %146, %145 ]
  store i32 %148, ptr %77, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #5
  %149 = load i32, ptr %45, 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 %45, align 4, !tbaa !5
  br label %154

154:                                              ; preds = %152, %151
  %155 = phi i32 [ 1, %151 ], [ %153, %152 ]
  store i32 %155, ptr %78, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #5
  %156 = load i32, ptr %45, align 4, !tbaa !5
  %157 = icmp sgt i32 1, %156
  br i1 %157, label %158, label %159

158:                                              ; preds = %154
  br label %161

159:                                              ; preds = %154
  %160 = load i32, ptr %45, align 4, !tbaa !5
  br label %161

161:                                              ; preds = %159, %158
  %162 = phi i32 [ 1, %158 ], [ %160, %159 ]
  store i32 %162, ptr %79, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #5
  store ptr null, ptr %80, align 8, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #5
  store ptr null, ptr %81, align 8, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #5
  store ptr null, ptr %82, align 8, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #5
  store ptr null, ptr %83, align 8, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #5
  store ptr null, ptr %84, align 8, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #5
  store ptr null, ptr %85, align 8, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #5
  store ptr null, ptr %86, align 8, !tbaa !10
  %163 = load i32, ptr %48, align 4, !tbaa !5
  %164 = load i32, ptr %46, align 4, !tbaa !5
  %165 = icmp slt i32 %163, %164
  br i1 %165, label %166, label %169

166:                                              ; preds = %161
  store i32 -12, ptr %72, align 4, !tbaa !5
  %167 = load i32, ptr %72, align 4, !tbaa !5
  call void @LAPACKE_xerbla(ptr noundef @.str, i32 noundef %167)
  %168 = load i32, ptr %72, align 4, !tbaa !5
  store i32 %168, ptr %36, align 4
  store i32 1, ptr %87, align 4
  br label %489

169:                                              ; preds = %161
  %170 = load i32, ptr %50, align 4, !tbaa !5
  %171 = load i32, ptr %46, align 4, !tbaa !5
  %172 = icmp slt i32 %170, %171
  br i1 %172, label %173, label %176

173:                                              ; preds = %169
  store i32 -14, ptr %72, align 4, !tbaa !5
  %174 = load i32, ptr %72, align 4, !tbaa !5
  call void @LAPACKE_xerbla(ptr noundef @.str, i32 noundef %174)
  %175 = load i32, ptr %72, align 4, !tbaa !5
  store i32 %175, ptr %36, align 4
  store i32 1, ptr %87, align 4
  br label %489

176:                                              ; preds = %169
  %177 = load i32, ptr %52, align 4, !tbaa !5
  %178 = load i32, ptr %46, align 4, !tbaa !5
  %179 = icmp slt i32 %177, %178
  br i1 %179, label %180, label %183

180:                                              ; preds = %176
  store i32 -16, ptr %72, align 4, !tbaa !5
  %181 = load i32, ptr %72, align 4, !tbaa !5
  call void @LAPACKE_xerbla(ptr noundef @.str, i32 noundef %181)
  %182 = load i32, ptr %72, align 4, !tbaa !5
  store i32 %182, ptr %36, align 4
  store i32 1, ptr %87, align 4
  br label %489

183:                                              ; preds = %176
  %184 = load i32, ptr %58, align 4, !tbaa !5
  %185 = load i32, ptr %46, align 4, !tbaa !5
  %186 = icmp slt i32 %184, %185
  br i1 %186, label %187, label %190

187:                                              ; preds = %183
  store i32 -23, ptr %72, align 4, !tbaa !5
  %188 = load i32, ptr %72, align 4, !tbaa !5
  call void @LAPACKE_xerbla(ptr noundef @.str, i32 noundef %188)
  %189 = load i32, ptr %72, align 4, !tbaa !5
  store i32 %189, ptr %36, align 4
  store i32 1, ptr %87, align 4
  br label %489

190:                                              ; preds = %183
  %191 = load i32, ptr %61, align 4, !tbaa !5
  %192 = load i32, ptr %46, align 4, !tbaa !5
  %193 = icmp slt i32 %191, %192
  br i1 %193, label %194, label %197

194:                                              ; preds = %190
  store i32 -26, ptr %72, align 4, !tbaa !5
  %195 = load i32, ptr %72, align 4, !tbaa !5
  call void @LAPACKE_xerbla(ptr noundef @.str, i32 noundef %195)
  %196 = load i32, ptr %72, align 4, !tbaa !5
  store i32 %196, ptr %36, align 4
  store i32 1, ptr %87, align 4
  br label %489

197:                                              ; preds = %190
  %198 = load i32, ptr %63, align 4, !tbaa !5
  %199 = load i32, ptr %46, align 4, !tbaa !5
  %200 = icmp slt i32 %198, %199
  br i1 %200, label %201, label %204

201:                                              ; preds = %197
  store i32 -28, ptr %72, align 4, !tbaa !5
  %202 = load i32, ptr %72, align 4, !tbaa !5
  call void @LAPACKE_xerbla(ptr noundef @.str, i32 noundef %202)
  %203 = load i32, ptr %72, align 4, !tbaa !5
  store i32 %203, ptr %36, align 4
  store i32 1, ptr %87, align 4
  br label %489

204:                                              ; preds = %197
  %205 = load i32, ptr %65, align 4, !tbaa !5
  %206 = load i32, ptr %46, align 4, !tbaa !5
  %207 = icmp slt i32 %205, %206
  br i1 %207, label %208, label %211

208:                                              ; preds = %204
  store i32 -30, ptr %72, align 4, !tbaa !5
  %209 = load i32, ptr %72, align 4, !tbaa !5
  call void @LAPACKE_xerbla(ptr noundef @.str, i32 noundef %209)
  %210 = load i32, ptr %72, align 4, !tbaa !5
  store i32 %210, ptr %36, align 4
  store i32 1, ptr %87, align 4
  br label %489

211:                                              ; preds = %204
  %212 = load i32, ptr %69, align 4, !tbaa !5
  %213 = icmp eq i32 %212, -1
  br i1 %213, label %217, label %214

214:                                              ; preds = %211
  %215 = load i32, ptr %71, align 4, !tbaa !5
  %216 = icmp eq i32 %215, -1
  br i1 %216, label %217, label %240

217:                                              ; preds = %214, %211
  %218 = load ptr, ptr %47, align 8, !tbaa !10
  %219 = load ptr, ptr %49, align 8, !tbaa !10
  %220 = load ptr, ptr %51, align 8, !tbaa !10
  %221 = load ptr, ptr %54, align 8, !tbaa !10
  %222 = load ptr, ptr %56, align 8, !tbaa !10
  %223 = load ptr, ptr %57, align 8, !tbaa !10
  %224 = load ptr, ptr %59, align 8, !tbaa !10
  %225 = load ptr, ptr %60, align 8, !tbaa !10
  %226 = load ptr, ptr %62, align 8, !tbaa !10
  %227 = load ptr, ptr %64, align 8, !tbaa !10
  %228 = load ptr, ptr %66, align 8, !tbaa !10
  %229 = load ptr, ptr %68, align 8, !tbaa !10
  %230 = load ptr, ptr %70, align 8, !tbaa !10
  call void @zgedmdq_(ptr noundef %38, ptr noundef %39, ptr noundef %40, ptr noundef %41, ptr noundef %42, ptr noundef %43, ptr noundef %44, ptr noundef %45, ptr noundef %46, ptr noundef %218, ptr noundef %48, ptr noundef %219, ptr noundef %50, ptr noundef %220, ptr noundef %52, ptr noundef %53, ptr noundef %221, ptr noundef %55, ptr noundef %222, ptr noundef %223, ptr noundef %58, ptr noundef %224, ptr noundef %225, ptr noundef %61, ptr noundef %226, ptr noundef %63, ptr noundef %227, ptr noundef %65, ptr noundef %228, ptr noundef %67, ptr noundef %229, ptr noundef %69, ptr noundef %230, ptr noundef %71, ptr noundef %72, i64 noundef 1, i64 noundef 1, i64 noundef 1, i64 noundef 1, i64 noundef 1, i64 noundef 1)
  %231 = load i32, ptr %72, align 4, !tbaa !5
  %232 = icmp slt i32 %231, 0
  br i1 %232, label %233, label %236

233:                                              ; preds = %217
  %234 = load i32, ptr %72, align 4, !tbaa !5
  %235 = sub nsw i32 %234, 1
  br label %238

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

238:                                              ; preds = %236, %233
  %239 = phi i32 [ %235, %233 ], [ %237, %236 ]
  store i32 %239, ptr %36, align 4
  store i32 1, ptr %87, align 4
  br label %489

240:                                              ; preds = %214
  %241 = load i32, ptr %73, align 4, !tbaa !5
  %242 = sext i32 %241 to i64
  %243 = mul i64 16, %242
  %244 = load i32, ptr %46, align 4, !tbaa !5
  %245 = icmp sgt i32 1, %244
  br i1 %245, label %246, label %247

246:                                              ; preds = %240
  br label %249

247:                                              ; preds = %240
  %248 = load i32, ptr %46, align 4, !tbaa !5
  br label %249

249:                                              ; preds = %247, %246
  %250 = phi i32 [ 1, %246 ], [ %248, %247 ]
  %251 = sext i32 %250 to i64
  %252 = mul i64 %243, %251
  %253 = call noalias ptr @malloc(i64 noundef %252) #6
  store ptr %253, ptr %80, align 8, !tbaa !10
  %254 = load ptr, ptr %80, align 8, !tbaa !10
  %255 = icmp eq ptr %254, null
  br i1 %255, label %256, label %257

256:                                              ; preds = %249
  store i32 -1011, ptr %72, align 4, !tbaa !5
  br label %483

257:                                              ; preds = %249
  %258 = load i32, ptr %74, align 4, !tbaa !5
  %259 = sext i32 %258 to i64
  %260 = mul i64 16, %259
  %261 = load i32, ptr %46, align 4, !tbaa !5
  %262 = icmp sgt i32 1, %261
  br i1 %262, label %263, label %264

263:                                              ; preds = %257
  br label %266

264:                                              ; preds = %257
  %265 = load i32, ptr %46, align 4, !tbaa !5
  br label %266

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

273:                                              ; preds = %266
  store i32 -1011, ptr %72, align 4, !tbaa !5
  br label %481

274:                                              ; preds = %266
  %275 = load i32, ptr %75, align 4, !tbaa !5
  %276 = sext i32 %275 to i64
  %277 = mul i64 16, %276
  %278 = load i32, ptr %46, align 4, !tbaa !5
  %279 = icmp sgt i32 1, %278
  br i1 %279, label %280, label %281

280:                                              ; preds = %274
  br label %283

281:                                              ; preds = %274
  %282 = load i32, ptr %46, align 4, !tbaa !5
  br label %283

283:                                              ; preds = %281, %280
  %284 = phi i32 [ 1, %280 ], [ %282, %281 ]
  %285 = sext i32 %284 to i64
  %286 = mul i64 %277, %285
  %287 = call noalias ptr @malloc(i64 noundef %286) #6
  store ptr %287, ptr %82, align 8, !tbaa !10
  %288 = load ptr, ptr %82, align 8, !tbaa !10
  %289 = icmp eq ptr %288, null
  br i1 %289, label %290, label %291

290:                                              ; preds = %283
  store i32 -1011, ptr %72, align 4, !tbaa !5
  br label %479

291:                                              ; preds = %283
  %292 = load i32, ptr %76, align 4, !tbaa !5
  %293 = sext i32 %292 to i64
  %294 = mul i64 16, %293
  %295 = load i32, ptr %46, align 4, !tbaa !5
  %296 = icmp sgt i32 1, %295
  br i1 %296, label %297, label %298

297:                                              ; preds = %291
  br label %300

298:                                              ; preds = %291
  %299 = load i32, ptr %46, align 4, !tbaa !5
  br label %300

300:                                              ; preds = %298, %297
  %301 = phi i32 [ 1, %297 ], [ %299, %298 ]
  %302 = sext i32 %301 to i64
  %303 = mul i64 %294, %302
  %304 = call noalias ptr @malloc(i64 noundef %303) #6
  store ptr %304, ptr %83, align 8, !tbaa !10
  %305 = load ptr, ptr %83, align 8, !tbaa !10
  %306 = icmp eq ptr %305, null
  br i1 %306, label %307, label %308

307:                                              ; preds = %300
  store i32 -1011, ptr %72, align 4, !tbaa !5
  br label %477

308:                                              ; preds = %300
  %309 = load i32, ptr %77, align 4, !tbaa !5
  %310 = sext i32 %309 to i64
  %311 = mul i64 16, %310
  %312 = load i32, ptr %46, align 4, !tbaa !5
  %313 = icmp sgt i32 1, %312
  br i1 %313, label %314, label %315

314:                                              ; preds = %308
  br label %317

315:                                              ; preds = %308
  %316 = load i32, ptr %46, align 4, !tbaa !5
  br label %317

317:                                              ; preds = %315, %314
  %318 = phi i32 [ 1, %314 ], [ %316, %315 ]
  %319 = sext i32 %318 to i64
  %320 = mul i64 %311, %319
  %321 = call noalias ptr @malloc(i64 noundef %320) #6
  store ptr %321, ptr %84, align 8, !tbaa !10
  %322 = load ptr, ptr %84, align 8, !tbaa !10
  %323 = icmp eq ptr %322, null
  br i1 %323, label %324, label %325

324:                                              ; preds = %317
  store i32 -1011, ptr %72, align 4, !tbaa !5
  br label %475

325:                                              ; preds = %317
  %326 = load i32, ptr %78, align 4, !tbaa !5
  %327 = sext i32 %326 to i64
  %328 = mul i64 16, %327
  %329 = load i32, ptr %46, align 4, !tbaa !5
  %330 = icmp sgt i32 1, %329
  br i1 %330, label %331, label %332

331:                                              ; preds = %325
  br label %334

332:                                              ; preds = %325
  %333 = load i32, ptr %46, align 4, !tbaa !5
  br label %334

334:                                              ; preds = %332, %331
  %335 = phi i32 [ 1, %331 ], [ %333, %332 ]
  %336 = sext i32 %335 to i64
  %337 = mul i64 %328, %336
  %338 = call noalias ptr @malloc(i64 noundef %337) #6
  store ptr %338, ptr %85, align 8, !tbaa !10
  %339 = load ptr, ptr %85, align 8, !tbaa !10
  %340 = icmp eq ptr %339, null
  br i1 %340, label %341, label %342

341:                                              ; preds = %334
  store i32 -1011, ptr %72, align 4, !tbaa !5
  br label %473

342:                                              ; preds = %334
  %343 = load i32, ptr %79, align 4, !tbaa !5
  %344 = sext i32 %343 to i64
  %345 = mul i64 16, %344
  %346 = load i32, ptr %46, align 4, !tbaa !5
  %347 = icmp sgt i32 1, %346
  br i1 %347, label %348, label %349

348:                                              ; preds = %342
  br label %351

349:                                              ; preds = %342
  %350 = load i32, ptr %46, align 4, !tbaa !5
  br label %351

351:                                              ; preds = %349, %348
  %352 = phi i32 [ 1, %348 ], [ %350, %349 ]
  %353 = sext i32 %352 to i64
  %354 = mul i64 %345, %353
  %355 = call noalias ptr @malloc(i64 noundef %354) #6
  store ptr %355, ptr %86, align 8, !tbaa !10
  %356 = load ptr, ptr %86, align 8, !tbaa !10
  %357 = icmp eq ptr %356, null
  br i1 %357, label %358, label %359

358:                                              ; preds = %351
  store i32 -1011, ptr %72, align 4, !tbaa !5
  br label %471

359:                                              ; preds = %351
  %360 = load i32, ptr %37, align 4, !tbaa !5
  %361 = load i32, ptr %45, align 4, !tbaa !5
  %362 = load i32, ptr %46, align 4, !tbaa !5
  %363 = load ptr, ptr %47, align 8, !tbaa !10
  %364 = load i32, ptr %48, align 4, !tbaa !5
  %365 = load ptr, ptr %80, align 8, !tbaa !10
  %366 = load i32, ptr %73, align 4, !tbaa !5
  call void @LAPACKE_zge_trans(i32 noundef %360, i32 noundef %361, i32 noundef %362, ptr noundef %363, i32 noundef %364, ptr noundef %365, i32 noundef %366)
  %367 = load i32, ptr %37, align 4, !tbaa !5
  %368 = load i32, ptr %45, align 4, !tbaa !5
  %369 = load i32, ptr %46, align 4, !tbaa !5
  %370 = load ptr, ptr %49, align 8, !tbaa !10
  %371 = load i32, ptr %50, align 4, !tbaa !5
  %372 = load ptr, ptr %81, align 8, !tbaa !10
  %373 = load i32, ptr %74, align 4, !tbaa !5
  call void @LAPACKE_zge_trans(i32 noundef %367, i32 noundef %368, i32 noundef %369, ptr noundef %370, i32 noundef %371, ptr noundef %372, i32 noundef %373)
  %374 = load i32, ptr %37, align 4, !tbaa !5
  %375 = load i32, ptr %45, align 4, !tbaa !5
  %376 = load i32, ptr %46, align 4, !tbaa !5
  %377 = load ptr, ptr %51, align 8, !tbaa !10
  %378 = load i32, ptr %52, align 4, !tbaa !5
  %379 = load ptr, ptr %82, align 8, !tbaa !10
  %380 = load i32, ptr %75, align 4, !tbaa !5
  call void @LAPACKE_zge_trans(i32 noundef %374, i32 noundef %375, i32 noundef %376, ptr noundef %377, i32 noundef %378, ptr noundef %379, i32 noundef %380)
  %381 = load i32, ptr %37, align 4, !tbaa !5
  %382 = load i32, ptr %45, align 4, !tbaa !5
  %383 = load i32, ptr %46, align 4, !tbaa !5
  %384 = load ptr, ptr %57, align 8, !tbaa !10
  %385 = load i32, ptr %58, align 4, !tbaa !5
  %386 = load ptr, ptr %83, align 8, !tbaa !10
  %387 = load i32, ptr %76, align 4, !tbaa !5
  call void @LAPACKE_zge_trans(i32 noundef %381, i32 noundef %382, i32 noundef %383, ptr noundef %384, i32 noundef %385, ptr noundef %386, i32 noundef %387)
  %388 = load i32, ptr %37, align 4, !tbaa !5
  %389 = load i32, ptr %45, align 4, !tbaa !5
  %390 = load i32, ptr %46, align 4, !tbaa !5
  %391 = load ptr, ptr %60, align 8, !tbaa !10
  %392 = load i32, ptr %61, align 4, !tbaa !5
  %393 = load ptr, ptr %84, align 8, !tbaa !10
  %394 = load i32, ptr %77, align 4, !tbaa !5
  call void @LAPACKE_zge_trans(i32 noundef %388, i32 noundef %389, i32 noundef %390, ptr noundef %391, i32 noundef %392, ptr noundef %393, i32 noundef %394)
  %395 = load i32, ptr %37, align 4, !tbaa !5
  %396 = load i32, ptr %45, align 4, !tbaa !5
  %397 = load i32, ptr %46, align 4, !tbaa !5
  %398 = load ptr, ptr %62, align 8, !tbaa !10
  %399 = load i32, ptr %63, align 4, !tbaa !5
  %400 = load ptr, ptr %85, align 8, !tbaa !10
  %401 = load i32, ptr %78, align 4, !tbaa !5
  call void @LAPACKE_zge_trans(i32 noundef %395, i32 noundef %396, i32 noundef %397, ptr noundef %398, i32 noundef %399, ptr noundef %400, i32 noundef %401)
  %402 = load i32, ptr %37, align 4, !tbaa !5
  %403 = load i32, ptr %45, align 4, !tbaa !5
  %404 = load i32, ptr %46, align 4, !tbaa !5
  %405 = load ptr, ptr %64, align 8, !tbaa !10
  %406 = load i32, ptr %65, align 4, !tbaa !5
  %407 = load ptr, ptr %86, align 8, !tbaa !10
  %408 = load i32, ptr %79, align 4, !tbaa !5
  call void @LAPACKE_zge_trans(i32 noundef %402, i32 noundef %403, i32 noundef %404, ptr noundef %405, i32 noundef %406, ptr noundef %407, i32 noundef %408)
  %409 = load ptr, ptr %47, align 8, !tbaa !10
  %410 = load ptr, ptr %49, align 8, !tbaa !10
  %411 = load ptr, ptr %51, align 8, !tbaa !10
  %412 = load ptr, ptr %54, align 8, !tbaa !10
  %413 = load ptr, ptr %56, align 8, !tbaa !10
  %414 = load ptr, ptr %57, align 8, !tbaa !10
  %415 = load ptr, ptr %59, align 8, !tbaa !10
  %416 = load ptr, ptr %60, align 8, !tbaa !10
  %417 = load ptr, ptr %62, align 8, !tbaa !10
  %418 = load ptr, ptr %64, align 8, !tbaa !10
  %419 = load ptr, ptr %66, align 8, !tbaa !10
  %420 = load ptr, ptr %68, align 8, !tbaa !10
  %421 = load ptr, ptr %70, align 8, !tbaa !10
  call void @zgedmdq_(ptr noundef %38, ptr noundef %39, ptr noundef %40, ptr noundef %41, ptr noundef %42, ptr noundef %43, ptr noundef %44, ptr noundef %45, ptr noundef %46, ptr noundef %409, ptr noundef %48, ptr noundef %410, ptr noundef %50, ptr noundef %411, ptr noundef %52, ptr noundef %53, ptr noundef %412, ptr noundef %55, ptr noundef %413, ptr noundef %414, ptr noundef %58, ptr noundef %415, ptr noundef %416, ptr noundef %61, ptr noundef %417, ptr noundef %63, ptr noundef %418, ptr noundef %65, ptr noundef %419, ptr noundef %67, ptr noundef %420, ptr noundef %69, ptr noundef %421, ptr noundef %71, ptr noundef %72, i64 noundef 1, i64 noundef 1, i64 noundef 1, i64 noundef 1, i64 noundef 1, i64 noundef 1)
  %422 = load i32, ptr %72, align 4, !tbaa !5
  %423 = icmp slt i32 %422, 0
  br i1 %423, label %424, label %427

424:                                              ; preds = %359
  %425 = load i32, ptr %72, align 4, !tbaa !5
  %426 = sub nsw i32 %425, 1
  store i32 %426, ptr %72, align 4, !tbaa !5
  br label %427

427:                                              ; preds = %424, %359
  %428 = load i32, ptr %45, align 4, !tbaa !5
  %429 = load i32, ptr %46, align 4, !tbaa !5
  %430 = load ptr, ptr %80, align 8, !tbaa !10
  %431 = load i32, ptr %73, align 4, !tbaa !5
  %432 = load ptr, ptr %47, align 8, !tbaa !10
  %433 = load i32, ptr %48, align 4, !tbaa !5
  call void @LAPACKE_zge_trans(i32 noundef 102, i32 noundef %428, i32 noundef %429, ptr noundef %430, i32 noundef %431, ptr noundef %432, i32 noundef %433)
  %434 = load i32, ptr %45, align 4, !tbaa !5
  %435 = load i32, ptr %46, align 4, !tbaa !5
  %436 = load ptr, ptr %81, align 8, !tbaa !10
  %437 = load i32, ptr %74, align 4, !tbaa !5
  %438 = load ptr, ptr %49, align 8, !tbaa !10
  %439 = load i32, ptr %50, align 4, !tbaa !5
  call void @LAPACKE_zge_trans(i32 noundef 102, i32 noundef %434, i32 noundef %435, ptr noundef %436, i32 noundef %437, ptr noundef %438, i32 noundef %439)
  %440 = load i32, ptr %45, align 4, !tbaa !5
  %441 = load i32, ptr %46, align 4, !tbaa !5
  %442 = load ptr, ptr %82, align 8, !tbaa !10
  %443 = load i32, ptr %75, align 4, !tbaa !5
  %444 = load ptr, ptr %51, align 8, !tbaa !10
  %445 = load i32, ptr %52, align 4, !tbaa !5
  call void @LAPACKE_zge_trans(i32 noundef 102, i32 noundef %440, i32 noundef %441, ptr noundef %442, i32 noundef %443, ptr noundef %444, i32 noundef %445)
  %446 = load i32, ptr %45, align 4, !tbaa !5
  %447 = load i32, ptr %46, align 4, !tbaa !5
  %448 = load ptr, ptr %83, align 8, !tbaa !10
  %449 = load i32, ptr %76, align 4, !tbaa !5
  %450 = load ptr, ptr %57, align 8, !tbaa !10
  %451 = load i32, ptr %58, align 4, !tbaa !5
  call void @LAPACKE_zge_trans(i32 noundef 102, i32 noundef %446, i32 noundef %447, ptr noundef %448, i32 noundef %449, ptr noundef %450, i32 noundef %451)
  %452 = load i32, ptr %45, align 4, !tbaa !5
  %453 = load i32, ptr %46, align 4, !tbaa !5
  %454 = load ptr, ptr %84, align 8, !tbaa !10
  %455 = load i32, ptr %77, align 4, !tbaa !5
  %456 = load ptr, ptr %60, align 8, !tbaa !10
  %457 = load i32, ptr %61, align 4, !tbaa !5
  call void @LAPACKE_zge_trans(i32 noundef 102, i32 noundef %452, i32 noundef %453, ptr noundef %454, i32 noundef %455, ptr noundef %456, i32 noundef %457)
  %458 = load i32, ptr %45, align 4, !tbaa !5
  %459 = load i32, ptr %46, align 4, !tbaa !5
  %460 = load ptr, ptr %85, align 8, !tbaa !10
  %461 = load i32, ptr %78, align 4, !tbaa !5
  %462 = load ptr, ptr %62, align 8, !tbaa !10
  %463 = load i32, ptr %63, align 4, !tbaa !5
  call void @LAPACKE_zge_trans(i32 noundef 102, i32 noundef %458, i32 noundef %459, ptr noundef %460, i32 noundef %461, ptr noundef %462, i32 noundef %463)
  %464 = load i32, ptr %45, align 4, !tbaa !5
  %465 = load i32, ptr %46, align 4, !tbaa !5
  %466 = load ptr, ptr %86, align 8, !tbaa !10
  %467 = load i32, ptr %79, align 4, !tbaa !5
  %468 = load ptr, ptr %64, align 8, !tbaa !10
  %469 = load i32, ptr %65, align 4, !tbaa !5
  call void @LAPACKE_zge_trans(i32 noundef 102, i32 noundef %464, i32 noundef %465, ptr noundef %466, i32 noundef %467, ptr noundef %468, i32 noundef %469)
  %470 = load ptr, ptr %86, align 8, !tbaa !10
  call void @free(ptr noundef %470) #5
  br label %471

471:                                              ; preds = %427, %358
  %472 = load ptr, ptr %85, align 8, !tbaa !10
  call void @free(ptr noundef %472) #5
  br label %473

473:                                              ; preds = %471, %341
  %474 = load ptr, ptr %84, align 8, !tbaa !10
  call void @free(ptr noundef %474) #5
  br label %475

475:                                              ; preds = %473, %324
  %476 = load ptr, ptr %83, align 8, !tbaa !10
  call void @free(ptr noundef %476) #5
  br label %477

477:                                              ; preds = %475, %307
  %478 = load ptr, ptr %82, align 8, !tbaa !10
  call void @free(ptr noundef %478) #5
  br label %479

479:                                              ; preds = %477, %290
  %480 = load ptr, ptr %81, align 8, !tbaa !10
  call void @free(ptr noundef %480) #5
  br label %481

481:                                              ; preds = %479, %273
  %482 = load ptr, ptr %80, align 8, !tbaa !10
  call void @free(ptr noundef %482) #5
  br label %483

483:                                              ; preds = %481, %256
  %484 = load i32, ptr %72, align 4, !tbaa !5
  %485 = icmp eq i32 %484, -1011
  br i1 %485, label %486, label %488

486:                                              ; preds = %483
  %487 = load i32, ptr %72, align 4, !tbaa !5
  call void @LAPACKE_xerbla(ptr noundef @.str, i32 noundef %487)
  br label %488

488:                                              ; preds = %486, %483
  store i32 0, ptr %87, align 4
  br label %489

489:                                              ; preds = %488, %238, %208, %201, %194, %187, %180, %173, %166
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #5
  %490 = load i32, ptr %87, align 4
  switch i32 %490, label %497 [
    i32 0, label %491
  ]

491:                                              ; preds = %489
  br label %494

492:                                              ; preds = %110
  store i32 -1, ptr %72, align 4, !tbaa !5
  %493 = load i32, ptr %72, align 4, !tbaa !5
  call void @LAPACKE_xerbla(ptr noundef @.str, i32 noundef %493)
  br label %494

494:                                              ; preds = %492, %491
  br label %495

495:                                              ; preds = %494, %109
  %496 = load i32, ptr %72, align 4, !tbaa !5
  store i32 %496, ptr %36, align 4
  store i32 1, ptr %87, align 4
  br label %497

497:                                              ; preds = %495, %489
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #5
  %498 = load i32, ptr %36, align 4
  ret i32 %498
}

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

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

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

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

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

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

; 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 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 #4 = { 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 #5 = { nounwind }
attributes #6 = { 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 [21 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @LAPACKE_zgedmdq_work(i32 noundef %0, i8 noundef signext %1, i8 noundef signext %2, i8 noundef signext %3, i8 noundef signext %4, i8 noundef signext %5, i8 noundef signext %6, i32 noundef %7, i32 noundef %8, i32 noundef %9, ptr noundef %10, i32 noundef %11, ptr noundef %12, i32 noundef %13, ptr noundef %14, i32 noundef %15, i32 noundef %16, ptr noundef %17, i32 noundef %18, ptr noundef %19, ptr noundef %20, i32 noundef %21, ptr noundef %22, ptr noundef %23, i32 noundef %24, ptr noundef %25, i32 noundef %26, ptr noundef %27, i32 noundef %28, ptr noundef %29, i32 noundef %30, ptr noundef %31, i32 noundef %32, ptr noundef %33, i32 noundef %34) local_unnamed_addr #0 {
  %36 = alloca i8, align 1
  %37 = alloca i8, align 1
  %38 = alloca i8, align 1
  %39 = alloca i8, align 1
  %40 = alloca i8, align 1
  %41 = alloca i8, align 1
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  store i8 %1, ptr %36, align 1, !tbaa !5
  store i8 %2, ptr %37, align 1, !tbaa !5
  store i8 %3, ptr %38, align 1, !tbaa !5
  store i8 %4, ptr %39, align 1, !tbaa !5
  store i8 %5, ptr %40, align 1, !tbaa !5
  store i8 %6, ptr %41, align 1, !tbaa !5
  store i32 %7, ptr %42, align 4, !tbaa !8
  store i32 %8, ptr %43, align 4, !tbaa !8
  store i32 %9, ptr %44, align 4, !tbaa !8
  store i32 %11, ptr %45, align 4, !tbaa !8
  store i32 %13, ptr %46, align 4, !tbaa !8
  store i32 %15, ptr %47, align 4, !tbaa !8
  store i32 %16, ptr %48, align 4, !tbaa !8
  store i32 %18, ptr %49, align 4, !tbaa !8
  store i32 %21, ptr %50, align 4, !tbaa !8
  store i32 %24, ptr %51, align 4, !tbaa !8
  store i32 %26, ptr %52, align 4, !tbaa !8
  store i32 %28, ptr %53, align 4, !tbaa !8
  store i32 %30, ptr %54, align 4, !tbaa !8
  store i32 %32, ptr %55, align 4, !tbaa !8
  store i32 %34, ptr %56, align 4, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %57) #6
  store i32 0, ptr %57, align 4, !tbaa !8
  switch i32 %0, label %151 [
    i32 102, label %58
    i32 101, label %60
  ]

58:                                               ; preds = %35
  call void @zgedmdq_(ptr noundef nonnull %36, ptr noundef nonnull %37, ptr noundef nonnull %38, ptr noundef nonnull %39, ptr noundef nonnull %40, ptr noundef nonnull %41, ptr noundef nonnull %42, ptr noundef nonnull %43, ptr noundef nonnull %44, ptr noundef %10, ptr noundef nonnull %45, ptr noundef %12, ptr noundef nonnull %46, ptr noundef %14, ptr noundef nonnull %47, ptr noundef nonnull %48, ptr noundef %17, ptr noundef nonnull %49, ptr noundef %19, ptr noundef %20, ptr noundef nonnull %50, ptr noundef %22, ptr noundef %23, ptr noundef nonnull %51, ptr noundef %25, ptr noundef nonnull %52, ptr noundef %27, ptr noundef nonnull %53, ptr noundef %29, ptr noundef nonnull %54, ptr noundef %31, ptr noundef nonnull %55, ptr noundef %33, ptr noundef nonnull %56, ptr noundef nonnull %57, i64 noundef 1, i64 noundef 1, i64 noundef 1, i64 noundef 1, i64 noundef 1, i64 noundef 1) #6
  %59 = load i32, ptr %57, align 4, !tbaa !8
  %.lobit135 = ashr i32 %59, 31
  %spec.select = add nsw i32 %59, %.lobit135
  br label %.thread128

60:                                               ; preds = %35
  %61 = tail call i32 @llvm.smax.i32(i32 %8, i32 1)
  %62 = icmp slt i32 %11, %9
  br i1 %62, label %63, label %64

63:                                               ; preds = %60
  tail call void @LAPACKE_xerbla(ptr noundef nonnull @.str, i32 noundef -12) #6
  br label %.thread128

64:                                               ; preds = %60
  %65 = icmp slt i32 %13, %9
  br i1 %65, label %66, label %67

66:                                               ; preds = %64
  tail call void @LAPACKE_xerbla(ptr noundef nonnull @.str, i32 noundef -14) #6
  br label %.thread128

67:                                               ; preds = %64
  %68 = icmp slt i32 %15, %9
  br i1 %68, label %69, label %70

69:                                               ; preds = %67
  tail call void @LAPACKE_xerbla(ptr noundef nonnull @.str, i32 noundef -16) #6
  br label %.thread128

70:                                               ; preds = %67
  %71 = icmp slt i32 %21, %9
  br i1 %71, label %72, label %73

72:                                               ; preds = %70
  tail call void @LAPACKE_xerbla(ptr noundef nonnull @.str, i32 noundef -23) #6
  br label %.thread128

73:                                               ; preds = %70
  %74 = icmp slt i32 %24, %9
  br i1 %74, label %75, label %76

75:                                               ; preds = %73
  tail call void @LAPACKE_xerbla(ptr noundef nonnull @.str, i32 noundef -26) #6
  br label %.thread128

76:                                               ; preds = %73
  %77 = icmp slt i32 %26, %9
  br i1 %77, label %78, label %79

78:                                               ; preds = %76
  tail call void @LAPACKE_xerbla(ptr noundef nonnull @.str, i32 noundef -28) #6
  br label %.thread128

79:                                               ; preds = %76
  %80 = icmp slt i32 %28, %9
  br i1 %80, label %81, label %82

81:                                               ; preds = %79
  tail call void @LAPACKE_xerbla(ptr noundef nonnull @.str, i32 noundef -30) #6
  br label %.thread128

82:                                               ; preds = %79
  %83 = icmp eq i32 %32, -1
  %84 = icmp eq i32 %34, -1
  %or.cond = or i1 %83, %84
  br i1 %or.cond, label %85, label %88

85:                                               ; preds = %82
  call void @zgedmdq_(ptr noundef nonnull %36, ptr noundef nonnull %37, ptr noundef nonnull %38, ptr noundef nonnull %39, ptr noundef nonnull %40, ptr noundef nonnull %41, ptr noundef nonnull %42, ptr noundef nonnull %43, ptr noundef nonnull %44, ptr noundef %10, ptr noundef nonnull %45, ptr noundef %12, ptr noundef nonnull %46, ptr noundef %14, ptr noundef nonnull %47, ptr noundef nonnull %48, ptr noundef %17, ptr noundef nonnull %49, ptr noundef %19, ptr noundef %20, ptr noundef nonnull %50, ptr noundef %22, ptr noundef %23, ptr noundef nonnull %51, ptr noundef %25, ptr noundef nonnull %52, ptr noundef %27, ptr noundef nonnull %53, ptr noundef %29, ptr noundef nonnull %54, ptr noundef %31, ptr noundef nonnull %55, ptr noundef %33, ptr noundef nonnull %56, ptr noundef nonnull %57, i64 noundef 1, i64 noundef 1, i64 noundef 1, i64 noundef 1, i64 noundef 1, i64 noundef 1) #6
  %86 = load i32, ptr %57, align 4
  %.lobit = ashr i32 %86, 31
  %87 = add nsw i32 %.lobit, %86
  br label %.thread128

88:                                               ; preds = %82
  %89 = zext nneg i32 %61 to i64
  %90 = shl nuw nsw i64 %89, 4
  %91 = tail call i32 @llvm.smax.i32(i32 %9, i32 1)
  %92 = zext nneg i32 %91 to i64
  %93 = mul i64 %90, %92
  %94 = tail call noalias ptr @malloc(i64 noundef %93) #7
  %95 = icmp eq ptr %94, null
  br i1 %95, label %.thread, label %96

.thread:                                          ; preds = %88
  store i32 -1011, ptr %57, align 4, !tbaa !8
  br label %150

96:                                               ; preds = %88
  %97 = tail call noalias ptr @malloc(i64 noundef %93) #7
  %98 = icmp eq ptr %97, null
  br i1 %98, label %.thread126, label %99

.thread126:                                       ; preds = %96
  store i32 -1011, ptr %57, align 4, !tbaa !8
  tail call void @free(ptr noundef nonnull %94) #6
  br label %150

99:                                               ; preds = %96
  %100 = tail call noalias ptr @malloc(i64 noundef %93) #7
  %101 = icmp eq ptr %100, null
  br i1 %101, label %.critedge, label %102

.critedge:                                        ; preds = %99
  store i32 -1011, ptr %57, align 4, !tbaa !8
  tail call void @free(ptr noundef nonnull %97) #6
  tail call void @free(ptr noundef nonnull %94) #6
  br label %150

102:                                              ; preds = %99
  %103 = tail call noalias ptr @malloc(i64 noundef %93) #7
  %104 = icmp eq ptr %103, null
  br i1 %104, label %105, label %106

105:                                              ; preds = %102
  store i32 -1011, ptr %57, align 4, !tbaa !8
  br label %148

106:                                              ; preds = %102
  %107 = tail call noalias ptr @malloc(i64 noundef %93) #7
  %108 = icmp eq ptr %107, null
  br i1 %108, label %109, label %110

109:                                              ; preds = %106
  store i32 -1011, ptr %57, align 4, !tbaa !8
  br label %147

110:                                              ; preds = %106
  %111 = tail call noalias ptr @malloc(i64 noundef %93) #7
  %112 = icmp eq ptr %111, null
  br i1 %112, label %113, label %114

113:                                              ; preds = %110
  store i32 -1011, ptr %57, align 4, !tbaa !8
  br label %146

114:                                              ; preds = %110
  %115 = tail call noalias ptr @malloc(i64 noundef %93) #7
  %116 = icmp eq ptr %115, null
  br i1 %116, label %117, label %118

117:                                              ; preds = %114
  store i32 -1011, ptr %57, align 4, !tbaa !8
  br label %145

118:                                              ; preds = %114
  tail call void @LAPACKE_zge_trans(i32 noundef 101, i32 noundef %8, i32 noundef %9, ptr noundef %10, i32 noundef %11, ptr noundef nonnull %94, i32 noundef %61) #6
  tail call void @LAPACKE_zge_trans(i32 noundef 101, i32 noundef %8, i32 noundef %9, ptr noundef %12, i32 noundef %13, ptr noundef nonnull %97, i32 noundef %61) #6
  tail call void @LAPACKE_zge_trans(i32 noundef 101, i32 noundef %8, i32 noundef %9, ptr noundef %14, i32 noundef %15, ptr noundef nonnull %100, i32 noundef %61) #6
  tail call void @LAPACKE_zge_trans(i32 noundef 101, i32 noundef %8, i32 noundef %9, ptr noundef %20, i32 noundef %21, ptr noundef nonnull %103, i32 noundef %61) #6
  tail call void @LAPACKE_zge_trans(i32 noundef 101, i32 noundef %8, i32 noundef %9, ptr noundef %23, i32 noundef %24, ptr noundef nonnull %107, i32 noundef %61) #6
  tail call void @LAPACKE_zge_trans(i32 noundef 101, i32 noundef %8, i32 noundef %9, ptr noundef %25, i32 noundef %26, ptr noundef nonnull %111, i32 noundef %61) #6
  tail call void @LAPACKE_zge_trans(i32 noundef 101, i32 noundef %8, i32 noundef %9, ptr noundef %27, i32 noundef %28, ptr noundef nonnull %115, i32 noundef %61) #6
  call void @zgedmdq_(ptr noundef nonnull %36, ptr noundef nonnull %37, ptr noundef nonnull %38, ptr noundef nonnull %39, ptr noundef nonnull %40, ptr noundef nonnull %41, ptr noundef nonnull %42, ptr noundef nonnull %43, ptr noundef nonnull %44, ptr noundef %10, ptr noundef nonnull %45, ptr noundef %12, ptr noundef nonnull %46, ptr noundef %14, ptr noundef nonnull %47, ptr noundef nonnull %48, ptr noundef %17, ptr noundef nonnull %49, ptr noundef %19, ptr noundef %20, ptr noundef nonnull %50, ptr noundef %22, ptr noundef %23, ptr noundef nonnull %51, ptr noundef %25, ptr noundef nonnull %52, ptr noundef %27, ptr noundef nonnull %53, ptr noundef %29, ptr noundef nonnull %54, ptr noundef %31, ptr noundef nonnull %55, ptr noundef %33, ptr noundef nonnull %56, ptr noundef nonnull %57, i64 noundef 1, i64 noundef 1, i64 noundef 1, i64 noundef 1, i64 noundef 1, i64 noundef 1) #6
  %119 = load i32, ptr %57, align 4, !tbaa !8
  %120 = icmp slt i32 %119, 0
  br i1 %120, label %121, label %123

121:                                              ; preds = %118
  %122 = add nsw i32 %119, -1
  store i32 %122, ptr %57, align 4, !tbaa !8
  br label %123

123:                                              ; preds = %121, %118
  %124 = load i32, ptr %43, align 4, !tbaa !8
  %125 = load i32, ptr %44, align 4, !tbaa !8
  %126 = load i32, ptr %45, align 4, !tbaa !8
  call void @LAPACKE_zge_trans(i32 noundef 102, i32 noundef %124, i32 noundef %125, ptr noundef nonnull %94, i32 noundef %61, ptr noundef %10, i32 noundef %126) #6
  %127 = load i32, ptr %43, align 4, !tbaa !8
  %128 = load i32, ptr %44, align 4, !tbaa !8
  %129 = load i32, ptr %46, align 4, !tbaa !8
  call void @LAPACKE_zge_trans(i32 noundef 102, i32 noundef %127, i32 noundef %128, ptr noundef nonnull %97, i32 noundef %61, ptr noundef %12, i32 noundef %129) #6
  %130 = load i32, ptr %43, align 4, !tbaa !8
  %131 = load i32, ptr %44, align 4, !tbaa !8
  %132 = load i32, ptr %47, align 4, !tbaa !8
  call void @LAPACKE_zge_trans(i32 noundef 102, i32 noundef %130, i32 noundef %131, ptr noundef nonnull %100, i32 noundef %61, ptr noundef %14, i32 noundef %132) #6
  %133 = load i32, ptr %43, align 4, !tbaa !8
  %134 = load i32, ptr %44, align 4, !tbaa !8
  %135 = load i32, ptr %50, align 4, !tbaa !8
  call void @LAPACKE_zge_trans(i32 noundef 102, i32 noundef %133, i32 noundef %134, ptr noundef nonnull %103, i32 noundef %61, ptr noundef %20, i32 noundef %135) #6
  %136 = load i32, ptr %43, align 4, !tbaa !8
  %137 = load i32, ptr %44, align 4, !tbaa !8
  %138 = load i32, ptr %51, align 4, !tbaa !8
  call void @LAPACKE_zge_trans(i32 noundef 102, i32 noundef %136, i32 noundef %137, ptr noundef nonnull %107, i32 noundef %61, ptr noundef %23, i32 noundef %138) #6
  %139 = load i32, ptr %43, align 4, !tbaa !8
  %140 = load i32, ptr %44, align 4, !tbaa !8
  %141 = load i32, ptr %52, align 4, !tbaa !8
  call void @LAPACKE_zge_trans(i32 noundef 102, i32 noundef %139, i32 noundef %140, ptr noundef nonnull %111, i32 noundef %61, ptr noundef %25, i32 noundef %141) #6
  %142 = load i32, ptr %43, align 4, !tbaa !8
  %143 = load i32, ptr %44, align 4, !tbaa !8
  %144 = load i32, ptr %53, align 4, !tbaa !8
  call void @LAPACKE_zge_trans(i32 noundef 102, i32 noundef %142, i32 noundef %143, ptr noundef nonnull %115, i32 noundef %61, ptr noundef %27, i32 noundef %144) #6
  call void @free(ptr noundef nonnull %115) #6
  %.pr.pr.pr.pre.pre.pre.pre = load i32, ptr %57, align 4, !tbaa !8
  br label %145

145:                                              ; preds = %123, %117
  %.pr.pr.pr.pre.pre.pre = phi i32 [ %.pr.pr.pr.pre.pre.pre.pre, %123 ], [ -1011, %117 ]
  call void @free(ptr noundef nonnull %111) #6
  br label %146

146:                                              ; preds = %145, %113
  %.pr.pr.pr.pre.pre = phi i32 [ %.pr.pr.pr.pre.pre.pre, %145 ], [ -1011, %113 ]
  call void @free(ptr noundef nonnull %107) #6
  br label %147

147:                                              ; preds = %146, %109
  %.pr.pr.pr.pre = phi i32 [ %.pr.pr.pr.pre.pre, %146 ], [ -1011, %109 ]
  call void @free(ptr noundef nonnull %103) #6
  br label %148

148:                                              ; preds = %147, %105
  %.pr.pr.pr = phi i32 [ %.pr.pr.pr.pre, %147 ], [ -1011, %105 ]
  call void @free(ptr noundef nonnull %100) #6
  %149 = icmp eq i32 %.pr.pr.pr, -1011
  call void @free(ptr noundef nonnull %97) #6
  call void @free(ptr noundef nonnull %94) #6
  br i1 %149, label %150, label %.thread128

150:                                              ; preds = %.critedge, %.thread126, %.thread, %148
  call void @LAPACKE_xerbla(ptr noundef nonnull @.str, i32 noundef -1011) #6
  %.pre = load i32, ptr %57, align 4, !tbaa !8
  br label %.thread128

151:                                              ; preds = %35
  tail call void @LAPACKE_xerbla(ptr noundef nonnull @.str, i32 noundef -1) #6
  br label %.thread128

.thread128:                                       ; preds = %58, %151, %148, %150, %85, %81, %78, %75, %72, %69, %66, %63
  %.1 = phi i32 [ %87, %85 ], [ -30, %81 ], [ -28, %78 ], [ -26, %75 ], [ -23, %72 ], [ -16, %69 ], [ -14, %66 ], [ -12, %63 ], [ %.pre, %150 ], [ %.pr.pr.pr, %148 ], [ -1, %151 ], [ %spec.select, %58 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %57) #6
  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 @zgedmdq_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, 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, i64 noundef, i64 noundef, i64 noundef, i64 noundef) local_unnamed_addr #2

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 #3

declare void @LAPACKE_zge_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 #4

; 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.smax.i32(i32, i32) #5

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