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

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.complex = type { float, float }

@.str = external hidden unnamed_addr constant [6 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local double @cla_herpvgrw__(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, i64 noundef %9) #0 {
  %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 ptr, align 8
  %19 = alloca ptr, 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 float, align 4
  %29 = alloca float, align 4
  %30 = alloca float, align 4
  %31 = alloca float, align 4
  %32 = alloca float, align 4
  %33 = alloca i64, align 8
  %34 = alloca i64, align 8
  %35 = alloca i64, align 8
  %36 = alloca i64, align 8
  %37 = alloca float, align 4
  %38 = alloca float, align 4
  %39 = alloca float, align 4
  %40 = alloca i64, align 8
  %41 = alloca i64, align 8
  %42 = alloca float, align 4
  store ptr %0, ptr %11, align 8, !tbaa !5
  store ptr %1, ptr %12, align 8, !tbaa !5
  store ptr %2, ptr %13, align 8, !tbaa !5
  store ptr %3, ptr %14, align 8, !tbaa !5
  store ptr %4, ptr %15, align 8, !tbaa !5
  store ptr %5, ptr %16, align 8, !tbaa !5
  store ptr %6, ptr %17, align 8, !tbaa !5
  store ptr %7, ptr %18, align 8, !tbaa !5
  store ptr %8, ptr %19, align 8, !tbaa !5
  store i64 %9, ptr %20, align 8, !tbaa !9
  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 4, ptr %28) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #3
  call void @llvm.lifetime.start.p0(i64 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 4, ptr %37) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #3
  %43 = load ptr, ptr %15, align 8, !tbaa !5
  %44 = load i64, ptr %43, align 8, !tbaa !9
  store i64 %44, ptr %21, align 8, !tbaa !9
  %45 = load i64, ptr %21, align 8, !tbaa !9
  %46 = add nsw i64 1, %45
  store i64 %46, ptr %22, align 8, !tbaa !9
  %47 = load i64, ptr %22, align 8, !tbaa !9
  %48 = load ptr, ptr %14, align 8, !tbaa !5
  %49 = sub i64 0, %47
  %50 = getelementptr inbounds %struct.complex, ptr %48, i64 %49
  store ptr %50, ptr %14, align 8, !tbaa !5
  %51 = load ptr, ptr %17, align 8, !tbaa !5
  %52 = load i64, ptr %51, align 8, !tbaa !9
  store i64 %52, ptr %23, align 8, !tbaa !9
  %53 = load i64, ptr %23, align 8, !tbaa !9
  %54 = add nsw i64 1, %53
  store i64 %54, ptr %24, align 8, !tbaa !9
  %55 = load i64, ptr %24, align 8, !tbaa !9
  %56 = load ptr, ptr %16, align 8, !tbaa !5
  %57 = sub i64 0, %55
  %58 = getelementptr inbounds %struct.complex, ptr %56, i64 %57
  store ptr %58, ptr %16, align 8, !tbaa !5
  %59 = load ptr, ptr %18, align 8, !tbaa !5
  %60 = getelementptr inbounds i64, ptr %59, i32 -1
  store ptr %60, ptr %18, align 8, !tbaa !5
  %61 = load ptr, ptr %19, align 8, !tbaa !5
  %62 = getelementptr inbounds float, ptr %61, i32 -1
  store ptr %62, ptr %19, align 8, !tbaa !5
  %63 = load ptr, ptr %11, align 8, !tbaa !5
  %64 = call i64 @lsame_(ptr noundef @.str, ptr noundef %63)
  store i64 %64, ptr %41, align 8, !tbaa !9
  %65 = load ptr, ptr %13, align 8, !tbaa !5
  %66 = load i64, ptr %65, align 8, !tbaa !9
  %67 = icmp eq i64 %66, 0
  br i1 %67, label %68, label %76

68:                                               ; preds = %10
  %69 = load i64, ptr %41, align 8, !tbaa !9
  %70 = icmp ne i64 %69, 0
  br i1 %70, label %71, label %72

71:                                               ; preds = %68
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %75

72:                                               ; preds = %68
  %73 = load ptr, ptr %12, align 8, !tbaa !5
  %74 = load i64, ptr %73, align 8, !tbaa !9
  store i64 %74, ptr %40, align 8, !tbaa !9
  br label %75

75:                                               ; preds = %72, %71
  br label %79

76:                                               ; preds = %10
  %77 = load ptr, ptr %13, align 8, !tbaa !5
  %78 = load i64, ptr %77, align 8, !tbaa !9
  store i64 %78, ptr %40, align 8, !tbaa !9
  br label %79

79:                                               ; preds = %76, %75
  store float 1.000000e+00, ptr %42, align 4, !tbaa !11
  %80 = load ptr, ptr %12, align 8, !tbaa !5
  %81 = load i64, ptr %80, align 8, !tbaa !9
  %82 = shl i64 %81, 1
  store i64 %82, ptr %25, align 8, !tbaa !9
  store i64 1, ptr %33, align 8, !tbaa !9
  br label %83

83:                                               ; preds = %91, %79
  %84 = load i64, ptr %33, align 8, !tbaa !9
  %85 = load i64, ptr %25, align 8, !tbaa !9
  %86 = icmp sle i64 %84, %85
  br i1 %86, label %87, label %94

87:                                               ; preds = %83
  %88 = load ptr, ptr %19, align 8, !tbaa !5
  %89 = load i64, ptr %33, align 8, !tbaa !9
  %90 = getelementptr inbounds float, ptr %88, i64 %89
  store float 0.000000e+00, ptr %90, align 4, !tbaa !11
  br label %91

91:                                               ; preds = %87
  %92 = load i64, ptr %33, align 8, !tbaa !9
  %93 = add nsw i64 %92, 1
  store i64 %93, ptr %33, align 8, !tbaa !9
  br label %83, !llvm.loop !13

94:                                               ; preds = %83
  %95 = load i64, ptr %41, align 8, !tbaa !9
  %96 = icmp ne i64 %95, 0
  br i1 %96, label %97, label %249

97:                                               ; preds = %94
  %98 = load ptr, ptr %12, align 8, !tbaa !5
  %99 = load i64, ptr %98, align 8, !tbaa !9
  store i64 %99, ptr %25, align 8, !tbaa !9
  store i64 1, ptr %34, align 8, !tbaa !9
  br label %100

100:                                              ; preds = %245, %97
  %101 = load i64, ptr %34, align 8, !tbaa !9
  %102 = load i64, ptr %25, align 8, !tbaa !9
  %103 = icmp sle i64 %101, %102
  br i1 %103, label %104, label %248

104:                                              ; preds = %100
  %105 = load i64, ptr %34, align 8, !tbaa !9
  store i64 %105, ptr %26, align 8, !tbaa !9
  store i64 1, ptr %33, align 8, !tbaa !9
  br label %106

106:                                              ; preds = %241, %104
  %107 = load i64, ptr %33, align 8, !tbaa !9
  %108 = load i64, ptr %26, align 8, !tbaa !9
  %109 = icmp sle i64 %107, %108
  br i1 %109, label %110, label %244

110:                                              ; preds = %106
  %111 = load i64, ptr %33, align 8, !tbaa !9
  %112 = load i64, ptr %34, align 8, !tbaa !9
  %113 = load i64, ptr %21, align 8, !tbaa !9
  %114 = mul nsw i64 %112, %113
  %115 = add nsw i64 %111, %114
  store i64 %115, ptr %27, align 8, !tbaa !9
  %116 = load ptr, ptr %14, align 8, !tbaa !5
  %117 = load i64, ptr %27, align 8, !tbaa !9
  %118 = getelementptr inbounds %struct.complex, ptr %116, i64 %117
  %119 = getelementptr inbounds %struct.complex, ptr %118, i32 0, i32 0
  %120 = load float, ptr %119, align 4, !tbaa !15
  store float %120, ptr %29, align 4, !tbaa !11
  %121 = load float, ptr %29, align 4, !tbaa !11
  %122 = fcmp oge float %121, 0.000000e+00
  br i1 %122, label %123, label %125

123:                                              ; preds = %110
  %124 = load float, ptr %29, align 4, !tbaa !11
  br label %128

125:                                              ; preds = %110
  %126 = load float, ptr %29, align 4, !tbaa !11
  %127 = fneg float %126
  br label %128

128:                                              ; preds = %125, %123
  %129 = phi float [ %124, %123 ], [ %127, %125 ]
  %130 = fpext float %129 to double
  %131 = load ptr, ptr %14, align 8, !tbaa !5
  %132 = load i64, ptr %33, align 8, !tbaa !9
  %133 = load i64, ptr %34, align 8, !tbaa !9
  %134 = load i64, ptr %21, align 8, !tbaa !9
  %135 = mul nsw i64 %133, %134
  %136 = add nsw i64 %132, %135
  %137 = getelementptr inbounds %struct.complex, ptr %131, i64 %136
  %138 = call double @r_imag(ptr noundef %137)
  %139 = fptrunc double %138 to float
  store float %139, ptr %30, align 4, !tbaa !11
  %140 = load float, ptr %30, align 4, !tbaa !11
  %141 = fcmp oge float %140, 0.000000e+00
  br i1 %141, label %142, label %144

142:                                              ; preds = %128
  %143 = load float, ptr %30, align 4, !tbaa !11
  br label %147

144:                                              ; preds = %128
  %145 = load float, ptr %30, align 4, !tbaa !11
  %146 = fneg float %145
  br label %147

147:                                              ; preds = %144, %142
  %148 = phi float [ %143, %142 ], [ %146, %144 ]
  %149 = fpext float %148 to double
  %150 = fadd double %130, %149
  %151 = fptrunc double %150 to float
  store float %151, ptr %31, align 4, !tbaa !11
  %152 = load ptr, ptr %19, align 8, !tbaa !5
  %153 = load ptr, ptr %12, align 8, !tbaa !5
  %154 = load i64, ptr %153, align 8, !tbaa !9
  %155 = load i64, ptr %33, align 8, !tbaa !9
  %156 = add nsw i64 %154, %155
  %157 = getelementptr inbounds float, ptr %152, i64 %156
  %158 = load float, ptr %157, align 4, !tbaa !11
  store float %158, ptr %32, align 4, !tbaa !11
  %159 = load float, ptr %31, align 4, !tbaa !11
  %160 = load float, ptr %32, align 4, !tbaa !11
  %161 = fcmp oge float %159, %160
  br i1 %161, label %162, label %164

162:                                              ; preds = %147
  %163 = load float, ptr %31, align 4, !tbaa !11
  br label %166

164:                                              ; preds = %147
  %165 = load float, ptr %32, align 4, !tbaa !11
  br label %166

166:                                              ; preds = %164, %162
  %167 = phi float [ %163, %162 ], [ %165, %164 ]
  %168 = fpext float %167 to double
  %169 = fptrunc double %168 to float
  %170 = load ptr, ptr %19, align 8, !tbaa !5
  %171 = load ptr, ptr %12, align 8, !tbaa !5
  %172 = load i64, ptr %171, align 8, !tbaa !9
  %173 = load i64, ptr %33, align 8, !tbaa !9
  %174 = add nsw i64 %172, %173
  %175 = getelementptr inbounds float, ptr %170, i64 %174
  store float %169, ptr %175, align 4, !tbaa !11
  %176 = load i64, ptr %33, align 8, !tbaa !9
  %177 = load i64, ptr %34, align 8, !tbaa !9
  %178 = load i64, ptr %21, align 8, !tbaa !9
  %179 = mul nsw i64 %177, %178
  %180 = add nsw i64 %176, %179
  store i64 %180, ptr %27, align 8, !tbaa !9
  %181 = load ptr, ptr %14, align 8, !tbaa !5
  %182 = load i64, ptr %27, align 8, !tbaa !9
  %183 = getelementptr inbounds %struct.complex, ptr %181, i64 %182
  %184 = getelementptr inbounds %struct.complex, ptr %183, i32 0, i32 0
  %185 = load float, ptr %184, align 4, !tbaa !15
  store float %185, ptr %29, align 4, !tbaa !11
  %186 = load float, ptr %29, align 4, !tbaa !11
  %187 = fcmp oge float %186, 0.000000e+00
  br i1 %187, label %188, label %190

188:                                              ; preds = %166
  %189 = load float, ptr %29, align 4, !tbaa !11
  br label %193

190:                                              ; preds = %166
  %191 = load float, ptr %29, align 4, !tbaa !11
  %192 = fneg float %191
  br label %193

193:                                              ; preds = %190, %188
  %194 = phi float [ %189, %188 ], [ %192, %190 ]
  %195 = fpext float %194 to double
  %196 = load ptr, ptr %14, align 8, !tbaa !5
  %197 = load i64, ptr %33, align 8, !tbaa !9
  %198 = load i64, ptr %34, align 8, !tbaa !9
  %199 = load i64, ptr %21, align 8, !tbaa !9
  %200 = mul nsw i64 %198, %199
  %201 = add nsw i64 %197, %200
  %202 = getelementptr inbounds %struct.complex, ptr %196, i64 %201
  %203 = call double @r_imag(ptr noundef %202)
  %204 = fptrunc double %203 to float
  store float %204, ptr %30, align 4, !tbaa !11
  %205 = load float, ptr %30, align 4, !tbaa !11
  %206 = fcmp oge float %205, 0.000000e+00
  br i1 %206, label %207, label %209

207:                                              ; preds = %193
  %208 = load float, ptr %30, align 4, !tbaa !11
  br label %212

209:                                              ; preds = %193
  %210 = load float, ptr %30, align 4, !tbaa !11
  %211 = fneg float %210
  br label %212

212:                                              ; preds = %209, %207
  %213 = phi float [ %208, %207 ], [ %211, %209 ]
  %214 = fpext float %213 to double
  %215 = fadd double %195, %214
  %216 = fptrunc double %215 to float
  store float %216, ptr %31, align 4, !tbaa !11
  %217 = load ptr, ptr %19, align 8, !tbaa !5
  %218 = load ptr, ptr %12, align 8, !tbaa !5
  %219 = load i64, ptr %218, align 8, !tbaa !9
  %220 = load i64, ptr %34, align 8, !tbaa !9
  %221 = add nsw i64 %219, %220
  %222 = getelementptr inbounds float, ptr %217, i64 %221
  %223 = load float, ptr %222, align 4, !tbaa !11
  store float %223, ptr %32, align 4, !tbaa !11
  %224 = load float, ptr %31, align 4, !tbaa !11
  %225 = load float, ptr %32, align 4, !tbaa !11
  %226 = fcmp oge float %224, %225
  br i1 %226, label %227, label %229

227:                                              ; preds = %212
  %228 = load float, ptr %31, align 4, !tbaa !11
  br label %231

229:                                              ; preds = %212
  %230 = load float, ptr %32, align 4, !tbaa !11
  br label %231

231:                                              ; preds = %229, %227
  %232 = phi float [ %228, %227 ], [ %230, %229 ]
  %233 = fpext float %232 to double
  %234 = fptrunc double %233 to float
  %235 = load ptr, ptr %19, align 8, !tbaa !5
  %236 = load ptr, ptr %12, align 8, !tbaa !5
  %237 = load i64, ptr %236, align 8, !tbaa !9
  %238 = load i64, ptr %34, align 8, !tbaa !9
  %239 = add nsw i64 %237, %238
  %240 = getelementptr inbounds float, ptr %235, i64 %239
  store float %234, ptr %240, align 4, !tbaa !11
  br label %241

241:                                              ; preds = %231
  %242 = load i64, ptr %33, align 8, !tbaa !9
  %243 = add nsw i64 %242, 1
  store i64 %243, ptr %33, align 8, !tbaa !9
  br label %106, !llvm.loop !17

244:                                              ; preds = %106
  br label %245

245:                                              ; preds = %244
  %246 = load i64, ptr %34, align 8, !tbaa !9
  %247 = add nsw i64 %246, 1
  store i64 %247, ptr %34, align 8, !tbaa !9
  br label %100, !llvm.loop !18

248:                                              ; preds = %100
  br label %403

249:                                              ; preds = %94
  %250 = load ptr, ptr %12, align 8, !tbaa !5
  %251 = load i64, ptr %250, align 8, !tbaa !9
  store i64 %251, ptr %25, align 8, !tbaa !9
  store i64 1, ptr %34, align 8, !tbaa !9
  br label %252

252:                                              ; preds = %399, %249
  %253 = load i64, ptr %34, align 8, !tbaa !9
  %254 = load i64, ptr %25, align 8, !tbaa !9
  %255 = icmp sle i64 %253, %254
  br i1 %255, label %256, label %402

256:                                              ; preds = %252
  %257 = load ptr, ptr %12, align 8, !tbaa !5
  %258 = load i64, ptr %257, align 8, !tbaa !9
  store i64 %258, ptr %26, align 8, !tbaa !9
  %259 = load i64, ptr %34, align 8, !tbaa !9
  store i64 %259, ptr %33, align 8, !tbaa !9
  br label %260

260:                                              ; preds = %395, %256
  %261 = load i64, ptr %33, align 8, !tbaa !9
  %262 = load i64, ptr %26, align 8, !tbaa !9
  %263 = icmp sle i64 %261, %262
  br i1 %263, label %264, label %398

264:                                              ; preds = %260
  %265 = load i64, ptr %33, align 8, !tbaa !9
  %266 = load i64, ptr %34, align 8, !tbaa !9
  %267 = load i64, ptr %21, align 8, !tbaa !9
  %268 = mul nsw i64 %266, %267
  %269 = add nsw i64 %265, %268
  store i64 %269, ptr %27, align 8, !tbaa !9
  %270 = load ptr, ptr %14, align 8, !tbaa !5
  %271 = load i64, ptr %27, align 8, !tbaa !9
  %272 = getelementptr inbounds %struct.complex, ptr %270, i64 %271
  %273 = getelementptr inbounds %struct.complex, ptr %272, i32 0, i32 0
  %274 = load float, ptr %273, align 4, !tbaa !15
  store float %274, ptr %29, align 4, !tbaa !11
  %275 = load float, ptr %29, align 4, !tbaa !11
  %276 = fcmp oge float %275, 0.000000e+00
  br i1 %276, label %277, label %279

277:                                              ; preds = %264
  %278 = load float, ptr %29, align 4, !tbaa !11
  br label %282

279:                                              ; preds = %264
  %280 = load float, ptr %29, align 4, !tbaa !11
  %281 = fneg float %280
  br label %282

282:                                              ; preds = %279, %277
  %283 = phi float [ %278, %277 ], [ %281, %279 ]
  %284 = fpext float %283 to double
  %285 = load ptr, ptr %14, align 8, !tbaa !5
  %286 = load i64, ptr %33, align 8, !tbaa !9
  %287 = load i64, ptr %34, align 8, !tbaa !9
  %288 = load i64, ptr %21, align 8, !tbaa !9
  %289 = mul nsw i64 %287, %288
  %290 = add nsw i64 %286, %289
  %291 = getelementptr inbounds %struct.complex, ptr %285, i64 %290
  %292 = call double @r_imag(ptr noundef %291)
  %293 = fptrunc double %292 to float
  store float %293, ptr %30, align 4, !tbaa !11
  %294 = load float, ptr %30, align 4, !tbaa !11
  %295 = fcmp oge float %294, 0.000000e+00
  br i1 %295, label %296, label %298

296:                                              ; preds = %282
  %297 = load float, ptr %30, align 4, !tbaa !11
  br label %301

298:                                              ; preds = %282
  %299 = load float, ptr %30, align 4, !tbaa !11
  %300 = fneg float %299
  br label %301

301:                                              ; preds = %298, %296
  %302 = phi float [ %297, %296 ], [ %300, %298 ]
  %303 = fpext float %302 to double
  %304 = fadd double %284, %303
  %305 = fptrunc double %304 to float
  store float %305, ptr %31, align 4, !tbaa !11
  %306 = load ptr, ptr %19, align 8, !tbaa !5
  %307 = load ptr, ptr %12, align 8, !tbaa !5
  %308 = load i64, ptr %307, align 8, !tbaa !9
  %309 = load i64, ptr %33, align 8, !tbaa !9
  %310 = add nsw i64 %308, %309
  %311 = getelementptr inbounds float, ptr %306, i64 %310
  %312 = load float, ptr %311, align 4, !tbaa !11
  store float %312, ptr %32, align 4, !tbaa !11
  %313 = load float, ptr %31, align 4, !tbaa !11
  %314 = load float, ptr %32, align 4, !tbaa !11
  %315 = fcmp oge float %313, %314
  br i1 %315, label %316, label %318

316:                                              ; preds = %301
  %317 = load float, ptr %31, align 4, !tbaa !11
  br label %320

318:                                              ; preds = %301
  %319 = load float, ptr %32, align 4, !tbaa !11
  br label %320

320:                                              ; preds = %318, %316
  %321 = phi float [ %317, %316 ], [ %319, %318 ]
  %322 = fpext float %321 to double
  %323 = fptrunc double %322 to float
  %324 = load ptr, ptr %19, align 8, !tbaa !5
  %325 = load ptr, ptr %12, align 8, !tbaa !5
  %326 = load i64, ptr %325, align 8, !tbaa !9
  %327 = load i64, ptr %33, align 8, !tbaa !9
  %328 = add nsw i64 %326, %327
  %329 = getelementptr inbounds float, ptr %324, i64 %328
  store float %323, ptr %329, align 4, !tbaa !11
  %330 = load i64, ptr %33, align 8, !tbaa !9
  %331 = load i64, ptr %34, align 8, !tbaa !9
  %332 = load i64, ptr %21, align 8, !tbaa !9
  %333 = mul nsw i64 %331, %332
  %334 = add nsw i64 %330, %333
  store i64 %334, ptr %27, align 8, !tbaa !9
  %335 = load ptr, ptr %14, align 8, !tbaa !5
  %336 = load i64, ptr %27, align 8, !tbaa !9
  %337 = getelementptr inbounds %struct.complex, ptr %335, i64 %336
  %338 = getelementptr inbounds %struct.complex, ptr %337, i32 0, i32 0
  %339 = load float, ptr %338, align 4, !tbaa !15
  store float %339, ptr %29, align 4, !tbaa !11
  %340 = load float, ptr %29, align 4, !tbaa !11
  %341 = fcmp oge float %340, 0.000000e+00
  br i1 %341, label %342, label %344

342:                                              ; preds = %320
  %343 = load float, ptr %29, align 4, !tbaa !11
  br label %347

344:                                              ; preds = %320
  %345 = load float, ptr %29, align 4, !tbaa !11
  %346 = fneg float %345
  br label %347

347:                                              ; preds = %344, %342
  %348 = phi float [ %343, %342 ], [ %346, %344 ]
  %349 = fpext float %348 to double
  %350 = load ptr, ptr %14, align 8, !tbaa !5
  %351 = load i64, ptr %33, align 8, !tbaa !9
  %352 = load i64, ptr %34, align 8, !tbaa !9
  %353 = load i64, ptr %21, align 8, !tbaa !9
  %354 = mul nsw i64 %352, %353
  %355 = add nsw i64 %351, %354
  %356 = getelementptr inbounds %struct.complex, ptr %350, i64 %355
  %357 = call double @r_imag(ptr noundef %356)
  %358 = fptrunc double %357 to float
  store float %358, ptr %30, align 4, !tbaa !11
  %359 = load float, ptr %30, align 4, !tbaa !11
  %360 = fcmp oge float %359, 0.000000e+00
  br i1 %360, label %361, label %363

361:                                              ; preds = %347
  %362 = load float, ptr %30, align 4, !tbaa !11
  br label %366

363:                                              ; preds = %347
  %364 = load float, ptr %30, align 4, !tbaa !11
  %365 = fneg float %364
  br label %366

366:                                              ; preds = %363, %361
  %367 = phi float [ %362, %361 ], [ %365, %363 ]
  %368 = fpext float %367 to double
  %369 = fadd double %349, %368
  %370 = fptrunc double %369 to float
  store float %370, ptr %31, align 4, !tbaa !11
  %371 = load ptr, ptr %19, align 8, !tbaa !5
  %372 = load ptr, ptr %12, align 8, !tbaa !5
  %373 = load i64, ptr %372, align 8, !tbaa !9
  %374 = load i64, ptr %34, align 8, !tbaa !9
  %375 = add nsw i64 %373, %374
  %376 = getelementptr inbounds float, ptr %371, i64 %375
  %377 = load float, ptr %376, align 4, !tbaa !11
  store float %377, ptr %32, align 4, !tbaa !11
  %378 = load float, ptr %31, align 4, !tbaa !11
  %379 = load float, ptr %32, align 4, !tbaa !11
  %380 = fcmp oge float %378, %379
  br i1 %380, label %381, label %383

381:                                              ; preds = %366
  %382 = load float, ptr %31, align 4, !tbaa !11
  br label %385

383:                                              ; preds = %366
  %384 = load float, ptr %32, align 4, !tbaa !11
  br label %385

385:                                              ; preds = %383, %381
  %386 = phi float [ %382, %381 ], [ %384, %383 ]
  %387 = fpext float %386 to double
  %388 = fptrunc double %387 to float
  %389 = load ptr, ptr %19, align 8, !tbaa !5
  %390 = load ptr, ptr %12, align 8, !tbaa !5
  %391 = load i64, ptr %390, align 8, !tbaa !9
  %392 = load i64, ptr %34, align 8, !tbaa !9
  %393 = add nsw i64 %391, %392
  %394 = getelementptr inbounds float, ptr %389, i64 %393
  store float %388, ptr %394, align 4, !tbaa !11
  br label %395

395:                                              ; preds = %385
  %396 = load i64, ptr %33, align 8, !tbaa !9
  %397 = add nsw i64 %396, 1
  store i64 %397, ptr %33, align 8, !tbaa !9
  br label %260, !llvm.loop !19

398:                                              ; preds = %260
  br label %399

399:                                              ; preds = %398
  %400 = load i64, ptr %34, align 8, !tbaa !9
  %401 = add nsw i64 %400, 1
  store i64 %401, ptr %34, align 8, !tbaa !9
  br label %252, !llvm.loop !20

402:                                              ; preds = %252
  br label %403

403:                                              ; preds = %402, %248
  %404 = load i64, ptr %41, align 8, !tbaa !9
  %405 = icmp ne i64 %404, 0
  br i1 %405, label %406, label %851

406:                                              ; preds = %403
  %407 = load ptr, ptr %12, align 8, !tbaa !5
  %408 = load i64, ptr %407, align 8, !tbaa !9
  store i64 %408, ptr %35, align 8, !tbaa !9
  br label %409

409:                                              ; preds = %761, %406
  %410 = load i64, ptr %35, align 8, !tbaa !9
  %411 = load i64, ptr %40, align 8, !tbaa !9
  %412 = icmp slt i64 %410, %411
  br i1 %412, label %413, label %416

413:                                              ; preds = %409
  %414 = load i64, ptr %35, align 8, !tbaa !9
  %415 = icmp sgt i64 %414, 0
  br label %416

416:                                              ; preds = %413, %409
  %417 = phi i1 [ false, %409 ], [ %415, %413 ]
  br i1 %417, label %418, label %762

418:                                              ; preds = %416
  %419 = load ptr, ptr %18, align 8, !tbaa !5
  %420 = load i64, ptr %35, align 8, !tbaa !9
  %421 = getelementptr inbounds i64, ptr %419, i64 %420
  %422 = load i64, ptr %421, align 8, !tbaa !9
  %423 = icmp sgt i64 %422, 0
  br i1 %423, label %424, label %532

424:                                              ; preds = %418
  %425 = load ptr, ptr %18, align 8, !tbaa !5
  %426 = load i64, ptr %35, align 8, !tbaa !9
  %427 = getelementptr inbounds i64, ptr %425, i64 %426
  %428 = load i64, ptr %427, align 8, !tbaa !9
  store i64 %428, ptr %36, align 8, !tbaa !9
  %429 = load i64, ptr %36, align 8, !tbaa !9
  %430 = load i64, ptr %35, align 8, !tbaa !9
  %431 = icmp ne i64 %429, %430
  br i1 %431, label %432, label %460

432:                                              ; preds = %424
  %433 = load ptr, ptr %19, align 8, !tbaa !5
  %434 = load ptr, ptr %12, align 8, !tbaa !5
  %435 = load i64, ptr %434, align 8, !tbaa !9
  %436 = load i64, ptr %35, align 8, !tbaa !9
  %437 = add nsw i64 %435, %436
  %438 = getelementptr inbounds float, ptr %433, i64 %437
  %439 = load float, ptr %438, align 4, !tbaa !11
  store float %439, ptr %37, align 4, !tbaa !11
  %440 = load ptr, ptr %19, align 8, !tbaa !5
  %441 = load ptr, ptr %12, align 8, !tbaa !5
  %442 = load i64, ptr %441, align 8, !tbaa !9
  %443 = load i64, ptr %36, align 8, !tbaa !9
  %444 = add nsw i64 %442, %443
  %445 = getelementptr inbounds float, ptr %440, i64 %444
  %446 = load float, ptr %445, align 4, !tbaa !11
  %447 = load ptr, ptr %19, align 8, !tbaa !5
  %448 = load ptr, ptr %12, align 8, !tbaa !5
  %449 = load i64, ptr %448, align 8, !tbaa !9
  %450 = load i64, ptr %35, align 8, !tbaa !9
  %451 = add nsw i64 %449, %450
  %452 = getelementptr inbounds float, ptr %447, i64 %451
  store float %446, ptr %452, align 4, !tbaa !11
  %453 = load float, ptr %37, align 4, !tbaa !11
  %454 = load ptr, ptr %19, align 8, !tbaa !5
  %455 = load ptr, ptr %12, align 8, !tbaa !5
  %456 = load i64, ptr %455, align 8, !tbaa !9
  %457 = load i64, ptr %36, align 8, !tbaa !9
  %458 = add nsw i64 %456, %457
  %459 = getelementptr inbounds float, ptr %454, i64 %458
  store float %453, ptr %459, align 4, !tbaa !11
  br label %460

460:                                              ; preds = %432, %424
  %461 = load i64, ptr %35, align 8, !tbaa !9
  store i64 %461, ptr %25, align 8, !tbaa !9
  store i64 1, ptr %33, align 8, !tbaa !9
  br label %462

462:                                              ; preds = %526, %460
  %463 = load i64, ptr %33, align 8, !tbaa !9
  %464 = load i64, ptr %25, align 8, !tbaa !9
  %465 = icmp sle i64 %463, %464
  br i1 %465, label %466, label %529

466:                                              ; preds = %462
  %467 = load i64, ptr %33, align 8, !tbaa !9
  %468 = load i64, ptr %35, align 8, !tbaa !9
  %469 = load i64, ptr %23, align 8, !tbaa !9
  %470 = mul nsw i64 %468, %469
  %471 = add nsw i64 %467, %470
  store i64 %471, ptr %26, align 8, !tbaa !9
  %472 = load ptr, ptr %16, align 8, !tbaa !5
  %473 = load i64, ptr %26, align 8, !tbaa !9
  %474 = getelementptr inbounds %struct.complex, ptr %472, i64 %473
  %475 = getelementptr inbounds %struct.complex, ptr %474, i32 0, i32 0
  %476 = load float, ptr %475, align 4, !tbaa !15
  store float %476, ptr %29, align 4, !tbaa !11
  %477 = load float, ptr %29, align 4, !tbaa !11
  %478 = fcmp oge float %477, 0.000000e+00
  br i1 %478, label %479, label %481

479:                                              ; preds = %466
  %480 = load float, ptr %29, align 4, !tbaa !11
  br label %484

481:                                              ; preds = %466
  %482 = load float, ptr %29, align 4, !tbaa !11
  %483 = fneg float %482
  br label %484

484:                                              ; preds = %481, %479
  %485 = phi float [ %480, %479 ], [ %483, %481 ]
  %486 = fpext float %485 to double
  %487 = load ptr, ptr %16, align 8, !tbaa !5
  %488 = load i64, ptr %33, align 8, !tbaa !9
  %489 = load i64, ptr %35, align 8, !tbaa !9
  %490 = load i64, ptr %23, align 8, !tbaa !9
  %491 = mul nsw i64 %489, %490
  %492 = add nsw i64 %488, %491
  %493 = getelementptr inbounds %struct.complex, ptr %487, i64 %492
  %494 = call double @r_imag(ptr noundef %493)
  %495 = fptrunc double %494 to float
  store float %495, ptr %30, align 4, !tbaa !11
  %496 = load float, ptr %30, align 4, !tbaa !11
  %497 = fcmp oge float %496, 0.000000e+00
  br i1 %497, label %498, label %500

498:                                              ; preds = %484
  %499 = load float, ptr %30, align 4, !tbaa !11
  br label %503

500:                                              ; preds = %484
  %501 = load float, ptr %30, align 4, !tbaa !11
  %502 = fneg float %501
  br label %503

503:                                              ; preds = %500, %498
  %504 = phi float [ %499, %498 ], [ %502, %500 ]
  %505 = fpext float %504 to double
  %506 = fadd double %486, %505
  %507 = fptrunc double %506 to float
  store float %507, ptr %31, align 4, !tbaa !11
  %508 = load ptr, ptr %19, align 8, !tbaa !5
  %509 = load i64, ptr %35, align 8, !tbaa !9
  %510 = getelementptr inbounds float, ptr %508, i64 %509
  %511 = load float, ptr %510, align 4, !tbaa !11
  store float %511, ptr %32, align 4, !tbaa !11
  %512 = load float, ptr %31, align 4, !tbaa !11
  %513 = load float, ptr %32, align 4, !tbaa !11
  %514 = fcmp oge float %512, %513
  br i1 %514, label %515, label %517

515:                                              ; preds = %503
  %516 = load float, ptr %31, align 4, !tbaa !11
  br label %519

517:                                              ; preds = %503
  %518 = load float, ptr %32, align 4, !tbaa !11
  br label %519

519:                                              ; preds = %517, %515
  %520 = phi float [ %516, %515 ], [ %518, %517 ]
  %521 = fpext float %520 to double
  %522 = fptrunc double %521 to float
  %523 = load ptr, ptr %19, align 8, !tbaa !5
  %524 = load i64, ptr %35, align 8, !tbaa !9
  %525 = getelementptr inbounds float, ptr %523, i64 %524
  store float %522, ptr %525, align 4, !tbaa !11
  br label %526

526:                                              ; preds = %519
  %527 = load i64, ptr %33, align 8, !tbaa !9
  %528 = add nsw i64 %527, 1
  store i64 %528, ptr %33, align 8, !tbaa !9
  br label %462, !llvm.loop !21

529:                                              ; preds = %462
  %530 = load i64, ptr %35, align 8, !tbaa !9
  %531 = add nsw i64 %530, -1
  store i64 %531, ptr %35, align 8, !tbaa !9
  br label %761

532:                                              ; preds = %418
  %533 = load ptr, ptr %18, align 8, !tbaa !5
  %534 = load i64, ptr %35, align 8, !tbaa !9
  %535 = getelementptr inbounds i64, ptr %533, i64 %534
  %536 = load i64, ptr %535, align 8, !tbaa !9
  %537 = sub nsw i64 0, %536
  store i64 %537, ptr %36, align 8, !tbaa !9
  %538 = load ptr, ptr %19, align 8, !tbaa !5
  %539 = load ptr, ptr %12, align 8, !tbaa !5
  %540 = load i64, ptr %539, align 8, !tbaa !9
  %541 = load i64, ptr %35, align 8, !tbaa !9
  %542 = add nsw i64 %540, %541
  %543 = sub nsw i64 %542, 1
  %544 = getelementptr inbounds float, ptr %538, i64 %543
  %545 = load float, ptr %544, align 4, !tbaa !11
  store float %545, ptr %37, align 4, !tbaa !11
  %546 = load ptr, ptr %19, align 8, !tbaa !5
  %547 = load ptr, ptr %12, align 8, !tbaa !5
  %548 = load i64, ptr %547, align 8, !tbaa !9
  %549 = load i64, ptr %36, align 8, !tbaa !9
  %550 = add nsw i64 %548, %549
  %551 = getelementptr inbounds float, ptr %546, i64 %550
  %552 = load float, ptr %551, align 4, !tbaa !11
  %553 = load ptr, ptr %19, align 8, !tbaa !5
  %554 = load ptr, ptr %12, align 8, !tbaa !5
  %555 = load i64, ptr %554, align 8, !tbaa !9
  %556 = load i64, ptr %35, align 8, !tbaa !9
  %557 = add nsw i64 %555, %556
  %558 = sub nsw i64 %557, 1
  %559 = getelementptr inbounds float, ptr %553, i64 %558
  store float %552, ptr %559, align 4, !tbaa !11
  %560 = load float, ptr %37, align 4, !tbaa !11
  %561 = load ptr, ptr %19, align 8, !tbaa !5
  %562 = load ptr, ptr %12, align 8, !tbaa !5
  %563 = load i64, ptr %562, align 8, !tbaa !9
  %564 = load i64, ptr %36, align 8, !tbaa !9
  %565 = add nsw i64 %563, %564
  %566 = getelementptr inbounds float, ptr %561, i64 %565
  store float %560, ptr %566, align 4, !tbaa !11
  %567 = load i64, ptr %35, align 8, !tbaa !9
  %568 = sub nsw i64 %567, 1
  store i64 %568, ptr %25, align 8, !tbaa !9
  store i64 1, ptr %33, align 8, !tbaa !9
  br label %569

569:                                              ; preds = %696, %532
  %570 = load i64, ptr %33, align 8, !tbaa !9
  %571 = load i64, ptr %25, align 8, !tbaa !9
  %572 = icmp sle i64 %570, %571
  br i1 %572, label %573, label %699

573:                                              ; preds = %569
  %574 = load i64, ptr %33, align 8, !tbaa !9
  %575 = load i64, ptr %35, align 8, !tbaa !9
  %576 = load i64, ptr %23, align 8, !tbaa !9
  %577 = mul nsw i64 %575, %576
  %578 = add nsw i64 %574, %577
  store i64 %578, ptr %26, align 8, !tbaa !9
  %579 = load ptr, ptr %16, align 8, !tbaa !5
  %580 = load i64, ptr %26, align 8, !tbaa !9
  %581 = getelementptr inbounds %struct.complex, ptr %579, i64 %580
  %582 = getelementptr inbounds %struct.complex, ptr %581, i32 0, i32 0
  %583 = load float, ptr %582, align 4, !tbaa !15
  store float %583, ptr %29, align 4, !tbaa !11
  %584 = load float, ptr %29, align 4, !tbaa !11
  %585 = fcmp oge float %584, 0.000000e+00
  br i1 %585, label %586, label %588

586:                                              ; preds = %573
  %587 = load float, ptr %29, align 4, !tbaa !11
  br label %591

588:                                              ; preds = %573
  %589 = load float, ptr %29, align 4, !tbaa !11
  %590 = fneg float %589
  br label %591

591:                                              ; preds = %588, %586
  %592 = phi float [ %587, %586 ], [ %590, %588 ]
  %593 = fpext float %592 to double
  %594 = load ptr, ptr %16, align 8, !tbaa !5
  %595 = load i64, ptr %33, align 8, !tbaa !9
  %596 = load i64, ptr %35, align 8, !tbaa !9
  %597 = load i64, ptr %23, align 8, !tbaa !9
  %598 = mul nsw i64 %596, %597
  %599 = add nsw i64 %595, %598
  %600 = getelementptr inbounds %struct.complex, ptr %594, i64 %599
  %601 = call double @r_imag(ptr noundef %600)
  %602 = fptrunc double %601 to float
  store float %602, ptr %30, align 4, !tbaa !11
  %603 = load float, ptr %30, align 4, !tbaa !11
  %604 = fcmp oge float %603, 0.000000e+00
  br i1 %604, label %605, label %607

605:                                              ; preds = %591
  %606 = load float, ptr %30, align 4, !tbaa !11
  br label %610

607:                                              ; preds = %591
  %608 = load float, ptr %30, align 4, !tbaa !11
  %609 = fneg float %608
  br label %610

610:                                              ; preds = %607, %605
  %611 = phi float [ %606, %605 ], [ %609, %607 ]
  %612 = fpext float %611 to double
  %613 = fadd double %593, %612
  %614 = fptrunc double %613 to float
  store float %614, ptr %31, align 4, !tbaa !11
  %615 = load ptr, ptr %19, align 8, !tbaa !5
  %616 = load i64, ptr %35, align 8, !tbaa !9
  %617 = getelementptr inbounds float, ptr %615, i64 %616
  %618 = load float, ptr %617, align 4, !tbaa !11
  store float %618, ptr %32, align 4, !tbaa !11
  %619 = load float, ptr %31, align 4, !tbaa !11
  %620 = load float, ptr %32, align 4, !tbaa !11
  %621 = fcmp oge float %619, %620
  br i1 %621, label %622, label %624

622:                                              ; preds = %610
  %623 = load float, ptr %31, align 4, !tbaa !11
  br label %626

624:                                              ; preds = %610
  %625 = load float, ptr %32, align 4, !tbaa !11
  br label %626

626:                                              ; preds = %624, %622
  %627 = phi float [ %623, %622 ], [ %625, %624 ]
  %628 = fpext float %627 to double
  %629 = fptrunc double %628 to float
  %630 = load ptr, ptr %19, align 8, !tbaa !5
  %631 = load i64, ptr %35, align 8, !tbaa !9
  %632 = getelementptr inbounds float, ptr %630, i64 %631
  store float %629, ptr %632, align 4, !tbaa !11
  %633 = load i64, ptr %33, align 8, !tbaa !9
  %634 = load i64, ptr %35, align 8, !tbaa !9
  %635 = sub nsw i64 %634, 1
  %636 = load i64, ptr %23, align 8, !tbaa !9
  %637 = mul nsw i64 %635, %636
  %638 = add nsw i64 %633, %637
  store i64 %638, ptr %26, align 8, !tbaa !9
  %639 = load ptr, ptr %16, align 8, !tbaa !5
  %640 = load i64, ptr %26, align 8, !tbaa !9
  %641 = getelementptr inbounds %struct.complex, ptr %639, i64 %640
  %642 = getelementptr inbounds %struct.complex, ptr %641, i32 0, i32 0
  %643 = load float, ptr %642, align 4, !tbaa !15
  store float %643, ptr %29, align 4, !tbaa !11
  %644 = load float, ptr %29, align 4, !tbaa !11
  %645 = fcmp oge float %644, 0.000000e+00
  br i1 %645, label %646, label %648

646:                                              ; preds = %626
  %647 = load float, ptr %29, align 4, !tbaa !11
  br label %651

648:                                              ; preds = %626
  %649 = load float, ptr %29, align 4, !tbaa !11
  %650 = fneg float %649
  br label %651

651:                                              ; preds = %648, %646
  %652 = phi float [ %647, %646 ], [ %650, %648 ]
  %653 = fpext float %652 to double
  %654 = load ptr, ptr %16, align 8, !tbaa !5
  %655 = load i64, ptr %33, align 8, !tbaa !9
  %656 = load i64, ptr %35, align 8, !tbaa !9
  %657 = sub nsw i64 %656, 1
  %658 = load i64, ptr %23, align 8, !tbaa !9
  %659 = mul nsw i64 %657, %658
  %660 = add nsw i64 %655, %659
  %661 = getelementptr inbounds %struct.complex, ptr %654, i64 %660
  %662 = call double @r_imag(ptr noundef %661)
  %663 = fptrunc double %662 to float
  store float %663, ptr %30, align 4, !tbaa !11
  %664 = load float, ptr %30, align 4, !tbaa !11
  %665 = fcmp oge float %664, 0.000000e+00
  br i1 %665, label %666, label %668

666:                                              ; preds = %651
  %667 = load float, ptr %30, align 4, !tbaa !11
  br label %671

668:                                              ; preds = %651
  %669 = load float, ptr %30, align 4, !tbaa !11
  %670 = fneg float %669
  br label %671

671:                                              ; preds = %668, %666
  %672 = phi float [ %667, %666 ], [ %670, %668 ]
  %673 = fpext float %672 to double
  %674 = fadd double %653, %673
  %675 = fptrunc double %674 to float
  store float %675, ptr %31, align 4, !tbaa !11
  %676 = load ptr, ptr %19, align 8, !tbaa !5
  %677 = load i64, ptr %35, align 8, !tbaa !9
  %678 = sub nsw i64 %677, 1
  %679 = getelementptr inbounds float, ptr %676, i64 %678
  %680 = load float, ptr %679, align 4, !tbaa !11
  store float %680, ptr %32, align 4, !tbaa !11
  %681 = load float, ptr %31, align 4, !tbaa !11
  %682 = load float, ptr %32, align 4, !tbaa !11
  %683 = fcmp oge float %681, %682
  br i1 %683, label %684, label %686

684:                                              ; preds = %671
  %685 = load float, ptr %31, align 4, !tbaa !11
  br label %688

686:                                              ; preds = %671
  %687 = load float, ptr %32, align 4, !tbaa !11
  br label %688

688:                                              ; preds = %686, %684
  %689 = phi float [ %685, %684 ], [ %687, %686 ]
  %690 = fpext float %689 to double
  %691 = fptrunc double %690 to float
  %692 = load ptr, ptr %19, align 8, !tbaa !5
  %693 = load i64, ptr %35, align 8, !tbaa !9
  %694 = sub nsw i64 %693, 1
  %695 = getelementptr inbounds float, ptr %692, i64 %694
  store float %691, ptr %695, align 4, !tbaa !11
  br label %696

696:                                              ; preds = %688
  %697 = load i64, ptr %33, align 8, !tbaa !9
  %698 = add nsw i64 %697, 1
  store i64 %698, ptr %33, align 8, !tbaa !9
  br label %569, !llvm.loop !22

699:                                              ; preds = %569
  %700 = load i64, ptr %35, align 8, !tbaa !9
  %701 = load i64, ptr %35, align 8, !tbaa !9
  %702 = load i64, ptr %23, align 8, !tbaa !9
  %703 = mul nsw i64 %701, %702
  %704 = add nsw i64 %700, %703
  store i64 %704, ptr %25, align 8, !tbaa !9
  %705 = load ptr, ptr %16, align 8, !tbaa !5
  %706 = load i64, ptr %25, align 8, !tbaa !9
  %707 = getelementptr inbounds %struct.complex, ptr %705, i64 %706
  %708 = getelementptr inbounds %struct.complex, ptr %707, i32 0, i32 0
  %709 = load float, ptr %708, align 4, !tbaa !15
  store float %709, ptr %29, align 4, !tbaa !11
  %710 = load float, ptr %29, align 4, !tbaa !11
  %711 = fcmp oge float %710, 0.000000e+00
  br i1 %711, label %712, label %714

712:                                              ; preds = %699
  %713 = load float, ptr %29, align 4, !tbaa !11
  br label %717

714:                                              ; preds = %699
  %715 = load float, ptr %29, align 4, !tbaa !11
  %716 = fneg float %715
  br label %717

717:                                              ; preds = %714, %712
  %718 = phi float [ %713, %712 ], [ %716, %714 ]
  %719 = fpext float %718 to double
  %720 = load ptr, ptr %16, align 8, !tbaa !5
  %721 = load i64, ptr %35, align 8, !tbaa !9
  %722 = load i64, ptr %35, align 8, !tbaa !9
  %723 = load i64, ptr %23, align 8, !tbaa !9
  %724 = mul nsw i64 %722, %723
  %725 = add nsw i64 %721, %724
  %726 = getelementptr inbounds %struct.complex, ptr %720, i64 %725
  %727 = call double @r_imag(ptr noundef %726)
  %728 = fptrunc double %727 to float
  store float %728, ptr %30, align 4, !tbaa !11
  %729 = load float, ptr %30, align 4, !tbaa !11
  %730 = fcmp oge float %729, 0.000000e+00
  br i1 %730, label %731, label %733

731:                                              ; preds = %717
  %732 = load float, ptr %30, align 4, !tbaa !11
  br label %736

733:                                              ; preds = %717
  %734 = load float, ptr %30, align 4, !tbaa !11
  %735 = fneg float %734
  br label %736

736:                                              ; preds = %733, %731
  %737 = phi float [ %732, %731 ], [ %735, %733 ]
  %738 = fpext float %737 to double
  %739 = fadd double %719, %738
  %740 = fptrunc double %739 to float
  store float %740, ptr %31, align 4, !tbaa !11
  %741 = load ptr, ptr %19, align 8, !tbaa !5
  %742 = load i64, ptr %35, align 8, !tbaa !9
  %743 = getelementptr inbounds float, ptr %741, i64 %742
  %744 = load float, ptr %743, align 4, !tbaa !11
  store float %744, ptr %32, align 4, !tbaa !11
  %745 = load float, ptr %31, align 4, !tbaa !11
  %746 = load float, ptr %32, align 4, !tbaa !11
  %747 = fcmp oge float %745, %746
  br i1 %747, label %748, label %750

748:                                              ; preds = %736
  %749 = load float, ptr %31, align 4, !tbaa !11
  br label %752

750:                                              ; preds = %736
  %751 = load float, ptr %32, align 4, !tbaa !11
  br label %752

752:                                              ; preds = %750, %748
  %753 = phi float [ %749, %748 ], [ %751, %750 ]
  %754 = fpext float %753 to double
  %755 = fptrunc double %754 to float
  %756 = load ptr, ptr %19, align 8, !tbaa !5
  %757 = load i64, ptr %35, align 8, !tbaa !9
  %758 = getelementptr inbounds float, ptr %756, i64 %757
  store float %755, ptr %758, align 4, !tbaa !11
  %759 = load i64, ptr %35, align 8, !tbaa !9
  %760 = add nsw i64 %759, -2
  store i64 %760, ptr %35, align 8, !tbaa !9
  br label %761

761:                                              ; preds = %752, %529
  br label %409, !llvm.loop !23

762:                                              ; preds = %416
  %763 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %763, ptr %35, align 8, !tbaa !9
  br label %764

764:                                              ; preds = %849, %762
  %765 = load i64, ptr %35, align 8, !tbaa !9
  %766 = load ptr, ptr %12, align 8, !tbaa !5
  %767 = load i64, ptr %766, align 8, !tbaa !9
  %768 = icmp sle i64 %765, %767
  br i1 %768, label %769, label %850

769:                                              ; preds = %764
  %770 = load ptr, ptr %18, align 8, !tbaa !5
  %771 = load i64, ptr %35, align 8, !tbaa !9
  %772 = getelementptr inbounds i64, ptr %770, i64 %771
  %773 = load i64, ptr %772, align 8, !tbaa !9
  %774 = icmp sgt i64 %773, 0
  br i1 %774, label %775, label %814

775:                                              ; preds = %769
  %776 = load ptr, ptr %18, align 8, !tbaa !5
  %777 = load i64, ptr %35, align 8, !tbaa !9
  %778 = getelementptr inbounds i64, ptr %776, i64 %777
  %779 = load i64, ptr %778, align 8, !tbaa !9
  store i64 %779, ptr %36, align 8, !tbaa !9
  %780 = load i64, ptr %36, align 8, !tbaa !9
  %781 = load i64, ptr %35, align 8, !tbaa !9
  %782 = icmp ne i64 %780, %781
  br i1 %782, label %783, label %811

783:                                              ; preds = %775
  %784 = load ptr, ptr %19, align 8, !tbaa !5
  %785 = load ptr, ptr %12, align 8, !tbaa !5
  %786 = load i64, ptr %785, align 8, !tbaa !9
  %787 = load i64, ptr %35, align 8, !tbaa !9
  %788 = add nsw i64 %786, %787
  %789 = getelementptr inbounds float, ptr %784, i64 %788
  %790 = load float, ptr %789, align 4, !tbaa !11
  store float %790, ptr %37, align 4, !tbaa !11
  %791 = load ptr, ptr %19, align 8, !tbaa !5
  %792 = load ptr, ptr %12, align 8, !tbaa !5
  %793 = load i64, ptr %792, align 8, !tbaa !9
  %794 = load i64, ptr %36, align 8, !tbaa !9
  %795 = add nsw i64 %793, %794
  %796 = getelementptr inbounds float, ptr %791, i64 %795
  %797 = load float, ptr %796, align 4, !tbaa !11
  %798 = load ptr, ptr %19, align 8, !tbaa !5
  %799 = load ptr, ptr %12, align 8, !tbaa !5
  %800 = load i64, ptr %799, align 8, !tbaa !9
  %801 = load i64, ptr %35, align 8, !tbaa !9
  %802 = add nsw i64 %800, %801
  %803 = getelementptr inbounds float, ptr %798, i64 %802
  store float %797, ptr %803, align 4, !tbaa !11
  %804 = load float, ptr %37, align 4, !tbaa !11
  %805 = load ptr, ptr %19, align 8, !tbaa !5
  %806 = load ptr, ptr %12, align 8, !tbaa !5
  %807 = load i64, ptr %806, align 8, !tbaa !9
  %808 = load i64, ptr %36, align 8, !tbaa !9
  %809 = add nsw i64 %807, %808
  %810 = getelementptr inbounds float, ptr %805, i64 %809
  store float %804, ptr %810, align 4, !tbaa !11
  br label %811

811:                                              ; preds = %783, %775
  %812 = load i64, ptr %35, align 8, !tbaa !9
  %813 = add nsw i64 %812, 1
  store i64 %813, ptr %35, align 8, !tbaa !9
  br label %849

814:                                              ; preds = %769
  %815 = load ptr, ptr %18, align 8, !tbaa !5
  %816 = load i64, ptr %35, align 8, !tbaa !9
  %817 = getelementptr inbounds i64, ptr %815, i64 %816
  %818 = load i64, ptr %817, align 8, !tbaa !9
  %819 = sub nsw i64 0, %818
  store i64 %819, ptr %36, align 8, !tbaa !9
  %820 = load ptr, ptr %19, align 8, !tbaa !5
  %821 = load ptr, ptr %12, align 8, !tbaa !5
  %822 = load i64, ptr %821, align 8, !tbaa !9
  %823 = load i64, ptr %35, align 8, !tbaa !9
  %824 = add nsw i64 %822, %823
  %825 = getelementptr inbounds float, ptr %820, i64 %824
  %826 = load float, ptr %825, align 4, !tbaa !11
  store float %826, ptr %37, align 4, !tbaa !11
  %827 = load ptr, ptr %19, align 8, !tbaa !5
  %828 = load ptr, ptr %12, align 8, !tbaa !5
  %829 = load i64, ptr %828, align 8, !tbaa !9
  %830 = load i64, ptr %36, align 8, !tbaa !9
  %831 = add nsw i64 %829, %830
  %832 = getelementptr inbounds float, ptr %827, i64 %831
  %833 = load float, ptr %832, align 4, !tbaa !11
  %834 = load ptr, ptr %19, align 8, !tbaa !5
  %835 = load ptr, ptr %12, align 8, !tbaa !5
  %836 = load i64, ptr %835, align 8, !tbaa !9
  %837 = load i64, ptr %35, align 8, !tbaa !9
  %838 = add nsw i64 %836, %837
  %839 = getelementptr inbounds float, ptr %834, i64 %838
  store float %833, ptr %839, align 4, !tbaa !11
  %840 = load float, ptr %37, align 4, !tbaa !11
  %841 = load ptr, ptr %19, align 8, !tbaa !5
  %842 = load ptr, ptr %12, align 8, !tbaa !5
  %843 = load i64, ptr %842, align 8, !tbaa !9
  %844 = load i64, ptr %36, align 8, !tbaa !9
  %845 = add nsw i64 %843, %844
  %846 = getelementptr inbounds float, ptr %841, i64 %845
  store float %840, ptr %846, align 4, !tbaa !11
  %847 = load i64, ptr %35, align 8, !tbaa !9
  %848 = add nsw i64 %847, 2
  store i64 %848, ptr %35, align 8, !tbaa !9
  br label %849

849:                                              ; preds = %814, %811
  br label %764, !llvm.loop !24

850:                                              ; preds = %764
  br label %1291

851:                                              ; preds = %403
  store i64 1, ptr %35, align 8, !tbaa !9
  br label %852

852:                                              ; preds = %1203, %851
  %853 = load i64, ptr %35, align 8, !tbaa !9
  %854 = load i64, ptr %40, align 8, !tbaa !9
  %855 = icmp sle i64 %853, %854
  br i1 %855, label %856, label %1204

856:                                              ; preds = %852
  %857 = load ptr, ptr %18, align 8, !tbaa !5
  %858 = load i64, ptr %35, align 8, !tbaa !9
  %859 = getelementptr inbounds i64, ptr %857, i64 %858
  %860 = load i64, ptr %859, align 8, !tbaa !9
  %861 = icmp sgt i64 %860, 0
  br i1 %861, label %862, label %972

862:                                              ; preds = %856
  %863 = load ptr, ptr %18, align 8, !tbaa !5
  %864 = load i64, ptr %35, align 8, !tbaa !9
  %865 = getelementptr inbounds i64, ptr %863, i64 %864
  %866 = load i64, ptr %865, align 8, !tbaa !9
  store i64 %866, ptr %36, align 8, !tbaa !9
  %867 = load i64, ptr %36, align 8, !tbaa !9
  %868 = load i64, ptr %35, align 8, !tbaa !9
  %869 = icmp ne i64 %867, %868
  br i1 %869, label %870, label %898

870:                                              ; preds = %862
  %871 = load ptr, ptr %19, align 8, !tbaa !5
  %872 = load ptr, ptr %12, align 8, !tbaa !5
  %873 = load i64, ptr %872, align 8, !tbaa !9
  %874 = load i64, ptr %35, align 8, !tbaa !9
  %875 = add nsw i64 %873, %874
  %876 = getelementptr inbounds float, ptr %871, i64 %875
  %877 = load float, ptr %876, align 4, !tbaa !11
  store float %877, ptr %37, align 4, !tbaa !11
  %878 = load ptr, ptr %19, align 8, !tbaa !5
  %879 = load ptr, ptr %12, align 8, !tbaa !5
  %880 = load i64, ptr %879, align 8, !tbaa !9
  %881 = load i64, ptr %36, align 8, !tbaa !9
  %882 = add nsw i64 %880, %881
  %883 = getelementptr inbounds float, ptr %878, i64 %882
  %884 = load float, ptr %883, align 4, !tbaa !11
  %885 = load ptr, ptr %19, align 8, !tbaa !5
  %886 = load ptr, ptr %12, align 8, !tbaa !5
  %887 = load i64, ptr %886, align 8, !tbaa !9
  %888 = load i64, ptr %35, align 8, !tbaa !9
  %889 = add nsw i64 %887, %888
  %890 = getelementptr inbounds float, ptr %885, i64 %889
  store float %884, ptr %890, align 4, !tbaa !11
  %891 = load float, ptr %37, align 4, !tbaa !11
  %892 = load ptr, ptr %19, align 8, !tbaa !5
  %893 = load ptr, ptr %12, align 8, !tbaa !5
  %894 = load i64, ptr %893, align 8, !tbaa !9
  %895 = load i64, ptr %36, align 8, !tbaa !9
  %896 = add nsw i64 %894, %895
  %897 = getelementptr inbounds float, ptr %892, i64 %896
  store float %891, ptr %897, align 4, !tbaa !11
  br label %898

898:                                              ; preds = %870, %862
  %899 = load ptr, ptr %12, align 8, !tbaa !5
  %900 = load i64, ptr %899, align 8, !tbaa !9
  store i64 %900, ptr %25, align 8, !tbaa !9
  %901 = load i64, ptr %35, align 8, !tbaa !9
  store i64 %901, ptr %33, align 8, !tbaa !9
  br label %902

902:                                              ; preds = %966, %898
  %903 = load i64, ptr %33, align 8, !tbaa !9
  %904 = load i64, ptr %25, align 8, !tbaa !9
  %905 = icmp sle i64 %903, %904
  br i1 %905, label %906, label %969

906:                                              ; preds = %902
  %907 = load i64, ptr %33, align 8, !tbaa !9
  %908 = load i64, ptr %35, align 8, !tbaa !9
  %909 = load i64, ptr %23, align 8, !tbaa !9
  %910 = mul nsw i64 %908, %909
  %911 = add nsw i64 %907, %910
  store i64 %911, ptr %26, align 8, !tbaa !9
  %912 = load ptr, ptr %16, align 8, !tbaa !5
  %913 = load i64, ptr %26, align 8, !tbaa !9
  %914 = getelementptr inbounds %struct.complex, ptr %912, i64 %913
  %915 = getelementptr inbounds %struct.complex, ptr %914, i32 0, i32 0
  %916 = load float, ptr %915, align 4, !tbaa !15
  store float %916, ptr %29, align 4, !tbaa !11
  %917 = load float, ptr %29, align 4, !tbaa !11
  %918 = fcmp oge float %917, 0.000000e+00
  br i1 %918, label %919, label %921

919:                                              ; preds = %906
  %920 = load float, ptr %29, align 4, !tbaa !11
  br label %924

921:                                              ; preds = %906
  %922 = load float, ptr %29, align 4, !tbaa !11
  %923 = fneg float %922
  br label %924

924:                                              ; preds = %921, %919
  %925 = phi float [ %920, %919 ], [ %923, %921 ]
  %926 = fpext float %925 to double
  %927 = load ptr, ptr %16, align 8, !tbaa !5
  %928 = load i64, ptr %33, align 8, !tbaa !9
  %929 = load i64, ptr %35, align 8, !tbaa !9
  %930 = load i64, ptr %23, align 8, !tbaa !9
  %931 = mul nsw i64 %929, %930
  %932 = add nsw i64 %928, %931
  %933 = getelementptr inbounds %struct.complex, ptr %927, i64 %932
  %934 = call double @r_imag(ptr noundef %933)
  %935 = fptrunc double %934 to float
  store float %935, ptr %30, align 4, !tbaa !11
  %936 = load float, ptr %30, align 4, !tbaa !11
  %937 = fcmp oge float %936, 0.000000e+00
  br i1 %937, label %938, label %940

938:                                              ; preds = %924
  %939 = load float, ptr %30, align 4, !tbaa !11
  br label %943

940:                                              ; preds = %924
  %941 = load float, ptr %30, align 4, !tbaa !11
  %942 = fneg float %941
  br label %943

943:                                              ; preds = %940, %938
  %944 = phi float [ %939, %938 ], [ %942, %940 ]
  %945 = fpext float %944 to double
  %946 = fadd double %926, %945
  %947 = fptrunc double %946 to float
  store float %947, ptr %31, align 4, !tbaa !11
  %948 = load ptr, ptr %19, align 8, !tbaa !5
  %949 = load i64, ptr %35, align 8, !tbaa !9
  %950 = getelementptr inbounds float, ptr %948, i64 %949
  %951 = load float, ptr %950, align 4, !tbaa !11
  store float %951, ptr %32, align 4, !tbaa !11
  %952 = load float, ptr %31, align 4, !tbaa !11
  %953 = load float, ptr %32, align 4, !tbaa !11
  %954 = fcmp oge float %952, %953
  br i1 %954, label %955, label %957

955:                                              ; preds = %943
  %956 = load float, ptr %31, align 4, !tbaa !11
  br label %959

957:                                              ; preds = %943
  %958 = load float, ptr %32, align 4, !tbaa !11
  br label %959

959:                                              ; preds = %957, %955
  %960 = phi float [ %956, %955 ], [ %958, %957 ]
  %961 = fpext float %960 to double
  %962 = fptrunc double %961 to float
  %963 = load ptr, ptr %19, align 8, !tbaa !5
  %964 = load i64, ptr %35, align 8, !tbaa !9
  %965 = getelementptr inbounds float, ptr %963, i64 %964
  store float %962, ptr %965, align 4, !tbaa !11
  br label %966

966:                                              ; preds = %959
  %967 = load i64, ptr %33, align 8, !tbaa !9
  %968 = add nsw i64 %967, 1
  store i64 %968, ptr %33, align 8, !tbaa !9
  br label %902, !llvm.loop !25

969:                                              ; preds = %902
  %970 = load i64, ptr %35, align 8, !tbaa !9
  %971 = add nsw i64 %970, 1
  store i64 %971, ptr %35, align 8, !tbaa !9
  br label %1203

972:                                              ; preds = %856
  %973 = load ptr, ptr %18, align 8, !tbaa !5
  %974 = load i64, ptr %35, align 8, !tbaa !9
  %975 = getelementptr inbounds i64, ptr %973, i64 %974
  %976 = load i64, ptr %975, align 8, !tbaa !9
  %977 = sub nsw i64 0, %976
  store i64 %977, ptr %36, align 8, !tbaa !9
  %978 = load ptr, ptr %19, align 8, !tbaa !5
  %979 = load ptr, ptr %12, align 8, !tbaa !5
  %980 = load i64, ptr %979, align 8, !tbaa !9
  %981 = load i64, ptr %35, align 8, !tbaa !9
  %982 = add nsw i64 %980, %981
  %983 = add nsw i64 %982, 1
  %984 = getelementptr inbounds float, ptr %978, i64 %983
  %985 = load float, ptr %984, align 4, !tbaa !11
  store float %985, ptr %37, align 4, !tbaa !11
  %986 = load ptr, ptr %19, align 8, !tbaa !5
  %987 = load ptr, ptr %12, align 8, !tbaa !5
  %988 = load i64, ptr %987, align 8, !tbaa !9
  %989 = load i64, ptr %36, align 8, !tbaa !9
  %990 = add nsw i64 %988, %989
  %991 = getelementptr inbounds float, ptr %986, i64 %990
  %992 = load float, ptr %991, align 4, !tbaa !11
  %993 = load ptr, ptr %19, align 8, !tbaa !5
  %994 = load ptr, ptr %12, align 8, !tbaa !5
  %995 = load i64, ptr %994, align 8, !tbaa !9
  %996 = load i64, ptr %35, align 8, !tbaa !9
  %997 = add nsw i64 %995, %996
  %998 = add nsw i64 %997, 1
  %999 = getelementptr inbounds float, ptr %993, i64 %998
  store float %992, ptr %999, align 4, !tbaa !11
  %1000 = load float, ptr %37, align 4, !tbaa !11
  %1001 = load ptr, ptr %19, align 8, !tbaa !5
  %1002 = load ptr, ptr %12, align 8, !tbaa !5
  %1003 = load i64, ptr %1002, align 8, !tbaa !9
  %1004 = load i64, ptr %36, align 8, !tbaa !9
  %1005 = add nsw i64 %1003, %1004
  %1006 = getelementptr inbounds float, ptr %1001, i64 %1005
  store float %1000, ptr %1006, align 4, !tbaa !11
  %1007 = load ptr, ptr %12, align 8, !tbaa !5
  %1008 = load i64, ptr %1007, align 8, !tbaa !9
  store i64 %1008, ptr %25, align 8, !tbaa !9
  %1009 = load i64, ptr %35, align 8, !tbaa !9
  %1010 = add nsw i64 %1009, 1
  store i64 %1010, ptr %33, align 8, !tbaa !9
  br label %1011

1011:                                             ; preds = %1138, %972
  %1012 = load i64, ptr %33, align 8, !tbaa !9
  %1013 = load i64, ptr %25, align 8, !tbaa !9
  %1014 = icmp sle i64 %1012, %1013
  br i1 %1014, label %1015, label %1141

1015:                                             ; preds = %1011
  %1016 = load i64, ptr %33, align 8, !tbaa !9
  %1017 = load i64, ptr %35, align 8, !tbaa !9
  %1018 = load i64, ptr %23, align 8, !tbaa !9
  %1019 = mul nsw i64 %1017, %1018
  %1020 = add nsw i64 %1016, %1019
  store i64 %1020, ptr %26, align 8, !tbaa !9
  %1021 = load ptr, ptr %16, align 8, !tbaa !5
  %1022 = load i64, ptr %26, align 8, !tbaa !9
  %1023 = getelementptr inbounds %struct.complex, ptr %1021, i64 %1022
  %1024 = getelementptr inbounds %struct.complex, ptr %1023, i32 0, i32 0
  %1025 = load float, ptr %1024, align 4, !tbaa !15
  store float %1025, ptr %29, align 4, !tbaa !11
  %1026 = load float, ptr %29, align 4, !tbaa !11
  %1027 = fcmp oge float %1026, 0.000000e+00
  br i1 %1027, label %1028, label %1030

1028:                                             ; preds = %1015
  %1029 = load float, ptr %29, align 4, !tbaa !11
  br label %1033

1030:                                             ; preds = %1015
  %1031 = load float, ptr %29, align 4, !tbaa !11
  %1032 = fneg float %1031
  br label %1033

1033:                                             ; preds = %1030, %1028
  %1034 = phi float [ %1029, %1028 ], [ %1032, %1030 ]
  %1035 = fpext float %1034 to double
  %1036 = load ptr, ptr %16, align 8, !tbaa !5
  %1037 = load i64, ptr %33, align 8, !tbaa !9
  %1038 = load i64, ptr %35, align 8, !tbaa !9
  %1039 = load i64, ptr %23, align 8, !tbaa !9
  %1040 = mul nsw i64 %1038, %1039
  %1041 = add nsw i64 %1037, %1040
  %1042 = getelementptr inbounds %struct.complex, ptr %1036, i64 %1041
  %1043 = call double @r_imag(ptr noundef %1042)
  %1044 = fptrunc double %1043 to float
  store float %1044, ptr %30, align 4, !tbaa !11
  %1045 = load float, ptr %30, align 4, !tbaa !11
  %1046 = fcmp oge float %1045, 0.000000e+00
  br i1 %1046, label %1047, label %1049

1047:                                             ; preds = %1033
  %1048 = load float, ptr %30, align 4, !tbaa !11
  br label %1052

1049:                                             ; preds = %1033
  %1050 = load float, ptr %30, align 4, !tbaa !11
  %1051 = fneg float %1050
  br label %1052

1052:                                             ; preds = %1049, %1047
  %1053 = phi float [ %1048, %1047 ], [ %1051, %1049 ]
  %1054 = fpext float %1053 to double
  %1055 = fadd double %1035, %1054
  %1056 = fptrunc double %1055 to float
  store float %1056, ptr %31, align 4, !tbaa !11
  %1057 = load ptr, ptr %19, align 8, !tbaa !5
  %1058 = load i64, ptr %35, align 8, !tbaa !9
  %1059 = getelementptr inbounds float, ptr %1057, i64 %1058
  %1060 = load float, ptr %1059, align 4, !tbaa !11
  store float %1060, ptr %32, align 4, !tbaa !11
  %1061 = load float, ptr %31, align 4, !tbaa !11
  %1062 = load float, ptr %32, align 4, !tbaa !11
  %1063 = fcmp oge float %1061, %1062
  br i1 %1063, label %1064, label %1066

1064:                                             ; preds = %1052
  %1065 = load float, ptr %31, align 4, !tbaa !11
  br label %1068

1066:                                             ; preds = %1052
  %1067 = load float, ptr %32, align 4, !tbaa !11
  br label %1068

1068:                                             ; preds = %1066, %1064
  %1069 = phi float [ %1065, %1064 ], [ %1067, %1066 ]
  %1070 = fpext float %1069 to double
  %1071 = fptrunc double %1070 to float
  %1072 = load ptr, ptr %19, align 8, !tbaa !5
  %1073 = load i64, ptr %35, align 8, !tbaa !9
  %1074 = getelementptr inbounds float, ptr %1072, i64 %1073
  store float %1071, ptr %1074, align 4, !tbaa !11
  %1075 = load i64, ptr %33, align 8, !tbaa !9
  %1076 = load i64, ptr %35, align 8, !tbaa !9
  %1077 = add nsw i64 %1076, 1
  %1078 = load i64, ptr %23, align 8, !tbaa !9
  %1079 = mul nsw i64 %1077, %1078
  %1080 = add nsw i64 %1075, %1079
  store i64 %1080, ptr %26, align 8, !tbaa !9
  %1081 = load ptr, ptr %16, align 8, !tbaa !5
  %1082 = load i64, ptr %26, align 8, !tbaa !9
  %1083 = getelementptr inbounds %struct.complex, ptr %1081, i64 %1082
  %1084 = getelementptr inbounds %struct.complex, ptr %1083, i32 0, i32 0
  %1085 = load float, ptr %1084, align 4, !tbaa !15
  store float %1085, ptr %29, align 4, !tbaa !11
  %1086 = load float, ptr %29, align 4, !tbaa !11
  %1087 = fcmp oge float %1086, 0.000000e+00
  br i1 %1087, label %1088, label %1090

1088:                                             ; preds = %1068
  %1089 = load float, ptr %29, align 4, !tbaa !11
  br label %1093

1090:                                             ; preds = %1068
  %1091 = load float, ptr %29, align 4, !tbaa !11
  %1092 = fneg float %1091
  br label %1093

1093:                                             ; preds = %1090, %1088
  %1094 = phi float [ %1089, %1088 ], [ %1092, %1090 ]
  %1095 = fpext float %1094 to double
  %1096 = load ptr, ptr %16, align 8, !tbaa !5
  %1097 = load i64, ptr %33, align 8, !tbaa !9
  %1098 = load i64, ptr %35, align 8, !tbaa !9
  %1099 = add nsw i64 %1098, 1
  %1100 = load i64, ptr %23, align 8, !tbaa !9
  %1101 = mul nsw i64 %1099, %1100
  %1102 = add nsw i64 %1097, %1101
  %1103 = getelementptr inbounds %struct.complex, ptr %1096, i64 %1102
  %1104 = call double @r_imag(ptr noundef %1103)
  %1105 = fptrunc double %1104 to float
  store float %1105, ptr %30, align 4, !tbaa !11
  %1106 = load float, ptr %30, align 4, !tbaa !11
  %1107 = fcmp oge float %1106, 0.000000e+00
  br i1 %1107, label %1108, label %1110

1108:                                             ; preds = %1093
  %1109 = load float, ptr %30, align 4, !tbaa !11
  br label %1113

1110:                                             ; preds = %1093
  %1111 = load float, ptr %30, align 4, !tbaa !11
  %1112 = fneg float %1111
  br label %1113

1113:                                             ; preds = %1110, %1108
  %1114 = phi float [ %1109, %1108 ], [ %1112, %1110 ]
  %1115 = fpext float %1114 to double
  %1116 = fadd double %1095, %1115
  %1117 = fptrunc double %1116 to float
  store float %1117, ptr %31, align 4, !tbaa !11
  %1118 = load ptr, ptr %19, align 8, !tbaa !5
  %1119 = load i64, ptr %35, align 8, !tbaa !9
  %1120 = add nsw i64 %1119, 1
  %1121 = getelementptr inbounds float, ptr %1118, i64 %1120
  %1122 = load float, ptr %1121, align 4, !tbaa !11
  store float %1122, ptr %32, align 4, !tbaa !11
  %1123 = load float, ptr %31, align 4, !tbaa !11
  %1124 = load float, ptr %32, align 4, !tbaa !11
  %1125 = fcmp oge float %1123, %1124
  br i1 %1125, label %1126, label %1128

1126:                                             ; preds = %1113
  %1127 = load float, ptr %31, align 4, !tbaa !11
  br label %1130

1128:                                             ; preds = %1113
  %1129 = load float, ptr %32, align 4, !tbaa !11
  br label %1130

1130:                                             ; preds = %1128, %1126
  %1131 = phi float [ %1127, %1126 ], [ %1129, %1128 ]
  %1132 = fpext float %1131 to double
  %1133 = fptrunc double %1132 to float
  %1134 = load ptr, ptr %19, align 8, !tbaa !5
  %1135 = load i64, ptr %35, align 8, !tbaa !9
  %1136 = add nsw i64 %1135, 1
  %1137 = getelementptr inbounds float, ptr %1134, i64 %1136
  store float %1133, ptr %1137, align 4, !tbaa !11
  br label %1138

1138:                                             ; preds = %1130
  %1139 = load i64, ptr %33, align 8, !tbaa !9
  %1140 = add nsw i64 %1139, 1
  store i64 %1140, ptr %33, align 8, !tbaa !9
  br label %1011, !llvm.loop !26

1141:                                             ; preds = %1011
  %1142 = load i64, ptr %35, align 8, !tbaa !9
  %1143 = load i64, ptr %35, align 8, !tbaa !9
  %1144 = load i64, ptr %23, align 8, !tbaa !9
  %1145 = mul nsw i64 %1143, %1144
  %1146 = add nsw i64 %1142, %1145
  store i64 %1146, ptr %25, align 8, !tbaa !9
  %1147 = load ptr, ptr %16, align 8, !tbaa !5
  %1148 = load i64, ptr %25, align 8, !tbaa !9
  %1149 = getelementptr inbounds %struct.complex, ptr %1147, i64 %1148
  %1150 = getelementptr inbounds %struct.complex, ptr %1149, i32 0, i32 0
  %1151 = load float, ptr %1150, align 4, !tbaa !15
  store float %1151, ptr %29, align 4, !tbaa !11
  %1152 = load float, ptr %29, align 4, !tbaa !11
  %1153 = fcmp oge float %1152, 0.000000e+00
  br i1 %1153, label %1154, label %1156

1154:                                             ; preds = %1141
  %1155 = load float, ptr %29, align 4, !tbaa !11
  br label %1159

1156:                                             ; preds = %1141
  %1157 = load float, ptr %29, align 4, !tbaa !11
  %1158 = fneg float %1157
  br label %1159

1159:                                             ; preds = %1156, %1154
  %1160 = phi float [ %1155, %1154 ], [ %1158, %1156 ]
  %1161 = fpext float %1160 to double
  %1162 = load ptr, ptr %16, align 8, !tbaa !5
  %1163 = load i64, ptr %35, align 8, !tbaa !9
  %1164 = load i64, ptr %35, align 8, !tbaa !9
  %1165 = load i64, ptr %23, align 8, !tbaa !9
  %1166 = mul nsw i64 %1164, %1165
  %1167 = add nsw i64 %1163, %1166
  %1168 = getelementptr inbounds %struct.complex, ptr %1162, i64 %1167
  %1169 = call double @r_imag(ptr noundef %1168)
  %1170 = fptrunc double %1169 to float
  store float %1170, ptr %30, align 4, !tbaa !11
  %1171 = load float, ptr %30, align 4, !tbaa !11
  %1172 = fcmp oge float %1171, 0.000000e+00
  br i1 %1172, label %1173, label %1175

1173:                                             ; preds = %1159
  %1174 = load float, ptr %30, align 4, !tbaa !11
  br label %1178

1175:                                             ; preds = %1159
  %1176 = load float, ptr %30, align 4, !tbaa !11
  %1177 = fneg float %1176
  br label %1178

1178:                                             ; preds = %1175, %1173
  %1179 = phi float [ %1174, %1173 ], [ %1177, %1175 ]
  %1180 = fpext float %1179 to double
  %1181 = fadd double %1161, %1180
  %1182 = fptrunc double %1181 to float
  store float %1182, ptr %31, align 4, !tbaa !11
  %1183 = load ptr, ptr %19, align 8, !tbaa !5
  %1184 = load i64, ptr %35, align 8, !tbaa !9
  %1185 = getelementptr inbounds float, ptr %1183, i64 %1184
  %1186 = load float, ptr %1185, align 4, !tbaa !11
  store float %1186, ptr %32, align 4, !tbaa !11
  %1187 = load float, ptr %31, align 4, !tbaa !11
  %1188 = load float, ptr %32, align 4, !tbaa !11
  %1189 = fcmp oge float %1187, %1188
  br i1 %1189, label %1190, label %1192

1190:                                             ; preds = %1178
  %1191 = load float, ptr %31, align 4, !tbaa !11
  br label %1194

1192:                                             ; preds = %1178
  %1193 = load float, ptr %32, align 4, !tbaa !11
  br label %1194

1194:                                             ; preds = %1192, %1190
  %1195 = phi float [ %1191, %1190 ], [ %1193, %1192 ]
  %1196 = fpext float %1195 to double
  %1197 = fptrunc double %1196 to float
  %1198 = load ptr, ptr %19, align 8, !tbaa !5
  %1199 = load i64, ptr %35, align 8, !tbaa !9
  %1200 = getelementptr inbounds float, ptr %1198, i64 %1199
  store float %1197, ptr %1200, align 4, !tbaa !11
  %1201 = load i64, ptr %35, align 8, !tbaa !9
  %1202 = add nsw i64 %1201, 2
  store i64 %1202, ptr %35, align 8, !tbaa !9
  br label %1203

1203:                                             ; preds = %1194, %969
  br label %852, !llvm.loop !27

1204:                                             ; preds = %852
  %1205 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %1205, ptr %35, align 8, !tbaa !9
  br label %1206

1206:                                             ; preds = %1289, %1204
  %1207 = load i64, ptr %35, align 8, !tbaa !9
  %1208 = icmp sge i64 %1207, 1
  br i1 %1208, label %1209, label %1290

1209:                                             ; preds = %1206
  %1210 = load ptr, ptr %18, align 8, !tbaa !5
  %1211 = load i64, ptr %35, align 8, !tbaa !9
  %1212 = getelementptr inbounds i64, ptr %1210, i64 %1211
  %1213 = load i64, ptr %1212, align 8, !tbaa !9
  %1214 = icmp sgt i64 %1213, 0
  br i1 %1214, label %1215, label %1254

1215:                                             ; preds = %1209
  %1216 = load ptr, ptr %18, align 8, !tbaa !5
  %1217 = load i64, ptr %35, align 8, !tbaa !9
  %1218 = getelementptr inbounds i64, ptr %1216, i64 %1217
  %1219 = load i64, ptr %1218, align 8, !tbaa !9
  store i64 %1219, ptr %36, align 8, !tbaa !9
  %1220 = load i64, ptr %36, align 8, !tbaa !9
  %1221 = load i64, ptr %35, align 8, !tbaa !9
  %1222 = icmp ne i64 %1220, %1221
  br i1 %1222, label %1223, label %1251

1223:                                             ; preds = %1215
  %1224 = load ptr, ptr %19, align 8, !tbaa !5
  %1225 = load ptr, ptr %12, align 8, !tbaa !5
  %1226 = load i64, ptr %1225, align 8, !tbaa !9
  %1227 = load i64, ptr %35, align 8, !tbaa !9
  %1228 = add nsw i64 %1226, %1227
  %1229 = getelementptr inbounds float, ptr %1224, i64 %1228
  %1230 = load float, ptr %1229, align 4, !tbaa !11
  store float %1230, ptr %37, align 4, !tbaa !11
  %1231 = load ptr, ptr %19, align 8, !tbaa !5
  %1232 = load ptr, ptr %12, align 8, !tbaa !5
  %1233 = load i64, ptr %1232, align 8, !tbaa !9
  %1234 = load i64, ptr %36, align 8, !tbaa !9
  %1235 = add nsw i64 %1233, %1234
  %1236 = getelementptr inbounds float, ptr %1231, i64 %1235
  %1237 = load float, ptr %1236, align 4, !tbaa !11
  %1238 = load ptr, ptr %19, align 8, !tbaa !5
  %1239 = load ptr, ptr %12, align 8, !tbaa !5
  %1240 = load i64, ptr %1239, align 8, !tbaa !9
  %1241 = load i64, ptr %35, align 8, !tbaa !9
  %1242 = add nsw i64 %1240, %1241
  %1243 = getelementptr inbounds float, ptr %1238, i64 %1242
  store float %1237, ptr %1243, align 4, !tbaa !11
  %1244 = load float, ptr %37, align 4, !tbaa !11
  %1245 = load ptr, ptr %19, align 8, !tbaa !5
  %1246 = load ptr, ptr %12, align 8, !tbaa !5
  %1247 = load i64, ptr %1246, align 8, !tbaa !9
  %1248 = load i64, ptr %36, align 8, !tbaa !9
  %1249 = add nsw i64 %1247, %1248
  %1250 = getelementptr inbounds float, ptr %1245, i64 %1249
  store float %1244, ptr %1250, align 4, !tbaa !11
  br label %1251

1251:                                             ; preds = %1223, %1215
  %1252 = load i64, ptr %35, align 8, !tbaa !9
  %1253 = add nsw i64 %1252, -1
  store i64 %1253, ptr %35, align 8, !tbaa !9
  br label %1289

1254:                                             ; preds = %1209
  %1255 = load ptr, ptr %18, align 8, !tbaa !5
  %1256 = load i64, ptr %35, align 8, !tbaa !9
  %1257 = getelementptr inbounds i64, ptr %1255, i64 %1256
  %1258 = load i64, ptr %1257, align 8, !tbaa !9
  %1259 = sub nsw i64 0, %1258
  store i64 %1259, ptr %36, align 8, !tbaa !9
  %1260 = load ptr, ptr %19, align 8, !tbaa !5
  %1261 = load ptr, ptr %12, align 8, !tbaa !5
  %1262 = load i64, ptr %1261, align 8, !tbaa !9
  %1263 = load i64, ptr %35, align 8, !tbaa !9
  %1264 = add nsw i64 %1262, %1263
  %1265 = getelementptr inbounds float, ptr %1260, i64 %1264
  %1266 = load float, ptr %1265, align 4, !tbaa !11
  store float %1266, ptr %37, align 4, !tbaa !11
  %1267 = load ptr, ptr %19, align 8, !tbaa !5
  %1268 = load ptr, ptr %12, align 8, !tbaa !5
  %1269 = load i64, ptr %1268, align 8, !tbaa !9
  %1270 = load i64, ptr %36, align 8, !tbaa !9
  %1271 = add nsw i64 %1269, %1270
  %1272 = getelementptr inbounds float, ptr %1267, i64 %1271
  %1273 = load float, ptr %1272, align 4, !tbaa !11
  %1274 = load ptr, ptr %19, align 8, !tbaa !5
  %1275 = load ptr, ptr %12, align 8, !tbaa !5
  %1276 = load i64, ptr %1275, align 8, !tbaa !9
  %1277 = load i64, ptr %35, align 8, !tbaa !9
  %1278 = add nsw i64 %1276, %1277
  %1279 = getelementptr inbounds float, ptr %1274, i64 %1278
  store float %1273, ptr %1279, align 4, !tbaa !11
  %1280 = load float, ptr %37, align 4, !tbaa !11
  %1281 = load ptr, ptr %19, align 8, !tbaa !5
  %1282 = load ptr, ptr %12, align 8, !tbaa !5
  %1283 = load i64, ptr %1282, align 8, !tbaa !9
  %1284 = load i64, ptr %36, align 8, !tbaa !9
  %1285 = add nsw i64 %1283, %1284
  %1286 = getelementptr inbounds float, ptr %1281, i64 %1285
  store float %1280, ptr %1286, align 4, !tbaa !11
  %1287 = load i64, ptr %35, align 8, !tbaa !9
  %1288 = add nsw i64 %1287, -2
  store i64 %1288, ptr %35, align 8, !tbaa !9
  br label %1289

1289:                                             ; preds = %1254, %1251
  br label %1206, !llvm.loop !28

1290:                                             ; preds = %1206
  br label %1291

1291:                                             ; preds = %1290, %850
  %1292 = load i64, ptr %41, align 8, !tbaa !9
  %1293 = icmp ne i64 %1292, 0
  br i1 %1293, label %1294, label %1336

1294:                                             ; preds = %1291
  %1295 = load ptr, ptr %12, align 8, !tbaa !5
  %1296 = load i64, ptr %1295, align 8, !tbaa !9
  store i64 %1296, ptr %25, align 8, !tbaa !9
  %1297 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %1297, ptr %33, align 8, !tbaa !9
  br label %1298

1298:                                             ; preds = %1332, %1294
  %1299 = load i64, ptr %33, align 8, !tbaa !9
  %1300 = load i64, ptr %25, align 8, !tbaa !9
  %1301 = icmp sle i64 %1299, %1300
  br i1 %1301, label %1302, label %1335

1302:                                             ; preds = %1298
  %1303 = load ptr, ptr %19, align 8, !tbaa !5
  %1304 = load i64, ptr %33, align 8, !tbaa !9
  %1305 = getelementptr inbounds float, ptr %1303, i64 %1304
  %1306 = load float, ptr %1305, align 4, !tbaa !11
  store float %1306, ptr %39, align 4, !tbaa !11
  %1307 = load ptr, ptr %19, align 8, !tbaa !5
  %1308 = load ptr, ptr %12, align 8, !tbaa !5
  %1309 = load i64, ptr %1308, align 8, !tbaa !9
  %1310 = load i64, ptr %33, align 8, !tbaa !9
  %1311 = add nsw i64 %1309, %1310
  %1312 = getelementptr inbounds float, ptr %1307, i64 %1311
  %1313 = load float, ptr %1312, align 4, !tbaa !11
  store float %1313, ptr %38, align 4, !tbaa !11
  %1314 = load float, ptr %39, align 4, !tbaa !11
  %1315 = fcmp une float %1314, 0.000000e+00
  br i1 %1315, label %1316, label %1331

1316:                                             ; preds = %1302
  %1317 = load float, ptr %38, align 4, !tbaa !11
  %1318 = load float, ptr %39, align 4, !tbaa !11
  %1319 = fdiv float %1317, %1318
  store float %1319, ptr %29, align 4, !tbaa !11
  %1320 = load float, ptr %29, align 4, !tbaa !11
  %1321 = load float, ptr %42, align 4, !tbaa !11
  %1322 = fcmp ole float %1320, %1321
  br i1 %1322, label %1323, label %1325

1323:                                             ; preds = %1316
  %1324 = load float, ptr %29, align 4, !tbaa !11
  br label %1327

1325:                                             ; preds = %1316
  %1326 = load float, ptr %42, align 4, !tbaa !11
  br label %1327

1327:                                             ; preds = %1325, %1323
  %1328 = phi float [ %1324, %1323 ], [ %1326, %1325 ]
  %1329 = fpext float %1328 to double
  %1330 = fptrunc double %1329 to float
  store float %1330, ptr %42, align 4, !tbaa !11
  br label %1331

1331:                                             ; preds = %1327, %1302
  br label %1332

1332:                                             ; preds = %1331
  %1333 = load i64, ptr %33, align 8, !tbaa !9
  %1334 = add nsw i64 %1333, 1
  store i64 %1334, ptr %33, align 8, !tbaa !9
  br label %1298, !llvm.loop !29

1335:                                             ; preds = %1298
  br label %1376

1336:                                             ; preds = %1291
  %1337 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %1337, ptr %25, align 8, !tbaa !9
  store i64 1, ptr %33, align 8, !tbaa !9
  br label %1338

1338:                                             ; preds = %1372, %1336
  %1339 = load i64, ptr %33, align 8, !tbaa !9
  %1340 = load i64, ptr %25, align 8, !tbaa !9
  %1341 = icmp sle i64 %1339, %1340
  br i1 %1341, label %1342, label %1375

1342:                                             ; preds = %1338
  %1343 = load ptr, ptr %19, align 8, !tbaa !5
  %1344 = load i64, ptr %33, align 8, !tbaa !9
  %1345 = getelementptr inbounds float, ptr %1343, i64 %1344
  %1346 = load float, ptr %1345, align 4, !tbaa !11
  store float %1346, ptr %39, align 4, !tbaa !11
  %1347 = load ptr, ptr %19, align 8, !tbaa !5
  %1348 = load ptr, ptr %12, align 8, !tbaa !5
  %1349 = load i64, ptr %1348, align 8, !tbaa !9
  %1350 = load i64, ptr %33, align 8, !tbaa !9
  %1351 = add nsw i64 %1349, %1350
  %1352 = getelementptr inbounds float, ptr %1347, i64 %1351
  %1353 = load float, ptr %1352, align 4, !tbaa !11
  store float %1353, ptr %38, align 4, !tbaa !11
  %1354 = load float, ptr %39, align 4, !tbaa !11
  %1355 = fcmp une float %1354, 0.000000e+00
  br i1 %1355, label %1356, label %1371

1356:                                             ; preds = %1342
  %1357 = load float, ptr %38, align 4, !tbaa !11
  %1358 = load float, ptr %39, align 4, !tbaa !11
  %1359 = fdiv float %1357, %1358
  store float %1359, ptr %29, align 4, !tbaa !11
  %1360 = load float, ptr %29, align 4, !tbaa !11
  %1361 = load float, ptr %42, align 4, !tbaa !11
  %1362 = fcmp ole float %1360, %1361
  br i1 %1362, label %1363, label %1365

1363:                                             ; preds = %1356
  %1364 = load float, ptr %29, align 4, !tbaa !11
  br label %1367

1365:                                             ; preds = %1356
  %1366 = load float, ptr %42, align 4, !tbaa !11
  br label %1367

1367:                                             ; preds = %1365, %1363
  %1368 = phi float [ %1364, %1363 ], [ %1366, %1365 ]
  %1369 = fpext float %1368 to double
  %1370 = fptrunc double %1369 to float
  store float %1370, ptr %42, align 4, !tbaa !11
  br label %1371

1371:                                             ; preds = %1367, %1342
  br label %1372

1372:                                             ; preds = %1371
  %1373 = load i64, ptr %33, align 8, !tbaa !9
  %1374 = add nsw i64 %1373, 1
  store i64 %1374, ptr %33, align 8, !tbaa !9
  br label %1338, !llvm.loop !30

1375:                                             ; preds = %1338
  br label %1376

1376:                                             ; preds = %1375, %1335
  %1377 = load float, ptr %42, align 4, !tbaa !11
  store float %1377, ptr %28, align 4, !tbaa !11
  %1378 = load float, ptr %28, align 4, !tbaa !11
  %1379 = fpext float %1378 to double
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 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
  ret double %1379
}

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

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

declare double @r_imag(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, !12, i64 0}
!12 = !{!"float", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = !{!16, !12, i64 0}
!16 = !{!"", !12, i64 0, !12, i64 4}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !14}
!21 = distinct !{!21, !14}
!22 = distinct !{!22, !14}
!23 = distinct !{!23, !14}
!24 = distinct !{!24, !14}
!25 = distinct !{!25, !14}
!26 = distinct !{!26, !14}
!27 = distinct !{!27, !14}
!28 = distinct !{!28, !14}
!29 = distinct !{!29, !14}
!30 = distinct !{!30, !14}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.complex = type { float, float }

@.str = external hidden unnamed_addr constant [6 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local double @cla_herpvgrw__(ptr noundef %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, ptr noundef %3, ptr nocapture noundef readonly %4, ptr noundef %5, ptr nocapture noundef readonly %6, ptr nocapture noundef readonly %7, ptr noundef %8, i64 noundef %9) local_unnamed_addr #0 {
  %11 = load i64, ptr %4, align 8, !tbaa !5
  %12 = xor i64 %11, -1
  %13 = getelementptr inbounds %struct.complex, ptr %3, i64 %12
  %14 = load i64, ptr %6, align 8, !tbaa !5
  %15 = xor i64 %14, -1
  %16 = getelementptr inbounds %struct.complex, ptr %5, i64 %15
  %17 = getelementptr inbounds i8, ptr %7, i64 -8
  %18 = getelementptr inbounds i8, ptr %8, i64 -4
  %19 = tail call i64 @lsame_(ptr noundef nonnull @.str, ptr noundef %0) #3
  %20 = load i64, ptr %2, align 8, !tbaa !5
  %21 = icmp eq i64 %20, 0
  br i1 %21, label %22, label %._crit_edge665

._crit_edge665:                                   ; preds = %10
  %.pre = load i64, ptr %1, align 8, !tbaa !5
  br label %23

22:                                               ; preds = %10
  %.not = icmp eq i64 %19, 0
  %.pre666 = load i64, ptr %1, align 8, !tbaa !5
  %spec.select = select i1 %.not, i64 %.pre666, i64 1
  br label %23

23:                                               ; preds = %22, %._crit_edge665
  %24 = phi i64 [ %.pre, %._crit_edge665 ], [ %.pre666, %22 ]
  %.0532 = phi i64 [ %20, %._crit_edge665 ], [ %spec.select, %22 ]
  %25 = shl i64 %24, 1
  %.not561590 = icmp slt i64 %25, 1
  br i1 %.not561590, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %23
  %26 = shl i64 %24, 3
  tail call void @llvm.memset.p0.i64(ptr align 4 %8, i8 0, i64 %26, i1 false), !tbaa !9
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.preheader, %23
  %.not562 = icmp eq i64 %19, 0
  %.not563606 = icmp slt i64 %24, 1
  br i1 %.not562, label %.preheader585, label %.preheader588

.preheader588:                                    ; preds = %._crit_edge
  br i1 %.not563606, label %.preheader583, label %.preheader587.preheader

.preheader587.preheader:                          ; preds = %.preheader588
  %27 = add nuw i64 %24, 1
  br label %.preheader587

.preheader585:                                    ; preds = %._crit_edge
  br i1 %.not563606, label %.preheader582, label %.lr.ph608

.preheader587:                                    ; preds = %.preheader587.preheader, %61
  %indvars.iv = phi i64 [ 2, %.preheader587.preheader ], [ %indvars.iv.next, %61 ]
  %.0538596 = phi i64 [ 1, %.preheader587.preheader ], [ %62, %61 ]
  %28 = mul nsw i64 %.0538596, %11
  %invariant.gep = getelementptr %struct.complex, ptr %13, i64 %28
  %invariant.gep592 = getelementptr float, ptr %18, i64 %.0538596
  br label %29

29:                                               ; preds = %.preheader587, %29
  %.1541594 = phi i64 [ 1, %.preheader587 ], [ %60, %29 ]
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %.1541594
  %30 = load float, ptr %gep, align 4, !tbaa !11
  %31 = tail call double @r_imag(ptr noundef nonnull %gep) #3
  %32 = fptrunc double %31 to float
  %33 = insertelement <2 x float> poison, float %30, i64 0
  %34 = insertelement <2 x float> %33, float %32, i64 1
  %35 = fcmp oge <2 x float> %34, zeroinitializer
  %36 = fneg <2 x float> %34
  %37 = select <2 x i1> %35, <2 x float> %34, <2 x float> %36
  %shift = shufflevector <2 x float> %37, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %38 = fadd <2 x float> %37, %shift
  %39 = extractelement <2 x float> %38, i64 0
  %40 = load i64, ptr %1, align 8, !tbaa !5
  %41 = getelementptr float, ptr %18, i64 %40
  %42 = getelementptr float, ptr %41, i64 %.1541594
  %43 = load float, ptr %42, align 4, !tbaa !9
  %44 = fcmp oge float %39, %43
  %45 = select i1 %44, float %39, float %43
  store float %45, ptr %42, align 4, !tbaa !9
  %46 = load float, ptr %gep, align 4, !tbaa !11
  %47 = tail call double @r_imag(ptr noundef nonnull %gep) #3
  %48 = fptrunc double %47 to float
  %49 = insertelement <2 x float> poison, float %46, i64 0
  %50 = insertelement <2 x float> %49, float %48, i64 1
  %51 = fcmp oge <2 x float> %50, zeroinitializer
  %52 = fneg <2 x float> %50
  %53 = select <2 x i1> %51, <2 x float> %50, <2 x float> %52
  %shift684 = shufflevector <2 x float> %53, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %54 = fadd <2 x float> %53, %shift684
  %55 = extractelement <2 x float> %54, i64 0
  %56 = load i64, ptr %1, align 8, !tbaa !5
  %gep593 = getelementptr float, ptr %invariant.gep592, i64 %56
  %57 = load float, ptr %gep593, align 4, !tbaa !9
  %58 = fcmp oge float %55, %57
  %59 = select i1 %58, float %55, float %57
  store float %59, ptr %gep593, align 4, !tbaa !9
  %60 = add nuw i64 %.1541594, 1
  %exitcond.not = icmp eq i64 %60, %indvars.iv
  br i1 %exitcond.not, label %61, label %29, !llvm.loop !13

61:                                               ; preds = %29
  %62 = add nuw nsw i64 %.0538596, 1
  %indvars.iv.next = add nuw i64 %indvars.iv, 1
  %exitcond657.not = icmp eq i64 %indvars.iv, %27
  br i1 %exitcond657.not, label %.loopexit586, label %.preheader587, !llvm.loop !15

.lr.ph608:                                        ; preds = %.preheader585, %._crit_edge603
  %63 = phi i64 [ %97, %._crit_edge603 ], [ %24, %.preheader585 ]
  %.1539607 = phi i64 [ %98, %._crit_edge603 ], [ 1, %.preheader585 ]
  %invariant.gep597 = getelementptr float, ptr %18, i64 %.1539607
  %.not564599 = icmp sgt i64 %.1539607, %63
  br i1 %.not564599, label %._crit_edge603, label %.lr.ph602

.lr.ph602:                                        ; preds = %.lr.ph608
  %64 = mul nsw i64 %.1539607, %11
  %invariant.gep604 = getelementptr %struct.complex, ptr %13, i64 %64
  br label %65

65:                                               ; preds = %.lr.ph602, %65
  %.2542600 = phi i64 [ %.1539607, %.lr.ph602 ], [ %96, %65 ]
  %gep605 = getelementptr %struct.complex, ptr %invariant.gep604, i64 %.2542600
  %66 = load float, ptr %gep605, align 4, !tbaa !11
  %67 = tail call double @r_imag(ptr noundef nonnull %gep605) #3
  %68 = fptrunc double %67 to float
  %69 = insertelement <2 x float> poison, float %66, i64 0
  %70 = insertelement <2 x float> %69, float %68, i64 1
  %71 = fcmp oge <2 x float> %70, zeroinitializer
  %72 = fneg <2 x float> %70
  %73 = select <2 x i1> %71, <2 x float> %70, <2 x float> %72
  %shift685 = shufflevector <2 x float> %73, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %74 = fadd <2 x float> %73, %shift685
  %75 = extractelement <2 x float> %74, i64 0
  %76 = load i64, ptr %1, align 8, !tbaa !5
  %77 = getelementptr float, ptr %18, i64 %76
  %78 = getelementptr float, ptr %77, i64 %.2542600
  %79 = load float, ptr %78, align 4, !tbaa !9
  %80 = fcmp oge float %75, %79
  %81 = select i1 %80, float %75, float %79
  store float %81, ptr %78, align 4, !tbaa !9
  %82 = load float, ptr %gep605, align 4, !tbaa !11
  %83 = tail call double @r_imag(ptr noundef nonnull %gep605) #3
  %84 = fptrunc double %83 to float
  %85 = insertelement <2 x float> poison, float %82, i64 0
  %86 = insertelement <2 x float> %85, float %84, i64 1
  %87 = fcmp oge <2 x float> %86, zeroinitializer
  %88 = fneg <2 x float> %86
  %89 = select <2 x i1> %87, <2 x float> %86, <2 x float> %88
  %shift686 = shufflevector <2 x float> %89, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %90 = fadd <2 x float> %89, %shift686
  %91 = extractelement <2 x float> %90, i64 0
  %92 = load i64, ptr %1, align 8, !tbaa !5
  %gep598 = getelementptr float, ptr %invariant.gep597, i64 %92
  %93 = load float, ptr %gep598, align 4, !tbaa !9
  %94 = fcmp oge float %91, %93
  %95 = select i1 %94, float %91, float %93
  store float %95, ptr %gep598, align 4, !tbaa !9
  %96 = add nuw nsw i64 %.2542600, 1
  %.not564.not = icmp slt i64 %.2542600, %63
  br i1 %.not564.not, label %65, label %._crit_edge603, !llvm.loop !16

._crit_edge603:                                   ; preds = %65, %.lr.ph608
  %97 = phi i64 [ %63, %.lr.ph608 ], [ %92, %65 ]
  %98 = add nuw i64 %.1539607, 1
  %exitcond658.not = icmp eq i64 %.1539607, %24
  br i1 %exitcond658.not, label %.loopexit586, label %.lr.ph608, !llvm.loop !17

.loopexit586:                                     ; preds = %61, %._crit_edge603
  %99 = phi i64 [ %97, %._crit_edge603 ], [ %56, %61 ]
  br i1 %.not562, label %.preheader582, label %101

.preheader582:                                    ; preds = %.preheader585, %.loopexit586
  %.not566639 = icmp slt i64 %.0532, 1
  br i1 %.not566639, label %.loopexit, label %.lr.ph641

.lr.ph641:                                        ; preds = %.preheader582
  %100 = add i64 %14, 1
  br label %220

101:                                              ; preds = %.loopexit586
  %102 = icmp slt i64 %99, %.0532
  %103 = icmp sgt i64 %99, 0
  %104 = and i1 %102, %103
  br i1 %104, label %.lr.ph623, label %.preheader583

.lr.ph623:                                        ; preds = %101
  %105 = add i64 %14, 1
  br label %108

.preheader583.loopexit:                           ; preds = %._crit_edge618
  %.pre667 = load i64, ptr %1, align 8, !tbaa !5
  br label %.preheader583

.preheader583:                                    ; preds = %.preheader588, %.preheader583.loopexit, %101
  %106 = phi i64 [ %.pre667, %.preheader583.loopexit ], [ %99, %101 ], [ %24, %.preheader588 ]
  %.not571624 = icmp sgt i64 %.0532, %106
  br i1 %.not571624, label %.loopexit581, label %.lr.ph626

.lr.ph626:                                        ; preds = %.preheader583
  %107 = getelementptr float, ptr %18, i64 %106
  br label %202

108:                                              ; preds = %.lr.ph623, %._crit_edge618
  %.0533621 = phi i64 [ %99, %.lr.ph623 ], [ %198, %._crit_edge618 ]
  %109 = getelementptr inbounds i64, ptr %17, i64 %.0533621
  %110 = load i64, ptr %109, align 8, !tbaa !5
  %111 = icmp sgt i64 %110, 0
  br i1 %111, label %112, label %137

112:                                              ; preds = %108
  %.not576 = icmp eq i64 %110, %.0533621
  br i1 %.not576, label %.lr.ph617, label %113

113:                                              ; preds = %112
  %114 = load i64, ptr %1, align 8, !tbaa !5
  %115 = getelementptr float, ptr %18, i64 %114
  %116 = getelementptr float, ptr %115, i64 %.0533621
  %117 = load float, ptr %116, align 4, !tbaa !9
  %118 = getelementptr float, ptr %115, i64 %110
  %119 = load float, ptr %118, align 4, !tbaa !9
  store float %119, ptr %116, align 4, !tbaa !9
  store float %117, ptr %118, align 4, !tbaa !9
  br label %.lr.ph617

.lr.ph617:                                        ; preds = %112, %113
  %120 = mul nsw i64 %.0533621, %14
  %invariant.gep619 = getelementptr %struct.complex, ptr %16, i64 %120
  %121 = getelementptr inbounds float, ptr %18, i64 %.0533621
  br label %122

122:                                              ; preds = %.lr.ph617, %122
  %.3543615 = phi i64 [ 1, %.lr.ph617 ], [ %136, %122 ]
  %gep620 = getelementptr %struct.complex, ptr %invariant.gep619, i64 %.3543615
  %123 = load float, ptr %gep620, align 4, !tbaa !11
  %124 = tail call double @r_imag(ptr noundef nonnull %gep620) #3
  %125 = fptrunc double %124 to float
  %126 = insertelement <2 x float> poison, float %123, i64 0
  %127 = insertelement <2 x float> %126, float %125, i64 1
  %128 = fcmp oge <2 x float> %127, zeroinitializer
  %129 = fneg <2 x float> %127
  %130 = select <2 x i1> %128, <2 x float> %127, <2 x float> %129
  %shift687 = shufflevector <2 x float> %130, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %131 = fadd <2 x float> %130, %shift687
  %132 = extractelement <2 x float> %131, i64 0
  %133 = load float, ptr %121, align 4, !tbaa !9
  %134 = fcmp oge float %132, %133
  %135 = select i1 %134, float %132, float %133
  store float %135, ptr %121, align 4, !tbaa !9
  %136 = add nuw i64 %.3543615, 1
  %exitcond660.not = icmp eq i64 %.3543615, %.0533621
  br i1 %exitcond660.not, label %._crit_edge618, label %122, !llvm.loop !18

137:                                              ; preds = %108
  %138 = load i64, ptr %1, align 8, !tbaa !5
  %139 = getelementptr float, ptr %18, i64 %138
  %140 = getelementptr float, ptr %139, i64 %.0533621
  %141 = getelementptr i8, ptr %140, i64 -4
  %142 = load float, ptr %141, align 4, !tbaa !9
  %143 = sub i64 %138, %110
  %144 = getelementptr inbounds float, ptr %18, i64 %143
  %145 = load float, ptr %144, align 4, !tbaa !9
  store float %145, ptr %141, align 4, !tbaa !9
  store float %142, ptr %144, align 4, !tbaa !9
  %.not575.not609 = icmp sgt i64 %.0533621, 1
  br i1 %.not575.not609, label %.lr.ph612, label %._crit_edge613

.lr.ph612:                                        ; preds = %137
  %146 = add nsw i64 %.0533621, -1
  %147 = mul nsw i64 %.0533621, %14
  %148 = getelementptr inbounds float, ptr %18, i64 %.0533621
  %149 = mul nsw i64 %146, %14
  %150 = getelementptr inbounds float, ptr %18, i64 %146
  br label %151

151:                                              ; preds = %.lr.ph612, %151
  %.4544610 = phi i64 [ 1, %.lr.ph612 ], [ %181, %151 ]
  %152 = getelementptr %struct.complex, ptr %16, i64 %.4544610
  %153 = getelementptr %struct.complex, ptr %152, i64 %147
  %154 = load float, ptr %153, align 4, !tbaa !11
  %155 = tail call double @r_imag(ptr noundef nonnull %153) #3
  %156 = fptrunc double %155 to float
  %157 = insertelement <2 x float> poison, float %154, i64 0
  %158 = insertelement <2 x float> %157, float %156, i64 1
  %159 = fcmp oge <2 x float> %158, zeroinitializer
  %160 = fneg <2 x float> %158
  %161 = select <2 x i1> %159, <2 x float> %158, <2 x float> %160
  %shift688 = shufflevector <2 x float> %161, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %162 = fadd <2 x float> %161, %shift688
  %163 = extractelement <2 x float> %162, i64 0
  %164 = load float, ptr %148, align 4, !tbaa !9
  %165 = fcmp oge float %163, %164
  %166 = select i1 %165, float %163, float %164
  store float %166, ptr %148, align 4, !tbaa !9
  %167 = getelementptr %struct.complex, ptr %152, i64 %149
  %168 = load float, ptr %167, align 4, !tbaa !11
  %169 = tail call double @r_imag(ptr noundef nonnull %167) #3
  %170 = fptrunc double %169 to float
  %171 = insertelement <2 x float> poison, float %168, i64 0
  %172 = insertelement <2 x float> %171, float %170, i64 1
  %173 = fcmp oge <2 x float> %172, zeroinitializer
  %174 = fneg <2 x float> %172
  %175 = select <2 x i1> %173, <2 x float> %172, <2 x float> %174
  %shift689 = shufflevector <2 x float> %175, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %176 = fadd <2 x float> %175, %shift689
  %177 = extractelement <2 x float> %176, i64 0
  %178 = load float, ptr %150, align 4, !tbaa !9
  %179 = fcmp oge float %177, %178
  %180 = select i1 %179, float %177, float %178
  store float %180, ptr %150, align 4, !tbaa !9
  %181 = add nuw nsw i64 %.4544610, 1
  %exitcond659.not = icmp eq i64 %181, %.0533621
  br i1 %exitcond659.not, label %._crit_edge613, label %151, !llvm.loop !19

._crit_edge613:                                   ; preds = %151, %137
  %182 = mul i64 %.0533621, %105
  %183 = getelementptr inbounds %struct.complex, ptr %16, i64 %182
  %184 = load float, ptr %183, align 4, !tbaa !11
  %185 = tail call double @r_imag(ptr noundef nonnull %183) #3
  %186 = fptrunc double %185 to float
  %187 = insertelement <2 x float> poison, float %184, i64 0
  %188 = insertelement <2 x float> %187, float %186, i64 1
  %189 = fcmp oge <2 x float> %188, zeroinitializer
  %190 = fneg <2 x float> %188
  %191 = select <2 x i1> %189, <2 x float> %188, <2 x float> %190
  %shift690 = shufflevector <2 x float> %191, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %192 = fadd <2 x float> %191, %shift690
  %193 = extractelement <2 x float> %192, i64 0
  %194 = getelementptr inbounds float, ptr %18, i64 %.0533621
  %195 = load float, ptr %194, align 4, !tbaa !9
  %196 = fcmp oge float %193, %195
  %197 = select i1 %196, float %193, float %195
  store float %197, ptr %194, align 4, !tbaa !9
  br label %._crit_edge618

._crit_edge618:                                   ; preds = %122, %._crit_edge613
  %.sink = phi i64 [ -2, %._crit_edge613 ], [ -1, %122 ]
  %198 = add nsw i64 %.0533621, %.sink
  %199 = icmp slt i64 %198, %.0532
  %200 = icmp sgt i64 %198, 0
  %201 = and i1 %199, %200
  br i1 %201, label %108, label %.preheader583.loopexit, !llvm.loop !20

202:                                              ; preds = %.lr.ph626, %218
  %.2535625 = phi i64 [ %.0532, %.lr.ph626 ], [ %219, %218 ]
  %203 = getelementptr inbounds i64, ptr %17, i64 %.2535625
  %204 = load i64, ptr %203, align 8, !tbaa !5
  %205 = icmp sgt i64 %204, 0
  br i1 %205, label %206, label %212

206:                                              ; preds = %202
  %.not574 = icmp eq i64 %204, %.2535625
  br i1 %.not574, label %218, label %207

207:                                              ; preds = %206
  %208 = getelementptr float, ptr %107, i64 %.2535625
  %209 = load float, ptr %208, align 4, !tbaa !9
  %210 = getelementptr float, ptr %107, i64 %204
  %211 = load float, ptr %210, align 4, !tbaa !9
  store float %211, ptr %208, align 4, !tbaa !9
  store float %209, ptr %210, align 4, !tbaa !9
  br label %218

212:                                              ; preds = %202
  %213 = getelementptr float, ptr %107, i64 %.2535625
  %214 = load float, ptr %213, align 4, !tbaa !9
  %215 = sub i64 %106, %204
  %216 = getelementptr inbounds float, ptr %18, i64 %215
  %217 = load float, ptr %216, align 4, !tbaa !9
  store float %217, ptr %213, align 4, !tbaa !9
  store float %214, ptr %216, align 4, !tbaa !9
  br label %218

218:                                              ; preds = %206, %207, %212
  %.sink676 = phi i64 [ 2, %212 ], [ 1, %207 ], [ 1, %206 ]
  %219 = add nsw i64 %.2535625, %.sink676
  %.not571 = icmp sgt i64 %219, %106
  br i1 %.not571, label %.loopexit581, label %202, !llvm.loop !21

220:                                              ; preds = %.lr.ph641, %._crit_edge636
  %.4537640 = phi i64 [ 1, %.lr.ph641 ], [ %309, %._crit_edge636 ]
  %221 = getelementptr inbounds i64, ptr %17, i64 %.4537640
  %222 = load i64, ptr %221, align 8, !tbaa !5
  %223 = icmp sgt i64 %222, 0
  br i1 %223, label %224, label %249

224:                                              ; preds = %220
  %.not569 = icmp eq i64 %222, %.4537640
  %.pre668 = load i64, ptr %1, align 8, !tbaa !5
  br i1 %.not569, label %231, label %225

225:                                              ; preds = %224
  %226 = getelementptr float, ptr %18, i64 %.pre668
  %227 = getelementptr float, ptr %226, i64 %.4537640
  %228 = load float, ptr %227, align 4, !tbaa !9
  %229 = getelementptr float, ptr %226, i64 %222
  %230 = load float, ptr %229, align 4, !tbaa !9
  store float %230, ptr %227, align 4, !tbaa !9
  store float %228, ptr %229, align 4, !tbaa !9
  br label %231

231:                                              ; preds = %225, %224
  %.not570632 = icmp sgt i64 %.4537640, %.pre668
  br i1 %.not570632, label %._crit_edge636, label %.lr.ph635

.lr.ph635:                                        ; preds = %231
  %232 = mul nsw i64 %.4537640, %14
  %invariant.gep637 = getelementptr %struct.complex, ptr %16, i64 %232
  %233 = getelementptr inbounds float, ptr %18, i64 %.4537640
  br label %234

234:                                              ; preds = %.lr.ph635, %234
  %.5545633 = phi i64 [ %.4537640, %.lr.ph635 ], [ %248, %234 ]
  %gep638 = getelementptr %struct.complex, ptr %invariant.gep637, i64 %.5545633
  %235 = load float, ptr %gep638, align 4, !tbaa !11
  %236 = tail call double @r_imag(ptr noundef nonnull %gep638) #3
  %237 = fptrunc double %236 to float
  %238 = insertelement <2 x float> poison, float %235, i64 0
  %239 = insertelement <2 x float> %238, float %237, i64 1
  %240 = fcmp oge <2 x float> %239, zeroinitializer
  %241 = fneg <2 x float> %239
  %242 = select <2 x i1> %240, <2 x float> %239, <2 x float> %241
  %shift691 = shufflevector <2 x float> %242, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %243 = fadd <2 x float> %242, %shift691
  %244 = extractelement <2 x float> %243, i64 0
  %245 = load float, ptr %233, align 4, !tbaa !9
  %246 = fcmp oge float %244, %245
  %247 = select i1 %246, float %244, float %245
  store float %247, ptr %233, align 4, !tbaa !9
  %248 = add i64 %.5545633, 1
  %exitcond662.not = icmp eq i64 %.5545633, %.pre668
  br i1 %exitcond662.not, label %._crit_edge636, label %234, !llvm.loop !22

249:                                              ; preds = %220
  %250 = load i64, ptr %1, align 8, !tbaa !5
  %251 = getelementptr float, ptr %8, i64 %250
  %252 = getelementptr float, ptr %251, i64 %.4537640
  %253 = load float, ptr %252, align 4, !tbaa !9
  %254 = sub i64 %250, %222
  %255 = getelementptr inbounds float, ptr %18, i64 %254
  %256 = load float, ptr %255, align 4, !tbaa !9
  store float %256, ptr %252, align 4, !tbaa !9
  store float %253, ptr %255, align 4, !tbaa !9
  %.not568627.not = icmp slt i64 %.4537640, %250
  br i1 %.not568627.not, label %.lr.ph630, label %._crit_edge631

.lr.ph630:                                        ; preds = %249
  %257 = add nuw nsw i64 %.4537640, 1
  %258 = mul nsw i64 %.4537640, %14
  %259 = getelementptr inbounds float, ptr %18, i64 %.4537640
  %260 = mul nsw i64 %257, %14
  %261 = getelementptr float, ptr %8, i64 %.4537640
  br label %262

262:                                              ; preds = %.lr.ph630, %262
  %.6546628 = phi i64 [ %257, %.lr.ph630 ], [ %292, %262 ]
  %263 = getelementptr %struct.complex, ptr %16, i64 %.6546628
  %264 = getelementptr %struct.complex, ptr %263, i64 %258
  %265 = load float, ptr %264, align 4, !tbaa !11
  %266 = tail call double @r_imag(ptr noundef nonnull %264) #3
  %267 = fptrunc double %266 to float
  %268 = insertelement <2 x float> poison, float %265, i64 0
  %269 = insertelement <2 x float> %268, float %267, i64 1
  %270 = fcmp oge <2 x float> %269, zeroinitializer
  %271 = fneg <2 x float> %269
  %272 = select <2 x i1> %270, <2 x float> %269, <2 x float> %271
  %shift692 = shufflevector <2 x float> %272, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %273 = fadd <2 x float> %272, %shift692
  %274 = extractelement <2 x float> %273, i64 0
  %275 = load float, ptr %259, align 4, !tbaa !9
  %276 = fcmp oge float %274, %275
  %277 = select i1 %276, float %274, float %275
  store float %277, ptr %259, align 4, !tbaa !9
  %278 = getelementptr %struct.complex, ptr %263, i64 %260
  %279 = load float, ptr %278, align 4, !tbaa !11
  %280 = tail call double @r_imag(ptr noundef nonnull %278) #3
  %281 = fptrunc double %280 to float
  %282 = insertelement <2 x float> poison, float %279, i64 0
  %283 = insertelement <2 x float> %282, float %281, i64 1
  %284 = fcmp oge <2 x float> %283, zeroinitializer
  %285 = fneg <2 x float> %283
  %286 = select <2 x i1> %284, <2 x float> %283, <2 x float> %285
  %shift693 = shufflevector <2 x float> %286, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %287 = fadd <2 x float> %286, %shift693
  %288 = extractelement <2 x float> %287, i64 0
  %289 = load float, ptr %261, align 4, !tbaa !9
  %290 = fcmp oge float %288, %289
  %291 = select i1 %290, float %288, float %289
  store float %291, ptr %261, align 4, !tbaa !9
  %292 = add i64 %.6546628, 1
  %exitcond661.not = icmp eq i64 %.6546628, %250
  br i1 %exitcond661.not, label %._crit_edge631, label %262, !llvm.loop !23

._crit_edge631:                                   ; preds = %262, %249
  %293 = mul i64 %.4537640, %100
  %294 = getelementptr inbounds %struct.complex, ptr %16, i64 %293
  %295 = load float, ptr %294, align 4, !tbaa !11
  %296 = tail call double @r_imag(ptr noundef nonnull %294) #3
  %297 = fptrunc double %296 to float
  %298 = insertelement <2 x float> poison, float %295, i64 0
  %299 = insertelement <2 x float> %298, float %297, i64 1
  %300 = fcmp oge <2 x float> %299, zeroinitializer
  %301 = fneg <2 x float> %299
  %302 = select <2 x i1> %300, <2 x float> %299, <2 x float> %301
  %shift694 = shufflevector <2 x float> %302, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %303 = fadd <2 x float> %302, %shift694
  %304 = extractelement <2 x float> %303, i64 0
  %305 = getelementptr inbounds float, ptr %18, i64 %.4537640
  %306 = load float, ptr %305, align 4, !tbaa !9
  %307 = fcmp oge float %304, %306
  %308 = select i1 %307, float %304, float %306
  store float %308, ptr %305, align 4, !tbaa !9
  br label %._crit_edge636

._crit_edge636:                                   ; preds = %234, %231, %._crit_edge631
  %.sink677 = phi i64 [ 2, %._crit_edge631 ], [ 1, %231 ], [ 1, %234 ]
  %309 = add nuw nsw i64 %.4537640, %.sink677
  %.not566 = icmp sgt i64 %309, %.0532
  br i1 %.not566, label %.lr.ph643, label %220, !llvm.loop !24

.lr.ph643:                                        ; preds = %._crit_edge636, %329
  %.6642 = phi i64 [ %330, %329 ], [ %.0532, %._crit_edge636 ]
  %310 = getelementptr inbounds i64, ptr %17, i64 %.6642
  %311 = load i64, ptr %310, align 8, !tbaa !5
  %312 = icmp sgt i64 %311, 0
  br i1 %312, label %313, label %321

313:                                              ; preds = %.lr.ph643
  %.not567 = icmp eq i64 %311, %.6642
  br i1 %.not567, label %329, label %314

314:                                              ; preds = %313
  %315 = load i64, ptr %1, align 8, !tbaa !5
  %316 = getelementptr float, ptr %18, i64 %315
  %317 = getelementptr float, ptr %316, i64 %.6642
  %318 = load float, ptr %317, align 4, !tbaa !9
  %319 = getelementptr float, ptr %316, i64 %311
  %320 = load float, ptr %319, align 4, !tbaa !9
  store float %320, ptr %317, align 4, !tbaa !9
  store float %318, ptr %319, align 4, !tbaa !9
  br label %329

321:                                              ; preds = %.lr.ph643
  %322 = load i64, ptr %1, align 8, !tbaa !5
  %323 = getelementptr float, ptr %18, i64 %322
  %324 = getelementptr float, ptr %323, i64 %.6642
  %325 = load float, ptr %324, align 4, !tbaa !9
  %326 = sub i64 %322, %311
  %327 = getelementptr inbounds float, ptr %18, i64 %326
  %328 = load float, ptr %327, align 4, !tbaa !9
  store float %328, ptr %324, align 4, !tbaa !9
  store float %325, ptr %327, align 4, !tbaa !9
  br label %329

329:                                              ; preds = %313, %314, %321
  %.sink678 = phi i64 [ -2, %321 ], [ -1, %314 ], [ -1, %313 ]
  %330 = add nsw i64 %.6642, %.sink678
  %331 = icmp sgt i64 %330, 0
  br i1 %331, label %.lr.ph643, label %.loopexit581, !llvm.loop !25

.loopexit581:                                     ; preds = %218, %329, %.preheader583
  br i1 %.not562, label %.preheader, label %333

.preheader:                                       ; preds = %.loopexit581
  %.not572649 = icmp slt i64 %.0532, 1
  br i1 %.not572649, label %.loopexit, label %.lr.ph652.preheader

.lr.ph652.preheader:                              ; preds = %.preheader
  %xtraiter700 = and i64 %.0532, 1
  %332 = icmp eq i64 %.0532, 1
  br i1 %332, label %.loopexit.loopexit.unr-lcssa, label %.lr.ph652.preheader.new

.lr.ph652.preheader.new:                          ; preds = %.lr.ph652.preheader
  %unroll_iter = and i64 %.0532, 9223372036854775806
  br label %.lr.ph652

333:                                              ; preds = %.loopexit581
  %334 = load i64, ptr %1, align 8, !tbaa !5
  %.not573644 = icmp sgt i64 %.0532, %334
  br i1 %.not573644, label %.loopexit, label %.lr.ph648

.lr.ph648:                                        ; preds = %333
  %335 = getelementptr float, ptr %18, i64 %334
  %336 = add i64 %334, %.0532
  %337 = and i64 %336, 1
  %lcmp.mod.not.not = icmp eq i64 %337, 0
  br i1 %lcmp.mod.not.not, label %.prol.preheader, label %.prol.loopexit

.prol.preheader:                                  ; preds = %.lr.ph648
  %338 = getelementptr inbounds float, ptr %18, i64 %.0532
  %339 = load float, ptr %338, align 4, !tbaa !9
  %340 = fcmp une float %339, 0.000000e+00
  br i1 %340, label %341, label %.prol.loopexit.unr-lcssa

341:                                              ; preds = %.prol.preheader
  %342 = getelementptr float, ptr %335, i64 %.0532
  %343 = load float, ptr %342, align 4, !tbaa !9
  %344 = fdiv float %343, %339
  %345 = fcmp ole float %344, 1.000000e+00
  %346 = select i1 %345, float %344, float 1.000000e+00
  br label %.prol.loopexit.unr-lcssa

.prol.loopexit.unr-lcssa:                         ; preds = %341, %.prol.preheader
  %.1.prol = phi float [ %346, %341 ], [ 1.000000e+00, %.prol.preheader ]
  %347 = add i64 %.0532, 1
  br label %.prol.loopexit

.prol.loopexit:                                   ; preds = %.prol.loopexit.unr-lcssa, %.lr.ph648
  %.1.lcssa.unr = phi float [ poison, %.lr.ph648 ], [ %.1.prol, %.prol.loopexit.unr-lcssa ]
  %.0646.unr = phi float [ 1.000000e+00, %.lr.ph648 ], [ %.1.prol, %.prol.loopexit.unr-lcssa ]
  %.7547645.unr = phi i64 [ %.0532, %.lr.ph648 ], [ %347, %.prol.loopexit.unr-lcssa ]
  %348 = icmp eq i64 %334, %.0532
  br i1 %348, label %.loopexit, label %.lr.ph648.new

.lr.ph648.new:                                    ; preds = %.prol.loopexit, %369
  %.0646 = phi float [ %.1.1, %369 ], [ %.0646.unr, %.prol.loopexit ]
  %.7547645 = phi i64 [ %370, %369 ], [ %.7547645.unr, %.prol.loopexit ]
  %349 = getelementptr inbounds float, ptr %18, i64 %.7547645
  %350 = load float, ptr %349, align 4, !tbaa !9
  %351 = fcmp une float %350, 0.000000e+00
  br i1 %351, label %352, label %358

352:                                              ; preds = %.lr.ph648.new
  %353 = getelementptr float, ptr %335, i64 %.7547645
  %354 = load float, ptr %353, align 4, !tbaa !9
  %355 = fdiv float %354, %350
  %356 = fcmp ole float %355, %.0646
  %357 = select i1 %356, float %355, float %.0646
  br label %358

358:                                              ; preds = %.lr.ph648.new, %352
  %.1 = phi float [ %357, %352 ], [ %.0646, %.lr.ph648.new ]
  %359 = add i64 %.7547645, 1
  %360 = getelementptr float, ptr %8, i64 %.7547645
  %361 = load float, ptr %360, align 4, !tbaa !9
  %362 = fcmp une float %361, 0.000000e+00
  br i1 %362, label %363, label %369

363:                                              ; preds = %358
  %364 = getelementptr float, ptr %335, i64 %359
  %365 = load float, ptr %364, align 4, !tbaa !9
  %366 = fdiv float %365, %361
  %367 = fcmp ole float %366, %.1
  %368 = select i1 %367, float %366, float %.1
  br label %369

369:                                              ; preds = %363, %358
  %.1.1 = phi float [ %368, %363 ], [ %.1, %358 ]
  %370 = add i64 %.7547645, 2
  %exitcond663.not.1 = icmp eq i64 %359, %334
  br i1 %exitcond663.not.1, label %.loopexit, label %.lr.ph648.new, !llvm.loop !26

.lr.ph652:                                        ; preds = %394, %.lr.ph652.preheader.new
  %.2651 = phi float [ 1.000000e+00, %.lr.ph652.preheader.new ], [ %.3.1, %394 ]
  %.8650 = phi i64 [ 1, %.lr.ph652.preheader.new ], [ %395, %394 ]
  %niter = phi i64 [ 0, %.lr.ph652.preheader.new ], [ %niter.next.1, %394 ]
  %371 = getelementptr inbounds float, ptr %18, i64 %.8650
  %372 = load float, ptr %371, align 4, !tbaa !9
  %373 = fcmp une float %372, 0.000000e+00
  br i1 %373, label %374, label %.lr.ph652.1

374:                                              ; preds = %.lr.ph652
  %375 = load i64, ptr %1, align 8, !tbaa !5
  %376 = getelementptr float, ptr %18, i64 %375
  %377 = getelementptr float, ptr %376, i64 %.8650
  %378 = load float, ptr %377, align 4, !tbaa !9
  %379 = fdiv float %378, %372
  %380 = fcmp ole float %379, %.2651
  %381 = select i1 %380, float %379, float %.2651
  br label %.lr.ph652.1

.lr.ph652.1:                                      ; preds = %.lr.ph652, %374
  %.3 = phi float [ %381, %374 ], [ %.2651, %.lr.ph652 ]
  %382 = getelementptr float, ptr %8, i64 %.8650
  %383 = load float, ptr %382, align 4, !tbaa !9
  %384 = fcmp une float %383, 0.000000e+00
  br i1 %384, label %385, label %394

385:                                              ; preds = %.lr.ph652.1
  %386 = load i64, ptr %1, align 8, !tbaa !5
  %387 = getelementptr float, ptr %18, i64 %386
  %388 = getelementptr float, ptr %387, i64 %.8650
  %389 = getelementptr i8, ptr %388, i64 4
  %390 = load float, ptr %389, align 4, !tbaa !9
  %391 = fdiv float %390, %383
  %392 = fcmp ole float %391, %.3
  %393 = select i1 %392, float %391, float %.3
  br label %394

394:                                              ; preds = %385, %.lr.ph652.1
  %.3.1 = phi float [ %393, %385 ], [ %.3, %.lr.ph652.1 ]
  %395 = add nuw i64 %.8650, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %.loopexit.loopexit.unr-lcssa, label %.lr.ph652, !llvm.loop !27

.loopexit.loopexit.unr-lcssa:                     ; preds = %394, %.lr.ph652.preheader
  %.3.lcssa.ph = phi float [ poison, %.lr.ph652.preheader ], [ %.3.1, %394 ]
  %.2651.unr = phi float [ 1.000000e+00, %.lr.ph652.preheader ], [ %.3.1, %394 ]
  %.8650.unr = phi i64 [ 1, %.lr.ph652.preheader ], [ %395, %394 ]
  %lcmp.mod701.not = icmp eq i64 %xtraiter700, 0
  br i1 %lcmp.mod701.not, label %.loopexit, label %.lr.ph652.epil

.lr.ph652.epil:                                   ; preds = %.loopexit.loopexit.unr-lcssa
  %396 = getelementptr inbounds float, ptr %18, i64 %.8650.unr
  %397 = load float, ptr %396, align 4, !tbaa !9
  %398 = fcmp une float %397, 0.000000e+00
  br i1 %398, label %399, label %.loopexit

399:                                              ; preds = %.lr.ph652.epil
  %400 = load i64, ptr %1, align 8, !tbaa !5
  %401 = getelementptr float, ptr %18, i64 %400
  %402 = getelementptr float, ptr %401, i64 %.8650.unr
  %403 = load float, ptr %402, align 4, !tbaa !9
  %404 = fdiv float %403, %397
  %405 = fcmp ole float %404, %.2651.unr
  %406 = select i1 %405, float %404, float %.2651.unr
  br label %.loopexit

.loopexit:                                        ; preds = %.prol.loopexit, %369, %.loopexit.loopexit.unr-lcssa, %399, %.lr.ph652.epil, %.preheader582, %333, %.preheader
  %.4 = phi float [ 1.000000e+00, %.preheader ], [ 1.000000e+00, %333 ], [ 1.000000e+00, %.preheader582 ], [ %.3.lcssa.ph, %.loopexit.loopexit.unr-lcssa ], [ %406, %399 ], [ %.2651.unr, %.lr.ph652.epil ], [ %.1.lcssa.unr, %.prol.loopexit ], [ %.1.1, %369 ]
  %407 = fpext float %.4 to double
  ret double %407
}

declare i64 @lsame_(ptr noundef, ptr noundef) local_unnamed_addr #1

declare double @r_imag(ptr noundef) local_unnamed_addr #1

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { "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 #2 = { nocallback nofree nounwind willreturn memory(argmem: write) }
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 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"float", !7, i64 0}
!11 = !{!12, !10, i64 0}
!12 = !{!"", !10, i64 0, !10, i64 4}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !14}
!21 = distinct !{!21, !14}
!22 = distinct !{!22, !14}
!23 = distinct !{!23, !14}
!24 = distinct !{!24, !14}
!25 = distinct !{!25, !14}
!26 = distinct !{!26, !14}
!27 = distinct !{!27, !14}


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