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

; 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"

%struct.complex = type { float, float }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c__2 = external hidden global i64, align 8
@c__1 = external hidden global i64, align 8
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i64, align 8
@.str.5 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [11 x i8], align 1
@c__65 = external hidden global i64, align 8

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

93:                                               ; preds = %13
  %94 = load ptr, ptr %17, align 8, !tbaa !5
  %95 = load i64, ptr %94, align 8, !tbaa !9
  store i64 %95, ptr %50, align 8, !tbaa !9
  %96 = load ptr, ptr %18, align 8, !tbaa !5
  %97 = load i64, ptr %96, align 8, !tbaa !9
  store i64 %97, ptr %51, align 8, !tbaa !9
  br label %103

98:                                               ; preds = %13
  %99 = load ptr, ptr %18, align 8, !tbaa !5
  %100 = load i64, ptr %99, align 8, !tbaa !9
  store i64 %100, ptr %50, align 8, !tbaa !9
  %101 = load ptr, ptr %17, align 8, !tbaa !5
  %102 = load i64, ptr %101, align 8, !tbaa !9
  store i64 %102, ptr %51, align 8, !tbaa !9
  br label %103

103:                                              ; preds = %98, %93
  %104 = load i64, ptr %53, align 8, !tbaa !9
  %105 = icmp ne i64 %104, 0
  br i1 %105, label %112, label %106

106:                                              ; preds = %103
  %107 = load ptr, ptr %15, align 8, !tbaa !5
  %108 = call i64 @lsame_(ptr noundef %107, ptr noundef @.str.2)
  %109 = icmp ne i64 %108, 0
  br i1 %109, label %112, label %110

110:                                              ; preds = %106
  %111 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -1, ptr %111, align 8, !tbaa !9
  br label %195

112:                                              ; preds = %106, %103
  %113 = load i64, ptr %56, align 8, !tbaa !9
  %114 = icmp ne i64 %113, 0
  br i1 %114, label %121, label %115

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

119:                                              ; preds = %115
  %120 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -2, ptr %120, align 8, !tbaa !9
  br label %194

121:                                              ; preds = %115, %112
  %122 = load ptr, ptr %17, align 8, !tbaa !5
  %123 = load i64, ptr %122, align 8, !tbaa !9
  %124 = icmp slt i64 %123, 0
  br i1 %124, label %125, label %127

125:                                              ; preds = %121
  %126 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -3, ptr %126, align 8, !tbaa !9
  br label %193

127:                                              ; preds = %121
  %128 = load ptr, ptr %18, align 8, !tbaa !5
  %129 = load i64, ptr %128, align 8, !tbaa !9
  %130 = icmp slt i64 %129, 0
  br i1 %130, label %131, label %133

131:                                              ; preds = %127
  %132 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -4, ptr %132, align 8, !tbaa !9
  br label %192

133:                                              ; preds = %127
  %134 = load ptr, ptr %19, align 8, !tbaa !5
  %135 = load i64, ptr %134, align 8, !tbaa !9
  %136 = icmp slt i64 %135, 0
  br i1 %136, label %142, label %137

137:                                              ; preds = %133
  %138 = load ptr, ptr %19, align 8, !tbaa !5
  %139 = load i64, ptr %138, align 8, !tbaa !9
  %140 = load i64, ptr %50, align 8, !tbaa !9
  %141 = icmp sgt i64 %139, %140
  br i1 %141, label %142, label %144

142:                                              ; preds = %137, %133
  %143 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -5, ptr %143, align 8, !tbaa !9
  br label %191

144:                                              ; preds = %137
  %145 = load ptr, ptr %21, align 8, !tbaa !5
  %146 = load i64, ptr %145, align 8, !tbaa !9
  %147 = load i64, ptr %50, align 8, !tbaa !9
  %148 = icmp sge i64 1, %147
  br i1 %148, label %149, label %150

149:                                              ; preds = %144
  br label %152

150:                                              ; preds = %144
  %151 = load i64, ptr %50, align 8, !tbaa !9
  br label %152

152:                                              ; preds = %150, %149
  %153 = phi i64 [ 1, %149 ], [ %151, %150 ]
  %154 = icmp slt i64 %146, %153
  br i1 %154, label %155, label %157

155:                                              ; preds = %152
  %156 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -7, ptr %156, align 8, !tbaa !9
  br label %190

157:                                              ; preds = %152
  %158 = load ptr, ptr %24, align 8, !tbaa !5
  %159 = load i64, ptr %158, align 8, !tbaa !9
  %160 = load ptr, ptr %17, align 8, !tbaa !5
  %161 = load i64, ptr %160, align 8, !tbaa !9
  %162 = icmp sge i64 1, %161
  br i1 %162, label %163, label %164

163:                                              ; preds = %157
  br label %167

164:                                              ; preds = %157
  %165 = load ptr, ptr %17, align 8, !tbaa !5
  %166 = load i64, ptr %165, align 8, !tbaa !9
  br label %167

167:                                              ; preds = %164, %163
  %168 = phi i64 [ 1, %163 ], [ %166, %164 ]
  %169 = icmp slt i64 %159, %168
  br i1 %169, label %170, label %172

170:                                              ; preds = %167
  %171 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -10, ptr %171, align 8, !tbaa !9
  br label %189

172:                                              ; preds = %167
  %173 = load ptr, ptr %26, align 8, !tbaa !5
  %174 = load i64, ptr %173, align 8, !tbaa !9
  %175 = load i64, ptr %51, align 8, !tbaa !9
  %176 = icmp sge i64 1, %175
  br i1 %176, label %177, label %178

177:                                              ; preds = %172
  br label %180

178:                                              ; preds = %172
  %179 = load i64, ptr %51, align 8, !tbaa !9
  br label %180

180:                                              ; preds = %178, %177
  %181 = phi i64 [ 1, %177 ], [ %179, %178 ]
  %182 = icmp slt i64 %174, %181
  br i1 %182, label %183, label %188

183:                                              ; preds = %180
  %184 = load i64, ptr %59, align 8, !tbaa !9
  %185 = icmp ne i64 %184, 0
  br i1 %185, label %188, label %186

186:                                              ; preds = %183
  %187 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -12, ptr %187, align 8, !tbaa !9
  br label %188

188:                                              ; preds = %186, %183, %180
  br label %189

189:                                              ; preds = %188, %170
  br label %190

190:                                              ; preds = %189, %155
  br label %191

191:                                              ; preds = %190, %142
  br label %192

192:                                              ; preds = %191, %131
  br label %193

193:                                              ; preds = %192, %125
  br label %194

194:                                              ; preds = %193, %119
  br label %195

195:                                              ; preds = %194, %110
  %196 = load ptr, ptr %27, align 8, !tbaa !5
  %197 = load i64, ptr %196, align 8, !tbaa !9
  %198 = icmp eq i64 %197, 0
  br i1 %198, label %199, label %241

199:                                              ; preds = %195
  %200 = getelementptr inbounds [2 x i64], ptr %35, i64 0, i64 0
  store i64 1, ptr %200, align 16, !tbaa !9
  %201 = load ptr, ptr %15, align 8, !tbaa !5
  %202 = getelementptr inbounds [2 x ptr], ptr %28, i64 0, i64 0
  store ptr %201, ptr %202, align 16, !tbaa !5
  %203 = getelementptr inbounds [2 x i64], ptr %35, i64 0, i64 1
  store i64 1, ptr %203, align 8, !tbaa !9
  %204 = load ptr, ptr %16, align 8, !tbaa !5
  %205 = getelementptr inbounds [2 x ptr], ptr %28, i64 0, i64 1
  store ptr %204, ptr %205, align 8, !tbaa !5
  %206 = getelementptr inbounds [2 x i8], ptr %38, i64 0, i64 0
  %207 = getelementptr inbounds [2 x ptr], ptr %28, i64 0, i64 0
  %208 = getelementptr inbounds [2 x i64], ptr %35, i64 0, i64 0
  %209 = call i32 @s_cat(ptr noundef %206, ptr noundef %207, ptr noundef %208, ptr noundef @c__2, i64 noundef 2)
  store i64 64, ptr %33, align 8, !tbaa !9
  %210 = getelementptr inbounds [2 x i8], ptr %38, i64 0, i64 0
  %211 = load ptr, ptr %17, align 8, !tbaa !5
  %212 = load ptr, ptr %18, align 8, !tbaa !5
  %213 = load ptr, ptr %19, align 8, !tbaa !5
  %214 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.4, ptr noundef %210, ptr noundef %211, ptr noundef %212, ptr noundef %213, ptr noundef @c_n1)
  store i64 %214, ptr %34, align 8, !tbaa !9
  %215 = load i64, ptr %33, align 8, !tbaa !9
  %216 = load i64, ptr %34, align 8, !tbaa !9
  %217 = icmp sle i64 %215, %216
  br i1 %217, label %218, label %220

218:                                              ; preds = %199
  %219 = load i64, ptr %33, align 8, !tbaa !9
  br label %222

220:                                              ; preds = %199
  %221 = load i64, ptr %34, align 8, !tbaa !9
  br label %222

222:                                              ; preds = %220, %218
  %223 = phi i64 [ %219, %218 ], [ %221, %220 ]
  store i64 %223, ptr %47, align 8, !tbaa !9
  %224 = load i64, ptr %51, align 8, !tbaa !9
  %225 = icmp sge i64 1, %224
  br i1 %225, label %226, label %227

226:                                              ; preds = %222
  br label %229

227:                                              ; preds = %222
  %228 = load i64, ptr %51, align 8, !tbaa !9
  br label %229

229:                                              ; preds = %227, %226
  %230 = phi i64 [ 1, %226 ], [ %228, %227 ]
  %231 = load i64, ptr %47, align 8, !tbaa !9
  %232 = mul nsw i64 %230, %231
  store i64 %232, ptr %58, align 8, !tbaa !9
  %233 = load i64, ptr %58, align 8, !tbaa !9
  %234 = sitofp i64 %233 to float
  %235 = load ptr, ptr %25, align 8, !tbaa !5
  %236 = getelementptr inbounds %struct.complex, ptr %235, i64 1
  %237 = getelementptr inbounds %struct.complex, ptr %236, i32 0, i32 0
  store float %234, ptr %237, align 4, !tbaa !11
  %238 = load ptr, ptr %25, align 8, !tbaa !5
  %239 = getelementptr inbounds %struct.complex, ptr %238, i64 1
  %240 = getelementptr inbounds %struct.complex, ptr %239, i32 0, i32 1
  store float 0.000000e+00, ptr %240, align 4, !tbaa !14
  br label %241

241:                                              ; preds = %229, %195
  %242 = load ptr, ptr %27, align 8, !tbaa !5
  %243 = load i64, ptr %242, align 8, !tbaa !9
  %244 = icmp ne i64 %243, 0
  br i1 %244, label %245, label %250

245:                                              ; preds = %241
  %246 = load ptr, ptr %27, align 8, !tbaa !5
  %247 = load i64, ptr %246, align 8, !tbaa !9
  %248 = sub nsw i64 0, %247
  store i64 %248, ptr %33, align 8, !tbaa !9
  %249 = call i32 @xerbla_(ptr noundef @.str.4, ptr noundef %33)
  store i32 0, ptr %14, align 4
  store i32 1, ptr %60, align 4
  br label %493

250:                                              ; preds = %241
  %251 = load i64, ptr %59, align 8, !tbaa !9
  %252 = icmp ne i64 %251, 0
  br i1 %252, label %253, label %254

253:                                              ; preds = %250
  store i32 0, ptr %14, align 4
  store i32 1, ptr %60, align 4
  br label %493

254:                                              ; preds = %250
  br label %255

255:                                              ; preds = %254
  %256 = load ptr, ptr %17, align 8, !tbaa !5
  %257 = load i64, ptr %256, align 8, !tbaa !9
  %258 = icmp eq i64 %257, 0
  br i1 %258, label %267, label %259

259:                                              ; preds = %255
  %260 = load ptr, ptr %18, align 8, !tbaa !5
  %261 = load i64, ptr %260, align 8, !tbaa !9
  %262 = icmp eq i64 %261, 0
  br i1 %262, label %267, label %263

263:                                              ; preds = %259
  %264 = load ptr, ptr %19, align 8, !tbaa !5
  %265 = load i64, ptr %264, align 8, !tbaa !9
  %266 = icmp eq i64 %265, 0
  br i1 %266, label %267, label %274

267:                                              ; preds = %263, %259, %255
  %268 = load ptr, ptr %25, align 8, !tbaa !5
  %269 = getelementptr inbounds %struct.complex, ptr %268, i64 1
  %270 = getelementptr inbounds %struct.complex, ptr %269, i32 0, i32 0
  store float 1.000000e+00, ptr %270, align 4, !tbaa !11
  %271 = load ptr, ptr %25, align 8, !tbaa !5
  %272 = getelementptr inbounds %struct.complex, ptr %271, i64 1
  %273 = getelementptr inbounds %struct.complex, ptr %272, i32 0, i32 1
  store float 0.000000e+00, ptr %273, align 4, !tbaa !14
  store i32 0, ptr %14, align 4
  store i32 1, ptr %60, align 4
  br label %493

274:                                              ; preds = %263
  store i64 2, ptr %54, align 8, !tbaa !9
  %275 = load i64, ptr %51, align 8, !tbaa !9
  store i64 %275, ptr %57, align 8, !tbaa !9
  %276 = load i64, ptr %47, align 8, !tbaa !9
  %277 = icmp sgt i64 %276, 1
  br i1 %277, label %278, label %321

278:                                              ; preds = %274
  %279 = load i64, ptr %47, align 8, !tbaa !9
  %280 = load ptr, ptr %19, align 8, !tbaa !5
  %281 = load i64, ptr %280, align 8, !tbaa !9
  %282 = icmp slt i64 %279, %281
  br i1 %282, label %283, label %321

283:                                              ; preds = %278
  %284 = load i64, ptr %51, align 8, !tbaa !9
  %285 = load i64, ptr %47, align 8, !tbaa !9
  %286 = mul nsw i64 %284, %285
  store i64 %286, ptr %52, align 8, !tbaa !9
  %287 = load ptr, ptr %26, align 8, !tbaa !5
  %288 = load i64, ptr %287, align 8, !tbaa !9
  %289 = load i64, ptr %52, align 8, !tbaa !9
  %290 = icmp slt i64 %288, %289
  br i1 %290, label %291, label %320

291:                                              ; preds = %283
  %292 = load ptr, ptr %26, align 8, !tbaa !5
  %293 = load i64, ptr %292, align 8, !tbaa !9
  %294 = load i64, ptr %57, align 8, !tbaa !9
  %295 = sdiv i64 %293, %294
  store i64 %295, ptr %47, align 8, !tbaa !9
  %296 = getelementptr inbounds [2 x i64], ptr %35, i64 0, i64 0
  store i64 1, ptr %296, align 16, !tbaa !9
  %297 = load ptr, ptr %15, align 8, !tbaa !5
  %298 = getelementptr inbounds [2 x ptr], ptr %28, i64 0, i64 0
  store ptr %297, ptr %298, align 16, !tbaa !5
  %299 = getelementptr inbounds [2 x i64], ptr %35, i64 0, i64 1
  store i64 1, ptr %299, align 8, !tbaa !9
  %300 = load ptr, ptr %16, align 8, !tbaa !5
  %301 = getelementptr inbounds [2 x ptr], ptr %28, i64 0, i64 1
  store ptr %300, ptr %301, align 8, !tbaa !5
  %302 = getelementptr inbounds [2 x i8], ptr %38, i64 0, i64 0
  %303 = getelementptr inbounds [2 x ptr], ptr %28, i64 0, i64 0
  %304 = getelementptr inbounds [2 x i64], ptr %35, i64 0, i64 0
  %305 = call i32 @s_cat(ptr noundef %302, ptr noundef %303, ptr noundef %304, ptr noundef @c__2, i64 noundef 2)
  store i64 2, ptr %33, align 8, !tbaa !9
  %306 = getelementptr inbounds [2 x i8], ptr %38, i64 0, i64 0
  %307 = load ptr, ptr %17, align 8, !tbaa !5
  %308 = load ptr, ptr %18, align 8, !tbaa !5
  %309 = load ptr, ptr %19, align 8, !tbaa !5
  %310 = call i64 @ilaenv_(ptr noundef @c__2, ptr noundef @.str.4, ptr noundef %306, ptr noundef %307, ptr noundef %308, ptr noundef %309, ptr noundef @c_n1)
  store i64 %310, ptr %34, align 8, !tbaa !9
  %311 = load i64, ptr %33, align 8, !tbaa !9
  %312 = load i64, ptr %34, align 8, !tbaa !9
  %313 = icmp sge i64 %311, %312
  br i1 %313, label %314, label %316

314:                                              ; preds = %291
  %315 = load i64, ptr %33, align 8, !tbaa !9
  br label %318

316:                                              ; preds = %291
  %317 = load i64, ptr %34, align 8, !tbaa !9
  br label %318

318:                                              ; preds = %316, %314
  %319 = phi i64 [ %315, %314 ], [ %317, %316 ]
  store i64 %319, ptr %54, align 8, !tbaa !9
  br label %320

320:                                              ; preds = %318, %283
  br label %323

321:                                              ; preds = %278, %274
  %322 = load i64, ptr %51, align 8, !tbaa !9
  store i64 %322, ptr %52, align 8, !tbaa !9
  br label %323

323:                                              ; preds = %321, %320
  %324 = load i64, ptr %47, align 8, !tbaa !9
  %325 = load i64, ptr %54, align 8, !tbaa !9
  %326 = icmp slt i64 %324, %325
  br i1 %326, label %332, label %327

327:                                              ; preds = %323
  %328 = load i64, ptr %47, align 8, !tbaa !9
  %329 = load ptr, ptr %19, align 8, !tbaa !5
  %330 = load i64, ptr %329, align 8, !tbaa !9
  %331 = icmp sge i64 %328, %330
  br i1 %331, label %332, label %351

332:                                              ; preds = %327, %323
  %333 = load ptr, ptr %15, align 8, !tbaa !5
  %334 = load ptr, ptr %16, align 8, !tbaa !5
  %335 = load ptr, ptr %17, align 8, !tbaa !5
  %336 = load ptr, ptr %18, align 8, !tbaa !5
  %337 = load ptr, ptr %19, align 8, !tbaa !5
  %338 = load ptr, ptr %20, align 8, !tbaa !5
  %339 = load i64, ptr %30, align 8, !tbaa !9
  %340 = getelementptr inbounds %struct.complex, ptr %338, i64 %339
  %341 = load ptr, ptr %21, align 8, !tbaa !5
  %342 = load ptr, ptr %22, align 8, !tbaa !5
  %343 = getelementptr inbounds %struct.complex, ptr %342, i64 1
  %344 = load ptr, ptr %23, align 8, !tbaa !5
  %345 = load i64, ptr %32, align 8, !tbaa !9
  %346 = getelementptr inbounds %struct.complex, ptr %344, i64 %345
  %347 = load ptr, ptr %24, align 8, !tbaa !5
  %348 = load ptr, ptr %25, align 8, !tbaa !5
  %349 = getelementptr inbounds %struct.complex, ptr %348, i64 1
  %350 = call i32 @cunm2r_(ptr noundef %333, ptr noundef %334, ptr noundef %335, ptr noundef %336, ptr noundef %337, ptr noundef %340, ptr noundef %341, ptr noundef %343, ptr noundef %346, ptr noundef %347, ptr noundef %349, ptr noundef %55)
  br label %484

351:                                              ; preds = %327
  %352 = load i64, ptr %53, align 8, !tbaa !9
  %353 = icmp ne i64 %352, 0
  br i1 %353, label %354, label %357

354:                                              ; preds = %351
  %355 = load i64, ptr %56, align 8, !tbaa !9
  %356 = icmp ne i64 %355, 0
  br i1 %356, label %357, label %363

357:                                              ; preds = %354, %351
  %358 = load i64, ptr %53, align 8, !tbaa !9
  %359 = icmp ne i64 %358, 0
  br i1 %359, label %367, label %360

360:                                              ; preds = %357
  %361 = load i64, ptr %56, align 8, !tbaa !9
  %362 = icmp ne i64 %361, 0
  br i1 %362, label %363, label %367

363:                                              ; preds = %360, %354
  store i64 1, ptr %41, align 8, !tbaa !9
  %364 = load ptr, ptr %19, align 8, !tbaa !5
  %365 = load i64, ptr %364, align 8, !tbaa !9
  store i64 %365, ptr %42, align 8, !tbaa !9
  %366 = load i64, ptr %47, align 8, !tbaa !9
  store i64 %366, ptr %43, align 8, !tbaa !9
  br label %378

367:                                              ; preds = %360, %357
  %368 = load ptr, ptr %19, align 8, !tbaa !5
  %369 = load i64, ptr %368, align 8, !tbaa !9
  %370 = sub nsw i64 %369, 1
  %371 = load i64, ptr %47, align 8, !tbaa !9
  %372 = sdiv i64 %370, %371
  %373 = load i64, ptr %47, align 8, !tbaa !9
  %374 = mul nsw i64 %372, %373
  %375 = add nsw i64 %374, 1
  store i64 %375, ptr %41, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  %376 = load i64, ptr %47, align 8, !tbaa !9
  %377 = sub nsw i64 0, %376
  store i64 %377, ptr %43, align 8, !tbaa !9
  br label %378

378:                                              ; preds = %367, %363
  %379 = load i64, ptr %53, align 8, !tbaa !9
  %380 = icmp ne i64 %379, 0
  br i1 %380, label %381, label %384

381:                                              ; preds = %378
  %382 = load ptr, ptr %18, align 8, !tbaa !5
  %383 = load i64, ptr %382, align 8, !tbaa !9
  store i64 %383, ptr %49, align 8, !tbaa !9
  store i64 1, ptr %46, align 8, !tbaa !9
  br label %387

384:                                              ; preds = %378
  %385 = load ptr, ptr %17, align 8, !tbaa !5
  %386 = load i64, ptr %385, align 8, !tbaa !9
  store i64 %386, ptr %48, align 8, !tbaa !9
  store i64 1, ptr %45, align 8, !tbaa !9
  br label %387

387:                                              ; preds = %384, %381
  %388 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %388, ptr %33, align 8, !tbaa !9
  %389 = load i64, ptr %43, align 8, !tbaa !9
  store i64 %389, ptr %34, align 8, !tbaa !9
  %390 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %390, ptr %39, align 8, !tbaa !9
  br label %391

391:                                              ; preds = %479, %387
  %392 = load i64, ptr %34, align 8, !tbaa !9
  %393 = icmp slt i64 %392, 0
  br i1 %393, label %394, label %399

394:                                              ; preds = %391
  %395 = load i64, ptr %39, align 8, !tbaa !9
  %396 = load i64, ptr %33, align 8, !tbaa !9
  %397 = icmp sge i64 %395, %396
  %398 = zext i1 %397 to i32
  br label %404

399:                                              ; preds = %391
  %400 = load i64, ptr %39, align 8, !tbaa !9
  %401 = load i64, ptr %33, align 8, !tbaa !9
  %402 = icmp sle i64 %400, %401
  %403 = zext i1 %402 to i32
  br label %404

404:                                              ; preds = %399, %394
  %405 = phi i32 [ %398, %394 ], [ %403, %399 ]
  %406 = icmp ne i32 %405, 0
  br i1 %406, label %407, label %483

407:                                              ; preds = %404
  %408 = load i64, ptr %47, align 8, !tbaa !9
  store i64 %408, ptr %36, align 8, !tbaa !9
  %409 = load ptr, ptr %19, align 8, !tbaa !5
  %410 = load i64, ptr %409, align 8, !tbaa !9
  %411 = load i64, ptr %39, align 8, !tbaa !9
  %412 = sub nsw i64 %410, %411
  %413 = add nsw i64 %412, 1
  store i64 %413, ptr %37, align 8, !tbaa !9
  %414 = load i64, ptr %36, align 8, !tbaa !9
  %415 = load i64, ptr %37, align 8, !tbaa !9
  %416 = icmp sle i64 %414, %415
  br i1 %416, label %417, label %419

417:                                              ; preds = %407
  %418 = load i64, ptr %36, align 8, !tbaa !9
  br label %421

419:                                              ; preds = %407
  %420 = load i64, ptr %37, align 8, !tbaa !9
  br label %421

421:                                              ; preds = %419, %417
  %422 = phi i64 [ %418, %417 ], [ %420, %419 ]
  store i64 %422, ptr %44, align 8, !tbaa !9
  %423 = load i64, ptr %50, align 8, !tbaa !9
  %424 = load i64, ptr %39, align 8, !tbaa !9
  %425 = sub nsw i64 %423, %424
  %426 = add nsw i64 %425, 1
  store i64 %426, ptr %36, align 8, !tbaa !9
  %427 = load ptr, ptr %20, align 8, !tbaa !5
  %428 = load i64, ptr %39, align 8, !tbaa !9
  %429 = load i64, ptr %39, align 8, !tbaa !9
  %430 = load i64, ptr %29, align 8, !tbaa !9
  %431 = mul nsw i64 %429, %430
  %432 = add nsw i64 %428, %431
  %433 = getelementptr inbounds %struct.complex, ptr %427, i64 %432
  %434 = load ptr, ptr %21, align 8, !tbaa !5
  %435 = load ptr, ptr %22, align 8, !tbaa !5
  %436 = load i64, ptr %39, align 8, !tbaa !9
  %437 = getelementptr inbounds %struct.complex, ptr %435, i64 %436
  %438 = getelementptr inbounds [4160 x %struct.complex], ptr %40, i64 0, i64 0
  %439 = call i32 @clarft_(ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef %36, ptr noundef %44, ptr noundef %433, ptr noundef %434, ptr noundef %437, ptr noundef %438, ptr noundef @c__65)
  %440 = load i64, ptr %53, align 8, !tbaa !9
  %441 = icmp ne i64 %440, 0
  br i1 %441, label %442, label %449

442:                                              ; preds = %421
  %443 = load ptr, ptr %17, align 8, !tbaa !5
  %444 = load i64, ptr %443, align 8, !tbaa !9
  %445 = load i64, ptr %39, align 8, !tbaa !9
  %446 = sub nsw i64 %444, %445
  %447 = add nsw i64 %446, 1
  store i64 %447, ptr %48, align 8, !tbaa !9
  %448 = load i64, ptr %39, align 8, !tbaa !9
  store i64 %448, ptr %45, align 8, !tbaa !9
  br label %456

449:                                              ; preds = %421
  %450 = load ptr, ptr %18, align 8, !tbaa !5
  %451 = load i64, ptr %450, align 8, !tbaa !9
  %452 = load i64, ptr %39, align 8, !tbaa !9
  %453 = sub nsw i64 %451, %452
  %454 = add nsw i64 %453, 1
  store i64 %454, ptr %49, align 8, !tbaa !9
  %455 = load i64, ptr %39, align 8, !tbaa !9
  store i64 %455, ptr %46, align 8, !tbaa !9
  br label %456

456:                                              ; preds = %449, %442
  %457 = load ptr, ptr %15, align 8, !tbaa !5
  %458 = load ptr, ptr %16, align 8, !tbaa !5
  %459 = load ptr, ptr %20, align 8, !tbaa !5
  %460 = load i64, ptr %39, align 8, !tbaa !9
  %461 = load i64, ptr %39, align 8, !tbaa !9
  %462 = load i64, ptr %29, align 8, !tbaa !9
  %463 = mul nsw i64 %461, %462
  %464 = add nsw i64 %460, %463
  %465 = getelementptr inbounds %struct.complex, ptr %459, i64 %464
  %466 = load ptr, ptr %21, align 8, !tbaa !5
  %467 = getelementptr inbounds [4160 x %struct.complex], ptr %40, i64 0, i64 0
  %468 = load ptr, ptr %23, align 8, !tbaa !5
  %469 = load i64, ptr %45, align 8, !tbaa !9
  %470 = load i64, ptr %46, align 8, !tbaa !9
  %471 = load i64, ptr %31, align 8, !tbaa !9
  %472 = mul nsw i64 %470, %471
  %473 = add nsw i64 %469, %472
  %474 = getelementptr inbounds %struct.complex, ptr %468, i64 %473
  %475 = load ptr, ptr %24, align 8, !tbaa !5
  %476 = load ptr, ptr %25, align 8, !tbaa !5
  %477 = getelementptr inbounds %struct.complex, ptr %476, i64 1
  %478 = call i32 @clarfb_(ptr noundef %457, ptr noundef %458, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef %48, ptr noundef %49, ptr noundef %44, ptr noundef %465, ptr noundef %466, ptr noundef %467, ptr noundef @c__65, ptr noundef %474, ptr noundef %475, ptr noundef %477, ptr noundef %57)
  br label %479

479:                                              ; preds = %456
  %480 = load i64, ptr %34, align 8, !tbaa !9
  %481 = load i64, ptr %39, align 8, !tbaa !9
  %482 = add nsw i64 %481, %480
  store i64 %482, ptr %39, align 8, !tbaa !9
  br label %391, !llvm.loop !15

483:                                              ; preds = %404
  br label %484

484:                                              ; preds = %483, %332
  %485 = load i64, ptr %58, align 8, !tbaa !9
  %486 = sitofp i64 %485 to float
  %487 = load ptr, ptr %25, align 8, !tbaa !5
  %488 = getelementptr inbounds %struct.complex, ptr %487, i64 1
  %489 = getelementptr inbounds %struct.complex, ptr %488, i32 0, i32 0
  store float %486, ptr %489, align 4, !tbaa !11
  %490 = load ptr, ptr %25, align 8, !tbaa !5
  %491 = getelementptr inbounds %struct.complex, ptr %490, i64 1
  %492 = getelementptr inbounds %struct.complex, ptr %491, i32 0, i32 1
  store float 0.000000e+00, ptr %492, align 4, !tbaa !14
  store i32 0, ptr %14, align 4
  store i32 1, ptr %60, align 4
  br label %493

493:                                              ; preds = %484, %267, %253, %245
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 33280, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 2, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #3
  %494 = load i32, ptr %14, align 4
  ret i32 %494
}

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

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

declare i32 @s_cat(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef) #2

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

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

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

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

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

; 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 }

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

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


; 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"

%struct.complex = type { float, float }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c__2 = external hidden global i64, align 8
@c__1 = external hidden global i64, align 8
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i64, align 8
@.str.5 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [11 x i8], align 1
@c__65 = external hidden global i64, align 8

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @cunmqr_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr nocapture noundef readonly %11, ptr nocapture noundef %12) local_unnamed_addr #0 {
  %14 = alloca [2 x ptr], align 16
  %15 = alloca i64, align 8
  %16 = alloca [2 x i64], align 16
  %17 = alloca i64, align 8
  %18 = alloca [2 x i8], align 1
  %19 = alloca [4160 x %struct.complex], align 16
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #4
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %18) #4
  call void @llvm.lifetime.start.p0(i64 33280, ptr nonnull %19) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #4
  %25 = load i64, ptr %6, align 8, !tbaa !5
  %26 = xor i64 %25, -1
  %27 = getelementptr inbounds %struct.complex, ptr %5, i64 %26
  %28 = getelementptr inbounds i8, ptr %7, i64 -8
  %29 = load i64, ptr %9, align 8, !tbaa !5
  %30 = xor i64 %29, -1
  %31 = getelementptr inbounds %struct.complex, ptr %8, i64 %30
  store i64 0, ptr %12, align 8, !tbaa !5
  %32 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #4
  %33 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #4
  %34 = load i64, ptr %11, align 8, !tbaa !5
  %35 = icmp eq i64 %34, -1
  %.not = icmp ne i64 %32, 0
  %. = select i1 %.not, ptr %2, ptr %3
  %.192 = select i1 %.not, ptr %3, ptr %2
  %.0167 = load i64, ptr %.192, align 8, !tbaa !5
  %.0168 = load i64, ptr %., align 8, !tbaa !5
  br i1 %.not, label %38, label %36

36:                                               ; preds = %13
  %37 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #4
  %.not183 = icmp eq i64 %37, 0
  br i1 %.not183, label %.thread197.sink.split, label %38

38:                                               ; preds = %36, %13
  %.not184 = icmp eq i64 %33, 0
  br i1 %.not184, label %39, label %41

39:                                               ; preds = %38
  %40 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #4
  %.not185 = icmp eq i64 %40, 0
  br i1 %.not185, label %.thread197.sink.split, label %41

41:                                               ; preds = %39, %38
  %42 = load i64, ptr %2, align 8, !tbaa !5
  %43 = icmp slt i64 %42, 0
  br i1 %43, label %.thread197.sink.split, label %44

44:                                               ; preds = %41
  %45 = load i64, ptr %3, align 8, !tbaa !5
  %46 = icmp slt i64 %45, 0
  br i1 %46, label %.thread197.sink.split, label %47

47:                                               ; preds = %44
  %48 = load i64, ptr %4, align 8, !tbaa !5
  %49 = icmp slt i64 %48, 0
  %50 = icmp sgt i64 %48, %.0168
  %or.cond193 = select i1 %49, i1 true, i1 %50
  br i1 %or.cond193, label %.thread197.sink.split, label %51

51:                                               ; preds = %47
  %52 = load i64, ptr %6, align 8, !tbaa !5
  %53 = tail call i64 @llvm.smax.i64(i64 %.0168, i64 1)
  %54 = icmp slt i64 %52, %53
  br i1 %54, label %.thread197.sink.split, label %55

55:                                               ; preds = %51
  %56 = load i64, ptr %9, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %42, i64 1)
  %57 = icmp slt i64 %56, %spec.select
  br i1 %57, label %.thread197.sink.split, label %58

58:                                               ; preds = %55
  %59 = load i64, ptr %11, align 8, !tbaa !5
  %60 = tail call i64 @llvm.smax.i64(i64 %.0167, i64 1)
  %61 = icmp sge i64 %59, %60
  %or.cond = select i1 %61, i1 true, i1 %35
  br i1 %or.cond, label %62, label %.thread197.sink.split

62:                                               ; preds = %58
  %.pr = load i64, ptr %12, align 8, !tbaa !5
  %63 = icmp eq i64 %.pr, 0
  br i1 %63, label %.thread, label %.thread197

.thread:                                          ; preds = %62
  store i64 1, ptr %16, align 16, !tbaa !5
  store ptr %0, ptr %14, align 16, !tbaa !9
  %64 = getelementptr inbounds i8, ptr %16, i64 8
  store i64 1, ptr %64, align 8, !tbaa !5
  %65 = getelementptr inbounds i8, ptr %14, i64 8
  store ptr %1, ptr %65, align 8, !tbaa !9
  %66 = call i32 @s_cat(ptr noundef nonnull %18, ptr noundef nonnull %14, ptr noundef nonnull %16, ptr noundef nonnull @c__2, i64 noundef 2) #4
  %67 = call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.4, ptr noundef nonnull %18, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull @c_n1) #4
  %68 = call i64 @llvm.smin.i64(i64 %67, i64 64)
  %69 = mul nsw i64 %68, %60
  %70 = sitofp i64 %69 to float
  store float %70, ptr %10, align 4, !tbaa !11
  %71 = getelementptr inbounds i8, ptr %10, i64 4
  store float 0.000000e+00, ptr %71, align 4, !tbaa !14
  %.pr196.pr = load i64, ptr %12, align 8, !tbaa !5
  %.not187 = icmp eq i64 %.pr196.pr, 0
  br i1 %.not187, label %75, label %.thread197

.thread197.sink.split:                            ; preds = %58, %55, %51, %47, %44, %41, %39, %36
  %.sink = phi i64 [ -1, %36 ], [ -2, %39 ], [ -3, %41 ], [ -4, %44 ], [ -5, %47 ], [ -7, %51 ], [ -10, %55 ], [ -12, %58 ]
  store i64 %.sink, ptr %12, align 8, !tbaa !5
  br label %.thread197

.thread197:                                       ; preds = %.thread197.sink.split, %62, %.thread
  %72 = phi i64 [ %.pr196.pr, %.thread ], [ %.pr, %62 ], [ %.sink, %.thread197.sink.split ]
  %73 = sub nsw i64 0, %72
  store i64 %73, ptr %15, align 8, !tbaa !5
  %74 = call i32 @xerbla_(ptr noundef nonnull @.str.4, ptr noundef nonnull %15) #4
  br label %156

75:                                               ; preds = %.thread
  br i1 %35, label %156, label %76

76:                                               ; preds = %75
  %77 = load i64, ptr %2, align 8, !tbaa !5
  %78 = icmp eq i64 %77, 0
  br i1 %78, label %85, label %79

79:                                               ; preds = %76
  %80 = load i64, ptr %3, align 8, !tbaa !5
  %81 = icmp eq i64 %80, 0
  br i1 %81, label %85, label %82

82:                                               ; preds = %79
  %83 = load i64, ptr %4, align 8, !tbaa !5
  %84 = icmp eq i64 %83, 0
  br i1 %84, label %85, label %86

85:                                               ; preds = %82, %79, %76
  store float 1.000000e+00, ptr %10, align 4, !tbaa !11
  br label %156

86:                                               ; preds = %82
  store i64 %.0167, ptr %24, align 8, !tbaa !5
  %87 = icmp sgt i64 %67, 1
  br i1 %87, label %88, label %.thread206

88:                                               ; preds = %86
  %89 = icmp slt i64 %68, %83
  br i1 %89, label %90, label %.thread202

90:                                               ; preds = %88
  %91 = mul nsw i64 %68, %.0167
  %92 = load i64, ptr %11, align 8, !tbaa !5
  %93 = icmp slt i64 %92, %91
  br i1 %93, label %94, label %.thread202

94:                                               ; preds = %90
  %95 = sdiv i64 %92, %.0167
  store i64 1, ptr %16, align 16, !tbaa !5
  store ptr %0, ptr %14, align 16, !tbaa !9
  store i64 1, ptr %64, align 8, !tbaa !5
  store ptr %1, ptr %65, align 8, !tbaa !9
  %96 = call i32 @s_cat(ptr noundef nonnull %18, ptr noundef nonnull %14, ptr noundef nonnull %16, ptr noundef nonnull @c__2, i64 noundef 2) #4
  %97 = call i64 @ilaenv_(ptr noundef nonnull @c__2, ptr noundef nonnull @.str.4, ptr noundef nonnull %18, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull @c_n1) #4
  %98 = call i64 @llvm.smax.i64(i64 %97, i64 2)
  %99 = icmp slt i64 %95, %98
  br i1 %99, label %.thread206, label %..thread202_crit_edge

..thread202_crit_edge:                            ; preds = %94
  %.pre = load i64, ptr %4, align 8, !tbaa !5
  br label %.thread202

.thread202:                                       ; preds = %..thread202_crit_edge, %88, %90
  %100 = phi i64 [ %.pre, %..thread202_crit_edge ], [ %83, %90 ], [ %83, %88 ]
  %.1205 = phi i64 [ %95, %..thread202_crit_edge ], [ %68, %90 ], [ %68, %88 ]
  %.fr190 = freeze i64 %100
  %.not189 = icmp slt i64 %.1205, %.fr190
  br i1 %.not189, label %102, label %.thread206

.thread206:                                       ; preds = %86, %.thread202, %94
  %101 = call i32 @cunm2r_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef nonnull %23) #4
  br label %.loopexit

102:                                              ; preds = %.thread202
  %103 = icmp ne i64 %33, 0
  %or.cond194 = xor i1 %.not, %103
  br i1 %or.cond194, label %109, label %104

104:                                              ; preds = %102
  %105 = add nsw i64 %.fr190, -1
  %106 = srem i64 %105, %.1205
  %107 = sub i64 %.fr190, %106
  %108 = sub nsw i64 0, %.1205
  br label %109

109:                                              ; preds = %102, %104
  %.0177 = phi i64 [ %107, %104 ], [ 1, %102 ]
  %110 = phi i64 [ 1, %104 ], [ %.fr190, %102 ]
  %.0175 = phi i64 [ %108, %104 ], [ %.1205, %102 ]
  br i1 %.not, label %111, label %113

111:                                              ; preds = %109
  %112 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %112, ptr %22, align 8, !tbaa !5
  br label %115

113:                                              ; preds = %109
  %114 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %114, ptr %21, align 8, !tbaa !5
  br label %115

115:                                              ; preds = %113, %111
  %116 = icmp slt i64 %.0175, 0
  %.0178.neg213 = sub i64 0, %.0177
  %117 = icmp sge i64 %.0177, %110
  %118 = icmp sle i64 %.0177, %110
  %.in214 = select i1 %116, i1 %117, i1 %118
  br i1 %.in214, label %.lr.ph, label %.loopexit

.lr.ph:                                           ; preds = %115
  %119 = add i64 %.0168, 1
  %120 = add i64 %25, 1
  br i1 %.not, label %.lr.ph.split.us, label %.lr.ph.split

.lr.ph.split.us:                                  ; preds = %.lr.ph
  %invariant.gep = getelementptr i8, ptr %8, i64 -8
  br label %121

121:                                              ; preds = %121, %.lr.ph.split.us
  %.0178.neg218.us = phi i64 [ %.0178.neg213, %.lr.ph.split.us ], [ %.0178.neg.us, %121 ]
  %.0178215.us = phi i64 [ %.0177, %.lr.ph.split.us ], [ %134, %121 ]
  %122 = load i64, ptr %4, align 8, !tbaa !5
  %123 = add i64 %.0178.neg218.us, 1
  %124 = add i64 %123, %122
  %125 = call i64 @llvm.smin.i64(i64 %.1205, i64 %124)
  store i64 %125, ptr %20, align 8, !tbaa !5
  %126 = add i64 %119, %.0178.neg218.us
  store i64 %126, ptr %17, align 8, !tbaa !5
  %127 = mul i64 %.0178215.us, %120
  %128 = getelementptr inbounds %struct.complex, ptr %27, i64 %127
  %129 = getelementptr inbounds %struct.complex, ptr %28, i64 %.0178215.us
  %130 = call i32 @clarft_(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull %17, ptr noundef nonnull %20, ptr noundef %128, ptr noundef nonnull %6, ptr noundef nonnull %129, ptr noundef nonnull %19, ptr noundef nonnull @c__65) #4
  %131 = load i64, ptr %2, align 8, !tbaa !5
  %132 = add i64 %123, %131
  store i64 %132, ptr %21, align 8, !tbaa !5
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %.0178215.us
  %133 = call i32 @clarfb_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull %20, ptr noundef %128, ptr noundef nonnull %6, ptr noundef nonnull %19, ptr noundef nonnull @c__65, ptr noundef %gep, ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef nonnull %24) #4
  %134 = add nsw i64 %.0178215.us, %.0175
  %.0178.neg.us = sub i64 0, %134
  %135 = icmp sge i64 %134, %110
  %136 = icmp sle i64 %134, %110
  %.in.us = select i1 %116, i1 %135, i1 %136
  br i1 %.in.us, label %121, label %.loopexit, !llvm.loop !15

.lr.ph.split:                                     ; preds = %.lr.ph
  %137 = getelementptr i8, ptr %31, i64 8
  br label %138

138:                                              ; preds = %.lr.ph.split, %138
  %.0178.neg218 = phi i64 [ %.0178.neg213, %.lr.ph.split ], [ %.0178.neg, %138 ]
  %.0178215 = phi i64 [ %.0177, %.lr.ph.split ], [ %153, %138 ]
  %139 = load i64, ptr %4, align 8, !tbaa !5
  %140 = add i64 %.0178.neg218, 1
  %141 = add i64 %140, %139
  %142 = call i64 @llvm.smin.i64(i64 %.1205, i64 %141)
  store i64 %142, ptr %20, align 8, !tbaa !5
  %143 = add i64 %119, %.0178.neg218
  store i64 %143, ptr %17, align 8, !tbaa !5
  %144 = mul i64 %.0178215, %120
  %145 = getelementptr inbounds %struct.complex, ptr %27, i64 %144
  %146 = getelementptr inbounds %struct.complex, ptr %28, i64 %.0178215
  %147 = call i32 @clarft_(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull %17, ptr noundef nonnull %20, ptr noundef %145, ptr noundef nonnull %6, ptr noundef nonnull %146, ptr noundef nonnull %19, ptr noundef nonnull @c__65) #4
  %148 = load i64, ptr %3, align 8, !tbaa !5
  %149 = add i64 %140, %148
  store i64 %149, ptr %22, align 8, !tbaa !5
  %150 = mul nsw i64 %.0178215, %29
  %151 = getelementptr %struct.complex, ptr %137, i64 %150
  %152 = call i32 @clarfb_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull %20, ptr noundef %145, ptr noundef nonnull %6, ptr noundef nonnull %19, ptr noundef nonnull @c__65, ptr noundef %151, ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef nonnull %24) #4
  %153 = add nsw i64 %.0178215, %.0175
  %.0178.neg = sub i64 0, %153
  %154 = icmp sge i64 %153, %110
  %155 = icmp sle i64 %153, %110
  %.in = select i1 %116, i1 %154, i1 %155
  br i1 %.in, label %138, label %.loopexit, !llvm.loop !15

.loopexit:                                        ; preds = %138, %121, %115, %.thread206
  store float %70, ptr %10, align 4, !tbaa !11
  store float 0.000000e+00, ptr %71, align 4, !tbaa !14
  br label %156

156:                                              ; preds = %75, %.loopexit, %85, %.thread197
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #4
  call void @llvm.lifetime.end.p0(i64 33280, ptr nonnull %19) #4
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %18) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #4
  ret i32 0
}

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

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

declare i32 @s_cat(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

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

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

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

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

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

; 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 i64 @llvm.smax.i64(i64, i64) #3

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.umax.i64(i64, i64) #3

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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { nounwind }

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

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


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