; LLVM IR from OpenMathLib/OpenBLAS :: lapack-netlib/SRC (cunmlq)

; 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 [8 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 @cunmlq_(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 i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca [1 x i8], align 1
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca i32, align 4
  %62 = alloca ptr, align 8
  %63 = alloca ptr, align 8
  %64 = alloca i32, align 4
  %65 = alloca i32, align 4
  %66 = alloca i32, align 4
  %67 = alloca i32, align 4
  %68 = alloca ptr, align 8
  %69 = 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 4, ptr %53) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %55) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #3
  %70 = load ptr, ptr %20, align 8, !tbaa !5
  %71 = load i32, ptr %70, align 4, !tbaa !9
  store i32 %71, ptr %28, align 4, !tbaa !9
  %72 = load i32, ptr %28, align 4, !tbaa !9
  %73 = mul nsw i32 %72, 1
  %74 = add nsw i32 1, %73
  store i32 %74, ptr %29, align 4, !tbaa !9
  %75 = load i32, ptr %29, align 4, !tbaa !9
  %76 = load ptr, ptr %19, align 8, !tbaa !5
  %77 = sext i32 %75 to i64
  %78 = sub i64 0, %77
  %79 = getelementptr inbounds %struct.complex, ptr %76, i64 %78
  store ptr %79, ptr %19, align 8, !tbaa !5
  %80 = load ptr, ptr %21, align 8, !tbaa !5
  %81 = getelementptr inbounds %struct.complex, ptr %80, i32 -1
  store ptr %81, ptr %21, align 8, !tbaa !5
  %82 = load ptr, ptr %23, align 8, !tbaa !5
  %83 = load i32, ptr %82, align 4, !tbaa !9
  store i32 %83, ptr %30, align 4, !tbaa !9
  %84 = load i32, ptr %30, align 4, !tbaa !9
  %85 = mul nsw i32 %84, 1
  %86 = add nsw i32 1, %85
  store i32 %86, ptr %31, align 4, !tbaa !9
  %87 = load i32, ptr %31, align 4, !tbaa !9
  %88 = load ptr, ptr %22, align 8, !tbaa !5
  %89 = sext i32 %87 to i64
  %90 = sub i64 0, %89
  %91 = getelementptr inbounds %struct.complex, ptr %88, i64 %90
  store ptr %91, ptr %22, align 8, !tbaa !5
  %92 = load ptr, ptr %24, align 8, !tbaa !5
  %93 = getelementptr inbounds %struct.complex, ptr %92, i32 -1
  store ptr %93, ptr %24, align 8, !tbaa !5
  %94 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 0, ptr %94, align 4, !tbaa !9
  %95 = load ptr, ptr %14, align 8, !tbaa !5
  %96 = call i32 @lsame_(ptr noundef %95, ptr noundef @.str)
  store i32 %96, ptr %38, align 4, !tbaa !9
  %97 = load ptr, ptr %15, align 8, !tbaa !5
  %98 = call i32 @lsame_(ptr noundef %97, ptr noundef @.str.1)
  store i32 %98, ptr %53, align 4, !tbaa !9
  %99 = load ptr, ptr %25, align 8, !tbaa !5
  %100 = load i32, ptr %99, align 4, !tbaa !9
  %101 = icmp eq i32 %100, -1
  %102 = zext i1 %101 to i32
  store i32 %102, ptr %57, align 4, !tbaa !9
  %103 = load i32, ptr %38, align 4, !tbaa !9
  %104 = icmp ne i32 %103, 0
  br i1 %104, label %105, label %110

105:                                              ; preds = %13
  %106 = load ptr, ptr %16, align 8, !tbaa !5
  %107 = load i32, ptr %106, align 4, !tbaa !9
  store i32 %107, ptr %51, align 4, !tbaa !9
  %108 = load ptr, ptr %17, align 8, !tbaa !5
  %109 = load i32, ptr %108, align 4, !tbaa !9
  store i32 %109, ptr %52, align 4, !tbaa !9
  br label %115

110:                                              ; preds = %13
  %111 = load ptr, ptr %17, align 8, !tbaa !5
  %112 = load i32, ptr %111, align 4, !tbaa !9
  store i32 %112, ptr %51, align 4, !tbaa !9
  %113 = load ptr, ptr %16, align 8, !tbaa !5
  %114 = load i32, ptr %113, align 4, !tbaa !9
  store i32 %114, ptr %52, align 4, !tbaa !9
  br label %115

115:                                              ; preds = %110, %105
  %116 = load i32, ptr %38, align 4, !tbaa !9
  %117 = icmp ne i32 %116, 0
  br i1 %117, label %124, label %118

118:                                              ; preds = %115
  %119 = load ptr, ptr %14, align 8, !tbaa !5
  %120 = call i32 @lsame_(ptr noundef %119, ptr noundef @.str.2)
  %121 = icmp ne i32 %120, 0
  br i1 %121, label %124, label %122

122:                                              ; preds = %118
  %123 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -1, ptr %123, align 4, !tbaa !9
  br label %209

124:                                              ; preds = %118, %115
  %125 = load i32, ptr %53, align 4, !tbaa !9
  %126 = icmp ne i32 %125, 0
  br i1 %126, label %133, label %127

127:                                              ; preds = %124
  %128 = load ptr, ptr %15, align 8, !tbaa !5
  %129 = call i32 @lsame_(ptr noundef %128, ptr noundef @.str.3)
  %130 = icmp ne i32 %129, 0
  br i1 %130, label %133, label %131

131:                                              ; preds = %127
  %132 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -2, ptr %132, align 4, !tbaa !9
  br label %208

133:                                              ; preds = %127, %124
  %134 = load ptr, ptr %16, align 8, !tbaa !5
  %135 = load i32, ptr %134, align 4, !tbaa !9
  %136 = icmp slt i32 %135, 0
  br i1 %136, label %137, label %139

137:                                              ; preds = %133
  %138 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -3, ptr %138, align 4, !tbaa !9
  br label %207

139:                                              ; preds = %133
  %140 = load ptr, ptr %17, align 8, !tbaa !5
  %141 = load i32, ptr %140, align 4, !tbaa !9
  %142 = icmp slt i32 %141, 0
  br i1 %142, label %143, label %145

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

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

149:                                              ; preds = %145
  %150 = load ptr, ptr %18, align 8, !tbaa !5
  %151 = load i32, ptr %150, align 4, !tbaa !9
  %152 = load i32, ptr %51, align 4, !tbaa !9
  %153 = icmp sgt i32 %151, %152
  br i1 %153, label %154, label %156

154:                                              ; preds = %149, %145
  %155 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -5, ptr %155, align 4, !tbaa !9
  br label %205

156:                                              ; preds = %149
  %157 = load ptr, ptr %20, align 8, !tbaa !5
  %158 = load i32, ptr %157, align 4, !tbaa !9
  %159 = load ptr, ptr %18, align 8, !tbaa !5
  %160 = load i32, ptr %159, align 4, !tbaa !9
  %161 = icmp sge i32 1, %160
  br i1 %161, label %162, label %163

162:                                              ; preds = %156
  br label %166

163:                                              ; preds = %156
  %164 = load ptr, ptr %18, align 8, !tbaa !5
  %165 = load i32, ptr %164, align 4, !tbaa !9
  br label %166

166:                                              ; preds = %163, %162
  %167 = phi i32 [ 1, %162 ], [ %165, %163 ]
  %168 = icmp slt i32 %158, %167
  br i1 %168, label %169, label %171

169:                                              ; preds = %166
  %170 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -7, ptr %170, align 4, !tbaa !9
  br label %204

171:                                              ; preds = %166
  %172 = load ptr, ptr %23, align 8, !tbaa !5
  %173 = load i32, ptr %172, align 4, !tbaa !9
  %174 = load ptr, ptr %16, align 8, !tbaa !5
  %175 = load i32, ptr %174, align 4, !tbaa !9
  %176 = icmp sge i32 1, %175
  br i1 %176, label %177, label %178

177:                                              ; preds = %171
  br label %181

178:                                              ; preds = %171
  %179 = load ptr, ptr %16, align 8, !tbaa !5
  %180 = load i32, ptr %179, align 4, !tbaa !9
  br label %181

181:                                              ; preds = %178, %177
  %182 = phi i32 [ 1, %177 ], [ %180, %178 ]
  %183 = icmp slt i32 %173, %182
  br i1 %183, label %184, label %186

184:                                              ; preds = %181
  %185 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -10, ptr %185, align 4, !tbaa !9
  br label %203

186:                                              ; preds = %181
  %187 = load ptr, ptr %25, align 8, !tbaa !5
  %188 = load i32, ptr %187, align 4, !tbaa !9
  %189 = load i32, ptr %52, align 4, !tbaa !9
  %190 = icmp sge i32 1, %189
  br i1 %190, label %191, label %192

191:                                              ; preds = %186
  br label %194

192:                                              ; preds = %186
  %193 = load i32, ptr %52, align 4, !tbaa !9
  br label %194

194:                                              ; preds = %192, %191
  %195 = phi i32 [ 1, %191 ], [ %193, %192 ]
  %196 = icmp slt i32 %188, %195
  br i1 %196, label %197, label %202

197:                                              ; preds = %194
  %198 = load i32, ptr %57, align 4, !tbaa !9
  %199 = icmp ne i32 %198, 0
  br i1 %199, label %202, label %200

200:                                              ; preds = %197
  %201 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -12, ptr %201, align 4, !tbaa !9
  br label %202

202:                                              ; preds = %200, %197, %194
  br label %203

203:                                              ; preds = %202, %184
  br label %204

204:                                              ; preds = %203, %169
  br label %205

205:                                              ; preds = %204, %154
  br label %206

206:                                              ; preds = %205, %143
  br label %207

207:                                              ; preds = %206, %137
  br label %208

208:                                              ; preds = %207, %131
  br label %209

209:                                              ; preds = %208, %122
  %210 = load ptr, ptr %26, align 8, !tbaa !5
  %211 = load i32, ptr %210, align 4, !tbaa !9
  %212 = icmp eq i32 %211, 0
  br i1 %212, label %213, label %315

213:                                              ; preds = %209
  %214 = load ptr, ptr %16, align 8, !tbaa !5
  %215 = load i32, ptr %214, align 4, !tbaa !9
  %216 = icmp eq i32 %215, 0
  br i1 %216, label %225, label %217

217:                                              ; preds = %213
  %218 = load ptr, ptr %17, align 8, !tbaa !5
  %219 = load i32, ptr %218, align 4, !tbaa !9
  %220 = icmp eq i32 %219, 0
  br i1 %220, label %225, label %221

221:                                              ; preds = %217
  %222 = load ptr, ptr %18, align 8, !tbaa !5
  %223 = load i32, ptr %222, align 4, !tbaa !9
  %224 = icmp eq i32 %223, 0
  br i1 %224, label %225, label %226

225:                                              ; preds = %221, %217, %213
  store i32 1, ptr %56, align 4, !tbaa !9
  br label %306

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

234:                                              ; preds = %270, %226
  %235 = load i32, ptr %59, align 4, !tbaa !9
  %236 = load i32, ptr @c__2, align 4, !tbaa !9
  %237 = icmp slt i32 %235, %236
  br i1 %237, label %238, label %273

238:                                              ; preds = %234
  %239 = load i32, ptr %61, align 4, !tbaa !9
  store i32 %239, ptr %60, align 4, !tbaa !9
  %240 = load i32, ptr %59, align 4, !tbaa !9
  %241 = sext i32 %240 to i64
  %242 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 %241
  %243 = load i32, ptr %242, align 4, !tbaa !9
  %244 = load i32, ptr %60, align 4, !tbaa !9
  %245 = icmp slt i32 %243, %244
  br i1 %245, label %246, label %251

246:                                              ; preds = %238
  %247 = load i32, ptr %59, align 4, !tbaa !9
  %248 = sext i32 %247 to i64
  %249 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 %248
  %250 = load i32, ptr %249, align 4, !tbaa !9
  store i32 %250, ptr %60, align 4, !tbaa !9
  br label %251

251:                                              ; preds = %246, %238
  %252 = load i32, ptr %60, align 4, !tbaa !9
  %253 = load i32, ptr %61, align 4, !tbaa !9
  %254 = sub nsw i32 %253, %252
  store i32 %254, ptr %61, align 4, !tbaa !9
  %255 = load i32, ptr %59, align 4, !tbaa !9
  %256 = sext i32 %255 to i64
  %257 = getelementptr inbounds [2 x ptr], ptr %27, i64 0, i64 %256
  %258 = load ptr, ptr %257, align 8, !tbaa !5
  store ptr %258, ptr %62, align 8, !tbaa !5
  br label %259

259:                                              ; preds = %263, %251
  %260 = load i32, ptr %60, align 4, !tbaa !9
  %261 = add nsw i32 %260, -1
  store i32 %261, ptr %60, align 4, !tbaa !9
  %262 = icmp sge i32 %261, 0
  br i1 %262, label %263, label %269

263:                                              ; preds = %259
  %264 = load ptr, ptr %62, align 8, !tbaa !5
  %265 = getelementptr inbounds i8, ptr %264, i32 1
  store ptr %265, ptr %62, align 8, !tbaa !5
  %266 = load i8, ptr %264, align 1, !tbaa !11
  %267 = load ptr, ptr %63, align 8, !tbaa !5
  %268 = getelementptr inbounds i8, ptr %267, i32 1
  store ptr %268, ptr %63, align 8, !tbaa !5
  store i8 %266, ptr %267, align 1, !tbaa !11
  br label %259, !llvm.loop !12

269:                                              ; preds = %259
  br label %270

270:                                              ; preds = %269
  %271 = load i32, ptr %59, align 4, !tbaa !9
  %272 = add nsw i32 %271, 1
  store i32 %272, ptr %59, align 4, !tbaa !9
  br label %234, !llvm.loop !14

273:                                              ; preds = %234
  br label %274

274:                                              ; preds = %278, %273
  %275 = load i32, ptr %61, align 4, !tbaa !9
  %276 = add nsw i32 %275, -1
  store i32 %276, ptr %61, align 4, !tbaa !9
  %277 = icmp sge i32 %276, 0
  br i1 %277, label %278, label %281

278:                                              ; preds = %274
  %279 = load ptr, ptr %63, align 8, !tbaa !5
  %280 = getelementptr inbounds i8, ptr %279, i32 1
  store ptr %280, ptr %63, align 8, !tbaa !5
  store i8 32, ptr %279, align 1, !tbaa !11
  br label %274, !llvm.loop !15

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

290:                                              ; preds = %281
  %291 = load i32, ptr %32, align 4, !tbaa !9
  br label %294

292:                                              ; preds = %281
  %293 = load i32, ptr %33, align 4, !tbaa !9
  br label %294

294:                                              ; preds = %292, %290
  %295 = phi i32 [ %291, %290 ], [ %293, %292 ]
  store i32 %295, ptr %48, align 4, !tbaa !9
  %296 = load i32, ptr %52, align 4, !tbaa !9
  %297 = icmp sge i32 1, %296
  br i1 %297, label %298, label %299

298:                                              ; preds = %294
  br label %301

299:                                              ; preds = %294
  %300 = load i32, ptr %52, align 4, !tbaa !9
  br label %301

301:                                              ; preds = %299, %298
  %302 = phi i32 [ 1, %298 ], [ %300, %299 ]
  %303 = load i32, ptr %48, align 4, !tbaa !9
  %304 = mul nsw i32 %302, %303
  %305 = add nsw i32 %304, 4160
  store i32 %305, ptr %56, align 4, !tbaa !9
  br label %306

306:                                              ; preds = %301, %225
  %307 = load i32, ptr %56, align 4, !tbaa !9
  %308 = sitofp i32 %307 to float
  %309 = load ptr, ptr %24, align 8, !tbaa !5
  %310 = getelementptr inbounds %struct.complex, ptr %309, i64 1
  %311 = getelementptr inbounds %struct.complex, ptr %310, i32 0, i32 0
  store float %308, ptr %311, align 4, !tbaa !16
  %312 = load ptr, ptr %24, align 8, !tbaa !5
  %313 = getelementptr inbounds %struct.complex, ptr %312, i64 1
  %314 = getelementptr inbounds %struct.complex, ptr %313, i32 0, i32 1
  store float 0.000000e+00, ptr %314, align 4, !tbaa !19
  br label %315

315:                                              ; preds = %306, %209
  %316 = load ptr, ptr %26, align 8, !tbaa !5
  %317 = load i32, ptr %316, align 4, !tbaa !9
  %318 = icmp ne i32 %317, 0
  br i1 %318, label %319, label %324

319:                                              ; preds = %315
  %320 = load ptr, ptr %26, align 8, !tbaa !5
  %321 = load i32, ptr %320, align 4, !tbaa !9
  %322 = sub nsw i32 0, %321
  store i32 %322, ptr %32, align 4, !tbaa !9
  %323 = call i32 @xerbla_(ptr noundef @.str.4, ptr noundef %32, i32 noundef 6)
  store i32 1, ptr %64, align 4
  br label %625

324:                                              ; preds = %315
  %325 = load i32, ptr %57, align 4, !tbaa !9
  %326 = icmp ne i32 %325, 0
  br i1 %326, label %327, label %328

327:                                              ; preds = %324
  store i32 1, ptr %64, align 4
  br label %625

328:                                              ; preds = %324
  br label %329

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

333:                                              ; preds = %329
  %334 = load ptr, ptr %17, align 8, !tbaa !5
  %335 = load i32, ptr %334, align 4, !tbaa !9
  %336 = icmp eq i32 %335, 0
  br i1 %336, label %341, label %337

337:                                              ; preds = %333
  %338 = load ptr, ptr %18, align 8, !tbaa !5
  %339 = load i32, ptr %338, align 4, !tbaa !9
  %340 = icmp eq i32 %339, 0
  br i1 %340, label %341, label %342

341:                                              ; preds = %337, %333, %329
  store i32 1, ptr %64, align 4
  br label %625

342:                                              ; preds = %337
  store i32 2, ptr %40, align 4, !tbaa !9
  %343 = load i32, ptr %52, align 4, !tbaa !9
  store i32 %343, ptr %54, align 4, !tbaa !9
  %344 = load i32, ptr %48, align 4, !tbaa !9
  %345 = icmp sgt i32 %344, 1
  br i1 %345, label %346, label %435

346:                                              ; preds = %342
  %347 = load i32, ptr %48, align 4, !tbaa !9
  %348 = load ptr, ptr %18, align 8, !tbaa !5
  %349 = load i32, ptr %348, align 4, !tbaa !9
  %350 = icmp slt i32 %347, %349
  br i1 %350, label %351, label %435

351:                                              ; preds = %346
  %352 = load ptr, ptr %25, align 8, !tbaa !5
  %353 = load i32, ptr %352, align 4, !tbaa !9
  %354 = load i32, ptr %52, align 4, !tbaa !9
  %355 = load i32, ptr %48, align 4, !tbaa !9
  %356 = mul nsw i32 %354, %355
  %357 = add nsw i32 %356, 4160
  %358 = icmp slt i32 %353, %357
  br i1 %358, label %359, label %434

359:                                              ; preds = %351
  %360 = load ptr, ptr %25, align 8, !tbaa !5
  %361 = load i32, ptr %360, align 4, !tbaa !9
  %362 = sub nsw i32 %361, 4160
  %363 = load i32, ptr %54, align 4, !tbaa !9
  %364 = sdiv i32 %362, %363
  store i32 %364, ptr %48, align 4, !tbaa !9
  %365 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 0
  store i32 1, ptr %365, align 4, !tbaa !9
  %366 = load ptr, ptr %14, align 8, !tbaa !5
  %367 = getelementptr inbounds [2 x ptr], ptr %27, i64 0, i64 0
  store ptr %366, ptr %367, align 16, !tbaa !5
  %368 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 1
  store i32 1, ptr %368, align 4, !tbaa !9
  %369 = load ptr, ptr %15, align 8, !tbaa !5
  %370 = getelementptr inbounds [2 x ptr], ptr %27, i64 0, i64 1
  store ptr %369, ptr %370, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #3
  store i32 2, ptr %67, align 4, !tbaa !9
  %371 = getelementptr inbounds [2 x i8], ptr %37, i64 0, i64 0
  store ptr %371, ptr %69, align 8, !tbaa !5
  store i32 0, ptr %65, align 4, !tbaa !9
  br label %372

372:                                              ; preds = %408, %359
  %373 = load i32, ptr %65, align 4, !tbaa !9
  %374 = load i32, ptr @c__2, align 4, !tbaa !9
  %375 = icmp slt i32 %373, %374
  br i1 %375, label %376, label %411

376:                                              ; preds = %372
  %377 = load i32, ptr %67, align 4, !tbaa !9
  store i32 %377, ptr %66, align 4, !tbaa !9
  %378 = load i32, ptr %65, align 4, !tbaa !9
  %379 = sext i32 %378 to i64
  %380 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 %379
  %381 = load i32, ptr %380, align 4, !tbaa !9
  %382 = load i32, ptr %66, align 4, !tbaa !9
  %383 = icmp slt i32 %381, %382
  br i1 %383, label %384, label %389

384:                                              ; preds = %376
  %385 = load i32, ptr %65, align 4, !tbaa !9
  %386 = sext i32 %385 to i64
  %387 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 %386
  %388 = load i32, ptr %387, align 4, !tbaa !9
  store i32 %388, ptr %66, align 4, !tbaa !9
  br label %389

389:                                              ; preds = %384, %376
  %390 = load i32, ptr %66, align 4, !tbaa !9
  %391 = load i32, ptr %67, align 4, !tbaa !9
  %392 = sub nsw i32 %391, %390
  store i32 %392, ptr %67, align 4, !tbaa !9
  %393 = load i32, ptr %65, align 4, !tbaa !9
  %394 = sext i32 %393 to i64
  %395 = getelementptr inbounds [2 x ptr], ptr %27, i64 0, i64 %394
  %396 = load ptr, ptr %395, align 8, !tbaa !5
  store ptr %396, ptr %68, align 8, !tbaa !5
  br label %397

397:                                              ; preds = %401, %389
  %398 = load i32, ptr %66, align 4, !tbaa !9
  %399 = add nsw i32 %398, -1
  store i32 %399, ptr %66, align 4, !tbaa !9
  %400 = icmp sge i32 %399, 0
  br i1 %400, label %401, label %407

401:                                              ; preds = %397
  %402 = load ptr, ptr %68, align 8, !tbaa !5
  %403 = getelementptr inbounds i8, ptr %402, i32 1
  store ptr %403, ptr %68, align 8, !tbaa !5
  %404 = load i8, ptr %402, align 1, !tbaa !11
  %405 = load ptr, ptr %69, align 8, !tbaa !5
  %406 = getelementptr inbounds i8, ptr %405, i32 1
  store ptr %406, ptr %69, align 8, !tbaa !5
  store i8 %404, ptr %405, align 1, !tbaa !11
  br label %397, !llvm.loop !20

407:                                              ; preds = %397
  br label %408

408:                                              ; preds = %407
  %409 = load i32, ptr %65, align 4, !tbaa !9
  %410 = add nsw i32 %409, 1
  store i32 %410, ptr %65, align 4, !tbaa !9
  br label %372, !llvm.loop !21

411:                                              ; preds = %372
  br label %412

412:                                              ; preds = %416, %411
  %413 = load i32, ptr %67, align 4, !tbaa !9
  %414 = add nsw i32 %413, -1
  store i32 %414, ptr %67, align 4, !tbaa !9
  %415 = icmp sge i32 %414, 0
  br i1 %415, label %416, label %419

416:                                              ; preds = %412
  %417 = load ptr, ptr %69, align 8, !tbaa !5
  %418 = getelementptr inbounds i8, ptr %417, i32 1
  store ptr %418, ptr %69, align 8, !tbaa !5
  store i8 32, ptr %417, align 1, !tbaa !11
  br label %412, !llvm.loop !22

419:                                              ; preds = %412
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #3
  store i32 2, ptr %32, align 4, !tbaa !9
  %420 = getelementptr inbounds [2 x i8], ptr %37, i64 0, i64 0
  %421 = load ptr, ptr %16, align 8, !tbaa !5
  %422 = load ptr, ptr %17, align 8, !tbaa !5
  %423 = load ptr, ptr %18, align 8, !tbaa !5
  %424 = call i32 @ilaenv_(ptr noundef @c__2, ptr noundef @.str.4, ptr noundef %420, ptr noundef %421, ptr noundef %422, ptr noundef %423, ptr noundef @c_n1, i32 noundef 6, i32 noundef 2)
  store i32 %424, ptr %33, align 4, !tbaa !9
  %425 = load i32, ptr %32, align 4, !tbaa !9
  %426 = load i32, ptr %33, align 4, !tbaa !9
  %427 = icmp sge i32 %425, %426
  br i1 %427, label %428, label %430

428:                                              ; preds = %419
  %429 = load i32, ptr %32, align 4, !tbaa !9
  br label %432

430:                                              ; preds = %419
  %431 = load i32, ptr %33, align 4, !tbaa !9
  br label %432

432:                                              ; preds = %430, %428
  %433 = phi i32 [ %429, %428 ], [ %431, %430 ]
  store i32 %433, ptr %40, align 4, !tbaa !9
  br label %434

434:                                              ; preds = %432, %351
  br label %435

435:                                              ; preds = %434, %346, %342
  %436 = load i32, ptr %48, align 4, !tbaa !9
  %437 = load i32, ptr %40, align 4, !tbaa !9
  %438 = icmp slt i32 %436, %437
  br i1 %438, label %444, label %439

439:                                              ; preds = %435
  %440 = load i32, ptr %48, align 4, !tbaa !9
  %441 = load ptr, ptr %18, align 8, !tbaa !5
  %442 = load i32, ptr %441, align 4, !tbaa !9
  %443 = icmp sge i32 %440, %442
  br i1 %443, label %444, label %464

444:                                              ; preds = %439, %435
  %445 = load ptr, ptr %14, align 8, !tbaa !5
  %446 = load ptr, ptr %15, align 8, !tbaa !5
  %447 = load ptr, ptr %16, align 8, !tbaa !5
  %448 = load ptr, ptr %17, align 8, !tbaa !5
  %449 = load ptr, ptr %18, align 8, !tbaa !5
  %450 = load ptr, ptr %19, align 8, !tbaa !5
  %451 = load i32, ptr %29, align 4, !tbaa !9
  %452 = sext i32 %451 to i64
  %453 = getelementptr inbounds %struct.complex, ptr %450, i64 %452
  %454 = load ptr, ptr %20, align 8, !tbaa !5
  %455 = load ptr, ptr %21, align 8, !tbaa !5
  %456 = getelementptr inbounds %struct.complex, ptr %455, i64 1
  %457 = load ptr, ptr %22, align 8, !tbaa !5
  %458 = load i32, ptr %31, align 4, !tbaa !9
  %459 = sext i32 %458 to i64
  %460 = getelementptr inbounds %struct.complex, ptr %457, i64 %459
  %461 = load ptr, ptr %23, align 8, !tbaa !5
  %462 = load ptr, ptr %24, align 8, !tbaa !5
  %463 = getelementptr inbounds %struct.complex, ptr %462, i64 1
  call void @cunml2_(ptr noundef %445, ptr noundef %446, ptr noundef %447, ptr noundef %448, ptr noundef %449, ptr noundef %453, ptr noundef %454, ptr noundef %456, ptr noundef %460, ptr noundef %461, ptr noundef %463, ptr noundef %41)
  br label %616

464:                                              ; preds = %439
  %465 = load i32, ptr %52, align 4, !tbaa !9
  %466 = load i32, ptr %48, align 4, !tbaa !9
  %467 = mul nsw i32 %465, %466
  %468 = add nsw i32 %467, 1
  store i32 %468, ptr %58, align 4, !tbaa !9
  %469 = load i32, ptr %38, align 4, !tbaa !9
  %470 = icmp ne i32 %469, 0
  br i1 %470, label %471, label %474

471:                                              ; preds = %464
  %472 = load i32, ptr %53, align 4, !tbaa !9
  %473 = icmp ne i32 %472, 0
  br i1 %473, label %480, label %474

474:                                              ; preds = %471, %464
  %475 = load i32, ptr %38, align 4, !tbaa !9
  %476 = icmp ne i32 %475, 0
  br i1 %476, label %484, label %477

477:                                              ; preds = %474
  %478 = load i32, ptr %53, align 4, !tbaa !9
  %479 = icmp ne i32 %478, 0
  br i1 %479, label %484, label %480

480:                                              ; preds = %477, %471
  store i32 1, ptr %42, align 4, !tbaa !9
  %481 = load ptr, ptr %18, align 8, !tbaa !5
  %482 = load i32, ptr %481, align 4, !tbaa !9
  store i32 %482, ptr %43, align 4, !tbaa !9
  %483 = load i32, ptr %48, align 4, !tbaa !9
  store i32 %483, ptr %44, align 4, !tbaa !9
  br label %495

484:                                              ; preds = %477, %474
  %485 = load ptr, ptr %18, align 8, !tbaa !5
  %486 = load i32, ptr %485, align 4, !tbaa !9
  %487 = sub nsw i32 %486, 1
  %488 = load i32, ptr %48, align 4, !tbaa !9
  %489 = sdiv i32 %487, %488
  %490 = load i32, ptr %48, align 4, !tbaa !9
  %491 = mul nsw i32 %489, %490
  %492 = add nsw i32 %491, 1
  store i32 %492, ptr %42, align 4, !tbaa !9
  store i32 1, ptr %43, align 4, !tbaa !9
  %493 = load i32, ptr %48, align 4, !tbaa !9
  %494 = sub nsw i32 0, %493
  store i32 %494, ptr %44, align 4, !tbaa !9
  br label %495

495:                                              ; preds = %484, %480
  %496 = load i32, ptr %38, align 4, !tbaa !9
  %497 = icmp ne i32 %496, 0
  br i1 %497, label %498, label %501

498:                                              ; preds = %495
  %499 = load ptr, ptr %17, align 8, !tbaa !5
  %500 = load i32, ptr %499, align 4, !tbaa !9
  store i32 %500, ptr %50, align 4, !tbaa !9
  store i32 1, ptr %47, align 4, !tbaa !9
  br label %504

501:                                              ; preds = %495
  %502 = load ptr, ptr %16, align 8, !tbaa !5
  %503 = load i32, ptr %502, align 4, !tbaa !9
  store i32 %503, ptr %49, align 4, !tbaa !9
  store i32 1, ptr %46, align 4, !tbaa !9
  br label %504

504:                                              ; preds = %501, %498
  %505 = load i32, ptr %53, align 4, !tbaa !9
  %506 = icmp ne i32 %505, 0
  br i1 %506, label %507, label %509

507:                                              ; preds = %504
  %508 = getelementptr inbounds [1 x i8], ptr %55, i64 0, i64 0
  store i8 67, ptr %508, align 1, !tbaa !11
  br label %511

509:                                              ; preds = %504
  %510 = getelementptr inbounds [1 x i8], ptr %55, i64 0, i64 0
  store i8 78, ptr %510, align 1, !tbaa !11
  br label %511

511:                                              ; preds = %509, %507
  %512 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %512, ptr %32, align 4, !tbaa !9
  %513 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %513, ptr %33, align 4, !tbaa !9
  %514 = load i32, ptr %42, align 4, !tbaa !9
  store i32 %514, ptr %39, align 4, !tbaa !9
  br label %515

515:                                              ; preds = %611, %511
  %516 = load i32, ptr %33, align 4, !tbaa !9
  %517 = icmp slt i32 %516, 0
  br i1 %517, label %518, label %523

518:                                              ; preds = %515
  %519 = load i32, ptr %39, align 4, !tbaa !9
  %520 = load i32, ptr %32, align 4, !tbaa !9
  %521 = icmp sge i32 %519, %520
  %522 = zext i1 %521 to i32
  br label %528

523:                                              ; preds = %515
  %524 = load i32, ptr %39, align 4, !tbaa !9
  %525 = load i32, ptr %32, align 4, !tbaa !9
  %526 = icmp sle i32 %524, %525
  %527 = zext i1 %526 to i32
  br label %528

528:                                              ; preds = %523, %518
  %529 = phi i32 [ %522, %518 ], [ %527, %523 ]
  %530 = icmp ne i32 %529, 0
  br i1 %530, label %531, label %615

531:                                              ; preds = %528
  %532 = load i32, ptr %48, align 4, !tbaa !9
  store i32 %532, ptr %35, align 4, !tbaa !9
  %533 = load ptr, ptr %18, align 8, !tbaa !5
  %534 = load i32, ptr %533, align 4, !tbaa !9
  %535 = load i32, ptr %39, align 4, !tbaa !9
  %536 = sub nsw i32 %534, %535
  %537 = add nsw i32 %536, 1
  store i32 %537, ptr %36, align 4, !tbaa !9
  %538 = load i32, ptr %35, align 4, !tbaa !9
  %539 = load i32, ptr %36, align 4, !tbaa !9
  %540 = icmp sle i32 %538, %539
  br i1 %540, label %541, label %543

541:                                              ; preds = %531
  %542 = load i32, ptr %35, align 4, !tbaa !9
  br label %545

543:                                              ; preds = %531
  %544 = load i32, ptr %36, align 4, !tbaa !9
  br label %545

545:                                              ; preds = %543, %541
  %546 = phi i32 [ %542, %541 ], [ %544, %543 ]
  store i32 %546, ptr %45, align 4, !tbaa !9
  %547 = load i32, ptr %51, align 4, !tbaa !9
  %548 = load i32, ptr %39, align 4, !tbaa !9
  %549 = sub nsw i32 %547, %548
  %550 = add nsw i32 %549, 1
  store i32 %550, ptr %35, align 4, !tbaa !9
  %551 = load ptr, ptr %19, align 8, !tbaa !5
  %552 = load i32, ptr %39, align 4, !tbaa !9
  %553 = load i32, ptr %39, align 4, !tbaa !9
  %554 = load i32, ptr %28, align 4, !tbaa !9
  %555 = mul nsw i32 %553, %554
  %556 = add nsw i32 %552, %555
  %557 = sext i32 %556 to i64
  %558 = getelementptr inbounds %struct.complex, ptr %551, i64 %557
  %559 = load ptr, ptr %20, align 8, !tbaa !5
  %560 = load ptr, ptr %21, align 8, !tbaa !5
  %561 = load i32, ptr %39, align 4, !tbaa !9
  %562 = sext i32 %561 to i64
  %563 = getelementptr inbounds %struct.complex, ptr %560, i64 %562
  %564 = load ptr, ptr %24, align 8, !tbaa !5
  %565 = load i32, ptr %58, align 4, !tbaa !9
  %566 = sext i32 %565 to i64
  %567 = getelementptr inbounds %struct.complex, ptr %564, i64 %566
  call void @clarft_(ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef %35, ptr noundef %45, ptr noundef %558, ptr noundef %559, ptr noundef %563, ptr noundef %567, ptr noundef @c__65)
  %568 = load i32, ptr %38, align 4, !tbaa !9
  %569 = icmp ne i32 %568, 0
  br i1 %569, label %570, label %577

570:                                              ; preds = %545
  %571 = load ptr, ptr %16, align 8, !tbaa !5
  %572 = load i32, ptr %571, align 4, !tbaa !9
  %573 = load i32, ptr %39, align 4, !tbaa !9
  %574 = sub nsw i32 %572, %573
  %575 = add nsw i32 %574, 1
  store i32 %575, ptr %49, align 4, !tbaa !9
  %576 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %576, ptr %46, align 4, !tbaa !9
  br label %584

577:                                              ; preds = %545
  %578 = load ptr, ptr %17, align 8, !tbaa !5
  %579 = load i32, ptr %578, align 4, !tbaa !9
  %580 = load i32, ptr %39, align 4, !tbaa !9
  %581 = sub nsw i32 %579, %580
  %582 = add nsw i32 %581, 1
  store i32 %582, ptr %50, align 4, !tbaa !9
  %583 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %583, ptr %47, align 4, !tbaa !9
  br label %584

584:                                              ; preds = %577, %570
  %585 = load ptr, ptr %14, align 8, !tbaa !5
  %586 = getelementptr inbounds [1 x i8], ptr %55, i64 0, i64 0
  %587 = load ptr, ptr %19, align 8, !tbaa !5
  %588 = load i32, ptr %39, align 4, !tbaa !9
  %589 = load i32, ptr %39, align 4, !tbaa !9
  %590 = load i32, ptr %28, align 4, !tbaa !9
  %591 = mul nsw i32 %589, %590
  %592 = add nsw i32 %588, %591
  %593 = sext i32 %592 to i64
  %594 = getelementptr inbounds %struct.complex, ptr %587, i64 %593
  %595 = load ptr, ptr %20, align 8, !tbaa !5
  %596 = load ptr, ptr %24, align 8, !tbaa !5
  %597 = load i32, ptr %58, align 4, !tbaa !9
  %598 = sext i32 %597 to i64
  %599 = getelementptr inbounds %struct.complex, ptr %596, i64 %598
  %600 = load ptr, ptr %22, align 8, !tbaa !5
  %601 = load i32, ptr %46, align 4, !tbaa !9
  %602 = load i32, ptr %47, align 4, !tbaa !9
  %603 = load i32, ptr %30, align 4, !tbaa !9
  %604 = mul nsw i32 %602, %603
  %605 = add nsw i32 %601, %604
  %606 = sext i32 %605 to i64
  %607 = getelementptr inbounds %struct.complex, ptr %600, i64 %606
  %608 = load ptr, ptr %23, align 8, !tbaa !5
  %609 = load ptr, ptr %24, align 8, !tbaa !5
  %610 = getelementptr inbounds %struct.complex, ptr %609, i64 1
  call void @clarfb_(ptr noundef %585, ptr noundef %586, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef %49, ptr noundef %50, ptr noundef %45, ptr noundef %594, ptr noundef %595, ptr noundef %599, ptr noundef @c__65, ptr noundef %607, ptr noundef %608, ptr noundef %610, ptr noundef %54)
  br label %611

611:                                              ; preds = %584
  %612 = load i32, ptr %33, align 4, !tbaa !9
  %613 = load i32, ptr %39, align 4, !tbaa !9
  %614 = add nsw i32 %613, %612
  store i32 %614, ptr %39, align 4, !tbaa !9
  br label %515, !llvm.loop !23

615:                                              ; preds = %528
  br label %616

616:                                              ; preds = %615, %444
  %617 = load i32, ptr %56, align 4, !tbaa !9
  %618 = sitofp i32 %617 to float
  %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 0
  store float %618, ptr %621, align 4, !tbaa !16
  %622 = load ptr, ptr %24, align 8, !tbaa !5
  %623 = getelementptr inbounds %struct.complex, ptr %622, i64 1
  %624 = getelementptr inbounds %struct.complex, ptr %623, i32 0, i32 1
  store float 0.000000e+00, ptr %624, align 4, !tbaa !19
  store i32 1, ptr %64, align 4
  br label %625

625:                                              ; preds = %616, %341, %327, %319
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 4, 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 @cunml2_(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 [8 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 @cunmlq_(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
  %29 = load i32, ptr %9, align 4, !tbaa !5
  %narrow249 = xor i32 %29, -1
  %30 = sext i32 %narrow249 to i64
  %31 = getelementptr inbounds %struct.complex, ptr %8, i64 %30
  store i32 0, ptr %12, align 4, !tbaa !5
  %32 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %33 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #5
  %34 = load i32, ptr %11, align 4, !tbaa !5
  %35 = icmp eq i32 %34, -1
  %36 = icmp ne i32 %32, 0
  %. = select i1 %36, ptr %2, ptr %3
  %.250 = select i1 %36, ptr %3, ptr %2
  %.0214 = load i32, ptr %.250, align 4, !tbaa !5
  %.0215 = load i32, ptr %., align 4, !tbaa !5
  br i1 %36, label %39, label %37

37:                                               ; preds = %13
  %38 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #5
  %.not = icmp eq i32 %38, 0
  br i1 %.not, label %.thread259.sink.split, label %39

39:                                               ; preds = %37, %13
  %.not241 = icmp eq i32 %33, 0
  br i1 %.not241, label %40, label %42

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

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

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

48:                                               ; preds = %45
  %49 = load i32, ptr %4, align 4, !tbaa !5
  %50 = icmp slt i32 %49, 0
  %51 = icmp sgt i32 %49, %.0215
  %or.cond251 = select i1 %50, i1 true, i1 %51
  br i1 %or.cond251, label %.thread259.sink.split, label %52

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

55:                                               ; preds = %52
  %56 = load i32, ptr %9, align 4, !tbaa !5
  %spec.select252 = tail call i32 @llvm.umax.i32(i32 %43, i32 1)
  %57 = icmp slt i32 %56, %spec.select252
  br i1 %57, label %.thread259.sink.split, label %58

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

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

64:                                               ; preds = %62
  %65 = icmp eq i32 %43, 0
  br i1 %65, label %.sink.split, label %66

66:                                               ; preds = %64
  %67 = icmp eq i32 %46, 0
  %68 = icmp eq i32 %49, 0
  %or.cond355 = or i1 %67, %68
  br i1 %or.cond355, label %.sink.split, label %69

69:                                               ; preds = %66
  store i32 1, ptr %16, align 4, !tbaa !5
  store ptr %0, ptr %14, align 16, !tbaa !9
  %70 = getelementptr inbounds i8, ptr %16, i64 4
  store i32 1, ptr %70, align 4, !tbaa !5
  %71 = getelementptr inbounds i8, ptr %14, i64 8
  store ptr %1, ptr %71, align 8, !tbaa !9
  %72 = load i32, ptr @c__2, align 4, !tbaa !5
  %73 = icmp sgt i32 %72, 0
  br i1 %73, label %.lr.ph290, label %.lr.ph295.preheader

.preheader282:                                    ; preds = %._crit_edge
  %74 = icmp sgt i32 %79, 0
  br i1 %74, label %.lr.ph295.preheader, label %.thread

.lr.ph295.preheader:                              ; preds = %69, %.preheader282
  %.0203.lcssa343 = phi ptr [ %.1204.lcssa, %.preheader282 ], [ %18, %69 ]
  %.0207.lcssa342 = phi i32 [ %79, %.preheader282 ], [ 2, %69 ]
  %75 = zext nneg i32 %.0207.lcssa342 to i64
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.0203.lcssa343, i8 32, i64 %75, i1 false), !tbaa !11
  br label %.thread

.lr.ph290:                                        ; preds = %69, %._crit_edge
  %76 = phi i32 [ %94, %._crit_edge ], [ %72, %69 ]
  %indvars.iv = phi i64 [ %indvars.iv.next, %._crit_edge ], [ 0, %69 ]
  %.0203288 = phi ptr [ %.1204.lcssa, %._crit_edge ], [ %18, %69 ]
  %.0207287 = phi i32 [ %79, %._crit_edge ], [ 2, %69 ]
  %77 = getelementptr inbounds [2 x i32], ptr %16, i64 0, i64 %indvars.iv
  %78 = load i32, ptr %77, align 4, !tbaa !5
  %spec.select253 = tail call i32 @llvm.smin.i32(i32 %78, i32 %.0207287)
  %79 = sub nsw i32 %.0207287, %spec.select253
  %80 = icmp sgt i32 %spec.select253, 0
  br i1 %80, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %.lr.ph290
  %.0203288360 = ptrtoint ptr %.0203288 to i64
  %81 = getelementptr inbounds [2 x ptr], ptr %14, i64 0, i64 %indvars.iv
  %82 = load ptr, ptr %81, align 8, !tbaa !9
  %83 = add nsw i32 %spec.select253, -1
  %84 = zext nneg i32 %83 to i64
  %scevgep = getelementptr i8, ptr %.0203288, i64 %84
  %85 = zext nneg i32 %spec.select253 to i64
  %min.iters.check = icmp ult i32 %spec.select253, 32
  %86 = ptrtoint ptr %82 to i64
  %87 = sub i64 %.0203288360, %86
  %diff.check = icmp ult i64 %87, 32
  %or.cond391 = select i1 %min.iters.check, i1 true, i1 %diff.check
  br i1 %or.cond391, label %.lr.ph.preheader397, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph.preheader
  %n.vec = and i64 %85, 2147483616
  %ind.end = getelementptr i8, ptr %.0203288, i64 %n.vec
  %ind.end361 = getelementptr i8, ptr %82, 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 %.0203288, i64 %index
  %next.gep364 = getelementptr i8, ptr %82, i64 %index
  %88 = getelementptr i8, ptr %next.gep364, i64 16
  %wide.load = load <16 x i8>, ptr %next.gep364, align 1, !tbaa !11
  %wide.load366 = load <16 x i8>, ptr %88, align 1, !tbaa !11
  %89 = 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.load366, ptr %89, align 1, !tbaa !11
  %index.next = add nuw i64 %index, 32
  %90 = icmp eq i64 %index.next, %n.vec
  br i1 %90, label %middle.block, label %vector.body, !llvm.loop !12

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

.lr.ph.preheader397:                              ; preds = %middle.block, %.lr.ph.preheader
  %.1204285.ph = phi ptr [ %.0203288, %.lr.ph.preheader ], [ %ind.end, %middle.block ]
  %.0206284.ph = phi ptr [ %82, %.lr.ph.preheader ], [ %ind.end361, %middle.block ]
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader397, %.lr.ph
  %.1204285 = phi ptr [ %93, %.lr.ph ], [ %.1204285.ph, %.lr.ph.preheader397 ]
  %.0206284 = phi ptr [ %91, %.lr.ph ], [ %.0206284.ph, %.lr.ph.preheader397 ]
  %91 = getelementptr inbounds i8, ptr %.0206284, i64 1
  %92 = load i8, ptr %.0206284, align 1, !tbaa !11
  %93 = getelementptr inbounds i8, ptr %.1204285, i64 1
  store i8 %92, ptr %.1204285, align 1, !tbaa !11
  %exitcond.not = icmp eq ptr %.1204285, %scevgep
  br i1 %exitcond.not, label %._crit_edge.loopexit, label %.lr.ph, !llvm.loop !16

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

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %.lr.ph290
  %94 = phi i32 [ %76, %.lr.ph290 ], [ %.pre, %._crit_edge.loopexit ]
  %.1204.lcssa = phi ptr [ %.0203288, %.lr.ph290 ], [ %.lcssa358, %._crit_edge.loopexit ]
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %95 = sext i32 %94 to i64
  %96 = icmp slt i64 %indvars.iv.next, %95
  br i1 %96, label %.lr.ph290, label %.preheader282, !llvm.loop !17

.thread:                                          ; preds = %.preheader282, %.lr.ph295.preheader
  %97 = 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
  %98 = call i32 @llvm.smin.i32(i32 %97, i32 64)
  %99 = mul nsw i32 %98, %60
  %100 = add nsw i32 %99, 4160
  %.pr258.pr.pr.pre = load i32, ptr %12, align 4, !tbaa !5
  %101 = sitofp i32 %100 to float
  store float %101, ptr %10, align 4, !tbaa !18
  %102 = getelementptr inbounds i8, ptr %10, i64 4
  store float 0.000000e+00, ptr %102, align 4, !tbaa !21
  %.not244 = icmp eq i32 %.pr258.pr.pr.pre, 0
  br i1 %.not244, label %106, label %.thread259

.thread259.sink.split:                            ; preds = %58, %55, %52, %48, %45, %42, %40, %37
  %.sink = phi i32 [ -1, %37 ], [ -2, %40 ], [ -3, %42 ], [ -4, %45 ], [ -5, %48 ], [ -7, %52 ], [ -10, %55 ], [ -12, %58 ]
  store i32 %.sink, ptr %12, align 4, !tbaa !5
  br label %.thread259

.thread259:                                       ; preds = %.thread259.sink.split, %62, %.thread
  %103 = phi i32 [ %.pr258.pr.pr.pre, %.thread ], [ %.pr, %62 ], [ %.sink, %.thread259.sink.split ]
  %104 = sub nsw i32 0, %103
  store i32 %104, ptr %15, align 4, !tbaa !5
  %105 = call i32 @xerbla_(ptr noundef nonnull @.str.4, ptr noundef nonnull %15, i32 noundef 6) #5
  br label %208

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

106:                                              ; preds = %.sink.split, %.thread
  %.0212281 = phi i32 [ %100, %.thread ], [ 1, %.sink.split ]
  %.0216280 = phi i32 [ %98, %.thread ], [ undef, %.sink.split ]
  br i1 %35, label %208, label %107

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

110:                                              ; preds = %107
  %111 = load i32, ptr %3, align 4, !tbaa !5
  %112 = icmp eq i32 %111, 0
  br i1 %112, label %208, label %113

113:                                              ; preds = %110
  %114 = load i32, ptr %4, align 4, !tbaa !5
  %115 = icmp eq i32 %114, 0
  br i1 %115, label %208, label %116

116:                                              ; preds = %113
  store i32 %.0214, ptr %23, align 4, !tbaa !5
  %117 = icmp sgt i32 %.0216280, 1
  br i1 %117, label %118, label %.thread268

118:                                              ; preds = %116
  %119 = icmp slt i32 %.0216280, %114
  br i1 %119, label %120, label %.thread264

120:                                              ; preds = %118
  %121 = load i32, ptr %11, align 4, !tbaa !5
  %122 = mul nsw i32 %.0216280, %.0214
  %123 = add nsw i32 %122, 4160
  %124 = icmp slt i32 %121, %123
  br i1 %124, label %125, label %.thread264

125:                                              ; preds = %120
  %126 = add nsw i32 %121, -4160
  %127 = sdiv i32 %126, %.0214
  store i32 1, ptr %16, align 4, !tbaa !5
  store ptr %0, ptr %14, align 16, !tbaa !9
  %128 = getelementptr inbounds i8, ptr %16, i64 4
  store i32 1, ptr %128, align 4, !tbaa !5
  %129 = getelementptr inbounds i8, ptr %14, i64 8
  store ptr %1, ptr %129, align 8, !tbaa !9
  %130 = load i32, ptr @c__2, align 4, !tbaa !5
  %131 = icmp sgt i32 %130, 0
  br i1 %131, label %.lr.ph308, label %.lr.ph313.preheader

.preheader:                                       ; preds = %._crit_edge302
  %132 = icmp sgt i32 %137, 0
  br i1 %132, label %.lr.ph313.preheader, label %._crit_edge314

.lr.ph313.preheader:                              ; preds = %125, %.preheader
  %.0.lcssa351 = phi ptr [ %.1.lcssa, %.preheader ], [ %18, %125 ]
  %.0198.lcssa350 = phi i32 [ %137, %.preheader ], [ 2, %125 ]
  %133 = zext nneg i32 %.0198.lcssa350 to i64
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.0.lcssa351, i8 32, i64 %133, i1 false), !tbaa !11
  br label %._crit_edge314

.lr.ph308:                                        ; preds = %125, %._crit_edge302
  %134 = phi i32 [ %152, %._crit_edge302 ], [ %130, %125 ]
  %indvars.iv331 = phi i64 [ %indvars.iv.next332, %._crit_edge302 ], [ 0, %125 ]
  %.0306 = phi ptr [ %.1.lcssa, %._crit_edge302 ], [ %18, %125 ]
  %.0198305 = phi i32 [ %137, %._crit_edge302 ], [ 2, %125 ]
  %135 = getelementptr inbounds [2 x i32], ptr %16, i64 0, i64 %indvars.iv331
  %136 = load i32, ptr %135, align 4, !tbaa !5
  %spec.select254 = call i32 @llvm.smin.i32(i32 %136, i32 %.0198305)
  %137 = sub nsw i32 %.0198305, %spec.select254
  %138 = icmp sgt i32 %spec.select254, 0
  br i1 %138, label %.lr.ph301.preheader, label %._crit_edge302

.lr.ph301.preheader:                              ; preds = %.lr.ph308
  %.0306368 = ptrtoint ptr %.0306 to i64
  %139 = getelementptr inbounds [2 x ptr], ptr %14, i64 0, i64 %indvars.iv331
  %140 = load ptr, ptr %139, align 8, !tbaa !9
  %141 = add nsw i32 %spec.select254, -1
  %142 = zext nneg i32 %141 to i64
  %scevgep329 = getelementptr i8, ptr %.0306, i64 %142
  %143 = zext nneg i32 %spec.select254 to i64
  %min.iters.check372 = icmp ult i32 %spec.select254, 32
  %144 = ptrtoint ptr %140 to i64
  %145 = sub i64 %.0306368, %144
  %diff.check369 = icmp ult i64 %145, 32
  %or.cond393 = select i1 %min.iters.check372, i1 true, i1 %diff.check369
  br i1 %or.cond393, label %.lr.ph301.preheader394, label %vector.ph373

vector.ph373:                                     ; preds = %.lr.ph301.preheader
  %n.vec375 = and i64 %143, 2147483616
  %ind.end376 = getelementptr i8, ptr %.0306, i64 %n.vec375
  %ind.end378 = getelementptr i8, ptr %140, i64 %n.vec375
  br label %vector.body380

vector.body380:                                   ; preds = %vector.body380, %vector.ph373
  %index381 = phi i64 [ 0, %vector.ph373 ], [ %index.next388, %vector.body380 ]
  %next.gep382 = getelementptr i8, ptr %.0306, i64 %index381
  %next.gep384 = getelementptr i8, ptr %140, i64 %index381
  %146 = getelementptr i8, ptr %next.gep384, i64 16
  %wide.load386 = load <16 x i8>, ptr %next.gep384, align 1, !tbaa !11
  %wide.load387 = load <16 x i8>, ptr %146, align 1, !tbaa !11
  %147 = getelementptr i8, ptr %next.gep382, i64 16
  store <16 x i8> %wide.load386, ptr %next.gep382, align 1, !tbaa !11
  store <16 x i8> %wide.load387, ptr %147, align 1, !tbaa !11
  %index.next388 = add nuw i64 %index381, 32
  %148 = icmp eq i64 %index.next388, %n.vec375
  br i1 %148, label %middle.block370, label %vector.body380, !llvm.loop !23

middle.block370:                                  ; preds = %vector.body380
  %cmp.n389 = icmp eq i64 %n.vec375, %143
  br i1 %cmp.n389, label %._crit_edge302.loopexit, label %.lr.ph301.preheader394

.lr.ph301.preheader394:                           ; preds = %middle.block370, %.lr.ph301.preheader
  %.1299.ph = phi ptr [ %.0306, %.lr.ph301.preheader ], [ %ind.end376, %middle.block370 ]
  %.0197298.ph = phi ptr [ %140, %.lr.ph301.preheader ], [ %ind.end378, %middle.block370 ]
  br label %.lr.ph301

.lr.ph301:                                        ; preds = %.lr.ph301.preheader394, %.lr.ph301
  %.1299 = phi ptr [ %151, %.lr.ph301 ], [ %.1299.ph, %.lr.ph301.preheader394 ]
  %.0197298 = phi ptr [ %149, %.lr.ph301 ], [ %.0197298.ph, %.lr.ph301.preheader394 ]
  %149 = getelementptr inbounds i8, ptr %.0197298, i64 1
  %150 = load i8, ptr %.0197298, align 1, !tbaa !11
  %151 = getelementptr inbounds i8, ptr %.1299, i64 1
  store i8 %150, ptr %.1299, align 1, !tbaa !11
  %exitcond330.not = icmp eq ptr %.1299, %scevgep329
  br i1 %exitcond330.not, label %._crit_edge302.loopexit, label %.lr.ph301, !llvm.loop !24

._crit_edge302.loopexit:                          ; preds = %.lr.ph301, %middle.block370
  %.lcssa = phi ptr [ %ind.end376, %middle.block370 ], [ %151, %.lr.ph301 ]
  %.pre338 = load i32, ptr @c__2, align 4, !tbaa !5
  br label %._crit_edge302

._crit_edge302:                                   ; preds = %._crit_edge302.loopexit, %.lr.ph308
  %152 = phi i32 [ %134, %.lr.ph308 ], [ %.pre338, %._crit_edge302.loopexit ]
  %.1.lcssa = phi ptr [ %.0306, %.lr.ph308 ], [ %.lcssa, %._crit_edge302.loopexit ]
  %indvars.iv.next332 = add nuw nsw i64 %indvars.iv331, 1
  %153 = sext i32 %152 to i64
  %154 = icmp slt i64 %indvars.iv.next332, %153
  br i1 %154, label %.lr.ph308, label %.preheader, !llvm.loop !25

._crit_edge314:                                   ; preds = %.lr.ph313.preheader, %.preheader
  %155 = 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
  %156 = call i32 @llvm.smax.i32(i32 %155, i32 2)
  %157 = icmp slt i32 %127, %156
  br i1 %157, label %.thread268, label %._crit_edge314..thread264_crit_edge

._crit_edge314..thread264_crit_edge:              ; preds = %._crit_edge314
  %.pre339 = load i32, ptr %4, align 4, !tbaa !5
  br label %.thread264

.thread264:                                       ; preds = %._crit_edge314..thread264_crit_edge, %118, %120
  %158 = phi i32 [ %.pre339, %._crit_edge314..thread264_crit_edge ], [ %114, %120 ], [ %114, %118 ]
  %.2218267 = phi i32 [ %127, %._crit_edge314..thread264_crit_edge ], [ %.0216280, %120 ], [ %.0216280, %118 ]
  %.fr247 = freeze i32 %158
  %.not246 = icmp slt i32 %.2218267, %.fr247
  br i1 %.not246, label %159, label %.thread268

.thread268:                                       ; preds = %116, %.thread264, %._crit_edge314
  call void @cunml2_(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

159:                                              ; preds = %.thread264
  %160 = mul nsw i32 %.2218267, %.0214
  %161 = icmp ne i32 %33, 0
  %or.cond255 = xor i1 %36, %161
  br i1 %or.cond255, label %162, label %167

162:                                              ; preds = %159
  %163 = add nsw i32 %.fr247, -1
  %164 = srem i32 %163, %.2218267
  %165 = sub i32 %.fr247, %164
  %166 = sub nsw i32 0, %.2218267
  br label %167

167:                                              ; preds = %159, %162
  %.0227 = phi i32 [ %165, %162 ], [ 1, %159 ]
  %168 = phi i32 [ 1, %162 ], [ %.fr247, %159 ]
  %.0225 = phi i32 [ %166, %162 ], [ %.2218267, %159 ]
  br i1 %36, label %169, label %171

169:                                              ; preds = %167
  %170 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %170, ptr %22, align 4, !tbaa !5
  br label %173

171:                                              ; preds = %167
  %172 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %172, ptr %21, align 4, !tbaa !5
  br label %173

173:                                              ; preds = %171, %169
  %.256 = select i1 %161, i8 67, i8 78
  store i8 %.256, ptr %24, align 1, !tbaa !11
  %174 = icmp slt i32 %.0225, 0
  %175 = icmp sge i32 %.0227, %168
  %176 = icmp sle i32 %.0227, %168
  %.in316 = select i1 %174, i1 %175, i1 %176
  br i1 %.in316, label %.lr.ph322, label %.loopexit

.lr.ph322:                                        ; preds = %173
  %177 = add i32 %.0215, 1
  %178 = add i32 %25, 1
  %179 = sext i32 %160 to i64
  %gep = getelementptr %struct.complex, ptr %10, i64 %179
  %180 = sext i32 %.0227 to i64
  %181 = sext i32 %.0225 to i64
  %182 = sext i32 %168 to i64
  br label %183

183:                                              ; preds = %.lr.ph322, %199
  %indvars.iv334 = phi i64 [ %180, %.lr.ph322 ], [ %indvars.iv.next335, %199 ]
  %.1220319 = phi i32 [ 1, %.lr.ph322 ], [ %.2221, %199 ]
  %.1223318 = phi i32 [ 1, %.lr.ph322 ], [ %.2224, %199 ]
  %184 = load i32, ptr %4, align 4, !tbaa !5
  %185 = trunc nsw i64 %indvars.iv334 to i32
  %reass.sub = sub i32 %184, %185
  %186 = add i32 %reass.sub, 1
  %187 = call i32 @llvm.smin.i32(i32 %.2218267, i32 %186)
  store i32 %187, ptr %20, align 4, !tbaa !5
  %188 = sub i32 %177, %185
  store i32 %188, ptr %17, align 4, !tbaa !5
  %189 = mul i32 %178, %185
  %190 = sext i32 %189 to i64
  %191 = getelementptr inbounds %struct.complex, ptr %27, i64 %190
  %192 = getelementptr inbounds %struct.complex, ptr %28, i64 %indvars.iv334
  call void @clarft_(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull %17, ptr noundef nonnull %20, ptr noundef %191, ptr noundef nonnull %6, ptr noundef nonnull %192, ptr noundef %gep, ptr noundef nonnull @c__65) #5
  br i1 %36, label %193, label %196

193:                                              ; preds = %183
  %194 = load i32, ptr %2, align 4, !tbaa !5
  %reass.sub324 = sub i32 %194, %185
  %195 = add i32 %reass.sub324, 1
  store i32 %195, ptr %21, align 4, !tbaa !5
  br label %199

196:                                              ; preds = %183
  %197 = load i32, ptr %3, align 4, !tbaa !5
  %reass.sub323 = sub i32 %197, %185
  %198 = add i32 %reass.sub323, 1
  store i32 %198, ptr %22, align 4, !tbaa !5
  br label %199

199:                                              ; preds = %196, %193
  %.2224 = phi i32 [ %185, %193 ], [ %.1223318, %196 ]
  %.2221 = phi i32 [ %.1220319, %193 ], [ %185, %196 ]
  %200 = mul nsw i32 %.2221, %29
  %201 = add nsw i32 %200, %.2224
  %202 = sext i32 %201 to i64
  %203 = getelementptr inbounds %struct.complex, ptr %31, i64 %202
  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 %191, ptr noundef nonnull %6, ptr noundef %gep, ptr noundef nonnull @c__65, ptr noundef %203, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull %23) #5
  %indvars.iv.next335 = add nsw i64 %indvars.iv334, %181
  %204 = icmp sge i64 %indvars.iv.next335, %182
  %205 = icmp sle i64 %indvars.iv.next335, %182
  %.in = select i1 %174, i1 %204, i1 %205
  br i1 %.in, label %183, label %.loopexit, !llvm.loop !26

.loopexit:                                        ; preds = %199, %173, %.thread268
  %206 = sitofp i32 %.0212281 to float
  store float %206, ptr %10, align 4, !tbaa !18
  %207 = getelementptr inbounds i8, ptr %10, i64 4
  store float 0.000000e+00, ptr %207, align 4, !tbaa !21
  br label %208

208:                                              ; preds = %107, %110, %113, %106, %.loopexit, %.thread259
  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 @cunml2_(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.smax.i32(i32, i32) #3

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