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

; 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 [11 x i8], align 1
@c__65 = external hidden global i32, align 4

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

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

108:                                              ; preds = %102
  br label %112

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

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

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

120:                                              ; preds = %114
  br label %124

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

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

126:                                              ; preds = %124, %112
  %127 = load i32, ptr %38, align 4, !tbaa !9
  %128 = icmp ne i32 %127, 0
  br i1 %128, label %135, label %129

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

133:                                              ; preds = %129
  %134 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -1, ptr %134, align 4, !tbaa !9
  br label %212

135:                                              ; preds = %129, %126
  %136 = load i32, ptr %51, align 4, !tbaa !9
  %137 = icmp ne i32 %136, 0
  br i1 %137, label %144, label %138

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

142:                                              ; preds = %138
  %143 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -2, ptr %143, align 4, !tbaa !9
  br label %211

144:                                              ; preds = %138, %135
  %145 = load ptr, ptr %16, align 8, !tbaa !5
  %146 = load i32, ptr %145, align 4, !tbaa !9
  %147 = icmp slt i32 %146, 0
  br i1 %147, label %148, label %150

148:                                              ; preds = %144
  %149 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -3, ptr %149, align 4, !tbaa !9
  br label %210

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

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

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

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

165:                                              ; preds = %160, %156
  %166 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -5, ptr %166, align 4, !tbaa !9
  br label %208

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

172:                                              ; preds = %167
  br label %175

173:                                              ; preds = %167
  %174 = load i32, ptr %49, align 4, !tbaa !9
  br label %175

175:                                              ; preds = %173, %172
  %176 = phi i32 [ 1, %172 ], [ %174, %173 ]
  %177 = icmp slt i32 %169, %176
  br i1 %177, label %178, label %180

178:                                              ; preds = %175
  %179 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -7, ptr %179, align 4, !tbaa !9
  br label %207

180:                                              ; preds = %175
  %181 = load ptr, ptr %23, align 8, !tbaa !5
  %182 = load i32, ptr %181, align 4, !tbaa !9
  %183 = load ptr, ptr %16, align 8, !tbaa !5
  %184 = load i32, ptr %183, align 4, !tbaa !9
  %185 = icmp sge i32 1, %184
  br i1 %185, label %186, label %187

186:                                              ; preds = %180
  br label %190

187:                                              ; preds = %180
  %188 = load ptr, ptr %16, align 8, !tbaa !5
  %189 = load i32, ptr %188, align 4, !tbaa !9
  br label %190

190:                                              ; preds = %187, %186
  %191 = phi i32 [ 1, %186 ], [ %189, %187 ]
  %192 = icmp slt i32 %182, %191
  br i1 %192, label %193, label %195

193:                                              ; preds = %190
  %194 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -10, ptr %194, align 4, !tbaa !9
  br label %206

195:                                              ; preds = %190
  %196 = load ptr, ptr %25, align 8, !tbaa !5
  %197 = load i32, ptr %196, align 4, !tbaa !9
  %198 = load i32, ptr %50, align 4, !tbaa !9
  %199 = icmp slt i32 %197, %198
  br i1 %199, label %200, label %205

200:                                              ; preds = %195
  %201 = load i32, ptr %54, align 4, !tbaa !9
  %202 = icmp ne i32 %201, 0
  br i1 %202, label %205, label %203

203:                                              ; preds = %200
  %204 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -12, ptr %204, align 4, !tbaa !9
  br label %205

205:                                              ; preds = %203, %200, %195
  br label %206

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

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

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

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

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

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

212:                                              ; preds = %211, %133
  %213 = load ptr, ptr %26, align 8, !tbaa !5
  %214 = load i32, ptr %213, align 4, !tbaa !9
  %215 = icmp eq i32 %214, 0
  br i1 %215, label %216, label %308

216:                                              ; preds = %212
  %217 = load ptr, ptr %16, align 8, !tbaa !5
  %218 = load i32, ptr %217, align 4, !tbaa !9
  %219 = icmp eq i32 %218, 0
  br i1 %219, label %224, label %220

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

224:                                              ; preds = %220, %216
  store i32 1, ptr %53, align 4, !tbaa !9
  br label %299

225:                                              ; preds = %220
  %226 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 0
  store i32 1, ptr %226, align 4, !tbaa !9
  %227 = load ptr, ptr %14, align 8, !tbaa !5
  %228 = getelementptr inbounds [2 x ptr], ptr %27, i64 0, i64 0
  store ptr %227, ptr %228, align 16, !tbaa !5
  %229 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 1
  store i32 1, ptr %229, align 4, !tbaa !9
  %230 = load ptr, ptr %15, align 8, !tbaa !5
  %231 = getelementptr inbounds [2 x ptr], ptr %27, i64 0, i64 1
  store ptr %230, ptr %231, align 8, !tbaa !5
  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
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #3
  store i32 2, ptr %58, align 4, !tbaa !9
  %232 = getelementptr inbounds [2 x i8], ptr %37, i64 0, i64 0
  store ptr %232, ptr %60, align 8, !tbaa !5
  store i32 0, ptr %56, align 4, !tbaa !9
  br label %233

233:                                              ; preds = %269, %225
  %234 = load i32, ptr %56, align 4, !tbaa !9
  %235 = load i32, ptr @c__2, align 4, !tbaa !9
  %236 = icmp slt i32 %234, %235
  br i1 %236, label %237, label %272

237:                                              ; preds = %233
  %238 = load i32, ptr %58, align 4, !tbaa !9
  store i32 %238, ptr %57, align 4, !tbaa !9
  %239 = load i32, ptr %56, align 4, !tbaa !9
  %240 = sext i32 %239 to i64
  %241 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 %240
  %242 = load i32, ptr %241, align 4, !tbaa !9
  %243 = load i32, ptr %57, align 4, !tbaa !9
  %244 = icmp slt i32 %242, %243
  br i1 %244, label %245, label %250

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

250:                                              ; preds = %245, %237
  %251 = load i32, ptr %57, align 4, !tbaa !9
  %252 = load i32, ptr %58, align 4, !tbaa !9
  %253 = sub nsw i32 %252, %251
  store i32 %253, ptr %58, align 4, !tbaa !9
  %254 = load i32, ptr %56, align 4, !tbaa !9
  %255 = sext i32 %254 to i64
  %256 = getelementptr inbounds [2 x ptr], ptr %27, i64 0, i64 %255
  %257 = load ptr, ptr %256, align 8, !tbaa !5
  store ptr %257, ptr %59, align 8, !tbaa !5
  br label %258

258:                                              ; preds = %262, %250
  %259 = load i32, ptr %57, align 4, !tbaa !9
  %260 = add nsw i32 %259, -1
  store i32 %260, ptr %57, align 4, !tbaa !9
  %261 = icmp sge i32 %260, 0
  br i1 %261, label %262, label %268

262:                                              ; preds = %258
  %263 = load ptr, ptr %59, align 8, !tbaa !5
  %264 = getelementptr inbounds i8, ptr %263, i32 1
  store ptr %264, ptr %59, align 8, !tbaa !5
  %265 = load i8, ptr %263, align 1, !tbaa !11
  %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
  store i8 %265, ptr %266, align 1, !tbaa !11
  br label %258, !llvm.loop !12

268:                                              ; preds = %258
  br label %269

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

272:                                              ; preds = %233
  br label %273

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

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

280:                                              ; preds = %273
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 8, 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
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #3
  store i32 64, ptr %32, align 4, !tbaa !9
  %281 = getelementptr inbounds [2 x i8], ptr %37, i64 0, i64 0
  %282 = load ptr, ptr %16, align 8, !tbaa !5
  %283 = load ptr, ptr %17, align 8, !tbaa !5
  %284 = load ptr, ptr %18, align 8, !tbaa !5
  %285 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.4, ptr noundef %281, ptr noundef %282, ptr noundef %283, ptr noundef %284, ptr noundef @c_n1, i32 noundef 6, i32 noundef 2)
  store i32 %285, ptr %33, align 4, !tbaa !9
  %286 = load i32, ptr %32, align 4, !tbaa !9
  %287 = load i32, ptr %33, align 4, !tbaa !9
  %288 = icmp sle i32 %286, %287
  br i1 %288, label %289, label %291

289:                                              ; preds = %280
  %290 = load i32, ptr %32, align 4, !tbaa !9
  br label %293

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

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

299:                                              ; preds = %293, %224
  %300 = load i32, ptr %53, align 4, !tbaa !9
  %301 = sitofp i32 %300 to float
  %302 = load ptr, ptr %24, align 8, !tbaa !5
  %303 = getelementptr inbounds %struct.complex, ptr %302, i64 1
  %304 = getelementptr inbounds %struct.complex, ptr %303, i32 0, i32 0
  store float %301, ptr %304, align 4, !tbaa !16
  %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 1
  store float 0.000000e+00, ptr %307, align 4, !tbaa !19
  br label %308

308:                                              ; preds = %299, %212
  %309 = load ptr, ptr %26, align 8, !tbaa !5
  %310 = load i32, ptr %309, align 4, !tbaa !9
  %311 = icmp ne i32 %310, 0
  br i1 %311, label %312, label %317

312:                                              ; preds = %308
  %313 = load ptr, ptr %26, align 8, !tbaa !5
  %314 = load i32, ptr %313, align 4, !tbaa !9
  %315 = sub nsw i32 0, %314
  store i32 %315, ptr %32, align 4, !tbaa !9
  %316 = call i32 @xerbla_(ptr noundef @.str.4, ptr noundef %32, i32 noundef 6)
  store i32 1, ptr %61, align 4
  br label %614

317:                                              ; preds = %308
  %318 = load i32, ptr %54, align 4, !tbaa !9
  %319 = icmp ne i32 %318, 0
  br i1 %319, label %320, label %321

320:                                              ; preds = %317
  store i32 1, ptr %61, align 4
  br label %614

321:                                              ; preds = %317
  br label %322

322:                                              ; preds = %321
  %323 = load ptr, ptr %16, align 8, !tbaa !5
  %324 = load i32, ptr %323, align 4, !tbaa !9
  %325 = icmp eq i32 %324, 0
  br i1 %325, label %330, label %326

326:                                              ; preds = %322
  %327 = load ptr, ptr %17, align 8, !tbaa !5
  %328 = load i32, ptr %327, align 4, !tbaa !9
  %329 = icmp eq i32 %328, 0
  br i1 %329, label %330, label %331

330:                                              ; preds = %326, %322
  store i32 1, ptr %61, align 4
  br label %614

331:                                              ; preds = %326
  store i32 2, ptr %40, align 4, !tbaa !9
  %332 = load i32, ptr %50, align 4, !tbaa !9
  store i32 %332, ptr %52, align 4, !tbaa !9
  %333 = load i32, ptr %46, align 4, !tbaa !9
  %334 = icmp sgt i32 %333, 1
  br i1 %334, label %335, label %424

335:                                              ; preds = %331
  %336 = load i32, ptr %46, align 4, !tbaa !9
  %337 = load ptr, ptr %18, align 8, !tbaa !5
  %338 = load i32, ptr %337, align 4, !tbaa !9
  %339 = icmp slt i32 %336, %338
  br i1 %339, label %340, label %424

340:                                              ; preds = %335
  %341 = load ptr, ptr %25, align 8, !tbaa !5
  %342 = load i32, ptr %341, align 4, !tbaa !9
  %343 = load i32, ptr %50, align 4, !tbaa !9
  %344 = load i32, ptr %46, align 4, !tbaa !9
  %345 = mul nsw i32 %343, %344
  %346 = add nsw i32 %345, 4160
  %347 = icmp slt i32 %342, %346
  br i1 %347, label %348, label %423

348:                                              ; preds = %340
  %349 = load ptr, ptr %25, align 8, !tbaa !5
  %350 = load i32, ptr %349, align 4, !tbaa !9
  %351 = sub nsw i32 %350, 4160
  %352 = load i32, ptr %52, align 4, !tbaa !9
  %353 = sdiv i32 %351, %352
  store i32 %353, ptr %46, align 4, !tbaa !9
  %354 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 0
  store i32 1, ptr %354, align 4, !tbaa !9
  %355 = load ptr, ptr %14, align 8, !tbaa !5
  %356 = getelementptr inbounds [2 x ptr], ptr %27, i64 0, i64 0
  store ptr %355, ptr %356, align 16, !tbaa !5
  %357 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 1
  store i32 1, ptr %357, align 4, !tbaa !9
  %358 = load ptr, ptr %15, align 8, !tbaa !5
  %359 = getelementptr inbounds [2 x ptr], ptr %27, i64 0, i64 1
  store ptr %358, ptr %359, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #3
  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 8, ptr %65) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #3
  store i32 2, ptr %64, align 4, !tbaa !9
  %360 = getelementptr inbounds [2 x i8], ptr %37, i64 0, i64 0
  store ptr %360, ptr %66, align 8, !tbaa !5
  store i32 0, ptr %62, align 4, !tbaa !9
  br label %361

361:                                              ; preds = %397, %348
  %362 = load i32, ptr %62, align 4, !tbaa !9
  %363 = load i32, ptr @c__2, align 4, !tbaa !9
  %364 = icmp slt i32 %362, %363
  br i1 %364, label %365, label %400

365:                                              ; preds = %361
  %366 = load i32, ptr %64, align 4, !tbaa !9
  store i32 %366, ptr %63, align 4, !tbaa !9
  %367 = load i32, ptr %62, align 4, !tbaa !9
  %368 = sext i32 %367 to i64
  %369 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 %368
  %370 = load i32, ptr %369, align 4, !tbaa !9
  %371 = load i32, ptr %63, align 4, !tbaa !9
  %372 = icmp slt i32 %370, %371
  br i1 %372, label %373, label %378

373:                                              ; preds = %365
  %374 = load i32, ptr %62, align 4, !tbaa !9
  %375 = sext i32 %374 to i64
  %376 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 %375
  %377 = load i32, ptr %376, align 4, !tbaa !9
  store i32 %377, ptr %63, align 4, !tbaa !9
  br label %378

378:                                              ; preds = %373, %365
  %379 = load i32, ptr %63, align 4, !tbaa !9
  %380 = load i32, ptr %64, align 4, !tbaa !9
  %381 = sub nsw i32 %380, %379
  store i32 %381, ptr %64, align 4, !tbaa !9
  %382 = load i32, ptr %62, align 4, !tbaa !9
  %383 = sext i32 %382 to i64
  %384 = getelementptr inbounds [2 x ptr], ptr %27, i64 0, i64 %383
  %385 = load ptr, ptr %384, align 8, !tbaa !5
  store ptr %385, ptr %65, align 8, !tbaa !5
  br label %386

386:                                              ; preds = %390, %378
  %387 = load i32, ptr %63, align 4, !tbaa !9
  %388 = add nsw i32 %387, -1
  store i32 %388, ptr %63, align 4, !tbaa !9
  %389 = icmp sge i32 %388, 0
  br i1 %389, label %390, label %396

390:                                              ; preds = %386
  %391 = load ptr, ptr %65, align 8, !tbaa !5
  %392 = getelementptr inbounds i8, ptr %391, i32 1
  store ptr %392, ptr %65, align 8, !tbaa !5
  %393 = load i8, ptr %391, align 1, !tbaa !11
  %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
  store i8 %393, ptr %394, align 1, !tbaa !11
  br label %386, !llvm.loop !20

396:                                              ; preds = %386
  br label %397

397:                                              ; preds = %396
  %398 = load i32, ptr %62, align 4, !tbaa !9
  %399 = add nsw i32 %398, 1
  store i32 %399, ptr %62, align 4, !tbaa !9
  br label %361, !llvm.loop !21

400:                                              ; preds = %361
  br label %401

401:                                              ; preds = %405, %400
  %402 = load i32, ptr %64, align 4, !tbaa !9
  %403 = add nsw i32 %402, -1
  store i32 %403, ptr %64, align 4, !tbaa !9
  %404 = icmp sge i32 %403, 0
  br i1 %404, label %405, label %408

405:                                              ; preds = %401
  %406 = load ptr, ptr %66, align 8, !tbaa !5
  %407 = getelementptr inbounds i8, ptr %406, i32 1
  store ptr %407, ptr %66, align 8, !tbaa !5
  store i8 32, ptr %406, align 1, !tbaa !11
  br label %401, !llvm.loop !22

408:                                              ; preds = %401
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #3
  call void @llvm.lifetime.end.p0(i64 8, 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
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #3
  store i32 2, ptr %32, align 4, !tbaa !9
  %409 = getelementptr inbounds [2 x i8], ptr %37, i64 0, i64 0
  %410 = load ptr, ptr %16, align 8, !tbaa !5
  %411 = load ptr, ptr %17, align 8, !tbaa !5
  %412 = load ptr, ptr %18, align 8, !tbaa !5
  %413 = call i32 @ilaenv_(ptr noundef @c__2, ptr noundef @.str.4, ptr noundef %409, ptr noundef %410, ptr noundef %411, ptr noundef %412, ptr noundef @c_n1, i32 noundef 6, i32 noundef 2)
  store i32 %413, ptr %33, align 4, !tbaa !9
  %414 = load i32, ptr %32, align 4, !tbaa !9
  %415 = load i32, ptr %33, align 4, !tbaa !9
  %416 = icmp sge i32 %414, %415
  br i1 %416, label %417, label %419

417:                                              ; preds = %408
  %418 = load i32, ptr %32, align 4, !tbaa !9
  br label %421

419:                                              ; preds = %408
  %420 = load i32, ptr %33, align 4, !tbaa !9
  br label %421

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

423:                                              ; preds = %421, %340
  br label %424

424:                                              ; preds = %423, %335, %331
  %425 = load i32, ptr %46, align 4, !tbaa !9
  %426 = load i32, ptr %40, align 4, !tbaa !9
  %427 = icmp slt i32 %425, %426
  br i1 %427, label %433, label %428

428:                                              ; preds = %424
  %429 = load i32, ptr %46, align 4, !tbaa !9
  %430 = load ptr, ptr %18, align 8, !tbaa !5
  %431 = load i32, ptr %430, align 4, !tbaa !9
  %432 = icmp sge i32 %429, %431
  br i1 %432, label %433, label %453

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

453:                                              ; preds = %428
  %454 = load i32, ptr %50, align 4, !tbaa !9
  %455 = load i32, ptr %46, align 4, !tbaa !9
  %456 = mul nsw i32 %454, %455
  %457 = add nsw i32 %456, 1
  store i32 %457, ptr %55, align 4, !tbaa !9
  %458 = load i32, ptr %38, align 4, !tbaa !9
  %459 = icmp ne i32 %458, 0
  br i1 %459, label %460, label %463

460:                                              ; preds = %453
  %461 = load i32, ptr %51, align 4, !tbaa !9
  %462 = icmp ne i32 %461, 0
  br i1 %462, label %469, label %463

463:                                              ; preds = %460, %453
  %464 = load i32, ptr %38, align 4, !tbaa !9
  %465 = icmp ne i32 %464, 0
  br i1 %465, label %473, label %466

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

469:                                              ; preds = %466, %460
  store i32 1, ptr %42, align 4, !tbaa !9
  %470 = load ptr, ptr %18, align 8, !tbaa !5
  %471 = load i32, ptr %470, align 4, !tbaa !9
  store i32 %471, ptr %43, align 4, !tbaa !9
  %472 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %472, ptr %44, align 4, !tbaa !9
  br label %484

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

484:                                              ; preds = %473, %469
  %485 = load i32, ptr %38, align 4, !tbaa !9
  %486 = icmp ne i32 %485, 0
  br i1 %486, label %487, label %490

487:                                              ; preds = %484
  %488 = load ptr, ptr %17, align 8, !tbaa !5
  %489 = load i32, ptr %488, align 4, !tbaa !9
  store i32 %489, ptr %48, align 4, !tbaa !9
  br label %493

490:                                              ; preds = %484
  %491 = load ptr, ptr %16, align 8, !tbaa !5
  %492 = load i32, ptr %491, align 4, !tbaa !9
  store i32 %492, ptr %47, align 4, !tbaa !9
  br label %493

493:                                              ; preds = %490, %487
  %494 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %494, ptr %32, align 4, !tbaa !9
  %495 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %495, ptr %33, align 4, !tbaa !9
  %496 = load i32, ptr %42, align 4, !tbaa !9
  store i32 %496, ptr %39, align 4, !tbaa !9
  br label %497

497:                                              ; preds = %600, %493
  %498 = load i32, ptr %33, align 4, !tbaa !9
  %499 = icmp slt i32 %498, 0
  br i1 %499, label %500, label %505

500:                                              ; preds = %497
  %501 = load i32, ptr %39, align 4, !tbaa !9
  %502 = load i32, ptr %32, align 4, !tbaa !9
  %503 = icmp sge i32 %501, %502
  %504 = zext i1 %503 to i32
  br label %510

505:                                              ; preds = %497
  %506 = load i32, ptr %39, align 4, !tbaa !9
  %507 = load i32, ptr %32, align 4, !tbaa !9
  %508 = icmp sle i32 %506, %507
  %509 = zext i1 %508 to i32
  br label %510

510:                                              ; preds = %505, %500
  %511 = phi i32 [ %504, %500 ], [ %509, %505 ]
  %512 = icmp ne i32 %511, 0
  br i1 %512, label %513, label %604

513:                                              ; preds = %510
  %514 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %514, ptr %35, align 4, !tbaa !9
  %515 = load ptr, ptr %18, align 8, !tbaa !5
  %516 = load i32, ptr %515, align 4, !tbaa !9
  %517 = load i32, ptr %39, align 4, !tbaa !9
  %518 = sub nsw i32 %516, %517
  %519 = add nsw i32 %518, 1
  store i32 %519, ptr %36, align 4, !tbaa !9
  %520 = load i32, ptr %35, align 4, !tbaa !9
  %521 = load i32, ptr %36, align 4, !tbaa !9
  %522 = icmp sle i32 %520, %521
  br i1 %522, label %523, label %525

523:                                              ; preds = %513
  %524 = load i32, ptr %35, align 4, !tbaa !9
  br label %527

525:                                              ; preds = %513
  %526 = load i32, ptr %36, align 4, !tbaa !9
  br label %527

527:                                              ; preds = %525, %523
  %528 = phi i32 [ %524, %523 ], [ %526, %525 ]
  store i32 %528, ptr %45, align 4, !tbaa !9
  %529 = load i32, ptr %49, align 4, !tbaa !9
  %530 = load ptr, ptr %18, align 8, !tbaa !5
  %531 = load i32, ptr %530, align 4, !tbaa !9
  %532 = sub nsw i32 %529, %531
  %533 = load i32, ptr %39, align 4, !tbaa !9
  %534 = add nsw i32 %532, %533
  %535 = load i32, ptr %45, align 4, !tbaa !9
  %536 = add nsw i32 %534, %535
  %537 = sub nsw i32 %536, 1
  store i32 %537, ptr %35, align 4, !tbaa !9
  %538 = load ptr, ptr %19, align 8, !tbaa !5
  %539 = load i32, ptr %39, align 4, !tbaa !9
  %540 = load i32, ptr %28, align 4, !tbaa !9
  %541 = mul nsw i32 %539, %540
  %542 = add nsw i32 %541, 1
  %543 = sext i32 %542 to i64
  %544 = getelementptr inbounds %struct.complex, ptr %538, i64 %543
  %545 = load ptr, ptr %20, align 8, !tbaa !5
  %546 = load ptr, ptr %21, align 8, !tbaa !5
  %547 = load i32, ptr %39, align 4, !tbaa !9
  %548 = sext i32 %547 to i64
  %549 = getelementptr inbounds %struct.complex, ptr %546, i64 %548
  %550 = load ptr, ptr %24, align 8, !tbaa !5
  %551 = load i32, ptr %55, align 4, !tbaa !9
  %552 = sext i32 %551 to i64
  %553 = getelementptr inbounds %struct.complex, ptr %550, i64 %552
  call void @clarft_(ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef %35, ptr noundef %45, ptr noundef %544, ptr noundef %545, ptr noundef %549, ptr noundef %553, ptr noundef @c__65)
  %554 = load i32, ptr %38, align 4, !tbaa !9
  %555 = icmp ne i32 %554, 0
  br i1 %555, label %556, label %567

556:                                              ; preds = %527
  %557 = load ptr, ptr %16, align 8, !tbaa !5
  %558 = load i32, ptr %557, align 4, !tbaa !9
  %559 = load ptr, ptr %18, align 8, !tbaa !5
  %560 = load i32, ptr %559, align 4, !tbaa !9
  %561 = sub nsw i32 %558, %560
  %562 = load i32, ptr %39, align 4, !tbaa !9
  %563 = add nsw i32 %561, %562
  %564 = load i32, ptr %45, align 4, !tbaa !9
  %565 = add nsw i32 %563, %564
  %566 = sub nsw i32 %565, 1
  store i32 %566, ptr %47, align 4, !tbaa !9
  br label %578

567:                                              ; preds = %527
  %568 = load ptr, ptr %17, align 8, !tbaa !5
  %569 = load i32, ptr %568, align 4, !tbaa !9
  %570 = load ptr, ptr %18, align 8, !tbaa !5
  %571 = load i32, ptr %570, align 4, !tbaa !9
  %572 = sub nsw i32 %569, %571
  %573 = load i32, ptr %39, align 4, !tbaa !9
  %574 = add nsw i32 %572, %573
  %575 = load i32, ptr %45, align 4, !tbaa !9
  %576 = add nsw i32 %574, %575
  %577 = sub nsw i32 %576, 1
  store i32 %577, ptr %48, align 4, !tbaa !9
  br label %578

578:                                              ; preds = %567, %556
  %579 = load ptr, ptr %14, align 8, !tbaa !5
  %580 = load ptr, ptr %15, align 8, !tbaa !5
  %581 = load ptr, ptr %19, align 8, !tbaa !5
  %582 = load i32, ptr %39, align 4, !tbaa !9
  %583 = load i32, ptr %28, align 4, !tbaa !9
  %584 = mul nsw i32 %582, %583
  %585 = add nsw i32 %584, 1
  %586 = sext i32 %585 to i64
  %587 = getelementptr inbounds %struct.complex, ptr %581, i64 %586
  %588 = load ptr, ptr %20, align 8, !tbaa !5
  %589 = load ptr, ptr %24, align 8, !tbaa !5
  %590 = load i32, ptr %55, align 4, !tbaa !9
  %591 = sext i32 %590 to i64
  %592 = getelementptr inbounds %struct.complex, ptr %589, i64 %591
  %593 = load ptr, ptr %22, align 8, !tbaa !5
  %594 = load i32, ptr %31, align 4, !tbaa !9
  %595 = sext i32 %594 to i64
  %596 = getelementptr inbounds %struct.complex, ptr %593, i64 %595
  %597 = load ptr, ptr %23, align 8, !tbaa !5
  %598 = load ptr, ptr %24, align 8, !tbaa !5
  %599 = getelementptr inbounds %struct.complex, ptr %598, i64 1
  call void @clarfb_(ptr noundef %579, ptr noundef %580, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef %47, ptr noundef %48, ptr noundef %45, ptr noundef %587, ptr noundef %588, ptr noundef %592, ptr noundef @c__65, ptr noundef %596, ptr noundef %597, ptr noundef %599, ptr noundef %52)
  br label %600

600:                                              ; preds = %578
  %601 = load i32, ptr %33, align 4, !tbaa !9
  %602 = load i32, ptr %39, align 4, !tbaa !9
  %603 = add nsw i32 %602, %601
  store i32 %603, ptr %39, align 4, !tbaa !9
  br label %497, !llvm.loop !23

604:                                              ; preds = %510
  br label %605

605:                                              ; preds = %604, %433
  %606 = load i32, ptr %53, align 4, !tbaa !9
  %607 = sitofp i32 %606 to float
  %608 = load ptr, ptr %24, align 8, !tbaa !5
  %609 = getelementptr inbounds %struct.complex, ptr %608, i64 1
  %610 = getelementptr inbounds %struct.complex, ptr %609, i32 0, i32 0
  store float %607, ptr %610, align 4, !tbaa !16
  %611 = load ptr, ptr %24, align 8, !tbaa !5
  %612 = getelementptr inbounds %struct.complex, ptr %611, i64 1
  %613 = getelementptr inbounds %struct.complex, ptr %612, i32 0, i32 1
  store float 0.000000e+00, ptr %613, align 4, !tbaa !19
  store i32 1, ptr %61, align 4
  br label %614

614:                                              ; preds = %605, %330, %320, %312
  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 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 @cunm2l_(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 [11 x i8], align 1
@c__65 = external hidden global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local void @cunmql_(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
  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
  %24 = load i32, ptr %6, align 4, !tbaa !5
  %narrow = xor i32 %24, -1
  %25 = sext i32 %narrow to i64
  %26 = getelementptr inbounds %struct.complex, ptr %5, i64 %25
  %27 = getelementptr inbounds i8, ptr %7, i64 -8
  store i32 0, ptr %12, align 4, !tbaa !5
  %28 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %29 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #5
  %30 = load i32, ptr %11, align 4, !tbaa !5
  %31 = icmp eq i32 %30, -1
  %32 = icmp ne i32 %28, 0
  br i1 %32, label %.thread, label %35

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

35:                                               ; preds = %13
  %36 = load i32, ptr %3, align 4, !tbaa !5
  %37 = load i32, ptr %2, align 4, !tbaa !5
  %spec.select240 = tail call i32 @llvm.smax.i32(i32 %37, i32 1)
  %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 = %.thread, %35
  %.0209251 = phi i32 [ %spec.select, %.thread ], [ %spec.select240, %35 ]
  %.0210249 = phi i32 [ %33, %.thread ], [ %36, %35 ]
  %.not232 = icmp eq i32 %29, 0
  br i1 %.not232, label %40, label %42

40:                                               ; preds = %39
  %41 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #5
  %.not233 = icmp eq i32 %41, 0
  br i1 %.not233, 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, %.0210249
  %or.cond241 = select i1 %50, i1 true, i1 %51
  br i1 %or.cond241, label %.thread259.sink.split, label %52

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

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

59:                                               ; preds = %56
  %60 = load i32, ptr %11, align 4, !tbaa !5
  %61 = icmp sge i32 %60, %.0209251
  %or.cond = select i1 %61, i1 true, i1 %31
  br i1 %or.cond, label %62, label %.thread259.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 %.thread259

64:                                               ; preds = %62
  %65 = icmp eq i32 %43, 0
  %66 = icmp eq i32 %46, 0
  %or.cond360 = or i1 %65, %66
  br i1 %or.cond360, 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.ph298, label %.lr.ph303.preheader

.preheader290:                                    ; preds = %._crit_edge
  %72 = icmp sgt i32 %77, 0
  br i1 %72, label %.lr.ph303.preheader, label %.thread252

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

.lr.ph298:                                        ; preds = %67, %._crit_edge
  %74 = phi i32 [ %92, %._crit_edge ], [ %70, %67 ]
  %indvars.iv = phi i64 [ %indvars.iv.next, %._crit_edge ], [ 0, %67 ]
  %.0198296 = phi ptr [ %.1199.lcssa, %._crit_edge ], [ %18, %67 ]
  %.0202295 = 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.select243 = tail call i32 @llvm.smin.i32(i32 %76, i32 %.0202295)
  %77 = sub nsw i32 %.0202295, %spec.select243
  %78 = icmp sgt i32 %spec.select243, 0
  br i1 %78, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %.lr.ph298
  %.0198296364 = ptrtoint ptr %.0198296 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.select243, -1
  %82 = zext nneg i32 %81 to i64
  %scevgep = getelementptr i8, ptr %.0198296, i64 %82
  %83 = zext nneg i32 %spec.select243 to i64
  %min.iters.check = icmp ult i32 %spec.select243, 32
  %84 = ptrtoint ptr %80 to i64
  %85 = sub i64 %.0198296364, %84
  %diff.check = icmp ult i64 %85, 32
  %or.cond395 = select i1 %min.iters.check, i1 true, i1 %diff.check
  br i1 %or.cond395, label %.lr.ph.preheader401, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph.preheader
  %n.vec = and i64 %83, 2147483616
  %ind.end = getelementptr i8, ptr %.0198296, i64 %n.vec
  %ind.end365 = 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 %.0198296, i64 %index
  %next.gep368 = getelementptr i8, ptr %80, i64 %index
  %86 = getelementptr i8, ptr %next.gep368, i64 16
  %wide.load = load <16 x i8>, ptr %next.gep368, align 1, !tbaa !11
  %wide.load370 = 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.load370, 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.preheader401

.lr.ph.preheader401:                              ; preds = %middle.block, %.lr.ph.preheader
  %.1199293.ph = phi ptr [ %.0198296, %.lr.ph.preheader ], [ %ind.end, %middle.block ]
  %.0201292.ph = phi ptr [ %80, %.lr.ph.preheader ], [ %ind.end365, %middle.block ]
  br label %.lr.ph

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

._crit_edge.loopexit:                             ; preds = %.lr.ph, %middle.block
  %.lcssa362 = 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.ph298
  %92 = phi i32 [ %74, %.lr.ph298 ], [ %.pre, %._crit_edge.loopexit ]
  %.1199.lcssa = phi ptr [ %.0198296, %.lr.ph298 ], [ %.lcssa362, %._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.ph298, label %.preheader290, !llvm.loop !17

.thread252:                                       ; preds = %.preheader290, %.lr.ph303.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, %.0209251
  %98 = add nsw i32 %97, 4160
  %.pr258.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
  %.not235 = icmp eq i32 %.pr258.pr.pr.pre, 0
  br i1 %.not235, label %104, label %.thread259

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

.thread259:                                       ; preds = %.thread259.sink.split, %62, %.thread252
  %101 = phi i32 [ %.pr258.pr.pr.pre, %.thread252 ], [ %.pr, %62 ], [ %.sink, %.thread259.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 %207

.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, %.thread252
  %.0207286 = phi i32 [ %98, %.thread252 ], [ 1, %.sink.split ]
  %.0211285 = phi i32 [ %96, %.thread252 ], [ undef, %.sink.split ]
  br i1 %31, label %207, label %105

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

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

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

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

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

121:                                              ; preds = %116
  %122 = add nsw i32 %117, -4160
  %123 = sdiv i32 %122, %.0209251
  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.ph316, label %.lr.ph321.preheader

.preheader:                                       ; preds = %._crit_edge310
  %128 = icmp sgt i32 %133, 0
  br i1 %128, label %.lr.ph321.preheader, label %._crit_edge322

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

.lr.ph316:                                        ; preds = %121, %._crit_edge310
  %130 = phi i32 [ %148, %._crit_edge310 ], [ %126, %121 ]
  %indvars.iv335 = phi i64 [ %indvars.iv.next336, %._crit_edge310 ], [ 0, %121 ]
  %.0314 = phi ptr [ %.1.lcssa, %._crit_edge310 ], [ %18, %121 ]
  %.0193313 = phi i32 [ %133, %._crit_edge310 ], [ 2, %121 ]
  %131 = getelementptr inbounds [2 x i32], ptr %16, i64 0, i64 %indvars.iv335
  %132 = load i32, ptr %131, align 4, !tbaa !5
  %spec.select244 = call i32 @llvm.smin.i32(i32 %132, i32 %.0193313)
  %133 = sub nsw i32 %.0193313, %spec.select244
  %134 = icmp sgt i32 %spec.select244, 0
  br i1 %134, label %.lr.ph309.preheader, label %._crit_edge310

.lr.ph309.preheader:                              ; preds = %.lr.ph316
  %.0314372 = ptrtoint ptr %.0314 to i64
  %135 = getelementptr inbounds [2 x ptr], ptr %14, i64 0, i64 %indvars.iv335
  %136 = load ptr, ptr %135, align 8, !tbaa !9
  %137 = add nsw i32 %spec.select244, -1
  %138 = zext nneg i32 %137 to i64
  %scevgep333 = getelementptr i8, ptr %.0314, i64 %138
  %139 = zext nneg i32 %spec.select244 to i64
  %min.iters.check376 = icmp ult i32 %spec.select244, 32
  %140 = ptrtoint ptr %136 to i64
  %141 = sub i64 %.0314372, %140
  %diff.check373 = icmp ult i64 %141, 32
  %or.cond397 = select i1 %min.iters.check376, i1 true, i1 %diff.check373
  br i1 %or.cond397, label %.lr.ph309.preheader398, label %vector.ph377

vector.ph377:                                     ; preds = %.lr.ph309.preheader
  %n.vec379 = and i64 %139, 2147483616
  %ind.end380 = getelementptr i8, ptr %.0314, i64 %n.vec379
  %ind.end382 = getelementptr i8, ptr %136, i64 %n.vec379
  br label %vector.body384

vector.body384:                                   ; preds = %vector.body384, %vector.ph377
  %index385 = phi i64 [ 0, %vector.ph377 ], [ %index.next392, %vector.body384 ]
  %next.gep386 = getelementptr i8, ptr %.0314, i64 %index385
  %next.gep388 = getelementptr i8, ptr %136, i64 %index385
  %142 = getelementptr i8, ptr %next.gep388, i64 16
  %wide.load390 = load <16 x i8>, ptr %next.gep388, align 1, !tbaa !11
  %wide.load391 = load <16 x i8>, ptr %142, align 1, !tbaa !11
  %143 = getelementptr i8, ptr %next.gep386, i64 16
  store <16 x i8> %wide.load390, ptr %next.gep386, align 1, !tbaa !11
  store <16 x i8> %wide.load391, ptr %143, align 1, !tbaa !11
  %index.next392 = add nuw i64 %index385, 32
  %144 = icmp eq i64 %index.next392, %n.vec379
  br i1 %144, label %middle.block374, label %vector.body384, !llvm.loop !23

middle.block374:                                  ; preds = %vector.body384
  %cmp.n393 = icmp eq i64 %n.vec379, %139
  br i1 %cmp.n393, label %._crit_edge310.loopexit, label %.lr.ph309.preheader398

.lr.ph309.preheader398:                           ; preds = %middle.block374, %.lr.ph309.preheader
  %.1307.ph = phi ptr [ %.0314, %.lr.ph309.preheader ], [ %ind.end380, %middle.block374 ]
  %.0192306.ph = phi ptr [ %136, %.lr.ph309.preheader ], [ %ind.end382, %middle.block374 ]
  br label %.lr.ph309

.lr.ph309:                                        ; preds = %.lr.ph309.preheader398, %.lr.ph309
  %.1307 = phi ptr [ %147, %.lr.ph309 ], [ %.1307.ph, %.lr.ph309.preheader398 ]
  %.0192306 = phi ptr [ %145, %.lr.ph309 ], [ %.0192306.ph, %.lr.ph309.preheader398 ]
  %145 = getelementptr inbounds i8, ptr %.0192306, i64 1
  %146 = load i8, ptr %.0192306, align 1, !tbaa !11
  %147 = getelementptr inbounds i8, ptr %.1307, i64 1
  store i8 %146, ptr %.1307, align 1, !tbaa !11
  %exitcond334.not = icmp eq ptr %.1307, %scevgep333
  br i1 %exitcond334.not, label %._crit_edge310.loopexit, label %.lr.ph309, !llvm.loop !24

._crit_edge310.loopexit:                          ; preds = %.lr.ph309, %middle.block374
  %.lcssa = phi ptr [ %ind.end380, %middle.block374 ], [ %147, %.lr.ph309 ]
  %.pre342 = load i32, ptr @c__2, align 4, !tbaa !5
  br label %._crit_edge310

._crit_edge310:                                   ; preds = %._crit_edge310.loopexit, %.lr.ph316
  %148 = phi i32 [ %130, %.lr.ph316 ], [ %.pre342, %._crit_edge310.loopexit ]
  %.1.lcssa = phi ptr [ %.0314, %.lr.ph316 ], [ %.lcssa, %._crit_edge310.loopexit ]
  %indvars.iv.next336 = add nuw nsw i64 %indvars.iv335, 1
  %149 = sext i32 %148 to i64
  %150 = icmp slt i64 %indvars.iv.next336, %149
  br i1 %150, label %.lr.ph316, label %.preheader, !llvm.loop !25

._crit_edge322:                                   ; preds = %.lr.ph321.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 %.thread270, label %._crit_edge322..thread266_crit_edge

._crit_edge322..thread266_crit_edge:              ; preds = %._crit_edge322
  %.pre343 = load i32, ptr %4, align 4, !tbaa !5
  br label %.thread266

.thread266:                                       ; preds = %._crit_edge322..thread266_crit_edge, %113, %116
  %154 = phi i32 [ %.pre343, %._crit_edge322..thread266_crit_edge ], [ %114, %116 ], [ %114, %113 ]
  %.2213269 = phi i32 [ %123, %._crit_edge322..thread266_crit_edge ], [ %.0211285, %116 ], [ %.0211285, %113 ]
  %.fr238 = freeze i32 %154
  %.not237 = icmp slt i32 %.2213269, %.fr238
  br i1 %.not237, label %155, label %.thread270

.thread270:                                       ; preds = %111, %.thread266, %._crit_edge322
  call void @cunm2l_(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 = %.thread266
  %156 = mul nsw i32 %.2213269, %.0209251
  %157 = icmp ne i32 %29, 0
  %or.cond245 = xor i1 %32, %157
  br i1 %or.cond245, label %158, label %163

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

163:                                              ; preds = %155, %158
  %.0216 = phi i32 [ %161, %158 ], [ 1, %155 ]
  %164 = phi i32 [ 1, %158 ], [ %.fr238, %155 ]
  %.0214 = phi i32 [ %162, %158 ], [ %.2213269, %155 ]
  br i1 %32, 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
  %170 = icmp slt i32 %.0214, 0
  %invariant.gep = getelementptr i8, ptr %26, i64 8
  %171 = icmp sge i32 %.0216, %164
  %172 = icmp sle i32 %.0216, %164
  %.in325 = select i1 %170, i1 %171, i1 %172
  br i1 %.in325, label %.lr.ph328, label %.loopexit

.lr.ph328:                                        ; preds = %169
  %173 = add i32 %.0210249, -1
  %174 = sext i32 %156 to i64
  %gep324 = getelementptr %struct.complex, ptr %10, i64 %174
  %175 = sext i32 %.0216 to i64
  %176 = sext i32 %.0214 to i64
  %177 = sext i32 %24 to i64
  %178 = sext i32 %164 to i64
  br label %179

179:                                              ; preds = %.lr.ph328, %202
  %indvars.iv338 = phi i64 [ %175, %.lr.ph328 ], [ %indvars.iv.next339, %202 ]
  %180 = load i32, ptr %4, align 4, !tbaa !5
  %181 = trunc nsw i64 %indvars.iv338 to i32
  %reass.sub = sub i32 %180, %181
  %182 = add i32 %reass.sub, 1
  %183 = call i32 @llvm.smin.i32(i32 %.2213269, 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
  %187 = mul nsw i64 %indvars.iv338, %177
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %187
  %188 = getelementptr inbounds %struct.complex, ptr %27, i64 %indvars.iv338
  call void @clarft_(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull %17, ptr noundef nonnull %20, ptr noundef %gep, ptr noundef nonnull %6, ptr noundef nonnull %188, ptr noundef %gep324, ptr noundef nonnull @c__65) #5
  %189 = load i32, ptr %4, align 4, !tbaa !5
  %190 = load i32, ptr %20, align 4, !tbaa !5
  %191 = add i32 %181, -1
  br i1 %32, label %192, label %197

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

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

202:                                              ; preds = %197, %192
  call void @clarfb_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull %20, ptr noundef %gep, ptr noundef nonnull %6, ptr noundef %gep324, ptr noundef nonnull @c__65, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull %23) #5
  %indvars.iv.next339 = add nsw i64 %indvars.iv338, %176
  %203 = icmp sge i64 %indvars.iv.next339, %178
  %204 = icmp sle i64 %indvars.iv.next339, %178
  %.in = select i1 %170, i1 %203, i1 %204
  br i1 %.in, label %179, label %.loopexit, !llvm.loop !26

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

207:                                              ; preds = %105, %108, %104, %.loopexit, %.thread259
  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 @cunm2l_(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