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

; 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.doublecomplex = type { double, double }

@.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 [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [10 x i8], align 1
@c__1 = external hidden global i32, align 4
@c_b36 = external hidden global double, align 8

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

74:                                               ; preds = %10
  %75 = load ptr, ptr %11, align 8, !tbaa !5
  %76 = call i32 @lsame_(ptr noundef %75, ptr noundef @.str.2)
  %77 = icmp ne i32 %76, 0
  br i1 %77, label %80, label %78

78:                                               ; preds = %74
  %79 = load ptr, ptr %20, align 8, !tbaa !5
  store i32 -1, ptr %79, align 4, !tbaa !9
  br label %122

80:                                               ; preds = %74, %10
  %81 = load i32, ptr %52, align 4, !tbaa !9
  %82 = icmp ne i32 %81, 0
  br i1 %82, label %93, label %83

83:                                               ; preds = %80
  %84 = load ptr, ptr %12, align 8, !tbaa !5
  %85 = call i32 @lsame_(ptr noundef %84, ptr noundef @.str.3)
  %86 = icmp ne i32 %85, 0
  br i1 %86, label %93, label %87

87:                                               ; preds = %83
  %88 = load ptr, ptr %12, align 8, !tbaa !5
  %89 = call i32 @lsame_(ptr noundef %88, ptr noundef @.str.4)
  %90 = icmp ne i32 %89, 0
  br i1 %90, label %93, label %91

91:                                               ; preds = %87
  %92 = load ptr, ptr %20, align 8, !tbaa !5
  store i32 -2, ptr %92, align 4, !tbaa !9
  br label %121

93:                                               ; preds = %87, %83, %80
  %94 = load i32, ptr %55, align 4, !tbaa !9
  %95 = icmp ne i32 %94, 0
  br i1 %95, label %102, label %96

96:                                               ; preds = %93
  %97 = load ptr, ptr %13, align 8, !tbaa !5
  %98 = call i32 @lsame_(ptr noundef %97, ptr noundef @.str)
  %99 = icmp ne i32 %98, 0
  br i1 %99, label %102, label %100

100:                                              ; preds = %96
  %101 = load ptr, ptr %20, align 8, !tbaa !5
  store i32 -3, ptr %101, align 4, !tbaa !9
  br label %120

102:                                              ; preds = %96, %93
  %103 = load ptr, ptr %14, align 8, !tbaa !5
  %104 = call i32 @lsame_(ptr noundef %103, ptr noundef @.str.5)
  %105 = icmp ne i32 %104, 0
  br i1 %105, label %112, label %106

106:                                              ; preds = %102
  %107 = load ptr, ptr %14, align 8, !tbaa !5
  %108 = call i32 @lsame_(ptr noundef %107, ptr noundef @.str.1)
  %109 = icmp ne i32 %108, 0
  br i1 %109, label %112, label %110

110:                                              ; preds = %106
  %111 = load ptr, ptr %20, align 8, !tbaa !5
  store i32 -4, ptr %111, align 4, !tbaa !9
  br label %119

112:                                              ; preds = %106, %102
  %113 = load ptr, ptr %15, align 8, !tbaa !5
  %114 = load i32, ptr %113, align 4, !tbaa !9
  %115 = icmp slt i32 %114, 0
  br i1 %115, label %116, label %118

116:                                              ; preds = %112
  %117 = load ptr, ptr %20, align 8, !tbaa !5
  store i32 -5, ptr %117, align 4, !tbaa !9
  br label %118

118:                                              ; preds = %116, %112
  br label %119

119:                                              ; preds = %118, %110
  br label %120

120:                                              ; preds = %119, %100
  br label %121

121:                                              ; preds = %120, %91
  br label %122

122:                                              ; preds = %121, %78
  %123 = load ptr, ptr %20, align 8, !tbaa !5
  %124 = load i32, ptr %123, align 4, !tbaa !9
  %125 = icmp ne i32 %124, 0
  br i1 %125, label %126, label %131

126:                                              ; preds = %122
  %127 = load ptr, ptr %20, align 8, !tbaa !5
  %128 = load i32, ptr %127, align 4, !tbaa !9
  %129 = sub nsw i32 0, %128
  store i32 %129, ptr %21, align 4, !tbaa !9
  %130 = call i32 @xerbla_(ptr noundef @.str.6, ptr noundef %21, i32 noundef 6)
  store i32 1, ptr %58, align 4
  br label %3033

131:                                              ; preds = %122
  %132 = load ptr, ptr %15, align 8, !tbaa !5
  %133 = load i32, ptr %132, align 4, !tbaa !9
  %134 = icmp eq i32 %133, 0
  br i1 %134, label %135, label %136

135:                                              ; preds = %131
  store i32 1, ptr %58, align 4
  br label %3033

136:                                              ; preds = %131
  %137 = call double @dlamch_(ptr noundef @.str.7)
  store double %137, ptr %54, align 8, !tbaa !11
  %138 = load double, ptr %54, align 8, !tbaa !11
  %139 = fdiv double 1.000000e+00, %138
  store double %139, ptr %51, align 8, !tbaa !11
  call void @dlabad_(ptr noundef %54, ptr noundef %51)
  %140 = call double @dlamch_(ptr noundef @.str.8)
  %141 = load double, ptr %54, align 8, !tbaa !11
  %142 = fdiv double %141, %140
  store double %142, ptr %54, align 8, !tbaa !11
  %143 = load double, ptr %54, align 8, !tbaa !11
  %144 = fdiv double 1.000000e+00, %143
  store double %144, ptr %51, align 8, !tbaa !11
  %145 = load ptr, ptr %18, align 8, !tbaa !5
  store double 1.000000e+00, ptr %145, align 8, !tbaa !11
  %146 = load ptr, ptr %14, align 8, !tbaa !5
  %147 = call i32 @lsame_(ptr noundef %146, ptr noundef @.str.1)
  %148 = icmp ne i32 %147, 0
  br i1 %148, label %149, label %218

149:                                              ; preds = %136
  %150 = load i32, ptr %48, align 4, !tbaa !9
  %151 = icmp ne i32 %150, 0
  br i1 %151, label %152, label %178

152:                                              ; preds = %149
  store i32 1, ptr %49, align 4, !tbaa !9
  %153 = load ptr, ptr %15, align 8, !tbaa !5
  %154 = load i32, ptr %153, align 4, !tbaa !9
  store i32 %154, ptr %21, align 4, !tbaa !9
  store i32 1, ptr %43, align 4, !tbaa !9
  br label %155

155:                                              ; preds = %174, %152
  %156 = load i32, ptr %43, align 4, !tbaa !9
  %157 = load i32, ptr %21, align 4, !tbaa !9
  %158 = icmp sle i32 %156, %157
  br i1 %158, label %159, label %177

159:                                              ; preds = %155
  %160 = load i32, ptr %43, align 4, !tbaa !9
  %161 = sub nsw i32 %160, 1
  store i32 %161, ptr %22, align 4, !tbaa !9
  %162 = load ptr, ptr %16, align 8, !tbaa !5
  %163 = load i32, ptr %49, align 4, !tbaa !9
  %164 = sext i32 %163 to i64
  %165 = getelementptr inbounds %struct.doublecomplex, ptr %162, i64 %164
  %166 = call double @dzasum_(ptr noundef %22, ptr noundef %165, ptr noundef @c__1)
  %167 = load ptr, ptr %19, align 8, !tbaa !5
  %168 = load i32, ptr %43, align 4, !tbaa !9
  %169 = sext i32 %168 to i64
  %170 = getelementptr inbounds double, ptr %167, i64 %169
  store double %166, ptr %170, align 8, !tbaa !11
  %171 = load i32, ptr %43, align 4, !tbaa !9
  %172 = load i32, ptr %49, align 4, !tbaa !9
  %173 = add nsw i32 %172, %171
  store i32 %173, ptr %49, align 4, !tbaa !9
  br label %174

174:                                              ; preds = %159
  %175 = load i32, ptr %43, align 4, !tbaa !9
  %176 = add nsw i32 %175, 1
  store i32 %176, ptr %43, align 4, !tbaa !9
  br label %155, !llvm.loop !13

177:                                              ; preds = %155
  br label %217

178:                                              ; preds = %149
  store i32 1, ptr %49, align 4, !tbaa !9
  %179 = load ptr, ptr %15, align 8, !tbaa !5
  %180 = load i32, ptr %179, align 4, !tbaa !9
  %181 = sub nsw i32 %180, 1
  store i32 %181, ptr %21, align 4, !tbaa !9
  store i32 1, ptr %43, align 4, !tbaa !9
  br label %182

182:                                              ; preds = %208, %178
  %183 = load i32, ptr %43, align 4, !tbaa !9
  %184 = load i32, ptr %21, align 4, !tbaa !9
  %185 = icmp sle i32 %183, %184
  br i1 %185, label %186, label %211

186:                                              ; preds = %182
  %187 = load ptr, ptr %15, align 8, !tbaa !5
  %188 = load i32, ptr %187, align 4, !tbaa !9
  %189 = load i32, ptr %43, align 4, !tbaa !9
  %190 = sub nsw i32 %188, %189
  store i32 %190, ptr %22, align 4, !tbaa !9
  %191 = load ptr, ptr %16, align 8, !tbaa !5
  %192 = load i32, ptr %49, align 4, !tbaa !9
  %193 = add nsw i32 %192, 1
  %194 = sext i32 %193 to i64
  %195 = getelementptr inbounds %struct.doublecomplex, ptr %191, i64 %194
  %196 = call double @dzasum_(ptr noundef %22, ptr noundef %195, ptr noundef @c__1)
  %197 = load ptr, ptr %19, align 8, !tbaa !5
  %198 = load i32, ptr %43, align 4, !tbaa !9
  %199 = sext i32 %198 to i64
  %200 = getelementptr inbounds double, ptr %197, i64 %199
  store double %196, ptr %200, align 8, !tbaa !11
  %201 = load i32, ptr %49, align 4, !tbaa !9
  %202 = load ptr, ptr %15, align 8, !tbaa !5
  %203 = load i32, ptr %202, align 4, !tbaa !9
  %204 = add nsw i32 %201, %203
  %205 = load i32, ptr %43, align 4, !tbaa !9
  %206 = sub nsw i32 %204, %205
  %207 = add nsw i32 %206, 1
  store i32 %207, ptr %49, align 4, !tbaa !9
  br label %208

208:                                              ; preds = %186
  %209 = load i32, ptr %43, align 4, !tbaa !9
  %210 = add nsw i32 %209, 1
  store i32 %210, ptr %43, align 4, !tbaa !9
  br label %182, !llvm.loop !15

211:                                              ; preds = %182
  %212 = load ptr, ptr %19, align 8, !tbaa !5
  %213 = load ptr, ptr %15, align 8, !tbaa !5
  %214 = load i32, ptr %213, align 4, !tbaa !9
  %215 = sext i32 %214 to i64
  %216 = getelementptr inbounds double, ptr %212, i64 %215
  store double 0.000000e+00, ptr %216, align 8, !tbaa !11
  br label %217

217:                                              ; preds = %211, %177
  br label %218

218:                                              ; preds = %217, %136
  %219 = load ptr, ptr %15, align 8, !tbaa !5
  %220 = load ptr, ptr %19, align 8, !tbaa !5
  %221 = getelementptr inbounds double, ptr %220, i64 1
  %222 = call i32 @idamax_(ptr noundef %219, ptr noundef %221, ptr noundef @c__1)
  store i32 %222, ptr %37, align 4, !tbaa !9
  %223 = load ptr, ptr %19, align 8, !tbaa !5
  %224 = load i32, ptr %37, align 4, !tbaa !9
  %225 = sext i32 %224 to i64
  %226 = getelementptr inbounds double, ptr %223, i64 %225
  %227 = load double, ptr %226, align 8, !tbaa !11
  store double %227, ptr %38, align 8, !tbaa !11
  %228 = load double, ptr %38, align 8, !tbaa !11
  %229 = load double, ptr %51, align 8, !tbaa !11
  %230 = fmul double %229, 5.000000e-01
  %231 = fcmp ole double %228, %230
  br i1 %231, label %232, label %233

232:                                              ; preds = %218
  store double 1.000000e+00, ptr %44, align 8, !tbaa !11
  br label %241

233:                                              ; preds = %218
  %234 = load double, ptr %54, align 8, !tbaa !11
  %235 = load double, ptr %38, align 8, !tbaa !11
  %236 = fmul double %234, %235
  %237 = fdiv double 5.000000e-01, %236
  store double %237, ptr %44, align 8, !tbaa !11
  %238 = load ptr, ptr %15, align 8, !tbaa !5
  %239 = load ptr, ptr %19, align 8, !tbaa !5
  %240 = getelementptr inbounds double, ptr %239, i64 1
  call void @dscal_(ptr noundef %238, ptr noundef %44, ptr noundef %240, ptr noundef @c__1)
  br label %241

241:                                              ; preds = %233, %232
  store double 0.000000e+00, ptr %40, align 8, !tbaa !11
  %242 = load ptr, ptr %15, align 8, !tbaa !5
  %243 = load i32, ptr %242, align 4, !tbaa !9
  store i32 %243, ptr %21, align 4, !tbaa !9
  store i32 1, ptr %43, align 4, !tbaa !9
  br label %244

244:                                              ; preds = %294, %241
  %245 = load i32, ptr %43, align 4, !tbaa !9
  %246 = load i32, ptr %21, align 4, !tbaa !9
  %247 = icmp sle i32 %245, %246
  br i1 %247, label %248, label %297

248:                                              ; preds = %244
  %249 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %249, ptr %22, align 4, !tbaa !9
  %250 = load double, ptr %40, align 8, !tbaa !11
  store double %250, ptr %28, align 8, !tbaa !11
  %251 = load ptr, ptr %17, align 8, !tbaa !5
  %252 = load i32, ptr %22, align 4, !tbaa !9
  %253 = sext i32 %252 to i64
  %254 = getelementptr inbounds %struct.doublecomplex, ptr %251, i64 %253
  %255 = getelementptr inbounds %struct.doublecomplex, ptr %254, i32 0, i32 0
  %256 = load double, ptr %255, align 8, !tbaa !16
  %257 = fdiv double %256, 2.000000e+00
  store double %257, ptr %26, align 8, !tbaa !11
  %258 = load double, ptr %26, align 8, !tbaa !11
  %259 = fcmp oge double %258, 0.000000e+00
  br i1 %259, label %260, label %262

260:                                              ; preds = %248
  %261 = load double, ptr %26, align 8, !tbaa !11
  br label %265

262:                                              ; preds = %248
  %263 = load double, ptr %26, align 8, !tbaa !11
  %264 = fneg double %263
  br label %265

265:                                              ; preds = %262, %260
  %266 = phi double [ %261, %260 ], [ %264, %262 ]
  %267 = load ptr, ptr %17, align 8, !tbaa !5
  %268 = load i32, ptr %43, align 4, !tbaa !9
  %269 = sext i32 %268 to i64
  %270 = getelementptr inbounds %struct.doublecomplex, ptr %267, i64 %269
  %271 = call { double, double } @Cd(ptr noundef %270)
  %272 = extractvalue { double, double } %271, 0
  %273 = extractvalue { double, double } %271, 1
  %274 = fdiv double %273, 2.000000e+00
  store double %274, ptr %27, align 8, !tbaa !11
  %275 = load double, ptr %27, align 8, !tbaa !11
  %276 = fcmp oge double %275, 0.000000e+00
  br i1 %276, label %277, label %279

277:                                              ; preds = %265
  %278 = load double, ptr %27, align 8, !tbaa !11
  br label %282

279:                                              ; preds = %265
  %280 = load double, ptr %27, align 8, !tbaa !11
  %281 = fneg double %280
  br label %282

282:                                              ; preds = %279, %277
  %283 = phi double [ %278, %277 ], [ %281, %279 ]
  %284 = fadd double %266, %283
  store double %284, ptr %29, align 8, !tbaa !11
  %285 = load double, ptr %28, align 8, !tbaa !11
  %286 = load double, ptr %29, align 8, !tbaa !11
  %287 = fcmp oge double %285, %286
  br i1 %287, label %288, label %290

288:                                              ; preds = %282
  %289 = load double, ptr %28, align 8, !tbaa !11
  br label %292

290:                                              ; preds = %282
  %291 = load double, ptr %29, align 8, !tbaa !11
  br label %292

292:                                              ; preds = %290, %288
  %293 = phi double [ %289, %288 ], [ %291, %290 ]
  store double %293, ptr %40, align 8, !tbaa !11
  br label %294

294:                                              ; preds = %292
  %295 = load i32, ptr %43, align 4, !tbaa !9
  %296 = add nsw i32 %295, 1
  store i32 %296, ptr %43, align 4, !tbaa !9
  br label %244, !llvm.loop !18

297:                                              ; preds = %244
  %298 = load double, ptr %40, align 8, !tbaa !11
  store double %298, ptr %36, align 8, !tbaa !11
  %299 = load i32, ptr %52, align 4, !tbaa !9
  %300 = icmp ne i32 %299, 0
  br i1 %300, label %301, label %522

301:                                              ; preds = %297
  %302 = load i32, ptr %48, align 4, !tbaa !9
  %303 = icmp ne i32 %302, 0
  br i1 %303, label %304, label %307

304:                                              ; preds = %301
  %305 = load ptr, ptr %15, align 8, !tbaa !5
  %306 = load i32, ptr %305, align 4, !tbaa !9
  store i32 %306, ptr %53, align 4, !tbaa !9
  store i32 1, ptr %46, align 4, !tbaa !9
  store i32 -1, ptr %34, align 4, !tbaa !9
  br label %310

307:                                              ; preds = %301
  store i32 1, ptr %53, align 4, !tbaa !9
  %308 = load ptr, ptr %15, align 8, !tbaa !5
  %309 = load i32, ptr %308, align 4, !tbaa !9
  store i32 %309, ptr %46, align 4, !tbaa !9
  store i32 1, ptr %34, align 4, !tbaa !9
  br label %310

310:                                              ; preds = %307, %304
  %311 = load double, ptr %44, align 8, !tbaa !11
  %312 = fcmp une double %311, 1.000000e+00
  br i1 %312, label %313, label %314

313:                                              ; preds = %310
  store double 0.000000e+00, ptr %41, align 8, !tbaa !11
  br label %521

314:                                              ; preds = %310
  %315 = load i32, ptr %55, align 4, !tbaa !9
  %316 = icmp ne i32 %315, 0
  br i1 %316, label %317, label %461

317:                                              ; preds = %314
  %318 = load double, ptr %36, align 8, !tbaa !11
  %319 = load double, ptr %54, align 8, !tbaa !11
  %320 = fcmp oge double %318, %319
  br i1 %320, label %321, label %323

321:                                              ; preds = %317
  %322 = load double, ptr %36, align 8, !tbaa !11
  br label %325

323:                                              ; preds = %317
  %324 = load double, ptr %54, align 8, !tbaa !11
  br label %325

325:                                              ; preds = %323, %321
  %326 = phi double [ %322, %321 ], [ %324, %323 ]
  %327 = fdiv double 5.000000e-01, %326
  store double %327, ptr %41, align 8, !tbaa !11
  %328 = load double, ptr %41, align 8, !tbaa !11
  store double %328, ptr %36, align 8, !tbaa !11
  %329 = load i32, ptr %53, align 4, !tbaa !9
  %330 = load i32, ptr %53, align 4, !tbaa !9
  %331 = add nsw i32 %330, 1
  %332 = mul nsw i32 %329, %331
  %333 = sdiv i32 %332, 2
  store i32 %333, ptr %49, align 4, !tbaa !9
  %334 = load ptr, ptr %15, align 8, !tbaa !5
  %335 = load i32, ptr %334, align 4, !tbaa !9
  store i32 %335, ptr %35, align 4, !tbaa !9
  %336 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %336, ptr %21, align 4, !tbaa !9
  %337 = load i32, ptr %34, align 4, !tbaa !9
  store i32 %337, ptr %22, align 4, !tbaa !9
  %338 = load i32, ptr %53, align 4, !tbaa !9
  store i32 %338, ptr %43, align 4, !tbaa !9
  br label %339

339:                                              ; preds = %455, %325
  %340 = load i32, ptr %22, align 4, !tbaa !9
  %341 = icmp slt i32 %340, 0
  br i1 %341, label %342, label %347

342:                                              ; preds = %339
  %343 = load i32, ptr %43, align 4, !tbaa !9
  %344 = load i32, ptr %21, align 4, !tbaa !9
  %345 = icmp sge i32 %343, %344
  %346 = zext i1 %345 to i32
  br label %352

347:                                              ; preds = %339
  %348 = load i32, ptr %43, align 4, !tbaa !9
  %349 = load i32, ptr %21, align 4, !tbaa !9
  %350 = icmp sle i32 %348, %349
  %351 = zext i1 %350 to i32
  br label %352

352:                                              ; preds = %347, %342
  %353 = phi i32 [ %346, %342 ], [ %351, %347 ]
  %354 = icmp ne i32 %353, 0
  br i1 %354, label %355, label %459

355:                                              ; preds = %352
  %356 = load double, ptr %41, align 8, !tbaa !11
  %357 = load double, ptr %54, align 8, !tbaa !11
  %358 = fcmp ole double %356, %357
  br i1 %358, label %359, label %360

359:                                              ; preds = %355
  br label %521

360:                                              ; preds = %355
  %361 = load i32, ptr %49, align 4, !tbaa !9
  store i32 %361, ptr %23, align 4, !tbaa !9
  %362 = load ptr, ptr %16, align 8, !tbaa !5
  %363 = load i32, ptr %23, align 4, !tbaa !9
  %364 = sext i32 %363 to i64
  %365 = getelementptr inbounds %struct.doublecomplex, ptr %362, i64 %364
  %366 = getelementptr inbounds %struct.doublecomplex, ptr %365, i32 0, i32 0
  %367 = load double, ptr %366, align 8, !tbaa !16
  %368 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double %367, ptr %368, align 8, !tbaa !16
  %369 = load ptr, ptr %16, align 8, !tbaa !5
  %370 = load i32, ptr %23, align 4, !tbaa !9
  %371 = sext i32 %370 to i64
  %372 = getelementptr inbounds %struct.doublecomplex, ptr %369, i64 %371
  %373 = getelementptr inbounds %struct.doublecomplex, ptr %372, i32 0, i32 1
  %374 = load double, ptr %373, align 8, !tbaa !19
  %375 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double %374, ptr %375, align 8, !tbaa !19
  %376 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %377 = load double, ptr %376, align 8, !tbaa !16
  store double %377, ptr %26, align 8, !tbaa !11
  %378 = load double, ptr %26, align 8, !tbaa !11
  %379 = fcmp oge double %378, 0.000000e+00
  br i1 %379, label %380, label %382

380:                                              ; preds = %360
  %381 = load double, ptr %26, align 8, !tbaa !11
  br label %385

382:                                              ; preds = %360
  %383 = load double, ptr %26, align 8, !tbaa !11
  %384 = fneg double %383
  br label %385

385:                                              ; preds = %382, %380
  %386 = phi double [ %381, %380 ], [ %384, %382 ]
  %387 = call { double, double } @Cd(ptr noundef %39)
  %388 = extractvalue { double, double } %387, 0
  %389 = extractvalue { double, double } %387, 1
  store double %389, ptr %27, align 8, !tbaa !11
  %390 = load double, ptr %27, align 8, !tbaa !11
  %391 = fcmp oge double %390, 0.000000e+00
  br i1 %391, label %392, label %394

392:                                              ; preds = %385
  %393 = load double, ptr %27, align 8, !tbaa !11
  br label %397

394:                                              ; preds = %385
  %395 = load double, ptr %27, align 8, !tbaa !11
  %396 = fneg double %395
  br label %397

397:                                              ; preds = %394, %392
  %398 = phi double [ %393, %392 ], [ %396, %394 ]
  %399 = fadd double %386, %398
  store double %399, ptr %57, align 8, !tbaa !11
  %400 = load double, ptr %57, align 8, !tbaa !11
  %401 = load double, ptr %54, align 8, !tbaa !11
  %402 = fcmp oge double %400, %401
  br i1 %402, label %403, label %423

403:                                              ; preds = %397
  %404 = load double, ptr %36, align 8, !tbaa !11
  store double %404, ptr %26, align 8, !tbaa !11
  %405 = load double, ptr %57, align 8, !tbaa !11
  %406 = fcmp ole double 1.000000e+00, %405
  br i1 %406, label %407, label %408

407:                                              ; preds = %403
  br label %410

408:                                              ; preds = %403
  %409 = load double, ptr %57, align 8, !tbaa !11
  br label %410

410:                                              ; preds = %408, %407
  %411 = phi double [ 1.000000e+00, %407 ], [ %409, %408 ]
  %412 = load double, ptr %41, align 8, !tbaa !11
  %413 = fmul double %411, %412
  store double %413, ptr %27, align 8, !tbaa !11
  %414 = load double, ptr %26, align 8, !tbaa !11
  %415 = load double, ptr %27, align 8, !tbaa !11
  %416 = fcmp ole double %414, %415
  br i1 %416, label %417, label %419

417:                                              ; preds = %410
  %418 = load double, ptr %26, align 8, !tbaa !11
  br label %421

419:                                              ; preds = %410
  %420 = load double, ptr %27, align 8, !tbaa !11
  br label %421

421:                                              ; preds = %419, %417
  %422 = phi double [ %418, %417 ], [ %420, %419 ]
  store double %422, ptr %36, align 8, !tbaa !11
  br label %424

423:                                              ; preds = %397
  store double 0.000000e+00, ptr %36, align 8, !tbaa !11
  br label %424

424:                                              ; preds = %423, %421
  %425 = load double, ptr %57, align 8, !tbaa !11
  %426 = load ptr, ptr %19, align 8, !tbaa !5
  %427 = load i32, ptr %43, align 4, !tbaa !9
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds double, ptr %426, i64 %428
  %430 = load double, ptr %429, align 8, !tbaa !11
  %431 = fadd double %425, %430
  %432 = load double, ptr %54, align 8, !tbaa !11
  %433 = fcmp oge double %431, %432
  br i1 %433, label %434, label %446

434:                                              ; preds = %424
  %435 = load double, ptr %57, align 8, !tbaa !11
  %436 = load double, ptr %57, align 8, !tbaa !11
  %437 = load ptr, ptr %19, align 8, !tbaa !5
  %438 = load i32, ptr %43, align 4, !tbaa !9
  %439 = sext i32 %438 to i64
  %440 = getelementptr inbounds double, ptr %437, i64 %439
  %441 = load double, ptr %440, align 8, !tbaa !11
  %442 = fadd double %436, %441
  %443 = fdiv double %435, %442
  %444 = load double, ptr %41, align 8, !tbaa !11
  %445 = fmul double %444, %443
  store double %445, ptr %41, align 8, !tbaa !11
  br label %447

446:                                              ; preds = %424
  store double 0.000000e+00, ptr %41, align 8, !tbaa !11
  br label %447

447:                                              ; preds = %446, %434
  %448 = load i32, ptr %34, align 4, !tbaa !9
  %449 = load i32, ptr %35, align 4, !tbaa !9
  %450 = mul nsw i32 %448, %449
  %451 = load i32, ptr %49, align 4, !tbaa !9
  %452 = add nsw i32 %451, %450
  store i32 %452, ptr %49, align 4, !tbaa !9
  %453 = load i32, ptr %35, align 4, !tbaa !9
  %454 = add nsw i32 %453, -1
  store i32 %454, ptr %35, align 4, !tbaa !9
  br label %455

455:                                              ; preds = %447
  %456 = load i32, ptr %22, align 4, !tbaa !9
  %457 = load i32, ptr %43, align 4, !tbaa !9
  %458 = add nsw i32 %457, %456
  store i32 %458, ptr %43, align 4, !tbaa !9
  br label %339, !llvm.loop !20

459:                                              ; preds = %352
  %460 = load double, ptr %36, align 8, !tbaa !11
  store double %460, ptr %41, align 8, !tbaa !11
  br label %520

461:                                              ; preds = %314
  store double 1.000000e+00, ptr %26, align 8, !tbaa !11
  %462 = load double, ptr %36, align 8, !tbaa !11
  %463 = load double, ptr %54, align 8, !tbaa !11
  %464 = fcmp oge double %462, %463
  br i1 %464, label %465, label %467

465:                                              ; preds = %461
  %466 = load double, ptr %36, align 8, !tbaa !11
  br label %469

467:                                              ; preds = %461
  %468 = load double, ptr %54, align 8, !tbaa !11
  br label %469

469:                                              ; preds = %467, %465
  %470 = phi double [ %466, %465 ], [ %468, %467 ]
  %471 = fdiv double 5.000000e-01, %470
  store double %471, ptr %27, align 8, !tbaa !11
  %472 = load double, ptr %26, align 8, !tbaa !11
  %473 = load double, ptr %27, align 8, !tbaa !11
  %474 = fcmp ole double %472, %473
  br i1 %474, label %475, label %477

475:                                              ; preds = %469
  %476 = load double, ptr %26, align 8, !tbaa !11
  br label %479

477:                                              ; preds = %469
  %478 = load double, ptr %27, align 8, !tbaa !11
  br label %479

479:                                              ; preds = %477, %475
  %480 = phi double [ %476, %475 ], [ %478, %477 ]
  store double %480, ptr %41, align 8, !tbaa !11
  %481 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %481, ptr %22, align 4, !tbaa !9
  %482 = load i32, ptr %34, align 4, !tbaa !9
  store i32 %482, ptr %21, align 4, !tbaa !9
  %483 = load i32, ptr %53, align 4, !tbaa !9
  store i32 %483, ptr %43, align 4, !tbaa !9
  br label %484

484:                                              ; preds = %515, %479
  %485 = load i32, ptr %21, align 4, !tbaa !9
  %486 = icmp slt i32 %485, 0
  br i1 %486, label %487, label %492

487:                                              ; preds = %484
  %488 = load i32, ptr %43, align 4, !tbaa !9
  %489 = load i32, ptr %22, align 4, !tbaa !9
  %490 = icmp sge i32 %488, %489
  %491 = zext i1 %490 to i32
  br label %497

492:                                              ; preds = %484
  %493 = load i32, ptr %43, align 4, !tbaa !9
  %494 = load i32, ptr %22, align 4, !tbaa !9
  %495 = icmp sle i32 %493, %494
  %496 = zext i1 %495 to i32
  br label %497

497:                                              ; preds = %492, %487
  %498 = phi i32 [ %491, %487 ], [ %496, %492 ]
  %499 = icmp ne i32 %498, 0
  br i1 %499, label %500, label %519

500:                                              ; preds = %497
  %501 = load double, ptr %41, align 8, !tbaa !11
  %502 = load double, ptr %54, align 8, !tbaa !11
  %503 = fcmp ole double %501, %502
  br i1 %503, label %504, label %505

504:                                              ; preds = %500
  br label %521

505:                                              ; preds = %500
  %506 = load ptr, ptr %19, align 8, !tbaa !5
  %507 = load i32, ptr %43, align 4, !tbaa !9
  %508 = sext i32 %507 to i64
  %509 = getelementptr inbounds double, ptr %506, i64 %508
  %510 = load double, ptr %509, align 8, !tbaa !11
  %511 = fadd double %510, 1.000000e+00
  %512 = fdiv double 1.000000e+00, %511
  %513 = load double, ptr %41, align 8, !tbaa !11
  %514 = fmul double %513, %512
  store double %514, ptr %41, align 8, !tbaa !11
  br label %515

515:                                              ; preds = %505
  %516 = load i32, ptr %21, align 4, !tbaa !9
  %517 = load i32, ptr %43, align 4, !tbaa !9
  %518 = add nsw i32 %517, %516
  store i32 %518, ptr %43, align 4, !tbaa !9
  br label %484, !llvm.loop !21

519:                                              ; preds = %497
  br label %520

520:                                              ; preds = %519, %459
  br label %521

521:                                              ; preds = %520, %504, %359, %313
  br label %736

522:                                              ; preds = %297
  %523 = load i32, ptr %48, align 4, !tbaa !9
  %524 = icmp ne i32 %523, 0
  br i1 %524, label %525, label %528

525:                                              ; preds = %522
  store i32 1, ptr %53, align 4, !tbaa !9
  %526 = load ptr, ptr %15, align 8, !tbaa !5
  %527 = load i32, ptr %526, align 4, !tbaa !9
  store i32 %527, ptr %46, align 4, !tbaa !9
  store i32 1, ptr %34, align 4, !tbaa !9
  br label %531

528:                                              ; preds = %522
  %529 = load ptr, ptr %15, align 8, !tbaa !5
  %530 = load i32, ptr %529, align 4, !tbaa !9
  store i32 %530, ptr %53, align 4, !tbaa !9
  store i32 1, ptr %46, align 4, !tbaa !9
  store i32 -1, ptr %34, align 4, !tbaa !9
  br label %531

531:                                              ; preds = %528, %525
  %532 = load double, ptr %44, align 8, !tbaa !11
  %533 = fcmp une double %532, 1.000000e+00
  br i1 %533, label %534, label %535

534:                                              ; preds = %531
  store double 0.000000e+00, ptr %41, align 8, !tbaa !11
  br label %735

535:                                              ; preds = %531
  %536 = load i32, ptr %55, align 4, !tbaa !9
  %537 = icmp ne i32 %536, 0
  br i1 %537, label %538, label %675

538:                                              ; preds = %535
  %539 = load double, ptr %36, align 8, !tbaa !11
  %540 = load double, ptr %54, align 8, !tbaa !11
  %541 = fcmp oge double %539, %540
  br i1 %541, label %542, label %544

542:                                              ; preds = %538
  %543 = load double, ptr %36, align 8, !tbaa !11
  br label %546

544:                                              ; preds = %538
  %545 = load double, ptr %54, align 8, !tbaa !11
  br label %546

546:                                              ; preds = %544, %542
  %547 = phi double [ %543, %542 ], [ %545, %544 ]
  %548 = fdiv double 5.000000e-01, %547
  store double %548, ptr %41, align 8, !tbaa !11
  %549 = load double, ptr %41, align 8, !tbaa !11
  store double %549, ptr %36, align 8, !tbaa !11
  %550 = load i32, ptr %53, align 4, !tbaa !9
  %551 = load i32, ptr %53, align 4, !tbaa !9
  %552 = add nsw i32 %551, 1
  %553 = mul nsw i32 %550, %552
  %554 = sdiv i32 %553, 2
  store i32 %554, ptr %49, align 4, !tbaa !9
  store i32 1, ptr %35, align 4, !tbaa !9
  %555 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %555, ptr %21, align 4, !tbaa !9
  %556 = load i32, ptr %34, align 4, !tbaa !9
  store i32 %556, ptr %22, align 4, !tbaa !9
  %557 = load i32, ptr %53, align 4, !tbaa !9
  store i32 %557, ptr %43, align 4, !tbaa !9
  br label %558

558:                                              ; preds = %661, %546
  %559 = load i32, ptr %22, align 4, !tbaa !9
  %560 = icmp slt i32 %559, 0
  br i1 %560, label %561, label %566

561:                                              ; preds = %558
  %562 = load i32, ptr %43, align 4, !tbaa !9
  %563 = load i32, ptr %21, align 4, !tbaa !9
  %564 = icmp sge i32 %562, %563
  %565 = zext i1 %564 to i32
  br label %571

566:                                              ; preds = %558
  %567 = load i32, ptr %43, align 4, !tbaa !9
  %568 = load i32, ptr %21, align 4, !tbaa !9
  %569 = icmp sle i32 %567, %568
  %570 = zext i1 %569 to i32
  br label %571

571:                                              ; preds = %566, %561
  %572 = phi i32 [ %565, %561 ], [ %570, %566 ]
  %573 = icmp ne i32 %572, 0
  br i1 %573, label %574, label %665

574:                                              ; preds = %571
  %575 = load double, ptr %41, align 8, !tbaa !11
  %576 = load double, ptr %54, align 8, !tbaa !11
  %577 = fcmp ole double %575, %576
  br i1 %577, label %578, label %579

578:                                              ; preds = %574
  br label %735

579:                                              ; preds = %574
  %580 = load ptr, ptr %19, align 8, !tbaa !5
  %581 = load i32, ptr %43, align 4, !tbaa !9
  %582 = sext i32 %581 to i64
  %583 = getelementptr inbounds double, ptr %580, i64 %582
  %584 = load double, ptr %583, align 8, !tbaa !11
  %585 = fadd double %584, 1.000000e+00
  store double %585, ptr %50, align 8, !tbaa !11
  %586 = load double, ptr %41, align 8, !tbaa !11
  store double %586, ptr %26, align 8, !tbaa !11
  %587 = load double, ptr %36, align 8, !tbaa !11
  %588 = load double, ptr %50, align 8, !tbaa !11
  %589 = fdiv double %587, %588
  store double %589, ptr %27, align 8, !tbaa !11
  %590 = load double, ptr %26, align 8, !tbaa !11
  %591 = load double, ptr %27, align 8, !tbaa !11
  %592 = fcmp ole double %590, %591
  br i1 %592, label %593, label %595

593:                                              ; preds = %579
  %594 = load double, ptr %26, align 8, !tbaa !11
  br label %597

595:                                              ; preds = %579
  %596 = load double, ptr %27, align 8, !tbaa !11
  br label %597

597:                                              ; preds = %595, %593
  %598 = phi double [ %594, %593 ], [ %596, %595 ]
  store double %598, ptr %41, align 8, !tbaa !11
  %599 = load i32, ptr %49, align 4, !tbaa !9
  store i32 %599, ptr %23, align 4, !tbaa !9
  %600 = load ptr, ptr %16, align 8, !tbaa !5
  %601 = load i32, ptr %23, align 4, !tbaa !9
  %602 = sext i32 %601 to i64
  %603 = getelementptr inbounds %struct.doublecomplex, ptr %600, i64 %602
  %604 = getelementptr inbounds %struct.doublecomplex, ptr %603, i32 0, i32 0
  %605 = load double, ptr %604, align 8, !tbaa !16
  %606 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double %605, ptr %606, align 8, !tbaa !16
  %607 = load ptr, ptr %16, align 8, !tbaa !5
  %608 = load i32, ptr %23, align 4, !tbaa !9
  %609 = sext i32 %608 to i64
  %610 = getelementptr inbounds %struct.doublecomplex, ptr %607, i64 %609
  %611 = getelementptr inbounds %struct.doublecomplex, ptr %610, i32 0, i32 1
  %612 = load double, ptr %611, align 8, !tbaa !19
  %613 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double %612, ptr %613, align 8, !tbaa !19
  %614 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %615 = load double, ptr %614, align 8, !tbaa !16
  store double %615, ptr %26, align 8, !tbaa !11
  %616 = load double, ptr %26, align 8, !tbaa !11
  %617 = fcmp oge double %616, 0.000000e+00
  br i1 %617, label %618, label %620

618:                                              ; preds = %597
  %619 = load double, ptr %26, align 8, !tbaa !11
  br label %623

620:                                              ; preds = %597
  %621 = load double, ptr %26, align 8, !tbaa !11
  %622 = fneg double %621
  br label %623

623:                                              ; preds = %620, %618
  %624 = phi double [ %619, %618 ], [ %622, %620 ]
  %625 = call { double, double } @Cd(ptr noundef %39)
  %626 = extractvalue { double, double } %625, 0
  %627 = extractvalue { double, double } %625, 1
  store double %627, ptr %27, align 8, !tbaa !11
  %628 = load double, ptr %27, align 8, !tbaa !11
  %629 = fcmp oge double %628, 0.000000e+00
  br i1 %629, label %630, label %632

630:                                              ; preds = %623
  %631 = load double, ptr %27, align 8, !tbaa !11
  br label %635

632:                                              ; preds = %623
  %633 = load double, ptr %27, align 8, !tbaa !11
  %634 = fneg double %633
  br label %635

635:                                              ; preds = %632, %630
  %636 = phi double [ %631, %630 ], [ %634, %632 ]
  %637 = fadd double %624, %636
  store double %637, ptr %57, align 8, !tbaa !11
  %638 = load double, ptr %57, align 8, !tbaa !11
  %639 = load double, ptr %54, align 8, !tbaa !11
  %640 = fcmp oge double %638, %639
  br i1 %640, label %641, label %652

641:                                              ; preds = %635
  %642 = load double, ptr %50, align 8, !tbaa !11
  %643 = load double, ptr %57, align 8, !tbaa !11
  %644 = fcmp ogt double %642, %643
  br i1 %644, label %645, label %651

645:                                              ; preds = %641
  %646 = load double, ptr %57, align 8, !tbaa !11
  %647 = load double, ptr %50, align 8, !tbaa !11
  %648 = fdiv double %646, %647
  %649 = load double, ptr %36, align 8, !tbaa !11
  %650 = fmul double %649, %648
  store double %650, ptr %36, align 8, !tbaa !11
  br label %651

651:                                              ; preds = %645, %641
  br label %653

652:                                              ; preds = %635
  store double 0.000000e+00, ptr %36, align 8, !tbaa !11
  br label %653

653:                                              ; preds = %652, %651
  %654 = load i32, ptr %35, align 4, !tbaa !9
  %655 = add nsw i32 %654, 1
  store i32 %655, ptr %35, align 4, !tbaa !9
  %656 = load i32, ptr %34, align 4, !tbaa !9
  %657 = load i32, ptr %35, align 4, !tbaa !9
  %658 = mul nsw i32 %656, %657
  %659 = load i32, ptr %49, align 4, !tbaa !9
  %660 = add nsw i32 %659, %658
  store i32 %660, ptr %49, align 4, !tbaa !9
  br label %661

661:                                              ; preds = %653
  %662 = load i32, ptr %22, align 4, !tbaa !9
  %663 = load i32, ptr %43, align 4, !tbaa !9
  %664 = add nsw i32 %663, %662
  store i32 %664, ptr %43, align 4, !tbaa !9
  br label %558, !llvm.loop !22

665:                                              ; preds = %571
  %666 = load double, ptr %41, align 8, !tbaa !11
  %667 = load double, ptr %36, align 8, !tbaa !11
  %668 = fcmp ole double %666, %667
  br i1 %668, label %669, label %671

669:                                              ; preds = %665
  %670 = load double, ptr %41, align 8, !tbaa !11
  br label %673

671:                                              ; preds = %665
  %672 = load double, ptr %36, align 8, !tbaa !11
  br label %673

673:                                              ; preds = %671, %669
  %674 = phi double [ %670, %669 ], [ %672, %671 ]
  store double %674, ptr %41, align 8, !tbaa !11
  br label %734

675:                                              ; preds = %535
  store double 1.000000e+00, ptr %26, align 8, !tbaa !11
  %676 = load double, ptr %36, align 8, !tbaa !11
  %677 = load double, ptr %54, align 8, !tbaa !11
  %678 = fcmp oge double %676, %677
  br i1 %678, label %679, label %681

679:                                              ; preds = %675
  %680 = load double, ptr %36, align 8, !tbaa !11
  br label %683

681:                                              ; preds = %675
  %682 = load double, ptr %54, align 8, !tbaa !11
  br label %683

683:                                              ; preds = %681, %679
  %684 = phi double [ %680, %679 ], [ %682, %681 ]
  %685 = fdiv double 5.000000e-01, %684
  store double %685, ptr %27, align 8, !tbaa !11
  %686 = load double, ptr %26, align 8, !tbaa !11
  %687 = load double, ptr %27, align 8, !tbaa !11
  %688 = fcmp ole double %686, %687
  br i1 %688, label %689, label %691

689:                                              ; preds = %683
  %690 = load double, ptr %26, align 8, !tbaa !11
  br label %693

691:                                              ; preds = %683
  %692 = load double, ptr %27, align 8, !tbaa !11
  br label %693

693:                                              ; preds = %691, %689
  %694 = phi double [ %690, %689 ], [ %692, %691 ]
  store double %694, ptr %41, align 8, !tbaa !11
  %695 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %695, ptr %22, align 4, !tbaa !9
  %696 = load i32, ptr %34, align 4, !tbaa !9
  store i32 %696, ptr %21, align 4, !tbaa !9
  %697 = load i32, ptr %53, align 4, !tbaa !9
  store i32 %697, ptr %43, align 4, !tbaa !9
  br label %698

698:                                              ; preds = %729, %693
  %699 = load i32, ptr %21, align 4, !tbaa !9
  %700 = icmp slt i32 %699, 0
  br i1 %700, label %701, label %706

701:                                              ; preds = %698
  %702 = load i32, ptr %43, align 4, !tbaa !9
  %703 = load i32, ptr %22, align 4, !tbaa !9
  %704 = icmp sge i32 %702, %703
  %705 = zext i1 %704 to i32
  br label %711

706:                                              ; preds = %698
  %707 = load i32, ptr %43, align 4, !tbaa !9
  %708 = load i32, ptr %22, align 4, !tbaa !9
  %709 = icmp sle i32 %707, %708
  %710 = zext i1 %709 to i32
  br label %711

711:                                              ; preds = %706, %701
  %712 = phi i32 [ %705, %701 ], [ %710, %706 ]
  %713 = icmp ne i32 %712, 0
  br i1 %713, label %714, label %733

714:                                              ; preds = %711
  %715 = load double, ptr %41, align 8, !tbaa !11
  %716 = load double, ptr %54, align 8, !tbaa !11
  %717 = fcmp ole double %715, %716
  br i1 %717, label %718, label %719

718:                                              ; preds = %714
  br label %735

719:                                              ; preds = %714
  %720 = load ptr, ptr %19, align 8, !tbaa !5
  %721 = load i32, ptr %43, align 4, !tbaa !9
  %722 = sext i32 %721 to i64
  %723 = getelementptr inbounds double, ptr %720, i64 %722
  %724 = load double, ptr %723, align 8, !tbaa !11
  %725 = fadd double %724, 1.000000e+00
  store double %725, ptr %50, align 8, !tbaa !11
  %726 = load double, ptr %50, align 8, !tbaa !11
  %727 = load double, ptr %41, align 8, !tbaa !11
  %728 = fdiv double %727, %726
  store double %728, ptr %41, align 8, !tbaa !11
  br label %729

729:                                              ; preds = %719
  %730 = load i32, ptr %21, align 4, !tbaa !9
  %731 = load i32, ptr %43, align 4, !tbaa !9
  %732 = add nsw i32 %731, %730
  store i32 %732, ptr %43, align 4, !tbaa !9
  br label %698, !llvm.loop !23

733:                                              ; preds = %711
  br label %734

734:                                              ; preds = %733, %673
  br label %735

735:                                              ; preds = %734, %718, %578, %534
  br label %736

736:                                              ; preds = %735, %521
  %737 = load double, ptr %41, align 8, !tbaa !11
  %738 = load double, ptr %44, align 8, !tbaa !11
  %739 = fmul double %737, %738
  %740 = load double, ptr %54, align 8, !tbaa !11
  %741 = fcmp ogt double %739, %740
  br i1 %741, label %742, label %751

742:                                              ; preds = %736
  %743 = load ptr, ptr %11, align 8, !tbaa !5
  %744 = load ptr, ptr %12, align 8, !tbaa !5
  %745 = load ptr, ptr %13, align 8, !tbaa !5
  %746 = load ptr, ptr %15, align 8, !tbaa !5
  %747 = load ptr, ptr %16, align 8, !tbaa !5
  %748 = getelementptr inbounds %struct.doublecomplex, ptr %747, i64 1
  %749 = load ptr, ptr %17, align 8, !tbaa !5
  %750 = getelementptr inbounds %struct.doublecomplex, ptr %749, i64 1
  call void @ztpsv_(ptr noundef %743, ptr noundef %744, ptr noundef %745, ptr noundef %746, ptr noundef %748, ptr noundef %750, ptr noundef @c__1)
  br label %3023

751:                                              ; preds = %736
  %752 = load double, ptr %40, align 8, !tbaa !11
  %753 = load double, ptr %51, align 8, !tbaa !11
  %754 = fmul double %753, 5.000000e-01
  %755 = fcmp ogt double %752, %754
  br i1 %755, label %756, label %767

756:                                              ; preds = %751
  %757 = load double, ptr %51, align 8, !tbaa !11
  %758 = fmul double %757, 5.000000e-01
  %759 = load double, ptr %40, align 8, !tbaa !11
  %760 = fdiv double %758, %759
  %761 = load ptr, ptr %18, align 8, !tbaa !5
  store double %760, ptr %761, align 8, !tbaa !11
  %762 = load ptr, ptr %15, align 8, !tbaa !5
  %763 = load ptr, ptr %18, align 8, !tbaa !5
  %764 = load ptr, ptr %17, align 8, !tbaa !5
  %765 = getelementptr inbounds %struct.doublecomplex, ptr %764, i64 1
  call void @zdscal_(ptr noundef %762, ptr noundef %763, ptr noundef %765, ptr noundef @c__1)
  %766 = load double, ptr %51, align 8, !tbaa !11
  store double %766, ptr %40, align 8, !tbaa !11
  br label %770

767:                                              ; preds = %751
  %768 = load double, ptr %40, align 8, !tbaa !11
  %769 = fmul double %768, 2.000000e+00
  store double %769, ptr %40, align 8, !tbaa !11
  br label %770

770:                                              ; preds = %767, %756
  %771 = load i32, ptr %52, align 4, !tbaa !9
  %772 = icmp ne i32 %771, 0
  br i1 %772, label %773, label %1343

773:                                              ; preds = %770
  %774 = load i32, ptr %53, align 4, !tbaa !9
  %775 = load i32, ptr %53, align 4, !tbaa !9
  %776 = add nsw i32 %775, 1
  %777 = mul nsw i32 %774, %776
  %778 = sdiv i32 %777, 2
  store i32 %778, ptr %49, align 4, !tbaa !9
  %779 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %779, ptr %21, align 4, !tbaa !9
  %780 = load i32, ptr %34, align 4, !tbaa !9
  store i32 %780, ptr %22, align 4, !tbaa !9
  %781 = load i32, ptr %53, align 4, !tbaa !9
  store i32 %781, ptr %43, align 4, !tbaa !9
  br label %782

782:                                              ; preds = %1338, %773
  %783 = load i32, ptr %22, align 4, !tbaa !9
  %784 = icmp slt i32 %783, 0
  br i1 %784, label %785, label %790

785:                                              ; preds = %782
  %786 = load i32, ptr %43, align 4, !tbaa !9
  %787 = load i32, ptr %21, align 4, !tbaa !9
  %788 = icmp sge i32 %786, %787
  %789 = zext i1 %788 to i32
  br label %795

790:                                              ; preds = %782
  %791 = load i32, ptr %43, align 4, !tbaa !9
  %792 = load i32, ptr %21, align 4, !tbaa !9
  %793 = icmp sle i32 %791, %792
  %794 = zext i1 %793 to i32
  br label %795

795:                                              ; preds = %790, %785
  %796 = phi i32 [ %789, %785 ], [ %794, %790 ]
  %797 = icmp ne i32 %796, 0
  br i1 %797, label %798, label %1342

798:                                              ; preds = %795
  %799 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %799, ptr %23, align 4, !tbaa !9
  %800 = load ptr, ptr %17, align 8, !tbaa !5
  %801 = load i32, ptr %23, align 4, !tbaa !9
  %802 = sext i32 %801 to i64
  %803 = getelementptr inbounds %struct.doublecomplex, ptr %800, i64 %802
  %804 = getelementptr inbounds %struct.doublecomplex, ptr %803, i32 0, i32 0
  %805 = load double, ptr %804, align 8, !tbaa !16
  store double %805, ptr %26, align 8, !tbaa !11
  %806 = load double, ptr %26, align 8, !tbaa !11
  %807 = fcmp oge double %806, 0.000000e+00
  br i1 %807, label %808, label %810

808:                                              ; preds = %798
  %809 = load double, ptr %26, align 8, !tbaa !11
  br label %813

810:                                              ; preds = %798
  %811 = load double, ptr %26, align 8, !tbaa !11
  %812 = fneg double %811
  br label %813

813:                                              ; preds = %810, %808
  %814 = phi double [ %809, %808 ], [ %812, %810 ]
  %815 = load ptr, ptr %17, align 8, !tbaa !5
  %816 = load i32, ptr %43, align 4, !tbaa !9
  %817 = sext i32 %816 to i64
  %818 = getelementptr inbounds %struct.doublecomplex, ptr %815, i64 %817
  %819 = call { double, double } @Cd(ptr noundef %818)
  %820 = extractvalue { double, double } %819, 0
  %821 = extractvalue { double, double } %819, 1
  store double %821, ptr %27, align 8, !tbaa !11
  %822 = load double, ptr %27, align 8, !tbaa !11
  %823 = fcmp oge double %822, 0.000000e+00
  br i1 %823, label %824, label %826

824:                                              ; preds = %813
  %825 = load double, ptr %27, align 8, !tbaa !11
  br label %829

826:                                              ; preds = %813
  %827 = load double, ptr %27, align 8, !tbaa !11
  %828 = fneg double %827
  br label %829

829:                                              ; preds = %826, %824
  %830 = phi double [ %825, %824 ], [ %828, %826 ]
  %831 = fadd double %814, %830
  store double %831, ptr %50, align 8, !tbaa !11
  %832 = load i32, ptr %55, align 4, !tbaa !9
  %833 = icmp ne i32 %832, 0
  br i1 %833, label %834, label %860

834:                                              ; preds = %829
  %835 = load i32, ptr %49, align 4, !tbaa !9
  store i32 %835, ptr %23, align 4, !tbaa !9
  %836 = load double, ptr %44, align 8, !tbaa !11
  %837 = load ptr, ptr %16, align 8, !tbaa !5
  %838 = load i32, ptr %23, align 4, !tbaa !9
  %839 = sext i32 %838 to i64
  %840 = getelementptr inbounds %struct.doublecomplex, ptr %837, i64 %839
  %841 = getelementptr inbounds %struct.doublecomplex, ptr %840, i32 0, i32 0
  %842 = load double, ptr %841, align 8, !tbaa !16
  %843 = fmul double %836, %842
  %844 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %843, ptr %844, align 8, !tbaa !16
  %845 = load double, ptr %44, align 8, !tbaa !11
  %846 = load ptr, ptr %16, align 8, !tbaa !5
  %847 = load i32, ptr %23, align 4, !tbaa !9
  %848 = sext i32 %847 to i64
  %849 = getelementptr inbounds %struct.doublecomplex, ptr %846, i64 %848
  %850 = getelementptr inbounds %struct.doublecomplex, ptr %849, i32 0, i32 1
  %851 = load double, ptr %850, align 8, !tbaa !19
  %852 = fmul double %845, %851
  %853 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %852, ptr %853, align 8, !tbaa !19
  %854 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %855 = load double, ptr %854, align 8, !tbaa !16
  %856 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double %855, ptr %856, align 8, !tbaa !16
  %857 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %858 = load double, ptr %857, align 8, !tbaa !19
  %859 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double %858, ptr %859, align 8, !tbaa !19
  br label %868

860:                                              ; preds = %829
  %861 = load double, ptr %44, align 8, !tbaa !11
  %862 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double %861, ptr %862, align 8, !tbaa !16
  %863 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double 0.000000e+00, ptr %863, align 8, !tbaa !19
  %864 = load double, ptr %44, align 8, !tbaa !11
  %865 = fcmp oeq double %864, 1.000000e+00
  br i1 %865, label %866, label %867

866:                                              ; preds = %860
  br label %1102

867:                                              ; preds = %860
  br label %868

868:                                              ; preds = %867, %834
  %869 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %870 = load double, ptr %869, align 8, !tbaa !16
  store double %870, ptr %26, align 8, !tbaa !11
  %871 = load double, ptr %26, align 8, !tbaa !11
  %872 = fcmp oge double %871, 0.000000e+00
  br i1 %872, label %873, label %875

873:                                              ; preds = %868
  %874 = load double, ptr %26, align 8, !tbaa !11
  br label %878

875:                                              ; preds = %868
  %876 = load double, ptr %26, align 8, !tbaa !11
  %877 = fneg double %876
  br label %878

878:                                              ; preds = %875, %873
  %879 = phi double [ %874, %873 ], [ %877, %875 ]
  %880 = call { double, double } @Cd(ptr noundef %39)
  %881 = extractvalue { double, double } %880, 0
  %882 = extractvalue { double, double } %880, 1
  store double %882, ptr %27, align 8, !tbaa !11
  %883 = load double, ptr %27, align 8, !tbaa !11
  %884 = fcmp oge double %883, 0.000000e+00
  br i1 %884, label %885, label %887

885:                                              ; preds = %878
  %886 = load double, ptr %27, align 8, !tbaa !11
  br label %890

887:                                              ; preds = %878
  %888 = load double, ptr %27, align 8, !tbaa !11
  %889 = fneg double %888
  br label %890

890:                                              ; preds = %887, %885
  %891 = phi double [ %886, %885 ], [ %889, %887 ]
  %892 = fadd double %879, %891
  store double %892, ptr %57, align 8, !tbaa !11
  %893 = load double, ptr %57, align 8, !tbaa !11
  %894 = load double, ptr %54, align 8, !tbaa !11
  %895 = fcmp ogt double %893, %894
  br i1 %895, label %896, label %972

896:                                              ; preds = %890
  %897 = load double, ptr %57, align 8, !tbaa !11
  %898 = fcmp olt double %897, 1.000000e+00
  br i1 %898, label %899, label %919

899:                                              ; preds = %896
  %900 = load double, ptr %50, align 8, !tbaa !11
  %901 = load double, ptr %57, align 8, !tbaa !11
  %902 = load double, ptr %51, align 8, !tbaa !11
  %903 = fmul double %901, %902
  %904 = fcmp ogt double %900, %903
  br i1 %904, label %905, label %918

905:                                              ; preds = %899
  %906 = load double, ptr %50, align 8, !tbaa !11
  %907 = fdiv double 1.000000e+00, %906
  store double %907, ptr %56, align 8, !tbaa !11
  %908 = load ptr, ptr %15, align 8, !tbaa !5
  %909 = load ptr, ptr %17, align 8, !tbaa !5
  %910 = getelementptr inbounds %struct.doublecomplex, ptr %909, i64 1
  call void @zdscal_(ptr noundef %908, ptr noundef %56, ptr noundef %910, ptr noundef @c__1)
  %911 = load double, ptr %56, align 8, !tbaa !11
  %912 = load ptr, ptr %18, align 8, !tbaa !5
  %913 = load double, ptr %912, align 8, !tbaa !11
  %914 = fmul double %913, %911
  store double %914, ptr %912, align 8, !tbaa !11
  %915 = load double, ptr %56, align 8, !tbaa !11
  %916 = load double, ptr %40, align 8, !tbaa !11
  %917 = fmul double %916, %915
  store double %917, ptr %40, align 8, !tbaa !11
  br label %918

918:                                              ; preds = %905, %899
  br label %919

919:                                              ; preds = %918, %896
  %920 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %920, ptr %23, align 4, !tbaa !9
  %921 = load ptr, ptr %17, align 8, !tbaa !5
  %922 = load i32, ptr %43, align 4, !tbaa !9
  %923 = sext i32 %922 to i64
  %924 = getelementptr inbounds %struct.doublecomplex, ptr %921, i64 %923
  call void @zladiv_(ptr noundef %30, ptr noundef %924, ptr noundef %39)
  %925 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %926 = load double, ptr %925, align 8, !tbaa !16
  %927 = load ptr, ptr %17, align 8, !tbaa !5
  %928 = load i32, ptr %23, align 4, !tbaa !9
  %929 = sext i32 %928 to i64
  %930 = getelementptr inbounds %struct.doublecomplex, ptr %927, i64 %929
  %931 = getelementptr inbounds %struct.doublecomplex, ptr %930, i32 0, i32 0
  store double %926, ptr %931, align 8, !tbaa !16
  %932 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %933 = load double, ptr %932, align 8, !tbaa !19
  %934 = load ptr, ptr %17, align 8, !tbaa !5
  %935 = load i32, ptr %23, align 4, !tbaa !9
  %936 = sext i32 %935 to i64
  %937 = getelementptr inbounds %struct.doublecomplex, ptr %934, i64 %936
  %938 = getelementptr inbounds %struct.doublecomplex, ptr %937, i32 0, i32 1
  store double %933, ptr %938, align 8, !tbaa !19
  %939 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %939, ptr %23, align 4, !tbaa !9
  %940 = load ptr, ptr %17, align 8, !tbaa !5
  %941 = load i32, ptr %23, align 4, !tbaa !9
  %942 = sext i32 %941 to i64
  %943 = getelementptr inbounds %struct.doublecomplex, ptr %940, i64 %942
  %944 = getelementptr inbounds %struct.doublecomplex, ptr %943, i32 0, i32 0
  %945 = load double, ptr %944, align 8, !tbaa !16
  store double %945, ptr %26, align 8, !tbaa !11
  %946 = load double, ptr %26, align 8, !tbaa !11
  %947 = fcmp oge double %946, 0.000000e+00
  br i1 %947, label %948, label %950

948:                                              ; preds = %919
  %949 = load double, ptr %26, align 8, !tbaa !11
  br label %953

950:                                              ; preds = %919
  %951 = load double, ptr %26, align 8, !tbaa !11
  %952 = fneg double %951
  br label %953

953:                                              ; preds = %950, %948
  %954 = phi double [ %949, %948 ], [ %952, %950 ]
  %955 = load ptr, ptr %17, align 8, !tbaa !5
  %956 = load i32, ptr %43, align 4, !tbaa !9
  %957 = sext i32 %956 to i64
  %958 = getelementptr inbounds %struct.doublecomplex, ptr %955, i64 %957
  %959 = call { double, double } @Cd(ptr noundef %958)
  %960 = extractvalue { double, double } %959, 0
  %961 = extractvalue { double, double } %959, 1
  store double %961, ptr %27, align 8, !tbaa !11
  %962 = load double, ptr %27, align 8, !tbaa !11
  %963 = fcmp oge double %962, 0.000000e+00
  br i1 %963, label %964, label %966

964:                                              ; preds = %953
  %965 = load double, ptr %27, align 8, !tbaa !11
  br label %969

966:                                              ; preds = %953
  %967 = load double, ptr %27, align 8, !tbaa !11
  %968 = fneg double %967
  br label %969

969:                                              ; preds = %966, %964
  %970 = phi double [ %965, %964 ], [ %968, %966 ]
  %971 = fadd double %954, %970
  store double %971, ptr %50, align 8, !tbaa !11
  br label %1101

972:                                              ; preds = %890
  %973 = load double, ptr %57, align 8, !tbaa !11
  %974 = fcmp ogt double %973, 0.000000e+00
  br i1 %974, label %975, label %1065

975:                                              ; preds = %972
  %976 = load double, ptr %50, align 8, !tbaa !11
  %977 = load double, ptr %57, align 8, !tbaa !11
  %978 = load double, ptr %51, align 8, !tbaa !11
  %979 = fmul double %977, %978
  %980 = fcmp ogt double %976, %979
  br i1 %980, label %981, label %1012

981:                                              ; preds = %975
  %982 = load double, ptr %57, align 8, !tbaa !11
  %983 = load double, ptr %51, align 8, !tbaa !11
  %984 = fmul double %982, %983
  %985 = load double, ptr %50, align 8, !tbaa !11
  %986 = fdiv double %984, %985
  store double %986, ptr %56, align 8, !tbaa !11
  %987 = load ptr, ptr %19, align 8, !tbaa !5
  %988 = load i32, ptr %43, align 4, !tbaa !9
  %989 = sext i32 %988 to i64
  %990 = getelementptr inbounds double, ptr %987, i64 %989
  %991 = load double, ptr %990, align 8, !tbaa !11
  %992 = fcmp ogt double %991, 1.000000e+00
  br i1 %992, label %993, label %1001

993:                                              ; preds = %981
  %994 = load ptr, ptr %19, align 8, !tbaa !5
  %995 = load i32, ptr %43, align 4, !tbaa !9
  %996 = sext i32 %995 to i64
  %997 = getelementptr inbounds double, ptr %994, i64 %996
  %998 = load double, ptr %997, align 8, !tbaa !11
  %999 = load double, ptr %56, align 8, !tbaa !11
  %1000 = fdiv double %999, %998
  store double %1000, ptr %56, align 8, !tbaa !11
  br label %1001

1001:                                             ; preds = %993, %981
  %1002 = load ptr, ptr %15, align 8, !tbaa !5
  %1003 = load ptr, ptr %17, align 8, !tbaa !5
  %1004 = getelementptr inbounds %struct.doublecomplex, ptr %1003, i64 1
  call void @zdscal_(ptr noundef %1002, ptr noundef %56, ptr noundef %1004, ptr noundef @c__1)
  %1005 = load double, ptr %56, align 8, !tbaa !11
  %1006 = load ptr, ptr %18, align 8, !tbaa !5
  %1007 = load double, ptr %1006, align 8, !tbaa !11
  %1008 = fmul double %1007, %1005
  store double %1008, ptr %1006, align 8, !tbaa !11
  %1009 = load double, ptr %56, align 8, !tbaa !11
  %1010 = load double, ptr %40, align 8, !tbaa !11
  %1011 = fmul double %1010, %1009
  store double %1011, ptr %40, align 8, !tbaa !11
  br label %1012

1012:                                             ; preds = %1001, %975
  %1013 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %1013, ptr %23, align 4, !tbaa !9
  %1014 = load ptr, ptr %17, align 8, !tbaa !5
  %1015 = load i32, ptr %43, align 4, !tbaa !9
  %1016 = sext i32 %1015 to i64
  %1017 = getelementptr inbounds %struct.doublecomplex, ptr %1014, i64 %1016
  call void @zladiv_(ptr noundef %30, ptr noundef %1017, ptr noundef %39)
  %1018 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %1019 = load double, ptr %1018, align 8, !tbaa !16
  %1020 = load ptr, ptr %17, align 8, !tbaa !5
  %1021 = load i32, ptr %23, align 4, !tbaa !9
  %1022 = sext i32 %1021 to i64
  %1023 = getelementptr inbounds %struct.doublecomplex, ptr %1020, i64 %1022
  %1024 = getelementptr inbounds %struct.doublecomplex, ptr %1023, i32 0, i32 0
  store double %1019, ptr %1024, align 8, !tbaa !16
  %1025 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %1026 = load double, ptr %1025, align 8, !tbaa !19
  %1027 = load ptr, ptr %17, align 8, !tbaa !5
  %1028 = load i32, ptr %23, align 4, !tbaa !9
  %1029 = sext i32 %1028 to i64
  %1030 = getelementptr inbounds %struct.doublecomplex, ptr %1027, i64 %1029
  %1031 = getelementptr inbounds %struct.doublecomplex, ptr %1030, i32 0, i32 1
  store double %1026, ptr %1031, align 8, !tbaa !19
  %1032 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %1032, ptr %23, align 4, !tbaa !9
  %1033 = load ptr, ptr %17, align 8, !tbaa !5
  %1034 = load i32, ptr %23, align 4, !tbaa !9
  %1035 = sext i32 %1034 to i64
  %1036 = getelementptr inbounds %struct.doublecomplex, ptr %1033, i64 %1035
  %1037 = getelementptr inbounds %struct.doublecomplex, ptr %1036, i32 0, i32 0
  %1038 = load double, ptr %1037, align 8, !tbaa !16
  store double %1038, ptr %26, align 8, !tbaa !11
  %1039 = load double, ptr %26, align 8, !tbaa !11
  %1040 = fcmp oge double %1039, 0.000000e+00
  br i1 %1040, label %1041, label %1043

1041:                                             ; preds = %1012
  %1042 = load double, ptr %26, align 8, !tbaa !11
  br label %1046

1043:                                             ; preds = %1012
  %1044 = load double, ptr %26, align 8, !tbaa !11
  %1045 = fneg double %1044
  br label %1046

1046:                                             ; preds = %1043, %1041
  %1047 = phi double [ %1042, %1041 ], [ %1045, %1043 ]
  %1048 = load ptr, ptr %17, align 8, !tbaa !5
  %1049 = load i32, ptr %43, align 4, !tbaa !9
  %1050 = sext i32 %1049 to i64
  %1051 = getelementptr inbounds %struct.doublecomplex, ptr %1048, i64 %1050
  %1052 = call { double, double } @Cd(ptr noundef %1051)
  %1053 = extractvalue { double, double } %1052, 0
  %1054 = extractvalue { double, double } %1052, 1
  store double %1054, ptr %27, align 8, !tbaa !11
  %1055 = load double, ptr %27, align 8, !tbaa !11
  %1056 = fcmp oge double %1055, 0.000000e+00
  br i1 %1056, label %1057, label %1059

1057:                                             ; preds = %1046
  %1058 = load double, ptr %27, align 8, !tbaa !11
  br label %1062

1059:                                             ; preds = %1046
  %1060 = load double, ptr %27, align 8, !tbaa !11
  %1061 = fneg double %1060
  br label %1062

1062:                                             ; preds = %1059, %1057
  %1063 = phi double [ %1058, %1057 ], [ %1061, %1059 ]
  %1064 = fadd double %1047, %1063
  store double %1064, ptr %50, align 8, !tbaa !11
  br label %1100

1065:                                             ; preds = %972
  %1066 = load ptr, ptr %15, align 8, !tbaa !5
  %1067 = load i32, ptr %1066, align 4, !tbaa !9
  store i32 %1067, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %1068

1068:                                             ; preds = %1084, %1065
  %1069 = load i32, ptr %42, align 4, !tbaa !9
  %1070 = load i32, ptr %23, align 4, !tbaa !9
  %1071 = icmp sle i32 %1069, %1070
  br i1 %1071, label %1072, label %1087

1072:                                             ; preds = %1068
  %1073 = load i32, ptr %42, align 4, !tbaa !9
  store i32 %1073, ptr %24, align 4, !tbaa !9
  %1074 = load ptr, ptr %17, align 8, !tbaa !5
  %1075 = load i32, ptr %24, align 4, !tbaa !9
  %1076 = sext i32 %1075 to i64
  %1077 = getelementptr inbounds %struct.doublecomplex, ptr %1074, i64 %1076
  %1078 = getelementptr inbounds %struct.doublecomplex, ptr %1077, i32 0, i32 0
  store double 0.000000e+00, ptr %1078, align 8, !tbaa !16
  %1079 = load ptr, ptr %17, align 8, !tbaa !5
  %1080 = load i32, ptr %24, align 4, !tbaa !9
  %1081 = sext i32 %1080 to i64
  %1082 = getelementptr inbounds %struct.doublecomplex, ptr %1079, i64 %1081
  %1083 = getelementptr inbounds %struct.doublecomplex, ptr %1082, i32 0, i32 1
  store double 0.000000e+00, ptr %1083, align 8, !tbaa !19
  br label %1084

1084:                                             ; preds = %1072
  %1085 = load i32, ptr %42, align 4, !tbaa !9
  %1086 = add nsw i32 %1085, 1
  store i32 %1086, ptr %42, align 4, !tbaa !9
  br label %1068, !llvm.loop !24

1087:                                             ; preds = %1068
  %1088 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %1088, ptr %23, align 4, !tbaa !9
  %1089 = load ptr, ptr %17, align 8, !tbaa !5
  %1090 = load i32, ptr %23, align 4, !tbaa !9
  %1091 = sext i32 %1090 to i64
  %1092 = getelementptr inbounds %struct.doublecomplex, ptr %1089, i64 %1091
  %1093 = getelementptr inbounds %struct.doublecomplex, ptr %1092, i32 0, i32 0
  store double 1.000000e+00, ptr %1093, align 8, !tbaa !16
  %1094 = load ptr, ptr %17, align 8, !tbaa !5
  %1095 = load i32, ptr %23, align 4, !tbaa !9
  %1096 = sext i32 %1095 to i64
  %1097 = getelementptr inbounds %struct.doublecomplex, ptr %1094, i64 %1096
  %1098 = getelementptr inbounds %struct.doublecomplex, ptr %1097, i32 0, i32 1
  store double 0.000000e+00, ptr %1098, align 8, !tbaa !19
  store double 1.000000e+00, ptr %50, align 8, !tbaa !11
  %1099 = load ptr, ptr %18, align 8, !tbaa !5
  store double 0.000000e+00, ptr %1099, align 8, !tbaa !11
  store double 0.000000e+00, ptr %40, align 8, !tbaa !11
  br label %1100

1100:                                             ; preds = %1087, %1062
  br label %1101

1101:                                             ; preds = %1100, %969
  br label %1102

1102:                                             ; preds = %1101, %866
  %1103 = load double, ptr %50, align 8, !tbaa !11
  %1104 = fcmp ogt double %1103, 1.000000e+00
  br i1 %1104, label %1105, label %1130

1105:                                             ; preds = %1102
  %1106 = load double, ptr %50, align 8, !tbaa !11
  %1107 = fdiv double 1.000000e+00, %1106
  store double %1107, ptr %56, align 8, !tbaa !11
  %1108 = load ptr, ptr %19, align 8, !tbaa !5
  %1109 = load i32, ptr %43, align 4, !tbaa !9
  %1110 = sext i32 %1109 to i64
  %1111 = getelementptr inbounds double, ptr %1108, i64 %1110
  %1112 = load double, ptr %1111, align 8, !tbaa !11
  %1113 = load double, ptr %51, align 8, !tbaa !11
  %1114 = load double, ptr %40, align 8, !tbaa !11
  %1115 = fsub double %1113, %1114
  %1116 = load double, ptr %56, align 8, !tbaa !11
  %1117 = fmul double %1115, %1116
  %1118 = fcmp ogt double %1112, %1117
  br i1 %1118, label %1119, label %1129

1119:                                             ; preds = %1105
  %1120 = load double, ptr %56, align 8, !tbaa !11
  %1121 = fmul double %1120, 5.000000e-01
  store double %1121, ptr %56, align 8, !tbaa !11
  %1122 = load ptr, ptr %15, align 8, !tbaa !5
  %1123 = load ptr, ptr %17, align 8, !tbaa !5
  %1124 = getelementptr inbounds %struct.doublecomplex, ptr %1123, i64 1
  call void @zdscal_(ptr noundef %1122, ptr noundef %56, ptr noundef %1124, ptr noundef @c__1)
  %1125 = load double, ptr %56, align 8, !tbaa !11
  %1126 = load ptr, ptr %18, align 8, !tbaa !5
  %1127 = load double, ptr %1126, align 8, !tbaa !11
  %1128 = fmul double %1127, %1125
  store double %1128, ptr %1126, align 8, !tbaa !11
  br label %1129

1129:                                             ; preds = %1119, %1105
  br label %1150

1130:                                             ; preds = %1102
  %1131 = load double, ptr %50, align 8, !tbaa !11
  %1132 = load ptr, ptr %19, align 8, !tbaa !5
  %1133 = load i32, ptr %43, align 4, !tbaa !9
  %1134 = sext i32 %1133 to i64
  %1135 = getelementptr inbounds double, ptr %1132, i64 %1134
  %1136 = load double, ptr %1135, align 8, !tbaa !11
  %1137 = fmul double %1131, %1136
  %1138 = load double, ptr %51, align 8, !tbaa !11
  %1139 = load double, ptr %40, align 8, !tbaa !11
  %1140 = fsub double %1138, %1139
  %1141 = fcmp ogt double %1137, %1140
  br i1 %1141, label %1142, label %1149

1142:                                             ; preds = %1130
  %1143 = load ptr, ptr %15, align 8, !tbaa !5
  %1144 = load ptr, ptr %17, align 8, !tbaa !5
  %1145 = getelementptr inbounds %struct.doublecomplex, ptr %1144, i64 1
  call void @zdscal_(ptr noundef %1143, ptr noundef @c_b36, ptr noundef %1145, ptr noundef @c__1)
  %1146 = load ptr, ptr %18, align 8, !tbaa !5
  %1147 = load double, ptr %1146, align 8, !tbaa !11
  %1148 = fmul double %1147, 5.000000e-01
  store double %1148, ptr %1146, align 8, !tbaa !11
  br label %1149

1149:                                             ; preds = %1142, %1130
  br label %1150

1150:                                             ; preds = %1149, %1129
  %1151 = load i32, ptr %48, align 4, !tbaa !9
  %1152 = icmp ne i32 %1151, 0
  br i1 %1152, label %1153, label %1237

1153:                                             ; preds = %1150
  %1154 = load i32, ptr %43, align 4, !tbaa !9
  %1155 = icmp sgt i32 %1154, 1
  br i1 %1155, label %1156, label %1233

1156:                                             ; preds = %1153
  %1157 = load i32, ptr %43, align 4, !tbaa !9
  %1158 = sub nsw i32 %1157, 1
  store i32 %1158, ptr %23, align 4, !tbaa !9
  %1159 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %1159, ptr %24, align 4, !tbaa !9
  %1160 = load ptr, ptr %17, align 8, !tbaa !5
  %1161 = load i32, ptr %24, align 4, !tbaa !9
  %1162 = sext i32 %1161 to i64
  %1163 = getelementptr inbounds %struct.doublecomplex, ptr %1160, i64 %1162
  %1164 = getelementptr inbounds %struct.doublecomplex, ptr %1163, i32 0, i32 0
  %1165 = load double, ptr %1164, align 8, !tbaa !16
  %1166 = fneg double %1165
  %1167 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %1166, ptr %1167, align 8, !tbaa !16
  %1168 = load ptr, ptr %17, align 8, !tbaa !5
  %1169 = load i32, ptr %24, align 4, !tbaa !9
  %1170 = sext i32 %1169 to i64
  %1171 = getelementptr inbounds %struct.doublecomplex, ptr %1168, i64 %1170
  %1172 = getelementptr inbounds %struct.doublecomplex, ptr %1171, i32 0, i32 1
  %1173 = load double, ptr %1172, align 8, !tbaa !19
  %1174 = fneg double %1173
  %1175 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %1174, ptr %1175, align 8, !tbaa !19
  %1176 = load double, ptr %44, align 8, !tbaa !11
  %1177 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %1178 = load double, ptr %1177, align 8, !tbaa !16
  %1179 = fmul double %1176, %1178
  %1180 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %1179, ptr %1180, align 8, !tbaa !16
  %1181 = load double, ptr %44, align 8, !tbaa !11
  %1182 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %1183 = load double, ptr %1182, align 8, !tbaa !19
  %1184 = fmul double %1181, %1183
  %1185 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %1184, ptr %1185, align 8, !tbaa !19
  %1186 = load ptr, ptr %16, align 8, !tbaa !5
  %1187 = load i32, ptr %49, align 4, !tbaa !9
  %1188 = load i32, ptr %43, align 4, !tbaa !9
  %1189 = sub nsw i32 %1187, %1188
  %1190 = add nsw i32 %1189, 1
  %1191 = sext i32 %1190 to i64
  %1192 = getelementptr inbounds %struct.doublecomplex, ptr %1186, i64 %1191
  %1193 = load ptr, ptr %17, align 8, !tbaa !5
  %1194 = getelementptr inbounds %struct.doublecomplex, ptr %1193, i64 1
  call void @zaxpy_(ptr noundef %23, ptr noundef %30, ptr noundef %1192, ptr noundef @c__1, ptr noundef %1194, ptr noundef @c__1)
  %1195 = load i32, ptr %43, align 4, !tbaa !9
  %1196 = sub nsw i32 %1195, 1
  store i32 %1196, ptr %23, align 4, !tbaa !9
  %1197 = load ptr, ptr %17, align 8, !tbaa !5
  %1198 = getelementptr inbounds %struct.doublecomplex, ptr %1197, i64 1
  %1199 = call i32 @izamax_(ptr noundef %23, ptr noundef %1198, ptr noundef @c__1)
  store i32 %1199, ptr %42, align 4, !tbaa !9
  %1200 = load i32, ptr %42, align 4, !tbaa !9
  store i32 %1200, ptr %23, align 4, !tbaa !9
  %1201 = load ptr, ptr %17, align 8, !tbaa !5
  %1202 = load i32, ptr %23, align 4, !tbaa !9
  %1203 = sext i32 %1202 to i64
  %1204 = getelementptr inbounds %struct.doublecomplex, ptr %1201, i64 %1203
  %1205 = getelementptr inbounds %struct.doublecomplex, ptr %1204, i32 0, i32 0
  %1206 = load double, ptr %1205, align 8, !tbaa !16
  store double %1206, ptr %26, align 8, !tbaa !11
  %1207 = load double, ptr %26, align 8, !tbaa !11
  %1208 = fcmp oge double %1207, 0.000000e+00
  br i1 %1208, label %1209, label %1211

1209:                                             ; preds = %1156
  %1210 = load double, ptr %26, align 8, !tbaa !11
  br label %1214

1211:                                             ; preds = %1156
  %1212 = load double, ptr %26, align 8, !tbaa !11
  %1213 = fneg double %1212
  br label %1214

1214:                                             ; preds = %1211, %1209
  %1215 = phi double [ %1210, %1209 ], [ %1213, %1211 ]
  %1216 = load ptr, ptr %17, align 8, !tbaa !5
  %1217 = load i32, ptr %42, align 4, !tbaa !9
  %1218 = sext i32 %1217 to i64
  %1219 = getelementptr inbounds %struct.doublecomplex, ptr %1216, i64 %1218
  %1220 = call { double, double } @Cd(ptr noundef %1219)
  %1221 = extractvalue { double, double } %1220, 0
  %1222 = extractvalue { double, double } %1220, 1
  store double %1222, ptr %27, align 8, !tbaa !11
  %1223 = load double, ptr %27, align 8, !tbaa !11
  %1224 = fcmp oge double %1223, 0.000000e+00
  br i1 %1224, label %1225, label %1227

1225:                                             ; preds = %1214
  %1226 = load double, ptr %27, align 8, !tbaa !11
  br label %1230

1227:                                             ; preds = %1214
  %1228 = load double, ptr %27, align 8, !tbaa !11
  %1229 = fneg double %1228
  br label %1230

1230:                                             ; preds = %1227, %1225
  %1231 = phi double [ %1226, %1225 ], [ %1229, %1227 ]
  %1232 = fadd double %1215, %1231
  store double %1232, ptr %40, align 8, !tbaa !11
  br label %1233

1233:                                             ; preds = %1230, %1153
  %1234 = load i32, ptr %43, align 4, !tbaa !9
  %1235 = load i32, ptr %49, align 4, !tbaa !9
  %1236 = sub nsw i32 %1235, %1234
  store i32 %1236, ptr %49, align 4, !tbaa !9
  br label %1337

1237:                                             ; preds = %1150
  %1238 = load i32, ptr %43, align 4, !tbaa !9
  %1239 = load ptr, ptr %15, align 8, !tbaa !5
  %1240 = load i32, ptr %1239, align 4, !tbaa !9
  %1241 = icmp slt i32 %1238, %1240
  br i1 %1241, label %1242, label %1329

1242:                                             ; preds = %1237
  %1243 = load ptr, ptr %15, align 8, !tbaa !5
  %1244 = load i32, ptr %1243, align 4, !tbaa !9
  %1245 = load i32, ptr %43, align 4, !tbaa !9
  %1246 = sub nsw i32 %1244, %1245
  store i32 %1246, ptr %23, align 4, !tbaa !9
  %1247 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %1247, ptr %24, align 4, !tbaa !9
  %1248 = load ptr, ptr %17, align 8, !tbaa !5
  %1249 = load i32, ptr %24, align 4, !tbaa !9
  %1250 = sext i32 %1249 to i64
  %1251 = getelementptr inbounds %struct.doublecomplex, ptr %1248, i64 %1250
  %1252 = getelementptr inbounds %struct.doublecomplex, ptr %1251, i32 0, i32 0
  %1253 = load double, ptr %1252, align 8, !tbaa !16
  %1254 = fneg double %1253
  %1255 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %1254, ptr %1255, align 8, !tbaa !16
  %1256 = load ptr, ptr %17, align 8, !tbaa !5
  %1257 = load i32, ptr %24, align 4, !tbaa !9
  %1258 = sext i32 %1257 to i64
  %1259 = getelementptr inbounds %struct.doublecomplex, ptr %1256, i64 %1258
  %1260 = getelementptr inbounds %struct.doublecomplex, ptr %1259, i32 0, i32 1
  %1261 = load double, ptr %1260, align 8, !tbaa !19
  %1262 = fneg double %1261
  %1263 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %1262, ptr %1263, align 8, !tbaa !19
  %1264 = load double, ptr %44, align 8, !tbaa !11
  %1265 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %1266 = load double, ptr %1265, align 8, !tbaa !16
  %1267 = fmul double %1264, %1266
  %1268 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %1267, ptr %1268, align 8, !tbaa !16
  %1269 = load double, ptr %44, align 8, !tbaa !11
  %1270 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %1271 = load double, ptr %1270, align 8, !tbaa !19
  %1272 = fmul double %1269, %1271
  %1273 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %1272, ptr %1273, align 8, !tbaa !19
  %1274 = load ptr, ptr %16, align 8, !tbaa !5
  %1275 = load i32, ptr %49, align 4, !tbaa !9
  %1276 = add nsw i32 %1275, 1
  %1277 = sext i32 %1276 to i64
  %1278 = getelementptr inbounds %struct.doublecomplex, ptr %1274, i64 %1277
  %1279 = load ptr, ptr %17, align 8, !tbaa !5
  %1280 = load i32, ptr %43, align 4, !tbaa !9
  %1281 = add nsw i32 %1280, 1
  %1282 = sext i32 %1281 to i64
  %1283 = getelementptr inbounds %struct.doublecomplex, ptr %1279, i64 %1282
  call void @zaxpy_(ptr noundef %23, ptr noundef %30, ptr noundef %1278, ptr noundef @c__1, ptr noundef %1283, ptr noundef @c__1)
  %1284 = load ptr, ptr %15, align 8, !tbaa !5
  %1285 = load i32, ptr %1284, align 4, !tbaa !9
  %1286 = load i32, ptr %43, align 4, !tbaa !9
  %1287 = sub nsw i32 %1285, %1286
  store i32 %1287, ptr %23, align 4, !tbaa !9
  %1288 = load i32, ptr %43, align 4, !tbaa !9
  %1289 = load ptr, ptr %17, align 8, !tbaa !5
  %1290 = load i32, ptr %43, align 4, !tbaa !9
  %1291 = add nsw i32 %1290, 1
  %1292 = sext i32 %1291 to i64
  %1293 = getelementptr inbounds %struct.doublecomplex, ptr %1289, i64 %1292
  %1294 = call i32 @izamax_(ptr noundef %23, ptr noundef %1293, ptr noundef @c__1)
  %1295 = add nsw i32 %1288, %1294
  store i32 %1295, ptr %42, align 4, !tbaa !9
  %1296 = load i32, ptr %42, align 4, !tbaa !9
  store i32 %1296, ptr %23, align 4, !tbaa !9
  %1297 = load ptr, ptr %17, align 8, !tbaa !5
  %1298 = load i32, ptr %23, align 4, !tbaa !9
  %1299 = sext i32 %1298 to i64
  %1300 = getelementptr inbounds %struct.doublecomplex, ptr %1297, i64 %1299
  %1301 = getelementptr inbounds %struct.doublecomplex, ptr %1300, i32 0, i32 0
  %1302 = load double, ptr %1301, align 8, !tbaa !16
  store double %1302, ptr %26, align 8, !tbaa !11
  %1303 = load double, ptr %26, align 8, !tbaa !11
  %1304 = fcmp oge double %1303, 0.000000e+00
  br i1 %1304, label %1305, label %1307

1305:                                             ; preds = %1242
  %1306 = load double, ptr %26, align 8, !tbaa !11
  br label %1310

1307:                                             ; preds = %1242
  %1308 = load double, ptr %26, align 8, !tbaa !11
  %1309 = fneg double %1308
  br label %1310

1310:                                             ; preds = %1307, %1305
  %1311 = phi double [ %1306, %1305 ], [ %1309, %1307 ]
  %1312 = load ptr, ptr %17, align 8, !tbaa !5
  %1313 = load i32, ptr %42, align 4, !tbaa !9
  %1314 = sext i32 %1313 to i64
  %1315 = getelementptr inbounds %struct.doublecomplex, ptr %1312, i64 %1314
  %1316 = call { double, double } @Cd(ptr noundef %1315)
  %1317 = extractvalue { double, double } %1316, 0
  %1318 = extractvalue { double, double } %1316, 1
  store double %1318, ptr %27, align 8, !tbaa !11
  %1319 = load double, ptr %27, align 8, !tbaa !11
  %1320 = fcmp oge double %1319, 0.000000e+00
  br i1 %1320, label %1321, label %1323

1321:                                             ; preds = %1310
  %1322 = load double, ptr %27, align 8, !tbaa !11
  br label %1326

1323:                                             ; preds = %1310
  %1324 = load double, ptr %27, align 8, !tbaa !11
  %1325 = fneg double %1324
  br label %1326

1326:                                             ; preds = %1323, %1321
  %1327 = phi double [ %1322, %1321 ], [ %1325, %1323 ]
  %1328 = fadd double %1311, %1327
  store double %1328, ptr %40, align 8, !tbaa !11
  br label %1329

1329:                                             ; preds = %1326, %1237
  %1330 = load i32, ptr %49, align 4, !tbaa !9
  %1331 = load ptr, ptr %15, align 8, !tbaa !5
  %1332 = load i32, ptr %1331, align 4, !tbaa !9
  %1333 = add nsw i32 %1330, %1332
  %1334 = load i32, ptr %43, align 4, !tbaa !9
  %1335 = sub nsw i32 %1333, %1334
  %1336 = add nsw i32 %1335, 1
  store i32 %1336, ptr %49, align 4, !tbaa !9
  br label %1337

1337:                                             ; preds = %1329, %1233
  br label %1338

1338:                                             ; preds = %1337
  %1339 = load i32, ptr %22, align 4, !tbaa !9
  %1340 = load i32, ptr %43, align 4, !tbaa !9
  %1341 = add nsw i32 %1340, %1339
  store i32 %1341, ptr %43, align 4, !tbaa !9
  br label %782, !llvm.loop !25

1342:                                             ; preds = %795
  br label %3018

1343:                                             ; preds = %770
  %1344 = load ptr, ptr %12, align 8, !tbaa !5
  %1345 = call i32 @lsame_(ptr noundef %1344, ptr noundef @.str.3)
  %1346 = icmp ne i32 %1345, 0
  br i1 %1346, label %1347, label %2186

1347:                                             ; preds = %1343
  %1348 = load i32, ptr %53, align 4, !tbaa !9
  %1349 = load i32, ptr %53, align 4, !tbaa !9
  %1350 = add nsw i32 %1349, 1
  %1351 = mul nsw i32 %1348, %1350
  %1352 = sdiv i32 %1351, 2
  store i32 %1352, ptr %49, align 4, !tbaa !9
  store i32 1, ptr %35, align 4, !tbaa !9
  %1353 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %1353, ptr %22, align 4, !tbaa !9
  %1354 = load i32, ptr %34, align 4, !tbaa !9
  store i32 %1354, ptr %21, align 4, !tbaa !9
  %1355 = load i32, ptr %53, align 4, !tbaa !9
  store i32 %1355, ptr %43, align 4, !tbaa !9
  br label %1356

1356:                                             ; preds = %2181, %1347
  %1357 = load i32, ptr %21, align 4, !tbaa !9
  %1358 = icmp slt i32 %1357, 0
  br i1 %1358, label %1359, label %1364

1359:                                             ; preds = %1356
  %1360 = load i32, ptr %43, align 4, !tbaa !9
  %1361 = load i32, ptr %22, align 4, !tbaa !9
  %1362 = icmp sge i32 %1360, %1361
  %1363 = zext i1 %1362 to i32
  br label %1369

1364:                                             ; preds = %1356
  %1365 = load i32, ptr %43, align 4, !tbaa !9
  %1366 = load i32, ptr %22, align 4, !tbaa !9
  %1367 = icmp sle i32 %1365, %1366
  %1368 = zext i1 %1367 to i32
  br label %1369

1369:                                             ; preds = %1364, %1359
  %1370 = phi i32 [ %1363, %1359 ], [ %1368, %1364 ]
  %1371 = icmp ne i32 %1370, 0
  br i1 %1371, label %1372, label %2185

1372:                                             ; preds = %1369
  %1373 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %1373, ptr %23, align 4, !tbaa !9
  %1374 = load ptr, ptr %17, align 8, !tbaa !5
  %1375 = load i32, ptr %23, align 4, !tbaa !9
  %1376 = sext i32 %1375 to i64
  %1377 = getelementptr inbounds %struct.doublecomplex, ptr %1374, i64 %1376
  %1378 = getelementptr inbounds %struct.doublecomplex, ptr %1377, i32 0, i32 0
  %1379 = load double, ptr %1378, align 8, !tbaa !16
  store double %1379, ptr %26, align 8, !tbaa !11
  %1380 = load double, ptr %26, align 8, !tbaa !11
  %1381 = fcmp oge double %1380, 0.000000e+00
  br i1 %1381, label %1382, label %1384

1382:                                             ; preds = %1372
  %1383 = load double, ptr %26, align 8, !tbaa !11
  br label %1387

1384:                                             ; preds = %1372
  %1385 = load double, ptr %26, align 8, !tbaa !11
  %1386 = fneg double %1385
  br label %1387

1387:                                             ; preds = %1384, %1382
  %1388 = phi double [ %1383, %1382 ], [ %1386, %1384 ]
  %1389 = load ptr, ptr %17, align 8, !tbaa !5
  %1390 = load i32, ptr %43, align 4, !tbaa !9
  %1391 = sext i32 %1390 to i64
  %1392 = getelementptr inbounds %struct.doublecomplex, ptr %1389, i64 %1391
  %1393 = call { double, double } @Cd(ptr noundef %1392)
  %1394 = extractvalue { double, double } %1393, 0
  %1395 = extractvalue { double, double } %1393, 1
  store double %1395, ptr %27, align 8, !tbaa !11
  %1396 = load double, ptr %27, align 8, !tbaa !11
  %1397 = fcmp oge double %1396, 0.000000e+00
  br i1 %1397, label %1398, label %1400

1398:                                             ; preds = %1387
  %1399 = load double, ptr %27, align 8, !tbaa !11
  br label %1403

1400:                                             ; preds = %1387
  %1401 = load double, ptr %27, align 8, !tbaa !11
  %1402 = fneg double %1401
  br label %1403

1403:                                             ; preds = %1400, %1398
  %1404 = phi double [ %1399, %1398 ], [ %1402, %1400 ]
  %1405 = fadd double %1388, %1404
  store double %1405, ptr %50, align 8, !tbaa !11
  %1406 = load double, ptr %44, align 8, !tbaa !11
  %1407 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %1406, ptr %1407, align 8, !tbaa !16
  %1408 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double 0.000000e+00, ptr %1408, align 8, !tbaa !19
  %1409 = load double, ptr %40, align 8, !tbaa !11
  %1410 = fcmp oge double %1409, 1.000000e+00
  br i1 %1410, label %1411, label %1413

1411:                                             ; preds = %1403
  %1412 = load double, ptr %40, align 8, !tbaa !11
  br label %1414

1413:                                             ; preds = %1403
  br label %1414

1414:                                             ; preds = %1413, %1411
  %1415 = phi double [ %1412, %1411 ], [ 1.000000e+00, %1413 ]
  %1416 = fdiv double 1.000000e+00, %1415
  store double %1416, ptr %56, align 8, !tbaa !11
  %1417 = load ptr, ptr %19, align 8, !tbaa !5
  %1418 = load i32, ptr %43, align 4, !tbaa !9
  %1419 = sext i32 %1418 to i64
  %1420 = getelementptr inbounds double, ptr %1417, i64 %1419
  %1421 = load double, ptr %1420, align 8, !tbaa !11
  %1422 = load double, ptr %51, align 8, !tbaa !11
  %1423 = load double, ptr %50, align 8, !tbaa !11
  %1424 = fsub double %1422, %1423
  %1425 = load double, ptr %56, align 8, !tbaa !11
  %1426 = fmul double %1424, %1425
  %1427 = fcmp ogt double %1421, %1426
  br i1 %1427, label %1428, label %1524

1428:                                             ; preds = %1414
  %1429 = load double, ptr %56, align 8, !tbaa !11
  %1430 = fmul double %1429, 5.000000e-01
  store double %1430, ptr %56, align 8, !tbaa !11
  %1431 = load i32, ptr %55, align 4, !tbaa !9
  %1432 = icmp ne i32 %1431, 0
  br i1 %1432, label %1433, label %1459

1433:                                             ; preds = %1428
  %1434 = load i32, ptr %49, align 4, !tbaa !9
  store i32 %1434, ptr %23, align 4, !tbaa !9
  %1435 = load double, ptr %44, align 8, !tbaa !11
  %1436 = load ptr, ptr %16, align 8, !tbaa !5
  %1437 = load i32, ptr %23, align 4, !tbaa !9
  %1438 = sext i32 %1437 to i64
  %1439 = getelementptr inbounds %struct.doublecomplex, ptr %1436, i64 %1438
  %1440 = getelementptr inbounds %struct.doublecomplex, ptr %1439, i32 0, i32 0
  %1441 = load double, ptr %1440, align 8, !tbaa !16
  %1442 = fmul double %1435, %1441
  %1443 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %1442, ptr %1443, align 8, !tbaa !16
  %1444 = load double, ptr %44, align 8, !tbaa !11
  %1445 = load ptr, ptr %16, align 8, !tbaa !5
  %1446 = load i32, ptr %23, align 4, !tbaa !9
  %1447 = sext i32 %1446 to i64
  %1448 = getelementptr inbounds %struct.doublecomplex, ptr %1445, i64 %1447
  %1449 = getelementptr inbounds %struct.doublecomplex, ptr %1448, i32 0, i32 1
  %1450 = load double, ptr %1449, align 8, !tbaa !19
  %1451 = fmul double %1444, %1450
  %1452 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %1451, ptr %1452, align 8, !tbaa !19
  %1453 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %1454 = load double, ptr %1453, align 8, !tbaa !16
  %1455 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double %1454, ptr %1455, align 8, !tbaa !16
  %1456 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %1457 = load double, ptr %1456, align 8, !tbaa !19
  %1458 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double %1457, ptr %1458, align 8, !tbaa !19
  br label %1463

1459:                                             ; preds = %1428
  %1460 = load double, ptr %44, align 8, !tbaa !11
  %1461 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double %1460, ptr %1461, align 8, !tbaa !16
  %1462 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double 0.000000e+00, ptr %1462, align 8, !tbaa !19
  br label %1463

1463:                                             ; preds = %1459, %1433
  %1464 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %1465 = load double, ptr %1464, align 8, !tbaa !16
  store double %1465, ptr %26, align 8, !tbaa !11
  %1466 = load double, ptr %26, align 8, !tbaa !11
  %1467 = fcmp oge double %1466, 0.000000e+00
  br i1 %1467, label %1468, label %1470

1468:                                             ; preds = %1463
  %1469 = load double, ptr %26, align 8, !tbaa !11
  br label %1473

1470:                                             ; preds = %1463
  %1471 = load double, ptr %26, align 8, !tbaa !11
  %1472 = fneg double %1471
  br label %1473

1473:                                             ; preds = %1470, %1468
  %1474 = phi double [ %1469, %1468 ], [ %1472, %1470 ]
  %1475 = call { double, double } @Cd(ptr noundef %39)
  %1476 = extractvalue { double, double } %1475, 0
  %1477 = extractvalue { double, double } %1475, 1
  store double %1477, ptr %27, align 8, !tbaa !11
  %1478 = load double, ptr %27, align 8, !tbaa !11
  %1479 = fcmp oge double %1478, 0.000000e+00
  br i1 %1479, label %1480, label %1482

1480:                                             ; preds = %1473
  %1481 = load double, ptr %27, align 8, !tbaa !11
  br label %1485

1482:                                             ; preds = %1473
  %1483 = load double, ptr %27, align 8, !tbaa !11
  %1484 = fneg double %1483
  br label %1485

1485:                                             ; preds = %1482, %1480
  %1486 = phi double [ %1481, %1480 ], [ %1484, %1482 ]
  %1487 = fadd double %1474, %1486
  store double %1487, ptr %57, align 8, !tbaa !11
  %1488 = load double, ptr %57, align 8, !tbaa !11
  %1489 = fcmp ogt double %1488, 1.000000e+00
  br i1 %1489, label %1490, label %1509

1490:                                             ; preds = %1485
  store double 1.000000e+00, ptr %26, align 8, !tbaa !11
  %1491 = load double, ptr %56, align 8, !tbaa !11
  %1492 = load double, ptr %57, align 8, !tbaa !11
  %1493 = fmul double %1491, %1492
  store double %1493, ptr %27, align 8, !tbaa !11
  %1494 = load double, ptr %26, align 8, !tbaa !11
  %1495 = load double, ptr %27, align 8, !tbaa !11
  %1496 = fcmp ole double %1494, %1495
  br i1 %1496, label %1497, label %1499

1497:                                             ; preds = %1490
  %1498 = load double, ptr %26, align 8, !tbaa !11
  br label %1501

1499:                                             ; preds = %1490
  %1500 = load double, ptr %27, align 8, !tbaa !11
  br label %1501

1501:                                             ; preds = %1499, %1497
  %1502 = phi double [ %1498, %1497 ], [ %1500, %1499 ]
  store double %1502, ptr %56, align 8, !tbaa !11
  call void @zladiv_(ptr noundef %30, ptr noundef %45, ptr noundef %39)
  %1503 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %1504 = load double, ptr %1503, align 8, !tbaa !16
  %1505 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %1504, ptr %1505, align 8, !tbaa !16
  %1506 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %1507 = load double, ptr %1506, align 8, !tbaa !19
  %1508 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %1507, ptr %1508, align 8, !tbaa !19
  br label %1509

1509:                                             ; preds = %1501, %1485
  %1510 = load double, ptr %56, align 8, !tbaa !11
  %1511 = fcmp olt double %1510, 1.000000e+00
  br i1 %1511, label %1512, label %1523

1512:                                             ; preds = %1509
  %1513 = load ptr, ptr %15, align 8, !tbaa !5
  %1514 = load ptr, ptr %17, align 8, !tbaa !5
  %1515 = getelementptr inbounds %struct.doublecomplex, ptr %1514, i64 1
  call void @zdscal_(ptr noundef %1513, ptr noundef %56, ptr noundef %1515, ptr noundef @c__1)
  %1516 = load double, ptr %56, align 8, !tbaa !11
  %1517 = load ptr, ptr %18, align 8, !tbaa !5
  %1518 = load double, ptr %1517, align 8, !tbaa !11
  %1519 = fmul double %1518, %1516
  store double %1519, ptr %1517, align 8, !tbaa !11
  %1520 = load double, ptr %56, align 8, !tbaa !11
  %1521 = load double, ptr %40, align 8, !tbaa !11
  %1522 = fmul double %1521, %1520
  store double %1522, ptr %40, align 8, !tbaa !11
  br label %1523

1523:                                             ; preds = %1512, %1509
  br label %1524

1524:                                             ; preds = %1523, %1414
  %1525 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  store double 0.000000e+00, ptr %1525, align 8, !tbaa !16
  %1526 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  store double 0.000000e+00, ptr %1526, align 8, !tbaa !19
  %1527 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %1528 = load double, ptr %1527, align 8, !tbaa !16
  %1529 = fcmp oeq double %1528, 1.000000e+00
  br i1 %1529, label %1530, label %1583

1530:                                             ; preds = %1524
  %1531 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %1532 = load double, ptr %1531, align 8, !tbaa !19
  %1533 = fcmp oeq double %1532, 0.000000e+00
  br i1 %1533, label %1534, label %1583

1534:                                             ; preds = %1530
  %1535 = load i32, ptr %48, align 4, !tbaa !9
  %1536 = icmp ne i32 %1535, 0
  br i1 %1536, label %1537, label %1555

1537:                                             ; preds = %1534
  %1538 = load i32, ptr %43, align 4, !tbaa !9
  %1539 = sub nsw i32 %1538, 1
  store i32 %1539, ptr %23, align 4, !tbaa !9
  %1540 = load ptr, ptr %16, align 8, !tbaa !5
  %1541 = load i32, ptr %49, align 4, !tbaa !9
  %1542 = load i32, ptr %43, align 4, !tbaa !9
  %1543 = sub nsw i32 %1541, %1542
  %1544 = add nsw i32 %1543, 1
  %1545 = sext i32 %1544 to i64
  %1546 = getelementptr inbounds %struct.doublecomplex, ptr %1540, i64 %1545
  %1547 = load ptr, ptr %17, align 8, !tbaa !5
  %1548 = getelementptr inbounds %struct.doublecomplex, ptr %1547, i64 1
  call void @zdotu_(ptr noundef %30, ptr noundef %23, ptr noundef %1546, ptr noundef @c__1, ptr noundef %1548, ptr noundef @c__1)
  %1549 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %1550 = load double, ptr %1549, align 8, !tbaa !16
  %1551 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  store double %1550, ptr %1551, align 8, !tbaa !16
  %1552 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %1553 = load double, ptr %1552, align 8, !tbaa !19
  %1554 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  store double %1553, ptr %1554, align 8, !tbaa !19
  br label %1582

1555:                                             ; preds = %1534
  %1556 = load i32, ptr %43, align 4, !tbaa !9
  %1557 = load ptr, ptr %15, align 8, !tbaa !5
  %1558 = load i32, ptr %1557, align 4, !tbaa !9
  %1559 = icmp slt i32 %1556, %1558
  br i1 %1559, label %1560, label %1581

1560:                                             ; preds = %1555
  %1561 = load ptr, ptr %15, align 8, !tbaa !5
  %1562 = load i32, ptr %1561, align 4, !tbaa !9
  %1563 = load i32, ptr %43, align 4, !tbaa !9
  %1564 = sub nsw i32 %1562, %1563
  store i32 %1564, ptr %23, align 4, !tbaa !9
  %1565 = load ptr, ptr %16, align 8, !tbaa !5
  %1566 = load i32, ptr %49, align 4, !tbaa !9
  %1567 = add nsw i32 %1566, 1
  %1568 = sext i32 %1567 to i64
  %1569 = getelementptr inbounds %struct.doublecomplex, ptr %1565, i64 %1568
  %1570 = load ptr, ptr %17, align 8, !tbaa !5
  %1571 = load i32, ptr %43, align 4, !tbaa !9
  %1572 = add nsw i32 %1571, 1
  %1573 = sext i32 %1572 to i64
  %1574 = getelementptr inbounds %struct.doublecomplex, ptr %1570, i64 %1573
  call void @zdotu_(ptr noundef %30, ptr noundef %23, ptr noundef %1569, ptr noundef @c__1, ptr noundef %1574, ptr noundef @c__1)
  %1575 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %1576 = load double, ptr %1575, align 8, !tbaa !16
  %1577 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  store double %1576, ptr %1577, align 8, !tbaa !16
  %1578 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %1579 = load double, ptr %1578, align 8, !tbaa !19
  %1580 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  store double %1579, ptr %1580, align 8, !tbaa !19
  br label %1581

1581:                                             ; preds = %1560, %1555
  br label %1582

1582:                                             ; preds = %1581, %1537
  br label %1823

1583:                                             ; preds = %1530, %1524
  %1584 = load i32, ptr %48, align 4, !tbaa !9
  %1585 = icmp ne i32 %1584, 0
  br i1 %1585, label %1586, label %1700

1586:                                             ; preds = %1583
  %1587 = load i32, ptr %43, align 4, !tbaa !9
  %1588 = sub nsw i32 %1587, 1
  store i32 %1588, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %1589

1589:                                             ; preds = %1696, %1586
  %1590 = load i32, ptr %42, align 4, !tbaa !9
  %1591 = load i32, ptr %23, align 4, !tbaa !9
  %1592 = icmp sle i32 %1590, %1591
  br i1 %1592, label %1593, label %1699

1593:                                             ; preds = %1589
  %1594 = load i32, ptr %49, align 4, !tbaa !9
  %1595 = load i32, ptr %43, align 4, !tbaa !9
  %1596 = sub nsw i32 %1594, %1595
  %1597 = load i32, ptr %42, align 4, !tbaa !9
  %1598 = add nsw i32 %1596, %1597
  store i32 %1598, ptr %24, align 4, !tbaa !9
  %1599 = load ptr, ptr %16, align 8, !tbaa !5
  %1600 = load i32, ptr %24, align 4, !tbaa !9
  %1601 = sext i32 %1600 to i64
  %1602 = getelementptr inbounds %struct.doublecomplex, ptr %1599, i64 %1601
  %1603 = getelementptr inbounds %struct.doublecomplex, ptr %1602, i32 0, i32 0
  %1604 = load double, ptr %1603, align 8, !tbaa !16
  %1605 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %1606 = load double, ptr %1605, align 8, !tbaa !16
  %1607 = load ptr, ptr %16, align 8, !tbaa !5
  %1608 = load i32, ptr %24, align 4, !tbaa !9
  %1609 = sext i32 %1608 to i64
  %1610 = getelementptr inbounds %struct.doublecomplex, ptr %1607, i64 %1609
  %1611 = getelementptr inbounds %struct.doublecomplex, ptr %1610, i32 0, i32 1
  %1612 = load double, ptr %1611, align 8, !tbaa !19
  %1613 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %1614 = load double, ptr %1613, align 8, !tbaa !19
  %1615 = fmul double %1612, %1614
  %1616 = fneg double %1615
  %1617 = call double @llvm.fmuladd.f64(double %1604, double %1606, double %1616)
  %1618 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  store double %1617, ptr %1618, align 8, !tbaa !16
  %1619 = load ptr, ptr %16, align 8, !tbaa !5
  %1620 = load i32, ptr %24, align 4, !tbaa !9
  %1621 = sext i32 %1620 to i64
  %1622 = getelementptr inbounds %struct.doublecomplex, ptr %1619, i64 %1621
  %1623 = getelementptr inbounds %struct.doublecomplex, ptr %1622, i32 0, i32 0
  %1624 = load double, ptr %1623, align 8, !tbaa !16
  %1625 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %1626 = load double, ptr %1625, align 8, !tbaa !19
  %1627 = load ptr, ptr %16, align 8, !tbaa !5
  %1628 = load i32, ptr %24, align 4, !tbaa !9
  %1629 = sext i32 %1628 to i64
  %1630 = getelementptr inbounds %struct.doublecomplex, ptr %1627, i64 %1629
  %1631 = getelementptr inbounds %struct.doublecomplex, ptr %1630, i32 0, i32 1
  %1632 = load double, ptr %1631, align 8, !tbaa !19
  %1633 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %1634 = load double, ptr %1633, align 8, !tbaa !16
  %1635 = fmul double %1632, %1634
  %1636 = call double @llvm.fmuladd.f64(double %1624, double %1626, double %1635)
  %1637 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  store double %1636, ptr %1637, align 8, !tbaa !19
  %1638 = load i32, ptr %42, align 4, !tbaa !9
  store i32 %1638, ptr %25, align 4, !tbaa !9
  %1639 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  %1640 = load double, ptr %1639, align 8, !tbaa !16
  %1641 = load ptr, ptr %17, align 8, !tbaa !5
  %1642 = load i32, ptr %25, align 4, !tbaa !9
  %1643 = sext i32 %1642 to i64
  %1644 = getelementptr inbounds %struct.doublecomplex, ptr %1641, i64 %1643
  %1645 = getelementptr inbounds %struct.doublecomplex, ptr %1644, i32 0, i32 0
  %1646 = load double, ptr %1645, align 8, !tbaa !16
  %1647 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  %1648 = load double, ptr %1647, align 8, !tbaa !19
  %1649 = load ptr, ptr %17, align 8, !tbaa !5
  %1650 = load i32, ptr %25, align 4, !tbaa !9
  %1651 = sext i32 %1650 to i64
  %1652 = getelementptr inbounds %struct.doublecomplex, ptr %1649, i64 %1651
  %1653 = getelementptr inbounds %struct.doublecomplex, ptr %1652, i32 0, i32 1
  %1654 = load double, ptr %1653, align 8, !tbaa !19
  %1655 = fmul double %1648, %1654
  %1656 = fneg double %1655
  %1657 = call double @llvm.fmuladd.f64(double %1640, double %1646, double %1656)
  %1658 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %1657, ptr %1658, align 8, !tbaa !16
  %1659 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  %1660 = load double, ptr %1659, align 8, !tbaa !16
  %1661 = load ptr, ptr %17, align 8, !tbaa !5
  %1662 = load i32, ptr %25, align 4, !tbaa !9
  %1663 = sext i32 %1662 to i64
  %1664 = getelementptr inbounds %struct.doublecomplex, ptr %1661, i64 %1663
  %1665 = getelementptr inbounds %struct.doublecomplex, ptr %1664, i32 0, i32 1
  %1666 = load double, ptr %1665, align 8, !tbaa !19
  %1667 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  %1668 = load double, ptr %1667, align 8, !tbaa !19
  %1669 = load ptr, ptr %17, align 8, !tbaa !5
  %1670 = load i32, ptr %25, align 4, !tbaa !9
  %1671 = sext i32 %1670 to i64
  %1672 = getelementptr inbounds %struct.doublecomplex, ptr %1669, i64 %1671
  %1673 = getelementptr inbounds %struct.doublecomplex, ptr %1672, i32 0, i32 0
  %1674 = load double, ptr %1673, align 8, !tbaa !16
  %1675 = fmul double %1668, %1674
  %1676 = call double @llvm.fmuladd.f64(double %1660, double %1666, double %1675)
  %1677 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %1676, ptr %1677, align 8, !tbaa !19
  %1678 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  %1679 = load double, ptr %1678, align 8, !tbaa !16
  %1680 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %1681 = load double, ptr %1680, align 8, !tbaa !16
  %1682 = fadd double %1679, %1681
  %1683 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %1682, ptr %1683, align 8, !tbaa !16
  %1684 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  %1685 = load double, ptr %1684, align 8, !tbaa !19
  %1686 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %1687 = load double, ptr %1686, align 8, !tbaa !19
  %1688 = fadd double %1685, %1687
  %1689 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %1688, ptr %1689, align 8, !tbaa !19
  %1690 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %1691 = load double, ptr %1690, align 8, !tbaa !16
  %1692 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  store double %1691, ptr %1692, align 8, !tbaa !16
  %1693 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %1694 = load double, ptr %1693, align 8, !tbaa !19
  %1695 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  store double %1694, ptr %1695, align 8, !tbaa !19
  br label %1696

1696:                                             ; preds = %1593
  %1697 = load i32, ptr %42, align 4, !tbaa !9
  %1698 = add nsw i32 %1697, 1
  store i32 %1698, ptr %42, align 4, !tbaa !9
  br label %1589, !llvm.loop !26

1699:                                             ; preds = %1589
  br label %1822

1700:                                             ; preds = %1583
  %1701 = load i32, ptr %43, align 4, !tbaa !9
  %1702 = load ptr, ptr %15, align 8, !tbaa !5
  %1703 = load i32, ptr %1702, align 4, !tbaa !9
  %1704 = icmp slt i32 %1701, %1703
  br i1 %1704, label %1705, label %1821

1705:                                             ; preds = %1700
  %1706 = load ptr, ptr %15, align 8, !tbaa !5
  %1707 = load i32, ptr %1706, align 4, !tbaa !9
  %1708 = load i32, ptr %43, align 4, !tbaa !9
  %1709 = sub nsw i32 %1707, %1708
  store i32 %1709, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %1710

1710:                                             ; preds = %1817, %1705
  %1711 = load i32, ptr %42, align 4, !tbaa !9
  %1712 = load i32, ptr %23, align 4, !tbaa !9
  %1713 = icmp sle i32 %1711, %1712
  br i1 %1713, label %1714, label %1820

1714:                                             ; preds = %1710
  %1715 = load i32, ptr %49, align 4, !tbaa !9
  %1716 = load i32, ptr %42, align 4, !tbaa !9
  %1717 = add nsw i32 %1715, %1716
  store i32 %1717, ptr %24, align 4, !tbaa !9
  %1718 = load ptr, ptr %16, align 8, !tbaa !5
  %1719 = load i32, ptr %24, align 4, !tbaa !9
  %1720 = sext i32 %1719 to i64
  %1721 = getelementptr inbounds %struct.doublecomplex, ptr %1718, i64 %1720
  %1722 = getelementptr inbounds %struct.doublecomplex, ptr %1721, i32 0, i32 0
  %1723 = load double, ptr %1722, align 8, !tbaa !16
  %1724 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %1725 = load double, ptr %1724, align 8, !tbaa !16
  %1726 = load ptr, ptr %16, align 8, !tbaa !5
  %1727 = load i32, ptr %24, align 4, !tbaa !9
  %1728 = sext i32 %1727 to i64
  %1729 = getelementptr inbounds %struct.doublecomplex, ptr %1726, i64 %1728
  %1730 = getelementptr inbounds %struct.doublecomplex, ptr %1729, i32 0, i32 1
  %1731 = load double, ptr %1730, align 8, !tbaa !19
  %1732 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %1733 = load double, ptr %1732, align 8, !tbaa !19
  %1734 = fmul double %1731, %1733
  %1735 = fneg double %1734
  %1736 = call double @llvm.fmuladd.f64(double %1723, double %1725, double %1735)
  %1737 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  store double %1736, ptr %1737, align 8, !tbaa !16
  %1738 = load ptr, ptr %16, align 8, !tbaa !5
  %1739 = load i32, ptr %24, align 4, !tbaa !9
  %1740 = sext i32 %1739 to i64
  %1741 = getelementptr inbounds %struct.doublecomplex, ptr %1738, i64 %1740
  %1742 = getelementptr inbounds %struct.doublecomplex, ptr %1741, i32 0, i32 0
  %1743 = load double, ptr %1742, align 8, !tbaa !16
  %1744 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %1745 = load double, ptr %1744, align 8, !tbaa !19
  %1746 = load ptr, ptr %16, align 8, !tbaa !5
  %1747 = load i32, ptr %24, align 4, !tbaa !9
  %1748 = sext i32 %1747 to i64
  %1749 = getelementptr inbounds %struct.doublecomplex, ptr %1746, i64 %1748
  %1750 = getelementptr inbounds %struct.doublecomplex, ptr %1749, i32 0, i32 1
  %1751 = load double, ptr %1750, align 8, !tbaa !19
  %1752 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %1753 = load double, ptr %1752, align 8, !tbaa !16
  %1754 = fmul double %1751, %1753
  %1755 = call double @llvm.fmuladd.f64(double %1743, double %1745, double %1754)
  %1756 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  store double %1755, ptr %1756, align 8, !tbaa !19
  %1757 = load i32, ptr %43, align 4, !tbaa !9
  %1758 = load i32, ptr %42, align 4, !tbaa !9
  %1759 = add nsw i32 %1757, %1758
  store i32 %1759, ptr %25, align 4, !tbaa !9
  %1760 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  %1761 = load double, ptr %1760, align 8, !tbaa !16
  %1762 = load ptr, ptr %17, align 8, !tbaa !5
  %1763 = load i32, ptr %25, align 4, !tbaa !9
  %1764 = sext i32 %1763 to i64
  %1765 = getelementptr inbounds %struct.doublecomplex, ptr %1762, i64 %1764
  %1766 = getelementptr inbounds %struct.doublecomplex, ptr %1765, i32 0, i32 0
  %1767 = load double, ptr %1766, align 8, !tbaa !16
  %1768 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  %1769 = load double, ptr %1768, align 8, !tbaa !19
  %1770 = load ptr, ptr %17, align 8, !tbaa !5
  %1771 = load i32, ptr %25, align 4, !tbaa !9
  %1772 = sext i32 %1771 to i64
  %1773 = getelementptr inbounds %struct.doublecomplex, ptr %1770, i64 %1772
  %1774 = getelementptr inbounds %struct.doublecomplex, ptr %1773, i32 0, i32 1
  %1775 = load double, ptr %1774, align 8, !tbaa !19
  %1776 = fmul double %1769, %1775
  %1777 = fneg double %1776
  %1778 = call double @llvm.fmuladd.f64(double %1761, double %1767, double %1777)
  %1779 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %1778, ptr %1779, align 8, !tbaa !16
  %1780 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  %1781 = load double, ptr %1780, align 8, !tbaa !16
  %1782 = load ptr, ptr %17, align 8, !tbaa !5
  %1783 = load i32, ptr %25, align 4, !tbaa !9
  %1784 = sext i32 %1783 to i64
  %1785 = getelementptr inbounds %struct.doublecomplex, ptr %1782, i64 %1784
  %1786 = getelementptr inbounds %struct.doublecomplex, ptr %1785, i32 0, i32 1
  %1787 = load double, ptr %1786, align 8, !tbaa !19
  %1788 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  %1789 = load double, ptr %1788, align 8, !tbaa !19
  %1790 = load ptr, ptr %17, align 8, !tbaa !5
  %1791 = load i32, ptr %25, align 4, !tbaa !9
  %1792 = sext i32 %1791 to i64
  %1793 = getelementptr inbounds %struct.doublecomplex, ptr %1790, i64 %1792
  %1794 = getelementptr inbounds %struct.doublecomplex, ptr %1793, i32 0, i32 0
  %1795 = load double, ptr %1794, align 8, !tbaa !16
  %1796 = fmul double %1789, %1795
  %1797 = call double @llvm.fmuladd.f64(double %1781, double %1787, double %1796)
  %1798 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %1797, ptr %1798, align 8, !tbaa !19
  %1799 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  %1800 = load double, ptr %1799, align 8, !tbaa !16
  %1801 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %1802 = load double, ptr %1801, align 8, !tbaa !16
  %1803 = fadd double %1800, %1802
  %1804 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %1803, ptr %1804, align 8, !tbaa !16
  %1805 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  %1806 = load double, ptr %1805, align 8, !tbaa !19
  %1807 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %1808 = load double, ptr %1807, align 8, !tbaa !19
  %1809 = fadd double %1806, %1808
  %1810 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %1809, ptr %1810, align 8, !tbaa !19
  %1811 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %1812 = load double, ptr %1811, align 8, !tbaa !16
  %1813 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  store double %1812, ptr %1813, align 8, !tbaa !16
  %1814 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %1815 = load double, ptr %1814, align 8, !tbaa !19
  %1816 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  store double %1815, ptr %1816, align 8, !tbaa !19
  br label %1817

1817:                                             ; preds = %1714
  %1818 = load i32, ptr %42, align 4, !tbaa !9
  %1819 = add nsw i32 %1818, 1
  store i32 %1819, ptr %42, align 4, !tbaa !9
  br label %1710, !llvm.loop !27

1820:                                             ; preds = %1710
  br label %1821

1821:                                             ; preds = %1820, %1700
  br label %1822

1822:                                             ; preds = %1821, %1699
  br label %1823

1823:                                             ; preds = %1822, %1582
  %1824 = load double, ptr %44, align 8, !tbaa !11
  %1825 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %1824, ptr %1825, align 8, !tbaa !16
  %1826 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double 0.000000e+00, ptr %1826, align 8, !tbaa !19
  %1827 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %1828 = load double, ptr %1827, align 8, !tbaa !16
  %1829 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %1830 = load double, ptr %1829, align 8, !tbaa !16
  %1831 = fcmp oeq double %1828, %1830
  br i1 %1831, label %1832, label %2098

1832:                                             ; preds = %1823
  %1833 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %1834 = load double, ptr %1833, align 8, !tbaa !19
  %1835 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %1836 = load double, ptr %1835, align 8, !tbaa !19
  %1837 = fcmp oeq double %1834, %1836
  br i1 %1837, label %1838, label %2098

1838:                                             ; preds = %1832
  %1839 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %1839, ptr %23, align 4, !tbaa !9
  %1840 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %1840, ptr %24, align 4, !tbaa !9
  %1841 = load ptr, ptr %17, align 8, !tbaa !5
  %1842 = load i32, ptr %24, align 4, !tbaa !9
  %1843 = sext i32 %1842 to i64
  %1844 = getelementptr inbounds %struct.doublecomplex, ptr %1841, i64 %1843
  %1845 = getelementptr inbounds %struct.doublecomplex, ptr %1844, i32 0, i32 0
  %1846 = load double, ptr %1845, align 8, !tbaa !16
  %1847 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  %1848 = load double, ptr %1847, align 8, !tbaa !16
  %1849 = fsub double %1846, %1848
  %1850 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %1849, ptr %1850, align 8, !tbaa !16
  %1851 = load ptr, ptr %17, align 8, !tbaa !5
  %1852 = load i32, ptr %24, align 4, !tbaa !9
  %1853 = sext i32 %1852 to i64
  %1854 = getelementptr inbounds %struct.doublecomplex, ptr %1851, i64 %1853
  %1855 = getelementptr inbounds %struct.doublecomplex, ptr %1854, i32 0, i32 1
  %1856 = load double, ptr %1855, align 8, !tbaa !19
  %1857 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  %1858 = load double, ptr %1857, align 8, !tbaa !19
  %1859 = fsub double %1856, %1858
  %1860 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %1859, ptr %1860, align 8, !tbaa !19
  %1861 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %1862 = load double, ptr %1861, align 8, !tbaa !16
  %1863 = load ptr, ptr %17, align 8, !tbaa !5
  %1864 = load i32, ptr %23, align 4, !tbaa !9
  %1865 = sext i32 %1864 to i64
  %1866 = getelementptr inbounds %struct.doublecomplex, ptr %1863, i64 %1865
  %1867 = getelementptr inbounds %struct.doublecomplex, ptr %1866, i32 0, i32 0
  store double %1862, ptr %1867, align 8, !tbaa !16
  %1868 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %1869 = load double, ptr %1868, align 8, !tbaa !19
  %1870 = load ptr, ptr %17, align 8, !tbaa !5
  %1871 = load i32, ptr %23, align 4, !tbaa !9
  %1872 = sext i32 %1871 to i64
  %1873 = getelementptr inbounds %struct.doublecomplex, ptr %1870, i64 %1872
  %1874 = getelementptr inbounds %struct.doublecomplex, ptr %1873, i32 0, i32 1
  store double %1869, ptr %1874, align 8, !tbaa !19
  %1875 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %1875, ptr %23, align 4, !tbaa !9
  %1876 = load ptr, ptr %17, align 8, !tbaa !5
  %1877 = load i32, ptr %23, align 4, !tbaa !9
  %1878 = sext i32 %1877 to i64
  %1879 = getelementptr inbounds %struct.doublecomplex, ptr %1876, i64 %1878
  %1880 = getelementptr inbounds %struct.doublecomplex, ptr %1879, i32 0, i32 0
  %1881 = load double, ptr %1880, align 8, !tbaa !16
  store double %1881, ptr %26, align 8, !tbaa !11
  %1882 = load double, ptr %26, align 8, !tbaa !11
  %1883 = fcmp oge double %1882, 0.000000e+00
  br i1 %1883, label %1884, label %1886

1884:                                             ; preds = %1838
  %1885 = load double, ptr %26, align 8, !tbaa !11
  br label %1889

1886:                                             ; preds = %1838
  %1887 = load double, ptr %26, align 8, !tbaa !11
  %1888 = fneg double %1887
  br label %1889

1889:                                             ; preds = %1886, %1884
  %1890 = phi double [ %1885, %1884 ], [ %1888, %1886 ]
  %1891 = load ptr, ptr %17, align 8, !tbaa !5
  %1892 = load i32, ptr %43, align 4, !tbaa !9
  %1893 = sext i32 %1892 to i64
  %1894 = getelementptr inbounds %struct.doublecomplex, ptr %1891, i64 %1893
  %1895 = call { double, double } @Cd(ptr noundef %1894)
  %1896 = extractvalue { double, double } %1895, 0
  %1897 = extractvalue { double, double } %1895, 1
  store double %1897, ptr %27, align 8, !tbaa !11
  %1898 = load double, ptr %27, align 8, !tbaa !11
  %1899 = fcmp oge double %1898, 0.000000e+00
  br i1 %1899, label %1900, label %1902

1900:                                             ; preds = %1889
  %1901 = load double, ptr %27, align 8, !tbaa !11
  br label %1905

1902:                                             ; preds = %1889
  %1903 = load double, ptr %27, align 8, !tbaa !11
  %1904 = fneg double %1903
  br label %1905

1905:                                             ; preds = %1902, %1900
  %1906 = phi double [ %1901, %1900 ], [ %1904, %1902 ]
  %1907 = fadd double %1890, %1906
  store double %1907, ptr %50, align 8, !tbaa !11
  %1908 = load i32, ptr %55, align 4, !tbaa !9
  %1909 = icmp ne i32 %1908, 0
  br i1 %1909, label %1910, label %1936

1910:                                             ; preds = %1905
  %1911 = load i32, ptr %49, align 4, !tbaa !9
  store i32 %1911, ptr %23, align 4, !tbaa !9
  %1912 = load double, ptr %44, align 8, !tbaa !11
  %1913 = load ptr, ptr %16, align 8, !tbaa !5
  %1914 = load i32, ptr %23, align 4, !tbaa !9
  %1915 = sext i32 %1914 to i64
  %1916 = getelementptr inbounds %struct.doublecomplex, ptr %1913, i64 %1915
  %1917 = getelementptr inbounds %struct.doublecomplex, ptr %1916, i32 0, i32 0
  %1918 = load double, ptr %1917, align 8, !tbaa !16
  %1919 = fmul double %1912, %1918
  %1920 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %1919, ptr %1920, align 8, !tbaa !16
  %1921 = load double, ptr %44, align 8, !tbaa !11
  %1922 = load ptr, ptr %16, align 8, !tbaa !5
  %1923 = load i32, ptr %23, align 4, !tbaa !9
  %1924 = sext i32 %1923 to i64
  %1925 = getelementptr inbounds %struct.doublecomplex, ptr %1922, i64 %1924
  %1926 = getelementptr inbounds %struct.doublecomplex, ptr %1925, i32 0, i32 1
  %1927 = load double, ptr %1926, align 8, !tbaa !19
  %1928 = fmul double %1921, %1927
  %1929 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %1928, ptr %1929, align 8, !tbaa !19
  %1930 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %1931 = load double, ptr %1930, align 8, !tbaa !16
  %1932 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double %1931, ptr %1932, align 8, !tbaa !16
  %1933 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %1934 = load double, ptr %1933, align 8, !tbaa !19
  %1935 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double %1934, ptr %1935, align 8, !tbaa !19
  br label %1944

1936:                                             ; preds = %1905
  %1937 = load double, ptr %44, align 8, !tbaa !11
  %1938 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double %1937, ptr %1938, align 8, !tbaa !16
  %1939 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double 0.000000e+00, ptr %1939, align 8, !tbaa !19
  %1940 = load double, ptr %44, align 8, !tbaa !11
  %1941 = fcmp oeq double %1940, 1.000000e+00
  br i1 %1941, label %1942, label %1943

1942:                                             ; preds = %1936
  br label %2097

1943:                                             ; preds = %1936
  br label %1944

1944:                                             ; preds = %1943, %1910
  %1945 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %1946 = load double, ptr %1945, align 8, !tbaa !16
  store double %1946, ptr %26, align 8, !tbaa !11
  %1947 = load double, ptr %26, align 8, !tbaa !11
  %1948 = fcmp oge double %1947, 0.000000e+00
  br i1 %1948, label %1949, label %1951

1949:                                             ; preds = %1944
  %1950 = load double, ptr %26, align 8, !tbaa !11
  br label %1954

1951:                                             ; preds = %1944
  %1952 = load double, ptr %26, align 8, !tbaa !11
  %1953 = fneg double %1952
  br label %1954

1954:                                             ; preds = %1951, %1949
  %1955 = phi double [ %1950, %1949 ], [ %1953, %1951 ]
  %1956 = call { double, double } @Cd(ptr noundef %39)
  %1957 = extractvalue { double, double } %1956, 0
  %1958 = extractvalue { double, double } %1956, 1
  store double %1958, ptr %27, align 8, !tbaa !11
  %1959 = load double, ptr %27, align 8, !tbaa !11
  %1960 = fcmp oge double %1959, 0.000000e+00
  br i1 %1960, label %1961, label %1963

1961:                                             ; preds = %1954
  %1962 = load double, ptr %27, align 8, !tbaa !11
  br label %1966

1963:                                             ; preds = %1954
  %1964 = load double, ptr %27, align 8, !tbaa !11
  %1965 = fneg double %1964
  br label %1966

1966:                                             ; preds = %1963, %1961
  %1967 = phi double [ %1962, %1961 ], [ %1965, %1963 ]
  %1968 = fadd double %1955, %1967
  store double %1968, ptr %57, align 8, !tbaa !11
  %1969 = load double, ptr %57, align 8, !tbaa !11
  %1970 = load double, ptr %54, align 8, !tbaa !11
  %1971 = fcmp ogt double %1969, %1970
  br i1 %1971, label %1972, label %2015

1972:                                             ; preds = %1966
  %1973 = load double, ptr %57, align 8, !tbaa !11
  %1974 = fcmp olt double %1973, 1.000000e+00
  br i1 %1974, label %1975, label %1995

1975:                                             ; preds = %1972
  %1976 = load double, ptr %50, align 8, !tbaa !11
  %1977 = load double, ptr %57, align 8, !tbaa !11
  %1978 = load double, ptr %51, align 8, !tbaa !11
  %1979 = fmul double %1977, %1978
  %1980 = fcmp ogt double %1976, %1979
  br i1 %1980, label %1981, label %1994

1981:                                             ; preds = %1975
  %1982 = load double, ptr %50, align 8, !tbaa !11
  %1983 = fdiv double 1.000000e+00, %1982
  store double %1983, ptr %56, align 8, !tbaa !11
  %1984 = load ptr, ptr %15, align 8, !tbaa !5
  %1985 = load ptr, ptr %17, align 8, !tbaa !5
  %1986 = getelementptr inbounds %struct.doublecomplex, ptr %1985, i64 1
  call void @zdscal_(ptr noundef %1984, ptr noundef %56, ptr noundef %1986, ptr noundef @c__1)
  %1987 = load double, ptr %56, align 8, !tbaa !11
  %1988 = load ptr, ptr %18, align 8, !tbaa !5
  %1989 = load double, ptr %1988, align 8, !tbaa !11
  %1990 = fmul double %1989, %1987
  store double %1990, ptr %1988, align 8, !tbaa !11
  %1991 = load double, ptr %56, align 8, !tbaa !11
  %1992 = load double, ptr %40, align 8, !tbaa !11
  %1993 = fmul double %1992, %1991
  store double %1993, ptr %40, align 8, !tbaa !11
  br label %1994

1994:                                             ; preds = %1981, %1975
  br label %1995

1995:                                             ; preds = %1994, %1972
  %1996 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %1996, ptr %23, align 4, !tbaa !9
  %1997 = load ptr, ptr %17, align 8, !tbaa !5
  %1998 = load i32, ptr %43, align 4, !tbaa !9
  %1999 = sext i32 %1998 to i64
  %2000 = getelementptr inbounds %struct.doublecomplex, ptr %1997, i64 %1999
  call void @zladiv_(ptr noundef %30, ptr noundef %2000, ptr noundef %39)
  %2001 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %2002 = load double, ptr %2001, align 8, !tbaa !16
  %2003 = load ptr, ptr %17, align 8, !tbaa !5
  %2004 = load i32, ptr %23, align 4, !tbaa !9
  %2005 = sext i32 %2004 to i64
  %2006 = getelementptr inbounds %struct.doublecomplex, ptr %2003, i64 %2005
  %2007 = getelementptr inbounds %struct.doublecomplex, ptr %2006, i32 0, i32 0
  store double %2002, ptr %2007, align 8, !tbaa !16
  %2008 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %2009 = load double, ptr %2008, align 8, !tbaa !19
  %2010 = load ptr, ptr %17, align 8, !tbaa !5
  %2011 = load i32, ptr %23, align 4, !tbaa !9
  %2012 = sext i32 %2011 to i64
  %2013 = getelementptr inbounds %struct.doublecomplex, ptr %2010, i64 %2012
  %2014 = getelementptr inbounds %struct.doublecomplex, ptr %2013, i32 0, i32 1
  store double %2009, ptr %2014, align 8, !tbaa !19
  br label %2096

2015:                                             ; preds = %1966
  %2016 = load double, ptr %57, align 8, !tbaa !11
  %2017 = fcmp ogt double %2016, 0.000000e+00
  br i1 %2017, label %2018, label %2060

2018:                                             ; preds = %2015
  %2019 = load double, ptr %50, align 8, !tbaa !11
  %2020 = load double, ptr %57, align 8, !tbaa !11
  %2021 = load double, ptr %51, align 8, !tbaa !11
  %2022 = fmul double %2020, %2021
  %2023 = fcmp ogt double %2019, %2022
  br i1 %2023, label %2024, label %2040

2024:                                             ; preds = %2018
  %2025 = load double, ptr %57, align 8, !tbaa !11
  %2026 = load double, ptr %51, align 8, !tbaa !11
  %2027 = fmul double %2025, %2026
  %2028 = load double, ptr %50, align 8, !tbaa !11
  %2029 = fdiv double %2027, %2028
  store double %2029, ptr %56, align 8, !tbaa !11
  %2030 = load ptr, ptr %15, align 8, !tbaa !5
  %2031 = load ptr, ptr %17, align 8, !tbaa !5
  %2032 = getelementptr inbounds %struct.doublecomplex, ptr %2031, i64 1
  call void @zdscal_(ptr noundef %2030, ptr noundef %56, ptr noundef %2032, ptr noundef @c__1)
  %2033 = load double, ptr %56, align 8, !tbaa !11
  %2034 = load ptr, ptr %18, align 8, !tbaa !5
  %2035 = load double, ptr %2034, align 8, !tbaa !11
  %2036 = fmul double %2035, %2033
  store double %2036, ptr %2034, align 8, !tbaa !11
  %2037 = load double, ptr %56, align 8, !tbaa !11
  %2038 = load double, ptr %40, align 8, !tbaa !11
  %2039 = fmul double %2038, %2037
  store double %2039, ptr %40, align 8, !tbaa !11
  br label %2040

2040:                                             ; preds = %2024, %2018
  %2041 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %2041, ptr %23, align 4, !tbaa !9
  %2042 = load ptr, ptr %17, align 8, !tbaa !5
  %2043 = load i32, ptr %43, align 4, !tbaa !9
  %2044 = sext i32 %2043 to i64
  %2045 = getelementptr inbounds %struct.doublecomplex, ptr %2042, i64 %2044
  call void @zladiv_(ptr noundef %30, ptr noundef %2045, ptr noundef %39)
  %2046 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %2047 = load double, ptr %2046, align 8, !tbaa !16
  %2048 = load ptr, ptr %17, align 8, !tbaa !5
  %2049 = load i32, ptr %23, align 4, !tbaa !9
  %2050 = sext i32 %2049 to i64
  %2051 = getelementptr inbounds %struct.doublecomplex, ptr %2048, i64 %2050
  %2052 = getelementptr inbounds %struct.doublecomplex, ptr %2051, i32 0, i32 0
  store double %2047, ptr %2052, align 8, !tbaa !16
  %2053 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %2054 = load double, ptr %2053, align 8, !tbaa !19
  %2055 = load ptr, ptr %17, align 8, !tbaa !5
  %2056 = load i32, ptr %23, align 4, !tbaa !9
  %2057 = sext i32 %2056 to i64
  %2058 = getelementptr inbounds %struct.doublecomplex, ptr %2055, i64 %2057
  %2059 = getelementptr inbounds %struct.doublecomplex, ptr %2058, i32 0, i32 1
  store double %2054, ptr %2059, align 8, !tbaa !19
  br label %2095

2060:                                             ; preds = %2015
  %2061 = load ptr, ptr %15, align 8, !tbaa !5
  %2062 = load i32, ptr %2061, align 4, !tbaa !9
  store i32 %2062, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %2063

2063:                                             ; preds = %2079, %2060
  %2064 = load i32, ptr %42, align 4, !tbaa !9
  %2065 = load i32, ptr %23, align 4, !tbaa !9
  %2066 = icmp sle i32 %2064, %2065
  br i1 %2066, label %2067, label %2082

2067:                                             ; preds = %2063
  %2068 = load i32, ptr %42, align 4, !tbaa !9
  store i32 %2068, ptr %24, align 4, !tbaa !9
  %2069 = load ptr, ptr %17, align 8, !tbaa !5
  %2070 = load i32, ptr %24, align 4, !tbaa !9
  %2071 = sext i32 %2070 to i64
  %2072 = getelementptr inbounds %struct.doublecomplex, ptr %2069, i64 %2071
  %2073 = getelementptr inbounds %struct.doublecomplex, ptr %2072, i32 0, i32 0
  store double 0.000000e+00, ptr %2073, align 8, !tbaa !16
  %2074 = load ptr, ptr %17, align 8, !tbaa !5
  %2075 = load i32, ptr %24, align 4, !tbaa !9
  %2076 = sext i32 %2075 to i64
  %2077 = getelementptr inbounds %struct.doublecomplex, ptr %2074, i64 %2076
  %2078 = getelementptr inbounds %struct.doublecomplex, ptr %2077, i32 0, i32 1
  store double 0.000000e+00, ptr %2078, align 8, !tbaa !19
  br label %2079

2079:                                             ; preds = %2067
  %2080 = load i32, ptr %42, align 4, !tbaa !9
  %2081 = add nsw i32 %2080, 1
  store i32 %2081, ptr %42, align 4, !tbaa !9
  br label %2063, !llvm.loop !28

2082:                                             ; preds = %2063
  %2083 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %2083, ptr %23, align 4, !tbaa !9
  %2084 = load ptr, ptr %17, align 8, !tbaa !5
  %2085 = load i32, ptr %23, align 4, !tbaa !9
  %2086 = sext i32 %2085 to i64
  %2087 = getelementptr inbounds %struct.doublecomplex, ptr %2084, i64 %2086
  %2088 = getelementptr inbounds %struct.doublecomplex, ptr %2087, i32 0, i32 0
  store double 1.000000e+00, ptr %2088, align 8, !tbaa !16
  %2089 = load ptr, ptr %17, align 8, !tbaa !5
  %2090 = load i32, ptr %23, align 4, !tbaa !9
  %2091 = sext i32 %2090 to i64
  %2092 = getelementptr inbounds %struct.doublecomplex, ptr %2089, i64 %2091
  %2093 = getelementptr inbounds %struct.doublecomplex, ptr %2092, i32 0, i32 1
  store double 0.000000e+00, ptr %2093, align 8, !tbaa !19
  %2094 = load ptr, ptr %18, align 8, !tbaa !5
  store double 0.000000e+00, ptr %2094, align 8, !tbaa !11
  store double 0.000000e+00, ptr %40, align 8, !tbaa !11
  br label %2095

2095:                                             ; preds = %2082, %2040
  br label %2096

2096:                                             ; preds = %2095, %1995
  br label %2097

2097:                                             ; preds = %2096, %1942
  br label %2130

2098:                                             ; preds = %1832, %1823
  %2099 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %2099, ptr %23, align 4, !tbaa !9
  %2100 = load ptr, ptr %17, align 8, !tbaa !5
  %2101 = load i32, ptr %43, align 4, !tbaa !9
  %2102 = sext i32 %2101 to i64
  %2103 = getelementptr inbounds %struct.doublecomplex, ptr %2100, i64 %2102
  call void @zladiv_(ptr noundef %31, ptr noundef %2103, ptr noundef %39)
  %2104 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %2105 = load double, ptr %2104, align 8, !tbaa !16
  %2106 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  %2107 = load double, ptr %2106, align 8, !tbaa !16
  %2108 = fsub double %2105, %2107
  %2109 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %2108, ptr %2109, align 8, !tbaa !16
  %2110 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %2111 = load double, ptr %2110, align 8, !tbaa !19
  %2112 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  %2113 = load double, ptr %2112, align 8, !tbaa !19
  %2114 = fsub double %2111, %2113
  %2115 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %2114, ptr %2115, align 8, !tbaa !19
  %2116 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %2117 = load double, ptr %2116, align 8, !tbaa !16
  %2118 = load ptr, ptr %17, align 8, !tbaa !5
  %2119 = load i32, ptr %23, align 4, !tbaa !9
  %2120 = sext i32 %2119 to i64
  %2121 = getelementptr inbounds %struct.doublecomplex, ptr %2118, i64 %2120
  %2122 = getelementptr inbounds %struct.doublecomplex, ptr %2121, i32 0, i32 0
  store double %2117, ptr %2122, align 8, !tbaa !16
  %2123 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %2124 = load double, ptr %2123, align 8, !tbaa !19
  %2125 = load ptr, ptr %17, align 8, !tbaa !5
  %2126 = load i32, ptr %23, align 4, !tbaa !9
  %2127 = sext i32 %2126 to i64
  %2128 = getelementptr inbounds %struct.doublecomplex, ptr %2125, i64 %2127
  %2129 = getelementptr inbounds %struct.doublecomplex, ptr %2128, i32 0, i32 1
  store double %2124, ptr %2129, align 8, !tbaa !19
  br label %2130

2130:                                             ; preds = %2098, %2097
  %2131 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %2131, ptr %23, align 4, !tbaa !9
  %2132 = load double, ptr %40, align 8, !tbaa !11
  store double %2132, ptr %28, align 8, !tbaa !11
  %2133 = load ptr, ptr %17, align 8, !tbaa !5
  %2134 = load i32, ptr %23, align 4, !tbaa !9
  %2135 = sext i32 %2134 to i64
  %2136 = getelementptr inbounds %struct.doublecomplex, ptr %2133, i64 %2135
  %2137 = getelementptr inbounds %struct.doublecomplex, ptr %2136, i32 0, i32 0
  %2138 = load double, ptr %2137, align 8, !tbaa !16
  store double %2138, ptr %26, align 8, !tbaa !11
  %2139 = load double, ptr %26, align 8, !tbaa !11
  %2140 = fcmp oge double %2139, 0.000000e+00
  br i1 %2140, label %2141, label %2143

2141:                                             ; preds = %2130
  %2142 = load double, ptr %26, align 8, !tbaa !11
  br label %2146

2143:                                             ; preds = %2130
  %2144 = load double, ptr %26, align 8, !tbaa !11
  %2145 = fneg double %2144
  br label %2146

2146:                                             ; preds = %2143, %2141
  %2147 = phi double [ %2142, %2141 ], [ %2145, %2143 ]
  %2148 = load ptr, ptr %17, align 8, !tbaa !5
  %2149 = load i32, ptr %43, align 4, !tbaa !9
  %2150 = sext i32 %2149 to i64
  %2151 = getelementptr inbounds %struct.doublecomplex, ptr %2148, i64 %2150
  %2152 = call { double, double } @Cd(ptr noundef %2151)
  %2153 = extractvalue { double, double } %2152, 0
  %2154 = extractvalue { double, double } %2152, 1
  store double %2154, ptr %27, align 8, !tbaa !11
  %2155 = load double, ptr %27, align 8, !tbaa !11
  %2156 = fcmp oge double %2155, 0.000000e+00
  br i1 %2156, label %2157, label %2159

2157:                                             ; preds = %2146
  %2158 = load double, ptr %27, align 8, !tbaa !11
  br label %2162

2159:                                             ; preds = %2146
  %2160 = load double, ptr %27, align 8, !tbaa !11
  %2161 = fneg double %2160
  br label %2162

2162:                                             ; preds = %2159, %2157
  %2163 = phi double [ %2158, %2157 ], [ %2161, %2159 ]
  %2164 = fadd double %2147, %2163
  store double %2164, ptr %29, align 8, !tbaa !11
  %2165 = load double, ptr %28, align 8, !tbaa !11
  %2166 = load double, ptr %29, align 8, !tbaa !11
  %2167 = fcmp oge double %2165, %2166
  br i1 %2167, label %2168, label %2170

2168:                                             ; preds = %2162
  %2169 = load double, ptr %28, align 8, !tbaa !11
  br label %2172

2170:                                             ; preds = %2162
  %2171 = load double, ptr %29, align 8, !tbaa !11
  br label %2172

2172:                                             ; preds = %2170, %2168
  %2173 = phi double [ %2169, %2168 ], [ %2171, %2170 ]
  store double %2173, ptr %40, align 8, !tbaa !11
  %2174 = load i32, ptr %35, align 4, !tbaa !9
  %2175 = add nsw i32 %2174, 1
  store i32 %2175, ptr %35, align 4, !tbaa !9
  %2176 = load i32, ptr %34, align 4, !tbaa !9
  %2177 = load i32, ptr %35, align 4, !tbaa !9
  %2178 = mul nsw i32 %2176, %2177
  %2179 = load i32, ptr %49, align 4, !tbaa !9
  %2180 = add nsw i32 %2179, %2178
  store i32 %2180, ptr %49, align 4, !tbaa !9
  br label %2181

2181:                                             ; preds = %2172
  %2182 = load i32, ptr %21, align 4, !tbaa !9
  %2183 = load i32, ptr %43, align 4, !tbaa !9
  %2184 = add nsw i32 %2183, %2182
  store i32 %2184, ptr %43, align 4, !tbaa !9
  br label %1356, !llvm.loop !29

2185:                                             ; preds = %1369
  br label %3017

2186:                                             ; preds = %1343
  %2187 = load i32, ptr %53, align 4, !tbaa !9
  %2188 = load i32, ptr %53, align 4, !tbaa !9
  %2189 = add nsw i32 %2188, 1
  %2190 = mul nsw i32 %2187, %2189
  %2191 = sdiv i32 %2190, 2
  store i32 %2191, ptr %49, align 4, !tbaa !9
  store i32 1, ptr %35, align 4, !tbaa !9
  %2192 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %2192, ptr %21, align 4, !tbaa !9
  %2193 = load i32, ptr %34, align 4, !tbaa !9
  store i32 %2193, ptr %22, align 4, !tbaa !9
  %2194 = load i32, ptr %53, align 4, !tbaa !9
  store i32 %2194, ptr %43, align 4, !tbaa !9
  br label %2195

2195:                                             ; preds = %3012, %2186
  %2196 = load i32, ptr %22, align 4, !tbaa !9
  %2197 = icmp slt i32 %2196, 0
  br i1 %2197, label %2198, label %2203

2198:                                             ; preds = %2195
  %2199 = load i32, ptr %43, align 4, !tbaa !9
  %2200 = load i32, ptr %21, align 4, !tbaa !9
  %2201 = icmp sge i32 %2199, %2200
  %2202 = zext i1 %2201 to i32
  br label %2208

2203:                                             ; preds = %2195
  %2204 = load i32, ptr %43, align 4, !tbaa !9
  %2205 = load i32, ptr %21, align 4, !tbaa !9
  %2206 = icmp sle i32 %2204, %2205
  %2207 = zext i1 %2206 to i32
  br label %2208

2208:                                             ; preds = %2203, %2198
  %2209 = phi i32 [ %2202, %2198 ], [ %2207, %2203 ]
  %2210 = icmp ne i32 %2209, 0
  br i1 %2210, label %2211, label %3016

2211:                                             ; preds = %2208
  %2212 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %2212, ptr %23, align 4, !tbaa !9
  %2213 = load ptr, ptr %17, align 8, !tbaa !5
  %2214 = load i32, ptr %23, align 4, !tbaa !9
  %2215 = sext i32 %2214 to i64
  %2216 = getelementptr inbounds %struct.doublecomplex, ptr %2213, i64 %2215
  %2217 = getelementptr inbounds %struct.doublecomplex, ptr %2216, i32 0, i32 0
  %2218 = load double, ptr %2217, align 8, !tbaa !16
  store double %2218, ptr %26, align 8, !tbaa !11
  %2219 = load double, ptr %26, align 8, !tbaa !11
  %2220 = fcmp oge double %2219, 0.000000e+00
  br i1 %2220, label %2221, label %2223

2221:                                             ; preds = %2211
  %2222 = load double, ptr %26, align 8, !tbaa !11
  br label %2226

2223:                                             ; preds = %2211
  %2224 = load double, ptr %26, align 8, !tbaa !11
  %2225 = fneg double %2224
  br label %2226

2226:                                             ; preds = %2223, %2221
  %2227 = phi double [ %2222, %2221 ], [ %2225, %2223 ]
  %2228 = load ptr, ptr %17, align 8, !tbaa !5
  %2229 = load i32, ptr %43, align 4, !tbaa !9
  %2230 = sext i32 %2229 to i64
  %2231 = getelementptr inbounds %struct.doublecomplex, ptr %2228, i64 %2230
  %2232 = call { double, double } @Cd(ptr noundef %2231)
  %2233 = extractvalue { double, double } %2232, 0
  %2234 = extractvalue { double, double } %2232, 1
  store double %2234, ptr %27, align 8, !tbaa !11
  %2235 = load double, ptr %27, align 8, !tbaa !11
  %2236 = fcmp oge double %2235, 0.000000e+00
  br i1 %2236, label %2237, label %2239

2237:                                             ; preds = %2226
  %2238 = load double, ptr %27, align 8, !tbaa !11
  br label %2242

2239:                                             ; preds = %2226
  %2240 = load double, ptr %27, align 8, !tbaa !11
  %2241 = fneg double %2240
  br label %2242

2242:                                             ; preds = %2239, %2237
  %2243 = phi double [ %2238, %2237 ], [ %2241, %2239 ]
  %2244 = fadd double %2227, %2243
  store double %2244, ptr %50, align 8, !tbaa !11
  %2245 = load double, ptr %44, align 8, !tbaa !11
  %2246 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %2245, ptr %2246, align 8, !tbaa !16
  %2247 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double 0.000000e+00, ptr %2247, align 8, !tbaa !19
  %2248 = load double, ptr %40, align 8, !tbaa !11
  %2249 = fcmp oge double %2248, 1.000000e+00
  br i1 %2249, label %2250, label %2252

2250:                                             ; preds = %2242
  %2251 = load double, ptr %40, align 8, !tbaa !11
  br label %2253

2252:                                             ; preds = %2242
  br label %2253

2253:                                             ; preds = %2252, %2250
  %2254 = phi double [ %2251, %2250 ], [ 1.000000e+00, %2252 ]
  %2255 = fdiv double 1.000000e+00, %2254
  store double %2255, ptr %56, align 8, !tbaa !11
  %2256 = load ptr, ptr %19, align 8, !tbaa !5
  %2257 = load i32, ptr %43, align 4, !tbaa !9
  %2258 = sext i32 %2257 to i64
  %2259 = getelementptr inbounds double, ptr %2256, i64 %2258
  %2260 = load double, ptr %2259, align 8, !tbaa !11
  %2261 = load double, ptr %51, align 8, !tbaa !11
  %2262 = load double, ptr %50, align 8, !tbaa !11
  %2263 = fsub double %2261, %2262
  %2264 = load double, ptr %56, align 8, !tbaa !11
  %2265 = fmul double %2263, %2264
  %2266 = fcmp ogt double %2260, %2265
  br i1 %2266, label %2267, label %2365

2267:                                             ; preds = %2253
  %2268 = load double, ptr %56, align 8, !tbaa !11
  %2269 = fmul double %2268, 5.000000e-01
  store double %2269, ptr %56, align 8, !tbaa !11
  %2270 = load i32, ptr %55, align 4, !tbaa !9
  %2271 = icmp ne i32 %2270, 0
  br i1 %2271, label %2272, label %2300

2272:                                             ; preds = %2267
  %2273 = load ptr, ptr %16, align 8, !tbaa !5
  %2274 = load i32, ptr %49, align 4, !tbaa !9
  %2275 = sext i32 %2274 to i64
  %2276 = getelementptr inbounds %struct.doublecomplex, ptr %2273, i64 %2275
  %2277 = call { double, double } @Cd(ptr noundef %2276)
  %2278 = extractvalue { double, double } %2277, 0
  %2279 = extractvalue { double, double } %2277, 1
  %2280 = fneg double %2279
  %2281 = call ptr @_pCd(ptr noundef %31)
  %2282 = getelementptr inbounds { double, double }, ptr %2281, i32 0, i32 0
  %2283 = getelementptr inbounds { double, double }, ptr %2281, i32 0, i32 1
  store double %2278, ptr %2282, align 8
  store double %2280, ptr %2283, align 8
  %2284 = load double, ptr %44, align 8, !tbaa !11
  %2285 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %2286 = load double, ptr %2285, align 8, !tbaa !16
  %2287 = fmul double %2284, %2286
  %2288 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %2287, ptr %2288, align 8, !tbaa !16
  %2289 = load double, ptr %44, align 8, !tbaa !11
  %2290 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %2291 = load double, ptr %2290, align 8, !tbaa !19
  %2292 = fmul double %2289, %2291
  %2293 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %2292, ptr %2293, align 8, !tbaa !19
  %2294 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %2295 = load double, ptr %2294, align 8, !tbaa !16
  %2296 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double %2295, ptr %2296, align 8, !tbaa !16
  %2297 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %2298 = load double, ptr %2297, align 8, !tbaa !19
  %2299 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double %2298, ptr %2299, align 8, !tbaa !19
  br label %2304

2300:                                             ; preds = %2267
  %2301 = load double, ptr %44, align 8, !tbaa !11
  %2302 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double %2301, ptr %2302, align 8, !tbaa !16
  %2303 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double 0.000000e+00, ptr %2303, align 8, !tbaa !19
  br label %2304

2304:                                             ; preds = %2300, %2272
  %2305 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %2306 = load double, ptr %2305, align 8, !tbaa !16
  store double %2306, ptr %26, align 8, !tbaa !11
  %2307 = load double, ptr %26, align 8, !tbaa !11
  %2308 = fcmp oge double %2307, 0.000000e+00
  br i1 %2308, label %2309, label %2311

2309:                                             ; preds = %2304
  %2310 = load double, ptr %26, align 8, !tbaa !11
  br label %2314

2311:                                             ; preds = %2304
  %2312 = load double, ptr %26, align 8, !tbaa !11
  %2313 = fneg double %2312
  br label %2314

2314:                                             ; preds = %2311, %2309
  %2315 = phi double [ %2310, %2309 ], [ %2313, %2311 ]
  %2316 = call { double, double } @Cd(ptr noundef %39)
  %2317 = extractvalue { double, double } %2316, 0
  %2318 = extractvalue { double, double } %2316, 1
  store double %2318, ptr %27, align 8, !tbaa !11
  %2319 = load double, ptr %27, align 8, !tbaa !11
  %2320 = fcmp oge double %2319, 0.000000e+00
  br i1 %2320, label %2321, label %2323

2321:                                             ; preds = %2314
  %2322 = load double, ptr %27, align 8, !tbaa !11
  br label %2326

2323:                                             ; preds = %2314
  %2324 = load double, ptr %27, align 8, !tbaa !11
  %2325 = fneg double %2324
  br label %2326

2326:                                             ; preds = %2323, %2321
  %2327 = phi double [ %2322, %2321 ], [ %2325, %2323 ]
  %2328 = fadd double %2315, %2327
  store double %2328, ptr %57, align 8, !tbaa !11
  %2329 = load double, ptr %57, align 8, !tbaa !11
  %2330 = fcmp ogt double %2329, 1.000000e+00
  br i1 %2330, label %2331, label %2350

2331:                                             ; preds = %2326
  store double 1.000000e+00, ptr %26, align 8, !tbaa !11
  %2332 = load double, ptr %56, align 8, !tbaa !11
  %2333 = load double, ptr %57, align 8, !tbaa !11
  %2334 = fmul double %2332, %2333
  store double %2334, ptr %27, align 8, !tbaa !11
  %2335 = load double, ptr %26, align 8, !tbaa !11
  %2336 = load double, ptr %27, align 8, !tbaa !11
  %2337 = fcmp ole double %2335, %2336
  br i1 %2337, label %2338, label %2340

2338:                                             ; preds = %2331
  %2339 = load double, ptr %26, align 8, !tbaa !11
  br label %2342

2340:                                             ; preds = %2331
  %2341 = load double, ptr %27, align 8, !tbaa !11
  br label %2342

2342:                                             ; preds = %2340, %2338
  %2343 = phi double [ %2339, %2338 ], [ %2341, %2340 ]
  store double %2343, ptr %56, align 8, !tbaa !11
  call void @zladiv_(ptr noundef %30, ptr noundef %45, ptr noundef %39)
  %2344 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %2345 = load double, ptr %2344, align 8, !tbaa !16
  %2346 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %2345, ptr %2346, align 8, !tbaa !16
  %2347 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %2348 = load double, ptr %2347, align 8, !tbaa !19
  %2349 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %2348, ptr %2349, align 8, !tbaa !19
  br label %2350

2350:                                             ; preds = %2342, %2326
  %2351 = load double, ptr %56, align 8, !tbaa !11
  %2352 = fcmp olt double %2351, 1.000000e+00
  br i1 %2352, label %2353, label %2364

2353:                                             ; preds = %2350
  %2354 = load ptr, ptr %15, align 8, !tbaa !5
  %2355 = load ptr, ptr %17, align 8, !tbaa !5
  %2356 = getelementptr inbounds %struct.doublecomplex, ptr %2355, i64 1
  call void @zdscal_(ptr noundef %2354, ptr noundef %56, ptr noundef %2356, ptr noundef @c__1)
  %2357 = load double, ptr %56, align 8, !tbaa !11
  %2358 = load ptr, ptr %18, align 8, !tbaa !5
  %2359 = load double, ptr %2358, align 8, !tbaa !11
  %2360 = fmul double %2359, %2357
  store double %2360, ptr %2358, align 8, !tbaa !11
  %2361 = load double, ptr %56, align 8, !tbaa !11
  %2362 = load double, ptr %40, align 8, !tbaa !11
  %2363 = fmul double %2362, %2361
  store double %2363, ptr %40, align 8, !tbaa !11
  br label %2364

2364:                                             ; preds = %2353, %2350
  br label %2365

2365:                                             ; preds = %2364, %2253
  %2366 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  store double 0.000000e+00, ptr %2366, align 8, !tbaa !16
  %2367 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  store double 0.000000e+00, ptr %2367, align 8, !tbaa !19
  %2368 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %2369 = load double, ptr %2368, align 8, !tbaa !16
  %2370 = fcmp oeq double %2369, 1.000000e+00
  br i1 %2370, label %2371, label %2424

2371:                                             ; preds = %2365
  %2372 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %2373 = load double, ptr %2372, align 8, !tbaa !19
  %2374 = fcmp oeq double %2373, 0.000000e+00
  br i1 %2374, label %2375, label %2424

2375:                                             ; preds = %2371
  %2376 = load i32, ptr %48, align 4, !tbaa !9
  %2377 = icmp ne i32 %2376, 0
  br i1 %2377, label %2378, label %2396

2378:                                             ; preds = %2375
  %2379 = load i32, ptr %43, align 4, !tbaa !9
  %2380 = sub nsw i32 %2379, 1
  store i32 %2380, ptr %23, align 4, !tbaa !9
  %2381 = load ptr, ptr %16, align 8, !tbaa !5
  %2382 = load i32, ptr %49, align 4, !tbaa !9
  %2383 = load i32, ptr %43, align 4, !tbaa !9
  %2384 = sub nsw i32 %2382, %2383
  %2385 = add nsw i32 %2384, 1
  %2386 = sext i32 %2385 to i64
  %2387 = getelementptr inbounds %struct.doublecomplex, ptr %2381, i64 %2386
  %2388 = load ptr, ptr %17, align 8, !tbaa !5
  %2389 = getelementptr inbounds %struct.doublecomplex, ptr %2388, i64 1
  call void @zdotc_(ptr noundef %30, ptr noundef %23, ptr noundef %2387, ptr noundef @c__1, ptr noundef %2389, ptr noundef @c__1)
  %2390 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %2391 = load double, ptr %2390, align 8, !tbaa !16
  %2392 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  store double %2391, ptr %2392, align 8, !tbaa !16
  %2393 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %2394 = load double, ptr %2393, align 8, !tbaa !19
  %2395 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  store double %2394, ptr %2395, align 8, !tbaa !19
  br label %2423

2396:                                             ; preds = %2375
  %2397 = load i32, ptr %43, align 4, !tbaa !9
  %2398 = load ptr, ptr %15, align 8, !tbaa !5
  %2399 = load i32, ptr %2398, align 4, !tbaa !9
  %2400 = icmp slt i32 %2397, %2399
  br i1 %2400, label %2401, label %2422

2401:                                             ; preds = %2396
  %2402 = load ptr, ptr %15, align 8, !tbaa !5
  %2403 = load i32, ptr %2402, align 4, !tbaa !9
  %2404 = load i32, ptr %43, align 4, !tbaa !9
  %2405 = sub nsw i32 %2403, %2404
  store i32 %2405, ptr %23, align 4, !tbaa !9
  %2406 = load ptr, ptr %16, align 8, !tbaa !5
  %2407 = load i32, ptr %49, align 4, !tbaa !9
  %2408 = add nsw i32 %2407, 1
  %2409 = sext i32 %2408 to i64
  %2410 = getelementptr inbounds %struct.doublecomplex, ptr %2406, i64 %2409
  %2411 = load ptr, ptr %17, align 8, !tbaa !5
  %2412 = load i32, ptr %43, align 4, !tbaa !9
  %2413 = add nsw i32 %2412, 1
  %2414 = sext i32 %2413 to i64
  %2415 = getelementptr inbounds %struct.doublecomplex, ptr %2411, i64 %2414
  call void @zdotc_(ptr noundef %30, ptr noundef %23, ptr noundef %2410, ptr noundef @c__1, ptr noundef %2415, ptr noundef @c__1)
  %2416 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %2417 = load double, ptr %2416, align 8, !tbaa !16
  %2418 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  store double %2417, ptr %2418, align 8, !tbaa !16
  %2419 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %2420 = load double, ptr %2419, align 8, !tbaa !19
  %2421 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  store double %2420, ptr %2421, align 8, !tbaa !19
  br label %2422

2422:                                             ; preds = %2401, %2396
  br label %2423

2423:                                             ; preds = %2422, %2378
  br label %2652

2424:                                             ; preds = %2371, %2365
  %2425 = load i32, ptr %48, align 4, !tbaa !9
  %2426 = icmp ne i32 %2425, 0
  br i1 %2426, label %2427, label %2535

2427:                                             ; preds = %2424
  %2428 = load i32, ptr %43, align 4, !tbaa !9
  %2429 = sub nsw i32 %2428, 1
  store i32 %2429, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %2430

2430:                                             ; preds = %2531, %2427
  %2431 = load i32, ptr %42, align 4, !tbaa !9
  %2432 = load i32, ptr %23, align 4, !tbaa !9
  %2433 = icmp sle i32 %2431, %2432
  br i1 %2433, label %2434, label %2534

2434:                                             ; preds = %2430
  %2435 = load ptr, ptr %16, align 8, !tbaa !5
  %2436 = load i32, ptr %49, align 4, !tbaa !9
  %2437 = load i32, ptr %43, align 4, !tbaa !9
  %2438 = sub nsw i32 %2436, %2437
  %2439 = load i32, ptr %42, align 4, !tbaa !9
  %2440 = add nsw i32 %2438, %2439
  %2441 = sext i32 %2440 to i64
  %2442 = getelementptr inbounds %struct.doublecomplex, ptr %2435, i64 %2441
  %2443 = call { double, double } @Cd(ptr noundef %2442)
  %2444 = extractvalue { double, double } %2443, 0
  %2445 = extractvalue { double, double } %2443, 1
  %2446 = fneg double %2445
  %2447 = call ptr @_pCd(ptr noundef %33)
  %2448 = getelementptr inbounds { double, double }, ptr %2447, i32 0, i32 0
  %2449 = getelementptr inbounds { double, double }, ptr %2447, i32 0, i32 1
  store double %2444, ptr %2448, align 8
  store double %2446, ptr %2449, align 8
  %2450 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  %2451 = load double, ptr %2450, align 8, !tbaa !16
  %2452 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %2453 = load double, ptr %2452, align 8, !tbaa !16
  %2454 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  %2455 = load double, ptr %2454, align 8, !tbaa !19
  %2456 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %2457 = load double, ptr %2456, align 8, !tbaa !19
  %2458 = fmul double %2455, %2457
  %2459 = fneg double %2458
  %2460 = call double @llvm.fmuladd.f64(double %2451, double %2453, double %2459)
  %2461 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  store double %2460, ptr %2461, align 8, !tbaa !16
  %2462 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  %2463 = load double, ptr %2462, align 8, !tbaa !16
  %2464 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %2465 = load double, ptr %2464, align 8, !tbaa !19
  %2466 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  %2467 = load double, ptr %2466, align 8, !tbaa !19
  %2468 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %2469 = load double, ptr %2468, align 8, !tbaa !16
  %2470 = fmul double %2467, %2469
  %2471 = call double @llvm.fmuladd.f64(double %2463, double %2465, double %2470)
  %2472 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  store double %2471, ptr %2472, align 8, !tbaa !19
  %2473 = load i32, ptr %42, align 4, !tbaa !9
  store i32 %2473, ptr %24, align 4, !tbaa !9
  %2474 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  %2475 = load double, ptr %2474, align 8, !tbaa !16
  %2476 = load ptr, ptr %17, align 8, !tbaa !5
  %2477 = load i32, ptr %24, align 4, !tbaa !9
  %2478 = sext i32 %2477 to i64
  %2479 = getelementptr inbounds %struct.doublecomplex, ptr %2476, i64 %2478
  %2480 = getelementptr inbounds %struct.doublecomplex, ptr %2479, i32 0, i32 0
  %2481 = load double, ptr %2480, align 8, !tbaa !16
  %2482 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  %2483 = load double, ptr %2482, align 8, !tbaa !19
  %2484 = load ptr, ptr %17, align 8, !tbaa !5
  %2485 = load i32, ptr %24, align 4, !tbaa !9
  %2486 = sext i32 %2485 to i64
  %2487 = getelementptr inbounds %struct.doublecomplex, ptr %2484, i64 %2486
  %2488 = getelementptr inbounds %struct.doublecomplex, ptr %2487, i32 0, i32 1
  %2489 = load double, ptr %2488, align 8, !tbaa !19
  %2490 = fmul double %2483, %2489
  %2491 = fneg double %2490
  %2492 = call double @llvm.fmuladd.f64(double %2475, double %2481, double %2491)
  %2493 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %2492, ptr %2493, align 8, !tbaa !16
  %2494 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  %2495 = load double, ptr %2494, align 8, !tbaa !16
  %2496 = load ptr, ptr %17, align 8, !tbaa !5
  %2497 = load i32, ptr %24, align 4, !tbaa !9
  %2498 = sext i32 %2497 to i64
  %2499 = getelementptr inbounds %struct.doublecomplex, ptr %2496, i64 %2498
  %2500 = getelementptr inbounds %struct.doublecomplex, ptr %2499, i32 0, i32 1
  %2501 = load double, ptr %2500, align 8, !tbaa !19
  %2502 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  %2503 = load double, ptr %2502, align 8, !tbaa !19
  %2504 = load ptr, ptr %17, align 8, !tbaa !5
  %2505 = load i32, ptr %24, align 4, !tbaa !9
  %2506 = sext i32 %2505 to i64
  %2507 = getelementptr inbounds %struct.doublecomplex, ptr %2504, i64 %2506
  %2508 = getelementptr inbounds %struct.doublecomplex, ptr %2507, i32 0, i32 0
  %2509 = load double, ptr %2508, align 8, !tbaa !16
  %2510 = fmul double %2503, %2509
  %2511 = call double @llvm.fmuladd.f64(double %2495, double %2501, double %2510)
  %2512 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %2511, ptr %2512, align 8, !tbaa !19
  %2513 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  %2514 = load double, ptr %2513, align 8, !tbaa !16
  %2515 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %2516 = load double, ptr %2515, align 8, !tbaa !16
  %2517 = fadd double %2514, %2516
  %2518 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %2517, ptr %2518, align 8, !tbaa !16
  %2519 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  %2520 = load double, ptr %2519, align 8, !tbaa !19
  %2521 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %2522 = load double, ptr %2521, align 8, !tbaa !19
  %2523 = fadd double %2520, %2522
  %2524 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %2523, ptr %2524, align 8, !tbaa !19
  %2525 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %2526 = load double, ptr %2525, align 8, !tbaa !16
  %2527 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  store double %2526, ptr %2527, align 8, !tbaa !16
  %2528 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %2529 = load double, ptr %2528, align 8, !tbaa !19
  %2530 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  store double %2529, ptr %2530, align 8, !tbaa !19
  br label %2531

2531:                                             ; preds = %2434
  %2532 = load i32, ptr %42, align 4, !tbaa !9
  %2533 = add nsw i32 %2532, 1
  store i32 %2533, ptr %42, align 4, !tbaa !9
  br label %2430, !llvm.loop !30

2534:                                             ; preds = %2430
  br label %2651

2535:                                             ; preds = %2424
  %2536 = load i32, ptr %43, align 4, !tbaa !9
  %2537 = load ptr, ptr %15, align 8, !tbaa !5
  %2538 = load i32, ptr %2537, align 4, !tbaa !9
  %2539 = icmp slt i32 %2536, %2538
  br i1 %2539, label %2540, label %2650

2540:                                             ; preds = %2535
  %2541 = load ptr, ptr %15, align 8, !tbaa !5
  %2542 = load i32, ptr %2541, align 4, !tbaa !9
  %2543 = load i32, ptr %43, align 4, !tbaa !9
  %2544 = sub nsw i32 %2542, %2543
  store i32 %2544, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %2545

2545:                                             ; preds = %2646, %2540
  %2546 = load i32, ptr %42, align 4, !tbaa !9
  %2547 = load i32, ptr %23, align 4, !tbaa !9
  %2548 = icmp sle i32 %2546, %2547
  br i1 %2548, label %2549, label %2649

2549:                                             ; preds = %2545
  %2550 = load ptr, ptr %16, align 8, !tbaa !5
  %2551 = load i32, ptr %49, align 4, !tbaa !9
  %2552 = load i32, ptr %42, align 4, !tbaa !9
  %2553 = add nsw i32 %2551, %2552
  %2554 = sext i32 %2553 to i64
  %2555 = getelementptr inbounds %struct.doublecomplex, ptr %2550, i64 %2554
  %2556 = call { double, double } @Cd(ptr noundef %2555)
  %2557 = extractvalue { double, double } %2556, 0
  %2558 = extractvalue { double, double } %2556, 1
  %2559 = fneg double %2558
  %2560 = call ptr @_pCd(ptr noundef %33)
  %2561 = getelementptr inbounds { double, double }, ptr %2560, i32 0, i32 0
  %2562 = getelementptr inbounds { double, double }, ptr %2560, i32 0, i32 1
  store double %2557, ptr %2561, align 8
  store double %2559, ptr %2562, align 8
  %2563 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  %2564 = load double, ptr %2563, align 8, !tbaa !16
  %2565 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %2566 = load double, ptr %2565, align 8, !tbaa !16
  %2567 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  %2568 = load double, ptr %2567, align 8, !tbaa !19
  %2569 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %2570 = load double, ptr %2569, align 8, !tbaa !19
  %2571 = fmul double %2568, %2570
  %2572 = fneg double %2571
  %2573 = call double @llvm.fmuladd.f64(double %2564, double %2566, double %2572)
  %2574 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  store double %2573, ptr %2574, align 8, !tbaa !16
  %2575 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  %2576 = load double, ptr %2575, align 8, !tbaa !16
  %2577 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %2578 = load double, ptr %2577, align 8, !tbaa !19
  %2579 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  %2580 = load double, ptr %2579, align 8, !tbaa !19
  %2581 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %2582 = load double, ptr %2581, align 8, !tbaa !16
  %2583 = fmul double %2580, %2582
  %2584 = call double @llvm.fmuladd.f64(double %2576, double %2578, double %2583)
  %2585 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  store double %2584, ptr %2585, align 8, !tbaa !19
  %2586 = load i32, ptr %43, align 4, !tbaa !9
  %2587 = load i32, ptr %42, align 4, !tbaa !9
  %2588 = add nsw i32 %2586, %2587
  store i32 %2588, ptr %24, align 4, !tbaa !9
  %2589 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  %2590 = load double, ptr %2589, align 8, !tbaa !16
  %2591 = load ptr, ptr %17, align 8, !tbaa !5
  %2592 = load i32, ptr %24, align 4, !tbaa !9
  %2593 = sext i32 %2592 to i64
  %2594 = getelementptr inbounds %struct.doublecomplex, ptr %2591, i64 %2593
  %2595 = getelementptr inbounds %struct.doublecomplex, ptr %2594, i32 0, i32 0
  %2596 = load double, ptr %2595, align 8, !tbaa !16
  %2597 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  %2598 = load double, ptr %2597, align 8, !tbaa !19
  %2599 = load ptr, ptr %17, align 8, !tbaa !5
  %2600 = load i32, ptr %24, align 4, !tbaa !9
  %2601 = sext i32 %2600 to i64
  %2602 = getelementptr inbounds %struct.doublecomplex, ptr %2599, i64 %2601
  %2603 = getelementptr inbounds %struct.doublecomplex, ptr %2602, i32 0, i32 1
  %2604 = load double, ptr %2603, align 8, !tbaa !19
  %2605 = fmul double %2598, %2604
  %2606 = fneg double %2605
  %2607 = call double @llvm.fmuladd.f64(double %2590, double %2596, double %2606)
  %2608 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  store double %2607, ptr %2608, align 8, !tbaa !16
  %2609 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 0
  %2610 = load double, ptr %2609, align 8, !tbaa !16
  %2611 = load ptr, ptr %17, align 8, !tbaa !5
  %2612 = load i32, ptr %24, align 4, !tbaa !9
  %2613 = sext i32 %2612 to i64
  %2614 = getelementptr inbounds %struct.doublecomplex, ptr %2611, i64 %2613
  %2615 = getelementptr inbounds %struct.doublecomplex, ptr %2614, i32 0, i32 1
  %2616 = load double, ptr %2615, align 8, !tbaa !19
  %2617 = getelementptr inbounds %struct.doublecomplex, ptr %32, i32 0, i32 1
  %2618 = load double, ptr %2617, align 8, !tbaa !19
  %2619 = load ptr, ptr %17, align 8, !tbaa !5
  %2620 = load i32, ptr %24, align 4, !tbaa !9
  %2621 = sext i32 %2620 to i64
  %2622 = getelementptr inbounds %struct.doublecomplex, ptr %2619, i64 %2621
  %2623 = getelementptr inbounds %struct.doublecomplex, ptr %2622, i32 0, i32 0
  %2624 = load double, ptr %2623, align 8, !tbaa !16
  %2625 = fmul double %2618, %2624
  %2626 = call double @llvm.fmuladd.f64(double %2610, double %2616, double %2625)
  %2627 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  store double %2626, ptr %2627, align 8, !tbaa !19
  %2628 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  %2629 = load double, ptr %2628, align 8, !tbaa !16
  %2630 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %2631 = load double, ptr %2630, align 8, !tbaa !16
  %2632 = fadd double %2629, %2631
  %2633 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %2632, ptr %2633, align 8, !tbaa !16
  %2634 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  %2635 = load double, ptr %2634, align 8, !tbaa !19
  %2636 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %2637 = load double, ptr %2636, align 8, !tbaa !19
  %2638 = fadd double %2635, %2637
  %2639 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %2638, ptr %2639, align 8, !tbaa !19
  %2640 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %2641 = load double, ptr %2640, align 8, !tbaa !16
  %2642 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  store double %2641, ptr %2642, align 8, !tbaa !16
  %2643 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %2644 = load double, ptr %2643, align 8, !tbaa !19
  %2645 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  store double %2644, ptr %2645, align 8, !tbaa !19
  br label %2646

2646:                                             ; preds = %2549
  %2647 = load i32, ptr %42, align 4, !tbaa !9
  %2648 = add nsw i32 %2647, 1
  store i32 %2648, ptr %42, align 4, !tbaa !9
  br label %2545, !llvm.loop !31

2649:                                             ; preds = %2545
  br label %2650

2650:                                             ; preds = %2649, %2535
  br label %2651

2651:                                             ; preds = %2650, %2534
  br label %2652

2652:                                             ; preds = %2651, %2423
  %2653 = load double, ptr %44, align 8, !tbaa !11
  %2654 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %2653, ptr %2654, align 8, !tbaa !16
  %2655 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double 0.000000e+00, ptr %2655, align 8, !tbaa !19
  %2656 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %2657 = load double, ptr %2656, align 8, !tbaa !16
  %2658 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %2659 = load double, ptr %2658, align 8, !tbaa !16
  %2660 = fcmp oeq double %2657, %2659
  br i1 %2660, label %2661, label %2929

2661:                                             ; preds = %2652
  %2662 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %2663 = load double, ptr %2662, align 8, !tbaa !19
  %2664 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %2665 = load double, ptr %2664, align 8, !tbaa !19
  %2666 = fcmp oeq double %2663, %2665
  br i1 %2666, label %2667, label %2929

2667:                                             ; preds = %2661
  %2668 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %2668, ptr %23, align 4, !tbaa !9
  %2669 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %2669, ptr %24, align 4, !tbaa !9
  %2670 = load ptr, ptr %17, align 8, !tbaa !5
  %2671 = load i32, ptr %24, align 4, !tbaa !9
  %2672 = sext i32 %2671 to i64
  %2673 = getelementptr inbounds %struct.doublecomplex, ptr %2670, i64 %2672
  %2674 = getelementptr inbounds %struct.doublecomplex, ptr %2673, i32 0, i32 0
  %2675 = load double, ptr %2674, align 8, !tbaa !16
  %2676 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  %2677 = load double, ptr %2676, align 8, !tbaa !16
  %2678 = fsub double %2675, %2677
  %2679 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %2678, ptr %2679, align 8, !tbaa !16
  %2680 = load ptr, ptr %17, align 8, !tbaa !5
  %2681 = load i32, ptr %24, align 4, !tbaa !9
  %2682 = sext i32 %2681 to i64
  %2683 = getelementptr inbounds %struct.doublecomplex, ptr %2680, i64 %2682
  %2684 = getelementptr inbounds %struct.doublecomplex, ptr %2683, i32 0, i32 1
  %2685 = load double, ptr %2684, align 8, !tbaa !19
  %2686 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  %2687 = load double, ptr %2686, align 8, !tbaa !19
  %2688 = fsub double %2685, %2687
  %2689 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %2688, ptr %2689, align 8, !tbaa !19
  %2690 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %2691 = load double, ptr %2690, align 8, !tbaa !16
  %2692 = load ptr, ptr %17, align 8, !tbaa !5
  %2693 = load i32, ptr %23, align 4, !tbaa !9
  %2694 = sext i32 %2693 to i64
  %2695 = getelementptr inbounds %struct.doublecomplex, ptr %2692, i64 %2694
  %2696 = getelementptr inbounds %struct.doublecomplex, ptr %2695, i32 0, i32 0
  store double %2691, ptr %2696, align 8, !tbaa !16
  %2697 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %2698 = load double, ptr %2697, align 8, !tbaa !19
  %2699 = load ptr, ptr %17, align 8, !tbaa !5
  %2700 = load i32, ptr %23, align 4, !tbaa !9
  %2701 = sext i32 %2700 to i64
  %2702 = getelementptr inbounds %struct.doublecomplex, ptr %2699, i64 %2701
  %2703 = getelementptr inbounds %struct.doublecomplex, ptr %2702, i32 0, i32 1
  store double %2698, ptr %2703, align 8, !tbaa !19
  %2704 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %2704, ptr %23, align 4, !tbaa !9
  %2705 = load ptr, ptr %17, align 8, !tbaa !5
  %2706 = load i32, ptr %23, align 4, !tbaa !9
  %2707 = sext i32 %2706 to i64
  %2708 = getelementptr inbounds %struct.doublecomplex, ptr %2705, i64 %2707
  %2709 = getelementptr inbounds %struct.doublecomplex, ptr %2708, i32 0, i32 0
  %2710 = load double, ptr %2709, align 8, !tbaa !16
  store double %2710, ptr %26, align 8, !tbaa !11
  %2711 = load double, ptr %26, align 8, !tbaa !11
  %2712 = fcmp oge double %2711, 0.000000e+00
  br i1 %2712, label %2713, label %2715

2713:                                             ; preds = %2667
  %2714 = load double, ptr %26, align 8, !tbaa !11
  br label %2718

2715:                                             ; preds = %2667
  %2716 = load double, ptr %26, align 8, !tbaa !11
  %2717 = fneg double %2716
  br label %2718

2718:                                             ; preds = %2715, %2713
  %2719 = phi double [ %2714, %2713 ], [ %2717, %2715 ]
  %2720 = load ptr, ptr %17, align 8, !tbaa !5
  %2721 = load i32, ptr %43, align 4, !tbaa !9
  %2722 = sext i32 %2721 to i64
  %2723 = getelementptr inbounds %struct.doublecomplex, ptr %2720, i64 %2722
  %2724 = call { double, double } @Cd(ptr noundef %2723)
  %2725 = extractvalue { double, double } %2724, 0
  %2726 = extractvalue { double, double } %2724, 1
  store double %2726, ptr %27, align 8, !tbaa !11
  %2727 = load double, ptr %27, align 8, !tbaa !11
  %2728 = fcmp oge double %2727, 0.000000e+00
  br i1 %2728, label %2729, label %2731

2729:                                             ; preds = %2718
  %2730 = load double, ptr %27, align 8, !tbaa !11
  br label %2734

2731:                                             ; preds = %2718
  %2732 = load double, ptr %27, align 8, !tbaa !11
  %2733 = fneg double %2732
  br label %2734

2734:                                             ; preds = %2731, %2729
  %2735 = phi double [ %2730, %2729 ], [ %2733, %2731 ]
  %2736 = fadd double %2719, %2735
  store double %2736, ptr %50, align 8, !tbaa !11
  %2737 = load i32, ptr %55, align 4, !tbaa !9
  %2738 = icmp ne i32 %2737, 0
  br i1 %2738, label %2739, label %2767

2739:                                             ; preds = %2734
  %2740 = load ptr, ptr %16, align 8, !tbaa !5
  %2741 = load i32, ptr %49, align 4, !tbaa !9
  %2742 = sext i32 %2741 to i64
  %2743 = getelementptr inbounds %struct.doublecomplex, ptr %2740, i64 %2742
  %2744 = call { double, double } @Cd(ptr noundef %2743)
  %2745 = extractvalue { double, double } %2744, 0
  %2746 = extractvalue { double, double } %2744, 1
  %2747 = fneg double %2746
  %2748 = call ptr @_pCd(ptr noundef %31)
  %2749 = getelementptr inbounds { double, double }, ptr %2748, i32 0, i32 0
  %2750 = getelementptr inbounds { double, double }, ptr %2748, i32 0, i32 1
  store double %2745, ptr %2749, align 8
  store double %2747, ptr %2750, align 8
  %2751 = load double, ptr %44, align 8, !tbaa !11
  %2752 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %2753 = load double, ptr %2752, align 8, !tbaa !16
  %2754 = fmul double %2751, %2753
  %2755 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %2754, ptr %2755, align 8, !tbaa !16
  %2756 = load double, ptr %44, align 8, !tbaa !11
  %2757 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %2758 = load double, ptr %2757, align 8, !tbaa !19
  %2759 = fmul double %2756, %2758
  %2760 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %2759, ptr %2760, align 8, !tbaa !19
  %2761 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %2762 = load double, ptr %2761, align 8, !tbaa !16
  %2763 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double %2762, ptr %2763, align 8, !tbaa !16
  %2764 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %2765 = load double, ptr %2764, align 8, !tbaa !19
  %2766 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double %2765, ptr %2766, align 8, !tbaa !19
  br label %2775

2767:                                             ; preds = %2734
  %2768 = load double, ptr %44, align 8, !tbaa !11
  %2769 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double %2768, ptr %2769, align 8, !tbaa !16
  %2770 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double 0.000000e+00, ptr %2770, align 8, !tbaa !19
  %2771 = load double, ptr %44, align 8, !tbaa !11
  %2772 = fcmp oeq double %2771, 1.000000e+00
  br i1 %2772, label %2773, label %2774

2773:                                             ; preds = %2767
  br label %2928

2774:                                             ; preds = %2767
  br label %2775

2775:                                             ; preds = %2774, %2739
  %2776 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %2777 = load double, ptr %2776, align 8, !tbaa !16
  store double %2777, ptr %26, align 8, !tbaa !11
  %2778 = load double, ptr %26, align 8, !tbaa !11
  %2779 = fcmp oge double %2778, 0.000000e+00
  br i1 %2779, label %2780, label %2782

2780:                                             ; preds = %2775
  %2781 = load double, ptr %26, align 8, !tbaa !11
  br label %2785

2782:                                             ; preds = %2775
  %2783 = load double, ptr %26, align 8, !tbaa !11
  %2784 = fneg double %2783
  br label %2785

2785:                                             ; preds = %2782, %2780
  %2786 = phi double [ %2781, %2780 ], [ %2784, %2782 ]
  %2787 = call { double, double } @Cd(ptr noundef %39)
  %2788 = extractvalue { double, double } %2787, 0
  %2789 = extractvalue { double, double } %2787, 1
  store double %2789, ptr %27, align 8, !tbaa !11
  %2790 = load double, ptr %27, align 8, !tbaa !11
  %2791 = fcmp oge double %2790, 0.000000e+00
  br i1 %2791, label %2792, label %2794

2792:                                             ; preds = %2785
  %2793 = load double, ptr %27, align 8, !tbaa !11
  br label %2797

2794:                                             ; preds = %2785
  %2795 = load double, ptr %27, align 8, !tbaa !11
  %2796 = fneg double %2795
  br label %2797

2797:                                             ; preds = %2794, %2792
  %2798 = phi double [ %2793, %2792 ], [ %2796, %2794 ]
  %2799 = fadd double %2786, %2798
  store double %2799, ptr %57, align 8, !tbaa !11
  %2800 = load double, ptr %57, align 8, !tbaa !11
  %2801 = load double, ptr %54, align 8, !tbaa !11
  %2802 = fcmp ogt double %2800, %2801
  br i1 %2802, label %2803, label %2846

2803:                                             ; preds = %2797
  %2804 = load double, ptr %57, align 8, !tbaa !11
  %2805 = fcmp olt double %2804, 1.000000e+00
  br i1 %2805, label %2806, label %2826

2806:                                             ; preds = %2803
  %2807 = load double, ptr %50, align 8, !tbaa !11
  %2808 = load double, ptr %57, align 8, !tbaa !11
  %2809 = load double, ptr %51, align 8, !tbaa !11
  %2810 = fmul double %2808, %2809
  %2811 = fcmp ogt double %2807, %2810
  br i1 %2811, label %2812, label %2825

2812:                                             ; preds = %2806
  %2813 = load double, ptr %50, align 8, !tbaa !11
  %2814 = fdiv double 1.000000e+00, %2813
  store double %2814, ptr %56, align 8, !tbaa !11
  %2815 = load ptr, ptr %15, align 8, !tbaa !5
  %2816 = load ptr, ptr %17, align 8, !tbaa !5
  %2817 = getelementptr inbounds %struct.doublecomplex, ptr %2816, i64 1
  call void @zdscal_(ptr noundef %2815, ptr noundef %56, ptr noundef %2817, ptr noundef @c__1)
  %2818 = load double, ptr %56, align 8, !tbaa !11
  %2819 = load ptr, ptr %18, align 8, !tbaa !5
  %2820 = load double, ptr %2819, align 8, !tbaa !11
  %2821 = fmul double %2820, %2818
  store double %2821, ptr %2819, align 8, !tbaa !11
  %2822 = load double, ptr %56, align 8, !tbaa !11
  %2823 = load double, ptr %40, align 8, !tbaa !11
  %2824 = fmul double %2823, %2822
  store double %2824, ptr %40, align 8, !tbaa !11
  br label %2825

2825:                                             ; preds = %2812, %2806
  br label %2826

2826:                                             ; preds = %2825, %2803
  %2827 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %2827, ptr %23, align 4, !tbaa !9
  %2828 = load ptr, ptr %17, align 8, !tbaa !5
  %2829 = load i32, ptr %43, align 4, !tbaa !9
  %2830 = sext i32 %2829 to i64
  %2831 = getelementptr inbounds %struct.doublecomplex, ptr %2828, i64 %2830
  call void @zladiv_(ptr noundef %30, ptr noundef %2831, ptr noundef %39)
  %2832 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %2833 = load double, ptr %2832, align 8, !tbaa !16
  %2834 = load ptr, ptr %17, align 8, !tbaa !5
  %2835 = load i32, ptr %23, align 4, !tbaa !9
  %2836 = sext i32 %2835 to i64
  %2837 = getelementptr inbounds %struct.doublecomplex, ptr %2834, i64 %2836
  %2838 = getelementptr inbounds %struct.doublecomplex, ptr %2837, i32 0, i32 0
  store double %2833, ptr %2838, align 8, !tbaa !16
  %2839 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %2840 = load double, ptr %2839, align 8, !tbaa !19
  %2841 = load ptr, ptr %17, align 8, !tbaa !5
  %2842 = load i32, ptr %23, align 4, !tbaa !9
  %2843 = sext i32 %2842 to i64
  %2844 = getelementptr inbounds %struct.doublecomplex, ptr %2841, i64 %2843
  %2845 = getelementptr inbounds %struct.doublecomplex, ptr %2844, i32 0, i32 1
  store double %2840, ptr %2845, align 8, !tbaa !19
  br label %2927

2846:                                             ; preds = %2797
  %2847 = load double, ptr %57, align 8, !tbaa !11
  %2848 = fcmp ogt double %2847, 0.000000e+00
  br i1 %2848, label %2849, label %2891

2849:                                             ; preds = %2846
  %2850 = load double, ptr %50, align 8, !tbaa !11
  %2851 = load double, ptr %57, align 8, !tbaa !11
  %2852 = load double, ptr %51, align 8, !tbaa !11
  %2853 = fmul double %2851, %2852
  %2854 = fcmp ogt double %2850, %2853
  br i1 %2854, label %2855, label %2871

2855:                                             ; preds = %2849
  %2856 = load double, ptr %57, align 8, !tbaa !11
  %2857 = load double, ptr %51, align 8, !tbaa !11
  %2858 = fmul double %2856, %2857
  %2859 = load double, ptr %50, align 8, !tbaa !11
  %2860 = fdiv double %2858, %2859
  store double %2860, ptr %56, align 8, !tbaa !11
  %2861 = load ptr, ptr %15, align 8, !tbaa !5
  %2862 = load ptr, ptr %17, align 8, !tbaa !5
  %2863 = getelementptr inbounds %struct.doublecomplex, ptr %2862, i64 1
  call void @zdscal_(ptr noundef %2861, ptr noundef %56, ptr noundef %2863, ptr noundef @c__1)
  %2864 = load double, ptr %56, align 8, !tbaa !11
  %2865 = load ptr, ptr %18, align 8, !tbaa !5
  %2866 = load double, ptr %2865, align 8, !tbaa !11
  %2867 = fmul double %2866, %2864
  store double %2867, ptr %2865, align 8, !tbaa !11
  %2868 = load double, ptr %56, align 8, !tbaa !11
  %2869 = load double, ptr %40, align 8, !tbaa !11
  %2870 = fmul double %2869, %2868
  store double %2870, ptr %40, align 8, !tbaa !11
  br label %2871

2871:                                             ; preds = %2855, %2849
  %2872 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %2872, ptr %23, align 4, !tbaa !9
  %2873 = load ptr, ptr %17, align 8, !tbaa !5
  %2874 = load i32, ptr %43, align 4, !tbaa !9
  %2875 = sext i32 %2874 to i64
  %2876 = getelementptr inbounds %struct.doublecomplex, ptr %2873, i64 %2875
  call void @zladiv_(ptr noundef %30, ptr noundef %2876, ptr noundef %39)
  %2877 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %2878 = load double, ptr %2877, align 8, !tbaa !16
  %2879 = load ptr, ptr %17, align 8, !tbaa !5
  %2880 = load i32, ptr %23, align 4, !tbaa !9
  %2881 = sext i32 %2880 to i64
  %2882 = getelementptr inbounds %struct.doublecomplex, ptr %2879, i64 %2881
  %2883 = getelementptr inbounds %struct.doublecomplex, ptr %2882, i32 0, i32 0
  store double %2878, ptr %2883, align 8, !tbaa !16
  %2884 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %2885 = load double, ptr %2884, align 8, !tbaa !19
  %2886 = load ptr, ptr %17, align 8, !tbaa !5
  %2887 = load i32, ptr %23, align 4, !tbaa !9
  %2888 = sext i32 %2887 to i64
  %2889 = getelementptr inbounds %struct.doublecomplex, ptr %2886, i64 %2888
  %2890 = getelementptr inbounds %struct.doublecomplex, ptr %2889, i32 0, i32 1
  store double %2885, ptr %2890, align 8, !tbaa !19
  br label %2926

2891:                                             ; preds = %2846
  %2892 = load ptr, ptr %15, align 8, !tbaa !5
  %2893 = load i32, ptr %2892, align 4, !tbaa !9
  store i32 %2893, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %2894

2894:                                             ; preds = %2910, %2891
  %2895 = load i32, ptr %42, align 4, !tbaa !9
  %2896 = load i32, ptr %23, align 4, !tbaa !9
  %2897 = icmp sle i32 %2895, %2896
  br i1 %2897, label %2898, label %2913

2898:                                             ; preds = %2894
  %2899 = load i32, ptr %42, align 4, !tbaa !9
  store i32 %2899, ptr %24, align 4, !tbaa !9
  %2900 = load ptr, ptr %17, align 8, !tbaa !5
  %2901 = load i32, ptr %24, align 4, !tbaa !9
  %2902 = sext i32 %2901 to i64
  %2903 = getelementptr inbounds %struct.doublecomplex, ptr %2900, i64 %2902
  %2904 = getelementptr inbounds %struct.doublecomplex, ptr %2903, i32 0, i32 0
  store double 0.000000e+00, ptr %2904, align 8, !tbaa !16
  %2905 = load ptr, ptr %17, align 8, !tbaa !5
  %2906 = load i32, ptr %24, align 4, !tbaa !9
  %2907 = sext i32 %2906 to i64
  %2908 = getelementptr inbounds %struct.doublecomplex, ptr %2905, i64 %2907
  %2909 = getelementptr inbounds %struct.doublecomplex, ptr %2908, i32 0, i32 1
  store double 0.000000e+00, ptr %2909, align 8, !tbaa !19
  br label %2910

2910:                                             ; preds = %2898
  %2911 = load i32, ptr %42, align 4, !tbaa !9
  %2912 = add nsw i32 %2911, 1
  store i32 %2912, ptr %42, align 4, !tbaa !9
  br label %2894, !llvm.loop !32

2913:                                             ; preds = %2894
  %2914 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %2914, ptr %23, align 4, !tbaa !9
  %2915 = load ptr, ptr %17, align 8, !tbaa !5
  %2916 = load i32, ptr %23, align 4, !tbaa !9
  %2917 = sext i32 %2916 to i64
  %2918 = getelementptr inbounds %struct.doublecomplex, ptr %2915, i64 %2917
  %2919 = getelementptr inbounds %struct.doublecomplex, ptr %2918, i32 0, i32 0
  store double 1.000000e+00, ptr %2919, align 8, !tbaa !16
  %2920 = load ptr, ptr %17, align 8, !tbaa !5
  %2921 = load i32, ptr %23, align 4, !tbaa !9
  %2922 = sext i32 %2921 to i64
  %2923 = getelementptr inbounds %struct.doublecomplex, ptr %2920, i64 %2922
  %2924 = getelementptr inbounds %struct.doublecomplex, ptr %2923, i32 0, i32 1
  store double 0.000000e+00, ptr %2924, align 8, !tbaa !19
  %2925 = load ptr, ptr %18, align 8, !tbaa !5
  store double 0.000000e+00, ptr %2925, align 8, !tbaa !11
  store double 0.000000e+00, ptr %40, align 8, !tbaa !11
  br label %2926

2926:                                             ; preds = %2913, %2871
  br label %2927

2927:                                             ; preds = %2926, %2826
  br label %2928

2928:                                             ; preds = %2927, %2773
  br label %2961

2929:                                             ; preds = %2661, %2652
  %2930 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %2930, ptr %23, align 4, !tbaa !9
  %2931 = load ptr, ptr %17, align 8, !tbaa !5
  %2932 = load i32, ptr %43, align 4, !tbaa !9
  %2933 = sext i32 %2932 to i64
  %2934 = getelementptr inbounds %struct.doublecomplex, ptr %2931, i64 %2933
  call void @zladiv_(ptr noundef %31, ptr noundef %2934, ptr noundef %39)
  %2935 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 0
  %2936 = load double, ptr %2935, align 8, !tbaa !16
  %2937 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  %2938 = load double, ptr %2937, align 8, !tbaa !16
  %2939 = fsub double %2936, %2938
  %2940 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  store double %2939, ptr %2940, align 8, !tbaa !16
  %2941 = getelementptr inbounds %struct.doublecomplex, ptr %31, i32 0, i32 1
  %2942 = load double, ptr %2941, align 8, !tbaa !19
  %2943 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  %2944 = load double, ptr %2943, align 8, !tbaa !19
  %2945 = fsub double %2942, %2944
  %2946 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  store double %2945, ptr %2946, align 8, !tbaa !19
  %2947 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %2948 = load double, ptr %2947, align 8, !tbaa !16
  %2949 = load ptr, ptr %17, align 8, !tbaa !5
  %2950 = load i32, ptr %23, align 4, !tbaa !9
  %2951 = sext i32 %2950 to i64
  %2952 = getelementptr inbounds %struct.doublecomplex, ptr %2949, i64 %2951
  %2953 = getelementptr inbounds %struct.doublecomplex, ptr %2952, i32 0, i32 0
  store double %2948, ptr %2953, align 8, !tbaa !16
  %2954 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %2955 = load double, ptr %2954, align 8, !tbaa !19
  %2956 = load ptr, ptr %17, align 8, !tbaa !5
  %2957 = load i32, ptr %23, align 4, !tbaa !9
  %2958 = sext i32 %2957 to i64
  %2959 = getelementptr inbounds %struct.doublecomplex, ptr %2956, i64 %2958
  %2960 = getelementptr inbounds %struct.doublecomplex, ptr %2959, i32 0, i32 1
  store double %2955, ptr %2960, align 8, !tbaa !19
  br label %2961

2961:                                             ; preds = %2929, %2928
  %2962 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %2962, ptr %23, align 4, !tbaa !9
  %2963 = load double, ptr %40, align 8, !tbaa !11
  store double %2963, ptr %28, align 8, !tbaa !11
  %2964 = load ptr, ptr %17, align 8, !tbaa !5
  %2965 = load i32, ptr %23, align 4, !tbaa !9
  %2966 = sext i32 %2965 to i64
  %2967 = getelementptr inbounds %struct.doublecomplex, ptr %2964, i64 %2966
  %2968 = getelementptr inbounds %struct.doublecomplex, ptr %2967, i32 0, i32 0
  %2969 = load double, ptr %2968, align 8, !tbaa !16
  store double %2969, ptr %26, align 8, !tbaa !11
  %2970 = load double, ptr %26, align 8, !tbaa !11
  %2971 = fcmp oge double %2970, 0.000000e+00
  br i1 %2971, label %2972, label %2974

2972:                                             ; preds = %2961
  %2973 = load double, ptr %26, align 8, !tbaa !11
  br label %2977

2974:                                             ; preds = %2961
  %2975 = load double, ptr %26, align 8, !tbaa !11
  %2976 = fneg double %2975
  br label %2977

2977:                                             ; preds = %2974, %2972
  %2978 = phi double [ %2973, %2972 ], [ %2976, %2974 ]
  %2979 = load ptr, ptr %17, align 8, !tbaa !5
  %2980 = load i32, ptr %43, align 4, !tbaa !9
  %2981 = sext i32 %2980 to i64
  %2982 = getelementptr inbounds %struct.doublecomplex, ptr %2979, i64 %2981
  %2983 = call { double, double } @Cd(ptr noundef %2982)
  %2984 = extractvalue { double, double } %2983, 0
  %2985 = extractvalue { double, double } %2983, 1
  store double %2985, ptr %27, align 8, !tbaa !11
  %2986 = load double, ptr %27, align 8, !tbaa !11
  %2987 = fcmp oge double %2986, 0.000000e+00
  br i1 %2987, label %2988, label %2990

2988:                                             ; preds = %2977
  %2989 = load double, ptr %27, align 8, !tbaa !11
  br label %2993

2990:                                             ; preds = %2977
  %2991 = load double, ptr %27, align 8, !tbaa !11
  %2992 = fneg double %2991
  br label %2993

2993:                                             ; preds = %2990, %2988
  %2994 = phi double [ %2989, %2988 ], [ %2992, %2990 ]
  %2995 = fadd double %2978, %2994
  store double %2995, ptr %29, align 8, !tbaa !11
  %2996 = load double, ptr %28, align 8, !tbaa !11
  %2997 = load double, ptr %29, align 8, !tbaa !11
  %2998 = fcmp oge double %2996, %2997
  br i1 %2998, label %2999, label %3001

2999:                                             ; preds = %2993
  %3000 = load double, ptr %28, align 8, !tbaa !11
  br label %3003

3001:                                             ; preds = %2993
  %3002 = load double, ptr %29, align 8, !tbaa !11
  br label %3003

3003:                                             ; preds = %3001, %2999
  %3004 = phi double [ %3000, %2999 ], [ %3002, %3001 ]
  store double %3004, ptr %40, align 8, !tbaa !11
  %3005 = load i32, ptr %35, align 4, !tbaa !9
  %3006 = add nsw i32 %3005, 1
  store i32 %3006, ptr %35, align 4, !tbaa !9
  %3007 = load i32, ptr %34, align 4, !tbaa !9
  %3008 = load i32, ptr %35, align 4, !tbaa !9
  %3009 = mul nsw i32 %3007, %3008
  %3010 = load i32, ptr %49, align 4, !tbaa !9
  %3011 = add nsw i32 %3010, %3009
  store i32 %3011, ptr %49, align 4, !tbaa !9
  br label %3012

3012:                                             ; preds = %3003
  %3013 = load i32, ptr %22, align 4, !tbaa !9
  %3014 = load i32, ptr %43, align 4, !tbaa !9
  %3015 = add nsw i32 %3014, %3013
  store i32 %3015, ptr %43, align 4, !tbaa !9
  br label %2195, !llvm.loop !33

3016:                                             ; preds = %2208
  br label %3017

3017:                                             ; preds = %3016, %2185
  br label %3018

3018:                                             ; preds = %3017, %1342
  %3019 = load double, ptr %44, align 8, !tbaa !11
  %3020 = load ptr, ptr %18, align 8, !tbaa !5
  %3021 = load double, ptr %3020, align 8, !tbaa !11
  %3022 = fdiv double %3021, %3019
  store double %3022, ptr %3020, align 8, !tbaa !11
  br label %3023

3023:                                             ; preds = %3018, %742
  %3024 = load double, ptr %44, align 8, !tbaa !11
  %3025 = fcmp une double %3024, 1.000000e+00
  br i1 %3025, label %3026, label %3032

3026:                                             ; preds = %3023
  %3027 = load double, ptr %44, align 8, !tbaa !11
  %3028 = fdiv double 1.000000e+00, %3027
  store double %3028, ptr %26, align 8, !tbaa !11
  %3029 = load ptr, ptr %15, align 8, !tbaa !5
  %3030 = load ptr, ptr %19, align 8, !tbaa !5
  %3031 = getelementptr inbounds double, ptr %3030, i64 1
  call void @dscal_(ptr noundef %3029, ptr noundef %26, ptr noundef %3031, ptr noundef @c__1)
  br label %3032

3032:                                             ; preds = %3026, %3023
  store i32 1, ptr %58, align 4
  br label %3033

3033:                                             ; preds = %3032, %135, %126
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #5
  ret void
}

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

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

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

declare double @dlamch_(ptr noundef) #2

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

declare double @dzasum_(ptr noundef, ptr noundef, ptr noundef) #2

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

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden { double, double } @Cd(ptr noundef) #3

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

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

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

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

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @zdotu_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #3

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden ptr @_pCd(ptr noundef) #3

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @zdotc_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #3

; 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 = { inlinehint 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 #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nounwind }

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

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


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

%struct.doublecomplex = type { double, double }

@.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 [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [10 x i8], align 1
@c__1 = external hidden global i32, align 4
@c_b36 = external hidden global double, align 8

; Function Attrs: nounwind uwtable
define dso_local void @zlatps_(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 nocapture noundef %9) local_unnamed_addr #0 {
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca double, align 8
  %15 = alloca %struct.doublecomplex, align 16
  %16 = alloca %struct.doublecomplex, align 16
  %17 = alloca %struct.doublecomplex, align 8
  %18 = alloca %struct.doublecomplex, align 16
  %19 = alloca double, align 8
  %20 = alloca %struct.doublecomplex, align 16
  %21 = alloca double, align 8
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %18) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #7
  %24 = getelementptr inbounds i8, ptr %8, i64 -8
  %25 = getelementptr inbounds i8, ptr %6, i64 -16
  %26 = getelementptr inbounds i8, ptr %5, i64 -16
  store i32 0, ptr %9, align 4, !tbaa !5
  %27 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #7
  %28 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #7
  %29 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.1) #7
  %.not.not.not = icmp eq i32 %27, 0
  br i1 %.not.not.not, label %30, label %32

30:                                               ; preds = %10
  %31 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #7
  %.not818 = icmp eq i32 %31, 0
  br i1 %.not818, label %.thread.sink.split, label %32

32:                                               ; preds = %30, %10
  %.not819 = icmp eq i32 %28, 0
  br i1 %.not819, label %33, label %37

33:                                               ; preds = %32
  %34 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #7
  %.not820 = icmp eq i32 %34, 0
  br i1 %.not820, label %35, label %37

35:                                               ; preds = %33
  %36 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #7
  %.not821 = icmp eq i32 %36, 0
  br i1 %.not821, label %.thread.sink.split, label %37

37:                                               ; preds = %35, %33, %32
  %.not822 = icmp eq i32 %29, 0
  br i1 %.not822, label %38, label %40

38:                                               ; preds = %37
  %39 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str) #7
  %.not823 = icmp eq i32 %39, 0
  br i1 %.not823, label %.thread.sink.split, label %40

40:                                               ; preds = %38, %37
  %41 = tail call i32 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.5) #7
  %.not824 = icmp eq i32 %41, 0
  br i1 %.not824, label %42, label %44

42:                                               ; preds = %40
  %43 = tail call i32 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.1) #7
  %.not825 = icmp eq i32 %43, 0
  br i1 %.not825, label %.thread.sink.split, label %44

44:                                               ; preds = %42, %40
  %45 = load i32, ptr %4, align 4, !tbaa !5
  %46 = icmp slt i32 %45, 0
  br i1 %46, label %.thread.sink.split, label %47

47:                                               ; preds = %44
  %.pr = load i32, ptr %9, align 4, !tbaa !5
  %.not826 = icmp eq i32 %.pr, 0
  br i1 %.not826, label %51, label %.thread

.thread.sink.split:                               ; preds = %44, %42, %38, %35, %30
  %.sink = phi i32 [ -1, %30 ], [ -2, %35 ], [ -3, %38 ], [ -4, %42 ], [ -5, %44 ]
  store i32 %.sink, ptr %9, align 4, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %47
  %48 = phi i32 [ %.pr, %47 ], [ %.sink, %.thread.sink.split ]
  %49 = sub nsw i32 0, %48
  store i32 %49, ptr %11, align 4, !tbaa !5
  %50 = call i32 @xerbla_(ptr noundef nonnull @.str.6, ptr noundef nonnull %11, i32 noundef 6) #7
  br label %999

51:                                               ; preds = %47
  %52 = icmp eq i32 %45, 0
  br i1 %52, label %999, label %53

53:                                               ; preds = %51
  %54 = tail call double @dlamch_(ptr noundef nonnull @.str.7) #7
  store double %54, ptr %22, align 8, !tbaa !9
  %55 = fdiv double 1.000000e+00, %54
  store double %55, ptr %21, align 8, !tbaa !9
  call void @dlabad_(ptr noundef nonnull %22, ptr noundef nonnull %21) #7
  %56 = call double @dlamch_(ptr noundef nonnull @.str.8) #7
  %57 = load double, ptr %22, align 8, !tbaa !9
  %58 = fdiv double %57, %56
  store double %58, ptr %22, align 8, !tbaa !9
  %59 = fdiv double 1.000000e+00, %58
  store double %59, ptr %21, align 8, !tbaa !9
  store double 1.000000e+00, ptr %7, align 8, !tbaa !9
  %60 = call i32 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.1) #7
  %.not827 = icmp eq i32 %60, 0
  br i1 %.not827, label %.loopexit879, label %61

61:                                               ; preds = %53
  %62 = load i32, ptr %4, align 4, !tbaa !5
  br i1 %.not.not.not, label %73, label %63

63:                                               ; preds = %61
  store i32 %62, ptr %11, align 4, !tbaa !5
  %.not829882 = icmp slt i32 %62, 1
  br i1 %.not829882, label %.loopexit879, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %63
  %64 = zext nneg i32 %62 to i64
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %.lr.ph
  %indvars.iv = phi i64 [ 1, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ]
  %.0739884 = phi i32 [ 1, %.lr.ph.preheader ], [ %72, %.lr.ph ]
  %65 = trunc i64 %indvars.iv to i32
  %66 = add i32 %65, -1
  store i32 %66, ptr %12, align 4, !tbaa !5
  %67 = zext nneg i32 %.0739884 to i64
  %68 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %67
  %69 = call double @dzasum_(ptr noundef nonnull %12, ptr noundef nonnull %68, ptr noundef nonnull @c__1) #7
  %70 = getelementptr inbounds double, ptr %24, i64 %indvars.iv
  store double %69, ptr %70, align 8, !tbaa !9
  %71 = trunc nuw nsw i64 %indvars.iv to i32
  %72 = add nuw nsw i32 %.0739884, %71
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %.not829.not = icmp ult i64 %indvars.iv, %64
  br i1 %.not829.not, label %.lr.ph, label %.loopexit879, !llvm.loop !11

73:                                               ; preds = %61
  %74 = add nsw i32 %62, -1
  store i32 %74, ptr %11, align 4, !tbaa !5
  %.not828885 = icmp slt i32 %62, 2
  br i1 %.not828885, label %._crit_edge, label %.lr.ph888.preheader

.lr.ph888.preheader:                              ; preds = %73
  %75 = sext i32 %74 to i64
  br label %.lr.ph888

.lr.ph888:                                        ; preds = %.lr.ph888.preheader, %.lr.ph888
  %76 = phi i32 [ %62, %.lr.ph888.preheader ], [ %82, %.lr.ph888 ]
  %indvars.iv1046 = phi i64 [ 1, %.lr.ph888.preheader ], [ %indvars.iv.next1047, %.lr.ph888 ]
  %.1740887 = phi i32 [ 1, %.lr.ph888.preheader ], [ %84, %.lr.ph888 ]
  %77 = trunc nuw nsw i64 %indvars.iv1046 to i32
  %78 = sub nsw i32 %76, %77
  store i32 %78, ptr %12, align 4, !tbaa !5
  %79 = sext i32 %.1740887 to i64
  %gep = getelementptr %struct.doublecomplex, ptr %5, i64 %79
  %80 = call double @dzasum_(ptr noundef nonnull %12, ptr noundef %gep, ptr noundef nonnull @c__1) #7
  %81 = getelementptr inbounds double, ptr %24, i64 %indvars.iv1046
  store double %80, ptr %81, align 8, !tbaa !9
  %82 = load i32, ptr %4, align 4, !tbaa !5
  %reass.sub = sub i32 %.1740887, %77
  %83 = add i32 %reass.sub, 1
  %84 = add i32 %83, %82
  %indvars.iv.next1047 = add nuw nsw i64 %indvars.iv1046, 1
  %.not828.not = icmp slt i64 %indvars.iv1046, %75
  br i1 %.not828.not, label %.lr.ph888, label %._crit_edge, !llvm.loop !13

._crit_edge:                                      ; preds = %.lr.ph888, %73
  %85 = phi i32 [ %62, %73 ], [ %82, %.lr.ph888 ]
  %86 = sext i32 %85 to i64
  %87 = getelementptr inbounds double, ptr %24, i64 %86
  store double 0.000000e+00, ptr %87, align 8, !tbaa !9
  br label %.loopexit879

.loopexit879:                                     ; preds = %.lr.ph, %63, %._crit_edge, %53
  %88 = call i32 @idamax_(ptr noundef nonnull %4, ptr noundef %8, ptr noundef nonnull @c__1) #7
  %89 = sext i32 %88 to i64
  %90 = getelementptr inbounds double, ptr %24, i64 %89
  %91 = load double, ptr %90, align 8, !tbaa !9
  %92 = load double, ptr %21, align 8, !tbaa !9
  %93 = fmul double %92, 5.000000e-01
  %94 = fcmp ugt double %91, %93
  br i1 %94, label %96, label %95

95:                                               ; preds = %.loopexit879
  store double 1.000000e+00, ptr %19, align 8, !tbaa !9
  br label %100

96:                                               ; preds = %.loopexit879
  %97 = load double, ptr %22, align 8, !tbaa !9
  %98 = fmul double %91, %97
  %99 = fdiv double 5.000000e-01, %98
  store double %99, ptr %19, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %4, ptr noundef nonnull %19, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #7
  br label %100

100:                                              ; preds = %96, %95
  %101 = load i32, ptr %4, align 4, !tbaa !5
  %.not830889 = icmp slt i32 %101, 1
  br i1 %.not830889, label %._crit_edge894, label %.lr.ph893.preheader

.lr.ph893.preheader:                              ; preds = %100
  %102 = zext nneg i32 %101 to i64
  br label %.lr.ph893

.lr.ph893:                                        ; preds = %.lr.ph893.preheader, %.lr.ph893
  %indvars.iv1049 = phi i64 [ 1, %.lr.ph893.preheader ], [ %indvars.iv.next1050, %.lr.ph893 ]
  %.0766890 = phi double [ 0.000000e+00, %.lr.ph893.preheader ], [ %118, %.lr.ph893 ]
  %103 = trunc nuw nsw i64 %indvars.iv1049 to i32
  store i32 %103, ptr %12, align 4, !tbaa !5
  %104 = getelementptr inbounds %struct.doublecomplex, ptr %25, i64 %indvars.iv1049
  %105 = load double, ptr %104, align 8, !tbaa !14
  %106 = fmul double %105, 5.000000e-01
  store double %106, ptr %14, align 8, !tbaa !9
  %107 = call { double, double } @Cd(ptr noundef nonnull %104)
  %108 = extractvalue { double, double } %107, 1
  %109 = fmul double %108, 5.000000e-01
  %110 = insertelement <2 x double> poison, double %106, i64 0
  %111 = insertelement <2 x double> %110, double %109, i64 1
  %112 = fcmp oge <2 x double> %111, zeroinitializer
  %113 = fneg <2 x double> %111
  %114 = select <2 x i1> %112, <2 x double> %111, <2 x double> %113
  %shift = shufflevector <2 x double> %114, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %115 = fadd <2 x double> %114, %shift
  %116 = extractelement <2 x double> %115, i64 0
  %117 = fcmp oge double %.0766890, %116
  %118 = select i1 %117, double %.0766890, double %116
  %indvars.iv.next1050 = add nuw nsw i64 %indvars.iv1049, 1
  %.not830.not = icmp ult i64 %indvars.iv1049, %102
  br i1 %.not830.not, label %.lr.ph893, label %._crit_edge894, !llvm.loop !16

._crit_edge894:                                   ; preds = %.lr.ph893, %100
  %.0766.lcssa = phi double [ 0.000000e+00, %100 ], [ %118, %.lr.ph893 ]
  %119 = load i32, ptr %4, align 4, !tbaa !5
  %120 = load double, ptr %19, align 8, !tbaa !9
  %121 = fcmp une double %120, 1.000000e+00
  br i1 %.not819, label %193, label %122

122:                                              ; preds = %._crit_edge894
  %. = select i1 %.not.not.not, i32 1, i32 -1
  %.1132 = select i1 %.not.not.not, i32 %119, i32 1
  %.1133 = select i1 %.not.not.not, i32 1, i32 %119
  br i1 %121, label %.loopexit875, label %123

123:                                              ; preds = %122
  %124 = load double, ptr %22, align 8
  %125 = fcmp oge double %.0766.lcssa, %124
  %126 = select i1 %125, double %.0766.lcssa, double %124
  %127 = fdiv double 5.000000e-01, %126
  br i1 %.not822, label %176, label %128

128:                                              ; preds = %123
  store i32 %., ptr %12, align 4, !tbaa !5
  %129 = icmp sge i32 %.1133, %.1132
  %130 = icmp sle i32 %.1133, %.1132
  %.in836895 = select i1 %.not.not.not, i1 %130, i1 %129
  br i1 %.in836895, label %.lr.ph902, label %.loopexit875

.lr.ph902:                                        ; preds = %128
  %131 = add nsw i32 %.1133, 1
  %132 = mul nsw i32 %131, %.1133
  %133 = sdiv i32 %132, 2
  %134 = zext i32 %119 to i64
  br label %135

135:                                              ; preds = %.lr.ph902, %160
  %136 = phi double [ %124, %.lr.ph902 ], [ %152, %160 ]
  %indvars.iv1052 = phi i64 [ %134, %.lr.ph902 ], [ %indvars.iv.next1053, %160 ]
  %.2741900 = phi i32 [ %133, %.lr.ph902 ], [ %170, %160 ]
  %.3748899 = phi i32 [ %.1133, %.lr.ph902 ], [ %172, %160 ]
  %.0760898 = phi double [ %127, %.lr.ph902 ], [ %.1761, %160 ]
  %.0776897 = phi double [ %127, %.lr.ph902 ], [ %.1777, %160 ]
  %137 = fcmp ugt double %.0760898, %136
  br i1 %137, label %138, label %.loopexit875

138:                                              ; preds = %135
  store i32 %.2741900, ptr %13, align 4, !tbaa !5
  %139 = sext i32 %.2741900 to i64
  %140 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %139
  %141 = load <2 x double>, ptr %140, align 8, !tbaa !9
  store <2 x double> %141, ptr %18, align 16, !tbaa !9
  %142 = extractelement <2 x double> %141, i64 0
  store double %142, ptr %14, align 8, !tbaa !9
  %143 = fcmp oge double %142, 0.000000e+00
  %144 = fneg double %142
  %145 = select i1 %143, double %142, double %144
  %146 = call { double, double } @Cd(ptr noundef nonnull %18)
  %147 = extractvalue { double, double } %146, 1
  %148 = fcmp oge double %147, 0.000000e+00
  %149 = fneg double %147
  %150 = select i1 %148, double %147, double %149
  %151 = fadd double %145, %150
  %152 = load double, ptr %22, align 8, !tbaa !9
  %153 = fcmp ult double %151, %152
  br i1 %153, label %160, label %154

154:                                              ; preds = %138
  store double %.0776897, ptr %14, align 8, !tbaa !9
  %155 = fcmp oge double %151, 1.000000e+00
  %156 = select i1 %155, double 1.000000e+00, double %151
  %157 = fmul double %.0760898, %156
  %158 = fcmp ole double %.0776897, %157
  %159 = select i1 %158, double %.0776897, double %157
  br label %160

160:                                              ; preds = %138, %154
  %.1777 = phi double [ %159, %154 ], [ 0.000000e+00, %138 ]
  %161 = sext i32 %.3748899 to i64
  %162 = getelementptr inbounds double, ptr %24, i64 %161
  %163 = load double, ptr %162, align 8, !tbaa !9
  %164 = fadd double %151, %163
  %165 = fcmp ult double %164, %152
  %166 = fdiv double %151, %164
  %167 = fmul double %.0760898, %166
  %.1761 = select i1 %165, double 0.000000e+00, double %167
  %168 = trunc i64 %indvars.iv1052 to i32
  %169 = mul i32 %., %168
  %170 = add nsw i32 %.2741900, %169
  %indvars.iv.next1053 = add i64 %indvars.iv1052, -1
  %171 = load i32, ptr %12, align 4, !tbaa !5
  %172 = add nsw i32 %171, %.3748899
  %173 = icmp slt i32 %171, 0
  %174 = icmp sge i32 %172, %.1132
  %175 = icmp sle i32 %172, %.1132
  %.in836 = select i1 %173, i1 %174, i1 %175
  br i1 %.in836, label %135, label %.loopexit875, !llvm.loop !17

176:                                              ; preds = %123
  %177 = fcmp oge double %127, 1.000000e+00
  %178 = select i1 %177, double 1.000000e+00, double %127
  store i32 %.1132, ptr %12, align 4, !tbaa !5
  %179 = icmp sge i32 %.1133, %.1132
  %180 = icmp sle i32 %.1133, %.1132
  %.in835906 = select i1 %.not.not.not, i1 %180, i1 %179
  %181 = fcmp ugt double %178, %124
  %or.cond854907 = select i1 %.in835906, i1 %181, i1 false
  br i1 %or.cond854907, label %.lr.ph911.preheader, label %.loopexit875

.lr.ph911.preheader:                              ; preds = %176
  %182 = sext i32 %.1133 to i64
  %183 = sext i32 %. to i64
  %184 = sext i32 %.1132 to i64
  br label %.lr.ph911

.lr.ph911:                                        ; preds = %.lr.ph911.preheader, %.lr.ph911
  %indvars.iv1055 = phi i64 [ %182, %.lr.ph911.preheader ], [ %indvars.iv.next1056, %.lr.ph911 ]
  %.2762908 = phi double [ %178, %.lr.ph911.preheader ], [ %189, %.lr.ph911 ]
  %185 = getelementptr inbounds double, ptr %24, i64 %indvars.iv1055
  %186 = load double, ptr %185, align 8, !tbaa !9
  %187 = fadd double %186, 1.000000e+00
  %188 = fdiv double 1.000000e+00, %187
  %189 = fmul double %.2762908, %188
  %indvars.iv.next1056 = add nsw i64 %indvars.iv1055, %183
  %190 = icmp sge i64 %indvars.iv.next1056, %184
  %191 = icmp sle i64 %indvars.iv.next1056, %184
  %.in835 = select i1 %.not.not.not, i1 %191, i1 %190
  %192 = fcmp ugt double %189, %124
  %or.cond854 = select i1 %.in835, i1 %192, i1 false
  br i1 %or.cond854, label %.lr.ph911, label %.loopexit875, !llvm.loop !18

193:                                              ; preds = %._crit_edge894
  %.1134 = select i1 %.not.not.not, i32 -1, i32 1
  %.1135 = select i1 %.not.not.not, i32 1, i32 %119
  %.1136 = select i1 %.not.not.not, i32 %119, i32 1
  br i1 %121, label %.loopexit875, label %194

194:                                              ; preds = %193
  %195 = load double, ptr %22, align 8
  %196 = fcmp oge double %.0766.lcssa, %195
  %197 = select i1 %196, double %.0766.lcssa, double %195
  %198 = fdiv double 5.000000e-01, %197
  br i1 %.not822, label %247, label %199

199:                                              ; preds = %194
  store i32 %.1135, ptr %11, align 4, !tbaa !5
  store i32 %.1134, ptr %12, align 4, !tbaa !5
  %200 = icmp sge i32 %.1136, %.1135
  %201 = icmp sle i32 %.1136, %.1135
  %.in833913 = select i1 %.not.not.not, i1 %200, i1 %201
  br i1 %.in833913, label %.lr.ph920, label %._crit_edge921

.lr.ph920:                                        ; preds = %199
  %202 = add nsw i32 %.1136, 1
  %203 = mul nsw i32 %202, %.1136
  %204 = sdiv i32 %203, 2
  br label %205

205:                                              ; preds = %.lr.ph920, %236
  %206 = phi double [ %195, %.lr.ph920 ], [ %229, %236 ]
  %indvars.iv1058 = phi i64 [ 1, %.lr.ph920 ], [ %indvars.iv.next1059, %236 ]
  %.3918 = phi i32 [ %204, %.lr.ph920 ], [ %239, %236 ]
  %.5750917 = phi i32 [ %.1136, %.lr.ph920 ], [ %241, %236 ]
  %.3763916 = phi double [ %198, %.lr.ph920 ], [ %215, %236 ]
  %.2778915 = phi double [ %198, %.lr.ph920 ], [ %.3779, %236 ]
  %207 = fcmp ugt double %.3763916, %206
  br i1 %207, label %208, label %.loopexit875

208:                                              ; preds = %205
  %209 = sext i32 %.5750917 to i64
  %210 = getelementptr inbounds double, ptr %24, i64 %209
  %211 = load double, ptr %210, align 8, !tbaa !9
  %212 = fadd double %211, 1.000000e+00
  %213 = fdiv double %.2778915, %212
  %214 = fcmp ole double %.3763916, %213
  %215 = select i1 %214, double %.3763916, double %213
  store i32 %.3918, ptr %13, align 4, !tbaa !5
  %216 = sext i32 %.3918 to i64
  %217 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %216
  %218 = load <2 x double>, ptr %217, align 8, !tbaa !9
  store <2 x double> %218, ptr %18, align 16, !tbaa !9
  %219 = extractelement <2 x double> %218, i64 0
  store double %219, ptr %14, align 8, !tbaa !9
  %220 = fcmp oge double %219, 0.000000e+00
  %221 = fneg double %219
  %222 = select i1 %220, double %219, double %221
  %223 = call { double, double } @Cd(ptr noundef nonnull %18)
  %224 = extractvalue { double, double } %223, 1
  %225 = fcmp oge double %224, 0.000000e+00
  %226 = fneg double %224
  %227 = select i1 %225, double %224, double %226
  %228 = fadd double %222, %227
  %229 = load double, ptr %22, align 8, !tbaa !9
  %230 = fcmp ult double %228, %229
  br i1 %230, label %236, label %231

231:                                              ; preds = %208
  %232 = fcmp ogt double %212, %228
  br i1 %232, label %233, label %236

233:                                              ; preds = %231
  %234 = fdiv double %228, %212
  %235 = fmul double %.2778915, %234
  br label %236

236:                                              ; preds = %208, %231, %233
  %.3779 = phi double [ %235, %233 ], [ %.2778915, %231 ], [ 0.000000e+00, %208 ]
  %indvars.iv.next1059 = add nuw nsw i64 %indvars.iv1058, 1
  %237 = trunc i64 %indvars.iv.next1059 to i32
  %238 = mul i32 %.1134, %237
  %239 = add nsw i32 %.3918, %238
  %240 = load i32, ptr %12, align 4, !tbaa !5
  %241 = add nsw i32 %240, %.5750917
  %242 = icmp slt i32 %240, 0
  %243 = icmp sge i32 %241, %.1135
  %244 = icmp sle i32 %241, %.1135
  %.in833 = select i1 %242, i1 %243, i1 %244
  br i1 %.in833, label %205, label %._crit_edge921, !llvm.loop !19

._crit_edge921:                                   ; preds = %236, %199
  %.2778.lcssa = phi double [ %198, %199 ], [ %.3779, %236 ]
  %.3763.lcssa = phi double [ %198, %199 ], [ %215, %236 ]
  %245 = fcmp ole double %.3763.lcssa, %.2778.lcssa
  %246 = select i1 %245, double %.3763.lcssa, double %.2778.lcssa
  br label %.loopexit875

247:                                              ; preds = %194
  %248 = fcmp oge double %198, 1.000000e+00
  %249 = select i1 %248, double 1.000000e+00, double %198
  store i32 %.1135, ptr %12, align 4, !tbaa !5
  %250 = icmp sge i32 %.1136, %.1135
  %251 = icmp sle i32 %.1136, %.1135
  %.in924 = select i1 %.not.not.not, i1 %250, i1 %251
  %252 = fcmp ugt double %249, %195
  %or.cond856925 = select i1 %.in924, i1 %252, i1 false
  br i1 %or.cond856925, label %.lr.ph929.preheader, label %.loopexit875

.lr.ph929.preheader:                              ; preds = %247
  %253 = sext i32 %.1136 to i64
  %254 = sext i32 %.1134 to i64
  %255 = sext i32 %.1135 to i64
  br label %.lr.ph929

.lr.ph929:                                        ; preds = %.lr.ph929.preheader, %.lr.ph929
  %indvars.iv1061 = phi i64 [ %253, %.lr.ph929.preheader ], [ %indvars.iv.next1062, %.lr.ph929 ]
  %.4764926 = phi double [ %249, %.lr.ph929.preheader ], [ %259, %.lr.ph929 ]
  %256 = getelementptr inbounds double, ptr %24, i64 %indvars.iv1061
  %257 = load double, ptr %256, align 8, !tbaa !9
  %258 = fadd double %257, 1.000000e+00
  %259 = fdiv double %.4764926, %258
  %indvars.iv.next1062 = add nsw i64 %indvars.iv1061, %254
  %260 = icmp sge i64 %indvars.iv.next1062, %255
  %261 = icmp sle i64 %indvars.iv.next1062, %255
  %.in = select i1 %.not.not.not, i1 %260, i1 %261
  %262 = fcmp ugt double %259, %195
  %or.cond856 = select i1 %.in, i1 %262, i1 false
  br i1 %or.cond856, label %.lr.ph929, label %.loopexit875, !llvm.loop !20

.loopexit875:                                     ; preds = %135, %160, %.lr.ph911, %205, %.lr.ph929, %128, %176, %247, %193, %122, %._crit_edge921
  %263 = phi i32 [ %.1134, %._crit_edge921 ], [ %., %122 ], [ %.1134, %193 ], [ %.1134, %247 ], [ %., %176 ], [ %., %128 ], [ %.1134, %.lr.ph929 ], [ %.1134, %205 ], [ %., %.lr.ph911 ], [ %., %160 ], [ %., %135 ]
  %.5765 = phi double [ %246, %._crit_edge921 ], [ 0.000000e+00, %122 ], [ 0.000000e+00, %193 ], [ %249, %247 ], [ %178, %176 ], [ %127, %128 ], [ %259, %.lr.ph929 ], [ %.3763916, %205 ], [ %189, %.lr.ph911 ], [ %.0760898, %135 ], [ %.1777, %160 ]
  %264 = phi i32 [ %.1135, %._crit_edge921 ], [ %.1132, %122 ], [ %.1135, %193 ], [ %.1135, %247 ], [ %.1132, %176 ], [ %.1132, %128 ], [ %.1135, %.lr.ph929 ], [ %.1135, %205 ], [ %.1132, %.lr.ph911 ], [ %.1132, %160 ], [ %.1132, %135 ]
  %.2 = phi i32 [ %.1136, %._crit_edge921 ], [ %.1133, %122 ], [ %.1136, %193 ], [ %.1136, %247 ], [ %.1133, %176 ], [ %.1133, %128 ], [ %.1136, %.lr.ph929 ], [ %.1136, %205 ], [ %.1133, %.lr.ph911 ], [ %.1133, %160 ], [ %.1133, %135 ]
  %265 = load double, ptr %19, align 8, !tbaa !9
  %266 = fmul double %.5765, %265
  %267 = load double, ptr %22, align 8, !tbaa !9
  %268 = fcmp ogt double %266, %267
  br i1 %268, label %269, label %270

269:                                              ; preds = %.loopexit875
  call void @ztpsv_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %4, ptr noundef %5, ptr noundef %6, ptr noundef nonnull @c__1) #7
  %.pr868 = load double, ptr %19, align 8, !tbaa !9
  br label %994

270:                                              ; preds = %.loopexit875
  %271 = load double, ptr %21, align 8, !tbaa !9
  %272 = fmul double %271, 5.000000e-01
  %273 = fcmp ogt double %.0766.lcssa, %272
  br i1 %273, label %274, label %277

274:                                              ; preds = %270
  %275 = fdiv double %272, %.0766.lcssa
  store double %275, ptr %7, align 8, !tbaa !9
  call void @zdscal_(ptr noundef nonnull %4, ptr noundef nonnull %7, ptr noundef %6, ptr noundef nonnull @c__1) #7
  %276 = load double, ptr %21, align 8, !tbaa !9
  br label %279

277:                                              ; preds = %270
  %278 = fmul double %.0766.lcssa, 2.000000e+00
  br label %279

279:                                              ; preds = %277, %274
  %.1767 = phi double [ %276, %274 ], [ %278, %277 ]
  br i1 %.not819, label %466, label %280

280:                                              ; preds = %279
  store i32 %263, ptr %12, align 4, !tbaa !5
  %281 = icmp slt i32 %263, 0
  %282 = icmp sge i32 %.2, %264
  %283 = icmp sle i32 %.2, %264
  %.in850939 = select i1 %281, i1 %282, i1 %283
  br i1 %.in850939, label %.lr.ph945, label %.loopexit870

.lr.ph945:                                        ; preds = %280
  %284 = add nsw i32 %.2, 1
  %285 = mul nsw i32 %284, %.2
  %286 = sdiv i32 %285, 2
  %287 = getelementptr inbounds i8, ptr %15, i64 8
  %288 = getelementptr inbounds i8, ptr %18, i64 8
  br label %289

289:                                              ; preds = %.lr.ph945, %460
  %.4943 = phi i32 [ %286, %.lr.ph945 ], [ %.5, %460 ]
  %.7752941 = phi i32 [ %.2, %.lr.ph945 ], [ %462, %460 ]
  %.2768940 = phi double [ %.1767, %.lr.ph945 ], [ %.8774, %460 ]
  store i32 %.7752941, ptr %13, align 4, !tbaa !5
  %290 = sext i32 %.7752941 to i64
  %291 = getelementptr inbounds %struct.doublecomplex, ptr %25, i64 %290
  %292 = load double, ptr %291, align 8, !tbaa !14
  %293 = fcmp oge double %292, 0.000000e+00
  %294 = fneg double %292
  %295 = select i1 %293, double %292, double %294
  %296 = call { double, double } @Cd(ptr noundef nonnull %291)
  %297 = extractvalue { double, double } %296, 1
  %298 = fcmp oge double %297, 0.000000e+00
  %299 = fneg double %297
  %300 = select i1 %298, double %297, double %299
  %301 = fadd double %295, %300
  br i1 %.not822, label %311, label %302

302:                                              ; preds = %289
  store i32 %.4943, ptr %13, align 4, !tbaa !5
  %303 = load double, ptr %19, align 8, !tbaa !9
  %304 = sext i32 %.4943 to i64
  %305 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %304
  %306 = load <2 x double>, ptr %305, align 8, !tbaa !9
  %307 = insertelement <2 x double> poison, double %303, i64 0
  %308 = shufflevector <2 x double> %307, <2 x double> poison, <2 x i32> zeroinitializer
  %309 = fmul <2 x double> %308, %306
  store <2 x double> %309, ptr %15, align 16, !tbaa !9
  store <2 x double> %309, ptr %18, align 16, !tbaa !9
  %310 = extractelement <2 x double> %309, i64 0
  br label %314

311:                                              ; preds = %289
  %312 = load double, ptr %19, align 8, !tbaa !9
  store double %312, ptr %18, align 16, !tbaa !14
  store double 0.000000e+00, ptr %288, align 8, !tbaa !21
  %313 = fcmp oeq double %312, 1.000000e+00
  br i1 %313, label %376, label %314

314:                                              ; preds = %311, %302
  %315 = phi double [ %312, %311 ], [ %310, %302 ]
  %316 = call { double, double } @Cd(ptr noundef nonnull %18)
  %317 = extractvalue { double, double } %316, 1
  %318 = insertelement <2 x double> poison, double %315, i64 0
  %319 = insertelement <2 x double> %318, double %317, i64 1
  %320 = fcmp oge <2 x double> %319, zeroinitializer
  %321 = fneg <2 x double> %319
  %322 = select <2 x i1> %320, <2 x double> %319, <2 x double> %321
  %shift1184 = shufflevector <2 x double> %322, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %323 = fadd <2 x double> %322, %shift1184
  %324 = extractelement <2 x double> %323, i64 0
  %325 = load double, ptr %22, align 8, !tbaa !9
  %326 = fcmp ogt double %324, %325
  br i1 %326, label %327, label %340

327:                                              ; preds = %314
  %328 = fcmp olt double %324, 1.000000e+00
  br i1 %328, label %329, label %339

329:                                              ; preds = %327
  %330 = load double, ptr %21, align 8, !tbaa !9
  %331 = fmul double %324, %330
  %332 = fcmp ogt double %301, %331
  br i1 %332, label %333, label %339

333:                                              ; preds = %329
  %334 = fdiv double 1.000000e+00, %301
  store double %334, ptr %23, align 8, !tbaa !9
  call void @zdscal_(ptr noundef nonnull %4, ptr noundef nonnull %23, ptr noundef nonnull %6, ptr noundef nonnull @c__1) #7
  %335 = load double, ptr %23, align 8, !tbaa !9
  %336 = load double, ptr %7, align 8, !tbaa !9
  %337 = fmul double %335, %336
  store double %337, ptr %7, align 8, !tbaa !9
  %338 = fmul double %.2768940, %335
  br label %339

339:                                              ; preds = %329, %333, %327
  %.3769 = phi double [ %338, %333 ], [ %.2768940, %329 ], [ %.2768940, %327 ]
  store i32 %.7752941, ptr %13, align 4, !tbaa !5
  call void @zladiv_(ptr noundef nonnull %15, ptr noundef nonnull %291, ptr noundef nonnull %18) #7
  br label %.sink.split

340:                                              ; preds = %314
  %341 = fcmp ogt double %324, 0.000000e+00
  br i1 %341, label %342, label %359

342:                                              ; preds = %340
  %343 = load double, ptr %21, align 8, !tbaa !9
  %344 = fmul double %324, %343
  %345 = fcmp ogt double %301, %344
  br i1 %345, label %346, label %358

346:                                              ; preds = %342
  %347 = fdiv double %344, %301
  store double %347, ptr %23, align 8, !tbaa !9
  %348 = getelementptr inbounds double, ptr %24, i64 %290
  %349 = load double, ptr %348, align 8, !tbaa !9
  %350 = fcmp ogt double %349, 1.000000e+00
  br i1 %350, label %351, label %353

351:                                              ; preds = %346
  %352 = fdiv double %347, %349
  store double %352, ptr %23, align 8, !tbaa !9
  br label %353

353:                                              ; preds = %351, %346
  call void @zdscal_(ptr noundef nonnull %4, ptr noundef nonnull %23, ptr noundef nonnull %6, ptr noundef nonnull @c__1) #7
  %354 = load double, ptr %23, align 8, !tbaa !9
  %355 = load double, ptr %7, align 8, !tbaa !9
  %356 = fmul double %354, %355
  store double %356, ptr %7, align 8, !tbaa !9
  %357 = fmul double %.2768940, %354
  br label %358

358:                                              ; preds = %353, %342
  %.4770 = phi double [ %357, %353 ], [ %.2768940, %342 ]
  store i32 %.7752941, ptr %13, align 4, !tbaa !5
  call void @zladiv_(ptr noundef nonnull %15, ptr noundef nonnull %291, ptr noundef nonnull %18) #7
  br label %.sink.split

359:                                              ; preds = %340
  %360 = load i32, ptr %4, align 4, !tbaa !5
  %.not852931 = icmp slt i32 %360, 1
  br i1 %.not852931, label %.thread862, label %.lr.ph934.preheader

.lr.ph934.preheader:                              ; preds = %359
  %361 = zext nneg i32 %360 to i64
  %362 = shl nuw nsw i64 %361, 4
  call void @llvm.memset.p0.i64(ptr nonnull align 8 %6, i8 0, i64 %362, i1 false), !tbaa !9
  br label %.thread862

.thread862:                                       ; preds = %.lr.ph934.preheader, %359
  store i32 %.7752941, ptr %13, align 4, !tbaa !5
  store <2 x double> <double 1.000000e+00, double 0.000000e+00>, ptr %291, align 8, !tbaa !9
  store double 0.000000e+00, ptr %7, align 8, !tbaa !9
  br label %391

.sink.split:                                      ; preds = %358, %339
  %.5771.ph = phi double [ %.4770, %358 ], [ %.3769, %339 ]
  %.sink1180 = load double, ptr %15, align 16, !tbaa !14
  %.sink1183 = load i32, ptr %13, align 4, !tbaa !5
  %363 = sext i32 %.sink1183 to i64
  %364 = getelementptr inbounds %struct.doublecomplex, ptr %25, i64 %363
  store double %.sink1180, ptr %364, align 8, !tbaa !14
  %365 = load double, ptr %287, align 8, !tbaa !21
  %366 = getelementptr inbounds %struct.doublecomplex, ptr %25, i64 %363, i32 1
  store double %365, ptr %366, align 8, !tbaa !21
  store i32 %.7752941, ptr %13, align 4, !tbaa !5
  %storemerge1153 = load double, ptr %291, align 8, !tbaa !14
  store double %storemerge1153, ptr %14, align 8, !tbaa !9
  %367 = call { double, double } @Cd(ptr noundef nonnull %291)
  %368 = extractvalue { double, double } %367, 1
  %369 = insertelement <2 x double> poison, double %storemerge1153, i64 0
  %370 = insertelement <2 x double> %369, double %368, i64 1
  %371 = fcmp oge <2 x double> %370, zeroinitializer
  %372 = fneg <2 x double> %370
  %373 = select <2 x i1> %371, <2 x double> %370, <2 x double> %372
  %shift1185 = shufflevector <2 x double> %373, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %374 = fadd <2 x double> %373, %shift1185
  %375 = extractelement <2 x double> %374, i64 0
  br label %376

376:                                              ; preds = %.sink.split, %311
  %.5771 = phi double [ %.2768940, %311 ], [ %.5771.ph, %.sink.split ]
  %.0738 = phi double [ %301, %311 ], [ %375, %.sink.split ]
  %377 = fcmp ogt double %.0738, 1.000000e+00
  br i1 %377, label %378, label %391

378:                                              ; preds = %376
  %379 = fdiv double 1.000000e+00, %.0738
  store double %379, ptr %23, align 8, !tbaa !9
  %380 = getelementptr inbounds double, ptr %24, i64 %290
  %381 = load double, ptr %380, align 8, !tbaa !9
  %382 = load double, ptr %21, align 8, !tbaa !9
  %383 = fsub double %382, %.5771
  %384 = fmul double %379, %383
  %385 = fcmp ogt double %381, %384
  br i1 %385, label %386, label %401

386:                                              ; preds = %378
  %387 = fmul double %379, 5.000000e-01
  store double %387, ptr %23, align 8, !tbaa !9
  call void @zdscal_(ptr noundef nonnull %4, ptr noundef nonnull %23, ptr noundef nonnull %6, ptr noundef nonnull @c__1) #7
  %388 = load double, ptr %23, align 8, !tbaa !9
  %389 = load double, ptr %7, align 8, !tbaa !9
  %390 = fmul double %388, %389
  br label %.sink.split1150

391:                                              ; preds = %.thread862, %376
  %.0738867 = phi double [ 1.000000e+00, %.thread862 ], [ %.0738, %376 ]
  %.5771866 = phi double [ 0.000000e+00, %.thread862 ], [ %.5771, %376 ]
  %392 = getelementptr inbounds double, ptr %24, i64 %290
  %393 = load double, ptr %392, align 8, !tbaa !9
  %394 = fmul double %.0738867, %393
  %395 = load double, ptr %21, align 8, !tbaa !9
  %396 = fsub double %395, %.5771866
  %397 = fcmp ogt double %394, %396
  br i1 %397, label %398, label %401

398:                                              ; preds = %391
  call void @zdscal_(ptr noundef nonnull %4, ptr noundef nonnull @c_b36, ptr noundef nonnull %6, ptr noundef nonnull @c__1) #7
  %399 = load double, ptr %7, align 8, !tbaa !9
  %400 = fmul double %399, 5.000000e-01
  br label %.sink.split1150

.sink.split1150:                                  ; preds = %386, %398
  %.sink1151 = phi double [ %400, %398 ], [ %390, %386 ]
  %.5771865.ph = phi double [ %.5771866, %398 ], [ %.5771, %386 ]
  store double %.sink1151, ptr %7, align 8, !tbaa !9
  br label %401

401:                                              ; preds = %.sink.split1150, %391, %378
  %.5771865 = phi double [ %.5771866, %391 ], [ %.5771, %378 ], [ %.5771865.ph, %.sink.split1150 ]
  br i1 %.not.not.not, label %427, label %402

402:                                              ; preds = %401
  %403 = icmp sgt i32 %.7752941, 1
  br i1 %403, label %404, label %._crit_edge1093

._crit_edge1093:                                  ; preds = %402
  %.pre1094 = sub nsw i32 %.4943, %.7752941
  br label %460

404:                                              ; preds = %402
  %405 = add nsw i32 %.7752941, -1
  store i32 %405, ptr %13, align 4, !tbaa !5
  %406 = load <2 x double>, ptr %291, align 8, !tbaa !9
  %407 = fneg <2 x double> %406
  store <2 x double> %407, ptr %16, align 16, !tbaa !9
  %408 = load double, ptr %19, align 8, !tbaa !9
  %409 = insertelement <2 x double> poison, double %408, i64 0
  %410 = shufflevector <2 x double> %409, <2 x double> poison, <2 x i32> zeroinitializer
  %411 = fmul <2 x double> %410, %407
  store <2 x double> %411, ptr %15, align 16, !tbaa !9
  %412 = sub nsw i32 %.4943, %.7752941
  %413 = sext i32 %412 to i64
  %gep936 = getelementptr %struct.doublecomplex, ptr %5, i64 %413
  call void @zaxpy_(ptr noundef nonnull %13, ptr noundef nonnull %15, ptr noundef %gep936, ptr noundef nonnull @c__1, ptr noundef nonnull %6, ptr noundef nonnull @c__1) #7
  store i32 %405, ptr %13, align 4, !tbaa !5
  %414 = call i32 @izamax_(ptr noundef nonnull %13, ptr noundef nonnull %6, ptr noundef nonnull @c__1) #7
  store i32 %414, ptr %13, align 4, !tbaa !5
  %415 = sext i32 %414 to i64
  %416 = getelementptr inbounds %struct.doublecomplex, ptr %25, i64 %415
  %417 = load double, ptr %416, align 8, !tbaa !14
  store double %417, ptr %14, align 8, !tbaa !9
  %418 = call { double, double } @Cd(ptr noundef nonnull %416)
  %419 = extractvalue { double, double } %418, 1
  %420 = insertelement <2 x double> poison, double %417, i64 0
  %421 = insertelement <2 x double> %420, double %419, i64 1
  %422 = fcmp oge <2 x double> %421, zeroinitializer
  %423 = fneg <2 x double> %421
  %424 = select <2 x i1> %422, <2 x double> %421, <2 x double> %423
  %shift1186 = shufflevector <2 x double> %424, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %425 = fadd <2 x double> %424, %shift1186
  %426 = extractelement <2 x double> %425, i64 0
  br label %460

427:                                              ; preds = %401
  %428 = load i32, ptr %4, align 4, !tbaa !5
  %429 = icmp slt i32 %.7752941, %428
  br i1 %429, label %430, label %456

430:                                              ; preds = %427
  %431 = sub nsw i32 %428, %.7752941
  store i32 %431, ptr %13, align 4, !tbaa !5
  %432 = load <2 x double>, ptr %291, align 8, !tbaa !9
  %433 = fneg <2 x double> %432
  store <2 x double> %433, ptr %16, align 16, !tbaa !9
  %434 = load double, ptr %19, align 8, !tbaa !9
  %435 = insertelement <2 x double> poison, double %434, i64 0
  %436 = shufflevector <2 x double> %435, <2 x double> poison, <2 x i32> zeroinitializer
  %437 = fmul <2 x double> %436, %433
  store <2 x double> %437, ptr %15, align 16, !tbaa !9
  %438 = sext i32 %.4943 to i64
  %gep938 = getelementptr %struct.doublecomplex, ptr %5, i64 %438
  %439 = getelementptr i8, ptr %291, i64 16
  call void @zaxpy_(ptr noundef nonnull %13, ptr noundef nonnull %15, ptr noundef %gep938, ptr noundef nonnull @c__1, ptr noundef %439, ptr noundef nonnull @c__1) #7
  %440 = load i32, ptr %4, align 4, !tbaa !5
  %441 = sub nsw i32 %440, %.7752941
  store i32 %441, ptr %13, align 4, !tbaa !5
  %442 = call i32 @izamax_(ptr noundef nonnull %13, ptr noundef %439, ptr noundef nonnull @c__1) #7
  %443 = add nsw i32 %442, %.7752941
  store i32 %443, ptr %13, align 4, !tbaa !5
  %444 = sext i32 %443 to i64
  %445 = getelementptr inbounds %struct.doublecomplex, ptr %25, i64 %444
  %446 = load double, ptr %445, align 8, !tbaa !14
  store double %446, ptr %14, align 8, !tbaa !9
  %447 = call { double, double } @Cd(ptr noundef nonnull %445)
  %448 = extractvalue { double, double } %447, 1
  %449 = insertelement <2 x double> poison, double %446, i64 0
  %450 = insertelement <2 x double> %449, double %448, i64 1
  %451 = fcmp oge <2 x double> %450, zeroinitializer
  %452 = fneg <2 x double> %450
  %453 = select <2 x i1> %451, <2 x double> %450, <2 x double> %452
  %shift1187 = shufflevector <2 x double> %453, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %454 = fadd <2 x double> %453, %shift1187
  %455 = extractelement <2 x double> %454, i64 0
  %.pre = load i32, ptr %4, align 4, !tbaa !5
  br label %456

456:                                              ; preds = %430, %427
  %457 = phi i32 [ %.pre, %430 ], [ %428, %427 ]
  %.7773 = phi double [ %455, %430 ], [ %.5771865, %427 ]
  %reass.sub1022 = sub i32 %.4943, %.7752941
  %458 = add i32 %reass.sub1022, 1
  %459 = add i32 %458, %457
  br label %460

460:                                              ; preds = %404, %._crit_edge1093, %456
  %.8774 = phi double [ %.7773, %456 ], [ %.5771865, %._crit_edge1093 ], [ %426, %404 ]
  %.5 = phi i32 [ %459, %456 ], [ %.pre1094, %._crit_edge1093 ], [ %412, %404 ]
  %461 = load i32, ptr %12, align 4, !tbaa !5
  %462 = add nsw i32 %461, %.7752941
  %463 = icmp slt i32 %461, 0
  %464 = icmp sge i32 %462, %264
  %465 = icmp sle i32 %462, %264
  %.in850 = select i1 %463, i1 %464, i1 %465
  br i1 %.in850, label %289, label %.loopexit870, !llvm.loop !22

466:                                              ; preds = %279
  %467 = call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #7
  %.not837 = icmp eq i32 %467, 0
  %468 = icmp slt i32 %263, 0
  %469 = icmp sge i32 %.2, %264
  %470 = icmp sle i32 %.2, %264
  %.in8381013 = select i1 %468, i1 %469, i1 %470
  br i1 %.not837, label %713, label %471

471:                                              ; preds = %466
  store i32 %264, ptr %12, align 4, !tbaa !5
  store i32 %263, ptr %11, align 4, !tbaa !5
  br i1 %.in8381013, label %.lr.ph987, label %.loopexit870

.lr.ph987:                                        ; preds = %471
  %472 = add nsw i32 %.2, 1
  %473 = mul nsw i32 %472, %.2
  %474 = sdiv i32 %473, 2
  %475 = getelementptr inbounds i8, ptr %20, i64 8
  %476 = getelementptr inbounds i8, ptr %15, i64 8
  %477 = getelementptr inbounds i8, ptr %18, i64 8
  br label %478

478:                                              ; preds = %.lr.ph987, %693
  %indvars.iv1078 = phi i64 [ 1, %.lr.ph987 ], [ %indvars.iv.next1079, %693 ]
  %.6983 = phi i32 [ %474, %.lr.ph987 ], [ %708, %693 ]
  %.8981 = phi i32 [ %.2, %.lr.ph987 ], [ %709, %693 ]
  %.9775980 = phi double [ %.1767, %.lr.ph987 ], [ %705, %693 ]
  store i32 %.8981, ptr %13, align 4, !tbaa !5
  %479 = sext i32 %.8981 to i64
  %480 = getelementptr inbounds %struct.doublecomplex, ptr %25, i64 %479
  %481 = load double, ptr %480, align 8, !tbaa !14
  store double %481, ptr %14, align 8, !tbaa !9
  %482 = call { double, double } @Cd(ptr noundef nonnull %480)
  %483 = extractvalue { double, double } %482, 1
  %484 = insertelement <2 x double> poison, double %481, i64 0
  %485 = insertelement <2 x double> %484, double %483, i64 1
  %486 = fcmp oge <2 x double> %485, zeroinitializer
  %487 = fneg <2 x double> %485
  %488 = select <2 x i1> %486, <2 x double> %485, <2 x double> %487
  %shift1188 = shufflevector <2 x double> %488, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %489 = fadd <2 x double> %488, %shift1188
  %490 = extractelement <2 x double> %489, i64 0
  %491 = load double, ptr %19, align 8, !tbaa !9
  store double %491, ptr %20, align 16, !tbaa !14
  store double 0.000000e+00, ptr %475, align 8, !tbaa !21
  %492 = fcmp oge double %.9775980, 1.000000e+00
  %493 = select i1 %492, double %.9775980, double 1.000000e+00
  %494 = fdiv double 1.000000e+00, %493
  store double %494, ptr %23, align 8, !tbaa !9
  %495 = getelementptr inbounds double, ptr %24, i64 %479
  %496 = load double, ptr %495, align 8, !tbaa !9
  %497 = load double, ptr %21, align 8, !tbaa !9
  %498 = fsub double %497, %490
  %499 = fmul double %494, %498
  %500 = fcmp ogt double %496, %499
  br i1 %500, label %501, label %537

501:                                              ; preds = %478
  %502 = fmul double %494, 5.000000e-01
  store double %502, ptr %23, align 8, !tbaa !9
  %503 = insertelement <2 x double> <double poison, double 0.000000e+00>, double %491, i64 0
  br i1 %.not822, label %510, label %504

504:                                              ; preds = %501
  store i32 %.6983, ptr %13, align 4, !tbaa !5
  %505 = sext i32 %.6983 to i64
  %506 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %505
  %507 = load <2 x double>, ptr %506, align 8, !tbaa !9
  %508 = shufflevector <2 x double> %503, <2 x double> poison, <2 x i32> zeroinitializer
  %509 = fmul <2 x double> %508, %507
  store <2 x double> %509, ptr %15, align 16, !tbaa !9
  br label %510

510:                                              ; preds = %501, %504
  %511 = phi <2 x double> [ %509, %504 ], [ %503, %501 ]
  store <2 x double> %511, ptr %18, align 16, !tbaa !9
  %512 = extractelement <2 x double> %511, i64 0
  %513 = fcmp oge double %512, 0.000000e+00
  %514 = fneg double %512
  %515 = select i1 %513, double %512, double %514
  %516 = call { double, double } @Cd(ptr noundef nonnull %18)
  %517 = extractvalue { double, double } %516, 1
  %518 = fcmp oge double %517, 0.000000e+00
  %519 = fneg double %517
  %520 = select i1 %518, double %517, double %519
  %521 = fadd double %515, %520
  %522 = fcmp ogt double %521, 1.000000e+00
  br i1 %522, label %523, label %529

523:                                              ; preds = %510
  store double 1.000000e+00, ptr %14, align 8, !tbaa !9
  %524 = load double, ptr %23, align 8, !tbaa !9
  %525 = fmul double %521, %524
  %526 = fcmp oge double %525, 1.000000e+00
  %527 = select i1 %526, double 1.000000e+00, double %525
  store double %527, ptr %23, align 8, !tbaa !9
  call void @zladiv_(ptr noundef nonnull %15, ptr noundef nonnull %20, ptr noundef nonnull %18) #7
  %528 = load <2 x double>, ptr %15, align 16, !tbaa !9
  store <2 x double> %528, ptr %20, align 16, !tbaa !9
  br label %529

529:                                              ; preds = %523, %510
  %530 = load double, ptr %23, align 8, !tbaa !9
  %531 = fcmp olt double %530, 1.000000e+00
  br i1 %531, label %532, label %537

532:                                              ; preds = %529
  call void @zdscal_(ptr noundef nonnull %4, ptr noundef nonnull %23, ptr noundef nonnull %6, ptr noundef nonnull @c__1) #7
  %533 = load double, ptr %23, align 8, !tbaa !9
  %534 = load double, ptr %7, align 8, !tbaa !9
  %535 = fmul double %533, %534
  store double %535, ptr %7, align 8, !tbaa !9
  %536 = fmul double %.9775980, %533
  br label %537

537:                                              ; preds = %529, %532, %478
  %.10 = phi double [ %536, %532 ], [ %.9775980, %529 ], [ %.9775980, %478 ]
  %538 = load double, ptr %20, align 16, !tbaa !14
  %539 = fcmp oeq double %538, 1.000000e+00
  %540 = load double, ptr %475, align 8
  %541 = fcmp oeq double %540, 0.000000e+00
  %or.cond = select i1 %539, i1 %541, i1 false
  br i1 %or.cond, label %542, label %556

542:                                              ; preds = %537
  br i1 %.not.not.not, label %548, label %543

543:                                              ; preds = %542
  %544 = add nsw i32 %.8981, -1
  store i32 %544, ptr %13, align 4, !tbaa !5
  %545 = sub nsw i32 %.6983, %.8981
  %546 = sext i32 %545 to i64
  %gep975 = getelementptr %struct.doublecomplex, ptr %5, i64 %546
  call void @zdotu_(ptr noundef nonnull %15, ptr noundef nonnull %13, ptr noundef %gep975, ptr noundef nonnull @c__1, ptr noundef nonnull %6, ptr noundef nonnull @c__1)
  %547 = load <2 x double>, ptr %15, align 16, !tbaa !9
  br label %.loopexit871

548:                                              ; preds = %542
  %549 = load i32, ptr %4, align 4, !tbaa !5
  %550 = icmp slt i32 %.8981, %549
  br i1 %550, label %551, label %.loopexit871

551:                                              ; preds = %548
  %552 = sub nsw i32 %549, %.8981
  store i32 %552, ptr %13, align 4, !tbaa !5
  %553 = sext i32 %.6983 to i64
  %gep977 = getelementptr %struct.doublecomplex, ptr %5, i64 %553
  %554 = getelementptr i8, ptr %480, i64 16
  call void @zdotu_(ptr noundef nonnull %15, ptr noundef nonnull %13, ptr noundef %gep977, ptr noundef nonnull @c__1, ptr noundef %554, ptr noundef nonnull @c__1)
  %555 = load <2 x double>, ptr %15, align 16, !tbaa !9
  br label %.loopexit871

556:                                              ; preds = %537
  br i1 %.not.not.not, label %581, label %557

557:                                              ; preds = %556
  %.not847.not946 = icmp sgt i32 %.8981, 1
  br i1 %.not847.not946, label %.lr.ph951, label %.loopexit871

.lr.ph951:                                        ; preds = %557
  %558 = sub i32 %.6983, %.8981
  %559 = sext i32 %558 to i64
  %wide.trip.count = zext nneg i32 %.8981 to i64
  %invariant.gep = getelementptr %struct.doublecomplex, ptr %26, i64 %559
  br label %560

560:                                              ; preds = %.lr.ph951, %560
  %indvars.iv1067 = phi i64 [ 1, %.lr.ph951 ], [ %indvars.iv.next1068, %560 ]
  %561 = phi <2 x double> [ zeroinitializer, %.lr.ph951 ], [ %580, %560 ]
  %gep1121 = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %indvars.iv1067
  %562 = load double, ptr %gep1121, align 8, !tbaa !14
  %563 = getelementptr inbounds i8, ptr %gep1121, i64 8
  %564 = load double, ptr %563, align 8, !tbaa !21
  %565 = fneg double %564
  %566 = fmul double %540, %565
  %567 = call double @llvm.fmuladd.f64(double %562, double %538, double %566)
  %568 = fmul double %538, %564
  %569 = call double @llvm.fmuladd.f64(double %562, double %540, double %568)
  %570 = getelementptr inbounds %struct.doublecomplex, ptr %25, i64 %indvars.iv1067
  %571 = fneg double %569
  %572 = load <2 x double>, ptr %570, align 8, !tbaa !9
  %573 = insertelement <2 x double> poison, double %569, i64 0
  %574 = insertelement <2 x double> %573, double %571, i64 1
  %575 = fmul <2 x double> %572, %574
  %576 = shufflevector <2 x double> %575, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %577 = insertelement <2 x double> poison, double %567, i64 0
  %578 = shufflevector <2 x double> %577, <2 x double> poison, <2 x i32> zeroinitializer
  %579 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %578, <2 x double> %572, <2 x double> %576)
  %580 = fadd <2 x double> %561, %579
  %indvars.iv.next1068 = add nuw nsw i64 %indvars.iv1067, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next1068, %wide.trip.count
  br i1 %exitcond.not, label %..loopexit872_crit_edge, label %560, !llvm.loop !23

581:                                              ; preds = %556
  %582 = load i32, ptr %4, align 4, !tbaa !5
  %.not = icmp slt i32 %.8981, %582
  br i1 %.not, label %.lr.ph962.preheader, label %.loopexit871

.lr.ph962.preheader:                              ; preds = %581
  %583 = sext i32 %.6983 to i64
  %584 = add i32 %582, 1
  %585 = sub i32 %584, %.8981
  %wide.trip.count1073 = zext i32 %585 to i64
  %invariant.gep1122 = getelementptr %struct.doublecomplex, ptr %26, i64 %583
  %invariant.gep1124 = getelementptr %struct.doublecomplex, ptr %25, i64 %479
  br label %.lr.ph962

.lr.ph962:                                        ; preds = %.lr.ph962.preheader, %.lr.ph962
  %indvars.iv1070 = phi i64 [ 1, %.lr.ph962.preheader ], [ %indvars.iv.next1071, %.lr.ph962 ]
  %586 = phi <2 x double> [ zeroinitializer, %.lr.ph962.preheader ], [ %604, %.lr.ph962 ]
  %gep1123 = getelementptr %struct.doublecomplex, ptr %invariant.gep1122, i64 %indvars.iv1070
  %587 = load double, ptr %gep1123, align 8, !tbaa !14
  %588 = getelementptr inbounds i8, ptr %gep1123, i64 8
  %589 = load double, ptr %588, align 8, !tbaa !21
  %590 = fneg double %589
  %591 = fmul double %540, %590
  %592 = call double @llvm.fmuladd.f64(double %587, double %538, double %591)
  %593 = fmul double %538, %589
  %594 = call double @llvm.fmuladd.f64(double %587, double %540, double %593)
  %gep1125 = getelementptr %struct.doublecomplex, ptr %invariant.gep1124, i64 %indvars.iv1070
  %595 = fneg double %594
  %596 = load <2 x double>, ptr %gep1125, align 8, !tbaa !9
  %597 = insertelement <2 x double> poison, double %594, i64 0
  %598 = insertelement <2 x double> %597, double %595, i64 1
  %599 = fmul <2 x double> %596, %598
  %600 = shufflevector <2 x double> %599, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %601 = insertelement <2 x double> poison, double %592, i64 0
  %602 = shufflevector <2 x double> %601, <2 x double> poison, <2 x i32> zeroinitializer
  %603 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %602, <2 x double> %596, <2 x double> %600)
  %604 = fadd <2 x double> %586, %603
  %indvars.iv.next1071 = add nuw nsw i64 %indvars.iv1070, 1
  %exitcond1074.not = icmp eq i64 %indvars.iv.next1071, %wide.trip.count1073
  br i1 %exitcond1074.not, label %..loopexit871_crit_edge, label %.lr.ph962, !llvm.loop !24

..loopexit871_crit_edge:                          ; preds = %.lr.ph962
  store <2 x double> %603, ptr %16, align 16, !tbaa !9
  br label %.loopexit871

..loopexit872_crit_edge:                          ; preds = %560
  store <2 x double> %579, ptr %16, align 16, !tbaa !9
  br label %.loopexit871

.loopexit871:                                     ; preds = %557, %..loopexit872_crit_edge, %..loopexit871_crit_edge, %581, %543, %551, %548
  %605 = phi <2 x double> [ %547, %543 ], [ %555, %551 ], [ zeroinitializer, %548 ], [ zeroinitializer, %581 ], [ %604, %..loopexit871_crit_edge ], [ %580, %..loopexit872_crit_edge ], [ zeroinitializer, %557 ]
  %606 = load double, ptr %19, align 8, !tbaa !9
  store double %606, ptr %15, align 16, !tbaa !14
  store double 0.000000e+00, ptr %476, align 8, !tbaa !21
  %607 = load double, ptr %20, align 16, !tbaa !14
  %608 = fcmp oeq double %607, %606
  %609 = load double, ptr %475, align 8
  %610 = fcmp oeq double %609, 0.000000e+00
  %or.cond858 = select i1 %608, i1 %610, i1 false
  br i1 %or.cond858, label %611, label %687

611:                                              ; preds = %.loopexit871
  %612 = load <2 x double>, ptr %480, align 8, !tbaa !9
  %613 = fsub <2 x double> %612, %605
  store <2 x double> %613, ptr %15, align 16, !tbaa !9
  store <2 x double> %613, ptr %480, align 8, !tbaa !9
  store i32 %.8981, ptr %13, align 4, !tbaa !5
  %614 = extractelement <2 x double> %613, i64 0
  %615 = fcmp oge double %614, 0.000000e+00
  %616 = fneg double %614
  %617 = select i1 %615, double %614, double %616
  %618 = call { double, double } @Cd(ptr noundef nonnull %480)
  %619 = extractvalue { double, double } %618, 1
  %620 = fcmp oge double %619, 0.000000e+00
  %621 = fneg double %619
  %622 = select i1 %620, double %619, double %621
  %623 = fadd double %617, %622
  br i1 %.not822, label %633, label %624

624:                                              ; preds = %611
  store i32 %.6983, ptr %13, align 4, !tbaa !5
  %625 = load double, ptr %19, align 8, !tbaa !9
  %626 = sext i32 %.6983 to i64
  %627 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %626
  %628 = load <2 x double>, ptr %627, align 8, !tbaa !9
  %629 = insertelement <2 x double> poison, double %625, i64 0
  %630 = shufflevector <2 x double> %629, <2 x double> poison, <2 x i32> zeroinitializer
  %631 = fmul <2 x double> %630, %628
  store <2 x double> %631, ptr %15, align 16, !tbaa !9
  store <2 x double> %631, ptr %18, align 16, !tbaa !9
  %632 = extractelement <2 x double> %631, i64 0
  br label %636

633:                                              ; preds = %611
  %634 = load double, ptr %19, align 8, !tbaa !9
  store double %634, ptr %18, align 16, !tbaa !14
  store double 0.000000e+00, ptr %477, align 8, !tbaa !21
  %635 = fcmp oeq double %634, 1.000000e+00
  br i1 %635, label %693, label %636

636:                                              ; preds = %633, %624
  %637 = phi double [ %634, %633 ], [ %632, %624 ]
  store double %637, ptr %14, align 8, !tbaa !9
  %638 = call { double, double } @Cd(ptr noundef nonnull %18)
  %639 = extractvalue { double, double } %638, 1
  %640 = insertelement <2 x double> poison, double %637, i64 0
  %641 = insertelement <2 x double> %640, double %639, i64 1
  %642 = fcmp oge <2 x double> %641, zeroinitializer
  %643 = fneg <2 x double> %641
  %644 = select <2 x i1> %642, <2 x double> %641, <2 x double> %643
  %shift1189 = shufflevector <2 x double> %644, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %645 = fadd <2 x double> %644, %shift1189
  %646 = extractelement <2 x double> %645, i64 0
  %647 = load double, ptr %22, align 8, !tbaa !9
  %648 = fcmp ogt double %646, %647
  br i1 %648, label %649, label %666

649:                                              ; preds = %636
  %650 = fcmp olt double %646, 1.000000e+00
  br i1 %650, label %651, label %661

651:                                              ; preds = %649
  %652 = load double, ptr %21, align 8, !tbaa !9
  %653 = fmul double %646, %652
  %654 = fcmp ogt double %623, %653
  br i1 %654, label %655, label %661

655:                                              ; preds = %651
  %656 = fdiv double 1.000000e+00, %623
  store double %656, ptr %23, align 8, !tbaa !9
  call void @zdscal_(ptr noundef nonnull %4, ptr noundef nonnull %23, ptr noundef nonnull %6, ptr noundef nonnull @c__1) #7
  %657 = load double, ptr %23, align 8, !tbaa !9
  %658 = load double, ptr %7, align 8, !tbaa !9
  %659 = fmul double %657, %658
  store double %659, ptr %7, align 8, !tbaa !9
  %660 = fmul double %.10, %657
  br label %661

661:                                              ; preds = %651, %655, %649
  %.11 = phi double [ %660, %655 ], [ %.10, %651 ], [ %.10, %649 ]
  store i32 %.8981, ptr %13, align 4, !tbaa !5
  call void @zladiv_(ptr noundef nonnull %15, ptr noundef nonnull %480, ptr noundef nonnull %18) #7
  %662 = load i32, ptr %13, align 4, !tbaa !5
  %663 = sext i32 %662 to i64
  %664 = getelementptr inbounds %struct.doublecomplex, ptr %25, i64 %663
  %665 = load <2 x double>, ptr %15, align 16, !tbaa !9
  store <2 x double> %665, ptr %664, align 8, !tbaa !9
  br label %693

666:                                              ; preds = %636
  %667 = fcmp ogt double %646, 0.000000e+00
  br i1 %667, label %668, label %683

668:                                              ; preds = %666
  %669 = load double, ptr %21, align 8, !tbaa !9
  %670 = fmul double %646, %669
  %671 = fcmp ogt double %623, %670
  br i1 %671, label %672, label %678

672:                                              ; preds = %668
  %673 = fdiv double %670, %623
  store double %673, ptr %23, align 8, !tbaa !9
  call void @zdscal_(ptr noundef nonnull %4, ptr noundef nonnull %23, ptr noundef nonnull %6, ptr noundef nonnull @c__1) #7
  %674 = load double, ptr %23, align 8, !tbaa !9
  %675 = load double, ptr %7, align 8, !tbaa !9
  %676 = fmul double %674, %675
  store double %676, ptr %7, align 8, !tbaa !9
  %677 = fmul double %.10, %674
  br label %678

678:                                              ; preds = %672, %668
  %.12 = phi double [ %677, %672 ], [ %.10, %668 ]
  store i32 %.8981, ptr %13, align 4, !tbaa !5
  call void @zladiv_(ptr noundef nonnull %15, ptr noundef nonnull %480, ptr noundef nonnull %18) #7
  %679 = load i32, ptr %13, align 4, !tbaa !5
  %680 = sext i32 %679 to i64
  %681 = getelementptr inbounds %struct.doublecomplex, ptr %25, i64 %680
  %682 = load <2 x double>, ptr %15, align 16, !tbaa !9
  store <2 x double> %682, ptr %681, align 8, !tbaa !9
  br label %693

683:                                              ; preds = %666
  %684 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %684, ptr %13, align 4, !tbaa !5
  %.not849969 = icmp slt i32 %684, 1
  br i1 %.not849969, label %._crit_edge973, label %.lr.ph972.preheader

.lr.ph972.preheader:                              ; preds = %683
  %685 = zext nneg i32 %684 to i64
  %686 = shl nuw nsw i64 %685, 4
  call void @llvm.memset.p0.i64(ptr nonnull align 8 %6, i8 0, i64 %686, i1 false), !tbaa !9
  br label %._crit_edge973

._crit_edge973:                                   ; preds = %.lr.ph972.preheader, %683
  store <2 x double> <double 1.000000e+00, double 0.000000e+00>, ptr %480, align 8, !tbaa !9
  store double 0.000000e+00, ptr %7, align 8, !tbaa !9
  br label %693

687:                                              ; preds = %.loopexit871
  store i32 %.8981, ptr %13, align 4, !tbaa !5
  call void @zladiv_(ptr noundef nonnull %16, ptr noundef nonnull %480, ptr noundef nonnull %18) #7
  %688 = load <2 x double>, ptr %16, align 16, !tbaa !9
  %689 = fsub <2 x double> %688, %605
  store <2 x double> %689, ptr %15, align 16, !tbaa !9
  %690 = load i32, ptr %13, align 4, !tbaa !5
  %691 = sext i32 %690 to i64
  %692 = getelementptr inbounds %struct.doublecomplex, ptr %25, i64 %691
  store <2 x double> %689, ptr %692, align 8, !tbaa !9
  br label %693

693:                                              ; preds = %633, %678, %._crit_edge973, %661, %687
  %.13 = phi double [ %.11, %661 ], [ %.12, %678 ], [ 0.000000e+00, %._crit_edge973 ], [ %.10, %633 ], [ %.10, %687 ]
  store i32 %.8981, ptr %13, align 4, !tbaa !5
  %694 = load double, ptr %480, align 8, !tbaa !14
  store double %694, ptr %14, align 8, !tbaa !9
  %695 = call { double, double } @Cd(ptr noundef nonnull %480)
  %696 = extractvalue { double, double } %695, 1
  %697 = insertelement <2 x double> poison, double %694, i64 0
  %698 = insertelement <2 x double> %697, double %696, i64 1
  %699 = fcmp oge <2 x double> %698, zeroinitializer
  %700 = fneg <2 x double> %698
  %701 = select <2 x i1> %699, <2 x double> %698, <2 x double> %700
  %shift1190 = shufflevector <2 x double> %701, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %702 = fadd <2 x double> %701, %shift1190
  %703 = extractelement <2 x double> %702, i64 0
  %704 = fcmp oge double %.13, %703
  %705 = select i1 %704, double %.13, double %703
  %indvars.iv.next1079 = add nuw nsw i64 %indvars.iv1078, 1
  %706 = trunc i64 %indvars.iv.next1079 to i32
  %707 = mul i32 %263, %706
  %708 = add nsw i32 %.6983, %707
  %709 = add nsw i32 %263, %.8981
  %710 = load i32, ptr %12, align 4
  %711 = icmp sge i32 %709, %710
  %712 = icmp sle i32 %709, %710
  %.in844 = select i1 %468, i1 %711, i1 %712
  br i1 %.in844, label %478, label %.loopexit870, !llvm.loop !25

713:                                              ; preds = %466
  store i32 %264, ptr %11, align 4, !tbaa !5
  store i32 %263, ptr %12, align 4, !tbaa !5
  br i1 %.in8381013, label %.lr.ph1021, label %.loopexit870

.lr.ph1021:                                       ; preds = %713
  %714 = add nsw i32 %.2, 1
  %715 = mul nsw i32 %714, %.2
  %716 = sdiv i32 %715, 2
  %717 = getelementptr inbounds i8, ptr %20, i64 8
  %718 = getelementptr inbounds i8, ptr %15, i64 8
  %719 = getelementptr inbounds i8, ptr %18, i64 8
  %720 = getelementptr inbounds i8, ptr %17, i64 8
  br label %721

721:                                              ; preds = %.lr.ph1021, %970
  %indvars.iv1090 = phi i64 [ 1, %.lr.ph1021 ], [ %indvars.iv.next1091, %970 ]
  %.71018 = phi i32 [ %716, %.lr.ph1021 ], [ %985, %970 ]
  %.91016 = phi i32 [ %.2, %.lr.ph1021 ], [ %987, %970 ]
  %.141015 = phi double [ %.1767, %.lr.ph1021 ], [ %982, %970 ]
  store i32 %.91016, ptr %13, align 4, !tbaa !5
  %722 = sext i32 %.91016 to i64
  %723 = getelementptr inbounds %struct.doublecomplex, ptr %25, i64 %722
  %724 = load double, ptr %723, align 8, !tbaa !14
  store double %724, ptr %14, align 8, !tbaa !9
  %725 = call { double, double } @Cd(ptr noundef nonnull %723)
  %726 = extractvalue { double, double } %725, 1
  %727 = insertelement <2 x double> poison, double %724, i64 0
  %728 = insertelement <2 x double> %727, double %726, i64 1
  %729 = fcmp oge <2 x double> %728, zeroinitializer
  %730 = fneg <2 x double> %728
  %731 = select <2 x i1> %729, <2 x double> %728, <2 x double> %730
  %shift1191 = shufflevector <2 x double> %731, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %732 = fadd <2 x double> %731, %shift1191
  %733 = extractelement <2 x double> %732, i64 0
  %734 = load double, ptr %19, align 8, !tbaa !9
  store double %734, ptr %20, align 16, !tbaa !14
  store double 0.000000e+00, ptr %717, align 8, !tbaa !21
  %735 = fcmp oge double %.141015, 1.000000e+00
  %736 = select i1 %735, double %.141015, double 1.000000e+00
  %737 = fdiv double 1.000000e+00, %736
  store double %737, ptr %23, align 8, !tbaa !9
  %738 = getelementptr inbounds double, ptr %24, i64 %722
  %739 = load double, ptr %738, align 8, !tbaa !9
  %740 = load double, ptr %21, align 8, !tbaa !9
  %741 = fsub double %740, %733
  %742 = fmul double %737, %741
  %743 = fcmp ogt double %739, %742
  br i1 %743, label %744, label %788

744:                                              ; preds = %721
  %745 = fmul double %737, 5.000000e-01
  store double %745, ptr %23, align 8, !tbaa !9
  %746 = insertelement <2 x double> <double poison, double 0.000000e+00>, double %734, i64 0
  br i1 %.not822, label %761, label %747

747:                                              ; preds = %744
  %748 = sext i32 %.71018 to i64
  %749 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %748
  %750 = call { double, double } @Cd(ptr noundef nonnull %749)
  %751 = extractvalue { double, double } %750, 0
  %752 = extractvalue { double, double } %750, 1
  %753 = fneg double %752
  %754 = call ptr @_pCd(ptr noundef nonnull %16)
  %755 = getelementptr inbounds i8, ptr %754, i64 8
  store double %751, ptr %754, align 8
  store double %753, ptr %755, align 8
  %756 = load double, ptr %19, align 8, !tbaa !9
  %757 = load <2 x double>, ptr %16, align 16, !tbaa !9
  %758 = insertelement <2 x double> poison, double %756, i64 0
  %759 = shufflevector <2 x double> %758, <2 x double> poison, <2 x i32> zeroinitializer
  %760 = fmul <2 x double> %759, %757
  store <2 x double> %760, ptr %15, align 16, !tbaa !9
  br label %761

761:                                              ; preds = %744, %747
  %762 = phi <2 x double> [ %760, %747 ], [ %746, %744 ]
  store <2 x double> %762, ptr %18, align 16, !tbaa !9
  %763 = extractelement <2 x double> %762, i64 0
  %764 = fcmp oge double %763, 0.000000e+00
  %765 = fneg double %763
  %766 = select i1 %764, double %763, double %765
  %767 = call { double, double } @Cd(ptr noundef nonnull %18)
  %768 = extractvalue { double, double } %767, 1
  %769 = fcmp oge double %768, 0.000000e+00
  %770 = fneg double %768
  %771 = select i1 %769, double %768, double %770
  %772 = fadd double %766, %771
  %773 = fcmp ogt double %772, 1.000000e+00
  br i1 %773, label %774, label %780

774:                                              ; preds = %761
  store double 1.000000e+00, ptr %14, align 8, !tbaa !9
  %775 = load double, ptr %23, align 8, !tbaa !9
  %776 = fmul double %772, %775
  %777 = fcmp oge double %776, 1.000000e+00
  %778 = select i1 %777, double 1.000000e+00, double %776
  store double %778, ptr %23, align 8, !tbaa !9
  call void @zladiv_(ptr noundef nonnull %15, ptr noundef nonnull %20, ptr noundef nonnull %18) #7
  %779 = load <2 x double>, ptr %15, align 16, !tbaa !9
  store <2 x double> %779, ptr %20, align 16, !tbaa !9
  br label %780

780:                                              ; preds = %774, %761
  %781 = load double, ptr %23, align 8, !tbaa !9
  %782 = fcmp olt double %781, 1.000000e+00
  br i1 %782, label %783, label %788

783:                                              ; preds = %780
  call void @zdscal_(ptr noundef nonnull %4, ptr noundef nonnull %23, ptr noundef nonnull %6, ptr noundef nonnull @c__1) #7
  %784 = load double, ptr %23, align 8, !tbaa !9
  %785 = load double, ptr %7, align 8, !tbaa !9
  %786 = fmul double %784, %785
  store double %786, ptr %7, align 8, !tbaa !9
  %787 = fmul double %.141015, %784
  br label %788

788:                                              ; preds = %780, %783, %721
  %.15 = phi double [ %787, %783 ], [ %.141015, %780 ], [ %.141015, %721 ]
  %789 = load double, ptr %20, align 16, !tbaa !14
  %790 = fcmp oeq double %789, 1.000000e+00
  %791 = load double, ptr %717, align 8
  %792 = fcmp oeq double %791, 0.000000e+00
  %or.cond5 = select i1 %790, i1 %792, i1 false
  br i1 %or.cond5, label %793, label %807

793:                                              ; preds = %788
  br i1 %.not.not.not, label %799, label %794

794:                                              ; preds = %793
  %795 = add nsw i32 %.91016, -1
  store i32 %795, ptr %13, align 4, !tbaa !5
  %796 = sub nsw i32 %.71018, %.91016
  %797 = sext i32 %796 to i64
  %gep1010 = getelementptr %struct.doublecomplex, ptr %5, i64 %797
  call void @zdotc_(ptr noundef nonnull %15, ptr noundef nonnull %13, ptr noundef %gep1010, ptr noundef nonnull @c__1, ptr noundef nonnull %6, ptr noundef nonnull @c__1)
  %798 = load <2 x double>, ptr %15, align 16, !tbaa !9
  br label %.loopexit

799:                                              ; preds = %793
  %800 = load i32, ptr %4, align 4, !tbaa !5
  %801 = icmp slt i32 %.91016, %800
  br i1 %801, label %802, label %.loopexit

802:                                              ; preds = %799
  %803 = sub nsw i32 %800, %.91016
  store i32 %803, ptr %13, align 4, !tbaa !5
  %804 = sext i32 %.71018 to i64
  %gep1012 = getelementptr %struct.doublecomplex, ptr %5, i64 %804
  %805 = getelementptr i8, ptr %723, i64 16
  call void @zdotc_(ptr noundef nonnull %15, ptr noundef nonnull %13, ptr noundef %gep1012, ptr noundef nonnull @c__1, ptr noundef %805, ptr noundef nonnull @c__1)
  %806 = load <2 x double>, ptr %15, align 16, !tbaa !9
  br label %.loopexit

807:                                              ; preds = %788
  br i1 %.not.not.not, label %842, label %808

808:                                              ; preds = %807
  %809 = add nsw i32 %.91016, -1
  store i32 %809, ptr %13, align 4, !tbaa !5
  %.not841988 = icmp slt i32 %.91016, 2
  br i1 %.not841988, label %.loopexit, label %.lr.ph993

.lr.ph993:                                        ; preds = %808
  %810 = sub i32 %.71018, %.91016
  %811 = sext i32 %810 to i64
  %invariant.gep1126 = getelementptr %struct.doublecomplex, ptr %26, i64 %811
  br label %812

812:                                              ; preds = %.lr.ph993, %812
  %indvars.iv1081 = phi i64 [ 1, %.lr.ph993 ], [ %indvars.iv.next1082, %812 ]
  %813 = phi <2 x double> [ zeroinitializer, %.lr.ph993 ], [ %839, %812 ]
  %gep1127 = getelementptr %struct.doublecomplex, ptr %invariant.gep1126, i64 %indvars.iv1081
  %814 = call { double, double } @Cd(ptr noundef nonnull %gep1127)
  %815 = extractvalue { double, double } %814, 0
  %816 = extractvalue { double, double } %814, 1
  %817 = fneg double %816
  %818 = call ptr @_pCd(ptr noundef nonnull %17)
  %819 = getelementptr inbounds i8, ptr %818, i64 8
  store double %815, ptr %818, align 8
  store double %817, ptr %819, align 8
  %820 = load double, ptr %17, align 8, !tbaa !14
  %821 = load double, ptr %20, align 16, !tbaa !14
  %822 = load double, ptr %720, align 8, !tbaa !21
  %823 = load double, ptr %717, align 8, !tbaa !21
  %824 = fneg double %822
  %825 = fmul double %823, %824
  %826 = call double @llvm.fmuladd.f64(double %820, double %821, double %825)
  %827 = fmul double %821, %822
  %828 = call double @llvm.fmuladd.f64(double %820, double %823, double %827)
  %829 = getelementptr inbounds %struct.doublecomplex, ptr %25, i64 %indvars.iv1081
  %830 = fneg double %828
  %831 = load <2 x double>, ptr %829, align 8, !tbaa !9
  %832 = insertelement <2 x double> poison, double %828, i64 0
  %833 = insertelement <2 x double> %832, double %830, i64 1
  %834 = fmul <2 x double> %831, %833
  %835 = shufflevector <2 x double> %834, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %836 = insertelement <2 x double> poison, double %826, i64 0
  %837 = shufflevector <2 x double> %836, <2 x double> poison, <2 x i32> zeroinitializer
  %838 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %837, <2 x double> %831, <2 x double> %835)
  store <2 x double> %838, ptr %16, align 16, !tbaa !9
  %839 = fadd <2 x double> %813, %838
  store <2 x double> %839, ptr %15, align 16, !tbaa !9
  %indvars.iv.next1082 = add nuw nsw i64 %indvars.iv1081, 1
  %840 = load i32, ptr %13, align 4, !tbaa !5
  %841 = sext i32 %840 to i64
  %.not841.not = icmp slt i64 %indvars.iv1081, %841
  br i1 %.not841.not, label %812, label %.loopexit, !llvm.loop !26

842:                                              ; preds = %807
  %843 = load i32, ptr %4, align 4, !tbaa !5
  %844 = icmp slt i32 %.91016, %843
  br i1 %844, label %845, label %.loopexit

845:                                              ; preds = %842
  %846 = sub nsw i32 %843, %.91016
  store i32 %846, ptr %13, align 4, !tbaa !5
  %.not840996 = icmp slt i32 %846, 1
  br i1 %.not840996, label %.loopexit, label %.lr.ph1001.preheader

.lr.ph1001.preheader:                             ; preds = %845
  %847 = sext i32 %.71018 to i64
  %invariant.gep1128 = getelementptr %struct.doublecomplex, ptr %26, i64 %847
  %invariant.gep1130 = getelementptr %struct.doublecomplex, ptr %25, i64 %722
  br label %.lr.ph1001

.lr.ph1001:                                       ; preds = %.lr.ph1001.preheader, %.lr.ph1001
  %indvars.iv1084 = phi i64 [ 1, %.lr.ph1001.preheader ], [ %indvars.iv.next1085, %.lr.ph1001 ]
  %848 = phi <2 x double> [ zeroinitializer, %.lr.ph1001.preheader ], [ %873, %.lr.ph1001 ]
  %gep1129 = getelementptr %struct.doublecomplex, ptr %invariant.gep1128, i64 %indvars.iv1084
  %849 = call { double, double } @Cd(ptr noundef nonnull %gep1129)
  %850 = extractvalue { double, double } %849, 0
  %851 = extractvalue { double, double } %849, 1
  %852 = fneg double %851
  %853 = call ptr @_pCd(ptr noundef nonnull %17)
  %854 = getelementptr inbounds i8, ptr %853, i64 8
  store double %850, ptr %853, align 8
  store double %852, ptr %854, align 8
  %855 = load double, ptr %17, align 8, !tbaa !14
  %856 = load double, ptr %20, align 16, !tbaa !14
  %857 = load double, ptr %720, align 8, !tbaa !21
  %858 = load double, ptr %717, align 8, !tbaa !21
  %859 = fneg double %857
  %860 = fmul double %858, %859
  %861 = call double @llvm.fmuladd.f64(double %855, double %856, double %860)
  %862 = fmul double %856, %857
  %863 = call double @llvm.fmuladd.f64(double %855, double %858, double %862)
  %gep1131 = getelementptr %struct.doublecomplex, ptr %invariant.gep1130, i64 %indvars.iv1084
  %864 = fneg double %863
  %865 = load <2 x double>, ptr %gep1131, align 8, !tbaa !9
  %866 = insertelement <2 x double> poison, double %863, i64 0
  %867 = insertelement <2 x double> %866, double %864, i64 1
  %868 = fmul <2 x double> %865, %867
  %869 = shufflevector <2 x double> %868, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %870 = insertelement <2 x double> poison, double %861, i64 0
  %871 = shufflevector <2 x double> %870, <2 x double> poison, <2 x i32> zeroinitializer
  %872 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %871, <2 x double> %865, <2 x double> %869)
  store <2 x double> %872, ptr %16, align 16, !tbaa !9
  %873 = fadd <2 x double> %848, %872
  store <2 x double> %873, ptr %15, align 16, !tbaa !9
  %indvars.iv.next1085 = add nuw nsw i64 %indvars.iv1084, 1
  %874 = load i32, ptr %13, align 4, !tbaa !5
  %875 = sext i32 %874 to i64
  %.not840.not = icmp slt i64 %indvars.iv1084, %875
  br i1 %.not840.not, label %.lr.ph1001, label %.loopexit, !llvm.loop !27

.loopexit:                                        ; preds = %812, %.lr.ph1001, %808, %845, %842, %794, %802, %799
  %876 = phi <2 x double> [ %798, %794 ], [ %806, %802 ], [ zeroinitializer, %799 ], [ zeroinitializer, %842 ], [ zeroinitializer, %845 ], [ zeroinitializer, %808 ], [ %873, %.lr.ph1001 ], [ %839, %812 ]
  %877 = load double, ptr %19, align 8, !tbaa !9
  store double %877, ptr %15, align 16, !tbaa !14
  store double 0.000000e+00, ptr %718, align 8, !tbaa !21
  %878 = load double, ptr %20, align 16, !tbaa !14
  %879 = fcmp oeq double %878, %877
  %880 = load double, ptr %717, align 8
  %881 = fcmp oeq double %880, 0.000000e+00
  %or.cond860 = select i1 %879, i1 %881, i1 false
  br i1 %or.cond860, label %882, label %964

882:                                              ; preds = %.loopexit
  %883 = load <2 x double>, ptr %723, align 8, !tbaa !9
  %884 = fsub <2 x double> %883, %876
  store <2 x double> %884, ptr %15, align 16, !tbaa !9
  store <2 x double> %884, ptr %723, align 8, !tbaa !9
  store i32 %.91016, ptr %13, align 4, !tbaa !5
  %885 = extractelement <2 x double> %884, i64 0
  %886 = fcmp oge double %885, 0.000000e+00
  %887 = fneg double %885
  %888 = select i1 %886, double %885, double %887
  %889 = call { double, double } @Cd(ptr noundef nonnull %723)
  %890 = extractvalue { double, double } %889, 1
  %891 = fcmp oge double %890, 0.000000e+00
  %892 = fneg double %890
  %893 = select i1 %891, double %890, double %892
  %894 = fadd double %888, %893
  br i1 %.not822, label %910, label %895

895:                                              ; preds = %882
  %896 = sext i32 %.71018 to i64
  %897 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %896
  %898 = call { double, double } @Cd(ptr noundef nonnull %897)
  %899 = extractvalue { double, double } %898, 0
  %900 = extractvalue { double, double } %898, 1
  %901 = fneg double %900
  %902 = call ptr @_pCd(ptr noundef nonnull %16)
  %903 = getelementptr inbounds i8, ptr %902, i64 8
  store double %899, ptr %902, align 8
  store double %901, ptr %903, align 8
  %904 = load double, ptr %19, align 8, !tbaa !9
  %905 = load <2 x double>, ptr %16, align 16, !tbaa !9
  %906 = insertelement <2 x double> poison, double %904, i64 0
  %907 = shufflevector <2 x double> %906, <2 x double> poison, <2 x i32> zeroinitializer
  %908 = fmul <2 x double> %907, %905
  store <2 x double> %908, ptr %15, align 16, !tbaa !9
  store <2 x double> %908, ptr %18, align 16, !tbaa !9
  %909 = extractelement <2 x double> %908, i64 0
  br label %913

910:                                              ; preds = %882
  %911 = load double, ptr %19, align 8, !tbaa !9
  store double %911, ptr %18, align 16, !tbaa !14
  store double 0.000000e+00, ptr %719, align 8, !tbaa !21
  %912 = fcmp oeq double %911, 1.000000e+00
  br i1 %912, label %970, label %913

913:                                              ; preds = %910, %895
  %914 = phi double [ %911, %910 ], [ %909, %895 ]
  store double %914, ptr %14, align 8, !tbaa !9
  %915 = call { double, double } @Cd(ptr noundef nonnull %18)
  %916 = extractvalue { double, double } %915, 1
  %917 = insertelement <2 x double> poison, double %914, i64 0
  %918 = insertelement <2 x double> %917, double %916, i64 1
  %919 = fcmp oge <2 x double> %918, zeroinitializer
  %920 = fneg <2 x double> %918
  %921 = select <2 x i1> %919, <2 x double> %918, <2 x double> %920
  %shift1192 = shufflevector <2 x double> %921, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %922 = fadd <2 x double> %921, %shift1192
  %923 = extractelement <2 x double> %922, i64 0
  %924 = load double, ptr %22, align 8, !tbaa !9
  %925 = fcmp ogt double %923, %924
  br i1 %925, label %926, label %943

926:                                              ; preds = %913
  %927 = fcmp olt double %923, 1.000000e+00
  br i1 %927, label %928, label %938

928:                                              ; preds = %926
  %929 = load double, ptr %21, align 8, !tbaa !9
  %930 = fmul double %923, %929
  %931 = fcmp ogt double %894, %930
  br i1 %931, label %932, label %938

932:                                              ; preds = %928
  %933 = fdiv double 1.000000e+00, %894
  store double %933, ptr %23, align 8, !tbaa !9
  call void @zdscal_(ptr noundef nonnull %4, ptr noundef nonnull %23, ptr noundef nonnull %6, ptr noundef nonnull @c__1) #7
  %934 = load double, ptr %23, align 8, !tbaa !9
  %935 = load double, ptr %7, align 8, !tbaa !9
  %936 = fmul double %934, %935
  store double %936, ptr %7, align 8, !tbaa !9
  %937 = fmul double %.15, %934
  br label %938

938:                                              ; preds = %928, %932, %926
  %.16 = phi double [ %937, %932 ], [ %.15, %928 ], [ %.15, %926 ]
  store i32 %.91016, ptr %13, align 4, !tbaa !5
  call void @zladiv_(ptr noundef nonnull %15, ptr noundef nonnull %723, ptr noundef nonnull %18) #7
  %939 = load i32, ptr %13, align 4, !tbaa !5
  %940 = sext i32 %939 to i64
  %941 = getelementptr inbounds %struct.doublecomplex, ptr %25, i64 %940
  %942 = load <2 x double>, ptr %15, align 16, !tbaa !9
  store <2 x double> %942, ptr %941, align 8, !tbaa !9
  br label %970

943:                                              ; preds = %913
  %944 = fcmp ogt double %923, 0.000000e+00
  br i1 %944, label %945, label %960

945:                                              ; preds = %943
  %946 = load double, ptr %21, align 8, !tbaa !9
  %947 = fmul double %923, %946
  %948 = fcmp ogt double %894, %947
  br i1 %948, label %949, label %955

949:                                              ; preds = %945
  %950 = fdiv double %947, %894
  store double %950, ptr %23, align 8, !tbaa !9
  call void @zdscal_(ptr noundef nonnull %4, ptr noundef nonnull %23, ptr noundef nonnull %6, ptr noundef nonnull @c__1) #7
  %951 = load double, ptr %23, align 8, !tbaa !9
  %952 = load double, ptr %7, align 8, !tbaa !9
  %953 = fmul double %951, %952
  store double %953, ptr %7, align 8, !tbaa !9
  %954 = fmul double %.15, %951
  br label %955

955:                                              ; preds = %949, %945
  %.17 = phi double [ %954, %949 ], [ %.15, %945 ]
  store i32 %.91016, ptr %13, align 4, !tbaa !5
  call void @zladiv_(ptr noundef nonnull %15, ptr noundef nonnull %723, ptr noundef nonnull %18) #7
  %956 = load i32, ptr %13, align 4, !tbaa !5
  %957 = sext i32 %956 to i64
  %958 = getelementptr inbounds %struct.doublecomplex, ptr %25, i64 %957
  %959 = load <2 x double>, ptr %15, align 16, !tbaa !9
  store <2 x double> %959, ptr %958, align 8, !tbaa !9
  br label %970

960:                                              ; preds = %943
  %961 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %961, ptr %13, align 4, !tbaa !5
  %.not8431004 = icmp slt i32 %961, 1
  br i1 %.not8431004, label %._crit_edge1008, label %.lr.ph1007.preheader

.lr.ph1007.preheader:                             ; preds = %960
  %962 = zext nneg i32 %961 to i64
  %963 = shl nuw nsw i64 %962, 4
  call void @llvm.memset.p0.i64(ptr nonnull align 8 %6, i8 0, i64 %963, i1 false), !tbaa !9
  br label %._crit_edge1008

._crit_edge1008:                                  ; preds = %.lr.ph1007.preheader, %960
  store <2 x double> <double 1.000000e+00, double 0.000000e+00>, ptr %723, align 8, !tbaa !9
  store double 0.000000e+00, ptr %7, align 8, !tbaa !9
  br label %970

964:                                              ; preds = %.loopexit
  store i32 %.91016, ptr %13, align 4, !tbaa !5
  call void @zladiv_(ptr noundef nonnull %16, ptr noundef nonnull %723, ptr noundef nonnull %18) #7
  %965 = load <2 x double>, ptr %16, align 16, !tbaa !9
  %966 = fsub <2 x double> %965, %876
  store <2 x double> %966, ptr %15, align 16, !tbaa !9
  %967 = load i32, ptr %13, align 4, !tbaa !5
  %968 = sext i32 %967 to i64
  %969 = getelementptr inbounds %struct.doublecomplex, ptr %25, i64 %968
  store <2 x double> %966, ptr %969, align 8, !tbaa !9
  br label %970

970:                                              ; preds = %910, %955, %._crit_edge1008, %938, %964
  %.18 = phi double [ %.16, %938 ], [ %.17, %955 ], [ 0.000000e+00, %._crit_edge1008 ], [ %.15, %910 ], [ %.15, %964 ]
  store i32 %.91016, ptr %13, align 4, !tbaa !5
  %971 = load double, ptr %723, align 8, !tbaa !14
  store double %971, ptr %14, align 8, !tbaa !9
  %972 = call { double, double } @Cd(ptr noundef nonnull %723)
  %973 = extractvalue { double, double } %972, 1
  %974 = insertelement <2 x double> poison, double %971, i64 0
  %975 = insertelement <2 x double> %974, double %973, i64 1
  %976 = fcmp oge <2 x double> %975, zeroinitializer
  %977 = fneg <2 x double> %975
  %978 = select <2 x i1> %976, <2 x double> %975, <2 x double> %977
  %shift1193 = shufflevector <2 x double> %978, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %979 = fadd <2 x double> %978, %shift1193
  %980 = extractelement <2 x double> %979, i64 0
  %981 = fcmp oge double %.18, %980
  %982 = select i1 %981, double %.18, double %980
  %indvars.iv.next1091 = add nuw nsw i64 %indvars.iv1090, 1
  %983 = trunc i64 %indvars.iv.next1091 to i32
  %984 = mul i32 %263, %983
  %985 = add nsw i32 %.71018, %984
  %986 = load i32, ptr %12, align 4, !tbaa !5
  %987 = add nsw i32 %986, %.91016
  %988 = icmp slt i32 %986, 0
  %989 = icmp sge i32 %987, %264
  %990 = icmp sle i32 %987, %264
  %.in838 = select i1 %988, i1 %989, i1 %990
  br i1 %.in838, label %721, label %.loopexit870, !llvm.loop !28

.loopexit870:                                     ; preds = %460, %693, %970, %280, %471, %713
  %991 = load double, ptr %19, align 8, !tbaa !9
  %992 = load double, ptr %7, align 8, !tbaa !9
  %993 = fdiv double %992, %991
  store double %993, ptr %7, align 8, !tbaa !9
  br label %994

994:                                              ; preds = %.loopexit870, %269
  %995 = phi double [ %991, %.loopexit870 ], [ %.pr868, %269 ]
  %996 = fcmp une double %995, 1.000000e+00
  br i1 %996, label %997, label %999

997:                                              ; preds = %994
  %998 = fdiv double 1.000000e+00, %995
  store double %998, ptr %14, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %4, ptr noundef nonnull %14, ptr noundef %8, ptr noundef nonnull @c__1) #7
  br label %999

999:                                              ; preds = %994, %997, %51, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #7
  ret void
}

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

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

declare double @dzasum_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden { double, double } @Cd(ptr noundef) local_unnamed_addr #3

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

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

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

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

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @zdotu_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden ptr @_pCd(ptr noundef) local_unnamed_addr #3

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @zdotc_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

; 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 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 <2 x double> @llvm.fmuladd.v2f64(<2 x double>, <2 x double>, <2 x double>) #6

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 = { inlinehint 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 #4 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { nounwind }

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

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


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