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

; 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 [9 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [8 x i8], align 1
@c__65 = external hidden global i64, align 8

; Function Attrs: nounwind uwtable
define dso_local i32 @cunmrq_(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 [1 x i8], align 1
  %57 = alloca i64, align 8
  %58 = alloca i64, align 8
  %59 = 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 1, 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
  %60 = load ptr, ptr %21, align 8, !tbaa !5
  %61 = load i64, ptr %60, align 8, !tbaa !9
  store i64 %61, ptr %29, align 8, !tbaa !9
  %62 = load i64, ptr %29, align 8, !tbaa !9
  %63 = add nsw i64 1, %62
  store i64 %63, ptr %30, align 8, !tbaa !9
  %64 = load i64, ptr %30, align 8, !tbaa !9
  %65 = load ptr, ptr %20, align 8, !tbaa !5
  %66 = sub i64 0, %64
  %67 = getelementptr inbounds %struct.complex, ptr %65, i64 %66
  store ptr %67, ptr %20, align 8, !tbaa !5
  %68 = load ptr, ptr %22, align 8, !tbaa !5
  %69 = getelementptr inbounds %struct.complex, ptr %68, i32 -1
  store ptr %69, ptr %22, align 8, !tbaa !5
  %70 = load ptr, ptr %24, align 8, !tbaa !5
  %71 = load i64, ptr %70, align 8, !tbaa !9
  store i64 %71, ptr %31, align 8, !tbaa !9
  %72 = load i64, ptr %31, align 8, !tbaa !9
  %73 = add nsw i64 1, %72
  store i64 %73, ptr %32, align 8, !tbaa !9
  %74 = load i64, ptr %32, align 8, !tbaa !9
  %75 = load ptr, ptr %23, align 8, !tbaa !5
  %76 = sub i64 0, %74
  %77 = getelementptr inbounds %struct.complex, ptr %75, i64 %76
  store ptr %77, ptr %23, align 8, !tbaa !5
  %78 = load ptr, ptr %25, align 8, !tbaa !5
  %79 = getelementptr inbounds %struct.complex, ptr %78, i32 -1
  store ptr %79, ptr %25, align 8, !tbaa !5
  %80 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 0, ptr %80, align 8, !tbaa !9
  %81 = load ptr, ptr %15, align 8, !tbaa !5
  %82 = call i64 @lsame_(ptr noundef %81, ptr noundef @.str)
  store i64 %82, ptr %51, align 8, !tbaa !9
  %83 = load ptr, ptr %16, align 8, !tbaa !5
  %84 = call i64 @lsame_(ptr noundef %83, ptr noundef @.str.1)
  store i64 %84, ptr %54, align 8, !tbaa !9
  %85 = load ptr, ptr %26, align 8, !tbaa !5
  %86 = load i64, ptr %85, align 8, !tbaa !9
  %87 = icmp eq i64 %86, -1
  %88 = zext i1 %87 to i32
  %89 = sext i32 %88 to i64
  store i64 %89, ptr %58, align 8, !tbaa !9
  %90 = load i64, ptr %51, align 8, !tbaa !9
  %91 = icmp ne i64 %90, 0
  br i1 %91, label %92, label %104

92:                                               ; preds = %13
  %93 = load ptr, ptr %17, align 8, !tbaa !5
  %94 = load i64, ptr %93, align 8, !tbaa !9
  store i64 %94, ptr %48, align 8, !tbaa !9
  %95 = load ptr, ptr %18, align 8, !tbaa !5
  %96 = load i64, ptr %95, align 8, !tbaa !9
  %97 = icmp sge i64 1, %96
  br i1 %97, label %98, label %99

98:                                               ; preds = %92
  br label %102

99:                                               ; preds = %92
  %100 = load ptr, ptr %18, align 8, !tbaa !5
  %101 = load i64, ptr %100, align 8, !tbaa !9
  br label %102

102:                                              ; preds = %99, %98
  %103 = phi i64 [ 1, %98 ], [ %101, %99 ]
  store i64 %103, ptr %49, align 8, !tbaa !9
  br label %116

104:                                              ; preds = %13
  %105 = load ptr, ptr %18, align 8, !tbaa !5
  %106 = load i64, ptr %105, align 8, !tbaa !9
  store i64 %106, ptr %48, align 8, !tbaa !9
  %107 = load ptr, ptr %17, align 8, !tbaa !5
  %108 = load i64, ptr %107, align 8, !tbaa !9
  %109 = icmp sge i64 1, %108
  br i1 %109, label %110, label %111

110:                                              ; preds = %104
  br label %114

111:                                              ; preds = %104
  %112 = load ptr, ptr %17, align 8, !tbaa !5
  %113 = load i64, ptr %112, align 8, !tbaa !9
  br label %114

114:                                              ; preds = %111, %110
  %115 = phi i64 [ 1, %110 ], [ %113, %111 ]
  store i64 %115, ptr %49, align 8, !tbaa !9
  br label %116

116:                                              ; preds = %114, %102
  %117 = load i64, ptr %51, align 8, !tbaa !9
  %118 = icmp ne i64 %117, 0
  br i1 %118, label %125, label %119

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

123:                                              ; preds = %119
  %124 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -1, ptr %124, align 8, !tbaa !9
  br label %193

125:                                              ; preds = %119, %116
  %126 = load i64, ptr %54, align 8, !tbaa !9
  %127 = icmp ne i64 %126, 0
  br i1 %127, label %134, label %128

128:                                              ; preds = %125
  %129 = load ptr, ptr %16, align 8, !tbaa !5
  %130 = call i64 @lsame_(ptr noundef %129, ptr noundef @.str.3)
  %131 = icmp ne i64 %130, 0
  br i1 %131, label %134, label %132

132:                                              ; preds = %128
  %133 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -2, ptr %133, align 8, !tbaa !9
  br label %192

134:                                              ; preds = %128, %125
  %135 = load ptr, ptr %17, align 8, !tbaa !5
  %136 = load i64, ptr %135, align 8, !tbaa !9
  %137 = icmp slt i64 %136, 0
  br i1 %137, label %138, label %140

138:                                              ; preds = %134
  %139 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -3, ptr %139, align 8, !tbaa !9
  br label %191

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

144:                                              ; preds = %140
  %145 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -4, ptr %145, align 8, !tbaa !9
  br label %190

146:                                              ; preds = %140
  %147 = load ptr, ptr %19, align 8, !tbaa !5
  %148 = load i64, ptr %147, align 8, !tbaa !9
  %149 = icmp slt i64 %148, 0
  br i1 %149, label %155, label %150

150:                                              ; preds = %146
  %151 = load ptr, ptr %19, align 8, !tbaa !5
  %152 = load i64, ptr %151, align 8, !tbaa !9
  %153 = load i64, ptr %48, align 8, !tbaa !9
  %154 = icmp sgt i64 %152, %153
  br i1 %154, label %155, label %157

155:                                              ; preds = %150, %146
  %156 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -5, ptr %156, align 8, !tbaa !9
  br label %189

157:                                              ; preds = %150
  %158 = load ptr, ptr %21, align 8, !tbaa !5
  %159 = load i64, ptr %158, align 8, !tbaa !9
  %160 = load ptr, ptr %19, 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 %19, 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 -7, ptr %171, align 8, !tbaa !9
  br label %188

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

178:                                              ; preds = %172
  br label %182

179:                                              ; preds = %172
  %180 = load ptr, ptr %17, align 8, !tbaa !5
  %181 = load i64, ptr %180, align 8, !tbaa !9
  br label %182

182:                                              ; preds = %179, %178
  %183 = phi i64 [ 1, %178 ], [ %181, %179 ]
  %184 = icmp slt i64 %174, %183
  br i1 %184, label %185, label %187

185:                                              ; preds = %182
  %186 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -10, ptr %186, align 8, !tbaa !9
  br label %187

187:                                              ; preds = %185, %182
  br label %188

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

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

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

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

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

193:                                              ; preds = %192, %123
  %194 = load ptr, ptr %27, align 8, !tbaa !5
  %195 = load i64, ptr %194, align 8, !tbaa !9
  %196 = icmp eq i64 %195, 0
  br i1 %196, label %197, label %253

197:                                              ; preds = %193
  %198 = load ptr, ptr %17, align 8, !tbaa !5
  %199 = load i64, ptr %198, align 8, !tbaa !9
  %200 = icmp eq i64 %199, 0
  br i1 %200, label %205, label %201

201:                                              ; preds = %197
  %202 = load ptr, ptr %18, align 8, !tbaa !5
  %203 = load i64, ptr %202, align 8, !tbaa !9
  %204 = icmp eq i64 %203, 0
  br i1 %204, label %205, label %206

205:                                              ; preds = %201, %197
  store i64 1, ptr %57, align 8, !tbaa !9
  br label %234

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

225:                                              ; preds = %206
  %226 = load i64, ptr %33, align 8, !tbaa !9
  br label %229

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

229:                                              ; preds = %227, %225
  %230 = phi i64 [ %226, %225 ], [ %228, %227 ]
  store i64 %230, ptr %45, align 8, !tbaa !9
  %231 = load i64, ptr %49, align 8, !tbaa !9
  %232 = load i64, ptr %45, align 8, !tbaa !9
  %233 = mul nsw i64 %231, %232
  store i64 %233, ptr %57, align 8, !tbaa !9
  br label %234

234:                                              ; preds = %229, %205
  %235 = load i64, ptr %57, align 8, !tbaa !9
  %236 = sitofp i64 %235 to float
  %237 = load ptr, ptr %25, align 8, !tbaa !5
  %238 = getelementptr inbounds %struct.complex, ptr %237, i64 1
  %239 = getelementptr inbounds %struct.complex, ptr %238, i32 0, i32 0
  store float %236, ptr %239, align 4, !tbaa !11
  %240 = load ptr, ptr %25, align 8, !tbaa !5
  %241 = getelementptr inbounds %struct.complex, ptr %240, i64 1
  %242 = getelementptr inbounds %struct.complex, ptr %241, i32 0, i32 1
  store float 0.000000e+00, ptr %242, align 4, !tbaa !14
  %243 = load ptr, ptr %26, align 8, !tbaa !5
  %244 = load i64, ptr %243, align 8, !tbaa !9
  %245 = load i64, ptr %49, align 8, !tbaa !9
  %246 = icmp slt i64 %244, %245
  br i1 %246, label %247, label %252

247:                                              ; preds = %234
  %248 = load i64, ptr %58, align 8, !tbaa !9
  %249 = icmp ne i64 %248, 0
  br i1 %249, label %252, label %250

250:                                              ; preds = %247
  %251 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -12, ptr %251, align 8, !tbaa !9
  br label %252

252:                                              ; preds = %250, %247, %234
  br label %253

253:                                              ; preds = %252, %193
  %254 = load ptr, ptr %27, align 8, !tbaa !5
  %255 = load i64, ptr %254, align 8, !tbaa !9
  %256 = icmp ne i64 %255, 0
  br i1 %256, label %257, label %262

257:                                              ; preds = %253
  %258 = load ptr, ptr %27, align 8, !tbaa !5
  %259 = load i64, ptr %258, align 8, !tbaa !9
  %260 = sub nsw i64 0, %259
  store i64 %260, ptr %33, align 8, !tbaa !9
  %261 = call i32 @xerbla_(ptr noundef @.str.4, ptr noundef %33)
  store i32 0, ptr %14, align 4
  store i32 1, ptr %59, align 4
  br label %507

262:                                              ; preds = %253
  %263 = load i64, ptr %58, align 8, !tbaa !9
  %264 = icmp ne i64 %263, 0
  br i1 %264, label %265, label %266

265:                                              ; preds = %262
  store i32 0, ptr %14, align 4
  store i32 1, ptr %59, align 4
  br label %507

266:                                              ; preds = %262
  br label %267

267:                                              ; preds = %266
  %268 = load ptr, ptr %17, align 8, !tbaa !5
  %269 = load i64, ptr %268, align 8, !tbaa !9
  %270 = icmp eq i64 %269, 0
  br i1 %270, label %275, label %271

271:                                              ; preds = %267
  %272 = load ptr, ptr %18, align 8, !tbaa !5
  %273 = load i64, ptr %272, align 8, !tbaa !9
  %274 = icmp eq i64 %273, 0
  br i1 %274, label %275, label %276

275:                                              ; preds = %271, %267
  store i32 0, ptr %14, align 4
  store i32 1, ptr %59, align 4
  br label %507

276:                                              ; preds = %271
  store i64 2, ptr %52, align 8, !tbaa !9
  %277 = load i64, ptr %49, align 8, !tbaa !9
  store i64 %277, ptr %55, align 8, !tbaa !9
  %278 = load i64, ptr %45, align 8, !tbaa !9
  %279 = icmp sgt i64 %278, 1
  br i1 %279, label %280, label %323

280:                                              ; preds = %276
  %281 = load i64, ptr %45, align 8, !tbaa !9
  %282 = load ptr, ptr %19, align 8, !tbaa !5
  %283 = load i64, ptr %282, align 8, !tbaa !9
  %284 = icmp slt i64 %281, %283
  br i1 %284, label %285, label %323

285:                                              ; preds = %280
  %286 = load i64, ptr %49, align 8, !tbaa !9
  %287 = load i64, ptr %45, align 8, !tbaa !9
  %288 = mul nsw i64 %286, %287
  store i64 %288, ptr %50, align 8, !tbaa !9
  %289 = load ptr, ptr %26, align 8, !tbaa !5
  %290 = load i64, ptr %289, align 8, !tbaa !9
  %291 = load i64, ptr %50, align 8, !tbaa !9
  %292 = icmp slt i64 %290, %291
  br i1 %292, label %293, label %322

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

316:                                              ; preds = %293
  %317 = load i64, ptr %33, align 8, !tbaa !9
  br label %320

318:                                              ; preds = %293
  %319 = load i64, ptr %34, align 8, !tbaa !9
  br label %320

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

322:                                              ; preds = %320, %285
  br label %325

323:                                              ; preds = %280, %276
  %324 = load i64, ptr %49, align 8, !tbaa !9
  store i64 %324, ptr %50, align 8, !tbaa !9
  br label %325

325:                                              ; preds = %323, %322
  %326 = load i64, ptr %45, align 8, !tbaa !9
  %327 = load i64, ptr %52, align 8, !tbaa !9
  %328 = icmp slt i64 %326, %327
  br i1 %328, label %334, label %329

329:                                              ; preds = %325
  %330 = load i64, ptr %45, align 8, !tbaa !9
  %331 = load ptr, ptr %19, align 8, !tbaa !5
  %332 = load i64, ptr %331, align 8, !tbaa !9
  %333 = icmp sge i64 %330, %332
  br i1 %333, label %334, label %353

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

353:                                              ; preds = %329
  %354 = load i64, ptr %51, align 8, !tbaa !9
  %355 = icmp ne i64 %354, 0
  br i1 %355, label %356, label %359

356:                                              ; preds = %353
  %357 = load i64, ptr %54, align 8, !tbaa !9
  %358 = icmp ne i64 %357, 0
  br i1 %358, label %359, label %365

359:                                              ; preds = %356, %353
  %360 = load i64, ptr %51, align 8, !tbaa !9
  %361 = icmp ne i64 %360, 0
  br i1 %361, label %369, label %362

362:                                              ; preds = %359
  %363 = load i64, ptr %54, align 8, !tbaa !9
  %364 = icmp ne i64 %363, 0
  br i1 %364, label %365, label %369

365:                                              ; preds = %362, %356
  store i64 1, ptr %41, align 8, !tbaa !9
  %366 = load ptr, ptr %19, align 8, !tbaa !5
  %367 = load i64, ptr %366, align 8, !tbaa !9
  store i64 %367, ptr %42, align 8, !tbaa !9
  %368 = load i64, ptr %45, align 8, !tbaa !9
  store i64 %368, ptr %43, align 8, !tbaa !9
  br label %380

369:                                              ; preds = %362, %359
  %370 = load ptr, ptr %19, align 8, !tbaa !5
  %371 = load i64, ptr %370, align 8, !tbaa !9
  %372 = sub nsw i64 %371, 1
  %373 = load i64, ptr %45, align 8, !tbaa !9
  %374 = sdiv i64 %372, %373
  %375 = load i64, ptr %45, align 8, !tbaa !9
  %376 = mul nsw i64 %374, %375
  %377 = add nsw i64 %376, 1
  store i64 %377, ptr %41, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  %378 = load i64, ptr %45, align 8, !tbaa !9
  %379 = sub nsw i64 0, %378
  store i64 %379, ptr %43, align 8, !tbaa !9
  br label %380

380:                                              ; preds = %369, %365
  %381 = load i64, ptr %51, align 8, !tbaa !9
  %382 = icmp ne i64 %381, 0
  br i1 %382, label %383, label %386

383:                                              ; preds = %380
  %384 = load ptr, ptr %18, align 8, !tbaa !5
  %385 = load i64, ptr %384, align 8, !tbaa !9
  store i64 %385, ptr %47, align 8, !tbaa !9
  br label %389

386:                                              ; preds = %380
  %387 = load ptr, ptr %17, align 8, !tbaa !5
  %388 = load i64, ptr %387, align 8, !tbaa !9
  store i64 %388, ptr %46, align 8, !tbaa !9
  br label %389

389:                                              ; preds = %386, %383
  %390 = load i64, ptr %54, align 8, !tbaa !9
  %391 = icmp ne i64 %390, 0
  br i1 %391, label %392, label %394

392:                                              ; preds = %389
  %393 = getelementptr inbounds [1 x i8], ptr %56, i64 0, i64 0
  store i8 67, ptr %393, align 1, !tbaa !15
  br label %396

394:                                              ; preds = %389
  %395 = getelementptr inbounds [1 x i8], ptr %56, i64 0, i64 0
  store i8 78, ptr %395, align 1, !tbaa !15
  br label %396

396:                                              ; preds = %394, %392
  %397 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %397, ptr %33, align 8, !tbaa !9
  %398 = load i64, ptr %43, align 8, !tbaa !9
  store i64 %398, ptr %34, align 8, !tbaa !9
  %399 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %399, ptr %39, align 8, !tbaa !9
  br label %400

400:                                              ; preds = %493, %396
  %401 = load i64, ptr %34, align 8, !tbaa !9
  %402 = icmp slt i64 %401, 0
  br i1 %402, label %403, label %408

403:                                              ; preds = %400
  %404 = load i64, ptr %39, align 8, !tbaa !9
  %405 = load i64, ptr %33, align 8, !tbaa !9
  %406 = icmp sge i64 %404, %405
  %407 = zext i1 %406 to i32
  br label %413

408:                                              ; preds = %400
  %409 = load i64, ptr %39, align 8, !tbaa !9
  %410 = load i64, ptr %33, align 8, !tbaa !9
  %411 = icmp sle i64 %409, %410
  %412 = zext i1 %411 to i32
  br label %413

413:                                              ; preds = %408, %403
  %414 = phi i32 [ %407, %403 ], [ %412, %408 ]
  %415 = icmp ne i32 %414, 0
  br i1 %415, label %416, label %497

416:                                              ; preds = %413
  %417 = load i64, ptr %45, align 8, !tbaa !9
  store i64 %417, ptr %36, align 8, !tbaa !9
  %418 = load ptr, ptr %19, align 8, !tbaa !5
  %419 = load i64, ptr %418, align 8, !tbaa !9
  %420 = load i64, ptr %39, align 8, !tbaa !9
  %421 = sub nsw i64 %419, %420
  %422 = add nsw i64 %421, 1
  store i64 %422, ptr %37, align 8, !tbaa !9
  %423 = load i64, ptr %36, align 8, !tbaa !9
  %424 = load i64, ptr %37, align 8, !tbaa !9
  %425 = icmp sle i64 %423, %424
  br i1 %425, label %426, label %428

426:                                              ; preds = %416
  %427 = load i64, ptr %36, align 8, !tbaa !9
  br label %430

428:                                              ; preds = %416
  %429 = load i64, ptr %37, align 8, !tbaa !9
  br label %430

430:                                              ; preds = %428, %426
  %431 = phi i64 [ %427, %426 ], [ %429, %428 ]
  store i64 %431, ptr %44, align 8, !tbaa !9
  %432 = load i64, ptr %48, align 8, !tbaa !9
  %433 = load ptr, ptr %19, align 8, !tbaa !5
  %434 = load i64, ptr %433, align 8, !tbaa !9
  %435 = sub nsw i64 %432, %434
  %436 = load i64, ptr %39, align 8, !tbaa !9
  %437 = add nsw i64 %435, %436
  %438 = load i64, ptr %44, align 8, !tbaa !9
  %439 = add nsw i64 %437, %438
  %440 = sub nsw i64 %439, 1
  store i64 %440, ptr %36, align 8, !tbaa !9
  %441 = load ptr, ptr %20, align 8, !tbaa !5
  %442 = load i64, ptr %39, align 8, !tbaa !9
  %443 = load i64, ptr %29, align 8, !tbaa !9
  %444 = add nsw i64 %442, %443
  %445 = getelementptr inbounds %struct.complex, ptr %441, i64 %444
  %446 = load ptr, ptr %21, align 8, !tbaa !5
  %447 = load ptr, ptr %22, align 8, !tbaa !5
  %448 = load i64, ptr %39, align 8, !tbaa !9
  %449 = getelementptr inbounds %struct.complex, ptr %447, i64 %448
  %450 = getelementptr inbounds [4160 x %struct.complex], ptr %40, i64 0, i64 0
  %451 = call i32 @clarft_(ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef %36, ptr noundef %44, ptr noundef %445, ptr noundef %446, ptr noundef %449, ptr noundef %450, ptr noundef @c__65)
  %452 = load i64, ptr %51, align 8, !tbaa !9
  %453 = icmp ne i64 %452, 0
  br i1 %453, label %454, label %465

454:                                              ; preds = %430
  %455 = load ptr, ptr %17, align 8, !tbaa !5
  %456 = load i64, ptr %455, align 8, !tbaa !9
  %457 = load ptr, ptr %19, align 8, !tbaa !5
  %458 = load i64, ptr %457, align 8, !tbaa !9
  %459 = sub nsw i64 %456, %458
  %460 = load i64, ptr %39, align 8, !tbaa !9
  %461 = add nsw i64 %459, %460
  %462 = load i64, ptr %44, align 8, !tbaa !9
  %463 = add nsw i64 %461, %462
  %464 = sub nsw i64 %463, 1
  store i64 %464, ptr %46, align 8, !tbaa !9
  br label %476

465:                                              ; preds = %430
  %466 = load ptr, ptr %18, align 8, !tbaa !5
  %467 = load i64, ptr %466, align 8, !tbaa !9
  %468 = load ptr, ptr %19, align 8, !tbaa !5
  %469 = load i64, ptr %468, align 8, !tbaa !9
  %470 = sub nsw i64 %467, %469
  %471 = load i64, ptr %39, align 8, !tbaa !9
  %472 = add nsw i64 %470, %471
  %473 = load i64, ptr %44, align 8, !tbaa !9
  %474 = add nsw i64 %472, %473
  %475 = sub nsw i64 %474, 1
  store i64 %475, ptr %47, align 8, !tbaa !9
  br label %476

476:                                              ; preds = %465, %454
  %477 = load ptr, ptr %15, align 8, !tbaa !5
  %478 = getelementptr inbounds [1 x i8], ptr %56, i64 0, i64 0
  %479 = load ptr, ptr %20, align 8, !tbaa !5
  %480 = load i64, ptr %39, align 8, !tbaa !9
  %481 = load i64, ptr %29, align 8, !tbaa !9
  %482 = add nsw i64 %480, %481
  %483 = getelementptr inbounds %struct.complex, ptr %479, i64 %482
  %484 = load ptr, ptr %21, align 8, !tbaa !5
  %485 = getelementptr inbounds [4160 x %struct.complex], ptr %40, i64 0, i64 0
  %486 = load ptr, ptr %23, align 8, !tbaa !5
  %487 = load i64, ptr %32, align 8, !tbaa !9
  %488 = getelementptr inbounds %struct.complex, ptr %486, i64 %487
  %489 = load ptr, ptr %24, align 8, !tbaa !5
  %490 = load ptr, ptr %25, align 8, !tbaa !5
  %491 = getelementptr inbounds %struct.complex, ptr %490, i64 1
  %492 = call i32 @clarfb_(ptr noundef %477, ptr noundef %478, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef %46, ptr noundef %47, ptr noundef %44, ptr noundef %483, ptr noundef %484, ptr noundef %485, ptr noundef @c__65, ptr noundef %488, ptr noundef %489, ptr noundef %491, ptr noundef %55)
  br label %493

493:                                              ; preds = %476
  %494 = load i64, ptr %34, align 8, !tbaa !9
  %495 = load i64, ptr %39, align 8, !tbaa !9
  %496 = add nsw i64 %495, %494
  store i64 %496, ptr %39, align 8, !tbaa !9
  br label %400, !llvm.loop !16

497:                                              ; preds = %413
  br label %498

498:                                              ; preds = %497, %334
  %499 = load i64, ptr %57, align 8, !tbaa !9
  %500 = sitofp i64 %499 to float
  %501 = load ptr, ptr %25, align 8, !tbaa !5
  %502 = getelementptr inbounds %struct.complex, ptr %501, i64 1
  %503 = getelementptr inbounds %struct.complex, ptr %502, i32 0, i32 0
  store float %500, ptr %503, align 4, !tbaa !11
  %504 = load ptr, ptr %25, align 8, !tbaa !5
  %505 = getelementptr inbounds %struct.complex, ptr %504, i64 1
  %506 = getelementptr inbounds %struct.complex, ptr %505, i32 0, i32 1
  store float 0.000000e+00, ptr %506, align 4, !tbaa !14
  store i32 0, ptr %14, align 4
  store i32 1, ptr %59, align 4
  br label %507

507:                                              ; preds = %498, %275, %265, %257
  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 1, 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
  %508 = load i32, ptr %14, align 4
  ret i32 %508
}

; 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 @cunmr2_(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 = !{!7, !7, i64 0}
!16 = distinct !{!16, !17}
!17 = !{!"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 [9 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [8 x i8], align 1
@c__65 = external hidden global i64, align 8

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @cunmrq_(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
  %25 = alloca [1 x i8], align 1
  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
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #4
  %26 = getelementptr inbounds i8, ptr %7, i64 -8
  store i64 0, ptr %12, align 8, !tbaa !5
  %27 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #4
  %28 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #4
  %29 = load i64, ptr %11, align 8, !tbaa !5
  %30 = icmp eq i64 %29, -1
  %.not = icmp ne i64 %27, 0
  br i1 %.not, label %31, label %34

31:                                               ; preds = %13
  %32 = load i64, ptr %2, align 8, !tbaa !5
  %33 = load i64, ptr %3, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.smax.i64(i64 %33, i64 1)
  br label %38

34:                                               ; preds = %13
  %35 = load i64, ptr %3, align 8, !tbaa !5
  %36 = load i64, ptr %2, align 8, !tbaa !5
  %spec.select186 = tail call i64 @llvm.smax.i64(i64 %36, i64 1)
  %37 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #4
  %.not177 = icmp eq i64 %37, 0
  br i1 %.not177, label %.thread209.sink.split, label %38

38:                                               ; preds = %31, %34
  %.0163197 = phi i64 [ %spec.select186, %34 ], [ %spec.select, %31 ]
  %.0164194 = phi i64 [ %35, %34 ], [ %32, %31 ]
  %.not178 = icmp eq i64 %28, 0
  br i1 %.not178, label %39, label %41

39:                                               ; preds = %38
  %40 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #4
  %.not179 = icmp eq i64 %40, 0
  br i1 %.not179, label %.thread209.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 %.thread209.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 %.thread209.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, %.0164194
  %or.cond187 = select i1 %49, i1 true, i1 %50
  br i1 %or.cond187, label %.thread209.sink.split, label %51

51:                                               ; preds = %47
  %52 = load i64, ptr %6, align 8, !tbaa !5
  %spec.select188 = tail call i64 @llvm.umax.i64(i64 %48, i64 1)
  %53 = icmp slt i64 %52, %spec.select188
  br i1 %53, label %.thread209.sink.split, label %54

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

57:                                               ; preds = %54
  %.pr = load i64, ptr %12, align 8, !tbaa !5
  %58 = icmp eq i64 %.pr, 0
  br i1 %58, label %59, label %.thread209

59:                                               ; preds = %57
  %60 = icmp eq i64 %42, 0
  %61 = icmp eq i64 %45, 0
  %or.cond237 = or i1 %60, %61
  br i1 %or.cond237, label %70, label %62

62:                                               ; preds = %59
  store i64 1, ptr %16, align 16, !tbaa !5
  store ptr %0, ptr %14, align 16, !tbaa !9
  %63 = getelementptr inbounds i8, ptr %16, i64 8
  store i64 1, ptr %63, align 8, !tbaa !5
  %64 = getelementptr inbounds i8, ptr %14, i64 8
  store ptr %1, ptr %64, align 8, !tbaa !9
  %65 = 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
  %66 = 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
  %67 = call i64 @llvm.smin.i64(i64 %66, i64 64)
  %68 = mul nsw i64 %67, %.0163197
  %69 = sitofp i64 %68 to float
  br label %70

70:                                               ; preds = %59, %62
  %.0165 = phi i64 [ %67, %62 ], [ undef, %59 ]
  %.0161 = phi float [ %69, %62 ], [ 1.000000e+00, %59 ]
  store float %.0161, 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
  %72 = load i64, ptr %11, align 8, !tbaa !5
  %73 = icmp sge i64 %72, %.0163197
  %or.cond = select i1 %73, i1 true, i1 %30
  br i1 %or.cond, label %.thread199, label %.thread209.sink.split

.thread199:                                       ; preds = %70
  %.pr205.pr = load i64, ptr %12, align 8, !tbaa !5
  %.not181 = icmp eq i64 %.pr205.pr, 0
  br i1 %.not181, label %77, label %.thread209

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

.thread209:                                       ; preds = %.thread209.sink.split, %57, %.thread199
  %74 = phi i64 [ %.pr205.pr, %.thread199 ], [ %.pr, %57 ], [ %.sink, %.thread209.sink.split ]
  %75 = sub nsw i64 0, %74
  store i64 %75, ptr %15, align 8, !tbaa !5
  %76 = call i32 @xerbla_(ptr noundef nonnull @.str.4, ptr noundef nonnull %15) #4
  br label %157

77:                                               ; preds = %.thread199
  br i1 %30, label %157, label %78

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

81:                                               ; preds = %78
  %82 = load i64, ptr %3, align 8, !tbaa !5
  %83 = icmp eq i64 %82, 0
  br i1 %83, label %157, label %84

84:                                               ; preds = %81
  store i64 %.0163197, ptr %24, align 8, !tbaa !5
  %85 = icmp sgt i64 %.0165, 1
  br i1 %85, label %86, label %.thread220

86:                                               ; preds = %84
  %87 = load i64, ptr %4, align 8, !tbaa !5
  %88 = icmp slt i64 %.0165, %87
  %89 = mul nuw nsw i64 %.0165, %.0163197
  %90 = icmp slt i64 %72, %89
  %or.cond239 = select i1 %88, i1 %90, i1 false
  br i1 %or.cond239, label %91, label %.thread216

91:                                               ; preds = %86
  %92 = sdiv i64 %72, %.0163197
  store i64 1, ptr %16, align 16, !tbaa !5
  store ptr %0, ptr %14, align 16, !tbaa !9
  %93 = getelementptr inbounds i8, ptr %16, i64 8
  store i64 1, ptr %93, align 8, !tbaa !5
  %94 = getelementptr inbounds i8, ptr %14, i64 8
  store ptr %1, ptr %94, align 8, !tbaa !9
  %95 = 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
  %96 = 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
  %97 = call i64 @llvm.smax.i64(i64 %96, i64 2)
  %98 = icmp slt i64 %92, %97
  br i1 %98, label %.thread220, label %..thread216_crit_edge

..thread216_crit_edge:                            ; preds = %91
  %.pre = load i64, ptr %4, align 8, !tbaa !5
  br label %.thread216

.thread216:                                       ; preds = %..thread216_crit_edge, %86
  %99 = phi i64 [ %.pre, %..thread216_crit_edge ], [ %87, %86 ]
  %.2219 = phi i64 [ %92, %..thread216_crit_edge ], [ %.0165, %86 ]
  %.fr184 = freeze i64 %99
  %.not183 = icmp slt i64 %.2219, %.fr184
  br i1 %.not183, label %101, label %.thread220

.thread220:                                       ; preds = %84, %.thread216, %91
  %100 = call i32 @cunmr2_(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

101:                                              ; preds = %.thread216
  %102 = icmp ne i64 %28, 0
  %or.cond190 = xor i1 %.not, %102
  br i1 %or.cond190, label %108, label %103

103:                                              ; preds = %101
  %104 = add nsw i64 %.fr184, -1
  %105 = srem i64 %104, %.2219
  %106 = sub i64 %.fr184, %105
  %107 = sub nsw i64 0, %.2219
  br label %108

108:                                              ; preds = %101, %103
  %.0169 = phi i64 [ %106, %103 ], [ 1, %101 ]
  %109 = phi i64 [ 1, %103 ], [ %.fr184, %101 ]
  %.0167 = phi i64 [ %107, %103 ], [ %.2219, %101 ]
  br i1 %.not, label %110, label %112

110:                                              ; preds = %108
  %111 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %111, ptr %22, align 8, !tbaa !5
  br label %114

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

114:                                              ; preds = %112, %110
  %. = select i1 %102, i8 67, i8 78
  store i8 %., ptr %25, align 1, !tbaa !15
  %115 = icmp slt i64 %.0167, 0
  %invariant.gep = getelementptr i8, ptr %5, i64 -8
  %116 = icmp sge i64 %.0169, %109
  %117 = icmp sle i64 %.0169, %109
  %.in232 = select i1 %115, i1 %116, i1 %117
  br i1 %.in232, label %.lr.ph, label %.loopexit

.lr.ph:                                           ; preds = %114
  %118 = add i64 %.0164194, -1
  br i1 %.not, label %.lr.ph.split.us, label %.lr.ph.split

.lr.ph.split.us:                                  ; preds = %.lr.ph, %.lr.ph.split.us
  %.0170233.us = phi i64 [ %135, %.lr.ph.split.us ], [ %.0169, %.lr.ph ]
  %119 = load i64, ptr %4, align 8, !tbaa !5
  %reass.sub234 = sub i64 %119, %.0170233.us
  %120 = add i64 %reass.sub234, 1
  %121 = call i64 @llvm.smin.i64(i64 %.2219, i64 %120)
  store i64 %121, ptr %20, align 8, !tbaa !5
  %122 = add i64 %118, %.0170233.us
  %123 = sub i64 %122, %119
  %124 = add i64 %123, %121
  store i64 %124, ptr %17, align 8, !tbaa !5
  %gep.us = getelementptr %struct.complex, ptr %invariant.gep, i64 %.0170233.us
  %125 = getelementptr inbounds %struct.complex, ptr %26, i64 %.0170233.us
  %126 = call i32 @clarft_(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull %17, ptr noundef nonnull %20, ptr noundef %gep.us, ptr noundef nonnull %6, ptr noundef nonnull %125, ptr noundef nonnull %19, ptr noundef nonnull @c__65) #4
  %127 = load i64, ptr %2, align 8, !tbaa !5
  %128 = load i64, ptr %4, align 8, !tbaa !5
  %129 = load i64, ptr %20, align 8, !tbaa !5
  %130 = add i64 %.0170233.us, -1
  %131 = add i64 %130, %127
  %132 = sub i64 %131, %128
  %133 = add i64 %132, %129
  store i64 %133, ptr %21, align 8, !tbaa !5
  %134 = call i32 @clarfb_(ptr noundef %0, ptr noundef nonnull %25, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull %20, ptr noundef %gep.us, ptr noundef nonnull %6, ptr noundef nonnull %19, ptr noundef nonnull @c__65, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef nonnull %24) #4
  %135 = add nsw i64 %.0170233.us, %.0167
  %136 = icmp sge i64 %135, %109
  %137 = icmp sle i64 %135, %109
  %.in.us = select i1 %115, i1 %136, i1 %137
  br i1 %.in.us, label %.lr.ph.split.us, label %.loopexit, !llvm.loop !16

.lr.ph.split:                                     ; preds = %.lr.ph, %.lr.ph.split
  %.0170233 = phi i64 [ %154, %.lr.ph.split ], [ %.0169, %.lr.ph ]
  %138 = load i64, ptr %4, align 8, !tbaa !5
  %reass.sub = sub i64 %138, %.0170233
  %139 = add i64 %reass.sub, 1
  %140 = call i64 @llvm.smin.i64(i64 %.2219, i64 %139)
  store i64 %140, ptr %20, align 8, !tbaa !5
  %141 = add i64 %118, %.0170233
  %142 = sub i64 %141, %138
  %143 = add i64 %142, %140
  store i64 %143, ptr %17, align 8, !tbaa !5
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %.0170233
  %144 = getelementptr inbounds %struct.complex, ptr %26, i64 %.0170233
  %145 = call i32 @clarft_(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull %17, ptr noundef nonnull %20, ptr noundef %gep, ptr noundef nonnull %6, ptr noundef nonnull %144, ptr noundef nonnull %19, ptr noundef nonnull @c__65) #4
  %146 = load i64, ptr %3, align 8, !tbaa !5
  %147 = load i64, ptr %4, align 8, !tbaa !5
  %148 = load i64, ptr %20, align 8, !tbaa !5
  %149 = add i64 %.0170233, -1
  %150 = add i64 %149, %146
  %151 = sub i64 %150, %147
  %152 = add i64 %151, %148
  store i64 %152, ptr %22, align 8, !tbaa !5
  %153 = call i32 @clarfb_(ptr noundef %0, ptr noundef nonnull %25, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull %20, ptr noundef %gep, ptr noundef nonnull %6, ptr noundef nonnull %19, ptr noundef nonnull @c__65, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef nonnull %24) #4
  %154 = add nsw i64 %.0170233, %.0167
  %155 = icmp sge i64 %154, %109
  %156 = icmp sle i64 %154, %109
  %.in = select i1 %115, i1 %155, i1 %156
  br i1 %.in, label %.lr.ph.split, label %.loopexit, !llvm.loop !16

.loopexit:                                        ; preds = %.lr.ph.split, %.lr.ph.split.us, %114, %.thread220
  store float %.0161, ptr %10, align 4, !tbaa !11
  store float 0.000000e+00, ptr %71, align 4, !tbaa !14
  br label %157

157:                                              ; preds = %78, %81, %77, %.loopexit, %.thread209
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #4
  call void @llvm.lifetime.end.p0(i64 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 @cunmr2_(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.smin.i64(i64, i64) #3

; 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.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 = !{!7, !7, i64 0}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}


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