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

; 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 i64, align 8
@.str = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c_n1 = external hidden global i64, align 8
@.str.2 = external hidden unnamed_addr constant [7 x i8], align 1
@c__3 = external hidden global i64, align 8
@c__2 = external hidden global i64, align 8
@.str.3 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [13 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @ctzrzf_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7) #0 {
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca i64, align 8
  %19 = alloca i64, align 8
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca i64, align 8
  %25 = alloca i64, align 8
  %26 = alloca i64, align 8
  %27 = alloca i64, align 8
  %28 = alloca i64, align 8
  %29 = alloca i64, align 8
  %30 = alloca i64, align 8
  %31 = alloca i64, align 8
  %32 = alloca i64, align 8
  %33 = alloca i64, align 8
  %34 = alloca i64, align 8
  %35 = alloca i64, align 8
  %36 = alloca i64, align 8
  %37 = alloca i64, align 8
  %38 = alloca i32, align 4
  store ptr %0, ptr %10, align 8, !tbaa !5
  store ptr %1, ptr %11, align 8, !tbaa !5
  store ptr %2, ptr %12, align 8, !tbaa !5
  store ptr %3, ptr %13, align 8, !tbaa !5
  store ptr %4, ptr %14, align 8, !tbaa !5
  store ptr %5, ptr %15, align 8, !tbaa !5
  store ptr %6, ptr %16, align 8, !tbaa !5
  store ptr %7, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #3
  %39 = load ptr, ptr %13, align 8, !tbaa !5
  %40 = load i64, ptr %39, align 8, !tbaa !9
  store i64 %40, ptr %18, align 8, !tbaa !9
  %41 = load i64, ptr %18, align 8, !tbaa !9
  %42 = add nsw i64 1, %41
  store i64 %42, ptr %19, align 8, !tbaa !9
  %43 = load i64, ptr %19, align 8, !tbaa !9
  %44 = load ptr, ptr %12, align 8, !tbaa !5
  %45 = sub i64 0, %43
  %46 = getelementptr inbounds %struct.complex, ptr %44, i64 %45
  store ptr %46, ptr %12, align 8, !tbaa !5
  %47 = load ptr, ptr %14, align 8, !tbaa !5
  %48 = getelementptr inbounds %struct.complex, ptr %47, i32 -1
  store ptr %48, ptr %14, align 8, !tbaa !5
  %49 = load ptr, ptr %15, align 8, !tbaa !5
  %50 = getelementptr inbounds %struct.complex, ptr %49, i32 -1
  store ptr %50, ptr %15, align 8, !tbaa !5
  %51 = load ptr, ptr %17, align 8, !tbaa !5
  store i64 0, ptr %51, align 8, !tbaa !9
  %52 = load ptr, ptr %16, align 8, !tbaa !5
  %53 = load i64, ptr %52, align 8, !tbaa !9
  %54 = icmp eq i64 %53, -1
  %55 = zext i1 %54 to i32
  %56 = sext i32 %55 to i64
  store i64 %56, ptr %37, align 8, !tbaa !9
  %57 = load ptr, ptr %10, align 8, !tbaa !5
  %58 = load i64, ptr %57, align 8, !tbaa !9
  %59 = icmp slt i64 %58, 0
  br i1 %59, label %60, label %62

60:                                               ; preds = %8
  %61 = load ptr, ptr %17, align 8, !tbaa !5
  store i64 -1, ptr %61, align 8, !tbaa !9
  br label %106

62:                                               ; preds = %8
  %63 = load ptr, ptr %11, align 8, !tbaa !5
  %64 = load i64, ptr %63, align 8, !tbaa !9
  %65 = load ptr, ptr %10, align 8, !tbaa !5
  %66 = load i64, ptr %65, align 8, !tbaa !9
  %67 = icmp slt i64 %64, %66
  br i1 %67, label %68, label %70

68:                                               ; preds = %62
  %69 = load ptr, ptr %17, align 8, !tbaa !5
  store i64 -2, ptr %69, align 8, !tbaa !9
  br label %105

70:                                               ; preds = %62
  %71 = load ptr, ptr %13, align 8, !tbaa !5
  %72 = load i64, ptr %71, align 8, !tbaa !9
  %73 = load ptr, ptr %10, align 8, !tbaa !5
  %74 = load i64, ptr %73, align 8, !tbaa !9
  %75 = icmp sge i64 1, %74
  br i1 %75, label %76, label %77

76:                                               ; preds = %70
  br label %80

77:                                               ; preds = %70
  %78 = load ptr, ptr %10, align 8, !tbaa !5
  %79 = load i64, ptr %78, align 8, !tbaa !9
  br label %80

80:                                               ; preds = %77, %76
  %81 = phi i64 [ 1, %76 ], [ %79, %77 ]
  %82 = icmp slt i64 %72, %81
  br i1 %82, label %83, label %85

83:                                               ; preds = %80
  %84 = load ptr, ptr %17, align 8, !tbaa !5
  store i64 -4, ptr %84, align 8, !tbaa !9
  br label %104

85:                                               ; preds = %80
  %86 = load ptr, ptr %16, align 8, !tbaa !5
  %87 = load i64, ptr %86, align 8, !tbaa !9
  %88 = load ptr, ptr %10, align 8, !tbaa !5
  %89 = load i64, ptr %88, align 8, !tbaa !9
  %90 = icmp sge i64 1, %89
  br i1 %90, label %91, label %92

91:                                               ; preds = %85
  br label %95

92:                                               ; preds = %85
  %93 = load ptr, ptr %10, align 8, !tbaa !5
  %94 = load i64, ptr %93, align 8, !tbaa !9
  br label %95

95:                                               ; preds = %92, %91
  %96 = phi i64 [ 1, %91 ], [ %94, %92 ]
  %97 = icmp slt i64 %87, %96
  br i1 %97, label %98, label %103

98:                                               ; preds = %95
  %99 = load i64, ptr %37, align 8, !tbaa !9
  %100 = icmp ne i64 %99, 0
  br i1 %100, label %103, label %101

101:                                              ; preds = %98
  %102 = load ptr, ptr %17, align 8, !tbaa !5
  store i64 -7, ptr %102, align 8, !tbaa !9
  br label %103

103:                                              ; preds = %101, %98, %95
  br label %104

104:                                              ; preds = %103, %83
  br label %105

105:                                              ; preds = %104, %68
  br label %106

106:                                              ; preds = %105, %60
  %107 = load ptr, ptr %17, align 8, !tbaa !5
  %108 = load i64, ptr %107, align 8, !tbaa !9
  %109 = icmp eq i64 %108, 0
  br i1 %109, label %110, label %156

110:                                              ; preds = %106
  %111 = load ptr, ptr %10, align 8, !tbaa !5
  %112 = load i64, ptr %111, align 8, !tbaa !9
  %113 = icmp eq i64 %112, 0
  br i1 %113, label %120, label %114

114:                                              ; preds = %110
  %115 = load ptr, ptr %10, align 8, !tbaa !5
  %116 = load i64, ptr %115, align 8, !tbaa !9
  %117 = load ptr, ptr %11, align 8, !tbaa !5
  %118 = load i64, ptr %117, align 8, !tbaa !9
  %119 = icmp eq i64 %116, %118
  br i1 %119, label %120, label %121

120:                                              ; preds = %114, %110
  store i64 1, ptr %36, align 8, !tbaa !9
  br label %129

121:                                              ; preds = %114
  %122 = load ptr, ptr %10, align 8, !tbaa !5
  %123 = load ptr, ptr %11, align 8, !tbaa !5
  %124 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %122, ptr noundef %123, ptr noundef @c_n1, ptr noundef @c_n1)
  store i64 %124, ptr %28, align 8, !tbaa !9
  %125 = load ptr, ptr %10, align 8, !tbaa !5
  %126 = load i64, ptr %125, align 8, !tbaa !9
  %127 = load i64, ptr %28, align 8, !tbaa !9
  %128 = mul nsw i64 %126, %127
  store i64 %128, ptr %36, align 8, !tbaa !9
  br label %129

129:                                              ; preds = %121, %120
  %130 = load i64, ptr %36, align 8, !tbaa !9
  %131 = sitofp i64 %130 to float
  %132 = load ptr, ptr %15, align 8, !tbaa !5
  %133 = getelementptr inbounds %struct.complex, ptr %132, i64 1
  %134 = getelementptr inbounds %struct.complex, ptr %133, i32 0, i32 0
  store float %131, ptr %134, align 4, !tbaa !11
  %135 = load ptr, ptr %15, align 8, !tbaa !5
  %136 = getelementptr inbounds %struct.complex, ptr %135, i64 1
  %137 = getelementptr inbounds %struct.complex, ptr %136, i32 0, i32 1
  store float 0.000000e+00, ptr %137, align 4, !tbaa !14
  %138 = load ptr, ptr %16, align 8, !tbaa !5
  %139 = load i64, ptr %138, align 8, !tbaa !9
  %140 = load ptr, ptr %10, align 8, !tbaa !5
  %141 = load i64, ptr %140, align 8, !tbaa !9
  %142 = icmp sge i64 1, %141
  br i1 %142, label %143, label %144

143:                                              ; preds = %129
  br label %147

144:                                              ; preds = %129
  %145 = load ptr, ptr %10, align 8, !tbaa !5
  %146 = load i64, ptr %145, align 8, !tbaa !9
  br label %147

147:                                              ; preds = %144, %143
  %148 = phi i64 [ 1, %143 ], [ %146, %144 ]
  %149 = icmp slt i64 %139, %148
  br i1 %149, label %150, label %155

150:                                              ; preds = %147
  %151 = load i64, ptr %37, align 8, !tbaa !9
  %152 = icmp ne i64 %151, 0
  br i1 %152, label %155, label %153

153:                                              ; preds = %150
  %154 = load ptr, ptr %17, align 8, !tbaa !5
  store i64 -7, ptr %154, align 8, !tbaa !9
  br label %155

155:                                              ; preds = %153, %150, %147
  br label %156

156:                                              ; preds = %155, %106
  %157 = load ptr, ptr %17, align 8, !tbaa !5
  %158 = load i64, ptr %157, align 8, !tbaa !9
  %159 = icmp ne i64 %158, 0
  br i1 %159, label %160, label %165

160:                                              ; preds = %156
  %161 = load ptr, ptr %17, align 8, !tbaa !5
  %162 = load i64, ptr %161, align 8, !tbaa !9
  %163 = sub nsw i64 0, %162
  store i64 %163, ptr %20, align 8, !tbaa !9
  %164 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef %20)
  store i32 0, ptr %9, align 4
  store i32 1, ptr %38, align 4
  br label %477

165:                                              ; preds = %156
  %166 = load i64, ptr %37, align 8, !tbaa !9
  %167 = icmp ne i64 %166, 0
  br i1 %167, label %168, label %169

168:                                              ; preds = %165
  store i32 0, ptr %9, align 4
  store i32 1, ptr %38, align 4
  br label %477

169:                                              ; preds = %165
  br label %170

170:                                              ; preds = %169
  %171 = load ptr, ptr %10, align 8, !tbaa !5
  %172 = load i64, ptr %171, align 8, !tbaa !9
  %173 = icmp eq i64 %172, 0
  br i1 %173, label %174, label %175

174:                                              ; preds = %170
  store i32 0, ptr %9, align 4
  store i32 1, ptr %38, align 4
  br label %477

175:                                              ; preds = %170
  %176 = load ptr, ptr %10, align 8, !tbaa !5
  %177 = load i64, ptr %176, align 8, !tbaa !9
  %178 = load ptr, ptr %11, align 8, !tbaa !5
  %179 = load i64, ptr %178, align 8, !tbaa !9
  %180 = icmp eq i64 %177, %179
  br i1 %180, label %181, label %202

181:                                              ; preds = %175
  %182 = load ptr, ptr %11, align 8, !tbaa !5
  %183 = load i64, ptr %182, align 8, !tbaa !9
  store i64 %183, ptr %20, align 8, !tbaa !9
  store i64 1, ptr %25, align 8, !tbaa !9
  br label %184

184:                                              ; preds = %198, %181
  %185 = load i64, ptr %25, align 8, !tbaa !9
  %186 = load i64, ptr %20, align 8, !tbaa !9
  %187 = icmp sle i64 %185, %186
  br i1 %187, label %188, label %201

188:                                              ; preds = %184
  %189 = load i64, ptr %25, align 8, !tbaa !9
  store i64 %189, ptr %21, align 8, !tbaa !9
  %190 = load ptr, ptr %14, align 8, !tbaa !5
  %191 = load i64, ptr %21, align 8, !tbaa !9
  %192 = getelementptr inbounds %struct.complex, ptr %190, i64 %191
  %193 = getelementptr inbounds %struct.complex, ptr %192, i32 0, i32 0
  store float 0.000000e+00, ptr %193, align 4, !tbaa !11
  %194 = load ptr, ptr %14, align 8, !tbaa !5
  %195 = load i64, ptr %21, align 8, !tbaa !9
  %196 = getelementptr inbounds %struct.complex, ptr %194, i64 %195
  %197 = getelementptr inbounds %struct.complex, ptr %196, i32 0, i32 1
  store float 0.000000e+00, ptr %197, align 4, !tbaa !14
  br label %198

198:                                              ; preds = %188
  %199 = load i64, ptr %25, align 8, !tbaa !9
  %200 = add nsw i64 %199, 1
  store i64 %200, ptr %25, align 8, !tbaa !9
  br label %184, !llvm.loop !15

201:                                              ; preds = %184
  store i32 0, ptr %9, align 4
  store i32 1, ptr %38, align 4
  br label %477

202:                                              ; preds = %175
  br label %203

203:                                              ; preds = %202
  store i64 2, ptr %34, align 8, !tbaa !9
  store i64 1, ptr %32, align 8, !tbaa !9
  %204 = load ptr, ptr %10, align 8, !tbaa !5
  %205 = load i64, ptr %204, align 8, !tbaa !9
  store i64 %205, ptr %33, align 8, !tbaa !9
  %206 = load i64, ptr %28, align 8, !tbaa !9
  %207 = icmp sgt i64 %206, 1
  br i1 %207, label %208, label %259

208:                                              ; preds = %203
  %209 = load i64, ptr %28, align 8, !tbaa !9
  %210 = load ptr, ptr %10, align 8, !tbaa !5
  %211 = load i64, ptr %210, align 8, !tbaa !9
  %212 = icmp slt i64 %209, %211
  br i1 %212, label %213, label %259

213:                                              ; preds = %208
  store i64 0, ptr %20, align 8, !tbaa !9
  %214 = load ptr, ptr %10, align 8, !tbaa !5
  %215 = load ptr, ptr %11, align 8, !tbaa !5
  %216 = call i64 @ilaenv_(ptr noundef @c__3, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %214, ptr noundef %215, ptr noundef @c_n1, ptr noundef @c_n1)
  store i64 %216, ptr %21, align 8, !tbaa !9
  %217 = load i64, ptr %20, align 8, !tbaa !9
  %218 = load i64, ptr %21, align 8, !tbaa !9
  %219 = icmp sge i64 %217, %218
  br i1 %219, label %220, label %222

220:                                              ; preds = %213
  %221 = load i64, ptr %20, align 8, !tbaa !9
  br label %224

222:                                              ; preds = %213
  %223 = load i64, ptr %21, align 8, !tbaa !9
  br label %224

224:                                              ; preds = %222, %220
  %225 = phi i64 [ %221, %220 ], [ %223, %222 ]
  store i64 %225, ptr %32, align 8, !tbaa !9
  %226 = load i64, ptr %32, align 8, !tbaa !9
  %227 = load ptr, ptr %10, align 8, !tbaa !5
  %228 = load i64, ptr %227, align 8, !tbaa !9
  %229 = icmp slt i64 %226, %228
  br i1 %229, label %230, label %258

230:                                              ; preds = %224
  %231 = load ptr, ptr %10, align 8, !tbaa !5
  %232 = load i64, ptr %231, align 8, !tbaa !9
  store i64 %232, ptr %35, align 8, !tbaa !9
  %233 = load i64, ptr %35, align 8, !tbaa !9
  %234 = load i64, ptr %28, align 8, !tbaa !9
  %235 = mul nsw i64 %233, %234
  store i64 %235, ptr %33, align 8, !tbaa !9
  %236 = load ptr, ptr %16, align 8, !tbaa !5
  %237 = load i64, ptr %236, align 8, !tbaa !9
  %238 = load i64, ptr %33, align 8, !tbaa !9
  %239 = icmp slt i64 %237, %238
  br i1 %239, label %240, label %257

240:                                              ; preds = %230
  %241 = load ptr, ptr %16, align 8, !tbaa !5
  %242 = load i64, ptr %241, align 8, !tbaa !9
  %243 = load i64, ptr %35, align 8, !tbaa !9
  %244 = sdiv i64 %242, %243
  store i64 %244, ptr %28, align 8, !tbaa !9
  store i64 2, ptr %20, align 8, !tbaa !9
  %245 = load ptr, ptr %10, align 8, !tbaa !5
  %246 = load ptr, ptr %11, align 8, !tbaa !5
  %247 = call i64 @ilaenv_(ptr noundef @c__2, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %245, ptr noundef %246, ptr noundef @c_n1, ptr noundef @c_n1)
  store i64 %247, ptr %21, align 8, !tbaa !9
  %248 = load i64, ptr %20, align 8, !tbaa !9
  %249 = load i64, ptr %21, align 8, !tbaa !9
  %250 = icmp sge i64 %248, %249
  br i1 %250, label %251, label %253

251:                                              ; preds = %240
  %252 = load i64, ptr %20, align 8, !tbaa !9
  br label %255

253:                                              ; preds = %240
  %254 = load i64, ptr %21, align 8, !tbaa !9
  br label %255

255:                                              ; preds = %253, %251
  %256 = phi i64 [ %252, %251 ], [ %254, %253 ]
  store i64 %256, ptr %34, align 8, !tbaa !9
  br label %257

257:                                              ; preds = %255, %230
  br label %258

258:                                              ; preds = %257, %224
  br label %259

259:                                              ; preds = %258, %208, %203
  %260 = load i64, ptr %28, align 8, !tbaa !9
  %261 = load i64, ptr %34, align 8, !tbaa !9
  %262 = icmp sge i64 %260, %261
  br i1 %262, label %263, label %446

263:                                              ; preds = %259
  %264 = load i64, ptr %28, align 8, !tbaa !9
  %265 = load ptr, ptr %10, align 8, !tbaa !5
  %266 = load i64, ptr %265, align 8, !tbaa !9
  %267 = icmp slt i64 %264, %266
  br i1 %267, label %268, label %446

268:                                              ; preds = %263
  %269 = load i64, ptr %32, align 8, !tbaa !9
  %270 = load ptr, ptr %10, align 8, !tbaa !5
  %271 = load i64, ptr %270, align 8, !tbaa !9
  %272 = icmp slt i64 %269, %271
  br i1 %272, label %273, label %446

273:                                              ; preds = %268
  %274 = load ptr, ptr %10, align 8, !tbaa !5
  %275 = load i64, ptr %274, align 8, !tbaa !9
  %276 = add nsw i64 %275, 1
  store i64 %276, ptr %20, align 8, !tbaa !9
  %277 = load i64, ptr %20, align 8, !tbaa !9
  %278 = load ptr, ptr %11, align 8, !tbaa !5
  %279 = load i64, ptr %278, align 8, !tbaa !9
  %280 = icmp sle i64 %277, %279
  br i1 %280, label %281, label %283

281:                                              ; preds = %273
  %282 = load i64, ptr %20, align 8, !tbaa !9
  br label %286

283:                                              ; preds = %273
  %284 = load ptr, ptr %11, align 8, !tbaa !5
  %285 = load i64, ptr %284, align 8, !tbaa !9
  br label %286

286:                                              ; preds = %283, %281
  %287 = phi i64 [ %282, %281 ], [ %285, %283 ]
  store i64 %287, ptr %26, align 8, !tbaa !9
  %288 = load ptr, ptr %10, align 8, !tbaa !5
  %289 = load i64, ptr %288, align 8, !tbaa !9
  %290 = load i64, ptr %32, align 8, !tbaa !9
  %291 = sub nsw i64 %289, %290
  %292 = sub nsw i64 %291, 1
  %293 = load i64, ptr %28, align 8, !tbaa !9
  %294 = sdiv i64 %292, %293
  %295 = load i64, ptr %28, align 8, !tbaa !9
  %296 = mul nsw i64 %294, %295
  store i64 %296, ptr %29, align 8, !tbaa !9
  %297 = load ptr, ptr %10, align 8, !tbaa !5
  %298 = load i64, ptr %297, align 8, !tbaa !9
  store i64 %298, ptr %20, align 8, !tbaa !9
  %299 = load i64, ptr %29, align 8, !tbaa !9
  %300 = load i64, ptr %28, align 8, !tbaa !9
  %301 = add nsw i64 %299, %300
  store i64 %301, ptr %21, align 8, !tbaa !9
  %302 = load i64, ptr %20, align 8, !tbaa !9
  %303 = load i64, ptr %21, align 8, !tbaa !9
  %304 = icmp sle i64 %302, %303
  br i1 %304, label %305, label %307

305:                                              ; preds = %286
  %306 = load i64, ptr %20, align 8, !tbaa !9
  br label %309

307:                                              ; preds = %286
  %308 = load i64, ptr %21, align 8, !tbaa !9
  br label %309

309:                                              ; preds = %307, %305
  %310 = phi i64 [ %306, %305 ], [ %308, %307 ]
  store i64 %310, ptr %30, align 8, !tbaa !9
  %311 = load ptr, ptr %10, align 8, !tbaa !5
  %312 = load i64, ptr %311, align 8, !tbaa !9
  %313 = load i64, ptr %30, align 8, !tbaa !9
  %314 = sub nsw i64 %312, %313
  %315 = add nsw i64 %314, 1
  store i64 %315, ptr %20, align 8, !tbaa !9
  %316 = load i64, ptr %28, align 8, !tbaa !9
  %317 = sub nsw i64 0, %316
  store i64 %317, ptr %21, align 8, !tbaa !9
  %318 = load ptr, ptr %10, align 8, !tbaa !5
  %319 = load i64, ptr %318, align 8, !tbaa !9
  %320 = load i64, ptr %30, align 8, !tbaa !9
  %321 = sub nsw i64 %319, %320
  %322 = load i64, ptr %29, align 8, !tbaa !9
  %323 = add nsw i64 %321, %322
  %324 = add nsw i64 %323, 1
  store i64 %324, ptr %25, align 8, !tbaa !9
  br label %325

325:                                              ; preds = %437, %309
  %326 = load i64, ptr %21, align 8, !tbaa !9
  %327 = icmp slt i64 %326, 0
  br i1 %327, label %328, label %333

328:                                              ; preds = %325
  %329 = load i64, ptr %25, align 8, !tbaa !9
  %330 = load i64, ptr %20, align 8, !tbaa !9
  %331 = icmp sge i64 %329, %330
  %332 = zext i1 %331 to i32
  br label %338

333:                                              ; preds = %325
  %334 = load i64, ptr %25, align 8, !tbaa !9
  %335 = load i64, ptr %20, align 8, !tbaa !9
  %336 = icmp sle i64 %334, %335
  %337 = zext i1 %336 to i32
  br label %338

338:                                              ; preds = %333, %328
  %339 = phi i32 [ %332, %328 ], [ %337, %333 ]
  %340 = icmp ne i32 %339, 0
  br i1 %340, label %341, label %441

341:                                              ; preds = %338
  %342 = load ptr, ptr %10, align 8, !tbaa !5
  %343 = load i64, ptr %342, align 8, !tbaa !9
  %344 = load i64, ptr %25, align 8, !tbaa !9
  %345 = sub nsw i64 %343, %344
  %346 = add nsw i64 %345, 1
  store i64 %346, ptr %22, align 8, !tbaa !9
  %347 = load i64, ptr %22, align 8, !tbaa !9
  %348 = load i64, ptr %28, align 8, !tbaa !9
  %349 = icmp sle i64 %347, %348
  br i1 %349, label %350, label %352

350:                                              ; preds = %341
  %351 = load i64, ptr %22, align 8, !tbaa !9
  br label %354

352:                                              ; preds = %341
  %353 = load i64, ptr %28, align 8, !tbaa !9
  br label %354

354:                                              ; preds = %352, %350
  %355 = phi i64 [ %351, %350 ], [ %353, %352 ]
  store i64 %355, ptr %27, align 8, !tbaa !9
  %356 = load ptr, ptr %11, align 8, !tbaa !5
  %357 = load i64, ptr %356, align 8, !tbaa !9
  %358 = load i64, ptr %25, align 8, !tbaa !9
  %359 = sub nsw i64 %357, %358
  %360 = add nsw i64 %359, 1
  store i64 %360, ptr %22, align 8, !tbaa !9
  %361 = load ptr, ptr %11, align 8, !tbaa !5
  %362 = load i64, ptr %361, align 8, !tbaa !9
  %363 = load ptr, ptr %10, align 8, !tbaa !5
  %364 = load i64, ptr %363, align 8, !tbaa !9
  %365 = sub nsw i64 %362, %364
  store i64 %365, ptr %23, align 8, !tbaa !9
  %366 = load ptr, ptr %12, align 8, !tbaa !5
  %367 = load i64, ptr %25, align 8, !tbaa !9
  %368 = load i64, ptr %25, align 8, !tbaa !9
  %369 = load i64, ptr %18, align 8, !tbaa !9
  %370 = mul nsw i64 %368, %369
  %371 = add nsw i64 %367, %370
  %372 = getelementptr inbounds %struct.complex, ptr %366, i64 %371
  %373 = load ptr, ptr %13, align 8, !tbaa !5
  %374 = load ptr, ptr %14, align 8, !tbaa !5
  %375 = load i64, ptr %25, align 8, !tbaa !9
  %376 = getelementptr inbounds %struct.complex, ptr %374, i64 %375
  %377 = load ptr, ptr %15, align 8, !tbaa !5
  %378 = getelementptr inbounds %struct.complex, ptr %377, i64 1
  %379 = call i32 @clatrz_(ptr noundef %27, ptr noundef %22, ptr noundef %23, ptr noundef %372, ptr noundef %373, ptr noundef %376, ptr noundef %378)
  %380 = load i64, ptr %25, align 8, !tbaa !9
  %381 = icmp sgt i64 %380, 1
  br i1 %381, label %382, label %436

382:                                              ; preds = %354
  %383 = load ptr, ptr %11, align 8, !tbaa !5
  %384 = load i64, ptr %383, align 8, !tbaa !9
  %385 = load ptr, ptr %10, align 8, !tbaa !5
  %386 = load i64, ptr %385, align 8, !tbaa !9
  %387 = sub nsw i64 %384, %386
  store i64 %387, ptr %22, align 8, !tbaa !9
  %388 = load ptr, ptr %12, align 8, !tbaa !5
  %389 = load i64, ptr %25, align 8, !tbaa !9
  %390 = load i64, ptr %26, align 8, !tbaa !9
  %391 = load i64, ptr %18, align 8, !tbaa !9
  %392 = mul nsw i64 %390, %391
  %393 = add nsw i64 %389, %392
  %394 = getelementptr inbounds %struct.complex, ptr %388, i64 %393
  %395 = load ptr, ptr %13, align 8, !tbaa !5
  %396 = load ptr, ptr %14, align 8, !tbaa !5
  %397 = load i64, ptr %25, align 8, !tbaa !9
  %398 = getelementptr inbounds %struct.complex, ptr %396, i64 %397
  %399 = load ptr, ptr %15, align 8, !tbaa !5
  %400 = getelementptr inbounds %struct.complex, ptr %399, i64 1
  %401 = call i32 @clarzt_(ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef %22, ptr noundef %27, ptr noundef %394, ptr noundef %395, ptr noundef %398, ptr noundef %400, ptr noundef %35)
  %402 = load i64, ptr %25, align 8, !tbaa !9
  %403 = sub nsw i64 %402, 1
  store i64 %403, ptr %22, align 8, !tbaa !9
  %404 = load ptr, ptr %11, align 8, !tbaa !5
  %405 = load i64, ptr %404, align 8, !tbaa !9
  %406 = load i64, ptr %25, align 8, !tbaa !9
  %407 = sub nsw i64 %405, %406
  %408 = add nsw i64 %407, 1
  store i64 %408, ptr %23, align 8, !tbaa !9
  %409 = load ptr, ptr %11, align 8, !tbaa !5
  %410 = load i64, ptr %409, align 8, !tbaa !9
  %411 = load ptr, ptr %10, align 8, !tbaa !5
  %412 = load i64, ptr %411, align 8, !tbaa !9
  %413 = sub nsw i64 %410, %412
  store i64 %413, ptr %24, align 8, !tbaa !9
  %414 = load ptr, ptr %12, align 8, !tbaa !5
  %415 = load i64, ptr %25, align 8, !tbaa !9
  %416 = load i64, ptr %26, align 8, !tbaa !9
  %417 = load i64, ptr %18, align 8, !tbaa !9
  %418 = mul nsw i64 %416, %417
  %419 = add nsw i64 %415, %418
  %420 = getelementptr inbounds %struct.complex, ptr %414, i64 %419
  %421 = load ptr, ptr %13, align 8, !tbaa !5
  %422 = load ptr, ptr %15, align 8, !tbaa !5
  %423 = getelementptr inbounds %struct.complex, ptr %422, i64 1
  %424 = load ptr, ptr %12, align 8, !tbaa !5
  %425 = load i64, ptr %25, align 8, !tbaa !9
  %426 = load i64, ptr %18, align 8, !tbaa !9
  %427 = mul nsw i64 %425, %426
  %428 = add nsw i64 %427, 1
  %429 = getelementptr inbounds %struct.complex, ptr %424, i64 %428
  %430 = load ptr, ptr %13, align 8, !tbaa !5
  %431 = load ptr, ptr %15, align 8, !tbaa !5
  %432 = load i64, ptr %27, align 8, !tbaa !9
  %433 = add nsw i64 %432, 1
  %434 = getelementptr inbounds %struct.complex, ptr %431, i64 %433
  %435 = call i32 @clarzb_(ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef %22, ptr noundef %23, ptr noundef %27, ptr noundef %24, ptr noundef %420, ptr noundef %421, ptr noundef %423, ptr noundef %35, ptr noundef %429, ptr noundef %430, ptr noundef %434, ptr noundef %35)
  br label %436

436:                                              ; preds = %382, %354
  br label %437

437:                                              ; preds = %436
  %438 = load i64, ptr %21, align 8, !tbaa !9
  %439 = load i64, ptr %25, align 8, !tbaa !9
  %440 = add nsw i64 %439, %438
  store i64 %440, ptr %25, align 8, !tbaa !9
  br label %325, !llvm.loop !17

441:                                              ; preds = %338
  %442 = load i64, ptr %25, align 8, !tbaa !9
  %443 = load i64, ptr %28, align 8, !tbaa !9
  %444 = add nsw i64 %442, %443
  %445 = sub nsw i64 %444, 1
  store i64 %445, ptr %31, align 8, !tbaa !9
  br label %449

446:                                              ; preds = %268, %263, %259
  %447 = load ptr, ptr %10, align 8, !tbaa !5
  %448 = load i64, ptr %447, align 8, !tbaa !9
  store i64 %448, ptr %31, align 8, !tbaa !9
  br label %449

449:                                              ; preds = %446, %441
  %450 = load i64, ptr %31, align 8, !tbaa !9
  %451 = icmp sgt i64 %450, 0
  br i1 %451, label %452, label %468

452:                                              ; preds = %449
  %453 = load ptr, ptr %11, align 8, !tbaa !5
  %454 = load i64, ptr %453, align 8, !tbaa !9
  %455 = load ptr, ptr %10, align 8, !tbaa !5
  %456 = load i64, ptr %455, align 8, !tbaa !9
  %457 = sub nsw i64 %454, %456
  store i64 %457, ptr %21, align 8, !tbaa !9
  %458 = load ptr, ptr %11, align 8, !tbaa !5
  %459 = load ptr, ptr %12, align 8, !tbaa !5
  %460 = load i64, ptr %19, align 8, !tbaa !9
  %461 = getelementptr inbounds %struct.complex, ptr %459, i64 %460
  %462 = load ptr, ptr %13, align 8, !tbaa !5
  %463 = load ptr, ptr %14, align 8, !tbaa !5
  %464 = getelementptr inbounds %struct.complex, ptr %463, i64 1
  %465 = load ptr, ptr %15, align 8, !tbaa !5
  %466 = getelementptr inbounds %struct.complex, ptr %465, i64 1
  %467 = call i32 @clatrz_(ptr noundef %31, ptr noundef %458, ptr noundef %21, ptr noundef %461, ptr noundef %462, ptr noundef %464, ptr noundef %466)
  br label %468

468:                                              ; preds = %452, %449
  %469 = load i64, ptr %36, align 8, !tbaa !9
  %470 = sitofp i64 %469 to float
  %471 = load ptr, ptr %15, align 8, !tbaa !5
  %472 = getelementptr inbounds %struct.complex, ptr %471, i64 1
  %473 = getelementptr inbounds %struct.complex, ptr %472, i32 0, i32 0
  store float %470, ptr %473, align 4, !tbaa !11
  %474 = load ptr, ptr %15, align 8, !tbaa !5
  %475 = getelementptr inbounds %struct.complex, ptr %474, i64 1
  %476 = getelementptr inbounds %struct.complex, ptr %475, i32 0, i32 1
  store float 0.000000e+00, ptr %476, align 4, !tbaa !14
  store i32 0, ptr %9, align 4
  store i32 1, ptr %38, align 4
  br label %477

477:                                              ; preds = %468, %201, %174, %168, %160
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #3
  %478 = load i32, ptr %9, align 4
  ret i32 %478
}

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

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

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

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

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

declare i32 @clarzb_(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 = !{!"long", !7, i64 0}
!11 = !{!12, !13, i64 0}
!12 = !{!"", !13, i64 0, !13, i64 4}
!13 = !{!"float", !7, i64 0}
!14 = !{!12, !13, i64 4}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = distinct !{!17, !16}


; 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 i64, align 8
@.str = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c_n1 = external hidden global i64, align 8
@.str.2 = external hidden unnamed_addr constant [7 x i8], align 1
@c__3 = external hidden global i64, align 8
@c__2 = external hidden global i64, align 8
@.str.3 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [13 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @ctzrzf_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr nocapture noundef readonly %6, ptr nocapture noundef %7) local_unnamed_addr #0 {
  %9 = alloca i64, align 8
  %10 = alloca i64, align 8
  %11 = alloca i64, align 8
  %12 = alloca i64, align 8
  %13 = alloca i64, align 8
  %14 = alloca i64, align 8
  %15 = alloca i64, align 8
  %16 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #5
  %17 = load i64, ptr %3, align 8, !tbaa !5
  %18 = xor i64 %17, -1
  %19 = getelementptr inbounds %struct.complex, ptr %2, i64 %18
  %20 = getelementptr inbounds i8, ptr %4, i64 -8
  store i64 0, ptr %7, align 8, !tbaa !5
  %21 = load i64, ptr %6, align 8, !tbaa !5
  %22 = icmp eq i64 %21, -1
  %23 = load i64, ptr %0, align 8, !tbaa !5
  %24 = icmp slt i64 %23, 0
  br i1 %24, label %.thread186.sink.split, label %25

25:                                               ; preds = %8
  %26 = load i64, ptr %1, align 8, !tbaa !5
  %27 = icmp slt i64 %26, %23
  br i1 %27, label %.thread186.sink.split, label %28

28:                                               ; preds = %25
  %29 = load i64, ptr %3, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %23, i64 1)
  %30 = icmp slt i64 %29, %spec.select
  br i1 %30, label %.thread186.sink.split, label %31

31:                                               ; preds = %28
  %32 = icmp sge i64 %21, %spec.select
  %or.cond = or i1 %22, %32
  br i1 %or.cond, label %33, label %.thread186.sink.split

33:                                               ; preds = %31
  %34 = icmp eq i64 %23, 0
  br i1 %34, label %42, label %35

35:                                               ; preds = %33
  %36 = icmp eq i64 %23, %26
  br i1 %36, label %42, label %37

37:                                               ; preds = %35
  %38 = tail call i64 @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) #5
  %39 = load i64, ptr %0, align 8, !tbaa !5
  %40 = mul nsw i64 %39, %38
  %41 = sitofp i64 %40 to float
  %.pre = load i64, ptr %6, align 8, !tbaa !5
  br label %42

42:                                               ; preds = %33, %35, %37
  %.pre214216 = phi i64 [ %39, %37 ], [ %23, %35 ], [ 0, %33 ]
  %43 = phi i64 [ %.pre, %37 ], [ %21, %35 ], [ %21, %33 ]
  %.0153 = phi i64 [ %38, %37 ], [ undef, %35 ], [ undef, %33 ]
  %.0150 = phi float [ %41, %37 ], [ 1.000000e+00, %35 ], [ 1.000000e+00, %33 ]
  store float %.0150, ptr %5, align 4, !tbaa !9
  %44 = getelementptr inbounds i8, ptr %5, i64 4
  store float 0.000000e+00, ptr %44, align 4, !tbaa !12
  %spec.select178 = tail call i64 @llvm.smax.i64(i64 %.pre214216, i64 1)
  %45 = icmp sge i64 %43, %spec.select178
  %or.cond3 = select i1 %45, i1 true, i1 %22
  br i1 %or.cond3, label %.thread, label %.thread186.sink.split

.thread:                                          ; preds = %42
  %.pr182.pr = load i64, ptr %7, align 8, !tbaa !5
  %.not = icmp eq i64 %.pr182.pr, 0
  br i1 %.not, label %49, label %.thread186

.thread186.sink.split:                            ; preds = %42, %31, %28, %25, %8
  %.sink = phi i64 [ -1, %8 ], [ -2, %25 ], [ -4, %28 ], [ -7, %31 ], [ -7, %42 ]
  store i64 %.sink, ptr %7, align 8, !tbaa !5
  br label %.thread186

.thread186:                                       ; preds = %.thread186.sink.split, %.thread
  %46 = phi i64 [ %.pr182.pr, %.thread ], [ %.sink, %.thread186.sink.split ]
  %47 = sub nsw i64 0, %46
  store i64 %47, ptr %9, align 8, !tbaa !5
  %48 = call i32 @xerbla_(ptr noundef nonnull @.str.2, ptr noundef nonnull %9) #5
  br label %.loopexit

49:                                               ; preds = %.thread
  %50 = icmp eq i64 %.pre214216, 0
  %or.cond217 = or i1 %22, %50
  br i1 %or.cond217, label %.loopexit, label %51

51:                                               ; preds = %49
  %52 = load i64, ptr %1, align 8, !tbaa !5
  %53 = icmp eq i64 %.pre214216, %52
  br i1 %53, label %54, label %56

54:                                               ; preds = %51
  %.not176207 = icmp slt i64 %.pre214216, 1
  br i1 %.not176207, label %.loopexit, label %.lr.ph210.preheader

.lr.ph210.preheader:                              ; preds = %54
  %55 = shl nuw i64 %.pre214216, 3
  tail call void @llvm.memset.p0.i64(ptr align 4 %4, i8 0, i64 %55, i1 false), !tbaa !13
  br label %.loopexit

56:                                               ; preds = %51
  %57 = icmp sgt i64 %.0153, 1
  %58 = icmp slt i64 %.0153, %.pre214216
  %or.cond179 = and i1 %57, %58
  br i1 %or.cond179, label %59, label %72

59:                                               ; preds = %56
  %60 = tail call i64 @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) #5
  %61 = tail call i64 @llvm.smax.i64(i64 %60, i64 0)
  %62 = load i64, ptr %0, align 8, !tbaa !5
  %63 = icmp slt i64 %61, %62
  br i1 %63, label %64, label %.thread191

64:                                               ; preds = %59
  store i64 %62, ptr %16, align 8, !tbaa !5
  %65 = mul nsw i64 %62, %.0153
  %66 = load i64, ptr %6, align 8, !tbaa !5
  %67 = icmp slt i64 %66, %65
  br i1 %67, label %68, label %.thread191

68:                                               ; preds = %64
  %69 = sdiv i64 %66, %62
  %70 = tail call i64 @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) #5
  %71 = tail call i64 @llvm.smax.i64(i64 %70, i64 2)
  %.pre214.pre = load i64, ptr %0, align 8, !tbaa !5
  br label %72

72:                                               ; preds = %68, %56
  %.pre214 = phi i64 [ %.pre214.pre, %68 ], [ %.pre214216, %56 ]
  %.2 = phi i64 [ %69, %68 ], [ %.0153, %56 ]
  %.0152 = phi i64 [ %61, %68 ], [ 1, %56 ]
  %.0151 = phi i64 [ %71, %68 ], [ 2, %56 ]
  %.not172 = icmp slt i64 %.2, %.0151
  br i1 %.not172, label %124, label %.thread191

.thread191:                                       ; preds = %72, %59, %64
  %73 = phi i64 [ %62, %64 ], [ %62, %59 ], [ %.pre214, %72 ]
  %.0152197 = phi i64 [ %61, %64 ], [ %61, %59 ], [ %.0152, %72 ]
  %.2196 = phi i64 [ %.0153, %64 ], [ %.0153, %59 ], [ %.2, %72 ]
  %74 = icmp slt i64 %.2196, %73
  %75 = icmp slt i64 %.0152197, %73
  %or.cond180 = and i1 %74, %75
  br i1 %or.cond180, label %76, label %124

76:                                               ; preds = %.thread191
  %77 = load i64, ptr %1, align 8, !tbaa !5
  %78 = xor i64 %.0152197, -1
  %79 = add nsw i64 %73, %78
  %.fr = freeze i64 %79
  %80 = srem i64 %.fr, %.2196
  %81 = sub nsw i64 %.fr, %80
  %82 = add nsw i64 %81, %.2196
  store i64 %82, ptr %10, align 8, !tbaa !5
  %83 = tail call i64 @llvm.smin.i64(i64 %73, i64 %82)
  %84 = sub nsw i64 %73, %83
  %85 = add i64 %84, 1
  %86 = add i64 %85, %81
  %invariant.gep = getelementptr i8, ptr %19, i64 8
  %.not218 = icmp slt i64 %86, %85
  br i1 %.not218, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %76
  %87 = add nuw nsw i64 %73, 1
  %.not173.not = icmp slt i64 %73, %77
  %. = select i1 %.not173.not, i64 %87, i64 %77
  %88 = mul nsw i64 %., %17
  %89 = icmp sgt i64 %.2196, 0
  br label %90

90:                                               ; preds = %.lr.ph, %118
  %.1156204 = phi i64 [ %86, %.lr.ph ], [ %119, %118 ]
  %91 = load i64, ptr %0, align 8, !tbaa !5
  %92 = sub nsw i64 %91, %.1156204
  %93 = add nsw i64 %92, 1
  %94 = call i64 @llvm.smin.i64(i64 %93, i64 %.2196)
  store i64 %94, ptr %14, align 8, !tbaa !5
  %95 = load i64, ptr %1, align 8, !tbaa !5
  %reass.sub = sub i64 %95, %.1156204
  %96 = add i64 %reass.sub, 1
  store i64 %96, ptr %11, align 8, !tbaa !5
  %97 = sub nsw i64 %95, %91
  store i64 %97, ptr %12, align 8, !tbaa !5
  %98 = mul nsw i64 %.1156204, %17
  %99 = getelementptr %struct.complex, ptr %19, i64 %.1156204
  %100 = getelementptr %struct.complex, ptr %99, i64 %98
  %101 = getelementptr inbounds %struct.complex, ptr %20, i64 %.1156204
  %102 = call i32 @clatrz_(ptr noundef nonnull %14, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef %100, ptr noundef nonnull %3, ptr noundef nonnull %101, ptr noundef nonnull %5) #5
  %103 = icmp sgt i64 %.1156204, 1
  br i1 %103, label %104, label %118

104:                                              ; preds = %90
  %105 = load i64, ptr %1, align 8, !tbaa !5
  %106 = load i64, ptr %0, align 8, !tbaa !5
  %107 = sub nsw i64 %105, %106
  store i64 %107, ptr %11, align 8, !tbaa !5
  %108 = getelementptr %struct.complex, ptr %99, i64 %88
  %109 = call i32 @clarzt_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull %11, ptr noundef nonnull %14, ptr noundef %108, ptr noundef nonnull %3, ptr noundef nonnull %101, ptr noundef nonnull %5, ptr noundef nonnull %16) #5
  %110 = add nsw i64 %.1156204, -1
  store i64 %110, ptr %11, align 8, !tbaa !5
  %111 = load i64, ptr %1, align 8, !tbaa !5
  %reass.sub212 = sub i64 %111, %.1156204
  %112 = add i64 %reass.sub212, 1
  store i64 %112, ptr %12, align 8, !tbaa !5
  %113 = load i64, ptr %0, align 8, !tbaa !5
  %114 = sub nsw i64 %111, %113
  store i64 %114, ptr %13, align 8, !tbaa !5
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %98
  %115 = load i64, ptr %14, align 8, !tbaa !5
  %116 = getelementptr %struct.complex, ptr %5, i64 %115
  %117 = call i32 @clarzb_(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef nonnull %13, ptr noundef %108, ptr noundef nonnull %3, ptr noundef nonnull %5, ptr noundef nonnull %16, ptr noundef %gep, ptr noundef nonnull %3, ptr noundef %116, ptr noundef nonnull %16) #5
  br label %118

118:                                              ; preds = %90, %104
  %119 = sub i64 %.1156204, %.2196
  %120 = icmp sge i64 %119, %85
  %121 = icmp sle i64 %119, %85
  %.in = select i1 %89, i1 %120, i1 %121
  br i1 %.in, label %90, label %._crit_edge, !llvm.loop !14

._crit_edge:                                      ; preds = %118, %76
  %.1156.lcssa = phi i64 [ %86, %76 ], [ %119, %118 ]
  %122 = add i64 %.2196, -1
  %123 = add i64 %122, %.1156.lcssa
  br label %124

124:                                              ; preds = %72, %.thread191, %._crit_edge
  %storemerge = phi i64 [ %123, %._crit_edge ], [ %73, %.thread191 ], [ %.pre214, %72 ]
  store i64 %storemerge, ptr %15, align 8, !tbaa !5
  %125 = icmp sgt i64 %storemerge, 0
  br i1 %125, label %126, label %131

126:                                              ; preds = %124
  %127 = load i64, ptr %1, align 8, !tbaa !5
  %128 = load i64, ptr %0, align 8, !tbaa !5
  %129 = sub nsw i64 %127, %128
  store i64 %129, ptr %10, align 8, !tbaa !5
  %130 = call i32 @clatrz_(ptr noundef nonnull %15, ptr noundef nonnull %1, ptr noundef nonnull %10, ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5) #5
  br label %131

131:                                              ; preds = %126, %124
  store float %.0150, ptr %5, align 4, !tbaa !9
  store float 0.000000e+00, ptr %44, align 4, !tbaa !12
  br label %.loopexit

.loopexit:                                        ; preds = %54, %.lr.ph210.preheader, %49, %131, %.thread186
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #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 i64 @ilaenv_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

declare i32 @clarzb_(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 i64 @llvm.smax.i64(i64, i64) #3

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.umax.i64(i64, i64) #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 = !{!"long", !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}
!15 = !{!"llvm.loop.mustprogress"}


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