; LLVM IR from OpenMathLib/OpenBLAS :: lapack-netlib/SRC (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 i32, align 4
@c__1 = external hidden global i32, align 4
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i32, align 4
@.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 i32, align 4

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

103:                                              ; preds = %13
  %104 = load ptr, ptr %16, align 8, !tbaa !5
  %105 = load i32, ptr %104, align 4, !tbaa !9
  store i32 %105, ptr %49, align 4, !tbaa !9
  %106 = load ptr, ptr %17, align 8, !tbaa !5
  %107 = load i32, ptr %106, align 4, !tbaa !9
  %108 = icmp sge i32 1, %107
  br i1 %108, label %109, label %110

109:                                              ; preds = %103
  br label %113

110:                                              ; preds = %103
  %111 = load ptr, ptr %17, align 8, !tbaa !5
  %112 = load i32, ptr %111, align 4, !tbaa !9
  br label %113

113:                                              ; preds = %110, %109
  %114 = phi i32 [ 1, %109 ], [ %112, %110 ]
  store i32 %114, ptr %50, align 4, !tbaa !9
  br label %127

115:                                              ; preds = %13
  %116 = load ptr, ptr %17, align 8, !tbaa !5
  %117 = load i32, ptr %116, align 4, !tbaa !9
  store i32 %117, ptr %49, align 4, !tbaa !9
  %118 = load ptr, ptr %16, align 8, !tbaa !5
  %119 = load i32, ptr %118, align 4, !tbaa !9
  %120 = icmp sge i32 1, %119
  br i1 %120, label %121, label %122

121:                                              ; preds = %115
  br label %125

122:                                              ; preds = %115
  %123 = load ptr, ptr %16, align 8, !tbaa !5
  %124 = load i32, ptr %123, align 4, !tbaa !9
  br label %125

125:                                              ; preds = %122, %121
  %126 = phi i32 [ 1, %121 ], [ %124, %122 ]
  store i32 %126, ptr %50, align 4, !tbaa !9
  br label %127

127:                                              ; preds = %125, %113
  %128 = load i32, ptr %38, align 4, !tbaa !9
  %129 = icmp ne i32 %128, 0
  br i1 %129, label %136, label %130

130:                                              ; preds = %127
  %131 = load ptr, ptr %14, align 8, !tbaa !5
  %132 = call i32 @lsame_(ptr noundef %131, ptr noundef @.str.2)
  %133 = icmp ne i32 %132, 0
  br i1 %133, label %136, label %134

134:                                              ; preds = %130
  %135 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -1, ptr %135, align 4, !tbaa !9
  br label %215

136:                                              ; preds = %130, %127
  %137 = load i32, ptr %51, align 4, !tbaa !9
  %138 = icmp ne i32 %137, 0
  br i1 %138, label %145, label %139

139:                                              ; preds = %136
  %140 = load ptr, ptr %15, align 8, !tbaa !5
  %141 = call i32 @lsame_(ptr noundef %140, ptr noundef @.str.3)
  %142 = icmp ne i32 %141, 0
  br i1 %142, label %145, label %143

143:                                              ; preds = %139
  %144 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -2, ptr %144, align 4, !tbaa !9
  br label %214

145:                                              ; preds = %139, %136
  %146 = load ptr, ptr %16, align 8, !tbaa !5
  %147 = load i32, ptr %146, align 4, !tbaa !9
  %148 = icmp slt i32 %147, 0
  br i1 %148, label %149, label %151

149:                                              ; preds = %145
  %150 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -3, ptr %150, align 4, !tbaa !9
  br label %213

151:                                              ; preds = %145
  %152 = load ptr, ptr %17, align 8, !tbaa !5
  %153 = load i32, ptr %152, align 4, !tbaa !9
  %154 = icmp slt i32 %153, 0
  br i1 %154, label %155, label %157

155:                                              ; preds = %151
  %156 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -4, ptr %156, align 4, !tbaa !9
  br label %212

157:                                              ; preds = %151
  %158 = load ptr, ptr %18, align 8, !tbaa !5
  %159 = load i32, ptr %158, align 4, !tbaa !9
  %160 = icmp slt i32 %159, 0
  br i1 %160, label %166, label %161

161:                                              ; preds = %157
  %162 = load ptr, ptr %18, align 8, !tbaa !5
  %163 = load i32, ptr %162, align 4, !tbaa !9
  %164 = load i32, ptr %49, align 4, !tbaa !9
  %165 = icmp sgt i32 %163, %164
  br i1 %165, label %166, label %168

166:                                              ; preds = %161, %157
  %167 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -5, ptr %167, align 4, !tbaa !9
  br label %211

168:                                              ; preds = %161
  %169 = load ptr, ptr %20, align 8, !tbaa !5
  %170 = load i32, ptr %169, align 4, !tbaa !9
  %171 = load ptr, ptr %18, align 8, !tbaa !5
  %172 = load i32, ptr %171, align 4, !tbaa !9
  %173 = icmp sge i32 1, %172
  br i1 %173, label %174, label %175

174:                                              ; preds = %168
  br label %178

175:                                              ; preds = %168
  %176 = load ptr, ptr %18, align 8, !tbaa !5
  %177 = load i32, ptr %176, align 4, !tbaa !9
  br label %178

178:                                              ; preds = %175, %174
  %179 = phi i32 [ 1, %174 ], [ %177, %175 ]
  %180 = icmp slt i32 %170, %179
  br i1 %180, label %181, label %183

181:                                              ; preds = %178
  %182 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -7, ptr %182, align 4, !tbaa !9
  br label %210

183:                                              ; preds = %178
  %184 = load ptr, ptr %23, align 8, !tbaa !5
  %185 = load i32, ptr %184, align 4, !tbaa !9
  %186 = load ptr, ptr %16, align 8, !tbaa !5
  %187 = load i32, ptr %186, align 4, !tbaa !9
  %188 = icmp sge i32 1, %187
  br i1 %188, label %189, label %190

189:                                              ; preds = %183
  br label %193

190:                                              ; preds = %183
  %191 = load ptr, ptr %16, align 8, !tbaa !5
  %192 = load i32, ptr %191, align 4, !tbaa !9
  br label %193

193:                                              ; preds = %190, %189
  %194 = phi i32 [ 1, %189 ], [ %192, %190 ]
  %195 = icmp slt i32 %185, %194
  br i1 %195, label %196, label %198

196:                                              ; preds = %193
  %197 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -10, ptr %197, align 4, !tbaa !9
  br label %209

198:                                              ; preds = %193
  %199 = load ptr, ptr %25, align 8, !tbaa !5
  %200 = load i32, ptr %199, align 4, !tbaa !9
  %201 = load i32, ptr %50, align 4, !tbaa !9
  %202 = icmp slt i32 %200, %201
  br i1 %202, label %203, label %208

203:                                              ; preds = %198
  %204 = load i32, ptr %55, align 4, !tbaa !9
  %205 = icmp ne i32 %204, 0
  br i1 %205, label %208, label %206

206:                                              ; preds = %203
  %207 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -12, ptr %207, align 4, !tbaa !9
  br label %208

208:                                              ; preds = %206, %203, %198
  br label %209

209:                                              ; preds = %208, %196
  br label %210

210:                                              ; preds = %209, %181
  br label %211

211:                                              ; preds = %210, %166
  br label %212

212:                                              ; preds = %211, %155
  br label %213

213:                                              ; preds = %212, %149
  br label %214

214:                                              ; preds = %213, %143
  br label %215

215:                                              ; preds = %214, %134
  %216 = load ptr, ptr %26, align 8, !tbaa !5
  %217 = load i32, ptr %216, align 4, !tbaa !9
  %218 = icmp eq i32 %217, 0
  br i1 %218, label %219, label %311

219:                                              ; preds = %215
  %220 = load ptr, ptr %16, align 8, !tbaa !5
  %221 = load i32, ptr %220, align 4, !tbaa !9
  %222 = icmp eq i32 %221, 0
  br i1 %222, label %227, label %223

223:                                              ; preds = %219
  %224 = load ptr, ptr %17, align 8, !tbaa !5
  %225 = load i32, ptr %224, align 4, !tbaa !9
  %226 = icmp eq i32 %225, 0
  br i1 %226, label %227, label %228

227:                                              ; preds = %223, %219
  store i32 1, ptr %54, align 4, !tbaa !9
  br label %302

228:                                              ; preds = %223
  %229 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 0
  store i32 1, ptr %229, align 4, !tbaa !9
  %230 = load ptr, ptr %14, align 8, !tbaa !5
  %231 = getelementptr inbounds [2 x ptr], ptr %27, i64 0, i64 0
  store ptr %230, ptr %231, align 16, !tbaa !5
  %232 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 1
  store i32 1, ptr %232, align 4, !tbaa !9
  %233 = load ptr, ptr %15, align 8, !tbaa !5
  %234 = getelementptr inbounds [2 x ptr], ptr %27, i64 0, i64 1
  store ptr %233, ptr %234, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #3
  store i32 2, ptr %59, align 4, !tbaa !9
  %235 = getelementptr inbounds [2 x i8], ptr %37, i64 0, i64 0
  store ptr %235, ptr %61, align 8, !tbaa !5
  store i32 0, ptr %57, align 4, !tbaa !9
  br label %236

236:                                              ; preds = %272, %228
  %237 = load i32, ptr %57, align 4, !tbaa !9
  %238 = load i32, ptr @c__2, align 4, !tbaa !9
  %239 = icmp slt i32 %237, %238
  br i1 %239, label %240, label %275

240:                                              ; preds = %236
  %241 = load i32, ptr %59, align 4, !tbaa !9
  store i32 %241, ptr %58, align 4, !tbaa !9
  %242 = load i32, ptr %57, align 4, !tbaa !9
  %243 = sext i32 %242 to i64
  %244 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 %243
  %245 = load i32, ptr %244, align 4, !tbaa !9
  %246 = load i32, ptr %58, align 4, !tbaa !9
  %247 = icmp slt i32 %245, %246
  br i1 %247, label %248, label %253

248:                                              ; preds = %240
  %249 = load i32, ptr %57, align 4, !tbaa !9
  %250 = sext i32 %249 to i64
  %251 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 %250
  %252 = load i32, ptr %251, align 4, !tbaa !9
  store i32 %252, ptr %58, align 4, !tbaa !9
  br label %253

253:                                              ; preds = %248, %240
  %254 = load i32, ptr %58, align 4, !tbaa !9
  %255 = load i32, ptr %59, align 4, !tbaa !9
  %256 = sub nsw i32 %255, %254
  store i32 %256, ptr %59, align 4, !tbaa !9
  %257 = load i32, ptr %57, align 4, !tbaa !9
  %258 = sext i32 %257 to i64
  %259 = getelementptr inbounds [2 x ptr], ptr %27, i64 0, i64 %258
  %260 = load ptr, ptr %259, align 8, !tbaa !5
  store ptr %260, ptr %60, align 8, !tbaa !5
  br label %261

261:                                              ; preds = %265, %253
  %262 = load i32, ptr %58, align 4, !tbaa !9
  %263 = add nsw i32 %262, -1
  store i32 %263, ptr %58, align 4, !tbaa !9
  %264 = icmp sge i32 %263, 0
  br i1 %264, label %265, label %271

265:                                              ; preds = %261
  %266 = load ptr, ptr %60, align 8, !tbaa !5
  %267 = getelementptr inbounds i8, ptr %266, i32 1
  store ptr %267, ptr %60, align 8, !tbaa !5
  %268 = load i8, ptr %266, align 1, !tbaa !11
  %269 = load ptr, ptr %61, align 8, !tbaa !5
  %270 = getelementptr inbounds i8, ptr %269, i32 1
  store ptr %270, ptr %61, align 8, !tbaa !5
  store i8 %268, ptr %269, align 1, !tbaa !11
  br label %261, !llvm.loop !12

271:                                              ; preds = %261
  br label %272

272:                                              ; preds = %271
  %273 = load i32, ptr %57, align 4, !tbaa !9
  %274 = add nsw i32 %273, 1
  store i32 %274, ptr %57, align 4, !tbaa !9
  br label %236, !llvm.loop !14

275:                                              ; preds = %236
  br label %276

276:                                              ; preds = %280, %275
  %277 = load i32, ptr %59, align 4, !tbaa !9
  %278 = add nsw i32 %277, -1
  store i32 %278, ptr %59, align 4, !tbaa !9
  %279 = icmp sge i32 %278, 0
  br i1 %279, label %280, label %283

280:                                              ; preds = %276
  %281 = load ptr, ptr %61, align 8, !tbaa !5
  %282 = getelementptr inbounds i8, ptr %281, i32 1
  store ptr %282, ptr %61, align 8, !tbaa !5
  store i8 32, ptr %281, align 1, !tbaa !11
  br label %276, !llvm.loop !15

283:                                              ; preds = %276
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #3
  store i32 64, ptr %32, align 4, !tbaa !9
  %284 = getelementptr inbounds [2 x i8], ptr %37, i64 0, i64 0
  %285 = load ptr, ptr %16, align 8, !tbaa !5
  %286 = load ptr, ptr %17, align 8, !tbaa !5
  %287 = load ptr, ptr %18, align 8, !tbaa !5
  %288 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.4, ptr noundef %284, ptr noundef %285, ptr noundef %286, ptr noundef %287, ptr noundef @c_n1, i32 noundef 6, i32 noundef 2)
  store i32 %288, ptr %33, align 4, !tbaa !9
  %289 = load i32, ptr %32, align 4, !tbaa !9
  %290 = load i32, ptr %33, align 4, !tbaa !9
  %291 = icmp sle i32 %289, %290
  br i1 %291, label %292, label %294

292:                                              ; preds = %283
  %293 = load i32, ptr %32, align 4, !tbaa !9
  br label %296

294:                                              ; preds = %283
  %295 = load i32, ptr %33, align 4, !tbaa !9
  br label %296

296:                                              ; preds = %294, %292
  %297 = phi i32 [ %293, %292 ], [ %295, %294 ]
  store i32 %297, ptr %46, align 4, !tbaa !9
  %298 = load i32, ptr %50, align 4, !tbaa !9
  %299 = load i32, ptr %46, align 4, !tbaa !9
  %300 = mul nsw i32 %298, %299
  %301 = add nsw i32 %300, 4160
  store i32 %301, ptr %54, align 4, !tbaa !9
  br label %302

302:                                              ; preds = %296, %227
  %303 = load i32, ptr %54, align 4, !tbaa !9
  %304 = sitofp i32 %303 to float
  %305 = load ptr, ptr %24, align 8, !tbaa !5
  %306 = getelementptr inbounds %struct.complex, ptr %305, i64 1
  %307 = getelementptr inbounds %struct.complex, ptr %306, i32 0, i32 0
  store float %304, ptr %307, align 4, !tbaa !16
  %308 = load ptr, ptr %24, align 8, !tbaa !5
  %309 = getelementptr inbounds %struct.complex, ptr %308, i64 1
  %310 = getelementptr inbounds %struct.complex, ptr %309, i32 0, i32 1
  store float 0.000000e+00, ptr %310, align 4, !tbaa !19
  br label %311

311:                                              ; preds = %302, %215
  %312 = load ptr, ptr %26, align 8, !tbaa !5
  %313 = load i32, ptr %312, align 4, !tbaa !9
  %314 = icmp ne i32 %313, 0
  br i1 %314, label %315, label %320

315:                                              ; preds = %311
  %316 = load ptr, ptr %26, align 8, !tbaa !5
  %317 = load i32, ptr %316, align 4, !tbaa !9
  %318 = sub nsw i32 0, %317
  store i32 %318, ptr %32, align 4, !tbaa !9
  %319 = call i32 @xerbla_(ptr noundef @.str.4, ptr noundef %32, i32 noundef 6)
  store i32 1, ptr %62, align 4
  br label %622

320:                                              ; preds = %311
  %321 = load i32, ptr %55, align 4, !tbaa !9
  %322 = icmp ne i32 %321, 0
  br i1 %322, label %323, label %324

323:                                              ; preds = %320
  store i32 1, ptr %62, align 4
  br label %622

324:                                              ; preds = %320
  br label %325

325:                                              ; preds = %324
  %326 = load ptr, ptr %16, align 8, !tbaa !5
  %327 = load i32, ptr %326, align 4, !tbaa !9
  %328 = icmp eq i32 %327, 0
  br i1 %328, label %333, label %329

329:                                              ; preds = %325
  %330 = load ptr, ptr %17, align 8, !tbaa !5
  %331 = load i32, ptr %330, align 4, !tbaa !9
  %332 = icmp eq i32 %331, 0
  br i1 %332, label %333, label %334

333:                                              ; preds = %329, %325
  store i32 1, ptr %62, align 4
  br label %622

334:                                              ; preds = %329
  store i32 2, ptr %40, align 4, !tbaa !9
  %335 = load i32, ptr %50, align 4, !tbaa !9
  store i32 %335, ptr %52, align 4, !tbaa !9
  %336 = load i32, ptr %46, align 4, !tbaa !9
  %337 = icmp sgt i32 %336, 1
  br i1 %337, label %338, label %427

338:                                              ; preds = %334
  %339 = load i32, ptr %46, align 4, !tbaa !9
  %340 = load ptr, ptr %18, align 8, !tbaa !5
  %341 = load i32, ptr %340, align 4, !tbaa !9
  %342 = icmp slt i32 %339, %341
  br i1 %342, label %343, label %427

343:                                              ; preds = %338
  %344 = load ptr, ptr %25, align 8, !tbaa !5
  %345 = load i32, ptr %344, align 4, !tbaa !9
  %346 = load i32, ptr %50, align 4, !tbaa !9
  %347 = load i32, ptr %46, align 4, !tbaa !9
  %348 = mul nsw i32 %346, %347
  %349 = add nsw i32 %348, 4160
  %350 = icmp slt i32 %345, %349
  br i1 %350, label %351, label %426

351:                                              ; preds = %343
  %352 = load ptr, ptr %25, align 8, !tbaa !5
  %353 = load i32, ptr %352, align 4, !tbaa !9
  %354 = sub nsw i32 %353, 4160
  %355 = load i32, ptr %52, align 4, !tbaa !9
  %356 = sdiv i32 %354, %355
  store i32 %356, ptr %46, align 4, !tbaa !9
  %357 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 0
  store i32 1, ptr %357, align 4, !tbaa !9
  %358 = load ptr, ptr %14, align 8, !tbaa !5
  %359 = getelementptr inbounds [2 x ptr], ptr %27, i64 0, i64 0
  store ptr %358, ptr %359, align 16, !tbaa !5
  %360 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 1
  store i32 1, ptr %360, align 4, !tbaa !9
  %361 = load ptr, ptr %15, align 8, !tbaa !5
  %362 = getelementptr inbounds [2 x ptr], ptr %27, i64 0, i64 1
  store ptr %361, ptr %362, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #3
  store i32 2, ptr %65, align 4, !tbaa !9
  %363 = getelementptr inbounds [2 x i8], ptr %37, i64 0, i64 0
  store ptr %363, ptr %67, align 8, !tbaa !5
  store i32 0, ptr %63, align 4, !tbaa !9
  br label %364

364:                                              ; preds = %400, %351
  %365 = load i32, ptr %63, align 4, !tbaa !9
  %366 = load i32, ptr @c__2, align 4, !tbaa !9
  %367 = icmp slt i32 %365, %366
  br i1 %367, label %368, label %403

368:                                              ; preds = %364
  %369 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %369, ptr %64, align 4, !tbaa !9
  %370 = load i32, ptr %63, align 4, !tbaa !9
  %371 = sext i32 %370 to i64
  %372 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 %371
  %373 = load i32, ptr %372, align 4, !tbaa !9
  %374 = load i32, ptr %64, align 4, !tbaa !9
  %375 = icmp slt i32 %373, %374
  br i1 %375, label %376, label %381

376:                                              ; preds = %368
  %377 = load i32, ptr %63, align 4, !tbaa !9
  %378 = sext i32 %377 to i64
  %379 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 %378
  %380 = load i32, ptr %379, align 4, !tbaa !9
  store i32 %380, ptr %64, align 4, !tbaa !9
  br label %381

381:                                              ; preds = %376, %368
  %382 = load i32, ptr %64, align 4, !tbaa !9
  %383 = load i32, ptr %65, align 4, !tbaa !9
  %384 = sub nsw i32 %383, %382
  store i32 %384, ptr %65, align 4, !tbaa !9
  %385 = load i32, ptr %63, align 4, !tbaa !9
  %386 = sext i32 %385 to i64
  %387 = getelementptr inbounds [2 x ptr], ptr %27, i64 0, i64 %386
  %388 = load ptr, ptr %387, align 8, !tbaa !5
  store ptr %388, ptr %66, align 8, !tbaa !5
  br label %389

389:                                              ; preds = %393, %381
  %390 = load i32, ptr %64, align 4, !tbaa !9
  %391 = add nsw i32 %390, -1
  store i32 %391, ptr %64, align 4, !tbaa !9
  %392 = icmp sge i32 %391, 0
  br i1 %392, label %393, label %399

393:                                              ; preds = %389
  %394 = load ptr, ptr %66, align 8, !tbaa !5
  %395 = getelementptr inbounds i8, ptr %394, i32 1
  store ptr %395, ptr %66, align 8, !tbaa !5
  %396 = load i8, ptr %394, align 1, !tbaa !11
  %397 = load ptr, ptr %67, align 8, !tbaa !5
  %398 = getelementptr inbounds i8, ptr %397, i32 1
  store ptr %398, ptr %67, align 8, !tbaa !5
  store i8 %396, ptr %397, align 1, !tbaa !11
  br label %389, !llvm.loop !20

399:                                              ; preds = %389
  br label %400

400:                                              ; preds = %399
  %401 = load i32, ptr %63, align 4, !tbaa !9
  %402 = add nsw i32 %401, 1
  store i32 %402, ptr %63, align 4, !tbaa !9
  br label %364, !llvm.loop !21

403:                                              ; preds = %364
  br label %404

404:                                              ; preds = %408, %403
  %405 = load i32, ptr %65, align 4, !tbaa !9
  %406 = add nsw i32 %405, -1
  store i32 %406, ptr %65, align 4, !tbaa !9
  %407 = icmp sge i32 %406, 0
  br i1 %407, label %408, label %411

408:                                              ; preds = %404
  %409 = load ptr, ptr %67, align 8, !tbaa !5
  %410 = getelementptr inbounds i8, ptr %409, i32 1
  store ptr %410, ptr %67, align 8, !tbaa !5
  store i8 32, ptr %409, align 1, !tbaa !11
  br label %404, !llvm.loop !22

411:                                              ; preds = %404
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #3
  store i32 2, ptr %32, align 4, !tbaa !9
  %412 = getelementptr inbounds [2 x i8], ptr %37, i64 0, i64 0
  %413 = load ptr, ptr %16, align 8, !tbaa !5
  %414 = load ptr, ptr %17, align 8, !tbaa !5
  %415 = load ptr, ptr %18, align 8, !tbaa !5
  %416 = call i32 @ilaenv_(ptr noundef @c__2, ptr noundef @.str.4, ptr noundef %412, ptr noundef %413, ptr noundef %414, ptr noundef %415, ptr noundef @c_n1, i32 noundef 6, i32 noundef 2)
  store i32 %416, ptr %33, align 4, !tbaa !9
  %417 = load i32, ptr %32, align 4, !tbaa !9
  %418 = load i32, ptr %33, align 4, !tbaa !9
  %419 = icmp sge i32 %417, %418
  br i1 %419, label %420, label %422

420:                                              ; preds = %411
  %421 = load i32, ptr %32, align 4, !tbaa !9
  br label %424

422:                                              ; preds = %411
  %423 = load i32, ptr %33, align 4, !tbaa !9
  br label %424

424:                                              ; preds = %422, %420
  %425 = phi i32 [ %421, %420 ], [ %423, %422 ]
  store i32 %425, ptr %40, align 4, !tbaa !9
  br label %426

426:                                              ; preds = %424, %343
  br label %427

427:                                              ; preds = %426, %338, %334
  %428 = load i32, ptr %46, align 4, !tbaa !9
  %429 = load i32, ptr %40, align 4, !tbaa !9
  %430 = icmp slt i32 %428, %429
  br i1 %430, label %436, label %431

431:                                              ; preds = %427
  %432 = load i32, ptr %46, align 4, !tbaa !9
  %433 = load ptr, ptr %18, align 8, !tbaa !5
  %434 = load i32, ptr %433, align 4, !tbaa !9
  %435 = icmp sge i32 %432, %434
  br i1 %435, label %436, label %456

436:                                              ; preds = %431, %427
  %437 = load ptr, ptr %14, align 8, !tbaa !5
  %438 = load ptr, ptr %15, align 8, !tbaa !5
  %439 = load ptr, ptr %16, align 8, !tbaa !5
  %440 = load ptr, ptr %17, align 8, !tbaa !5
  %441 = load ptr, ptr %18, align 8, !tbaa !5
  %442 = load ptr, ptr %19, align 8, !tbaa !5
  %443 = load i32, ptr %29, align 4, !tbaa !9
  %444 = sext i32 %443 to i64
  %445 = getelementptr inbounds %struct.complex, ptr %442, i64 %444
  %446 = load ptr, ptr %20, align 8, !tbaa !5
  %447 = load ptr, ptr %21, align 8, !tbaa !5
  %448 = getelementptr inbounds %struct.complex, ptr %447, i64 1
  %449 = load ptr, ptr %22, align 8, !tbaa !5
  %450 = load i32, ptr %31, align 4, !tbaa !9
  %451 = sext i32 %450 to i64
  %452 = getelementptr inbounds %struct.complex, ptr %449, i64 %451
  %453 = load ptr, ptr %23, align 8, !tbaa !5
  %454 = load ptr, ptr %24, align 8, !tbaa !5
  %455 = getelementptr inbounds %struct.complex, ptr %454, i64 1
  call void @cunmr2_(ptr noundef %437, ptr noundef %438, ptr noundef %439, ptr noundef %440, ptr noundef %441, ptr noundef %445, ptr noundef %446, ptr noundef %448, ptr noundef %452, ptr noundef %453, ptr noundef %455, ptr noundef %41)
  br label %613

456:                                              ; preds = %431
  %457 = load i32, ptr %50, align 4, !tbaa !9
  %458 = load i32, ptr %46, align 4, !tbaa !9
  %459 = mul nsw i32 %457, %458
  %460 = add nsw i32 %459, 1
  store i32 %460, ptr %56, align 4, !tbaa !9
  %461 = load i32, ptr %38, align 4, !tbaa !9
  %462 = icmp ne i32 %461, 0
  br i1 %462, label %463, label %466

463:                                              ; preds = %456
  %464 = load i32, ptr %51, align 4, !tbaa !9
  %465 = icmp ne i32 %464, 0
  br i1 %465, label %466, label %472

466:                                              ; preds = %463, %456
  %467 = load i32, ptr %38, align 4, !tbaa !9
  %468 = icmp ne i32 %467, 0
  br i1 %468, label %476, label %469

469:                                              ; preds = %466
  %470 = load i32, ptr %51, align 4, !tbaa !9
  %471 = icmp ne i32 %470, 0
  br i1 %471, label %472, label %476

472:                                              ; preds = %469, %463
  store i32 1, ptr %42, align 4, !tbaa !9
  %473 = load ptr, ptr %18, align 8, !tbaa !5
  %474 = load i32, ptr %473, align 4, !tbaa !9
  store i32 %474, ptr %43, align 4, !tbaa !9
  %475 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %475, ptr %44, align 4, !tbaa !9
  br label %487

476:                                              ; preds = %469, %466
  %477 = load ptr, ptr %18, align 8, !tbaa !5
  %478 = load i32, ptr %477, align 4, !tbaa !9
  %479 = sub nsw i32 %478, 1
  %480 = load i32, ptr %46, align 4, !tbaa !9
  %481 = sdiv i32 %479, %480
  %482 = load i32, ptr %46, align 4, !tbaa !9
  %483 = mul nsw i32 %481, %482
  %484 = add nsw i32 %483, 1
  store i32 %484, ptr %42, align 4, !tbaa !9
  store i32 1, ptr %43, align 4, !tbaa !9
  %485 = load i32, ptr %46, align 4, !tbaa !9
  %486 = sub nsw i32 0, %485
  store i32 %486, ptr %44, align 4, !tbaa !9
  br label %487

487:                                              ; preds = %476, %472
  %488 = load i32, ptr %38, align 4, !tbaa !9
  %489 = icmp ne i32 %488, 0
  br i1 %489, label %490, label %493

490:                                              ; preds = %487
  %491 = load ptr, ptr %17, align 8, !tbaa !5
  %492 = load i32, ptr %491, align 4, !tbaa !9
  store i32 %492, ptr %48, align 4, !tbaa !9
  br label %496

493:                                              ; preds = %487
  %494 = load ptr, ptr %16, align 8, !tbaa !5
  %495 = load i32, ptr %494, align 4, !tbaa !9
  store i32 %495, ptr %47, align 4, !tbaa !9
  br label %496

496:                                              ; preds = %493, %490
  %497 = load i32, ptr %51, align 4, !tbaa !9
  %498 = icmp ne i32 %497, 0
  br i1 %498, label %499, label %501

499:                                              ; preds = %496
  %500 = getelementptr inbounds [1 x i8], ptr %53, i64 0, i64 0
  store i8 67, ptr %500, align 1, !tbaa !11
  br label %503

501:                                              ; preds = %496
  %502 = getelementptr inbounds [1 x i8], ptr %53, i64 0, i64 0
  store i8 78, ptr %502, align 1, !tbaa !11
  br label %503

503:                                              ; preds = %501, %499
  %504 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %504, ptr %32, align 4, !tbaa !9
  %505 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %505, ptr %33, align 4, !tbaa !9
  %506 = load i32, ptr %42, align 4, !tbaa !9
  store i32 %506, ptr %39, align 4, !tbaa !9
  br label %507

507:                                              ; preds = %608, %503
  %508 = load i32, ptr %33, align 4, !tbaa !9
  %509 = icmp slt i32 %508, 0
  br i1 %509, label %510, label %515

510:                                              ; preds = %507
  %511 = load i32, ptr %39, align 4, !tbaa !9
  %512 = load i32, ptr %32, align 4, !tbaa !9
  %513 = icmp sge i32 %511, %512
  %514 = zext i1 %513 to i32
  br label %520

515:                                              ; preds = %507
  %516 = load i32, ptr %39, align 4, !tbaa !9
  %517 = load i32, ptr %32, align 4, !tbaa !9
  %518 = icmp sle i32 %516, %517
  %519 = zext i1 %518 to i32
  br label %520

520:                                              ; preds = %515, %510
  %521 = phi i32 [ %514, %510 ], [ %519, %515 ]
  %522 = icmp ne i32 %521, 0
  br i1 %522, label %523, label %612

523:                                              ; preds = %520
  %524 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %524, ptr %35, align 4, !tbaa !9
  %525 = load ptr, ptr %18, align 8, !tbaa !5
  %526 = load i32, ptr %525, align 4, !tbaa !9
  %527 = load i32, ptr %39, align 4, !tbaa !9
  %528 = sub nsw i32 %526, %527
  %529 = add nsw i32 %528, 1
  store i32 %529, ptr %36, align 4, !tbaa !9
  %530 = load i32, ptr %35, align 4, !tbaa !9
  %531 = load i32, ptr %36, align 4, !tbaa !9
  %532 = icmp sle i32 %530, %531
  br i1 %532, label %533, label %535

533:                                              ; preds = %523
  %534 = load i32, ptr %35, align 4, !tbaa !9
  br label %537

535:                                              ; preds = %523
  %536 = load i32, ptr %36, align 4, !tbaa !9
  br label %537

537:                                              ; preds = %535, %533
  %538 = phi i32 [ %534, %533 ], [ %536, %535 ]
  store i32 %538, ptr %45, align 4, !tbaa !9
  %539 = load i32, ptr %49, align 4, !tbaa !9
  %540 = load ptr, ptr %18, align 8, !tbaa !5
  %541 = load i32, ptr %540, align 4, !tbaa !9
  %542 = sub nsw i32 %539, %541
  %543 = load i32, ptr %39, align 4, !tbaa !9
  %544 = add nsw i32 %542, %543
  %545 = load i32, ptr %45, align 4, !tbaa !9
  %546 = add nsw i32 %544, %545
  %547 = sub nsw i32 %546, 1
  store i32 %547, ptr %35, align 4, !tbaa !9
  %548 = load ptr, ptr %19, align 8, !tbaa !5
  %549 = load i32, ptr %39, align 4, !tbaa !9
  %550 = load i32, ptr %28, align 4, !tbaa !9
  %551 = add nsw i32 %549, %550
  %552 = sext i32 %551 to i64
  %553 = getelementptr inbounds %struct.complex, ptr %548, i64 %552
  %554 = load ptr, ptr %20, align 8, !tbaa !5
  %555 = load ptr, ptr %21, align 8, !tbaa !5
  %556 = load i32, ptr %39, align 4, !tbaa !9
  %557 = sext i32 %556 to i64
  %558 = getelementptr inbounds %struct.complex, ptr %555, i64 %557
  %559 = load ptr, ptr %24, align 8, !tbaa !5
  %560 = load i32, ptr %56, align 4, !tbaa !9
  %561 = sext i32 %560 to i64
  %562 = getelementptr inbounds %struct.complex, ptr %559, i64 %561
  call void @clarft_(ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef %35, ptr noundef %45, ptr noundef %553, ptr noundef %554, ptr noundef %558, ptr noundef %562, ptr noundef @c__65)
  %563 = load i32, ptr %38, align 4, !tbaa !9
  %564 = icmp ne i32 %563, 0
  br i1 %564, label %565, label %576

565:                                              ; preds = %537
  %566 = load ptr, ptr %16, align 8, !tbaa !5
  %567 = load i32, ptr %566, align 4, !tbaa !9
  %568 = load ptr, ptr %18, align 8, !tbaa !5
  %569 = load i32, ptr %568, align 4, !tbaa !9
  %570 = sub nsw i32 %567, %569
  %571 = load i32, ptr %39, align 4, !tbaa !9
  %572 = add nsw i32 %570, %571
  %573 = load i32, ptr %45, align 4, !tbaa !9
  %574 = add nsw i32 %572, %573
  %575 = sub nsw i32 %574, 1
  store i32 %575, ptr %47, align 4, !tbaa !9
  br label %587

576:                                              ; preds = %537
  %577 = load ptr, ptr %17, align 8, !tbaa !5
  %578 = load i32, ptr %577, align 4, !tbaa !9
  %579 = load ptr, ptr %18, align 8, !tbaa !5
  %580 = load i32, ptr %579, align 4, !tbaa !9
  %581 = sub nsw i32 %578, %580
  %582 = load i32, ptr %39, align 4, !tbaa !9
  %583 = add nsw i32 %581, %582
  %584 = load i32, ptr %45, align 4, !tbaa !9
  %585 = add nsw i32 %583, %584
  %586 = sub nsw i32 %585, 1
  store i32 %586, ptr %48, align 4, !tbaa !9
  br label %587

587:                                              ; preds = %576, %565
  %588 = load ptr, ptr %14, align 8, !tbaa !5
  %589 = getelementptr inbounds [1 x i8], ptr %53, i64 0, i64 0
  %590 = load ptr, ptr %19, align 8, !tbaa !5
  %591 = load i32, ptr %39, align 4, !tbaa !9
  %592 = load i32, ptr %28, align 4, !tbaa !9
  %593 = add nsw i32 %591, %592
  %594 = sext i32 %593 to i64
  %595 = getelementptr inbounds %struct.complex, ptr %590, i64 %594
  %596 = load ptr, ptr %20, align 8, !tbaa !5
  %597 = load ptr, ptr %24, align 8, !tbaa !5
  %598 = load i32, ptr %56, align 4, !tbaa !9
  %599 = sext i32 %598 to i64
  %600 = getelementptr inbounds %struct.complex, ptr %597, i64 %599
  %601 = load ptr, ptr %22, align 8, !tbaa !5
  %602 = load i32, ptr %31, align 4, !tbaa !9
  %603 = sext i32 %602 to i64
  %604 = getelementptr inbounds %struct.complex, ptr %601, i64 %603
  %605 = load ptr, ptr %23, align 8, !tbaa !5
  %606 = load ptr, ptr %24, align 8, !tbaa !5
  %607 = getelementptr inbounds %struct.complex, ptr %606, i64 1
  call void @clarfb_(ptr noundef %588, ptr noundef %589, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef %47, ptr noundef %48, ptr noundef %45, ptr noundef %595, ptr noundef %596, ptr noundef %600, ptr noundef @c__65, ptr noundef %604, ptr noundef %605, ptr noundef %607, ptr noundef %52)
  br label %608

608:                                              ; preds = %587
  %609 = load i32, ptr %33, align 4, !tbaa !9
  %610 = load i32, ptr %39, align 4, !tbaa !9
  %611 = add nsw i32 %610, %609
  store i32 %611, ptr %39, align 4, !tbaa !9
  br label %507, !llvm.loop !23

612:                                              ; preds = %520
  br label %613

613:                                              ; preds = %612, %436
  %614 = load i32, ptr %54, align 4, !tbaa !9
  %615 = sitofp i32 %614 to float
  %616 = load ptr, ptr %24, align 8, !tbaa !5
  %617 = getelementptr inbounds %struct.complex, ptr %616, i64 1
  %618 = getelementptr inbounds %struct.complex, ptr %617, i32 0, i32 0
  store float %615, ptr %618, align 4, !tbaa !16
  %619 = load ptr, ptr %24, align 8, !tbaa !5
  %620 = getelementptr inbounds %struct.complex, ptr %619, i64 1
  %621 = getelementptr inbounds %struct.complex, ptr %620, i32 0, i32 1
  store float 0.000000e+00, ptr %621, align 4, !tbaa !19
  store i32 1, ptr %62, align 4
  br label %622

622:                                              ; preds = %613, %333, %323, %315
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 2, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #3
  ret void
}

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

declare i32 @lsame_(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

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

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

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

declare void @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

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 = !{!"int", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = distinct !{!14, !13}
!15 = distinct !{!15, !13}
!16 = !{!17, !18, i64 0}
!17 = !{!"", !18, i64 0, !18, i64 4}
!18 = !{!"float", !7, i64 0}
!19 = !{!17, !18, i64 4}
!20 = distinct !{!20, !13}
!21 = distinct !{!21, !13}
!22 = distinct !{!22, !13}
!23 = distinct !{!23, !13}


; 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 i32, align 4
@c__1 = external hidden global i32, align 4
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i32, align 4
@.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 i32, align 4

; Function Attrs: nounwind uwtable
define dso_local void @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 i32, align 4
  %16 = alloca [2 x i32], align 4
  %17 = alloca i32, align 4
  %18 = alloca [2 x i8], align 1
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca [1 x i8], align 1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #5
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %18) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %24) #5
  %25 = load i32, ptr %6, align 4, !tbaa !5
  %narrow = xor i32 %25, -1
  %26 = sext i32 %narrow to i64
  %27 = getelementptr inbounds %struct.complex, ptr %5, i64 %26
  %28 = getelementptr inbounds i8, ptr %7, i64 -8
  store i32 0, ptr %12, align 4, !tbaa !5
  %29 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %30 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #5
  %31 = load i32, ptr %11, align 4, !tbaa !5
  %32 = icmp eq i32 %31, -1
  %.not = icmp ne i32 %29, 0
  br i1 %.not, label %33, label %36

33:                                               ; preds = %13
  %34 = load i32, ptr %2, align 4, !tbaa !5
  %35 = load i32, ptr %3, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.smax.i32(i32 %35, i32 1)
  br label %40

36:                                               ; preds = %13
  %37 = load i32, ptr %3, align 4, !tbaa !5
  %38 = load i32, ptr %2, align 4, !tbaa !5
  %spec.select241 = tail call i32 @llvm.smax.i32(i32 %38, i32 1)
  %39 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #5
  %.not232 = icmp eq i32 %39, 0
  br i1 %.not232, label %.thread263.sink.split, label %40

40:                                               ; preds = %33, %36
  %.0209254 = phi i32 [ %spec.select241, %36 ], [ %spec.select, %33 ]
  %.0210251 = phi i32 [ %37, %36 ], [ %34, %33 ]
  %.not233 = icmp eq i32 %30, 0
  br i1 %.not233, label %41, label %43

41:                                               ; preds = %40
  %42 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #5
  %.not234 = icmp eq i32 %42, 0
  br i1 %.not234, label %.thread263.sink.split, label %43

43:                                               ; preds = %41, %40
  %44 = load i32, ptr %2, align 4, !tbaa !5
  %45 = icmp slt i32 %44, 0
  br i1 %45, label %.thread263.sink.split, label %46

46:                                               ; preds = %43
  %47 = load i32, ptr %3, align 4, !tbaa !5
  %48 = icmp slt i32 %47, 0
  br i1 %48, label %.thread263.sink.split, label %49

49:                                               ; preds = %46
  %50 = load i32, ptr %4, align 4, !tbaa !5
  %51 = icmp slt i32 %50, 0
  %52 = icmp sgt i32 %50, %.0210251
  %or.cond242 = select i1 %51, i1 true, i1 %52
  br i1 %or.cond242, label %.thread263.sink.split, label %53

53:                                               ; preds = %49
  %54 = load i32, ptr %6, align 4, !tbaa !5
  %spec.select243 = tail call i32 @llvm.umax.i32(i32 %50, i32 1)
  %55 = icmp slt i32 %54, %spec.select243
  br i1 %55, label %.thread263.sink.split, label %56

56:                                               ; preds = %53
  %57 = load i32, ptr %9, align 4, !tbaa !5
  %spec.select244 = tail call i32 @llvm.umax.i32(i32 %44, i32 1)
  %58 = icmp slt i32 %57, %spec.select244
  br i1 %58, label %.thread263.sink.split, label %59

59:                                               ; preds = %56
  %60 = load i32, ptr %11, align 4, !tbaa !5
  %61 = icmp sge i32 %60, %.0209254
  %or.cond = select i1 %61, i1 true, i1 %32
  br i1 %or.cond, label %62, label %.thread263.sink.split

62:                                               ; preds = %59
  %.pr = load i32, ptr %12, align 4, !tbaa !5
  %63 = icmp eq i32 %.pr, 0
  br i1 %63, label %64, label %.thread263

64:                                               ; preds = %62
  %65 = icmp eq i32 %44, 0
  %66 = icmp eq i32 %47, 0
  %or.cond363 = or i1 %65, %66
  br i1 %or.cond363, label %.sink.split, label %67

67:                                               ; preds = %64
  store i32 1, ptr %16, align 4, !tbaa !5
  store ptr %0, ptr %14, align 16, !tbaa !9
  %68 = getelementptr inbounds i8, ptr %16, i64 4
  store i32 1, ptr %68, align 4, !tbaa !5
  %69 = getelementptr inbounds i8, ptr %14, i64 8
  store ptr %1, ptr %69, align 8, !tbaa !9
  %70 = load i32, ptr @c__2, align 4, !tbaa !5
  %71 = icmp sgt i32 %70, 0
  br i1 %71, label %.lr.ph302, label %.lr.ph307.preheader

.preheader294:                                    ; preds = %._crit_edge
  %72 = icmp sgt i32 %77, 0
  br i1 %72, label %.lr.ph307.preheader, label %.thread256

.lr.ph307.preheader:                              ; preds = %67, %.preheader294
  %.0198.lcssa349 = phi ptr [ %.1199.lcssa, %.preheader294 ], [ %18, %67 ]
  %.0202.lcssa348 = phi i32 [ %77, %.preheader294 ], [ 2, %67 ]
  %73 = zext nneg i32 %.0202.lcssa348 to i64
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.0198.lcssa349, i8 32, i64 %73, i1 false), !tbaa !11
  br label %.thread256

.lr.ph302:                                        ; preds = %67, %._crit_edge
  %74 = phi i32 [ %92, %._crit_edge ], [ %70, %67 ]
  %indvars.iv = phi i64 [ %indvars.iv.next, %._crit_edge ], [ 0, %67 ]
  %.0198300 = phi ptr [ %.1199.lcssa, %._crit_edge ], [ %18, %67 ]
  %.0202299 = phi i32 [ %77, %._crit_edge ], [ 2, %67 ]
  %75 = getelementptr inbounds [2 x i32], ptr %16, i64 0, i64 %indvars.iv
  %76 = load i32, ptr %75, align 4, !tbaa !5
  %spec.select245 = tail call i32 @llvm.smin.i32(i32 %76, i32 %.0202299)
  %77 = sub nsw i32 %.0202299, %spec.select245
  %78 = icmp sgt i32 %spec.select245, 0
  br i1 %78, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %.lr.ph302
  %.0198300367 = ptrtoint ptr %.0198300 to i64
  %79 = getelementptr inbounds [2 x ptr], ptr %14, i64 0, i64 %indvars.iv
  %80 = load ptr, ptr %79, align 8, !tbaa !9
  %81 = add nsw i32 %spec.select245, -1
  %82 = zext nneg i32 %81 to i64
  %scevgep = getelementptr i8, ptr %.0198300, i64 %82
  %83 = zext nneg i32 %spec.select245 to i64
  %min.iters.check = icmp ult i32 %spec.select245, 32
  %84 = ptrtoint ptr %80 to i64
  %85 = sub i64 %.0198300367, %84
  %diff.check = icmp ult i64 %85, 32
  %or.cond398 = select i1 %min.iters.check, i1 true, i1 %diff.check
  br i1 %or.cond398, label %.lr.ph.preheader404, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph.preheader
  %n.vec = and i64 %83, 2147483616
  %ind.end = getelementptr i8, ptr %.0198300, i64 %n.vec
  %ind.end368 = getelementptr i8, ptr %80, i64 %n.vec
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %next.gep = getelementptr i8, ptr %.0198300, i64 %index
  %next.gep371 = getelementptr i8, ptr %80, i64 %index
  %86 = getelementptr i8, ptr %next.gep371, i64 16
  %wide.load = load <16 x i8>, ptr %next.gep371, align 1, !tbaa !11
  %wide.load373 = load <16 x i8>, ptr %86, align 1, !tbaa !11
  %87 = getelementptr i8, ptr %next.gep, i64 16
  store <16 x i8> %wide.load, ptr %next.gep, align 1, !tbaa !11
  store <16 x i8> %wide.load373, ptr %87, align 1, !tbaa !11
  %index.next = add nuw i64 %index, 32
  %88 = icmp eq i64 %index.next, %n.vec
  br i1 %88, label %middle.block, label %vector.body, !llvm.loop !12

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %83
  br i1 %cmp.n, label %._crit_edge.loopexit, label %.lr.ph.preheader404

.lr.ph.preheader404:                              ; preds = %middle.block, %.lr.ph.preheader
  %.1199297.ph = phi ptr [ %.0198300, %.lr.ph.preheader ], [ %ind.end, %middle.block ]
  %.0201296.ph = phi ptr [ %80, %.lr.ph.preheader ], [ %ind.end368, %middle.block ]
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader404, %.lr.ph
  %.1199297 = phi ptr [ %91, %.lr.ph ], [ %.1199297.ph, %.lr.ph.preheader404 ]
  %.0201296 = phi ptr [ %89, %.lr.ph ], [ %.0201296.ph, %.lr.ph.preheader404 ]
  %89 = getelementptr inbounds i8, ptr %.0201296, i64 1
  %90 = load i8, ptr %.0201296, align 1, !tbaa !11
  %91 = getelementptr inbounds i8, ptr %.1199297, i64 1
  store i8 %90, ptr %.1199297, align 1, !tbaa !11
  %exitcond.not = icmp eq ptr %.1199297, %scevgep
  br i1 %exitcond.not, label %._crit_edge.loopexit, label %.lr.ph, !llvm.loop !16

._crit_edge.loopexit:                             ; preds = %.lr.ph, %middle.block
  %.lcssa365 = phi ptr [ %ind.end, %middle.block ], [ %91, %.lr.ph ]
  %.pre = load i32, ptr @c__2, align 4, !tbaa !5
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %.lr.ph302
  %92 = phi i32 [ %74, %.lr.ph302 ], [ %.pre, %._crit_edge.loopexit ]
  %.1199.lcssa = phi ptr [ %.0198300, %.lr.ph302 ], [ %.lcssa365, %._crit_edge.loopexit ]
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %93 = sext i32 %92 to i64
  %94 = icmp slt i64 %indvars.iv.next, %93
  br i1 %94, label %.lr.ph302, label %.preheader294, !llvm.loop !17

.thread256:                                       ; preds = %.preheader294, %.lr.ph307.preheader
  %95 = call i32 @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, i32 noundef 6, i32 noundef 2) #5
  %96 = call i32 @llvm.smin.i32(i32 %95, i32 64)
  %97 = mul nsw i32 %96, %.0209254
  %98 = add nsw i32 %97, 4160
  %.pr262.pr.pr.pre = load i32, ptr %12, align 4, !tbaa !5
  %99 = sitofp i32 %98 to float
  store float %99, ptr %10, align 4, !tbaa !18
  %100 = getelementptr inbounds i8, ptr %10, i64 4
  store float 0.000000e+00, ptr %100, align 4, !tbaa !21
  %.not236 = icmp eq i32 %.pr262.pr.pr.pre, 0
  br i1 %.not236, label %104, label %.thread263

.thread263.sink.split:                            ; preds = %59, %56, %53, %49, %46, %43, %41, %36
  %.sink = phi i32 [ -1, %36 ], [ -2, %41 ], [ -3, %43 ], [ -4, %46 ], [ -5, %49 ], [ -7, %53 ], [ -10, %56 ], [ -12, %59 ]
  store i32 %.sink, ptr %12, align 4, !tbaa !5
  br label %.thread263

.thread263:                                       ; preds = %.thread263.sink.split, %62, %.thread256
  %101 = phi i32 [ %.pr262.pr.pr.pre, %.thread256 ], [ %.pr, %62 ], [ %.sink, %.thread263.sink.split ]
  %102 = sub nsw i32 0, %101
  store i32 %102, ptr %15, align 4, !tbaa !5
  %103 = call i32 @xerbla_(ptr noundef nonnull @.str.4, ptr noundef nonnull %15, i32 noundef 6) #5
  br label %206

.sink.split:                                      ; preds = %64
  store <2 x float> <float 1.000000e+00, float 0.000000e+00>, ptr %10, align 4, !tbaa !22
  br label %104

104:                                              ; preds = %.sink.split, %.thread256
  %.0207290 = phi i32 [ %98, %.thread256 ], [ 1, %.sink.split ]
  %.0211289 = phi i32 [ %96, %.thread256 ], [ undef, %.sink.split ]
  br i1 %32, label %206, label %105

105:                                              ; preds = %104
  %106 = load i32, ptr %2, align 4, !tbaa !5
  %107 = icmp eq i32 %106, 0
  br i1 %107, label %206, label %108

108:                                              ; preds = %105
  %109 = load i32, ptr %3, align 4, !tbaa !5
  %110 = icmp eq i32 %109, 0
  br i1 %110, label %206, label %111

111:                                              ; preds = %108
  store i32 %.0209254, ptr %23, align 4, !tbaa !5
  %112 = icmp sgt i32 %.0211289, 1
  br i1 %112, label %113, label %.thread274

113:                                              ; preds = %111
  %114 = load i32, ptr %4, align 4, !tbaa !5
  %115 = icmp slt i32 %.0211289, %114
  br i1 %115, label %116, label %.thread270

116:                                              ; preds = %113
  %117 = load i32, ptr %11, align 4, !tbaa !5
  %118 = mul nuw nsw i32 %.0211289, %.0209254
  %119 = add nuw nsw i32 %118, 4160
  %120 = icmp slt i32 %117, %119
  br i1 %120, label %121, label %.thread270

121:                                              ; preds = %116
  %122 = add nsw i32 %117, -4160
  %123 = sdiv i32 %122, %.0209254
  store i32 1, ptr %16, align 4, !tbaa !5
  store ptr %0, ptr %14, align 16, !tbaa !9
  %124 = getelementptr inbounds i8, ptr %16, i64 4
  store i32 1, ptr %124, align 4, !tbaa !5
  %125 = getelementptr inbounds i8, ptr %14, i64 8
  store ptr %1, ptr %125, align 8, !tbaa !9
  %126 = load i32, ptr @c__2, align 4, !tbaa !5
  %127 = icmp sgt i32 %126, 0
  br i1 %127, label %.lr.ph320, label %.lr.ph325.preheader

.preheader:                                       ; preds = %._crit_edge314
  %128 = icmp sgt i32 %133, 0
  br i1 %128, label %.lr.ph325.preheader, label %._crit_edge326

.lr.ph325.preheader:                              ; preds = %121, %.preheader
  %.0.lcssa357 = phi ptr [ %.1.lcssa, %.preheader ], [ %18, %121 ]
  %.0193.lcssa356 = phi i32 [ %133, %.preheader ], [ 2, %121 ]
  %129 = zext nneg i32 %.0193.lcssa356 to i64
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.0.lcssa357, i8 32, i64 %129, i1 false), !tbaa !11
  br label %._crit_edge326

.lr.ph320:                                        ; preds = %121, %._crit_edge314
  %130 = phi i32 [ %148, %._crit_edge314 ], [ %126, %121 ]
  %indvars.iv337 = phi i64 [ %indvars.iv.next338, %._crit_edge314 ], [ 0, %121 ]
  %.0318 = phi ptr [ %.1.lcssa, %._crit_edge314 ], [ %18, %121 ]
  %.0193317 = phi i32 [ %133, %._crit_edge314 ], [ 2, %121 ]
  %131 = getelementptr inbounds [2 x i32], ptr %16, i64 0, i64 %indvars.iv337
  %132 = load i32, ptr %131, align 4, !tbaa !5
  %spec.select246 = call i32 @llvm.smin.i32(i32 %132, i32 %.0193317)
  %133 = sub nsw i32 %.0193317, %spec.select246
  %134 = icmp sgt i32 %spec.select246, 0
  br i1 %134, label %.lr.ph313.preheader, label %._crit_edge314

.lr.ph313.preheader:                              ; preds = %.lr.ph320
  %.0318375 = ptrtoint ptr %.0318 to i64
  %135 = getelementptr inbounds [2 x ptr], ptr %14, i64 0, i64 %indvars.iv337
  %136 = load ptr, ptr %135, align 8, !tbaa !9
  %137 = add nsw i32 %spec.select246, -1
  %138 = zext nneg i32 %137 to i64
  %scevgep335 = getelementptr i8, ptr %.0318, i64 %138
  %139 = zext nneg i32 %spec.select246 to i64
  %min.iters.check379 = icmp ult i32 %spec.select246, 32
  %140 = ptrtoint ptr %136 to i64
  %141 = sub i64 %.0318375, %140
  %diff.check376 = icmp ult i64 %141, 32
  %or.cond400 = select i1 %min.iters.check379, i1 true, i1 %diff.check376
  br i1 %or.cond400, label %.lr.ph313.preheader401, label %vector.ph380

vector.ph380:                                     ; preds = %.lr.ph313.preheader
  %n.vec382 = and i64 %139, 2147483616
  %ind.end383 = getelementptr i8, ptr %.0318, i64 %n.vec382
  %ind.end385 = getelementptr i8, ptr %136, i64 %n.vec382
  br label %vector.body387

vector.body387:                                   ; preds = %vector.body387, %vector.ph380
  %index388 = phi i64 [ 0, %vector.ph380 ], [ %index.next395, %vector.body387 ]
  %next.gep389 = getelementptr i8, ptr %.0318, i64 %index388
  %next.gep391 = getelementptr i8, ptr %136, i64 %index388
  %142 = getelementptr i8, ptr %next.gep391, i64 16
  %wide.load393 = load <16 x i8>, ptr %next.gep391, align 1, !tbaa !11
  %wide.load394 = load <16 x i8>, ptr %142, align 1, !tbaa !11
  %143 = getelementptr i8, ptr %next.gep389, i64 16
  store <16 x i8> %wide.load393, ptr %next.gep389, align 1, !tbaa !11
  store <16 x i8> %wide.load394, ptr %143, align 1, !tbaa !11
  %index.next395 = add nuw i64 %index388, 32
  %144 = icmp eq i64 %index.next395, %n.vec382
  br i1 %144, label %middle.block377, label %vector.body387, !llvm.loop !23

middle.block377:                                  ; preds = %vector.body387
  %cmp.n396 = icmp eq i64 %n.vec382, %139
  br i1 %cmp.n396, label %._crit_edge314.loopexit, label %.lr.ph313.preheader401

.lr.ph313.preheader401:                           ; preds = %middle.block377, %.lr.ph313.preheader
  %.1311.ph = phi ptr [ %.0318, %.lr.ph313.preheader ], [ %ind.end383, %middle.block377 ]
  %.0192310.ph = phi ptr [ %136, %.lr.ph313.preheader ], [ %ind.end385, %middle.block377 ]
  br label %.lr.ph313

.lr.ph313:                                        ; preds = %.lr.ph313.preheader401, %.lr.ph313
  %.1311 = phi ptr [ %147, %.lr.ph313 ], [ %.1311.ph, %.lr.ph313.preheader401 ]
  %.0192310 = phi ptr [ %145, %.lr.ph313 ], [ %.0192310.ph, %.lr.ph313.preheader401 ]
  %145 = getelementptr inbounds i8, ptr %.0192310, i64 1
  %146 = load i8, ptr %.0192310, align 1, !tbaa !11
  %147 = getelementptr inbounds i8, ptr %.1311, i64 1
  store i8 %146, ptr %.1311, align 1, !tbaa !11
  %exitcond336.not = icmp eq ptr %.1311, %scevgep335
  br i1 %exitcond336.not, label %._crit_edge314.loopexit, label %.lr.ph313, !llvm.loop !24

._crit_edge314.loopexit:                          ; preds = %.lr.ph313, %middle.block377
  %.lcssa = phi ptr [ %ind.end383, %middle.block377 ], [ %147, %.lr.ph313 ]
  %.pre344 = load i32, ptr @c__2, align 4, !tbaa !5
  br label %._crit_edge314

._crit_edge314:                                   ; preds = %._crit_edge314.loopexit, %.lr.ph320
  %148 = phi i32 [ %130, %.lr.ph320 ], [ %.pre344, %._crit_edge314.loopexit ]
  %.1.lcssa = phi ptr [ %.0318, %.lr.ph320 ], [ %.lcssa, %._crit_edge314.loopexit ]
  %indvars.iv.next338 = add nuw nsw i64 %indvars.iv337, 1
  %149 = sext i32 %148 to i64
  %150 = icmp slt i64 %indvars.iv.next338, %149
  br i1 %150, label %.lr.ph320, label %.preheader, !llvm.loop !25

._crit_edge326:                                   ; preds = %.lr.ph325.preheader, %.preheader
  %151 = call i32 @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, i32 noundef 6, i32 noundef 2) #5
  %152 = call i32 @llvm.smax.i32(i32 %151, i32 2)
  %153 = icmp slt i32 %123, %152
  br i1 %153, label %.thread274, label %._crit_edge326..thread270_crit_edge

._crit_edge326..thread270_crit_edge:              ; preds = %._crit_edge326
  %.pre345 = load i32, ptr %4, align 4, !tbaa !5
  br label %.thread270

.thread270:                                       ; preds = %._crit_edge326..thread270_crit_edge, %113, %116
  %154 = phi i32 [ %.pre345, %._crit_edge326..thread270_crit_edge ], [ %114, %116 ], [ %114, %113 ]
  %.2213273 = phi i32 [ %123, %._crit_edge326..thread270_crit_edge ], [ %.0211289, %116 ], [ %.0211289, %113 ]
  %.fr239 = freeze i32 %154
  %.not238 = icmp slt i32 %.2213273, %.fr239
  br i1 %.not238, label %155, label %.thread274

.thread274:                                       ; preds = %111, %.thread270, %._crit_edge326
  call void @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 %10, ptr noundef nonnull %19) #5
  br label %.loopexit

155:                                              ; preds = %.thread270
  %156 = mul nsw i32 %.2213273, %.0209254
  %157 = icmp ne i32 %30, 0
  %or.cond247 = xor i1 %.not, %157
  br i1 %or.cond247, label %163, label %158

158:                                              ; preds = %155
  %159 = add nsw i32 %.fr239, -1
  %160 = srem i32 %159, %.2213273
  %161 = sub i32 %.fr239, %160
  %162 = sub nsw i32 0, %.2213273
  br label %163

163:                                              ; preds = %155, %158
  %.0216 = phi i32 [ %161, %158 ], [ 1, %155 ]
  %164 = phi i32 [ 1, %158 ], [ %.fr239, %155 ]
  %.0214 = phi i32 [ %162, %158 ], [ %.2213273, %155 ]
  br i1 %.not, label %165, label %167

165:                                              ; preds = %163
  %166 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %166, ptr %22, align 4, !tbaa !5
  br label %169

167:                                              ; preds = %163
  %168 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %168, ptr %21, align 4, !tbaa !5
  br label %169

169:                                              ; preds = %167, %165
  %. = select i1 %157, i8 67, i8 78
  store i8 %., ptr %24, align 1, !tbaa !11
  %170 = icmp slt i32 %.0214, 0
  %171 = icmp sge i32 %.0216, %164
  %172 = icmp sle i32 %.0216, %164
  %.in327 = select i1 %170, i1 %171, i1 %172
  br i1 %.in327, label %.lr.ph330, label %.loopexit

.lr.ph330:                                        ; preds = %169
  %173 = add i32 %.0210251, -1
  %174 = sext i32 %156 to i64
  %gep = getelementptr %struct.complex, ptr %10, i64 %174
  %175 = sext i32 %.0216 to i64
  %176 = sext i32 %.0214 to i64
  %177 = sext i32 %25 to i64
  %invariant.gep = getelementptr %struct.complex, ptr %27, i64 %177
  %178 = sext i32 %164 to i64
  br label %179

179:                                              ; preds = %.lr.ph330, %201
  %indvars.iv340 = phi i64 [ %175, %.lr.ph330 ], [ %indvars.iv.next341, %201 ]
  %180 = load i32, ptr %4, align 4, !tbaa !5
  %181 = trunc nsw i64 %indvars.iv340 to i32
  %reass.sub = sub i32 %180, %181
  %182 = add i32 %reass.sub, 1
  %183 = call i32 @llvm.smin.i32(i32 %.2213273, i32 %182)
  store i32 %183, ptr %20, align 4, !tbaa !5
  %184 = add i32 %173, %181
  %185 = sub i32 %184, %180
  %186 = add i32 %185, %183
  store i32 %186, ptr %17, align 4, !tbaa !5
  %gep361 = getelementptr %struct.complex, ptr %invariant.gep, i64 %indvars.iv340
  %187 = getelementptr inbounds %struct.complex, ptr %28, i64 %indvars.iv340
  call void @clarft_(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull %17, ptr noundef nonnull %20, ptr noundef %gep361, ptr noundef nonnull %6, ptr noundef nonnull %187, ptr noundef %gep, ptr noundef nonnull @c__65) #5
  %188 = load i32, ptr %4, align 4, !tbaa !5
  %189 = load i32, ptr %20, align 4, !tbaa !5
  %190 = add i32 %181, -1
  br i1 %.not, label %191, label %196

191:                                              ; preds = %179
  %192 = load i32, ptr %2, align 4, !tbaa !5
  %193 = add i32 %190, %192
  %194 = sub i32 %193, %188
  %195 = add i32 %194, %189
  store i32 %195, ptr %21, align 4, !tbaa !5
  br label %201

196:                                              ; preds = %179
  %197 = load i32, ptr %3, align 4, !tbaa !5
  %198 = add i32 %190, %197
  %199 = sub i32 %198, %188
  %200 = add i32 %199, %189
  store i32 %200, ptr %22, align 4, !tbaa !5
  br label %201

201:                                              ; preds = %196, %191
  call void @clarfb_(ptr noundef %0, ptr noundef nonnull %24, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull %20, ptr noundef %gep361, ptr noundef nonnull %6, ptr noundef %gep, ptr noundef nonnull @c__65, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull %23) #5
  %indvars.iv.next341 = add nsw i64 %indvars.iv340, %176
  %202 = icmp sge i64 %indvars.iv.next341, %178
  %203 = icmp sle i64 %indvars.iv.next341, %178
  %.in = select i1 %170, i1 %202, i1 %203
  br i1 %.in, label %179, label %.loopexit, !llvm.loop !26

.loopexit:                                        ; preds = %201, %169, %.thread274
  %204 = sitofp i32 %.0207290 to float
  store float %204, ptr %10, align 4, !tbaa !18
  %205 = getelementptr inbounds i8, ptr %10, i64 4
  store float 0.000000e+00, ptr %205, align 4, !tbaa !21
  br label %206

206:                                              ; preds = %105, %108, %104, %.loopexit, %.thread263
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #5
  ret void
}

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

declare i32 @lsame_(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

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

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

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

declare void @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: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smin.i32(i32, i32) #3

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #4

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 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #5 = { 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 = !{!"int", !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 = !{!7, !7, i64 0}
!12 = distinct !{!12, !13, !14, !15}
!13 = !{!"llvm.loop.mustprogress"}
!14 = !{!"llvm.loop.isvectorized", i32 1}
!15 = !{!"llvm.loop.unroll.runtime.disable"}
!16 = distinct !{!16, !13, !14}
!17 = distinct !{!17, !13}
!18 = !{!19, !20, i64 0}
!19 = !{!"", !20, i64 0, !20, i64 4}
!20 = !{!"float", !7, i64 0}
!21 = !{!19, !20, i64 4}
!22 = !{!20, !20, i64 0}
!23 = distinct !{!23, !13, !14, !15}
!24 = distinct !{!24, !13, !14}
!25 = distinct !{!25, !13}
!26 = distinct !{!26, !13}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopIdiomRecognizePass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass