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

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

%struct.complex = type { float, float }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b2 = external hidden global %struct.complex, align 4
@c__1 = external hidden global i64, align 8
@c_b1 = external hidden global %struct.complex, align 4

; Function Attrs: nounwind uwtable
define dso_local i32 @ctgevc_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16) #0 {
  %18 = alloca i32, align 4
  %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 ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca i64, align 8
  %37 = alloca i64, align 8
  %38 = alloca i64, align 8
  %39 = alloca i64, align 8
  %40 = alloca i64, align 8
  %41 = alloca i64, align 8
  %42 = alloca i64, align 8
  %43 = alloca i64, align 8
  %44 = alloca i64, align 8
  %45 = alloca i64, align 8
  %46 = alloca i64, align 8
  %47 = alloca i64, align 8
  %48 = alloca i64, align 8
  %49 = alloca float, align 4
  %50 = alloca float, align 4
  %51 = alloca float, align 4
  %52 = alloca float, align 4
  %53 = alloca float, align 4
  %54 = alloca float, align 4
  %55 = alloca %struct.complex, align 4
  %56 = alloca %struct.complex, align 4
  %57 = alloca %struct.complex, align 4
  %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 %struct.complex, align 4
  %64 = alloca i64, align 8
  %65 = alloca i64, align 8
  %66 = alloca i64, align 8
  %67 = alloca float, align 4
  %68 = alloca i64, align 8
  %69 = alloca i64, align 8
  %70 = alloca float, align 4
  %71 = alloca %struct.complex, align 4
  %72 = alloca i64, align 8
  %73 = alloca i64, align 8
  %74 = alloca i64, align 8
  %75 = alloca float, align 4
  %76 = alloca i64, align 8
  %77 = alloca float, align 4
  %78 = alloca %struct.complex, align 4
  %79 = alloca %struct.complex, align 4
  %80 = alloca float, align 4
  %81 = alloca float, align 4
  %82 = alloca i64, align 8
  %83 = alloca i64, align 8
  %84 = alloca float, align 4
  %85 = alloca float, align 4
  %86 = alloca i64, align 8
  %87 = alloca float, align 4
  %88 = alloca float, align 4
  %89 = alloca i64, align 8
  %90 = alloca i64, align 8
  %91 = alloca float, align 4
  %92 = alloca float, align 4
  %93 = alloca float, align 4
  %94 = alloca %struct.complex, align 4
  %95 = alloca i64, align 8
  %96 = alloca float, align 4
  %97 = alloca float, align 4
  %98 = alloca %struct.complex, align 4
  %99 = alloca float, align 4
  %100 = alloca float, align 4
  %101 = alloca i64, align 8
  %102 = alloca i64, align 8
  %103 = alloca i32, align 4
  store ptr %0, ptr %19, align 8, !tbaa !5
  store ptr %1, ptr %20, align 8, !tbaa !5
  store ptr %2, ptr %21, align 8, !tbaa !5
  store ptr %3, ptr %22, align 8, !tbaa !5
  store ptr %4, ptr %23, align 8, !tbaa !5
  store ptr %5, ptr %24, align 8, !tbaa !5
  store ptr %6, ptr %25, align 8, !tbaa !5
  store ptr %7, ptr %26, align 8, !tbaa !5
  store ptr %8, ptr %27, align 8, !tbaa !5
  store ptr %9, ptr %28, align 8, !tbaa !5
  store ptr %10, ptr %29, align 8, !tbaa !5
  store ptr %11, ptr %30, align 8, !tbaa !5
  store ptr %12, ptr %31, align 8, !tbaa !5
  store ptr %13, ptr %32, align 8, !tbaa !5
  store ptr %14, ptr %33, align 8, !tbaa !5
  store ptr %15, ptr %34, align 8, !tbaa !5
  store ptr %16, ptr %35, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.start.p0(i64 8, 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 4, ptr %49) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #4
  call void @llvm.lifetime.start.p0(i64 4, 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 8, 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 8, ptr %63) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #4
  call void @llvm.lifetime.start.p0(i64 8, 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 4, ptr %75) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #4
  call void @llvm.lifetime.start.p0(i64 4, 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 4, 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 8, ptr %83) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #4
  call void @llvm.lifetime.start.p0(i64 8, 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
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %93) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %96) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %97) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %99) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %100) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #4
  %104 = load ptr, ptr %21, align 8, !tbaa !5
  %105 = getelementptr inbounds i64, ptr %104, i32 -1
  store ptr %105, ptr %21, align 8, !tbaa !5
  %106 = load ptr, ptr %24, align 8, !tbaa !5
  %107 = load i64, ptr %106, align 8, !tbaa !9
  store i64 %107, ptr %38, align 8, !tbaa !9
  %108 = load i64, ptr %38, align 8, !tbaa !9
  %109 = add nsw i64 1, %108
  store i64 %109, ptr %39, align 8, !tbaa !9
  %110 = load i64, ptr %39, align 8, !tbaa !9
  %111 = load ptr, ptr %23, align 8, !tbaa !5
  %112 = sub i64 0, %110
  %113 = getelementptr inbounds %struct.complex, ptr %111, i64 %112
  store ptr %113, ptr %23, align 8, !tbaa !5
  %114 = load ptr, ptr %26, align 8, !tbaa !5
  %115 = load i64, ptr %114, align 8, !tbaa !9
  store i64 %115, ptr %36, align 8, !tbaa !9
  %116 = load i64, ptr %36, align 8, !tbaa !9
  %117 = add nsw i64 1, %116
  store i64 %117, ptr %37, align 8, !tbaa !9
  %118 = load i64, ptr %37, align 8, !tbaa !9
  %119 = load ptr, ptr %25, align 8, !tbaa !5
  %120 = sub i64 0, %118
  %121 = getelementptr inbounds %struct.complex, ptr %119, i64 %120
  store ptr %121, ptr %25, align 8, !tbaa !5
  %122 = load ptr, ptr %28, align 8, !tbaa !5
  %123 = load i64, ptr %122, align 8, !tbaa !9
  store i64 %123, ptr %40, align 8, !tbaa !9
  %124 = load i64, ptr %40, align 8, !tbaa !9
  %125 = add nsw i64 1, %124
  store i64 %125, ptr %41, align 8, !tbaa !9
  %126 = load i64, ptr %41, align 8, !tbaa !9
  %127 = load ptr, ptr %27, align 8, !tbaa !5
  %128 = sub i64 0, %126
  %129 = getelementptr inbounds %struct.complex, ptr %127, i64 %128
  store ptr %129, ptr %27, align 8, !tbaa !5
  %130 = load ptr, ptr %30, align 8, !tbaa !5
  %131 = load i64, ptr %130, align 8, !tbaa !9
  store i64 %131, ptr %42, align 8, !tbaa !9
  %132 = load i64, ptr %42, align 8, !tbaa !9
  %133 = add nsw i64 1, %132
  store i64 %133, ptr %43, align 8, !tbaa !9
  %134 = load i64, ptr %43, align 8, !tbaa !9
  %135 = load ptr, ptr %29, align 8, !tbaa !5
  %136 = sub i64 0, %134
  %137 = getelementptr inbounds %struct.complex, ptr %135, i64 %136
  store ptr %137, ptr %29, align 8, !tbaa !5
  %138 = load ptr, ptr %33, align 8, !tbaa !5
  %139 = getelementptr inbounds %struct.complex, ptr %138, i32 -1
  store ptr %139, ptr %33, align 8, !tbaa !5
  %140 = load ptr, ptr %34, align 8, !tbaa !5
  %141 = getelementptr inbounds float, ptr %140, i32 -1
  store ptr %141, ptr %34, align 8, !tbaa !5
  %142 = load ptr, ptr %20, align 8, !tbaa !5
  %143 = call i64 @lsame_(ptr noundef %142, ptr noundef @.str)
  %144 = icmp ne i64 %143, 0
  br i1 %144, label %145, label %146

145:                                              ; preds = %17
  store i64 1, ptr %102, align 8, !tbaa !9
  store i64 1, ptr %82, align 8, !tbaa !9
  store i64 0, ptr %95, align 8, !tbaa !9
  br label %159

146:                                              ; preds = %17
  %147 = load ptr, ptr %20, align 8, !tbaa !5
  %148 = call i64 @lsame_(ptr noundef %147, ptr noundef @.str.1)
  %149 = icmp ne i64 %148, 0
  br i1 %149, label %150, label %151

150:                                              ; preds = %146
  store i64 2, ptr %102, align 8, !tbaa !9
  store i64 0, ptr %82, align 8, !tbaa !9
  store i64 0, ptr %95, align 8, !tbaa !9
  br label %158

151:                                              ; preds = %146
  %152 = load ptr, ptr %20, align 8, !tbaa !5
  %153 = call i64 @lsame_(ptr noundef %152, ptr noundef @.str.2)
  %154 = icmp ne i64 %153, 0
  br i1 %154, label %155, label %156

155:                                              ; preds = %151
  store i64 3, ptr %102, align 8, !tbaa !9
  store i64 1, ptr %82, align 8, !tbaa !9
  store i64 1, ptr %95, align 8, !tbaa !9
  br label %157

156:                                              ; preds = %151
  store i64 -1, ptr %102, align 8, !tbaa !9
  br label %157

157:                                              ; preds = %156, %155
  br label %158

158:                                              ; preds = %157, %150
  br label %159

159:                                              ; preds = %158, %145
  %160 = load ptr, ptr %19, align 8, !tbaa !5
  %161 = call i64 @lsame_(ptr noundef %160, ptr noundef @.str.3)
  %162 = icmp ne i64 %161, 0
  br i1 %162, label %163, label %164

163:                                              ; preds = %159
  store i64 1, ptr %83, align 8, !tbaa !9
  store i64 0, ptr %86, align 8, !tbaa !9
  store i64 1, ptr %89, align 8, !tbaa !9
  br label %177

164:                                              ; preds = %159
  %165 = load ptr, ptr %19, align 8, !tbaa !5
  %166 = call i64 @lsame_(ptr noundef %165, ptr noundef @.str.4)
  %167 = icmp ne i64 %166, 0
  br i1 %167, label %168, label %169

168:                                              ; preds = %164
  store i64 2, ptr %83, align 8, !tbaa !9
  store i64 1, ptr %86, align 8, !tbaa !9
  store i64 0, ptr %89, align 8, !tbaa !9
  br label %176

169:                                              ; preds = %164
  %170 = load ptr, ptr %19, align 8, !tbaa !5
  %171 = call i64 @lsame_(ptr noundef %170, ptr noundef @.str.2)
  %172 = icmp ne i64 %171, 0
  br i1 %172, label %173, label %174

173:                                              ; preds = %169
  store i64 3, ptr %83, align 8, !tbaa !9
  store i64 1, ptr %86, align 8, !tbaa !9
  store i64 1, ptr %89, align 8, !tbaa !9
  br label %175

174:                                              ; preds = %169
  store i64 -1, ptr %83, align 8, !tbaa !9
  br label %175

175:                                              ; preds = %174, %173
  br label %176

176:                                              ; preds = %175, %168
  br label %177

177:                                              ; preds = %176, %163
  %178 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 0, ptr %178, align 8, !tbaa !9
  %179 = load i64, ptr %83, align 8, !tbaa !9
  %180 = icmp slt i64 %179, 0
  br i1 %180, label %181, label %183

181:                                              ; preds = %177
  %182 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -1, ptr %182, align 8, !tbaa !9
  br label %228

183:                                              ; preds = %177
  %184 = load i64, ptr %102, align 8, !tbaa !9
  %185 = icmp slt i64 %184, 0
  br i1 %185, label %186, label %188

186:                                              ; preds = %183
  %187 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -2, ptr %187, align 8, !tbaa !9
  br label %227

188:                                              ; preds = %183
  %189 = load ptr, ptr %22, align 8, !tbaa !5
  %190 = load i64, ptr %189, align 8, !tbaa !9
  %191 = icmp slt i64 %190, 0
  br i1 %191, label %192, label %194

192:                                              ; preds = %188
  %193 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -4, ptr %193, align 8, !tbaa !9
  br label %226

194:                                              ; preds = %188
  %195 = load ptr, ptr %24, align 8, !tbaa !5
  %196 = load i64, ptr %195, align 8, !tbaa !9
  %197 = load ptr, ptr %22, align 8, !tbaa !5
  %198 = load i64, ptr %197, align 8, !tbaa !9
  %199 = icmp sge i64 1, %198
  br i1 %199, label %200, label %201

200:                                              ; preds = %194
  br label %204

201:                                              ; preds = %194
  %202 = load ptr, ptr %22, align 8, !tbaa !5
  %203 = load i64, ptr %202, align 8, !tbaa !9
  br label %204

204:                                              ; preds = %201, %200
  %205 = phi i64 [ 1, %200 ], [ %203, %201 ]
  %206 = icmp slt i64 %196, %205
  br i1 %206, label %207, label %209

207:                                              ; preds = %204
  %208 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -6, ptr %208, align 8, !tbaa !9
  br label %225

209:                                              ; preds = %204
  %210 = load ptr, ptr %26, align 8, !tbaa !5
  %211 = load i64, ptr %210, align 8, !tbaa !9
  %212 = load ptr, ptr %22, align 8, !tbaa !5
  %213 = load i64, ptr %212, align 8, !tbaa !9
  %214 = icmp sge i64 1, %213
  br i1 %214, label %215, label %216

215:                                              ; preds = %209
  br label %219

216:                                              ; preds = %209
  %217 = load ptr, ptr %22, align 8, !tbaa !5
  %218 = load i64, ptr %217, align 8, !tbaa !9
  br label %219

219:                                              ; preds = %216, %215
  %220 = phi i64 [ 1, %215 ], [ %218, %216 ]
  %221 = icmp slt i64 %211, %220
  br i1 %221, label %222, label %224

222:                                              ; preds = %219
  %223 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -8, ptr %223, align 8, !tbaa !9
  br label %224

224:                                              ; preds = %222, %219
  br label %225

225:                                              ; preds = %224, %207
  br label %226

226:                                              ; preds = %225, %192
  br label %227

227:                                              ; preds = %226, %186
  br label %228

228:                                              ; preds = %227, %181
  %229 = load ptr, ptr %35, align 8, !tbaa !5
  %230 = load i64, ptr %229, align 8, !tbaa !9
  %231 = icmp ne i64 %230, 0
  br i1 %231, label %232, label %237

232:                                              ; preds = %228
  %233 = load ptr, ptr %35, align 8, !tbaa !5
  %234 = load i64, ptr %233, align 8, !tbaa !9
  %235 = sub nsw i64 0, %234
  store i64 %235, ptr %44, align 8, !tbaa !9
  %236 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %44)
  store i32 0, ptr %18, align 4
  store i32 1, ptr %103, align 4
  br label %3881

237:                                              ; preds = %228
  %238 = load i64, ptr %82, align 8, !tbaa !9
  %239 = icmp ne i64 %238, 0
  br i1 %239, label %261, label %240

240:                                              ; preds = %237
  store i64 0, ptr %65, align 8, !tbaa !9
  %241 = load ptr, ptr %22, align 8, !tbaa !5
  %242 = load i64, ptr %241, align 8, !tbaa !9
  store i64 %242, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %243

243:                                              ; preds = %257, %240
  %244 = load i64, ptr %61, align 8, !tbaa !9
  %245 = load i64, ptr %44, align 8, !tbaa !9
  %246 = icmp sle i64 %244, %245
  br i1 %246, label %247, label %260

247:                                              ; preds = %243
  %248 = load ptr, ptr %21, align 8, !tbaa !5
  %249 = load i64, ptr %61, align 8, !tbaa !9
  %250 = getelementptr inbounds i64, ptr %248, i64 %249
  %251 = load i64, ptr %250, align 8, !tbaa !9
  %252 = icmp ne i64 %251, 0
  br i1 %252, label %253, label %256

253:                                              ; preds = %247
  %254 = load i64, ptr %65, align 8, !tbaa !9
  %255 = add nsw i64 %254, 1
  store i64 %255, ptr %65, align 8, !tbaa !9
  br label %256

256:                                              ; preds = %253, %247
  br label %257

257:                                              ; preds = %256
  %258 = load i64, ptr %61, align 8, !tbaa !9
  %259 = add nsw i64 %258, 1
  store i64 %259, ptr %61, align 8, !tbaa !9
  br label %243, !llvm.loop !11

260:                                              ; preds = %243
  br label %264

261:                                              ; preds = %237
  %262 = load ptr, ptr %22, align 8, !tbaa !5
  %263 = load i64, ptr %262, align 8, !tbaa !9
  store i64 %263, ptr %65, align 8, !tbaa !9
  br label %264

264:                                              ; preds = %261, %260
  store i64 0, ptr %90, align 8, !tbaa !9
  %265 = load ptr, ptr %22, align 8, !tbaa !5
  %266 = load i64, ptr %265, align 8, !tbaa !9
  store i64 %266, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %267

267:                                              ; preds = %283, %264
  %268 = load i64, ptr %61, align 8, !tbaa !9
  %269 = load i64, ptr %44, align 8, !tbaa !9
  %270 = icmp sle i64 %268, %269
  br i1 %270, label %271, label %286

271:                                              ; preds = %267
  %272 = load ptr, ptr %25, align 8, !tbaa !5
  %273 = load i64, ptr %61, align 8, !tbaa !9
  %274 = load i64, ptr %61, align 8, !tbaa !9
  %275 = load i64, ptr %36, align 8, !tbaa !9
  %276 = mul nsw i64 %274, %275
  %277 = add nsw i64 %273, %276
  %278 = getelementptr inbounds %struct.complex, ptr %272, i64 %277
  %279 = call double @r_imag(ptr noundef %278)
  %280 = fcmp une double %279, 0.000000e+00
  br i1 %280, label %281, label %282

281:                                              ; preds = %271
  store i64 1, ptr %90, align 8, !tbaa !9
  br label %282

282:                                              ; preds = %281, %271
  br label %283

283:                                              ; preds = %282
  %284 = load i64, ptr %61, align 8, !tbaa !9
  %285 = add nsw i64 %284, 1
  store i64 %285, ptr %61, align 8, !tbaa !9
  br label %267, !llvm.loop !13

286:                                              ; preds = %267
  %287 = load i64, ptr %90, align 8, !tbaa !9
  %288 = icmp ne i64 %287, 0
  br i1 %288, label %289, label %291

289:                                              ; preds = %286
  %290 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -7, ptr %290, align 8, !tbaa !9
  br label %331

291:                                              ; preds = %286
  %292 = load i64, ptr %86, align 8, !tbaa !9
  %293 = icmp ne i64 %292, 0
  br i1 %293, label %294, label %300

294:                                              ; preds = %291
  %295 = load ptr, ptr %28, align 8, !tbaa !5
  %296 = load i64, ptr %295, align 8, !tbaa !9
  %297 = load ptr, ptr %22, align 8, !tbaa !5
  %298 = load i64, ptr %297, align 8, !tbaa !9
  %299 = icmp slt i64 %296, %298
  br i1 %299, label %304, label %300

300:                                              ; preds = %294, %291
  %301 = load ptr, ptr %28, align 8, !tbaa !5
  %302 = load i64, ptr %301, align 8, !tbaa !9
  %303 = icmp slt i64 %302, 1
  br i1 %303, label %304, label %306

304:                                              ; preds = %300, %294
  %305 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -10, ptr %305, align 8, !tbaa !9
  br label %330

306:                                              ; preds = %300
  %307 = load i64, ptr %89, align 8, !tbaa !9
  %308 = icmp ne i64 %307, 0
  br i1 %308, label %309, label %315

309:                                              ; preds = %306
  %310 = load ptr, ptr %30, align 8, !tbaa !5
  %311 = load i64, ptr %310, align 8, !tbaa !9
  %312 = load ptr, ptr %22, align 8, !tbaa !5
  %313 = load i64, ptr %312, align 8, !tbaa !9
  %314 = icmp slt i64 %311, %313
  br i1 %314, label %319, label %315

315:                                              ; preds = %309, %306
  %316 = load ptr, ptr %30, align 8, !tbaa !5
  %317 = load i64, ptr %316, align 8, !tbaa !9
  %318 = icmp slt i64 %317, 1
  br i1 %318, label %319, label %321

319:                                              ; preds = %315, %309
  %320 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -12, ptr %320, align 8, !tbaa !9
  br label %329

321:                                              ; preds = %315
  %322 = load ptr, ptr %31, align 8, !tbaa !5
  %323 = load i64, ptr %322, align 8, !tbaa !9
  %324 = load i64, ptr %65, align 8, !tbaa !9
  %325 = icmp slt i64 %323, %324
  br i1 %325, label %326, label %328

326:                                              ; preds = %321
  %327 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -13, ptr %327, align 8, !tbaa !9
  br label %328

328:                                              ; preds = %326, %321
  br label %329

329:                                              ; preds = %328, %319
  br label %330

330:                                              ; preds = %329, %304
  br label %331

331:                                              ; preds = %330, %289
  %332 = load ptr, ptr %35, align 8, !tbaa !5
  %333 = load i64, ptr %332, align 8, !tbaa !9
  %334 = icmp ne i64 %333, 0
  br i1 %334, label %335, label %340

335:                                              ; preds = %331
  %336 = load ptr, ptr %35, align 8, !tbaa !5
  %337 = load i64, ptr %336, align 8, !tbaa !9
  %338 = sub nsw i64 0, %337
  store i64 %338, ptr %44, align 8, !tbaa !9
  %339 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %44)
  store i32 0, ptr %18, align 4
  store i32 1, ptr %103, align 4
  br label %3881

340:                                              ; preds = %331
  %341 = load i64, ptr %65, align 8, !tbaa !9
  %342 = load ptr, ptr %32, align 8, !tbaa !5
  store i64 %341, ptr %342, align 8, !tbaa !9
  %343 = load ptr, ptr %22, align 8, !tbaa !5
  %344 = load i64, ptr %343, align 8, !tbaa !9
  %345 = icmp eq i64 %344, 0
  br i1 %345, label %346, label %347

346:                                              ; preds = %340
  store i32 0, ptr %18, align 4
  store i32 1, ptr %103, align 4
  br label %3881

347:                                              ; preds = %340
  %348 = call double @slamch_(ptr noundef @.str.6)
  %349 = fptrunc double %348 to float
  store float %349, ptr %99, align 4, !tbaa !14
  %350 = load float, ptr %99, align 4, !tbaa !14
  %351 = fdiv float 1.000000e+00, %350
  store float %351, ptr %67, align 4, !tbaa !14
  %352 = call i32 @slabad_(ptr noundef %99, ptr noundef %67)
  %353 = call double @slamch_(ptr noundef @.str.7)
  %354 = call double @slamch_(ptr noundef @.str.8)
  %355 = fmul double %353, %354
  %356 = fptrunc double %355 to float
  store float %356, ptr %70, align 4, !tbaa !14
  %357 = load float, ptr %99, align 4, !tbaa !14
  %358 = load ptr, ptr %22, align 8, !tbaa !5
  %359 = load i64, ptr %358, align 8, !tbaa !9
  %360 = sitofp i64 %359 to float
  %361 = fmul float %357, %360
  %362 = load float, ptr %70, align 4, !tbaa !14
  %363 = fdiv float %361, %362
  store float %363, ptr %85, align 4, !tbaa !14
  %364 = load float, ptr %85, align 4, !tbaa !14
  %365 = fdiv float 1.000000e+00, %364
  store float %365, ptr %67, align 4, !tbaa !14
  %366 = load float, ptr %99, align 4, !tbaa !14
  %367 = load ptr, ptr %22, align 8, !tbaa !5
  %368 = load i64, ptr %367, align 8, !tbaa !9
  %369 = sitofp i64 %368 to float
  %370 = fmul float %366, %369
  %371 = fdiv float 1.000000e+00, %370
  store float %371, ptr %100, align 4, !tbaa !14
  %372 = load i64, ptr %38, align 8, !tbaa !9
  %373 = add nsw i64 %372, 1
  store i64 %373, ptr %44, align 8, !tbaa !9
  %374 = load ptr, ptr %23, align 8, !tbaa !5
  %375 = load i64, ptr %44, align 8, !tbaa !9
  %376 = getelementptr inbounds %struct.complex, ptr %374, i64 %375
  %377 = getelementptr inbounds %struct.complex, ptr %376, i32 0, i32 0
  %378 = load float, ptr %377, align 4, !tbaa !16
  store float %378, ptr %49, align 4, !tbaa !14
  %379 = load float, ptr %49, align 4, !tbaa !14
  %380 = fcmp oge float %379, 0.000000e+00
  br i1 %380, label %381, label %383

381:                                              ; preds = %347
  %382 = load float, ptr %49, align 4, !tbaa !14
  br label %386

383:                                              ; preds = %347
  %384 = load float, ptr %49, align 4, !tbaa !14
  %385 = fneg float %384
  br label %386

386:                                              ; preds = %383, %381
  %387 = phi float [ %382, %381 ], [ %385, %383 ]
  %388 = fpext float %387 to double
  %389 = load ptr, ptr %23, align 8, !tbaa !5
  %390 = load i64, ptr %38, align 8, !tbaa !9
  %391 = add nsw i64 %390, 1
  %392 = getelementptr inbounds %struct.complex, ptr %389, i64 %391
  %393 = call double @r_imag(ptr noundef %392)
  %394 = fptrunc double %393 to float
  store float %394, ptr %50, align 4, !tbaa !14
  %395 = load float, ptr %50, align 4, !tbaa !14
  %396 = fcmp oge float %395, 0.000000e+00
  br i1 %396, label %397, label %399

397:                                              ; preds = %386
  %398 = load float, ptr %50, align 4, !tbaa !14
  br label %402

399:                                              ; preds = %386
  %400 = load float, ptr %50, align 4, !tbaa !14
  %401 = fneg float %400
  br label %402

402:                                              ; preds = %399, %397
  %403 = phi float [ %398, %397 ], [ %401, %399 ]
  %404 = fpext float %403 to double
  %405 = fadd double %388, %404
  %406 = fptrunc double %405 to float
  store float %406, ptr %87, align 4, !tbaa !14
  %407 = load i64, ptr %36, align 8, !tbaa !9
  %408 = add nsw i64 %407, 1
  store i64 %408, ptr %44, align 8, !tbaa !9
  %409 = load ptr, ptr %25, align 8, !tbaa !5
  %410 = load i64, ptr %44, align 8, !tbaa !9
  %411 = getelementptr inbounds %struct.complex, ptr %409, i64 %410
  %412 = getelementptr inbounds %struct.complex, ptr %411, i32 0, i32 0
  %413 = load float, ptr %412, align 4, !tbaa !16
  store float %413, ptr %49, align 4, !tbaa !14
  %414 = load float, ptr %49, align 4, !tbaa !14
  %415 = fcmp oge float %414, 0.000000e+00
  br i1 %415, label %416, label %418

416:                                              ; preds = %402
  %417 = load float, ptr %49, align 4, !tbaa !14
  br label %421

418:                                              ; preds = %402
  %419 = load float, ptr %49, align 4, !tbaa !14
  %420 = fneg float %419
  br label %421

421:                                              ; preds = %418, %416
  %422 = phi float [ %417, %416 ], [ %420, %418 ]
  %423 = fpext float %422 to double
  %424 = load ptr, ptr %25, align 8, !tbaa !5
  %425 = load i64, ptr %36, align 8, !tbaa !9
  %426 = add nsw i64 %425, 1
  %427 = getelementptr inbounds %struct.complex, ptr %424, i64 %426
  %428 = call double @r_imag(ptr noundef %427)
  %429 = fptrunc double %428 to float
  store float %429, ptr %50, align 4, !tbaa !14
  %430 = load float, ptr %50, align 4, !tbaa !14
  %431 = fcmp oge float %430, 0.000000e+00
  br i1 %431, label %432, label %434

432:                                              ; preds = %421
  %433 = load float, ptr %50, align 4, !tbaa !14
  br label %437

434:                                              ; preds = %421
  %435 = load float, ptr %50, align 4, !tbaa !14
  %436 = fneg float %435
  br label %437

437:                                              ; preds = %434, %432
  %438 = phi float [ %433, %432 ], [ %436, %434 ]
  %439 = fpext float %438 to double
  %440 = fadd double %423, %439
  %441 = fptrunc double %440 to float
  store float %441, ptr %88, align 4, !tbaa !14
  %442 = load ptr, ptr %34, align 8, !tbaa !5
  %443 = getelementptr inbounds float, ptr %442, i64 1
  store float 0.000000e+00, ptr %443, align 4, !tbaa !14
  %444 = load ptr, ptr %34, align 8, !tbaa !5
  %445 = load ptr, ptr %22, align 8, !tbaa !5
  %446 = load i64, ptr %445, align 8, !tbaa !9
  %447 = add nsw i64 %446, 1
  %448 = getelementptr inbounds float, ptr %444, i64 %447
  store float 0.000000e+00, ptr %448, align 4, !tbaa !14
  %449 = load ptr, ptr %22, align 8, !tbaa !5
  %450 = load i64, ptr %449, align 8, !tbaa !9
  store i64 %450, ptr %44, align 8, !tbaa !9
  store i64 2, ptr %61, align 8, !tbaa !9
  br label %451

451:                                              ; preds = %694, %437
  %452 = load i64, ptr %61, align 8, !tbaa !9
  %453 = load i64, ptr %44, align 8, !tbaa !9
  %454 = icmp sle i64 %452, %453
  br i1 %454, label %455, label %697

455:                                              ; preds = %451
  %456 = load ptr, ptr %34, align 8, !tbaa !5
  %457 = load i64, ptr %61, align 8, !tbaa !9
  %458 = getelementptr inbounds float, ptr %456, i64 %457
  store float 0.000000e+00, ptr %458, align 4, !tbaa !14
  %459 = load ptr, ptr %34, align 8, !tbaa !5
  %460 = load ptr, ptr %22, align 8, !tbaa !5
  %461 = load i64, ptr %460, align 8, !tbaa !9
  %462 = load i64, ptr %61, align 8, !tbaa !9
  %463 = add nsw i64 %461, %462
  %464 = getelementptr inbounds float, ptr %459, i64 %463
  store float 0.000000e+00, ptr %464, align 4, !tbaa !14
  %465 = load i64, ptr %61, align 8, !tbaa !9
  %466 = sub nsw i64 %465, 1
  store i64 %466, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %60, align 8, !tbaa !9
  br label %467

467:                                              ; preds = %569, %455
  %468 = load i64, ptr %60, align 8, !tbaa !9
  %469 = load i64, ptr %45, align 8, !tbaa !9
  %470 = icmp sle i64 %468, %469
  br i1 %470, label %471, label %572

471:                                              ; preds = %467
  %472 = load i64, ptr %60, align 8, !tbaa !9
  %473 = load i64, ptr %61, align 8, !tbaa !9
  %474 = load i64, ptr %38, align 8, !tbaa !9
  %475 = mul nsw i64 %473, %474
  %476 = add nsw i64 %472, %475
  store i64 %476, ptr %46, align 8, !tbaa !9
  %477 = load ptr, ptr %23, align 8, !tbaa !5
  %478 = load i64, ptr %46, align 8, !tbaa !9
  %479 = getelementptr inbounds %struct.complex, ptr %477, i64 %478
  %480 = getelementptr inbounds %struct.complex, ptr %479, i32 0, i32 0
  %481 = load float, ptr %480, align 4, !tbaa !16
  store float %481, ptr %49, align 4, !tbaa !14
  %482 = load float, ptr %49, align 4, !tbaa !14
  %483 = fcmp oge float %482, 0.000000e+00
  br i1 %483, label %484, label %486

484:                                              ; preds = %471
  %485 = load float, ptr %49, align 4, !tbaa !14
  br label %489

486:                                              ; preds = %471
  %487 = load float, ptr %49, align 4, !tbaa !14
  %488 = fneg float %487
  br label %489

489:                                              ; preds = %486, %484
  %490 = phi float [ %485, %484 ], [ %488, %486 ]
  %491 = fpext float %490 to double
  %492 = load ptr, ptr %23, align 8, !tbaa !5
  %493 = load i64, ptr %60, align 8, !tbaa !9
  %494 = load i64, ptr %61, align 8, !tbaa !9
  %495 = load i64, ptr %38, align 8, !tbaa !9
  %496 = mul nsw i64 %494, %495
  %497 = add nsw i64 %493, %496
  %498 = getelementptr inbounds %struct.complex, ptr %492, i64 %497
  %499 = call double @r_imag(ptr noundef %498)
  %500 = fptrunc double %499 to float
  store float %500, ptr %50, align 4, !tbaa !14
  %501 = load float, ptr %50, align 4, !tbaa !14
  %502 = fcmp oge float %501, 0.000000e+00
  br i1 %502, label %503, label %505

503:                                              ; preds = %489
  %504 = load float, ptr %50, align 4, !tbaa !14
  br label %508

505:                                              ; preds = %489
  %506 = load float, ptr %50, align 4, !tbaa !14
  %507 = fneg float %506
  br label %508

508:                                              ; preds = %505, %503
  %509 = phi float [ %504, %503 ], [ %507, %505 ]
  %510 = fpext float %509 to double
  %511 = fadd double %491, %510
  %512 = load ptr, ptr %34, align 8, !tbaa !5
  %513 = load i64, ptr %61, align 8, !tbaa !9
  %514 = getelementptr inbounds float, ptr %512, i64 %513
  %515 = load float, ptr %514, align 4, !tbaa !14
  %516 = fpext float %515 to double
  %517 = fadd double %516, %511
  %518 = fptrunc double %517 to float
  store float %518, ptr %514, align 4, !tbaa !14
  %519 = load i64, ptr %60, align 8, !tbaa !9
  %520 = load i64, ptr %61, align 8, !tbaa !9
  %521 = load i64, ptr %36, align 8, !tbaa !9
  %522 = mul nsw i64 %520, %521
  %523 = add nsw i64 %519, %522
  store i64 %523, ptr %46, align 8, !tbaa !9
  %524 = load ptr, ptr %25, align 8, !tbaa !5
  %525 = load i64, ptr %46, align 8, !tbaa !9
  %526 = getelementptr inbounds %struct.complex, ptr %524, i64 %525
  %527 = getelementptr inbounds %struct.complex, ptr %526, i32 0, i32 0
  %528 = load float, ptr %527, align 4, !tbaa !16
  store float %528, ptr %49, align 4, !tbaa !14
  %529 = load float, ptr %49, align 4, !tbaa !14
  %530 = fcmp oge float %529, 0.000000e+00
  br i1 %530, label %531, label %533

531:                                              ; preds = %508
  %532 = load float, ptr %49, align 4, !tbaa !14
  br label %536

533:                                              ; preds = %508
  %534 = load float, ptr %49, align 4, !tbaa !14
  %535 = fneg float %534
  br label %536

536:                                              ; preds = %533, %531
  %537 = phi float [ %532, %531 ], [ %535, %533 ]
  %538 = fpext float %537 to double
  %539 = load ptr, ptr %25, align 8, !tbaa !5
  %540 = load i64, ptr %60, align 8, !tbaa !9
  %541 = load i64, ptr %61, align 8, !tbaa !9
  %542 = load i64, ptr %36, align 8, !tbaa !9
  %543 = mul nsw i64 %541, %542
  %544 = add nsw i64 %540, %543
  %545 = getelementptr inbounds %struct.complex, ptr %539, i64 %544
  %546 = call double @r_imag(ptr noundef %545)
  %547 = fptrunc double %546 to float
  store float %547, ptr %50, align 4, !tbaa !14
  %548 = load float, ptr %50, align 4, !tbaa !14
  %549 = fcmp oge float %548, 0.000000e+00
  br i1 %549, label %550, label %552

550:                                              ; preds = %536
  %551 = load float, ptr %50, align 4, !tbaa !14
  br label %555

552:                                              ; preds = %536
  %553 = load float, ptr %50, align 4, !tbaa !14
  %554 = fneg float %553
  br label %555

555:                                              ; preds = %552, %550
  %556 = phi float [ %551, %550 ], [ %554, %552 ]
  %557 = fpext float %556 to double
  %558 = fadd double %538, %557
  %559 = load ptr, ptr %34, align 8, !tbaa !5
  %560 = load ptr, ptr %22, align 8, !tbaa !5
  %561 = load i64, ptr %560, align 8, !tbaa !9
  %562 = load i64, ptr %61, align 8, !tbaa !9
  %563 = add nsw i64 %561, %562
  %564 = getelementptr inbounds float, ptr %559, i64 %563
  %565 = load float, ptr %564, align 4, !tbaa !14
  %566 = fpext float %565 to double
  %567 = fadd double %566, %558
  %568 = fptrunc double %567 to float
  store float %568, ptr %564, align 4, !tbaa !14
  br label %569

569:                                              ; preds = %555
  %570 = load i64, ptr %60, align 8, !tbaa !9
  %571 = add nsw i64 %570, 1
  store i64 %571, ptr %60, align 8, !tbaa !9
  br label %467, !llvm.loop !18

572:                                              ; preds = %467
  %573 = load i64, ptr %61, align 8, !tbaa !9
  %574 = load i64, ptr %61, align 8, !tbaa !9
  %575 = load i64, ptr %38, align 8, !tbaa !9
  %576 = mul nsw i64 %574, %575
  %577 = add nsw i64 %573, %576
  store i64 %577, ptr %45, align 8, !tbaa !9
  %578 = load float, ptr %87, align 4, !tbaa !14
  store float %578, ptr %51, align 4, !tbaa !14
  %579 = load ptr, ptr %34, align 8, !tbaa !5
  %580 = load i64, ptr %61, align 8, !tbaa !9
  %581 = getelementptr inbounds float, ptr %579, i64 %580
  %582 = load float, ptr %581, align 4, !tbaa !14
  %583 = fpext float %582 to double
  %584 = load ptr, ptr %23, align 8, !tbaa !5
  %585 = load i64, ptr %45, align 8, !tbaa !9
  %586 = getelementptr inbounds %struct.complex, ptr %584, i64 %585
  %587 = getelementptr inbounds %struct.complex, ptr %586, i32 0, i32 0
  %588 = load float, ptr %587, align 4, !tbaa !16
  store float %588, ptr %49, align 4, !tbaa !14
  %589 = load float, ptr %49, align 4, !tbaa !14
  %590 = fcmp oge float %589, 0.000000e+00
  br i1 %590, label %591, label %593

591:                                              ; preds = %572
  %592 = load float, ptr %49, align 4, !tbaa !14
  br label %596

593:                                              ; preds = %572
  %594 = load float, ptr %49, align 4, !tbaa !14
  %595 = fneg float %594
  br label %596

596:                                              ; preds = %593, %591
  %597 = phi float [ %592, %591 ], [ %595, %593 ]
  %598 = fpext float %597 to double
  %599 = load ptr, ptr %23, align 8, !tbaa !5
  %600 = load i64, ptr %61, align 8, !tbaa !9
  %601 = load i64, ptr %61, align 8, !tbaa !9
  %602 = load i64, ptr %38, align 8, !tbaa !9
  %603 = mul nsw i64 %601, %602
  %604 = add nsw i64 %600, %603
  %605 = getelementptr inbounds %struct.complex, ptr %599, i64 %604
  %606 = call double @r_imag(ptr noundef %605)
  %607 = fptrunc double %606 to float
  store float %607, ptr %50, align 4, !tbaa !14
  %608 = load float, ptr %50, align 4, !tbaa !14
  %609 = fcmp oge float %608, 0.000000e+00
  br i1 %609, label %610, label %612

610:                                              ; preds = %596
  %611 = load float, ptr %50, align 4, !tbaa !14
  br label %615

612:                                              ; preds = %596
  %613 = load float, ptr %50, align 4, !tbaa !14
  %614 = fneg float %613
  br label %615

615:                                              ; preds = %612, %610
  %616 = phi float [ %611, %610 ], [ %614, %612 ]
  %617 = fpext float %616 to double
  %618 = fadd double %598, %617
  %619 = fadd double %583, %618
  %620 = fptrunc double %619 to float
  store float %620, ptr %52, align 4, !tbaa !14
  %621 = load float, ptr %51, align 4, !tbaa !14
  %622 = load float, ptr %52, align 4, !tbaa !14
  %623 = fcmp oge float %621, %622
  br i1 %623, label %624, label %626

624:                                              ; preds = %615
  %625 = load float, ptr %51, align 4, !tbaa !14
  br label %628

626:                                              ; preds = %615
  %627 = load float, ptr %52, align 4, !tbaa !14
  br label %628

628:                                              ; preds = %626, %624
  %629 = phi float [ %625, %624 ], [ %627, %626 ]
  %630 = fpext float %629 to double
  %631 = fptrunc double %630 to float
  store float %631, ptr %87, align 4, !tbaa !14
  %632 = load i64, ptr %61, align 8, !tbaa !9
  %633 = load i64, ptr %61, align 8, !tbaa !9
  %634 = load i64, ptr %36, align 8, !tbaa !9
  %635 = mul nsw i64 %633, %634
  %636 = add nsw i64 %632, %635
  store i64 %636, ptr %45, align 8, !tbaa !9
  %637 = load float, ptr %88, align 4, !tbaa !14
  store float %637, ptr %51, align 4, !tbaa !14
  %638 = load ptr, ptr %34, align 8, !tbaa !5
  %639 = load ptr, ptr %22, align 8, !tbaa !5
  %640 = load i64, ptr %639, align 8, !tbaa !9
  %641 = load i64, ptr %61, align 8, !tbaa !9
  %642 = add nsw i64 %640, %641
  %643 = getelementptr inbounds float, ptr %638, i64 %642
  %644 = load float, ptr %643, align 4, !tbaa !14
  %645 = fpext float %644 to double
  %646 = load ptr, ptr %25, align 8, !tbaa !5
  %647 = load i64, ptr %45, align 8, !tbaa !9
  %648 = getelementptr inbounds %struct.complex, ptr %646, i64 %647
  %649 = getelementptr inbounds %struct.complex, ptr %648, i32 0, i32 0
  %650 = load float, ptr %649, align 4, !tbaa !16
  store float %650, ptr %49, align 4, !tbaa !14
  %651 = load float, ptr %49, align 4, !tbaa !14
  %652 = fcmp oge float %651, 0.000000e+00
  br i1 %652, label %653, label %655

653:                                              ; preds = %628
  %654 = load float, ptr %49, align 4, !tbaa !14
  br label %658

655:                                              ; preds = %628
  %656 = load float, ptr %49, align 4, !tbaa !14
  %657 = fneg float %656
  br label %658

658:                                              ; preds = %655, %653
  %659 = phi float [ %654, %653 ], [ %657, %655 ]
  %660 = fpext float %659 to double
  %661 = load ptr, ptr %25, align 8, !tbaa !5
  %662 = load i64, ptr %61, align 8, !tbaa !9
  %663 = load i64, ptr %61, align 8, !tbaa !9
  %664 = load i64, ptr %36, align 8, !tbaa !9
  %665 = mul nsw i64 %663, %664
  %666 = add nsw i64 %662, %665
  %667 = getelementptr inbounds %struct.complex, ptr %661, i64 %666
  %668 = call double @r_imag(ptr noundef %667)
  %669 = fptrunc double %668 to float
  store float %669, ptr %50, align 4, !tbaa !14
  %670 = load float, ptr %50, align 4, !tbaa !14
  %671 = fcmp oge float %670, 0.000000e+00
  br i1 %671, label %672, label %674

672:                                              ; preds = %658
  %673 = load float, ptr %50, align 4, !tbaa !14
  br label %677

674:                                              ; preds = %658
  %675 = load float, ptr %50, align 4, !tbaa !14
  %676 = fneg float %675
  br label %677

677:                                              ; preds = %674, %672
  %678 = phi float [ %673, %672 ], [ %676, %674 ]
  %679 = fpext float %678 to double
  %680 = fadd double %660, %679
  %681 = fadd double %645, %680
  %682 = fptrunc double %681 to float
  store float %682, ptr %52, align 4, !tbaa !14
  %683 = load float, ptr %51, align 4, !tbaa !14
  %684 = load float, ptr %52, align 4, !tbaa !14
  %685 = fcmp oge float %683, %684
  br i1 %685, label %686, label %688

686:                                              ; preds = %677
  %687 = load float, ptr %51, align 4, !tbaa !14
  br label %690

688:                                              ; preds = %677
  %689 = load float, ptr %52, align 4, !tbaa !14
  br label %690

690:                                              ; preds = %688, %686
  %691 = phi float [ %687, %686 ], [ %689, %688 ]
  %692 = fpext float %691 to double
  %693 = fptrunc double %692 to float
  store float %693, ptr %88, align 4, !tbaa !14
  br label %694

694:                                              ; preds = %690
  %695 = load i64, ptr %61, align 8, !tbaa !9
  %696 = add nsw i64 %695, 1
  store i64 %696, ptr %61, align 8, !tbaa !9
  br label %451, !llvm.loop !19

697:                                              ; preds = %451
  %698 = load float, ptr %87, align 4, !tbaa !14
  %699 = load float, ptr %99, align 4, !tbaa !14
  %700 = fcmp oge float %698, %699
  br i1 %700, label %701, label %703

701:                                              ; preds = %697
  %702 = load float, ptr %87, align 4, !tbaa !14
  br label %705

703:                                              ; preds = %697
  %704 = load float, ptr %99, align 4, !tbaa !14
  br label %705

705:                                              ; preds = %703, %701
  %706 = phi float [ %702, %701 ], [ %704, %703 ]
  %707 = fpext float %706 to double
  %708 = fdiv double 1.000000e+00, %707
  %709 = fptrunc double %708 to float
  store float %709, ptr %96, align 4, !tbaa !14
  %710 = load float, ptr %88, align 4, !tbaa !14
  %711 = load float, ptr %99, align 4, !tbaa !14
  %712 = fcmp oge float %710, %711
  br i1 %712, label %713, label %715

713:                                              ; preds = %705
  %714 = load float, ptr %88, align 4, !tbaa !14
  br label %717

715:                                              ; preds = %705
  %716 = load float, ptr %99, align 4, !tbaa !14
  br label %717

717:                                              ; preds = %715, %713
  %718 = phi float [ %714, %713 ], [ %716, %715 ]
  %719 = fpext float %718 to double
  %720 = fdiv double 1.000000e+00, %719
  %721 = fptrunc double %720 to float
  store float %721, ptr %97, align 4, !tbaa !14
  %722 = load i64, ptr %86, align 8, !tbaa !9
  %723 = icmp ne i64 %722, 0
  br i1 %723, label %724, label %2237

724:                                              ; preds = %717
  store i64 0, ptr %73, align 8, !tbaa !9
  %725 = load ptr, ptr %22, align 8, !tbaa !5
  %726 = load i64, ptr %725, align 8, !tbaa !9
  store i64 %726, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %64, align 8, !tbaa !9
  br label %727

727:                                              ; preds = %2233, %724
  %728 = load i64, ptr %64, align 8, !tbaa !9
  %729 = load i64, ptr %44, align 8, !tbaa !9
  %730 = icmp sle i64 %728, %729
  br i1 %730, label %731, label %2236

731:                                              ; preds = %727
  %732 = load i64, ptr %82, align 8, !tbaa !9
  %733 = icmp ne i64 %732, 0
  br i1 %733, label %734, label %735

734:                                              ; preds = %731
  store i64 1, ptr %101, align 8, !tbaa !9
  br label %740

735:                                              ; preds = %731
  %736 = load ptr, ptr %21, align 8, !tbaa !5
  %737 = load i64, ptr %64, align 8, !tbaa !9
  %738 = getelementptr inbounds i64, ptr %736, i64 %737
  %739 = load i64, ptr %738, align 8, !tbaa !9
  store i64 %739, ptr %101, align 8, !tbaa !9
  br label %740

740:                                              ; preds = %735, %734
  %741 = load i64, ptr %101, align 8, !tbaa !9
  %742 = icmp ne i64 %741, 0
  br i1 %742, label %743, label %2231

743:                                              ; preds = %740
  %744 = load i64, ptr %73, align 8, !tbaa !9
  %745 = add nsw i64 %744, 1
  store i64 %745, ptr %73, align 8, !tbaa !9
  %746 = load i64, ptr %64, align 8, !tbaa !9
  %747 = load i64, ptr %64, align 8, !tbaa !9
  %748 = load i64, ptr %38, align 8, !tbaa !9
  %749 = mul nsw i64 %747, %748
  %750 = add nsw i64 %746, %749
  store i64 %750, ptr %45, align 8, !tbaa !9
  %751 = load i64, ptr %64, align 8, !tbaa !9
  %752 = load i64, ptr %64, align 8, !tbaa !9
  %753 = load i64, ptr %36, align 8, !tbaa !9
  %754 = mul nsw i64 %752, %753
  %755 = add nsw i64 %751, %754
  store i64 %755, ptr %46, align 8, !tbaa !9
  %756 = load ptr, ptr %23, align 8, !tbaa !5
  %757 = load i64, ptr %45, align 8, !tbaa !9
  %758 = getelementptr inbounds %struct.complex, ptr %756, i64 %757
  %759 = getelementptr inbounds %struct.complex, ptr %758, i32 0, i32 0
  %760 = load float, ptr %759, align 4, !tbaa !16
  store float %760, ptr %50, align 4, !tbaa !14
  %761 = load float, ptr %50, align 4, !tbaa !14
  %762 = fcmp oge float %761, 0.000000e+00
  br i1 %762, label %763, label %765

763:                                              ; preds = %743
  %764 = load float, ptr %50, align 4, !tbaa !14
  br label %768

765:                                              ; preds = %743
  %766 = load float, ptr %50, align 4, !tbaa !14
  %767 = fneg float %766
  br label %768

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

782:                                              ; preds = %768
  %783 = load float, ptr %51, align 4, !tbaa !14
  br label %787

784:                                              ; preds = %768
  %785 = load float, ptr %51, align 4, !tbaa !14
  %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 %770, %789
  %791 = load float, ptr %99, align 4, !tbaa !14
  %792 = fpext float %791 to double
  %793 = fcmp ole double %790, %792
  br i1 %793, label %794, label %851

794:                                              ; preds = %787
  %795 = load ptr, ptr %25, align 8, !tbaa !5
  %796 = load i64, ptr %46, align 8, !tbaa !9
  %797 = getelementptr inbounds %struct.complex, ptr %795, i64 %796
  %798 = getelementptr inbounds %struct.complex, ptr %797, i32 0, i32 0
  %799 = load float, ptr %798, align 4, !tbaa !16
  store float %799, ptr %49, align 4, !tbaa !14
  %800 = load float, ptr %49, align 4, !tbaa !14
  %801 = fcmp oge float %800, 0.000000e+00
  br i1 %801, label %802, label %804

802:                                              ; preds = %794
  %803 = load float, ptr %49, align 4, !tbaa !14
  br label %807

804:                                              ; preds = %794
  %805 = load float, ptr %49, align 4, !tbaa !14
  %806 = fneg float %805
  br label %807

807:                                              ; preds = %804, %802
  %808 = phi float [ %803, %802 ], [ %806, %804 ]
  %809 = fpext float %808 to double
  %810 = load float, ptr %99, align 4, !tbaa !14
  %811 = fpext float %810 to double
  %812 = fcmp ole double %809, %811
  br i1 %812, label %813, label %851

813:                                              ; preds = %807
  %814 = load ptr, ptr %22, align 8, !tbaa !5
  %815 = load i64, ptr %814, align 8, !tbaa !9
  store i64 %815, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %66, align 8, !tbaa !9
  br label %816

816:                                              ; preds = %834, %813
  %817 = load i64, ptr %66, align 8, !tbaa !9
  %818 = load i64, ptr %45, align 8, !tbaa !9
  %819 = icmp sle i64 %817, %818
  br i1 %819, label %820, label %837

820:                                              ; preds = %816
  %821 = load i64, ptr %66, align 8, !tbaa !9
  %822 = load i64, ptr %73, align 8, !tbaa !9
  %823 = load i64, ptr %40, align 8, !tbaa !9
  %824 = mul nsw i64 %822, %823
  %825 = add nsw i64 %821, %824
  store i64 %825, ptr %46, align 8, !tbaa !9
  %826 = load ptr, ptr %27, align 8, !tbaa !5
  %827 = load i64, ptr %46, align 8, !tbaa !9
  %828 = getelementptr inbounds %struct.complex, ptr %826, i64 %827
  %829 = getelementptr inbounds %struct.complex, ptr %828, i32 0, i32 0
  store float 0.000000e+00, ptr %829, align 4, !tbaa !16
  %830 = load ptr, ptr %27, align 8, !tbaa !5
  %831 = load i64, ptr %46, align 8, !tbaa !9
  %832 = getelementptr inbounds %struct.complex, ptr %830, i64 %831
  %833 = getelementptr inbounds %struct.complex, ptr %832, i32 0, i32 1
  store float 0.000000e+00, ptr %833, align 4, !tbaa !20
  br label %834

834:                                              ; preds = %820
  %835 = load i64, ptr %66, align 8, !tbaa !9
  %836 = add nsw i64 %835, 1
  store i64 %836, ptr %66, align 8, !tbaa !9
  br label %816, !llvm.loop !21

837:                                              ; preds = %816
  %838 = load i64, ptr %73, align 8, !tbaa !9
  %839 = load i64, ptr %73, align 8, !tbaa !9
  %840 = load i64, ptr %40, align 8, !tbaa !9
  %841 = mul nsw i64 %839, %840
  %842 = add nsw i64 %838, %841
  store i64 %842, ptr %45, align 8, !tbaa !9
  %843 = load ptr, ptr %27, align 8, !tbaa !5
  %844 = load i64, ptr %45, align 8, !tbaa !9
  %845 = getelementptr inbounds %struct.complex, ptr %843, i64 %844
  %846 = getelementptr inbounds %struct.complex, ptr %845, i32 0, i32 0
  store float 1.000000e+00, ptr %846, align 4, !tbaa !16
  %847 = load ptr, ptr %27, align 8, !tbaa !5
  %848 = load i64, ptr %45, align 8, !tbaa !9
  %849 = getelementptr inbounds %struct.complex, ptr %847, i64 %848
  %850 = getelementptr inbounds %struct.complex, ptr %849, i32 0, i32 1
  store float 0.000000e+00, ptr %850, align 4, !tbaa !20
  br label %2232

851:                                              ; preds = %807, %787
  %852 = load i64, ptr %64, align 8, !tbaa !9
  %853 = load i64, ptr %64, align 8, !tbaa !9
  %854 = load i64, ptr %38, align 8, !tbaa !9
  %855 = mul nsw i64 %853, %854
  %856 = add nsw i64 %852, %855
  store i64 %856, ptr %45, align 8, !tbaa !9
  %857 = load i64, ptr %64, align 8, !tbaa !9
  %858 = load i64, ptr %64, align 8, !tbaa !9
  %859 = load i64, ptr %36, align 8, !tbaa !9
  %860 = mul nsw i64 %858, %859
  %861 = add nsw i64 %857, %860
  store i64 %861, ptr %46, align 8, !tbaa !9
  %862 = load ptr, ptr %23, align 8, !tbaa !5
  %863 = load i64, ptr %45, align 8, !tbaa !9
  %864 = getelementptr inbounds %struct.complex, ptr %862, i64 %863
  %865 = getelementptr inbounds %struct.complex, ptr %864, i32 0, i32 0
  %866 = load float, ptr %865, align 4, !tbaa !16
  store float %866, ptr %50, align 4, !tbaa !14
  %867 = load float, ptr %50, align 4, !tbaa !14
  %868 = fcmp oge float %867, 0.000000e+00
  br i1 %868, label %869, label %871

869:                                              ; preds = %851
  %870 = load float, ptr %50, align 4, !tbaa !14
  br label %874

871:                                              ; preds = %851
  %872 = load float, ptr %50, align 4, !tbaa !14
  %873 = fneg float %872
  br label %874

874:                                              ; preds = %871, %869
  %875 = phi float [ %870, %869 ], [ %873, %871 ]
  %876 = fpext float %875 to double
  %877 = load ptr, ptr %23, align 8, !tbaa !5
  %878 = load i64, ptr %64, align 8, !tbaa !9
  %879 = load i64, ptr %64, align 8, !tbaa !9
  %880 = load i64, ptr %38, align 8, !tbaa !9
  %881 = mul nsw i64 %879, %880
  %882 = add nsw i64 %878, %881
  %883 = getelementptr inbounds %struct.complex, ptr %877, i64 %882
  %884 = call double @r_imag(ptr noundef %883)
  %885 = fptrunc double %884 to float
  store float %885, ptr %51, align 4, !tbaa !14
  %886 = load float, ptr %51, align 4, !tbaa !14
  %887 = fcmp oge float %886, 0.000000e+00
  br i1 %887, label %888, label %890

888:                                              ; preds = %874
  %889 = load float, ptr %51, align 4, !tbaa !14
  br label %893

890:                                              ; preds = %874
  %891 = load float, ptr %51, align 4, !tbaa !14
  %892 = fneg float %891
  br label %893

893:                                              ; preds = %890, %888
  %894 = phi float [ %889, %888 ], [ %892, %890 ]
  %895 = fpext float %894 to double
  %896 = fadd double %876, %895
  %897 = load float, ptr %96, align 4, !tbaa !14
  %898 = fpext float %897 to double
  %899 = fmul double %896, %898
  %900 = fptrunc double %899 to float
  store float %900, ptr %52, align 4, !tbaa !14
  %901 = load ptr, ptr %25, align 8, !tbaa !5
  %902 = load i64, ptr %46, align 8, !tbaa !9
  %903 = getelementptr inbounds %struct.complex, ptr %901, i64 %902
  %904 = getelementptr inbounds %struct.complex, ptr %903, i32 0, i32 0
  %905 = load float, ptr %904, align 4, !tbaa !16
  store float %905, ptr %49, align 4, !tbaa !14
  %906 = load float, ptr %49, align 4, !tbaa !14
  %907 = fcmp oge float %906, 0.000000e+00
  br i1 %907, label %908, label %910

908:                                              ; preds = %893
  %909 = load float, ptr %49, align 4, !tbaa !14
  br label %913

910:                                              ; preds = %893
  %911 = load float, ptr %49, align 4, !tbaa !14
  %912 = fneg float %911
  br label %913

913:                                              ; preds = %910, %908
  %914 = phi float [ %909, %908 ], [ %912, %910 ]
  %915 = fpext float %914 to double
  %916 = load float, ptr %97, align 4, !tbaa !14
  %917 = fpext float %916 to double
  %918 = fmul double %915, %917
  %919 = fptrunc double %918 to float
  store float %919, ptr %53, align 4, !tbaa !14
  %920 = load float, ptr %52, align 4, !tbaa !14
  %921 = load float, ptr %53, align 4, !tbaa !14
  %922 = fcmp oge float %920, %921
  br i1 %922, label %923, label %925

923:                                              ; preds = %913
  %924 = load float, ptr %52, align 4, !tbaa !14
  br label %927

925:                                              ; preds = %913
  %926 = load float, ptr %53, align 4, !tbaa !14
  br label %927

927:                                              ; preds = %925, %923
  %928 = phi float [ %924, %923 ], [ %926, %925 ]
  store float %928, ptr %52, align 4, !tbaa !14
  %929 = load float, ptr %52, align 4, !tbaa !14
  %930 = load float, ptr %99, align 4, !tbaa !14
  %931 = fcmp oge float %929, %930
  br i1 %931, label %932, label %934

932:                                              ; preds = %927
  %933 = load float, ptr %52, align 4, !tbaa !14
  br label %936

934:                                              ; preds = %927
  %935 = load float, ptr %99, align 4, !tbaa !14
  br label %936

936:                                              ; preds = %934, %932
  %937 = phi float [ %933, %932 ], [ %935, %934 ]
  %938 = fpext float %937 to double
  %939 = fdiv double 1.000000e+00, %938
  %940 = fptrunc double %939 to float
  store float %940, ptr %77, align 4, !tbaa !14
  %941 = load i64, ptr %64, align 8, !tbaa !9
  %942 = load i64, ptr %64, align 8, !tbaa !9
  %943 = load i64, ptr %38, align 8, !tbaa !9
  %944 = mul nsw i64 %942, %943
  %945 = add nsw i64 %941, %944
  store i64 %945, ptr %45, align 8, !tbaa !9
  %946 = load float, ptr %77, align 4, !tbaa !14
  %947 = load ptr, ptr %23, align 8, !tbaa !5
  %948 = load i64, ptr %45, 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 !16
  %952 = fmul float %946, %951
  %953 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 0
  store float %952, ptr %953, align 4, !tbaa !16
  %954 = load float, ptr %77, align 4, !tbaa !14
  %955 = load ptr, ptr %23, align 8, !tbaa !5
  %956 = load i64, ptr %45, align 8, !tbaa !9
  %957 = getelementptr inbounds %struct.complex, ptr %955, i64 %956
  %958 = getelementptr inbounds %struct.complex, ptr %957, i32 0, i32 1
  %959 = load float, ptr %958, align 4, !tbaa !20
  %960 = fmul float %954, %959
  %961 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 1
  store float %960, ptr %961, align 4, !tbaa !20
  %962 = load float, ptr %96, align 4, !tbaa !14
  %963 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 0
  %964 = load float, ptr %963, align 4, !tbaa !16
  %965 = fmul float %962, %964
  %966 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  store float %965, ptr %966, align 4, !tbaa !16
  %967 = load float, ptr %96, align 4, !tbaa !14
  %968 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 1
  %969 = load float, ptr %968, align 4, !tbaa !20
  %970 = fmul float %967, %969
  %971 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  store float %970, ptr %971, align 4, !tbaa !20
  %972 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  %973 = load float, ptr %972, align 4, !tbaa !16
  %974 = getelementptr inbounds %struct.complex, ptr %98, i32 0, i32 0
  store float %973, ptr %974, align 4, !tbaa !16
  %975 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  %976 = load float, ptr %975, align 4, !tbaa !20
  %977 = getelementptr inbounds %struct.complex, ptr %98, i32 0, i32 1
  store float %976, ptr %977, align 4, !tbaa !20
  %978 = load i64, ptr %64, align 8, !tbaa !9
  %979 = load i64, ptr %64, align 8, !tbaa !9
  %980 = load i64, ptr %36, align 8, !tbaa !9
  %981 = mul nsw i64 %979, %980
  %982 = add nsw i64 %978, %981
  store i64 %982, ptr %45, align 8, !tbaa !9
  %983 = load float, ptr %77, align 4, !tbaa !14
  %984 = load ptr, ptr %25, align 8, !tbaa !5
  %985 = load i64, ptr %45, align 8, !tbaa !9
  %986 = getelementptr inbounds %struct.complex, ptr %984, i64 %985
  %987 = getelementptr inbounds %struct.complex, ptr %986, i32 0, i32 0
  %988 = load float, ptr %987, align 4, !tbaa !16
  %989 = fmul float %983, %988
  %990 = load float, ptr %97, align 4, !tbaa !14
  %991 = fmul float %989, %990
  store float %991, ptr %84, align 4, !tbaa !14
  %992 = load float, ptr %84, align 4, !tbaa !14
  %993 = load float, ptr %96, align 4, !tbaa !14
  %994 = fmul float %992, %993
  store float %994, ptr %93, align 4, !tbaa !14
  %995 = load float, ptr %97, align 4, !tbaa !14
  %996 = getelementptr inbounds %struct.complex, ptr %98, i32 0, i32 0
  %997 = load float, ptr %996, align 4, !tbaa !16
  %998 = fmul float %995, %997
  %999 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  store float %998, ptr %999, align 4, !tbaa !16
  %1000 = load float, ptr %97, align 4, !tbaa !14
  %1001 = getelementptr inbounds %struct.complex, ptr %98, i32 0, i32 1
  %1002 = load float, ptr %1001, align 4, !tbaa !20
  %1003 = fmul float %1000, %1002
  %1004 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  store float %1003, ptr %1004, align 4, !tbaa !20
  %1005 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  %1006 = load float, ptr %1005, align 4, !tbaa !16
  %1007 = getelementptr inbounds %struct.complex, ptr %94, i32 0, i32 0
  store float %1006, ptr %1007, align 4, !tbaa !16
  %1008 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  %1009 = load float, ptr %1008, align 4, !tbaa !20
  %1010 = getelementptr inbounds %struct.complex, ptr %94, i32 0, i32 1
  store float %1009, ptr %1010, align 4, !tbaa !20
  %1011 = load float, ptr %84, align 4, !tbaa !14
  %1012 = fcmp oge float %1011, 0.000000e+00
  br i1 %1012, label %1013, label %1015

1013:                                             ; preds = %936
  %1014 = load float, ptr %84, align 4, !tbaa !14
  br label %1018

1015:                                             ; preds = %936
  %1016 = load float, ptr %84, align 4, !tbaa !14
  %1017 = fneg float %1016
  br label %1018

1018:                                             ; preds = %1015, %1013
  %1019 = phi float [ %1014, %1013 ], [ %1017, %1015 ]
  %1020 = fpext float %1019 to double
  %1021 = load float, ptr %99, align 4, !tbaa !14
  %1022 = fpext float %1021 to double
  %1023 = fcmp oge double %1020, %1022
  br i1 %1023, label %1024, label %1038

1024:                                             ; preds = %1018
  %1025 = load float, ptr %93, align 4, !tbaa !14
  %1026 = fcmp oge float %1025, 0.000000e+00
  br i1 %1026, label %1027, label %1029

1027:                                             ; preds = %1024
  %1028 = load float, ptr %93, align 4, !tbaa !14
  br label %1032

1029:                                             ; preds = %1024
  %1030 = load float, ptr %93, align 4, !tbaa !14
  %1031 = fneg float %1030
  br label %1032

1032:                                             ; preds = %1029, %1027
  %1033 = phi float [ %1028, %1027 ], [ %1031, %1029 ]
  %1034 = fpext float %1033 to double
  %1035 = load float, ptr %85, align 4, !tbaa !14
  %1036 = fpext float %1035 to double
  %1037 = fcmp olt double %1034, %1036
  br label %1038

1038:                                             ; preds = %1032, %1018
  %1039 = phi i1 [ false, %1018 ], [ %1037, %1032 ]
  %1040 = zext i1 %1039 to i32
  %1041 = sext i32 %1040 to i64
  store i64 %1041, ptr %68, align 8, !tbaa !9
  %1042 = getelementptr inbounds %struct.complex, ptr %98, i32 0, i32 0
  %1043 = load float, ptr %1042, align 4, !tbaa !16
  store float %1043, ptr %49, align 4, !tbaa !14
  %1044 = load float, ptr %49, align 4, !tbaa !14
  %1045 = fcmp oge float %1044, 0.000000e+00
  br i1 %1045, label %1046, label %1048

1046:                                             ; preds = %1038
  %1047 = load float, ptr %49, align 4, !tbaa !14
  br label %1051

1048:                                             ; preds = %1038
  %1049 = load float, ptr %49, align 4, !tbaa !14
  %1050 = fneg float %1049
  br label %1051

1051:                                             ; preds = %1048, %1046
  %1052 = phi float [ %1047, %1046 ], [ %1050, %1048 ]
  %1053 = fpext float %1052 to double
  %1054 = call double @r_imag(ptr noundef %98)
  %1055 = fptrunc double %1054 to float
  store float %1055, ptr %50, align 4, !tbaa !14
  %1056 = load float, ptr %50, align 4, !tbaa !14
  %1057 = fcmp oge float %1056, 0.000000e+00
  br i1 %1057, label %1058, label %1060

1058:                                             ; preds = %1051
  %1059 = load float, ptr %50, align 4, !tbaa !14
  br label %1063

1060:                                             ; preds = %1051
  %1061 = load float, ptr %50, align 4, !tbaa !14
  %1062 = fneg float %1061
  br label %1063

1063:                                             ; preds = %1060, %1058
  %1064 = phi float [ %1059, %1058 ], [ %1062, %1060 ]
  %1065 = fpext float %1064 to double
  %1066 = fadd double %1053, %1065
  %1067 = load float, ptr %99, align 4, !tbaa !14
  %1068 = fpext float %1067 to double
  %1069 = fcmp oge double %1066, %1068
  br i1 %1069, label %1070, label %1099

1070:                                             ; preds = %1063
  %1071 = getelementptr inbounds %struct.complex, ptr %94, i32 0, i32 0
  %1072 = load float, ptr %1071, align 4, !tbaa !16
  store float %1072, ptr %51, align 4, !tbaa !14
  %1073 = load float, ptr %51, align 4, !tbaa !14
  %1074 = fcmp oge float %1073, 0.000000e+00
  br i1 %1074, label %1075, label %1077

1075:                                             ; preds = %1070
  %1076 = load float, ptr %51, align 4, !tbaa !14
  br label %1080

1077:                                             ; preds = %1070
  %1078 = load float, ptr %51, align 4, !tbaa !14
  %1079 = fneg float %1078
  br label %1080

1080:                                             ; preds = %1077, %1075
  %1081 = phi float [ %1076, %1075 ], [ %1079, %1077 ]
  %1082 = fpext float %1081 to double
  %1083 = call double @r_imag(ptr noundef %94)
  %1084 = fptrunc double %1083 to float
  store float %1084, ptr %52, align 4, !tbaa !14
  %1085 = load float, ptr %52, align 4, !tbaa !14
  %1086 = fcmp oge float %1085, 0.000000e+00
  br i1 %1086, label %1087, label %1089

1087:                                             ; preds = %1080
  %1088 = load float, ptr %52, align 4, !tbaa !14
  br label %1092

1089:                                             ; preds = %1080
  %1090 = load float, ptr %52, align 4, !tbaa !14
  %1091 = fneg float %1090
  br label %1092

1092:                                             ; preds = %1089, %1087
  %1093 = phi float [ %1088, %1087 ], [ %1091, %1089 ]
  %1094 = fpext float %1093 to double
  %1095 = fadd double %1082, %1094
  %1096 = load float, ptr %85, align 4, !tbaa !14
  %1097 = fpext float %1096 to double
  %1098 = fcmp olt double %1095, %1097
  br label %1099

1099:                                             ; preds = %1092, %1063
  %1100 = phi i1 [ false, %1063 ], [ %1098, %1092 ]
  %1101 = zext i1 %1100 to i32
  %1102 = sext i32 %1101 to i64
  store i64 %1102, ptr %69, align 8, !tbaa !9
  store float 1.000000e+00, ptr %81, align 4, !tbaa !14
  %1103 = load i64, ptr %68, align 8, !tbaa !9
  %1104 = icmp ne i64 %1103, 0
  br i1 %1104, label %1105, label %1131

1105:                                             ; preds = %1099
  %1106 = load float, ptr %85, align 4, !tbaa !14
  %1107 = fpext float %1106 to double
  %1108 = load float, ptr %84, align 4, !tbaa !14
  %1109 = fcmp oge float %1108, 0.000000e+00
  br i1 %1109, label %1110, label %1112

1110:                                             ; preds = %1105
  %1111 = load float, ptr %84, align 4, !tbaa !14
  br label %1115

1112:                                             ; preds = %1105
  %1113 = load float, ptr %84, align 4, !tbaa !14
  %1114 = fneg float %1113
  br label %1115

1115:                                             ; preds = %1112, %1110
  %1116 = phi float [ %1111, %1110 ], [ %1114, %1112 ]
  %1117 = fpext float %1116 to double
  %1118 = fdiv double %1107, %1117
  %1119 = load float, ptr %87, align 4, !tbaa !14
  %1120 = load float, ptr %67, align 4, !tbaa !14
  %1121 = fcmp ole float %1119, %1120
  br i1 %1121, label %1122, label %1124

1122:                                             ; preds = %1115
  %1123 = load float, ptr %87, align 4, !tbaa !14
  br label %1126

1124:                                             ; preds = %1115
  %1125 = load float, ptr %67, align 4, !tbaa !14
  br label %1126

1126:                                             ; preds = %1124, %1122
  %1127 = phi float [ %1123, %1122 ], [ %1125, %1124 ]
  %1128 = fpext float %1127 to double
  %1129 = fmul double %1118, %1128
  %1130 = fptrunc double %1129 to float
  store float %1130, ptr %81, align 4, !tbaa !14
  br label %1131

1131:                                             ; preds = %1126, %1099
  %1132 = load i64, ptr %69, align 8, !tbaa !9
  %1133 = icmp ne i64 %1132, 0
  br i1 %1133, label %1134, label %1187

1134:                                             ; preds = %1131
  %1135 = load float, ptr %81, align 4, !tbaa !14
  store float %1135, ptr %51, align 4, !tbaa !14
  %1136 = load float, ptr %85, align 4, !tbaa !14
  %1137 = fpext float %1136 to double
  %1138 = getelementptr inbounds %struct.complex, ptr %98, i32 0, i32 0
  %1139 = load float, ptr %1138, align 4, !tbaa !16
  store float %1139, ptr %49, align 4, !tbaa !14
  %1140 = load float, ptr %49, align 4, !tbaa !14
  %1141 = fcmp oge float %1140, 0.000000e+00
  br i1 %1141, label %1142, label %1144

1142:                                             ; preds = %1134
  %1143 = load float, ptr %49, align 4, !tbaa !14
  br label %1147

1144:                                             ; preds = %1134
  %1145 = load float, ptr %49, align 4, !tbaa !14
  %1146 = fneg float %1145
  br label %1147

1147:                                             ; preds = %1144, %1142
  %1148 = phi float [ %1143, %1142 ], [ %1146, %1144 ]
  %1149 = fpext float %1148 to double
  %1150 = call double @r_imag(ptr noundef %98)
  %1151 = fptrunc double %1150 to float
  store float %1151, ptr %50, align 4, !tbaa !14
  %1152 = load float, ptr %50, align 4, !tbaa !14
  %1153 = fcmp oge float %1152, 0.000000e+00
  br i1 %1153, label %1154, label %1156

1154:                                             ; preds = %1147
  %1155 = load float, ptr %50, align 4, !tbaa !14
  br label %1159

1156:                                             ; preds = %1147
  %1157 = load float, ptr %50, align 4, !tbaa !14
  %1158 = fneg float %1157
  br label %1159

1159:                                             ; preds = %1156, %1154
  %1160 = phi float [ %1155, %1154 ], [ %1158, %1156 ]
  %1161 = fpext float %1160 to double
  %1162 = fadd double %1149, %1161
  %1163 = fdiv double %1137, %1162
  %1164 = load float, ptr %88, align 4, !tbaa !14
  %1165 = load float, ptr %67, align 4, !tbaa !14
  %1166 = fcmp ole float %1164, %1165
  br i1 %1166, label %1167, label %1169

1167:                                             ; preds = %1159
  %1168 = load float, ptr %88, align 4, !tbaa !14
  br label %1171

1169:                                             ; preds = %1159
  %1170 = load float, ptr %67, align 4, !tbaa !14
  br label %1171

1171:                                             ; preds = %1169, %1167
  %1172 = phi float [ %1168, %1167 ], [ %1170, %1169 ]
  %1173 = fpext float %1172 to double
  %1174 = fmul double %1163, %1173
  %1175 = fptrunc double %1174 to float
  store float %1175, ptr %52, align 4, !tbaa !14
  %1176 = load float, ptr %51, align 4, !tbaa !14
  %1177 = load float, ptr %52, align 4, !tbaa !14
  %1178 = fcmp oge float %1176, %1177
  br i1 %1178, label %1179, label %1181

1179:                                             ; preds = %1171
  %1180 = load float, ptr %51, align 4, !tbaa !14
  br label %1183

1181:                                             ; preds = %1171
  %1182 = load float, ptr %52, align 4, !tbaa !14
  br label %1183

1183:                                             ; preds = %1181, %1179
  %1184 = phi float [ %1180, %1179 ], [ %1182, %1181 ]
  %1185 = fpext float %1184 to double
  %1186 = fptrunc double %1185 to float
  store float %1186, ptr %81, align 4, !tbaa !14
  br label %1187

1187:                                             ; preds = %1183, %1131
  %1188 = load i64, ptr %68, align 8, !tbaa !9
  %1189 = icmp ne i64 %1188, 0
  br i1 %1189, label %1193, label %1190

1190:                                             ; preds = %1187
  %1191 = load i64, ptr %69, align 8, !tbaa !9
  %1192 = icmp ne i64 %1191, 0
  br i1 %1192, label %1193, label %1327

1193:                                             ; preds = %1190, %1187
  store float 1.000000e+00, ptr %53, align 4, !tbaa !14
  %1194 = load float, ptr %93, align 4, !tbaa !14
  %1195 = fcmp oge float %1194, 0.000000e+00
  br i1 %1195, label %1196, label %1198

1196:                                             ; preds = %1193
  %1197 = load float, ptr %93, align 4, !tbaa !14
  br label %1201

1198:                                             ; preds = %1193
  %1199 = load float, ptr %93, align 4, !tbaa !14
  %1200 = fneg float %1199
  br label %1201

1201:                                             ; preds = %1198, %1196
  %1202 = phi float [ %1197, %1196 ], [ %1200, %1198 ]
  %1203 = fpext float %1202 to double
  %1204 = fptrunc double %1203 to float
  store float %1204, ptr %54, align 4, !tbaa !14
  %1205 = load float, ptr %53, align 4, !tbaa !14
  %1206 = load float, ptr %54, align 4, !tbaa !14
  %1207 = fcmp oge float %1205, %1206
  br i1 %1207, label %1208, label %1210

1208:                                             ; preds = %1201
  %1209 = load float, ptr %53, align 4, !tbaa !14
  br label %1212

1210:                                             ; preds = %1201
  %1211 = load float, ptr %54, align 4, !tbaa !14
  br label %1212

1212:                                             ; preds = %1210, %1208
  %1213 = phi float [ %1209, %1208 ], [ %1211, %1210 ]
  store float %1213, ptr %53, align 4, !tbaa !14
  %1214 = getelementptr inbounds %struct.complex, ptr %94, i32 0, i32 0
  %1215 = load float, ptr %1214, align 4, !tbaa !16
  store float %1215, ptr %49, align 4, !tbaa !14
  %1216 = load float, ptr %49, align 4, !tbaa !14
  %1217 = fcmp oge float %1216, 0.000000e+00
  br i1 %1217, label %1218, label %1220

1218:                                             ; preds = %1212
  %1219 = load float, ptr %49, align 4, !tbaa !14
  br label %1223

1220:                                             ; preds = %1212
  %1221 = load float, ptr %49, align 4, !tbaa !14
  %1222 = fneg float %1221
  br label %1223

1223:                                             ; preds = %1220, %1218
  %1224 = phi float [ %1219, %1218 ], [ %1222, %1220 ]
  %1225 = fpext float %1224 to double
  %1226 = call double @r_imag(ptr noundef %94)
  %1227 = fptrunc double %1226 to float
  store float %1227, ptr %50, align 4, !tbaa !14
  %1228 = load float, ptr %50, align 4, !tbaa !14
  %1229 = fcmp oge float %1228, 0.000000e+00
  br i1 %1229, label %1230, label %1232

1230:                                             ; preds = %1223
  %1231 = load float, ptr %50, align 4, !tbaa !14
  br label %1235

1232:                                             ; preds = %1223
  %1233 = load float, ptr %50, align 4, !tbaa !14
  %1234 = fneg float %1233
  br label %1235

1235:                                             ; preds = %1232, %1230
  %1236 = phi float [ %1231, %1230 ], [ %1234, %1232 ]
  %1237 = fpext float %1236 to double
  %1238 = fadd double %1225, %1237
  %1239 = fptrunc double %1238 to float
  store float %1239, ptr %54, align 4, !tbaa !14
  %1240 = load float, ptr %81, align 4, !tbaa !14
  store float %1240, ptr %51, align 4, !tbaa !14
  %1241 = load float, ptr %99, align 4, !tbaa !14
  %1242 = fpext float %1241 to double
  %1243 = load float, ptr %53, align 4, !tbaa !14
  %1244 = load float, ptr %54, align 4, !tbaa !14
  %1245 = fcmp oge float %1243, %1244
  br i1 %1245, label %1246, label %1248

1246:                                             ; preds = %1235
  %1247 = load float, ptr %53, align 4, !tbaa !14
  br label %1250

1248:                                             ; preds = %1235
  %1249 = load float, ptr %54, align 4, !tbaa !14
  br label %1250

1250:                                             ; preds = %1248, %1246
  %1251 = phi float [ %1247, %1246 ], [ %1249, %1248 ]
  %1252 = fpext float %1251 to double
  %1253 = fmul double %1242, %1252
  %1254 = fdiv double 1.000000e+00, %1253
  %1255 = fptrunc double %1254 to float
  store float %1255, ptr %52, align 4, !tbaa !14
  %1256 = load float, ptr %51, align 4, !tbaa !14
  %1257 = load float, ptr %52, align 4, !tbaa !14
  %1258 = fcmp ole float %1256, %1257
  br i1 %1258, label %1259, label %1261

1259:                                             ; preds = %1250
  %1260 = load float, ptr %51, align 4, !tbaa !14
  br label %1263

1261:                                             ; preds = %1250
  %1262 = load float, ptr %52, align 4, !tbaa !14
  br label %1263

1263:                                             ; preds = %1261, %1259
  %1264 = phi float [ %1260, %1259 ], [ %1262, %1261 ]
  %1265 = fpext float %1264 to double
  %1266 = fptrunc double %1265 to float
  store float %1266, ptr %81, align 4, !tbaa !14
  %1267 = load i64, ptr %68, align 8, !tbaa !9
  %1268 = icmp ne i64 %1267, 0
  br i1 %1268, label %1269, label %1275

1269:                                             ; preds = %1263
  %1270 = load float, ptr %96, align 4, !tbaa !14
  %1271 = load float, ptr %81, align 4, !tbaa !14
  %1272 = load float, ptr %84, align 4, !tbaa !14
  %1273 = fmul float %1271, %1272
  %1274 = fmul float %1270, %1273
  store float %1274, ptr %93, align 4, !tbaa !14
  br label %1279

1275:                                             ; preds = %1263
  %1276 = load float, ptr %81, align 4, !tbaa !14
  %1277 = load float, ptr %93, align 4, !tbaa !14
  %1278 = fmul float %1276, %1277
  store float %1278, ptr %93, align 4, !tbaa !14
  br label %1279

1279:                                             ; preds = %1275, %1269
  %1280 = load i64, ptr %69, align 8, !tbaa !9
  %1281 = icmp ne i64 %1280, 0
  br i1 %1281, label %1282, label %1309

1282:                                             ; preds = %1279
  %1283 = load float, ptr %81, align 4, !tbaa !14
  %1284 = getelementptr inbounds %struct.complex, ptr %98, i32 0, i32 0
  %1285 = load float, ptr %1284, align 4, !tbaa !16
  %1286 = fmul float %1283, %1285
  %1287 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 0
  store float %1286, ptr %1287, align 4, !tbaa !16
  %1288 = load float, ptr %81, align 4, !tbaa !14
  %1289 = getelementptr inbounds %struct.complex, ptr %98, i32 0, i32 1
  %1290 = load float, ptr %1289, align 4, !tbaa !20
  %1291 = fmul float %1288, %1290
  %1292 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 1
  store float %1291, ptr %1292, align 4, !tbaa !20
  %1293 = load float, ptr %97, align 4, !tbaa !14
  %1294 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 0
  %1295 = load float, ptr %1294, align 4, !tbaa !16
  %1296 = fmul float %1293, %1295
  %1297 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  store float %1296, ptr %1297, align 4, !tbaa !16
  %1298 = load float, ptr %97, align 4, !tbaa !14
  %1299 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 1
  %1300 = load float, ptr %1299, align 4, !tbaa !20
  %1301 = fmul float %1298, %1300
  %1302 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  store float %1301, ptr %1302, align 4, !tbaa !20
  %1303 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  %1304 = load float, ptr %1303, align 4, !tbaa !16
  %1305 = getelementptr inbounds %struct.complex, ptr %94, i32 0, i32 0
  store float %1304, ptr %1305, align 4, !tbaa !16
  %1306 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  %1307 = load float, ptr %1306, align 4, !tbaa !20
  %1308 = getelementptr inbounds %struct.complex, ptr %94, i32 0, i32 1
  store float %1307, ptr %1308, align 4, !tbaa !20
  br label %1326

1309:                                             ; preds = %1279
  %1310 = load float, ptr %81, align 4, !tbaa !14
  %1311 = getelementptr inbounds %struct.complex, ptr %94, i32 0, i32 0
  %1312 = load float, ptr %1311, align 4, !tbaa !16
  %1313 = fmul float %1310, %1312
  %1314 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  store float %1313, ptr %1314, align 4, !tbaa !16
  %1315 = load float, ptr %81, align 4, !tbaa !14
  %1316 = getelementptr inbounds %struct.complex, ptr %94, i32 0, i32 1
  %1317 = load float, ptr %1316, align 4, !tbaa !20
  %1318 = fmul float %1315, %1317
  %1319 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  store float %1318, ptr %1319, align 4, !tbaa !20
  %1320 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  %1321 = load float, ptr %1320, align 4, !tbaa !16
  %1322 = getelementptr inbounds %struct.complex, ptr %94, i32 0, i32 0
  store float %1321, ptr %1322, align 4, !tbaa !16
  %1323 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  %1324 = load float, ptr %1323, align 4, !tbaa !20
  %1325 = getelementptr inbounds %struct.complex, ptr %94, i32 0, i32 1
  store float %1324, ptr %1325, align 4, !tbaa !20
  br label %1326

1326:                                             ; preds = %1309, %1282
  br label %1327

1327:                                             ; preds = %1326, %1190
  %1328 = load float, ptr %93, align 4, !tbaa !14
  %1329 = fcmp oge float %1328, 0.000000e+00
  br i1 %1329, label %1330, label %1332

1330:                                             ; preds = %1327
  %1331 = load float, ptr %93, align 4, !tbaa !14
  br label %1335

1332:                                             ; preds = %1327
  %1333 = load float, ptr %93, align 4, !tbaa !14
  %1334 = fneg float %1333
  br label %1335

1335:                                             ; preds = %1332, %1330
  %1336 = phi float [ %1331, %1330 ], [ %1334, %1332 ]
  %1337 = fpext float %1336 to double
  %1338 = fptrunc double %1337 to float
  store float %1338, ptr %91, align 4, !tbaa !14
  %1339 = getelementptr inbounds %struct.complex, ptr %94, i32 0, i32 0
  %1340 = load float, ptr %1339, align 4, !tbaa !16
  store float %1340, ptr %49, align 4, !tbaa !14
  %1341 = load float, ptr %49, align 4, !tbaa !14
  %1342 = fcmp oge float %1341, 0.000000e+00
  br i1 %1342, label %1343, label %1345

1343:                                             ; preds = %1335
  %1344 = load float, ptr %49, align 4, !tbaa !14
  br label %1348

1345:                                             ; preds = %1335
  %1346 = load float, ptr %49, align 4, !tbaa !14
  %1347 = fneg float %1346
  br label %1348

1348:                                             ; preds = %1345, %1343
  %1349 = phi float [ %1344, %1343 ], [ %1347, %1345 ]
  %1350 = fpext float %1349 to double
  %1351 = call double @r_imag(ptr noundef %94)
  %1352 = fptrunc double %1351 to float
  store float %1352, ptr %50, align 4, !tbaa !14
  %1353 = load float, ptr %50, align 4, !tbaa !14
  %1354 = fcmp oge float %1353, 0.000000e+00
  br i1 %1354, label %1355, label %1357

1355:                                             ; preds = %1348
  %1356 = load float, ptr %50, align 4, !tbaa !14
  br label %1360

1357:                                             ; preds = %1348
  %1358 = load float, ptr %50, align 4, !tbaa !14
  %1359 = fneg float %1358
  br label %1360

1360:                                             ; preds = %1357, %1355
  %1361 = phi float [ %1356, %1355 ], [ %1359, %1357 ]
  %1362 = fpext float %1361 to double
  %1363 = fadd double %1350, %1362
  %1364 = fptrunc double %1363 to float
  store float %1364, ptr %92, align 4, !tbaa !14
  store float 1.000000e+00, ptr %80, align 4, !tbaa !14
  %1365 = load ptr, ptr %22, align 8, !tbaa !5
  %1366 = load i64, ptr %1365, align 8, !tbaa !9
  store i64 %1366, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %66, align 8, !tbaa !9
  br label %1367

1367:                                             ; preds = %1381, %1360
  %1368 = load i64, ptr %66, align 8, !tbaa !9
  %1369 = load i64, ptr %45, align 8, !tbaa !9
  %1370 = icmp sle i64 %1368, %1369
  br i1 %1370, label %1371, label %1384

1371:                                             ; preds = %1367
  %1372 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %1372, ptr %46, align 8, !tbaa !9
  %1373 = load ptr, ptr %33, align 8, !tbaa !5
  %1374 = load i64, ptr %46, align 8, !tbaa !9
  %1375 = getelementptr inbounds %struct.complex, ptr %1373, i64 %1374
  %1376 = getelementptr inbounds %struct.complex, ptr %1375, i32 0, i32 0
  store float 0.000000e+00, ptr %1376, align 4, !tbaa !16
  %1377 = load ptr, ptr %33, align 8, !tbaa !5
  %1378 = load i64, ptr %46, align 8, !tbaa !9
  %1379 = getelementptr inbounds %struct.complex, ptr %1377, i64 %1378
  %1380 = getelementptr inbounds %struct.complex, ptr %1379, i32 0, i32 1
  store float 0.000000e+00, ptr %1380, align 4, !tbaa !20
  br label %1381

1381:                                             ; preds = %1371
  %1382 = load i64, ptr %66, align 8, !tbaa !9
  %1383 = add nsw i64 %1382, 1
  store i64 %1383, ptr %66, align 8, !tbaa !9
  br label %1367, !llvm.loop !22

1384:                                             ; preds = %1367
  %1385 = load i64, ptr %64, align 8, !tbaa !9
  store i64 %1385, ptr %45, align 8, !tbaa !9
  %1386 = load ptr, ptr %33, align 8, !tbaa !5
  %1387 = load i64, ptr %45, align 8, !tbaa !9
  %1388 = getelementptr inbounds %struct.complex, ptr %1386, i64 %1387
  %1389 = getelementptr inbounds %struct.complex, ptr %1388, i32 0, i32 0
  store float 1.000000e+00, ptr %1389, align 4, !tbaa !16
  %1390 = load ptr, ptr %33, align 8, !tbaa !5
  %1391 = load i64, ptr %45, align 8, !tbaa !9
  %1392 = getelementptr inbounds %struct.complex, ptr %1390, i64 %1391
  %1393 = getelementptr inbounds %struct.complex, ptr %1392, i32 0, i32 1
  store float 0.000000e+00, ptr %1393, align 4, !tbaa !20
  %1394 = load float, ptr %70, align 4, !tbaa !14
  %1395 = load float, ptr %91, align 4, !tbaa !14
  %1396 = fmul float %1394, %1395
  %1397 = load float, ptr %87, align 4, !tbaa !14
  %1398 = fmul float %1396, %1397
  store float %1398, ptr %49, align 4, !tbaa !14
  %1399 = load float, ptr %70, align 4, !tbaa !14
  %1400 = load float, ptr %92, align 4, !tbaa !14
  %1401 = fmul float %1399, %1400
  %1402 = load float, ptr %88, align 4, !tbaa !14
  %1403 = fmul float %1401, %1402
  store float %1403, ptr %50, align 4, !tbaa !14
  %1404 = load float, ptr %49, align 4, !tbaa !14
  %1405 = load float, ptr %50, align 4, !tbaa !14
  %1406 = fcmp oge float %1404, %1405
  br i1 %1406, label %1407, label %1409

1407:                                             ; preds = %1384
  %1408 = load float, ptr %49, align 4, !tbaa !14
  br label %1411

1409:                                             ; preds = %1384
  %1410 = load float, ptr %50, align 4, !tbaa !14
  br label %1411

1411:                                             ; preds = %1409, %1407
  %1412 = phi float [ %1408, %1407 ], [ %1410, %1409 ]
  store float %1412, ptr %49, align 4, !tbaa !14
  %1413 = load float, ptr %49, align 4, !tbaa !14
  %1414 = load float, ptr %99, align 4, !tbaa !14
  %1415 = fcmp oge float %1413, %1414
  br i1 %1415, label %1416, label %1418

1416:                                             ; preds = %1411
  %1417 = load float, ptr %49, align 4, !tbaa !14
  br label %1420

1418:                                             ; preds = %1411
  %1419 = load float, ptr %99, align 4, !tbaa !14
  br label %1420

1420:                                             ; preds = %1418, %1416
  %1421 = phi float [ %1417, %1416 ], [ %1419, %1418 ]
  %1422 = fpext float %1421 to double
  %1423 = fptrunc double %1422 to float
  store float %1423, ptr %75, align 4, !tbaa !14
  %1424 = load ptr, ptr %22, align 8, !tbaa !5
  %1425 = load i64, ptr %1424, align 8, !tbaa !9
  store i64 %1425, ptr %45, align 8, !tbaa !9
  %1426 = load i64, ptr %64, align 8, !tbaa !9
  %1427 = add nsw i64 %1426, 1
  store i64 %1427, ptr %61, align 8, !tbaa !9
  br label %1428

1428:                                             ; preds = %2043, %1420
  %1429 = load i64, ptr %61, align 8, !tbaa !9
  %1430 = load i64, ptr %45, align 8, !tbaa !9
  %1431 = icmp sle i64 %1429, %1430
  br i1 %1431, label %1432, label %2046

1432:                                             ; preds = %1428
  %1433 = load float, ptr %80, align 4, !tbaa !14
  %1434 = fdiv float 1.000000e+00, %1433
  store float %1434, ptr %77, align 4, !tbaa !14
  %1435 = load float, ptr %91, align 4, !tbaa !14
  %1436 = load ptr, ptr %34, align 8, !tbaa !5
  %1437 = load i64, ptr %61, align 8, !tbaa !9
  %1438 = getelementptr inbounds float, ptr %1436, i64 %1437
  %1439 = load float, ptr %1438, align 4, !tbaa !14
  %1440 = load float, ptr %92, align 4, !tbaa !14
  %1441 = load ptr, ptr %34, align 8, !tbaa !5
  %1442 = load ptr, ptr %22, align 8, !tbaa !5
  %1443 = load i64, ptr %1442, align 8, !tbaa !9
  %1444 = load i64, ptr %61, align 8, !tbaa !9
  %1445 = add nsw i64 %1443, %1444
  %1446 = getelementptr inbounds float, ptr %1441, i64 %1445
  %1447 = load float, ptr %1446, align 4, !tbaa !14
  %1448 = fmul float %1440, %1447
  %1449 = call float @llvm.fmuladd.f32(float %1435, float %1439, float %1448)
  %1450 = load float, ptr %100, align 4, !tbaa !14
  %1451 = load float, ptr %77, align 4, !tbaa !14
  %1452 = fmul float %1450, %1451
  %1453 = fcmp ogt float %1449, %1452
  br i1 %1453, label %1454, label %1497

1454:                                             ; preds = %1432
  %1455 = load i64, ptr %61, align 8, !tbaa !9
  %1456 = sub nsw i64 %1455, 1
  store i64 %1456, ptr %46, align 8, !tbaa !9
  %1457 = load i64, ptr %64, align 8, !tbaa !9
  store i64 %1457, ptr %66, align 8, !tbaa !9
  br label %1458

1458:                                             ; preds = %1493, %1454
  %1459 = load i64, ptr %66, align 8, !tbaa !9
  %1460 = load i64, ptr %46, align 8, !tbaa !9
  %1461 = icmp sle i64 %1459, %1460
  br i1 %1461, label %1462, label %1496

1462:                                             ; preds = %1458
  %1463 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %1463, ptr %47, align 8, !tbaa !9
  %1464 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %1464, ptr %48, align 8, !tbaa !9
  %1465 = load float, ptr %77, align 4, !tbaa !14
  %1466 = load ptr, ptr %33, align 8, !tbaa !5
  %1467 = load i64, ptr %48, align 8, !tbaa !9
  %1468 = getelementptr inbounds %struct.complex, ptr %1466, i64 %1467
  %1469 = getelementptr inbounds %struct.complex, ptr %1468, i32 0, i32 0
  %1470 = load float, ptr %1469, align 4, !tbaa !16
  %1471 = fmul float %1465, %1470
  %1472 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  store float %1471, ptr %1472, align 4, !tbaa !16
  %1473 = load float, ptr %77, align 4, !tbaa !14
  %1474 = load ptr, ptr %33, align 8, !tbaa !5
  %1475 = load i64, ptr %48, align 8, !tbaa !9
  %1476 = getelementptr inbounds %struct.complex, ptr %1474, i64 %1475
  %1477 = getelementptr inbounds %struct.complex, ptr %1476, i32 0, i32 1
  %1478 = load float, ptr %1477, align 4, !tbaa !20
  %1479 = fmul float %1473, %1478
  %1480 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  store float %1479, ptr %1480, align 4, !tbaa !20
  %1481 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  %1482 = load float, ptr %1481, align 4, !tbaa !16
  %1483 = load ptr, ptr %33, align 8, !tbaa !5
  %1484 = load i64, ptr %47, align 8, !tbaa !9
  %1485 = getelementptr inbounds %struct.complex, ptr %1483, i64 %1484
  %1486 = getelementptr inbounds %struct.complex, ptr %1485, i32 0, i32 0
  store float %1482, ptr %1486, align 4, !tbaa !16
  %1487 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  %1488 = load float, ptr %1487, align 4, !tbaa !20
  %1489 = load ptr, ptr %33, align 8, !tbaa !5
  %1490 = load i64, ptr %47, align 8, !tbaa !9
  %1491 = getelementptr inbounds %struct.complex, ptr %1489, i64 %1490
  %1492 = getelementptr inbounds %struct.complex, ptr %1491, i32 0, i32 1
  store float %1488, ptr %1492, align 4, !tbaa !20
  br label %1493

1493:                                             ; preds = %1462
  %1494 = load i64, ptr %66, align 8, !tbaa !9
  %1495 = add nsw i64 %1494, 1
  store i64 %1495, ptr %66, align 8, !tbaa !9
  br label %1458, !llvm.loop !23

1496:                                             ; preds = %1458
  store float 1.000000e+00, ptr %80, align 4, !tbaa !14
  br label %1497

1497:                                             ; preds = %1496, %1432
  %1498 = getelementptr inbounds %struct.complex, ptr %78, i32 0, i32 0
  store float 0.000000e+00, ptr %1498, align 4, !tbaa !16
  %1499 = getelementptr inbounds %struct.complex, ptr %78, i32 0, i32 1
  store float 0.000000e+00, ptr %1499, align 4, !tbaa !20
  %1500 = getelementptr inbounds %struct.complex, ptr %79, i32 0, i32 0
  store float 0.000000e+00, ptr %1500, align 4, !tbaa !16
  %1501 = getelementptr inbounds %struct.complex, ptr %79, i32 0, i32 1
  store float 0.000000e+00, ptr %1501, align 4, !tbaa !20
  %1502 = load i64, ptr %61, align 8, !tbaa !9
  %1503 = sub nsw i64 %1502, 1
  store i64 %1503, ptr %46, align 8, !tbaa !9
  %1504 = load i64, ptr %64, align 8, !tbaa !9
  store i64 %1504, ptr %66, align 8, !tbaa !9
  br label %1505

1505:                                             ; preds = %1632, %1497
  %1506 = load i64, ptr %66, align 8, !tbaa !9
  %1507 = load i64, ptr %46, align 8, !tbaa !9
  %1508 = icmp sle i64 %1506, %1507
  br i1 %1508, label %1509, label %1635

1509:                                             ; preds = %1505
  %1510 = load ptr, ptr %23, align 8, !tbaa !5
  %1511 = load i64, ptr %66, align 8, !tbaa !9
  %1512 = load i64, ptr %61, align 8, !tbaa !9
  %1513 = load i64, ptr %38, align 8, !tbaa !9
  %1514 = mul nsw i64 %1512, %1513
  %1515 = add nsw i64 %1511, %1514
  %1516 = getelementptr inbounds %struct.complex, ptr %1510, i64 %1515
  call void @r_cnjg(ptr noundef %57, ptr noundef %1516)
  %1517 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %1517, ptr %47, align 8, !tbaa !9
  %1518 = getelementptr inbounds %struct.complex, ptr %57, i32 0, i32 0
  %1519 = load float, ptr %1518, align 4, !tbaa !16
  %1520 = load ptr, ptr %33, align 8, !tbaa !5
  %1521 = load i64, ptr %47, align 8, !tbaa !9
  %1522 = getelementptr inbounds %struct.complex, ptr %1520, i64 %1521
  %1523 = getelementptr inbounds %struct.complex, ptr %1522, i32 0, i32 0
  %1524 = load float, ptr %1523, align 4, !tbaa !16
  %1525 = getelementptr inbounds %struct.complex, ptr %57, i32 0, i32 1
  %1526 = load float, ptr %1525, align 4, !tbaa !20
  %1527 = load ptr, ptr %33, align 8, !tbaa !5
  %1528 = load i64, ptr %47, align 8, !tbaa !9
  %1529 = getelementptr inbounds %struct.complex, ptr %1527, i64 %1528
  %1530 = getelementptr inbounds %struct.complex, ptr %1529, i32 0, i32 1
  %1531 = load float, ptr %1530, align 4, !tbaa !20
  %1532 = fmul float %1526, %1531
  %1533 = fneg float %1532
  %1534 = call float @llvm.fmuladd.f32(float %1519, float %1524, float %1533)
  %1535 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 0
  store float %1534, ptr %1535, align 4, !tbaa !16
  %1536 = getelementptr inbounds %struct.complex, ptr %57, i32 0, i32 0
  %1537 = load float, ptr %1536, align 4, !tbaa !16
  %1538 = load ptr, ptr %33, align 8, !tbaa !5
  %1539 = load i64, ptr %47, align 8, !tbaa !9
  %1540 = getelementptr inbounds %struct.complex, ptr %1538, i64 %1539
  %1541 = getelementptr inbounds %struct.complex, ptr %1540, i32 0, i32 1
  %1542 = load float, ptr %1541, align 4, !tbaa !20
  %1543 = getelementptr inbounds %struct.complex, ptr %57, i32 0, i32 1
  %1544 = load float, ptr %1543, align 4, !tbaa !20
  %1545 = load ptr, ptr %33, align 8, !tbaa !5
  %1546 = load i64, ptr %47, align 8, !tbaa !9
  %1547 = getelementptr inbounds %struct.complex, ptr %1545, i64 %1546
  %1548 = getelementptr inbounds %struct.complex, ptr %1547, i32 0, i32 0
  %1549 = load float, ptr %1548, align 4, !tbaa !16
  %1550 = fmul float %1544, %1549
  %1551 = call float @llvm.fmuladd.f32(float %1537, float %1542, float %1550)
  %1552 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 1
  store float %1551, ptr %1552, align 4, !tbaa !20
  %1553 = getelementptr inbounds %struct.complex, ptr %78, i32 0, i32 0
  %1554 = load float, ptr %1553, align 4, !tbaa !16
  %1555 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 0
  %1556 = load float, ptr %1555, align 4, !tbaa !16
  %1557 = fadd float %1554, %1556
  %1558 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  store float %1557, ptr %1558, align 4, !tbaa !16
  %1559 = getelementptr inbounds %struct.complex, ptr %78, i32 0, i32 1
  %1560 = load float, ptr %1559, align 4, !tbaa !20
  %1561 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 1
  %1562 = load float, ptr %1561, align 4, !tbaa !20
  %1563 = fadd float %1560, %1562
  %1564 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  store float %1563, ptr %1564, align 4, !tbaa !20
  %1565 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  %1566 = load float, ptr %1565, align 4, !tbaa !16
  %1567 = getelementptr inbounds %struct.complex, ptr %78, i32 0, i32 0
  store float %1566, ptr %1567, align 4, !tbaa !16
  %1568 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  %1569 = load float, ptr %1568, align 4, !tbaa !20
  %1570 = getelementptr inbounds %struct.complex, ptr %78, i32 0, i32 1
  store float %1569, ptr %1570, align 4, !tbaa !20
  %1571 = load ptr, ptr %25, align 8, !tbaa !5
  %1572 = load i64, ptr %66, align 8, !tbaa !9
  %1573 = load i64, ptr %61, align 8, !tbaa !9
  %1574 = load i64, ptr %36, align 8, !tbaa !9
  %1575 = mul nsw i64 %1573, %1574
  %1576 = add nsw i64 %1572, %1575
  %1577 = getelementptr inbounds %struct.complex, ptr %1571, i64 %1576
  call void @r_cnjg(ptr noundef %57, ptr noundef %1577)
  %1578 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %1578, ptr %47, align 8, !tbaa !9
  %1579 = getelementptr inbounds %struct.complex, ptr %57, i32 0, i32 0
  %1580 = load float, ptr %1579, align 4, !tbaa !16
  %1581 = load ptr, ptr %33, align 8, !tbaa !5
  %1582 = load i64, ptr %47, align 8, !tbaa !9
  %1583 = getelementptr inbounds %struct.complex, ptr %1581, i64 %1582
  %1584 = getelementptr inbounds %struct.complex, ptr %1583, i32 0, i32 0
  %1585 = load float, ptr %1584, align 4, !tbaa !16
  %1586 = getelementptr inbounds %struct.complex, ptr %57, i32 0, i32 1
  %1587 = load float, ptr %1586, align 4, !tbaa !20
  %1588 = load ptr, ptr %33, align 8, !tbaa !5
  %1589 = load i64, ptr %47, align 8, !tbaa !9
  %1590 = getelementptr inbounds %struct.complex, ptr %1588, i64 %1589
  %1591 = getelementptr inbounds %struct.complex, ptr %1590, i32 0, i32 1
  %1592 = load float, ptr %1591, align 4, !tbaa !20
  %1593 = fmul float %1587, %1592
  %1594 = fneg float %1593
  %1595 = call float @llvm.fmuladd.f32(float %1580, float %1585, float %1594)
  %1596 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 0
  store float %1595, ptr %1596, align 4, !tbaa !16
  %1597 = getelementptr inbounds %struct.complex, ptr %57, i32 0, i32 0
  %1598 = load float, ptr %1597, align 4, !tbaa !16
  %1599 = load ptr, ptr %33, align 8, !tbaa !5
  %1600 = load i64, ptr %47, align 8, !tbaa !9
  %1601 = getelementptr inbounds %struct.complex, ptr %1599, i64 %1600
  %1602 = getelementptr inbounds %struct.complex, ptr %1601, i32 0, i32 1
  %1603 = load float, ptr %1602, align 4, !tbaa !20
  %1604 = getelementptr inbounds %struct.complex, ptr %57, i32 0, i32 1
  %1605 = load float, ptr %1604, align 4, !tbaa !20
  %1606 = load ptr, ptr %33, align 8, !tbaa !5
  %1607 = load i64, ptr %47, align 8, !tbaa !9
  %1608 = getelementptr inbounds %struct.complex, ptr %1606, i64 %1607
  %1609 = getelementptr inbounds %struct.complex, ptr %1608, i32 0, i32 0
  %1610 = load float, ptr %1609, align 4, !tbaa !16
  %1611 = fmul float %1605, %1610
  %1612 = call float @llvm.fmuladd.f32(float %1598, float %1603, float %1611)
  %1613 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 1
  store float %1612, ptr %1613, align 4, !tbaa !20
  %1614 = getelementptr inbounds %struct.complex, ptr %79, i32 0, i32 0
  %1615 = load float, ptr %1614, align 4, !tbaa !16
  %1616 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 0
  %1617 = load float, ptr %1616, align 4, !tbaa !16
  %1618 = fadd float %1615, %1617
  %1619 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  store float %1618, ptr %1619, align 4, !tbaa !16
  %1620 = getelementptr inbounds %struct.complex, ptr %79, i32 0, i32 1
  %1621 = load float, ptr %1620, align 4, !tbaa !20
  %1622 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 1
  %1623 = load float, ptr %1622, align 4, !tbaa !20
  %1624 = fadd float %1621, %1623
  %1625 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  store float %1624, ptr %1625, align 4, !tbaa !20
  %1626 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  %1627 = load float, ptr %1626, align 4, !tbaa !16
  %1628 = getelementptr inbounds %struct.complex, ptr %79, i32 0, i32 0
  store float %1627, ptr %1628, align 4, !tbaa !16
  %1629 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  %1630 = load float, ptr %1629, align 4, !tbaa !20
  %1631 = getelementptr inbounds %struct.complex, ptr %79, i32 0, i32 1
  store float %1630, ptr %1631, align 4, !tbaa !20
  br label %1632

1632:                                             ; preds = %1509
  %1633 = load i64, ptr %66, align 8, !tbaa !9
  %1634 = add nsw i64 %1633, 1
  store i64 %1634, ptr %66, align 8, !tbaa !9
  br label %1505, !llvm.loop !24

1635:                                             ; preds = %1505
  %1636 = load float, ptr %93, align 4, !tbaa !14
  %1637 = getelementptr inbounds %struct.complex, ptr %78, i32 0, i32 0
  %1638 = load float, ptr %1637, align 4, !tbaa !16
  %1639 = fmul float %1636, %1638
  %1640 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 0
  store float %1639, ptr %1640, align 4, !tbaa !16
  %1641 = load float, ptr %93, align 4, !tbaa !14
  %1642 = getelementptr inbounds %struct.complex, ptr %78, i32 0, i32 1
  %1643 = load float, ptr %1642, align 4, !tbaa !20
  %1644 = fmul float %1641, %1643
  %1645 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 1
  store float %1644, ptr %1645, align 4, !tbaa !20
  call void @r_cnjg(ptr noundef %58, ptr noundef %94)
  %1646 = getelementptr inbounds %struct.complex, ptr %58, i32 0, i32 0
  %1647 = load float, ptr %1646, align 4, !tbaa !16
  %1648 = getelementptr inbounds %struct.complex, ptr %79, i32 0, i32 0
  %1649 = load float, ptr %1648, align 4, !tbaa !16
  %1650 = getelementptr inbounds %struct.complex, ptr %58, i32 0, i32 1
  %1651 = load float, ptr %1650, align 4, !tbaa !20
  %1652 = getelementptr inbounds %struct.complex, ptr %79, i32 0, i32 1
  %1653 = load float, ptr %1652, align 4, !tbaa !20
  %1654 = fmul float %1651, %1653
  %1655 = fneg float %1654
  %1656 = call float @llvm.fmuladd.f32(float %1647, float %1649, float %1655)
  %1657 = getelementptr inbounds %struct.complex, ptr %57, i32 0, i32 0
  store float %1656, ptr %1657, align 4, !tbaa !16
  %1658 = getelementptr inbounds %struct.complex, ptr %58, i32 0, i32 0
  %1659 = load float, ptr %1658, align 4, !tbaa !16
  %1660 = getelementptr inbounds %struct.complex, ptr %79, i32 0, i32 1
  %1661 = load float, ptr %1660, align 4, !tbaa !20
  %1662 = getelementptr inbounds %struct.complex, ptr %58, i32 0, i32 1
  %1663 = load float, ptr %1662, align 4, !tbaa !20
  %1664 = getelementptr inbounds %struct.complex, ptr %79, i32 0, i32 0
  %1665 = load float, ptr %1664, align 4, !tbaa !16
  %1666 = fmul float %1663, %1665
  %1667 = call float @llvm.fmuladd.f32(float %1659, float %1661, float %1666)
  %1668 = getelementptr inbounds %struct.complex, ptr %57, i32 0, i32 1
  store float %1667, ptr %1668, align 4, !tbaa !20
  %1669 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 0
  %1670 = load float, ptr %1669, align 4, !tbaa !16
  %1671 = getelementptr inbounds %struct.complex, ptr %57, i32 0, i32 0
  %1672 = load float, ptr %1671, align 4, !tbaa !16
  %1673 = fsub float %1670, %1672
  %1674 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  store float %1673, ptr %1674, align 4, !tbaa !16
  %1675 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 1
  %1676 = load float, ptr %1675, align 4, !tbaa !20
  %1677 = getelementptr inbounds %struct.complex, ptr %57, i32 0, i32 1
  %1678 = load float, ptr %1677, align 4, !tbaa !20
  %1679 = fsub float %1676, %1678
  %1680 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  store float %1679, ptr %1680, align 4, !tbaa !20
  %1681 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  %1682 = load float, ptr %1681, align 4, !tbaa !16
  %1683 = getelementptr inbounds %struct.complex, ptr %71, i32 0, i32 0
  store float %1682, ptr %1683, align 4, !tbaa !16
  %1684 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  %1685 = load float, ptr %1684, align 4, !tbaa !20
  %1686 = getelementptr inbounds %struct.complex, ptr %71, i32 0, i32 1
  store float %1685, ptr %1686, align 4, !tbaa !20
  %1687 = load i64, ptr %61, align 8, !tbaa !9
  %1688 = load i64, ptr %61, align 8, !tbaa !9
  %1689 = load i64, ptr %38, align 8, !tbaa !9
  %1690 = mul nsw i64 %1688, %1689
  %1691 = add nsw i64 %1687, %1690
  store i64 %1691, ptr %46, align 8, !tbaa !9
  %1692 = load float, ptr %93, align 4, !tbaa !14
  %1693 = load ptr, ptr %23, align 8, !tbaa !5
  %1694 = load i64, ptr %46, align 8, !tbaa !9
  %1695 = getelementptr inbounds %struct.complex, ptr %1693, i64 %1694
  %1696 = getelementptr inbounds %struct.complex, ptr %1695, i32 0, i32 0
  %1697 = load float, ptr %1696, align 4, !tbaa !16
  %1698 = fmul float %1692, %1697
  %1699 = getelementptr inbounds %struct.complex, ptr %57, i32 0, i32 0
  store float %1698, ptr %1699, align 4, !tbaa !16
  %1700 = load float, ptr %93, align 4, !tbaa !14
  %1701 = load ptr, ptr %23, align 8, !tbaa !5
  %1702 = load i64, ptr %46, align 8, !tbaa !9
  %1703 = getelementptr inbounds %struct.complex, ptr %1701, i64 %1702
  %1704 = getelementptr inbounds %struct.complex, ptr %1703, i32 0, i32 1
  %1705 = load float, ptr %1704, align 4, !tbaa !20
  %1706 = fmul float %1700, %1705
  %1707 = getelementptr inbounds %struct.complex, ptr %57, i32 0, i32 1
  store float %1706, ptr %1707, align 4, !tbaa !20
  %1708 = load i64, ptr %61, align 8, !tbaa !9
  %1709 = load i64, ptr %61, align 8, !tbaa !9
  %1710 = load i64, ptr %36, align 8, !tbaa !9
  %1711 = mul nsw i64 %1709, %1710
  %1712 = add nsw i64 %1708, %1711
  store i64 %1712, ptr %47, align 8, !tbaa !9
  %1713 = getelementptr inbounds %struct.complex, ptr %94, i32 0, i32 0
  %1714 = load float, ptr %1713, align 4, !tbaa !16
  %1715 = load ptr, ptr %25, align 8, !tbaa !5
  %1716 = load i64, ptr %47, align 8, !tbaa !9
  %1717 = getelementptr inbounds %struct.complex, ptr %1715, i64 %1716
  %1718 = getelementptr inbounds %struct.complex, ptr %1717, i32 0, i32 0
  %1719 = load float, ptr %1718, align 4, !tbaa !16
  %1720 = getelementptr inbounds %struct.complex, ptr %94, i32 0, i32 1
  %1721 = load float, ptr %1720, align 4, !tbaa !20
  %1722 = load ptr, ptr %25, align 8, !tbaa !5
  %1723 = load i64, ptr %47, align 8, !tbaa !9
  %1724 = getelementptr inbounds %struct.complex, ptr %1722, i64 %1723
  %1725 = getelementptr inbounds %struct.complex, ptr %1724, i32 0, i32 1
  %1726 = load float, ptr %1725, align 4, !tbaa !20
  %1727 = fmul float %1721, %1726
  %1728 = fneg float %1727
  %1729 = call float @llvm.fmuladd.f32(float %1714, float %1719, float %1728)
  %1730 = getelementptr inbounds %struct.complex, ptr %58, i32 0, i32 0
  store float %1729, ptr %1730, align 4, !tbaa !16
  %1731 = getelementptr inbounds %struct.complex, ptr %94, i32 0, i32 0
  %1732 = load float, ptr %1731, align 4, !tbaa !16
  %1733 = load ptr, ptr %25, align 8, !tbaa !5
  %1734 = load i64, ptr %47, align 8, !tbaa !9
  %1735 = getelementptr inbounds %struct.complex, ptr %1733, i64 %1734
  %1736 = getelementptr inbounds %struct.complex, ptr %1735, i32 0, i32 1
  %1737 = load float, ptr %1736, align 4, !tbaa !20
  %1738 = getelementptr inbounds %struct.complex, ptr %94, i32 0, i32 1
  %1739 = load float, ptr %1738, align 4, !tbaa !20
  %1740 = load ptr, ptr %25, align 8, !tbaa !5
  %1741 = load i64, ptr %47, align 8, !tbaa !9
  %1742 = getelementptr inbounds %struct.complex, ptr %1740, i64 %1741
  %1743 = getelementptr inbounds %struct.complex, ptr %1742, i32 0, i32 0
  %1744 = load float, ptr %1743, align 4, !tbaa !16
  %1745 = fmul float %1739, %1744
  %1746 = call float @llvm.fmuladd.f32(float %1732, float %1737, float %1745)
  %1747 = getelementptr inbounds %struct.complex, ptr %58, i32 0, i32 1
  store float %1746, ptr %1747, align 4, !tbaa !20
  %1748 = getelementptr inbounds %struct.complex, ptr %57, i32 0, i32 0
  %1749 = load float, ptr %1748, align 4, !tbaa !16
  %1750 = getelementptr inbounds %struct.complex, ptr %58, i32 0, i32 0
  %1751 = load float, ptr %1750, align 4, !tbaa !16
  %1752 = fsub float %1749, %1751
  %1753 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 0
  store float %1752, ptr %1753, align 4, !tbaa !16
  %1754 = getelementptr inbounds %struct.complex, ptr %57, i32 0, i32 1
  %1755 = load float, ptr %1754, align 4, !tbaa !20
  %1756 = getelementptr inbounds %struct.complex, ptr %58, i32 0, i32 1
  %1757 = load float, ptr %1756, align 4, !tbaa !20
  %1758 = fsub float %1755, %1757
  %1759 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 1
  store float %1758, ptr %1759, align 4, !tbaa !20
  call void @r_cnjg(ptr noundef %55, ptr noundef %56)
  %1760 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  %1761 = load float, ptr %1760, align 4, !tbaa !16
  %1762 = getelementptr inbounds %struct.complex, ptr %59, i32 0, i32 0
  store float %1761, ptr %1762, align 4, !tbaa !16
  %1763 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  %1764 = load float, ptr %1763, align 4, !tbaa !20
  %1765 = getelementptr inbounds %struct.complex, ptr %59, i32 0, i32 1
  store float %1764, ptr %1765, align 4, !tbaa !20
  %1766 = getelementptr inbounds %struct.complex, ptr %59, i32 0, i32 0
  %1767 = load float, ptr %1766, align 4, !tbaa !16
  store float %1767, ptr %49, align 4, !tbaa !14
  %1768 = load float, ptr %49, align 4, !tbaa !14
  %1769 = fcmp oge float %1768, 0.000000e+00
  br i1 %1769, label %1770, label %1772

1770:                                             ; preds = %1635
  %1771 = load float, ptr %49, align 4, !tbaa !14
  br label %1775

1772:                                             ; preds = %1635
  %1773 = load float, ptr %49, align 4, !tbaa !14
  %1774 = fneg float %1773
  br label %1775

1775:                                             ; preds = %1772, %1770
  %1776 = phi float [ %1771, %1770 ], [ %1774, %1772 ]
  %1777 = fpext float %1776 to double
  %1778 = call double @r_imag(ptr noundef %59)
  %1779 = fptrunc double %1778 to float
  store float %1779, ptr %50, align 4, !tbaa !14
  %1780 = load float, ptr %50, align 4, !tbaa !14
  %1781 = fcmp oge float %1780, 0.000000e+00
  br i1 %1781, label %1782, label %1784

1782:                                             ; preds = %1775
  %1783 = load float, ptr %50, align 4, !tbaa !14
  br label %1787

1784:                                             ; preds = %1775
  %1785 = load float, ptr %50, align 4, !tbaa !14
  %1786 = fneg float %1785
  br label %1787

1787:                                             ; preds = %1784, %1782
  %1788 = phi float [ %1783, %1782 ], [ %1786, %1784 ]
  %1789 = fpext float %1788 to double
  %1790 = fadd double %1777, %1789
  %1791 = load float, ptr %75, align 4, !tbaa !14
  %1792 = fpext float %1791 to double
  %1793 = fcmp ole double %1790, %1792
  br i1 %1793, label %1794, label %1804

1794:                                             ; preds = %1787
  %1795 = load float, ptr %75, align 4, !tbaa !14
  %1796 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  store float %1795, ptr %1796, align 4, !tbaa !16
  %1797 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  store float 0.000000e+00, ptr %1797, align 4, !tbaa !20
  %1798 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  %1799 = load float, ptr %1798, align 4, !tbaa !16
  %1800 = getelementptr inbounds %struct.complex, ptr %59, i32 0, i32 0
  store float %1799, ptr %1800, align 4, !tbaa !16
  %1801 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  %1802 = load float, ptr %1801, align 4, !tbaa !20
  %1803 = getelementptr inbounds %struct.complex, ptr %59, i32 0, i32 1
  store float %1802, ptr %1803, align 4, !tbaa !20
  br label %1804

1804:                                             ; preds = %1794, %1787
  %1805 = getelementptr inbounds %struct.complex, ptr %59, i32 0, i32 0
  %1806 = load float, ptr %1805, align 4, !tbaa !16
  store float %1806, ptr %49, align 4, !tbaa !14
  %1807 = load float, ptr %49, align 4, !tbaa !14
  %1808 = fcmp oge float %1807, 0.000000e+00
  br i1 %1808, label %1809, label %1811

1809:                                             ; preds = %1804
  %1810 = load float, ptr %49, align 4, !tbaa !14
  br label %1814

1811:                                             ; preds = %1804
  %1812 = load float, ptr %49, align 4, !tbaa !14
  %1813 = fneg float %1812
  br label %1814

1814:                                             ; preds = %1811, %1809
  %1815 = phi float [ %1810, %1809 ], [ %1813, %1811 ]
  %1816 = fpext float %1815 to double
  %1817 = call double @r_imag(ptr noundef %59)
  %1818 = fptrunc double %1817 to float
  store float %1818, ptr %50, align 4, !tbaa !14
  %1819 = load float, ptr %50, align 4, !tbaa !14
  %1820 = fcmp oge float %1819, 0.000000e+00
  br i1 %1820, label %1821, label %1823

1821:                                             ; preds = %1814
  %1822 = load float, ptr %50, align 4, !tbaa !14
  br label %1826

1823:                                             ; preds = %1814
  %1824 = load float, ptr %50, align 4, !tbaa !14
  %1825 = fneg float %1824
  br label %1826

1826:                                             ; preds = %1823, %1821
  %1827 = phi float [ %1822, %1821 ], [ %1825, %1823 ]
  %1828 = fpext float %1827 to double
  %1829 = fadd double %1816, %1828
  %1830 = fcmp olt double %1829, 1.000000e+00
  br i1 %1830, label %1831, label %1976

1831:                                             ; preds = %1826
  %1832 = getelementptr inbounds %struct.complex, ptr %71, i32 0, i32 0
  %1833 = load float, ptr %1832, align 4, !tbaa !16
  store float %1833, ptr %49, align 4, !tbaa !14
  %1834 = load float, ptr %49, align 4, !tbaa !14
  %1835 = fcmp oge float %1834, 0.000000e+00
  br i1 %1835, label %1836, label %1838

1836:                                             ; preds = %1831
  %1837 = load float, ptr %49, align 4, !tbaa !14
  br label %1841

1838:                                             ; preds = %1831
  %1839 = load float, ptr %49, align 4, !tbaa !14
  %1840 = fneg float %1839
  br label %1841

1841:                                             ; preds = %1838, %1836
  %1842 = phi float [ %1837, %1836 ], [ %1840, %1838 ]
  %1843 = fpext float %1842 to double
  %1844 = call double @r_imag(ptr noundef %71)
  %1845 = fptrunc double %1844 to float
  store float %1845, ptr %50, align 4, !tbaa !14
  %1846 = load float, ptr %50, align 4, !tbaa !14
  %1847 = fcmp oge float %1846, 0.000000e+00
  br i1 %1847, label %1848, label %1850

1848:                                             ; preds = %1841
  %1849 = load float, ptr %50, align 4, !tbaa !14
  br label %1853

1850:                                             ; preds = %1841
  %1851 = load float, ptr %50, align 4, !tbaa !14
  %1852 = fneg float %1851
  br label %1853

1853:                                             ; preds = %1850, %1848
  %1854 = phi float [ %1849, %1848 ], [ %1852, %1850 ]
  %1855 = fpext float %1854 to double
  %1856 = fadd double %1843, %1855
  %1857 = load float, ptr %100, align 4, !tbaa !14
  %1858 = fpext float %1857 to double
  %1859 = getelementptr inbounds %struct.complex, ptr %59, i32 0, i32 0
  %1860 = load float, ptr %1859, align 4, !tbaa !16
  store float %1860, ptr %51, align 4, !tbaa !14
  %1861 = load float, ptr %51, align 4, !tbaa !14
  %1862 = fcmp oge float %1861, 0.000000e+00
  br i1 %1862, label %1863, label %1865

1863:                                             ; preds = %1853
  %1864 = load float, ptr %51, align 4, !tbaa !14
  br label %1868

1865:                                             ; preds = %1853
  %1866 = load float, ptr %51, align 4, !tbaa !14
  %1867 = fneg float %1866
  br label %1868

1868:                                             ; preds = %1865, %1863
  %1869 = phi float [ %1864, %1863 ], [ %1867, %1865 ]
  %1870 = fpext float %1869 to double
  %1871 = call double @r_imag(ptr noundef %59)
  %1872 = fptrunc double %1871 to float
  store float %1872, ptr %52, align 4, !tbaa !14
  %1873 = load float, ptr %52, align 4, !tbaa !14
  %1874 = fcmp oge float %1873, 0.000000e+00
  br i1 %1874, label %1875, label %1877

1875:                                             ; preds = %1868
  %1876 = load float, ptr %52, align 4, !tbaa !14
  br label %1880

1877:                                             ; preds = %1868
  %1878 = load float, ptr %52, align 4, !tbaa !14
  %1879 = fneg float %1878
  br label %1880

1880:                                             ; preds = %1877, %1875
  %1881 = phi float [ %1876, %1875 ], [ %1879, %1877 ]
  %1882 = fpext float %1881 to double
  %1883 = fadd double %1870, %1882
  %1884 = fmul double %1858, %1883
  %1885 = fcmp oge double %1856, %1884
  br i1 %1885, label %1886, label %1975

1886:                                             ; preds = %1880
  %1887 = getelementptr inbounds %struct.complex, ptr %71, i32 0, i32 0
  %1888 = load float, ptr %1887, align 4, !tbaa !16
  store float %1888, ptr %49, align 4, !tbaa !14
  %1889 = load float, ptr %49, align 4, !tbaa !14
  %1890 = fcmp oge float %1889, 0.000000e+00
  br i1 %1890, label %1891, label %1893

1891:                                             ; preds = %1886
  %1892 = load float, ptr %49, align 4, !tbaa !14
  br label %1896

1893:                                             ; preds = %1886
  %1894 = load float, ptr %49, align 4, !tbaa !14
  %1895 = fneg float %1894
  br label %1896

1896:                                             ; preds = %1893, %1891
  %1897 = phi float [ %1892, %1891 ], [ %1895, %1893 ]
  %1898 = fpext float %1897 to double
  %1899 = call double @r_imag(ptr noundef %71)
  %1900 = fptrunc double %1899 to float
  store float %1900, ptr %50, align 4, !tbaa !14
  %1901 = load float, ptr %50, align 4, !tbaa !14
  %1902 = fcmp oge float %1901, 0.000000e+00
  br i1 %1902, label %1903, label %1905

1903:                                             ; preds = %1896
  %1904 = load float, ptr %50, align 4, !tbaa !14
  br label %1908

1905:                                             ; preds = %1896
  %1906 = load float, ptr %50, align 4, !tbaa !14
  %1907 = fneg float %1906
  br label %1908

1908:                                             ; preds = %1905, %1903
  %1909 = phi float [ %1904, %1903 ], [ %1907, %1905 ]
  %1910 = fpext float %1909 to double
  %1911 = fadd double %1898, %1910
  %1912 = fdiv double 1.000000e+00, %1911
  %1913 = fptrunc double %1912 to float
  store float %1913, ptr %77, align 4, !tbaa !14
  %1914 = load i64, ptr %61, align 8, !tbaa !9
  %1915 = sub nsw i64 %1914, 1
  store i64 %1915, ptr %46, align 8, !tbaa !9
  %1916 = load i64, ptr %64, align 8, !tbaa !9
  store i64 %1916, ptr %66, align 8, !tbaa !9
  br label %1917

1917:                                             ; preds = %1952, %1908
  %1918 = load i64, ptr %66, align 8, !tbaa !9
  %1919 = load i64, ptr %46, align 8, !tbaa !9
  %1920 = icmp sle i64 %1918, %1919
  br i1 %1920, label %1921, label %1955

1921:                                             ; preds = %1917
  %1922 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %1922, ptr %47, align 8, !tbaa !9
  %1923 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %1923, ptr %48, align 8, !tbaa !9
  %1924 = load float, ptr %77, align 4, !tbaa !14
  %1925 = load ptr, ptr %33, align 8, !tbaa !5
  %1926 = load i64, ptr %48, align 8, !tbaa !9
  %1927 = getelementptr inbounds %struct.complex, ptr %1925, i64 %1926
  %1928 = getelementptr inbounds %struct.complex, ptr %1927, i32 0, i32 0
  %1929 = load float, ptr %1928, align 4, !tbaa !16
  %1930 = fmul float %1924, %1929
  %1931 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  store float %1930, ptr %1931, align 4, !tbaa !16
  %1932 = load float, ptr %77, align 4, !tbaa !14
  %1933 = load ptr, ptr %33, align 8, !tbaa !5
  %1934 = load i64, ptr %48, align 8, !tbaa !9
  %1935 = getelementptr inbounds %struct.complex, ptr %1933, i64 %1934
  %1936 = getelementptr inbounds %struct.complex, ptr %1935, i32 0, i32 1
  %1937 = load float, ptr %1936, align 4, !tbaa !20
  %1938 = fmul float %1932, %1937
  %1939 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  store float %1938, ptr %1939, align 4, !tbaa !20
  %1940 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  %1941 = load float, ptr %1940, align 4, !tbaa !16
  %1942 = load ptr, ptr %33, align 8, !tbaa !5
  %1943 = load i64, ptr %47, align 8, !tbaa !9
  %1944 = getelementptr inbounds %struct.complex, ptr %1942, i64 %1943
  %1945 = getelementptr inbounds %struct.complex, ptr %1944, i32 0, i32 0
  store float %1941, ptr %1945, align 4, !tbaa !16
  %1946 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  %1947 = load float, ptr %1946, align 4, !tbaa !20
  %1948 = load ptr, ptr %33, align 8, !tbaa !5
  %1949 = load i64, ptr %47, align 8, !tbaa !9
  %1950 = getelementptr inbounds %struct.complex, ptr %1948, i64 %1949
  %1951 = getelementptr inbounds %struct.complex, ptr %1950, i32 0, i32 1
  store float %1947, ptr %1951, align 4, !tbaa !20
  br label %1952

1952:                                             ; preds = %1921
  %1953 = load i64, ptr %66, align 8, !tbaa !9
  %1954 = add nsw i64 %1953, 1
  store i64 %1954, ptr %66, align 8, !tbaa !9
  br label %1917, !llvm.loop !25

1955:                                             ; preds = %1917
  %1956 = load float, ptr %77, align 4, !tbaa !14
  %1957 = load float, ptr %80, align 4, !tbaa !14
  %1958 = fmul float %1956, %1957
  store float %1958, ptr %80, align 4, !tbaa !14
  %1959 = load float, ptr %77, align 4, !tbaa !14
  %1960 = getelementptr inbounds %struct.complex, ptr %71, i32 0, i32 0
  %1961 = load float, ptr %1960, align 4, !tbaa !16
  %1962 = fmul float %1959, %1961
  %1963 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  store float %1962, ptr %1963, align 4, !tbaa !16
  %1964 = load float, ptr %77, align 4, !tbaa !14
  %1965 = getelementptr inbounds %struct.complex, ptr %71, i32 0, i32 1
  %1966 = load float, ptr %1965, align 4, !tbaa !20
  %1967 = fmul float %1964, %1966
  %1968 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  store float %1967, ptr %1968, align 4, !tbaa !20
  %1969 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  %1970 = load float, ptr %1969, align 4, !tbaa !16
  %1971 = getelementptr inbounds %struct.complex, ptr %71, i32 0, i32 0
  store float %1970, ptr %1971, align 4, !tbaa !16
  %1972 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  %1973 = load float, ptr %1972, align 4, !tbaa !20
  %1974 = getelementptr inbounds %struct.complex, ptr %71, i32 0, i32 1
  store float %1973, ptr %1974, align 4, !tbaa !20
  br label %1975

1975:                                             ; preds = %1955, %1880
  br label %1976

1976:                                             ; preds = %1975, %1826
  %1977 = load i64, ptr %61, align 8, !tbaa !9
  store i64 %1977, ptr %46, align 8, !tbaa !9
  %1978 = getelementptr inbounds %struct.complex, ptr %71, i32 0, i32 0
  %1979 = load float, ptr %1978, align 4, !tbaa !16
  %1980 = fneg float %1979
  %1981 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 0
  store float %1980, ptr %1981, align 4, !tbaa !16
  %1982 = getelementptr inbounds %struct.complex, ptr %71, i32 0, i32 1
  %1983 = load float, ptr %1982, align 4, !tbaa !20
  %1984 = fneg float %1983
  %1985 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 1
  store float %1984, ptr %1985, align 4, !tbaa !20
  call void @cladiv_(ptr noundef %55, ptr noundef %56, ptr noundef %59)
  %1986 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  %1987 = load float, ptr %1986, align 4, !tbaa !16
  %1988 = load ptr, ptr %33, align 8, !tbaa !5
  %1989 = load i64, ptr %46, align 8, !tbaa !9
  %1990 = getelementptr inbounds %struct.complex, ptr %1988, i64 %1989
  %1991 = getelementptr inbounds %struct.complex, ptr %1990, i32 0, i32 0
  store float %1987, ptr %1991, align 4, !tbaa !16
  %1992 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  %1993 = load float, ptr %1992, align 4, !tbaa !20
  %1994 = load ptr, ptr %33, align 8, !tbaa !5
  %1995 = load i64, ptr %46, align 8, !tbaa !9
  %1996 = getelementptr inbounds %struct.complex, ptr %1994, i64 %1995
  %1997 = getelementptr inbounds %struct.complex, ptr %1996, i32 0, i32 1
  store float %1993, ptr %1997, align 4, !tbaa !20
  %1998 = load i64, ptr %61, align 8, !tbaa !9
  store i64 %1998, ptr %46, align 8, !tbaa !9
  %1999 = load float, ptr %80, align 4, !tbaa !14
  store float %1999, ptr %51, align 4, !tbaa !14
  %2000 = load ptr, ptr %33, align 8, !tbaa !5
  %2001 = load i64, ptr %46, align 8, !tbaa !9
  %2002 = getelementptr inbounds %struct.complex, ptr %2000, i64 %2001
  %2003 = getelementptr inbounds %struct.complex, ptr %2002, i32 0, i32 0
  %2004 = load float, ptr %2003, align 4, !tbaa !16
  store float %2004, ptr %49, align 4, !tbaa !14
  %2005 = load float, ptr %49, align 4, !tbaa !14
  %2006 = fcmp oge float %2005, 0.000000e+00
  br i1 %2006, label %2007, label %2009

2007:                                             ; preds = %1976
  %2008 = load float, ptr %49, align 4, !tbaa !14
  br label %2012

2009:                                             ; preds = %1976
  %2010 = load float, ptr %49, align 4, !tbaa !14
  %2011 = fneg float %2010
  br label %2012

2012:                                             ; preds = %2009, %2007
  %2013 = phi float [ %2008, %2007 ], [ %2011, %2009 ]
  %2014 = fpext float %2013 to double
  %2015 = load ptr, ptr %33, align 8, !tbaa !5
  %2016 = load i64, ptr %61, align 8, !tbaa !9
  %2017 = getelementptr inbounds %struct.complex, ptr %2015, i64 %2016
  %2018 = call double @r_imag(ptr noundef %2017)
  %2019 = fptrunc double %2018 to float
  store float %2019, ptr %50, align 4, !tbaa !14
  %2020 = load float, ptr %50, align 4, !tbaa !14
  %2021 = fcmp oge float %2020, 0.000000e+00
  br i1 %2021, label %2022, label %2024

2022:                                             ; preds = %2012
  %2023 = load float, ptr %50, align 4, !tbaa !14
  br label %2027

2024:                                             ; preds = %2012
  %2025 = load float, ptr %50, align 4, !tbaa !14
  %2026 = fneg float %2025
  br label %2027

2027:                                             ; preds = %2024, %2022
  %2028 = phi float [ %2023, %2022 ], [ %2026, %2024 ]
  %2029 = fpext float %2028 to double
  %2030 = fadd double %2014, %2029
  %2031 = fptrunc double %2030 to float
  store float %2031, ptr %52, align 4, !tbaa !14
  %2032 = load float, ptr %51, align 4, !tbaa !14
  %2033 = load float, ptr %52, align 4, !tbaa !14
  %2034 = fcmp oge float %2032, %2033
  br i1 %2034, label %2035, label %2037

2035:                                             ; preds = %2027
  %2036 = load float, ptr %51, align 4, !tbaa !14
  br label %2039

2037:                                             ; preds = %2027
  %2038 = load float, ptr %52, align 4, !tbaa !14
  br label %2039

2039:                                             ; preds = %2037, %2035
  %2040 = phi float [ %2036, %2035 ], [ %2038, %2037 ]
  %2041 = fpext float %2040 to double
  %2042 = fptrunc double %2041 to float
  store float %2042, ptr %80, align 4, !tbaa !14
  br label %2043

2043:                                             ; preds = %2039
  %2044 = load i64, ptr %61, align 8, !tbaa !9
  %2045 = add nsw i64 %2044, 1
  store i64 %2045, ptr %61, align 8, !tbaa !9
  br label %1428, !llvm.loop !26

2046:                                             ; preds = %1428
  %2047 = load i64, ptr %95, align 8, !tbaa !9
  %2048 = icmp ne i64 %2047, 0
  br i1 %2048, label %2049, label %2072

2049:                                             ; preds = %2046
  %2050 = load ptr, ptr %22, align 8, !tbaa !5
  %2051 = load i64, ptr %2050, align 8, !tbaa !9
  %2052 = add nsw i64 %2051, 1
  %2053 = load i64, ptr %64, align 8, !tbaa !9
  %2054 = sub nsw i64 %2052, %2053
  store i64 %2054, ptr %45, align 8, !tbaa !9
  %2055 = load ptr, ptr %22, align 8, !tbaa !5
  %2056 = load ptr, ptr %27, align 8, !tbaa !5
  %2057 = load i64, ptr %64, align 8, !tbaa !9
  %2058 = load i64, ptr %40, align 8, !tbaa !9
  %2059 = mul nsw i64 %2057, %2058
  %2060 = add nsw i64 %2059, 1
  %2061 = getelementptr inbounds %struct.complex, ptr %2056, i64 %2060
  %2062 = load ptr, ptr %28, align 8, !tbaa !5
  %2063 = load ptr, ptr %33, align 8, !tbaa !5
  %2064 = load i64, ptr %64, align 8, !tbaa !9
  %2065 = getelementptr inbounds %struct.complex, ptr %2063, i64 %2064
  %2066 = load ptr, ptr %33, align 8, !tbaa !5
  %2067 = load ptr, ptr %22, align 8, !tbaa !5
  %2068 = load i64, ptr %2067, align 8, !tbaa !9
  %2069 = add nsw i64 %2068, 1
  %2070 = getelementptr inbounds %struct.complex, ptr %2066, i64 %2069
  %2071 = call i32 @f2c_cgemv(ptr noundef @.str.9, ptr noundef %2055, ptr noundef %45, ptr noundef @c_b2, ptr noundef %2061, ptr noundef %2062, ptr noundef %2065, ptr noundef @c__1, ptr noundef @c_b1, ptr noundef %2070, ptr noundef @c__1)
  store i64 2, ptr %76, align 8, !tbaa !9
  store i64 1, ptr %72, align 8, !tbaa !9
  br label %2074

2072:                                             ; preds = %2046
  store i64 1, ptr %76, align 8, !tbaa !9
  %2073 = load i64, ptr %64, align 8, !tbaa !9
  store i64 %2073, ptr %72, align 8, !tbaa !9
  br label %2074

2074:                                             ; preds = %2072, %2049
  store float 0.000000e+00, ptr %80, align 4, !tbaa !14
  %2075 = load ptr, ptr %22, align 8, !tbaa !5
  %2076 = load i64, ptr %2075, align 8, !tbaa !9
  store i64 %2076, ptr %45, align 8, !tbaa !9
  %2077 = load i64, ptr %72, align 8, !tbaa !9
  store i64 %2077, ptr %66, align 8, !tbaa !9
  br label %2078

2078:                                             ; preds = %2140, %2074
  %2079 = load i64, ptr %66, align 8, !tbaa !9
  %2080 = load i64, ptr %45, align 8, !tbaa !9
  %2081 = icmp sle i64 %2079, %2080
  br i1 %2081, label %2082, label %2143

2082:                                             ; preds = %2078
  %2083 = load i64, ptr %76, align 8, !tbaa !9
  %2084 = sub nsw i64 %2083, 1
  %2085 = load ptr, ptr %22, align 8, !tbaa !5
  %2086 = load i64, ptr %2085, align 8, !tbaa !9
  %2087 = mul nsw i64 %2084, %2086
  %2088 = load i64, ptr %66, align 8, !tbaa !9
  %2089 = add nsw i64 %2087, %2088
  store i64 %2089, ptr %46, align 8, !tbaa !9
  %2090 = load float, ptr %80, align 4, !tbaa !14
  store float %2090, ptr %51, align 4, !tbaa !14
  %2091 = load ptr, ptr %33, align 8, !tbaa !5
  %2092 = load i64, ptr %46, align 8, !tbaa !9
  %2093 = getelementptr inbounds %struct.complex, ptr %2091, i64 %2092
  %2094 = getelementptr inbounds %struct.complex, ptr %2093, i32 0, i32 0
  %2095 = load float, ptr %2094, align 4, !tbaa !16
  store float %2095, ptr %49, align 4, !tbaa !14
  %2096 = load float, ptr %49, align 4, !tbaa !14
  %2097 = fcmp oge float %2096, 0.000000e+00
  br i1 %2097, label %2098, label %2100

2098:                                             ; preds = %2082
  %2099 = load float, ptr %49, align 4, !tbaa !14
  br label %2103

2100:                                             ; preds = %2082
  %2101 = load float, ptr %49, align 4, !tbaa !14
  %2102 = fneg float %2101
  br label %2103

2103:                                             ; preds = %2100, %2098
  %2104 = phi float [ %2099, %2098 ], [ %2102, %2100 ]
  %2105 = fpext float %2104 to double
  %2106 = load ptr, ptr %33, align 8, !tbaa !5
  %2107 = load i64, ptr %76, align 8, !tbaa !9
  %2108 = sub nsw i64 %2107, 1
  %2109 = load ptr, ptr %22, align 8, !tbaa !5
  %2110 = load i64, ptr %2109, align 8, !tbaa !9
  %2111 = mul nsw i64 %2108, %2110
  %2112 = load i64, ptr %66, align 8, !tbaa !9
  %2113 = add nsw i64 %2111, %2112
  %2114 = getelementptr inbounds %struct.complex, ptr %2106, i64 %2113
  %2115 = call double @r_imag(ptr noundef %2114)
  %2116 = fptrunc double %2115 to float
  store float %2116, ptr %50, align 4, !tbaa !14
  %2117 = load float, ptr %50, align 4, !tbaa !14
  %2118 = fcmp oge float %2117, 0.000000e+00
  br i1 %2118, label %2119, label %2121

2119:                                             ; preds = %2103
  %2120 = load float, ptr %50, align 4, !tbaa !14
  br label %2124

2121:                                             ; preds = %2103
  %2122 = load float, ptr %50, align 4, !tbaa !14
  %2123 = fneg float %2122
  br label %2124

2124:                                             ; preds = %2121, %2119
  %2125 = phi float [ %2120, %2119 ], [ %2123, %2121 ]
  %2126 = fpext float %2125 to double
  %2127 = fadd double %2105, %2126
  %2128 = fptrunc double %2127 to float
  store float %2128, ptr %52, align 4, !tbaa !14
  %2129 = load float, ptr %51, align 4, !tbaa !14
  %2130 = load float, ptr %52, align 4, !tbaa !14
  %2131 = fcmp oge float %2129, %2130
  br i1 %2131, label %2132, label %2134

2132:                                             ; preds = %2124
  %2133 = load float, ptr %51, align 4, !tbaa !14
  br label %2136

2134:                                             ; preds = %2124
  %2135 = load float, ptr %52, align 4, !tbaa !14
  br label %2136

2136:                                             ; preds = %2134, %2132
  %2137 = phi float [ %2133, %2132 ], [ %2135, %2134 ]
  %2138 = fpext float %2137 to double
  %2139 = fptrunc double %2138 to float
  store float %2139, ptr %80, align 4, !tbaa !14
  br label %2140

2140:                                             ; preds = %2136
  %2141 = load i64, ptr %66, align 8, !tbaa !9
  %2142 = add nsw i64 %2141, 1
  store i64 %2142, ptr %66, align 8, !tbaa !9
  br label %2078, !llvm.loop !27

2143:                                             ; preds = %2078
  %2144 = load float, ptr %80, align 4, !tbaa !14
  %2145 = load float, ptr %99, align 4, !tbaa !14
  %2146 = fcmp ogt float %2144, %2145
  br i1 %2146, label %2147, label %2202

2147:                                             ; preds = %2143
  %2148 = load float, ptr %80, align 4, !tbaa !14
  %2149 = fdiv float 1.000000e+00, %2148
  store float %2149, ptr %77, align 4, !tbaa !14
  %2150 = load ptr, ptr %22, align 8, !tbaa !5
  %2151 = load i64, ptr %2150, align 8, !tbaa !9
  store i64 %2151, ptr %45, align 8, !tbaa !9
  %2152 = load i64, ptr %72, align 8, !tbaa !9
  store i64 %2152, ptr %66, align 8, !tbaa !9
  br label %2153

2153:                                             ; preds = %2198, %2147
  %2154 = load i64, ptr %66, align 8, !tbaa !9
  %2155 = load i64, ptr %45, align 8, !tbaa !9
  %2156 = icmp sle i64 %2154, %2155
  br i1 %2156, label %2157, label %2201

2157:                                             ; preds = %2153
  %2158 = load i64, ptr %66, align 8, !tbaa !9
  %2159 = load i64, ptr %73, align 8, !tbaa !9
  %2160 = load i64, ptr %40, align 8, !tbaa !9
  %2161 = mul nsw i64 %2159, %2160
  %2162 = add nsw i64 %2158, %2161
  store i64 %2162, ptr %46, align 8, !tbaa !9
  %2163 = load i64, ptr %76, align 8, !tbaa !9
  %2164 = sub nsw i64 %2163, 1
  %2165 = load ptr, ptr %22, align 8, !tbaa !5
  %2166 = load i64, ptr %2165, align 8, !tbaa !9
  %2167 = mul nsw i64 %2164, %2166
  %2168 = load i64, ptr %66, align 8, !tbaa !9
  %2169 = add nsw i64 %2167, %2168
  store i64 %2169, ptr %47, align 8, !tbaa !9
  %2170 = load float, ptr %77, align 4, !tbaa !14
  %2171 = load ptr, ptr %33, align 8, !tbaa !5
  %2172 = load i64, ptr %47, 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 !16
  %2176 = fmul float %2170, %2175
  %2177 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  store float %2176, ptr %2177, align 4, !tbaa !16
  %2178 = load float, ptr %77, align 4, !tbaa !14
  %2179 = load ptr, ptr %33, align 8, !tbaa !5
  %2180 = load i64, ptr %47, align 8, !tbaa !9
  %2181 = getelementptr inbounds %struct.complex, ptr %2179, i64 %2180
  %2182 = getelementptr inbounds %struct.complex, ptr %2181, i32 0, i32 1
  %2183 = load float, ptr %2182, align 4, !tbaa !20
  %2184 = fmul float %2178, %2183
  %2185 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  store float %2184, ptr %2185, align 4, !tbaa !20
  %2186 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  %2187 = load float, ptr %2186, align 4, !tbaa !16
  %2188 = load ptr, ptr %27, align 8, !tbaa !5
  %2189 = load i64, ptr %46, align 8, !tbaa !9
  %2190 = getelementptr inbounds %struct.complex, ptr %2188, i64 %2189
  %2191 = getelementptr inbounds %struct.complex, ptr %2190, i32 0, i32 0
  store float %2187, ptr %2191, align 4, !tbaa !16
  %2192 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  %2193 = load float, ptr %2192, align 4, !tbaa !20
  %2194 = load ptr, ptr %27, align 8, !tbaa !5
  %2195 = load i64, ptr %46, align 8, !tbaa !9
  %2196 = getelementptr inbounds %struct.complex, ptr %2194, i64 %2195
  %2197 = getelementptr inbounds %struct.complex, ptr %2196, i32 0, i32 1
  store float %2193, ptr %2197, align 4, !tbaa !20
  br label %2198

2198:                                             ; preds = %2157
  %2199 = load i64, ptr %66, align 8, !tbaa !9
  %2200 = add nsw i64 %2199, 1
  store i64 %2200, ptr %66, align 8, !tbaa !9
  br label %2153, !llvm.loop !28

2201:                                             ; preds = %2153
  br label %2206

2202:                                             ; preds = %2143
  %2203 = load ptr, ptr %22, align 8, !tbaa !5
  %2204 = load i64, ptr %2203, align 8, !tbaa !9
  %2205 = add nsw i64 %2204, 1
  store i64 %2205, ptr %72, align 8, !tbaa !9
  br label %2206

2206:                                             ; preds = %2202, %2201
  %2207 = load i64, ptr %72, align 8, !tbaa !9
  %2208 = sub nsw i64 %2207, 1
  store i64 %2208, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %66, align 8, !tbaa !9
  br label %2209

2209:                                             ; preds = %2227, %2206
  %2210 = load i64, ptr %66, align 8, !tbaa !9
  %2211 = load i64, ptr %45, align 8, !tbaa !9
  %2212 = icmp sle i64 %2210, %2211
  br i1 %2212, label %2213, label %2230

2213:                                             ; preds = %2209
  %2214 = load i64, ptr %66, align 8, !tbaa !9
  %2215 = load i64, ptr %73, align 8, !tbaa !9
  %2216 = load i64, ptr %40, align 8, !tbaa !9
  %2217 = mul nsw i64 %2215, %2216
  %2218 = add nsw i64 %2214, %2217
  store i64 %2218, ptr %46, align 8, !tbaa !9
  %2219 = load ptr, ptr %27, align 8, !tbaa !5
  %2220 = load i64, ptr %46, align 8, !tbaa !9
  %2221 = getelementptr inbounds %struct.complex, ptr %2219, i64 %2220
  %2222 = getelementptr inbounds %struct.complex, ptr %2221, i32 0, i32 0
  store float 0.000000e+00, ptr %2222, align 4, !tbaa !16
  %2223 = load ptr, ptr %27, align 8, !tbaa !5
  %2224 = load i64, ptr %46, align 8, !tbaa !9
  %2225 = getelementptr inbounds %struct.complex, ptr %2223, i64 %2224
  %2226 = getelementptr inbounds %struct.complex, ptr %2225, i32 0, i32 1
  store float 0.000000e+00, ptr %2226, align 4, !tbaa !20
  br label %2227

2227:                                             ; preds = %2213
  %2228 = load i64, ptr %66, align 8, !tbaa !9
  %2229 = add nsw i64 %2228, 1
  store i64 %2229, ptr %66, align 8, !tbaa !9
  br label %2209, !llvm.loop !29

2230:                                             ; preds = %2209
  br label %2231

2231:                                             ; preds = %2230, %740
  br label %2232

2232:                                             ; preds = %2231, %837
  br label %2233

2233:                                             ; preds = %2232
  %2234 = load i64, ptr %64, align 8, !tbaa !9
  %2235 = add nsw i64 %2234, 1
  store i64 %2235, ptr %64, align 8, !tbaa !9
  br label %727, !llvm.loop !30

2236:                                             ; preds = %727
  br label %2237

2237:                                             ; preds = %2236, %717
  %2238 = load i64, ptr %89, align 8, !tbaa !9
  %2239 = icmp ne i64 %2238, 0
  br i1 %2239, label %2240, label %3880

2240:                                             ; preds = %2237
  %2241 = load i64, ptr %65, align 8, !tbaa !9
  %2242 = add nsw i64 %2241, 1
  store i64 %2242, ptr %73, align 8, !tbaa !9
  %2243 = load ptr, ptr %22, align 8, !tbaa !5
  %2244 = load i64, ptr %2243, align 8, !tbaa !9
  store i64 %2244, ptr %64, align 8, !tbaa !9
  br label %2245

2245:                                             ; preds = %3876, %2240
  %2246 = load i64, ptr %64, align 8, !tbaa !9
  %2247 = icmp sge i64 %2246, 1
  br i1 %2247, label %2248, label %3879

2248:                                             ; preds = %2245
  %2249 = load i64, ptr %82, align 8, !tbaa !9
  %2250 = icmp ne i64 %2249, 0
  br i1 %2250, label %2251, label %2252

2251:                                             ; preds = %2248
  store i64 1, ptr %101, align 8, !tbaa !9
  br label %2257

2252:                                             ; preds = %2248
  %2253 = load ptr, ptr %21, align 8, !tbaa !5
  %2254 = load i64, ptr %64, align 8, !tbaa !9
  %2255 = getelementptr inbounds i64, ptr %2253, i64 %2254
  %2256 = load i64, ptr %2255, align 8, !tbaa !9
  store i64 %2256, ptr %101, align 8, !tbaa !9
  br label %2257

2257:                                             ; preds = %2252, %2251
  %2258 = load i64, ptr %101, align 8, !tbaa !9
  %2259 = icmp ne i64 %2258, 0
  br i1 %2259, label %2260, label %3874

2260:                                             ; preds = %2257
  %2261 = load i64, ptr %73, align 8, !tbaa !9
  %2262 = add nsw i64 %2261, -1
  store i64 %2262, ptr %73, align 8, !tbaa !9
  %2263 = load i64, ptr %64, align 8, !tbaa !9
  %2264 = load i64, ptr %64, align 8, !tbaa !9
  %2265 = load i64, ptr %38, align 8, !tbaa !9
  %2266 = mul nsw i64 %2264, %2265
  %2267 = add nsw i64 %2263, %2266
  store i64 %2267, ptr %44, align 8, !tbaa !9
  %2268 = load i64, ptr %64, align 8, !tbaa !9
  %2269 = load i64, ptr %64, align 8, !tbaa !9
  %2270 = load i64, ptr %36, align 8, !tbaa !9
  %2271 = mul nsw i64 %2269, %2270
  %2272 = add nsw i64 %2268, %2271
  store i64 %2272, ptr %45, align 8, !tbaa !9
  %2273 = load ptr, ptr %23, align 8, !tbaa !5
  %2274 = load i64, ptr %44, align 8, !tbaa !9
  %2275 = getelementptr inbounds %struct.complex, ptr %2273, i64 %2274
  %2276 = getelementptr inbounds %struct.complex, ptr %2275, i32 0, i32 0
  %2277 = load float, ptr %2276, align 4, !tbaa !16
  store float %2277, ptr %50, align 4, !tbaa !14
  %2278 = load float, ptr %50, align 4, !tbaa !14
  %2279 = fcmp oge float %2278, 0.000000e+00
  br i1 %2279, label %2280, label %2282

2280:                                             ; preds = %2260
  %2281 = load float, ptr %50, align 4, !tbaa !14
  br label %2285

2282:                                             ; preds = %2260
  %2283 = load float, ptr %50, align 4, !tbaa !14
  %2284 = fneg float %2283
  br label %2285

2285:                                             ; preds = %2282, %2280
  %2286 = phi float [ %2281, %2280 ], [ %2284, %2282 ]
  %2287 = fpext float %2286 to double
  %2288 = load ptr, ptr %23, align 8, !tbaa !5
  %2289 = load i64, ptr %64, align 8, !tbaa !9
  %2290 = load i64, ptr %64, align 8, !tbaa !9
  %2291 = load i64, ptr %38, align 8, !tbaa !9
  %2292 = mul nsw i64 %2290, %2291
  %2293 = add nsw i64 %2289, %2292
  %2294 = getelementptr inbounds %struct.complex, ptr %2288, i64 %2293
  %2295 = call double @r_imag(ptr noundef %2294)
  %2296 = fptrunc double %2295 to float
  store float %2296, ptr %51, align 4, !tbaa !14
  %2297 = load float, ptr %51, align 4, !tbaa !14
  %2298 = fcmp oge float %2297, 0.000000e+00
  br i1 %2298, label %2299, label %2301

2299:                                             ; preds = %2285
  %2300 = load float, ptr %51, align 4, !tbaa !14
  br label %2304

2301:                                             ; preds = %2285
  %2302 = load float, ptr %51, align 4, !tbaa !14
  %2303 = fneg float %2302
  br label %2304

2304:                                             ; preds = %2301, %2299
  %2305 = phi float [ %2300, %2299 ], [ %2303, %2301 ]
  %2306 = fpext float %2305 to double
  %2307 = fadd double %2287, %2306
  %2308 = load float, ptr %99, align 4, !tbaa !14
  %2309 = fpext float %2308 to double
  %2310 = fcmp ole double %2307, %2309
  br i1 %2310, label %2311, label %2368

2311:                                             ; preds = %2304
  %2312 = load ptr, ptr %25, align 8, !tbaa !5
  %2313 = load i64, ptr %45, align 8, !tbaa !9
  %2314 = getelementptr inbounds %struct.complex, ptr %2312, i64 %2313
  %2315 = getelementptr inbounds %struct.complex, ptr %2314, i32 0, i32 0
  %2316 = load float, ptr %2315, align 4, !tbaa !16
  store float %2316, ptr %49, align 4, !tbaa !14
  %2317 = load float, ptr %49, align 4, !tbaa !14
  %2318 = fcmp oge float %2317, 0.000000e+00
  br i1 %2318, label %2319, label %2321

2319:                                             ; preds = %2311
  %2320 = load float, ptr %49, align 4, !tbaa !14
  br label %2324

2321:                                             ; preds = %2311
  %2322 = load float, ptr %49, align 4, !tbaa !14
  %2323 = fneg float %2322
  br label %2324

2324:                                             ; preds = %2321, %2319
  %2325 = phi float [ %2320, %2319 ], [ %2323, %2321 ]
  %2326 = fpext float %2325 to double
  %2327 = load float, ptr %99, align 4, !tbaa !14
  %2328 = fpext float %2327 to double
  %2329 = fcmp ole double %2326, %2328
  br i1 %2329, label %2330, label %2368

2330:                                             ; preds = %2324
  %2331 = load ptr, ptr %22, align 8, !tbaa !5
  %2332 = load i64, ptr %2331, align 8, !tbaa !9
  store i64 %2332, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %66, align 8, !tbaa !9
  br label %2333

2333:                                             ; preds = %2351, %2330
  %2334 = load i64, ptr %66, align 8, !tbaa !9
  %2335 = load i64, ptr %44, align 8, !tbaa !9
  %2336 = icmp sle i64 %2334, %2335
  br i1 %2336, label %2337, label %2354

2337:                                             ; preds = %2333
  %2338 = load i64, ptr %66, align 8, !tbaa !9
  %2339 = load i64, ptr %73, align 8, !tbaa !9
  %2340 = load i64, ptr %42, align 8, !tbaa !9
  %2341 = mul nsw i64 %2339, %2340
  %2342 = add nsw i64 %2338, %2341
  store i64 %2342, ptr %45, align 8, !tbaa !9
  %2343 = load ptr, ptr %29, align 8, !tbaa !5
  %2344 = load i64, ptr %45, align 8, !tbaa !9
  %2345 = getelementptr inbounds %struct.complex, ptr %2343, i64 %2344
  %2346 = getelementptr inbounds %struct.complex, ptr %2345, i32 0, i32 0
  store float 0.000000e+00, ptr %2346, align 4, !tbaa !16
  %2347 = load ptr, ptr %29, align 8, !tbaa !5
  %2348 = load i64, ptr %45, align 8, !tbaa !9
  %2349 = getelementptr inbounds %struct.complex, ptr %2347, i64 %2348
  %2350 = getelementptr inbounds %struct.complex, ptr %2349, i32 0, i32 1
  store float 0.000000e+00, ptr %2350, align 4, !tbaa !20
  br label %2351

2351:                                             ; preds = %2337
  %2352 = load i64, ptr %66, align 8, !tbaa !9
  %2353 = add nsw i64 %2352, 1
  store i64 %2353, ptr %66, align 8, !tbaa !9
  br label %2333, !llvm.loop !31

2354:                                             ; preds = %2333
  %2355 = load i64, ptr %73, align 8, !tbaa !9
  %2356 = load i64, ptr %73, align 8, !tbaa !9
  %2357 = load i64, ptr %42, align 8, !tbaa !9
  %2358 = mul nsw i64 %2356, %2357
  %2359 = add nsw i64 %2355, %2358
  store i64 %2359, ptr %44, align 8, !tbaa !9
  %2360 = load ptr, ptr %29, align 8, !tbaa !5
  %2361 = load i64, ptr %44, align 8, !tbaa !9
  %2362 = getelementptr inbounds %struct.complex, ptr %2360, i64 %2361
  %2363 = getelementptr inbounds %struct.complex, ptr %2362, i32 0, i32 0
  store float 1.000000e+00, ptr %2363, align 4, !tbaa !16
  %2364 = load ptr, ptr %29, align 8, !tbaa !5
  %2365 = load i64, ptr %44, align 8, !tbaa !9
  %2366 = getelementptr inbounds %struct.complex, ptr %2364, i64 %2365
  %2367 = getelementptr inbounds %struct.complex, ptr %2366, i32 0, i32 1
  store float 0.000000e+00, ptr %2367, align 4, !tbaa !20
  br label %3875

2368:                                             ; preds = %2324, %2304
  %2369 = load i64, ptr %64, align 8, !tbaa !9
  %2370 = load i64, ptr %64, align 8, !tbaa !9
  %2371 = load i64, ptr %38, align 8, !tbaa !9
  %2372 = mul nsw i64 %2370, %2371
  %2373 = add nsw i64 %2369, %2372
  store i64 %2373, ptr %44, align 8, !tbaa !9
  %2374 = load i64, ptr %64, align 8, !tbaa !9
  %2375 = load i64, ptr %64, align 8, !tbaa !9
  %2376 = load i64, ptr %36, align 8, !tbaa !9
  %2377 = mul nsw i64 %2375, %2376
  %2378 = add nsw i64 %2374, %2377
  store i64 %2378, ptr %45, align 8, !tbaa !9
  %2379 = load ptr, ptr %23, align 8, !tbaa !5
  %2380 = load i64, ptr %44, align 8, !tbaa !9
  %2381 = getelementptr inbounds %struct.complex, ptr %2379, i64 %2380
  %2382 = getelementptr inbounds %struct.complex, ptr %2381, i32 0, i32 0
  %2383 = load float, ptr %2382, align 4, !tbaa !16
  store float %2383, ptr %50, align 4, !tbaa !14
  %2384 = load float, ptr %50, align 4, !tbaa !14
  %2385 = fcmp oge float %2384, 0.000000e+00
  br i1 %2385, label %2386, label %2388

2386:                                             ; preds = %2368
  %2387 = load float, ptr %50, align 4, !tbaa !14
  br label %2391

2388:                                             ; preds = %2368
  %2389 = load float, ptr %50, align 4, !tbaa !14
  %2390 = fneg float %2389
  br label %2391

2391:                                             ; preds = %2388, %2386
  %2392 = phi float [ %2387, %2386 ], [ %2390, %2388 ]
  %2393 = fpext float %2392 to double
  %2394 = load ptr, ptr %23, align 8, !tbaa !5
  %2395 = load i64, ptr %64, align 8, !tbaa !9
  %2396 = load i64, ptr %64, align 8, !tbaa !9
  %2397 = load i64, ptr %38, align 8, !tbaa !9
  %2398 = mul nsw i64 %2396, %2397
  %2399 = add nsw i64 %2395, %2398
  %2400 = getelementptr inbounds %struct.complex, ptr %2394, i64 %2399
  %2401 = call double @r_imag(ptr noundef %2400)
  %2402 = fptrunc double %2401 to float
  store float %2402, ptr %51, align 4, !tbaa !14
  %2403 = load float, ptr %51, align 4, !tbaa !14
  %2404 = fcmp oge float %2403, 0.000000e+00
  br i1 %2404, label %2405, label %2407

2405:                                             ; preds = %2391
  %2406 = load float, ptr %51, align 4, !tbaa !14
  br label %2410

2407:                                             ; preds = %2391
  %2408 = load float, ptr %51, align 4, !tbaa !14
  %2409 = fneg float %2408
  br label %2410

2410:                                             ; preds = %2407, %2405
  %2411 = phi float [ %2406, %2405 ], [ %2409, %2407 ]
  %2412 = fpext float %2411 to double
  %2413 = fadd double %2393, %2412
  %2414 = load float, ptr %96, align 4, !tbaa !14
  %2415 = fpext float %2414 to double
  %2416 = fmul double %2413, %2415
  %2417 = fptrunc double %2416 to float
  store float %2417, ptr %52, align 4, !tbaa !14
  %2418 = load ptr, ptr %25, align 8, !tbaa !5
  %2419 = load i64, ptr %45, align 8, !tbaa !9
  %2420 = getelementptr inbounds %struct.complex, ptr %2418, i64 %2419
  %2421 = getelementptr inbounds %struct.complex, ptr %2420, i32 0, i32 0
  %2422 = load float, ptr %2421, align 4, !tbaa !16
  store float %2422, ptr %49, align 4, !tbaa !14
  %2423 = load float, ptr %49, align 4, !tbaa !14
  %2424 = fcmp oge float %2423, 0.000000e+00
  br i1 %2424, label %2425, label %2427

2425:                                             ; preds = %2410
  %2426 = load float, ptr %49, align 4, !tbaa !14
  br label %2430

2427:                                             ; preds = %2410
  %2428 = load float, ptr %49, align 4, !tbaa !14
  %2429 = fneg float %2428
  br label %2430

2430:                                             ; preds = %2427, %2425
  %2431 = phi float [ %2426, %2425 ], [ %2429, %2427 ]
  %2432 = fpext float %2431 to double
  %2433 = load float, ptr %97, align 4, !tbaa !14
  %2434 = fpext float %2433 to double
  %2435 = fmul double %2432, %2434
  %2436 = fptrunc double %2435 to float
  store float %2436, ptr %53, align 4, !tbaa !14
  %2437 = load float, ptr %52, align 4, !tbaa !14
  %2438 = load float, ptr %53, align 4, !tbaa !14
  %2439 = fcmp oge float %2437, %2438
  br i1 %2439, label %2440, label %2442

2440:                                             ; preds = %2430
  %2441 = load float, ptr %52, align 4, !tbaa !14
  br label %2444

2442:                                             ; preds = %2430
  %2443 = load float, ptr %53, align 4, !tbaa !14
  br label %2444

2444:                                             ; preds = %2442, %2440
  %2445 = phi float [ %2441, %2440 ], [ %2443, %2442 ]
  store float %2445, ptr %52, align 4, !tbaa !14
  %2446 = load float, ptr %52, align 4, !tbaa !14
  %2447 = load float, ptr %99, align 4, !tbaa !14
  %2448 = fcmp oge float %2446, %2447
  br i1 %2448, label %2449, label %2451

2449:                                             ; preds = %2444
  %2450 = load float, ptr %52, align 4, !tbaa !14
  br label %2453

2451:                                             ; preds = %2444
  %2452 = load float, ptr %99, align 4, !tbaa !14
  br label %2453

2453:                                             ; preds = %2451, %2449
  %2454 = phi float [ %2450, %2449 ], [ %2452, %2451 ]
  %2455 = fpext float %2454 to double
  %2456 = fdiv double 1.000000e+00, %2455
  %2457 = fptrunc double %2456 to float
  store float %2457, ptr %77, align 4, !tbaa !14
  %2458 = load i64, ptr %64, align 8, !tbaa !9
  %2459 = load i64, ptr %64, align 8, !tbaa !9
  %2460 = load i64, ptr %38, align 8, !tbaa !9
  %2461 = mul nsw i64 %2459, %2460
  %2462 = add nsw i64 %2458, %2461
  store i64 %2462, ptr %44, align 8, !tbaa !9
  %2463 = load float, ptr %77, align 4, !tbaa !14
  %2464 = load ptr, ptr %23, align 8, !tbaa !5
  %2465 = load i64, ptr %44, align 8, !tbaa !9
  %2466 = getelementptr inbounds %struct.complex, ptr %2464, i64 %2465
  %2467 = getelementptr inbounds %struct.complex, ptr %2466, i32 0, i32 0
  %2468 = load float, ptr %2467, align 4, !tbaa !16
  %2469 = fmul float %2463, %2468
  %2470 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 0
  store float %2469, ptr %2470, align 4, !tbaa !16
  %2471 = load float, ptr %77, align 4, !tbaa !14
  %2472 = load ptr, ptr %23, align 8, !tbaa !5
  %2473 = load i64, ptr %44, align 8, !tbaa !9
  %2474 = getelementptr inbounds %struct.complex, ptr %2472, i64 %2473
  %2475 = getelementptr inbounds %struct.complex, ptr %2474, i32 0, i32 1
  %2476 = load float, ptr %2475, align 4, !tbaa !20
  %2477 = fmul float %2471, %2476
  %2478 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 1
  store float %2477, ptr %2478, align 4, !tbaa !20
  %2479 = load float, ptr %96, align 4, !tbaa !14
  %2480 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 0
  %2481 = load float, ptr %2480, align 4, !tbaa !16
  %2482 = fmul float %2479, %2481
  %2483 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  store float %2482, ptr %2483, align 4, !tbaa !16
  %2484 = load float, ptr %96, align 4, !tbaa !14
  %2485 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 1
  %2486 = load float, ptr %2485, align 4, !tbaa !20
  %2487 = fmul float %2484, %2486
  %2488 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  store float %2487, ptr %2488, align 4, !tbaa !20
  %2489 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  %2490 = load float, ptr %2489, align 4, !tbaa !16
  %2491 = getelementptr inbounds %struct.complex, ptr %98, i32 0, i32 0
  store float %2490, ptr %2491, align 4, !tbaa !16
  %2492 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  %2493 = load float, ptr %2492, align 4, !tbaa !20
  %2494 = getelementptr inbounds %struct.complex, ptr %98, i32 0, i32 1
  store float %2493, ptr %2494, align 4, !tbaa !20
  %2495 = load i64, ptr %64, align 8, !tbaa !9
  %2496 = load i64, ptr %64, align 8, !tbaa !9
  %2497 = load i64, ptr %36, align 8, !tbaa !9
  %2498 = mul nsw i64 %2496, %2497
  %2499 = add nsw i64 %2495, %2498
  store i64 %2499, ptr %44, align 8, !tbaa !9
  %2500 = load float, ptr %77, align 4, !tbaa !14
  %2501 = load ptr, ptr %25, align 8, !tbaa !5
  %2502 = load i64, ptr %44, align 8, !tbaa !9
  %2503 = getelementptr inbounds %struct.complex, ptr %2501, i64 %2502
  %2504 = getelementptr inbounds %struct.complex, ptr %2503, i32 0, i32 0
  %2505 = load float, ptr %2504, align 4, !tbaa !16
  %2506 = fmul float %2500, %2505
  %2507 = load float, ptr %97, align 4, !tbaa !14
  %2508 = fmul float %2506, %2507
  store float %2508, ptr %84, align 4, !tbaa !14
  %2509 = load float, ptr %84, align 4, !tbaa !14
  %2510 = load float, ptr %96, align 4, !tbaa !14
  %2511 = fmul float %2509, %2510
  store float %2511, ptr %93, align 4, !tbaa !14
  %2512 = load float, ptr %97, align 4, !tbaa !14
  %2513 = getelementptr inbounds %struct.complex, ptr %98, i32 0, i32 0
  %2514 = load float, ptr %2513, align 4, !tbaa !16
  %2515 = fmul float %2512, %2514
  %2516 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  store float %2515, ptr %2516, align 4, !tbaa !16
  %2517 = load float, ptr %97, align 4, !tbaa !14
  %2518 = getelementptr inbounds %struct.complex, ptr %98, i32 0, i32 1
  %2519 = load float, ptr %2518, align 4, !tbaa !20
  %2520 = fmul float %2517, %2519
  %2521 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  store float %2520, ptr %2521, align 4, !tbaa !20
  %2522 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  %2523 = load float, ptr %2522, align 4, !tbaa !16
  %2524 = getelementptr inbounds %struct.complex, ptr %94, i32 0, i32 0
  store float %2523, ptr %2524, align 4, !tbaa !16
  %2525 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  %2526 = load float, ptr %2525, align 4, !tbaa !20
  %2527 = getelementptr inbounds %struct.complex, ptr %94, i32 0, i32 1
  store float %2526, ptr %2527, align 4, !tbaa !20
  %2528 = load float, ptr %84, align 4, !tbaa !14
  %2529 = fcmp oge float %2528, 0.000000e+00
  br i1 %2529, label %2530, label %2532

2530:                                             ; preds = %2453
  %2531 = load float, ptr %84, align 4, !tbaa !14
  br label %2535

2532:                                             ; preds = %2453
  %2533 = load float, ptr %84, align 4, !tbaa !14
  %2534 = fneg float %2533
  br label %2535

2535:                                             ; preds = %2532, %2530
  %2536 = phi float [ %2531, %2530 ], [ %2534, %2532 ]
  %2537 = fpext float %2536 to double
  %2538 = load float, ptr %99, align 4, !tbaa !14
  %2539 = fpext float %2538 to double
  %2540 = fcmp oge double %2537, %2539
  br i1 %2540, label %2541, label %2555

2541:                                             ; preds = %2535
  %2542 = load float, ptr %93, align 4, !tbaa !14
  %2543 = fcmp oge float %2542, 0.000000e+00
  br i1 %2543, label %2544, label %2546

2544:                                             ; preds = %2541
  %2545 = load float, ptr %93, align 4, !tbaa !14
  br label %2549

2546:                                             ; preds = %2541
  %2547 = load float, ptr %93, align 4, !tbaa !14
  %2548 = fneg float %2547
  br label %2549

2549:                                             ; preds = %2546, %2544
  %2550 = phi float [ %2545, %2544 ], [ %2548, %2546 ]
  %2551 = fpext float %2550 to double
  %2552 = load float, ptr %85, align 4, !tbaa !14
  %2553 = fpext float %2552 to double
  %2554 = fcmp olt double %2551, %2553
  br label %2555

2555:                                             ; preds = %2549, %2535
  %2556 = phi i1 [ false, %2535 ], [ %2554, %2549 ]
  %2557 = zext i1 %2556 to i32
  %2558 = sext i32 %2557 to i64
  store i64 %2558, ptr %68, align 8, !tbaa !9
  %2559 = getelementptr inbounds %struct.complex, ptr %98, i32 0, i32 0
  %2560 = load float, ptr %2559, align 4, !tbaa !16
  store float %2560, ptr %49, align 4, !tbaa !14
  %2561 = load float, ptr %49, align 4, !tbaa !14
  %2562 = fcmp oge float %2561, 0.000000e+00
  br i1 %2562, label %2563, label %2565

2563:                                             ; preds = %2555
  %2564 = load float, ptr %49, align 4, !tbaa !14
  br label %2568

2565:                                             ; preds = %2555
  %2566 = load float, ptr %49, align 4, !tbaa !14
  %2567 = fneg float %2566
  br label %2568

2568:                                             ; preds = %2565, %2563
  %2569 = phi float [ %2564, %2563 ], [ %2567, %2565 ]
  %2570 = fpext float %2569 to double
  %2571 = call double @r_imag(ptr noundef %98)
  %2572 = fptrunc double %2571 to float
  store float %2572, ptr %50, align 4, !tbaa !14
  %2573 = load float, ptr %50, align 4, !tbaa !14
  %2574 = fcmp oge float %2573, 0.000000e+00
  br i1 %2574, label %2575, label %2577

2575:                                             ; preds = %2568
  %2576 = load float, ptr %50, align 4, !tbaa !14
  br label %2580

2577:                                             ; preds = %2568
  %2578 = load float, ptr %50, align 4, !tbaa !14
  %2579 = fneg float %2578
  br label %2580

2580:                                             ; preds = %2577, %2575
  %2581 = phi float [ %2576, %2575 ], [ %2579, %2577 ]
  %2582 = fpext float %2581 to double
  %2583 = fadd double %2570, %2582
  %2584 = load float, ptr %99, align 4, !tbaa !14
  %2585 = fpext float %2584 to double
  %2586 = fcmp oge double %2583, %2585
  br i1 %2586, label %2587, label %2616

2587:                                             ; preds = %2580
  %2588 = getelementptr inbounds %struct.complex, ptr %94, i32 0, i32 0
  %2589 = load float, ptr %2588, align 4, !tbaa !16
  store float %2589, ptr %51, align 4, !tbaa !14
  %2590 = load float, ptr %51, align 4, !tbaa !14
  %2591 = fcmp oge float %2590, 0.000000e+00
  br i1 %2591, label %2592, label %2594

2592:                                             ; preds = %2587
  %2593 = load float, ptr %51, align 4, !tbaa !14
  br label %2597

2594:                                             ; preds = %2587
  %2595 = load float, ptr %51, align 4, !tbaa !14
  %2596 = fneg float %2595
  br label %2597

2597:                                             ; preds = %2594, %2592
  %2598 = phi float [ %2593, %2592 ], [ %2596, %2594 ]
  %2599 = fpext float %2598 to double
  %2600 = call double @r_imag(ptr noundef %94)
  %2601 = fptrunc double %2600 to float
  store float %2601, ptr %52, align 4, !tbaa !14
  %2602 = load float, ptr %52, align 4, !tbaa !14
  %2603 = fcmp oge float %2602, 0.000000e+00
  br i1 %2603, label %2604, label %2606

2604:                                             ; preds = %2597
  %2605 = load float, ptr %52, align 4, !tbaa !14
  br label %2609

2606:                                             ; preds = %2597
  %2607 = load float, ptr %52, align 4, !tbaa !14
  %2608 = fneg float %2607
  br label %2609

2609:                                             ; preds = %2606, %2604
  %2610 = phi float [ %2605, %2604 ], [ %2608, %2606 ]
  %2611 = fpext float %2610 to double
  %2612 = fadd double %2599, %2611
  %2613 = load float, ptr %85, align 4, !tbaa !14
  %2614 = fpext float %2613 to double
  %2615 = fcmp olt double %2612, %2614
  br label %2616

2616:                                             ; preds = %2609, %2580
  %2617 = phi i1 [ false, %2580 ], [ %2615, %2609 ]
  %2618 = zext i1 %2617 to i32
  %2619 = sext i32 %2618 to i64
  store i64 %2619, ptr %69, align 8, !tbaa !9
  store float 1.000000e+00, ptr %81, align 4, !tbaa !14
  %2620 = load i64, ptr %68, align 8, !tbaa !9
  %2621 = icmp ne i64 %2620, 0
  br i1 %2621, label %2622, label %2648

2622:                                             ; preds = %2616
  %2623 = load float, ptr %85, align 4, !tbaa !14
  %2624 = fpext float %2623 to double
  %2625 = load float, ptr %84, align 4, !tbaa !14
  %2626 = fcmp oge float %2625, 0.000000e+00
  br i1 %2626, label %2627, label %2629

2627:                                             ; preds = %2622
  %2628 = load float, ptr %84, align 4, !tbaa !14
  br label %2632

2629:                                             ; preds = %2622
  %2630 = load float, ptr %84, align 4, !tbaa !14
  %2631 = fneg float %2630
  br label %2632

2632:                                             ; preds = %2629, %2627
  %2633 = phi float [ %2628, %2627 ], [ %2631, %2629 ]
  %2634 = fpext float %2633 to double
  %2635 = fdiv double %2624, %2634
  %2636 = load float, ptr %87, align 4, !tbaa !14
  %2637 = load float, ptr %67, align 4, !tbaa !14
  %2638 = fcmp ole float %2636, %2637
  br i1 %2638, label %2639, label %2641

2639:                                             ; preds = %2632
  %2640 = load float, ptr %87, align 4, !tbaa !14
  br label %2643

2641:                                             ; preds = %2632
  %2642 = load float, ptr %67, align 4, !tbaa !14
  br label %2643

2643:                                             ; preds = %2641, %2639
  %2644 = phi float [ %2640, %2639 ], [ %2642, %2641 ]
  %2645 = fpext float %2644 to double
  %2646 = fmul double %2635, %2645
  %2647 = fptrunc double %2646 to float
  store float %2647, ptr %81, align 4, !tbaa !14
  br label %2648

2648:                                             ; preds = %2643, %2616
  %2649 = load i64, ptr %69, align 8, !tbaa !9
  %2650 = icmp ne i64 %2649, 0
  br i1 %2650, label %2651, label %2704

2651:                                             ; preds = %2648
  %2652 = load float, ptr %81, align 4, !tbaa !14
  store float %2652, ptr %51, align 4, !tbaa !14
  %2653 = load float, ptr %85, align 4, !tbaa !14
  %2654 = fpext float %2653 to double
  %2655 = getelementptr inbounds %struct.complex, ptr %98, i32 0, i32 0
  %2656 = load float, ptr %2655, align 4, !tbaa !16
  store float %2656, ptr %49, align 4, !tbaa !14
  %2657 = load float, ptr %49, align 4, !tbaa !14
  %2658 = fcmp oge float %2657, 0.000000e+00
  br i1 %2658, label %2659, label %2661

2659:                                             ; preds = %2651
  %2660 = load float, ptr %49, align 4, !tbaa !14
  br label %2664

2661:                                             ; preds = %2651
  %2662 = load float, ptr %49, align 4, !tbaa !14
  %2663 = fneg float %2662
  br label %2664

2664:                                             ; preds = %2661, %2659
  %2665 = phi float [ %2660, %2659 ], [ %2663, %2661 ]
  %2666 = fpext float %2665 to double
  %2667 = call double @r_imag(ptr noundef %98)
  %2668 = fptrunc double %2667 to float
  store float %2668, ptr %50, align 4, !tbaa !14
  %2669 = load float, ptr %50, align 4, !tbaa !14
  %2670 = fcmp oge float %2669, 0.000000e+00
  br i1 %2670, label %2671, label %2673

2671:                                             ; preds = %2664
  %2672 = load float, ptr %50, align 4, !tbaa !14
  br label %2676

2673:                                             ; preds = %2664
  %2674 = load float, ptr %50, align 4, !tbaa !14
  %2675 = fneg float %2674
  br label %2676

2676:                                             ; preds = %2673, %2671
  %2677 = phi float [ %2672, %2671 ], [ %2675, %2673 ]
  %2678 = fpext float %2677 to double
  %2679 = fadd double %2666, %2678
  %2680 = fdiv double %2654, %2679
  %2681 = load float, ptr %88, align 4, !tbaa !14
  %2682 = load float, ptr %67, align 4, !tbaa !14
  %2683 = fcmp ole float %2681, %2682
  br i1 %2683, label %2684, label %2686

2684:                                             ; preds = %2676
  %2685 = load float, ptr %88, align 4, !tbaa !14
  br label %2688

2686:                                             ; preds = %2676
  %2687 = load float, ptr %67, align 4, !tbaa !14
  br label %2688

2688:                                             ; preds = %2686, %2684
  %2689 = phi float [ %2685, %2684 ], [ %2687, %2686 ]
  %2690 = fpext float %2689 to double
  %2691 = fmul double %2680, %2690
  %2692 = fptrunc double %2691 to float
  store float %2692, ptr %52, align 4, !tbaa !14
  %2693 = load float, ptr %51, align 4, !tbaa !14
  %2694 = load float, ptr %52, align 4, !tbaa !14
  %2695 = fcmp oge float %2693, %2694
  br i1 %2695, label %2696, label %2698

2696:                                             ; preds = %2688
  %2697 = load float, ptr %51, align 4, !tbaa !14
  br label %2700

2698:                                             ; preds = %2688
  %2699 = load float, ptr %52, align 4, !tbaa !14
  br label %2700

2700:                                             ; preds = %2698, %2696
  %2701 = phi float [ %2697, %2696 ], [ %2699, %2698 ]
  %2702 = fpext float %2701 to double
  %2703 = fptrunc double %2702 to float
  store float %2703, ptr %81, align 4, !tbaa !14
  br label %2704

2704:                                             ; preds = %2700, %2648
  %2705 = load i64, ptr %68, align 8, !tbaa !9
  %2706 = icmp ne i64 %2705, 0
  br i1 %2706, label %2710, label %2707

2707:                                             ; preds = %2704
  %2708 = load i64, ptr %69, align 8, !tbaa !9
  %2709 = icmp ne i64 %2708, 0
  br i1 %2709, label %2710, label %2844

2710:                                             ; preds = %2707, %2704
  store float 1.000000e+00, ptr %53, align 4, !tbaa !14
  %2711 = load float, ptr %93, align 4, !tbaa !14
  %2712 = fcmp oge float %2711, 0.000000e+00
  br i1 %2712, label %2713, label %2715

2713:                                             ; preds = %2710
  %2714 = load float, ptr %93, align 4, !tbaa !14
  br label %2718

2715:                                             ; preds = %2710
  %2716 = load float, ptr %93, align 4, !tbaa !14
  %2717 = fneg float %2716
  br label %2718

2718:                                             ; preds = %2715, %2713
  %2719 = phi float [ %2714, %2713 ], [ %2717, %2715 ]
  %2720 = fpext float %2719 to double
  %2721 = fptrunc double %2720 to float
  store float %2721, ptr %54, align 4, !tbaa !14
  %2722 = load float, ptr %53, align 4, !tbaa !14
  %2723 = load float, ptr %54, align 4, !tbaa !14
  %2724 = fcmp oge float %2722, %2723
  br i1 %2724, label %2725, label %2727

2725:                                             ; preds = %2718
  %2726 = load float, ptr %53, align 4, !tbaa !14
  br label %2729

2727:                                             ; preds = %2718
  %2728 = load float, ptr %54, align 4, !tbaa !14
  br label %2729

2729:                                             ; preds = %2727, %2725
  %2730 = phi float [ %2726, %2725 ], [ %2728, %2727 ]
  store float %2730, ptr %53, align 4, !tbaa !14
  %2731 = getelementptr inbounds %struct.complex, ptr %94, i32 0, i32 0
  %2732 = load float, ptr %2731, align 4, !tbaa !16
  store float %2732, ptr %49, align 4, !tbaa !14
  %2733 = load float, ptr %49, align 4, !tbaa !14
  %2734 = fcmp oge float %2733, 0.000000e+00
  br i1 %2734, label %2735, label %2737

2735:                                             ; preds = %2729
  %2736 = load float, ptr %49, align 4, !tbaa !14
  br label %2740

2737:                                             ; preds = %2729
  %2738 = load float, ptr %49, align 4, !tbaa !14
  %2739 = fneg float %2738
  br label %2740

2740:                                             ; preds = %2737, %2735
  %2741 = phi float [ %2736, %2735 ], [ %2739, %2737 ]
  %2742 = fpext float %2741 to double
  %2743 = call double @r_imag(ptr noundef %94)
  %2744 = fptrunc double %2743 to float
  store float %2744, ptr %50, align 4, !tbaa !14
  %2745 = load float, ptr %50, align 4, !tbaa !14
  %2746 = fcmp oge float %2745, 0.000000e+00
  br i1 %2746, label %2747, label %2749

2747:                                             ; preds = %2740
  %2748 = load float, ptr %50, align 4, !tbaa !14
  br label %2752

2749:                                             ; preds = %2740
  %2750 = load float, ptr %50, align 4, !tbaa !14
  %2751 = fneg float %2750
  br label %2752

2752:                                             ; preds = %2749, %2747
  %2753 = phi float [ %2748, %2747 ], [ %2751, %2749 ]
  %2754 = fpext float %2753 to double
  %2755 = fadd double %2742, %2754
  %2756 = fptrunc double %2755 to float
  store float %2756, ptr %54, align 4, !tbaa !14
  %2757 = load float, ptr %81, align 4, !tbaa !14
  store float %2757, ptr %51, align 4, !tbaa !14
  %2758 = load float, ptr %99, align 4, !tbaa !14
  %2759 = fpext float %2758 to double
  %2760 = load float, ptr %53, align 4, !tbaa !14
  %2761 = load float, ptr %54, align 4, !tbaa !14
  %2762 = fcmp oge float %2760, %2761
  br i1 %2762, label %2763, label %2765

2763:                                             ; preds = %2752
  %2764 = load float, ptr %53, align 4, !tbaa !14
  br label %2767

2765:                                             ; preds = %2752
  %2766 = load float, ptr %54, align 4, !tbaa !14
  br label %2767

2767:                                             ; preds = %2765, %2763
  %2768 = phi float [ %2764, %2763 ], [ %2766, %2765 ]
  %2769 = fpext float %2768 to double
  %2770 = fmul double %2759, %2769
  %2771 = fdiv double 1.000000e+00, %2770
  %2772 = fptrunc double %2771 to float
  store float %2772, ptr %52, align 4, !tbaa !14
  %2773 = load float, ptr %51, align 4, !tbaa !14
  %2774 = load float, ptr %52, align 4, !tbaa !14
  %2775 = fcmp ole float %2773, %2774
  br i1 %2775, label %2776, label %2778

2776:                                             ; preds = %2767
  %2777 = load float, ptr %51, align 4, !tbaa !14
  br label %2780

2778:                                             ; preds = %2767
  %2779 = load float, ptr %52, align 4, !tbaa !14
  br label %2780

2780:                                             ; preds = %2778, %2776
  %2781 = phi float [ %2777, %2776 ], [ %2779, %2778 ]
  %2782 = fpext float %2781 to double
  %2783 = fptrunc double %2782 to float
  store float %2783, ptr %81, align 4, !tbaa !14
  %2784 = load i64, ptr %68, align 8, !tbaa !9
  %2785 = icmp ne i64 %2784, 0
  br i1 %2785, label %2786, label %2792

2786:                                             ; preds = %2780
  %2787 = load float, ptr %96, align 4, !tbaa !14
  %2788 = load float, ptr %81, align 4, !tbaa !14
  %2789 = load float, ptr %84, align 4, !tbaa !14
  %2790 = fmul float %2788, %2789
  %2791 = fmul float %2787, %2790
  store float %2791, ptr %93, align 4, !tbaa !14
  br label %2796

2792:                                             ; preds = %2780
  %2793 = load float, ptr %81, align 4, !tbaa !14
  %2794 = load float, ptr %93, align 4, !tbaa !14
  %2795 = fmul float %2793, %2794
  store float %2795, ptr %93, align 4, !tbaa !14
  br label %2796

2796:                                             ; preds = %2792, %2786
  %2797 = load i64, ptr %69, align 8, !tbaa !9
  %2798 = icmp ne i64 %2797, 0
  br i1 %2798, label %2799, label %2826

2799:                                             ; preds = %2796
  %2800 = load float, ptr %81, align 4, !tbaa !14
  %2801 = getelementptr inbounds %struct.complex, ptr %98, i32 0, i32 0
  %2802 = load float, ptr %2801, align 4, !tbaa !16
  %2803 = fmul float %2800, %2802
  %2804 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 0
  store float %2803, ptr %2804, align 4, !tbaa !16
  %2805 = load float, ptr %81, align 4, !tbaa !14
  %2806 = getelementptr inbounds %struct.complex, ptr %98, i32 0, i32 1
  %2807 = load float, ptr %2806, align 4, !tbaa !20
  %2808 = fmul float %2805, %2807
  %2809 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 1
  store float %2808, ptr %2809, align 4, !tbaa !20
  %2810 = load float, ptr %97, align 4, !tbaa !14
  %2811 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 0
  %2812 = load float, ptr %2811, align 4, !tbaa !16
  %2813 = fmul float %2810, %2812
  %2814 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  store float %2813, ptr %2814, align 4, !tbaa !16
  %2815 = load float, ptr %97, align 4, !tbaa !14
  %2816 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 1
  %2817 = load float, ptr %2816, align 4, !tbaa !20
  %2818 = fmul float %2815, %2817
  %2819 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  store float %2818, ptr %2819, align 4, !tbaa !20
  %2820 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  %2821 = load float, ptr %2820, align 4, !tbaa !16
  %2822 = getelementptr inbounds %struct.complex, ptr %94, i32 0, i32 0
  store float %2821, ptr %2822, align 4, !tbaa !16
  %2823 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  %2824 = load float, ptr %2823, align 4, !tbaa !20
  %2825 = getelementptr inbounds %struct.complex, ptr %94, i32 0, i32 1
  store float %2824, ptr %2825, align 4, !tbaa !20
  br label %2843

2826:                                             ; preds = %2796
  %2827 = load float, ptr %81, align 4, !tbaa !14
  %2828 = getelementptr inbounds %struct.complex, ptr %94, i32 0, i32 0
  %2829 = load float, ptr %2828, align 4, !tbaa !16
  %2830 = fmul float %2827, %2829
  %2831 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  store float %2830, ptr %2831, align 4, !tbaa !16
  %2832 = load float, ptr %81, align 4, !tbaa !14
  %2833 = getelementptr inbounds %struct.complex, ptr %94, i32 0, i32 1
  %2834 = load float, ptr %2833, align 4, !tbaa !20
  %2835 = fmul float %2832, %2834
  %2836 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  store float %2835, ptr %2836, align 4, !tbaa !20
  %2837 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  %2838 = load float, ptr %2837, align 4, !tbaa !16
  %2839 = getelementptr inbounds %struct.complex, ptr %94, i32 0, i32 0
  store float %2838, ptr %2839, align 4, !tbaa !16
  %2840 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  %2841 = load float, ptr %2840, align 4, !tbaa !20
  %2842 = getelementptr inbounds %struct.complex, ptr %94, i32 0, i32 1
  store float %2841, ptr %2842, align 4, !tbaa !20
  br label %2843

2843:                                             ; preds = %2826, %2799
  br label %2844

2844:                                             ; preds = %2843, %2707
  %2845 = load float, ptr %93, align 4, !tbaa !14
  %2846 = fcmp oge float %2845, 0.000000e+00
  br i1 %2846, label %2847, label %2849

2847:                                             ; preds = %2844
  %2848 = load float, ptr %93, align 4, !tbaa !14
  br label %2852

2849:                                             ; preds = %2844
  %2850 = load float, ptr %93, align 4, !tbaa !14
  %2851 = fneg float %2850
  br label %2852

2852:                                             ; preds = %2849, %2847
  %2853 = phi float [ %2848, %2847 ], [ %2851, %2849 ]
  %2854 = fpext float %2853 to double
  %2855 = fptrunc double %2854 to float
  store float %2855, ptr %91, align 4, !tbaa !14
  %2856 = getelementptr inbounds %struct.complex, ptr %94, i32 0, i32 0
  %2857 = load float, ptr %2856, align 4, !tbaa !16
  store float %2857, ptr %49, align 4, !tbaa !14
  %2858 = load float, ptr %49, align 4, !tbaa !14
  %2859 = fcmp oge float %2858, 0.000000e+00
  br i1 %2859, label %2860, label %2862

2860:                                             ; preds = %2852
  %2861 = load float, ptr %49, align 4, !tbaa !14
  br label %2865

2862:                                             ; preds = %2852
  %2863 = load float, ptr %49, align 4, !tbaa !14
  %2864 = fneg float %2863
  br label %2865

2865:                                             ; preds = %2862, %2860
  %2866 = phi float [ %2861, %2860 ], [ %2864, %2862 ]
  %2867 = fpext float %2866 to double
  %2868 = call double @r_imag(ptr noundef %94)
  %2869 = fptrunc double %2868 to float
  store float %2869, ptr %50, align 4, !tbaa !14
  %2870 = load float, ptr %50, align 4, !tbaa !14
  %2871 = fcmp oge float %2870, 0.000000e+00
  br i1 %2871, label %2872, label %2874

2872:                                             ; preds = %2865
  %2873 = load float, ptr %50, align 4, !tbaa !14
  br label %2877

2874:                                             ; preds = %2865
  %2875 = load float, ptr %50, align 4, !tbaa !14
  %2876 = fneg float %2875
  br label %2877

2877:                                             ; preds = %2874, %2872
  %2878 = phi float [ %2873, %2872 ], [ %2876, %2874 ]
  %2879 = fpext float %2878 to double
  %2880 = fadd double %2867, %2879
  %2881 = fptrunc double %2880 to float
  store float %2881, ptr %92, align 4, !tbaa !14
  store float 1.000000e+00, ptr %80, align 4, !tbaa !14
  %2882 = load ptr, ptr %22, align 8, !tbaa !5
  %2883 = load i64, ptr %2882, align 8, !tbaa !9
  store i64 %2883, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %66, align 8, !tbaa !9
  br label %2884

2884:                                             ; preds = %2898, %2877
  %2885 = load i64, ptr %66, align 8, !tbaa !9
  %2886 = load i64, ptr %44, align 8, !tbaa !9
  %2887 = icmp sle i64 %2885, %2886
  br i1 %2887, label %2888, label %2901

2888:                                             ; preds = %2884
  %2889 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %2889, ptr %45, align 8, !tbaa !9
  %2890 = load ptr, ptr %33, align 8, !tbaa !5
  %2891 = load i64, ptr %45, align 8, !tbaa !9
  %2892 = getelementptr inbounds %struct.complex, ptr %2890, i64 %2891
  %2893 = getelementptr inbounds %struct.complex, ptr %2892, i32 0, i32 0
  store float 0.000000e+00, ptr %2893, align 4, !tbaa !16
  %2894 = load ptr, ptr %33, align 8, !tbaa !5
  %2895 = load i64, ptr %45, align 8, !tbaa !9
  %2896 = getelementptr inbounds %struct.complex, ptr %2894, i64 %2895
  %2897 = getelementptr inbounds %struct.complex, ptr %2896, i32 0, i32 1
  store float 0.000000e+00, ptr %2897, align 4, !tbaa !20
  br label %2898

2898:                                             ; preds = %2888
  %2899 = load i64, ptr %66, align 8, !tbaa !9
  %2900 = add nsw i64 %2899, 1
  store i64 %2900, ptr %66, align 8, !tbaa !9
  br label %2884, !llvm.loop !32

2901:                                             ; preds = %2884
  %2902 = load i64, ptr %64, align 8, !tbaa !9
  store i64 %2902, ptr %44, align 8, !tbaa !9
  %2903 = load ptr, ptr %33, align 8, !tbaa !5
  %2904 = load i64, ptr %44, align 8, !tbaa !9
  %2905 = getelementptr inbounds %struct.complex, ptr %2903, i64 %2904
  %2906 = getelementptr inbounds %struct.complex, ptr %2905, i32 0, i32 0
  store float 1.000000e+00, ptr %2906, align 4, !tbaa !16
  %2907 = load ptr, ptr %33, align 8, !tbaa !5
  %2908 = load i64, ptr %44, align 8, !tbaa !9
  %2909 = getelementptr inbounds %struct.complex, ptr %2907, i64 %2908
  %2910 = getelementptr inbounds %struct.complex, ptr %2909, i32 0, i32 1
  store float 0.000000e+00, ptr %2910, align 4, !tbaa !20
  %2911 = load float, ptr %70, align 4, !tbaa !14
  %2912 = load float, ptr %91, align 4, !tbaa !14
  %2913 = fmul float %2911, %2912
  %2914 = load float, ptr %87, align 4, !tbaa !14
  %2915 = fmul float %2913, %2914
  store float %2915, ptr %49, align 4, !tbaa !14
  %2916 = load float, ptr %70, align 4, !tbaa !14
  %2917 = load float, ptr %92, align 4, !tbaa !14
  %2918 = fmul float %2916, %2917
  %2919 = load float, ptr %88, align 4, !tbaa !14
  %2920 = fmul float %2918, %2919
  store float %2920, ptr %50, align 4, !tbaa !14
  %2921 = load float, ptr %49, align 4, !tbaa !14
  %2922 = load float, ptr %50, align 4, !tbaa !14
  %2923 = fcmp oge float %2921, %2922
  br i1 %2923, label %2924, label %2926

2924:                                             ; preds = %2901
  %2925 = load float, ptr %49, align 4, !tbaa !14
  br label %2928

2926:                                             ; preds = %2901
  %2927 = load float, ptr %50, align 4, !tbaa !14
  br label %2928

2928:                                             ; preds = %2926, %2924
  %2929 = phi float [ %2925, %2924 ], [ %2927, %2926 ]
  store float %2929, ptr %49, align 4, !tbaa !14
  %2930 = load float, ptr %49, align 4, !tbaa !14
  %2931 = load float, ptr %99, align 4, !tbaa !14
  %2932 = fcmp oge float %2930, %2931
  br i1 %2932, label %2933, label %2935

2933:                                             ; preds = %2928
  %2934 = load float, ptr %49, align 4, !tbaa !14
  br label %2937

2935:                                             ; preds = %2928
  %2936 = load float, ptr %99, align 4, !tbaa !14
  br label %2937

2937:                                             ; preds = %2935, %2933
  %2938 = phi float [ %2934, %2933 ], [ %2936, %2935 ]
  %2939 = fpext float %2938 to double
  %2940 = fptrunc double %2939 to float
  store float %2940, ptr %75, align 4, !tbaa !14
  %2941 = load i64, ptr %64, align 8, !tbaa !9
  %2942 = sub nsw i64 %2941, 1
  store i64 %2942, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %66, align 8, !tbaa !9
  br label %2943

2943:                                             ; preds = %3034, %2937
  %2944 = load i64, ptr %66, align 8, !tbaa !9
  %2945 = load i64, ptr %44, align 8, !tbaa !9
  %2946 = icmp sle i64 %2944, %2945
  br i1 %2946, label %2947, label %3037

2947:                                             ; preds = %2943
  %2948 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %2948, ptr %45, align 8, !tbaa !9
  %2949 = load i64, ptr %66, align 8, !tbaa !9
  %2950 = load i64, ptr %64, align 8, !tbaa !9
  %2951 = load i64, ptr %38, align 8, !tbaa !9
  %2952 = mul nsw i64 %2950, %2951
  %2953 = add nsw i64 %2949, %2952
  store i64 %2953, ptr %46, align 8, !tbaa !9
  %2954 = load float, ptr %93, align 4, !tbaa !14
  %2955 = load ptr, ptr %23, align 8, !tbaa !5
  %2956 = load i64, ptr %46, align 8, !tbaa !9
  %2957 = getelementptr inbounds %struct.complex, ptr %2955, i64 %2956
  %2958 = getelementptr inbounds %struct.complex, ptr %2957, i32 0, i32 0
  %2959 = load float, ptr %2958, align 4, !tbaa !16
  %2960 = fmul float %2954, %2959
  %2961 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 0
  store float %2960, ptr %2961, align 4, !tbaa !16
  %2962 = load float, ptr %93, align 4, !tbaa !14
  %2963 = load ptr, ptr %23, align 8, !tbaa !5
  %2964 = load i64, ptr %46, align 8, !tbaa !9
  %2965 = getelementptr inbounds %struct.complex, ptr %2963, i64 %2964
  %2966 = getelementptr inbounds %struct.complex, ptr %2965, i32 0, i32 1
  %2967 = load float, ptr %2966, align 4, !tbaa !20
  %2968 = fmul float %2962, %2967
  %2969 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 1
  store float %2968, ptr %2969, align 4, !tbaa !20
  %2970 = load i64, ptr %66, align 8, !tbaa !9
  %2971 = load i64, ptr %64, align 8, !tbaa !9
  %2972 = load i64, ptr %36, align 8, !tbaa !9
  %2973 = mul nsw i64 %2971, %2972
  %2974 = add nsw i64 %2970, %2973
  store i64 %2974, ptr %47, align 8, !tbaa !9
  %2975 = getelementptr inbounds %struct.complex, ptr %94, i32 0, i32 0
  %2976 = load float, ptr %2975, align 4, !tbaa !16
  %2977 = load ptr, ptr %25, align 8, !tbaa !5
  %2978 = load i64, ptr %47, align 8, !tbaa !9
  %2979 = getelementptr inbounds %struct.complex, ptr %2977, i64 %2978
  %2980 = getelementptr inbounds %struct.complex, ptr %2979, i32 0, i32 0
  %2981 = load float, ptr %2980, align 4, !tbaa !16
  %2982 = getelementptr inbounds %struct.complex, ptr %94, i32 0, i32 1
  %2983 = load float, ptr %2982, align 4, !tbaa !20
  %2984 = load ptr, ptr %25, align 8, !tbaa !5
  %2985 = load i64, ptr %47, align 8, !tbaa !9
  %2986 = getelementptr inbounds %struct.complex, ptr %2984, i64 %2985
  %2987 = getelementptr inbounds %struct.complex, ptr %2986, i32 0, i32 1
  %2988 = load float, ptr %2987, align 4, !tbaa !20
  %2989 = fmul float %2983, %2988
  %2990 = fneg float %2989
  %2991 = call float @llvm.fmuladd.f32(float %2976, float %2981, float %2990)
  %2992 = getelementptr inbounds %struct.complex, ptr %57, i32 0, i32 0
  store float %2991, ptr %2992, align 4, !tbaa !16
  %2993 = getelementptr inbounds %struct.complex, ptr %94, i32 0, i32 0
  %2994 = load float, ptr %2993, align 4, !tbaa !16
  %2995 = load ptr, ptr %25, align 8, !tbaa !5
  %2996 = load i64, ptr %47, align 8, !tbaa !9
  %2997 = getelementptr inbounds %struct.complex, ptr %2995, i64 %2996
  %2998 = getelementptr inbounds %struct.complex, ptr %2997, i32 0, i32 1
  %2999 = load float, ptr %2998, align 4, !tbaa !20
  %3000 = getelementptr inbounds %struct.complex, ptr %94, i32 0, i32 1
  %3001 = load float, ptr %3000, align 4, !tbaa !20
  %3002 = load ptr, ptr %25, align 8, !tbaa !5
  %3003 = load i64, ptr %47, align 8, !tbaa !9
  %3004 = getelementptr inbounds %struct.complex, ptr %3002, i64 %3003
  %3005 = getelementptr inbounds %struct.complex, ptr %3004, i32 0, i32 0
  %3006 = load float, ptr %3005, align 4, !tbaa !16
  %3007 = fmul float %3001, %3006
  %3008 = call float @llvm.fmuladd.f32(float %2994, float %2999, float %3007)
  %3009 = getelementptr inbounds %struct.complex, ptr %57, i32 0, i32 1
  store float %3008, ptr %3009, align 4, !tbaa !20
  %3010 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 0
  %3011 = load float, ptr %3010, align 4, !tbaa !16
  %3012 = getelementptr inbounds %struct.complex, ptr %57, i32 0, i32 0
  %3013 = load float, ptr %3012, align 4, !tbaa !16
  %3014 = fsub float %3011, %3013
  %3015 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  store float %3014, ptr %3015, align 4, !tbaa !16
  %3016 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 1
  %3017 = load float, ptr %3016, align 4, !tbaa !20
  %3018 = getelementptr inbounds %struct.complex, ptr %57, i32 0, i32 1
  %3019 = load float, ptr %3018, align 4, !tbaa !20
  %3020 = fsub float %3017, %3019
  %3021 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  store float %3020, ptr %3021, align 4, !tbaa !20
  %3022 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  %3023 = load float, ptr %3022, align 4, !tbaa !16
  %3024 = load ptr, ptr %33, align 8, !tbaa !5
  %3025 = load i64, ptr %45, align 8, !tbaa !9
  %3026 = getelementptr inbounds %struct.complex, ptr %3024, i64 %3025
  %3027 = getelementptr inbounds %struct.complex, ptr %3026, i32 0, i32 0
  store float %3023, ptr %3027, align 4, !tbaa !16
  %3028 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  %3029 = load float, ptr %3028, align 4, !tbaa !20
  %3030 = load ptr, ptr %33, align 8, !tbaa !5
  %3031 = load i64, ptr %45, align 8, !tbaa !9
  %3032 = getelementptr inbounds %struct.complex, ptr %3030, i64 %3031
  %3033 = getelementptr inbounds %struct.complex, ptr %3032, i32 0, i32 1
  store float %3029, ptr %3033, align 4, !tbaa !20
  br label %3034

3034:                                             ; preds = %2947
  %3035 = load i64, ptr %66, align 8, !tbaa !9
  %3036 = add nsw i64 %3035, 1
  store i64 %3036, ptr %66, align 8, !tbaa !9
  br label %2943, !llvm.loop !33

3037:                                             ; preds = %2943
  %3038 = load i64, ptr %64, align 8, !tbaa !9
  store i64 %3038, ptr %44, align 8, !tbaa !9
  %3039 = load ptr, ptr %33, align 8, !tbaa !5
  %3040 = load i64, ptr %44, align 8, !tbaa !9
  %3041 = getelementptr inbounds %struct.complex, ptr %3039, i64 %3040
  %3042 = getelementptr inbounds %struct.complex, ptr %3041, i32 0, i32 0
  store float 1.000000e+00, ptr %3042, align 4, !tbaa !16
  %3043 = load ptr, ptr %33, align 8, !tbaa !5
  %3044 = load i64, ptr %44, align 8, !tbaa !9
  %3045 = getelementptr inbounds %struct.complex, ptr %3043, i64 %3044
  %3046 = getelementptr inbounds %struct.complex, ptr %3045, i32 0, i32 1
  store float 0.000000e+00, ptr %3046, align 4, !tbaa !20
  %3047 = load i64, ptr %64, align 8, !tbaa !9
  %3048 = sub nsw i64 %3047, 1
  store i64 %3048, ptr %61, align 8, !tbaa !9
  br label %3049

3049:                                             ; preds = %3698, %3037
  %3050 = load i64, ptr %61, align 8, !tbaa !9
  %3051 = icmp sge i64 %3050, 1
  br i1 %3051, label %3052, label %3701

3052:                                             ; preds = %3049
  %3053 = load i64, ptr %61, align 8, !tbaa !9
  %3054 = load i64, ptr %61, align 8, !tbaa !9
  %3055 = load i64, ptr %38, align 8, !tbaa !9
  %3056 = mul nsw i64 %3054, %3055
  %3057 = add nsw i64 %3053, %3056
  store i64 %3057, ptr %44, align 8, !tbaa !9
  %3058 = load float, ptr %93, align 4, !tbaa !14
  %3059 = load ptr, ptr %23, align 8, !tbaa !5
  %3060 = load i64, ptr %44, align 8, !tbaa !9
  %3061 = getelementptr inbounds %struct.complex, ptr %3059, i64 %3060
  %3062 = getelementptr inbounds %struct.complex, ptr %3061, i32 0, i32 0
  %3063 = load float, ptr %3062, align 4, !tbaa !16
  %3064 = fmul float %3058, %3063
  %3065 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 0
  store float %3064, ptr %3065, align 4, !tbaa !16
  %3066 = load float, ptr %93, align 4, !tbaa !14
  %3067 = load ptr, ptr %23, align 8, !tbaa !5
  %3068 = load i64, ptr %44, align 8, !tbaa !9
  %3069 = getelementptr inbounds %struct.complex, ptr %3067, i64 %3068
  %3070 = getelementptr inbounds %struct.complex, ptr %3069, i32 0, i32 1
  %3071 = load float, ptr %3070, align 4, !tbaa !20
  %3072 = fmul float %3066, %3071
  %3073 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 1
  store float %3072, ptr %3073, align 4, !tbaa !20
  %3074 = load i64, ptr %61, align 8, !tbaa !9
  %3075 = load i64, ptr %61, align 8, !tbaa !9
  %3076 = load i64, ptr %36, align 8, !tbaa !9
  %3077 = mul nsw i64 %3075, %3076
  %3078 = add nsw i64 %3074, %3077
  store i64 %3078, ptr %45, align 8, !tbaa !9
  %3079 = getelementptr inbounds %struct.complex, ptr %94, i32 0, i32 0
  %3080 = load float, ptr %3079, align 4, !tbaa !16
  %3081 = load ptr, ptr %25, align 8, !tbaa !5
  %3082 = load i64, ptr %45, align 8, !tbaa !9
  %3083 = getelementptr inbounds %struct.complex, ptr %3081, i64 %3082
  %3084 = getelementptr inbounds %struct.complex, ptr %3083, i32 0, i32 0
  %3085 = load float, ptr %3084, align 4, !tbaa !16
  %3086 = getelementptr inbounds %struct.complex, ptr %94, i32 0, i32 1
  %3087 = load float, ptr %3086, align 4, !tbaa !20
  %3088 = load ptr, ptr %25, align 8, !tbaa !5
  %3089 = load i64, ptr %45, align 8, !tbaa !9
  %3090 = getelementptr inbounds %struct.complex, ptr %3088, i64 %3089
  %3091 = getelementptr inbounds %struct.complex, ptr %3090, i32 0, i32 1
  %3092 = load float, ptr %3091, align 4, !tbaa !20
  %3093 = fmul float %3087, %3092
  %3094 = fneg float %3093
  %3095 = call float @llvm.fmuladd.f32(float %3080, float %3085, float %3094)
  %3096 = getelementptr inbounds %struct.complex, ptr %57, i32 0, i32 0
  store float %3095, ptr %3096, align 4, !tbaa !16
  %3097 = getelementptr inbounds %struct.complex, ptr %94, i32 0, i32 0
  %3098 = load float, ptr %3097, align 4, !tbaa !16
  %3099 = load ptr, ptr %25, align 8, !tbaa !5
  %3100 = load i64, ptr %45, align 8, !tbaa !9
  %3101 = getelementptr inbounds %struct.complex, ptr %3099, i64 %3100
  %3102 = getelementptr inbounds %struct.complex, ptr %3101, i32 0, i32 1
  %3103 = load float, ptr %3102, align 4, !tbaa !20
  %3104 = getelementptr inbounds %struct.complex, ptr %94, i32 0, i32 1
  %3105 = load float, ptr %3104, align 4, !tbaa !20
  %3106 = load ptr, ptr %25, align 8, !tbaa !5
  %3107 = load i64, ptr %45, align 8, !tbaa !9
  %3108 = getelementptr inbounds %struct.complex, ptr %3106, i64 %3107
  %3109 = getelementptr inbounds %struct.complex, ptr %3108, i32 0, i32 0
  %3110 = load float, ptr %3109, align 4, !tbaa !16
  %3111 = fmul float %3105, %3110
  %3112 = call float @llvm.fmuladd.f32(float %3098, float %3103, float %3111)
  %3113 = getelementptr inbounds %struct.complex, ptr %57, i32 0, i32 1
  store float %3112, ptr %3113, align 4, !tbaa !20
  %3114 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 0
  %3115 = load float, ptr %3114, align 4, !tbaa !16
  %3116 = getelementptr inbounds %struct.complex, ptr %57, i32 0, i32 0
  %3117 = load float, ptr %3116, align 4, !tbaa !16
  %3118 = fsub float %3115, %3117
  %3119 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  store float %3118, ptr %3119, align 4, !tbaa !16
  %3120 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 1
  %3121 = load float, ptr %3120, align 4, !tbaa !20
  %3122 = getelementptr inbounds %struct.complex, ptr %57, i32 0, i32 1
  %3123 = load float, ptr %3122, align 4, !tbaa !20
  %3124 = fsub float %3121, %3123
  %3125 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  store float %3124, ptr %3125, align 4, !tbaa !20
  %3126 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  %3127 = load float, ptr %3126, align 4, !tbaa !16
  %3128 = getelementptr inbounds %struct.complex, ptr %59, i32 0, i32 0
  store float %3127, ptr %3128, align 4, !tbaa !16
  %3129 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  %3130 = load float, ptr %3129, align 4, !tbaa !20
  %3131 = getelementptr inbounds %struct.complex, ptr %59, i32 0, i32 1
  store float %3130, ptr %3131, align 4, !tbaa !20
  %3132 = getelementptr inbounds %struct.complex, ptr %59, i32 0, i32 0
  %3133 = load float, ptr %3132, align 4, !tbaa !16
  store float %3133, ptr %49, align 4, !tbaa !14
  %3134 = load float, ptr %49, align 4, !tbaa !14
  %3135 = fcmp oge float %3134, 0.000000e+00
  br i1 %3135, label %3136, label %3138

3136:                                             ; preds = %3052
  %3137 = load float, ptr %49, align 4, !tbaa !14
  br label %3141

3138:                                             ; preds = %3052
  %3139 = load float, ptr %49, align 4, !tbaa !14
  %3140 = fneg float %3139
  br label %3141

3141:                                             ; preds = %3138, %3136
  %3142 = phi float [ %3137, %3136 ], [ %3140, %3138 ]
  %3143 = fpext float %3142 to double
  %3144 = call double @r_imag(ptr noundef %59)
  %3145 = fptrunc double %3144 to float
  store float %3145, ptr %50, align 4, !tbaa !14
  %3146 = load float, ptr %50, align 4, !tbaa !14
  %3147 = fcmp oge float %3146, 0.000000e+00
  br i1 %3147, label %3148, label %3150

3148:                                             ; preds = %3141
  %3149 = load float, ptr %50, align 4, !tbaa !14
  br label %3153

3150:                                             ; preds = %3141
  %3151 = load float, ptr %50, align 4, !tbaa !14
  %3152 = fneg float %3151
  br label %3153

3153:                                             ; preds = %3150, %3148
  %3154 = phi float [ %3149, %3148 ], [ %3152, %3150 ]
  %3155 = fpext float %3154 to double
  %3156 = fadd double %3143, %3155
  %3157 = load float, ptr %75, align 4, !tbaa !14
  %3158 = fpext float %3157 to double
  %3159 = fcmp ole double %3156, %3158
  br i1 %3159, label %3160, label %3170

3160:                                             ; preds = %3153
  %3161 = load float, ptr %75, align 4, !tbaa !14
  %3162 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  store float %3161, ptr %3162, align 4, !tbaa !16
  %3163 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  store float 0.000000e+00, ptr %3163, align 4, !tbaa !20
  %3164 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  %3165 = load float, ptr %3164, align 4, !tbaa !16
  %3166 = getelementptr inbounds %struct.complex, ptr %59, i32 0, i32 0
  store float %3165, ptr %3166, align 4, !tbaa !16
  %3167 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  %3168 = load float, ptr %3167, align 4, !tbaa !20
  %3169 = getelementptr inbounds %struct.complex, ptr %59, i32 0, i32 1
  store float %3168, ptr %3169, align 4, !tbaa !20
  br label %3170

3170:                                             ; preds = %3160, %3153
  %3171 = getelementptr inbounds %struct.complex, ptr %59, i32 0, i32 0
  %3172 = load float, ptr %3171, align 4, !tbaa !16
  store float %3172, ptr %49, align 4, !tbaa !14
  %3173 = load float, ptr %49, align 4, !tbaa !14
  %3174 = fcmp oge float %3173, 0.000000e+00
  br i1 %3174, label %3175, label %3177

3175:                                             ; preds = %3170
  %3176 = load float, ptr %49, align 4, !tbaa !14
  br label %3180

3177:                                             ; preds = %3170
  %3178 = load float, ptr %49, align 4, !tbaa !14
  %3179 = fneg float %3178
  br label %3180

3180:                                             ; preds = %3177, %3175
  %3181 = phi float [ %3176, %3175 ], [ %3179, %3177 ]
  %3182 = fpext float %3181 to double
  %3183 = call double @r_imag(ptr noundef %59)
  %3184 = fptrunc double %3183 to float
  store float %3184, ptr %50, align 4, !tbaa !14
  %3185 = load float, ptr %50, align 4, !tbaa !14
  %3186 = fcmp oge float %3185, 0.000000e+00
  br i1 %3186, label %3187, label %3189

3187:                                             ; preds = %3180
  %3188 = load float, ptr %50, align 4, !tbaa !14
  br label %3192

3189:                                             ; preds = %3180
  %3190 = load float, ptr %50, align 4, !tbaa !14
  %3191 = fneg float %3190
  br label %3192

3192:                                             ; preds = %3189, %3187
  %3193 = phi float [ %3188, %3187 ], [ %3191, %3189 ]
  %3194 = fpext float %3193 to double
  %3195 = fadd double %3182, %3194
  %3196 = fcmp olt double %3195, 1.000000e+00
  br i1 %3196, label %3197, label %3335

3197:                                             ; preds = %3192
  %3198 = load i64, ptr %61, align 8, !tbaa !9
  store i64 %3198, ptr %44, align 8, !tbaa !9
  %3199 = load ptr, ptr %33, align 8, !tbaa !5
  %3200 = load i64, ptr %44, align 8, !tbaa !9
  %3201 = getelementptr inbounds %struct.complex, ptr %3199, i64 %3200
  %3202 = getelementptr inbounds %struct.complex, ptr %3201, i32 0, i32 0
  %3203 = load float, ptr %3202, align 4, !tbaa !16
  store float %3203, ptr %49, align 4, !tbaa !14
  %3204 = load float, ptr %49, align 4, !tbaa !14
  %3205 = fcmp oge float %3204, 0.000000e+00
  br i1 %3205, label %3206, label %3208

3206:                                             ; preds = %3197
  %3207 = load float, ptr %49, align 4, !tbaa !14
  br label %3211

3208:                                             ; preds = %3197
  %3209 = load float, ptr %49, align 4, !tbaa !14
  %3210 = fneg float %3209
  br label %3211

3211:                                             ; preds = %3208, %3206
  %3212 = phi float [ %3207, %3206 ], [ %3210, %3208 ]
  %3213 = fpext float %3212 to double
  %3214 = load ptr, ptr %33, align 8, !tbaa !5
  %3215 = load i64, ptr %61, align 8, !tbaa !9
  %3216 = getelementptr inbounds %struct.complex, ptr %3214, i64 %3215
  %3217 = call double @r_imag(ptr noundef %3216)
  %3218 = fptrunc double %3217 to float
  store float %3218, ptr %50, align 4, !tbaa !14
  %3219 = load float, ptr %50, align 4, !tbaa !14
  %3220 = fcmp oge float %3219, 0.000000e+00
  br i1 %3220, label %3221, label %3223

3221:                                             ; preds = %3211
  %3222 = load float, ptr %50, align 4, !tbaa !14
  br label %3226

3223:                                             ; preds = %3211
  %3224 = load float, ptr %50, align 4, !tbaa !14
  %3225 = fneg float %3224
  br label %3226

3226:                                             ; preds = %3223, %3221
  %3227 = phi float [ %3222, %3221 ], [ %3225, %3223 ]
  %3228 = fpext float %3227 to double
  %3229 = fadd double %3213, %3228
  %3230 = load float, ptr %100, align 4, !tbaa !14
  %3231 = fpext float %3230 to double
  %3232 = getelementptr inbounds %struct.complex, ptr %59, i32 0, i32 0
  %3233 = load float, ptr %3232, align 4, !tbaa !16
  store float %3233, ptr %51, align 4, !tbaa !14
  %3234 = load float, ptr %51, align 4, !tbaa !14
  %3235 = fcmp oge float %3234, 0.000000e+00
  br i1 %3235, label %3236, label %3238

3236:                                             ; preds = %3226
  %3237 = load float, ptr %51, align 4, !tbaa !14
  br label %3241

3238:                                             ; preds = %3226
  %3239 = load float, ptr %51, align 4, !tbaa !14
  %3240 = fneg float %3239
  br label %3241

3241:                                             ; preds = %3238, %3236
  %3242 = phi float [ %3237, %3236 ], [ %3240, %3238 ]
  %3243 = fpext float %3242 to double
  %3244 = call double @r_imag(ptr noundef %59)
  %3245 = fptrunc double %3244 to float
  store float %3245, ptr %52, align 4, !tbaa !14
  %3246 = load float, ptr %52, align 4, !tbaa !14
  %3247 = fcmp oge float %3246, 0.000000e+00
  br i1 %3247, label %3248, label %3250

3248:                                             ; preds = %3241
  %3249 = load float, ptr %52, align 4, !tbaa !14
  br label %3253

3250:                                             ; preds = %3241
  %3251 = load float, ptr %52, align 4, !tbaa !14
  %3252 = fneg float %3251
  br label %3253

3253:                                             ; preds = %3250, %3248
  %3254 = phi float [ %3249, %3248 ], [ %3252, %3250 ]
  %3255 = fpext float %3254 to double
  %3256 = fadd double %3243, %3255
  %3257 = fmul double %3231, %3256
  %3258 = fcmp oge double %3229, %3257
  br i1 %3258, label %3259, label %3334

3259:                                             ; preds = %3253
  %3260 = load i64, ptr %61, align 8, !tbaa !9
  store i64 %3260, ptr %44, align 8, !tbaa !9
  %3261 = load ptr, ptr %33, align 8, !tbaa !5
  %3262 = load i64, ptr %44, align 8, !tbaa !9
  %3263 = getelementptr inbounds %struct.complex, ptr %3261, i64 %3262
  %3264 = getelementptr inbounds %struct.complex, ptr %3263, i32 0, i32 0
  %3265 = load float, ptr %3264, align 4, !tbaa !16
  store float %3265, ptr %49, align 4, !tbaa !14
  %3266 = load float, ptr %49, align 4, !tbaa !14
  %3267 = fcmp oge float %3266, 0.000000e+00
  br i1 %3267, label %3268, label %3270

3268:                                             ; preds = %3259
  %3269 = load float, ptr %49, align 4, !tbaa !14
  br label %3273

3270:                                             ; preds = %3259
  %3271 = load float, ptr %49, align 4, !tbaa !14
  %3272 = fneg float %3271
  br label %3273

3273:                                             ; preds = %3270, %3268
  %3274 = phi float [ %3269, %3268 ], [ %3272, %3270 ]
  %3275 = fpext float %3274 to double
  %3276 = load ptr, ptr %33, align 8, !tbaa !5
  %3277 = load i64, ptr %61, align 8, !tbaa !9
  %3278 = getelementptr inbounds %struct.complex, ptr %3276, i64 %3277
  %3279 = call double @r_imag(ptr noundef %3278)
  %3280 = fptrunc double %3279 to float
  store float %3280, ptr %50, align 4, !tbaa !14
  %3281 = load float, ptr %50, align 4, !tbaa !14
  %3282 = fcmp oge float %3281, 0.000000e+00
  br i1 %3282, label %3283, label %3285

3283:                                             ; preds = %3273
  %3284 = load float, ptr %50, align 4, !tbaa !14
  br label %3288

3285:                                             ; preds = %3273
  %3286 = load float, ptr %50, align 4, !tbaa !14
  %3287 = fneg float %3286
  br label %3288

3288:                                             ; preds = %3285, %3283
  %3289 = phi float [ %3284, %3283 ], [ %3287, %3285 ]
  %3290 = fpext float %3289 to double
  %3291 = fadd double %3275, %3290
  %3292 = fdiv double 1.000000e+00, %3291
  %3293 = fptrunc double %3292 to float
  store float %3293, ptr %77, align 4, !tbaa !14
  %3294 = load i64, ptr %64, align 8, !tbaa !9
  store i64 %3294, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %66, align 8, !tbaa !9
  br label %3295

3295:                                             ; preds = %3330, %3288
  %3296 = load i64, ptr %66, align 8, !tbaa !9
  %3297 = load i64, ptr %44, align 8, !tbaa !9
  %3298 = icmp sle i64 %3296, %3297
  br i1 %3298, label %3299, label %3333

3299:                                             ; preds = %3295
  %3300 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %3300, ptr %45, align 8, !tbaa !9
  %3301 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %3301, ptr %46, align 8, !tbaa !9
  %3302 = load float, ptr %77, align 4, !tbaa !14
  %3303 = load ptr, ptr %33, align 8, !tbaa !5
  %3304 = load i64, ptr %46, align 8, !tbaa !9
  %3305 = getelementptr inbounds %struct.complex, ptr %3303, i64 %3304
  %3306 = getelementptr inbounds %struct.complex, ptr %3305, i32 0, i32 0
  %3307 = load float, ptr %3306, align 4, !tbaa !16
  %3308 = fmul float %3302, %3307
  %3309 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  store float %3308, ptr %3309, align 4, !tbaa !16
  %3310 = load float, ptr %77, align 4, !tbaa !14
  %3311 = load ptr, ptr %33, align 8, !tbaa !5
  %3312 = load i64, ptr %46, align 8, !tbaa !9
  %3313 = getelementptr inbounds %struct.complex, ptr %3311, i64 %3312
  %3314 = getelementptr inbounds %struct.complex, ptr %3313, i32 0, i32 1
  %3315 = load float, ptr %3314, align 4, !tbaa !20
  %3316 = fmul float %3310, %3315
  %3317 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  store float %3316, ptr %3317, align 4, !tbaa !20
  %3318 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  %3319 = load float, ptr %3318, align 4, !tbaa !16
  %3320 = load ptr, ptr %33, align 8, !tbaa !5
  %3321 = load i64, ptr %45, align 8, !tbaa !9
  %3322 = getelementptr inbounds %struct.complex, ptr %3320, i64 %3321
  %3323 = getelementptr inbounds %struct.complex, ptr %3322, i32 0, i32 0
  store float %3319, ptr %3323, align 4, !tbaa !16
  %3324 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  %3325 = load float, ptr %3324, align 4, !tbaa !20
  %3326 = load ptr, ptr %33, align 8, !tbaa !5
  %3327 = load i64, ptr %45, align 8, !tbaa !9
  %3328 = getelementptr inbounds %struct.complex, ptr %3326, i64 %3327
  %3329 = getelementptr inbounds %struct.complex, ptr %3328, i32 0, i32 1
  store float %3325, ptr %3329, align 4, !tbaa !20
  br label %3330

3330:                                             ; preds = %3299
  %3331 = load i64, ptr %66, align 8, !tbaa !9
  %3332 = add nsw i64 %3331, 1
  store i64 %3332, ptr %66, align 8, !tbaa !9
  br label %3295, !llvm.loop !34

3333:                                             ; preds = %3295
  br label %3334

3334:                                             ; preds = %3333, %3253
  br label %3335

3335:                                             ; preds = %3334, %3192
  %3336 = load i64, ptr %61, align 8, !tbaa !9
  store i64 %3336, ptr %44, align 8, !tbaa !9
  %3337 = load i64, ptr %61, align 8, !tbaa !9
  store i64 %3337, ptr %45, align 8, !tbaa !9
  %3338 = load ptr, ptr %33, align 8, !tbaa !5
  %3339 = load i64, ptr %45, align 8, !tbaa !9
  %3340 = getelementptr inbounds %struct.complex, ptr %3338, i64 %3339
  %3341 = getelementptr inbounds %struct.complex, ptr %3340, i32 0, i32 0
  %3342 = load float, ptr %3341, align 4, !tbaa !16
  %3343 = fneg float %3342
  %3344 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 0
  store float %3343, ptr %3344, align 4, !tbaa !16
  %3345 = load ptr, ptr %33, align 8, !tbaa !5
  %3346 = load i64, ptr %45, align 8, !tbaa !9
  %3347 = getelementptr inbounds %struct.complex, ptr %3345, i64 %3346
  %3348 = getelementptr inbounds %struct.complex, ptr %3347, i32 0, i32 1
  %3349 = load float, ptr %3348, align 4, !tbaa !20
  %3350 = fneg float %3349
  %3351 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 1
  store float %3350, ptr %3351, align 4, !tbaa !20
  call void @cladiv_(ptr noundef %55, ptr noundef %56, ptr noundef %59)
  %3352 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  %3353 = load float, ptr %3352, align 4, !tbaa !16
  %3354 = load ptr, ptr %33, align 8, !tbaa !5
  %3355 = load i64, ptr %44, align 8, !tbaa !9
  %3356 = getelementptr inbounds %struct.complex, ptr %3354, i64 %3355
  %3357 = getelementptr inbounds %struct.complex, ptr %3356, i32 0, i32 0
  store float %3353, ptr %3357, align 4, !tbaa !16
  %3358 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  %3359 = load float, ptr %3358, align 4, !tbaa !20
  %3360 = load ptr, ptr %33, align 8, !tbaa !5
  %3361 = load i64, ptr %44, align 8, !tbaa !9
  %3362 = getelementptr inbounds %struct.complex, ptr %3360, i64 %3361
  %3363 = getelementptr inbounds %struct.complex, ptr %3362, i32 0, i32 1
  store float %3359, ptr %3363, align 4, !tbaa !20
  %3364 = load i64, ptr %61, align 8, !tbaa !9
  %3365 = icmp sgt i64 %3364, 1
  br i1 %3365, label %3366, label %3697

3366:                                             ; preds = %3335
  %3367 = load i64, ptr %61, align 8, !tbaa !9
  store i64 %3367, ptr %44, align 8, !tbaa !9
  %3368 = load ptr, ptr %33, align 8, !tbaa !5
  %3369 = load i64, ptr %44, align 8, !tbaa !9
  %3370 = getelementptr inbounds %struct.complex, ptr %3368, i64 %3369
  %3371 = getelementptr inbounds %struct.complex, ptr %3370, i32 0, i32 0
  %3372 = load float, ptr %3371, align 4, !tbaa !16
  store float %3372, ptr %49, align 4, !tbaa !14
  %3373 = load float, ptr %49, align 4, !tbaa !14
  %3374 = fcmp oge float %3373, 0.000000e+00
  br i1 %3374, label %3375, label %3377

3375:                                             ; preds = %3366
  %3376 = load float, ptr %49, align 4, !tbaa !14
  br label %3380

3377:                                             ; preds = %3366
  %3378 = load float, ptr %49, align 4, !tbaa !14
  %3379 = fneg float %3378
  br label %3380

3380:                                             ; preds = %3377, %3375
  %3381 = phi float [ %3376, %3375 ], [ %3379, %3377 ]
  %3382 = fpext float %3381 to double
  %3383 = load ptr, ptr %33, align 8, !tbaa !5
  %3384 = load i64, ptr %61, align 8, !tbaa !9
  %3385 = getelementptr inbounds %struct.complex, ptr %3383, i64 %3384
  %3386 = call double @r_imag(ptr noundef %3385)
  %3387 = fptrunc double %3386 to float
  store float %3387, ptr %50, align 4, !tbaa !14
  %3388 = load float, ptr %50, align 4, !tbaa !14
  %3389 = fcmp oge float %3388, 0.000000e+00
  br i1 %3389, label %3390, label %3392

3390:                                             ; preds = %3380
  %3391 = load float, ptr %50, align 4, !tbaa !14
  br label %3395

3392:                                             ; preds = %3380
  %3393 = load float, ptr %50, align 4, !tbaa !14
  %3394 = fneg float %3393
  br label %3395

3395:                                             ; preds = %3392, %3390
  %3396 = phi float [ %3391, %3390 ], [ %3394, %3392 ]
  %3397 = fpext float %3396 to double
  %3398 = fadd double %3382, %3397
  %3399 = fcmp ogt double %3398, 1.000000e+00
  br i1 %3399, label %3400, label %3496

3400:                                             ; preds = %3395
  %3401 = load i64, ptr %61, align 8, !tbaa !9
  store i64 %3401, ptr %44, align 8, !tbaa !9
  %3402 = load ptr, ptr %33, align 8, !tbaa !5
  %3403 = load i64, ptr %44, align 8, !tbaa !9
  %3404 = getelementptr inbounds %struct.complex, ptr %3402, i64 %3403
  %3405 = getelementptr inbounds %struct.complex, ptr %3404, i32 0, i32 0
  %3406 = load float, ptr %3405, align 4, !tbaa !16
  store float %3406, ptr %49, align 4, !tbaa !14
  %3407 = load float, ptr %49, align 4, !tbaa !14
  %3408 = fcmp oge float %3407, 0.000000e+00
  br i1 %3408, label %3409, label %3411

3409:                                             ; preds = %3400
  %3410 = load float, ptr %49, align 4, !tbaa !14
  br label %3414

3411:                                             ; preds = %3400
  %3412 = load float, ptr %49, align 4, !tbaa !14
  %3413 = fneg float %3412
  br label %3414

3414:                                             ; preds = %3411, %3409
  %3415 = phi float [ %3410, %3409 ], [ %3413, %3411 ]
  %3416 = fpext float %3415 to double
  %3417 = load ptr, ptr %33, align 8, !tbaa !5
  %3418 = load i64, ptr %61, align 8, !tbaa !9
  %3419 = getelementptr inbounds %struct.complex, ptr %3417, i64 %3418
  %3420 = call double @r_imag(ptr noundef %3419)
  %3421 = fptrunc double %3420 to float
  store float %3421, ptr %50, align 4, !tbaa !14
  %3422 = load float, ptr %50, align 4, !tbaa !14
  %3423 = fcmp oge float %3422, 0.000000e+00
  br i1 %3423, label %3424, label %3426

3424:                                             ; preds = %3414
  %3425 = load float, ptr %50, align 4, !tbaa !14
  br label %3429

3426:                                             ; preds = %3414
  %3427 = load float, ptr %50, align 4, !tbaa !14
  %3428 = fneg float %3427
  br label %3429

3429:                                             ; preds = %3426, %3424
  %3430 = phi float [ %3425, %3424 ], [ %3428, %3426 ]
  %3431 = fpext float %3430 to double
  %3432 = fadd double %3416, %3431
  %3433 = fdiv double 1.000000e+00, %3432
  %3434 = fptrunc double %3433 to float
  store float %3434, ptr %77, align 4, !tbaa !14
  %3435 = load float, ptr %91, align 4, !tbaa !14
  %3436 = load ptr, ptr %34, align 8, !tbaa !5
  %3437 = load i64, ptr %61, align 8, !tbaa !9
  %3438 = getelementptr inbounds float, ptr %3436, i64 %3437
  %3439 = load float, ptr %3438, align 4, !tbaa !14
  %3440 = load float, ptr %92, align 4, !tbaa !14
  %3441 = load ptr, ptr %34, align 8, !tbaa !5
  %3442 = load ptr, ptr %22, align 8, !tbaa !5
  %3443 = load i64, ptr %3442, align 8, !tbaa !9
  %3444 = load i64, ptr %61, align 8, !tbaa !9
  %3445 = add nsw i64 %3443, %3444
  %3446 = getelementptr inbounds float, ptr %3441, i64 %3445
  %3447 = load float, ptr %3446, align 4, !tbaa !14
  %3448 = fmul float %3440, %3447
  %3449 = call float @llvm.fmuladd.f32(float %3435, float %3439, float %3448)
  %3450 = load float, ptr %100, align 4, !tbaa !14
  %3451 = load float, ptr %77, align 4, !tbaa !14
  %3452 = fmul float %3450, %3451
  %3453 = fcmp oge float %3449, %3452
  br i1 %3453, label %3454, label %3495

3454:                                             ; preds = %3429
  %3455 = load i64, ptr %64, align 8, !tbaa !9
  store i64 %3455, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %66, align 8, !tbaa !9
  br label %3456

3456:                                             ; preds = %3491, %3454
  %3457 = load i64, ptr %66, align 8, !tbaa !9
  %3458 = load i64, ptr %44, align 8, !tbaa !9
  %3459 = icmp sle i64 %3457, %3458
  br i1 %3459, label %3460, label %3494

3460:                                             ; preds = %3456
  %3461 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %3461, ptr %45, align 8, !tbaa !9
  %3462 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %3462, ptr %46, align 8, !tbaa !9
  %3463 = load float, ptr %77, align 4, !tbaa !14
  %3464 = load ptr, ptr %33, align 8, !tbaa !5
  %3465 = load i64, ptr %46, align 8, !tbaa !9
  %3466 = getelementptr inbounds %struct.complex, ptr %3464, i64 %3465
  %3467 = getelementptr inbounds %struct.complex, ptr %3466, i32 0, i32 0
  %3468 = load float, ptr %3467, align 4, !tbaa !16
  %3469 = fmul float %3463, %3468
  %3470 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  store float %3469, ptr %3470, align 4, !tbaa !16
  %3471 = load float, ptr %77, align 4, !tbaa !14
  %3472 = load ptr, ptr %33, align 8, !tbaa !5
  %3473 = load i64, ptr %46, align 8, !tbaa !9
  %3474 = getelementptr inbounds %struct.complex, ptr %3472, i64 %3473
  %3475 = getelementptr inbounds %struct.complex, ptr %3474, i32 0, i32 1
  %3476 = load float, ptr %3475, align 4, !tbaa !20
  %3477 = fmul float %3471, %3476
  %3478 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  store float %3477, ptr %3478, align 4, !tbaa !20
  %3479 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  %3480 = load float, ptr %3479, align 4, !tbaa !16
  %3481 = load ptr, ptr %33, align 8, !tbaa !5
  %3482 = load i64, ptr %45, align 8, !tbaa !9
  %3483 = getelementptr inbounds %struct.complex, ptr %3481, i64 %3482
  %3484 = getelementptr inbounds %struct.complex, ptr %3483, i32 0, i32 0
  store float %3480, ptr %3484, align 4, !tbaa !16
  %3485 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  %3486 = load float, ptr %3485, align 4, !tbaa !20
  %3487 = load ptr, ptr %33, align 8, !tbaa !5
  %3488 = load i64, ptr %45, align 8, !tbaa !9
  %3489 = getelementptr inbounds %struct.complex, ptr %3487, i64 %3488
  %3490 = getelementptr inbounds %struct.complex, ptr %3489, i32 0, i32 1
  store float %3486, ptr %3490, align 4, !tbaa !20
  br label %3491

3491:                                             ; preds = %3460
  %3492 = load i64, ptr %66, align 8, !tbaa !9
  %3493 = add nsw i64 %3492, 1
  store i64 %3493, ptr %66, align 8, !tbaa !9
  br label %3456, !llvm.loop !35

3494:                                             ; preds = %3456
  br label %3495

3495:                                             ; preds = %3494, %3429
  br label %3496

3496:                                             ; preds = %3495, %3395
  %3497 = load i64, ptr %61, align 8, !tbaa !9
  store i64 %3497, ptr %44, align 8, !tbaa !9
  %3498 = load float, ptr %93, align 4, !tbaa !14
  %3499 = load ptr, ptr %33, align 8, !tbaa !5
  %3500 = load i64, ptr %44, align 8, !tbaa !9
  %3501 = getelementptr inbounds %struct.complex, ptr %3499, i64 %3500
  %3502 = getelementptr inbounds %struct.complex, ptr %3501, i32 0, i32 0
  %3503 = load float, ptr %3502, align 4, !tbaa !16
  %3504 = fmul float %3498, %3503
  %3505 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  store float %3504, ptr %3505, align 4, !tbaa !16
  %3506 = load float, ptr %93, align 4, !tbaa !14
  %3507 = load ptr, ptr %33, align 8, !tbaa !5
  %3508 = load i64, ptr %44, align 8, !tbaa !9
  %3509 = getelementptr inbounds %struct.complex, ptr %3507, i64 %3508
  %3510 = getelementptr inbounds %struct.complex, ptr %3509, i32 0, i32 1
  %3511 = load float, ptr %3510, align 4, !tbaa !20
  %3512 = fmul float %3506, %3511
  %3513 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  store float %3512, ptr %3513, align 4, !tbaa !20
  %3514 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  %3515 = load float, ptr %3514, align 4, !tbaa !16
  %3516 = getelementptr inbounds %struct.complex, ptr %62, i32 0, i32 0
  store float %3515, ptr %3516, align 4, !tbaa !16
  %3517 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  %3518 = load float, ptr %3517, align 4, !tbaa !20
  %3519 = getelementptr inbounds %struct.complex, ptr %62, i32 0, i32 1
  store float %3518, ptr %3519, align 4, !tbaa !20
  %3520 = load i64, ptr %61, align 8, !tbaa !9
  store i64 %3520, ptr %44, align 8, !tbaa !9
  %3521 = getelementptr inbounds %struct.complex, ptr %94, i32 0, i32 0
  %3522 = load float, ptr %3521, align 4, !tbaa !16
  %3523 = load ptr, ptr %33, align 8, !tbaa !5
  %3524 = load i64, ptr %44, align 8, !tbaa !9
  %3525 = getelementptr inbounds %struct.complex, ptr %3523, i64 %3524
  %3526 = getelementptr inbounds %struct.complex, ptr %3525, i32 0, i32 0
  %3527 = load float, ptr %3526, align 4, !tbaa !16
  %3528 = getelementptr inbounds %struct.complex, ptr %94, i32 0, i32 1
  %3529 = load float, ptr %3528, align 4, !tbaa !20
  %3530 = load ptr, ptr %33, align 8, !tbaa !5
  %3531 = load i64, ptr %44, align 8, !tbaa !9
  %3532 = getelementptr inbounds %struct.complex, ptr %3530, i64 %3531
  %3533 = getelementptr inbounds %struct.complex, ptr %3532, i32 0, i32 1
  %3534 = load float, ptr %3533, align 4, !tbaa !20
  %3535 = fmul float %3529, %3534
  %3536 = fneg float %3535
  %3537 = call float @llvm.fmuladd.f32(float %3522, float %3527, float %3536)
  %3538 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  store float %3537, ptr %3538, align 4, !tbaa !16
  %3539 = getelementptr inbounds %struct.complex, ptr %94, i32 0, i32 0
  %3540 = load float, ptr %3539, align 4, !tbaa !16
  %3541 = load ptr, ptr %33, align 8, !tbaa !5
  %3542 = load i64, ptr %44, align 8, !tbaa !9
  %3543 = getelementptr inbounds %struct.complex, ptr %3541, i64 %3542
  %3544 = getelementptr inbounds %struct.complex, ptr %3543, i32 0, i32 1
  %3545 = load float, ptr %3544, align 4, !tbaa !20
  %3546 = getelementptr inbounds %struct.complex, ptr %94, i32 0, i32 1
  %3547 = load float, ptr %3546, align 4, !tbaa !20
  %3548 = load ptr, ptr %33, align 8, !tbaa !5
  %3549 = load i64, ptr %44, align 8, !tbaa !9
  %3550 = getelementptr inbounds %struct.complex, ptr %3548, i64 %3549
  %3551 = getelementptr inbounds %struct.complex, ptr %3550, i32 0, i32 0
  %3552 = load float, ptr %3551, align 4, !tbaa !16
  %3553 = fmul float %3547, %3552
  %3554 = call float @llvm.fmuladd.f32(float %3540, float %3545, float %3553)
  %3555 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  store float %3554, ptr %3555, align 4, !tbaa !20
  %3556 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  %3557 = load float, ptr %3556, align 4, !tbaa !16
  %3558 = getelementptr inbounds %struct.complex, ptr %63, i32 0, i32 0
  store float %3557, ptr %3558, align 4, !tbaa !16
  %3559 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  %3560 = load float, ptr %3559, align 4, !tbaa !20
  %3561 = getelementptr inbounds %struct.complex, ptr %63, i32 0, i32 1
  store float %3560, ptr %3561, align 4, !tbaa !20
  %3562 = load i64, ptr %61, align 8, !tbaa !9
  %3563 = sub nsw i64 %3562, 1
  store i64 %3563, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %66, align 8, !tbaa !9
  br label %3564

3564:                                             ; preds = %3693, %3496
  %3565 = load i64, ptr %66, align 8, !tbaa !9
  %3566 = load i64, ptr %44, align 8, !tbaa !9
  %3567 = icmp sle i64 %3565, %3566
  br i1 %3567, label %3568, label %3696

3568:                                             ; preds = %3564
  %3569 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %3569, ptr %45, align 8, !tbaa !9
  %3570 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %3570, ptr %46, align 8, !tbaa !9
  %3571 = load i64, ptr %66, align 8, !tbaa !9
  %3572 = load i64, ptr %61, align 8, !tbaa !9
  %3573 = load i64, ptr %38, align 8, !tbaa !9
  %3574 = mul nsw i64 %3572, %3573
  %3575 = add nsw i64 %3571, %3574
  store i64 %3575, ptr %47, align 8, !tbaa !9
  %3576 = getelementptr inbounds %struct.complex, ptr %62, i32 0, i32 0
  %3577 = load float, ptr %3576, align 4, !tbaa !16
  %3578 = load ptr, ptr %23, align 8, !tbaa !5
  %3579 = load i64, ptr %47, align 8, !tbaa !9
  %3580 = getelementptr inbounds %struct.complex, ptr %3578, i64 %3579
  %3581 = getelementptr inbounds %struct.complex, ptr %3580, i32 0, i32 0
  %3582 = load float, ptr %3581, align 4, !tbaa !16
  %3583 = getelementptr inbounds %struct.complex, ptr %62, i32 0, i32 1
  %3584 = load float, ptr %3583, align 4, !tbaa !20
  %3585 = load ptr, ptr %23, align 8, !tbaa !5
  %3586 = load i64, ptr %47, align 8, !tbaa !9
  %3587 = getelementptr inbounds %struct.complex, ptr %3585, i64 %3586
  %3588 = getelementptr inbounds %struct.complex, ptr %3587, i32 0, i32 1
  %3589 = load float, ptr %3588, align 4, !tbaa !20
  %3590 = fmul float %3584, %3589
  %3591 = fneg float %3590
  %3592 = call float @llvm.fmuladd.f32(float %3577, float %3582, float %3591)
  %3593 = getelementptr inbounds %struct.complex, ptr %57, i32 0, i32 0
  store float %3592, ptr %3593, align 4, !tbaa !16
  %3594 = getelementptr inbounds %struct.complex, ptr %62, i32 0, i32 0
  %3595 = load float, ptr %3594, align 4, !tbaa !16
  %3596 = load ptr, ptr %23, align 8, !tbaa !5
  %3597 = load i64, ptr %47, align 8, !tbaa !9
  %3598 = getelementptr inbounds %struct.complex, ptr %3596, i64 %3597
  %3599 = getelementptr inbounds %struct.complex, ptr %3598, i32 0, i32 1
  %3600 = load float, ptr %3599, align 4, !tbaa !20
  %3601 = getelementptr inbounds %struct.complex, ptr %62, i32 0, i32 1
  %3602 = load float, ptr %3601, align 4, !tbaa !20
  %3603 = load ptr, ptr %23, align 8, !tbaa !5
  %3604 = load i64, ptr %47, align 8, !tbaa !9
  %3605 = getelementptr inbounds %struct.complex, ptr %3603, i64 %3604
  %3606 = getelementptr inbounds %struct.complex, ptr %3605, i32 0, i32 0
  %3607 = load float, ptr %3606, align 4, !tbaa !16
  %3608 = fmul float %3602, %3607
  %3609 = call float @llvm.fmuladd.f32(float %3595, float %3600, float %3608)
  %3610 = getelementptr inbounds %struct.complex, ptr %57, i32 0, i32 1
  store float %3609, ptr %3610, align 4, !tbaa !20
  %3611 = load ptr, ptr %33, align 8, !tbaa !5
  %3612 = load i64, ptr %46, align 8, !tbaa !9
  %3613 = getelementptr inbounds %struct.complex, ptr %3611, i64 %3612
  %3614 = getelementptr inbounds %struct.complex, ptr %3613, i32 0, i32 0
  %3615 = load float, ptr %3614, align 4, !tbaa !16
  %3616 = getelementptr inbounds %struct.complex, ptr %57, i32 0, i32 0
  %3617 = load float, ptr %3616, align 4, !tbaa !16
  %3618 = fadd float %3615, %3617
  %3619 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 0
  store float %3618, ptr %3619, align 4, !tbaa !16
  %3620 = load ptr, ptr %33, align 8, !tbaa !5
  %3621 = load i64, ptr %46, align 8, !tbaa !9
  %3622 = getelementptr inbounds %struct.complex, ptr %3620, i64 %3621
  %3623 = getelementptr inbounds %struct.complex, ptr %3622, i32 0, i32 1
  %3624 = load float, ptr %3623, align 4, !tbaa !20
  %3625 = getelementptr inbounds %struct.complex, ptr %57, i32 0, i32 1
  %3626 = load float, ptr %3625, align 4, !tbaa !20
  %3627 = fadd float %3624, %3626
  %3628 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 1
  store float %3627, ptr %3628, align 4, !tbaa !20
  %3629 = load i64, ptr %66, align 8, !tbaa !9
  %3630 = load i64, ptr %61, align 8, !tbaa !9
  %3631 = load i64, ptr %36, align 8, !tbaa !9
  %3632 = mul nsw i64 %3630, %3631
  %3633 = add nsw i64 %3629, %3632
  store i64 %3633, ptr %48, align 8, !tbaa !9
  %3634 = getelementptr inbounds %struct.complex, ptr %63, i32 0, i32 0
  %3635 = load float, ptr %3634, align 4, !tbaa !16
  %3636 = load ptr, ptr %25, align 8, !tbaa !5
  %3637 = load i64, ptr %48, align 8, !tbaa !9
  %3638 = getelementptr inbounds %struct.complex, ptr %3636, i64 %3637
  %3639 = getelementptr inbounds %struct.complex, ptr %3638, i32 0, i32 0
  %3640 = load float, ptr %3639, align 4, !tbaa !16
  %3641 = getelementptr inbounds %struct.complex, ptr %63, i32 0, i32 1
  %3642 = load float, ptr %3641, align 4, !tbaa !20
  %3643 = load ptr, ptr %25, align 8, !tbaa !5
  %3644 = load i64, ptr %48, align 8, !tbaa !9
  %3645 = getelementptr inbounds %struct.complex, ptr %3643, i64 %3644
  %3646 = getelementptr inbounds %struct.complex, ptr %3645, i32 0, i32 1
  %3647 = load float, ptr %3646, align 4, !tbaa !20
  %3648 = fmul float %3642, %3647
  %3649 = fneg float %3648
  %3650 = call float @llvm.fmuladd.f32(float %3635, float %3640, float %3649)
  %3651 = getelementptr inbounds %struct.complex, ptr %58, i32 0, i32 0
  store float %3650, ptr %3651, align 4, !tbaa !16
  %3652 = getelementptr inbounds %struct.complex, ptr %63, i32 0, i32 0
  %3653 = load float, ptr %3652, align 4, !tbaa !16
  %3654 = load ptr, ptr %25, align 8, !tbaa !5
  %3655 = load i64, ptr %48, align 8, !tbaa !9
  %3656 = getelementptr inbounds %struct.complex, ptr %3654, i64 %3655
  %3657 = getelementptr inbounds %struct.complex, ptr %3656, i32 0, i32 1
  %3658 = load float, ptr %3657, align 4, !tbaa !20
  %3659 = getelementptr inbounds %struct.complex, ptr %63, i32 0, i32 1
  %3660 = load float, ptr %3659, align 4, !tbaa !20
  %3661 = load ptr, ptr %25, align 8, !tbaa !5
  %3662 = load i64, ptr %48, align 8, !tbaa !9
  %3663 = getelementptr inbounds %struct.complex, ptr %3661, i64 %3662
  %3664 = getelementptr inbounds %struct.complex, ptr %3663, i32 0, i32 0
  %3665 = load float, ptr %3664, align 4, !tbaa !16
  %3666 = fmul float %3660, %3665
  %3667 = call float @llvm.fmuladd.f32(float %3653, float %3658, float %3666)
  %3668 = getelementptr inbounds %struct.complex, ptr %58, i32 0, i32 1
  store float %3667, ptr %3668, align 4, !tbaa !20
  %3669 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 0
  %3670 = load float, ptr %3669, align 4, !tbaa !16
  %3671 = getelementptr inbounds %struct.complex, ptr %58, i32 0, i32 0
  %3672 = load float, ptr %3671, align 4, !tbaa !16
  %3673 = fsub float %3670, %3672
  %3674 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  store float %3673, ptr %3674, align 4, !tbaa !16
  %3675 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 1
  %3676 = load float, ptr %3675, align 4, !tbaa !20
  %3677 = getelementptr inbounds %struct.complex, ptr %58, i32 0, i32 1
  %3678 = load float, ptr %3677, align 4, !tbaa !20
  %3679 = fsub float %3676, %3678
  %3680 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  store float %3679, ptr %3680, align 4, !tbaa !20
  %3681 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  %3682 = load float, ptr %3681, align 4, !tbaa !16
  %3683 = load ptr, ptr %33, align 8, !tbaa !5
  %3684 = load i64, ptr %45, align 8, !tbaa !9
  %3685 = getelementptr inbounds %struct.complex, ptr %3683, i64 %3684
  %3686 = getelementptr inbounds %struct.complex, ptr %3685, i32 0, i32 0
  store float %3682, ptr %3686, align 4, !tbaa !16
  %3687 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  %3688 = load float, ptr %3687, align 4, !tbaa !20
  %3689 = load ptr, ptr %33, align 8, !tbaa !5
  %3690 = load i64, ptr %45, align 8, !tbaa !9
  %3691 = getelementptr inbounds %struct.complex, ptr %3689, i64 %3690
  %3692 = getelementptr inbounds %struct.complex, ptr %3691, i32 0, i32 1
  store float %3688, ptr %3692, align 4, !tbaa !20
  br label %3693

3693:                                             ; preds = %3568
  %3694 = load i64, ptr %66, align 8, !tbaa !9
  %3695 = add nsw i64 %3694, 1
  store i64 %3695, ptr %66, align 8, !tbaa !9
  br label %3564, !llvm.loop !36

3696:                                             ; preds = %3564
  br label %3697

3697:                                             ; preds = %3696, %3335
  br label %3698

3698:                                             ; preds = %3697
  %3699 = load i64, ptr %61, align 8, !tbaa !9
  %3700 = add nsw i64 %3699, -1
  store i64 %3700, ptr %61, align 8, !tbaa !9
  br label %3049, !llvm.loop !37

3701:                                             ; preds = %3049
  %3702 = load i64, ptr %95, align 8, !tbaa !9
  %3703 = icmp ne i64 %3702, 0
  br i1 %3703, label %3704, label %3720

3704:                                             ; preds = %3701
  %3705 = load ptr, ptr %22, align 8, !tbaa !5
  %3706 = load ptr, ptr %29, align 8, !tbaa !5
  %3707 = load i64, ptr %43, align 8, !tbaa !9
  %3708 = getelementptr inbounds %struct.complex, ptr %3706, i64 %3707
  %3709 = load ptr, ptr %30, align 8, !tbaa !5
  %3710 = load ptr, ptr %33, align 8, !tbaa !5
  %3711 = getelementptr inbounds %struct.complex, ptr %3710, i64 1
  %3712 = load ptr, ptr %33, align 8, !tbaa !5
  %3713 = load ptr, ptr %22, align 8, !tbaa !5
  %3714 = load i64, ptr %3713, align 8, !tbaa !9
  %3715 = add nsw i64 %3714, 1
  %3716 = getelementptr inbounds %struct.complex, ptr %3712, i64 %3715
  %3717 = call i32 @f2c_cgemv(ptr noundef @.str.9, ptr noundef %3705, ptr noundef %64, ptr noundef @c_b2, ptr noundef %3708, ptr noundef %3709, ptr noundef %3711, ptr noundef @c__1, ptr noundef @c_b1, ptr noundef %3716, ptr noundef @c__1)
  store i64 2, ptr %76, align 8, !tbaa !9
  %3718 = load ptr, ptr %22, align 8, !tbaa !5
  %3719 = load i64, ptr %3718, align 8, !tbaa !9
  store i64 %3719, ptr %74, align 8, !tbaa !9
  br label %3722

3720:                                             ; preds = %3701
  store i64 1, ptr %76, align 8, !tbaa !9
  %3721 = load i64, ptr %64, align 8, !tbaa !9
  store i64 %3721, ptr %74, align 8, !tbaa !9
  br label %3722

3722:                                             ; preds = %3720, %3704
  store float 0.000000e+00, ptr %80, align 4, !tbaa !14
  %3723 = load i64, ptr %74, align 8, !tbaa !9
  store i64 %3723, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %66, align 8, !tbaa !9
  br label %3724

3724:                                             ; preds = %3786, %3722
  %3725 = load i64, ptr %66, align 8, !tbaa !9
  %3726 = load i64, ptr %44, align 8, !tbaa !9
  %3727 = icmp sle i64 %3725, %3726
  br i1 %3727, label %3728, label %3789

3728:                                             ; preds = %3724
  %3729 = load i64, ptr %76, align 8, !tbaa !9
  %3730 = sub nsw i64 %3729, 1
  %3731 = load ptr, ptr %22, align 8, !tbaa !5
  %3732 = load i64, ptr %3731, align 8, !tbaa !9
  %3733 = mul nsw i64 %3730, %3732
  %3734 = load i64, ptr %66, align 8, !tbaa !9
  %3735 = add nsw i64 %3733, %3734
  store i64 %3735, ptr %45, align 8, !tbaa !9
  %3736 = load float, ptr %80, align 4, !tbaa !14
  store float %3736, ptr %51, align 4, !tbaa !14
  %3737 = load ptr, ptr %33, align 8, !tbaa !5
  %3738 = load i64, ptr %45, align 8, !tbaa !9
  %3739 = getelementptr inbounds %struct.complex, ptr %3737, i64 %3738
  %3740 = getelementptr inbounds %struct.complex, ptr %3739, i32 0, i32 0
  %3741 = load float, ptr %3740, align 4, !tbaa !16
  store float %3741, ptr %49, align 4, !tbaa !14
  %3742 = load float, ptr %49, align 4, !tbaa !14
  %3743 = fcmp oge float %3742, 0.000000e+00
  br i1 %3743, label %3744, label %3746

3744:                                             ; preds = %3728
  %3745 = load float, ptr %49, align 4, !tbaa !14
  br label %3749

3746:                                             ; preds = %3728
  %3747 = load float, ptr %49, align 4, !tbaa !14
  %3748 = fneg float %3747
  br label %3749

3749:                                             ; preds = %3746, %3744
  %3750 = phi float [ %3745, %3744 ], [ %3748, %3746 ]
  %3751 = fpext float %3750 to double
  %3752 = load ptr, ptr %33, align 8, !tbaa !5
  %3753 = load i64, ptr %76, align 8, !tbaa !9
  %3754 = sub nsw i64 %3753, 1
  %3755 = load ptr, ptr %22, align 8, !tbaa !5
  %3756 = load i64, ptr %3755, align 8, !tbaa !9
  %3757 = mul nsw i64 %3754, %3756
  %3758 = load i64, ptr %66, align 8, !tbaa !9
  %3759 = add nsw i64 %3757, %3758
  %3760 = getelementptr inbounds %struct.complex, ptr %3752, i64 %3759
  %3761 = call double @r_imag(ptr noundef %3760)
  %3762 = fptrunc double %3761 to float
  store float %3762, ptr %50, align 4, !tbaa !14
  %3763 = load float, ptr %50, align 4, !tbaa !14
  %3764 = fcmp oge float %3763, 0.000000e+00
  br i1 %3764, label %3765, label %3767

3765:                                             ; preds = %3749
  %3766 = load float, ptr %50, align 4, !tbaa !14
  br label %3770

3767:                                             ; preds = %3749
  %3768 = load float, ptr %50, align 4, !tbaa !14
  %3769 = fneg float %3768
  br label %3770

3770:                                             ; preds = %3767, %3765
  %3771 = phi float [ %3766, %3765 ], [ %3769, %3767 ]
  %3772 = fpext float %3771 to double
  %3773 = fadd double %3751, %3772
  %3774 = fptrunc double %3773 to float
  store float %3774, ptr %52, align 4, !tbaa !14
  %3775 = load float, ptr %51, align 4, !tbaa !14
  %3776 = load float, ptr %52, align 4, !tbaa !14
  %3777 = fcmp oge float %3775, %3776
  br i1 %3777, label %3778, label %3780

3778:                                             ; preds = %3770
  %3779 = load float, ptr %51, align 4, !tbaa !14
  br label %3782

3780:                                             ; preds = %3770
  %3781 = load float, ptr %52, align 4, !tbaa !14
  br label %3782

3782:                                             ; preds = %3780, %3778
  %3783 = phi float [ %3779, %3778 ], [ %3781, %3780 ]
  %3784 = fpext float %3783 to double
  %3785 = fptrunc double %3784 to float
  store float %3785, ptr %80, align 4, !tbaa !14
  br label %3786

3786:                                             ; preds = %3782
  %3787 = load i64, ptr %66, align 8, !tbaa !9
  %3788 = add nsw i64 %3787, 1
  store i64 %3788, ptr %66, align 8, !tbaa !9
  br label %3724, !llvm.loop !38

3789:                                             ; preds = %3724
  %3790 = load float, ptr %80, align 4, !tbaa !14
  %3791 = load float, ptr %99, align 4, !tbaa !14
  %3792 = fcmp ogt float %3790, %3791
  br i1 %3792, label %3793, label %3846

3793:                                             ; preds = %3789
  %3794 = load float, ptr %80, align 4, !tbaa !14
  %3795 = fdiv float 1.000000e+00, %3794
  store float %3795, ptr %77, align 4, !tbaa !14
  %3796 = load i64, ptr %74, align 8, !tbaa !9
  store i64 %3796, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %66, align 8, !tbaa !9
  br label %3797

3797:                                             ; preds = %3842, %3793
  %3798 = load i64, ptr %66, align 8, !tbaa !9
  %3799 = load i64, ptr %44, align 8, !tbaa !9
  %3800 = icmp sle i64 %3798, %3799
  br i1 %3800, label %3801, label %3845

3801:                                             ; preds = %3797
  %3802 = load i64, ptr %66, align 8, !tbaa !9
  %3803 = load i64, ptr %73, align 8, !tbaa !9
  %3804 = load i64, ptr %42, align 8, !tbaa !9
  %3805 = mul nsw i64 %3803, %3804
  %3806 = add nsw i64 %3802, %3805
  store i64 %3806, ptr %45, align 8, !tbaa !9
  %3807 = load i64, ptr %76, align 8, !tbaa !9
  %3808 = sub nsw i64 %3807, 1
  %3809 = load ptr, ptr %22, align 8, !tbaa !5
  %3810 = load i64, ptr %3809, align 8, !tbaa !9
  %3811 = mul nsw i64 %3808, %3810
  %3812 = load i64, ptr %66, align 8, !tbaa !9
  %3813 = add nsw i64 %3811, %3812
  store i64 %3813, ptr %46, align 8, !tbaa !9
  %3814 = load float, ptr %77, align 4, !tbaa !14
  %3815 = load ptr, ptr %33, align 8, !tbaa !5
  %3816 = load i64, ptr %46, align 8, !tbaa !9
  %3817 = getelementptr inbounds %struct.complex, ptr %3815, i64 %3816
  %3818 = getelementptr inbounds %struct.complex, ptr %3817, i32 0, i32 0
  %3819 = load float, ptr %3818, align 4, !tbaa !16
  %3820 = fmul float %3814, %3819
  %3821 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  store float %3820, ptr %3821, align 4, !tbaa !16
  %3822 = load float, ptr %77, align 4, !tbaa !14
  %3823 = load ptr, ptr %33, align 8, !tbaa !5
  %3824 = load i64, ptr %46, align 8, !tbaa !9
  %3825 = getelementptr inbounds %struct.complex, ptr %3823, i64 %3824
  %3826 = getelementptr inbounds %struct.complex, ptr %3825, i32 0, i32 1
  %3827 = load float, ptr %3826, align 4, !tbaa !20
  %3828 = fmul float %3822, %3827
  %3829 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  store float %3828, ptr %3829, align 4, !tbaa !20
  %3830 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 0
  %3831 = load float, ptr %3830, align 4, !tbaa !16
  %3832 = load ptr, ptr %29, align 8, !tbaa !5
  %3833 = load i64, ptr %45, align 8, !tbaa !9
  %3834 = getelementptr inbounds %struct.complex, ptr %3832, i64 %3833
  %3835 = getelementptr inbounds %struct.complex, ptr %3834, i32 0, i32 0
  store float %3831, ptr %3835, align 4, !tbaa !16
  %3836 = getelementptr inbounds %struct.complex, ptr %55, i32 0, i32 1
  %3837 = load float, ptr %3836, align 4, !tbaa !20
  %3838 = load ptr, ptr %29, align 8, !tbaa !5
  %3839 = load i64, ptr %45, align 8, !tbaa !9
  %3840 = getelementptr inbounds %struct.complex, ptr %3838, i64 %3839
  %3841 = getelementptr inbounds %struct.complex, ptr %3840, i32 0, i32 1
  store float %3837, ptr %3841, align 4, !tbaa !20
  br label %3842

3842:                                             ; preds = %3801
  %3843 = load i64, ptr %66, align 8, !tbaa !9
  %3844 = add nsw i64 %3843, 1
  store i64 %3844, ptr %66, align 8, !tbaa !9
  br label %3797, !llvm.loop !39

3845:                                             ; preds = %3797
  br label %3847

3846:                                             ; preds = %3789
  store i64 0, ptr %74, align 8, !tbaa !9
  br label %3847

3847:                                             ; preds = %3846, %3845
  %3848 = load ptr, ptr %22, align 8, !tbaa !5
  %3849 = load i64, ptr %3848, align 8, !tbaa !9
  store i64 %3849, ptr %44, align 8, !tbaa !9
  %3850 = load i64, ptr %74, align 8, !tbaa !9
  %3851 = add nsw i64 %3850, 1
  store i64 %3851, ptr %66, align 8, !tbaa !9
  br label %3852

3852:                                             ; preds = %3870, %3847
  %3853 = load i64, ptr %66, align 8, !tbaa !9
  %3854 = load i64, ptr %44, align 8, !tbaa !9
  %3855 = icmp sle i64 %3853, %3854
  br i1 %3855, label %3856, label %3873

3856:                                             ; preds = %3852
  %3857 = load i64, ptr %66, align 8, !tbaa !9
  %3858 = load i64, ptr %73, align 8, !tbaa !9
  %3859 = load i64, ptr %42, align 8, !tbaa !9
  %3860 = mul nsw i64 %3858, %3859
  %3861 = add nsw i64 %3857, %3860
  store i64 %3861, ptr %45, align 8, !tbaa !9
  %3862 = load ptr, ptr %29, align 8, !tbaa !5
  %3863 = load i64, ptr %45, align 8, !tbaa !9
  %3864 = getelementptr inbounds %struct.complex, ptr %3862, i64 %3863
  %3865 = getelementptr inbounds %struct.complex, ptr %3864, i32 0, i32 0
  store float 0.000000e+00, ptr %3865, align 4, !tbaa !16
  %3866 = load ptr, ptr %29, align 8, !tbaa !5
  %3867 = load i64, ptr %45, align 8, !tbaa !9
  %3868 = getelementptr inbounds %struct.complex, ptr %3866, i64 %3867
  %3869 = getelementptr inbounds %struct.complex, ptr %3868, i32 0, i32 1
  store float 0.000000e+00, ptr %3869, align 4, !tbaa !20
  br label %3870

3870:                                             ; preds = %3856
  %3871 = load i64, ptr %66, align 8, !tbaa !9
  %3872 = add nsw i64 %3871, 1
  store i64 %3872, ptr %66, align 8, !tbaa !9
  br label %3852, !llvm.loop !40

3873:                                             ; preds = %3852
  br label %3874

3874:                                             ; preds = %3873, %2257
  br label %3875

3875:                                             ; preds = %3874, %2354
  br label %3876

3876:                                             ; preds = %3875
  %3877 = load i64, ptr %64, align 8, !tbaa !9
  %3878 = add nsw i64 %3877, -1
  store i64 %3878, ptr %64, align 8, !tbaa !9
  br label %2245, !llvm.loop !41

3879:                                             ; preds = %2245
  br label %3880

3880:                                             ; preds = %3879, %2237
  store i32 0, ptr %18, align 4
  store i32 1, ptr %103, align 4
  br label %3881

3881:                                             ; preds = %3880, %346, %335, %232
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %99) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #4
  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 8, ptr %86) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 4, 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 4, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 8, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 8, 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 4, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  %3882 = load i32, ptr %18, align 4
  ret i32 %3882
}

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

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

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

declare double @r_imag(ptr noundef) #2

declare double @slamch_(ptr noundef) #2

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

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

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

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = !{!15, !15, i64 0}
!15 = !{!"float", !7, i64 0}
!16 = !{!17, !15, i64 0}
!17 = !{!"", !15, i64 0, !15, i64 4}
!18 = distinct !{!18, !12}
!19 = distinct !{!19, !12}
!20 = !{!17, !15, i64 4}
!21 = distinct !{!21, !12}
!22 = distinct !{!22, !12}
!23 = distinct !{!23, !12}
!24 = distinct !{!24, !12}
!25 = distinct !{!25, !12}
!26 = distinct !{!26, !12}
!27 = distinct !{!27, !12}
!28 = distinct !{!28, !12}
!29 = distinct !{!29, !12}
!30 = distinct !{!30, !12}
!31 = distinct !{!31, !12}
!32 = distinct !{!32, !12}
!33 = distinct !{!33, !12}
!34 = distinct !{!34, !12}
!35 = distinct !{!35, !12}
!36 = distinct !{!36, !12}
!37 = distinct !{!37, !12}
!38 = distinct !{!38, !12}
!39 = distinct !{!39, !12}
!40 = distinct !{!40, !12}
!41 = distinct !{!41, !12}


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

%struct.complex = type { float, float }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b2 = external hidden global %struct.complex, align 4
@c__1 = external hidden global i64, align 8
@c_b1 = external hidden global %struct.complex, align 4

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

49:                                               ; preds = %17
  %50 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %.not1100 = icmp eq i64 %50, 0
  br i1 %.not1100, label %51, label %53

51:                                               ; preds = %49
  %52 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #6
  %.not1101 = icmp eq i64 %52, 0
  br label %53

53:                                               ; preds = %51, %49, %17
  %.not1106 = phi i1 [ false, %17 ], [ true, %49 ], [ false, %51 ]
  %.not1122 = phi i1 [ true, %17 ], [ true, %49 ], [ false, %51 ]
  %54 = phi i1 [ false, %17 ], [ false, %49 ], [ %.not1101, %51 ]
  %55 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #6
  %.not1102.not = icmp eq i64 %55, 0
  br i1 %.not1102.not, label %56, label %.thread

56:                                               ; preds = %53
  %57 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #6
  %.not1103 = icmp eq i64 %57, 0
  br i1 %.not1103, label %58, label %.thread

.thread:                                          ; preds = %53, %56
  store i64 0, ptr %16, align 8, !tbaa !5
  br label %60

58:                                               ; preds = %56
  %59 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #6
  %.not1104 = icmp eq i64 %59, 0
  store i64 0, ptr %16, align 8, !tbaa !5
  br i1 %.not1104, label %.thread1156, label %60

60:                                               ; preds = %.thread, %58
  %.not11121153 = phi i1 [ %.not1102.not, %.thread ], [ false, %58 ]
  br i1 %54, label %.thread1156, label %61

61:                                               ; preds = %60
  %62 = load i64, ptr %3, align 8, !tbaa !5
  %63 = icmp slt i64 %62, 0
  br i1 %63, label %.thread1156, label %64

64:                                               ; preds = %61
  %65 = load i64, ptr %5, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %62, i64 1)
  %66 = icmp slt i64 %65, %spec.select
  br i1 %66, label %.thread1156, label %67

67:                                               ; preds = %64
  %68 = load i64, ptr %7, align 8, !tbaa !5
  %69 = icmp slt i64 %68, %spec.select
  br i1 %69, label %.thread1156, label %70

.thread1156:                                      ; preds = %67, %64, %61, %60, %58
  %.sink = phi i64 [ -1, %58 ], [ -2, %60 ], [ -4, %61 ], [ -6, %64 ], [ -8, %67 ]
  %.neg = phi i64 [ 1, %58 ], [ 2, %60 ], [ 4, %61 ], [ 6, %64 ], [ 8, %67 ]
  store i64 %.sink, ptr %16, align 8, !tbaa !5
  br label %.loopexit1189.sink.split

70:                                               ; preds = %67
  br i1 %.not1106, label %71, label %.loopexit1194

71:                                               ; preds = %70
  %.not11071195 = icmp eq i64 %62, 0
  br i1 %.not11071195, label %.loopexit1194.thread, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %71
  %min.iters.check = icmp ult i64 %62, 4
  br i1 %min.iters.check, label %.lr.ph.preheader1889, label %vector.ph

.lr.ph.preheader1889:                             ; preds = %middle.block, %.lr.ph.preheader
  %.010821197.ph = phi i64 [ 0, %.lr.ph.preheader ], [ %81, %middle.block ]
  %.010851196.ph = phi i64 [ 1, %.lr.ph.preheader ], [ %ind.end, %middle.block ]
  br label %.lr.ph

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

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %vec.phi = phi <2 x i64> [ zeroinitializer, %vector.ph ], [ %78, %vector.body ]
  %vec.phi1531 = phi <2 x i64> [ zeroinitializer, %vector.ph ], [ %79, %vector.body ]
  %72 = getelementptr i64, ptr %2, i64 %index
  %73 = getelementptr inbounds i8, ptr %72, i64 16
  %wide.load = load <2 x i64>, ptr %72, align 8, !tbaa !5
  %wide.load1532 = load <2 x i64>, ptr %73, align 8, !tbaa !5
  %74 = icmp ne <2 x i64> %wide.load, zeroinitializer
  %75 = icmp ne <2 x i64> %wide.load1532, zeroinitializer
  %76 = zext <2 x i1> %74 to <2 x i64>
  %77 = zext <2 x i1> %75 to <2 x i64>
  %78 = add <2 x i64> %vec.phi, %76
  %79 = add <2 x i64> %vec.phi1531, %77
  %index.next = add nuw i64 %index, 4
  %80 = icmp eq i64 %index.next, %n.vec
  br i1 %80, label %middle.block, label %vector.body, !llvm.loop !9

middle.block:                                     ; preds = %vector.body
  %bin.rdx = add <2 x i64> %79, %78
  %81 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx)
  %cmp.n = icmp eq i64 %62, %n.vec
  br i1 %cmp.n, label %.loopexit1194.thread1442, label %.lr.ph.preheader1889

.loopexit1194.thread:                             ; preds = %71
  store i64 %62, ptr %18, align 8, !tbaa !5
  br label %._crit_edge.thread

.lr.ph:                                           ; preds = %.lr.ph.preheader1889, %.lr.ph
  %.010821197 = phi i64 [ %spec.select1147, %.lr.ph ], [ %.010821197.ph, %.lr.ph.preheader1889 ]
  %.010851196 = phi i64 [ %85, %.lr.ph ], [ %.010851196.ph, %.lr.ph.preheader1889 ]
  %82 = getelementptr inbounds i64, ptr %31, i64 %.010851196
  %83 = load i64, ptr %82, align 8, !tbaa !5
  %.not1108 = icmp ne i64 %83, 0
  %84 = zext i1 %.not1108 to i64
  %spec.select1147 = add nuw nsw i64 %.010821197, %84
  %85 = add nuw i64 %.010851196, 1
  %exitcond.not = icmp eq i64 %.010851196, %62
  br i1 %exitcond.not, label %.loopexit1194.thread1442, label %.lr.ph, !llvm.loop !13

.loopexit1194.thread1442:                         ; preds = %.lr.ph, %middle.block
  %spec.select1147.lcssa = phi i64 [ %81, %middle.block ], [ %spec.select1147, %.lr.ph ]
  store i64 %62, ptr %18, align 8, !tbaa !5
  br label %.lr.ph1201.preheader

.loopexit1194:                                    ; preds = %70
  store i64 %62, ptr %18, align 8, !tbaa !5
  %.not11091198 = icmp eq i64 %62, 0
  br i1 %.not11091198, label %._crit_edge.thread, label %.lr.ph1201.preheader

.lr.ph1201.preheader:                             ; preds = %.loopexit1194.thread1442, %.loopexit1194
  %.210841445 = phi i64 [ %spec.select1147.lcssa, %.loopexit1194.thread1442 ], [ %62, %.loopexit1194 ]
  br label %.lr.ph1201

.lr.ph1201:                                       ; preds = %.lr.ph1201.preheader, %.lr.ph1201
  %.010511200 = phi i64 [ %.11052, %.lr.ph1201 ], [ 0, %.lr.ph1201.preheader ]
  %.110861199 = phi i64 [ %90, %.lr.ph1201 ], [ 1, %.lr.ph1201.preheader ]
  %86 = mul i64 %.110861199, %37
  %87 = getelementptr inbounds %struct.complex, ptr %39, i64 %86
  %88 = tail call double @r_imag(ptr noundef %87) #6
  %89 = fcmp une double %88, 0.000000e+00
  %.11052 = select i1 %89, i64 1, i64 %.010511200
  %90 = add nuw i64 %.110861199, 1
  %exitcond1417.not = icmp eq i64 %.110861199, %62
  br i1 %exitcond1417.not, label %._crit_edge, label %.lr.ph1201, !llvm.loop !14

._crit_edge:                                      ; preds = %.lr.ph1201
  %.not1110 = icmp eq i64 %.11052, 0
  br i1 %.not1110, label %._crit_edge.thread, label %.thread1168.sink.split

._crit_edge.thread:                               ; preds = %.loopexit1194.thread, %.loopexit1194, %._crit_edge
  %.2108414411449 = phi i64 [ %.210841445, %._crit_edge ], [ 0, %.loopexit1194.thread ], [ %62, %.loopexit1194 ]
  %.pr1161 = load i64, ptr %9, align 8, !tbaa !5
  br i1 %.not1102.not, label %91, label %thread-pre-split1160

91:                                               ; preds = %._crit_edge.thread
  %92 = load i64, ptr %3, align 8, !tbaa !5
  %93 = icmp slt i64 %.pr1161, %92
  %94 = icmp slt i64 %.pr1161, 1
  %or.cond = or i1 %93, %94
  br i1 %or.cond, label %.thread1168.sink.split, label %95

thread-pre-split1160:                             ; preds = %._crit_edge.thread
  %.old = icmp slt i64 %.pr1161, 1
  br i1 %.old, label %.thread1168.sink.split, label %95

95:                                               ; preds = %91, %thread-pre-split1160
  %.pr1163 = load i64, ptr %11, align 8, !tbaa !5
  br i1 %.not11121153, label %thread-pre-split1162, label %96

96:                                               ; preds = %95
  %97 = load i64, ptr %3, align 8, !tbaa !5
  %98 = icmp slt i64 %.pr1163, %97
  %99 = icmp slt i64 %.pr1163, 1
  %or.cond1827 = or i1 %98, %99
  br i1 %or.cond1827, label %.thread1168.sink.split, label %100

thread-pre-split1162:                             ; preds = %95
  %.old1826 = icmp slt i64 %.pr1163, 1
  br i1 %.old1826, label %.thread1168.sink.split, label %100

100:                                              ; preds = %96, %thread-pre-split1162
  %101 = load i64, ptr %12, align 8, !tbaa !5
  %102 = icmp slt i64 %101, %.2108414411449
  br i1 %102, label %.thread1168.sink.split, label %103

103:                                              ; preds = %100
  %.pr1165 = load i64, ptr %16, align 8, !tbaa !5
  %.not1113 = icmp eq i64 %.pr1165, 0
  br i1 %.not1113, label %106, label %.thread1168

.thread1168.sink.split:                           ; preds = %100, %96, %thread-pre-split1162, %91, %thread-pre-split1160, %._crit_edge
  %.sink1500 = phi i64 [ -7, %._crit_edge ], [ -10, %thread-pre-split1160 ], [ -10, %91 ], [ -12, %thread-pre-split1162 ], [ -12, %96 ], [ -13, %100 ]
  store i64 %.sink1500, ptr %16, align 8, !tbaa !5
  br label %.thread1168

.thread1168:                                      ; preds = %.thread1168.sink.split, %103
  %104 = phi i64 [ %.pr1165, %103 ], [ %.sink1500, %.thread1168.sink.split ]
  %105 = sub nsw i64 0, %104
  br label %.loopexit1189.sink.split

106:                                              ; preds = %103
  store i64 %.2108414411449, ptr %13, align 8, !tbaa !5
  %107 = load i64, ptr %3, align 8, !tbaa !5
  %108 = icmp eq i64 %107, 0
  br i1 %108, label %.loopexit1189, label %109

109:                                              ; preds = %106
  %110 = tail call double @slamch_(ptr noundef nonnull @.str.6) #6
  %111 = fptrunc double %110 to float
  store float %111, ptr %30, align 4, !tbaa !15
  %112 = fdiv float 1.000000e+00, %111
  store float %112, ptr %26, align 4, !tbaa !15
  %113 = call i32 @slabad_(ptr noundef nonnull %30, ptr noundef nonnull %26) #6
  %114 = call double @slamch_(ptr noundef nonnull @.str.7) #6
  %115 = call double @slamch_(ptr noundef nonnull @.str.8) #6
  %116 = fmul double %114, %115
  %117 = fptrunc double %116 to float
  %118 = load float, ptr %30, align 4, !tbaa !15
  %119 = load i64, ptr %3, align 8, !tbaa !5
  %120 = sitofp i64 %119 to float
  %121 = fmul float %118, %120
  %122 = fdiv float %121, %117
  %123 = fdiv float 1.000000e+00, %122
  store float %123, ptr %26, align 4, !tbaa !15
  %124 = fdiv float 1.000000e+00, %121
  store i64 %33, ptr %18, align 8, !tbaa !5
  %125 = load float, ptr %4, align 4, !tbaa !17
  %126 = call double @r_imag(ptr noundef nonnull %4) #6
  store i64 %37, ptr %18, align 8, !tbaa !5
  %127 = load float, ptr %6, align 4, !tbaa !17
  %128 = call double @r_imag(ptr noundef nonnull %6) #6
  %129 = insertelement <2 x float> poison, float %125, i64 0
  %130 = insertelement <2 x float> %129, float %127, i64 1
  %131 = fcmp oge <2 x float> %130, zeroinitializer
  %132 = fneg <2 x float> %130
  %133 = select <2 x i1> %131, <2 x float> %130, <2 x float> %132
  %134 = insertelement <2 x double> poison, double %126, i64 0
  %135 = insertelement <2 x double> %134, double %128, i64 1
  %136 = fptrunc <2 x double> %135 to <2 x float>
  %137 = fcmp oge <2 x float> %136, zeroinitializer
  %138 = fneg <2 x float> %136
  %139 = select <2 x i1> %137, <2 x float> %136, <2 x float> %138
  %140 = fadd <2 x float> %133, %139
  store float 0.000000e+00, ptr %15, align 4, !tbaa !15
  %141 = load i64, ptr %3, align 8, !tbaa !5
  %142 = getelementptr float, ptr %15, i64 %141
  store float 0.000000e+00, ptr %142, align 4, !tbaa !15
  store i64 %141, ptr %18, align 8, !tbaa !5
  %.not11141212 = icmp slt i64 %141, 2
  br i1 %.not11141212, label %._crit_edge1218, label %.lr.ph1206

.lr.ph1206:                                       ; preds = %109, %._crit_edge1207
  %.210871213 = phi i64 [ %221, %._crit_edge1207 ], [ 2, %109 ]
  %143 = phi <2 x float> [ %220, %._crit_edge1207 ], [ %140, %109 ]
  %144 = getelementptr float, ptr %47, i64 %.210871213
  store float 0.000000e+00, ptr %144, align 4, !tbaa !15
  %145 = load i64, ptr %3, align 8, !tbaa !5
  %146 = getelementptr float, ptr %47, i64 %145
  %147 = getelementptr float, ptr %146, i64 %.210871213
  store float 0.000000e+00, ptr %147, align 4, !tbaa !15
  %148 = add nsw i64 %.210871213, -1
  store i64 %148, ptr %19, align 8, !tbaa !5
  %149 = mul nsw i64 %.210871213, %32
  %invariant.gep1208 = getelementptr %struct.complex, ptr %35, i64 %149
  %150 = mul nsw i64 %.210871213, %36
  %invariant.gep1210 = getelementptr %struct.complex, ptr %39, i64 %150
  br label %151

151:                                              ; preds = %.lr.ph1206, %151
  %.010901204 = phi i64 [ 1, %.lr.ph1206 ], [ %185, %151 ]
  %gep1209 = getelementptr %struct.complex, ptr %invariant.gep1208, i64 %.010901204
  %152 = load float, ptr %gep1209, align 4, !tbaa !17
  %153 = fcmp oge float %152, 0.000000e+00
  %154 = fneg float %152
  %155 = select i1 %153, float %152, float %154
  %156 = fpext float %155 to double
  %157 = call double @r_imag(ptr noundef nonnull %gep1209) #6
  %158 = fptrunc double %157 to float
  %159 = fcmp oge float %158, 0.000000e+00
  %160 = fneg float %158
  %161 = select i1 %159, float %158, float %160
  %162 = fpext float %161 to double
  %163 = fadd double %156, %162
  %164 = load float, ptr %144, align 4, !tbaa !15
  %165 = fpext float %164 to double
  %166 = fadd double %163, %165
  %167 = fptrunc double %166 to float
  store float %167, ptr %144, align 4, !tbaa !15
  %gep1211 = getelementptr %struct.complex, ptr %invariant.gep1210, i64 %.010901204
  %168 = load float, ptr %gep1211, align 4, !tbaa !17
  %169 = fcmp oge float %168, 0.000000e+00
  %170 = fneg float %168
  %171 = select i1 %169, float %168, float %170
  %172 = fpext float %171 to double
  %173 = call double @r_imag(ptr noundef nonnull %gep1211) #6
  %174 = fptrunc double %173 to float
  %175 = fcmp oge float %174, 0.000000e+00
  %176 = fneg float %174
  %177 = select i1 %175, float %174, float %176
  %178 = fpext float %177 to double
  %179 = fadd double %172, %178
  %180 = load i64, ptr %3, align 8, !tbaa !5
  %gep = getelementptr float, ptr %144, i64 %180
  %181 = load float, ptr %gep, align 4, !tbaa !15
  %182 = fpext float %181 to double
  %183 = fadd double %179, %182
  %184 = fptrunc double %183 to float
  store float %184, ptr %gep, align 4, !tbaa !15
  %185 = add nuw nsw i64 %.010901204, 1
  %186 = load i64, ptr %19, align 8, !tbaa !5
  %.not1142.not = icmp slt i64 %.010901204, %186
  br i1 %.not1142.not, label %151, label %._crit_edge1207, !llvm.loop !19

._crit_edge1207:                                  ; preds = %151
  %187 = mul i64 %.210871213, %33
  %188 = load float, ptr %144, align 4, !tbaa !15
  %189 = getelementptr inbounds %struct.complex, ptr %35, i64 %187
  %190 = load float, ptr %189, align 4, !tbaa !17
  %191 = call double @r_imag(ptr noundef nonnull %189) #6
  %192 = mul i64 %.210871213, %37
  store i64 %192, ptr %19, align 8, !tbaa !5
  %193 = load i64, ptr %3, align 8, !tbaa !5
  %194 = getelementptr float, ptr %47, i64 %193
  %195 = getelementptr float, ptr %194, i64 %.210871213
  %196 = load float, ptr %195, align 4, !tbaa !15
  %197 = getelementptr inbounds %struct.complex, ptr %39, i64 %192
  %198 = load float, ptr %197, align 4, !tbaa !17
  %199 = call double @r_imag(ptr noundef nonnull %197) #6
  %200 = insertelement <2 x float> poison, float %188, i64 0
  %201 = insertelement <2 x float> %200, float %196, i64 1
  %202 = fpext <2 x float> %201 to <2 x double>
  %203 = insertelement <2 x float> poison, float %190, i64 0
  %204 = insertelement <2 x float> %203, float %198, i64 1
  %205 = fcmp oge <2 x float> %204, zeroinitializer
  %206 = fneg <2 x float> %204
  %207 = select <2 x i1> %205, <2 x float> %204, <2 x float> %206
  %208 = fpext <2 x float> %207 to <2 x double>
  %209 = insertelement <2 x double> poison, double %191, i64 0
  %210 = insertelement <2 x double> %209, double %199, i64 1
  %211 = fptrunc <2 x double> %210 to <2 x float>
  %212 = fcmp oge <2 x float> %211, zeroinitializer
  %213 = fneg <2 x float> %211
  %214 = select <2 x i1> %212, <2 x float> %211, <2 x float> %213
  %215 = fpext <2 x float> %214 to <2 x double>
  %216 = fadd <2 x double> %208, %215
  %217 = fadd <2 x double> %216, %202
  %218 = fptrunc <2 x double> %217 to <2 x float>
  %219 = fcmp oge <2 x float> %143, %218
  %220 = select <2 x i1> %219, <2 x float> %143, <2 x float> %218
  %221 = add nuw nsw i64 %.210871213, 1
  %222 = load i64, ptr %18, align 8, !tbaa !5
  %.not1114.not = icmp slt i64 %.210871213, %222
  br i1 %.not1114.not, label %.lr.ph1206, label %._crit_edge1218, !llvm.loop !20

._crit_edge1218:                                  ; preds = %._crit_edge1207, %109
  %223 = phi <2 x float> [ %140, %109 ], [ %220, %._crit_edge1207 ]
  %224 = load float, ptr %30, align 4
  %225 = extractelement <2 x float> %223, i64 0
  %226 = fcmp oge float %225, %224
  %227 = select i1 %226, float %225, float %224
  %228 = fdiv float 1.000000e+00, %227
  %229 = extractelement <2 x float> %223, i64 1
  %230 = fcmp oge float %229, %224
  %231 = select i1 %230, float %229, float %224
  %232 = fdiv float 1.000000e+00, %231
  br i1 %.not1102.not, label %233, label %.loopexit1193

233:                                              ; preds = %._crit_edge1218
  %234 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %234, ptr %18, align 8, !tbaa !5
  %invariant.gep1291 = getelementptr i8, ptr %42, i64 8
  store i64 1, ptr %25, align 8, !tbaa !5
  %.not11161293 = icmp slt i64 %234, 1
  br i1 %.not11161293, label %.loopexit1193, label %.lr.ph1297

.lr.ph1297:                                       ; preds = %233
  %235 = add i64 %40, 1
  %236 = fpext float %228 to double
  %237 = getelementptr inbounds i8, ptr %20, i64 4
  %238 = getelementptr inbounds i8, ptr %28, i64 4
  %239 = fpext float %122 to double
  %240 = getelementptr inbounds i8, ptr %22, i64 4
  %241 = getelementptr inbounds i8, ptr %23, i64 4
  %242 = getelementptr inbounds i8, ptr %27, i64 4
  %243 = getelementptr inbounds i8, ptr %24, i64 4
  %244 = fpext float %124 to double
  %245 = shl i64 %40, 3
  %scevgep1533 = getelementptr i8, ptr %8, i64 -8
  %246 = shl i64 %40, 3
  %scevgep1535 = getelementptr i8, ptr %8, i64 -4
  %scevgep1537 = getelementptr i8, ptr %14, i64 -8
  %scevgep1539 = getelementptr i8, ptr %14, i64 -4
  %scevgep1541 = getelementptr i8, ptr %8, i64 -4
  %scevgep1544 = getelementptr i8, ptr %14, i64 -4
  %scevgep1564 = getelementptr i8, ptr %14, i64 -8
  %scevgep1566 = getelementptr i8, ptr %14, i64 -4
  %scevgep1591 = getelementptr i8, ptr %14, i64 -8
  %scevgep1596 = getelementptr i8, ptr %14, i64 -4
  %247 = insertelement <2 x float> poison, float %117, i64 0
  %248 = shufflevector <2 x float> %247, <2 x float> poison, <2 x i32> zeroinitializer
  %249 = insertelement <2 x float> poison, float %232, i64 0
  %250 = shufflevector <2 x float> %249, <2 x float> poison, <2 x i32> zeroinitializer
  %251 = insertelement <2 x float> poison, float %228, i64 0
  %252 = shufflevector <2 x float> %251, <2 x float> poison, <2 x i32> zeroinitializer
  %invariant.gep = getelementptr i8, ptr %46, i64 16
  %invariant.gep1951 = getelementptr i8, ptr %46, i64 16
  br label %253

253:                                              ; preds = %.lr.ph1297, %.loopexit1191
  %.010711295 = phi i64 [ 0, %.lr.ph1297 ], [ %.11072, %.loopexit1191 ]
  %storemerge1294 = phi i64 [ 1, %.lr.ph1297 ], [ %843, %.loopexit1191 ]
  br i1 %.not1106, label %254, label %.thread1171

254:                                              ; preds = %253
  %255 = getelementptr inbounds i64, ptr %31, i64 %storemerge1294
  %256 = load i64, ptr %255, align 8, !tbaa !5
  %.not1131 = icmp eq i64 %256, 0
  br i1 %.not1131, label %.loopexit1191, label %.thread1171

.thread1171:                                      ; preds = %253, %254
  %257 = add nsw i64 %.010711295, 1
  %258 = mul i64 %storemerge1294, %33
  store i64 %258, ptr %19, align 8, !tbaa !5
  %259 = getelementptr inbounds %struct.complex, ptr %35, i64 %258
  %260 = load float, ptr %259, align 4, !tbaa !17
  %261 = call double @r_imag(ptr noundef nonnull %259) #6
  %262 = fptrunc double %261 to float
  %263 = insertelement <2 x float> poison, float %260, i64 0
  %264 = insertelement <2 x float> %263, float %262, i64 1
  %265 = fcmp oge <2 x float> %264, zeroinitializer
  %266 = fneg <2 x float> %264
  %267 = select <2 x i1> %265, <2 x float> %264, <2 x float> %266
  %268 = fpext <2 x float> %267 to <2 x double>
  %shift = shufflevector <2 x double> %268, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %269 = fadd <2 x double> %shift, %268
  %270 = extractelement <2 x double> %269, i64 0
  %271 = load float, ptr %30, align 4, !tbaa !15
  %272 = fpext float %271 to double
  %273 = fcmp ugt double %270, %272
  br i1 %273, label %288, label %274

274:                                              ; preds = %.thread1171
  %275 = mul i64 %storemerge1294, %37
  %276 = getelementptr inbounds %struct.complex, ptr %39, i64 %275
  %277 = load float, ptr %276, align 4, !tbaa !17
  %278 = fcmp oge float %277, 0.000000e+00
  %279 = fneg float %277
  %280 = select i1 %278, float %277, float %279
  %281 = fcmp ugt float %280, %271
  br i1 %281, label %288, label %282

282:                                              ; preds = %274
  %283 = load i64, ptr %3, align 8, !tbaa !5
  %.not11411221 = icmp slt i64 %283, 1
  br i1 %.not11411221, label %._crit_edge1225, label %.lr.ph1224

.lr.ph1224:                                       ; preds = %282
  %284 = mul i64 %245, %.010711295
  %scevgep = getelementptr i8, ptr %8, i64 %284
  %285 = shl nuw i64 %283, 3
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep, i8 0, i64 %285, i1 false), !tbaa !15
  br label %._crit_edge1225

._crit_edge1225:                                  ; preds = %.lr.ph1224, %282
  %286 = mul i64 %257, %235
  store i64 %286, ptr %19, align 8, !tbaa !5
  %287 = getelementptr inbounds %struct.complex, ptr %42, i64 %286
  store <2 x float> <float 1.000000e+00, float 0.000000e+00>, ptr %287, align 4, !tbaa !15
  br label %.loopexit1191

288:                                              ; preds = %274, %.thread1171
  %289 = load i64, ptr %25, align 8, !tbaa !5
  %290 = mul i64 %289, %33
  store i64 %290, ptr %19, align 8, !tbaa !5
  %291 = mul i64 %289, %37
  %292 = getelementptr inbounds %struct.complex, ptr %35, i64 %290
  %293 = load float, ptr %292, align 4, !tbaa !17
  %294 = call double @r_imag(ptr noundef nonnull %292) #6
  %295 = fptrunc double %294 to float
  %296 = insertelement <2 x float> poison, float %293, i64 0
  %297 = insertelement <2 x float> %296, float %295, i64 1
  %298 = fcmp oge <2 x float> %297, zeroinitializer
  %299 = fneg <2 x float> %297
  %300 = select <2 x i1> %298, <2 x float> %297, <2 x float> %299
  %301 = fpext <2 x float> %300 to <2 x double>
  %shift1828 = shufflevector <2 x double> %301, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %302 = fadd <2 x double> %shift1828, %301
  %303 = extractelement <2 x double> %302, i64 0
  %304 = fmul double %303, %236
  %305 = fptrunc double %304 to float
  %306 = getelementptr inbounds %struct.complex, ptr %39, i64 %291
  %307 = load float, ptr %306, align 4, !tbaa !17
  %308 = fcmp oge float %307, 0.000000e+00
  %309 = fneg float %307
  %310 = select i1 %308, float %307, float %309
  %311 = fmul float %232, %310
  %312 = fcmp ole float %311, %305
  %313 = select i1 %312, float %305, float %311
  %314 = load float, ptr %30, align 4
  %315 = fcmp oge float %313, %314
  %316 = select i1 %315, float %313, float %314
  %317 = fdiv float 1.000000e+00, %316
  %318 = load i64, ptr %25, align 8, !tbaa !5
  %319 = mul i64 %318, %33
  %320 = getelementptr inbounds %struct.complex, ptr %35, i64 %319
  %321 = load <2 x float>, ptr %320, align 4, !tbaa !15
  %322 = insertelement <2 x float> poison, float %317, i64 0
  %323 = shufflevector <2 x float> %322, <2 x float> poison, <2 x i32> zeroinitializer
  %324 = fmul <2 x float> %321, %323
  store <2 x float> %324, ptr %21, align 8, !tbaa !15
  %325 = fmul <2 x float> %252, %324
  store <2 x float> %325, ptr %29, align 8, !tbaa !15
  %326 = mul i64 %318, %37
  store i64 %326, ptr %19, align 8, !tbaa !5
  %327 = getelementptr inbounds %struct.complex, ptr %39, i64 %326
  %328 = load float, ptr %327, align 4, !tbaa !17
  %329 = fmul float %317, %328
  %330 = fmul float %232, %329
  %331 = fmul float %228, %330
  %332 = fmul <2 x float> %250, %325
  store <2 x float> %332, ptr %20, align 8, !tbaa !15
  store <2 x float> %332, ptr %28, align 8, !tbaa !15
  %333 = fcmp oge float %330, 0.000000e+00
  %334 = fneg float %330
  %335 = select i1 %333, float %330, float %334
  %336 = fpext float %335 to double
  %337 = fcmp ult float %335, %314
  br i1 %337, label %343, label %338

338:                                              ; preds = %288
  %339 = fcmp oge float %331, 0.000000e+00
  %340 = fneg float %331
  %341 = select i1 %339, float %331, float %340
  %342 = fcmp olt float %341, %122
  br label %343

343:                                              ; preds = %338, %288
  %344 = phi i1 [ false, %288 ], [ %342, %338 ]
  %345 = call double @r_imag(ptr noundef nonnull %29) #6
  %346 = fptrunc double %345 to float
  %347 = insertelement <2 x float> %325, float %346, i64 1
  %348 = fcmp oge <2 x float> %347, zeroinitializer
  %349 = fneg <2 x float> %347
  %350 = select <2 x i1> %348, <2 x float> %347, <2 x float> %349
  %351 = fpext <2 x float> %350 to <2 x double>
  %shift1829 = shufflevector <2 x double> %351, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %352 = fadd <2 x double> %shift1829, %351
  %353 = extractelement <2 x double> %352, i64 0
  %354 = load float, ptr %30, align 4, !tbaa !15
  %355 = fpext float %354 to double
  %356 = fcmp ult double %353, %355
  br i1 %356, label %.thread1468, label %357

357:                                              ; preds = %343
  %358 = load float, ptr %28, align 8, !tbaa !17
  %359 = call double @r_imag(ptr noundef nonnull %28) #6
  %360 = fptrunc double %359 to float
  %361 = insertelement <2 x float> poison, float %358, i64 0
  %362 = insertelement <2 x float> %361, float %360, i64 1
  %363 = fcmp oge <2 x float> %362, zeroinitializer
  %364 = fneg <2 x float> %362
  %365 = select <2 x i1> %363, <2 x float> %362, <2 x float> %364
  %366 = fpext <2 x float> %365 to <2 x double>
  %shift1830 = shufflevector <2 x double> %366, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %367 = fadd <2 x double> %shift1830, %366
  %368 = extractelement <2 x double> %367, i64 0
  %369 = fcmp olt double %368, %239
  br i1 %344, label %370, label %.thread1450

.thread1468:                                      ; preds = %343
  br i1 %344, label %370, label %._crit_edge1429

370:                                              ; preds = %.thread1468, %357
  %371 = phi i1 [ false, %.thread1468 ], [ %369, %357 ]
  %372 = fdiv double %239, %336
  %373 = load float, ptr %26, align 4
  %374 = fcmp ole float %225, %373
  %375 = select i1 %374, float %225, float %373
  %376 = fpext float %375 to double
  %377 = fmul double %372, %376
  %378 = fptrunc double %377 to float
  br i1 %371, label %.thread1174, label %399

.thread1450:                                      ; preds = %357
  br i1 %369, label %.thread1174, label %._crit_edge1429

.thread1174:                                      ; preds = %.thread1450, %370
  %.010591452 = phi float [ 1.000000e+00, %.thread1450 ], [ %378, %370 ]
  %379 = load float, ptr %29, align 8, !tbaa !17
  %380 = call double @r_imag(ptr noundef nonnull %29) #6
  %381 = fptrunc double %380 to float
  %382 = insertelement <2 x float> poison, float %379, i64 0
  %383 = insertelement <2 x float> %382, float %381, i64 1
  %384 = fcmp oge <2 x float> %383, zeroinitializer
  %385 = fneg <2 x float> %383
  %386 = select <2 x i1> %384, <2 x float> %383, <2 x float> %385
  %387 = fpext <2 x float> %386 to <2 x double>
  %shift1831 = shufflevector <2 x double> %387, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %388 = fadd <2 x double> %shift1831, %387
  %389 = extractelement <2 x double> %388, i64 0
  %390 = fdiv double %239, %389
  %391 = load float, ptr %26, align 4
  %392 = fcmp ole float %229, %391
  %393 = select i1 %392, float %229, float %391
  %394 = fpext float %393 to double
  %395 = fmul double %390, %394
  %396 = fptrunc double %395 to float
  %397 = fcmp oge float %.010591452, %396
  %398 = select i1 %397, float %.010591452, float %396
  br label %400

399:                                              ; preds = %370
  br i1 %344, label %400, label %._crit_edge1429

._crit_edge1429:                                  ; preds = %.thread1468, %.thread1450, %399
  %.pre = load float, ptr %28, align 8, !tbaa !17
  br label %443

400:                                              ; preds = %.thread1174, %399
  %401 = phi i1 [ true, %.thread1174 ], [ false, %399 ]
  %.110601177 = phi float [ %398, %.thread1174 ], [ %378, %399 ]
  %402 = fcmp oge float %331, 0.000000e+00
  %403 = fneg float %331
  %404 = select i1 %402, float %331, float %403
  %405 = fcmp ole float %404, 1.000000e+00
  %406 = select i1 %405, float 1.000000e+00, float %404
  %407 = load float, ptr %28, align 8, !tbaa !17
  %408 = call double @r_imag(ptr noundef nonnull %28) #6
  %409 = fptrunc double %408 to float
  %410 = insertelement <2 x float> poison, float %407, i64 0
  %411 = insertelement <2 x float> %410, float %409, i64 1
  %412 = fcmp oge <2 x float> %411, zeroinitializer
  %413 = fneg <2 x float> %411
  %414 = select <2 x i1> %412, <2 x float> %411, <2 x float> %413
  %shift1832 = shufflevector <2 x float> %414, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %415 = fadd <2 x float> %414, %shift1832
  %416 = extractelement <2 x float> %415, i64 0
  %417 = load float, ptr %30, align 4, !tbaa !15
  %418 = fpext float %417 to double
  %419 = fcmp oge float %406, %416
  %420 = select i1 %419, float %406, float %416
  %421 = fpext float %420 to double
  %422 = fmul double %418, %421
  %423 = fdiv double 1.000000e+00, %422
  %424 = fptrunc double %423 to float
  %425 = fcmp ole float %.110601177, %424
  %426 = select i1 %425, float %.110601177, float %424
  %427 = fmul float %330, %426
  %428 = fmul float %228, %427
  %429 = fmul float %331, %426
  %.01049 = select i1 %344, float %428, float %429
  br i1 %401, label %430, label %437

430:                                              ; preds = %400
  %431 = load <2 x float>, ptr %29, align 8, !tbaa !15
  %432 = insertelement <2 x float> poison, float %426, i64 0
  %433 = shufflevector <2 x float> %432, <2 x float> poison, <2 x i32> zeroinitializer
  %434 = fmul <2 x float> %433, %431
  store <2 x float> %434, ptr %21, align 8, !tbaa !15
  %435 = fmul <2 x float> %250, %434
  store <2 x float> %435, ptr %20, align 8, !tbaa !15
  store <2 x float> %435, ptr %28, align 8, !tbaa !15
  %436 = extractelement <2 x float> %435, i64 0
  br label %443

437:                                              ; preds = %400
  %438 = load <2 x float>, ptr %28, align 8, !tbaa !15
  %439 = insertelement <2 x float> poison, float %426, i64 0
  %440 = shufflevector <2 x float> %439, <2 x float> poison, <2 x i32> zeroinitializer
  %441 = fmul <2 x float> %440, %438
  store <2 x float> %441, ptr %20, align 8, !tbaa !15
  store <2 x float> %441, ptr %28, align 8, !tbaa !15
  %442 = extractelement <2 x float> %441, i64 0
  br label %443

443:                                              ; preds = %._crit_edge1429, %430, %437
  %444 = phi float [ %436, %430 ], [ %442, %437 ], [ %.pre, %._crit_edge1429 ]
  %.11050 = phi float [ %.01049, %430 ], [ %.01049, %437 ], [ %331, %._crit_edge1429 ]
  %445 = fcmp oge float %.11050, 0.000000e+00
  %446 = fneg float %.11050
  %447 = select i1 %445, float %.11050, float %446
  %448 = fcmp oge float %444, 0.000000e+00
  %449 = fneg float %444
  %450 = select i1 %448, float %444, float %449
  %451 = call double @r_imag(ptr noundef nonnull %28) #6
  %452 = fptrunc double %451 to float
  %453 = fcmp oge float %452, 0.000000e+00
  %454 = fneg float %452
  %455 = select i1 %453, float %452, float %454
  %456 = fadd float %450, %455
  %457 = load i64, ptr %3, align 8, !tbaa !5
  %.not11321228 = icmp slt i64 %457, 1
  br i1 %.not11321228, label %._crit_edge1232, label %.lr.ph1231.preheader

.lr.ph1231.preheader:                             ; preds = %443
  %458 = shl nuw i64 %457, 3
  call void @llvm.memset.p0.i64(ptr align 4 %14, i8 0, i64 %458, i1 false), !tbaa !15
  br label %._crit_edge1232

._crit_edge1232:                                  ; preds = %.lr.ph1231.preheader, %443
  %459 = load i64, ptr %25, align 8, !tbaa !5
  %460 = getelementptr inbounds %struct.complex, ptr %46, i64 %459
  store <2 x float> <float 1.000000e+00, float 0.000000e+00>, ptr %460, align 4, !tbaa !15
  %461 = insertelement <2 x float> poison, float %447, i64 0
  %462 = insertelement <2 x float> %461, float %456, i64 1
  %463 = fmul <2 x float> %462, %248
  %464 = fmul <2 x float> %223, %463
  %465 = extractelement <2 x float> %464, i64 0
  %466 = extractelement <2 x float> %464, i64 1
  %467 = fcmp oge float %465, %466
  %468 = select i1 %467, float %465, float %466
  %469 = load float, ptr %30, align 4
  %470 = fcmp oge float %468, %469
  %471 = select i1 %470, float %468, float %469
  %472 = fpext float %471 to double
  store i64 %457, ptr %19, align 8, !tbaa !5
  %.not1133.not1263 = icmp slt i64 %459, %457
  br i1 %.not1133.not1263, label %.lr.ph1268.preheader, label %._crit_edge1269

.lr.ph1268.preheader:                             ; preds = %._crit_edge1232
  %473 = add i64 %459, 1
  %474 = insertelement <2 x float> poison, float %.11050, i64 0
  %475 = shufflevector <2 x float> %474, <2 x float> poison, <2 x i32> zeroinitializer
  br label %.lr.ph1268

.lr.ph1268:                                       ; preds = %.lr.ph1268.preheader, %720
  %indvar = phi i64 [ 0, %.lr.ph1268.preheader ], [ %indvar.next, %720 ]
  %indvars.iv.in = phi i64 [ %459, %.lr.ph1268.preheader ], [ %indvars.iv, %720 ]
  %.010631265 = phi float [ 1.000000e+00, %.lr.ph1268.preheader ], [ %739, %720 ]
  %.31088.in1264 = phi i64 [ %459, %.lr.ph1268.preheader ], [ %.310881266, %720 ]
  %476 = add i64 %473, %indvar
  %477 = add i64 %473, %indvar
  %478 = add i64 %473, %indvar
  %479 = add i64 %473, %indvar
  %indvars.iv = add i64 %indvars.iv.in, 1
  %.310881266 = add nsw i64 %.31088.in1264, 1
  %480 = fdiv float 1.000000e+00, %.010631265
  %481 = getelementptr float, ptr %15, i64 %.31088.in1264
  %482 = load float, ptr %481, align 4, !tbaa !15
  %483 = load i64, ptr %3, align 8, !tbaa !5
  %484 = getelementptr float, ptr %47, i64 %483
  %485 = getelementptr float, ptr %484, i64 %.310881266
  %486 = load float, ptr %485, align 4, !tbaa !15
  %487 = fmul float %456, %486
  %488 = call float @llvm.fmuladd.f32(float %447, float %482, float %487)
  %489 = fmul float %124, %480
  %490 = fcmp ogt float %488, %489
  %.pre1430 = load i64, ptr %25, align 8, !tbaa !5
  br i1 %490, label %491, label %.loopexit1190

491:                                              ; preds = %.lr.ph1268
  %.not11381233 = icmp sgt i64 %.pre1430, %.31088.in1264
  br i1 %.not11381233, label %.loopexit1190, label %.lr.ph1236.preheader

.lr.ph1236.preheader:                             ; preds = %491
  %492 = sub i64 %478, %.pre1430
  %min.iters.check1603 = icmp ult i64 %492, 14
  br i1 %min.iters.check1603, label %.lr.ph1236.preheader1878, label %vector.scevcheck1590

vector.scevcheck1590:                             ; preds = %.lr.ph1236.preheader
  %493 = sub i64 %indvars.iv.in, %.pre1430
  %494 = shl i64 %.pre1430, 3
  %scevgep1592 = getelementptr i8, ptr %scevgep1591, i64 %494
  %mul.result1594 = shl i64 %493, 3
  %495 = getelementptr i8, ptr %scevgep1592, i64 %mul.result1594
  %496 = icmp ult ptr %495, %scevgep1592
  %scevgep1597 = getelementptr i8, ptr %scevgep1596, i64 %494
  %mul.result1599 = shl i64 %493, 3
  %mul.overflow1600 = icmp ugt i64 %493, 2305843009213693951
  %497 = getelementptr i8, ptr %scevgep1597, i64 %mul.result1599
  %498 = icmp ult ptr %497, %scevgep1597
  %499 = or i1 %498, %mul.overflow1600
  %500 = or i1 %496, %499
  br i1 %500, label %.lr.ph1236.preheader1878, label %vector.ph1604

vector.ph1604:                                    ; preds = %vector.scevcheck1590
  %n.vec1606 = and i64 %492, -2
  %ind.end1607 = add i64 %.pre1430, %n.vec1606
  %broadcast.splatinsert1615 = insertelement <2 x float> poison, float %480, i64 0
  %broadcast.splat1616 = shufflevector <2 x float> %broadcast.splatinsert1615, <2 x float> poison, <2 x i32> zeroinitializer
  %501 = getelementptr %struct.complex, ptr %46, i64 %.pre1430
  br label %vector.body1609

vector.body1609:                                  ; preds = %vector.body1609, %vector.ph1604
  %index1610 = phi i64 [ 0, %vector.ph1604 ], [ %index.next1618, %vector.body1609 ]
  %502 = getelementptr %struct.complex, ptr %501, i64 %index1610
  %wide.vec1612 = load <4 x float>, ptr %502, align 4, !tbaa !15
  %strided.vec1613 = shufflevector <4 x float> %wide.vec1612, <4 x float> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec1614 = shufflevector <4 x float> %wide.vec1612, <4 x float> poison, <2 x i32> <i32 1, i32 3>
  %503 = fmul <2 x float> %broadcast.splat1616, %strided.vec1613
  %504 = fmul <2 x float> %broadcast.splat1616, %strided.vec1614
  %interleaved.vec1617 = shufflevector <2 x float> %503, <2 x float> %504, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x float> %interleaved.vec1617, ptr %502, align 4, !tbaa !15
  %index.next1618 = add nuw i64 %index1610, 2
  %505 = icmp eq i64 %index.next1618, %n.vec1606
  br i1 %505, label %middle.block1601, label %vector.body1609, !llvm.loop !21

middle.block1601:                                 ; preds = %vector.body1609
  %cmp.n1619 = icmp eq i64 %492, %n.vec1606
  %506 = shufflevector <2 x float> %503, <2 x float> %504, <2 x i32> <i32 1, i32 3>
  br i1 %cmp.n1619, label %..loopexit1190_crit_edge, label %.lr.ph1236.preheader1878

.lr.ph1236.preheader1878:                         ; preds = %middle.block1601, %vector.scevcheck1590, %.lr.ph1236.preheader
  %.210791234.ph = phi i64 [ %.pre1430, %vector.scevcheck1590 ], [ %.pre1430, %.lr.ph1236.preheader ], [ %ind.end1607, %middle.block1601 ]
  %507 = sub i64 %477, %.210791234.ph
  %508 = sub i64 %.31088.in1264, %.210791234.ph
  %xtraiter = and i64 %507, 3
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph1236.prol.loopexit, label %.lr.ph1236.prol.preheader

.lr.ph1236.prol.preheader:                        ; preds = %.lr.ph1236.preheader1878
  %509 = insertelement <2 x float> poison, float %480, i64 0
  %510 = shufflevector <2 x float> %509, <2 x float> poison, <2 x i32> zeroinitializer
  br label %.lr.ph1236.prol

.lr.ph1236.prol:                                  ; preds = %.lr.ph1236.prol, %.lr.ph1236.prol.preheader
  %.210791234.prol = phi i64 [ %514, %.lr.ph1236.prol ], [ %.210791234.ph, %.lr.ph1236.prol.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph1236.prol ], [ 0, %.lr.ph1236.prol.preheader ]
  %511 = getelementptr inbounds %struct.complex, ptr %46, i64 %.210791234.prol
  %512 = load <2 x float>, ptr %511, align 4, !tbaa !15
  %513 = fmul <2 x float> %510, %512
  store <2 x float> %513, ptr %511, align 4, !tbaa !15
  %514 = add i64 %.210791234.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.ph1236.prol.loopexit, label %.lr.ph1236.prol, !llvm.loop !22

.lr.ph1236.prol.loopexit:                         ; preds = %.lr.ph1236.prol, %.lr.ph1236.preheader1878
  %.lcssa1881.unr = phi <2 x float> [ poison, %.lr.ph1236.preheader1878 ], [ %513, %.lr.ph1236.prol ]
  %.210791234.unr = phi i64 [ %.210791234.ph, %.lr.ph1236.preheader1878 ], [ %514, %.lr.ph1236.prol ]
  %515 = icmp ult i64 %508, 3
  br i1 %515, label %..loopexit1190_crit_edge, label %.lr.ph1236.preheader1878.new

.lr.ph1236.preheader1878.new:                     ; preds = %.lr.ph1236.prol.loopexit
  %516 = insertelement <2 x float> poison, float %480, i64 0
  %517 = shufflevector <2 x float> %516, <2 x float> poison, <2 x i32> zeroinitializer
  %518 = insertelement <2 x float> poison, float %480, i64 0
  %519 = shufflevector <2 x float> %518, <2 x float> poison, <2 x i32> zeroinitializer
  %520 = insertelement <2 x float> poison, float %480, i64 0
  %521 = shufflevector <2 x float> %520, <2 x float> poison, <2 x i32> zeroinitializer
  %522 = insertelement <2 x float> poison, float %480, i64 0
  %523 = shufflevector <2 x float> %522, <2 x float> poison, <2 x i32> zeroinitializer
  br label %.lr.ph1236

.lr.ph1236:                                       ; preds = %.lr.ph1236, %.lr.ph1236.preheader1878.new
  %.210791234 = phi i64 [ %.210791234.unr, %.lr.ph1236.preheader1878.new ], [ %536, %.lr.ph1236 ]
  %524 = getelementptr inbounds %struct.complex, ptr %46, i64 %.210791234
  %525 = load <2 x float>, ptr %524, align 4, !tbaa !15
  %526 = fmul <2 x float> %517, %525
  store <2 x float> %526, ptr %524, align 4, !tbaa !15
  %527 = getelementptr %struct.complex, ptr %14, i64 %.210791234
  %528 = load <2 x float>, ptr %527, align 4, !tbaa !15
  %529 = fmul <2 x float> %519, %528
  store <2 x float> %529, ptr %527, align 4, !tbaa !15
  %gep1950 = getelementptr %struct.complex, ptr %invariant.gep, i64 %.210791234
  %530 = load <2 x float>, ptr %gep1950, align 4, !tbaa !15
  %531 = fmul <2 x float> %521, %530
  store <2 x float> %531, ptr %gep1950, align 4, !tbaa !15
  %532 = add i64 %.210791234, 3
  %533 = getelementptr inbounds %struct.complex, ptr %46, i64 %532
  %534 = load <2 x float>, ptr %533, align 4, !tbaa !15
  %535 = fmul <2 x float> %523, %534
  store <2 x float> %535, ptr %533, align 4, !tbaa !15
  %536 = add i64 %.210791234, 4
  %exitcond1418.not.3 = icmp eq i64 %532, %indvars.iv.in
  br i1 %exitcond1418.not.3, label %..loopexit1190_crit_edge, label %.lr.ph1236, !llvm.loop !24

..loopexit1190_crit_edge:                         ; preds = %.lr.ph1236.prol.loopexit, %.lr.ph1236, %middle.block1601
  %537 = phi <2 x float> [ %506, %middle.block1601 ], [ %.lcssa1881.unr, %.lr.ph1236.prol.loopexit ], [ %535, %.lr.ph1236 ]
  store <2 x float> %537, ptr %20, align 8, !tbaa !15
  br label %.loopexit1190

.loopexit1190:                                    ; preds = %491, %..loopexit1190_crit_edge, %.lr.ph1268
  %.11064 = phi float [ %.010631265, %.lr.ph1268 ], [ 1.000000e+00, %..loopexit1190_crit_edge ], [ 1.000000e+00, %491 ]
  %.not11391238 = icmp sgt i64 %.pre1430, %.31088.in1264
  br i1 %.not11391238, label %._crit_edge1246, label %.lr.ph1245

.lr.ph1245:                                       ; preds = %.loopexit1190
  %538 = mul nsw i64 %.310881266, %32
  %invariant.gep1251 = getelementptr %struct.complex, ptr %35, i64 %538
  %539 = mul nsw i64 %.310881266, %36
  %invariant.gep1253 = getelementptr %struct.complex, ptr %39, i64 %539
  br label %540

540:                                              ; preds = %.lr.ph1245, %540
  %.310801239 = phi i64 [ %.pre1430, %.lr.ph1245 ], [ %568, %540 ]
  %541 = phi <2 x float> [ zeroinitializer, %.lr.ph1245 ], [ %555, %540 ]
  %542 = phi <2 x float> [ zeroinitializer, %.lr.ph1245 ], [ %567, %540 ]
  %gep1252 = getelementptr %struct.complex, ptr %invariant.gep1251, i64 %.310801239
  call void @r_cnjg(ptr noundef nonnull %22, ptr noundef %gep1252) #6
  %543 = load float, ptr %22, align 8, !tbaa !17
  %544 = getelementptr inbounds %struct.complex, ptr %46, i64 %.310801239
  %545 = load float, ptr %240, align 4, !tbaa !25
  %546 = fneg float %545
  %547 = load <2 x float>, ptr %544, align 4, !tbaa !15
  %548 = insertelement <2 x float> poison, float %545, i64 0
  %549 = insertelement <2 x float> %548, float %546, i64 1
  %550 = fmul <2 x float> %547, %549
  %551 = shufflevector <2 x float> %550, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %552 = insertelement <2 x float> poison, float %543, i64 0
  %553 = shufflevector <2 x float> %552, <2 x float> poison, <2 x i32> zeroinitializer
  %554 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %553, <2 x float> %547, <2 x float> %551)
  store <2 x float> %554, ptr %21, align 8, !tbaa !15
  %555 = fadd <2 x float> %541, %554
  store <2 x float> %555, ptr %20, align 8, !tbaa !15
  %gep1254 = getelementptr %struct.complex, ptr %invariant.gep1253, i64 %.310801239
  call void @r_cnjg(ptr noundef nonnull %22, ptr noundef %gep1254) #6
  %556 = load float, ptr %22, align 8, !tbaa !17
  %557 = load float, ptr %240, align 4, !tbaa !25
  %558 = fneg float %557
  %559 = load <2 x float>, ptr %544, align 4, !tbaa !15
  %560 = insertelement <2 x float> poison, float %557, i64 0
  %561 = insertelement <2 x float> %560, float %558, i64 1
  %562 = fmul <2 x float> %559, %561
  %563 = shufflevector <2 x float> %562, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %564 = insertelement <2 x float> poison, float %556, i64 0
  %565 = shufflevector <2 x float> %564, <2 x float> poison, <2 x i32> zeroinitializer
  %566 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %565, <2 x float> %559, <2 x float> %563)
  store <2 x float> %566, ptr %21, align 8, !tbaa !15
  %567 = fadd <2 x float> %542, %566
  store <2 x float> %567, ptr %20, align 8, !tbaa !15
  %568 = add i64 %.310801239, 1
  %exitcond1419.not = icmp eq i64 %.310801239, %indvars.iv.in
  br i1 %exitcond1419.not, label %._crit_edge1246, label %540, !llvm.loop !26

._crit_edge1246:                                  ; preds = %540, %.loopexit1190
  %569 = phi <2 x float> [ zeroinitializer, %.loopexit1190 ], [ %555, %540 ]
  %570 = phi <2 x float> [ zeroinitializer, %.loopexit1190 ], [ %567, %540 ]
  %571 = fmul <2 x float> %475, %569
  store <2 x float> %571, ptr %21, align 8, !tbaa !15
  call void @r_cnjg(ptr noundef nonnull %23, ptr noundef nonnull %28) #6
  %572 = load float, ptr %23, align 8, !tbaa !17
  %573 = load float, ptr %241, align 4, !tbaa !25
  %574 = fneg float %573
  %575 = insertelement <2 x float> poison, float %573, i64 0
  %576 = insertelement <2 x float> %575, float %574, i64 1
  %577 = fmul <2 x float> %570, %576
  %578 = shufflevector <2 x float> %577, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %579 = insertelement <2 x float> poison, float %572, i64 0
  %580 = shufflevector <2 x float> %579, <2 x float> poison, <2 x i32> zeroinitializer
  %581 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %580, <2 x float> %570, <2 x float> %578)
  %582 = load <2 x float>, ptr %21, align 8, !tbaa !15
  %583 = fsub <2 x float> %582, %581
  store <2 x float> %583, ptr %20, align 8, !tbaa !15
  store <2 x float> %583, ptr %27, align 8, !tbaa !15
  %584 = mul i64 %.310881266, %33
  %585 = getelementptr inbounds %struct.complex, ptr %35, i64 %584
  %586 = mul i64 %.310881266, %37
  %587 = load float, ptr %28, align 8, !tbaa !17
  %588 = getelementptr inbounds %struct.complex, ptr %39, i64 %586
  %589 = load float, ptr %238, align 4, !tbaa !25
  %590 = fneg float %589
  %591 = load <2 x float>, ptr %585, align 4, !tbaa !15
  %592 = fmul <2 x float> %475, %591
  store <2 x float> %592, ptr %22, align 8, !tbaa !15
  %593 = load <2 x float>, ptr %588, align 4, !tbaa !15
  %594 = insertelement <2 x float> poison, float %589, i64 0
  %595 = insertelement <2 x float> %594, float %590, i64 1
  %596 = fmul <2 x float> %593, %595
  %597 = shufflevector <2 x float> %596, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %598 = insertelement <2 x float> poison, float %587, i64 0
  %599 = shufflevector <2 x float> %598, <2 x float> poison, <2 x i32> zeroinitializer
  %600 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %599, <2 x float> %593, <2 x float> %597)
  store <2 x float> %600, ptr %23, align 8, !tbaa !15
  %601 = fsub <2 x float> %592, %600
  store <2 x float> %601, ptr %21, align 8, !tbaa !15
  call void @r_cnjg(ptr noundef nonnull %20, ptr noundef nonnull %21) #6
  %602 = load <2 x float>, ptr %20, align 8, !tbaa !15
  store <2 x float> %602, ptr %24, align 8, !tbaa !15
  %603 = extractelement <2 x float> %602, i64 0
  %604 = fcmp oge float %603, 0.000000e+00
  %605 = fneg float %603
  %606 = select i1 %604, float %603, float %605
  %607 = fpext float %606 to double
  %608 = call double @r_imag(ptr noundef nonnull %24) #6
  %609 = fptrunc double %608 to float
  %610 = fcmp oge float %609, 0.000000e+00
  %611 = fneg float %609
  %612 = select i1 %610, float %609, float %611
  %613 = fpext float %612 to double
  %614 = fadd double %607, %613
  %615 = fcmp ugt double %614, %472
  br i1 %615, label %._crit_edge1246._crit_edge, label %616

._crit_edge1246._crit_edge:                       ; preds = %._crit_edge1246
  %.pre1431 = load float, ptr %24, align 8, !tbaa !17
  br label %617

616:                                              ; preds = %._crit_edge1246
  store float %471, ptr %20, align 8, !tbaa !17
  store float 0.000000e+00, ptr %237, align 4, !tbaa !25
  store float %471, ptr %24, align 8, !tbaa !17
  store float 0.000000e+00, ptr %243, align 4, !tbaa !25
  br label %617

617:                                              ; preds = %._crit_edge1246._crit_edge, %616
  %618 = phi float [ %.pre1431, %._crit_edge1246._crit_edge ], [ %471, %616 ]
  %619 = call double @r_imag(ptr noundef nonnull %24) #6
  %620 = fptrunc double %619 to float
  %621 = insertelement <2 x float> poison, float %618, i64 0
  %622 = insertelement <2 x float> %621, float %620, i64 1
  %623 = fcmp oge <2 x float> %622, zeroinitializer
  %624 = fneg <2 x float> %622
  %625 = select <2 x i1> %623, <2 x float> %622, <2 x float> %624
  %626 = fpext <2 x float> %625 to <2 x double>
  %shift1833 = shufflevector <2 x double> %626, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %627 = fadd <2 x double> %shift1833, %626
  %628 = extractelement <2 x double> %627, i64 0
  %629 = fcmp olt double %628, 1.000000e+00
  %.pre1433 = load float, ptr %27, align 8, !tbaa !17
  br i1 %629, label %630, label %720

630:                                              ; preds = %617
  %631 = call double @r_imag(ptr noundef nonnull %27) #6
  %632 = fptrunc double %631 to float
  %633 = insertelement <2 x float> poison, float %.pre1433, i64 0
  %634 = insertelement <2 x float> %633, float %632, i64 1
  %635 = fcmp oge <2 x float> %634, zeroinitializer
  %636 = fneg <2 x float> %634
  %637 = select <2 x i1> %635, <2 x float> %634, <2 x float> %636
  %638 = fpext <2 x float> %637 to <2 x double>
  %639 = load float, ptr %24, align 8, !tbaa !17
  %640 = call double @r_imag(ptr noundef nonnull %24) #6
  %641 = fptrunc double %640 to float
  %642 = insertelement <2 x float> poison, float %639, i64 0
  %643 = insertelement <2 x float> %642, float %641, i64 1
  %644 = fcmp oge <2 x float> %643, zeroinitializer
  %645 = fneg <2 x float> %643
  %646 = select <2 x i1> %644, <2 x float> %643, <2 x float> %645
  %647 = fpext <2 x float> %646 to <2 x double>
  %648 = shufflevector <2 x double> %638, <2 x double> %647, <2 x i32> <i32 0, i32 2>
  %649 = shufflevector <2 x double> %638, <2 x double> %647, <2 x i32> <i32 1, i32 3>
  %650 = fadd <2 x double> %648, %649
  %651 = extractelement <2 x double> %650, i64 1
  %652 = fmul double %651, %244
  %653 = extractelement <2 x double> %650, i64 0
  %654 = fcmp ult double %653, %652
  %.pre1432 = load float, ptr %27, align 8, !tbaa !17
  br i1 %654, label %720, label %655

655:                                              ; preds = %630
  %656 = fcmp oge float %.pre1432, 0.000000e+00
  %657 = fneg float %.pre1432
  %658 = select i1 %656, float %.pre1432, float %657
  %659 = fpext float %658 to double
  %660 = call double @r_imag(ptr noundef nonnull %27) #6
  %661 = fptrunc double %660 to float
  %662 = fcmp oge float %661, 0.000000e+00
  %663 = fneg float %661
  %664 = select i1 %662, float %661, float %663
  %665 = fpext float %664 to double
  %666 = fadd double %659, %665
  %667 = fdiv double 1.000000e+00, %666
  %668 = fptrunc double %667 to float
  %669 = load i64, ptr %25, align 8, !tbaa !5
  %.not11401255 = icmp sgt i64 %669, %.31088.in1264
  br i1 %.not11401255, label %._crit_edge1259, label %.lr.ph1258.preheader

.lr.ph1258.preheader:                             ; preds = %655
  %670 = sub i64 %479, %669
  %min.iters.check1573 = icmp ult i64 %670, 14
  br i1 %min.iters.check1573, label %.lr.ph1258.preheader1877, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %.lr.ph1258.preheader
  %671 = sub i64 %indvars.iv.in, %669
  %672 = shl i64 %669, 3
  %scevgep1565 = getelementptr i8, ptr %scevgep1564, i64 %672
  %mul.result = shl i64 %671, 3
  %673 = getelementptr i8, ptr %scevgep1565, i64 %mul.result
  %674 = icmp ult ptr %673, %scevgep1565
  %scevgep1567 = getelementptr i8, ptr %scevgep1566, i64 %672
  %mul.result1569 = shl i64 %671, 3
  %mul.overflow1570 = icmp ugt i64 %671, 2305843009213693951
  %675 = getelementptr i8, ptr %scevgep1567, i64 %mul.result1569
  %676 = icmp ult ptr %675, %scevgep1567
  %677 = or i1 %676, %mul.overflow1570
  %678 = or i1 %674, %677
  br i1 %678, label %.lr.ph1258.preheader1877, label %vector.ph1574

vector.ph1574:                                    ; preds = %vector.scevcheck
  %n.vec1576 = and i64 %670, -2
  %ind.end1577 = add i64 %669, %n.vec1576
  %broadcast.splatinsert1585 = insertelement <2 x float> poison, float %668, i64 0
  %679 = getelementptr %struct.complex, ptr %46, i64 %669
  %680 = shufflevector <2 x float> %broadcast.splatinsert1585, <2 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body1579

vector.body1579:                                  ; preds = %vector.body1579, %vector.ph1574
  %index1580 = phi i64 [ 0, %vector.ph1574 ], [ %index.next1588, %vector.body1579 ]
  %681 = getelementptr %struct.complex, ptr %679, i64 %index1580
  %682 = load <4 x float>, ptr %681, align 4, !tbaa !15
  %interleaved.vec1587 = fmul <4 x float> %682, %680
  store <4 x float> %interleaved.vec1587, ptr %681, align 4, !tbaa !15
  %index.next1588 = add nuw i64 %index1580, 2
  %683 = icmp eq i64 %index.next1588, %n.vec1576
  br i1 %683, label %middle.block1571, label %vector.body1579, !llvm.loop !27

middle.block1571:                                 ; preds = %vector.body1579
  %cmp.n1589 = icmp eq i64 %670, %n.vec1576
  br i1 %cmp.n1589, label %._crit_edge1259, label %.lr.ph1258.preheader1877

.lr.ph1258.preheader1877:                         ; preds = %middle.block1571, %vector.scevcheck, %.lr.ph1258.preheader
  %.410811256.ph = phi i64 [ %669, %vector.scevcheck ], [ %669, %.lr.ph1258.preheader ], [ %ind.end1577, %middle.block1571 ]
  %684 = sub i64 %476, %.410811256.ph
  %685 = sub i64 %indvars.iv.in, %.410811256.ph
  %xtraiter1893 = and i64 %684, 3
  %lcmp.mod1894.not = icmp eq i64 %xtraiter1893, 0
  br i1 %lcmp.mod1894.not, label %.lr.ph1258.prol.loopexit, label %.lr.ph1258.prol.preheader

.lr.ph1258.prol.preheader:                        ; preds = %.lr.ph1258.preheader1877
  %686 = insertelement <2 x float> poison, float %668, i64 0
  %687 = shufflevector <2 x float> %686, <2 x float> poison, <2 x i32> zeroinitializer
  br label %.lr.ph1258.prol

.lr.ph1258.prol:                                  ; preds = %.lr.ph1258.prol, %.lr.ph1258.prol.preheader
  %.410811256.prol = phi i64 [ %691, %.lr.ph1258.prol ], [ %.410811256.ph, %.lr.ph1258.prol.preheader ]
  %prol.iter1895 = phi i64 [ %prol.iter1895.next, %.lr.ph1258.prol ], [ 0, %.lr.ph1258.prol.preheader ]
  %688 = getelementptr inbounds %struct.complex, ptr %46, i64 %.410811256.prol
  %689 = load <2 x float>, ptr %688, align 4, !tbaa !15
  %690 = fmul <2 x float> %689, %687
  store <2 x float> %690, ptr %688, align 4, !tbaa !15
  %691 = add i64 %.410811256.prol, 1
  %prol.iter1895.next = add i64 %prol.iter1895, 1
  %prol.iter1895.cmp.not = icmp eq i64 %prol.iter1895.next, %xtraiter1893
  br i1 %prol.iter1895.cmp.not, label %.lr.ph1258.prol.loopexit, label %.lr.ph1258.prol, !llvm.loop !28

.lr.ph1258.prol.loopexit:                         ; preds = %.lr.ph1258.prol, %.lr.ph1258.preheader1877
  %.410811256.unr = phi i64 [ %.410811256.ph, %.lr.ph1258.preheader1877 ], [ %691, %.lr.ph1258.prol ]
  %692 = icmp ult i64 %685, 3
  br i1 %692, label %._crit_edge1259, label %.lr.ph1258.preheader1877.new

.lr.ph1258.preheader1877.new:                     ; preds = %.lr.ph1258.prol.loopexit
  %693 = insertelement <2 x float> poison, float %668, i64 0
  %694 = shufflevector <2 x float> %693, <2 x float> poison, <2 x i32> zeroinitializer
  %695 = insertelement <2 x float> poison, float %668, i64 0
  %696 = shufflevector <2 x float> %695, <2 x float> poison, <2 x i32> zeroinitializer
  %697 = insertelement <2 x float> poison, float %668, i64 0
  %698 = shufflevector <2 x float> %697, <2 x float> poison, <2 x i32> zeroinitializer
  %699 = insertelement <2 x float> poison, float %668, i64 0
  %700 = shufflevector <2 x float> %699, <2 x float> poison, <2 x i32> zeroinitializer
  br label %.lr.ph1258

.lr.ph1258:                                       ; preds = %.lr.ph1258, %.lr.ph1258.preheader1877.new
  %.410811256 = phi i64 [ %.410811256.unr, %.lr.ph1258.preheader1877.new ], [ %713, %.lr.ph1258 ]
  %701 = getelementptr inbounds %struct.complex, ptr %46, i64 %.410811256
  %702 = load <2 x float>, ptr %701, align 4, !tbaa !15
  %703 = fmul <2 x float> %702, %694
  store <2 x float> %703, ptr %701, align 4, !tbaa !15
  %704 = getelementptr %struct.complex, ptr %14, i64 %.410811256
  %705 = load <2 x float>, ptr %704, align 4, !tbaa !15
  %706 = fmul <2 x float> %705, %696
  store <2 x float> %706, ptr %704, align 4, !tbaa !15
  %gep1952 = getelementptr %struct.complex, ptr %invariant.gep1951, i64 %.410811256
  %707 = load <2 x float>, ptr %gep1952, align 4, !tbaa !15
  %708 = fmul <2 x float> %707, %698
  store <2 x float> %708, ptr %gep1952, align 4, !tbaa !15
  %709 = add i64 %.410811256, 3
  %710 = getelementptr inbounds %struct.complex, ptr %46, i64 %709
  %711 = load <2 x float>, ptr %710, align 4, !tbaa !15
  %712 = fmul <2 x float> %711, %700
  store <2 x float> %712, ptr %710, align 4, !tbaa !15
  %713 = add i64 %.410811256, 4
  %exitcond1420.not.3 = icmp eq i64 %709, %indvars.iv.in
  br i1 %exitcond1420.not.3, label %._crit_edge1259, label %.lr.ph1258, !llvm.loop !29

._crit_edge1259:                                  ; preds = %.lr.ph1258.prol.loopexit, %.lr.ph1258, %middle.block1571, %655
  %714 = fmul float %.11064, %668
  %715 = load <2 x float>, ptr %27, align 8, !tbaa !15
  %716 = insertelement <2 x float> poison, float %668, i64 0
  %717 = shufflevector <2 x float> %716, <2 x float> poison, <2 x i32> zeroinitializer
  %718 = fmul <2 x float> %715, %717
  store <2 x float> %718, ptr %20, align 8, !tbaa !15
  store <2 x float> %718, ptr %27, align 8, !tbaa !15
  %719 = extractelement <2 x float> %718, i64 0
  br label %720

720:                                              ; preds = %630, %._crit_edge1259, %617
  %721 = phi float [ %719, %._crit_edge1259 ], [ %.pre1432, %630 ], [ %.pre1433, %617 ]
  %.21065 = phi float [ %714, %._crit_edge1259 ], [ %.11064, %630 ], [ %.11064, %617 ]
  %722 = load float, ptr %242, align 4, !tbaa !25
  %723 = insertelement <2 x float> poison, float %721, i64 0
  %724 = insertelement <2 x float> %723, float %722, i64 1
  %725 = fneg <2 x float> %724
  store <2 x float> %725, ptr %21, align 8, !tbaa !15
  call void @cladiv_(ptr noundef nonnull %20, ptr noundef nonnull %21, ptr noundef nonnull %24) #6
  %726 = getelementptr %struct.complex, ptr %14, i64 %.31088.in1264
  %727 = load <2 x float>, ptr %20, align 8, !tbaa !15
  store <2 x float> %727, ptr %726, align 4, !tbaa !15
  %728 = extractelement <2 x float> %727, i64 0
  %729 = fcmp oge float %728, 0.000000e+00
  %730 = fneg float %728
  %731 = select i1 %729, float %728, float %730
  %732 = call double @r_imag(ptr noundef nonnull %726) #6
  %733 = fptrunc double %732 to float
  %734 = fcmp oge float %733, 0.000000e+00
  %735 = fneg float %733
  %736 = select i1 %734, float %733, float %735
  %737 = fadd float %731, %736
  %738 = fcmp oge float %.21065, %737
  %739 = select i1 %738, float %.21065, float %737
  %740 = load i64, ptr %19, align 8, !tbaa !5
  %.not1133.not = icmp slt i64 %.310881266, %740
  %indvar.next = add i64 %indvar, 1
  br i1 %.not1133.not, label %.lr.ph1268, label %._crit_edge1269, !llvm.loop !30

._crit_edge1269:                                  ; preds = %720, %._crit_edge1232
  br i1 %.not1122, label %750, label %741

741:                                              ; preds = %._crit_edge1269
  %742 = load i64, ptr %3, align 8, !tbaa !5
  %743 = add nsw i64 %742, 1
  %744 = load i64, ptr %25, align 8, !tbaa !5
  %745 = sub i64 %743, %744
  store i64 %745, ptr %19, align 8, !tbaa !5
  %746 = mul nsw i64 %744, %40
  %gep1292 = getelementptr %struct.complex, ptr %invariant.gep1291, i64 %746
  %747 = getelementptr inbounds %struct.complex, ptr %46, i64 %744
  %748 = getelementptr %struct.complex, ptr %14, i64 %742
  %749 = call i32 @f2c_cgemv(ptr noundef nonnull @.str.9, ptr noundef nonnull %3, ptr noundef nonnull %19, ptr noundef nonnull @c_b2, ptr noundef %gep1292, ptr noundef nonnull %9, ptr noundef nonnull %747, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b1, ptr noundef %748, ptr noundef nonnull @c__1) #6
  br label %752

750:                                              ; preds = %._crit_edge1269
  %751 = load i64, ptr %25, align 8, !tbaa !5
  br label %752

752:                                              ; preds = %750, %741
  %.01075 = phi i64 [ 1, %741 ], [ %751, %750 ]
  %.01067 = phi i64 [ 1, %741 ], [ 0, %750 ]
  %753 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %753, ptr %19, align 8, !tbaa !5
  %.not11351270 = icmp sgt i64 %.01075, %753
  br i1 %.not11351270, label %._crit_edge1275, label %.lr.ph1274

.lr.ph1274:                                       ; preds = %752, %.lr.ph1274
  %.310661272 = phi float [ %769, %.lr.ph1274 ], [ 0.000000e+00, %752 ]
  %.51271 = phi i64 [ %770, %.lr.ph1274 ], [ %.01075, %752 ]
  %754 = load i64, ptr %3, align 8, !tbaa !5
  %755 = mul nuw nsw i64 %754, %.01067
  %756 = getelementptr %struct.complex, ptr %46, i64 %755
  %757 = getelementptr %struct.complex, ptr %756, i64 %.51271
  %758 = load float, ptr %757, align 4, !tbaa !17
  %759 = call double @r_imag(ptr noundef nonnull %757) #6
  %760 = fptrunc double %759 to float
  %761 = insertelement <2 x float> poison, float %758, i64 0
  %762 = insertelement <2 x float> %761, float %760, i64 1
  %763 = fcmp oge <2 x float> %762, zeroinitializer
  %764 = fneg <2 x float> %762
  %765 = select <2 x i1> %763, <2 x float> %762, <2 x float> %764
  %shift1834 = shufflevector <2 x float> %765, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %766 = fadd <2 x float> %765, %shift1834
  %767 = extractelement <2 x float> %766, i64 0
  %768 = fcmp oge float %.310661272, %767
  %769 = select i1 %768, float %.310661272, float %767
  %770 = add nsw i64 %.51271, 1
  %771 = load i64, ptr %19, align 8, !tbaa !5
  %.not1135.not = icmp slt i64 %.51271, %771
  br i1 %.not1135.not, label %.lr.ph1274, label %._crit_edge1275, !llvm.loop !31

._crit_edge1275:                                  ; preds = %.lr.ph1274, %752
  %.31066.lcssa = phi float [ 0.000000e+00, %752 ], [ %769, %.lr.ph1274 ]
  %772 = load float, ptr %30, align 4, !tbaa !15
  %773 = fcmp ogt float %.31066.lcssa, %772
  br i1 %773, label %774, label %834

774:                                              ; preds = %._crit_edge1275
  %775 = fdiv float 1.000000e+00, %.31066.lcssa
  %776 = load i64, ptr %3, align 8, !tbaa !5
  %.not11361277 = icmp sgt i64 %.01075, %776
  br i1 %.not11361277, label %.loopexit1192, label %.lr.ph1280

.lr.ph1280:                                       ; preds = %774
  %777 = mul nsw i64 %257, %40
  %778 = mul nuw nsw i64 %776, %.01067
  %779 = getelementptr %struct.complex, ptr %46, i64 %778
  %invariant.gep1281 = getelementptr %struct.complex, ptr %42, i64 %777
  %780 = add i64 %776, 1
  %781 = sub i64 %780, %.01075
  %min.iters.check1552 = icmp ult i64 %781, 12
  br i1 %min.iters.check1552, label %scalar.ph1551.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph1280
  %782 = mul i64 %246, %.010711295
  %783 = shl i64 %.01075, 3
  %784 = add i64 %782, %783
  %scevgep1534 = getelementptr i8, ptr %scevgep1533, i64 %784
  %785 = mul i64 %40, %.010711295
  %786 = add i64 %776, %785
  %787 = shl i64 %786, 3
  %scevgep1536 = getelementptr i8, ptr %scevgep1535, i64 %787
  %788 = shl nuw nsw i64 %.01067, 3
  %789 = mul i64 %788, %776
  %790 = add i64 %789, %783
  %scevgep1538 = getelementptr i8, ptr %scevgep1537, i64 %790
  %791 = shl i64 %776, 3
  %792 = add nuw nsw i64 %.01067, 1
  %793 = mul i64 %791, %792
  %scevgep1540 = getelementptr i8, ptr %scevgep1539, i64 %793
  %scevgep1542 = getelementptr i8, ptr %scevgep1541, i64 %784
  %scevgep1543 = getelementptr i8, ptr %8, i64 %787
  %scevgep1545 = getelementptr i8, ptr %scevgep1544, i64 %790
  %scevgep1546 = getelementptr i8, ptr %14, i64 %793
  %bound0 = icmp ult ptr %scevgep1534, %scevgep1540
  %bound1 = icmp ult ptr %scevgep1538, %scevgep1536
  %found.conflict = and i1 %bound0, %bound1
  %bound01547 = icmp ult ptr %scevgep1542, %scevgep1546
  %bound11548 = icmp ult ptr %scevgep1545, %scevgep1543
  %found.conflict1549 = and i1 %bound01547, %bound11548
  %conflict.rdx = or i1 %found.conflict, %found.conflict1549
  br i1 %conflict.rdx, label %scalar.ph1551.preheader, label %vector.ph1553

vector.ph1553:                                    ; preds = %vector.memcheck
  %n.vec1555 = and i64 %781, -2
  %ind.end1556 = add i64 %.01075, %n.vec1555
  %broadcast.splatinsert = insertelement <2 x float> poison, float %775, i64 0
  %broadcast.splat = shufflevector <2 x float> %broadcast.splatinsert, <2 x float> poison, <2 x i32> zeroinitializer
  br label %vector.body1558

vector.body1558:                                  ; preds = %vector.body1558, %vector.ph1553
  %index1559 = phi i64 [ 0, %vector.ph1553 ], [ %index.next1562, %vector.body1558 ]
  %offset.idx1560 = add i64 %.01075, %index1559
  %794 = getelementptr %struct.complex, ptr %779, i64 %offset.idx1560
  %wide.vec = load <4 x float>, ptr %794, align 4, !tbaa !15
  %strided.vec = shufflevector <4 x float> %wide.vec, <4 x float> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec1561 = shufflevector <4 x float> %wide.vec, <4 x float> poison, <2 x i32> <i32 1, i32 3>
  %795 = fmul <2 x float> %broadcast.splat, %strided.vec
  %796 = fmul <2 x float> %broadcast.splat, %strided.vec1561
  %797 = getelementptr %struct.complex, ptr %invariant.gep1281, i64 %offset.idx1560
  %interleaved.vec = shufflevector <2 x float> %795, <2 x float> %796, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x float> %interleaved.vec, ptr %797, align 4, !tbaa !15
  %index.next1562 = add nuw i64 %index1559, 2
  %798 = icmp eq i64 %index.next1562, %n.vec1555
  br i1 %798, label %middle.block1550, label %vector.body1558, !llvm.loop !32

middle.block1550:                                 ; preds = %vector.body1558
  %cmp.n1563 = icmp eq i64 %781, %n.vec1555
  %799 = shufflevector <2 x float> %795, <2 x float> %796, <2 x i32> <i32 1, i32 3>
  br i1 %cmp.n1563, label %..loopexit1192_crit_edge, label %scalar.ph1551.preheader

scalar.ph1551.preheader:                          ; preds = %middle.block1550, %vector.memcheck, %.lr.ph1280
  %.61278.ph = phi i64 [ %.01075, %vector.memcheck ], [ %.01075, %.lr.ph1280 ], [ %ind.end1556, %middle.block1550 ]
  %800 = add i64 %776, 1
  %801 = sub i64 %800, %.61278.ph
  %802 = sub i64 %776, %.61278.ph
  %xtraiter1896 = and i64 %801, 3
  %lcmp.mod1897.not = icmp eq i64 %xtraiter1896, 0
  br i1 %lcmp.mod1897.not, label %scalar.ph1551.prol.loopexit, label %scalar.ph1551.prol.preheader

scalar.ph1551.prol.preheader:                     ; preds = %scalar.ph1551.preheader
  %803 = insertelement <2 x float> poison, float %775, i64 0
  %804 = shufflevector <2 x float> %803, <2 x float> poison, <2 x i32> zeroinitializer
  br label %scalar.ph1551.prol

scalar.ph1551.prol:                               ; preds = %scalar.ph1551.prol, %scalar.ph1551.prol.preheader
  %.61278.prol = phi i64 [ %808, %scalar.ph1551.prol ], [ %.61278.ph, %scalar.ph1551.prol.preheader ]
  %prol.iter1898 = phi i64 [ %prol.iter1898.next, %scalar.ph1551.prol ], [ 0, %scalar.ph1551.prol.preheader ]
  %805 = getelementptr %struct.complex, ptr %779, i64 %.61278.prol
  %806 = load <2 x float>, ptr %805, align 4, !tbaa !15
  %807 = fmul <2 x float> %804, %806
  %gep1282.prol = getelementptr %struct.complex, ptr %invariant.gep1281, i64 %.61278.prol
  store <2 x float> %807, ptr %gep1282.prol, align 4, !tbaa !15
  %808 = add i64 %.61278.prol, 1
  %prol.iter1898.next = add i64 %prol.iter1898, 1
  %prol.iter1898.cmp.not = icmp eq i64 %prol.iter1898.next, %xtraiter1896
  br i1 %prol.iter1898.cmp.not, label %scalar.ph1551.prol.loopexit, label %scalar.ph1551.prol, !llvm.loop !33

scalar.ph1551.prol.loopexit:                      ; preds = %scalar.ph1551.prol, %scalar.ph1551.preheader
  %.lcssa1887.unr = phi <2 x float> [ poison, %scalar.ph1551.preheader ], [ %807, %scalar.ph1551.prol ]
  %.61278.unr = phi i64 [ %.61278.ph, %scalar.ph1551.preheader ], [ %808, %scalar.ph1551.prol ]
  %809 = icmp ult i64 %802, 3
  br i1 %809, label %..loopexit1192_crit_edge, label %scalar.ph1551.preheader.new

scalar.ph1551.preheader.new:                      ; preds = %scalar.ph1551.prol.loopexit
  %810 = insertelement <2 x float> poison, float %775, i64 0
  %811 = shufflevector <2 x float> %810, <2 x float> poison, <2 x i32> zeroinitializer
  %812 = insertelement <2 x float> poison, float %775, i64 0
  %813 = shufflevector <2 x float> %812, <2 x float> poison, <2 x i32> zeroinitializer
  %814 = insertelement <2 x float> poison, float %775, i64 0
  %815 = shufflevector <2 x float> %814, <2 x float> poison, <2 x i32> zeroinitializer
  %816 = insertelement <2 x float> poison, float %775, i64 0
  %817 = shufflevector <2 x float> %816, <2 x float> poison, <2 x i32> zeroinitializer
  br label %scalar.ph1551

scalar.ph1551:                                    ; preds = %scalar.ph1551, %scalar.ph1551.preheader.new
  %.61278 = phi i64 [ %.61278.unr, %scalar.ph1551.preheader.new ], [ %833, %scalar.ph1551 ]
  %818 = getelementptr %struct.complex, ptr %779, i64 %.61278
  %819 = load <2 x float>, ptr %818, align 4, !tbaa !15
  %820 = fmul <2 x float> %811, %819
  %gep1282 = getelementptr %struct.complex, ptr %invariant.gep1281, i64 %.61278
  store <2 x float> %820, ptr %gep1282, align 4, !tbaa !15
  %821 = add i64 %.61278, 1
  %822 = getelementptr %struct.complex, ptr %779, i64 %821
  %823 = load <2 x float>, ptr %822, align 4, !tbaa !15
  %824 = fmul <2 x float> %813, %823
  %gep1282.1 = getelementptr %struct.complex, ptr %invariant.gep1281, i64 %821
  store <2 x float> %824, ptr %gep1282.1, align 4, !tbaa !15
  %825 = add i64 %.61278, 2
  %826 = getelementptr %struct.complex, ptr %779, i64 %825
  %827 = load <2 x float>, ptr %826, align 4, !tbaa !15
  %828 = fmul <2 x float> %815, %827
  %gep1282.2 = getelementptr %struct.complex, ptr %invariant.gep1281, i64 %825
  store <2 x float> %828, ptr %gep1282.2, align 4, !tbaa !15
  %829 = add i64 %.61278, 3
  %830 = getelementptr %struct.complex, ptr %779, i64 %829
  %831 = load <2 x float>, ptr %830, align 4, !tbaa !15
  %832 = fmul <2 x float> %817, %831
  %gep1282.3 = getelementptr %struct.complex, ptr %invariant.gep1281, i64 %829
  store <2 x float> %832, ptr %gep1282.3, align 4, !tbaa !15
  %833 = add i64 %.61278, 4
  %exitcond1421.not.3 = icmp eq i64 %829, %776
  br i1 %exitcond1421.not.3, label %..loopexit1192_crit_edge, label %scalar.ph1551, !llvm.loop !34

834:                                              ; preds = %._crit_edge1275
  %835 = load i64, ptr %3, align 8, !tbaa !5
  %836 = add nsw i64 %835, 1
  br label %.loopexit1192

..loopexit1192_crit_edge:                         ; preds = %scalar.ph1551.prol.loopexit, %scalar.ph1551, %middle.block1550
  %837 = phi <2 x float> [ %799, %middle.block1550 ], [ %.lcssa1887.unr, %scalar.ph1551.prol.loopexit ], [ %832, %scalar.ph1551 ]
  store <2 x float> %837, ptr %20, align 8, !tbaa !15
  br label %.loopexit1192

.loopexit1192:                                    ; preds = %774, %..loopexit1192_crit_edge, %834
  %.11076 = phi i64 [ %836, %834 ], [ %.01075, %..loopexit1192_crit_edge ], [ %.01075, %774 ]
  %838 = add nsw i64 %.11076, -1
  store i64 %838, ptr %19, align 8, !tbaa !5
  %.not1137.not1285 = icmp sgt i64 %.11076, 1
  br i1 %.not1137.not1285, label %.lr.ph1288, label %.loopexit1191

.lr.ph1288:                                       ; preds = %.loopexit1192
  %839 = mul i64 %245, %.010711295
  %scevgep1422 = getelementptr i8, ptr %8, i64 %839
  %840 = shl i64 %.11076, 3
  %841 = add i64 %840, -8
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep1422, i8 0, i64 %841, i1 false), !tbaa !15
  br label %.loopexit1191

.loopexit1191:                                    ; preds = %.lr.ph1288, %.loopexit1192, %._crit_edge1225, %254
  %.11072 = phi i64 [ %257, %._crit_edge1225 ], [ %.010711295, %254 ], [ %257, %.loopexit1192 ], [ %257, %.lr.ph1288 ]
  %842 = load i64, ptr %25, align 8, !tbaa !5
  %843 = add nsw i64 %842, 1
  store i64 %843, ptr %25, align 8, !tbaa !5
  %844 = load i64, ptr %18, align 8, !tbaa !5
  %.not1116.not = icmp slt i64 %842, %844
  br i1 %.not1116.not, label %253, label %.loopexit1193, !llvm.loop !35

.loopexit1193:                                    ; preds = %.loopexit1191, %233, %._crit_edge1218
  br i1 %.not11121153, label %.loopexit1189, label %845

845:                                              ; preds = %.loopexit1193
  %846 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %846, ptr %25, align 8, !tbaa !5
  %847 = icmp sgt i64 %846, 0
  br i1 %847, label %.lr.ph1380, label %.loopexit1189

.lr.ph1380:                                       ; preds = %845
  %848 = add nsw i64 %.2108414411449, 1
  %849 = add i64 %43, 1
  %850 = fpext float %228 to double
  %851 = getelementptr inbounds i8, ptr %20, i64 4
  %852 = getelementptr inbounds i8, ptr %28, i64 4
  %853 = fpext float %122 to double
  %854 = getelementptr inbounds i8, ptr %24, i64 4
  %855 = fpext float %124 to double
  %scevgep1622 = getelementptr i8, ptr %10, i64 -4
  %scevgep1625 = getelementptr i8, ptr %14, i64 -4
  %scevgep1627 = getelementptr i8, ptr %10, i64 4
  %scevgep1630 = getelementptr i8, ptr %14, i64 4
  %856 = mul i64 %32, -8
  %857 = shl i64 %32, 3
  %858 = sub nuw nsw i64 -8, %857
  %859 = mul i64 %36, -8
  %860 = shl i64 %36, 3
  %861 = sub nuw nsw i64 -8, %860
  %scevgep1667 = getelementptr i8, ptr %14, i64 4
  %scevgep1762 = getelementptr i8, ptr %14, i64 -12
  %scevgep1765 = getelementptr i8, ptr %4, i64 -12
  %scevgep1768 = getelementptr i8, ptr %6, i64 -12
  %scevgep1770 = getelementptr i8, ptr %14, i64 -8
  %scevgep1772 = getelementptr i8, ptr %4, i64 4
  %scevgep1774 = getelementptr i8, ptr %4, i64 -8
  %scevgep1776 = getelementptr i8, ptr %6, i64 4
  %scevgep1778 = getelementptr i8, ptr %6, i64 -8
  %862 = insertelement <2 x float> poison, float %117, i64 0
  %863 = shufflevector <2 x float> %862, <2 x float> poison, <2 x i32> zeroinitializer
  %864 = insertelement <2 x float> poison, float %232, i64 0
  %865 = shufflevector <2 x float> %864, <2 x float> poison, <2 x i32> zeroinitializer
  %866 = insertelement <2 x float> poison, float %228, i64 0
  %867 = shufflevector <2 x float> %866, <2 x float> poison, <2 x i32> zeroinitializer
  %invariant.gep1957 = getelementptr i8, ptr %14, i64 -20
  %invariant.gep1959 = getelementptr i8, ptr %4, i64 -20
  %invariant.gep1961 = getelementptr i8, ptr %6, i64 -20
  %invariant.gep1963 = getelementptr i8, ptr %4, i64 -16
  %invariant.gep1965 = getelementptr i8, ptr %6, i64 -16
  br label %868

868:                                              ; preds = %.lr.ph1380, %.loopexit1187
  %.210731378 = phi i64 [ %848, %.lr.ph1380 ], [ %.31074, %.loopexit1187 ]
  %storemerge11181377 = phi i64 [ %846, %.lr.ph1380 ], [ %1472, %.loopexit1187 ]
  br i1 %.not1106, label %869, label %.thread1178

869:                                              ; preds = %868
  %870 = getelementptr inbounds i64, ptr %31, i64 %storemerge11181377
  %871 = load i64, ptr %870, align 8, !tbaa !5
  %.not1119 = icmp eq i64 %871, 0
  br i1 %.not1119, label %.loopexit1187, label %.thread1178

.thread1178:                                      ; preds = %868, %869
  %872 = add i64 %.210731378, -1
  %873 = mul i64 %storemerge11181377, %33
  store i64 %873, ptr %18, align 8, !tbaa !5
  %874 = mul i64 %storemerge11181377, %37
  store i64 %874, ptr %19, align 8, !tbaa !5
  %875 = getelementptr inbounds %struct.complex, ptr %35, i64 %873
  %876 = load float, ptr %875, align 4, !tbaa !17
  %877 = call double @r_imag(ptr noundef nonnull %875) #6
  %878 = fptrunc double %877 to float
  %879 = insertelement <2 x float> poison, float %876, i64 0
  %880 = insertelement <2 x float> %879, float %878, i64 1
  %881 = fcmp oge <2 x float> %880, zeroinitializer
  %882 = fneg <2 x float> %880
  %883 = select <2 x i1> %881, <2 x float> %880, <2 x float> %882
  %884 = fpext <2 x float> %883 to <2 x double>
  %shift1835 = shufflevector <2 x double> %884, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %885 = fadd <2 x double> %shift1835, %884
  %886 = extractelement <2 x double> %885, i64 0
  %887 = load float, ptr %30, align 4, !tbaa !15
  %888 = fpext float %887 to double
  %889 = fcmp ugt double %886, %888
  br i1 %889, label %909, label %890

890:                                              ; preds = %.thread1178
  %891 = load i64, ptr %19, align 8, !tbaa !5
  %892 = getelementptr inbounds %struct.complex, ptr %39, i64 %891
  %893 = load float, ptr %892, align 4, !tbaa !17
  %894 = fcmp oge float %893, 0.000000e+00
  %895 = fneg float %893
  %896 = select i1 %894, float %893, float %895
  %897 = fcmp ugt float %896, %887
  br i1 %897, label %909, label %898

898:                                              ; preds = %890
  %899 = load i64, ptr %3, align 8, !tbaa !5
  %.not11301298 = icmp slt i64 %899, 1
  br i1 %.not11301298, label %906, label %.lr.ph1301

.lr.ph1301:                                       ; preds = %898
  %900 = shl i64 %.210731378, 3
  %901 = add i64 %900, -16
  %902 = mul i64 %43, %901
  %scevgep1423 = getelementptr i8, ptr %10, i64 %902
  %903 = shl nuw i64 %899, 3
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep1423, i8 0, i64 %903, i1 false), !tbaa !15
  %904 = mul i64 %872, %43
  %905 = add i64 %899, %904
  store i64 %905, ptr %19, align 8, !tbaa !5
  br label %906

906:                                              ; preds = %.lr.ph1301, %898
  %907 = mul i64 %872, %849
  store i64 %907, ptr %18, align 8, !tbaa !5
  %908 = getelementptr inbounds %struct.complex, ptr %45, i64 %907
  store <2 x float> <float 1.000000e+00, float 0.000000e+00>, ptr %908, align 4, !tbaa !15
  br label %.loopexit1187

909:                                              ; preds = %890, %.thread1178
  %910 = load i64, ptr %25, align 8, !tbaa !5
  %911 = mul i64 %910, %33
  store i64 %911, ptr %18, align 8, !tbaa !5
  %912 = mul i64 %910, %37
  store i64 %912, ptr %19, align 8, !tbaa !5
  %913 = getelementptr inbounds %struct.complex, ptr %35, i64 %911
  %914 = load float, ptr %913, align 4, !tbaa !17
  %915 = call double @r_imag(ptr noundef nonnull %913) #6
  %916 = fptrunc double %915 to float
  %917 = insertelement <2 x float> poison, float %914, i64 0
  %918 = insertelement <2 x float> %917, float %916, i64 1
  %919 = fcmp oge <2 x float> %918, zeroinitializer
  %920 = fneg <2 x float> %918
  %921 = select <2 x i1> %919, <2 x float> %918, <2 x float> %920
  %922 = fpext <2 x float> %921 to <2 x double>
  %shift1836 = shufflevector <2 x double> %922, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %923 = fadd <2 x double> %shift1836, %922
  %924 = extractelement <2 x double> %923, i64 0
  %925 = fmul double %924, %850
  %926 = fptrunc double %925 to float
  %927 = load i64, ptr %19, align 8, !tbaa !5
  %928 = getelementptr inbounds %struct.complex, ptr %39, i64 %927
  %929 = load float, ptr %928, align 4, !tbaa !17
  %930 = fcmp oge float %929, 0.000000e+00
  %931 = fneg float %929
  %932 = select i1 %930, float %929, float %931
  %933 = fmul float %232, %932
  %934 = fcmp ole float %933, %926
  %935 = select i1 %934, float %926, float %933
  %936 = load float, ptr %30, align 4
  %937 = fcmp oge float %935, %936
  %938 = select i1 %937, float %935, float %936
  %939 = fdiv float 1.000000e+00, %938
  %940 = load i64, ptr %25, align 8, !tbaa !5
  %941 = mul i64 %940, %33
  %942 = getelementptr inbounds %struct.complex, ptr %35, i64 %941
  %943 = load <2 x float>, ptr %942, align 4, !tbaa !15
  %944 = insertelement <2 x float> poison, float %939, i64 0
  %945 = shufflevector <2 x float> %944, <2 x float> poison, <2 x i32> zeroinitializer
  %946 = fmul <2 x float> %943, %945
  store <2 x float> %946, ptr %21, align 8, !tbaa !15
  %947 = fmul <2 x float> %867, %946
  store <2 x float> %947, ptr %29, align 8, !tbaa !15
  %948 = mul i64 %940, %37
  store i64 %948, ptr %18, align 8, !tbaa !5
  %949 = getelementptr inbounds %struct.complex, ptr %39, i64 %948
  %950 = load float, ptr %949, align 4, !tbaa !17
  %951 = fmul float %939, %950
  %952 = fmul float %232, %951
  %953 = fmul float %228, %952
  %954 = fmul <2 x float> %865, %947
  store <2 x float> %954, ptr %20, align 8, !tbaa !15
  store <2 x float> %954, ptr %28, align 8, !tbaa !15
  %955 = fcmp oge float %952, 0.000000e+00
  %956 = fneg float %952
  %957 = select i1 %955, float %952, float %956
  %958 = fpext float %957 to double
  %959 = fcmp ult float %957, %936
  br i1 %959, label %965, label %960

960:                                              ; preds = %909
  %961 = fcmp oge float %953, 0.000000e+00
  %962 = fneg float %953
  %963 = select i1 %961, float %953, float %962
  %964 = fcmp olt float %963, %122
  br label %965

965:                                              ; preds = %960, %909
  %966 = phi i1 [ false, %909 ], [ %964, %960 ]
  %967 = call double @r_imag(ptr noundef nonnull %29) #6
  %968 = fptrunc double %967 to float
  %969 = insertelement <2 x float> %947, float %968, i64 1
  %970 = fcmp oge <2 x float> %969, zeroinitializer
  %971 = fneg <2 x float> %969
  %972 = select <2 x i1> %970, <2 x float> %969, <2 x float> %971
  %973 = fpext <2 x float> %972 to <2 x double>
  %shift1837 = shufflevector <2 x double> %973, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %974 = fadd <2 x double> %shift1837, %973
  %975 = extractelement <2 x double> %974, i64 0
  %976 = load float, ptr %30, align 4, !tbaa !15
  %977 = fpext float %976 to double
  %978 = fcmp ult double %975, %977
  br i1 %978, label %.thread1469, label %979

979:                                              ; preds = %965
  %980 = load float, ptr %28, align 8, !tbaa !17
  %981 = call double @r_imag(ptr noundef nonnull %28) #6
  %982 = fptrunc double %981 to float
  %983 = insertelement <2 x float> poison, float %980, i64 0
  %984 = insertelement <2 x float> %983, float %982, i64 1
  %985 = fcmp oge <2 x float> %984, zeroinitializer
  %986 = fneg <2 x float> %984
  %987 = select <2 x i1> %985, <2 x float> %984, <2 x float> %986
  %988 = fpext <2 x float> %987 to <2 x double>
  %shift1838 = shufflevector <2 x double> %988, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %989 = fadd <2 x double> %shift1838, %988
  %990 = extractelement <2 x double> %989, i64 0
  %991 = fcmp olt double %990, %853
  br i1 %966, label %992, label %.thread1456

.thread1469:                                      ; preds = %965
  br i1 %966, label %992, label %._crit_edge1434

992:                                              ; preds = %.thread1469, %979
  %993 = phi i1 [ false, %.thread1469 ], [ %991, %979 ]
  %994 = fdiv double %853, %958
  %995 = load float, ptr %26, align 4
  %996 = fcmp ole float %225, %995
  %997 = select i1 %996, float %225, float %995
  %998 = fpext float %997 to double
  %999 = fmul double %994, %998
  %1000 = fptrunc double %999 to float
  br i1 %993, label %.thread1181, label %1021

.thread1456:                                      ; preds = %979
  br i1 %991, label %.thread1181, label %._crit_edge1434

.thread1181:                                      ; preds = %.thread1456, %992
  %.210611458 = phi float [ 1.000000e+00, %.thread1456 ], [ %1000, %992 ]
  %1001 = load float, ptr %29, align 8, !tbaa !17
  %1002 = call double @r_imag(ptr noundef nonnull %29) #6
  %1003 = fptrunc double %1002 to float
  %1004 = insertelement <2 x float> poison, float %1001, i64 0
  %1005 = insertelement <2 x float> %1004, float %1003, i64 1
  %1006 = fcmp oge <2 x float> %1005, zeroinitializer
  %1007 = fneg <2 x float> %1005
  %1008 = select <2 x i1> %1006, <2 x float> %1005, <2 x float> %1007
  %1009 = fpext <2 x float> %1008 to <2 x double>
  %shift1839 = shufflevector <2 x double> %1009, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %1010 = fadd <2 x double> %shift1839, %1009
  %1011 = extractelement <2 x double> %1010, i64 0
  %1012 = fdiv double %853, %1011
  %1013 = load float, ptr %26, align 4
  %1014 = fcmp ole float %229, %1013
  %1015 = select i1 %1014, float %229, float %1013
  %1016 = fpext float %1015 to double
  %1017 = fmul double %1012, %1016
  %1018 = fptrunc double %1017 to float
  %1019 = fcmp oge float %.210611458, %1018
  %1020 = select i1 %1019, float %.210611458, float %1018
  br label %1022

1021:                                             ; preds = %992
  br i1 %966, label %1022, label %._crit_edge1434

._crit_edge1434:                                  ; preds = %.thread1469, %.thread1456, %1021
  %.pre1435 = load float, ptr %28, align 8, !tbaa !17
  br label %1065

1022:                                             ; preds = %.thread1181, %1021
  %1023 = phi i1 [ true, %.thread1181 ], [ false, %1021 ]
  %.310621184 = phi float [ %1020, %.thread1181 ], [ %1000, %1021 ]
  %1024 = fcmp oge float %953, 0.000000e+00
  %1025 = fneg float %953
  %1026 = select i1 %1024, float %953, float %1025
  %1027 = fcmp ole float %1026, 1.000000e+00
  %1028 = select i1 %1027, float 1.000000e+00, float %1026
  %1029 = load float, ptr %28, align 8, !tbaa !17
  %1030 = call double @r_imag(ptr noundef nonnull %28) #6
  %1031 = fptrunc double %1030 to float
  %1032 = insertelement <2 x float> poison, float %1029, i64 0
  %1033 = insertelement <2 x float> %1032, float %1031, i64 1
  %1034 = fcmp oge <2 x float> %1033, zeroinitializer
  %1035 = fneg <2 x float> %1033
  %1036 = select <2 x i1> %1034, <2 x float> %1033, <2 x float> %1035
  %shift1840 = shufflevector <2 x float> %1036, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %1037 = fadd <2 x float> %1036, %shift1840
  %1038 = extractelement <2 x float> %1037, i64 0
  %1039 = load float, ptr %30, align 4, !tbaa !15
  %1040 = fpext float %1039 to double
  %1041 = fcmp oge float %1028, %1038
  %1042 = select i1 %1041, float %1028, float %1038
  %1043 = fpext float %1042 to double
  %1044 = fmul double %1040, %1043
  %1045 = fdiv double 1.000000e+00, %1044
  %1046 = fptrunc double %1045 to float
  %1047 = fcmp ole float %.310621184, %1046
  %1048 = select i1 %1047, float %.310621184, float %1046
  %1049 = fmul float %952, %1048
  %1050 = fmul float %228, %1049
  %1051 = fmul float %953, %1048
  %.2 = select i1 %966, float %1050, float %1051
  br i1 %1023, label %1052, label %1059

1052:                                             ; preds = %1022
  %1053 = load <2 x float>, ptr %29, align 8, !tbaa !15
  %1054 = insertelement <2 x float> poison, float %1048, i64 0
  %1055 = shufflevector <2 x float> %1054, <2 x float> poison, <2 x i32> zeroinitializer
  %1056 = fmul <2 x float> %1055, %1053
  store <2 x float> %1056, ptr %21, align 8, !tbaa !15
  %1057 = fmul <2 x float> %865, %1056
  store <2 x float> %1057, ptr %20, align 8, !tbaa !15
  store <2 x float> %1057, ptr %28, align 8, !tbaa !15
  %1058 = extractelement <2 x float> %1057, i64 0
  br label %1065

1059:                                             ; preds = %1022
  %1060 = load <2 x float>, ptr %28, align 8, !tbaa !15
  %1061 = insertelement <2 x float> poison, float %1048, i64 0
  %1062 = shufflevector <2 x float> %1061, <2 x float> poison, <2 x i32> zeroinitializer
  %1063 = fmul <2 x float> %1062, %1060
  store <2 x float> %1063, ptr %20, align 8, !tbaa !15
  store <2 x float> %1063, ptr %28, align 8, !tbaa !15
  %1064 = extractelement <2 x float> %1063, i64 0
  br label %1065

1065:                                             ; preds = %._crit_edge1434, %1052, %1059
  %1066 = phi float [ %1058, %1052 ], [ %1064, %1059 ], [ %.pre1435, %._crit_edge1434 ]
  %.3 = phi float [ %.2, %1052 ], [ %.2, %1059 ], [ %953, %._crit_edge1434 ]
  %1067 = fcmp oge float %.3, 0.000000e+00
  %1068 = fneg float %.3
  %1069 = select i1 %1067, float %.3, float %1068
  %1070 = fcmp oge float %1066, 0.000000e+00
  %1071 = fneg float %1066
  %1072 = select i1 %1070, float %1066, float %1071
  %1073 = call double @r_imag(ptr noundef nonnull %28) #6
  %1074 = fptrunc double %1073 to float
  %1075 = fcmp oge float %1074, 0.000000e+00
  %1076 = fneg float %1074
  %1077 = select i1 %1075, float %1074, float %1076
  %1078 = fadd float %1072, %1077
  %1079 = load i64, ptr %3, align 8, !tbaa !5
  %.not11201304 = icmp slt i64 %1079, 1
  br i1 %.not11201304, label %1081, label %.lr.ph1307.preheader

.lr.ph1307.preheader:                             ; preds = %1065
  %1080 = shl nuw i64 %1079, 3
  call void @llvm.memset.p0.i64(ptr align 4 %14, i8 0, i64 %1080, i1 false), !tbaa !15
  store i64 %1079, ptr %19, align 8, !tbaa !5
  br label %1081

1081:                                             ; preds = %.lr.ph1307.preheader, %1065
  %1082 = load i64, ptr %25, align 8, !tbaa !5
  %1083 = getelementptr inbounds %struct.complex, ptr %46, i64 %1082
  store <2 x float> <float 1.000000e+00, float 0.000000e+00>, ptr %1083, align 4, !tbaa !15
  %1084 = insertelement <2 x float> poison, float %1069, i64 0
  %1085 = insertelement <2 x float> %1084, float %1078, i64 1
  %1086 = fmul <2 x float> %1085, %863
  %1087 = fmul <2 x float> %223, %1086
  %1088 = extractelement <2 x float> %1087, i64 0
  %1089 = extractelement <2 x float> %1087, i64 1
  %1090 = fcmp oge float %1088, %1089
  %1091 = select i1 %1090, float %1088, float %1089
  %1092 = load float, ptr %30, align 4
  %1093 = fcmp oge float %1091, %1092
  %1094 = select i1 %1093, float %1091, float %1092
  %1095 = fpext float %1094 to double
  %.not1121.not1309 = icmp sgt i64 %1082, 1
  br i1 %.not1121.not1309, label %.lr.ph1312, label %.thread1462

.thread1462:                                      ; preds = %1081
  store i64 %1082, ptr %18, align 8, !tbaa !5
  store <2 x float> <float 1.000000e+00, float 0.000000e+00>, ptr %1083, align 4, !tbaa !15
  br label %._crit_edge1357

.lr.ph1312:                                       ; preds = %1081
  %1096 = mul nsw i64 %1082, %32
  %invariant.gep1314 = getelementptr %struct.complex, ptr %35, i64 %1096
  %1097 = mul nsw i64 %1082, %36
  %1098 = load float, ptr %28, align 8, !tbaa !17
  %invariant.gep1316 = getelementptr %struct.complex, ptr %39, i64 %1097
  %1099 = load float, ptr %852, align 4, !tbaa !25
  %1100 = fneg float %1099
  %1101 = add nsw i64 %1082, -1
  %min.iters.check1797 = icmp ult i64 %1082, 5
  br i1 %min.iters.check1797, label %scalar.ph1796.preheader, label %vector.memcheck1761

vector.memcheck1761:                              ; preds = %.lr.ph1312
  %1102 = shl i64 %1082, 3
  %scevgep1763 = getelementptr i8, ptr %scevgep1762, i64 %1102
  %1103 = add i64 %1102, -8
  %1104 = mul i64 %32, %1103
  %scevgep1764 = getelementptr i8, ptr %4, i64 %1104
  %1105 = add i64 %1104, %1102
  %scevgep1766 = getelementptr i8, ptr %scevgep1765, i64 %1105
  %1106 = mul i64 %36, %1103
  %scevgep1767 = getelementptr i8, ptr %6, i64 %1106
  %1107 = add i64 %1106, %1102
  %scevgep1769 = getelementptr i8, ptr %scevgep1768, i64 %1107
  %scevgep1771 = getelementptr i8, ptr %scevgep1770, i64 %1102
  %scevgep1773 = getelementptr i8, ptr %scevgep1772, i64 %1104
  %scevgep1775 = getelementptr i8, ptr %scevgep1774, i64 %1105
  %scevgep1777 = getelementptr i8, ptr %scevgep1776, i64 %1106
  %scevgep1779 = getelementptr i8, ptr %scevgep1778, i64 %1107
  %bound01780 = icmp ugt ptr %scevgep1766, %14
  %bound11781 = icmp ult ptr %scevgep1764, %scevgep1763
  %found.conflict1782 = and i1 %bound01780, %bound11781
  %bound01783 = icmp ugt ptr %scevgep1769, %14
  %bound11784 = icmp ult ptr %scevgep1767, %scevgep1763
  %found.conflict1785 = and i1 %bound01783, %bound11784
  %conflict.rdx1786 = or i1 %found.conflict1782, %found.conflict1785
  %bound01787 = icmp ult ptr %scevgep1667, %scevgep1775
  %bound11788 = icmp ult ptr %scevgep1773, %scevgep1771
  %found.conflict1789 = and i1 %bound01787, %bound11788
  %conflict.rdx1790 = or i1 %conflict.rdx1786, %found.conflict1789
  %bound01791 = icmp ult ptr %scevgep1667, %scevgep1779
  %bound11792 = icmp ult ptr %scevgep1777, %scevgep1771
  %found.conflict1793 = and i1 %bound01791, %bound11792
  %conflict.rdx1794 = or i1 %conflict.rdx1790, %found.conflict1793
  br i1 %conflict.rdx1794, label %scalar.ph1796.preheader, label %vector.ph1798

vector.ph1798:                                    ; preds = %vector.memcheck1761
  %n.vec1800 = and i64 %1101, -4
  %ind.end1801 = or disjoint i64 %n.vec1800, 1
  %broadcast.splatinsert1809 = insertelement <4 x float> poison, float %.3, i64 0
  %broadcast.splat1810 = shufflevector <4 x float> %broadcast.splatinsert1809, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert1814 = insertelement <4 x float> poison, float %1100, i64 0
  %broadcast.splat1815 = shufflevector <4 x float> %broadcast.splatinsert1814, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert1816 = insertelement <4 x float> poison, float %1098, i64 0
  %broadcast.splat1817 = shufflevector <4 x float> %broadcast.splatinsert1816, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert1818 = insertelement <4 x float> poison, float %1099, i64 0
  %broadcast.splat1819 = shufflevector <4 x float> %broadcast.splatinsert1818, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body1803

vector.body1803:                                  ; preds = %vector.body1803, %vector.ph1798
  %index1804 = phi i64 [ 0, %vector.ph1798 ], [ %index.next1821, %vector.body1803 ]
  %offset.idx1805 = or disjoint i64 %index1804, 1
  %1108 = getelementptr %struct.complex, ptr %invariant.gep1314, i64 %offset.idx1805
  %wide.vec1806 = load <8 x float>, ptr %1108, align 4, !tbaa !15
  %strided.vec1807 = shufflevector <8 x float> %wide.vec1806, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec1808 = shufflevector <8 x float> %wide.vec1806, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %1109 = fmul <4 x float> %broadcast.splat1810, %strided.vec1807
  %1110 = fmul <4 x float> %broadcast.splat1810, %strided.vec1808
  %1111 = getelementptr %struct.complex, ptr %invariant.gep1316, i64 %offset.idx1805
  %wide.vec1811 = load <8 x float>, ptr %1111, align 4, !tbaa !15
  %strided.vec1812 = shufflevector <8 x float> %wide.vec1811, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec1813 = shufflevector <8 x float> %wide.vec1811, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %1112 = fmul <4 x float> %strided.vec1813, %broadcast.splat1815
  %1113 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1817, <4 x float> %strided.vec1812, <4 x float> %1112)
  %1114 = fmul <4 x float> %strided.vec1812, %broadcast.splat1819
  %1115 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1817, <4 x float> %strided.vec1813, <4 x float> %1114)
  %1116 = fsub <4 x float> %1109, %1113
  %1117 = fsub <4 x float> %1110, %1115
  %1118 = getelementptr %struct.complex, ptr %14, i64 %index1804
  %interleaved.vec1820 = shufflevector <4 x float> %1116, <4 x float> %1117, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec1820, ptr %1118, align 4, !tbaa !15
  %index.next1821 = add nuw i64 %index1804, 4
  %1119 = icmp eq i64 %index.next1821, %n.vec1800
  br i1 %1119, label %middle.block1795, label %vector.body1803, !llvm.loop !36

middle.block1795:                                 ; preds = %vector.body1803
  %cmp.n1822 = icmp eq i64 %1101, %n.vec1800
  %1120 = shufflevector <4 x float> %1109, <4 x float> %1110, <2 x i32> <i32 3, i32 7>
  %1121 = shufflevector <4 x float> %1113, <4 x float> %1115, <2 x i32> <i32 3, i32 7>
  %1122 = shufflevector <4 x float> %1116, <4 x float> %1117, <2 x i32> <i32 3, i32 7>
  br i1 %cmp.n1822, label %.loopexit1825, label %scalar.ph1796.preheader

scalar.ph1796.preheader:                          ; preds = %middle.block1795, %vector.memcheck1761, %.lr.ph1312
  %.101310.ph = phi i64 [ 1, %vector.memcheck1761 ], [ 1, %.lr.ph1312 ], [ %ind.end1801, %middle.block1795 ]
  %1123 = insertelement <2 x float> poison, float %.3, i64 0
  %1124 = shufflevector <2 x float> %1123, <2 x float> poison, <2 x i32> zeroinitializer
  %1125 = insertelement <2 x float> poison, float %1099, i64 0
  %1126 = insertelement <2 x float> %1125, float %1100, i64 1
  %1127 = insertelement <2 x float> poison, float %1098, i64 0
  %1128 = shufflevector <2 x float> %1127, <2 x float> poison, <2 x i32> zeroinitializer
  br label %scalar.ph1796

scalar.ph1796:                                    ; preds = %scalar.ph1796.preheader, %scalar.ph1796
  %.101310 = phi i64 [ %1137, %scalar.ph1796 ], [ %.101310.ph, %scalar.ph1796.preheader ]
  %gep1315 = getelementptr %struct.complex, ptr %invariant.gep1314, i64 %.101310
  %1129 = load <2 x float>, ptr %gep1315, align 4, !tbaa !15
  %1130 = fmul <2 x float> %1124, %1129
  %gep1317 = getelementptr %struct.complex, ptr %invariant.gep1316, i64 %.101310
  %1131 = load <2 x float>, ptr %gep1317, align 4, !tbaa !15
  %1132 = fmul <2 x float> %1131, %1126
  %1133 = shufflevector <2 x float> %1132, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %1134 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %1128, <2 x float> %1131, <2 x float> %1133)
  %1135 = fsub <2 x float> %1130, %1134
  %1136 = getelementptr inbounds %struct.complex, ptr %46, i64 %.101310
  store <2 x float> %1135, ptr %1136, align 4, !tbaa !15
  %1137 = add nuw nsw i64 %.101310, 1
  %exitcond1424.not = icmp eq i64 %1137, %1082
  br i1 %exitcond1424.not, label %.loopexit1825, label %scalar.ph1796, !llvm.loop !37

.loopexit1825:                                    ; preds = %scalar.ph1796, %middle.block1795
  %.101310.lcssa = phi i64 [ %n.vec1800, %middle.block1795 ], [ %.101310, %scalar.ph1796 ]
  %1138 = phi <2 x float> [ %1120, %middle.block1795 ], [ %1130, %scalar.ph1796 ]
  %1139 = phi <2 x float> [ %1121, %middle.block1795 ], [ %1134, %scalar.ph1796 ]
  %1140 = phi <2 x float> [ %1122, %middle.block1795 ], [ %1135, %scalar.ph1796 ]
  store i64 %.101310.lcssa, ptr %19, align 8, !tbaa !5
  store <2 x float> %1138, ptr %21, align 8, !tbaa !15
  store <2 x float> %1139, ptr %22, align 8, !tbaa !15
  store <2 x float> %1140, ptr %20, align 8, !tbaa !15
  store i64 %1082, ptr %18, align 8, !tbaa !5
  store <2 x float> <float 1.000000e+00, float 0.000000e+00>, ptr %1083, align 4, !tbaa !15
  br i1 %.not1121.not1309, label %.lr.ph1356.preheader, label %._crit_edge1357

.lr.ph1356.preheader:                             ; preds = %.loopexit1825
  %1141 = shl i64 %1082, 3
  %1142 = add i64 %1141, -16
  %1143 = mul i64 %32, %1142
  %1144 = mul i64 %36, %1142
  %1145 = or disjoint i64 %1143, 4
  %1146 = or disjoint i64 %1144, 4
  %1147 = add nsw i64 %1082, -2
  %1148 = insertelement <2 x float> poison, float %.3, i64 0
  %1149 = shufflevector <2 x float> %1148, <2 x float> poison, <2 x i32> zeroinitializer
  %gep1958 = getelementptr i8, ptr %invariant.gep1957, i64 %1141
  %1150 = getelementptr i8, ptr %4, i64 %1143
  %gep1960 = getelementptr i8, ptr %invariant.gep1959, i64 %1143
  %1151 = getelementptr i8, ptr %gep1960, i64 %1141
  %1152 = getelementptr i8, ptr %6, i64 %1144
  %gep1962 = getelementptr i8, ptr %invariant.gep1961, i64 %1144
  %1153 = getelementptr i8, ptr %gep1962, i64 %1141
  %1154 = getelementptr i8, ptr %14, i64 %1142
  %1155 = getelementptr i8, ptr %4, i64 %1145
  %gep1964 = getelementptr i8, ptr %invariant.gep1963, i64 %1143
  %1156 = getelementptr i8, ptr %gep1964, i64 %1141
  %1157 = getelementptr i8, ptr %6, i64 %1146
  %gep1966 = getelementptr i8, ptr %invariant.gep1965, i64 %1144
  %1158 = getelementptr i8, ptr %gep1966, i64 %1141
  br label %.lr.ph1356

.lr.ph1356:                                       ; preds = %.lr.ph1356.preheader, %.loopexit
  %indvar1660 = phi i64 [ 0, %.lr.ph1356.preheader ], [ %indvar.next1661, %.loopexit ]
  %.41089.in1353 = phi i64 [ %1082, %.lr.ph1356.preheader ], [ %.410891354, %.loopexit ]
  %1159 = sub i64 %1147, %indvar1660
  %1160 = mul i64 %indvar1660, -8
  %scevgep1662 = getelementptr i8, ptr %gep1958, i64 %1160
  %1161 = mul i64 %856, %indvar1660
  %scevgep1663 = getelementptr i8, ptr %1150, i64 %1161
  %1162 = mul i64 %858, %indvar1660
  %scevgep1664 = getelementptr i8, ptr %1151, i64 %1162
  %1163 = mul i64 %859, %indvar1660
  %scevgep1665 = getelementptr i8, ptr %1152, i64 %1163
  %1164 = mul i64 %861, %indvar1660
  %scevgep1666 = getelementptr i8, ptr %1153, i64 %1164
  %scevgep1668 = getelementptr i8, ptr %1154, i64 %1160
  %scevgep1669 = getelementptr i8, ptr %1155, i64 %1161
  %scevgep1670 = getelementptr i8, ptr %1156, i64 %1162
  %scevgep1671 = getelementptr i8, ptr %1157, i64 %1163
  %scevgep1672 = getelementptr i8, ptr %1158, i64 %1164
  %.410891354 = add nsw i64 %.41089.in1353, -1
  %1165 = mul nsw i64 %.410891354, %32
  %1166 = add nsw i64 %1165, %.410891354
  store i64 %1166, ptr %18, align 8, !tbaa !5
  %1167 = getelementptr inbounds %struct.complex, ptr %35, i64 %1166
  %1168 = load <2 x float>, ptr %1167, align 4, !tbaa !15
  %1169 = fmul <2 x float> %1149, %1168
  store <2 x float> %1169, ptr %21, align 8, !tbaa !15
  %1170 = mul nsw i64 %.410891354, %36
  %1171 = add nsw i64 %1170, %.410891354
  store i64 %1171, ptr %19, align 8, !tbaa !5
  %1172 = load float, ptr %28, align 8, !tbaa !17
  %1173 = getelementptr inbounds %struct.complex, ptr %39, i64 %1171
  %1174 = load float, ptr %852, align 4, !tbaa !25
  %1175 = fneg float %1174
  %1176 = load <2 x float>, ptr %1173, align 4, !tbaa !15
  %1177 = insertelement <2 x float> poison, float %1174, i64 0
  %1178 = insertelement <2 x float> %1177, float %1175, i64 1
  %1179 = fmul <2 x float> %1176, %1178
  %1180 = shufflevector <2 x float> %1179, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %1181 = insertelement <2 x float> poison, float %1172, i64 0
  %1182 = shufflevector <2 x float> %1181, <2 x float> poison, <2 x i32> zeroinitializer
  %1183 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %1182, <2 x float> %1176, <2 x float> %1180)
  store <2 x float> %1183, ptr %22, align 8, !tbaa !15
  %1184 = fsub <2 x float> %1169, %1183
  store <2 x float> %1184, ptr %20, align 8, !tbaa !15
  store <2 x float> %1184, ptr %24, align 8, !tbaa !15
  %1185 = extractelement <2 x float> %1184, i64 0
  %1186 = fcmp oge float %1185, 0.000000e+00
  %1187 = fneg float %1185
  %1188 = select i1 %1186, float %1185, float %1187
  %1189 = fpext float %1188 to double
  %1190 = call double @r_imag(ptr noundef nonnull %24) #6
  %1191 = fptrunc double %1190 to float
  %1192 = fcmp oge float %1191, 0.000000e+00
  %1193 = fneg float %1191
  %1194 = select i1 %1192, float %1191, float %1193
  %1195 = fpext float %1194 to double
  %1196 = fadd double %1189, %1195
  %1197 = fcmp ugt double %1196, %1095
  br i1 %1197, label %.lr.ph1356._crit_edge, label %1198

.lr.ph1356._crit_edge:                            ; preds = %.lr.ph1356
  %.pre1436 = load float, ptr %24, align 8, !tbaa !17
  br label %1199

1198:                                             ; preds = %.lr.ph1356
  store float %1094, ptr %20, align 8, !tbaa !17
  store float 0.000000e+00, ptr %851, align 4, !tbaa !25
  store float %1094, ptr %24, align 8, !tbaa !17
  store float 0.000000e+00, ptr %854, align 4, !tbaa !25
  br label %1199

1199:                                             ; preds = %.lr.ph1356._crit_edge, %1198
  %1200 = phi float [ %.pre1436, %.lr.ph1356._crit_edge ], [ %1094, %1198 ]
  %1201 = call double @r_imag(ptr noundef nonnull %24) #6
  %1202 = fptrunc double %1201 to float
  %1203 = insertelement <2 x float> poison, float %1200, i64 0
  %1204 = insertelement <2 x float> %1203, float %1202, i64 1
  %1205 = fcmp oge <2 x float> %1204, zeroinitializer
  %1206 = fneg <2 x float> %1204
  %1207 = select <2 x i1> %1205, <2 x float> %1204, <2 x float> %1206
  %1208 = fpext <2 x float> %1207 to <2 x double>
  %shift1841 = shufflevector <2 x double> %1208, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %1209 = fadd <2 x double> %shift1841, %1208
  %1210 = extractelement <2 x double> %1209, i64 0
  %1211 = fcmp olt double %1210, 1.000000e+00
  br i1 %1211, label %1212, label %.loopexit1186

1212:                                             ; preds = %1199
  store i64 %.410891354, ptr %18, align 8, !tbaa !5
  %1213 = getelementptr inbounds %struct.complex, ptr %46, i64 %.410891354
  %1214 = load float, ptr %1213, align 4, !tbaa !17
  %1215 = call double @r_imag(ptr noundef nonnull %1213) #6
  %1216 = fptrunc double %1215 to float
  %1217 = insertelement <2 x float> poison, float %1214, i64 0
  %1218 = insertelement <2 x float> %1217, float %1216, i64 1
  %1219 = fcmp oge <2 x float> %1218, zeroinitializer
  %1220 = fneg <2 x float> %1218
  %1221 = select <2 x i1> %1219, <2 x float> %1218, <2 x float> %1220
  %1222 = fpext <2 x float> %1221 to <2 x double>
  %1223 = load float, ptr %24, align 8, !tbaa !17
  %1224 = call double @r_imag(ptr noundef nonnull %24) #6
  %1225 = fptrunc double %1224 to float
  %1226 = insertelement <2 x float> poison, float %1223, i64 0
  %1227 = insertelement <2 x float> %1226, float %1225, i64 1
  %1228 = fcmp oge <2 x float> %1227, zeroinitializer
  %1229 = fneg <2 x float> %1227
  %1230 = select <2 x i1> %1228, <2 x float> %1227, <2 x float> %1229
  %1231 = fpext <2 x float> %1230 to <2 x double>
  %1232 = shufflevector <2 x double> %1222, <2 x double> %1231, <2 x i32> <i32 0, i32 2>
  %1233 = shufflevector <2 x double> %1222, <2 x double> %1231, <2 x i32> <i32 1, i32 3>
  %1234 = fadd <2 x double> %1232, %1233
  %1235 = extractelement <2 x double> %1234, i64 1
  %1236 = fmul double %1235, %855
  %1237 = extractelement <2 x double> %1234, i64 0
  %1238 = fcmp ult double %1237, %1236
  br i1 %1238, label %.loopexit1186, label %1239

1239:                                             ; preds = %1212
  store i64 %.410891354, ptr %18, align 8, !tbaa !5
  %1240 = load float, ptr %1213, align 4, !tbaa !17
  %1241 = fcmp oge float %1240, 0.000000e+00
  %1242 = fneg float %1240
  %1243 = select i1 %1241, float %1240, float %1242
  %1244 = fpext float %1243 to double
  %1245 = call double @r_imag(ptr noundef nonnull %1213) #6
  %1246 = fptrunc double %1245 to float
  %1247 = fcmp oge float %1246, 0.000000e+00
  %1248 = fneg float %1246
  %1249 = select i1 %1247, float %1246, float %1248
  %1250 = fpext float %1249 to double
  %1251 = fadd double %1244, %1250
  %1252 = fdiv double 1.000000e+00, %1251
  %1253 = fptrunc double %1252 to float
  %1254 = load i64, ptr %25, align 8, !tbaa !5
  %.not11261324 = icmp slt i64 %1254, 1
  br i1 %.not11261324, label %.loopexit1186, label %.lr.ph1327.preheader

.lr.ph1327.preheader:                             ; preds = %1239
  %min.iters.check1744 = icmp eq i64 %1254, 1
  br i1 %min.iters.check1744, label %.lr.ph1327.preheader1846, label %vector.ph1745

vector.ph1745:                                    ; preds = %.lr.ph1327.preheader
  %n.vec1747 = and i64 %1254, 9223372036854775806
  %ind.end1748 = or i64 %1254, 1
  %broadcast.splatinsert1756 = insertelement <2 x float> poison, float %1253, i64 0
  %broadcast.splat1757 = shufflevector <2 x float> %broadcast.splatinsert1756, <2 x float> poison, <2 x i32> zeroinitializer
  br label %vector.body1750

vector.body1750:                                  ; preds = %vector.body1750, %vector.ph1745
  %index1751 = phi i64 [ 0, %vector.ph1745 ], [ %index.next1759, %vector.body1750 ]
  %1255 = getelementptr %struct.complex, ptr %14, i64 %index1751
  %wide.vec1753 = load <4 x float>, ptr %1255, align 4, !tbaa !15
  %strided.vec1754 = shufflevector <4 x float> %wide.vec1753, <4 x float> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec1755 = shufflevector <4 x float> %wide.vec1753, <4 x float> poison, <2 x i32> <i32 1, i32 3>
  %1256 = fmul <2 x float> %strided.vec1754, %broadcast.splat1757
  %1257 = fmul <2 x float> %strided.vec1755, %broadcast.splat1757
  %1258 = getelementptr %struct.complex, ptr %14, i64 %index1751
  %interleaved.vec1758 = shufflevector <2 x float> %1256, <2 x float> %1257, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x float> %interleaved.vec1758, ptr %1258, align 4, !tbaa !15
  %index.next1759 = add nuw i64 %index1751, 2
  %1259 = icmp eq i64 %index.next1759, %n.vec1747
  br i1 %1259, label %middle.block1742, label %vector.body1750, !llvm.loop !38

middle.block1742:                                 ; preds = %vector.body1750
  %cmp.n1760 = icmp eq i64 %1254, %n.vec1747
  %1260 = shufflevector <2 x float> %1256, <2 x float> %1257, <2 x i32> <i32 1, i32 3>
  br i1 %cmp.n1760, label %..loopexit1186_crit_edge, label %.lr.ph1327.preheader1846

.lr.ph1327.preheader1846:                         ; preds = %middle.block1742, %.lr.ph1327.preheader
  %.111325.ph = phi i64 [ 1, %.lr.ph1327.preheader ], [ %ind.end1748, %middle.block1742 ]
  %1261 = insertelement <2 x float> poison, float %1253, i64 0
  %1262 = shufflevector <2 x float> %1261, <2 x float> poison, <2 x i32> zeroinitializer
  br label %.lr.ph1327

.lr.ph1327:                                       ; preds = %.lr.ph1327.preheader1846, %.lr.ph1327
  %.111325 = phi i64 [ %1266, %.lr.ph1327 ], [ %.111325.ph, %.lr.ph1327.preheader1846 ]
  %1263 = getelementptr inbounds %struct.complex, ptr %46, i64 %.111325
  %1264 = load <2 x float>, ptr %1263, align 4, !tbaa !15
  %1265 = fmul <2 x float> %1264, %1262
  store <2 x float> %1265, ptr %1263, align 4, !tbaa !15
  %1266 = add nuw i64 %.111325, 1
  %exitcond1425.not = icmp eq i64 %.111325, %1254
  br i1 %exitcond1425.not, label %..loopexit1186_crit_edge, label %.lr.ph1327, !llvm.loop !39

..loopexit1186_crit_edge:                         ; preds = %.lr.ph1327, %middle.block1742
  %1267 = phi <2 x float> [ %1260, %middle.block1742 ], [ %1265, %.lr.ph1327 ]
  store <2 x float> %1267, ptr %20, align 8, !tbaa !15
  br label %.loopexit1186

.loopexit1186:                                    ; preds = %1239, %..loopexit1186_crit_edge, %1212, %1199
  store i64 %.410891354, ptr %18, align 8, !tbaa !5
  store i64 %.410891354, ptr %19, align 8, !tbaa !5
  %1268 = getelementptr inbounds %struct.complex, ptr %46, i64 %.410891354
  %1269 = load <2 x float>, ptr %1268, align 4, !tbaa !15
  %1270 = fneg <2 x float> %1269
  store <2 x float> %1270, ptr %21, align 8, !tbaa !15
  call void @cladiv_(ptr noundef nonnull %20, ptr noundef nonnull %21, ptr noundef nonnull %24) #6
  %1271 = load i64, ptr %18, align 8, !tbaa !5
  %1272 = getelementptr inbounds %struct.complex, ptr %46, i64 %1271
  %1273 = load <2 x float>, ptr %20, align 8, !tbaa !15
  store <2 x float> %1273, ptr %1272, align 4, !tbaa !15
  %.not1127 = icmp eq i64 %.41089.in1353, 2
  br i1 %.not1127, label %._crit_edge1357, label %1274

1274:                                             ; preds = %.loopexit1186
  store i64 %.410891354, ptr %18, align 8, !tbaa !5
  %1275 = load float, ptr %1268, align 4, !tbaa !17
  %1276 = call double @r_imag(ptr noundef nonnull %1268) #6
  %1277 = fptrunc double %1276 to float
  %1278 = insertelement <2 x float> poison, float %1275, i64 0
  %1279 = insertelement <2 x float> %1278, float %1277, i64 1
  %1280 = fcmp oge <2 x float> %1279, zeroinitializer
  %1281 = fneg <2 x float> %1279
  %1282 = select <2 x i1> %1280, <2 x float> %1279, <2 x float> %1281
  %1283 = fpext <2 x float> %1282 to <2 x double>
  %shift1842 = shufflevector <2 x double> %1283, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %1284 = fadd <2 x double> %shift1842, %1283
  %1285 = extractelement <2 x double> %1284, i64 0
  %1286 = fcmp ogt double %1285, 1.000000e+00
  br i1 %1286, label %1287, label %.loopexit1185

1287:                                             ; preds = %1274
  store i64 %.410891354, ptr %18, align 8, !tbaa !5
  %1288 = load float, ptr %1268, align 4, !tbaa !17
  %1289 = call double @r_imag(ptr noundef nonnull %1268) #6
  %1290 = fptrunc double %1289 to float
  %1291 = insertelement <2 x float> poison, float %1288, i64 0
  %1292 = insertelement <2 x float> %1291, float %1290, i64 1
  %1293 = fcmp oge <2 x float> %1292, zeroinitializer
  %1294 = fneg <2 x float> %1292
  %1295 = select <2 x i1> %1293, <2 x float> %1292, <2 x float> %1294
  %1296 = fpext <2 x float> %1295 to <2 x double>
  %shift1843 = shufflevector <2 x double> %1296, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %1297 = fadd <2 x double> %shift1843, %1296
  %1298 = extractelement <2 x double> %1297, i64 0
  %1299 = fdiv double 1.000000e+00, %1298
  %1300 = fptrunc double %1299 to float
  %1301 = getelementptr inbounds float, ptr %47, i64 %.410891354
  %1302 = load float, ptr %1301, align 4, !tbaa !15
  %1303 = load i64, ptr %3, align 8, !tbaa !5
  %1304 = getelementptr float, ptr %47, i64 %1303
  %1305 = getelementptr float, ptr %1304, i64 %.410891354
  %1306 = load float, ptr %1305, align 4, !tbaa !15
  %1307 = fmul float %1078, %1306
  %1308 = call float @llvm.fmuladd.f32(float %1069, float %1302, float %1307)
  %1309 = fmul float %124, %1300
  %1310 = fcmp ult float %1308, %1309
  br i1 %1310, label %.loopexit1185, label %1311

1311:                                             ; preds = %1287
  %1312 = load i64, ptr %25, align 8, !tbaa !5
  %.not11281330 = icmp slt i64 %1312, 1
  br i1 %.not11281330, label %.loopexit1185, label %.lr.ph1333.preheader

.lr.ph1333.preheader:                             ; preds = %1311
  %min.iters.check1725 = icmp eq i64 %1312, 1
  br i1 %min.iters.check1725, label %.lr.ph1333.preheader1845, label %vector.ph1726

vector.ph1726:                                    ; preds = %.lr.ph1333.preheader
  %n.vec1728 = and i64 %1312, 9223372036854775806
  %ind.end1729 = or i64 %1312, 1
  %broadcast.splatinsert1737 = insertelement <2 x float> poison, float %1300, i64 0
  %1313 = shufflevector <2 x float> %broadcast.splatinsert1737, <2 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body1731

vector.body1731:                                  ; preds = %vector.body1731, %vector.ph1726
  %index1732 = phi i64 [ 0, %vector.ph1726 ], [ %index.next1740, %vector.body1731 ]
  %1314 = getelementptr %struct.complex, ptr %14, i64 %index1732
  %1315 = load <4 x float>, ptr %1314, align 4, !tbaa !15
  %1316 = getelementptr %struct.complex, ptr %14, i64 %index1732
  %interleaved.vec1739 = fmul <4 x float> %1315, %1313
  store <4 x float> %interleaved.vec1739, ptr %1316, align 4, !tbaa !15
  %index.next1740 = add nuw i64 %index1732, 2
  %1317 = icmp eq i64 %index.next1740, %n.vec1728
  br i1 %1317, label %middle.block1723, label %vector.body1731, !llvm.loop !40

middle.block1723:                                 ; preds = %vector.body1731
  %cmp.n1741 = icmp eq i64 %1312, %n.vec1728
  br i1 %cmp.n1741, label %..loopexit1185_crit_edge, label %.lr.ph1333.preheader1845

.lr.ph1333.preheader1845:                         ; preds = %middle.block1723, %.lr.ph1333.preheader
  %.121331.ph = phi i64 [ 1, %.lr.ph1333.preheader ], [ %ind.end1729, %middle.block1723 ]
  %1318 = insertelement <2 x float> poison, float %1300, i64 0
  %1319 = shufflevector <2 x float> %1318, <2 x float> poison, <2 x i32> zeroinitializer
  br label %.lr.ph1333

.lr.ph1333:                                       ; preds = %.lr.ph1333.preheader1845, %.lr.ph1333
  %.121331 = phi i64 [ %1323, %.lr.ph1333 ], [ %.121331.ph, %.lr.ph1333.preheader1845 ]
  %1320 = getelementptr inbounds %struct.complex, ptr %46, i64 %.121331
  %1321 = load <2 x float>, ptr %1320, align 4, !tbaa !15
  %1322 = fmul <2 x float> %1321, %1319
  store <2 x float> %1322, ptr %1320, align 4, !tbaa !15
  %1323 = add nuw i64 %.121331, 1
  %exitcond1426.not = icmp eq i64 %.121331, %1312
  br i1 %exitcond1426.not, label %..loopexit1185_crit_edge, label %.lr.ph1333, !llvm.loop !41

..loopexit1185_crit_edge:                         ; preds = %.lr.ph1333, %middle.block1723
  store i64 %1312, ptr %19, align 8, !tbaa !5
  br label %.loopexit1185

.loopexit1185:                                    ; preds = %1311, %..loopexit1185_crit_edge, %1287, %1274
  %1324 = load float, ptr %28, align 8, !tbaa !17
  %1325 = load float, ptr %852, align 4, !tbaa !25
  %1326 = fneg float %1325
  %1327 = load <2 x float>, ptr %1268, align 4, !tbaa !15
  %1328 = extractelement <2 x float> %1327, i64 0
  %1329 = fmul float %.3, %1328
  %1330 = extractelement <2 x float> %1327, i64 1
  %1331 = fmul float %.3, %1330
  %1332 = insertelement <2 x float> poison, float %1325, i64 0
  %1333 = insertelement <2 x float> %1332, float %1326, i64 1
  %1334 = fmul <2 x float> %1327, %1333
  %1335 = shufflevector <2 x float> %1334, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %1336 = insertelement <2 x float> poison, float %1324, i64 0
  %1337 = shufflevector <2 x float> %1336, <2 x float> poison, <2 x i32> zeroinitializer
  %1338 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %1337, <2 x float> %1327, <2 x float> %1335)
  store <2 x float> %1338, ptr %20, align 8, !tbaa !15
  %1339 = add nsw i64 %.41089.in1353, -2
  store i64 %1339, ptr %18, align 8, !tbaa !5
  %invariant.gep1336 = getelementptr %struct.complex, ptr %35, i64 %1165
  %invariant.gep1338 = getelementptr %struct.complex, ptr %39, i64 %1170
  %.not11291340 = icmp slt i64 %.41089.in1353, 3
  br i1 %.not11291340, label %._crit_edge1357, label %.lr.ph1343

.lr.ph1343:                                       ; preds = %.loopexit1185
  %1340 = fneg float %1331
  %1341 = extractelement <2 x float> %1338, i64 1
  %1342 = fneg float %1341
  %min.iters.check1690 = icmp ult i64 %1159, 4
  br i1 %min.iters.check1690, label %scalar.ph1689.preheader, label %vector.memcheck1659

vector.memcheck1659:                              ; preds = %.lr.ph1343
  %bound01673 = icmp ugt ptr %scevgep1664, %14
  %bound11674 = icmp ult ptr %scevgep1663, %scevgep1662
  %found.conflict1675 = and i1 %bound01673, %bound11674
  %bound01676 = icmp ugt ptr %scevgep1666, %14
  %bound11677 = icmp ult ptr %scevgep1665, %scevgep1662
  %found.conflict1678 = and i1 %bound01676, %bound11677
  %conflict.rdx1679 = or i1 %found.conflict1675, %found.conflict1678
  %bound01680 = icmp ult ptr %scevgep1667, %scevgep1670
  %bound11681 = icmp ult ptr %scevgep1669, %scevgep1668
  %found.conflict1682 = and i1 %bound01680, %bound11681
  %conflict.rdx1683 = or i1 %conflict.rdx1679, %found.conflict1682
  %bound01684 = icmp ult ptr %scevgep1667, %scevgep1672
  %bound11685 = icmp ult ptr %scevgep1671, %scevgep1668
  %found.conflict1686 = and i1 %bound01684, %bound11685
  %conflict.rdx1687 = or i1 %conflict.rdx1683, %found.conflict1686
  br i1 %conflict.rdx1687, label %scalar.ph1689.preheader, label %vector.ph1691

vector.ph1691:                                    ; preds = %vector.memcheck1659
  %n.vec1693 = and i64 %1159, -4
  %ind.end1694 = or disjoint i64 %n.vec1693, 1
  %broadcast.splatinsert1702 = insertelement <4 x float> poison, float %1340, i64 0
  %broadcast.splat1703 = shufflevector <4 x float> %broadcast.splatinsert1702, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert1704 = insertelement <4 x float> poison, float %1329, i64 0
  %broadcast.splat1705 = shufflevector <4 x float> %broadcast.splatinsert1704, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert1706 = insertelement <4 x float> poison, float %1331, i64 0
  %broadcast.splat1707 = shufflevector <4 x float> %broadcast.splatinsert1706, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert1714 = insertelement <4 x float> poison, float %1342, i64 0
  %broadcast.splat1715 = shufflevector <4 x float> %broadcast.splatinsert1714, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splat1717 = shufflevector <2 x float> %1338, <2 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splat1719 = shufflevector <2 x float> %1338, <2 x float> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>
  br label %vector.body1696

vector.body1696:                                  ; preds = %vector.body1696, %vector.ph1691
  %index1697 = phi i64 [ 0, %vector.ph1691 ], [ %index.next1721, %vector.body1696 ]
  %offset.idx1698 = or disjoint i64 %index1697, 1
  %1343 = getelementptr %struct.complex, ptr %invariant.gep1336, i64 %offset.idx1698
  %wide.vec1699 = load <8 x float>, ptr %1343, align 4, !tbaa !15
  %strided.vec1700 = shufflevector <8 x float> %wide.vec1699, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec1701 = shufflevector <8 x float> %wide.vec1699, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %1344 = fmul <4 x float> %strided.vec1701, %broadcast.splat1703
  %1345 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1705, <4 x float> %strided.vec1700, <4 x float> %1344)
  %1346 = fmul <4 x float> %broadcast.splat1707, %strided.vec1700
  %1347 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1705, <4 x float> %strided.vec1701, <4 x float> %1346)
  %1348 = getelementptr %struct.complex, ptr %14, i64 %index1697
  %wide.vec1708 = load <8 x float>, ptr %1348, align 4, !tbaa !15
  %strided.vec1709 = shufflevector <8 x float> %wide.vec1708, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec1710 = shufflevector <8 x float> %wide.vec1708, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %1349 = fadd <4 x float> %1345, %strided.vec1709
  %1350 = fadd <4 x float> %1347, %strided.vec1710
  %1351 = getelementptr %struct.complex, ptr %invariant.gep1338, i64 %offset.idx1698
  %wide.vec1711 = load <8 x float>, ptr %1351, align 4, !tbaa !15
  %strided.vec1712 = shufflevector <8 x float> %wide.vec1711, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec1713 = shufflevector <8 x float> %wide.vec1711, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %1352 = fmul <4 x float> %strided.vec1713, %broadcast.splat1715
  %1353 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1717, <4 x float> %strided.vec1712, <4 x float> %1352)
  %1354 = fmul <4 x float> %broadcast.splat1719, %strided.vec1712
  %1355 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat1717, <4 x float> %strided.vec1713, <4 x float> %1354)
  %1356 = fsub <4 x float> %1349, %1353
  %1357 = fsub <4 x float> %1350, %1355
  %1358 = getelementptr %struct.complex, ptr %14, i64 %index1697
  %interleaved.vec1720 = shufflevector <4 x float> %1356, <4 x float> %1357, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec1720, ptr %1358, align 4, !tbaa !15
  %index.next1721 = add nuw i64 %index1697, 4
  %1359 = icmp eq i64 %index.next1721, %n.vec1693
  br i1 %1359, label %middle.block1688, label %vector.body1696, !llvm.loop !42

middle.block1688:                                 ; preds = %vector.body1696
  %cmp.n1722 = icmp eq i64 %1159, %n.vec1693
  %1360 = shufflevector <4 x float> %1345, <4 x float> %1347, <2 x i32> <i32 3, i32 7>
  %1361 = shufflevector <4 x float> %1349, <4 x float> %1350, <2 x i32> <i32 3, i32 7>
  %1362 = shufflevector <4 x float> %1353, <4 x float> %1355, <2 x i32> <i32 3, i32 7>
  %1363 = shufflevector <4 x float> %1356, <4 x float> %1357, <2 x i32> <i32 3, i32 7>
  br i1 %cmp.n1722, label %.loopexit, label %scalar.ph1689.preheader

scalar.ph1689.preheader:                          ; preds = %middle.block1688, %vector.memcheck1659, %.lr.ph1343
  %.131341.ph = phi i64 [ 1, %vector.memcheck1659 ], [ 1, %.lr.ph1343 ], [ %ind.end1694, %middle.block1688 ]
  %1364 = insertelement <2 x float> poison, float %1331, i64 0
  %1365 = insertelement <2 x float> %1364, float %1340, i64 1
  %1366 = insertelement <2 x float> poison, float %1329, i64 0
  %1367 = shufflevector <2 x float> %1366, <2 x float> poison, <2 x i32> zeroinitializer
  %1368 = shufflevector <2 x float> %1338, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %1369 = insertelement <2 x float> %1368, float %1342, i64 1
  %1370 = shufflevector <2 x float> %1338, <2 x float> poison, <2 x i32> zeroinitializer
  br label %scalar.ph1689

scalar.ph1689:                                    ; preds = %scalar.ph1689.preheader, %scalar.ph1689
  %.131341 = phi i64 [ %1383, %scalar.ph1689 ], [ %.131341.ph, %scalar.ph1689.preheader ]
  %gep1337 = getelementptr %struct.complex, ptr %invariant.gep1336, i64 %.131341
  %1371 = load <2 x float>, ptr %gep1337, align 4, !tbaa !15
  %1372 = fmul <2 x float> %1371, %1365
  %1373 = shufflevector <2 x float> %1372, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %1374 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %1367, <2 x float> %1371, <2 x float> %1373)
  %1375 = getelementptr inbounds %struct.complex, ptr %46, i64 %.131341
  %1376 = load <2 x float>, ptr %1375, align 4, !tbaa !15
  %1377 = fadd <2 x float> %1374, %1376
  %gep1339 = getelementptr %struct.complex, ptr %invariant.gep1338, i64 %.131341
  %1378 = load <2 x float>, ptr %gep1339, align 4, !tbaa !15
  %1379 = fmul <2 x float> %1378, %1369
  %1380 = shufflevector <2 x float> %1379, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %1381 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %1370, <2 x float> %1378, <2 x float> %1380)
  %1382 = fsub <2 x float> %1377, %1381
  store <2 x float> %1382, ptr %1375, align 4, !tbaa !15
  %1383 = add nuw nsw i64 %.131341, 1
  %.not1129.not = icmp slt i64 %.131341, %1339
  br i1 %.not1129.not, label %scalar.ph1689, label %.loopexit, !llvm.loop !43

.loopexit:                                        ; preds = %scalar.ph1689, %middle.block1688
  %.131341.lcssa = phi i64 [ %n.vec1693, %middle.block1688 ], [ %.131341, %scalar.ph1689 ]
  %1384 = phi <2 x float> [ %1360, %middle.block1688 ], [ %1374, %scalar.ph1689 ]
  %1385 = phi <2 x float> [ %1361, %middle.block1688 ], [ %1377, %scalar.ph1689 ]
  %1386 = phi <2 x float> [ %1362, %middle.block1688 ], [ %1381, %scalar.ph1689 ]
  %1387 = phi <2 x float> [ %1363, %middle.block1688 ], [ %1382, %scalar.ph1689 ]
  store i64 %.131341.lcssa, ptr %19, align 8, !tbaa !5
  store <2 x float> %1384, ptr %22, align 8, !tbaa !15
  store <2 x float> %1385, ptr %21, align 8, !tbaa !15
  store <2 x float> %1386, ptr %23, align 8, !tbaa !15
  store <2 x float> %1387, ptr %20, align 8, !tbaa !15
  %indvar.next1661 = add i64 %indvar1660, 1
  br label %.lr.ph1356, !llvm.loop !44

._crit_edge1357:                                  ; preds = %.loopexit1186, %.loopexit1185, %.thread1462, %.loopexit1825
  br i1 %.not1122, label %1392, label %1388

1388:                                             ; preds = %._crit_edge1357
  %1389 = load i64, ptr %3, align 8, !tbaa !5
  %1390 = getelementptr %struct.complex, ptr %14, i64 %1389
  %1391 = call i32 @f2c_cgemv(ptr noundef nonnull @.str.9, ptr noundef nonnull %3, ptr noundef nonnull %25, ptr noundef nonnull @c_b2, ptr noundef %10, ptr noundef nonnull %11, ptr noundef nonnull %14, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b1, ptr noundef %1390, ptr noundef nonnull @c__1) #6
  br label %1392

1392:                                             ; preds = %._crit_edge1357, %1388
  %.01069.in = phi ptr [ %3, %1388 ], [ %25, %._crit_edge1357 ]
  %.11068 = phi i64 [ 1, %1388 ], [ 0, %._crit_edge1357 ]
  %.01069 = load i64, ptr %.01069.in, align 8, !tbaa !5
  store i64 %.01069, ptr %18, align 8, !tbaa !5
  %.not11231358 = icmp slt i64 %.01069, 1
  br i1 %.not11231358, label %._crit_edge1363.thread, label %.lr.ph1362

.lr.ph1362:                                       ; preds = %1392, %.lr.ph1362
  %.41360 = phi float [ %1410, %.lr.ph1362 ], [ 0.000000e+00, %1392 ]
  %.141359 = phi i64 [ %1411, %.lr.ph1362 ], [ 1, %1392 ]
  %1393 = load i64, ptr %3, align 8, !tbaa !5
  %1394 = mul nuw nsw i64 %1393, %.11068
  %1395 = add nsw i64 %1394, %.141359
  store i64 %1395, ptr %19, align 8, !tbaa !5
  %1396 = getelementptr inbounds %struct.complex, ptr %46, i64 %1395
  %1397 = load float, ptr %1396, align 4, !tbaa !17
  %1398 = getelementptr %struct.complex, ptr %46, i64 %1394
  %1399 = getelementptr %struct.complex, ptr %1398, i64 %.141359
  %1400 = call double @r_imag(ptr noundef %1399) #6
  %1401 = fptrunc double %1400 to float
  %1402 = insertelement <2 x float> poison, float %1397, i64 0
  %1403 = insertelement <2 x float> %1402, float %1401, i64 1
  %1404 = fcmp oge <2 x float> %1403, zeroinitializer
  %1405 = fneg <2 x float> %1403
  %1406 = select <2 x i1> %1404, <2 x float> %1403, <2 x float> %1405
  %shift1844 = shufflevector <2 x float> %1406, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %1407 = fadd <2 x float> %1406, %shift1844
  %1408 = extractelement <2 x float> %1407, i64 0
  %1409 = fcmp oge float %.41360, %1408
  %1410 = select i1 %1409, float %.41360, float %1408
  %1411 = add nuw nsw i64 %.141359, 1
  %1412 = load i64, ptr %18, align 8, !tbaa !5
  %.not1123.not = icmp slt i64 %.141359, %1412
  br i1 %.not1123.not, label %.lr.ph1362, label %._crit_edge1363, !llvm.loop !45

._crit_edge1363:                                  ; preds = %.lr.ph1362
  %1413 = load float, ptr %30, align 4, !tbaa !15
  %1414 = fcmp ogt float %1410, %1413
  br i1 %1414, label %1417, label %._crit_edge1363..loopexit1188_crit_edge

._crit_edge1363.thread:                           ; preds = %1392
  %1415 = load float, ptr %30, align 4, !tbaa !15
  %1416 = fcmp olt float %1415, 0.000000e+00
  br i1 %1416, label %.thread1465, label %._crit_edge1363..loopexit1188_crit_edge

.thread1465:                                      ; preds = %._crit_edge1363.thread
  %.pre14381467 = load i64, ptr %3, align 8, !tbaa !5
  br label %.loopexit1188

._crit_edge1363..loopexit1188_crit_edge:          ; preds = %._crit_edge1363.thread, %._crit_edge1363
  %.pre1437 = load i64, ptr %3, align 8, !tbaa !5
  br label %.loopexit1188

1417:                                             ; preds = %._crit_edge1363
  %1418 = fdiv float 1.000000e+00, %1410
  %.pre1438 = load i64, ptr %3, align 8, !tbaa !5
  br i1 %.not11231358, label %.loopexit1188, label %.lr.ph1368

.lr.ph1368:                                       ; preds = %1417
  %1419 = mul nsw i64 %872, %43
  %1420 = mul nuw nsw i64 %.pre1438, %.11068
  %1421 = getelementptr %struct.complex, ptr %46, i64 %1420
  %min.iters.check1642 = icmp ult i64 %.01069, 8
  br i1 %min.iters.check1642, label %scalar.ph1641.preheader, label %vector.memcheck1620

vector.memcheck1620:                              ; preds = %.lr.ph1368
  %1422 = shl i64 %.210731378, 3
  %1423 = add i64 %1422, -16
  %1424 = mul i64 %43, %1423
  %scevgep1621 = getelementptr i8, ptr %10, i64 %1424
  %1425 = shl i64 %.01069, 3
  %1426 = add i64 %1424, %1425
  %scevgep1623 = getelementptr i8, ptr %scevgep1622, i64 %1426
  %1427 = shl nuw nsw i64 %.11068, 3
  %1428 = mul i64 %1427, %.pre1438
  %scevgep1624 = getelementptr i8, ptr %14, i64 %1428
  %1429 = add i64 %1428, %1425
  %scevgep1626 = getelementptr i8, ptr %scevgep1625, i64 %1429
  %scevgep1628 = getelementptr i8, ptr %scevgep1627, i64 %1424
  %scevgep1629 = getelementptr i8, ptr %10, i64 %1426
  %scevgep1631 = getelementptr i8, ptr %scevgep1630, i64 %1428
  %scevgep1632 = getelementptr i8, ptr %14, i64 %1429
  %bound01633 = icmp ult ptr %scevgep1621, %scevgep1626
  %bound11634 = icmp ult ptr %scevgep1624, %scevgep1623
  %found.conflict1635 = and i1 %bound01633, %bound11634
  %bound01636 = icmp ult ptr %scevgep1628, %scevgep1632
  %bound11637 = icmp ult ptr %scevgep1631, %scevgep1629
  %found.conflict1638 = and i1 %bound01636, %bound11637
  %conflict.rdx1639 = or i1 %found.conflict1635, %found.conflict1638
  br i1 %conflict.rdx1639, label %scalar.ph1641.preheader, label %vector.ph1643

vector.ph1643:                                    ; preds = %vector.memcheck1620
  %n.vec1645 = and i64 %.01069, 9223372036854775806
  %ind.end1646 = or i64 %.01069, 1
  %broadcast.splatinsert1654 = insertelement <2 x float> poison, float %1418, i64 0
  %broadcast.splat1655 = shufflevector <2 x float> %broadcast.splatinsert1654, <2 x float> poison, <2 x i32> zeroinitializer
  %invariant.gep1953 = getelementptr %struct.complex, ptr %45, i64 %1419
  br label %vector.body1648

vector.body1648:                                  ; preds = %vector.body1648, %vector.ph1643
  %index1649 = phi i64 [ 0, %vector.ph1643 ], [ %index.next1657, %vector.body1648 ]
  %offset.idx1650 = or disjoint i64 %index1649, 1
  %1430 = getelementptr %struct.complex, ptr %1421, i64 %offset.idx1650
  %wide.vec1651 = load <4 x float>, ptr %1430, align 4, !tbaa !15
  %strided.vec1652 = shufflevector <4 x float> %wide.vec1651, <4 x float> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec1653 = shufflevector <4 x float> %wide.vec1651, <4 x float> poison, <2 x i32> <i32 1, i32 3>
  %1431 = fmul <2 x float> %broadcast.splat1655, %strided.vec1652
  %1432 = fmul <2 x float> %broadcast.splat1655, %strided.vec1653
  %gep1954 = getelementptr %struct.complex, ptr %invariant.gep1953, i64 %offset.idx1650
  %interleaved.vec1656 = shufflevector <2 x float> %1431, <2 x float> %1432, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x float> %interleaved.vec1656, ptr %gep1954, align 4, !tbaa !15
  %index.next1657 = add nuw i64 %index1649, 2
  %1433 = icmp eq i64 %index.next1657, %n.vec1645
  br i1 %1433, label %middle.block1640, label %vector.body1648, !llvm.loop !46

middle.block1640:                                 ; preds = %vector.body1648
  %1434 = add i64 %index1649, 2
  %1435 = add nsw i64 %1434, %1419
  %cmp.n1658 = icmp eq i64 %.01069, %n.vec1645
  %1436 = shufflevector <2 x float> %1431, <2 x float> %1432, <2 x i32> <i32 1, i32 3>
  br i1 %cmp.n1658, label %..loopexit1188_crit_edge, label %scalar.ph1641.preheader

scalar.ph1641.preheader:                          ; preds = %middle.block1640, %vector.memcheck1620, %.lr.ph1368
  %.151366.ph = phi i64 [ 1, %vector.memcheck1620 ], [ 1, %.lr.ph1368 ], [ %ind.end1646, %middle.block1640 ]
  %xtraiter1899 = and i64 %.01069, 1
  %lcmp.mod1900.not = icmp eq i64 %xtraiter1899, 0
  br i1 %lcmp.mod1900.not, label %scalar.ph1641.prol.loopexit, label %scalar.ph1641.prol

scalar.ph1641.prol:                               ; preds = %scalar.ph1641.preheader
  %1437 = add nsw i64 %.151366.ph, %1419
  %1438 = getelementptr %struct.complex, ptr %1421, i64 %.151366.ph
  %1439 = load <2 x float>, ptr %1438, align 4, !tbaa !15
  %1440 = insertelement <2 x float> poison, float %1418, i64 0
  %1441 = shufflevector <2 x float> %1440, <2 x float> poison, <2 x i32> zeroinitializer
  %1442 = fmul <2 x float> %1441, %1439
  %1443 = getelementptr inbounds %struct.complex, ptr %45, i64 %1437
  store <2 x float> %1442, ptr %1443, align 4, !tbaa !15
  %1444 = add nuw i64 %.151366.ph, 1
  br label %scalar.ph1641.prol.loopexit

scalar.ph1641.prol.loopexit:                      ; preds = %scalar.ph1641.prol, %scalar.ph1641.preheader
  %.lcssa1876.unr = phi i64 [ poison, %scalar.ph1641.preheader ], [ %1437, %scalar.ph1641.prol ]
  %.lcssa1875.unr = phi <2 x float> [ poison, %scalar.ph1641.preheader ], [ %1442, %scalar.ph1641.prol ]
  %.151366.unr = phi i64 [ %.151366.ph, %scalar.ph1641.preheader ], [ %1444, %scalar.ph1641.prol ]
  %1445 = icmp eq i64 %.01069, %.151366.ph
  br i1 %1445, label %..loopexit1188_crit_edge, label %scalar.ph1641.preheader.new

scalar.ph1641.preheader.new:                      ; preds = %scalar.ph1641.prol.loopexit
  %1446 = insertelement <2 x float> poison, float %1418, i64 0
  %1447 = shufflevector <2 x float> %1446, <2 x float> poison, <2 x i32> zeroinitializer
  %invariant.gep1955 = getelementptr %struct.complex, ptr %45, i64 %1419
  %1448 = insertelement <2 x float> poison, float %1418, i64 0
  %1449 = shufflevector <2 x float> %1448, <2 x float> poison, <2 x i32> zeroinitializer
  br label %scalar.ph1641

scalar.ph1641:                                    ; preds = %scalar.ph1641, %scalar.ph1641.preheader.new
  %.151366 = phi i64 [ %.151366.unr, %scalar.ph1641.preheader.new ], [ %1459, %scalar.ph1641 ]
  %1450 = getelementptr %struct.complex, ptr %1421, i64 %.151366
  %1451 = load <2 x float>, ptr %1450, align 4, !tbaa !15
  %1452 = fmul <2 x float> %1447, %1451
  %gep1956 = getelementptr %struct.complex, ptr %invariant.gep1955, i64 %.151366
  store <2 x float> %1452, ptr %gep1956, align 4, !tbaa !15
  %1453 = add nuw i64 %.151366, 1
  %1454 = add nsw i64 %1453, %1419
  %1455 = getelementptr %struct.complex, ptr %1421, i64 %1453
  %1456 = load <2 x float>, ptr %1455, align 4, !tbaa !15
  %1457 = fmul <2 x float> %1449, %1456
  %1458 = getelementptr inbounds %struct.complex, ptr %45, i64 %1454
  store <2 x float> %1457, ptr %1458, align 4, !tbaa !15
  %1459 = add nuw i64 %.151366, 2
  %exitcond1427.not.1 = icmp eq i64 %1453, %.01069
  br i1 %exitcond1427.not.1, label %..loopexit1188_crit_edge, label %scalar.ph1641, !llvm.loop !47

..loopexit1188_crit_edge:                         ; preds = %scalar.ph1641.prol.loopexit, %scalar.ph1641, %middle.block1640
  %.lcssa1519 = phi i64 [ %1435, %middle.block1640 ], [ %.lcssa1876.unr, %scalar.ph1641.prol.loopexit ], [ %1454, %scalar.ph1641 ]
  %1460 = phi <2 x float> [ %1436, %middle.block1640 ], [ %.lcssa1875.unr, %scalar.ph1641.prol.loopexit ], [ %1457, %scalar.ph1641 ]
  store i64 %.lcssa1519, ptr %19, align 8, !tbaa !5
  store <2 x float> %1460, ptr %20, align 8, !tbaa !15
  br label %.loopexit1188

.loopexit1188:                                    ; preds = %.thread1465, %._crit_edge1363..loopexit1188_crit_edge, %1417, %..loopexit1188_crit_edge
  %1461 = phi i64 [ %.pre1437, %._crit_edge1363..loopexit1188_crit_edge ], [ %.pre1438, %..loopexit1188_crit_edge ], [ %.pre1438, %1417 ], [ %.pre14381467, %.thread1465 ]
  %.11070 = phi i64 [ 0, %._crit_edge1363..loopexit1188_crit_edge ], [ %.01069, %..loopexit1188_crit_edge ], [ %.01069, %1417 ], [ %.01069, %.thread1465 ]
  store i64 %1461, ptr %18, align 8, !tbaa !5
  %.not1125.not1372 = icmp slt i64 %.11070, %1461
  br i1 %.not1125.not1372, label %.lr.ph1375, label %.loopexit1187

.lr.ph1375:                                       ; preds = %.loopexit1188
  %1462 = shl i64 %.210731378, 3
  %1463 = add i64 %1462, -16
  %1464 = mul i64 %43, %1463
  %1465 = shl i64 %.11070, 3
  %1466 = getelementptr i8, ptr %10, i64 %1464
  %scevgep1428 = getelementptr i8, ptr %1466, i64 %1465
  %1467 = sub i64 %1461, %.11070
  %1468 = shl i64 %1467, 3
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep1428, i8 0, i64 %1468, i1 false), !tbaa !15
  %1469 = mul i64 %872, %43
  %1470 = add i64 %1461, %1469
  store i64 %1470, ptr %19, align 8, !tbaa !5
  br label %.loopexit1187

.loopexit1187:                                    ; preds = %.loopexit1188, %.lr.ph1375, %906, %869
  %.31074 = phi i64 [ %872, %906 ], [ %.210731378, %869 ], [ %872, %.lr.ph1375 ], [ %872, %.loopexit1188 ]
  %1471 = load i64, ptr %25, align 8, !tbaa !5
  %1472 = add nsw i64 %1471, -1
  store i64 %1472, ptr %25, align 8, !tbaa !5
  %1473 = icmp sgt i64 %1471, 1
  br i1 %1473, label %868, label %.loopexit1189, !llvm.loop !48

.loopexit1189.sink.split:                         ; preds = %.thread1156, %.thread1168
  %storemerge = phi i64 [ %105, %.thread1168 ], [ %.neg, %.thread1156 ]
  store i64 %storemerge, ptr %18, align 8, !tbaa !5
  %1474 = call i32 @xerbla_(ptr noundef nonnull @.str.5, ptr noundef nonnull %18) #6
  br label %.loopexit1189

.loopexit1189:                                    ; preds = %.loopexit1187, %.loopexit1189.sink.split, %845, %.loopexit1193, %106
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #6
  ret i32 0
}

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

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

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

declare double @r_imag(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

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

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

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

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.vector.reduce.add.v2i64(<2 x i64>) #4

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <4 x float> @llvm.fmuladd.v4f32(<4 x float>, <4 x float>, <4 x float>) #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

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 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #6 = { 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 = distinct !{!9, !10, !11, !12}
!10 = !{!"llvm.loop.mustprogress"}
!11 = !{!"llvm.loop.isvectorized", i32 1}
!12 = !{!"llvm.loop.unroll.runtime.disable"}
!13 = distinct !{!13, !10, !12, !11}
!14 = distinct !{!14, !10}
!15 = !{!16, !16, i64 0}
!16 = !{!"float", !7, i64 0}
!17 = !{!18, !16, i64 0}
!18 = !{!"", !16, i64 0, !16, i64 4}
!19 = distinct !{!19, !10}
!20 = distinct !{!20, !10}
!21 = distinct !{!21, !10, !11, !12}
!22 = distinct !{!22, !23}
!23 = !{!"llvm.loop.unroll.disable"}
!24 = distinct !{!24, !10, !11}
!25 = !{!18, !16, i64 4}
!26 = distinct !{!26, !10}
!27 = distinct !{!27, !10, !11, !12}
!28 = distinct !{!28, !23}
!29 = distinct !{!29, !10, !11}
!30 = distinct !{!30, !10}
!31 = distinct !{!31, !10}
!32 = distinct !{!32, !10, !11, !12}
!33 = distinct !{!33, !23}
!34 = distinct !{!34, !10, !11}
!35 = distinct !{!35, !10}
!36 = distinct !{!36, !10, !11, !12}
!37 = distinct !{!37, !10, !11}
!38 = distinct !{!38, !10, !11, !12}
!39 = distinct !{!39, !10, !12, !11}
!40 = distinct !{!40, !10, !11, !12}
!41 = distinct !{!41, !10, !12, !11}
!42 = distinct !{!42, !10, !11, !12}
!43 = distinct !{!43, !10, !11}
!44 = distinct !{!44, !10}
!45 = distinct !{!45, !10}
!46 = distinct !{!46, !10, !11, !12}
!47 = distinct !{!47, !10, !11}
!48 = distinct !{!48, !10}


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