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

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

@c__1 = external hidden global i32, align 4
@.str = external hidden unnamed_addr constant [9 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c_n1 = external hidden global i32, align 4
@.str.2 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [13 x i8], align 1
@c__3 = external hidden global i32, align 4
@c__2 = external hidden global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local i32 @cgeqp3rk_(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, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16, ptr noundef %17) #0 {
  %19 = alloca i32, align 4
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca float, align 4
  %43 = alloca float, align 4
  %44 = alloca %struct.complex, align 4
  %45 = alloca float, 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 float, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca float, align 4
  %61 = alloca i32, align 4
  %62 = alloca i32, align 4
  %63 = alloca i32, align 4
  %64 = alloca i32, align 4
  %65 = alloca float, align 4
  %66 = alloca i32, align 4
  %67 = alloca i32, align 4
  %68 = alloca i32, align 4
  store ptr %0, ptr %20, align 8, !tbaa !5
  store ptr %1, ptr %21, align 8, !tbaa !5
  store ptr %2, ptr %22, align 8, !tbaa !5
  store ptr %3, ptr %23, align 8, !tbaa !5
  store ptr %4, ptr %24, align 8, !tbaa !5
  store ptr %5, ptr %25, align 8, !tbaa !5
  store ptr %6, ptr %26, align 8, !tbaa !5
  store ptr %7, ptr %27, align 8, !tbaa !5
  store ptr %8, ptr %28, align 8, !tbaa !5
  store ptr %9, ptr %29, align 8, !tbaa !5
  store ptr %10, ptr %30, align 8, !tbaa !5
  store ptr %11, ptr %31, align 8, !tbaa !5
  store ptr %12, ptr %32, align 8, !tbaa !5
  store ptr %13, ptr %33, align 8, !tbaa !5
  store ptr %14, ptr %34, align 8, !tbaa !5
  store ptr %15, ptr %35, align 8, !tbaa !5
  store ptr %16, ptr %36, align 8, !tbaa !5
  store ptr %17, ptr %37, align 8, !tbaa !5
  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 8, 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
  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 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 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 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
  %69 = load ptr, ptr %27, align 8, !tbaa !5
  %70 = load i32, ptr %69, align 4, !tbaa !9
  store i32 %70, ptr %38, align 4, !tbaa !9
  %71 = load i32, ptr %38, align 4, !tbaa !9
  %72 = mul nsw i32 %71, 1
  %73 = add nsw i32 1, %72
  store i32 %73, ptr %39, align 4, !tbaa !9
  %74 = load i32, ptr %39, align 4, !tbaa !9
  %75 = load ptr, ptr %26, align 8, !tbaa !5
  %76 = sext i32 %74 to i64
  %77 = sub i64 0, %76
  %78 = getelementptr inbounds %struct.complex, ptr %75, i64 %77
  store ptr %78, ptr %26, align 8, !tbaa !5
  %79 = load ptr, ptr %31, align 8, !tbaa !5
  %80 = getelementptr inbounds i32, ptr %79, i32 -1
  store ptr %80, ptr %31, align 8, !tbaa !5
  %81 = load ptr, ptr %32, align 8, !tbaa !5
  %82 = getelementptr inbounds %struct.complex, ptr %81, i32 -1
  store ptr %82, ptr %32, align 8, !tbaa !5
  %83 = load ptr, ptr %33, align 8, !tbaa !5
  %84 = getelementptr inbounds %struct.complex, ptr %83, i32 -1
  store ptr %84, ptr %33, align 8, !tbaa !5
  %85 = load ptr, ptr %35, align 8, !tbaa !5
  %86 = getelementptr inbounds float, ptr %85, i32 -1
  store ptr %86, ptr %35, align 8, !tbaa !5
  %87 = load ptr, ptr %36, align 8, !tbaa !5
  %88 = getelementptr inbounds i32, ptr %87, i32 -1
  store ptr %88, ptr %36, align 8, !tbaa !5
  %89 = load ptr, ptr %37, align 8, !tbaa !5
  store i32 0, ptr %89, align 4, !tbaa !9
  %90 = load ptr, ptr %34, align 8, !tbaa !5
  %91 = load i32, ptr %90, align 4, !tbaa !9
  %92 = icmp eq i32 %91, -1
  %93 = zext i1 %92 to i32
  store i32 %93, ptr %63, align 4, !tbaa !9
  %94 = load ptr, ptr %20, align 8, !tbaa !5
  %95 = load i32, ptr %94, align 4, !tbaa !9
  %96 = icmp slt i32 %95, 0
  br i1 %96, label %97, label %99

97:                                               ; preds = %18
  %98 = load ptr, ptr %37, align 8, !tbaa !5
  store i32 -1, ptr %98, align 4, !tbaa !9
  br label %150

99:                                               ; preds = %18
  %100 = load ptr, ptr %21, align 8, !tbaa !5
  %101 = load i32, ptr %100, align 4, !tbaa !9
  %102 = icmp slt i32 %101, 0
  br i1 %102, label %103, label %105

103:                                              ; preds = %99
  %104 = load ptr, ptr %37, align 8, !tbaa !5
  store i32 -2, ptr %104, align 4, !tbaa !9
  br label %149

105:                                              ; preds = %99
  %106 = load ptr, ptr %22, align 8, !tbaa !5
  %107 = load i32, ptr %106, align 4, !tbaa !9
  %108 = icmp slt i32 %107, 0
  br i1 %108, label %109, label %111

109:                                              ; preds = %105
  %110 = load ptr, ptr %37, align 8, !tbaa !5
  store i32 -3, ptr %110, align 4, !tbaa !9
  br label %148

111:                                              ; preds = %105
  %112 = load ptr, ptr %23, align 8, !tbaa !5
  %113 = load i32, ptr %112, align 4, !tbaa !9
  %114 = icmp slt i32 %113, 0
  br i1 %114, label %115, label %117

115:                                              ; preds = %111
  %116 = load ptr, ptr %37, align 8, !tbaa !5
  store i32 -4, ptr %116, align 4, !tbaa !9
  br label %147

117:                                              ; preds = %111
  %118 = load ptr, ptr %24, align 8, !tbaa !5
  %119 = call i32 @sisnan_(ptr noundef %118)
  %120 = icmp ne i32 %119, 0
  br i1 %120, label %121, label %123

121:                                              ; preds = %117
  %122 = load ptr, ptr %37, align 8, !tbaa !5
  store i32 -5, ptr %122, align 4, !tbaa !9
  br label %146

123:                                              ; preds = %117
  %124 = load ptr, ptr %25, align 8, !tbaa !5
  %125 = call i32 @sisnan_(ptr noundef %124)
  %126 = icmp ne i32 %125, 0
  br i1 %126, label %127, label %129

127:                                              ; preds = %123
  %128 = load ptr, ptr %37, align 8, !tbaa !5
  store i32 -6, ptr %128, align 4, !tbaa !9
  br label %145

129:                                              ; preds = %123
  %130 = load ptr, ptr %27, align 8, !tbaa !5
  %131 = load i32, ptr %130, align 4, !tbaa !9
  %132 = load ptr, ptr %20, align 8, !tbaa !5
  %133 = load i32, ptr %132, align 4, !tbaa !9
  %134 = icmp sge i32 1, %133
  br i1 %134, label %135, label %136

135:                                              ; preds = %129
  br label %139

136:                                              ; preds = %129
  %137 = load ptr, ptr %20, align 8, !tbaa !5
  %138 = load i32, ptr %137, align 4, !tbaa !9
  br label %139

139:                                              ; preds = %136, %135
  %140 = phi i32 [ 1, %135 ], [ %138, %136 ]
  %141 = icmp slt i32 %131, %140
  br i1 %141, label %142, label %144

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

144:                                              ; preds = %142, %139
  br label %145

145:                                              ; preds = %144, %127
  br label %146

146:                                              ; preds = %145, %121
  br label %147

147:                                              ; preds = %146, %115
  br label %148

148:                                              ; preds = %147, %109
  br label %149

149:                                              ; preds = %148, %103
  br label %150

150:                                              ; preds = %149, %97
  %151 = load ptr, ptr %37, align 8, !tbaa !5
  %152 = load i32, ptr %151, align 4, !tbaa !9
  %153 = icmp eq i32 %152, 0
  br i1 %153, label %154, label %218

154:                                              ; preds = %150
  %155 = load ptr, ptr %20, align 8, !tbaa !5
  %156 = load i32, ptr %155, align 4, !tbaa !9
  %157 = load ptr, ptr %21, align 8, !tbaa !5
  %158 = load i32, ptr %157, align 4, !tbaa !9
  %159 = icmp sle i32 %156, %158
  br i1 %159, label %160, label %163

160:                                              ; preds = %154
  %161 = load ptr, ptr %20, align 8, !tbaa !5
  %162 = load i32, ptr %161, align 4, !tbaa !9
  br label %166

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

166:                                              ; preds = %163, %160
  %167 = phi i32 [ %162, %160 ], [ %165, %163 ]
  store i32 %167, ptr %54, align 4, !tbaa !9
  %168 = load i32, ptr %54, align 4, !tbaa !9
  %169 = icmp eq i32 %168, 0
  br i1 %169, label %170, label %171

170:                                              ; preds = %166
  store i32 1, ptr %66, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  br label %193

171:                                              ; preds = %166
  %172 = load ptr, ptr %21, align 8, !tbaa !5
  %173 = load i32, ptr %172, align 4, !tbaa !9
  %174 = load ptr, ptr %22, align 8, !tbaa !5
  %175 = load i32, ptr %174, align 4, !tbaa !9
  %176 = add nsw i32 %173, %175
  %177 = sub nsw i32 %176, 1
  store i32 %177, ptr %66, align 4, !tbaa !9
  %178 = load ptr, ptr %20, align 8, !tbaa !5
  %179 = load ptr, ptr %21, align 8, !tbaa !5
  %180 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %178, ptr noundef %179, ptr noundef @c_n1, ptr noundef @c_n1, i32 noundef 8, i32 noundef 1)
  store i32 %180, ptr %57, align 4, !tbaa !9
  %181 = load ptr, ptr %21, align 8, !tbaa !5
  %182 = load i32, ptr %181, align 4, !tbaa !9
  %183 = shl i32 %182, 1
  %184 = load i32, ptr %57, align 4, !tbaa !9
  %185 = load ptr, ptr %21, align 8, !tbaa !5
  %186 = load i32, ptr %185, align 4, !tbaa !9
  %187 = load ptr, ptr %22, align 8, !tbaa !5
  %188 = load i32, ptr %187, align 4, !tbaa !9
  %189 = add nsw i32 %186, %188
  %190 = add nsw i32 %189, 1
  %191 = mul nsw i32 %184, %190
  %192 = add nsw i32 %183, %191
  store i32 %192, ptr %62, align 4, !tbaa !9
  br label %193

193:                                              ; preds = %171, %170
  %194 = load i32, ptr %62, align 4, !tbaa !9
  %195 = sitofp i32 %194 to float
  %196 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 0
  store float %195, ptr %196, align 4, !tbaa !11
  %197 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 1
  store float 0.000000e+00, ptr %197, align 4, !tbaa !14
  %198 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 0
  %199 = load float, ptr %198, align 4, !tbaa !11
  %200 = load ptr, ptr %33, align 8, !tbaa !5
  %201 = getelementptr inbounds %struct.complex, ptr %200, i64 1
  %202 = getelementptr inbounds %struct.complex, ptr %201, i32 0, i32 0
  store float %199, ptr %202, align 4, !tbaa !11
  %203 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 1
  %204 = load float, ptr %203, align 4, !tbaa !14
  %205 = load ptr, ptr %33, align 8, !tbaa !5
  %206 = getelementptr inbounds %struct.complex, ptr %205, i64 1
  %207 = getelementptr inbounds %struct.complex, ptr %206, i32 0, i32 1
  store float %204, ptr %207, align 4, !tbaa !14
  %208 = load ptr, ptr %34, align 8, !tbaa !5
  %209 = load i32, ptr %208, align 4, !tbaa !9
  %210 = load i32, ptr %66, align 4, !tbaa !9
  %211 = icmp slt i32 %209, %210
  br i1 %211, label %212, label %217

212:                                              ; preds = %193
  %213 = load i32, ptr %63, align 4, !tbaa !9
  %214 = icmp ne i32 %213, 0
  br i1 %214, label %217, label %215

215:                                              ; preds = %212
  %216 = load ptr, ptr %37, align 8, !tbaa !5
  store i32 -15, ptr %216, align 4, !tbaa !9
  br label %217

217:                                              ; preds = %215, %212, %193
  br label %218

218:                                              ; preds = %217, %150
  %219 = load ptr, ptr %37, align 8, !tbaa !5
  %220 = load i32, ptr %219, align 4, !tbaa !9
  %221 = icmp ne i32 %220, 0
  br i1 %221, label %222, label %227

222:                                              ; preds = %218
  %223 = load ptr, ptr %37, align 8, !tbaa !5
  %224 = load i32, ptr %223, align 4, !tbaa !9
  %225 = sub nsw i32 0, %224
  store i32 %225, ptr %40, align 4, !tbaa !9
  %226 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %40)
  store i32 0, ptr %19, align 4
  store i32 1, ptr %68, align 4
  br label %905

227:                                              ; preds = %218
  %228 = load i32, ptr %63, align 4, !tbaa !9
  %229 = icmp ne i32 %228, 0
  br i1 %229, label %230, label %231

230:                                              ; preds = %227
  store i32 0, ptr %19, align 4
  store i32 1, ptr %68, align 4
  br label %905

231:                                              ; preds = %227
  br label %232

232:                                              ; preds = %231
  %233 = load i32, ptr %54, align 4, !tbaa !9
  %234 = icmp eq i32 %233, 0
  br i1 %234, label %235, label %253

235:                                              ; preds = %232
  %236 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 0, ptr %236, align 4, !tbaa !9
  %237 = load ptr, ptr %29, align 8, !tbaa !5
  store float 0.000000e+00, ptr %237, align 4, !tbaa !15
  %238 = load ptr, ptr %30, align 8, !tbaa !5
  store float 0.000000e+00, ptr %238, align 4, !tbaa !15
  %239 = load i32, ptr %62, align 4, !tbaa !9
  %240 = sitofp i32 %239 to float
  %241 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 0
  store float %240, ptr %241, align 4, !tbaa !11
  %242 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 1
  store float 0.000000e+00, ptr %242, align 4, !tbaa !14
  %243 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 0
  %244 = load float, ptr %243, align 4, !tbaa !11
  %245 = load ptr, ptr %33, align 8, !tbaa !5
  %246 = getelementptr inbounds %struct.complex, ptr %245, i64 1
  %247 = getelementptr inbounds %struct.complex, ptr %246, i32 0, i32 0
  store float %244, ptr %247, align 4, !tbaa !11
  %248 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 1
  %249 = load float, ptr %248, align 4, !tbaa !14
  %250 = load ptr, ptr %33, align 8, !tbaa !5
  %251 = getelementptr inbounds %struct.complex, ptr %250, i64 1
  %252 = getelementptr inbounds %struct.complex, ptr %251, i32 0, i32 1
  store float %249, ptr %252, align 4, !tbaa !14
  store i32 0, ptr %19, align 4
  store i32 1, ptr %68, align 4
  br label %905

253:                                              ; preds = %232
  %254 = load ptr, ptr %21, align 8, !tbaa !5
  %255 = load i32, ptr %254, align 4, !tbaa !9
  store i32 %255, ptr %40, align 4, !tbaa !9
  store i32 1, ptr %48, align 4, !tbaa !9
  br label %256

256:                                              ; preds = %266, %253
  %257 = load i32, ptr %48, align 4, !tbaa !9
  %258 = load i32, ptr %40, align 4, !tbaa !9
  %259 = icmp sle i32 %257, %258
  br i1 %259, label %260, label %269

260:                                              ; preds = %256
  %261 = load i32, ptr %48, align 4, !tbaa !9
  %262 = load ptr, ptr %31, align 8, !tbaa !5
  %263 = load i32, ptr %48, align 4, !tbaa !9
  %264 = sext i32 %263 to i64
  %265 = getelementptr inbounds i32, ptr %262, i64 %264
  store i32 %261, ptr %265, align 4, !tbaa !9
  br label %266

266:                                              ; preds = %260
  %267 = load i32, ptr %48, align 4, !tbaa !9
  %268 = add nsw i32 %267, 1
  store i32 %268, ptr %48, align 4, !tbaa !9
  br label %256, !llvm.loop !16

269:                                              ; preds = %256
  %270 = load ptr, ptr %21, align 8, !tbaa !5
  %271 = load i32, ptr %270, align 4, !tbaa !9
  store i32 %271, ptr %40, align 4, !tbaa !9
  store i32 1, ptr %48, align 4, !tbaa !9
  br label %272

272:                                              ; preds = %302, %269
  %273 = load i32, ptr %48, align 4, !tbaa !9
  %274 = load i32, ptr %40, align 4, !tbaa !9
  %275 = icmp sle i32 %273, %274
  br i1 %275, label %276, label %305

276:                                              ; preds = %272
  %277 = load ptr, ptr %20, align 8, !tbaa !5
  %278 = load ptr, ptr %26, align 8, !tbaa !5
  %279 = load i32, ptr %48, align 4, !tbaa !9
  %280 = load i32, ptr %38, align 4, !tbaa !9
  %281 = mul nsw i32 %279, %280
  %282 = add nsw i32 %281, 1
  %283 = sext i32 %282 to i64
  %284 = getelementptr inbounds %struct.complex, ptr %278, i64 %283
  %285 = call float @scnrm2_(ptr noundef %277, ptr noundef %284, ptr noundef @c__1)
  %286 = load ptr, ptr %35, align 8, !tbaa !5
  %287 = load i32, ptr %48, align 4, !tbaa !9
  %288 = sext i32 %287 to i64
  %289 = getelementptr inbounds float, ptr %286, i64 %288
  store float %285, ptr %289, align 4, !tbaa !15
  %290 = load ptr, ptr %35, align 8, !tbaa !5
  %291 = load i32, ptr %48, align 4, !tbaa !9
  %292 = sext i32 %291 to i64
  %293 = getelementptr inbounds float, ptr %290, i64 %292
  %294 = load float, ptr %293, align 4, !tbaa !15
  %295 = load ptr, ptr %35, align 8, !tbaa !5
  %296 = load ptr, ptr %21, align 8, !tbaa !5
  %297 = load i32, ptr %296, align 4, !tbaa !9
  %298 = load i32, ptr %48, align 4, !tbaa !9
  %299 = add nsw i32 %297, %298
  %300 = sext i32 %299 to i64
  %301 = getelementptr inbounds float, ptr %295, i64 %300
  store float %294, ptr %301, align 4, !tbaa !15
  br label %302

302:                                              ; preds = %276
  %303 = load i32, ptr %48, align 4, !tbaa !9
  %304 = add nsw i32 %303, 1
  store i32 %304, ptr %48, align 4, !tbaa !9
  br label %272, !llvm.loop !18

305:                                              ; preds = %272
  %306 = load ptr, ptr %21, align 8, !tbaa !5
  %307 = load ptr, ptr %35, align 8, !tbaa !5
  %308 = getelementptr inbounds float, ptr %307, i64 1
  %309 = call i32 @isamax_(ptr noundef %306, ptr noundef %308, ptr noundef @c__1)
  store i32 %309, ptr %61, align 4, !tbaa !9
  %310 = call i32 @sisnan_(ptr noundef %45)
  %311 = icmp ne i32 %310, 0
  br i1 %311, label %312, label %334

312:                                              ; preds = %305
  %313 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 0, ptr %313, align 4, !tbaa !9
  %314 = load i32, ptr %61, align 4, !tbaa !9
  %315 = load ptr, ptr %37, align 8, !tbaa !5
  store i32 %314, ptr %315, align 4, !tbaa !9
  %316 = load float, ptr %45, align 4, !tbaa !15
  %317 = load ptr, ptr %29, align 8, !tbaa !5
  store float %316, ptr %317, align 4, !tbaa !15
  %318 = load float, ptr %45, align 4, !tbaa !15
  %319 = load ptr, ptr %30, align 8, !tbaa !5
  store float %318, ptr %319, align 4, !tbaa !15
  %320 = load i32, ptr %62, align 4, !tbaa !9
  %321 = sitofp i32 %320 to float
  %322 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 0
  store float %321, ptr %322, align 4, !tbaa !11
  %323 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 1
  store float 0.000000e+00, ptr %323, align 4, !tbaa !14
  %324 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 0
  %325 = load float, ptr %324, align 4, !tbaa !11
  %326 = load ptr, ptr %33, align 8, !tbaa !5
  %327 = getelementptr inbounds %struct.complex, ptr %326, i64 1
  %328 = getelementptr inbounds %struct.complex, ptr %327, i32 0, i32 0
  store float %325, ptr %328, align 4, !tbaa !11
  %329 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 1
  %330 = load float, ptr %329, align 4, !tbaa !14
  %331 = load ptr, ptr %33, align 8, !tbaa !5
  %332 = getelementptr inbounds %struct.complex, ptr %331, i64 1
  %333 = getelementptr inbounds %struct.complex, ptr %332, i32 0, i32 1
  store float %330, ptr %333, align 4, !tbaa !14
  store i32 0, ptr %19, align 4
  store i32 1, ptr %68, align 4
  br label %905

334:                                              ; preds = %305
  %335 = load float, ptr %45, align 4, !tbaa !15
  %336 = fcmp oeq float %335, 0.000000e+00
  br i1 %336, label %337, label %376

337:                                              ; preds = %334
  %338 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 0, ptr %338, align 4, !tbaa !9
  %339 = load ptr, ptr %29, align 8, !tbaa !5
  store float 0.000000e+00, ptr %339, align 4, !tbaa !15
  %340 = load ptr, ptr %30, align 8, !tbaa !5
  store float 0.000000e+00, ptr %340, align 4, !tbaa !15
  %341 = load i32, ptr %54, align 4, !tbaa !9
  store i32 %341, ptr %40, align 4, !tbaa !9
  store i32 1, ptr %48, align 4, !tbaa !9
  br label %342

342:                                              ; preds = %358, %337
  %343 = load i32, ptr %48, align 4, !tbaa !9
  %344 = load i32, ptr %40, align 4, !tbaa !9
  %345 = icmp sle i32 %343, %344
  br i1 %345, label %346, label %361

346:                                              ; preds = %342
  %347 = load i32, ptr %48, align 4, !tbaa !9
  store i32 %347, ptr %41, align 4, !tbaa !9
  %348 = load ptr, ptr %32, align 8, !tbaa !5
  %349 = load i32, ptr %41, align 4, !tbaa !9
  %350 = sext i32 %349 to i64
  %351 = getelementptr inbounds %struct.complex, ptr %348, i64 %350
  %352 = getelementptr inbounds %struct.complex, ptr %351, i32 0, i32 0
  store float 0.000000e+00, ptr %352, align 4, !tbaa !11
  %353 = load ptr, ptr %32, align 8, !tbaa !5
  %354 = load i32, ptr %41, align 4, !tbaa !9
  %355 = sext i32 %354 to i64
  %356 = getelementptr inbounds %struct.complex, ptr %353, i64 %355
  %357 = getelementptr inbounds %struct.complex, ptr %356, i32 0, i32 1
  store float 0.000000e+00, ptr %357, align 4, !tbaa !14
  br label %358

358:                                              ; preds = %346
  %359 = load i32, ptr %48, align 4, !tbaa !9
  %360 = add nsw i32 %359, 1
  store i32 %360, ptr %48, align 4, !tbaa !9
  br label %342, !llvm.loop !19

361:                                              ; preds = %342
  %362 = load i32, ptr %62, align 4, !tbaa !9
  %363 = sitofp i32 %362 to float
  %364 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 0
  store float %363, ptr %364, align 4, !tbaa !11
  %365 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 1
  store float 0.000000e+00, ptr %365, align 4, !tbaa !14
  %366 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 0
  %367 = load float, ptr %366, align 4, !tbaa !11
  %368 = load ptr, ptr %33, align 8, !tbaa !5
  %369 = getelementptr inbounds %struct.complex, ptr %368, i64 1
  %370 = getelementptr inbounds %struct.complex, ptr %369, i32 0, i32 0
  store float %367, ptr %370, align 4, !tbaa !11
  %371 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 1
  %372 = load float, ptr %371, align 4, !tbaa !14
  %373 = load ptr, ptr %33, align 8, !tbaa !5
  %374 = getelementptr inbounds %struct.complex, ptr %373, i64 1
  %375 = getelementptr inbounds %struct.complex, ptr %374, i32 0, i32 1
  store float %372, ptr %375, align 4, !tbaa !14
  store i32 0, ptr %19, align 4
  store i32 1, ptr %68, align 4
  br label %905

376:                                              ; preds = %334
  %377 = call float @slamch_(ptr noundef @.str.2)
  store float %377, ptr %55, align 4, !tbaa !15
  %378 = load float, ptr %45, align 4, !tbaa !15
  %379 = load float, ptr %55, align 4, !tbaa !15
  %380 = fcmp ogt float %378, %379
  br i1 %380, label %381, label %387

381:                                              ; preds = %376
  %382 = load ptr, ptr %21, align 8, !tbaa !5
  %383 = load i32, ptr %382, align 4, !tbaa !9
  %384 = load i32, ptr %61, align 4, !tbaa !9
  %385 = add nsw i32 %383, %384
  %386 = load ptr, ptr %37, align 8, !tbaa !5
  store i32 %385, ptr %386, align 4, !tbaa !9
  br label %387

387:                                              ; preds = %381, %376
  %388 = load ptr, ptr %23, align 8, !tbaa !5
  %389 = load i32, ptr %388, align 4, !tbaa !9
  %390 = icmp eq i32 %389, 0
  br i1 %390, label %391, label %431

391:                                              ; preds = %387
  %392 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 0, ptr %392, align 4, !tbaa !9
  %393 = load float, ptr %45, align 4, !tbaa !15
  %394 = load ptr, ptr %29, align 8, !tbaa !5
  store float %393, ptr %394, align 4, !tbaa !15
  %395 = load ptr, ptr %30, align 8, !tbaa !5
  store float 1.000000e+00, ptr %395, align 4, !tbaa !15
  %396 = load i32, ptr %54, align 4, !tbaa !9
  store i32 %396, ptr %40, align 4, !tbaa !9
  store i32 1, ptr %48, align 4, !tbaa !9
  br label %397

397:                                              ; preds = %413, %391
  %398 = load i32, ptr %48, align 4, !tbaa !9
  %399 = load i32, ptr %40, align 4, !tbaa !9
  %400 = icmp sle i32 %398, %399
  br i1 %400, label %401, label %416

401:                                              ; preds = %397
  %402 = load i32, ptr %48, align 4, !tbaa !9
  store i32 %402, ptr %41, align 4, !tbaa !9
  %403 = load ptr, ptr %32, align 8, !tbaa !5
  %404 = load i32, ptr %41, align 4, !tbaa !9
  %405 = sext i32 %404 to i64
  %406 = getelementptr inbounds %struct.complex, ptr %403, i64 %405
  %407 = getelementptr inbounds %struct.complex, ptr %406, i32 0, i32 0
  store float 0.000000e+00, ptr %407, align 4, !tbaa !11
  %408 = load ptr, ptr %32, align 8, !tbaa !5
  %409 = load i32, ptr %41, align 4, !tbaa !9
  %410 = sext i32 %409 to i64
  %411 = getelementptr inbounds %struct.complex, ptr %408, i64 %410
  %412 = getelementptr inbounds %struct.complex, ptr %411, i32 0, i32 1
  store float 0.000000e+00, ptr %412, align 4, !tbaa !14
  br label %413

413:                                              ; preds = %401
  %414 = load i32, ptr %48, align 4, !tbaa !9
  %415 = add nsw i32 %414, 1
  store i32 %415, ptr %48, align 4, !tbaa !9
  br label %397, !llvm.loop !20

416:                                              ; preds = %397
  %417 = load i32, ptr %62, align 4, !tbaa !9
  %418 = sitofp i32 %417 to float
  %419 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 0
  store float %418, ptr %419, align 4, !tbaa !11
  %420 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 1
  store float 0.000000e+00, ptr %420, align 4, !tbaa !14
  %421 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 0
  %422 = load float, ptr %421, align 4, !tbaa !11
  %423 = load ptr, ptr %33, align 8, !tbaa !5
  %424 = getelementptr inbounds %struct.complex, ptr %423, i64 1
  %425 = getelementptr inbounds %struct.complex, ptr %424, i32 0, i32 0
  store float %422, ptr %425, align 4, !tbaa !11
  %426 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 1
  %427 = load float, ptr %426, align 4, !tbaa !14
  %428 = load ptr, ptr %33, align 8, !tbaa !5
  %429 = getelementptr inbounds %struct.complex, ptr %428, i64 1
  %430 = getelementptr inbounds %struct.complex, ptr %429, i32 0, i32 1
  store float %427, ptr %430, align 4, !tbaa !14
  store i32 0, ptr %19, align 4
  store i32 1, ptr %68, align 4
  br label %905

431:                                              ; preds = %387
  %432 = call float @slamch_(ptr noundef @.str.3)
  store float %432, ptr %65, align 4, !tbaa !15
  %433 = load ptr, ptr %24, align 8, !tbaa !5
  %434 = load float, ptr %433, align 4, !tbaa !15
  %435 = fcmp oge float %434, 0.000000e+00
  br i1 %435, label %436, label %452

436:                                              ; preds = %431
  %437 = call float @slamch_(ptr noundef @.str.4)
  store float %437, ptr %60, align 4, !tbaa !15
  %438 = load ptr, ptr %24, align 8, !tbaa !5
  %439 = load float, ptr %438, align 4, !tbaa !15
  store float %439, ptr %42, align 4, !tbaa !15
  %440 = load float, ptr %60, align 4, !tbaa !15
  %441 = fmul float %440, 2.000000e+00
  store float %441, ptr %43, align 4, !tbaa !15
  %442 = load float, ptr %42, align 4, !tbaa !15
  %443 = load float, ptr %43, align 4, !tbaa !15
  %444 = fcmp oge float %442, %443
  br i1 %444, label %445, label %447

445:                                              ; preds = %436
  %446 = load float, ptr %42, align 4, !tbaa !15
  br label %449

447:                                              ; preds = %436
  %448 = load float, ptr %43, align 4, !tbaa !15
  br label %449

449:                                              ; preds = %447, %445
  %450 = phi float [ %446, %445 ], [ %448, %447 ]
  %451 = load ptr, ptr %24, align 8, !tbaa !5
  store float %450, ptr %451, align 4, !tbaa !15
  br label %452

452:                                              ; preds = %449, %431
  %453 = load ptr, ptr %25, align 8, !tbaa !5
  %454 = load float, ptr %453, align 4, !tbaa !15
  %455 = fcmp oge float %454, 0.000000e+00
  br i1 %455, label %456, label %469

456:                                              ; preds = %452
  %457 = load ptr, ptr %25, align 8, !tbaa !5
  %458 = load float, ptr %457, align 4, !tbaa !15
  %459 = load float, ptr %65, align 4, !tbaa !15
  %460 = fcmp oge float %458, %459
  br i1 %460, label %461, label %464

461:                                              ; preds = %456
  %462 = load ptr, ptr %25, align 8, !tbaa !5
  %463 = load float, ptr %462, align 4, !tbaa !15
  br label %466

464:                                              ; preds = %456
  %465 = load float, ptr %65, align 4, !tbaa !15
  br label %466

466:                                              ; preds = %464, %461
  %467 = phi float [ %463, %461 ], [ %465, %464 ]
  %468 = load ptr, ptr %25, align 8, !tbaa !5
  store float %467, ptr %468, align 4, !tbaa !15
  br label %469

469:                                              ; preds = %466, %452
  %470 = load ptr, ptr %23, align 8, !tbaa !5
  %471 = load i32, ptr %470, align 4, !tbaa !9
  %472 = load i32, ptr %54, align 4, !tbaa !9
  %473 = icmp sle i32 %471, %472
  br i1 %473, label %474, label %477

474:                                              ; preds = %469
  %475 = load ptr, ptr %23, align 8, !tbaa !5
  %476 = load i32, ptr %475, align 4, !tbaa !9
  br label %479

477:                                              ; preds = %469
  %478 = load i32, ptr %54, align 4, !tbaa !9
  br label %479

479:                                              ; preds = %477, %474
  %480 = phi i32 [ %476, %474 ], [ %478, %477 ]
  store i32 %480, ptr %47, align 4, !tbaa !9
  %481 = load float, ptr %45, align 4, !tbaa !15
  %482 = load ptr, ptr %24, align 8, !tbaa !5
  %483 = load float, ptr %482, align 4, !tbaa !15
  %484 = fcmp ole float %481, %483
  br i1 %484, label %489, label %485

485:                                              ; preds = %479
  %486 = load ptr, ptr %25, align 8, !tbaa !5
  %487 = load float, ptr %486, align 4, !tbaa !15
  %488 = fcmp ole float 1.000000e+00, %487
  br i1 %488, label %489, label %529

489:                                              ; preds = %485, %479
  %490 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 0, ptr %490, align 4, !tbaa !9
  %491 = load float, ptr %45, align 4, !tbaa !15
  %492 = load ptr, ptr %29, align 8, !tbaa !5
  store float %491, ptr %492, align 4, !tbaa !15
  %493 = load ptr, ptr %30, align 8, !tbaa !5
  store float 1.000000e+00, ptr %493, align 4, !tbaa !15
  %494 = load i32, ptr %54, align 4, !tbaa !9
  store i32 %494, ptr %40, align 4, !tbaa !9
  store i32 1, ptr %48, align 4, !tbaa !9
  br label %495

495:                                              ; preds = %511, %489
  %496 = load i32, ptr %48, align 4, !tbaa !9
  %497 = load i32, ptr %40, align 4, !tbaa !9
  %498 = icmp sle i32 %496, %497
  br i1 %498, label %499, label %514

499:                                              ; preds = %495
  %500 = load i32, ptr %48, align 4, !tbaa !9
  store i32 %500, ptr %41, align 4, !tbaa !9
  %501 = load ptr, ptr %32, align 8, !tbaa !5
  %502 = load i32, ptr %41, align 4, !tbaa !9
  %503 = sext i32 %502 to i64
  %504 = getelementptr inbounds %struct.complex, ptr %501, i64 %503
  %505 = getelementptr inbounds %struct.complex, ptr %504, i32 0, i32 0
  store float 0.000000e+00, ptr %505, align 4, !tbaa !11
  %506 = load ptr, ptr %32, align 8, !tbaa !5
  %507 = load i32, ptr %41, align 4, !tbaa !9
  %508 = sext i32 %507 to i64
  %509 = getelementptr inbounds %struct.complex, ptr %506, i64 %508
  %510 = getelementptr inbounds %struct.complex, ptr %509, i32 0, i32 1
  store float 0.000000e+00, ptr %510, align 4, !tbaa !14
  br label %511

511:                                              ; preds = %499
  %512 = load i32, ptr %48, align 4, !tbaa !9
  %513 = add nsw i32 %512, 1
  store i32 %513, ptr %48, align 4, !tbaa !9
  br label %495, !llvm.loop !21

514:                                              ; preds = %495
  %515 = load i32, ptr %62, align 4, !tbaa !9
  %516 = sitofp i32 %515 to float
  %517 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 0
  store float %516, ptr %517, align 4, !tbaa !11
  %518 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 1
  store float 0.000000e+00, ptr %518, align 4, !tbaa !14
  %519 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 0
  %520 = load float, ptr %519, align 4, !tbaa !11
  %521 = load ptr, ptr %33, align 8, !tbaa !5
  %522 = getelementptr inbounds %struct.complex, ptr %521, i64 1
  %523 = getelementptr inbounds %struct.complex, ptr %522, i32 0, i32 0
  store float %520, ptr %523, align 4, !tbaa !11
  %524 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 1
  %525 = load float, ptr %524, align 4, !tbaa !14
  %526 = load ptr, ptr %33, align 8, !tbaa !5
  %527 = getelementptr inbounds %struct.complex, ptr %526, i64 1
  %528 = getelementptr inbounds %struct.complex, ptr %527, i32 0, i32 1
  store float %525, ptr %528, align 4, !tbaa !14
  store i32 0, ptr %19, align 4
  store i32 1, ptr %68, align 4
  br label %905

529:                                              ; preds = %485
  store i32 2, ptr %51, align 4, !tbaa !9
  store i32 0, ptr %59, align 4, !tbaa !9
  %530 = load i32, ptr %57, align 4, !tbaa !9
  %531 = icmp sgt i32 %530, 1
  br i1 %531, label %532, label %582

532:                                              ; preds = %529
  %533 = load i32, ptr %57, align 4, !tbaa !9
  %534 = load i32, ptr %54, align 4, !tbaa !9
  %535 = icmp slt i32 %533, %534
  br i1 %535, label %536, label %582

536:                                              ; preds = %532
  store i32 0, ptr %40, align 4, !tbaa !9
  %537 = load ptr, ptr %20, align 8, !tbaa !5
  %538 = load ptr, ptr %21, align 8, !tbaa !5
  %539 = call i32 @ilaenv_(ptr noundef @c__3, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %537, ptr noundef %538, ptr noundef @c_n1, ptr noundef @c_n1, i32 noundef 8, i32 noundef 1)
  store i32 %539, ptr %41, align 4, !tbaa !9
  %540 = load i32, ptr %40, align 4, !tbaa !9
  %541 = load i32, ptr %41, align 4, !tbaa !9
  %542 = icmp sge i32 %540, %541
  br i1 %542, label %543, label %545

543:                                              ; preds = %536
  %544 = load i32, ptr %40, align 4, !tbaa !9
  br label %547

545:                                              ; preds = %536
  %546 = load i32, ptr %41, align 4, !tbaa !9
  br label %547

547:                                              ; preds = %545, %543
  %548 = phi i32 [ %544, %543 ], [ %546, %545 ]
  store i32 %548, ptr %59, align 4, !tbaa !9
  %549 = load i32, ptr %59, align 4, !tbaa !9
  %550 = load i32, ptr %54, align 4, !tbaa !9
  %551 = icmp slt i32 %549, %550
  br i1 %551, label %552, label %581

552:                                              ; preds = %547
  %553 = load ptr, ptr %34, align 8, !tbaa !5
  %554 = load i32, ptr %553, align 4, !tbaa !9
  %555 = load i32, ptr %62, align 4, !tbaa !9
  %556 = icmp slt i32 %554, %555
  br i1 %556, label %557, label %580

557:                                              ; preds = %552
  %558 = load ptr, ptr %34, align 8, !tbaa !5
  %559 = load i32, ptr %558, align 4, !tbaa !9
  %560 = load ptr, ptr %21, align 8, !tbaa !5
  %561 = load i32, ptr %560, align 4, !tbaa !9
  %562 = shl i32 %561, 1
  %563 = sub nsw i32 %559, %562
  %564 = load ptr, ptr %21, align 8, !tbaa !5
  %565 = load i32, ptr %564, align 4, !tbaa !9
  %566 = add nsw i32 %565, 1
  %567 = sdiv i32 %563, %566
  store i32 %567, ptr %57, align 4, !tbaa !9
  store i32 2, ptr %40, align 4, !tbaa !9
  %568 = load ptr, ptr %20, align 8, !tbaa !5
  %569 = load ptr, ptr %21, align 8, !tbaa !5
  %570 = call i32 @ilaenv_(ptr noundef @c__2, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %568, ptr noundef %569, ptr noundef @c_n1, ptr noundef @c_n1, i32 noundef 8, i32 noundef 1)
  store i32 %570, ptr %41, align 4, !tbaa !9
  %571 = load i32, ptr %40, align 4, !tbaa !9
  %572 = load i32, ptr %41, align 4, !tbaa !9
  %573 = icmp sge i32 %571, %572
  br i1 %573, label %574, label %576

574:                                              ; preds = %557
  %575 = load i32, ptr %40, align 4, !tbaa !9
  br label %578

576:                                              ; preds = %557
  %577 = load i32, ptr %41, align 4, !tbaa !9
  br label %578

578:                                              ; preds = %576, %574
  %579 = phi i32 [ %575, %574 ], [ %577, %576 ]
  store i32 %579, ptr %51, align 4, !tbaa !9
  br label %580

580:                                              ; preds = %578, %552
  br label %581

581:                                              ; preds = %580, %547
  br label %582

582:                                              ; preds = %581, %532, %529
  store i32 0, ptr %46, align 4, !tbaa !9
  store i32 1, ptr %48, align 4, !tbaa !9
  %583 = load ptr, ptr %23, align 8, !tbaa !5
  %584 = load i32, ptr %583, align 4, !tbaa !9
  store i32 %584, ptr %40, align 4, !tbaa !9
  %585 = load i32, ptr %54, align 4, !tbaa !9
  %586 = load i32, ptr %59, align 4, !tbaa !9
  %587 = sub nsw i32 %585, %586
  store i32 %587, ptr %41, align 4, !tbaa !9
  %588 = load i32, ptr %40, align 4, !tbaa !9
  %589 = load i32, ptr %41, align 4, !tbaa !9
  %590 = icmp sle i32 %588, %589
  br i1 %590, label %591, label %593

591:                                              ; preds = %582
  %592 = load i32, ptr %40, align 4, !tbaa !9
  br label %595

593:                                              ; preds = %582
  %594 = load i32, ptr %41, align 4, !tbaa !9
  br label %595

595:                                              ; preds = %593, %591
  %596 = phi i32 [ %592, %591 ], [ %594, %593 ]
  store i32 %596, ptr %50, align 4, !tbaa !9
  %597 = load i32, ptr %57, align 4, !tbaa !9
  %598 = load i32, ptr %51, align 4, !tbaa !9
  %599 = icmp sge i32 %597, %598
  br i1 %599, label %600, label %737

600:                                              ; preds = %595
  %601 = load i32, ptr %57, align 4, !tbaa !9
  %602 = load i32, ptr %47, align 4, !tbaa !9
  %603 = icmp slt i32 %601, %602
  br i1 %603, label %604, label %737

604:                                              ; preds = %600
  %605 = load i32, ptr %50, align 4, !tbaa !9
  %606 = icmp sgt i32 %605, 0
  br i1 %606, label %607, label %737

607:                                              ; preds = %604
  br label %608

608:                                              ; preds = %732, %607
  %609 = load i32, ptr %48, align 4, !tbaa !9
  %610 = load i32, ptr %50, align 4, !tbaa !9
  %611 = icmp sle i32 %609, %610
  br i1 %611, label %612, label %736

612:                                              ; preds = %608
  %613 = load i32, ptr %57, align 4, !tbaa !9
  store i32 %613, ptr %40, align 4, !tbaa !9
  %614 = load i32, ptr %50, align 4, !tbaa !9
  %615 = load i32, ptr %48, align 4, !tbaa !9
  %616 = sub nsw i32 %614, %615
  %617 = add nsw i32 %616, 1
  store i32 %617, ptr %41, align 4, !tbaa !9
  %618 = load i32, ptr %40, align 4, !tbaa !9
  %619 = load i32, ptr %41, align 4, !tbaa !9
  %620 = icmp sle i32 %618, %619
  br i1 %620, label %621, label %623

621:                                              ; preds = %612
  %622 = load i32, ptr %40, align 4, !tbaa !9
  br label %625

623:                                              ; preds = %612
  %624 = load i32, ptr %41, align 4, !tbaa !9
  br label %625

625:                                              ; preds = %623, %621
  %626 = phi i32 [ %622, %621 ], [ %624, %623 ]
  store i32 %626, ptr %56, align 4, !tbaa !9
  %627 = load ptr, ptr %21, align 8, !tbaa !5
  %628 = load i32, ptr %627, align 4, !tbaa !9
  %629 = load i32, ptr %48, align 4, !tbaa !9
  %630 = sub nsw i32 %628, %629
  %631 = add nsw i32 %630, 1
  store i32 %631, ptr %53, align 4, !tbaa !9
  %632 = load i32, ptr %48, align 4, !tbaa !9
  %633 = sub nsw i32 %632, 1
  store i32 %633, ptr %67, align 4, !tbaa !9
  %634 = load ptr, ptr %21, align 8, !tbaa !5
  %635 = load i32, ptr %634, align 4, !tbaa !9
  %636 = load ptr, ptr %22, align 8, !tbaa !5
  %637 = load i32, ptr %636, align 4, !tbaa !9
  %638 = add nsw i32 %635, %637
  %639 = load i32, ptr %48, align 4, !tbaa !9
  %640 = sub nsw i32 %638, %639
  %641 = add nsw i32 %640, 1
  store i32 %641, ptr %40, align 4, !tbaa !9
  %642 = load ptr, ptr %20, align 8, !tbaa !5
  %643 = load ptr, ptr %22, align 8, !tbaa !5
  %644 = load ptr, ptr %24, align 8, !tbaa !5
  %645 = load ptr, ptr %25, align 8, !tbaa !5
  %646 = load ptr, ptr %26, align 8, !tbaa !5
  %647 = load i32, ptr %48, align 4, !tbaa !9
  %648 = load i32, ptr %38, align 4, !tbaa !9
  %649 = mul nsw i32 %647, %648
  %650 = add nsw i32 %649, 1
  %651 = sext i32 %650 to i64
  %652 = getelementptr inbounds %struct.complex, ptr %646, i64 %651
  %653 = load ptr, ptr %27, align 8, !tbaa !5
  %654 = load ptr, ptr %29, align 8, !tbaa !5
  %655 = load ptr, ptr %30, align 8, !tbaa !5
  %656 = load ptr, ptr %31, align 8, !tbaa !5
  %657 = load i32, ptr %48, align 4, !tbaa !9
  %658 = sext i32 %657 to i64
  %659 = getelementptr inbounds i32, ptr %656, i64 %658
  %660 = load ptr, ptr %32, align 8, !tbaa !5
  %661 = load i32, ptr %48, align 4, !tbaa !9
  %662 = sext i32 %661 to i64
  %663 = getelementptr inbounds %struct.complex, ptr %660, i64 %662
  %664 = load ptr, ptr %35, align 8, !tbaa !5
  %665 = load i32, ptr %48, align 4, !tbaa !9
  %666 = sext i32 %665 to i64
  %667 = getelementptr inbounds float, ptr %664, i64 %666
  %668 = load ptr, ptr %35, align 8, !tbaa !5
  %669 = load ptr, ptr %21, align 8, !tbaa !5
  %670 = load i32, ptr %669, align 4, !tbaa !9
  %671 = load i32, ptr %48, align 4, !tbaa !9
  %672 = add nsw i32 %670, %671
  %673 = sext i32 %672 to i64
  %674 = getelementptr inbounds float, ptr %668, i64 %673
  %675 = load ptr, ptr %33, align 8, !tbaa !5
  %676 = getelementptr inbounds %struct.complex, ptr %675, i64 1
  %677 = load ptr, ptr %33, align 8, !tbaa !5
  %678 = load i32, ptr %56, align 4, !tbaa !9
  %679 = add nsw i32 %678, 1
  %680 = sext i32 %679 to i64
  %681 = getelementptr inbounds %struct.complex, ptr %677, i64 %680
  %682 = load ptr, ptr %36, align 8, !tbaa !5
  %683 = getelementptr inbounds i32, ptr %682, i64 1
  %684 = call i32 @claqp3rk_(ptr noundef %642, ptr noundef %53, ptr noundef %643, ptr noundef %67, ptr noundef %56, ptr noundef %644, ptr noundef %645, ptr noundef %61, ptr noundef %45, ptr noundef %652, ptr noundef %653, ptr noundef %46, ptr noundef %64, ptr noundef %654, ptr noundef %655, ptr noundef %659, ptr noundef %663, ptr noundef %667, ptr noundef %674, ptr noundef %676, ptr noundef %681, ptr noundef %40, ptr noundef %683, ptr noundef %52)
  %685 = load i32, ptr %52, align 4, !tbaa !9
  %686 = load i32, ptr %53, align 4, !tbaa !9
  %687 = icmp sgt i32 %685, %686
  br i1 %687, label %688, label %698

688:                                              ; preds = %625
  %689 = load ptr, ptr %37, align 8, !tbaa !5
  %690 = load i32, ptr %689, align 4, !tbaa !9
  %691 = icmp eq i32 %690, 0
  br i1 %691, label %692, label %698

692:                                              ; preds = %688
  %693 = load i32, ptr %67, align 4, !tbaa !9
  %694 = shl i32 %693, 1
  %695 = load i32, ptr %52, align 4, !tbaa !9
  %696 = add nsw i32 %694, %695
  %697 = load ptr, ptr %37, align 8, !tbaa !5
  store i32 %696, ptr %697, align 4, !tbaa !9
  br label %698

698:                                              ; preds = %692, %688, %625
  %699 = load i32, ptr %46, align 4, !tbaa !9
  %700 = icmp ne i32 %699, 0
  br i1 %700, label %701, label %732

701:                                              ; preds = %698
  %702 = load i32, ptr %67, align 4, !tbaa !9
  %703 = load i32, ptr %64, align 4, !tbaa !9
  %704 = add nsw i32 %702, %703
  %705 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 %704, ptr %705, align 4, !tbaa !9
  %706 = load i32, ptr %52, align 4, !tbaa !9
  %707 = load i32, ptr %53, align 4, !tbaa !9
  %708 = icmp sle i32 %706, %707
  br i1 %708, label %709, label %717

709:                                              ; preds = %701
  %710 = load i32, ptr %52, align 4, !tbaa !9
  %711 = icmp sgt i32 %710, 0
  br i1 %711, label %712, label %717

712:                                              ; preds = %709
  %713 = load i32, ptr %67, align 4, !tbaa !9
  %714 = load i32, ptr %52, align 4, !tbaa !9
  %715 = add nsw i32 %713, %714
  %716 = load ptr, ptr %37, align 8, !tbaa !5
  store i32 %715, ptr %716, align 4, !tbaa !9
  br label %717

717:                                              ; preds = %712, %709, %701
  %718 = load i32, ptr %62, align 4, !tbaa !9
  %719 = sitofp i32 %718 to float
  %720 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 0
  store float %719, ptr %720, align 4, !tbaa !11
  %721 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 1
  store float 0.000000e+00, ptr %721, align 4, !tbaa !14
  %722 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 0
  %723 = load float, ptr %722, align 4, !tbaa !11
  %724 = load ptr, ptr %33, align 8, !tbaa !5
  %725 = getelementptr inbounds %struct.complex, ptr %724, i64 1
  %726 = getelementptr inbounds %struct.complex, ptr %725, i32 0, i32 0
  store float %723, ptr %726, align 4, !tbaa !11
  %727 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 1
  %728 = load float, ptr %727, align 4, !tbaa !14
  %729 = load ptr, ptr %33, align 8, !tbaa !5
  %730 = getelementptr inbounds %struct.complex, ptr %729, i64 1
  %731 = getelementptr inbounds %struct.complex, ptr %730, i32 0, i32 1
  store float %728, ptr %731, align 4, !tbaa !14
  store i32 0, ptr %19, align 4
  store i32 1, ptr %68, align 4
  br label %905

732:                                              ; preds = %698
  %733 = load i32, ptr %64, align 4, !tbaa !9
  %734 = load i32, ptr %48, align 4, !tbaa !9
  %735 = add nsw i32 %734, %733
  store i32 %735, ptr %48, align 4, !tbaa !9
  br label %608, !llvm.loop !22

736:                                              ; preds = %608
  br label %737

737:                                              ; preds = %736, %604, %600, %595
  %738 = load i32, ptr %48, align 4, !tbaa !9
  %739 = load i32, ptr %47, align 4, !tbaa !9
  %740 = icmp sle i32 %738, %739
  br i1 %740, label %741, label %821

741:                                              ; preds = %737
  %742 = load ptr, ptr %21, align 8, !tbaa !5
  %743 = load i32, ptr %742, align 4, !tbaa !9
  %744 = load i32, ptr %48, align 4, !tbaa !9
  %745 = sub nsw i32 %743, %744
  %746 = add nsw i32 %745, 1
  store i32 %746, ptr %53, align 4, !tbaa !9
  %747 = load i32, ptr %48, align 4, !tbaa !9
  %748 = sub nsw i32 %747, 1
  store i32 %748, ptr %67, align 4, !tbaa !9
  %749 = load i32, ptr %47, align 4, !tbaa !9
  %750 = load i32, ptr %48, align 4, !tbaa !9
  %751 = sub nsw i32 %749, %750
  %752 = add nsw i32 %751, 1
  store i32 %752, ptr %40, align 4, !tbaa !9
  %753 = load ptr, ptr %20, align 8, !tbaa !5
  %754 = load ptr, ptr %22, align 8, !tbaa !5
  %755 = load ptr, ptr %24, align 8, !tbaa !5
  %756 = load ptr, ptr %25, align 8, !tbaa !5
  %757 = load ptr, ptr %26, align 8, !tbaa !5
  %758 = load i32, ptr %48, align 4, !tbaa !9
  %759 = load i32, ptr %38, align 4, !tbaa !9
  %760 = mul nsw i32 %758, %759
  %761 = add nsw i32 %760, 1
  %762 = sext i32 %761 to i64
  %763 = getelementptr inbounds %struct.complex, ptr %757, i64 %762
  %764 = load ptr, ptr %27, align 8, !tbaa !5
  %765 = load ptr, ptr %29, align 8, !tbaa !5
  %766 = load ptr, ptr %30, align 8, !tbaa !5
  %767 = load ptr, ptr %31, align 8, !tbaa !5
  %768 = load i32, ptr %48, align 4, !tbaa !9
  %769 = sext i32 %768 to i64
  %770 = getelementptr inbounds i32, ptr %767, i64 %769
  %771 = load ptr, ptr %32, align 8, !tbaa !5
  %772 = load i32, ptr %48, align 4, !tbaa !9
  %773 = sext i32 %772 to i64
  %774 = getelementptr inbounds %struct.complex, ptr %771, i64 %773
  %775 = load ptr, ptr %35, align 8, !tbaa !5
  %776 = load i32, ptr %48, align 4, !tbaa !9
  %777 = sext i32 %776 to i64
  %778 = getelementptr inbounds float, ptr %775, i64 %777
  %779 = load ptr, ptr %35, align 8, !tbaa !5
  %780 = load ptr, ptr %21, align 8, !tbaa !5
  %781 = load i32, ptr %780, align 4, !tbaa !9
  %782 = load i32, ptr %48, align 4, !tbaa !9
  %783 = add nsw i32 %781, %782
  %784 = sext i32 %783 to i64
  %785 = getelementptr inbounds float, ptr %779, i64 %784
  %786 = load ptr, ptr %33, align 8, !tbaa !5
  %787 = getelementptr inbounds %struct.complex, ptr %786, i64 1
  %788 = call i32 @claqp2rk_(ptr noundef %753, ptr noundef %53, ptr noundef %754, ptr noundef %67, ptr noundef %40, ptr noundef %755, ptr noundef %756, ptr noundef %61, ptr noundef %45, ptr noundef %763, ptr noundef %764, ptr noundef %58, ptr noundef %765, ptr noundef %766, ptr noundef %770, ptr noundef %774, ptr noundef %778, ptr noundef %785, ptr noundef %787, ptr noundef %52)
  %789 = load i32, ptr %48, align 4, !tbaa !9
  %790 = sub nsw i32 %789, 1
  %791 = load i32, ptr %58, align 4, !tbaa !9
  %792 = add nsw i32 %790, %791
  %793 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 %792, ptr %793, align 4, !tbaa !9
  %794 = load i32, ptr %52, align 4, !tbaa !9
  %795 = load i32, ptr %53, align 4, !tbaa !9
  %796 = icmp sgt i32 %794, %795
  br i1 %796, label %797, label %807

797:                                              ; preds = %741
  %798 = load ptr, ptr %37, align 8, !tbaa !5
  %799 = load i32, ptr %798, align 4, !tbaa !9
  %800 = icmp eq i32 %799, 0
  br i1 %800, label %801, label %807

801:                                              ; preds = %797
  %802 = load i32, ptr %67, align 4, !tbaa !9
  %803 = shl i32 %802, 1
  %804 = load i32, ptr %52, align 4, !tbaa !9
  %805 = add nsw i32 %803, %804
  %806 = load ptr, ptr %37, align 8, !tbaa !5
  store i32 %805, ptr %806, align 4, !tbaa !9
  br label %820

807:                                              ; preds = %797, %741
  %808 = load i32, ptr %52, align 4, !tbaa !9
  %809 = load i32, ptr %53, align 4, !tbaa !9
  %810 = icmp sle i32 %808, %809
  br i1 %810, label %811, label %819

811:                                              ; preds = %807
  %812 = load i32, ptr %52, align 4, !tbaa !9
  %813 = icmp sgt i32 %812, 0
  br i1 %813, label %814, label %819

814:                                              ; preds = %811
  %815 = load i32, ptr %67, align 4, !tbaa !9
  %816 = load i32, ptr %52, align 4, !tbaa !9
  %817 = add nsw i32 %815, %816
  %818 = load ptr, ptr %37, align 8, !tbaa !5
  store i32 %817, ptr %818, align 4, !tbaa !9
  br label %819

819:                                              ; preds = %814, %811, %807
  br label %820

820:                                              ; preds = %819, %801
  br label %890

821:                                              ; preds = %737
  %822 = load i32, ptr %47, align 4, !tbaa !9
  %823 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 %822, ptr %823, align 4, !tbaa !9
  %824 = load ptr, ptr %28, align 8, !tbaa !5
  %825 = load i32, ptr %824, align 4, !tbaa !9
  %826 = load i32, ptr %54, align 4, !tbaa !9
  %827 = icmp slt i32 %825, %826
  br i1 %827, label %828, label %886

828:                                              ; preds = %821
  %829 = load ptr, ptr %21, align 8, !tbaa !5
  %830 = load i32, ptr %829, align 4, !tbaa !9
  %831 = load ptr, ptr %28, align 8, !tbaa !5
  %832 = load i32, ptr %831, align 4, !tbaa !9
  %833 = sub nsw i32 %830, %832
  store i32 %833, ptr %40, align 4, !tbaa !9
  %834 = load ptr, ptr %28, align 8, !tbaa !5
  %835 = load i32, ptr %834, align 4, !tbaa !9
  %836 = load ptr, ptr %35, align 8, !tbaa !5
  %837 = load ptr, ptr %28, align 8, !tbaa !5
  %838 = load i32, ptr %837, align 4, !tbaa !9
  %839 = add nsw i32 %838, 1
  %840 = sext i32 %839 to i64
  %841 = getelementptr inbounds float, ptr %836, i64 %840
  %842 = call i32 @isamax_(ptr noundef %40, ptr noundef %841, ptr noundef @c__1)
  %843 = add nsw i32 %835, %842
  store i32 %843, ptr %49, align 4, !tbaa !9
  %844 = load ptr, ptr %35, align 8, !tbaa !5
  %845 = load i32, ptr %49, align 4, !tbaa !9
  %846 = sext i32 %845 to i64
  %847 = getelementptr inbounds float, ptr %844, i64 %846
  %848 = load float, ptr %847, align 4, !tbaa !15
  %849 = load ptr, ptr %29, align 8, !tbaa !5
  store float %848, ptr %849, align 4, !tbaa !15
  %850 = load ptr, ptr %28, align 8, !tbaa !5
  %851 = load i32, ptr %850, align 4, !tbaa !9
  %852 = icmp eq i32 %851, 0
  br i1 %852, label %853, label %855

853:                                              ; preds = %828
  %854 = load ptr, ptr %30, align 8, !tbaa !5
  store float 1.000000e+00, ptr %854, align 4, !tbaa !15
  br label %861

855:                                              ; preds = %828
  %856 = load ptr, ptr %29, align 8, !tbaa !5
  %857 = load float, ptr %856, align 4, !tbaa !15
  %858 = load float, ptr %45, align 4, !tbaa !15
  %859 = fdiv float %857, %858
  %860 = load ptr, ptr %30, align 8, !tbaa !5
  store float %859, ptr %860, align 4, !tbaa !15
  br label %861

861:                                              ; preds = %855, %853
  %862 = load i32, ptr %54, align 4, !tbaa !9
  store i32 %862, ptr %40, align 4, !tbaa !9
  %863 = load ptr, ptr %28, align 8, !tbaa !5
  %864 = load i32, ptr %863, align 4, !tbaa !9
  %865 = add nsw i32 %864, 1
  store i32 %865, ptr %48, align 4, !tbaa !9
  br label %866

866:                                              ; preds = %882, %861
  %867 = load i32, ptr %48, align 4, !tbaa !9
  %868 = load i32, ptr %40, align 4, !tbaa !9
  %869 = icmp sle i32 %867, %868
  br i1 %869, label %870, label %885

870:                                              ; preds = %866
  %871 = load i32, ptr %48, align 4, !tbaa !9
  store i32 %871, ptr %41, align 4, !tbaa !9
  %872 = load ptr, ptr %32, align 8, !tbaa !5
  %873 = load i32, ptr %41, align 4, !tbaa !9
  %874 = sext i32 %873 to i64
  %875 = getelementptr inbounds %struct.complex, ptr %872, i64 %874
  %876 = getelementptr inbounds %struct.complex, ptr %875, i32 0, i32 0
  store float 0.000000e+00, ptr %876, align 4, !tbaa !11
  %877 = load ptr, ptr %32, align 8, !tbaa !5
  %878 = load i32, ptr %41, align 4, !tbaa !9
  %879 = sext i32 %878 to i64
  %880 = getelementptr inbounds %struct.complex, ptr %877, i64 %879
  %881 = getelementptr inbounds %struct.complex, ptr %880, i32 0, i32 1
  store float 0.000000e+00, ptr %881, align 4, !tbaa !14
  br label %882

882:                                              ; preds = %870
  %883 = load i32, ptr %48, align 4, !tbaa !9
  %884 = add nsw i32 %883, 1
  store i32 %884, ptr %48, align 4, !tbaa !9
  br label %866, !llvm.loop !23

885:                                              ; preds = %866
  br label %889

886:                                              ; preds = %821
  %887 = load ptr, ptr %29, align 8, !tbaa !5
  store float 0.000000e+00, ptr %887, align 4, !tbaa !15
  %888 = load ptr, ptr %30, align 8, !tbaa !5
  store float 0.000000e+00, ptr %888, align 4, !tbaa !15
  br label %889

889:                                              ; preds = %886, %885
  br label %890

890:                                              ; preds = %889, %820
  %891 = load i32, ptr %62, align 4, !tbaa !9
  %892 = sitofp i32 %891 to float
  %893 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 0
  store float %892, ptr %893, align 4, !tbaa !11
  %894 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 1
  store float 0.000000e+00, ptr %894, align 4, !tbaa !14
  %895 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 0
  %896 = load float, ptr %895, align 4, !tbaa !11
  %897 = load ptr, ptr %33, align 8, !tbaa !5
  %898 = getelementptr inbounds %struct.complex, ptr %897, i64 1
  %899 = getelementptr inbounds %struct.complex, ptr %898, i32 0, i32 0
  store float %896, ptr %899, align 4, !tbaa !11
  %900 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 1
  %901 = load float, ptr %900, align 4, !tbaa !14
  %902 = load ptr, ptr %33, align 8, !tbaa !5
  %903 = getelementptr inbounds %struct.complex, ptr %902, i64 1
  %904 = getelementptr inbounds %struct.complex, ptr %903, i32 0, i32 1
  store float %901, ptr %904, align 4, !tbaa !14
  store i32 0, ptr %19, align 4
  store i32 1, ptr %68, align 4
  br label %905

905:                                              ; preds = %890, %717, %514, %416, %361, %312, %235, %230, %222
  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
  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
  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
  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 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 8, 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
  %906 = load i32, ptr %19, align 4
  ret i32 %906
}

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

declare i32 @sisnan_(ptr noundef) #2

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) #2

declare float @scnrm2_(ptr noundef, ptr noundef, ptr noundef) #2

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

declare float @slamch_(ptr noundef) #2

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

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

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind }

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

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


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

@c__1 = external hidden global i32, align 4
@.str = external hidden unnamed_addr constant [9 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c_n1 = external hidden global i32, align 4
@.str.2 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [13 x i8], align 1
@c__3 = external hidden global i32, align 4
@c__2 = external hidden global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @cgeqp3rk_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr nocapture noundef readonly %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr nocapture noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr nocapture noundef readonly %14, ptr noundef %15, ptr noundef %16, ptr nocapture noundef %17) local_unnamed_addr #0 {
  %19 = alloca i32, align 4
  %20 = alloca float, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  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 4, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #5
  %29 = load i32, ptr %7, align 4, !tbaa !5
  %narrow = xor i32 %29, -1
  %30 = sext i32 %narrow to i64
  %31 = getelementptr inbounds %struct.complex, ptr %6, i64 %30
  %32 = getelementptr inbounds i8, ptr %11, i64 -4
  %33 = getelementptr inbounds i8, ptr %12, i64 -8
  %34 = getelementptr inbounds i8, ptr %15, i64 -4
  store i32 0, ptr %17, align 4, !tbaa !5
  %35 = load i32, ptr %14, align 4, !tbaa !5
  %36 = icmp eq i32 %35, -1
  %37 = load i32, ptr %0, align 4, !tbaa !5
  %38 = icmp slt i32 %37, 0
  br i1 %38, label %.thread361.sink.split, label %39

39:                                               ; preds = %18
  %40 = load i32, ptr %1, align 4, !tbaa !5
  %41 = icmp slt i32 %40, 0
  br i1 %41, label %.thread361.sink.split, label %42

42:                                               ; preds = %39
  %43 = load i32, ptr %2, align 4, !tbaa !5
  %44 = icmp slt i32 %43, 0
  br i1 %44, label %.thread361.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 %.thread361.sink.split, label %48

48:                                               ; preds = %45
  %49 = tail call i32 @sisnan_(ptr noundef %4) #5
  %.not = icmp eq i32 %49, 0
  br i1 %.not, label %50, label %.thread361.sink.split

50:                                               ; preds = %48
  %51 = tail call i32 @sisnan_(ptr noundef %5) #5
  %.not334 = icmp eq i32 %51, 0
  br i1 %.not334, label %52, label %.thread361.sink.split

52:                                               ; preds = %50
  %53 = load i32, ptr %7, align 4, !tbaa !5
  %54 = load i32, ptr %0, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.smax.i32(i32 %54, i32 1)
  %55 = icmp slt i32 %53, %spec.select
  br i1 %55, label %.thread361.sink.split, label %56

56:                                               ; preds = %52
  %.pr = load i32, ptr %17, align 4, !tbaa !5
  %57 = icmp eq i32 %.pr, 0
  br i1 %57, label %58, label %.thread361

58:                                               ; preds = %56
  %59 = load i32, ptr %1, align 4, !tbaa !5
  %. = tail call i32 @llvm.smin.i32(i32 %54, i32 %59)
  %60 = icmp eq i32 %., 0
  br i1 %60, label %73, label %61

61:                                               ; preds = %58
  %62 = load i32, ptr %2, align 4, !tbaa !5
  %63 = add i32 %59, -1
  %64 = add i32 %63, %62
  %65 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, i32 noundef 8, i32 noundef 1) #5
  %66 = load i32, ptr %1, align 4, !tbaa !5
  %67 = shl i32 %66, 1
  %68 = load i32, ptr %2, align 4, !tbaa !5
  %69 = add i32 %66, 1
  %70 = add i32 %69, %68
  %71 = mul nsw i32 %70, %65
  %72 = add nsw i32 %71, %67
  br label %73

73:                                               ; preds = %58, %61
  %74 = phi i32 [ %66, %61 ], [ %59, %58 ]
  %.0310 = phi i32 [ %65, %61 ], [ undef, %58 ]
  %.0308 = phi i32 [ %72, %61 ], [ 1, %58 ]
  %.0 = phi i32 [ %64, %61 ], [ 1, %58 ]
  %75 = sitofp i32 %.0308 to float
  store float %75, ptr %13, align 4, !tbaa !9
  %76 = getelementptr inbounds i8, ptr %13, i64 4
  store float 0.000000e+00, ptr %76, align 4, !tbaa !12
  %77 = load i32, ptr %14, align 4, !tbaa !5
  %78 = icmp sge i32 %77, %.0
  %or.cond = select i1 %78, i1 true, i1 %36
  br i1 %or.cond, label %.thread, label %.thread361.sink.split

.thread:                                          ; preds = %73
  %.pr356.pr = load i32, ptr %17, align 4, !tbaa !5
  %.not336 = icmp eq i32 %.pr356.pr, 0
  br i1 %.not336, label %82, label %.thread361

.thread361.sink.split:                            ; preds = %73, %52, %50, %48, %45, %42, %39, %18
  %.sink = phi i32 [ -1, %18 ], [ -2, %39 ], [ -3, %42 ], [ -4, %45 ], [ -5, %48 ], [ -6, %50 ], [ -8, %52 ], [ -15, %73 ]
  store i32 %.sink, ptr %17, align 4, !tbaa !5
  br label %.thread361

.thread361:                                       ; preds = %.thread361.sink.split, %56, %.thread
  %79 = phi i32 [ %.pr356.pr, %.thread ], [ %.pr, %56 ], [ %.sink, %.thread361.sink.split ]
  %80 = sub nsw i32 0, %79
  store i32 %80, ptr %19, align 4, !tbaa !5
  %81 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %19) #5
  br label %284

82:                                               ; preds = %.thread
  br i1 %36, label %284, label %83

83:                                               ; preds = %82
  br i1 %60, label %84, label %85

84:                                               ; preds = %83
  store i32 0, ptr %8, align 4, !tbaa !5
  store float 0.000000e+00, ptr %9, align 4, !tbaa !13
  store float 0.000000e+00, ptr %10, align 4, !tbaa !13
  store float %75, ptr %13, align 4, !tbaa !9
  store float 0.000000e+00, ptr %76, align 4, !tbaa !12
  br label %284

85:                                               ; preds = %83
  %.not337374 = icmp slt i32 %74, 1
  br i1 %.not337374, label %._crit_edge.thread, label %.lr.ph.preheader

._crit_edge.thread:                               ; preds = %85
  store i32 %74, ptr %19, align 4, !tbaa !5
  br label %._crit_edge380

.lr.ph.preheader:                                 ; preds = %85
  %86 = add nuw i32 %74, 1
  %wide.trip.count = zext i32 %86 to i64
  %87 = zext nneg i32 %74 to i64
  %min.iters.check = icmp ult i32 %74, 8
  br i1 %min.iters.check, label %.lr.ph.preheader446, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph.preheader
  %n.vec = and i64 %87, 2147483640
  %ind.end = or disjoint i64 %n.vec, 1
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %vec.ind = phi <4 x i32> [ <i32 1, i32 2, i32 3, i32 4>, %vector.ph ], [ %vec.ind.next, %vector.body ]
  %step.add = add <4 x i32> %vec.ind, <i32 4, i32 4, i32 4, i32 4>
  %88 = getelementptr i32, ptr %11, i64 %index
  %89 = getelementptr inbounds i8, ptr %88, i64 16
  store <4 x i32> %vec.ind, ptr %88, align 4, !tbaa !5
  store <4 x i32> %step.add, ptr %89, align 4, !tbaa !5
  %index.next = add nuw i64 %index, 8
  %vec.ind.next = add <4 x i32> %vec.ind, <i32 8, i32 8, i32 8, i32 8>
  %90 = icmp eq i64 %index.next, %n.vec
  br i1 %90, label %middle.block, label %vector.body, !llvm.loop !14

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

.lr.ph.preheader446:                              ; preds = %middle.block, %.lr.ph.preheader
  %indvars.iv.ph = phi i64 [ 1, %.lr.ph.preheader ], [ %ind.end, %middle.block ]
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader446, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ %indvars.iv.ph, %.lr.ph.preheader446 ]
  %91 = getelementptr inbounds i32, ptr %32, i64 %indvars.iv
  %92 = trunc nuw nsw i64 %indvars.iv to i32
  store i32 %92, ptr %91, align 4, !tbaa !5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !18

._crit_edge:                                      ; preds = %.lr.ph, %middle.block
  %.pre = load i32, ptr %1, align 4, !tbaa !5
  store i32 %.pre, ptr %19, align 4, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %31, i64 8
  %.not338376 = icmp slt i32 %.pre, 1
  br i1 %.not338376, label %._crit_edge380, label %.lr.ph379.preheader

.lr.ph379.preheader:                              ; preds = %._crit_edge
  %93 = sext i32 %29 to i64
  %94 = add nuw i32 %.pre, 1
  %wide.trip.count414 = zext i32 %94 to i64
  br label %.lr.ph379

.lr.ph379:                                        ; preds = %.lr.ph379.preheader, %.lr.ph379
  %indvars.iv411 = phi i64 [ 1, %.lr.ph379.preheader ], [ %indvars.iv.next412, %.lr.ph379 ]
  %95 = mul nsw i64 %indvars.iv411, %93
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %95
  %96 = tail call float @scnrm2_(ptr noundef nonnull %0, ptr noundef %gep, ptr noundef nonnull @c__1) #5
  %97 = getelementptr inbounds float, ptr %34, i64 %indvars.iv411
  store float %96, ptr %97, align 4, !tbaa !13
  %98 = load i32, ptr %1, align 4, !tbaa !5
  %99 = sext i32 %98 to i64
  %100 = getelementptr float, ptr %34, i64 %indvars.iv411
  %101 = getelementptr float, ptr %100, i64 %99
  store float %96, ptr %101, align 4, !tbaa !13
  %indvars.iv.next412 = add nuw nsw i64 %indvars.iv411, 1
  %exitcond415.not = icmp eq i64 %indvars.iv.next412, %wide.trip.count414
  br i1 %exitcond415.not, label %._crit_edge380, label %.lr.ph379, !llvm.loop !19

._crit_edge380:                                   ; preds = %.lr.ph379, %._crit_edge.thread, %._crit_edge
  %102 = tail call i32 @isamax_(ptr noundef nonnull %1, ptr noundef %15, ptr noundef nonnull @c__1) #5
  store i32 %102, ptr %26, align 4, !tbaa !5
  %103 = call i32 @sisnan_(ptr noundef nonnull %20) #5
  %.not339 = icmp eq i32 %103, 0
  br i1 %.not339, label %106, label %104

104:                                              ; preds = %._crit_edge380
  store i32 0, ptr %8, align 4, !tbaa !5
  store i32 %102, ptr %17, align 4, !tbaa !5
  %105 = load float, ptr %20, align 4, !tbaa !13
  store float %105, ptr %9, align 4, !tbaa !13
  store float %105, ptr %10, align 4, !tbaa !13
  store float %75, ptr %13, align 4, !tbaa !9
  store float 0.000000e+00, ptr %76, align 4, !tbaa !12
  br label %284

106:                                              ; preds = %._crit_edge380
  %107 = load float, ptr %20, align 4, !tbaa !13
  %108 = fcmp oeq float %107, 0.000000e+00
  br i1 %108, label %109, label %112

109:                                              ; preds = %106
  store i32 0, ptr %8, align 4, !tbaa !5
  store float 0.000000e+00, ptr %9, align 4, !tbaa !13
  store float 0.000000e+00, ptr %10, align 4, !tbaa !13
  %.not352401 = icmp slt i32 %., 1
  br i1 %.not352401, label %._crit_edge405, label %.lr.ph404.preheader

.lr.ph404.preheader:                              ; preds = %109
  %110 = zext nneg i32 %. to i64
  %111 = shl nuw nsw i64 %110, 3
  call void @llvm.memset.p0.i64(ptr align 4 %12, i8 0, i64 %111, i1 false), !tbaa !13
  br label %._crit_edge405

._crit_edge405:                                   ; preds = %.lr.ph404.preheader, %109
  store float %75, ptr %13, align 4, !tbaa !9
  store float 0.000000e+00, ptr %76, align 4, !tbaa !12
  br label %284

112:                                              ; preds = %106
  %113 = call float @slamch_(ptr noundef nonnull @.str.2) #5
  %114 = load float, ptr %20, align 4, !tbaa !13
  %115 = fcmp ogt float %114, %113
  br i1 %115, label %116, label %119

116:                                              ; preds = %112
  %117 = load i32, ptr %1, align 4, !tbaa !5
  %118 = add nsw i32 %102, %117
  store i32 %118, ptr %17, align 4, !tbaa !5
  br label %119

119:                                              ; preds = %116, %112
  %120 = load i32, ptr %3, align 4, !tbaa !5
  %121 = icmp eq i32 %120, 0
  br i1 %121, label %122, label %125

122:                                              ; preds = %119
  store i32 0, ptr %8, align 4, !tbaa !5
  store float %114, ptr %9, align 4, !tbaa !13
  store float 1.000000e+00, ptr %10, align 4, !tbaa !13
  %.not351396 = icmp slt i32 %., 1
  br i1 %.not351396, label %._crit_edge400, label %.lr.ph399.preheader

.lr.ph399.preheader:                              ; preds = %122
  %123 = zext nneg i32 %. to i64
  %124 = shl nuw nsw i64 %123, 3
  call void @llvm.memset.p0.i64(ptr align 4 %12, i8 0, i64 %124, i1 false), !tbaa !13
  br label %._crit_edge400

._crit_edge400:                                   ; preds = %.lr.ph399.preheader, %122
  store float %75, ptr %13, align 4, !tbaa !9
  store float 0.000000e+00, ptr %76, align 4, !tbaa !12
  br label %284

125:                                              ; preds = %119
  %126 = call float @slamch_(ptr noundef nonnull @.str.3) #5
  %127 = load float, ptr %4, align 4, !tbaa !13
  %128 = fcmp ult float %127, 0.000000e+00
  br i1 %128, label %135, label %129

129:                                              ; preds = %125
  %130 = call float @slamch_(ptr noundef nonnull @.str.4) #5
  %131 = load float, ptr %4, align 4, !tbaa !13
  %132 = fmul float %130, 2.000000e+00
  %133 = fcmp oge float %131, %132
  %134 = select i1 %133, float %131, float %132
  store float %134, ptr %4, align 4, !tbaa !13
  br label %135

135:                                              ; preds = %129, %125
  %136 = phi float [ %134, %129 ], [ %127, %125 ]
  %137 = load float, ptr %5, align 4, !tbaa !13
  %138 = fcmp ult float %137, 0.000000e+00
  br i1 %138, label %140, label %139

139:                                              ; preds = %135
  %.inv = fcmp oge float %137, %126
  %.353 = select i1 %.inv, float %137, float %126
  store float %.353, ptr %5, align 4, !tbaa !13
  %.pre428 = load float, ptr %4, align 4, !tbaa !13
  br label %140

140:                                              ; preds = %139, %135
  %141 = phi float [ %.353, %139 ], [ %137, %135 ]
  %142 = phi float [ %.pre428, %139 ], [ %136, %135 ]
  %143 = load i32, ptr %3, align 4, !tbaa !5
  %.0312. = call i32 @llvm.smin.i32(i32 %143, i32 %.)
  %144 = load float, ptr %20, align 4, !tbaa !13
  %145 = fcmp ugt float %144, %142
  %146 = fcmp ult float %141, 1.000000e+00
  %or.cond436 = select i1 %145, i1 %146, i1 false
  br i1 %or.cond436, label %150, label %147

147:                                              ; preds = %140
  store i32 0, ptr %8, align 4, !tbaa !5
  store float %144, ptr %9, align 4, !tbaa !13
  store float 1.000000e+00, ptr %10, align 4, !tbaa !13
  %.not350381 = icmp slt i32 %., 1
  br i1 %.not350381, label %._crit_edge385, label %.lr.ph384.preheader

.lr.ph384.preheader:                              ; preds = %147
  %148 = zext nneg i32 %. to i64
  %149 = shl nuw nsw i64 %148, 3
  call void @llvm.memset.p0.i64(ptr align 4 %12, i8 0, i64 %149, i1 false), !tbaa !13
  br label %._crit_edge385

._crit_edge385:                                   ; preds = %.lr.ph384.preheader, %147
  store float %75, ptr %13, align 4, !tbaa !9
  store float 0.000000e+00, ptr %76, align 4, !tbaa !12
  br label %284

150:                                              ; preds = %140
  %151 = icmp sgt i32 %.0310, 1
  %152 = icmp slt i32 %.0310, %.
  %or.cond354 = and i1 %151, %152
  br i1 %or.cond354, label %153, label %170

153:                                              ; preds = %150
  store i32 0, ptr %19, align 4, !tbaa !5
  %154 = call i32 @ilaenv_(ptr noundef nonnull @c__3, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, i32 noundef 8, i32 noundef 1) #5
  %155 = load i32, ptr %19, align 4
  %156 = call i32 @llvm.smax.i32(i32 %155, i32 %154)
  %157 = icmp slt i32 %156, %.
  br i1 %157, label %158, label %170

158:                                              ; preds = %153
  %159 = load i32, ptr %14, align 4, !tbaa !5
  %160 = icmp slt i32 %159, %.0308
  br i1 %160, label %161, label %170

161:                                              ; preds = %158
  %162 = load i32, ptr %1, align 4, !tbaa !5
  %163 = shl i32 %162, 1
  %164 = sub nsw i32 %159, %163
  %165 = add nsw i32 %162, 1
  %166 = sdiv i32 %164, %165
  store i32 2, ptr %19, align 4, !tbaa !5
  %167 = call i32 @ilaenv_(ptr noundef nonnull @c__2, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, i32 noundef 8, i32 noundef 1) #5
  %168 = load i32, ptr %19, align 4
  %169 = call i32 @llvm.smax.i32(i32 %168, i32 %167)
  br label %170

170:                                              ; preds = %153, %161, %158, %150
  %.0313 = phi i32 [ %169, %161 ], [ 2, %158 ], [ 2, %153 ], [ 2, %150 ]
  %.2 = phi i32 [ %166, %161 ], [ %.0310, %158 ], [ %.0310, %153 ], [ %.0310, %150 ]
  %.0309 = phi i32 [ %156, %161 ], [ %156, %158 ], [ %156, %153 ], [ 0, %150 ]
  store i32 0, ptr %21, align 4, !tbaa !5
  %171 = load i32, ptr %3, align 4, !tbaa !5
  %172 = sub nsw i32 %., %.0309
  %173 = call i32 @llvm.smin.i32(i32 %171, i32 %172)
  %.not344 = icmp slt i32 %.2, %.0313
  br i1 %.not344, label %.loopexit371, label %174

174:                                              ; preds = %170
  %175 = icmp slt i32 %.2, %.0312.
  %176 = icmp sgt i32 %173, 0
  %or.cond3 = select i1 %175, i1 %176, i1 false
  br i1 %or.cond3, label %.preheader, label %.loopexit371

.preheader:                                       ; preds = %174
  %177 = add nuw i32 %173, 1
  %178 = getelementptr i8, ptr %31, i64 8
  br label %179

179:                                              ; preds = %.preheader, %220
  %.5.neg391 = phi i32 [ -1, %.preheader ], [ %.5.neg, %220 ]
  %.5390 = phi i32 [ 1, %.preheader ], [ %222, %220 ]
  %180 = add i32 %177, %.5.neg391
  %181 = call i32 @llvm.smin.i32(i32 %.2, i32 %180)
  store i32 %181, ptr %24, align 4, !tbaa !5
  %182 = load i32, ptr %1, align 4, !tbaa !5
  %183 = add i32 %.5.neg391, 1
  %184 = add i32 %183, %182
  store i32 %184, ptr %23, align 4, !tbaa !5
  %185 = add nsw i32 %.5390, -1
  store i32 %185, ptr %28, align 4, !tbaa !5
  %186 = load i32, ptr %2, align 4, !tbaa !5
  %187 = add i32 %184, %186
  store i32 %187, ptr %19, align 4, !tbaa !5
  %188 = mul nsw i32 %.5390, %29
  %189 = sext i32 %188 to i64
  %gep387 = getelementptr %struct.complex, ptr %178, i64 %189
  %190 = sext i32 %.5390 to i64
  %191 = getelementptr inbounds i32, ptr %32, i64 %190
  %192 = getelementptr inbounds %struct.complex, ptr %33, i64 %190
  %193 = getelementptr inbounds float, ptr %34, i64 %190
  %194 = add nsw i32 %182, %.5390
  %195 = sext i32 %194 to i64
  %196 = getelementptr inbounds float, ptr %34, i64 %195
  %197 = sext i32 %181 to i64
  %gep389 = getelementptr %struct.complex, ptr %13, i64 %197
  %198 = call i32 @claqp3rk_(ptr noundef nonnull %0, ptr noundef nonnull %23, ptr noundef nonnull %2, ptr noundef nonnull %28, ptr noundef nonnull %24, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef nonnull %26, ptr noundef nonnull %20, ptr noundef %gep387, ptr noundef nonnull %7, ptr noundef nonnull %21, ptr noundef nonnull %27, ptr noundef %9, ptr noundef %10, ptr noundef nonnull %191, ptr noundef nonnull %192, ptr noundef nonnull %193, ptr noundef nonnull %196, ptr noundef nonnull %13, ptr noundef %gep389, ptr noundef nonnull %19, ptr noundef %16, ptr noundef nonnull %22) #5
  %199 = load i32, ptr %22, align 4
  %200 = load i32, ptr %23, align 4, !tbaa !5
  %201 = icmp sgt i32 %199, %200
  br i1 %201, label %202, label %209

202:                                              ; preds = %179
  %203 = load i32, ptr %17, align 4, !tbaa !5
  %204 = icmp eq i32 %203, 0
  br i1 %204, label %205, label %209

205:                                              ; preds = %202
  %206 = load i32, ptr %28, align 4, !tbaa !5
  %207 = shl i32 %206, 1
  %208 = add nsw i32 %207, %199
  store i32 %208, ptr %17, align 4, !tbaa !5
  br label %209

209:                                              ; preds = %205, %202, %179
  %210 = load i32, ptr %21, align 4, !tbaa !5
  %.not349 = icmp eq i32 %210, 0
  br i1 %.not349, label %220, label %211

211:                                              ; preds = %209
  %212 = load i32, ptr %28, align 4, !tbaa !5
  %213 = load i32, ptr %27, align 4, !tbaa !5
  %214 = add nsw i32 %213, %212
  store i32 %214, ptr %8, align 4, !tbaa !5
  %215 = icmp sle i32 %199, %200
  %216 = icmp sgt i32 %199, 0
  %or.cond5 = and i1 %216, %215
  br i1 %or.cond5, label %217, label %219

217:                                              ; preds = %211
  %218 = add nsw i32 %212, %199
  store i32 %218, ptr %17, align 4, !tbaa !5
  br label %219

219:                                              ; preds = %217, %211
  store float %75, ptr %13, align 4, !tbaa !9
  store float 0.000000e+00, ptr %76, align 4, !tbaa !12
  br label %284

220:                                              ; preds = %209
  %221 = load i32, ptr %27, align 4, !tbaa !5
  %222 = add nsw i32 %221, %.5390
  %.5.neg = sub i32 0, %222
  %.not345 = icmp sgt i32 %222, %173
  br i1 %.not345, label %.loopexit371, label %179, !llvm.loop !20

.loopexit371:                                     ; preds = %220, %174, %170
  %.6 = phi i32 [ 1, %174 ], [ 1, %170 ], [ %222, %220 ]
  %.not346 = icmp sgt i32 %.6, %.0312.
  br i1 %.not346, label %259, label %223

223:                                              ; preds = %.loopexit371
  %224 = load i32, ptr %1, align 4, !tbaa !5
  %reass.sub = sub i32 %224, %.6
  %225 = add i32 %reass.sub, 1
  store i32 %225, ptr %23, align 4, !tbaa !5
  %226 = add nsw i32 %.6, -1
  store i32 %226, ptr %28, align 4, !tbaa !5
  %227 = add i32 %.0312., 1
  %228 = sub i32 %227, %.6
  store i32 %228, ptr %19, align 4, !tbaa !5
  %229 = mul nsw i32 %.6, %29
  %230 = sext i32 %229 to i64
  %231 = getelementptr %struct.complex, ptr %31, i64 %230
  %232 = getelementptr i8, ptr %231, i64 8
  %233 = sext i32 %.6 to i64
  %234 = getelementptr inbounds i32, ptr %32, i64 %233
  %235 = getelementptr inbounds %struct.complex, ptr %33, i64 %233
  %236 = getelementptr inbounds float, ptr %34, i64 %233
  %237 = add nsw i32 %224, %.6
  %238 = sext i32 %237 to i64
  %239 = getelementptr inbounds float, ptr %34, i64 %238
  %240 = call i32 @claqp2rk_(ptr noundef nonnull %0, ptr noundef nonnull %23, ptr noundef nonnull %2, ptr noundef nonnull %28, ptr noundef nonnull %19, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef nonnull %26, ptr noundef nonnull %20, ptr noundef %232, ptr noundef nonnull %7, ptr noundef nonnull %25, ptr noundef %9, ptr noundef %10, ptr noundef nonnull %234, ptr noundef nonnull %235, ptr noundef nonnull %236, ptr noundef nonnull %239, ptr noundef nonnull %13, ptr noundef nonnull %22) #5
  %241 = load i32, ptr %25, align 4, !tbaa !5
  %242 = add nsw i32 %241, %226
  store i32 %242, ptr %8, align 4, !tbaa !5
  %243 = load i32, ptr %22, align 4
  %244 = load i32, ptr %23, align 4, !tbaa !5
  %245 = icmp sgt i32 %243, %244
  br i1 %245, label %246, label %253

246:                                              ; preds = %223
  %247 = load i32, ptr %17, align 4, !tbaa !5
  %248 = icmp eq i32 %247, 0
  br i1 %248, label %249, label %253

249:                                              ; preds = %246
  %250 = load i32, ptr %28, align 4, !tbaa !5
  %251 = shl i32 %250, 1
  %252 = add nsw i32 %251, %243
  store i32 %252, ptr %17, align 4, !tbaa !5
  br label %.loopexit

253:                                              ; preds = %246, %223
  %254 = icmp sle i32 %243, %244
  %255 = icmp sgt i32 %243, 0
  %or.cond7 = and i1 %255, %254
  br i1 %or.cond7, label %256, label %.loopexit

256:                                              ; preds = %253
  %257 = load i32, ptr %28, align 4, !tbaa !5
  %258 = add nsw i32 %257, %243
  store i32 %258, ptr %17, align 4, !tbaa !5
  br label %.loopexit

259:                                              ; preds = %.loopexit371
  store i32 %.0312., ptr %8, align 4, !tbaa !5
  %260 = icmp slt i32 %143, %.
  br i1 %260, label %261, label %283

261:                                              ; preds = %259
  %262 = load i32, ptr %1, align 4, !tbaa !5
  %263 = sub nsw i32 %262, %.0312.
  store i32 %263, ptr %19, align 4, !tbaa !5
  %264 = sext i32 %.0312. to i64
  %265 = getelementptr float, ptr %34, i64 %264
  %266 = getelementptr i8, ptr %265, i64 4
  %267 = call i32 @isamax_(ptr noundef nonnull %19, ptr noundef %266, ptr noundef nonnull @c__1) #5
  %268 = add nsw i32 %267, %.0312.
  %269 = sext i32 %268 to i64
  %270 = getelementptr inbounds float, ptr %34, i64 %269
  %271 = load float, ptr %270, align 4, !tbaa !13
  store float %271, ptr %9, align 4, !tbaa !13
  %272 = load i32, ptr %8, align 4, !tbaa !5
  %273 = icmp eq i32 %272, 0
  %274 = load float, ptr %20, align 4
  %275 = fdiv float %271, %274
  %storemerge = select i1 %273, float 1.000000e+00, float %275
  store float %storemerge, ptr %10, align 4, !tbaa !13
  %.not347.not392 = icmp slt i32 %272, %.
  br i1 %.not347.not392, label %.lr.ph395.preheader, label %.loopexit

.lr.ph395.preheader:                              ; preds = %261
  %276 = sext i32 %272 to i64
  %277 = shl nsw i64 %276, 3
  %scevgep = getelementptr i8, ptr %12, i64 %277
  %278 = xor i32 %272, -1
  %279 = add i32 %., %278
  %280 = zext i32 %279 to i64
  %281 = shl nuw nsw i64 %280, 3
  %282 = add nuw nsw i64 %281, 8
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep, i8 0, i64 %282, i1 false), !tbaa !13
  br label %.loopexit

283:                                              ; preds = %259
  store float 0.000000e+00, ptr %9, align 4, !tbaa !13
  store float 0.000000e+00, ptr %10, align 4, !tbaa !13
  br label %.loopexit

.loopexit:                                        ; preds = %.lr.ph395.preheader, %261, %283, %249, %256, %253
  store float %75, ptr %13, align 4, !tbaa !9
  store float 0.000000e+00, ptr %76, align 4, !tbaa !12
  br label %284

284:                                              ; preds = %82, %.loopexit, %219, %._crit_edge385, %._crit_edge400, %._crit_edge405, %104, %84, %.thread361
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 4, 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
  ret i32 0
}

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

declare i32 @sisnan_(ptr noundef) local_unnamed_addr #2

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) local_unnamed_addr #2

declare float @scnrm2_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare float @slamch_(ptr noundef) local_unnamed_addr #2

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare 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 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, !11, i64 0}
!10 = !{!"", !11, i64 0, !11, i64 4}
!11 = !{!"float", !7, i64 0}
!12 = !{!10, !11, i64 4}
!13 = !{!11, !11, i64 0}
!14 = distinct !{!14, !15, !16, !17}
!15 = !{!"llvm.loop.mustprogress"}
!16 = !{!"llvm.loop.isvectorized", i32 1}
!17 = !{!"llvm.loop.unroll.runtime.disable"}
!18 = distinct !{!18, !15, !17, !16}
!19 = distinct !{!19, !15}
!20 = distinct !{!20, !15}


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