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

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

%struct.complex = type { float, float }

@c__1 = external hidden global i64, align 8
@.str = external hidden unnamed_addr constant [13 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [10 x i8], align 1
@c__2 = external hidden global i64, align 8

; Function Attrs: nounwind uwtable
define dso_local i32 @clahqr_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12) #0 {
  %14 = alloca i32, align 4
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca i64, align 8
  %29 = alloca i64, align 8
  %30 = alloca i64, align 8
  %31 = alloca i64, align 8
  %32 = alloca i64, align 8
  %33 = alloca i64, align 8
  %34 = alloca i64, align 8
  %35 = alloca i64, align 8
  %36 = alloca float, align 4
  %37 = alloca float, align 4
  %38 = alloca float, align 4
  %39 = alloca float, align 4
  %40 = alloca float, align 4
  %41 = alloca float, align 4
  %42 = alloca %struct.complex, align 4
  %43 = alloca %struct.complex, align 4
  %44 = alloca %struct.complex, align 4
  %45 = alloca %struct.complex, align 4
  %46 = alloca %struct.complex, align 4
  %47 = alloca %struct.complex, align 4
  %48 = alloca %struct.complex, align 4
  %49 = alloca i64, align 8
  %50 = alloca i64, align 8
  %51 = alloca i64, align 8
  %52 = alloca i64, align 8
  %53 = alloca i64, align 8
  %54 = alloca float, align 4
  %55 = alloca %struct.complex, align 4
  %56 = alloca %struct.complex, align 4
  %57 = alloca [2 x %struct.complex], align 16
  %58 = alloca %struct.complex, align 4
  %59 = alloca %struct.complex, align 4
  %60 = alloca i64, align 8
  %61 = alloca i64, align 8
  %62 = alloca %struct.complex, align 4
  %63 = alloca float, align 4
  %64 = alloca %struct.complex, align 4
  %65 = alloca float, align 4
  %66 = alloca float, align 4
  %67 = alloca float, align 4
  %68 = alloca float, align 4
  %69 = alloca float, align 4
  %70 = alloca %struct.complex, align 4
  %71 = alloca float, align 4
  %72 = alloca %struct.complex, align 4
  %73 = alloca %struct.complex, align 4
  %74 = alloca i64, align 8
  %75 = alloca i64, align 8
  %76 = alloca float, align 4
  %77 = alloca i64, align 8
  %78 = alloca %struct.complex, align 4
  %79 = alloca i64, align 8
  %80 = alloca i64, align 8
  %81 = alloca float, align 4
  %82 = alloca %struct.complex, align 4
  %83 = alloca float, align 4
  %84 = alloca %struct.complex, align 4
  %85 = alloca float, align 4
  %86 = alloca float, align 4
  %87 = alloca float, align 4
  %88 = alloca float, align 4
  %89 = alloca i32, align 4
  store ptr %0, ptr %15, align 8, !tbaa !5
  store ptr %1, ptr %16, align 8, !tbaa !5
  store ptr %2, ptr %17, align 8, !tbaa !5
  store ptr %3, ptr %18, align 8, !tbaa !5
  store ptr %4, ptr %19, align 8, !tbaa !5
  store ptr %5, ptr %20, align 8, !tbaa !5
  store ptr %6, ptr %21, align 8, !tbaa !5
  store ptr %7, ptr %22, align 8, !tbaa !5
  store ptr %8, ptr %23, align 8, !tbaa !5
  store ptr %9, ptr %24, align 8, !tbaa !5
  store ptr %10, ptr %25, align 8, !tbaa !5
  store ptr %11, ptr %26, align 8, !tbaa !5
  store ptr %12, ptr %27, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr %57) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %86) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %88) #4
  %90 = load ptr, ptr %21, align 8, !tbaa !5
  %91 = load i64, ptr %90, align 8, !tbaa !9
  store i64 %91, ptr %28, align 8, !tbaa !9
  %92 = load i64, ptr %28, align 8, !tbaa !9
  %93 = add nsw i64 1, %92
  store i64 %93, ptr %29, align 8, !tbaa !9
  %94 = load i64, ptr %29, align 8, !tbaa !9
  %95 = load ptr, ptr %20, align 8, !tbaa !5
  %96 = sub i64 0, %94
  %97 = getelementptr inbounds %struct.complex, ptr %95, i64 %96
  store ptr %97, ptr %20, align 8, !tbaa !5
  %98 = load ptr, ptr %22, align 8, !tbaa !5
  %99 = getelementptr inbounds %struct.complex, ptr %98, i32 -1
  store ptr %99, ptr %22, align 8, !tbaa !5
  %100 = load ptr, ptr %26, align 8, !tbaa !5
  %101 = load i64, ptr %100, align 8, !tbaa !9
  store i64 %101, ptr %30, align 8, !tbaa !9
  %102 = load i64, ptr %30, align 8, !tbaa !9
  %103 = add nsw i64 1, %102
  store i64 %103, ptr %31, align 8, !tbaa !9
  %104 = load i64, ptr %31, align 8, !tbaa !9
  %105 = load ptr, ptr %25, align 8, !tbaa !5
  %106 = sub i64 0, %104
  %107 = getelementptr inbounds %struct.complex, ptr %105, i64 %106
  store ptr %107, ptr %25, align 8, !tbaa !5
  %108 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 0, ptr %108, align 8, !tbaa !9
  %109 = load ptr, ptr %17, align 8, !tbaa !5
  %110 = load i64, ptr %109, align 8, !tbaa !9
  %111 = icmp eq i64 %110, 0
  br i1 %111, label %112, label %113

112:                                              ; preds = %13
  store i32 0, ptr %14, align 4
  store i32 1, ptr %89, align 4
  br label %3125

113:                                              ; preds = %13
  %114 = load ptr, ptr %18, align 8, !tbaa !5
  %115 = load i64, ptr %114, align 8, !tbaa !9
  %116 = load ptr, ptr %19, align 8, !tbaa !5
  %117 = load i64, ptr %116, align 8, !tbaa !9
  %118 = icmp eq i64 %115, %117
  br i1 %118, label %119, label %147

119:                                              ; preds = %113
  %120 = load ptr, ptr %18, align 8, !tbaa !5
  %121 = load i64, ptr %120, align 8, !tbaa !9
  store i64 %121, ptr %32, align 8, !tbaa !9
  %122 = load ptr, ptr %18, align 8, !tbaa !5
  %123 = load i64, ptr %122, align 8, !tbaa !9
  %124 = load ptr, ptr %18, align 8, !tbaa !5
  %125 = load i64, ptr %124, align 8, !tbaa !9
  %126 = load i64, ptr %28, align 8, !tbaa !9
  %127 = mul nsw i64 %125, %126
  %128 = add nsw i64 %123, %127
  store i64 %128, ptr %33, align 8, !tbaa !9
  %129 = load ptr, ptr %20, align 8, !tbaa !5
  %130 = load i64, ptr %33, align 8, !tbaa !9
  %131 = getelementptr inbounds %struct.complex, ptr %129, i64 %130
  %132 = getelementptr inbounds %struct.complex, ptr %131, i32 0, i32 0
  %133 = load float, ptr %132, align 4, !tbaa !11
  %134 = load ptr, ptr %22, align 8, !tbaa !5
  %135 = load i64, ptr %32, align 8, !tbaa !9
  %136 = getelementptr inbounds %struct.complex, ptr %134, i64 %135
  %137 = getelementptr inbounds %struct.complex, ptr %136, i32 0, i32 0
  store float %133, ptr %137, align 4, !tbaa !11
  %138 = load ptr, ptr %20, align 8, !tbaa !5
  %139 = load i64, ptr %33, align 8, !tbaa !9
  %140 = getelementptr inbounds %struct.complex, ptr %138, i64 %139
  %141 = getelementptr inbounds %struct.complex, ptr %140, i32 0, i32 1
  %142 = load float, ptr %141, align 4, !tbaa !14
  %143 = load ptr, ptr %22, align 8, !tbaa !5
  %144 = load i64, ptr %32, align 8, !tbaa !9
  %145 = getelementptr inbounds %struct.complex, ptr %143, i64 %144
  %146 = getelementptr inbounds %struct.complex, ptr %145, i32 0, i32 1
  store float %142, ptr %146, align 4, !tbaa !14
  store i32 0, ptr %14, align 4
  store i32 1, ptr %89, align 4
  br label %3125

147:                                              ; preds = %113
  %148 = load ptr, ptr %19, align 8, !tbaa !5
  %149 = load i64, ptr %148, align 8, !tbaa !9
  %150 = sub nsw i64 %149, 3
  store i64 %150, ptr %32, align 8, !tbaa !9
  %151 = load ptr, ptr %18, align 8, !tbaa !5
  %152 = load i64, ptr %151, align 8, !tbaa !9
  store i64 %152, ptr %50, align 8, !tbaa !9
  br label %153

153:                                              ; preds = %186, %147
  %154 = load i64, ptr %50, align 8, !tbaa !9
  %155 = load i64, ptr %32, align 8, !tbaa !9
  %156 = icmp sle i64 %154, %155
  br i1 %156, label %157, label %189

157:                                              ; preds = %153
  %158 = load i64, ptr %50, align 8, !tbaa !9
  %159 = add nsw i64 %158, 2
  %160 = load i64, ptr %50, align 8, !tbaa !9
  %161 = load i64, ptr %28, align 8, !tbaa !9
  %162 = mul nsw i64 %160, %161
  %163 = add nsw i64 %159, %162
  store i64 %163, ptr %33, align 8, !tbaa !9
  %164 = load ptr, ptr %20, align 8, !tbaa !5
  %165 = load i64, ptr %33, align 8, !tbaa !9
  %166 = getelementptr inbounds %struct.complex, ptr %164, i64 %165
  %167 = getelementptr inbounds %struct.complex, ptr %166, i32 0, i32 0
  store float 0.000000e+00, ptr %167, align 4, !tbaa !11
  %168 = load ptr, ptr %20, align 8, !tbaa !5
  %169 = load i64, ptr %33, align 8, !tbaa !9
  %170 = getelementptr inbounds %struct.complex, ptr %168, i64 %169
  %171 = getelementptr inbounds %struct.complex, ptr %170, i32 0, i32 1
  store float 0.000000e+00, ptr %171, align 4, !tbaa !14
  %172 = load i64, ptr %50, align 8, !tbaa !9
  %173 = add nsw i64 %172, 3
  %174 = load i64, ptr %50, align 8, !tbaa !9
  %175 = load i64, ptr %28, align 8, !tbaa !9
  %176 = mul nsw i64 %174, %175
  %177 = add nsw i64 %173, %176
  store i64 %177, ptr %33, align 8, !tbaa !9
  %178 = load ptr, ptr %20, align 8, !tbaa !5
  %179 = load i64, ptr %33, align 8, !tbaa !9
  %180 = getelementptr inbounds %struct.complex, ptr %178, i64 %179
  %181 = getelementptr inbounds %struct.complex, ptr %180, i32 0, i32 0
  store float 0.000000e+00, ptr %181, align 4, !tbaa !11
  %182 = load ptr, ptr %20, align 8, !tbaa !5
  %183 = load i64, ptr %33, align 8, !tbaa !9
  %184 = getelementptr inbounds %struct.complex, ptr %182, i64 %183
  %185 = getelementptr inbounds %struct.complex, ptr %184, i32 0, i32 1
  store float 0.000000e+00, ptr %185, align 4, !tbaa !14
  br label %186

186:                                              ; preds = %157
  %187 = load i64, ptr %50, align 8, !tbaa !9
  %188 = add nsw i64 %187, 1
  store i64 %188, ptr %50, align 8, !tbaa !9
  br label %153, !llvm.loop !15

189:                                              ; preds = %153
  %190 = load ptr, ptr %18, align 8, !tbaa !5
  %191 = load i64, ptr %190, align 8, !tbaa !9
  %192 = load ptr, ptr %19, align 8, !tbaa !5
  %193 = load i64, ptr %192, align 8, !tbaa !9
  %194 = sub nsw i64 %193, 2
  %195 = icmp sle i64 %191, %194
  br i1 %195, label %196, label %213

196:                                              ; preds = %189
  %197 = load ptr, ptr %19, align 8, !tbaa !5
  %198 = load i64, ptr %197, align 8, !tbaa !9
  %199 = load ptr, ptr %19, align 8, !tbaa !5
  %200 = load i64, ptr %199, align 8, !tbaa !9
  %201 = sub nsw i64 %200, 2
  %202 = load i64, ptr %28, align 8, !tbaa !9
  %203 = mul nsw i64 %201, %202
  %204 = add nsw i64 %198, %203
  store i64 %204, ptr %32, align 8, !tbaa !9
  %205 = load ptr, ptr %20, align 8, !tbaa !5
  %206 = load i64, ptr %32, align 8, !tbaa !9
  %207 = getelementptr inbounds %struct.complex, ptr %205, i64 %206
  %208 = getelementptr inbounds %struct.complex, ptr %207, i32 0, i32 0
  store float 0.000000e+00, ptr %208, align 4, !tbaa !11
  %209 = load ptr, ptr %20, align 8, !tbaa !5
  %210 = load i64, ptr %32, align 8, !tbaa !9
  %211 = getelementptr inbounds %struct.complex, ptr %209, i64 %210
  %212 = getelementptr inbounds %struct.complex, ptr %211, i32 0, i32 1
  store float 0.000000e+00, ptr %212, align 4, !tbaa !14
  br label %213

213:                                              ; preds = %196, %189
  %214 = load ptr, ptr %15, align 8, !tbaa !5
  %215 = load i64, ptr %214, align 8, !tbaa !9
  %216 = icmp ne i64 %215, 0
  br i1 %216, label %217, label %220

217:                                              ; preds = %213
  store i64 1, ptr %79, align 8, !tbaa !9
  %218 = load ptr, ptr %17, align 8, !tbaa !5
  %219 = load i64, ptr %218, align 8, !tbaa !9
  store i64 %219, ptr %77, align 8, !tbaa !9
  br label %225

220:                                              ; preds = %213
  %221 = load ptr, ptr %18, align 8, !tbaa !5
  %222 = load i64, ptr %221, align 8, !tbaa !9
  store i64 %222, ptr %79, align 8, !tbaa !9
  %223 = load ptr, ptr %19, align 8, !tbaa !5
  %224 = load i64, ptr %223, align 8, !tbaa !9
  store i64 %224, ptr %77, align 8, !tbaa !9
  br label %225

225:                                              ; preds = %220, %217
  %226 = load ptr, ptr %19, align 8, !tbaa !5
  %227 = load i64, ptr %226, align 8, !tbaa !9
  store i64 %227, ptr %32, align 8, !tbaa !9
  %228 = load ptr, ptr %18, align 8, !tbaa !5
  %229 = load i64, ptr %228, align 8, !tbaa !9
  %230 = add nsw i64 %229, 1
  store i64 %230, ptr %49, align 8, !tbaa !9
  br label %231

231:                                              ; preds = %418, %225
  %232 = load i64, ptr %49, align 8, !tbaa !9
  %233 = load i64, ptr %32, align 8, !tbaa !9
  %234 = icmp sle i64 %232, %233
  br i1 %234, label %235, label %421

235:                                              ; preds = %231
  %236 = load ptr, ptr %20, align 8, !tbaa !5
  %237 = load i64, ptr %49, align 8, !tbaa !9
  %238 = load i64, ptr %49, align 8, !tbaa !9
  %239 = sub nsw i64 %238, 1
  %240 = load i64, ptr %28, align 8, !tbaa !9
  %241 = mul nsw i64 %239, %240
  %242 = add nsw i64 %237, %241
  %243 = getelementptr inbounds %struct.complex, ptr %236, i64 %242
  %244 = call double @r_imag(ptr noundef %243)
  %245 = fcmp une double %244, 0.000000e+00
  br i1 %245, label %246, label %417

246:                                              ; preds = %235
  %247 = load i64, ptr %49, align 8, !tbaa !9
  %248 = load i64, ptr %49, align 8, !tbaa !9
  %249 = sub nsw i64 %248, 1
  %250 = load i64, ptr %28, align 8, !tbaa !9
  %251 = mul nsw i64 %249, %250
  %252 = add nsw i64 %247, %251
  store i64 %252, ptr %33, align 8, !tbaa !9
  %253 = load i64, ptr %49, align 8, !tbaa !9
  %254 = load i64, ptr %49, align 8, !tbaa !9
  %255 = sub nsw i64 %254, 1
  %256 = load i64, ptr %28, align 8, !tbaa !9
  %257 = mul nsw i64 %255, %256
  %258 = add nsw i64 %253, %257
  store i64 %258, ptr %34, align 8, !tbaa !9
  %259 = load ptr, ptr %20, align 8, !tbaa !5
  %260 = load i64, ptr %34, align 8, !tbaa !9
  %261 = getelementptr inbounds %struct.complex, ptr %259, i64 %260
  %262 = getelementptr inbounds %struct.complex, ptr %261, i32 0, i32 0
  %263 = load float, ptr %262, align 4, !tbaa !11
  store float %263, ptr %36, align 4, !tbaa !17
  %264 = load float, ptr %36, align 4, !tbaa !17
  %265 = fcmp oge float %264, 0.000000e+00
  br i1 %265, label %266, label %268

266:                                              ; preds = %246
  %267 = load float, ptr %36, align 4, !tbaa !17
  br label %271

268:                                              ; preds = %246
  %269 = load float, ptr %36, align 4, !tbaa !17
  %270 = fneg float %269
  br label %271

271:                                              ; preds = %268, %266
  %272 = phi float [ %267, %266 ], [ %270, %268 ]
  %273 = fpext float %272 to double
  %274 = load ptr, ptr %20, align 8, !tbaa !5
  %275 = load i64, ptr %49, align 8, !tbaa !9
  %276 = load i64, ptr %49, align 8, !tbaa !9
  %277 = sub nsw i64 %276, 1
  %278 = load i64, ptr %28, align 8, !tbaa !9
  %279 = mul nsw i64 %277, %278
  %280 = add nsw i64 %275, %279
  %281 = getelementptr inbounds %struct.complex, ptr %274, i64 %280
  %282 = call double @r_imag(ptr noundef %281)
  %283 = fptrunc double %282 to float
  store float %283, ptr %37, align 4, !tbaa !17
  %284 = load float, ptr %37, align 4, !tbaa !17
  %285 = fcmp oge float %284, 0.000000e+00
  br i1 %285, label %286, label %288

286:                                              ; preds = %271
  %287 = load float, ptr %37, align 4, !tbaa !17
  br label %291

288:                                              ; preds = %271
  %289 = load float, ptr %37, align 4, !tbaa !17
  %290 = fneg float %289
  br label %291

291:                                              ; preds = %288, %286
  %292 = phi float [ %287, %286 ], [ %290, %288 ]
  %293 = fpext float %292 to double
  %294 = fadd double %273, %293
  %295 = fptrunc double %294 to float
  store float %295, ptr %38, align 4, !tbaa !17
  %296 = load ptr, ptr %20, align 8, !tbaa !5
  %297 = load i64, ptr %33, align 8, !tbaa !9
  %298 = getelementptr inbounds %struct.complex, ptr %296, i64 %297
  %299 = getelementptr inbounds %struct.complex, ptr %298, i32 0, i32 0
  %300 = load float, ptr %299, align 4, !tbaa !11
  %301 = load float, ptr %38, align 4, !tbaa !17
  %302 = fdiv float %300, %301
  %303 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %302, ptr %303, align 4, !tbaa !11
  %304 = load ptr, ptr %20, align 8, !tbaa !5
  %305 = load i64, ptr %33, align 8, !tbaa !9
  %306 = getelementptr inbounds %struct.complex, ptr %304, i64 %305
  %307 = getelementptr inbounds %struct.complex, ptr %306, i32 0, i32 1
  %308 = load float, ptr %307, align 4, !tbaa !14
  %309 = load float, ptr %38, align 4, !tbaa !17
  %310 = fdiv float %308, %309
  %311 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %310, ptr %311, align 4, !tbaa !14
  %312 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %313 = load float, ptr %312, align 4, !tbaa !11
  %314 = getelementptr inbounds %struct.complex, ptr %73, i32 0, i32 0
  store float %313, ptr %314, align 4, !tbaa !11
  %315 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %316 = load float, ptr %315, align 4, !tbaa !14
  %317 = getelementptr inbounds %struct.complex, ptr %73, i32 0, i32 1
  store float %316, ptr %317, align 4, !tbaa !14
  call void @r_cnjg(ptr noundef %43, ptr noundef %73)
  %318 = call double @c_abs(ptr noundef %73)
  %319 = fptrunc double %318 to float
  store float %319, ptr %36, align 4, !tbaa !17
  %320 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %321 = load float, ptr %320, align 4, !tbaa !11
  %322 = load float, ptr %36, align 4, !tbaa !17
  %323 = fdiv float %321, %322
  %324 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %323, ptr %324, align 4, !tbaa !11
  %325 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %326 = load float, ptr %325, align 4, !tbaa !14
  %327 = load float, ptr %36, align 4, !tbaa !17
  %328 = fdiv float %326, %327
  %329 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %328, ptr %329, align 4, !tbaa !14
  %330 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %331 = load float, ptr %330, align 4, !tbaa !11
  %332 = getelementptr inbounds %struct.complex, ptr %73, i32 0, i32 0
  store float %331, ptr %332, align 4, !tbaa !11
  %333 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %334 = load float, ptr %333, align 4, !tbaa !14
  %335 = getelementptr inbounds %struct.complex, ptr %73, i32 0, i32 1
  store float %334, ptr %335, align 4, !tbaa !14
  %336 = load i64, ptr %49, align 8, !tbaa !9
  %337 = load i64, ptr %49, align 8, !tbaa !9
  %338 = sub nsw i64 %337, 1
  %339 = load i64, ptr %28, align 8, !tbaa !9
  %340 = mul nsw i64 %338, %339
  %341 = add nsw i64 %336, %340
  store i64 %341, ptr %33, align 8, !tbaa !9
  %342 = load ptr, ptr %20, align 8, !tbaa !5
  %343 = load i64, ptr %49, align 8, !tbaa !9
  %344 = load i64, ptr %49, align 8, !tbaa !9
  %345 = sub nsw i64 %344, 1
  %346 = load i64, ptr %28, align 8, !tbaa !9
  %347 = mul nsw i64 %345, %346
  %348 = add nsw i64 %343, %347
  %349 = getelementptr inbounds %struct.complex, ptr %342, i64 %348
  %350 = call double @c_abs(ptr noundef %349)
  %351 = fptrunc double %350 to float
  store float %351, ptr %36, align 4, !tbaa !17
  %352 = load float, ptr %36, align 4, !tbaa !17
  %353 = load ptr, ptr %20, align 8, !tbaa !5
  %354 = load i64, ptr %33, align 8, !tbaa !9
  %355 = getelementptr inbounds %struct.complex, ptr %353, i64 %354
  %356 = getelementptr inbounds %struct.complex, ptr %355, i32 0, i32 0
  store float %352, ptr %356, align 4, !tbaa !11
  %357 = load ptr, ptr %20, align 8, !tbaa !5
  %358 = load i64, ptr %33, align 8, !tbaa !9
  %359 = getelementptr inbounds %struct.complex, ptr %357, i64 %358
  %360 = getelementptr inbounds %struct.complex, ptr %359, i32 0, i32 1
  store float 0.000000e+00, ptr %360, align 4, !tbaa !14
  %361 = load i64, ptr %77, align 8, !tbaa !9
  %362 = load i64, ptr %49, align 8, !tbaa !9
  %363 = sub nsw i64 %361, %362
  %364 = add nsw i64 %363, 1
  store i64 %364, ptr %33, align 8, !tbaa !9
  %365 = load ptr, ptr %20, align 8, !tbaa !5
  %366 = load i64, ptr %49, align 8, !tbaa !9
  %367 = load i64, ptr %49, align 8, !tbaa !9
  %368 = load i64, ptr %28, align 8, !tbaa !9
  %369 = mul nsw i64 %367, %368
  %370 = add nsw i64 %366, %369
  %371 = getelementptr inbounds %struct.complex, ptr %365, i64 %370
  %372 = load ptr, ptr %21, align 8, !tbaa !5
  %373 = call i32 @f2c_cscal(ptr noundef %33, ptr noundef %73, ptr noundef %371, ptr noundef %372)
  %374 = load i64, ptr %77, align 8, !tbaa !9
  store i64 %374, ptr %34, align 8, !tbaa !9
  %375 = load i64, ptr %49, align 8, !tbaa !9
  %376 = add nsw i64 %375, 1
  store i64 %376, ptr %35, align 8, !tbaa !9
  %377 = load i64, ptr %34, align 8, !tbaa !9
  %378 = load i64, ptr %35, align 8, !tbaa !9
  %379 = icmp sle i64 %377, %378
  br i1 %379, label %380, label %382

380:                                              ; preds = %291
  %381 = load i64, ptr %34, align 8, !tbaa !9
  br label %384

382:                                              ; preds = %291
  %383 = load i64, ptr %35, align 8, !tbaa !9
  br label %384

384:                                              ; preds = %382, %380
  %385 = phi i64 [ %381, %380 ], [ %383, %382 ]
  %386 = load i64, ptr %79, align 8, !tbaa !9
  %387 = sub nsw i64 %385, %386
  %388 = add nsw i64 %387, 1
  store i64 %388, ptr %33, align 8, !tbaa !9
  call void @r_cnjg(ptr noundef %42, ptr noundef %73)
  %389 = load ptr, ptr %20, align 8, !tbaa !5
  %390 = load i64, ptr %79, align 8, !tbaa !9
  %391 = load i64, ptr %49, align 8, !tbaa !9
  %392 = load i64, ptr %28, align 8, !tbaa !9
  %393 = mul nsw i64 %391, %392
  %394 = add nsw i64 %390, %393
  %395 = getelementptr inbounds %struct.complex, ptr %389, i64 %394
  %396 = call i32 @f2c_cscal(ptr noundef %33, ptr noundef %42, ptr noundef %395, ptr noundef @c__1)
  %397 = load ptr, ptr %16, align 8, !tbaa !5
  %398 = load i64, ptr %397, align 8, !tbaa !9
  %399 = icmp ne i64 %398, 0
  br i1 %399, label %400, label %416

400:                                              ; preds = %384
  %401 = load ptr, ptr %24, align 8, !tbaa !5
  %402 = load i64, ptr %401, align 8, !tbaa !9
  %403 = load ptr, ptr %23, align 8, !tbaa !5
  %404 = load i64, ptr %403, align 8, !tbaa !9
  %405 = sub nsw i64 %402, %404
  %406 = add nsw i64 %405, 1
  store i64 %406, ptr %33, align 8, !tbaa !9
  call void @r_cnjg(ptr noundef %42, ptr noundef %73)
  %407 = load ptr, ptr %25, align 8, !tbaa !5
  %408 = load ptr, ptr %23, align 8, !tbaa !5
  %409 = load i64, ptr %408, align 8, !tbaa !9
  %410 = load i64, ptr %49, align 8, !tbaa !9
  %411 = load i64, ptr %30, align 8, !tbaa !9
  %412 = mul nsw i64 %410, %411
  %413 = add nsw i64 %409, %412
  %414 = getelementptr inbounds %struct.complex, ptr %407, i64 %413
  %415 = call i32 @f2c_cscal(ptr noundef %33, ptr noundef %42, ptr noundef %414, ptr noundef @c__1)
  br label %416

416:                                              ; preds = %400, %384
  br label %417

417:                                              ; preds = %416, %235
  br label %418

418:                                              ; preds = %417
  %419 = load i64, ptr %49, align 8, !tbaa !9
  %420 = add nsw i64 %419, 1
  store i64 %420, ptr %49, align 8, !tbaa !9
  br label %231, !llvm.loop !18

421:                                              ; preds = %231
  %422 = load ptr, ptr %19, align 8, !tbaa !5
  %423 = load i64, ptr %422, align 8, !tbaa !9
  %424 = load ptr, ptr %18, align 8, !tbaa !5
  %425 = load i64, ptr %424, align 8, !tbaa !9
  %426 = sub nsw i64 %423, %425
  %427 = add nsw i64 %426, 1
  store i64 %427, ptr %74, align 8, !tbaa !9
  %428 = load ptr, ptr %24, align 8, !tbaa !5
  %429 = load i64, ptr %428, align 8, !tbaa !9
  %430 = load ptr, ptr %23, align 8, !tbaa !5
  %431 = load i64, ptr %430, align 8, !tbaa !9
  %432 = sub nsw i64 %429, %431
  %433 = add nsw i64 %432, 1
  store i64 %433, ptr %75, align 8, !tbaa !9
  %434 = call double @slamch_(ptr noundef @.str)
  %435 = fptrunc double %434 to float
  store float %435, ptr %86, align 4, !tbaa !17
  %436 = load float, ptr %86, align 4, !tbaa !17
  %437 = fdiv float 1.000000e+00, %436
  store float %437, ptr %87, align 4, !tbaa !17
  %438 = call i32 @slabad_(ptr noundef %86, ptr noundef %87)
  %439 = call double @slamch_(ptr noundef @.str.1)
  %440 = fptrunc double %439 to float
  store float %440, ptr %81, align 4, !tbaa !17
  %441 = load float, ptr %86, align 4, !tbaa !17
  %442 = load i64, ptr %74, align 8, !tbaa !9
  %443 = sitofp i64 %442 to float
  %444 = load float, ptr %81, align 4, !tbaa !17
  %445 = fdiv float %443, %444
  %446 = fmul float %441, %445
  store float %446, ptr %88, align 4, !tbaa !17
  %447 = load ptr, ptr %15, align 8, !tbaa !5
  %448 = load i64, ptr %447, align 8, !tbaa !9
  %449 = icmp ne i64 %448, 0
  br i1 %449, label %450, label %453

450:                                              ; preds = %421
  store i64 1, ptr %60, align 8, !tbaa !9
  %451 = load ptr, ptr %17, align 8, !tbaa !5
  %452 = load i64, ptr %451, align 8, !tbaa !9
  store i64 %452, ptr %61, align 8, !tbaa !9
  br label %453

453:                                              ; preds = %450, %421
  %454 = load ptr, ptr %19, align 8, !tbaa !5
  %455 = load i64, ptr %454, align 8, !tbaa !9
  store i64 %455, ptr %49, align 8, !tbaa !9
  br label %456

456:                                              ; preds = %3097, %453
  %457 = load i64, ptr %49, align 8, !tbaa !9
  %458 = load ptr, ptr %18, align 8, !tbaa !5
  %459 = load i64, ptr %458, align 8, !tbaa !9
  %460 = icmp slt i64 %457, %459
  br i1 %460, label %461, label %462

461:                                              ; preds = %456
  br label %3124

462:                                              ; preds = %456
  %463 = load ptr, ptr %18, align 8, !tbaa !5
  %464 = load i64, ptr %463, align 8, !tbaa !9
  store i64 %464, ptr %52, align 8, !tbaa !9
  store i64 0, ptr %80, align 8, !tbaa !9
  br label %465

465:                                              ; preds = %3091, %462
  %466 = load i64, ptr %80, align 8, !tbaa !9
  %467 = icmp sle i64 %466, 30
  br i1 %467, label %468, label %3094

468:                                              ; preds = %465
  %469 = load i64, ptr %52, align 8, !tbaa !9
  %470 = add nsw i64 %469, 1
  store i64 %470, ptr %32, align 8, !tbaa !9
  %471 = load i64, ptr %49, align 8, !tbaa !9
  store i64 %471, ptr %51, align 8, !tbaa !9
  br label %472

472:                                              ; preds = %1171, %468
  %473 = load i64, ptr %51, align 8, !tbaa !9
  %474 = load i64, ptr %32, align 8, !tbaa !9
  %475 = icmp sge i64 %473, %474
  br i1 %475, label %476, label %1174

476:                                              ; preds = %472
  %477 = load i64, ptr %51, align 8, !tbaa !9
  %478 = load i64, ptr %51, align 8, !tbaa !9
  %479 = sub nsw i64 %478, 1
  %480 = load i64, ptr %28, align 8, !tbaa !9
  %481 = mul nsw i64 %479, %480
  %482 = add nsw i64 %477, %481
  store i64 %482, ptr %33, align 8, !tbaa !9
  %483 = load ptr, ptr %20, align 8, !tbaa !5
  %484 = load i64, ptr %33, align 8, !tbaa !9
  %485 = getelementptr inbounds %struct.complex, ptr %483, i64 %484
  %486 = getelementptr inbounds %struct.complex, ptr %485, i32 0, i32 0
  %487 = load float, ptr %486, align 4, !tbaa !11
  store float %487, ptr %36, align 4, !tbaa !17
  %488 = load float, ptr %36, align 4, !tbaa !17
  %489 = fcmp oge float %488, 0.000000e+00
  br i1 %489, label %490, label %492

490:                                              ; preds = %476
  %491 = load float, ptr %36, align 4, !tbaa !17
  br label %495

492:                                              ; preds = %476
  %493 = load float, ptr %36, align 4, !tbaa !17
  %494 = fneg float %493
  br label %495

495:                                              ; preds = %492, %490
  %496 = phi float [ %491, %490 ], [ %494, %492 ]
  %497 = fpext float %496 to double
  %498 = load ptr, ptr %20, align 8, !tbaa !5
  %499 = load i64, ptr %51, align 8, !tbaa !9
  %500 = load i64, ptr %51, align 8, !tbaa !9
  %501 = sub nsw i64 %500, 1
  %502 = load i64, ptr %28, align 8, !tbaa !9
  %503 = mul nsw i64 %501, %502
  %504 = add nsw i64 %499, %503
  %505 = getelementptr inbounds %struct.complex, ptr %498, i64 %504
  %506 = call double @r_imag(ptr noundef %505)
  %507 = fptrunc double %506 to float
  store float %507, ptr %37, align 4, !tbaa !17
  %508 = load float, ptr %37, align 4, !tbaa !17
  %509 = fcmp oge float %508, 0.000000e+00
  br i1 %509, label %510, label %512

510:                                              ; preds = %495
  %511 = load float, ptr %37, align 4, !tbaa !17
  br label %515

512:                                              ; preds = %495
  %513 = load float, ptr %37, align 4, !tbaa !17
  %514 = fneg float %513
  br label %515

515:                                              ; preds = %512, %510
  %516 = phi float [ %511, %510 ], [ %514, %512 ]
  %517 = fpext float %516 to double
  %518 = fadd double %497, %517
  %519 = load float, ptr %88, align 4, !tbaa !17
  %520 = fpext float %519 to double
  %521 = fcmp ole double %518, %520
  br i1 %521, label %522, label %523

522:                                              ; preds = %515
  br label %1175

523:                                              ; preds = %515
  %524 = load i64, ptr %51, align 8, !tbaa !9
  %525 = sub nsw i64 %524, 1
  %526 = load i64, ptr %51, align 8, !tbaa !9
  %527 = sub nsw i64 %526, 1
  %528 = load i64, ptr %28, align 8, !tbaa !9
  %529 = mul nsw i64 %527, %528
  %530 = add nsw i64 %525, %529
  store i64 %530, ptr %33, align 8, !tbaa !9
  %531 = load i64, ptr %51, align 8, !tbaa !9
  %532 = load i64, ptr %51, align 8, !tbaa !9
  %533 = load i64, ptr %28, align 8, !tbaa !9
  %534 = mul nsw i64 %532, %533
  %535 = add nsw i64 %531, %534
  store i64 %535, ptr %34, align 8, !tbaa !9
  %536 = load ptr, ptr %20, align 8, !tbaa !5
  %537 = load i64, ptr %33, align 8, !tbaa !9
  %538 = getelementptr inbounds %struct.complex, ptr %536, i64 %537
  %539 = getelementptr inbounds %struct.complex, ptr %538, i32 0, i32 0
  %540 = load float, ptr %539, align 4, !tbaa !11
  store float %540, ptr %36, align 4, !tbaa !17
  %541 = load float, ptr %36, align 4, !tbaa !17
  %542 = fcmp oge float %541, 0.000000e+00
  br i1 %542, label %543, label %545

543:                                              ; preds = %523
  %544 = load float, ptr %36, align 4, !tbaa !17
  br label %548

545:                                              ; preds = %523
  %546 = load float, ptr %36, align 4, !tbaa !17
  %547 = fneg float %546
  br label %548

548:                                              ; preds = %545, %543
  %549 = phi float [ %544, %543 ], [ %547, %545 ]
  %550 = fpext float %549 to double
  %551 = load ptr, ptr %20, align 8, !tbaa !5
  %552 = load i64, ptr %51, align 8, !tbaa !9
  %553 = sub nsw i64 %552, 1
  %554 = load i64, ptr %51, align 8, !tbaa !9
  %555 = sub nsw i64 %554, 1
  %556 = load i64, ptr %28, align 8, !tbaa !9
  %557 = mul nsw i64 %555, %556
  %558 = add nsw i64 %553, %557
  %559 = getelementptr inbounds %struct.complex, ptr %551, i64 %558
  %560 = call double @r_imag(ptr noundef %559)
  %561 = fptrunc double %560 to float
  store float %561, ptr %37, align 4, !tbaa !17
  %562 = load float, ptr %37, align 4, !tbaa !17
  %563 = fcmp oge float %562, 0.000000e+00
  br i1 %563, label %564, label %566

564:                                              ; preds = %548
  %565 = load float, ptr %37, align 4, !tbaa !17
  br label %569

566:                                              ; preds = %548
  %567 = load float, ptr %37, align 4, !tbaa !17
  %568 = fneg float %567
  br label %569

569:                                              ; preds = %566, %564
  %570 = phi float [ %565, %564 ], [ %568, %566 ]
  %571 = fpext float %570 to double
  %572 = fadd double %550, %571
  %573 = load ptr, ptr %20, align 8, !tbaa !5
  %574 = load i64, ptr %34, align 8, !tbaa !9
  %575 = getelementptr inbounds %struct.complex, ptr %573, i64 %574
  %576 = getelementptr inbounds %struct.complex, ptr %575, i32 0, i32 0
  %577 = load float, ptr %576, align 4, !tbaa !11
  store float %577, ptr %38, align 4, !tbaa !17
  %578 = load float, ptr %38, align 4, !tbaa !17
  %579 = fcmp oge float %578, 0.000000e+00
  br i1 %579, label %580, label %582

580:                                              ; preds = %569
  %581 = load float, ptr %38, align 4, !tbaa !17
  br label %585

582:                                              ; preds = %569
  %583 = load float, ptr %38, align 4, !tbaa !17
  %584 = fneg float %583
  br label %585

585:                                              ; preds = %582, %580
  %586 = phi float [ %581, %580 ], [ %584, %582 ]
  %587 = fpext float %586 to double
  %588 = load ptr, ptr %20, align 8, !tbaa !5
  %589 = load i64, ptr %51, align 8, !tbaa !9
  %590 = load i64, ptr %51, align 8, !tbaa !9
  %591 = load i64, ptr %28, align 8, !tbaa !9
  %592 = mul nsw i64 %590, %591
  %593 = add nsw i64 %589, %592
  %594 = getelementptr inbounds %struct.complex, ptr %588, i64 %593
  %595 = call double @r_imag(ptr noundef %594)
  %596 = fptrunc double %595 to float
  store float %596, ptr %39, align 4, !tbaa !17
  %597 = load float, ptr %39, align 4, !tbaa !17
  %598 = fcmp oge float %597, 0.000000e+00
  br i1 %598, label %599, label %601

599:                                              ; preds = %585
  %600 = load float, ptr %39, align 4, !tbaa !17
  br label %604

601:                                              ; preds = %585
  %602 = load float, ptr %39, align 4, !tbaa !17
  %603 = fneg float %602
  br label %604

604:                                              ; preds = %601, %599
  %605 = phi float [ %600, %599 ], [ %603, %601 ]
  %606 = fpext float %605 to double
  %607 = fadd double %587, %606
  %608 = fadd double %572, %607
  %609 = fptrunc double %608 to float
  store float %609, ptr %83, align 4, !tbaa !17
  %610 = load float, ptr %83, align 4, !tbaa !17
  %611 = fcmp oeq float %610, 0.000000e+00
  br i1 %611, label %612, label %678

612:                                              ; preds = %604
  %613 = load i64, ptr %51, align 8, !tbaa !9
  %614 = sub nsw i64 %613, 2
  %615 = load ptr, ptr %18, align 8, !tbaa !5
  %616 = load i64, ptr %615, align 8, !tbaa !9
  %617 = icmp sge i64 %614, %616
  br i1 %617, label %618, label %645

618:                                              ; preds = %612
  %619 = load i64, ptr %51, align 8, !tbaa !9
  %620 = sub nsw i64 %619, 1
  %621 = load i64, ptr %51, align 8, !tbaa !9
  %622 = sub nsw i64 %621, 2
  %623 = load i64, ptr %28, align 8, !tbaa !9
  %624 = mul nsw i64 %622, %623
  %625 = add nsw i64 %620, %624
  store i64 %625, ptr %33, align 8, !tbaa !9
  %626 = load ptr, ptr %20, align 8, !tbaa !5
  %627 = load i64, ptr %33, align 8, !tbaa !9
  %628 = getelementptr inbounds %struct.complex, ptr %626, i64 %627
  %629 = getelementptr inbounds %struct.complex, ptr %628, i32 0, i32 0
  %630 = load float, ptr %629, align 4, !tbaa !11
  store float %630, ptr %36, align 4, !tbaa !17
  %631 = load float, ptr %36, align 4, !tbaa !17
  %632 = fcmp oge float %631, 0.000000e+00
  br i1 %632, label %633, label %635

633:                                              ; preds = %618
  %634 = load float, ptr %36, align 4, !tbaa !17
  br label %638

635:                                              ; preds = %618
  %636 = load float, ptr %36, align 4, !tbaa !17
  %637 = fneg float %636
  br label %638

638:                                              ; preds = %635, %633
  %639 = phi float [ %634, %633 ], [ %637, %635 ]
  %640 = fpext float %639 to double
  %641 = load float, ptr %83, align 4, !tbaa !17
  %642 = fpext float %641 to double
  %643 = fadd double %642, %640
  %644 = fptrunc double %643 to float
  store float %644, ptr %83, align 4, !tbaa !17
  br label %645

645:                                              ; preds = %638, %612
  %646 = load i64, ptr %51, align 8, !tbaa !9
  %647 = add nsw i64 %646, 1
  %648 = load ptr, ptr %19, align 8, !tbaa !5
  %649 = load i64, ptr %648, align 8, !tbaa !9
  %650 = icmp sle i64 %647, %649
  br i1 %650, label %651, label %677

651:                                              ; preds = %645
  %652 = load i64, ptr %51, align 8, !tbaa !9
  %653 = add nsw i64 %652, 1
  %654 = load i64, ptr %51, align 8, !tbaa !9
  %655 = load i64, ptr %28, align 8, !tbaa !9
  %656 = mul nsw i64 %654, %655
  %657 = add nsw i64 %653, %656
  store i64 %657, ptr %33, align 8, !tbaa !9
  %658 = load ptr, ptr %20, align 8, !tbaa !5
  %659 = load i64, ptr %33, align 8, !tbaa !9
  %660 = getelementptr inbounds %struct.complex, ptr %658, i64 %659
  %661 = getelementptr inbounds %struct.complex, ptr %660, i32 0, i32 0
  %662 = load float, ptr %661, align 4, !tbaa !11
  store float %662, ptr %36, align 4, !tbaa !17
  %663 = load float, ptr %36, align 4, !tbaa !17
  %664 = fcmp oge float %663, 0.000000e+00
  br i1 %664, label %665, label %667

665:                                              ; preds = %651
  %666 = load float, ptr %36, align 4, !tbaa !17
  br label %670

667:                                              ; preds = %651
  %668 = load float, ptr %36, align 4, !tbaa !17
  %669 = fneg float %668
  br label %670

670:                                              ; preds = %667, %665
  %671 = phi float [ %666, %665 ], [ %669, %667 ]
  %672 = fpext float %671 to double
  %673 = load float, ptr %83, align 4, !tbaa !17
  %674 = fpext float %673 to double
  %675 = fadd double %674, %672
  %676 = fptrunc double %675 to float
  store float %676, ptr %83, align 4, !tbaa !17
  br label %677

677:                                              ; preds = %670, %645
  br label %678

678:                                              ; preds = %677, %604
  %679 = load i64, ptr %51, align 8, !tbaa !9
  %680 = load i64, ptr %51, align 8, !tbaa !9
  %681 = sub nsw i64 %680, 1
  %682 = load i64, ptr %28, align 8, !tbaa !9
  %683 = mul nsw i64 %681, %682
  %684 = add nsw i64 %679, %683
  store i64 %684, ptr %33, align 8, !tbaa !9
  %685 = load ptr, ptr %20, align 8, !tbaa !5
  %686 = load i64, ptr %33, align 8, !tbaa !9
  %687 = getelementptr inbounds %struct.complex, ptr %685, i64 %686
  %688 = getelementptr inbounds %struct.complex, ptr %687, i32 0, i32 0
  %689 = load float, ptr %688, align 4, !tbaa !11
  store float %689, ptr %36, align 4, !tbaa !17
  %690 = load float, ptr %36, align 4, !tbaa !17
  %691 = fcmp oge float %690, 0.000000e+00
  br i1 %691, label %692, label %694

692:                                              ; preds = %678
  %693 = load float, ptr %36, align 4, !tbaa !17
  br label %697

694:                                              ; preds = %678
  %695 = load float, ptr %36, align 4, !tbaa !17
  %696 = fneg float %695
  br label %697

697:                                              ; preds = %694, %692
  %698 = phi float [ %693, %692 ], [ %696, %694 ]
  %699 = fpext float %698 to double
  %700 = load float, ptr %81, align 4, !tbaa !17
  %701 = load float, ptr %83, align 4, !tbaa !17
  %702 = fmul float %700, %701
  %703 = fpext float %702 to double
  %704 = fcmp ole double %699, %703
  br i1 %704, label %705, label %1170

705:                                              ; preds = %697
  %706 = load i64, ptr %51, align 8, !tbaa !9
  %707 = load i64, ptr %51, align 8, !tbaa !9
  %708 = sub nsw i64 %707, 1
  %709 = load i64, ptr %28, align 8, !tbaa !9
  %710 = mul nsw i64 %708, %709
  %711 = add nsw i64 %706, %710
  store i64 %711, ptr %33, align 8, !tbaa !9
  %712 = load i64, ptr %51, align 8, !tbaa !9
  %713 = sub nsw i64 %712, 1
  %714 = load i64, ptr %51, align 8, !tbaa !9
  %715 = load i64, ptr %28, align 8, !tbaa !9
  %716 = mul nsw i64 %714, %715
  %717 = add nsw i64 %713, %716
  store i64 %717, ptr %34, align 8, !tbaa !9
  %718 = load ptr, ptr %20, align 8, !tbaa !5
  %719 = load i64, ptr %33, align 8, !tbaa !9
  %720 = getelementptr inbounds %struct.complex, ptr %718, i64 %719
  %721 = getelementptr inbounds %struct.complex, ptr %720, i32 0, i32 0
  %722 = load float, ptr %721, align 4, !tbaa !11
  store float %722, ptr %36, align 4, !tbaa !17
  %723 = load float, ptr %36, align 4, !tbaa !17
  %724 = fcmp oge float %723, 0.000000e+00
  br i1 %724, label %725, label %727

725:                                              ; preds = %705
  %726 = load float, ptr %36, align 4, !tbaa !17
  br label %730

727:                                              ; preds = %705
  %728 = load float, ptr %36, align 4, !tbaa !17
  %729 = fneg float %728
  br label %730

730:                                              ; preds = %727, %725
  %731 = phi float [ %726, %725 ], [ %729, %727 ]
  %732 = fpext float %731 to double
  %733 = load ptr, ptr %20, align 8, !tbaa !5
  %734 = load i64, ptr %51, align 8, !tbaa !9
  %735 = load i64, ptr %51, align 8, !tbaa !9
  %736 = sub nsw i64 %735, 1
  %737 = load i64, ptr %28, align 8, !tbaa !9
  %738 = mul nsw i64 %736, %737
  %739 = add nsw i64 %734, %738
  %740 = getelementptr inbounds %struct.complex, ptr %733, i64 %739
  %741 = call double @r_imag(ptr noundef %740)
  %742 = fptrunc double %741 to float
  store float %742, ptr %37, align 4, !tbaa !17
  %743 = load float, ptr %37, align 4, !tbaa !17
  %744 = fcmp oge float %743, 0.000000e+00
  br i1 %744, label %745, label %747

745:                                              ; preds = %730
  %746 = load float, ptr %37, align 4, !tbaa !17
  br label %750

747:                                              ; preds = %730
  %748 = load float, ptr %37, align 4, !tbaa !17
  %749 = fneg float %748
  br label %750

750:                                              ; preds = %747, %745
  %751 = phi float [ %746, %745 ], [ %749, %747 ]
  %752 = fpext float %751 to double
  %753 = fadd double %732, %752
  %754 = fptrunc double %753 to float
  store float %754, ptr %40, align 4, !tbaa !17
  %755 = load ptr, ptr %20, align 8, !tbaa !5
  %756 = load i64, ptr %34, align 8, !tbaa !9
  %757 = getelementptr inbounds %struct.complex, ptr %755, i64 %756
  %758 = getelementptr inbounds %struct.complex, ptr %757, i32 0, i32 0
  %759 = load float, ptr %758, align 4, !tbaa !11
  store float %759, ptr %38, align 4, !tbaa !17
  %760 = load float, ptr %38, align 4, !tbaa !17
  %761 = fcmp oge float %760, 0.000000e+00
  br i1 %761, label %762, label %764

762:                                              ; preds = %750
  %763 = load float, ptr %38, align 4, !tbaa !17
  br label %767

764:                                              ; preds = %750
  %765 = load float, ptr %38, align 4, !tbaa !17
  %766 = fneg float %765
  br label %767

767:                                              ; preds = %764, %762
  %768 = phi float [ %763, %762 ], [ %766, %764 ]
  %769 = fpext float %768 to double
  %770 = load ptr, ptr %20, align 8, !tbaa !5
  %771 = load i64, ptr %51, align 8, !tbaa !9
  %772 = sub nsw i64 %771, 1
  %773 = load i64, ptr %51, align 8, !tbaa !9
  %774 = load i64, ptr %28, align 8, !tbaa !9
  %775 = mul nsw i64 %773, %774
  %776 = add nsw i64 %772, %775
  %777 = getelementptr inbounds %struct.complex, ptr %770, i64 %776
  %778 = call double @r_imag(ptr noundef %777)
  %779 = fptrunc double %778 to float
  store float %779, ptr %39, align 4, !tbaa !17
  %780 = load float, ptr %39, align 4, !tbaa !17
  %781 = fcmp oge float %780, 0.000000e+00
  br i1 %781, label %782, label %784

782:                                              ; preds = %767
  %783 = load float, ptr %39, align 4, !tbaa !17
  br label %787

784:                                              ; preds = %767
  %785 = load float, ptr %39, align 4, !tbaa !17
  %786 = fneg float %785
  br label %787

787:                                              ; preds = %784, %782
  %788 = phi float [ %783, %782 ], [ %786, %784 ]
  %789 = fpext float %788 to double
  %790 = fadd double %769, %789
  %791 = fptrunc double %790 to float
  store float %791, ptr %41, align 4, !tbaa !17
  %792 = load float, ptr %40, align 4, !tbaa !17
  %793 = load float, ptr %41, align 4, !tbaa !17
  %794 = fcmp oge float %792, %793
  br i1 %794, label %795, label %797

795:                                              ; preds = %787
  %796 = load float, ptr %40, align 4, !tbaa !17
  br label %799

797:                                              ; preds = %787
  %798 = load float, ptr %41, align 4, !tbaa !17
  br label %799

799:                                              ; preds = %797, %795
  %800 = phi float [ %796, %795 ], [ %798, %797 ]
  %801 = fpext float %800 to double
  %802 = fptrunc double %801 to float
  store float %802, ptr %66, align 4, !tbaa !17
  %803 = load i64, ptr %51, align 8, !tbaa !9
  %804 = load i64, ptr %51, align 8, !tbaa !9
  %805 = sub nsw i64 %804, 1
  %806 = load i64, ptr %28, align 8, !tbaa !9
  %807 = mul nsw i64 %805, %806
  %808 = add nsw i64 %803, %807
  store i64 %808, ptr %33, align 8, !tbaa !9
  %809 = load i64, ptr %51, align 8, !tbaa !9
  %810 = sub nsw i64 %809, 1
  %811 = load i64, ptr %51, align 8, !tbaa !9
  %812 = load i64, ptr %28, align 8, !tbaa !9
  %813 = mul nsw i64 %811, %812
  %814 = add nsw i64 %810, %813
  store i64 %814, ptr %34, align 8, !tbaa !9
  %815 = load ptr, ptr %20, align 8, !tbaa !5
  %816 = load i64, ptr %33, align 8, !tbaa !9
  %817 = getelementptr inbounds %struct.complex, ptr %815, i64 %816
  %818 = getelementptr inbounds %struct.complex, ptr %817, i32 0, i32 0
  %819 = load float, ptr %818, align 4, !tbaa !11
  store float %819, ptr %36, align 4, !tbaa !17
  %820 = load float, ptr %36, align 4, !tbaa !17
  %821 = fcmp oge float %820, 0.000000e+00
  br i1 %821, label %822, label %824

822:                                              ; preds = %799
  %823 = load float, ptr %36, align 4, !tbaa !17
  br label %827

824:                                              ; preds = %799
  %825 = load float, ptr %36, align 4, !tbaa !17
  %826 = fneg float %825
  br label %827

827:                                              ; preds = %824, %822
  %828 = phi float [ %823, %822 ], [ %826, %824 ]
  %829 = fpext float %828 to double
  %830 = load ptr, ptr %20, align 8, !tbaa !5
  %831 = load i64, ptr %51, align 8, !tbaa !9
  %832 = load i64, ptr %51, align 8, !tbaa !9
  %833 = sub nsw i64 %832, 1
  %834 = load i64, ptr %28, align 8, !tbaa !9
  %835 = mul nsw i64 %833, %834
  %836 = add nsw i64 %831, %835
  %837 = getelementptr inbounds %struct.complex, ptr %830, i64 %836
  %838 = call double @r_imag(ptr noundef %837)
  %839 = fptrunc double %838 to float
  store float %839, ptr %37, align 4, !tbaa !17
  %840 = load float, ptr %37, align 4, !tbaa !17
  %841 = fcmp oge float %840, 0.000000e+00
  br i1 %841, label %842, label %844

842:                                              ; preds = %827
  %843 = load float, ptr %37, align 4, !tbaa !17
  br label %847

844:                                              ; preds = %827
  %845 = load float, ptr %37, align 4, !tbaa !17
  %846 = fneg float %845
  br label %847

847:                                              ; preds = %844, %842
  %848 = phi float [ %843, %842 ], [ %846, %844 ]
  %849 = fpext float %848 to double
  %850 = fadd double %829, %849
  %851 = fptrunc double %850 to float
  store float %851, ptr %40, align 4, !tbaa !17
  %852 = load ptr, ptr %20, align 8, !tbaa !5
  %853 = load i64, ptr %34, align 8, !tbaa !9
  %854 = getelementptr inbounds %struct.complex, ptr %852, i64 %853
  %855 = getelementptr inbounds %struct.complex, ptr %854, i32 0, i32 0
  %856 = load float, ptr %855, align 4, !tbaa !11
  store float %856, ptr %38, align 4, !tbaa !17
  %857 = load float, ptr %38, align 4, !tbaa !17
  %858 = fcmp oge float %857, 0.000000e+00
  br i1 %858, label %859, label %861

859:                                              ; preds = %847
  %860 = load float, ptr %38, align 4, !tbaa !17
  br label %864

861:                                              ; preds = %847
  %862 = load float, ptr %38, align 4, !tbaa !17
  %863 = fneg float %862
  br label %864

864:                                              ; preds = %861, %859
  %865 = phi float [ %860, %859 ], [ %863, %861 ]
  %866 = fpext float %865 to double
  %867 = load ptr, ptr %20, align 8, !tbaa !5
  %868 = load i64, ptr %51, align 8, !tbaa !9
  %869 = sub nsw i64 %868, 1
  %870 = load i64, ptr %51, align 8, !tbaa !9
  %871 = load i64, ptr %28, align 8, !tbaa !9
  %872 = mul nsw i64 %870, %871
  %873 = add nsw i64 %869, %872
  %874 = getelementptr inbounds %struct.complex, ptr %867, i64 %873
  %875 = call double @r_imag(ptr noundef %874)
  %876 = fptrunc double %875 to float
  store float %876, ptr %39, align 4, !tbaa !17
  %877 = load float, ptr %39, align 4, !tbaa !17
  %878 = fcmp oge float %877, 0.000000e+00
  br i1 %878, label %879, label %881

879:                                              ; preds = %864
  %880 = load float, ptr %39, align 4, !tbaa !17
  br label %884

881:                                              ; preds = %864
  %882 = load float, ptr %39, align 4, !tbaa !17
  %883 = fneg float %882
  br label %884

884:                                              ; preds = %881, %879
  %885 = phi float [ %880, %879 ], [ %883, %881 ]
  %886 = fpext float %885 to double
  %887 = fadd double %866, %886
  %888 = fptrunc double %887 to float
  store float %888, ptr %41, align 4, !tbaa !17
  %889 = load float, ptr %40, align 4, !tbaa !17
  %890 = load float, ptr %41, align 4, !tbaa !17
  %891 = fcmp ole float %889, %890
  br i1 %891, label %892, label %894

892:                                              ; preds = %884
  %893 = load float, ptr %40, align 4, !tbaa !17
  br label %896

894:                                              ; preds = %884
  %895 = load float, ptr %41, align 4, !tbaa !17
  br label %896

896:                                              ; preds = %894, %892
  %897 = phi float [ %893, %892 ], [ %895, %894 ]
  %898 = fpext float %897 to double
  %899 = fptrunc double %898 to float
  store float %899, ptr %67, align 4, !tbaa !17
  %900 = load i64, ptr %51, align 8, !tbaa !9
  %901 = sub nsw i64 %900, 1
  %902 = load i64, ptr %51, align 8, !tbaa !9
  %903 = sub nsw i64 %902, 1
  %904 = load i64, ptr %28, align 8, !tbaa !9
  %905 = mul nsw i64 %903, %904
  %906 = add nsw i64 %901, %905
  store i64 %906, ptr %33, align 8, !tbaa !9
  %907 = load i64, ptr %51, align 8, !tbaa !9
  %908 = load i64, ptr %51, align 8, !tbaa !9
  %909 = load i64, ptr %28, align 8, !tbaa !9
  %910 = mul nsw i64 %908, %909
  %911 = add nsw i64 %907, %910
  store i64 %911, ptr %34, align 8, !tbaa !9
  %912 = load ptr, ptr %20, align 8, !tbaa !5
  %913 = load i64, ptr %33, 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 !11
  %917 = load ptr, ptr %20, align 8, !tbaa !5
  %918 = load i64, ptr %34, align 8, !tbaa !9
  %919 = getelementptr inbounds %struct.complex, ptr %917, i64 %918
  %920 = getelementptr inbounds %struct.complex, ptr %919, i32 0, i32 0
  %921 = load float, ptr %920, align 4, !tbaa !11
  %922 = fsub float %916, %921
  %923 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  store float %922, ptr %923, align 4, !tbaa !11
  %924 = load ptr, ptr %20, align 8, !tbaa !5
  %925 = load i64, ptr %33, align 8, !tbaa !9
  %926 = getelementptr inbounds %struct.complex, ptr %924, i64 %925
  %927 = getelementptr inbounds %struct.complex, ptr %926, i32 0, i32 1
  %928 = load float, ptr %927, align 4, !tbaa !14
  %929 = load ptr, ptr %20, align 8, !tbaa !5
  %930 = load i64, ptr %34, align 8, !tbaa !9
  %931 = getelementptr inbounds %struct.complex, ptr %929, i64 %930
  %932 = getelementptr inbounds %struct.complex, ptr %931, i32 0, i32 1
  %933 = load float, ptr %932, align 4, !tbaa !14
  %934 = fsub float %928, %933
  %935 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  store float %934, ptr %935, align 4, !tbaa !14
  %936 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %937 = load float, ptr %936, align 4, !tbaa !11
  %938 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %937, ptr %938, align 4, !tbaa !11
  %939 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %940 = load float, ptr %939, align 4, !tbaa !14
  %941 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %940, ptr %941, align 4, !tbaa !14
  %942 = load i64, ptr %51, align 8, !tbaa !9
  %943 = load i64, ptr %51, align 8, !tbaa !9
  %944 = load i64, ptr %28, align 8, !tbaa !9
  %945 = mul nsw i64 %943, %944
  %946 = add nsw i64 %942, %945
  store i64 %946, ptr %35, align 8, !tbaa !9
  %947 = load ptr, ptr %20, align 8, !tbaa !5
  %948 = load i64, ptr %35, align 8, !tbaa !9
  %949 = getelementptr inbounds %struct.complex, ptr %947, i64 %948
  %950 = getelementptr inbounds %struct.complex, ptr %949, i32 0, i32 0
  %951 = load float, ptr %950, align 4, !tbaa !11
  store float %951, ptr %36, align 4, !tbaa !17
  %952 = load float, ptr %36, align 4, !tbaa !17
  %953 = fcmp oge float %952, 0.000000e+00
  br i1 %953, label %954, label %956

954:                                              ; preds = %896
  %955 = load float, ptr %36, align 4, !tbaa !17
  br label %959

956:                                              ; preds = %896
  %957 = load float, ptr %36, align 4, !tbaa !17
  %958 = fneg float %957
  br label %959

959:                                              ; preds = %956, %954
  %960 = phi float [ %955, %954 ], [ %958, %956 ]
  %961 = fpext float %960 to double
  %962 = load ptr, ptr %20, align 8, !tbaa !5
  %963 = load i64, ptr %51, align 8, !tbaa !9
  %964 = load i64, ptr %51, align 8, !tbaa !9
  %965 = load i64, ptr %28, align 8, !tbaa !9
  %966 = mul nsw i64 %964, %965
  %967 = add nsw i64 %963, %966
  %968 = getelementptr inbounds %struct.complex, ptr %962, i64 %967
  %969 = call double @r_imag(ptr noundef %968)
  %970 = fptrunc double %969 to float
  store float %970, ptr %37, align 4, !tbaa !17
  %971 = load float, ptr %37, align 4, !tbaa !17
  %972 = fcmp oge float %971, 0.000000e+00
  br i1 %972, label %973, label %975

973:                                              ; preds = %959
  %974 = load float, ptr %37, align 4, !tbaa !17
  br label %978

975:                                              ; preds = %959
  %976 = load float, ptr %37, align 4, !tbaa !17
  %977 = fneg float %976
  br label %978

978:                                              ; preds = %975, %973
  %979 = phi float [ %974, %973 ], [ %977, %975 ]
  %980 = fpext float %979 to double
  %981 = fadd double %961, %980
  %982 = fptrunc double %981 to float
  store float %982, ptr %40, align 4, !tbaa !17
  %983 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %984 = load float, ptr %983, align 4, !tbaa !11
  store float %984, ptr %38, align 4, !tbaa !17
  %985 = load float, ptr %38, align 4, !tbaa !17
  %986 = fcmp oge float %985, 0.000000e+00
  br i1 %986, label %987, label %989

987:                                              ; preds = %978
  %988 = load float, ptr %38, align 4, !tbaa !17
  br label %992

989:                                              ; preds = %978
  %990 = load float, ptr %38, align 4, !tbaa !17
  %991 = fneg float %990
  br label %992

992:                                              ; preds = %989, %987
  %993 = phi float [ %988, %987 ], [ %991, %989 ]
  %994 = fpext float %993 to double
  %995 = call double @r_imag(ptr noundef %42)
  %996 = fptrunc double %995 to float
  store float %996, ptr %39, align 4, !tbaa !17
  %997 = load float, ptr %39, align 4, !tbaa !17
  %998 = fcmp oge float %997, 0.000000e+00
  br i1 %998, label %999, label %1001

999:                                              ; preds = %992
  %1000 = load float, ptr %39, align 4, !tbaa !17
  br label %1004

1001:                                             ; preds = %992
  %1002 = load float, ptr %39, align 4, !tbaa !17
  %1003 = fneg float %1002
  br label %1004

1004:                                             ; preds = %1001, %999
  %1005 = phi float [ %1000, %999 ], [ %1003, %1001 ]
  %1006 = fpext float %1005 to double
  %1007 = fadd double %994, %1006
  %1008 = fptrunc double %1007 to float
  store float %1008, ptr %41, align 4, !tbaa !17
  %1009 = load float, ptr %40, align 4, !tbaa !17
  %1010 = load float, ptr %41, align 4, !tbaa !17
  %1011 = fcmp oge float %1009, %1010
  br i1 %1011, label %1012, label %1014

1012:                                             ; preds = %1004
  %1013 = load float, ptr %40, align 4, !tbaa !17
  br label %1016

1014:                                             ; preds = %1004
  %1015 = load float, ptr %41, align 4, !tbaa !17
  br label %1016

1016:                                             ; preds = %1014, %1012
  %1017 = phi float [ %1013, %1012 ], [ %1015, %1014 ]
  %1018 = fpext float %1017 to double
  %1019 = fptrunc double %1018 to float
  store float %1019, ptr %65, align 4, !tbaa !17
  %1020 = load i64, ptr %51, align 8, !tbaa !9
  %1021 = sub nsw i64 %1020, 1
  %1022 = load i64, ptr %51, align 8, !tbaa !9
  %1023 = sub nsw i64 %1022, 1
  %1024 = load i64, ptr %28, align 8, !tbaa !9
  %1025 = mul nsw i64 %1023, %1024
  %1026 = add nsw i64 %1021, %1025
  store i64 %1026, ptr %33, align 8, !tbaa !9
  %1027 = load i64, ptr %51, align 8, !tbaa !9
  %1028 = load i64, ptr %51, align 8, !tbaa !9
  %1029 = load i64, ptr %28, align 8, !tbaa !9
  %1030 = mul nsw i64 %1028, %1029
  %1031 = add nsw i64 %1027, %1030
  store i64 %1031, ptr %34, align 8, !tbaa !9
  %1032 = load ptr, ptr %20, align 8, !tbaa !5
  %1033 = load i64, ptr %33, align 8, !tbaa !9
  %1034 = getelementptr inbounds %struct.complex, ptr %1032, i64 %1033
  %1035 = getelementptr inbounds %struct.complex, ptr %1034, i32 0, i32 0
  %1036 = load float, ptr %1035, align 4, !tbaa !11
  %1037 = load ptr, ptr %20, align 8, !tbaa !5
  %1038 = load i64, ptr %34, align 8, !tbaa !9
  %1039 = getelementptr inbounds %struct.complex, ptr %1037, i64 %1038
  %1040 = getelementptr inbounds %struct.complex, ptr %1039, i32 0, i32 0
  %1041 = load float, ptr %1040, align 4, !tbaa !11
  %1042 = fsub float %1036, %1041
  %1043 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  store float %1042, ptr %1043, align 4, !tbaa !11
  %1044 = load ptr, ptr %20, align 8, !tbaa !5
  %1045 = load i64, ptr %33, align 8, !tbaa !9
  %1046 = getelementptr inbounds %struct.complex, ptr %1044, i64 %1045
  %1047 = getelementptr inbounds %struct.complex, ptr %1046, i32 0, i32 1
  %1048 = load float, ptr %1047, align 4, !tbaa !14
  %1049 = load ptr, ptr %20, align 8, !tbaa !5
  %1050 = load i64, ptr %34, align 8, !tbaa !9
  %1051 = getelementptr inbounds %struct.complex, ptr %1049, i64 %1050
  %1052 = getelementptr inbounds %struct.complex, ptr %1051, i32 0, i32 1
  %1053 = load float, ptr %1052, align 4, !tbaa !14
  %1054 = fsub float %1048, %1053
  %1055 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  store float %1054, ptr %1055, align 4, !tbaa !14
  %1056 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %1057 = load float, ptr %1056, align 4, !tbaa !11
  %1058 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %1057, ptr %1058, align 4, !tbaa !11
  %1059 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %1060 = load float, ptr %1059, align 4, !tbaa !14
  %1061 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %1060, ptr %1061, align 4, !tbaa !14
  %1062 = load i64, ptr %51, align 8, !tbaa !9
  %1063 = load i64, ptr %51, align 8, !tbaa !9
  %1064 = load i64, ptr %28, align 8, !tbaa !9
  %1065 = mul nsw i64 %1063, %1064
  %1066 = add nsw i64 %1062, %1065
  store i64 %1066, ptr %35, align 8, !tbaa !9
  %1067 = load ptr, ptr %20, align 8, !tbaa !5
  %1068 = load i64, ptr %35, align 8, !tbaa !9
  %1069 = getelementptr inbounds %struct.complex, ptr %1067, i64 %1068
  %1070 = getelementptr inbounds %struct.complex, ptr %1069, i32 0, i32 0
  %1071 = load float, ptr %1070, align 4, !tbaa !11
  store float %1071, ptr %36, align 4, !tbaa !17
  %1072 = load float, ptr %36, align 4, !tbaa !17
  %1073 = fcmp oge float %1072, 0.000000e+00
  br i1 %1073, label %1074, label %1076

1074:                                             ; preds = %1016
  %1075 = load float, ptr %36, align 4, !tbaa !17
  br label %1079

1076:                                             ; preds = %1016
  %1077 = load float, ptr %36, align 4, !tbaa !17
  %1078 = fneg float %1077
  br label %1079

1079:                                             ; preds = %1076, %1074
  %1080 = phi float [ %1075, %1074 ], [ %1078, %1076 ]
  %1081 = fpext float %1080 to double
  %1082 = load ptr, ptr %20, align 8, !tbaa !5
  %1083 = load i64, ptr %51, align 8, !tbaa !9
  %1084 = load i64, ptr %51, align 8, !tbaa !9
  %1085 = load i64, ptr %28, align 8, !tbaa !9
  %1086 = mul nsw i64 %1084, %1085
  %1087 = add nsw i64 %1083, %1086
  %1088 = getelementptr inbounds %struct.complex, ptr %1082, i64 %1087
  %1089 = call double @r_imag(ptr noundef %1088)
  %1090 = fptrunc double %1089 to float
  store float %1090, ptr %37, align 4, !tbaa !17
  %1091 = load float, ptr %37, align 4, !tbaa !17
  %1092 = fcmp oge float %1091, 0.000000e+00
  br i1 %1092, label %1093, label %1095

1093:                                             ; preds = %1079
  %1094 = load float, ptr %37, align 4, !tbaa !17
  br label %1098

1095:                                             ; preds = %1079
  %1096 = load float, ptr %37, align 4, !tbaa !17
  %1097 = fneg float %1096
  br label %1098

1098:                                             ; preds = %1095, %1093
  %1099 = phi float [ %1094, %1093 ], [ %1097, %1095 ]
  %1100 = fpext float %1099 to double
  %1101 = fadd double %1081, %1100
  %1102 = fptrunc double %1101 to float
  store float %1102, ptr %40, align 4, !tbaa !17
  %1103 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %1104 = load float, ptr %1103, align 4, !tbaa !11
  store float %1104, ptr %38, align 4, !tbaa !17
  %1105 = load float, ptr %38, align 4, !tbaa !17
  %1106 = fcmp oge float %1105, 0.000000e+00
  br i1 %1106, label %1107, label %1109

1107:                                             ; preds = %1098
  %1108 = load float, ptr %38, align 4, !tbaa !17
  br label %1112

1109:                                             ; preds = %1098
  %1110 = load float, ptr %38, align 4, !tbaa !17
  %1111 = fneg float %1110
  br label %1112

1112:                                             ; preds = %1109, %1107
  %1113 = phi float [ %1108, %1107 ], [ %1111, %1109 ]
  %1114 = fpext float %1113 to double
  %1115 = call double @r_imag(ptr noundef %42)
  %1116 = fptrunc double %1115 to float
  store float %1116, ptr %39, align 4, !tbaa !17
  %1117 = load float, ptr %39, align 4, !tbaa !17
  %1118 = fcmp oge float %1117, 0.000000e+00
  br i1 %1118, label %1119, label %1121

1119:                                             ; preds = %1112
  %1120 = load float, ptr %39, align 4, !tbaa !17
  br label %1124

1121:                                             ; preds = %1112
  %1122 = load float, ptr %39, align 4, !tbaa !17
  %1123 = fneg float %1122
  br label %1124

1124:                                             ; preds = %1121, %1119
  %1125 = phi float [ %1120, %1119 ], [ %1123, %1121 ]
  %1126 = fpext float %1125 to double
  %1127 = fadd double %1114, %1126
  %1128 = fptrunc double %1127 to float
  store float %1128, ptr %41, align 4, !tbaa !17
  %1129 = load float, ptr %40, align 4, !tbaa !17
  %1130 = load float, ptr %41, align 4, !tbaa !17
  %1131 = fcmp ole float %1129, %1130
  br i1 %1131, label %1132, label %1134

1132:                                             ; preds = %1124
  %1133 = load float, ptr %40, align 4, !tbaa !17
  br label %1136

1134:                                             ; preds = %1124
  %1135 = load float, ptr %41, align 4, !tbaa !17
  br label %1136

1136:                                             ; preds = %1134, %1132
  %1137 = phi float [ %1133, %1132 ], [ %1135, %1134 ]
  %1138 = fpext float %1137 to double
  %1139 = fptrunc double %1138 to float
  store float %1139, ptr %68, align 4, !tbaa !17
  %1140 = load float, ptr %65, align 4, !tbaa !17
  %1141 = load float, ptr %66, align 4, !tbaa !17
  %1142 = fadd float %1140, %1141
  store float %1142, ptr %54, align 4, !tbaa !17
  %1143 = load float, ptr %88, align 4, !tbaa !17
  store float %1143, ptr %36, align 4, !tbaa !17
  %1144 = load float, ptr %81, align 4, !tbaa !17
  %1145 = load float, ptr %68, align 4, !tbaa !17
  %1146 = load float, ptr %65, align 4, !tbaa !17
  %1147 = load float, ptr %54, align 4, !tbaa !17
  %1148 = fdiv float %1146, %1147
  %1149 = fmul float %1145, %1148
  %1150 = fmul float %1144, %1149
  store float %1150, ptr %37, align 4, !tbaa !17
  %1151 = load float, ptr %67, align 4, !tbaa !17
  %1152 = load float, ptr %66, align 4, !tbaa !17
  %1153 = load float, ptr %54, align 4, !tbaa !17
  %1154 = fdiv float %1152, %1153
  %1155 = fmul float %1151, %1154
  %1156 = fpext float %1155 to double
  %1157 = load float, ptr %36, align 4, !tbaa !17
  %1158 = load float, ptr %37, align 4, !tbaa !17
  %1159 = fcmp oge float %1157, %1158
  br i1 %1159, label %1160, label %1162

1160:                                             ; preds = %1136
  %1161 = load float, ptr %36, align 4, !tbaa !17
  br label %1164

1162:                                             ; preds = %1136
  %1163 = load float, ptr %37, align 4, !tbaa !17
  br label %1164

1164:                                             ; preds = %1162, %1160
  %1165 = phi float [ %1161, %1160 ], [ %1163, %1162 ]
  %1166 = fpext float %1165 to double
  %1167 = fcmp ole double %1156, %1166
  br i1 %1167, label %1168, label %1169

1168:                                             ; preds = %1164
  br label %1175

1169:                                             ; preds = %1164
  br label %1170

1170:                                             ; preds = %1169, %697
  br label %1171

1171:                                             ; preds = %1170
  %1172 = load i64, ptr %51, align 8, !tbaa !9
  %1173 = add nsw i64 %1172, -1
  store i64 %1173, ptr %51, align 8, !tbaa !9
  br label %472, !llvm.loop !19

1174:                                             ; preds = %472
  br label %1175

1175:                                             ; preds = %1174, %1168, %522
  %1176 = load i64, ptr %51, align 8, !tbaa !9
  store i64 %1176, ptr %52, align 8, !tbaa !9
  %1177 = load i64, ptr %52, align 8, !tbaa !9
  %1178 = load ptr, ptr %18, align 8, !tbaa !5
  %1179 = load i64, ptr %1178, align 8, !tbaa !9
  %1180 = icmp sgt i64 %1177, %1179
  br i1 %1180, label %1181, label %1196

1181:                                             ; preds = %1175
  %1182 = load i64, ptr %52, align 8, !tbaa !9
  %1183 = load i64, ptr %52, align 8, !tbaa !9
  %1184 = sub nsw i64 %1183, 1
  %1185 = load i64, ptr %28, align 8, !tbaa !9
  %1186 = mul nsw i64 %1184, %1185
  %1187 = add nsw i64 %1182, %1186
  store i64 %1187, ptr %32, align 8, !tbaa !9
  %1188 = load ptr, ptr %20, align 8, !tbaa !5
  %1189 = load i64, ptr %32, align 8, !tbaa !9
  %1190 = getelementptr inbounds %struct.complex, ptr %1188, i64 %1189
  %1191 = getelementptr inbounds %struct.complex, ptr %1190, i32 0, i32 0
  store float 0.000000e+00, ptr %1191, align 4, !tbaa !11
  %1192 = load ptr, ptr %20, align 8, !tbaa !5
  %1193 = load i64, ptr %32, align 8, !tbaa !9
  %1194 = getelementptr inbounds %struct.complex, ptr %1192, i64 %1193
  %1195 = getelementptr inbounds %struct.complex, ptr %1194, i32 0, i32 1
  store float 0.000000e+00, ptr %1195, align 4, !tbaa !14
  br label %1196

1196:                                             ; preds = %1181, %1175
  %1197 = load i64, ptr %52, align 8, !tbaa !9
  %1198 = load i64, ptr %49, align 8, !tbaa !9
  %1199 = icmp sge i64 %1197, %1198
  br i1 %1199, label %1200, label %1201

1200:                                             ; preds = %1196
  br label %3097

1201:                                             ; preds = %1196
  %1202 = load ptr, ptr %15, align 8, !tbaa !5
  %1203 = load i64, ptr %1202, align 8, !tbaa !9
  %1204 = icmp ne i64 %1203, 0
  br i1 %1204, label %1208, label %1205

1205:                                             ; preds = %1201
  %1206 = load i64, ptr %52, align 8, !tbaa !9
  store i64 %1206, ptr %60, align 8, !tbaa !9
  %1207 = load i64, ptr %49, align 8, !tbaa !9
  store i64 %1207, ptr %61, align 8, !tbaa !9
  br label %1208

1208:                                             ; preds = %1205, %1201
  %1209 = load i64, ptr %80, align 8, !tbaa !9
  %1210 = icmp eq i64 %1209, 10
  br i1 %1210, label %1211, label %1260

1211:                                             ; preds = %1208
  %1212 = load i64, ptr %52, align 8, !tbaa !9
  %1213 = add nsw i64 %1212, 1
  %1214 = load i64, ptr %52, align 8, !tbaa !9
  %1215 = load i64, ptr %28, align 8, !tbaa !9
  %1216 = mul nsw i64 %1214, %1215
  %1217 = add nsw i64 %1213, %1216
  store i64 %1217, ptr %32, align 8, !tbaa !9
  %1218 = load ptr, ptr %20, align 8, !tbaa !5
  %1219 = load i64, ptr %32, align 8, !tbaa !9
  %1220 = getelementptr inbounds %struct.complex, ptr %1218, i64 %1219
  %1221 = getelementptr inbounds %struct.complex, ptr %1220, i32 0, i32 0
  %1222 = load float, ptr %1221, align 4, !tbaa !11
  store float %1222, ptr %36, align 4, !tbaa !17
  %1223 = load float, ptr %36, align 4, !tbaa !17
  %1224 = fcmp oge float %1223, 0.000000e+00
  br i1 %1224, label %1225, label %1227

1225:                                             ; preds = %1211
  %1226 = load float, ptr %36, align 4, !tbaa !17
  br label %1230

1227:                                             ; preds = %1211
  %1228 = load float, ptr %36, align 4, !tbaa !17
  %1229 = fneg float %1228
  br label %1230

1230:                                             ; preds = %1227, %1225
  %1231 = phi float [ %1226, %1225 ], [ %1229, %1227 ]
  %1232 = fpext float %1231 to double
  %1233 = fmul double %1232, 7.500000e-01
  %1234 = fptrunc double %1233 to float
  store float %1234, ptr %54, align 4, !tbaa !17
  %1235 = load i64, ptr %52, align 8, !tbaa !9
  %1236 = load i64, ptr %52, align 8, !tbaa !9
  %1237 = load i64, ptr %28, align 8, !tbaa !9
  %1238 = mul nsw i64 %1236, %1237
  %1239 = add nsw i64 %1235, %1238
  store i64 %1239, ptr %32, align 8, !tbaa !9
  %1240 = load float, ptr %54, align 4, !tbaa !17
  %1241 = load ptr, ptr %20, align 8, !tbaa !5
  %1242 = load i64, ptr %32, align 8, !tbaa !9
  %1243 = getelementptr inbounds %struct.complex, ptr %1241, i64 %1242
  %1244 = getelementptr inbounds %struct.complex, ptr %1243, i32 0, i32 0
  %1245 = load float, ptr %1244, align 4, !tbaa !11
  %1246 = fadd float %1240, %1245
  %1247 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %1246, ptr %1247, align 4, !tbaa !11
  %1248 = load ptr, ptr %20, align 8, !tbaa !5
  %1249 = load i64, ptr %32, align 8, !tbaa !9
  %1250 = getelementptr inbounds %struct.complex, ptr %1248, i64 %1249
  %1251 = getelementptr inbounds %struct.complex, ptr %1250, i32 0, i32 1
  %1252 = load float, ptr %1251, align 4, !tbaa !14
  %1253 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %1252, ptr %1253, align 4, !tbaa !14
  %1254 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %1255 = load float, ptr %1254, align 4, !tbaa !11
  %1256 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  store float %1255, ptr %1256, align 4, !tbaa !11
  %1257 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %1258 = load float, ptr %1257, align 4, !tbaa !14
  %1259 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  store float %1258, ptr %1259, align 4, !tbaa !14
  br label %1660

1260:                                             ; preds = %1208
  %1261 = load i64, ptr %80, align 8, !tbaa !9
  %1262 = icmp eq i64 %1261, 20
  br i1 %1262, label %1263, label %1312

1263:                                             ; preds = %1260
  %1264 = load i64, ptr %49, align 8, !tbaa !9
  %1265 = load i64, ptr %49, align 8, !tbaa !9
  %1266 = sub nsw i64 %1265, 1
  %1267 = load i64, ptr %28, align 8, !tbaa !9
  %1268 = mul nsw i64 %1266, %1267
  %1269 = add nsw i64 %1264, %1268
  store i64 %1269, ptr %32, align 8, !tbaa !9
  %1270 = load ptr, ptr %20, align 8, !tbaa !5
  %1271 = load i64, ptr %32, align 8, !tbaa !9
  %1272 = getelementptr inbounds %struct.complex, ptr %1270, i64 %1271
  %1273 = getelementptr inbounds %struct.complex, ptr %1272, i32 0, i32 0
  %1274 = load float, ptr %1273, align 4, !tbaa !11
  store float %1274, ptr %36, align 4, !tbaa !17
  %1275 = load float, ptr %36, align 4, !tbaa !17
  %1276 = fcmp oge float %1275, 0.000000e+00
  br i1 %1276, label %1277, label %1279

1277:                                             ; preds = %1263
  %1278 = load float, ptr %36, align 4, !tbaa !17
  br label %1282

1279:                                             ; preds = %1263
  %1280 = load float, ptr %36, align 4, !tbaa !17
  %1281 = fneg float %1280
  br label %1282

1282:                                             ; preds = %1279, %1277
  %1283 = phi float [ %1278, %1277 ], [ %1281, %1279 ]
  %1284 = fpext float %1283 to double
  %1285 = fmul double %1284, 7.500000e-01
  %1286 = fptrunc double %1285 to float
  store float %1286, ptr %54, align 4, !tbaa !17
  %1287 = load i64, ptr %49, align 8, !tbaa !9
  %1288 = load i64, ptr %49, align 8, !tbaa !9
  %1289 = load i64, ptr %28, align 8, !tbaa !9
  %1290 = mul nsw i64 %1288, %1289
  %1291 = add nsw i64 %1287, %1290
  store i64 %1291, ptr %32, align 8, !tbaa !9
  %1292 = load float, ptr %54, align 4, !tbaa !17
  %1293 = load ptr, ptr %20, align 8, !tbaa !5
  %1294 = load i64, ptr %32, align 8, !tbaa !9
  %1295 = getelementptr inbounds %struct.complex, ptr %1293, i64 %1294
  %1296 = getelementptr inbounds %struct.complex, ptr %1295, i32 0, i32 0
  %1297 = load float, ptr %1296, align 4, !tbaa !11
  %1298 = fadd float %1292, %1297
  %1299 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %1298, ptr %1299, align 4, !tbaa !11
  %1300 = load ptr, ptr %20, align 8, !tbaa !5
  %1301 = load i64, ptr %32, align 8, !tbaa !9
  %1302 = getelementptr inbounds %struct.complex, ptr %1300, i64 %1301
  %1303 = getelementptr inbounds %struct.complex, ptr %1302, i32 0, i32 1
  %1304 = load float, ptr %1303, align 4, !tbaa !14
  %1305 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %1304, ptr %1305, align 4, !tbaa !14
  %1306 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %1307 = load float, ptr %1306, align 4, !tbaa !11
  %1308 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  store float %1307, ptr %1308, align 4, !tbaa !11
  %1309 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %1310 = load float, ptr %1309, align 4, !tbaa !14
  %1311 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  store float %1310, ptr %1311, align 4, !tbaa !14
  br label %1659

1312:                                             ; preds = %1260
  %1313 = load i64, ptr %49, align 8, !tbaa !9
  %1314 = load i64, ptr %49, align 8, !tbaa !9
  %1315 = load i64, ptr %28, align 8, !tbaa !9
  %1316 = mul nsw i64 %1314, %1315
  %1317 = add nsw i64 %1313, %1316
  store i64 %1317, ptr %32, align 8, !tbaa !9
  %1318 = load ptr, ptr %20, align 8, !tbaa !5
  %1319 = load i64, ptr %32, align 8, !tbaa !9
  %1320 = getelementptr inbounds %struct.complex, ptr %1318, i64 %1319
  %1321 = getelementptr inbounds %struct.complex, ptr %1320, i32 0, i32 0
  %1322 = load float, ptr %1321, align 4, !tbaa !11
  %1323 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  store float %1322, ptr %1323, align 4, !tbaa !11
  %1324 = load ptr, ptr %20, align 8, !tbaa !5
  %1325 = load i64, ptr %32, align 8, !tbaa !9
  %1326 = getelementptr inbounds %struct.complex, ptr %1324, i64 %1325
  %1327 = getelementptr inbounds %struct.complex, ptr %1326, i32 0, i32 1
  %1328 = load float, ptr %1327, align 4, !tbaa !14
  %1329 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  store float %1328, ptr %1329, align 4, !tbaa !14
  %1330 = load ptr, ptr %20, align 8, !tbaa !5
  %1331 = load i64, ptr %49, align 8, !tbaa !9
  %1332 = sub nsw i64 %1331, 1
  %1333 = load i64, ptr %49, align 8, !tbaa !9
  %1334 = load i64, ptr %28, align 8, !tbaa !9
  %1335 = mul nsw i64 %1333, %1334
  %1336 = add nsw i64 %1332, %1335
  %1337 = getelementptr inbounds %struct.complex, ptr %1330, i64 %1336
  call void @c_sqrt(ptr noundef %43, ptr noundef %1337)
  %1338 = load ptr, ptr %20, align 8, !tbaa !5
  %1339 = load i64, ptr %49, align 8, !tbaa !9
  %1340 = load i64, ptr %49, align 8, !tbaa !9
  %1341 = sub nsw i64 %1340, 1
  %1342 = load i64, ptr %28, align 8, !tbaa !9
  %1343 = mul nsw i64 %1341, %1342
  %1344 = add nsw i64 %1339, %1343
  %1345 = getelementptr inbounds %struct.complex, ptr %1338, i64 %1344
  call void @c_sqrt(ptr noundef %44, ptr noundef %1345)
  %1346 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %1347 = load float, ptr %1346, align 4, !tbaa !11
  %1348 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 0
  %1349 = load float, ptr %1348, align 4, !tbaa !11
  %1350 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %1351 = load float, ptr %1350, align 4, !tbaa !14
  %1352 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 1
  %1353 = load float, ptr %1352, align 4, !tbaa !14
  %1354 = fmul float %1351, %1353
  %1355 = fneg float %1354
  %1356 = call float @llvm.fmuladd.f32(float %1347, float %1349, float %1355)
  %1357 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %1356, ptr %1357, align 4, !tbaa !11
  %1358 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %1359 = load float, ptr %1358, align 4, !tbaa !11
  %1360 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 1
  %1361 = load float, ptr %1360, align 4, !tbaa !14
  %1362 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %1363 = load float, ptr %1362, align 4, !tbaa !14
  %1364 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 0
  %1365 = load float, ptr %1364, align 4, !tbaa !11
  %1366 = fmul float %1363, %1365
  %1367 = call float @llvm.fmuladd.f32(float %1359, float %1361, float %1366)
  %1368 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %1367, ptr %1368, align 4, !tbaa !14
  %1369 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %1370 = load float, ptr %1369, align 4, !tbaa !11
  %1371 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 0
  store float %1370, ptr %1371, align 4, !tbaa !11
  %1372 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %1373 = load float, ptr %1372, align 4, !tbaa !14
  %1374 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 1
  store float %1373, ptr %1374, align 4, !tbaa !14
  %1375 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 0
  %1376 = load float, ptr %1375, align 4, !tbaa !11
  store float %1376, ptr %36, align 4, !tbaa !17
  %1377 = load float, ptr %36, align 4, !tbaa !17
  %1378 = fcmp oge float %1377, 0.000000e+00
  br i1 %1378, label %1379, label %1381

1379:                                             ; preds = %1312
  %1380 = load float, ptr %36, align 4, !tbaa !17
  br label %1384

1381:                                             ; preds = %1312
  %1382 = load float, ptr %36, align 4, !tbaa !17
  %1383 = fneg float %1382
  br label %1384

1384:                                             ; preds = %1381, %1379
  %1385 = phi float [ %1380, %1379 ], [ %1383, %1381 ]
  %1386 = fpext float %1385 to double
  %1387 = call double @r_imag(ptr noundef %56)
  %1388 = fptrunc double %1387 to float
  store float %1388, ptr %37, align 4, !tbaa !17
  %1389 = load float, ptr %37, align 4, !tbaa !17
  %1390 = fcmp oge float %1389, 0.000000e+00
  br i1 %1390, label %1391, label %1393

1391:                                             ; preds = %1384
  %1392 = load float, ptr %37, align 4, !tbaa !17
  br label %1396

1393:                                             ; preds = %1384
  %1394 = load float, ptr %37, align 4, !tbaa !17
  %1395 = fneg float %1394
  br label %1396

1396:                                             ; preds = %1393, %1391
  %1397 = phi float [ %1392, %1391 ], [ %1395, %1393 ]
  %1398 = fpext float %1397 to double
  %1399 = fadd double %1386, %1398
  %1400 = fptrunc double %1399 to float
  store float %1400, ptr %54, align 4, !tbaa !17
  %1401 = load float, ptr %54, align 4, !tbaa !17
  %1402 = fcmp une float %1401, 0.000000e+00
  br i1 %1402, label %1403, label %1658

1403:                                             ; preds = %1396
  %1404 = load i64, ptr %49, align 8, !tbaa !9
  %1405 = sub nsw i64 %1404, 1
  %1406 = load i64, ptr %49, align 8, !tbaa !9
  %1407 = sub nsw i64 %1406, 1
  %1408 = load i64, ptr %28, align 8, !tbaa !9
  %1409 = mul nsw i64 %1407, %1408
  %1410 = add nsw i64 %1405, %1409
  store i64 %1410, ptr %32, align 8, !tbaa !9
  %1411 = load ptr, ptr %20, align 8, !tbaa !5
  %1412 = load i64, ptr %32, align 8, !tbaa !9
  %1413 = getelementptr inbounds %struct.complex, ptr %1411, i64 %1412
  %1414 = getelementptr inbounds %struct.complex, ptr %1413, i32 0, i32 0
  %1415 = load float, ptr %1414, align 4, !tbaa !11
  %1416 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  %1417 = load float, ptr %1416, align 4, !tbaa !11
  %1418 = fsub float %1415, %1417
  %1419 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  store float %1418, ptr %1419, align 4, !tbaa !11
  %1420 = load ptr, ptr %20, align 8, !tbaa !5
  %1421 = load i64, ptr %32, align 8, !tbaa !9
  %1422 = getelementptr inbounds %struct.complex, ptr %1420, i64 %1421
  %1423 = getelementptr inbounds %struct.complex, ptr %1422, i32 0, i32 1
  %1424 = load float, ptr %1423, align 4, !tbaa !14
  %1425 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  %1426 = load float, ptr %1425, align 4, !tbaa !14
  %1427 = fsub float %1424, %1426
  %1428 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  store float %1427, ptr %1428, align 4, !tbaa !14
  %1429 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %1430 = load float, ptr %1429, align 4, !tbaa !11
  %1431 = fmul float %1430, 5.000000e-01
  %1432 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %1431, ptr %1432, align 4, !tbaa !11
  %1433 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %1434 = load float, ptr %1433, align 4, !tbaa !14
  %1435 = fmul float %1434, 5.000000e-01
  %1436 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %1435, ptr %1436, align 4, !tbaa !14
  %1437 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %1438 = load float, ptr %1437, align 4, !tbaa !11
  %1439 = getelementptr inbounds %struct.complex, ptr %58, i32 0, i32 0
  store float %1438, ptr %1439, align 4, !tbaa !11
  %1440 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %1441 = load float, ptr %1440, align 4, !tbaa !14
  %1442 = getelementptr inbounds %struct.complex, ptr %58, i32 0, i32 1
  store float %1441, ptr %1442, align 4, !tbaa !14
  %1443 = getelementptr inbounds %struct.complex, ptr %58, i32 0, i32 0
  %1444 = load float, ptr %1443, align 4, !tbaa !11
  store float %1444, ptr %36, align 4, !tbaa !17
  %1445 = load float, ptr %36, align 4, !tbaa !17
  %1446 = fcmp oge float %1445, 0.000000e+00
  br i1 %1446, label %1447, label %1449

1447:                                             ; preds = %1403
  %1448 = load float, ptr %36, align 4, !tbaa !17
  br label %1452

1449:                                             ; preds = %1403
  %1450 = load float, ptr %36, align 4, !tbaa !17
  %1451 = fneg float %1450
  br label %1452

1452:                                             ; preds = %1449, %1447
  %1453 = phi float [ %1448, %1447 ], [ %1451, %1449 ]
  %1454 = fpext float %1453 to double
  %1455 = call double @r_imag(ptr noundef %58)
  %1456 = fptrunc double %1455 to float
  store float %1456, ptr %37, align 4, !tbaa !17
  %1457 = load float, ptr %37, align 4, !tbaa !17
  %1458 = fcmp oge float %1457, 0.000000e+00
  br i1 %1458, label %1459, label %1461

1459:                                             ; preds = %1452
  %1460 = load float, ptr %37, align 4, !tbaa !17
  br label %1464

1461:                                             ; preds = %1452
  %1462 = load float, ptr %37, align 4, !tbaa !17
  %1463 = fneg float %1462
  br label %1464

1464:                                             ; preds = %1461, %1459
  %1465 = phi float [ %1460, %1459 ], [ %1463, %1461 ]
  %1466 = fpext float %1465 to double
  %1467 = fadd double %1454, %1466
  %1468 = fptrunc double %1467 to float
  store float %1468, ptr %76, align 4, !tbaa !17
  %1469 = load float, ptr %54, align 4, !tbaa !17
  store float %1469, ptr %38, align 4, !tbaa !17
  %1470 = getelementptr inbounds %struct.complex, ptr %58, i32 0, i32 0
  %1471 = load float, ptr %1470, align 4, !tbaa !11
  store float %1471, ptr %36, align 4, !tbaa !17
  %1472 = load float, ptr %36, align 4, !tbaa !17
  %1473 = fcmp oge float %1472, 0.000000e+00
  br i1 %1473, label %1474, label %1476

1474:                                             ; preds = %1464
  %1475 = load float, ptr %36, align 4, !tbaa !17
  br label %1479

1476:                                             ; preds = %1464
  %1477 = load float, ptr %36, align 4, !tbaa !17
  %1478 = fneg float %1477
  br label %1479

1479:                                             ; preds = %1476, %1474
  %1480 = phi float [ %1475, %1474 ], [ %1478, %1476 ]
  %1481 = fpext float %1480 to double
  %1482 = call double @r_imag(ptr noundef %58)
  %1483 = fptrunc double %1482 to float
  store float %1483, ptr %37, align 4, !tbaa !17
  %1484 = load float, ptr %37, align 4, !tbaa !17
  %1485 = fcmp oge float %1484, 0.000000e+00
  br i1 %1485, label %1486, label %1488

1486:                                             ; preds = %1479
  %1487 = load float, ptr %37, align 4, !tbaa !17
  br label %1491

1488:                                             ; preds = %1479
  %1489 = load float, ptr %37, align 4, !tbaa !17
  %1490 = fneg float %1489
  br label %1491

1491:                                             ; preds = %1488, %1486
  %1492 = phi float [ %1487, %1486 ], [ %1490, %1488 ]
  %1493 = fpext float %1492 to double
  %1494 = fadd double %1481, %1493
  %1495 = fptrunc double %1494 to float
  store float %1495, ptr %39, align 4, !tbaa !17
  %1496 = load float, ptr %38, align 4, !tbaa !17
  %1497 = load float, ptr %39, align 4, !tbaa !17
  %1498 = fcmp oge float %1496, %1497
  br i1 %1498, label %1499, label %1501

1499:                                             ; preds = %1491
  %1500 = load float, ptr %38, align 4, !tbaa !17
  br label %1503

1501:                                             ; preds = %1491
  %1502 = load float, ptr %39, align 4, !tbaa !17
  br label %1503

1503:                                             ; preds = %1501, %1499
  %1504 = phi float [ %1500, %1499 ], [ %1502, %1501 ]
  %1505 = fpext float %1504 to double
  %1506 = fptrunc double %1505 to float
  store float %1506, ptr %54, align 4, !tbaa !17
  %1507 = getelementptr inbounds %struct.complex, ptr %58, i32 0, i32 0
  %1508 = load float, ptr %1507, align 4, !tbaa !11
  %1509 = load float, ptr %54, align 4, !tbaa !17
  %1510 = fdiv float %1508, %1509
  %1511 = getelementptr inbounds %struct.complex, ptr %46, i32 0, i32 0
  store float %1510, ptr %1511, align 4, !tbaa !11
  %1512 = getelementptr inbounds %struct.complex, ptr %58, i32 0, i32 1
  %1513 = load float, ptr %1512, align 4, !tbaa !14
  %1514 = load float, ptr %54, align 4, !tbaa !17
  %1515 = fdiv float %1513, %1514
  %1516 = getelementptr inbounds %struct.complex, ptr %46, i32 0, i32 1
  store float %1515, ptr %1516, align 4, !tbaa !14
  call void @pow_ci(ptr noundef %45, ptr noundef %46, ptr noundef @c__2)
  %1517 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 0
  %1518 = load float, ptr %1517, align 4, !tbaa !11
  %1519 = load float, ptr %54, align 4, !tbaa !17
  %1520 = fdiv float %1518, %1519
  %1521 = getelementptr inbounds %struct.complex, ptr %48, i32 0, i32 0
  store float %1520, ptr %1521, align 4, !tbaa !11
  %1522 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 1
  %1523 = load float, ptr %1522, align 4, !tbaa !14
  %1524 = load float, ptr %54, align 4, !tbaa !17
  %1525 = fdiv float %1523, %1524
  %1526 = getelementptr inbounds %struct.complex, ptr %48, i32 0, i32 1
  store float %1525, ptr %1526, align 4, !tbaa !14
  call void @pow_ci(ptr noundef %47, ptr noundef %48, ptr noundef @c__2)
  %1527 = getelementptr inbounds %struct.complex, ptr %45, i32 0, i32 0
  %1528 = load float, ptr %1527, align 4, !tbaa !11
  %1529 = getelementptr inbounds %struct.complex, ptr %47, i32 0, i32 0
  %1530 = load float, ptr %1529, align 4, !tbaa !11
  %1531 = fadd float %1528, %1530
  %1532 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 0
  store float %1531, ptr %1532, align 4, !tbaa !11
  %1533 = getelementptr inbounds %struct.complex, ptr %45, i32 0, i32 1
  %1534 = load float, ptr %1533, align 4, !tbaa !14
  %1535 = getelementptr inbounds %struct.complex, ptr %47, i32 0, i32 1
  %1536 = load float, ptr %1535, align 4, !tbaa !14
  %1537 = fadd float %1534, %1536
  %1538 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 1
  store float %1537, ptr %1538, align 4, !tbaa !14
  call void @c_sqrt(ptr noundef %43, ptr noundef %44)
  %1539 = load float, ptr %54, align 4, !tbaa !17
  %1540 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %1541 = load float, ptr %1540, align 4, !tbaa !11
  %1542 = fmul float %1539, %1541
  %1543 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %1542, ptr %1543, align 4, !tbaa !11
  %1544 = load float, ptr %54, align 4, !tbaa !17
  %1545 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %1546 = load float, ptr %1545, align 4, !tbaa !14
  %1547 = fmul float %1544, %1546
  %1548 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %1547, ptr %1548, align 4, !tbaa !14
  %1549 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %1550 = load float, ptr %1549, align 4, !tbaa !11
  %1551 = getelementptr inbounds %struct.complex, ptr %59, i32 0, i32 0
  store float %1550, ptr %1551, align 4, !tbaa !11
  %1552 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %1553 = load float, ptr %1552, align 4, !tbaa !14
  %1554 = getelementptr inbounds %struct.complex, ptr %59, i32 0, i32 1
  store float %1553, ptr %1554, align 4, !tbaa !14
  %1555 = load float, ptr %76, align 4, !tbaa !17
  %1556 = fcmp ogt float %1555, 0.000000e+00
  br i1 %1556, label %1557, label %1604

1557:                                             ; preds = %1503
  %1558 = getelementptr inbounds %struct.complex, ptr %58, i32 0, i32 0
  %1559 = load float, ptr %1558, align 4, !tbaa !11
  %1560 = load float, ptr %76, align 4, !tbaa !17
  %1561 = fdiv float %1559, %1560
  %1562 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %1561, ptr %1562, align 4, !tbaa !11
  %1563 = getelementptr inbounds %struct.complex, ptr %58, i32 0, i32 1
  %1564 = load float, ptr %1563, align 4, !tbaa !14
  %1565 = load float, ptr %76, align 4, !tbaa !17
  %1566 = fdiv float %1564, %1565
  %1567 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %1566, ptr %1567, align 4, !tbaa !14
  %1568 = getelementptr inbounds %struct.complex, ptr %58, i32 0, i32 0
  %1569 = load float, ptr %1568, align 4, !tbaa !11
  %1570 = load float, ptr %76, align 4, !tbaa !17
  %1571 = fdiv float %1569, %1570
  %1572 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  store float %1571, ptr %1572, align 4, !tbaa !11
  %1573 = getelementptr inbounds %struct.complex, ptr %58, i32 0, i32 1
  %1574 = load float, ptr %1573, align 4, !tbaa !14
  %1575 = load float, ptr %76, align 4, !tbaa !17
  %1576 = fdiv float %1574, %1575
  %1577 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  store float %1576, ptr %1577, align 4, !tbaa !14
  %1578 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %1579 = load float, ptr %1578, align 4, !tbaa !11
  %1580 = getelementptr inbounds %struct.complex, ptr %59, i32 0, i32 0
  %1581 = load float, ptr %1580, align 4, !tbaa !11
  %1582 = fmul float %1579, %1581
  %1583 = fpext float %1582 to double
  %1584 = call double @r_imag(ptr noundef %43)
  %1585 = call double @r_imag(ptr noundef %59)
  %1586 = call double @llvm.fmuladd.f64(double %1584, double %1585, double %1583)
  %1587 = fcmp olt double %1586, 0.000000e+00
  br i1 %1587, label %1588, label %1603

1588:                                             ; preds = %1557
  %1589 = getelementptr inbounds %struct.complex, ptr %59, i32 0, i32 0
  %1590 = load float, ptr %1589, align 4, !tbaa !11
  %1591 = fneg float %1590
  %1592 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 0
  store float %1591, ptr %1592, align 4, !tbaa !11
  %1593 = getelementptr inbounds %struct.complex, ptr %59, i32 0, i32 1
  %1594 = load float, ptr %1593, align 4, !tbaa !14
  %1595 = fneg float %1594
  %1596 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 1
  store float %1595, ptr %1596, align 4, !tbaa !14
  %1597 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 0
  %1598 = load float, ptr %1597, align 4, !tbaa !11
  %1599 = getelementptr inbounds %struct.complex, ptr %59, i32 0, i32 0
  store float %1598, ptr %1599, align 4, !tbaa !11
  %1600 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 1
  %1601 = load float, ptr %1600, align 4, !tbaa !14
  %1602 = getelementptr inbounds %struct.complex, ptr %59, i32 0, i32 1
  store float %1601, ptr %1602, align 4, !tbaa !14
  br label %1603

1603:                                             ; preds = %1588, %1557
  br label %1604

1604:                                             ; preds = %1603, %1503
  %1605 = getelementptr inbounds %struct.complex, ptr %58, i32 0, i32 0
  %1606 = load float, ptr %1605, align 4, !tbaa !11
  %1607 = getelementptr inbounds %struct.complex, ptr %59, i32 0, i32 0
  %1608 = load float, ptr %1607, align 4, !tbaa !11
  %1609 = fadd float %1606, %1608
  %1610 = getelementptr inbounds %struct.complex, ptr %45, i32 0, i32 0
  store float %1609, ptr %1610, align 4, !tbaa !11
  %1611 = getelementptr inbounds %struct.complex, ptr %58, i32 0, i32 1
  %1612 = load float, ptr %1611, align 4, !tbaa !14
  %1613 = getelementptr inbounds %struct.complex, ptr %59, i32 0, i32 1
  %1614 = load float, ptr %1613, align 4, !tbaa !14
  %1615 = fadd float %1612, %1614
  %1616 = getelementptr inbounds %struct.complex, ptr %45, i32 0, i32 1
  store float %1615, ptr %1616, align 4, !tbaa !14
  call void @cladiv_(ptr noundef %44, ptr noundef %56, ptr noundef %45)
  %1617 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 0
  %1618 = load float, ptr %1617, align 4, !tbaa !11
  %1619 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 0
  %1620 = load float, ptr %1619, align 4, !tbaa !11
  %1621 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 1
  %1622 = load float, ptr %1621, align 4, !tbaa !14
  %1623 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 1
  %1624 = load float, ptr %1623, align 4, !tbaa !14
  %1625 = fmul float %1622, %1624
  %1626 = fneg float %1625
  %1627 = call float @llvm.fmuladd.f32(float %1618, float %1620, float %1626)
  %1628 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  store float %1627, ptr %1628, align 4, !tbaa !11
  %1629 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 0
  %1630 = load float, ptr %1629, align 4, !tbaa !11
  %1631 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 1
  %1632 = load float, ptr %1631, align 4, !tbaa !14
  %1633 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 1
  %1634 = load float, ptr %1633, align 4, !tbaa !14
  %1635 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 0
  %1636 = load float, ptr %1635, align 4, !tbaa !11
  %1637 = fmul float %1634, %1636
  %1638 = call float @llvm.fmuladd.f32(float %1630, float %1632, float %1637)
  %1639 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  store float %1638, ptr %1639, align 4, !tbaa !14
  %1640 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  %1641 = load float, ptr %1640, align 4, !tbaa !11
  %1642 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %1643 = load float, ptr %1642, align 4, !tbaa !11
  %1644 = fsub float %1641, %1643
  %1645 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %1644, ptr %1645, align 4, !tbaa !11
  %1646 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  %1647 = load float, ptr %1646, align 4, !tbaa !14
  %1648 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %1649 = load float, ptr %1648, align 4, !tbaa !14
  %1650 = fsub float %1647, %1649
  %1651 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %1650, ptr %1651, align 4, !tbaa !14
  %1652 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %1653 = load float, ptr %1652, align 4, !tbaa !11
  %1654 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  store float %1653, ptr %1654, align 4, !tbaa !11
  %1655 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %1656 = load float, ptr %1655, align 4, !tbaa !14
  %1657 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  store float %1656, ptr %1657, align 4, !tbaa !14
  br label %1658

1658:                                             ; preds = %1604, %1396
  br label %1659

1659:                                             ; preds = %1658, %1282
  br label %1660

1660:                                             ; preds = %1659, %1230
  %1661 = load i64, ptr %52, align 8, !tbaa !9
  %1662 = add nsw i64 %1661, 1
  store i64 %1662, ptr %32, align 8, !tbaa !9
  %1663 = load i64, ptr %49, align 8, !tbaa !9
  %1664 = sub nsw i64 %1663, 1
  store i64 %1664, ptr %53, align 8, !tbaa !9
  br label %1665

1665:                                             ; preds = %1919, %1660
  %1666 = load i64, ptr %53, align 8, !tbaa !9
  %1667 = load i64, ptr %32, align 8, !tbaa !9
  %1668 = icmp sge i64 %1666, %1667
  br i1 %1668, label %1669, label %1922

1669:                                             ; preds = %1665
  %1670 = load i64, ptr %53, align 8, !tbaa !9
  %1671 = load i64, ptr %53, align 8, !tbaa !9
  %1672 = load i64, ptr %28, align 8, !tbaa !9
  %1673 = mul nsw i64 %1671, %1672
  %1674 = add nsw i64 %1670, %1673
  store i64 %1674, ptr %33, align 8, !tbaa !9
  %1675 = load ptr, ptr %20, align 8, !tbaa !5
  %1676 = load i64, ptr %33, align 8, !tbaa !9
  %1677 = getelementptr inbounds %struct.complex, ptr %1675, i64 %1676
  %1678 = getelementptr inbounds %struct.complex, ptr %1677, i32 0, i32 0
  %1679 = load float, ptr %1678, align 4, !tbaa !11
  %1680 = getelementptr inbounds %struct.complex, ptr %70, i32 0, i32 0
  store float %1679, ptr %1680, align 4, !tbaa !11
  %1681 = load ptr, ptr %20, align 8, !tbaa !5
  %1682 = load i64, ptr %33, align 8, !tbaa !9
  %1683 = getelementptr inbounds %struct.complex, ptr %1681, i64 %1682
  %1684 = getelementptr inbounds %struct.complex, ptr %1683, i32 0, i32 1
  %1685 = load float, ptr %1684, align 4, !tbaa !14
  %1686 = getelementptr inbounds %struct.complex, ptr %70, i32 0, i32 1
  store float %1685, ptr %1686, align 4, !tbaa !14
  %1687 = load i64, ptr %53, align 8, !tbaa !9
  %1688 = add nsw i64 %1687, 1
  %1689 = load i64, ptr %53, align 8, !tbaa !9
  %1690 = add nsw i64 %1689, 1
  %1691 = load i64, ptr %28, align 8, !tbaa !9
  %1692 = mul nsw i64 %1690, %1691
  %1693 = add nsw i64 %1688, %1692
  store i64 %1693, ptr %33, align 8, !tbaa !9
  %1694 = load ptr, ptr %20, align 8, !tbaa !5
  %1695 = load i64, ptr %33, align 8, !tbaa !9
  %1696 = getelementptr inbounds %struct.complex, ptr %1694, i64 %1695
  %1697 = getelementptr inbounds %struct.complex, ptr %1696, i32 0, i32 0
  %1698 = load float, ptr %1697, align 4, !tbaa !11
  %1699 = getelementptr inbounds %struct.complex, ptr %72, i32 0, i32 0
  store float %1698, ptr %1699, align 4, !tbaa !11
  %1700 = load ptr, ptr %20, align 8, !tbaa !5
  %1701 = load i64, ptr %33, align 8, !tbaa !9
  %1702 = getelementptr inbounds %struct.complex, ptr %1700, i64 %1701
  %1703 = getelementptr inbounds %struct.complex, ptr %1702, i32 0, i32 1
  %1704 = load float, ptr %1703, align 4, !tbaa !14
  %1705 = getelementptr inbounds %struct.complex, ptr %72, i32 0, i32 1
  store float %1704, ptr %1705, align 4, !tbaa !14
  %1706 = getelementptr inbounds %struct.complex, ptr %70, i32 0, i32 0
  %1707 = load float, ptr %1706, align 4, !tbaa !11
  %1708 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  %1709 = load float, ptr %1708, align 4, !tbaa !11
  %1710 = fsub float %1707, %1709
  %1711 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %1710, ptr %1711, align 4, !tbaa !11
  %1712 = getelementptr inbounds %struct.complex, ptr %70, i32 0, i32 1
  %1713 = load float, ptr %1712, align 4, !tbaa !14
  %1714 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  %1715 = load float, ptr %1714, align 4, !tbaa !14
  %1716 = fsub float %1713, %1715
  %1717 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %1716, ptr %1717, align 4, !tbaa !14
  %1718 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %1719 = load float, ptr %1718, align 4, !tbaa !11
  %1720 = getelementptr inbounds %struct.complex, ptr %78, i32 0, i32 0
  store float %1719, ptr %1720, align 4, !tbaa !11
  %1721 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %1722 = load float, ptr %1721, align 4, !tbaa !14
  %1723 = getelementptr inbounds %struct.complex, ptr %78, i32 0, i32 1
  store float %1722, ptr %1723, align 4, !tbaa !14
  %1724 = load i64, ptr %53, align 8, !tbaa !9
  %1725 = add nsw i64 %1724, 1
  %1726 = load i64, ptr %53, align 8, !tbaa !9
  %1727 = load i64, ptr %28, align 8, !tbaa !9
  %1728 = mul nsw i64 %1726, %1727
  %1729 = add nsw i64 %1725, %1728
  store i64 %1729, ptr %33, align 8, !tbaa !9
  %1730 = load ptr, ptr %20, align 8, !tbaa !5
  %1731 = load i64, ptr %33, align 8, !tbaa !9
  %1732 = getelementptr inbounds %struct.complex, ptr %1730, i64 %1731
  %1733 = getelementptr inbounds %struct.complex, ptr %1732, i32 0, i32 0
  %1734 = load float, ptr %1733, align 4, !tbaa !11
  store float %1734, ptr %71, align 4, !tbaa !17
  %1735 = getelementptr inbounds %struct.complex, ptr %78, i32 0, i32 0
  %1736 = load float, ptr %1735, align 4, !tbaa !11
  store float %1736, ptr %36, align 4, !tbaa !17
  %1737 = load float, ptr %36, align 4, !tbaa !17
  %1738 = fcmp oge float %1737, 0.000000e+00
  br i1 %1738, label %1739, label %1741

1739:                                             ; preds = %1669
  %1740 = load float, ptr %36, align 4, !tbaa !17
  br label %1744

1741:                                             ; preds = %1669
  %1742 = load float, ptr %36, align 4, !tbaa !17
  %1743 = fneg float %1742
  br label %1744

1744:                                             ; preds = %1741, %1739
  %1745 = phi float [ %1740, %1739 ], [ %1743, %1741 ]
  %1746 = fpext float %1745 to double
  %1747 = call double @r_imag(ptr noundef %78)
  %1748 = fptrunc double %1747 to float
  store float %1748, ptr %37, align 4, !tbaa !17
  %1749 = load float, ptr %37, align 4, !tbaa !17
  %1750 = fcmp oge float %1749, 0.000000e+00
  br i1 %1750, label %1751, label %1753

1751:                                             ; preds = %1744
  %1752 = load float, ptr %37, align 4, !tbaa !17
  br label %1756

1753:                                             ; preds = %1744
  %1754 = load float, ptr %37, align 4, !tbaa !17
  %1755 = fneg float %1754
  br label %1756

1756:                                             ; preds = %1753, %1751
  %1757 = phi float [ %1752, %1751 ], [ %1755, %1753 ]
  %1758 = fpext float %1757 to double
  %1759 = fadd double %1746, %1758
  %1760 = load float, ptr %71, align 4, !tbaa !17
  %1761 = fcmp oge float %1760, 0.000000e+00
  br i1 %1761, label %1762, label %1764

1762:                                             ; preds = %1756
  %1763 = load float, ptr %71, align 4, !tbaa !17
  br label %1767

1764:                                             ; preds = %1756
  %1765 = load float, ptr %71, align 4, !tbaa !17
  %1766 = fneg float %1765
  br label %1767

1767:                                             ; preds = %1764, %1762
  %1768 = phi float [ %1763, %1762 ], [ %1766, %1764 ]
  %1769 = fpext float %1768 to double
  %1770 = fadd double %1759, %1769
  %1771 = fptrunc double %1770 to float
  store float %1771, ptr %54, align 4, !tbaa !17
  %1772 = getelementptr inbounds %struct.complex, ptr %78, i32 0, i32 0
  %1773 = load float, ptr %1772, align 4, !tbaa !11
  %1774 = load float, ptr %54, align 4, !tbaa !17
  %1775 = fdiv float %1773, %1774
  %1776 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %1775, ptr %1776, align 4, !tbaa !11
  %1777 = getelementptr inbounds %struct.complex, ptr %78, i32 0, i32 1
  %1778 = load float, ptr %1777, align 4, !tbaa !14
  %1779 = load float, ptr %54, align 4, !tbaa !17
  %1780 = fdiv float %1778, %1779
  %1781 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %1780, ptr %1781, align 4, !tbaa !14
  %1782 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %1783 = load float, ptr %1782, align 4, !tbaa !11
  %1784 = getelementptr inbounds %struct.complex, ptr %78, i32 0, i32 0
  store float %1783, ptr %1784, align 4, !tbaa !11
  %1785 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %1786 = load float, ptr %1785, align 4, !tbaa !14
  %1787 = getelementptr inbounds %struct.complex, ptr %78, i32 0, i32 1
  store float %1786, ptr %1787, align 4, !tbaa !14
  %1788 = load float, ptr %54, align 4, !tbaa !17
  %1789 = load float, ptr %71, align 4, !tbaa !17
  %1790 = fdiv float %1789, %1788
  store float %1790, ptr %71, align 4, !tbaa !17
  %1791 = getelementptr inbounds %struct.complex, ptr %78, i32 0, i32 0
  %1792 = load float, ptr %1791, align 4, !tbaa !11
  %1793 = getelementptr inbounds [2 x %struct.complex], ptr %57, i64 0, i64 0
  %1794 = getelementptr inbounds %struct.complex, ptr %1793, i32 0, i32 0
  store float %1792, ptr %1794, align 16, !tbaa !11
  %1795 = getelementptr inbounds %struct.complex, ptr %78, i32 0, i32 1
  %1796 = load float, ptr %1795, align 4, !tbaa !14
  %1797 = getelementptr inbounds [2 x %struct.complex], ptr %57, i64 0, i64 0
  %1798 = getelementptr inbounds %struct.complex, ptr %1797, i32 0, i32 1
  store float %1796, ptr %1798, align 4, !tbaa !14
  %1799 = load float, ptr %71, align 4, !tbaa !17
  %1800 = getelementptr inbounds [2 x %struct.complex], ptr %57, i64 0, i64 1
  %1801 = getelementptr inbounds %struct.complex, ptr %1800, i32 0, i32 0
  store float %1799, ptr %1801, align 8, !tbaa !11
  %1802 = getelementptr inbounds [2 x %struct.complex], ptr %57, i64 0, i64 1
  %1803 = getelementptr inbounds %struct.complex, ptr %1802, i32 0, i32 1
  store float 0.000000e+00, ptr %1803, align 4, !tbaa !14
  %1804 = load i64, ptr %53, align 8, !tbaa !9
  %1805 = load i64, ptr %53, align 8, !tbaa !9
  %1806 = sub nsw i64 %1805, 1
  %1807 = load i64, ptr %28, align 8, !tbaa !9
  %1808 = mul nsw i64 %1806, %1807
  %1809 = add nsw i64 %1804, %1808
  store i64 %1809, ptr %33, align 8, !tbaa !9
  %1810 = load ptr, ptr %20, align 8, !tbaa !5
  %1811 = load i64, ptr %33, align 8, !tbaa !9
  %1812 = getelementptr inbounds %struct.complex, ptr %1810, i64 %1811
  %1813 = getelementptr inbounds %struct.complex, ptr %1812, i32 0, i32 0
  %1814 = load float, ptr %1813, align 4, !tbaa !11
  store float %1814, ptr %69, align 4, !tbaa !17
  %1815 = load float, ptr %69, align 4, !tbaa !17
  %1816 = fcmp oge float %1815, 0.000000e+00
  br i1 %1816, label %1817, label %1819

1817:                                             ; preds = %1767
  %1818 = load float, ptr %69, align 4, !tbaa !17
  br label %1822

1819:                                             ; preds = %1767
  %1820 = load float, ptr %69, align 4, !tbaa !17
  %1821 = fneg float %1820
  br label %1822

1822:                                             ; preds = %1819, %1817
  %1823 = phi float [ %1818, %1817 ], [ %1821, %1819 ]
  %1824 = fpext float %1823 to double
  %1825 = load float, ptr %71, align 4, !tbaa !17
  %1826 = fcmp oge float %1825, 0.000000e+00
  br i1 %1826, label %1827, label %1829

1827:                                             ; preds = %1822
  %1828 = load float, ptr %71, align 4, !tbaa !17
  br label %1832

1829:                                             ; preds = %1822
  %1830 = load float, ptr %71, align 4, !tbaa !17
  %1831 = fneg float %1830
  br label %1832

1832:                                             ; preds = %1829, %1827
  %1833 = phi float [ %1828, %1827 ], [ %1831, %1829 ]
  %1834 = fpext float %1833 to double
  %1835 = fmul double %1824, %1834
  %1836 = load float, ptr %81, align 4, !tbaa !17
  %1837 = fpext float %1836 to double
  %1838 = getelementptr inbounds %struct.complex, ptr %78, i32 0, i32 0
  %1839 = load float, ptr %1838, align 4, !tbaa !11
  store float %1839, ptr %36, align 4, !tbaa !17
  %1840 = load float, ptr %36, align 4, !tbaa !17
  %1841 = fcmp oge float %1840, 0.000000e+00
  br i1 %1841, label %1842, label %1844

1842:                                             ; preds = %1832
  %1843 = load float, ptr %36, align 4, !tbaa !17
  br label %1847

1844:                                             ; preds = %1832
  %1845 = load float, ptr %36, align 4, !tbaa !17
  %1846 = fneg float %1845
  br label %1847

1847:                                             ; preds = %1844, %1842
  %1848 = phi float [ %1843, %1842 ], [ %1846, %1844 ]
  %1849 = fpext float %1848 to double
  %1850 = call double @r_imag(ptr noundef %78)
  %1851 = fptrunc double %1850 to float
  store float %1851, ptr %37, align 4, !tbaa !17
  %1852 = load float, ptr %37, align 4, !tbaa !17
  %1853 = fcmp oge float %1852, 0.000000e+00
  br i1 %1853, label %1854, label %1856

1854:                                             ; preds = %1847
  %1855 = load float, ptr %37, align 4, !tbaa !17
  br label %1859

1856:                                             ; preds = %1847
  %1857 = load float, ptr %37, align 4, !tbaa !17
  %1858 = fneg float %1857
  br label %1859

1859:                                             ; preds = %1856, %1854
  %1860 = phi float [ %1855, %1854 ], [ %1858, %1856 ]
  %1861 = fpext float %1860 to double
  %1862 = fadd double %1849, %1861
  %1863 = getelementptr inbounds %struct.complex, ptr %70, i32 0, i32 0
  %1864 = load float, ptr %1863, align 4, !tbaa !11
  store float %1864, ptr %38, align 4, !tbaa !17
  %1865 = load float, ptr %38, align 4, !tbaa !17
  %1866 = fcmp oge float %1865, 0.000000e+00
  br i1 %1866, label %1867, label %1869

1867:                                             ; preds = %1859
  %1868 = load float, ptr %38, align 4, !tbaa !17
  br label %1872

1869:                                             ; preds = %1859
  %1870 = load float, ptr %38, align 4, !tbaa !17
  %1871 = fneg float %1870
  br label %1872

1872:                                             ; preds = %1869, %1867
  %1873 = phi float [ %1868, %1867 ], [ %1871, %1869 ]
  %1874 = fpext float %1873 to double
  %1875 = call double @r_imag(ptr noundef %70)
  %1876 = fptrunc double %1875 to float
  store float %1876, ptr %39, align 4, !tbaa !17
  %1877 = load float, ptr %39, align 4, !tbaa !17
  %1878 = fcmp oge float %1877, 0.000000e+00
  br i1 %1878, label %1879, label %1881

1879:                                             ; preds = %1872
  %1880 = load float, ptr %39, align 4, !tbaa !17
  br label %1884

1881:                                             ; preds = %1872
  %1882 = load float, ptr %39, align 4, !tbaa !17
  %1883 = fneg float %1882
  br label %1884

1884:                                             ; preds = %1881, %1879
  %1885 = phi float [ %1880, %1879 ], [ %1883, %1881 ]
  %1886 = fpext float %1885 to double
  %1887 = fadd double %1874, %1886
  %1888 = getelementptr inbounds %struct.complex, ptr %72, i32 0, i32 0
  %1889 = load float, ptr %1888, align 4, !tbaa !11
  store float %1889, ptr %40, align 4, !tbaa !17
  %1890 = load float, ptr %40, align 4, !tbaa !17
  %1891 = fcmp oge float %1890, 0.000000e+00
  br i1 %1891, label %1892, label %1894

1892:                                             ; preds = %1884
  %1893 = load float, ptr %40, align 4, !tbaa !17
  br label %1897

1894:                                             ; preds = %1884
  %1895 = load float, ptr %40, align 4, !tbaa !17
  %1896 = fneg float %1895
  br label %1897

1897:                                             ; preds = %1894, %1892
  %1898 = phi float [ %1893, %1892 ], [ %1896, %1894 ]
  %1899 = fpext float %1898 to double
  %1900 = call double @r_imag(ptr noundef %72)
  %1901 = fptrunc double %1900 to float
  store float %1901, ptr %41, align 4, !tbaa !17
  %1902 = load float, ptr %41, align 4, !tbaa !17
  %1903 = fcmp oge float %1902, 0.000000e+00
  br i1 %1903, label %1904, label %1906

1904:                                             ; preds = %1897
  %1905 = load float, ptr %41, align 4, !tbaa !17
  br label %1909

1906:                                             ; preds = %1897
  %1907 = load float, ptr %41, align 4, !tbaa !17
  %1908 = fneg float %1907
  br label %1909

1909:                                             ; preds = %1906, %1904
  %1910 = phi float [ %1905, %1904 ], [ %1908, %1906 ]
  %1911 = fpext float %1910 to double
  %1912 = fadd double %1899, %1911
  %1913 = fadd double %1887, %1912
  %1914 = fmul double %1862, %1913
  %1915 = fmul double %1837, %1914
  %1916 = fcmp ole double %1835, %1915
  br i1 %1916, label %1917, label %1918

1917:                                             ; preds = %1909
  br label %2057

1918:                                             ; preds = %1909
  br label %1919

1919:                                             ; preds = %1918
  %1920 = load i64, ptr %53, align 8, !tbaa !9
  %1921 = add nsw i64 %1920, -1
  store i64 %1921, ptr %53, align 8, !tbaa !9
  br label %1665, !llvm.loop !20

1922:                                             ; preds = %1665
  %1923 = load i64, ptr %52, align 8, !tbaa !9
  %1924 = load i64, ptr %52, align 8, !tbaa !9
  %1925 = load i64, ptr %28, align 8, !tbaa !9
  %1926 = mul nsw i64 %1924, %1925
  %1927 = add nsw i64 %1923, %1926
  store i64 %1927, ptr %32, align 8, !tbaa !9
  %1928 = load ptr, ptr %20, align 8, !tbaa !5
  %1929 = load i64, ptr %32, align 8, !tbaa !9
  %1930 = getelementptr inbounds %struct.complex, ptr %1928, i64 %1929
  %1931 = getelementptr inbounds %struct.complex, ptr %1930, i32 0, i32 0
  %1932 = load float, ptr %1931, align 4, !tbaa !11
  %1933 = getelementptr inbounds %struct.complex, ptr %70, i32 0, i32 0
  store float %1932, ptr %1933, align 4, !tbaa !11
  %1934 = load ptr, ptr %20, align 8, !tbaa !5
  %1935 = load i64, ptr %32, align 8, !tbaa !9
  %1936 = getelementptr inbounds %struct.complex, ptr %1934, i64 %1935
  %1937 = getelementptr inbounds %struct.complex, ptr %1936, i32 0, i32 1
  %1938 = load float, ptr %1937, align 4, !tbaa !14
  %1939 = getelementptr inbounds %struct.complex, ptr %70, i32 0, i32 1
  store float %1938, ptr %1939, align 4, !tbaa !14
  %1940 = load i64, ptr %52, align 8, !tbaa !9
  %1941 = add nsw i64 %1940, 1
  %1942 = load i64, ptr %52, align 8, !tbaa !9
  %1943 = add nsw i64 %1942, 1
  %1944 = load i64, ptr %28, align 8, !tbaa !9
  %1945 = mul nsw i64 %1943, %1944
  %1946 = add nsw i64 %1941, %1945
  store i64 %1946, ptr %32, align 8, !tbaa !9
  %1947 = load ptr, ptr %20, align 8, !tbaa !5
  %1948 = load i64, ptr %32, align 8, !tbaa !9
  %1949 = getelementptr inbounds %struct.complex, ptr %1947, i64 %1948
  %1950 = getelementptr inbounds %struct.complex, ptr %1949, i32 0, i32 0
  %1951 = load float, ptr %1950, align 4, !tbaa !11
  %1952 = getelementptr inbounds %struct.complex, ptr %72, i32 0, i32 0
  store float %1951, ptr %1952, align 4, !tbaa !11
  %1953 = load ptr, ptr %20, align 8, !tbaa !5
  %1954 = load i64, ptr %32, align 8, !tbaa !9
  %1955 = getelementptr inbounds %struct.complex, ptr %1953, i64 %1954
  %1956 = getelementptr inbounds %struct.complex, ptr %1955, i32 0, i32 1
  %1957 = load float, ptr %1956, align 4, !tbaa !14
  %1958 = getelementptr inbounds %struct.complex, ptr %72, i32 0, i32 1
  store float %1957, ptr %1958, align 4, !tbaa !14
  %1959 = getelementptr inbounds %struct.complex, ptr %70, i32 0, i32 0
  %1960 = load float, ptr %1959, align 4, !tbaa !11
  %1961 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  %1962 = load float, ptr %1961, align 4, !tbaa !11
  %1963 = fsub float %1960, %1962
  %1964 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %1963, ptr %1964, align 4, !tbaa !11
  %1965 = getelementptr inbounds %struct.complex, ptr %70, i32 0, i32 1
  %1966 = load float, ptr %1965, align 4, !tbaa !14
  %1967 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  %1968 = load float, ptr %1967, align 4, !tbaa !14
  %1969 = fsub float %1966, %1968
  %1970 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %1969, ptr %1970, align 4, !tbaa !14
  %1971 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %1972 = load float, ptr %1971, align 4, !tbaa !11
  %1973 = getelementptr inbounds %struct.complex, ptr %78, i32 0, i32 0
  store float %1972, ptr %1973, align 4, !tbaa !11
  %1974 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %1975 = load float, ptr %1974, align 4, !tbaa !14
  %1976 = getelementptr inbounds %struct.complex, ptr %78, i32 0, i32 1
  store float %1975, ptr %1976, align 4, !tbaa !14
  %1977 = load i64, ptr %52, align 8, !tbaa !9
  %1978 = add nsw i64 %1977, 1
  %1979 = load i64, ptr %52, align 8, !tbaa !9
  %1980 = load i64, ptr %28, align 8, !tbaa !9
  %1981 = mul nsw i64 %1979, %1980
  %1982 = add nsw i64 %1978, %1981
  store i64 %1982, ptr %32, align 8, !tbaa !9
  %1983 = load ptr, ptr %20, align 8, !tbaa !5
  %1984 = load i64, ptr %32, align 8, !tbaa !9
  %1985 = getelementptr inbounds %struct.complex, ptr %1983, i64 %1984
  %1986 = getelementptr inbounds %struct.complex, ptr %1985, i32 0, i32 0
  %1987 = load float, ptr %1986, align 4, !tbaa !11
  store float %1987, ptr %71, align 4, !tbaa !17
  %1988 = getelementptr inbounds %struct.complex, ptr %78, i32 0, i32 0
  %1989 = load float, ptr %1988, align 4, !tbaa !11
  store float %1989, ptr %36, align 4, !tbaa !17
  %1990 = load float, ptr %36, align 4, !tbaa !17
  %1991 = fcmp oge float %1990, 0.000000e+00
  br i1 %1991, label %1992, label %1994

1992:                                             ; preds = %1922
  %1993 = load float, ptr %36, align 4, !tbaa !17
  br label %1997

1994:                                             ; preds = %1922
  %1995 = load float, ptr %36, align 4, !tbaa !17
  %1996 = fneg float %1995
  br label %1997

1997:                                             ; preds = %1994, %1992
  %1998 = phi float [ %1993, %1992 ], [ %1996, %1994 ]
  %1999 = fpext float %1998 to double
  %2000 = call double @r_imag(ptr noundef %78)
  %2001 = fptrunc double %2000 to float
  store float %2001, ptr %37, align 4, !tbaa !17
  %2002 = load float, ptr %37, align 4, !tbaa !17
  %2003 = fcmp oge float %2002, 0.000000e+00
  br i1 %2003, label %2004, label %2006

2004:                                             ; preds = %1997
  %2005 = load float, ptr %37, align 4, !tbaa !17
  br label %2009

2006:                                             ; preds = %1997
  %2007 = load float, ptr %37, align 4, !tbaa !17
  %2008 = fneg float %2007
  br label %2009

2009:                                             ; preds = %2006, %2004
  %2010 = phi float [ %2005, %2004 ], [ %2008, %2006 ]
  %2011 = fpext float %2010 to double
  %2012 = fadd double %1999, %2011
  %2013 = load float, ptr %71, align 4, !tbaa !17
  %2014 = fcmp oge float %2013, 0.000000e+00
  br i1 %2014, label %2015, label %2017

2015:                                             ; preds = %2009
  %2016 = load float, ptr %71, align 4, !tbaa !17
  br label %2020

2017:                                             ; preds = %2009
  %2018 = load float, ptr %71, align 4, !tbaa !17
  %2019 = fneg float %2018
  br label %2020

2020:                                             ; preds = %2017, %2015
  %2021 = phi float [ %2016, %2015 ], [ %2019, %2017 ]
  %2022 = fpext float %2021 to double
  %2023 = fadd double %2012, %2022
  %2024 = fptrunc double %2023 to float
  store float %2024, ptr %54, align 4, !tbaa !17
  %2025 = getelementptr inbounds %struct.complex, ptr %78, i32 0, i32 0
  %2026 = load float, ptr %2025, align 4, !tbaa !11
  %2027 = load float, ptr %54, align 4, !tbaa !17
  %2028 = fdiv float %2026, %2027
  %2029 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %2028, ptr %2029, align 4, !tbaa !11
  %2030 = getelementptr inbounds %struct.complex, ptr %78, i32 0, i32 1
  %2031 = load float, ptr %2030, align 4, !tbaa !14
  %2032 = load float, ptr %54, align 4, !tbaa !17
  %2033 = fdiv float %2031, %2032
  %2034 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %2033, ptr %2034, align 4, !tbaa !14
  %2035 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %2036 = load float, ptr %2035, align 4, !tbaa !11
  %2037 = getelementptr inbounds %struct.complex, ptr %78, i32 0, i32 0
  store float %2036, ptr %2037, align 4, !tbaa !11
  %2038 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %2039 = load float, ptr %2038, align 4, !tbaa !14
  %2040 = getelementptr inbounds %struct.complex, ptr %78, i32 0, i32 1
  store float %2039, ptr %2040, align 4, !tbaa !14
  %2041 = load float, ptr %54, align 4, !tbaa !17
  %2042 = load float, ptr %71, align 4, !tbaa !17
  %2043 = fdiv float %2042, %2041
  store float %2043, ptr %71, align 4, !tbaa !17
  %2044 = getelementptr inbounds %struct.complex, ptr %78, i32 0, i32 0
  %2045 = load float, ptr %2044, align 4, !tbaa !11
  %2046 = getelementptr inbounds [2 x %struct.complex], ptr %57, i64 0, i64 0
  %2047 = getelementptr inbounds %struct.complex, ptr %2046, i32 0, i32 0
  store float %2045, ptr %2047, align 16, !tbaa !11
  %2048 = getelementptr inbounds %struct.complex, ptr %78, i32 0, i32 1
  %2049 = load float, ptr %2048, align 4, !tbaa !14
  %2050 = getelementptr inbounds [2 x %struct.complex], ptr %57, i64 0, i64 0
  %2051 = getelementptr inbounds %struct.complex, ptr %2050, i32 0, i32 1
  store float %2049, ptr %2051, align 4, !tbaa !14
  %2052 = load float, ptr %71, align 4, !tbaa !17
  %2053 = getelementptr inbounds [2 x %struct.complex], ptr %57, i64 0, i64 1
  %2054 = getelementptr inbounds %struct.complex, ptr %2053, i32 0, i32 0
  store float %2052, ptr %2054, align 8, !tbaa !11
  %2055 = getelementptr inbounds [2 x %struct.complex], ptr %57, i64 0, i64 1
  %2056 = getelementptr inbounds %struct.complex, ptr %2055, i32 0, i32 1
  store float 0.000000e+00, ptr %2056, align 4, !tbaa !14
  br label %2057

2057:                                             ; preds = %2020, %1917
  %2058 = load i64, ptr %49, align 8, !tbaa !9
  %2059 = sub nsw i64 %2058, 1
  store i64 %2059, ptr %32, align 8, !tbaa !9
  %2060 = load i64, ptr %53, align 8, !tbaa !9
  store i64 %2060, ptr %51, align 8, !tbaa !9
  br label %2061

2061:                                             ; preds = %2989, %2057
  %2062 = load i64, ptr %51, align 8, !tbaa !9
  %2063 = load i64, ptr %32, align 8, !tbaa !9
  %2064 = icmp sle i64 %2062, %2063
  br i1 %2064, label %2065, label %2992

2065:                                             ; preds = %2061
  %2066 = load i64, ptr %51, align 8, !tbaa !9
  %2067 = load i64, ptr %53, align 8, !tbaa !9
  %2068 = icmp sgt i64 %2066, %2067
  br i1 %2068, label %2069, label %2080

2069:                                             ; preds = %2065
  %2070 = load ptr, ptr %20, align 8, !tbaa !5
  %2071 = load i64, ptr %51, align 8, !tbaa !9
  %2072 = load i64, ptr %51, align 8, !tbaa !9
  %2073 = sub nsw i64 %2072, 1
  %2074 = load i64, ptr %28, align 8, !tbaa !9
  %2075 = mul nsw i64 %2073, %2074
  %2076 = add nsw i64 %2071, %2075
  %2077 = getelementptr inbounds %struct.complex, ptr %2070, i64 %2076
  %2078 = getelementptr inbounds [2 x %struct.complex], ptr %57, i64 0, i64 0
  %2079 = call i32 @f2c_ccopy(ptr noundef @c__2, ptr noundef %2077, ptr noundef @c__1, ptr noundef %2078, ptr noundef @c__1)
  br label %2080

2080:                                             ; preds = %2069, %2065
  %2081 = getelementptr inbounds [2 x %struct.complex], ptr %57, i64 0, i64 0
  %2082 = getelementptr inbounds [2 x %struct.complex], ptr %57, i64 0, i64 1
  %2083 = call i32 @clarfg_(ptr noundef @c__2, ptr noundef %2081, ptr noundef %2082, ptr noundef @c__1, ptr noundef %62)
  %2084 = load i64, ptr %51, align 8, !tbaa !9
  %2085 = load i64, ptr %53, align 8, !tbaa !9
  %2086 = icmp sgt i64 %2084, %2085
  br i1 %2086, label %2087, label %2123

2087:                                             ; preds = %2080
  %2088 = load i64, ptr %51, align 8, !tbaa !9
  %2089 = load i64, ptr %51, align 8, !tbaa !9
  %2090 = sub nsw i64 %2089, 1
  %2091 = load i64, ptr %28, align 8, !tbaa !9
  %2092 = mul nsw i64 %2090, %2091
  %2093 = add nsw i64 %2088, %2092
  store i64 %2093, ptr %33, align 8, !tbaa !9
  %2094 = getelementptr inbounds [2 x %struct.complex], ptr %57, i64 0, i64 0
  %2095 = getelementptr inbounds %struct.complex, ptr %2094, i32 0, i32 0
  %2096 = load float, ptr %2095, align 16, !tbaa !11
  %2097 = load ptr, ptr %20, align 8, !tbaa !5
  %2098 = load i64, ptr %33, align 8, !tbaa !9
  %2099 = getelementptr inbounds %struct.complex, ptr %2097, i64 %2098
  %2100 = getelementptr inbounds %struct.complex, ptr %2099, i32 0, i32 0
  store float %2096, ptr %2100, align 4, !tbaa !11
  %2101 = getelementptr inbounds [2 x %struct.complex], ptr %57, i64 0, i64 0
  %2102 = getelementptr inbounds %struct.complex, ptr %2101, i32 0, i32 1
  %2103 = load float, ptr %2102, align 4, !tbaa !14
  %2104 = load ptr, ptr %20, align 8, !tbaa !5
  %2105 = load i64, ptr %33, align 8, !tbaa !9
  %2106 = getelementptr inbounds %struct.complex, ptr %2104, i64 %2105
  %2107 = getelementptr inbounds %struct.complex, ptr %2106, i32 0, i32 1
  store float %2103, ptr %2107, align 4, !tbaa !14
  %2108 = load i64, ptr %51, align 8, !tbaa !9
  %2109 = add nsw i64 %2108, 1
  %2110 = load i64, ptr %51, align 8, !tbaa !9
  %2111 = sub nsw i64 %2110, 1
  %2112 = load i64, ptr %28, align 8, !tbaa !9
  %2113 = mul nsw i64 %2111, %2112
  %2114 = add nsw i64 %2109, %2113
  store i64 %2114, ptr %33, align 8, !tbaa !9
  %2115 = load ptr, ptr %20, align 8, !tbaa !5
  %2116 = load i64, ptr %33, align 8, !tbaa !9
  %2117 = getelementptr inbounds %struct.complex, ptr %2115, i64 %2116
  %2118 = getelementptr inbounds %struct.complex, ptr %2117, i32 0, i32 0
  store float 0.000000e+00, ptr %2118, align 4, !tbaa !11
  %2119 = load ptr, ptr %20, align 8, !tbaa !5
  %2120 = load i64, ptr %33, align 8, !tbaa !9
  %2121 = getelementptr inbounds %struct.complex, ptr %2119, i64 %2120
  %2122 = getelementptr inbounds %struct.complex, ptr %2121, i32 0, i32 1
  store float 0.000000e+00, ptr %2122, align 4, !tbaa !14
  br label %2123

2123:                                             ; preds = %2087, %2080
  %2124 = getelementptr inbounds [2 x %struct.complex], ptr %57, i64 0, i64 1
  %2125 = getelementptr inbounds %struct.complex, ptr %2124, i32 0, i32 0
  %2126 = load float, ptr %2125, align 8, !tbaa !11
  %2127 = getelementptr inbounds %struct.complex, ptr %64, i32 0, i32 0
  store float %2126, ptr %2127, align 4, !tbaa !11
  %2128 = getelementptr inbounds [2 x %struct.complex], ptr %57, i64 0, i64 1
  %2129 = getelementptr inbounds %struct.complex, ptr %2128, i32 0, i32 1
  %2130 = load float, ptr %2129, align 4, !tbaa !14
  %2131 = getelementptr inbounds %struct.complex, ptr %64, i32 0, i32 1
  store float %2130, ptr %2131, align 4, !tbaa !14
  %2132 = getelementptr inbounds %struct.complex, ptr %62, i32 0, i32 0
  %2133 = load float, ptr %2132, align 4, !tbaa !11
  %2134 = getelementptr inbounds %struct.complex, ptr %64, i32 0, i32 0
  %2135 = load float, ptr %2134, align 4, !tbaa !11
  %2136 = getelementptr inbounds %struct.complex, ptr %62, i32 0, i32 1
  %2137 = load float, ptr %2136, align 4, !tbaa !14
  %2138 = getelementptr inbounds %struct.complex, ptr %64, i32 0, i32 1
  %2139 = load float, ptr %2138, align 4, !tbaa !14
  %2140 = fmul float %2137, %2139
  %2141 = fneg float %2140
  %2142 = call float @llvm.fmuladd.f32(float %2133, float %2135, float %2141)
  %2143 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %2142, ptr %2143, align 4, !tbaa !11
  %2144 = getelementptr inbounds %struct.complex, ptr %62, i32 0, i32 0
  %2145 = load float, ptr %2144, align 4, !tbaa !11
  %2146 = getelementptr inbounds %struct.complex, ptr %64, i32 0, i32 1
  %2147 = load float, ptr %2146, align 4, !tbaa !14
  %2148 = getelementptr inbounds %struct.complex, ptr %62, i32 0, i32 1
  %2149 = load float, ptr %2148, align 4, !tbaa !14
  %2150 = getelementptr inbounds %struct.complex, ptr %64, i32 0, i32 0
  %2151 = load float, ptr %2150, align 4, !tbaa !11
  %2152 = fmul float %2149, %2151
  %2153 = call float @llvm.fmuladd.f32(float %2145, float %2147, float %2152)
  %2154 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %2153, ptr %2154, align 4, !tbaa !14
  %2155 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %2156 = load float, ptr %2155, align 4, !tbaa !11
  store float %2156, ptr %63, align 4, !tbaa !17
  %2157 = load i64, ptr %61, align 8, !tbaa !9
  store i64 %2157, ptr %33, align 8, !tbaa !9
  %2158 = load i64, ptr %51, align 8, !tbaa !9
  store i64 %2158, ptr %50, align 8, !tbaa !9
  br label %2159

2159:                                             ; preds = %2349, %2123
  %2160 = load i64, ptr %50, align 8, !tbaa !9
  %2161 = load i64, ptr %33, align 8, !tbaa !9
  %2162 = icmp sle i64 %2160, %2161
  br i1 %2162, label %2163, label %2352

2163:                                             ; preds = %2159
  call void @r_cnjg(ptr noundef %44, ptr noundef %62)
  %2164 = load i64, ptr %51, align 8, !tbaa !9
  %2165 = load i64, ptr %50, align 8, !tbaa !9
  %2166 = load i64, ptr %28, align 8, !tbaa !9
  %2167 = mul nsw i64 %2165, %2166
  %2168 = add nsw i64 %2164, %2167
  store i64 %2168, ptr %34, align 8, !tbaa !9
  %2169 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 0
  %2170 = load float, ptr %2169, align 4, !tbaa !11
  %2171 = load ptr, ptr %20, align 8, !tbaa !5
  %2172 = load i64, ptr %34, align 8, !tbaa !9
  %2173 = getelementptr inbounds %struct.complex, ptr %2171, i64 %2172
  %2174 = getelementptr inbounds %struct.complex, ptr %2173, i32 0, i32 0
  %2175 = load float, ptr %2174, align 4, !tbaa !11
  %2176 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 1
  %2177 = load float, ptr %2176, align 4, !tbaa !14
  %2178 = load ptr, ptr %20, align 8, !tbaa !5
  %2179 = load i64, ptr %34, align 8, !tbaa !9
  %2180 = getelementptr inbounds %struct.complex, ptr %2178, i64 %2179
  %2181 = getelementptr inbounds %struct.complex, ptr %2180, i32 0, i32 1
  %2182 = load float, ptr %2181, align 4, !tbaa !14
  %2183 = fmul float %2177, %2182
  %2184 = fneg float %2183
  %2185 = call float @llvm.fmuladd.f32(float %2170, float %2175, float %2184)
  %2186 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  store float %2185, ptr %2186, align 4, !tbaa !11
  %2187 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 0
  %2188 = load float, ptr %2187, align 4, !tbaa !11
  %2189 = load ptr, ptr %20, align 8, !tbaa !5
  %2190 = load i64, ptr %34, align 8, !tbaa !9
  %2191 = getelementptr inbounds %struct.complex, ptr %2189, i64 %2190
  %2192 = getelementptr inbounds %struct.complex, ptr %2191, i32 0, i32 1
  %2193 = load float, ptr %2192, align 4, !tbaa !14
  %2194 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 1
  %2195 = load float, ptr %2194, align 4, !tbaa !14
  %2196 = load ptr, ptr %20, align 8, !tbaa !5
  %2197 = load i64, ptr %34, align 8, !tbaa !9
  %2198 = getelementptr inbounds %struct.complex, ptr %2196, i64 %2197
  %2199 = getelementptr inbounds %struct.complex, ptr %2198, i32 0, i32 0
  %2200 = load float, ptr %2199, align 4, !tbaa !11
  %2201 = fmul float %2195, %2200
  %2202 = call float @llvm.fmuladd.f32(float %2188, float %2193, float %2201)
  %2203 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  store float %2202, ptr %2203, align 4, !tbaa !14
  %2204 = load i64, ptr %51, align 8, !tbaa !9
  %2205 = add nsw i64 %2204, 1
  %2206 = load i64, ptr %50, align 8, !tbaa !9
  %2207 = load i64, ptr %28, align 8, !tbaa !9
  %2208 = mul nsw i64 %2206, %2207
  %2209 = add nsw i64 %2205, %2208
  store i64 %2209, ptr %35, align 8, !tbaa !9
  %2210 = load float, ptr %63, align 4, !tbaa !17
  %2211 = load ptr, ptr %20, align 8, !tbaa !5
  %2212 = load i64, ptr %35, align 8, !tbaa !9
  %2213 = getelementptr inbounds %struct.complex, ptr %2211, i64 %2212
  %2214 = getelementptr inbounds %struct.complex, ptr %2213, i32 0, i32 0
  %2215 = load float, ptr %2214, align 4, !tbaa !11
  %2216 = fmul float %2210, %2215
  %2217 = getelementptr inbounds %struct.complex, ptr %45, i32 0, i32 0
  store float %2216, ptr %2217, align 4, !tbaa !11
  %2218 = load float, ptr %63, align 4, !tbaa !17
  %2219 = load ptr, ptr %20, align 8, !tbaa !5
  %2220 = load i64, ptr %35, align 8, !tbaa !9
  %2221 = getelementptr inbounds %struct.complex, ptr %2219, i64 %2220
  %2222 = getelementptr inbounds %struct.complex, ptr %2221, i32 0, i32 1
  %2223 = load float, ptr %2222, align 4, !tbaa !14
  %2224 = fmul float %2218, %2223
  %2225 = getelementptr inbounds %struct.complex, ptr %45, i32 0, i32 1
  store float %2224, ptr %2225, align 4, !tbaa !14
  %2226 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %2227 = load float, ptr %2226, align 4, !tbaa !11
  %2228 = getelementptr inbounds %struct.complex, ptr %45, i32 0, i32 0
  %2229 = load float, ptr %2228, align 4, !tbaa !11
  %2230 = fadd float %2227, %2229
  %2231 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %2230, ptr %2231, align 4, !tbaa !11
  %2232 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %2233 = load float, ptr %2232, align 4, !tbaa !14
  %2234 = getelementptr inbounds %struct.complex, ptr %45, i32 0, i32 1
  %2235 = load float, ptr %2234, align 4, !tbaa !14
  %2236 = fadd float %2233, %2235
  %2237 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %2236, ptr %2237, align 4, !tbaa !14
  %2238 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %2239 = load float, ptr %2238, align 4, !tbaa !11
  %2240 = getelementptr inbounds %struct.complex, ptr %82, i32 0, i32 0
  store float %2239, ptr %2240, align 4, !tbaa !11
  %2241 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %2242 = load float, ptr %2241, align 4, !tbaa !14
  %2243 = getelementptr inbounds %struct.complex, ptr %82, i32 0, i32 1
  store float %2242, ptr %2243, align 4, !tbaa !14
  %2244 = load i64, ptr %51, align 8, !tbaa !9
  %2245 = load i64, ptr %50, align 8, !tbaa !9
  %2246 = load i64, ptr %28, align 8, !tbaa !9
  %2247 = mul nsw i64 %2245, %2246
  %2248 = add nsw i64 %2244, %2247
  store i64 %2248, ptr %34, align 8, !tbaa !9
  %2249 = load i64, ptr %51, align 8, !tbaa !9
  %2250 = load i64, ptr %50, align 8, !tbaa !9
  %2251 = load i64, ptr %28, align 8, !tbaa !9
  %2252 = mul nsw i64 %2250, %2251
  %2253 = add nsw i64 %2249, %2252
  store i64 %2253, ptr %35, align 8, !tbaa !9
  %2254 = load ptr, ptr %20, align 8, !tbaa !5
  %2255 = load i64, ptr %35, align 8, !tbaa !9
  %2256 = getelementptr inbounds %struct.complex, ptr %2254, i64 %2255
  %2257 = getelementptr inbounds %struct.complex, ptr %2256, i32 0, i32 0
  %2258 = load float, ptr %2257, align 4, !tbaa !11
  %2259 = getelementptr inbounds %struct.complex, ptr %82, i32 0, i32 0
  %2260 = load float, ptr %2259, align 4, !tbaa !11
  %2261 = fsub float %2258, %2260
  %2262 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %2261, ptr %2262, align 4, !tbaa !11
  %2263 = load ptr, ptr %20, align 8, !tbaa !5
  %2264 = load i64, ptr %35, align 8, !tbaa !9
  %2265 = getelementptr inbounds %struct.complex, ptr %2263, i64 %2264
  %2266 = getelementptr inbounds %struct.complex, ptr %2265, i32 0, i32 1
  %2267 = load float, ptr %2266, align 4, !tbaa !14
  %2268 = getelementptr inbounds %struct.complex, ptr %82, i32 0, i32 1
  %2269 = load float, ptr %2268, align 4, !tbaa !14
  %2270 = fsub float %2267, %2269
  %2271 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %2270, ptr %2271, align 4, !tbaa !14
  %2272 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %2273 = load float, ptr %2272, align 4, !tbaa !11
  %2274 = load ptr, ptr %20, align 8, !tbaa !5
  %2275 = load i64, ptr %34, align 8, !tbaa !9
  %2276 = getelementptr inbounds %struct.complex, ptr %2274, i64 %2275
  %2277 = getelementptr inbounds %struct.complex, ptr %2276, i32 0, i32 0
  store float %2273, ptr %2277, align 4, !tbaa !11
  %2278 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %2279 = load float, ptr %2278, align 4, !tbaa !14
  %2280 = load ptr, ptr %20, align 8, !tbaa !5
  %2281 = load i64, ptr %34, align 8, !tbaa !9
  %2282 = getelementptr inbounds %struct.complex, ptr %2280, i64 %2281
  %2283 = getelementptr inbounds %struct.complex, ptr %2282, i32 0, i32 1
  store float %2279, ptr %2283, align 4, !tbaa !14
  %2284 = load i64, ptr %51, align 8, !tbaa !9
  %2285 = add nsw i64 %2284, 1
  %2286 = load i64, ptr %50, align 8, !tbaa !9
  %2287 = load i64, ptr %28, align 8, !tbaa !9
  %2288 = mul nsw i64 %2286, %2287
  %2289 = add nsw i64 %2285, %2288
  store i64 %2289, ptr %34, align 8, !tbaa !9
  %2290 = load i64, ptr %51, align 8, !tbaa !9
  %2291 = add nsw i64 %2290, 1
  %2292 = load i64, ptr %50, align 8, !tbaa !9
  %2293 = load i64, ptr %28, align 8, !tbaa !9
  %2294 = mul nsw i64 %2292, %2293
  %2295 = add nsw i64 %2291, %2294
  store i64 %2295, ptr %35, align 8, !tbaa !9
  %2296 = getelementptr inbounds %struct.complex, ptr %82, i32 0, i32 0
  %2297 = load float, ptr %2296, align 4, !tbaa !11
  %2298 = getelementptr inbounds %struct.complex, ptr %64, i32 0, i32 0
  %2299 = load float, ptr %2298, align 4, !tbaa !11
  %2300 = getelementptr inbounds %struct.complex, ptr %82, i32 0, i32 1
  %2301 = load float, ptr %2300, align 4, !tbaa !14
  %2302 = getelementptr inbounds %struct.complex, ptr %64, i32 0, i32 1
  %2303 = load float, ptr %2302, align 4, !tbaa !14
  %2304 = fmul float %2301, %2303
  %2305 = fneg float %2304
  %2306 = call float @llvm.fmuladd.f32(float %2297, float %2299, float %2305)
  %2307 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  store float %2306, ptr %2307, align 4, !tbaa !11
  %2308 = getelementptr inbounds %struct.complex, ptr %82, i32 0, i32 0
  %2309 = load float, ptr %2308, align 4, !tbaa !11
  %2310 = getelementptr inbounds %struct.complex, ptr %64, i32 0, i32 1
  %2311 = load float, ptr %2310, align 4, !tbaa !14
  %2312 = getelementptr inbounds %struct.complex, ptr %82, i32 0, i32 1
  %2313 = load float, ptr %2312, align 4, !tbaa !14
  %2314 = getelementptr inbounds %struct.complex, ptr %64, i32 0, i32 0
  %2315 = load float, ptr %2314, align 4, !tbaa !11
  %2316 = fmul float %2313, %2315
  %2317 = call float @llvm.fmuladd.f32(float %2309, float %2311, float %2316)
  %2318 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  store float %2317, ptr %2318, align 4, !tbaa !14
  %2319 = load ptr, ptr %20, align 8, !tbaa !5
  %2320 = load i64, ptr %35, align 8, !tbaa !9
  %2321 = getelementptr inbounds %struct.complex, ptr %2319, i64 %2320
  %2322 = getelementptr inbounds %struct.complex, ptr %2321, i32 0, i32 0
  %2323 = load float, ptr %2322, align 4, !tbaa !11
  %2324 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %2325 = load float, ptr %2324, align 4, !tbaa !11
  %2326 = fsub float %2323, %2325
  %2327 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %2326, ptr %2327, align 4, !tbaa !11
  %2328 = load ptr, ptr %20, align 8, !tbaa !5
  %2329 = load i64, ptr %35, align 8, !tbaa !9
  %2330 = getelementptr inbounds %struct.complex, ptr %2328, i64 %2329
  %2331 = getelementptr inbounds %struct.complex, ptr %2330, i32 0, i32 1
  %2332 = load float, ptr %2331, align 4, !tbaa !14
  %2333 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %2334 = load float, ptr %2333, align 4, !tbaa !14
  %2335 = fsub float %2332, %2334
  %2336 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %2335, ptr %2336, align 4, !tbaa !14
  %2337 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %2338 = load float, ptr %2337, align 4, !tbaa !11
  %2339 = load ptr, ptr %20, align 8, !tbaa !5
  %2340 = load i64, ptr %34, align 8, !tbaa !9
  %2341 = getelementptr inbounds %struct.complex, ptr %2339, i64 %2340
  %2342 = getelementptr inbounds %struct.complex, ptr %2341, i32 0, i32 0
  store float %2338, ptr %2342, align 4, !tbaa !11
  %2343 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %2344 = load float, ptr %2343, align 4, !tbaa !14
  %2345 = load ptr, ptr %20, align 8, !tbaa !5
  %2346 = load i64, ptr %34, align 8, !tbaa !9
  %2347 = getelementptr inbounds %struct.complex, ptr %2345, i64 %2346
  %2348 = getelementptr inbounds %struct.complex, ptr %2347, i32 0, i32 1
  store float %2344, ptr %2348, align 4, !tbaa !14
  br label %2349

2349:                                             ; preds = %2163
  %2350 = load i64, ptr %50, align 8, !tbaa !9
  %2351 = add nsw i64 %2350, 1
  store i64 %2351, ptr %50, align 8, !tbaa !9
  br label %2159, !llvm.loop !21

2352:                                             ; preds = %2159
  %2353 = load i64, ptr %51, align 8, !tbaa !9
  %2354 = add nsw i64 %2353, 2
  store i64 %2354, ptr %34, align 8, !tbaa !9
  %2355 = load i64, ptr %34, align 8, !tbaa !9
  %2356 = load i64, ptr %49, align 8, !tbaa !9
  %2357 = icmp sle i64 %2355, %2356
  br i1 %2357, label %2358, label %2360

2358:                                             ; preds = %2352
  %2359 = load i64, ptr %34, align 8, !tbaa !9
  br label %2362

2360:                                             ; preds = %2352
  %2361 = load i64, ptr %49, align 8, !tbaa !9
  br label %2362

2362:                                             ; preds = %2360, %2358
  %2363 = phi i64 [ %2359, %2358 ], [ %2361, %2360 ]
  store i64 %2363, ptr %33, align 8, !tbaa !9
  %2364 = load i64, ptr %60, align 8, !tbaa !9
  store i64 %2364, ptr %50, align 8, !tbaa !9
  br label %2365

2365:                                             ; preds = %2555, %2362
  %2366 = load i64, ptr %50, align 8, !tbaa !9
  %2367 = load i64, ptr %33, align 8, !tbaa !9
  %2368 = icmp sle i64 %2366, %2367
  br i1 %2368, label %2369, label %2558

2369:                                             ; preds = %2365
  %2370 = load i64, ptr %50, align 8, !tbaa !9
  %2371 = load i64, ptr %51, align 8, !tbaa !9
  %2372 = load i64, ptr %28, align 8, !tbaa !9
  %2373 = mul nsw i64 %2371, %2372
  %2374 = add nsw i64 %2370, %2373
  store i64 %2374, ptr %34, align 8, !tbaa !9
  %2375 = getelementptr inbounds %struct.complex, ptr %62, i32 0, i32 0
  %2376 = load float, ptr %2375, align 4, !tbaa !11
  %2377 = load ptr, ptr %20, align 8, !tbaa !5
  %2378 = load i64, ptr %34, align 8, !tbaa !9
  %2379 = getelementptr inbounds %struct.complex, ptr %2377, i64 %2378
  %2380 = getelementptr inbounds %struct.complex, ptr %2379, i32 0, i32 0
  %2381 = load float, ptr %2380, align 4, !tbaa !11
  %2382 = getelementptr inbounds %struct.complex, ptr %62, i32 0, i32 1
  %2383 = load float, ptr %2382, align 4, !tbaa !14
  %2384 = load ptr, ptr %20, align 8, !tbaa !5
  %2385 = load i64, ptr %34, align 8, !tbaa !9
  %2386 = getelementptr inbounds %struct.complex, ptr %2384, i64 %2385
  %2387 = getelementptr inbounds %struct.complex, ptr %2386, i32 0, i32 1
  %2388 = load float, ptr %2387, align 4, !tbaa !14
  %2389 = fmul float %2383, %2388
  %2390 = fneg float %2389
  %2391 = call float @llvm.fmuladd.f32(float %2376, float %2381, float %2390)
  %2392 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  store float %2391, ptr %2392, align 4, !tbaa !11
  %2393 = getelementptr inbounds %struct.complex, ptr %62, i32 0, i32 0
  %2394 = load float, ptr %2393, align 4, !tbaa !11
  %2395 = load ptr, ptr %20, align 8, !tbaa !5
  %2396 = load i64, ptr %34, align 8, !tbaa !9
  %2397 = getelementptr inbounds %struct.complex, ptr %2395, i64 %2396
  %2398 = getelementptr inbounds %struct.complex, ptr %2397, i32 0, i32 1
  %2399 = load float, ptr %2398, align 4, !tbaa !14
  %2400 = getelementptr inbounds %struct.complex, ptr %62, i32 0, i32 1
  %2401 = load float, ptr %2400, align 4, !tbaa !14
  %2402 = load ptr, ptr %20, align 8, !tbaa !5
  %2403 = load i64, ptr %34, align 8, !tbaa !9
  %2404 = getelementptr inbounds %struct.complex, ptr %2402, i64 %2403
  %2405 = getelementptr inbounds %struct.complex, ptr %2404, i32 0, i32 0
  %2406 = load float, ptr %2405, align 4, !tbaa !11
  %2407 = fmul float %2401, %2406
  %2408 = call float @llvm.fmuladd.f32(float %2394, float %2399, float %2407)
  %2409 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  store float %2408, ptr %2409, align 4, !tbaa !14
  %2410 = load i64, ptr %50, align 8, !tbaa !9
  %2411 = load i64, ptr %51, align 8, !tbaa !9
  %2412 = add nsw i64 %2411, 1
  %2413 = load i64, ptr %28, align 8, !tbaa !9
  %2414 = mul nsw i64 %2412, %2413
  %2415 = add nsw i64 %2410, %2414
  store i64 %2415, ptr %35, align 8, !tbaa !9
  %2416 = load float, ptr %63, align 4, !tbaa !17
  %2417 = load ptr, ptr %20, align 8, !tbaa !5
  %2418 = load i64, ptr %35, align 8, !tbaa !9
  %2419 = getelementptr inbounds %struct.complex, ptr %2417, i64 %2418
  %2420 = getelementptr inbounds %struct.complex, ptr %2419, i32 0, i32 0
  %2421 = load float, ptr %2420, align 4, !tbaa !11
  %2422 = fmul float %2416, %2421
  %2423 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 0
  store float %2422, ptr %2423, align 4, !tbaa !11
  %2424 = load float, ptr %63, align 4, !tbaa !17
  %2425 = load ptr, ptr %20, align 8, !tbaa !5
  %2426 = load i64, ptr %35, align 8, !tbaa !9
  %2427 = getelementptr inbounds %struct.complex, ptr %2425, i64 %2426
  %2428 = getelementptr inbounds %struct.complex, ptr %2427, i32 0, i32 1
  %2429 = load float, ptr %2428, align 4, !tbaa !14
  %2430 = fmul float %2424, %2429
  %2431 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 1
  store float %2430, ptr %2431, align 4, !tbaa !14
  %2432 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %2433 = load float, ptr %2432, align 4, !tbaa !11
  %2434 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 0
  %2435 = load float, ptr %2434, align 4, !tbaa !11
  %2436 = fadd float %2433, %2435
  %2437 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %2436, ptr %2437, align 4, !tbaa !11
  %2438 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %2439 = load float, ptr %2438, align 4, !tbaa !14
  %2440 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 1
  %2441 = load float, ptr %2440, align 4, !tbaa !14
  %2442 = fadd float %2439, %2441
  %2443 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %2442, ptr %2443, align 4, !tbaa !14
  %2444 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %2445 = load float, ptr %2444, align 4, !tbaa !11
  %2446 = getelementptr inbounds %struct.complex, ptr %82, i32 0, i32 0
  store float %2445, ptr %2446, align 4, !tbaa !11
  %2447 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %2448 = load float, ptr %2447, align 4, !tbaa !14
  %2449 = getelementptr inbounds %struct.complex, ptr %82, i32 0, i32 1
  store float %2448, ptr %2449, align 4, !tbaa !14
  %2450 = load i64, ptr %50, align 8, !tbaa !9
  %2451 = load i64, ptr %51, align 8, !tbaa !9
  %2452 = load i64, ptr %28, align 8, !tbaa !9
  %2453 = mul nsw i64 %2451, %2452
  %2454 = add nsw i64 %2450, %2453
  store i64 %2454, ptr %34, align 8, !tbaa !9
  %2455 = load i64, ptr %50, align 8, !tbaa !9
  %2456 = load i64, ptr %51, align 8, !tbaa !9
  %2457 = load i64, ptr %28, align 8, !tbaa !9
  %2458 = mul nsw i64 %2456, %2457
  %2459 = add nsw i64 %2455, %2458
  store i64 %2459, ptr %35, align 8, !tbaa !9
  %2460 = load ptr, ptr %20, align 8, !tbaa !5
  %2461 = load i64, ptr %35, align 8, !tbaa !9
  %2462 = getelementptr inbounds %struct.complex, ptr %2460, i64 %2461
  %2463 = getelementptr inbounds %struct.complex, ptr %2462, i32 0, i32 0
  %2464 = load float, ptr %2463, align 4, !tbaa !11
  %2465 = getelementptr inbounds %struct.complex, ptr %82, i32 0, i32 0
  %2466 = load float, ptr %2465, align 4, !tbaa !11
  %2467 = fsub float %2464, %2466
  %2468 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %2467, ptr %2468, align 4, !tbaa !11
  %2469 = load ptr, ptr %20, align 8, !tbaa !5
  %2470 = load i64, ptr %35, align 8, !tbaa !9
  %2471 = getelementptr inbounds %struct.complex, ptr %2469, i64 %2470
  %2472 = getelementptr inbounds %struct.complex, ptr %2471, i32 0, i32 1
  %2473 = load float, ptr %2472, align 4, !tbaa !14
  %2474 = getelementptr inbounds %struct.complex, ptr %82, i32 0, i32 1
  %2475 = load float, ptr %2474, align 4, !tbaa !14
  %2476 = fsub float %2473, %2475
  %2477 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %2476, ptr %2477, align 4, !tbaa !14
  %2478 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %2479 = load float, ptr %2478, align 4, !tbaa !11
  %2480 = load ptr, ptr %20, align 8, !tbaa !5
  %2481 = load i64, ptr %34, align 8, !tbaa !9
  %2482 = getelementptr inbounds %struct.complex, ptr %2480, i64 %2481
  %2483 = getelementptr inbounds %struct.complex, ptr %2482, i32 0, i32 0
  store float %2479, ptr %2483, align 4, !tbaa !11
  %2484 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %2485 = load float, ptr %2484, align 4, !tbaa !14
  %2486 = load ptr, ptr %20, align 8, !tbaa !5
  %2487 = load i64, ptr %34, align 8, !tbaa !9
  %2488 = getelementptr inbounds %struct.complex, ptr %2486, i64 %2487
  %2489 = getelementptr inbounds %struct.complex, ptr %2488, i32 0, i32 1
  store float %2485, ptr %2489, align 4, !tbaa !14
  %2490 = load i64, ptr %50, align 8, !tbaa !9
  %2491 = load i64, ptr %51, align 8, !tbaa !9
  %2492 = add nsw i64 %2491, 1
  %2493 = load i64, ptr %28, align 8, !tbaa !9
  %2494 = mul nsw i64 %2492, %2493
  %2495 = add nsw i64 %2490, %2494
  store i64 %2495, ptr %34, align 8, !tbaa !9
  %2496 = load i64, ptr %50, align 8, !tbaa !9
  %2497 = load i64, ptr %51, align 8, !tbaa !9
  %2498 = add nsw i64 %2497, 1
  %2499 = load i64, ptr %28, align 8, !tbaa !9
  %2500 = mul nsw i64 %2498, %2499
  %2501 = add nsw i64 %2496, %2500
  store i64 %2501, ptr %35, align 8, !tbaa !9
  call void @r_cnjg(ptr noundef %44, ptr noundef %64)
  %2502 = getelementptr inbounds %struct.complex, ptr %82, i32 0, i32 0
  %2503 = load float, ptr %2502, align 4, !tbaa !11
  %2504 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 0
  %2505 = load float, ptr %2504, align 4, !tbaa !11
  %2506 = getelementptr inbounds %struct.complex, ptr %82, i32 0, i32 1
  %2507 = load float, ptr %2506, align 4, !tbaa !14
  %2508 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 1
  %2509 = load float, ptr %2508, align 4, !tbaa !14
  %2510 = fmul float %2507, %2509
  %2511 = fneg float %2510
  %2512 = call float @llvm.fmuladd.f32(float %2503, float %2505, float %2511)
  %2513 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  store float %2512, ptr %2513, align 4, !tbaa !11
  %2514 = getelementptr inbounds %struct.complex, ptr %82, i32 0, i32 0
  %2515 = load float, ptr %2514, align 4, !tbaa !11
  %2516 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 1
  %2517 = load float, ptr %2516, align 4, !tbaa !14
  %2518 = getelementptr inbounds %struct.complex, ptr %82, i32 0, i32 1
  %2519 = load float, ptr %2518, align 4, !tbaa !14
  %2520 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 0
  %2521 = load float, ptr %2520, align 4, !tbaa !11
  %2522 = fmul float %2519, %2521
  %2523 = call float @llvm.fmuladd.f32(float %2515, float %2517, float %2522)
  %2524 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  store float %2523, ptr %2524, align 4, !tbaa !14
  %2525 = load ptr, ptr %20, align 8, !tbaa !5
  %2526 = load i64, ptr %35, align 8, !tbaa !9
  %2527 = getelementptr inbounds %struct.complex, ptr %2525, i64 %2526
  %2528 = getelementptr inbounds %struct.complex, ptr %2527, i32 0, i32 0
  %2529 = load float, ptr %2528, align 4, !tbaa !11
  %2530 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %2531 = load float, ptr %2530, align 4, !tbaa !11
  %2532 = fsub float %2529, %2531
  %2533 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %2532, ptr %2533, align 4, !tbaa !11
  %2534 = load ptr, ptr %20, align 8, !tbaa !5
  %2535 = load i64, ptr %35, align 8, !tbaa !9
  %2536 = getelementptr inbounds %struct.complex, ptr %2534, i64 %2535
  %2537 = getelementptr inbounds %struct.complex, ptr %2536, i32 0, i32 1
  %2538 = load float, ptr %2537, align 4, !tbaa !14
  %2539 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %2540 = load float, ptr %2539, align 4, !tbaa !14
  %2541 = fsub float %2538, %2540
  %2542 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %2541, ptr %2542, align 4, !tbaa !14
  %2543 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %2544 = load float, ptr %2543, align 4, !tbaa !11
  %2545 = load ptr, ptr %20, align 8, !tbaa !5
  %2546 = load i64, ptr %34, align 8, !tbaa !9
  %2547 = getelementptr inbounds %struct.complex, ptr %2545, i64 %2546
  %2548 = getelementptr inbounds %struct.complex, ptr %2547, i32 0, i32 0
  store float %2544, ptr %2548, align 4, !tbaa !11
  %2549 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %2550 = load float, ptr %2549, align 4, !tbaa !14
  %2551 = load ptr, ptr %20, align 8, !tbaa !5
  %2552 = load i64, ptr %34, align 8, !tbaa !9
  %2553 = getelementptr inbounds %struct.complex, ptr %2551, i64 %2552
  %2554 = getelementptr inbounds %struct.complex, ptr %2553, i32 0, i32 1
  store float %2550, ptr %2554, align 4, !tbaa !14
  br label %2555

2555:                                             ; preds = %2369
  %2556 = load i64, ptr %50, align 8, !tbaa !9
  %2557 = add nsw i64 %2556, 1
  store i64 %2557, ptr %50, align 8, !tbaa !9
  br label %2365, !llvm.loop !22

2558:                                             ; preds = %2365
  %2559 = load ptr, ptr %16, align 8, !tbaa !5
  %2560 = load i64, ptr %2559, align 8, !tbaa !9
  %2561 = icmp ne i64 %2560, 0
  br i1 %2561, label %2562, label %2761

2562:                                             ; preds = %2558
  %2563 = load ptr, ptr %24, align 8, !tbaa !5
  %2564 = load i64, ptr %2563, align 8, !tbaa !9
  store i64 %2564, ptr %33, align 8, !tbaa !9
  %2565 = load ptr, ptr %23, align 8, !tbaa !5
  %2566 = load i64, ptr %2565, align 8, !tbaa !9
  store i64 %2566, ptr %50, align 8, !tbaa !9
  br label %2567

2567:                                             ; preds = %2757, %2562
  %2568 = load i64, ptr %50, align 8, !tbaa !9
  %2569 = load i64, ptr %33, align 8, !tbaa !9
  %2570 = icmp sle i64 %2568, %2569
  br i1 %2570, label %2571, label %2760

2571:                                             ; preds = %2567
  %2572 = load i64, ptr %50, align 8, !tbaa !9
  %2573 = load i64, ptr %51, align 8, !tbaa !9
  %2574 = load i64, ptr %30, align 8, !tbaa !9
  %2575 = mul nsw i64 %2573, %2574
  %2576 = add nsw i64 %2572, %2575
  store i64 %2576, ptr %34, align 8, !tbaa !9
  %2577 = getelementptr inbounds %struct.complex, ptr %62, i32 0, i32 0
  %2578 = load float, ptr %2577, align 4, !tbaa !11
  %2579 = load ptr, ptr %25, align 8, !tbaa !5
  %2580 = load i64, ptr %34, align 8, !tbaa !9
  %2581 = getelementptr inbounds %struct.complex, ptr %2579, i64 %2580
  %2582 = getelementptr inbounds %struct.complex, ptr %2581, i32 0, i32 0
  %2583 = load float, ptr %2582, align 4, !tbaa !11
  %2584 = getelementptr inbounds %struct.complex, ptr %62, i32 0, i32 1
  %2585 = load float, ptr %2584, align 4, !tbaa !14
  %2586 = load ptr, ptr %25, align 8, !tbaa !5
  %2587 = load i64, ptr %34, align 8, !tbaa !9
  %2588 = getelementptr inbounds %struct.complex, ptr %2586, i64 %2587
  %2589 = getelementptr inbounds %struct.complex, ptr %2588, i32 0, i32 1
  %2590 = load float, ptr %2589, align 4, !tbaa !14
  %2591 = fmul float %2585, %2590
  %2592 = fneg float %2591
  %2593 = call float @llvm.fmuladd.f32(float %2578, float %2583, float %2592)
  %2594 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  store float %2593, ptr %2594, align 4, !tbaa !11
  %2595 = getelementptr inbounds %struct.complex, ptr %62, i32 0, i32 0
  %2596 = load float, ptr %2595, align 4, !tbaa !11
  %2597 = load ptr, ptr %25, align 8, !tbaa !5
  %2598 = load i64, ptr %34, align 8, !tbaa !9
  %2599 = getelementptr inbounds %struct.complex, ptr %2597, i64 %2598
  %2600 = getelementptr inbounds %struct.complex, ptr %2599, i32 0, i32 1
  %2601 = load float, ptr %2600, align 4, !tbaa !14
  %2602 = getelementptr inbounds %struct.complex, ptr %62, i32 0, i32 1
  %2603 = load float, ptr %2602, align 4, !tbaa !14
  %2604 = load ptr, ptr %25, align 8, !tbaa !5
  %2605 = load i64, ptr %34, align 8, !tbaa !9
  %2606 = getelementptr inbounds %struct.complex, ptr %2604, i64 %2605
  %2607 = getelementptr inbounds %struct.complex, ptr %2606, i32 0, i32 0
  %2608 = load float, ptr %2607, align 4, !tbaa !11
  %2609 = fmul float %2603, %2608
  %2610 = call float @llvm.fmuladd.f32(float %2596, float %2601, float %2609)
  %2611 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  store float %2610, ptr %2611, align 4, !tbaa !14
  %2612 = load i64, ptr %50, align 8, !tbaa !9
  %2613 = load i64, ptr %51, align 8, !tbaa !9
  %2614 = add nsw i64 %2613, 1
  %2615 = load i64, ptr %30, align 8, !tbaa !9
  %2616 = mul nsw i64 %2614, %2615
  %2617 = add nsw i64 %2612, %2616
  store i64 %2617, ptr %35, align 8, !tbaa !9
  %2618 = load float, ptr %63, align 4, !tbaa !17
  %2619 = load ptr, ptr %25, align 8, !tbaa !5
  %2620 = load i64, ptr %35, align 8, !tbaa !9
  %2621 = getelementptr inbounds %struct.complex, ptr %2619, i64 %2620
  %2622 = getelementptr inbounds %struct.complex, ptr %2621, i32 0, i32 0
  %2623 = load float, ptr %2622, align 4, !tbaa !11
  %2624 = fmul float %2618, %2623
  %2625 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 0
  store float %2624, ptr %2625, align 4, !tbaa !11
  %2626 = load float, ptr %63, align 4, !tbaa !17
  %2627 = load ptr, ptr %25, align 8, !tbaa !5
  %2628 = load i64, ptr %35, align 8, !tbaa !9
  %2629 = getelementptr inbounds %struct.complex, ptr %2627, i64 %2628
  %2630 = getelementptr inbounds %struct.complex, ptr %2629, i32 0, i32 1
  %2631 = load float, ptr %2630, align 4, !tbaa !14
  %2632 = fmul float %2626, %2631
  %2633 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 1
  store float %2632, ptr %2633, align 4, !tbaa !14
  %2634 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %2635 = load float, ptr %2634, align 4, !tbaa !11
  %2636 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 0
  %2637 = load float, ptr %2636, align 4, !tbaa !11
  %2638 = fadd float %2635, %2637
  %2639 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %2638, ptr %2639, align 4, !tbaa !11
  %2640 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %2641 = load float, ptr %2640, align 4, !tbaa !14
  %2642 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 1
  %2643 = load float, ptr %2642, align 4, !tbaa !14
  %2644 = fadd float %2641, %2643
  %2645 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %2644, ptr %2645, align 4, !tbaa !14
  %2646 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %2647 = load float, ptr %2646, align 4, !tbaa !11
  %2648 = getelementptr inbounds %struct.complex, ptr %82, i32 0, i32 0
  store float %2647, ptr %2648, align 4, !tbaa !11
  %2649 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %2650 = load float, ptr %2649, align 4, !tbaa !14
  %2651 = getelementptr inbounds %struct.complex, ptr %82, i32 0, i32 1
  store float %2650, ptr %2651, align 4, !tbaa !14
  %2652 = load i64, ptr %50, align 8, !tbaa !9
  %2653 = load i64, ptr %51, align 8, !tbaa !9
  %2654 = load i64, ptr %30, align 8, !tbaa !9
  %2655 = mul nsw i64 %2653, %2654
  %2656 = add nsw i64 %2652, %2655
  store i64 %2656, ptr %34, align 8, !tbaa !9
  %2657 = load i64, ptr %50, align 8, !tbaa !9
  %2658 = load i64, ptr %51, align 8, !tbaa !9
  %2659 = load i64, ptr %30, align 8, !tbaa !9
  %2660 = mul nsw i64 %2658, %2659
  %2661 = add nsw i64 %2657, %2660
  store i64 %2661, ptr %35, align 8, !tbaa !9
  %2662 = load ptr, ptr %25, align 8, !tbaa !5
  %2663 = load i64, ptr %35, align 8, !tbaa !9
  %2664 = getelementptr inbounds %struct.complex, ptr %2662, i64 %2663
  %2665 = getelementptr inbounds %struct.complex, ptr %2664, i32 0, i32 0
  %2666 = load float, ptr %2665, align 4, !tbaa !11
  %2667 = getelementptr inbounds %struct.complex, ptr %82, i32 0, i32 0
  %2668 = load float, ptr %2667, align 4, !tbaa !11
  %2669 = fsub float %2666, %2668
  %2670 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %2669, ptr %2670, align 4, !tbaa !11
  %2671 = load ptr, ptr %25, align 8, !tbaa !5
  %2672 = load i64, ptr %35, align 8, !tbaa !9
  %2673 = getelementptr inbounds %struct.complex, ptr %2671, i64 %2672
  %2674 = getelementptr inbounds %struct.complex, ptr %2673, i32 0, i32 1
  %2675 = load float, ptr %2674, align 4, !tbaa !14
  %2676 = getelementptr inbounds %struct.complex, ptr %82, i32 0, i32 1
  %2677 = load float, ptr %2676, align 4, !tbaa !14
  %2678 = fsub float %2675, %2677
  %2679 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %2678, ptr %2679, align 4, !tbaa !14
  %2680 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %2681 = load float, ptr %2680, align 4, !tbaa !11
  %2682 = load ptr, ptr %25, align 8, !tbaa !5
  %2683 = load i64, ptr %34, align 8, !tbaa !9
  %2684 = getelementptr inbounds %struct.complex, ptr %2682, i64 %2683
  %2685 = getelementptr inbounds %struct.complex, ptr %2684, i32 0, i32 0
  store float %2681, ptr %2685, align 4, !tbaa !11
  %2686 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %2687 = load float, ptr %2686, align 4, !tbaa !14
  %2688 = load ptr, ptr %25, align 8, !tbaa !5
  %2689 = load i64, ptr %34, align 8, !tbaa !9
  %2690 = getelementptr inbounds %struct.complex, ptr %2688, i64 %2689
  %2691 = getelementptr inbounds %struct.complex, ptr %2690, i32 0, i32 1
  store float %2687, ptr %2691, align 4, !tbaa !14
  %2692 = load i64, ptr %50, align 8, !tbaa !9
  %2693 = load i64, ptr %51, align 8, !tbaa !9
  %2694 = add nsw i64 %2693, 1
  %2695 = load i64, ptr %30, align 8, !tbaa !9
  %2696 = mul nsw i64 %2694, %2695
  %2697 = add nsw i64 %2692, %2696
  store i64 %2697, ptr %34, align 8, !tbaa !9
  %2698 = load i64, ptr %50, align 8, !tbaa !9
  %2699 = load i64, ptr %51, align 8, !tbaa !9
  %2700 = add nsw i64 %2699, 1
  %2701 = load i64, ptr %30, align 8, !tbaa !9
  %2702 = mul nsw i64 %2700, %2701
  %2703 = add nsw i64 %2698, %2702
  store i64 %2703, ptr %35, align 8, !tbaa !9
  call void @r_cnjg(ptr noundef %44, ptr noundef %64)
  %2704 = getelementptr inbounds %struct.complex, ptr %82, i32 0, i32 0
  %2705 = load float, ptr %2704, align 4, !tbaa !11
  %2706 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 0
  %2707 = load float, ptr %2706, align 4, !tbaa !11
  %2708 = getelementptr inbounds %struct.complex, ptr %82, i32 0, i32 1
  %2709 = load float, ptr %2708, align 4, !tbaa !14
  %2710 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 1
  %2711 = load float, ptr %2710, align 4, !tbaa !14
  %2712 = fmul float %2709, %2711
  %2713 = fneg float %2712
  %2714 = call float @llvm.fmuladd.f32(float %2705, float %2707, float %2713)
  %2715 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  store float %2714, ptr %2715, align 4, !tbaa !11
  %2716 = getelementptr inbounds %struct.complex, ptr %82, i32 0, i32 0
  %2717 = load float, ptr %2716, align 4, !tbaa !11
  %2718 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 1
  %2719 = load float, ptr %2718, align 4, !tbaa !14
  %2720 = getelementptr inbounds %struct.complex, ptr %82, i32 0, i32 1
  %2721 = load float, ptr %2720, align 4, !tbaa !14
  %2722 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 0
  %2723 = load float, ptr %2722, align 4, !tbaa !11
  %2724 = fmul float %2721, %2723
  %2725 = call float @llvm.fmuladd.f32(float %2717, float %2719, float %2724)
  %2726 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  store float %2725, ptr %2726, align 4, !tbaa !14
  %2727 = load ptr, ptr %25, align 8, !tbaa !5
  %2728 = load i64, ptr %35, align 8, !tbaa !9
  %2729 = getelementptr inbounds %struct.complex, ptr %2727, i64 %2728
  %2730 = getelementptr inbounds %struct.complex, ptr %2729, i32 0, i32 0
  %2731 = load float, ptr %2730, align 4, !tbaa !11
  %2732 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %2733 = load float, ptr %2732, align 4, !tbaa !11
  %2734 = fsub float %2731, %2733
  %2735 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %2734, ptr %2735, align 4, !tbaa !11
  %2736 = load ptr, ptr %25, align 8, !tbaa !5
  %2737 = load i64, ptr %35, align 8, !tbaa !9
  %2738 = getelementptr inbounds %struct.complex, ptr %2736, i64 %2737
  %2739 = getelementptr inbounds %struct.complex, ptr %2738, i32 0, i32 1
  %2740 = load float, ptr %2739, align 4, !tbaa !14
  %2741 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %2742 = load float, ptr %2741, align 4, !tbaa !14
  %2743 = fsub float %2740, %2742
  %2744 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %2743, ptr %2744, align 4, !tbaa !14
  %2745 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %2746 = load float, ptr %2745, align 4, !tbaa !11
  %2747 = load ptr, ptr %25, align 8, !tbaa !5
  %2748 = load i64, ptr %34, align 8, !tbaa !9
  %2749 = getelementptr inbounds %struct.complex, ptr %2747, i64 %2748
  %2750 = getelementptr inbounds %struct.complex, ptr %2749, i32 0, i32 0
  store float %2746, ptr %2750, align 4, !tbaa !11
  %2751 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %2752 = load float, ptr %2751, align 4, !tbaa !14
  %2753 = load ptr, ptr %25, align 8, !tbaa !5
  %2754 = load i64, ptr %34, align 8, !tbaa !9
  %2755 = getelementptr inbounds %struct.complex, ptr %2753, i64 %2754
  %2756 = getelementptr inbounds %struct.complex, ptr %2755, i32 0, i32 1
  store float %2752, ptr %2756, align 4, !tbaa !14
  br label %2757

2757:                                             ; preds = %2571
  %2758 = load i64, ptr %50, align 8, !tbaa !9
  %2759 = add nsw i64 %2758, 1
  store i64 %2759, ptr %50, align 8, !tbaa !9
  br label %2567, !llvm.loop !23

2760:                                             ; preds = %2567
  br label %2761

2761:                                             ; preds = %2760, %2558
  %2762 = load i64, ptr %51, align 8, !tbaa !9
  %2763 = load i64, ptr %53, align 8, !tbaa !9
  %2764 = icmp eq i64 %2762, %2763
  br i1 %2764, label %2765, label %2988

2765:                                             ; preds = %2761
  %2766 = load i64, ptr %53, align 8, !tbaa !9
  %2767 = load i64, ptr %52, align 8, !tbaa !9
  %2768 = icmp sgt i64 %2766, %2767
  br i1 %2768, label %2769, label %2988

2769:                                             ; preds = %2765
  %2770 = getelementptr inbounds %struct.complex, ptr %62, i32 0, i32 0
  %2771 = load float, ptr %2770, align 4, !tbaa !11
  %2772 = fsub float 1.000000e+00, %2771
  %2773 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %2772, ptr %2773, align 4, !tbaa !11
  %2774 = getelementptr inbounds %struct.complex, ptr %62, i32 0, i32 1
  %2775 = load float, ptr %2774, align 4, !tbaa !14
  %2776 = fsub float 0.000000e+00, %2775
  %2777 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %2776, ptr %2777, align 4, !tbaa !14
  %2778 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %2779 = load float, ptr %2778, align 4, !tbaa !11
  %2780 = getelementptr inbounds %struct.complex, ptr %84, i32 0, i32 0
  store float %2779, ptr %2780, align 4, !tbaa !11
  %2781 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %2782 = load float, ptr %2781, align 4, !tbaa !14
  %2783 = getelementptr inbounds %struct.complex, ptr %84, i32 0, i32 1
  store float %2782, ptr %2783, align 4, !tbaa !14
  %2784 = call double @c_abs(ptr noundef %84)
  %2785 = fptrunc double %2784 to float
  store float %2785, ptr %36, align 4, !tbaa !17
  %2786 = getelementptr inbounds %struct.complex, ptr %84, i32 0, i32 0
  %2787 = load float, ptr %2786, align 4, !tbaa !11
  %2788 = load float, ptr %36, align 4, !tbaa !17
  %2789 = fdiv float %2787, %2788
  %2790 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %2789, ptr %2790, align 4, !tbaa !11
  %2791 = getelementptr inbounds %struct.complex, ptr %84, i32 0, i32 1
  %2792 = load float, ptr %2791, align 4, !tbaa !14
  %2793 = load float, ptr %36, align 4, !tbaa !17
  %2794 = fdiv float %2792, %2793
  %2795 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %2794, ptr %2795, align 4, !tbaa !14
  %2796 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %2797 = load float, ptr %2796, align 4, !tbaa !11
  %2798 = getelementptr inbounds %struct.complex, ptr %84, i32 0, i32 0
  store float %2797, ptr %2798, align 4, !tbaa !11
  %2799 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %2800 = load float, ptr %2799, align 4, !tbaa !14
  %2801 = getelementptr inbounds %struct.complex, ptr %84, i32 0, i32 1
  store float %2800, ptr %2801, align 4, !tbaa !14
  %2802 = load i64, ptr %53, align 8, !tbaa !9
  %2803 = add nsw i64 %2802, 1
  %2804 = load i64, ptr %53, align 8, !tbaa !9
  %2805 = load i64, ptr %28, align 8, !tbaa !9
  %2806 = mul nsw i64 %2804, %2805
  %2807 = add nsw i64 %2803, %2806
  store i64 %2807, ptr %33, align 8, !tbaa !9
  %2808 = load i64, ptr %53, align 8, !tbaa !9
  %2809 = add nsw i64 %2808, 1
  %2810 = load i64, ptr %53, align 8, !tbaa !9
  %2811 = load i64, ptr %28, align 8, !tbaa !9
  %2812 = mul nsw i64 %2810, %2811
  %2813 = add nsw i64 %2809, %2812
  store i64 %2813, ptr %34, align 8, !tbaa !9
  call void @r_cnjg(ptr noundef %43, ptr noundef %84)
  %2814 = load ptr, ptr %20, align 8, !tbaa !5
  %2815 = load i64, ptr %34, align 8, !tbaa !9
  %2816 = getelementptr inbounds %struct.complex, ptr %2814, i64 %2815
  %2817 = getelementptr inbounds %struct.complex, ptr %2816, i32 0, i32 0
  %2818 = load float, ptr %2817, align 4, !tbaa !11
  %2819 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %2820 = load float, ptr %2819, align 4, !tbaa !11
  %2821 = load ptr, ptr %20, align 8, !tbaa !5
  %2822 = load i64, ptr %34, align 8, !tbaa !9
  %2823 = getelementptr inbounds %struct.complex, ptr %2821, i64 %2822
  %2824 = getelementptr inbounds %struct.complex, ptr %2823, i32 0, i32 1
  %2825 = load float, ptr %2824, align 4, !tbaa !14
  %2826 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %2827 = load float, ptr %2826, align 4, !tbaa !14
  %2828 = fmul float %2825, %2827
  %2829 = fneg float %2828
  %2830 = call float @llvm.fmuladd.f32(float %2818, float %2820, float %2829)
  %2831 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %2830, ptr %2831, align 4, !tbaa !11
  %2832 = load ptr, ptr %20, align 8, !tbaa !5
  %2833 = load i64, ptr %34, align 8, !tbaa !9
  %2834 = getelementptr inbounds %struct.complex, ptr %2832, i64 %2833
  %2835 = getelementptr inbounds %struct.complex, ptr %2834, i32 0, i32 0
  %2836 = load float, ptr %2835, align 4, !tbaa !11
  %2837 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %2838 = load float, ptr %2837, align 4, !tbaa !14
  %2839 = load ptr, ptr %20, align 8, !tbaa !5
  %2840 = load i64, ptr %34, align 8, !tbaa !9
  %2841 = getelementptr inbounds %struct.complex, ptr %2839, i64 %2840
  %2842 = getelementptr inbounds %struct.complex, ptr %2841, i32 0, i32 1
  %2843 = load float, ptr %2842, align 4, !tbaa !14
  %2844 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %2845 = load float, ptr %2844, align 4, !tbaa !11
  %2846 = fmul float %2843, %2845
  %2847 = call float @llvm.fmuladd.f32(float %2836, float %2838, float %2846)
  %2848 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %2847, ptr %2848, align 4, !tbaa !14
  %2849 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %2850 = load float, ptr %2849, align 4, !tbaa !11
  %2851 = load ptr, ptr %20, align 8, !tbaa !5
  %2852 = load i64, ptr %33, align 8, !tbaa !9
  %2853 = getelementptr inbounds %struct.complex, ptr %2851, i64 %2852
  %2854 = getelementptr inbounds %struct.complex, ptr %2853, i32 0, i32 0
  store float %2850, ptr %2854, align 4, !tbaa !11
  %2855 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %2856 = load float, ptr %2855, align 4, !tbaa !14
  %2857 = load ptr, ptr %20, align 8, !tbaa !5
  %2858 = load i64, ptr %33, align 8, !tbaa !9
  %2859 = getelementptr inbounds %struct.complex, ptr %2857, i64 %2858
  %2860 = getelementptr inbounds %struct.complex, ptr %2859, i32 0, i32 1
  store float %2856, ptr %2860, align 4, !tbaa !14
  %2861 = load i64, ptr %53, align 8, !tbaa !9
  %2862 = add nsw i64 %2861, 2
  %2863 = load i64, ptr %49, align 8, !tbaa !9
  %2864 = icmp sle i64 %2862, %2863
  br i1 %2864, label %2865, label %2927

2865:                                             ; preds = %2769
  %2866 = load i64, ptr %53, align 8, !tbaa !9
  %2867 = add nsw i64 %2866, 2
  %2868 = load i64, ptr %53, align 8, !tbaa !9
  %2869 = add nsw i64 %2868, 1
  %2870 = load i64, ptr %28, align 8, !tbaa !9
  %2871 = mul nsw i64 %2869, %2870
  %2872 = add nsw i64 %2867, %2871
  store i64 %2872, ptr %33, align 8, !tbaa !9
  %2873 = load i64, ptr %53, align 8, !tbaa !9
  %2874 = add nsw i64 %2873, 2
  %2875 = load i64, ptr %53, align 8, !tbaa !9
  %2876 = add nsw i64 %2875, 1
  %2877 = load i64, ptr %28, align 8, !tbaa !9
  %2878 = mul nsw i64 %2876, %2877
  %2879 = add nsw i64 %2874, %2878
  store i64 %2879, ptr %34, align 8, !tbaa !9
  %2880 = load ptr, ptr %20, align 8, !tbaa !5
  %2881 = load i64, ptr %34, align 8, !tbaa !9
  %2882 = getelementptr inbounds %struct.complex, ptr %2880, i64 %2881
  %2883 = getelementptr inbounds %struct.complex, ptr %2882, i32 0, i32 0
  %2884 = load float, ptr %2883, align 4, !tbaa !11
  %2885 = getelementptr inbounds %struct.complex, ptr %84, i32 0, i32 0
  %2886 = load float, ptr %2885, align 4, !tbaa !11
  %2887 = load ptr, ptr %20, align 8, !tbaa !5
  %2888 = load i64, ptr %34, align 8, !tbaa !9
  %2889 = getelementptr inbounds %struct.complex, ptr %2887, i64 %2888
  %2890 = getelementptr inbounds %struct.complex, ptr %2889, i32 0, i32 1
  %2891 = load float, ptr %2890, align 4, !tbaa !14
  %2892 = getelementptr inbounds %struct.complex, ptr %84, i32 0, i32 1
  %2893 = load float, ptr %2892, align 4, !tbaa !14
  %2894 = fmul float %2891, %2893
  %2895 = fneg float %2894
  %2896 = call float @llvm.fmuladd.f32(float %2884, float %2886, float %2895)
  %2897 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %2896, ptr %2897, align 4, !tbaa !11
  %2898 = load ptr, ptr %20, align 8, !tbaa !5
  %2899 = load i64, ptr %34, align 8, !tbaa !9
  %2900 = getelementptr inbounds %struct.complex, ptr %2898, i64 %2899
  %2901 = getelementptr inbounds %struct.complex, ptr %2900, i32 0, i32 0
  %2902 = load float, ptr %2901, align 4, !tbaa !11
  %2903 = getelementptr inbounds %struct.complex, ptr %84, i32 0, i32 1
  %2904 = load float, ptr %2903, align 4, !tbaa !14
  %2905 = load ptr, ptr %20, align 8, !tbaa !5
  %2906 = load i64, ptr %34, align 8, !tbaa !9
  %2907 = getelementptr inbounds %struct.complex, ptr %2905, i64 %2906
  %2908 = getelementptr inbounds %struct.complex, ptr %2907, i32 0, i32 1
  %2909 = load float, ptr %2908, align 4, !tbaa !14
  %2910 = getelementptr inbounds %struct.complex, ptr %84, i32 0, i32 0
  %2911 = load float, ptr %2910, align 4, !tbaa !11
  %2912 = fmul float %2909, %2911
  %2913 = call float @llvm.fmuladd.f32(float %2902, float %2904, float %2912)
  %2914 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %2913, ptr %2914, align 4, !tbaa !14
  %2915 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %2916 = load float, ptr %2915, align 4, !tbaa !11
  %2917 = load ptr, ptr %20, align 8, !tbaa !5
  %2918 = load i64, ptr %33, align 8, !tbaa !9
  %2919 = getelementptr inbounds %struct.complex, ptr %2917, i64 %2918
  %2920 = getelementptr inbounds %struct.complex, ptr %2919, i32 0, i32 0
  store float %2916, ptr %2920, align 4, !tbaa !11
  %2921 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %2922 = load float, ptr %2921, align 4, !tbaa !14
  %2923 = load ptr, ptr %20, align 8, !tbaa !5
  %2924 = load i64, ptr %33, align 8, !tbaa !9
  %2925 = getelementptr inbounds %struct.complex, ptr %2923, i64 %2924
  %2926 = getelementptr inbounds %struct.complex, ptr %2925, i32 0, i32 1
  store float %2922, ptr %2926, align 4, !tbaa !14
  br label %2927

2927:                                             ; preds = %2865, %2769
  %2928 = load i64, ptr %49, align 8, !tbaa !9
  store i64 %2928, ptr %33, align 8, !tbaa !9
  %2929 = load i64, ptr %53, align 8, !tbaa !9
  store i64 %2929, ptr %50, align 8, !tbaa !9
  br label %2930

2930:                                             ; preds = %2984, %2927
  %2931 = load i64, ptr %50, align 8, !tbaa !9
  %2932 = load i64, ptr %33, align 8, !tbaa !9
  %2933 = icmp sle i64 %2931, %2932
  br i1 %2933, label %2934, label %2987

2934:                                             ; preds = %2930
  %2935 = load i64, ptr %50, align 8, !tbaa !9
  %2936 = load i64, ptr %53, align 8, !tbaa !9
  %2937 = add nsw i64 %2936, 1
  %2938 = icmp ne i64 %2935, %2937
  br i1 %2938, label %2939, label %2983

2939:                                             ; preds = %2934
  %2940 = load i64, ptr %61, align 8, !tbaa !9
  %2941 = load i64, ptr %50, align 8, !tbaa !9
  %2942 = icmp sgt i64 %2940, %2941
  br i1 %2942, label %2943, label %2957

2943:                                             ; preds = %2939
  %2944 = load i64, ptr %61, align 8, !tbaa !9
  %2945 = load i64, ptr %50, align 8, !tbaa !9
  %2946 = sub nsw i64 %2944, %2945
  store i64 %2946, ptr %34, align 8, !tbaa !9
  %2947 = load ptr, ptr %20, align 8, !tbaa !5
  %2948 = load i64, ptr %50, align 8, !tbaa !9
  %2949 = load i64, ptr %50, align 8, !tbaa !9
  %2950 = add nsw i64 %2949, 1
  %2951 = load i64, ptr %28, align 8, !tbaa !9
  %2952 = mul nsw i64 %2950, %2951
  %2953 = add nsw i64 %2948, %2952
  %2954 = getelementptr inbounds %struct.complex, ptr %2947, i64 %2953
  %2955 = load ptr, ptr %21, align 8, !tbaa !5
  %2956 = call i32 @f2c_cscal(ptr noundef %34, ptr noundef %84, ptr noundef %2954, ptr noundef %2955)
  br label %2957

2957:                                             ; preds = %2943, %2939
  %2958 = load i64, ptr %50, align 8, !tbaa !9
  %2959 = load i64, ptr %60, align 8, !tbaa !9
  %2960 = sub nsw i64 %2958, %2959
  store i64 %2960, ptr %34, align 8, !tbaa !9
  call void @r_cnjg(ptr noundef %42, ptr noundef %84)
  %2961 = load ptr, ptr %20, align 8, !tbaa !5
  %2962 = load i64, ptr %60, align 8, !tbaa !9
  %2963 = load i64, ptr %50, align 8, !tbaa !9
  %2964 = load i64, ptr %28, align 8, !tbaa !9
  %2965 = mul nsw i64 %2963, %2964
  %2966 = add nsw i64 %2962, %2965
  %2967 = getelementptr inbounds %struct.complex, ptr %2961, i64 %2966
  %2968 = call i32 @f2c_cscal(ptr noundef %34, ptr noundef %42, ptr noundef %2967, ptr noundef @c__1)
  %2969 = load ptr, ptr %16, align 8, !tbaa !5
  %2970 = load i64, ptr %2969, align 8, !tbaa !9
  %2971 = icmp ne i64 %2970, 0
  br i1 %2971, label %2972, label %2982

2972:                                             ; preds = %2957
  call void @r_cnjg(ptr noundef %42, ptr noundef %84)
  %2973 = load ptr, ptr %25, align 8, !tbaa !5
  %2974 = load ptr, ptr %23, align 8, !tbaa !5
  %2975 = load i64, ptr %2974, align 8, !tbaa !9
  %2976 = load i64, ptr %50, align 8, !tbaa !9
  %2977 = load i64, ptr %30, align 8, !tbaa !9
  %2978 = mul nsw i64 %2976, %2977
  %2979 = add nsw i64 %2975, %2978
  %2980 = getelementptr inbounds %struct.complex, ptr %2973, i64 %2979
  %2981 = call i32 @f2c_cscal(ptr noundef %75, ptr noundef %42, ptr noundef %2980, ptr noundef @c__1)
  br label %2982

2982:                                             ; preds = %2972, %2957
  br label %2983

2983:                                             ; preds = %2982, %2934
  br label %2984

2984:                                             ; preds = %2983
  %2985 = load i64, ptr %50, align 8, !tbaa !9
  %2986 = add nsw i64 %2985, 1
  store i64 %2986, ptr %50, align 8, !tbaa !9
  br label %2930, !llvm.loop !24

2987:                                             ; preds = %2930
  br label %2988

2988:                                             ; preds = %2987, %2765, %2761
  br label %2989

2989:                                             ; preds = %2988
  %2990 = load i64, ptr %51, align 8, !tbaa !9
  %2991 = add nsw i64 %2990, 1
  store i64 %2991, ptr %51, align 8, !tbaa !9
  br label %2061, !llvm.loop !25

2992:                                             ; preds = %2061
  %2993 = load i64, ptr %49, align 8, !tbaa !9
  %2994 = load i64, ptr %49, align 8, !tbaa !9
  %2995 = sub nsw i64 %2994, 1
  %2996 = load i64, ptr %28, align 8, !tbaa !9
  %2997 = mul nsw i64 %2995, %2996
  %2998 = add nsw i64 %2993, %2997
  store i64 %2998, ptr %32, align 8, !tbaa !9
  %2999 = load ptr, ptr %20, align 8, !tbaa !5
  %3000 = load i64, ptr %32, align 8, !tbaa !9
  %3001 = getelementptr inbounds %struct.complex, ptr %2999, i64 %3000
  %3002 = getelementptr inbounds %struct.complex, ptr %3001, i32 0, i32 0
  %3003 = load float, ptr %3002, align 4, !tbaa !11
  %3004 = getelementptr inbounds %struct.complex, ptr %84, i32 0, i32 0
  store float %3003, ptr %3004, align 4, !tbaa !11
  %3005 = load ptr, ptr %20, align 8, !tbaa !5
  %3006 = load i64, ptr %32, align 8, !tbaa !9
  %3007 = getelementptr inbounds %struct.complex, ptr %3005, i64 %3006
  %3008 = getelementptr inbounds %struct.complex, ptr %3007, i32 0, i32 1
  %3009 = load float, ptr %3008, align 4, !tbaa !14
  %3010 = getelementptr inbounds %struct.complex, ptr %84, i32 0, i32 1
  store float %3009, ptr %3010, align 4, !tbaa !14
  %3011 = call double @r_imag(ptr noundef %84)
  %3012 = fcmp une double %3011, 0.000000e+00
  br i1 %3012, label %3013, label %3090

3013:                                             ; preds = %2992
  %3014 = call double @c_abs(ptr noundef %84)
  %3015 = fptrunc double %3014 to float
  store float %3015, ptr %85, align 4, !tbaa !17
  %3016 = load i64, ptr %49, align 8, !tbaa !9
  %3017 = load i64, ptr %49, align 8, !tbaa !9
  %3018 = sub nsw i64 %3017, 1
  %3019 = load i64, ptr %28, align 8, !tbaa !9
  %3020 = mul nsw i64 %3018, %3019
  %3021 = add nsw i64 %3016, %3020
  store i64 %3021, ptr %32, align 8, !tbaa !9
  %3022 = load float, ptr %85, align 4, !tbaa !17
  %3023 = load ptr, ptr %20, align 8, !tbaa !5
  %3024 = load i64, ptr %32, align 8, !tbaa !9
  %3025 = getelementptr inbounds %struct.complex, ptr %3023, i64 %3024
  %3026 = getelementptr inbounds %struct.complex, ptr %3025, i32 0, i32 0
  store float %3022, ptr %3026, align 4, !tbaa !11
  %3027 = load ptr, ptr %20, align 8, !tbaa !5
  %3028 = load i64, ptr %32, align 8, !tbaa !9
  %3029 = getelementptr inbounds %struct.complex, ptr %3027, i64 %3028
  %3030 = getelementptr inbounds %struct.complex, ptr %3029, i32 0, i32 1
  store float 0.000000e+00, ptr %3030, align 4, !tbaa !14
  %3031 = getelementptr inbounds %struct.complex, ptr %84, i32 0, i32 0
  %3032 = load float, ptr %3031, align 4, !tbaa !11
  %3033 = load float, ptr %85, align 4, !tbaa !17
  %3034 = fdiv float %3032, %3033
  %3035 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %3034, ptr %3035, align 4, !tbaa !11
  %3036 = getelementptr inbounds %struct.complex, ptr %84, i32 0, i32 1
  %3037 = load float, ptr %3036, align 4, !tbaa !14
  %3038 = load float, ptr %85, align 4, !tbaa !17
  %3039 = fdiv float %3037, %3038
  %3040 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %3039, ptr %3040, align 4, !tbaa !14
  %3041 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %3042 = load float, ptr %3041, align 4, !tbaa !11
  %3043 = getelementptr inbounds %struct.complex, ptr %84, i32 0, i32 0
  store float %3042, ptr %3043, align 4, !tbaa !11
  %3044 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %3045 = load float, ptr %3044, align 4, !tbaa !14
  %3046 = getelementptr inbounds %struct.complex, ptr %84, i32 0, i32 1
  store float %3045, ptr %3046, align 4, !tbaa !14
  %3047 = load i64, ptr %61, align 8, !tbaa !9
  %3048 = load i64, ptr %49, align 8, !tbaa !9
  %3049 = icmp sgt i64 %3047, %3048
  br i1 %3049, label %3050, label %3064

3050:                                             ; preds = %3013
  %3051 = load i64, ptr %61, align 8, !tbaa !9
  %3052 = load i64, ptr %49, align 8, !tbaa !9
  %3053 = sub nsw i64 %3051, %3052
  store i64 %3053, ptr %32, align 8, !tbaa !9
  call void @r_cnjg(ptr noundef %42, ptr noundef %84)
  %3054 = load ptr, ptr %20, align 8, !tbaa !5
  %3055 = load i64, ptr %49, align 8, !tbaa !9
  %3056 = load i64, ptr %49, align 8, !tbaa !9
  %3057 = add nsw i64 %3056, 1
  %3058 = load i64, ptr %28, align 8, !tbaa !9
  %3059 = mul nsw i64 %3057, %3058
  %3060 = add nsw i64 %3055, %3059
  %3061 = getelementptr inbounds %struct.complex, ptr %3054, i64 %3060
  %3062 = load ptr, ptr %21, align 8, !tbaa !5
  %3063 = call i32 @f2c_cscal(ptr noundef %32, ptr noundef %42, ptr noundef %3061, ptr noundef %3062)
  br label %3064

3064:                                             ; preds = %3050, %3013
  %3065 = load i64, ptr %49, align 8, !tbaa !9
  %3066 = load i64, ptr %60, align 8, !tbaa !9
  %3067 = sub nsw i64 %3065, %3066
  store i64 %3067, ptr %32, align 8, !tbaa !9
  %3068 = load ptr, ptr %20, align 8, !tbaa !5
  %3069 = load i64, ptr %60, align 8, !tbaa !9
  %3070 = load i64, ptr %49, align 8, !tbaa !9
  %3071 = load i64, ptr %28, align 8, !tbaa !9
  %3072 = mul nsw i64 %3070, %3071
  %3073 = add nsw i64 %3069, %3072
  %3074 = getelementptr inbounds %struct.complex, ptr %3068, i64 %3073
  %3075 = call i32 @f2c_cscal(ptr noundef %32, ptr noundef %84, ptr noundef %3074, ptr noundef @c__1)
  %3076 = load ptr, ptr %16, align 8, !tbaa !5
  %3077 = load i64, ptr %3076, align 8, !tbaa !9
  %3078 = icmp ne i64 %3077, 0
  br i1 %3078, label %3079, label %3089

3079:                                             ; preds = %3064
  %3080 = load ptr, ptr %25, align 8, !tbaa !5
  %3081 = load ptr, ptr %23, align 8, !tbaa !5
  %3082 = load i64, ptr %3081, align 8, !tbaa !9
  %3083 = load i64, ptr %49, align 8, !tbaa !9
  %3084 = load i64, ptr %30, align 8, !tbaa !9
  %3085 = mul nsw i64 %3083, %3084
  %3086 = add nsw i64 %3082, %3085
  %3087 = getelementptr inbounds %struct.complex, ptr %3080, i64 %3086
  %3088 = call i32 @f2c_cscal(ptr noundef %75, ptr noundef %84, ptr noundef %3087, ptr noundef @c__1)
  br label %3089

3089:                                             ; preds = %3079, %3064
  br label %3090

3090:                                             ; preds = %3089, %2992
  br label %3091

3091:                                             ; preds = %3090
  %3092 = load i64, ptr %80, align 8, !tbaa !9
  %3093 = add nsw i64 %3092, 1
  store i64 %3093, ptr %80, align 8, !tbaa !9
  br label %465, !llvm.loop !26

3094:                                             ; preds = %465
  %3095 = load i64, ptr %49, align 8, !tbaa !9
  %3096 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 %3095, ptr %3096, align 8, !tbaa !9
  store i32 0, ptr %14, align 4
  store i32 1, ptr %89, align 4
  br label %3125

3097:                                             ; preds = %1200
  %3098 = load i64, ptr %49, align 8, !tbaa !9
  store i64 %3098, ptr %32, align 8, !tbaa !9
  %3099 = load i64, ptr %49, align 8, !tbaa !9
  %3100 = load i64, ptr %49, align 8, !tbaa !9
  %3101 = load i64, ptr %28, align 8, !tbaa !9
  %3102 = mul nsw i64 %3100, %3101
  %3103 = add nsw i64 %3099, %3102
  store i64 %3103, ptr %33, align 8, !tbaa !9
  %3104 = load ptr, ptr %20, align 8, !tbaa !5
  %3105 = load i64, ptr %33, align 8, !tbaa !9
  %3106 = getelementptr inbounds %struct.complex, ptr %3104, i64 %3105
  %3107 = getelementptr inbounds %struct.complex, ptr %3106, i32 0, i32 0
  %3108 = load float, ptr %3107, align 4, !tbaa !11
  %3109 = load ptr, ptr %22, align 8, !tbaa !5
  %3110 = load i64, ptr %32, align 8, !tbaa !9
  %3111 = getelementptr inbounds %struct.complex, ptr %3109, i64 %3110
  %3112 = getelementptr inbounds %struct.complex, ptr %3111, i32 0, i32 0
  store float %3108, ptr %3112, align 4, !tbaa !11
  %3113 = load ptr, ptr %20, align 8, !tbaa !5
  %3114 = load i64, ptr %33, align 8, !tbaa !9
  %3115 = getelementptr inbounds %struct.complex, ptr %3113, i64 %3114
  %3116 = getelementptr inbounds %struct.complex, ptr %3115, i32 0, i32 1
  %3117 = load float, ptr %3116, align 4, !tbaa !14
  %3118 = load ptr, ptr %22, align 8, !tbaa !5
  %3119 = load i64, ptr %32, align 8, !tbaa !9
  %3120 = getelementptr inbounds %struct.complex, ptr %3118, i64 %3119
  %3121 = getelementptr inbounds %struct.complex, ptr %3120, i32 0, i32 1
  store float %3117, ptr %3121, align 4, !tbaa !14
  %3122 = load i64, ptr %52, align 8, !tbaa !9
  %3123 = sub nsw i64 %3122, 1
  store i64 %3123, ptr %49, align 8, !tbaa !9
  br label %456

3124:                                             ; preds = %461
  store i32 0, ptr %14, align 4
  store i32 1, ptr %89, align 4
  br label %3125

3125:                                             ; preds = %3124, %3094, %119, %112
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #4
  %3126 = load i32, ptr %14, align 4
  ret i32 %3126
}

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

declare double @r_imag(ptr noundef) #2

declare void @r_cnjg(ptr noundef, ptr noundef) #2

declare double @c_abs(ptr noundef) #2

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

declare double @slamch_(ptr noundef) #2

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

declare void @c_sqrt(ptr noundef, ptr noundef) #2

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

declare void @pow_ci(ptr noundef, ptr noundef, ptr noundef) #2

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

declare void @cladiv_(ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

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

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

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


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

%struct.complex = type { float, float }

@c__1 = external hidden global i64, align 8
@.str = external hidden unnamed_addr constant [13 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [10 x i8], align 1
@c__2 = external hidden global i64, align 8

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @clahqr_(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, ptr nocapture noundef readonly %3, ptr nocapture noundef readonly %4, ptr noundef %5, ptr noundef %6, ptr nocapture noundef writeonly %7, ptr nocapture noundef readonly %8, ptr nocapture noundef readonly %9, ptr noundef %10, ptr nocapture noundef readonly %11, ptr nocapture noundef writeonly %12) local_unnamed_addr #0 {
  %14 = alloca i64, align 8
  %15 = alloca i64, align 8
  %16 = alloca i64, align 8
  %17 = alloca %struct.complex, align 8
  %18 = alloca %struct.complex, align 8
  %19 = alloca %struct.complex, align 8
  %20 = alloca %struct.complex, align 8
  %21 = alloca %struct.complex, align 8
  %22 = alloca %struct.complex, align 8
  %23 = alloca %struct.complex, align 8
  %24 = alloca %struct.complex, align 8
  %25 = alloca [2 x %struct.complex], align 16
  %26 = alloca %struct.complex, align 8
  %27 = alloca %struct.complex, align 8
  %28 = alloca %struct.complex, align 8
  %29 = alloca %struct.complex, align 8
  %30 = alloca %struct.complex, align 8
  %31 = alloca %struct.complex, align 8
  %32 = alloca %struct.complex, align 8
  %33 = alloca i64, align 8
  %34 = alloca %struct.complex, align 8
  %35 = alloca %struct.complex, align 8
  %36 = alloca float, align 4
  %37 = alloca float, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %36) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %37) #5
  %38 = load i64, ptr %6, align 8, !tbaa !5
  %39 = xor i64 %38, -1
  %40 = getelementptr inbounds %struct.complex, ptr %5, i64 %39
  %41 = getelementptr inbounds i8, ptr %7, i64 -8
  %42 = load i64, ptr %11, align 8, !tbaa !5
  %43 = xor i64 %42, -1
  %44 = getelementptr inbounds %struct.complex, ptr %10, i64 %43
  store i64 0, ptr %12, align 8, !tbaa !5
  %45 = load i64, ptr %2, align 8, !tbaa !5
  %46 = icmp eq i64 %45, 0
  br i1 %46, label %.loopexit874, label %47

47:                                               ; preds = %13
  %48 = load i64, ptr %3, align 8, !tbaa !5
  %49 = load i64, ptr %4, align 8, !tbaa !5
  %50 = icmp eq i64 %48, %49
  br i1 %50, label %51, label %57

51:                                               ; preds = %47
  %52 = add i64 %38, 1
  %53 = mul i64 %48, %52
  %54 = getelementptr inbounds %struct.complex, ptr %40, i64 %53
  %55 = getelementptr inbounds %struct.complex, ptr %41, i64 %48
  %56 = load <2 x float>, ptr %54, align 4, !tbaa !9
  store <2 x float> %56, ptr %55, align 4, !tbaa !9
  br label %.loopexit874

57:                                               ; preds = %47
  %58 = add nsw i64 %49, -3
  %.not880 = icmp sgt i64 %48, %58
  %.pre949 = add i64 %49, -2
  br i1 %.not880, label %._crit_edge948, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %57
  %59 = xor i64 %49, 2
  %60 = sub i64 %59, %48
  %61 = add i64 %49, -3
  %62 = sub i64 %61, %48
  %xtraiter = and i64 %60, 3
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph.prol.loopexit, label %.lr.ph.prol.preheader

.lr.ph.prol.preheader:                            ; preds = %.lr.ph.preheader
  %invariant.gep1008 = getelementptr i8, ptr %40, i64 16
  br label %.lr.ph.prol

.lr.ph.prol:                                      ; preds = %.lr.ph.prol, %.lr.ph.prol.preheader
  %.0828881.prol = phi i64 [ %65, %.lr.ph.prol ], [ %48, %.lr.ph.prol.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph.prol ], [ 0, %.lr.ph.prol.preheader ]
  %63 = mul nsw i64 %.0828881.prol, %38
  %gep1009 = getelementptr %struct.complex, ptr %invariant.gep1008, i64 %.0828881.prol
  %64 = getelementptr %struct.complex, ptr %gep1009, i64 %63
  store <4 x float> zeroinitializer, ptr %64, align 4, !tbaa !9
  %65 = add i64 %.0828881.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %.lr.ph.prol.loopexit, label %.lr.ph.prol, !llvm.loop !11

.lr.ph.prol.loopexit:                             ; preds = %.lr.ph.prol, %.lr.ph.preheader
  %.0828881.lcssa.unr = phi i64 [ poison, %.lr.ph.preheader ], [ %.0828881.prol, %.lr.ph.prol ]
  %.lcssa994.unr = phi i64 [ poison, %.lr.ph.preheader ], [ %63, %.lr.ph.prol ]
  %.0828881.unr = phi i64 [ %48, %.lr.ph.preheader ], [ %65, %.lr.ph.prol ]
  %66 = icmp ult i64 %62, 3
  br i1 %66, label %._crit_edge, label %.lr.ph.preheader.new

.lr.ph.preheader.new:                             ; preds = %.lr.ph.prol.loopexit
  %invariant.gep1010 = getelementptr i8, ptr %40, i64 16
  %invariant.gep1012 = getelementptr i8, ptr %40, i64 16
  %invariant.gep1014 = getelementptr i8, ptr %40, i64 16
  %invariant.gep1016 = getelementptr i8, ptr %40, i64 16
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader.new
  %.0828881 = phi i64 [ %.0828881.unr, %.lr.ph.preheader.new ], [ %78, %.lr.ph ]
  %67 = mul nsw i64 %.0828881, %38
  %gep1011 = getelementptr %struct.complex, ptr %invariant.gep1010, i64 %.0828881
  %68 = getelementptr %struct.complex, ptr %gep1011, i64 %67
  store <4 x float> zeroinitializer, ptr %68, align 4, !tbaa !9
  %69 = add i64 %.0828881, 1
  %70 = mul nsw i64 %69, %38
  %gep1013 = getelementptr %struct.complex, ptr %invariant.gep1012, i64 %69
  %71 = getelementptr %struct.complex, ptr %gep1013, i64 %70
  store <4 x float> zeroinitializer, ptr %71, align 4, !tbaa !9
  %72 = add i64 %.0828881, 2
  %73 = mul nsw i64 %72, %38
  %gep1015 = getelementptr %struct.complex, ptr %invariant.gep1014, i64 %72
  %74 = getelementptr %struct.complex, ptr %gep1015, i64 %73
  store <4 x float> zeroinitializer, ptr %74, align 4, !tbaa !9
  %75 = add i64 %.0828881, 3
  %76 = mul nsw i64 %75, %38
  %gep1017 = getelementptr %struct.complex, ptr %invariant.gep1016, i64 %75
  %77 = getelementptr %struct.complex, ptr %gep1017, i64 %76
  store <4 x float> zeroinitializer, ptr %77, align 4, !tbaa !9
  %78 = add i64 %.0828881, 4
  %exitcond.not.3 = icmp eq i64 %78, %.pre949
  br i1 %exitcond.not.3, label %._crit_edge, label %.lr.ph, !llvm.loop !13

._crit_edge:                                      ; preds = %.lr.ph, %.lr.ph.prol.loopexit
  %.0828881.lcssa = phi i64 [ %.0828881.lcssa.unr, %.lr.ph.prol.loopexit ], [ %75, %.lr.ph ]
  %.lcssa994 = phi i64 [ %.lcssa994.unr, %.lr.ph.prol.loopexit ], [ %76, %.lr.ph ]
  %79 = add nsw i64 %.0828881.lcssa, 3
  %80 = add nsw i64 %79, %.lcssa994
  store i64 %80, ptr %15, align 8, !tbaa !5
  br label %._crit_edge948

._crit_edge948:                                   ; preds = %57, %._crit_edge
  %.not844 = icmp sgt i64 %48, %.pre949
  br i1 %.not844, label %85, label %81

81:                                               ; preds = %._crit_edge948
  %82 = mul nsw i64 %.pre949, %38
  %83 = getelementptr %struct.complex, ptr %40, i64 %82
  %84 = getelementptr %struct.complex, ptr %83, i64 %49
  store <2 x float> zeroinitializer, ptr %84, align 4, !tbaa !9
  br label %85

85:                                               ; preds = %81, %._crit_edge948
  %86 = load i64, ptr %0, align 8, !tbaa !5
  %.not845 = icmp eq i64 %86, 0
  %spec.select868 = select i1 %.not845, ptr %4, ptr %2
  %.0817 = load i64, ptr %spec.select868, align 8, !tbaa !5
  store i64 %49, ptr %14, align 8, !tbaa !5
  %.not846.not883 = icmp slt i64 %48, %49
  br i1 %.not846.not883, label %.lr.ph887, label %._crit_edge888

.lr.ph887:                                        ; preds = %85
  %spec.select869 = select i1 %.not845, i64 %48, i64 1
  %87 = getelementptr %struct.complex, ptr %40, i64 %spec.select869
  br label %88

88:                                               ; preds = %.lr.ph887, %141
  %.0832.in884 = phi i64 [ %48, %.lr.ph887 ], [ %.0832885, %141 ]
  %.0832885 = add nsw i64 %.0832.in884, 1
  %89 = mul nsw i64 %.0832.in884, %38
  %90 = add nsw i64 %.0832885, %89
  %91 = getelementptr inbounds %struct.complex, ptr %40, i64 %90
  %92 = call double @r_imag(ptr noundef %91) #5
  %93 = fcmp une double %92, 0.000000e+00
  br i1 %93, label %94, label %141

94:                                               ; preds = %88
  store i64 %90, ptr %15, align 8, !tbaa !5
  %95 = load float, ptr %91, align 4, !tbaa !15
  %96 = call double @r_imag(ptr noundef nonnull %91) #5
  %97 = fptrunc double %96 to float
  %98 = insertelement <2 x float> poison, float %95, i64 0
  %99 = insertelement <2 x float> %98, float %97, i64 1
  %100 = fcmp oge <2 x float> %99, zeroinitializer
  %101 = fneg <2 x float> %99
  %102 = select <2 x i1> %100, <2 x float> %99, <2 x float> %101
  %shift = shufflevector <2 x float> %102, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %103 = fadd <2 x float> %102, %shift
  %104 = load i64, ptr %15, align 8, !tbaa !5
  %105 = getelementptr inbounds %struct.complex, ptr %40, i64 %104
  %106 = load <2 x float>, ptr %105, align 4, !tbaa !9
  %107 = shufflevector <2 x float> %103, <2 x float> poison, <2 x i32> zeroinitializer
  %108 = fdiv <2 x float> %106, %107
  store <2 x float> %108, ptr %17, align 8, !tbaa !9
  store <2 x float> %108, ptr %32, align 8, !tbaa !9
  call void @r_cnjg(ptr noundef nonnull %18, ptr noundef nonnull %32) #5
  %109 = call double @c_abs(ptr noundef nonnull %32) #5
  %110 = fptrunc double %109 to float
  %111 = load <2 x float>, ptr %18, align 8, !tbaa !9
  %112 = insertelement <2 x float> poison, float %110, i64 0
  %113 = shufflevector <2 x float> %112, <2 x float> poison, <2 x i32> zeroinitializer
  %114 = fdiv <2 x float> %111, %113
  store <2 x float> %114, ptr %17, align 8, !tbaa !9
  store <2 x float> %114, ptr %32, align 8, !tbaa !9
  store i64 %90, ptr %15, align 8, !tbaa !5
  %115 = call double @c_abs(ptr noundef nonnull %91) #5
  %116 = fptrunc double %115 to float
  %117 = load i64, ptr %15, align 8, !tbaa !5
  %118 = getelementptr inbounds %struct.complex, ptr %40, i64 %117
  store float %116, ptr %118, align 4, !tbaa !15
  %119 = getelementptr inbounds %struct.complex, ptr %40, i64 %117, i32 1
  store float 0.000000e+00, ptr %119, align 4, !tbaa !17
  %120 = sub i64 %.0817, %.0832.in884
  store i64 %120, ptr %15, align 8, !tbaa !5
  %121 = mul nsw i64 %.0832885, %38
  %122 = getelementptr %struct.complex, ptr %40, i64 %.0832885
  %123 = getelementptr %struct.complex, ptr %122, i64 %121
  %124 = call i32 @f2c_cscal(ptr noundef nonnull %15, ptr noundef nonnull %32, ptr noundef %123, ptr noundef nonnull %6) #5
  store i64 %.0817, ptr %16, align 8, !tbaa !5
  %125 = add nsw i64 %.0832.in884, 2
  %126 = call i64 @llvm.smin.i64(i64 %.0817, i64 %125)
  %reass.sub = sub i64 %126, %spec.select869
  %127 = add i64 %reass.sub, 1
  store i64 %127, ptr %15, align 8, !tbaa !5
  call void @r_cnjg(ptr noundef nonnull %17, ptr noundef nonnull %32) #5
  %128 = getelementptr %struct.complex, ptr %87, i64 %121
  %129 = call i32 @f2c_cscal(ptr noundef nonnull %15, ptr noundef nonnull %17, ptr noundef %128, ptr noundef nonnull @c__1) #5
  %130 = load i64, ptr %1, align 8, !tbaa !5
  %.not866 = icmp eq i64 %130, 0
  br i1 %.not866, label %141, label %131

131:                                              ; preds = %94
  %132 = load i64, ptr %9, align 8, !tbaa !5
  %133 = load i64, ptr %8, align 8, !tbaa !5
  %134 = add i64 %132, 1
  %135 = sub i64 %134, %133
  store i64 %135, ptr %15, align 8, !tbaa !5
  call void @r_cnjg(ptr noundef nonnull %17, ptr noundef nonnull %32) #5
  %136 = load i64, ptr %8, align 8, !tbaa !5
  %137 = mul nsw i64 %.0832885, %42
  %138 = getelementptr %struct.complex, ptr %44, i64 %136
  %139 = getelementptr %struct.complex, ptr %138, i64 %137
  %140 = call i32 @f2c_cscal(ptr noundef nonnull %15, ptr noundef nonnull %17, ptr noundef %139, ptr noundef nonnull @c__1) #5
  br label %141

141:                                              ; preds = %88, %131, %94
  %142 = load i64, ptr %14, align 8, !tbaa !5
  %.not846.not = icmp slt i64 %.0832885, %142
  br i1 %.not846.not, label %88, label %._crit_edge888.loopexit, !llvm.loop !18

._crit_edge888.loopexit:                          ; preds = %141
  %.pre = load i64, ptr %4, align 8, !tbaa !5
  %.pre944 = load i64, ptr %3, align 8, !tbaa !5
  br label %._crit_edge888

._crit_edge888:                                   ; preds = %._crit_edge888.loopexit, %85
  %143 = phi i64 [ %.pre944, %._crit_edge888.loopexit ], [ %48, %85 ]
  %144 = phi i64 [ %.pre, %._crit_edge888.loopexit ], [ %49, %85 ]
  %145 = add i64 %144, 1
  %146 = sub i64 %145, %143
  %147 = load i64, ptr %9, align 8, !tbaa !5
  %148 = load i64, ptr %8, align 8, !tbaa !5
  %149 = add i64 %147, 1
  %150 = sub i64 %149, %148
  store i64 %150, ptr %33, align 8, !tbaa !5
  %151 = call double @slamch_(ptr noundef nonnull @.str) #5
  %152 = fptrunc double %151 to float
  store float %152, ptr %36, align 4, !tbaa !9
  %153 = fdiv float 1.000000e+00, %152
  store float %153, ptr %37, align 4, !tbaa !9
  %154 = call i32 @slabad_(ptr noundef nonnull %36, ptr noundef nonnull %37) #5
  %155 = call double @slamch_(ptr noundef nonnull @.str.1) #5
  %156 = fptrunc double %155 to float
  %157 = load float, ptr %36, align 4, !tbaa !9
  %158 = sitofp i64 %146 to float
  %159 = fdiv float %158, %156
  %160 = fmul float %157, %159
  %161 = load i64, ptr %0, align 8, !tbaa !5
  %.not847 = icmp eq i64 %161, 0
  br i1 %.not847, label %164, label %162

162:                                              ; preds = %._crit_edge888
  %163 = load i64, ptr %2, align 8, !tbaa !5
  br label %164

164:                                              ; preds = %162, %._crit_edge888
  %.0818 = phi i64 [ %163, %162 ], [ undef, %._crit_edge888 ]
  %165 = load i64, ptr %4, align 8, !tbaa !5
  %166 = load i64, ptr %3, align 8, !tbaa !5
  %167 = icmp slt i64 %165, %166
  br i1 %167, label %.loopexit874, label %.preheader.lr.ph

.preheader.lr.ph:                                 ; preds = %164
  %168 = fpext float %160 to double
  %169 = getelementptr inbounds i8, ptr %18, i64 4
  %170 = add i64 %38, 1
  %171 = getelementptr inbounds i8, ptr %19, i64 4
  %172 = getelementptr inbounds i8, ptr %24, i64 4
  %173 = getelementptr inbounds i8, ptr %25, i64 8
  %174 = getelementptr inbounds i8, ptr %25, i64 12
  %175 = fpext float %156 to double
  %176 = getelementptr inbounds i8, ptr %28, i64 4
  %invariant.gep1018 = getelementptr i8, ptr %40, i64 8
  %invariant.gep1028 = getelementptr i8, ptr %40, i64 8
  %invariant.gep1026 = getelementptr i8, ptr %40, i64 8
  br label %.preheader

.preheader:                                       ; preds = %.preheader.lr.ph, %881
  %177 = phi i64 [ %166, %.preheader.lr.ph ], [ %378, %881 ]
  %.1819930 = phi i64 [ %.0818, %.preheader.lr.ph ], [ %.2924, %881 ]
  %.1821929 = phi i64 [ 1, %.preheader.lr.ph ], [ %.2822923, %881 ]
  %.1833928 = phi i64 [ %165, %.preheader.lr.ph ], [ %884, %881 ]
  %178 = add nsw i64 %.1833928, -1
  %179 = mul nsw i64 %178, %38
  %180 = add nsw i64 %179, %.1833928
  %181 = getelementptr inbounds %struct.complex, ptr %40, i64 %180
  %182 = mul i64 %.1833928, %170
  %183 = getelementptr inbounds %struct.complex, ptr %40, i64 %182
  %184 = getelementptr inbounds %struct.complex, ptr %40, i64 %182, i32 1
  %185 = mul nsw i64 %.1833928, %38
  %186 = add nsw i64 %185, %.1833928
  %187 = getelementptr inbounds %struct.complex, ptr %40, i64 %186
  %188 = getelementptr %struct.complex, ptr %40, i64 %178
  %189 = getelementptr %struct.complex, ptr %188, i64 %185
  %190 = getelementptr %struct.complex, ptr %40, i64 %.1833928
  %191 = getelementptr %struct.complex, ptr %190, i64 %179
  %192 = add nsw i64 %179, %178
  %193 = getelementptr inbounds %struct.complex, ptr %40, i64 %192
  %194 = getelementptr inbounds %struct.complex, ptr %40, i64 %180, i32 1
  %195 = add nsw i64 %.1833928, 1
  %196 = mul nsw i64 %195, %38
  %197 = getelementptr %struct.complex, ptr %190, i64 %196
  %invariant.gep = getelementptr %struct.complex, ptr %40, i64 %185
  %198 = mul nsw i64 %.1833928, %42
  %invariant.gep926 = getelementptr %struct.complex, ptr %44, i64 %198
  br label %199

199:                                              ; preds = %.preheader, %878
  %.0815925 = phi i64 [ 0, %.preheader ], [ %879, %878 ]
  %.2924 = phi i64 [ %.1819930, %.preheader ], [ %spec.select867, %878 ]
  %.2822923 = phi i64 [ %.1821929, %.preheader ], [ %spec.select, %878 ]
  %.0825922 = phi i64 [ %177, %.preheader ], [ %.0826.lcssa, %878 ]
  %200 = add nsw i64 %.0825922, 1
  store i64 %200, ptr %14, align 8, !tbaa !5
  %.not848889.not = icmp sgt i64 %.1833928, %.0825922
  br i1 %.not848889.not, label %.lr.ph892, label %._crit_edge893

.lr.ph892:                                        ; preds = %199, %376
  %.0826890 = phi i64 [ %201, %376 ], [ %.1833928, %199 ]
  %201 = add nsw i64 %.0826890, -1
  %202 = mul nsw i64 %201, %38
  %203 = add nsw i64 %202, %.0826890
  store i64 %203, ptr %15, align 8, !tbaa !5
  %204 = getelementptr inbounds %struct.complex, ptr %40, i64 %203
  %205 = load float, ptr %204, align 4, !tbaa !15
  %206 = call double @r_imag(ptr noundef nonnull %204) #5
  %207 = fptrunc double %206 to float
  %208 = insertelement <2 x float> poison, float %205, i64 0
  %209 = insertelement <2 x float> %208, float %207, i64 1
  %210 = fcmp oge <2 x float> %209, zeroinitializer
  %211 = fneg <2 x float> %209
  %212 = select <2 x i1> %210, <2 x float> %209, <2 x float> %211
  %213 = fpext <2 x float> %212 to <2 x double>
  %shift975 = shufflevector <2 x double> %213, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %214 = fadd <2 x double> %shift975, %213
  %215 = extractelement <2 x double> %214, i64 0
  %216 = fcmp ugt double %215, %168
  br i1 %216, label %217, label %._crit_edge893

217:                                              ; preds = %.lr.ph892
  %218 = add nsw i64 %202, %201
  store i64 %218, ptr %15, align 8, !tbaa !5
  %219 = mul nsw i64 %.0826890, %38
  %220 = add nsw i64 %219, %.0826890
  store i64 %220, ptr %16, align 8, !tbaa !5
  %221 = getelementptr inbounds %struct.complex, ptr %40, i64 %218
  %222 = load float, ptr %221, align 4, !tbaa !15
  %223 = call double @r_imag(ptr noundef nonnull %221) #5
  %224 = load i64, ptr %16, align 8, !tbaa !5
  %225 = getelementptr inbounds %struct.complex, ptr %40, i64 %224
  %226 = load float, ptr %225, align 4, !tbaa !15
  %227 = getelementptr inbounds %struct.complex, ptr %40, i64 %220
  %228 = call double @r_imag(ptr noundef %227) #5
  %229 = insertelement <2 x float> poison, float %222, i64 0
  %230 = insertelement <2 x float> %229, float %226, i64 1
  %231 = fcmp oge <2 x float> %230, zeroinitializer
  %232 = fneg <2 x float> %230
  %233 = select <2 x i1> %231, <2 x float> %230, <2 x float> %232
  %234 = fpext <2 x float> %233 to <2 x double>
  %235 = insertelement <2 x double> poison, double %223, i64 0
  %236 = insertelement <2 x double> %235, double %228, i64 1
  %237 = fptrunc <2 x double> %236 to <2 x float>
  %238 = fcmp oge <2 x float> %237, zeroinitializer
  %239 = fneg <2 x float> %237
  %240 = select <2 x i1> %238, <2 x float> %237, <2 x float> %239
  %241 = fpext <2 x float> %240 to <2 x double>
  %242 = fadd <2 x double> %234, %241
  %shift976 = shufflevector <2 x double> %242, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %243 = fadd <2 x double> %242, %shift976
  %244 = extractelement <2 x double> %243, i64 0
  %245 = fptrunc double %244 to float
  %246 = fcmp oeq float %245, 0.000000e+00
  br i1 %246, label %247, label %268

247:                                              ; preds = %217
  %248 = add nsw i64 %.0826890, -2
  %249 = load i64, ptr %3, align 8, !tbaa !5
  %.not849 = icmp slt i64 %248, %249
  br i1 %.not849, label %259, label %250

250:                                              ; preds = %247
  %251 = mul nsw i64 %248, %38
  %252 = getelementptr %struct.complex, ptr %40, i64 %251
  %253 = getelementptr %struct.complex, ptr %252, i64 %201
  %254 = load float, ptr %253, align 4, !tbaa !15
  %255 = fcmp oge float %254, 0.000000e+00
  %256 = fneg float %254
  %257 = select i1 %255, float %254, float %256
  %258 = fadd float %257, %245
  br label %259

259:                                              ; preds = %250, %247
  %.0814 = phi float [ %258, %250 ], [ %245, %247 ]
  %260 = load i64, ptr %4, align 8, !tbaa !5
  %.not850.not = icmp slt i64 %.0826890, %260
  br i1 %.not850.not, label %261, label %268

261:                                              ; preds = %259
  %gep1019 = getelementptr %struct.complex, ptr %invariant.gep1018, i64 %.0826890
  %262 = getelementptr %struct.complex, ptr %gep1019, i64 %219
  %263 = load float, ptr %262, align 4, !tbaa !15
  %264 = fcmp oge float %263, 0.000000e+00
  %265 = fneg float %263
  %266 = select i1 %264, float %263, float %265
  %267 = fadd float %.0814, %266
  br label %268

268:                                              ; preds = %259, %261, %217
  %.1 = phi float [ %267, %261 ], [ %.0814, %259 ], [ %245, %217 ]
  store i64 %203, ptr %15, align 8, !tbaa !5
  %269 = load float, ptr %204, align 4, !tbaa !15
  %270 = fcmp oge float %269, 0.000000e+00
  %271 = fneg float %269
  %272 = select i1 %270, float %269, float %271
  %273 = fmul float %.1, %156
  %274 = fcmp ugt float %272, %273
  br i1 %274, label %376, label %275

275:                                              ; preds = %268
  %276 = add nsw i64 %201, %219
  store i64 %276, ptr %16, align 8, !tbaa !5
  %277 = call double @r_imag(ptr noundef nonnull %204) #5
  %278 = load i64, ptr %16, align 8, !tbaa !5
  %279 = getelementptr inbounds %struct.complex, ptr %40, i64 %278
  %280 = load float, ptr %279, align 4, !tbaa !15
  %281 = getelementptr inbounds %struct.complex, ptr %40, i64 %276
  %282 = call double @r_imag(ptr noundef %281) #5
  store i64 %203, ptr %15, align 8, !tbaa !5
  store i64 %276, ptr %16, align 8, !tbaa !5
  %283 = load float, ptr %204, align 4, !tbaa !15
  %284 = call double @r_imag(ptr noundef nonnull %204) #5
  %285 = fptrunc double %284 to float
  %286 = insertelement <2 x float> poison, float %283, i64 0
  %287 = insertelement <2 x float> %286, float %285, i64 1
  %288 = fcmp oge <2 x float> %287, zeroinitializer
  %289 = fneg <2 x float> %287
  %290 = select <2 x i1> %288, <2 x float> %287, <2 x float> %289
  %shift977 = shufflevector <2 x float> %290, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %291 = fadd <2 x float> %290, %shift977
  %292 = extractelement <2 x float> %291, i64 0
  %293 = load i64, ptr %16, align 8, !tbaa !5
  %294 = getelementptr inbounds %struct.complex, ptr %40, i64 %293
  %295 = load float, ptr %294, align 4, !tbaa !15
  %296 = call double @r_imag(ptr noundef %281) #5
  %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
  %shift978 = shufflevector <2 x float> %302, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %303 = fadd <2 x float> %302, %shift978
  %304 = extractelement <2 x float> %303, i64 0
  %305 = fcmp ole float %292, %304
  %306 = select i1 %305, float %292, float %304
  store i64 %218, ptr %15, align 8, !tbaa !5
  store i64 %220, ptr %16, align 8, !tbaa !5
  %307 = load <2 x float>, ptr %221, align 4, !tbaa !9
  %308 = load <2 x float>, ptr %227, align 4, !tbaa !9
  %309 = fsub <2 x float> %307, %308
  store <2 x float> %309, ptr %18, align 8, !tbaa !9
  store <2 x float> %309, ptr %17, align 8, !tbaa !9
  %310 = extractelement <2 x float> %308, i64 0
  %311 = fcmp oge float %310, 0.000000e+00
  %312 = fneg float %310
  %313 = select i1 %311, float %310, float %312
  %314 = call double @r_imag(ptr noundef nonnull %227) #5
  %315 = load float, ptr %17, align 8, !tbaa !15
  %316 = call double @r_imag(ptr noundef nonnull %17) #5
  %317 = insertelement <2 x double> poison, double %277, i64 0
  %318 = insertelement <2 x double> %317, double %314, i64 1
  %319 = fptrunc <2 x double> %318 to <2 x float>
  %320 = fcmp oge <2 x float> %319, zeroinitializer
  %321 = fneg <2 x float> %319
  %322 = select <2 x i1> %320, <2 x float> %319, <2 x float> %321
  %323 = insertelement <2 x float> poison, float %272, i64 0
  %324 = insertelement <2 x float> %323, float %313, i64 1
  %325 = fadd <2 x float> %324, %322
  %326 = insertelement <2 x float> poison, float %280, i64 0
  %327 = insertelement <2 x float> %326, float %315, i64 1
  %328 = fcmp oge <2 x float> %327, zeroinitializer
  %329 = fneg <2 x float> %327
  %330 = select <2 x i1> %328, <2 x float> %327, <2 x float> %329
  %331 = insertelement <2 x double> poison, double %282, i64 0
  %332 = insertelement <2 x double> %331, double %316, i64 1
  %333 = fptrunc <2 x double> %332 to <2 x float>
  %334 = fcmp oge <2 x float> %333, zeroinitializer
  %335 = fneg <2 x float> %333
  %336 = select <2 x i1> %334, <2 x float> %333, <2 x float> %335
  %337 = fadd <2 x float> %330, %336
  %338 = fcmp oge <2 x float> %325, %337
  %339 = select <2 x i1> %338, <2 x float> %325, <2 x float> %337
  store i64 %218, ptr %15, align 8, !tbaa !5
  store i64 %220, ptr %16, align 8, !tbaa !5
  %340 = load <2 x float>, ptr %221, align 4, !tbaa !9
  %341 = load <2 x float>, ptr %227, align 4, !tbaa !9
  %342 = fsub <2 x float> %340, %341
  store <2 x float> %342, ptr %18, align 8, !tbaa !9
  store <2 x float> %342, ptr %17, align 8, !tbaa !9
  %343 = extractelement <2 x float> %341, i64 0
  %344 = fcmp oge float %343, 0.000000e+00
  %345 = fneg float %343
  %346 = select i1 %344, float %343, float %345
  %347 = call double @r_imag(ptr noundef nonnull %227) #5
  %348 = fptrunc double %347 to float
  %349 = fcmp oge float %348, 0.000000e+00
  %350 = fneg float %348
  %351 = select i1 %349, float %348, float %350
  %352 = fadd float %346, %351
  %353 = load float, ptr %17, align 8, !tbaa !15
  %354 = call double @r_imag(ptr noundef nonnull %17) #5
  %355 = fptrunc double %354 to float
  %356 = insertelement <2 x float> poison, float %353, i64 0
  %357 = insertelement <2 x float> %356, float %355, i64 1
  %358 = fcmp oge <2 x float> %357, zeroinitializer
  %359 = fneg <2 x float> %357
  %360 = select <2 x i1> %358, <2 x float> %357, <2 x float> %359
  %shift979 = shufflevector <2 x float> %360, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %361 = fadd <2 x float> %360, %shift979
  %362 = extractelement <2 x float> %361, i64 0
  %363 = fcmp ole float %352, %362
  %364 = select i1 %363, float %352, float %362
  %365 = extractelement <2 x float> %339, i64 0
  %366 = extractelement <2 x float> %339, i64 1
  %367 = fadd float %365, %366
  %368 = fdiv float %366, %367
  %369 = fmul float %368, %364
  %370 = fmul float %369, %156
  %371 = fdiv float %365, %367
  %372 = fmul float %306, %371
  %373 = fcmp oge float %160, %370
  %374 = select i1 %373, float %160, float %370
  %375 = fcmp ugt float %372, %374
  br i1 %375, label %376, label %._crit_edge893

376:                                              ; preds = %268, %275
  %377 = load i64, ptr %14, align 8, !tbaa !5
  %.not848.not = icmp sgt i64 %.0826890, %377
  br i1 %.not848.not, label %.lr.ph892, label %._crit_edge893, !llvm.loop !19

._crit_edge893:                                   ; preds = %.lr.ph892, %275, %376, %199
  %.0826.lcssa = phi i64 [ %.1833928, %199 ], [ %201, %376 ], [ %.0826890, %275 ], [ %.0826890, %.lr.ph892 ]
  %378 = load i64, ptr %3, align 8, !tbaa !5
  %379 = icmp sgt i64 %.0826.lcssa, %378
  br i1 %379, label %380, label %385

380:                                              ; preds = %._crit_edge893
  %381 = add nsw i64 %.0826.lcssa, -1
  %382 = mul nsw i64 %381, %38
  %383 = getelementptr %struct.complex, ptr %40, i64 %382
  %384 = getelementptr %struct.complex, ptr %383, i64 %.0826.lcssa
  store <2 x float> zeroinitializer, ptr %384, align 4, !tbaa !9
  br label %385

385:                                              ; preds = %380, %._crit_edge893
  %.not851 = icmp slt i64 %.0826.lcssa, %.1833928
  br i1 %.not851, label %386, label %881

386:                                              ; preds = %385
  %387 = load i64, ptr %0, align 8, !tbaa !5
  %.not852 = icmp eq i64 %387, 0
  %spec.select = select i1 %.not852, i64 %.0826.lcssa, i64 %.2822923
  %spec.select867 = select i1 %.not852, i64 %.1833928, i64 %.2924
  switch i64 %.0815925, label %415 [
    i64 10, label %388
    i64 20, label %404
  ]

388:                                              ; preds = %386
  %389 = mul nsw i64 %.0826.lcssa, %38
  %gep1029 = getelementptr %struct.complex, ptr %invariant.gep1028, i64 %.0826.lcssa
  %390 = getelementptr %struct.complex, ptr %gep1029, i64 %389
  %391 = load float, ptr %390, align 4, !tbaa !15
  %392 = fcmp oge float %391, 0.000000e+00
  %393 = fneg float %391
  %394 = select i1 %392, float %391, float %393
  %395 = fmul float %394, 7.500000e-01
  %396 = add nsw i64 %389, %.0826.lcssa
  %397 = getelementptr inbounds %struct.complex, ptr %40, i64 %396
  %398 = load float, ptr %397, align 4, !tbaa !15
  %399 = fadd float %398, %395
  %400 = getelementptr inbounds %struct.complex, ptr %40, i64 %396, i32 1
  %401 = load float, ptr %400, align 4, !tbaa !17
  %402 = insertelement <2 x float> poison, float %399, i64 0
  %403 = insertelement <2 x float> %402, float %401, i64 1
  br label %508

404:                                              ; preds = %386
  %405 = load float, ptr %181, align 4, !tbaa !15
  %406 = fcmp oge float %405, 0.000000e+00
  %407 = fneg float %405
  %408 = select i1 %406, float %405, float %407
  %409 = fmul float %408, 7.500000e-01
  %410 = load float, ptr %183, align 4, !tbaa !15
  %411 = fadd float %410, %409
  %412 = load float, ptr %184, align 4, !tbaa !17
  %413 = insertelement <2 x float> poison, float %411, i64 0
  %414 = insertelement <2 x float> %413, float %412, i64 1
  br label %508

415:                                              ; preds = %386
  store i64 %186, ptr %14, align 8, !tbaa !5
  %416 = load <2 x float>, ptr %187, align 4, !tbaa !9
  call void @c_sqrt(ptr noundef nonnull %18, ptr noundef %189) #5
  call void @c_sqrt(ptr noundef nonnull %19, ptr noundef %191) #5
  %417 = load float, ptr %18, align 8, !tbaa !15
  %418 = load float, ptr %169, align 4, !tbaa !17
  %419 = fneg float %418
  %420 = load <2 x float>, ptr %19, align 8, !tbaa !9
  %421 = insertelement <2 x float> poison, float %418, i64 0
  %422 = insertelement <2 x float> %421, float %419, i64 1
  %423 = fmul <2 x float> %420, %422
  %424 = shufflevector <2 x float> %423, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %425 = insertelement <2 x float> poison, float %417, i64 0
  %426 = shufflevector <2 x float> %425, <2 x float> poison, <2 x i32> zeroinitializer
  %427 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %426, <2 x float> %420, <2 x float> %424)
  store <2 x float> %427, ptr %17, align 8, !tbaa !9
  store <2 x float> %427, ptr %24, align 8, !tbaa !9
  %428 = extractelement <2 x float> %427, i64 0
  %429 = fcmp oge float %428, 0.000000e+00
  %430 = fneg float %428
  %431 = select i1 %429, float %428, float %430
  %432 = call double @r_imag(ptr noundef nonnull %24) #5
  %433 = fptrunc double %432 to float
  %434 = fcmp oge float %433, 0.000000e+00
  %435 = fneg float %433
  %436 = select i1 %434, float %433, float %435
  %437 = fadd float %431, %436
  %438 = fcmp une float %437, 0.000000e+00
  br i1 %438, label %439, label %508

439:                                              ; preds = %415
  store i64 %192, ptr %14, align 8, !tbaa !5
  %440 = load <2 x float>, ptr %193, align 4, !tbaa !9
  %441 = fsub <2 x float> %440, %416
  store <2 x float> %441, ptr %18, align 8, !tbaa !9
  %442 = fmul <2 x float> %441, <float 5.000000e-01, float 5.000000e-01>
  store <2 x float> %442, ptr %17, align 8, !tbaa !9
  store <2 x float> %442, ptr %26, align 8, !tbaa !9
  %443 = extractelement <2 x float> %442, i64 0
  %444 = fcmp oge float %443, 0.000000e+00
  %445 = fneg float %443
  %446 = select i1 %444, float %443, float %445
  %447 = call double @r_imag(ptr noundef nonnull %26) #5
  %448 = fptrunc double %447 to float
  %449 = fcmp oge float %448, 0.000000e+00
  %450 = fneg float %448
  %451 = select i1 %449, float %448, float %450
  %452 = fadd float %446, %451
  %453 = load float, ptr %26, align 8, !tbaa !15
  %454 = call double @r_imag(ptr noundef nonnull %26) #5
  %455 = fptrunc double %454 to float
  %456 = insertelement <2 x float> poison, float %453, i64 0
  %457 = insertelement <2 x float> %456, float %455, i64 1
  %458 = fcmp oge <2 x float> %457, zeroinitializer
  %459 = fneg <2 x float> %457
  %460 = select <2 x i1> %458, <2 x float> %457, <2 x float> %459
  %shift980 = shufflevector <2 x float> %460, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %461 = fadd <2 x float> %460, %shift980
  %462 = extractelement <2 x float> %461, i64 0
  %463 = fcmp oge float %437, %462
  %464 = select i1 %463, float %437, float %462
  %465 = load <2 x float>, ptr %26, align 8, !tbaa !9
  %466 = insertelement <2 x float> poison, float %464, i64 0
  %467 = shufflevector <2 x float> %466, <2 x float> poison, <2 x i32> zeroinitializer
  %468 = fdiv <2 x float> %465, %467
  store <2 x float> %468, ptr %21, align 8, !tbaa !9
  call void @pow_ci(ptr noundef nonnull %20, ptr noundef nonnull %21, ptr noundef nonnull @c__2) #5
  %469 = load <2 x float>, ptr %24, align 8, !tbaa !9
  %470 = fdiv <2 x float> %469, %467
  store <2 x float> %470, ptr %23, align 8, !tbaa !9
  call void @pow_ci(ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef nonnull @c__2) #5
  %471 = load <2 x float>, ptr %20, align 8, !tbaa !9
  %472 = load <2 x float>, ptr %22, align 8, !tbaa !9
  %473 = fadd <2 x float> %471, %472
  store <2 x float> %473, ptr %19, align 8, !tbaa !9
  call void @c_sqrt(ptr noundef nonnull %18, ptr noundef nonnull %19) #5
  %474 = load <2 x float>, ptr %18, align 8, !tbaa !9
  %475 = fmul <2 x float> %467, %474
  store <2 x float> %475, ptr %17, align 8, !tbaa !9
  store <2 x float> %475, ptr %27, align 8, !tbaa !9
  %476 = fcmp ogt float %452, 0.000000e+00
  br i1 %476, label %477, label %492

477:                                              ; preds = %439
  %478 = load <2 x float>, ptr %26, align 8, !tbaa !9
  %479 = insertelement <2 x float> poison, float %452, i64 0
  %480 = shufflevector <2 x float> %479, <2 x float> poison, <2 x i32> zeroinitializer
  %481 = fdiv <2 x float> %478, %480
  store <2 x float> %481, ptr %17, align 8, !tbaa !9
  store <2 x float> %481, ptr %18, align 8, !tbaa !9
  %482 = fmul <2 x float> %475, %481
  %483 = extractelement <2 x float> %482, i64 0
  %484 = fpext float %483 to double
  %485 = call double @r_imag(ptr noundef nonnull %18) #5
  %486 = call double @r_imag(ptr noundef nonnull %27) #5
  %487 = call double @llvm.fmuladd.f64(double %485, double %486, double %484)
  %488 = fcmp olt double %487, 0.000000e+00
  %489 = load <2 x float>, ptr %27, align 8, !tbaa !9
  br i1 %488, label %490, label %492

490:                                              ; preds = %477
  %491 = fneg <2 x float> %489
  store <2 x float> %491, ptr %19, align 8, !tbaa !9
  store <2 x float> %491, ptr %27, align 8, !tbaa !9
  br label %492

492:                                              ; preds = %477, %490, %439
  %493 = phi <2 x float> [ %489, %477 ], [ %491, %490 ], [ %475, %439 ]
  %494 = load <2 x float>, ptr %26, align 8, !tbaa !9
  %495 = fadd <2 x float> %494, %493
  store <2 x float> %495, ptr %20, align 8, !tbaa !9
  call void @cladiv_(ptr noundef nonnull %19, ptr noundef nonnull %24, ptr noundef nonnull %20) #5
  %496 = load float, ptr %24, align 8, !tbaa !15
  %497 = load float, ptr %172, align 4, !tbaa !17
  %498 = fneg float %497
  %499 = load <2 x float>, ptr %19, align 8, !tbaa !9
  %500 = insertelement <2 x float> poison, float %497, i64 0
  %501 = insertelement <2 x float> %500, float %498, i64 1
  %502 = fmul <2 x float> %499, %501
  %503 = shufflevector <2 x float> %502, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %504 = insertelement <2 x float> poison, float %496, i64 0
  %505 = shufflevector <2 x float> %504, <2 x float> poison, <2 x i32> zeroinitializer
  %506 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %505, <2 x float> %499, <2 x float> %503)
  store <2 x float> %506, ptr %18, align 8, !tbaa !9
  %507 = fsub <2 x float> %416, %506
  br label %508

508:                                              ; preds = %404, %492, %415, %388
  %509 = phi <2 x float> [ %403, %388 ], [ %414, %404 ], [ %507, %492 ], [ %416, %415 ]
  %510 = add nsw i64 %.0826.lcssa, 1
  store i64 %510, ptr %14, align 8, !tbaa !5
  br label %511

511:                                              ; preds = %513, %508
  %.0824 = phi i64 [ %178, %508 ], [ %549, %513 ]
  %512 = load i64, ptr %14, align 8, !tbaa !5
  %.not853 = icmp slt i64 %.0824, %512
  br i1 %.not853, label %593, label %513

513:                                              ; preds = %511
  %514 = mul nsw i64 %.0824, %38
  %515 = getelementptr %struct.complex, ptr %40, i64 %514
  %516 = getelementptr %struct.complex, ptr %515, i64 %.0824
  %517 = load <2 x float>, ptr %516, align 4, !tbaa !9
  store <2 x float> %517, ptr %30, align 8, !tbaa !9
  %518 = add nsw i64 %.0824, 1
  %519 = mul i64 %518, %170
  %520 = getelementptr inbounds %struct.complex, ptr %40, i64 %519
  %521 = load <2 x float>, ptr %520, align 4, !tbaa !9
  store <2 x float> %521, ptr %31, align 8, !tbaa !9
  %522 = fsub <2 x float> %517, %509
  store <2 x float> %522, ptr %17, align 8, !tbaa !9
  store <2 x float> %522, ptr %34, align 8, !tbaa !9
  %523 = add nsw i64 %518, %514
  store i64 %523, ptr %15, align 8, !tbaa !5
  %524 = getelementptr inbounds %struct.complex, ptr %40, i64 %523
  %525 = load float, ptr %524, align 4, !tbaa !15
  %526 = extractelement <2 x float> %522, i64 0
  %527 = fcmp oge float %526, 0.000000e+00
  %528 = fneg float %526
  %529 = select i1 %527, float %526, float %528
  %530 = fpext float %529 to double
  %531 = call double @r_imag(ptr noundef nonnull %34) #5
  %532 = fptrunc double %531 to float
  %533 = fcmp oge float %532, 0.000000e+00
  %534 = fneg float %532
  %535 = select i1 %533, float %532, float %534
  %536 = fpext float %535 to double
  %537 = fadd double %530, %536
  %538 = fcmp oge float %525, 0.000000e+00
  %539 = fneg float %525
  %540 = select i1 %538, float %525, float %539
  %541 = fpext float %540 to double
  %542 = fadd double %537, %541
  %543 = fptrunc double %542 to float
  %544 = load <2 x float>, ptr %34, align 8, !tbaa !9
  %545 = insertelement <2 x float> poison, float %543, i64 0
  %546 = shufflevector <2 x float> %545, <2 x float> poison, <2 x i32> zeroinitializer
  %547 = fdiv <2 x float> %544, %546
  store <2 x float> %547, ptr %17, align 8, !tbaa !9
  store <2 x float> %547, ptr %34, align 8, !tbaa !9
  %548 = fdiv float %525, %543
  store <2 x float> %547, ptr %25, align 16, !tbaa !9
  store float %548, ptr %173, align 8, !tbaa !15
  store float 0.000000e+00, ptr %174, align 4, !tbaa !17
  %549 = add nsw i64 %.0824, -1
  %550 = mul nsw i64 %549, %38
  %551 = add nsw i64 %550, %.0824
  store i64 %551, ptr %15, align 8, !tbaa !5
  %552 = getelementptr inbounds %struct.complex, ptr %40, i64 %551
  %553 = load float, ptr %552, align 4, !tbaa !15
  %554 = insertelement <2 x float> poison, float %548, i64 0
  %555 = insertelement <2 x float> %554, float %553, i64 1
  %556 = fcmp oge <2 x float> %555, zeroinitializer
  %557 = fneg <2 x float> %555
  %558 = select <2 x i1> %556, <2 x float> %555, <2 x float> %557
  %559 = fpext <2 x float> %558 to <2 x double>
  %shift981 = shufflevector <2 x double> %559, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %560 = fmul <2 x double> %shift981, %559
  %561 = extractelement <2 x double> %560, i64 0
  %562 = call double @r_imag(ptr noundef nonnull %34) #5
  %563 = load float, ptr %30, align 8, !tbaa !15
  %564 = call double @r_imag(ptr noundef nonnull %30) #5
  %565 = insertelement <2 x float> %547, float %563, i64 1
  %566 = fcmp oge <2 x float> %565, zeroinitializer
  %567 = fneg <2 x float> %565
  %568 = select <2 x i1> %566, <2 x float> %565, <2 x float> %567
  %569 = fpext <2 x float> %568 to <2 x double>
  %570 = insertelement <2 x double> poison, double %562, i64 0
  %571 = insertelement <2 x double> %570, double %564, i64 1
  %572 = fptrunc <2 x double> %571 to <2 x float>
  %573 = fcmp oge <2 x float> %572, zeroinitializer
  %574 = fneg <2 x float> %572
  %575 = select <2 x i1> %573, <2 x float> %572, <2 x float> %574
  %576 = fpext <2 x float> %575 to <2 x double>
  %577 = fadd <2 x double> %569, %576
  %578 = load float, ptr %31, align 8, !tbaa !15
  %579 = call double @r_imag(ptr noundef nonnull %31) #5
  %580 = fptrunc double %579 to float
  %581 = insertelement <2 x float> poison, float %578, i64 0
  %582 = insertelement <2 x float> %581, float %580, i64 1
  %583 = fcmp oge <2 x float> %582, zeroinitializer
  %584 = fneg <2 x float> %582
  %585 = select <2 x i1> %583, <2 x float> %582, <2 x float> %584
  %586 = fpext <2 x float> %585 to <2 x double>
  %shift982 = shufflevector <2 x double> %586, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %587 = fadd <2 x double> %shift982, %586
  %shift983 = shufflevector <2 x double> %577, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %588 = fadd <2 x double> %shift983, %587
  %589 = fmul <2 x double> %577, %588
  %590 = extractelement <2 x double> %589, i64 0
  %591 = fmul double %590, %175
  %592 = fcmp ugt double %561, %591
  br i1 %592, label %511, label %.loopexit873, !llvm.loop !20

593:                                              ; preds = %511
  %594 = mul nsw i64 %.0826.lcssa, %38
  %595 = getelementptr %struct.complex, ptr %40, i64 %594
  %596 = getelementptr %struct.complex, ptr %595, i64 %.0826.lcssa
  %597 = load <2 x float>, ptr %596, align 4, !tbaa !9
  store <2 x float> %597, ptr %30, align 8, !tbaa !9
  %598 = mul i64 %510, %170
  %599 = getelementptr inbounds %struct.complex, ptr %40, i64 %598
  %600 = load <2 x float>, ptr %599, align 4, !tbaa !9
  store <2 x float> %600, ptr %31, align 8, !tbaa !9
  %601 = fsub <2 x float> %597, %509
  store <2 x float> %601, ptr %17, align 8, !tbaa !9
  store <2 x float> %601, ptr %34, align 8, !tbaa !9
  %602 = add nsw i64 %510, %594
  store i64 %602, ptr %14, align 8, !tbaa !5
  %603 = getelementptr inbounds %struct.complex, ptr %40, i64 %602
  %604 = load float, ptr %603, align 4, !tbaa !15
  %605 = extractelement <2 x float> %601, i64 0
  %606 = fcmp oge float %605, 0.000000e+00
  %607 = fneg float %605
  %608 = select i1 %606, float %605, float %607
  %609 = fpext float %608 to double
  %610 = call double @r_imag(ptr noundef nonnull %34) #5
  %611 = fptrunc double %610 to float
  %612 = fcmp oge float %611, 0.000000e+00
  %613 = fneg float %611
  %614 = select i1 %612, float %611, float %613
  %615 = fpext float %614 to double
  %616 = fadd double %609, %615
  %617 = fcmp oge float %604, 0.000000e+00
  %618 = fneg float %604
  %619 = select i1 %617, float %604, float %618
  %620 = fpext float %619 to double
  %621 = fadd double %616, %620
  %622 = fptrunc double %621 to float
  %623 = load <2 x float>, ptr %34, align 8, !tbaa !9
  %624 = insertelement <2 x float> poison, float %622, i64 0
  %625 = shufflevector <2 x float> %624, <2 x float> poison, <2 x i32> zeroinitializer
  %626 = fdiv <2 x float> %623, %625
  store <2 x float> %626, ptr %17, align 8, !tbaa !9
  store <2 x float> %626, ptr %34, align 8, !tbaa !9
  %627 = fdiv float %604, %622
  store <2 x float> %626, ptr %25, align 16, !tbaa !9
  store float %627, ptr %173, align 8, !tbaa !15
  store float 0.000000e+00, ptr %174, align 4, !tbaa !17
  br label %.loopexit873

.loopexit873:                                     ; preds = %513, %593
  store i64 %178, ptr %14, align 8, !tbaa !5
  %.not854916.not = icmp slt i64 %.0824, %.1833928
  br i1 %.not854916.not, label %.lr.ph920, label %._crit_edge921

.lr.ph920:                                        ; preds = %.loopexit873
  %628 = icmp sgt i64 %.0824, %.0826.lcssa
  %629 = add nsw i64 %.0824, 1
  %630 = mul nsw i64 %.0824, %38
  %631 = add nsw i64 %629, %630
  %632 = add nsw i64 %.0824, 2
  %.not861 = icmp sgt i64 %632, %.1833928
  %633 = mul nsw i64 %629, %38
  %634 = add nsw i64 %633, %632
  %635 = getelementptr inbounds %struct.complex, ptr %40, i64 %634
  %636 = getelementptr inbounds i8, ptr %635, i64 4
  %637 = getelementptr %struct.complex, ptr %40, i64 %spec.select
  %638 = icmp sgt i64 %spec.select867, %.0824
  %639 = sub nsw i64 %spec.select867, %.0824
  %640 = getelementptr %struct.complex, ptr %40, i64 %.0824
  %641 = getelementptr %struct.complex, ptr %640, i64 %633
  %642 = sub nsw i64 %.0824, %spec.select
  %643 = getelementptr %struct.complex, ptr %637, i64 %630
  %644 = mul nsw i64 %.0824, %42
  %invariant.gep961 = getelementptr %struct.complex, ptr %44, i64 %644
  %645 = add nsw i64 %.0824, 2
  %.fr = freeze i64 %629
  %invariant.smax = call i64 @llvm.smax.i64(i64 %.0824, i64 %.fr)
  br label %646

646:                                              ; preds = %.lr.ph920, %.loopexit
  %.1827917 = phi i64 [ %.0824, %.lr.ph920 ], [ %855, %.loopexit ]
  %647 = icmp sgt i64 %.1827917, %.0824
  br i1 %647, label %650, label %648

648:                                              ; preds = %646
  %649 = call i32 @clarfg_(ptr noundef nonnull @c__2, ptr noundef nonnull %25, ptr noundef nonnull %173, ptr noundef nonnull @c__1, ptr noundef nonnull %28) #5
  br label %661

650:                                              ; preds = %646
  %651 = add nsw i64 %.1827917, -1
  %652 = mul nsw i64 %651, %38
  %653 = getelementptr %struct.complex, ptr %40, i64 %.1827917
  %654 = getelementptr %struct.complex, ptr %653, i64 %652
  %655 = call i32 @f2c_ccopy(ptr noundef nonnull @c__2, ptr noundef %654, ptr noundef nonnull @c__1, ptr noundef nonnull %25, ptr noundef nonnull @c__1) #5
  %656 = call i32 @clarfg_(ptr noundef nonnull @c__2, ptr noundef nonnull %25, ptr noundef nonnull %173, ptr noundef nonnull @c__1, ptr noundef nonnull %28) #5
  %657 = getelementptr %struct.complex, ptr %40, i64 %652
  %658 = getelementptr %struct.complex, ptr %657, i64 %.1827917
  %659 = load <2 x float>, ptr %25, align 16, !tbaa !9
  store <2 x float> %659, ptr %658, align 4, !tbaa !9
  %gep1027 = getelementptr %struct.complex, ptr %invariant.gep1026, i64 %.1827917
  %660 = getelementptr %struct.complex, ptr %gep1027, i64 %652
  store <2 x float> zeroinitializer, ptr %660, align 4, !tbaa !9
  br label %661

661:                                              ; preds = %648, %650
  %662 = load <2 x float>, ptr %173, align 8, !tbaa !9
  store <2 x float> %662, ptr %29, align 8, !tbaa !9
  %663 = load float, ptr %28, align 8, !tbaa !15
  %664 = load float, ptr %176, align 4, !tbaa !17
  %665 = fneg float %664
  %666 = insertelement <2 x float> poison, float %664, i64 0
  %667 = insertelement <2 x float> %666, float %665, i64 1
  %668 = fmul <2 x float> %662, %667
  %669 = shufflevector <2 x float> %668, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %670 = insertelement <2 x float> poison, float %663, i64 0
  %671 = shufflevector <2 x float> %670, <2 x float> poison, <2 x i32> zeroinitializer
  %672 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %671, <2 x float> %662, <2 x float> %669)
  store <2 x float> %672, ptr %17, align 8, !tbaa !9
  store i64 %spec.select867, ptr %15, align 8, !tbaa !5
  %.not856898 = icmp sgt i64 %.1827917, %spec.select867
  br i1 %.not856898, label %._crit_edge902, label %.lr.ph901

.lr.ph901:                                        ; preds = %661
  %673 = add nsw i64 %.1827917, 1
  %674 = shufflevector <2 x float> %672, <2 x float> poison, <2 x i32> zeroinitializer
  %invariant.gep1020 = getelementptr %struct.complex, ptr %40, i64 %.1827917
  br label %675

675:                                              ; preds = %.lr.ph901, %675
  %.1829899 = phi i64 [ %.1827917, %.lr.ph901 ], [ %703, %675 ]
  call void @r_cnjg(ptr noundef nonnull %19, ptr noundef nonnull %28) #5
  %676 = mul nsw i64 %.1829899, %38
  %677 = load float, ptr %19, align 8, !tbaa !15
  %gep1021 = getelementptr %struct.complex, ptr %invariant.gep1020, i64 %676
  %678 = load float, ptr %171, align 4, !tbaa !17
  %679 = fneg float %678
  %680 = add nsw i64 %673, %676
  %681 = getelementptr inbounds %struct.complex, ptr %40, i64 %680
  %682 = load <2 x float>, ptr %681, align 4, !tbaa !9
  %683 = fmul <2 x float> %674, %682
  store <2 x float> %683, ptr %20, align 8, !tbaa !9
  %684 = load <2 x float>, ptr %gep1021, align 4, !tbaa !9
  %685 = insertelement <2 x float> poison, float %678, i64 0
  %686 = insertelement <2 x float> %685, float %679, i64 1
  %687 = fmul <2 x float> %684, %686
  %688 = shufflevector <2 x float> %687, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %689 = insertelement <2 x float> poison, float %677, i64 0
  %690 = shufflevector <2 x float> %689, <2 x float> poison, <2 x i32> zeroinitializer
  %691 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %690, <2 x float> %684, <2 x float> %688)
  %692 = fadd <2 x float> %691, %683
  %693 = fsub <2 x float> %684, %692
  store <2 x float> %693, ptr %gep1021, align 4, !tbaa !9
  store i64 %680, ptr %16, align 8, !tbaa !5
  %694 = load <2 x float>, ptr %29, align 8, !tbaa !9
  %695 = shufflevector <2 x float> %692, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %696 = fneg <2 x float> %692
  %697 = shufflevector <2 x float> %695, <2 x float> %696, <2 x i32> <i32 0, i32 3>
  %698 = fmul <2 x float> %694, %697
  %699 = shufflevector <2 x float> %698, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %700 = shufflevector <2 x float> %692, <2 x float> poison, <2 x i32> zeroinitializer
  %701 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %700, <2 x float> %694, <2 x float> %699)
  store <2 x float> %701, ptr %18, align 8, !tbaa !9
  %702 = fsub <2 x float> %682, %701
  store <2 x float> %702, ptr %17, align 8, !tbaa !9
  store <2 x float> %702, ptr %681, align 4, !tbaa !9
  %703 = add nsw i64 %.1829899, 1
  %704 = load i64, ptr %15, align 8, !tbaa !5
  %.not856.not = icmp slt i64 %.1829899, %704
  br i1 %.not856.not, label %675, label %._crit_edge902, !llvm.loop !21

._crit_edge902:                                   ; preds = %675, %661
  %705 = add nsw i64 %.1827917, 2
  store i64 %705, ptr %16, align 8, !tbaa !5
  %706 = call i64 @llvm.smin.i64(i64 %705, i64 %.1833928)
  store i64 %706, ptr %15, align 8, !tbaa !5
  %.not858903 = icmp sgt i64 %spec.select, %706
  br i1 %.not858903, label %._crit_edge907, label %.lr.ph906

.lr.ph906:                                        ; preds = %._crit_edge902
  %707 = mul nsw i64 %.1827917, %38
  %708 = add nsw i64 %.1827917, 1
  %709 = mul nsw i64 %708, %38
  %710 = shufflevector <2 x float> %672, <2 x float> poison, <2 x i32> zeroinitializer
  %invariant.gep1022 = getelementptr %struct.complex, ptr %40, i64 %707
  br label %711

711:                                              ; preds = %.lr.ph906, %711
  %.2830904 = phi i64 [ %spec.select, %.lr.ph906 ], [ %741, %711 ]
  %712 = load float, ptr %28, align 8, !tbaa !15
  %gep1023 = getelementptr %struct.complex, ptr %invariant.gep1022, i64 %.2830904
  %713 = load float, ptr %176, align 4, !tbaa !17
  %714 = fneg float %713
  %715 = load <2 x float>, ptr %gep1023, align 4, !tbaa !9
  %716 = insertelement <2 x float> poison, float %713, i64 0
  %717 = insertelement <2 x float> %716, float %714, i64 1
  %718 = fmul <2 x float> %715, %717
  %719 = shufflevector <2 x float> %718, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %720 = insertelement <2 x float> poison, float %712, i64 0
  %721 = shufflevector <2 x float> %720, <2 x float> poison, <2 x i32> zeroinitializer
  %722 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %721, <2 x float> %715, <2 x float> %719)
  store <2 x float> %722, ptr %18, align 8, !tbaa !9
  %723 = add nsw i64 %.2830904, %709
  %724 = getelementptr inbounds %struct.complex, ptr %40, i64 %723
  %725 = load <2 x float>, ptr %724, align 4, !tbaa !9
  %726 = fmul <2 x float> %710, %725
  store <2 x float> %726, ptr %19, align 8, !tbaa !9
  %727 = fadd <2 x float> %722, %726
  %728 = fsub <2 x float> %715, %727
  store <2 x float> %728, ptr %17, align 8, !tbaa !9
  store <2 x float> %728, ptr %gep1023, align 4, !tbaa !9
  store i64 %723, ptr %16, align 8, !tbaa !5
  call void @r_cnjg(ptr noundef nonnull %19, ptr noundef nonnull %29) #5
  %729 = load <2 x float>, ptr %19, align 8, !tbaa !9
  %730 = shufflevector <2 x float> %727, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %731 = fneg <2 x float> %727
  %732 = shufflevector <2 x float> %730, <2 x float> %731, <2 x i32> <i32 0, i32 3>
  %733 = fmul <2 x float> %729, %732
  %734 = shufflevector <2 x float> %733, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %735 = shufflevector <2 x float> %727, <2 x float> poison, <2 x i32> zeroinitializer
  %736 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %735, <2 x float> %729, <2 x float> %734)
  store <2 x float> %736, ptr %18, align 8, !tbaa !9
  %737 = load <2 x float>, ptr %724, align 4, !tbaa !9
  %738 = fsub <2 x float> %737, %736
  store <2 x float> %738, ptr %17, align 8, !tbaa !9
  %739 = load i64, ptr %16, align 8, !tbaa !5
  %740 = getelementptr inbounds %struct.complex, ptr %40, i64 %739
  store <2 x float> %738, ptr %740, align 4, !tbaa !9
  %741 = add nsw i64 %.2830904, 1
  %742 = load i64, ptr %15, align 8, !tbaa !5
  %.not858.not = icmp slt i64 %.2830904, %742
  br i1 %.not858.not, label %711, label %._crit_edge907, !llvm.loop !22

._crit_edge907:                                   ; preds = %711, %._crit_edge902
  %743 = load i64, ptr %1, align 8, !tbaa !5
  %.not859 = icmp eq i64 %743, 0
  br i1 %.not859, label %.loopexit872, label %744

744:                                              ; preds = %._crit_edge907
  %745 = load i64, ptr %9, align 8, !tbaa !5
  store i64 %745, ptr %15, align 8, !tbaa !5
  %746 = load i64, ptr %8, align 8, !tbaa !5
  %.not860908 = icmp sgt i64 %746, %745
  br i1 %.not860908, label %.loopexit872, label %.lr.ph911

.lr.ph911:                                        ; preds = %744
  %747 = mul nsw i64 %.1827917, %42
  %748 = add nsw i64 %.1827917, 1
  %749 = mul nsw i64 %748, %42
  %750 = shufflevector <2 x float> %672, <2 x float> poison, <2 x i32> zeroinitializer
  %invariant.gep1024 = getelementptr %struct.complex, ptr %44, i64 %747
  br label %751

751:                                              ; preds = %.lr.ph911, %751
  %.3831909 = phi i64 [ %746, %.lr.ph911 ], [ %781, %751 ]
  %752 = load float, ptr %28, align 8, !tbaa !15
  %gep1025 = getelementptr %struct.complex, ptr %invariant.gep1024, i64 %.3831909
  %753 = load float, ptr %176, align 4, !tbaa !17
  %754 = fneg float %753
  %755 = load <2 x float>, ptr %gep1025, align 4, !tbaa !9
  %756 = insertelement <2 x float> poison, float %753, i64 0
  %757 = insertelement <2 x float> %756, float %754, i64 1
  %758 = fmul <2 x float> %755, %757
  %759 = shufflevector <2 x float> %758, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %760 = insertelement <2 x float> poison, float %752, i64 0
  %761 = shufflevector <2 x float> %760, <2 x float> poison, <2 x i32> zeroinitializer
  %762 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %761, <2 x float> %755, <2 x float> %759)
  store <2 x float> %762, ptr %18, align 8, !tbaa !9
  %763 = add nsw i64 %.3831909, %749
  %764 = getelementptr inbounds %struct.complex, ptr %44, i64 %763
  %765 = load <2 x float>, ptr %764, align 4, !tbaa !9
  %766 = fmul <2 x float> %750, %765
  store <2 x float> %766, ptr %19, align 8, !tbaa !9
  %767 = fadd <2 x float> %762, %766
  %768 = fsub <2 x float> %755, %767
  store <2 x float> %768, ptr %17, align 8, !tbaa !9
  store <2 x float> %768, ptr %gep1025, align 4, !tbaa !9
  store i64 %763, ptr %16, align 8, !tbaa !5
  call void @r_cnjg(ptr noundef nonnull %19, ptr noundef nonnull %29) #5
  %769 = load <2 x float>, ptr %19, align 8, !tbaa !9
  %770 = shufflevector <2 x float> %767, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %771 = fneg <2 x float> %767
  %772 = shufflevector <2 x float> %770, <2 x float> %771, <2 x i32> <i32 0, i32 3>
  %773 = fmul <2 x float> %769, %772
  %774 = shufflevector <2 x float> %773, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %775 = shufflevector <2 x float> %767, <2 x float> poison, <2 x i32> zeroinitializer
  %776 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %775, <2 x float> %769, <2 x float> %774)
  store <2 x float> %776, ptr %18, align 8, !tbaa !9
  %777 = load <2 x float>, ptr %764, align 4, !tbaa !9
  %778 = fsub <2 x float> %777, %776
  store <2 x float> %778, ptr %17, align 8, !tbaa !9
  %779 = load i64, ptr %16, align 8, !tbaa !5
  %780 = getelementptr inbounds %struct.complex, ptr %44, i64 %779
  store <2 x float> %778, ptr %780, align 4, !tbaa !9
  %781 = add nsw i64 %.3831909, 1
  %782 = load i64, ptr %15, align 8, !tbaa !5
  %.not860.not = icmp slt i64 %.3831909, %782
  br i1 %.not860.not, label %751, label %.loopexit872, !llvm.loop !23

.loopexit872:                                     ; preds = %751, %744, %._crit_edge907
  %783 = icmp eq i64 %.1827917, %.0824
  %or.cond = and i1 %628, %783
  br i1 %or.cond, label %784, label %.loopexit

784:                                              ; preds = %.loopexit872
  %785 = load <2 x float>, ptr %28, align 8, !tbaa !9
  %786 = fsub <2 x float> <float 1.000000e+00, float 0.000000e+00>, %785
  store <2 x float> %786, ptr %17, align 8, !tbaa !9
  store <2 x float> %786, ptr %35, align 8, !tbaa !9
  %787 = call double @c_abs(ptr noundef nonnull %35) #5
  %788 = fptrunc double %787 to float
  %789 = load <2 x float>, ptr %35, align 8, !tbaa !9
  %790 = insertelement <2 x float> poison, float %788, i64 0
  %791 = shufflevector <2 x float> %790, <2 x float> poison, <2 x i32> zeroinitializer
  %792 = fdiv <2 x float> %789, %791
  store <2 x float> %792, ptr %17, align 8, !tbaa !9
  store <2 x float> %792, ptr %35, align 8, !tbaa !9
  store i64 %631, ptr %15, align 8, !tbaa !5
  store i64 %631, ptr %16, align 8, !tbaa !5
  call void @r_cnjg(ptr noundef nonnull %18, ptr noundef nonnull %35) #5
  %793 = load i64, ptr %16, align 8, !tbaa !5
  %794 = getelementptr inbounds %struct.complex, ptr %40, i64 %793
  %795 = load float, ptr %794, align 4, !tbaa !15
  %796 = getelementptr inbounds i8, ptr %794, i64 4
  %797 = load float, ptr %796, align 4, !tbaa !17
  %798 = fneg float %797
  %799 = load <2 x float>, ptr %18, align 8, !tbaa !9
  %800 = insertelement <2 x float> poison, float %797, i64 0
  %801 = insertelement <2 x float> %800, float %798, i64 1
  %802 = fmul <2 x float> %799, %801
  %803 = shufflevector <2 x float> %802, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %804 = insertelement <2 x float> poison, float %795, i64 0
  %805 = shufflevector <2 x float> %804, <2 x float> poison, <2 x i32> zeroinitializer
  %806 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %805, <2 x float> %799, <2 x float> %803)
  store <2 x float> %806, ptr %17, align 8, !tbaa !9
  %807 = load i64, ptr %15, align 8, !tbaa !5
  %808 = getelementptr inbounds %struct.complex, ptr %40, i64 %807
  store <2 x float> %806, ptr %808, align 4, !tbaa !9
  br i1 %.not861, label %.lr.ph915.preheader, label %809

809:                                              ; preds = %784
  store i64 %634, ptr %16, align 8, !tbaa !5
  %810 = load float, ptr %635, align 4, !tbaa !15
  %811 = load float, ptr %636, align 4, !tbaa !17
  %812 = fneg float %811
  %813 = load <2 x float>, ptr %35, align 8, !tbaa !9
  %814 = insertelement <2 x float> poison, float %811, i64 0
  %815 = insertelement <2 x float> %814, float %812, i64 1
  %816 = fmul <2 x float> %813, %815
  %817 = shufflevector <2 x float> %816, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %818 = insertelement <2 x float> poison, float %810, i64 0
  %819 = shufflevector <2 x float> %818, <2 x float> poison, <2 x i32> zeroinitializer
  %820 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %819, <2 x float> %813, <2 x float> %817)
  store <2 x float> %820, ptr %17, align 8, !tbaa !9
  store <2 x float> %820, ptr %635, align 4, !tbaa !9
  br label %.lr.ph915.preheader

.lr.ph915.preheader:                              ; preds = %809, %784
  store i64 %.1833928, ptr %15, align 8, !tbaa !5
  br i1 %638, label %821, label %823

821:                                              ; preds = %.lr.ph915.preheader
  store i64 %639, ptr %16, align 8, !tbaa !5
  %822 = call i32 @f2c_cscal(ptr noundef nonnull %16, ptr noundef nonnull %35, ptr noundef %641, ptr noundef nonnull %6) #5
  br label %823

823:                                              ; preds = %821, %.lr.ph915.preheader
  store i64 %642, ptr %16, align 8, !tbaa !5
  call void @r_cnjg(ptr noundef nonnull %17, ptr noundef nonnull %35) #5
  %824 = call i32 @f2c_cscal(ptr noundef nonnull %16, ptr noundef nonnull %17, ptr noundef %643, ptr noundef nonnull @c__1) #5
  %825 = load i64, ptr %1, align 8, !tbaa !5
  %.not864.peel = icmp eq i64 %825, 0
  br i1 %.not864.peel, label %829, label %826

826:                                              ; preds = %823
  call void @r_cnjg(ptr noundef nonnull %17, ptr noundef nonnull %35) #5
  %827 = load i64, ptr %8, align 8, !tbaa !5
  %gep962 = getelementptr %struct.complex, ptr %invariant.gep961, i64 %827
  %828 = call i32 @f2c_cscal(ptr noundef nonnull %33, ptr noundef nonnull %17, ptr noundef %gep962, ptr noundef nonnull @c__1) #5
  br label %829

829:                                              ; preds = %826, %823
  %830 = load i64, ptr %15, align 8, !tbaa !5
  %or.cond963 = icmp sgt i64 %830, %invariant.smax
  br i1 %or.cond963, label %.lr.ph915, label %.loopexit

.lr.ph915:                                        ; preds = %829, %852
  %.4913 = phi i64 [ %853, %852 ], [ %645, %829 ]
  %.not863 = icmp eq i64 %.4913, %629
  br i1 %.not863, label %852, label %831

831:                                              ; preds = %.lr.ph915
  %832 = icmp sgt i64 %spec.select867, %.4913
  br i1 %832, label %833, label %840

833:                                              ; preds = %831
  %834 = sub nsw i64 %spec.select867, %.4913
  store i64 %834, ptr %16, align 8, !tbaa !5
  %835 = add nsw i64 %.4913, 1
  %836 = mul nsw i64 %835, %38
  %837 = getelementptr %struct.complex, ptr %40, i64 %.4913
  %838 = getelementptr %struct.complex, ptr %837, i64 %836
  %839 = call i32 @f2c_cscal(ptr noundef nonnull %16, ptr noundef nonnull %35, ptr noundef %838, ptr noundef nonnull %6) #5
  br label %840

840:                                              ; preds = %833, %831
  %841 = sub nsw i64 %.4913, %spec.select
  store i64 %841, ptr %16, align 8, !tbaa !5
  call void @r_cnjg(ptr noundef nonnull %17, ptr noundef nonnull %35) #5
  %842 = mul nsw i64 %.4913, %38
  %843 = getelementptr %struct.complex, ptr %637, i64 %842
  %844 = call i32 @f2c_cscal(ptr noundef nonnull %16, ptr noundef nonnull %17, ptr noundef %843, ptr noundef nonnull @c__1) #5
  %845 = load i64, ptr %1, align 8, !tbaa !5
  %.not864 = icmp eq i64 %845, 0
  br i1 %.not864, label %852, label %846

846:                                              ; preds = %840
  call void @r_cnjg(ptr noundef nonnull %17, ptr noundef nonnull %35) #5
  %847 = load i64, ptr %8, align 8, !tbaa !5
  %848 = mul nsw i64 %.4913, %42
  %849 = getelementptr %struct.complex, ptr %44, i64 %847
  %850 = getelementptr %struct.complex, ptr %849, i64 %848
  %851 = call i32 @f2c_cscal(ptr noundef nonnull %33, ptr noundef nonnull %17, ptr noundef %850, ptr noundef nonnull @c__1) #5
  br label %852

852:                                              ; preds = %.lr.ph915, %846, %840
  %853 = add nsw i64 %.4913, 1
  %854 = load i64, ptr %15, align 8, !tbaa !5
  %.not862.not = icmp slt i64 %.4913, %854
  br i1 %.not862.not, label %.lr.ph915, label %.loopexit, !llvm.loop !24

.loopexit:                                        ; preds = %852, %829, %.loopexit872
  %855 = add nsw i64 %.1827917, 1
  %856 = load i64, ptr %14, align 8, !tbaa !5
  %.not854.not = icmp slt i64 %.1827917, %856
  br i1 %.not854.not, label %646, label %._crit_edge921, !llvm.loop !26

._crit_edge921:                                   ; preds = %.loopexit, %.loopexit873
  store i64 %180, ptr %14, align 8, !tbaa !5
  %857 = load <2 x float>, ptr %181, align 4, !tbaa !9
  store <2 x float> %857, ptr %35, align 8, !tbaa !9
  %858 = call double @r_imag(ptr noundef nonnull %35) #5
  %859 = fcmp une double %858, 0.000000e+00
  br i1 %859, label %860, label %878

860:                                              ; preds = %._crit_edge921
  %861 = call double @c_abs(ptr noundef nonnull %35) #5
  %862 = fptrunc double %861 to float
  store float %862, ptr %181, align 4, !tbaa !15
  store float 0.000000e+00, ptr %194, align 4, !tbaa !17
  %863 = load <2 x float>, ptr %35, align 8, !tbaa !9
  %864 = insertelement <2 x float> poison, float %862, i64 0
  %865 = shufflevector <2 x float> %864, <2 x float> poison, <2 x i32> zeroinitializer
  %866 = fdiv <2 x float> %863, %865
  store <2 x float> %866, ptr %17, align 8, !tbaa !9
  store <2 x float> %866, ptr %35, align 8, !tbaa !9
  %867 = icmp sgt i64 %spec.select867, %.1833928
  br i1 %867, label %868, label %871

868:                                              ; preds = %860
  %869 = sub nsw i64 %spec.select867, %.1833928
  store i64 %869, ptr %14, align 8, !tbaa !5
  call void @r_cnjg(ptr noundef nonnull %17, ptr noundef nonnull %35) #5
  %870 = call i32 @f2c_cscal(ptr noundef nonnull %14, ptr noundef nonnull %17, ptr noundef %197, ptr noundef nonnull %6) #5
  br label %871

871:                                              ; preds = %868, %860
  %872 = sub nsw i64 %.1833928, %spec.select
  store i64 %872, ptr %14, align 8, !tbaa !5
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %spec.select
  %873 = call i32 @f2c_cscal(ptr noundef nonnull %14, ptr noundef nonnull %35, ptr noundef %gep, ptr noundef nonnull @c__1) #5
  %874 = load i64, ptr %1, align 8, !tbaa !5
  %.not855 = icmp eq i64 %874, 0
  br i1 %.not855, label %878, label %875

875:                                              ; preds = %871
  %876 = load i64, ptr %8, align 8, !tbaa !5
  %gep927 = getelementptr %struct.complex, ptr %invariant.gep926, i64 %876
  %877 = call i32 @f2c_cscal(ptr noundef nonnull %33, ptr noundef nonnull %35, ptr noundef %gep927, ptr noundef nonnull @c__1) #5
  br label %878

878:                                              ; preds = %._crit_edge921, %875, %871
  %879 = add nuw nsw i64 %.0815925, 1
  %exitcond943.not = icmp eq i64 %879, 31
  br i1 %exitcond943.not, label %880, label %199, !llvm.loop !27

880:                                              ; preds = %878
  store i64 %.1833928, ptr %12, align 8, !tbaa !5
  br label %.loopexit874

881:                                              ; preds = %385
  store i64 %.1833928, ptr %14, align 8, !tbaa !5
  store i64 %182, ptr %15, align 8, !tbaa !5
  %882 = getelementptr inbounds %struct.complex, ptr %41, i64 %.1833928
  %883 = load <2 x float>, ptr %183, align 4, !tbaa !9
  store <2 x float> %883, ptr %882, align 4, !tbaa !9
  %884 = add nsw i64 %.0826.lcssa, -1
  br i1 %379, label %.preheader, label %.loopexit874

.loopexit874:                                     ; preds = %881, %164, %13, %880, %51
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %37) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #5
  ret i32 0
}

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

declare double @r_imag(ptr noundef) local_unnamed_addr #2

declare void @r_cnjg(ptr noundef, ptr noundef) local_unnamed_addr #2

declare double @c_abs(ptr noundef) local_unnamed_addr #2

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

declare double @slamch_(ptr noundef) local_unnamed_addr #2

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

declare void @c_sqrt(ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @pow_ci(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #3

declare void @cladiv_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x float> @llvm.fmuladd.v2f32(<2 x float>, <2 x float>, <2 x float>) #4

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"float", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.unroll.disable"}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = !{!16, !10, i64 0}
!16 = !{!"", !10, i64 0, !10, i64 4}
!17 = !{!16, !10, i64 4}
!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}
!25 = !{!"llvm.loop.peeled.count", i32 2}
!26 = distinct !{!26, !14}
!27 = distinct !{!27, !14}


; Effective O3 passes: DSEPass,EarlyCSEPass,GVNPass,GlobalDCEPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopFullUnrollPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,VectorCombinePass