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

; 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 i64, align 8
@c_b36 = external hidden global double, align 8

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

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

91:                                               ; preds = %87
  %92 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 -1, ptr %92, align 8, !tbaa !9
  br label %152

93:                                               ; preds = %87, %12
  %94 = load i64, ptr %61, align 8, !tbaa !9
  %95 = icmp ne i64 %94, 0
  br i1 %95, label %106, label %96

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

100:                                              ; preds = %96
  %101 = load ptr, ptr %15, align 8, !tbaa !5
  %102 = call i64 @lsame_(ptr noundef %101, ptr noundef @.str.4)
  %103 = icmp ne i64 %102, 0
  br i1 %103, label %106, label %104

104:                                              ; preds = %100
  %105 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 -2, ptr %105, align 8, !tbaa !9
  br label %151

106:                                              ; preds = %100, %96, %93
  %107 = load i64, ptr %64, align 8, !tbaa !9
  %108 = icmp ne i64 %107, 0
  br i1 %108, label %115, label %109

109:                                              ; preds = %106
  %110 = load ptr, ptr %16, align 8, !tbaa !5
  %111 = call i64 @lsame_(ptr noundef %110, ptr noundef @.str)
  %112 = icmp ne i64 %111, 0
  br i1 %112, label %115, label %113

113:                                              ; preds = %109
  %114 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 -3, ptr %114, align 8, !tbaa !9
  br label %150

115:                                              ; preds = %109, %106
  %116 = load ptr, ptr %17, align 8, !tbaa !5
  %117 = call i64 @lsame_(ptr noundef %116, ptr noundef @.str.5)
  %118 = icmp ne i64 %117, 0
  br i1 %118, label %125, label %119

119:                                              ; preds = %115
  %120 = load ptr, ptr %17, align 8, !tbaa !5
  %121 = call i64 @lsame_(ptr noundef %120, ptr noundef @.str.1)
  %122 = icmp ne i64 %121, 0
  br i1 %122, label %125, label %123

123:                                              ; preds = %119
  %124 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 -4, ptr %124, align 8, !tbaa !9
  br label %149

125:                                              ; preds = %119, %115
  %126 = load ptr, ptr %18, align 8, !tbaa !5
  %127 = load i64, ptr %126, align 8, !tbaa !9
  %128 = icmp slt i64 %127, 0
  br i1 %128, label %129, label %131

129:                                              ; preds = %125
  %130 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 -5, ptr %130, align 8, !tbaa !9
  br label %148

131:                                              ; preds = %125
  %132 = load ptr, ptr %19, align 8, !tbaa !5
  %133 = load i64, ptr %132, align 8, !tbaa !9
  %134 = icmp slt i64 %133, 0
  br i1 %134, label %135, label %137

135:                                              ; preds = %131
  %136 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 -6, ptr %136, align 8, !tbaa !9
  br label %147

137:                                              ; preds = %131
  %138 = load ptr, ptr %21, align 8, !tbaa !5
  %139 = load i64, ptr %138, align 8, !tbaa !9
  %140 = load ptr, ptr %19, align 8, !tbaa !5
  %141 = load i64, ptr %140, align 8, !tbaa !9
  %142 = add nsw i64 %141, 1
  %143 = icmp slt i64 %139, %142
  br i1 %143, label %144, label %146

144:                                              ; preds = %137
  %145 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 -8, ptr %145, align 8, !tbaa !9
  br label %146

146:                                              ; preds = %144, %137
  br label %147

147:                                              ; preds = %146, %135
  br label %148

148:                                              ; preds = %147, %129
  br label %149

149:                                              ; preds = %148, %123
  br label %150

150:                                              ; preds = %149, %113
  br label %151

151:                                              ; preds = %150, %104
  br label %152

152:                                              ; preds = %151, %91
  %153 = load ptr, ptr %25, align 8, !tbaa !5
  %154 = load i64, ptr %153, align 8, !tbaa !9
  %155 = icmp ne i64 %154, 0
  br i1 %155, label %156, label %161

156:                                              ; preds = %152
  %157 = load ptr, ptr %25, align 8, !tbaa !5
  %158 = load i64, ptr %157, align 8, !tbaa !9
  %159 = sub nsw i64 0, %158
  store i64 %159, ptr %28, align 8, !tbaa !9
  %160 = call i32 @xerbla_(ptr noundef @.str.6, ptr noundef %28)
  store i32 0, ptr %13, align 4
  store i32 1, ptr %65, align 4
  br label %3032

161:                                              ; preds = %152
  %162 = load ptr, ptr %18, align 8, !tbaa !5
  %163 = load i64, ptr %162, align 8, !tbaa !9
  %164 = icmp eq i64 %163, 0
  br i1 %164, label %165, label %166

165:                                              ; preds = %161
  store i32 0, ptr %13, align 4
  store i32 1, ptr %65, align 4
  br label %3032

166:                                              ; preds = %161
  %167 = call double @dlamch_(ptr noundef @.str.7)
  store double %167, ptr %63, align 8, !tbaa !11
  %168 = load double, ptr %63, align 8, !tbaa !11
  %169 = fdiv double 1.000000e+00, %168
  store double %169, ptr %60, align 8, !tbaa !11
  %170 = call i32 @dlabad_(ptr noundef %63, ptr noundef %60)
  %171 = call double @dlamch_(ptr noundef @.str.8)
  %172 = load double, ptr %63, align 8, !tbaa !11
  %173 = fdiv double %172, %171
  store double %173, ptr %63, align 8, !tbaa !11
  %174 = load double, ptr %63, align 8, !tbaa !11
  %175 = fdiv double 1.000000e+00, %174
  store double %175, ptr %60, align 8, !tbaa !11
  %176 = load ptr, ptr %23, align 8, !tbaa !5
  store double 1.000000e+00, ptr %176, align 8, !tbaa !11
  %177 = load ptr, ptr %17, align 8, !tbaa !5
  %178 = call i64 @lsame_(ptr noundef %177, ptr noundef @.str.1)
  %179 = icmp ne i64 %178, 0
  br i1 %179, label %180, label %269

180:                                              ; preds = %166
  %181 = load i64, ptr %59, align 8, !tbaa !9
  %182 = icmp ne i64 %181, 0
  br i1 %182, label %183, label %223

183:                                              ; preds = %180
  %184 = load ptr, ptr %18, align 8, !tbaa !5
  %185 = load i64, ptr %184, align 8, !tbaa !9
  store i64 %185, ptr %28, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %186

186:                                              ; preds = %219, %183
  %187 = load i64, ptr %42, align 8, !tbaa !9
  %188 = load i64, ptr %28, align 8, !tbaa !9
  %189 = icmp sle i64 %187, %188
  br i1 %189, label %190, label %222

190:                                              ; preds = %186
  %191 = load ptr, ptr %19, align 8, !tbaa !5
  %192 = load i64, ptr %191, align 8, !tbaa !9
  store i64 %192, ptr %29, align 8, !tbaa !9
  %193 = load i64, ptr %42, align 8, !tbaa !9
  %194 = sub nsw i64 %193, 1
  store i64 %194, ptr %30, align 8, !tbaa !9
  %195 = load i64, ptr %29, align 8, !tbaa !9
  %196 = load i64, ptr %30, align 8, !tbaa !9
  %197 = icmp sle i64 %195, %196
  br i1 %197, label %198, label %200

198:                                              ; preds = %190
  %199 = load i64, ptr %29, align 8, !tbaa !9
  br label %202

200:                                              ; preds = %190
  %201 = load i64, ptr %30, align 8, !tbaa !9
  br label %202

202:                                              ; preds = %200, %198
  %203 = phi i64 [ %199, %198 ], [ %201, %200 ]
  store i64 %203, ptr %47, align 8, !tbaa !9
  %204 = load ptr, ptr %20, align 8, !tbaa !5
  %205 = load ptr, ptr %19, align 8, !tbaa !5
  %206 = load i64, ptr %205, align 8, !tbaa !9
  %207 = add nsw i64 %206, 1
  %208 = load i64, ptr %47, align 8, !tbaa !9
  %209 = sub nsw i64 %207, %208
  %210 = load i64, ptr %42, align 8, !tbaa !9
  %211 = load i64, ptr %26, align 8, !tbaa !9
  %212 = mul nsw i64 %210, %211
  %213 = add nsw i64 %209, %212
  %214 = getelementptr inbounds %struct.doublecomplex, ptr %204, i64 %213
  %215 = call double @f2c_dzasum(ptr noundef %47, ptr noundef %214, ptr noundef @c__1)
  %216 = load ptr, ptr %24, align 8, !tbaa !5
  %217 = load i64, ptr %42, align 8, !tbaa !9
  %218 = getelementptr inbounds double, ptr %216, i64 %217
  store double %215, ptr %218, align 8, !tbaa !11
  br label %219

219:                                              ; preds = %202
  %220 = load i64, ptr %42, align 8, !tbaa !9
  %221 = add nsw i64 %220, 1
  store i64 %221, ptr %42, align 8, !tbaa !9
  br label %186, !llvm.loop !13

222:                                              ; preds = %186
  br label %268

223:                                              ; preds = %180
  %224 = load ptr, ptr %18, align 8, !tbaa !5
  %225 = load i64, ptr %224, align 8, !tbaa !9
  store i64 %225, ptr %28, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %226

226:                                              ; preds = %264, %223
  %227 = load i64, ptr %42, align 8, !tbaa !9
  %228 = load i64, ptr %28, align 8, !tbaa !9
  %229 = icmp sle i64 %227, %228
  br i1 %229, label %230, label %267

230:                                              ; preds = %226
  %231 = load ptr, ptr %19, align 8, !tbaa !5
  %232 = load i64, ptr %231, align 8, !tbaa !9
  store i64 %232, ptr %29, align 8, !tbaa !9
  %233 = load ptr, ptr %18, align 8, !tbaa !5
  %234 = load i64, ptr %233, align 8, !tbaa !9
  %235 = load i64, ptr %42, align 8, !tbaa !9
  %236 = sub nsw i64 %234, %235
  store i64 %236, ptr %30, align 8, !tbaa !9
  %237 = load i64, ptr %29, align 8, !tbaa !9
  %238 = load i64, ptr %30, align 8, !tbaa !9
  %239 = icmp sle i64 %237, %238
  br i1 %239, label %240, label %242

240:                                              ; preds = %230
  %241 = load i64, ptr %29, align 8, !tbaa !9
  br label %244

242:                                              ; preds = %230
  %243 = load i64, ptr %30, align 8, !tbaa !9
  br label %244

244:                                              ; preds = %242, %240
  %245 = phi i64 [ %241, %240 ], [ %243, %242 ]
  store i64 %245, ptr %47, align 8, !tbaa !9
  %246 = load i64, ptr %47, align 8, !tbaa !9
  %247 = icmp sgt i64 %246, 0
  br i1 %247, label %248, label %259

248:                                              ; preds = %244
  %249 = load ptr, ptr %20, align 8, !tbaa !5
  %250 = load i64, ptr %42, align 8, !tbaa !9
  %251 = load i64, ptr %26, align 8, !tbaa !9
  %252 = mul nsw i64 %250, %251
  %253 = add nsw i64 %252, 2
  %254 = getelementptr inbounds %struct.doublecomplex, ptr %249, i64 %253
  %255 = call double @f2c_dzasum(ptr noundef %47, ptr noundef %254, ptr noundef @c__1)
  %256 = load ptr, ptr %24, align 8, !tbaa !5
  %257 = load i64, ptr %42, align 8, !tbaa !9
  %258 = getelementptr inbounds double, ptr %256, i64 %257
  store double %255, ptr %258, align 8, !tbaa !11
  br label %263

259:                                              ; preds = %244
  %260 = load ptr, ptr %24, align 8, !tbaa !5
  %261 = load i64, ptr %42, align 8, !tbaa !9
  %262 = getelementptr inbounds double, ptr %260, i64 %261
  store double 0.000000e+00, ptr %262, align 8, !tbaa !11
  br label %263

263:                                              ; preds = %259, %248
  br label %264

264:                                              ; preds = %263
  %265 = load i64, ptr %42, align 8, !tbaa !9
  %266 = add nsw i64 %265, 1
  store i64 %266, ptr %42, align 8, !tbaa !9
  br label %226, !llvm.loop !15

267:                                              ; preds = %226
  br label %268

268:                                              ; preds = %267, %222
  br label %269

269:                                              ; preds = %268, %166
  %270 = load ptr, ptr %18, align 8, !tbaa !5
  %271 = load ptr, ptr %24, align 8, !tbaa !5
  %272 = getelementptr inbounds double, ptr %271, i64 1
  %273 = call i64 @f2c_idamax(ptr noundef %270, ptr noundef %272, ptr noundef @c__1)
  store i64 %273, ptr %49, align 8, !tbaa !9
  %274 = load ptr, ptr %24, align 8, !tbaa !5
  %275 = load i64, ptr %49, align 8, !tbaa !9
  %276 = getelementptr inbounds double, ptr %274, i64 %275
  %277 = load double, ptr %276, align 8, !tbaa !11
  store double %277, ptr %50, align 8, !tbaa !11
  %278 = load double, ptr %50, align 8, !tbaa !11
  %279 = load double, ptr %60, align 8, !tbaa !11
  %280 = fmul double %279, 5.000000e-01
  %281 = fcmp ole double %278, %280
  br i1 %281, label %282, label %283

282:                                              ; preds = %269
  store double 1.000000e+00, ptr %55, align 8, !tbaa !11
  br label %292

283:                                              ; preds = %269
  %284 = load double, ptr %63, align 8, !tbaa !11
  %285 = load double, ptr %50, align 8, !tbaa !11
  %286 = fmul double %284, %285
  %287 = fdiv double 5.000000e-01, %286
  store double %287, ptr %55, align 8, !tbaa !11
  %288 = load ptr, ptr %18, align 8, !tbaa !5
  %289 = load ptr, ptr %24, align 8, !tbaa !5
  %290 = getelementptr inbounds double, ptr %289, i64 1
  %291 = call i32 @f2c_dscal(ptr noundef %288, ptr noundef %55, ptr noundef %290, ptr noundef @c__1)
  br label %292

292:                                              ; preds = %283, %282
  store double 0.000000e+00, ptr %52, align 8, !tbaa !11
  %293 = load ptr, ptr %18, align 8, !tbaa !5
  %294 = load i64, ptr %293, align 8, !tbaa !9
  store i64 %294, ptr %28, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %295

295:                                              ; preds = %341, %292
  %296 = load i64, ptr %42, align 8, !tbaa !9
  %297 = load i64, ptr %28, align 8, !tbaa !9
  %298 = icmp sle i64 %296, %297
  br i1 %298, label %299, label %344

299:                                              ; preds = %295
  %300 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %300, ptr %29, align 8, !tbaa !9
  %301 = load double, ptr %52, align 8, !tbaa !11
  store double %301, ptr %35, align 8, !tbaa !11
  %302 = load ptr, ptr %22, align 8, !tbaa !5
  %303 = load i64, ptr %29, align 8, !tbaa !9
  %304 = getelementptr inbounds %struct.doublecomplex, ptr %302, i64 %303
  %305 = getelementptr inbounds %struct.doublecomplex, ptr %304, i32 0, i32 0
  %306 = load double, ptr %305, align 8, !tbaa !16
  %307 = fdiv double %306, 2.000000e+00
  store double %307, ptr %33, align 8, !tbaa !11
  %308 = load double, ptr %33, align 8, !tbaa !11
  %309 = fcmp oge double %308, 0.000000e+00
  br i1 %309, label %310, label %312

310:                                              ; preds = %299
  %311 = load double, ptr %33, align 8, !tbaa !11
  br label %315

312:                                              ; preds = %299
  %313 = load double, ptr %33, align 8, !tbaa !11
  %314 = fneg double %313
  br label %315

315:                                              ; preds = %312, %310
  %316 = phi double [ %311, %310 ], [ %314, %312 ]
  %317 = load ptr, ptr %22, align 8, !tbaa !5
  %318 = load i64, ptr %42, align 8, !tbaa !9
  %319 = getelementptr inbounds %struct.doublecomplex, ptr %317, i64 %318
  %320 = call double @d_imag(ptr noundef %319)
  %321 = fdiv double %320, 2.000000e+00
  store double %321, ptr %34, align 8, !tbaa !11
  %322 = load double, ptr %34, align 8, !tbaa !11
  %323 = fcmp oge double %322, 0.000000e+00
  br i1 %323, label %324, label %326

324:                                              ; preds = %315
  %325 = load double, ptr %34, align 8, !tbaa !11
  br label %329

326:                                              ; preds = %315
  %327 = load double, ptr %34, align 8, !tbaa !11
  %328 = fneg double %327
  br label %329

329:                                              ; preds = %326, %324
  %330 = phi double [ %325, %324 ], [ %328, %326 ]
  %331 = fadd double %316, %330
  store double %331, ptr %36, align 8, !tbaa !11
  %332 = load double, ptr %35, align 8, !tbaa !11
  %333 = load double, ptr %36, align 8, !tbaa !11
  %334 = fcmp oge double %332, %333
  br i1 %334, label %335, label %337

335:                                              ; preds = %329
  %336 = load double, ptr %35, align 8, !tbaa !11
  br label %339

337:                                              ; preds = %329
  %338 = load double, ptr %36, align 8, !tbaa !11
  br label %339

339:                                              ; preds = %337, %335
  %340 = phi double [ %336, %335 ], [ %338, %337 ]
  store double %340, ptr %52, align 8, !tbaa !11
  br label %341

341:                                              ; preds = %339
  %342 = load i64, ptr %42, align 8, !tbaa !9
  %343 = add nsw i64 %342, 1
  store i64 %343, ptr %42, align 8, !tbaa !9
  br label %295, !llvm.loop !18

344:                                              ; preds = %295
  %345 = load double, ptr %52, align 8, !tbaa !11
  store double %345, ptr %48, align 8, !tbaa !11
  %346 = load i64, ptr %61, align 8, !tbaa !9
  %347 = icmp ne i64 %346, 0
  br i1 %347, label %348, label %555

348:                                              ; preds = %344
  %349 = load i64, ptr %59, align 8, !tbaa !9
  %350 = icmp ne i64 %349, 0
  br i1 %350, label %351, label %357

351:                                              ; preds = %348
  %352 = load ptr, ptr %18, align 8, !tbaa !5
  %353 = load i64, ptr %352, align 8, !tbaa !9
  store i64 %353, ptr %62, align 8, !tbaa !9
  store i64 1, ptr %57, align 8, !tbaa !9
  store i64 -1, ptr %46, align 8, !tbaa !9
  %354 = load ptr, ptr %19, align 8, !tbaa !5
  %355 = load i64, ptr %354, align 8, !tbaa !9
  %356 = add nsw i64 %355, 1
  store i64 %356, ptr %54, align 8, !tbaa !9
  br label %360

357:                                              ; preds = %348
  store i64 1, ptr %62, align 8, !tbaa !9
  %358 = load ptr, ptr %18, align 8, !tbaa !5
  %359 = load i64, ptr %358, align 8, !tbaa !9
  store i64 %359, ptr %57, align 8, !tbaa !9
  store i64 1, ptr %46, align 8, !tbaa !9
  store i64 1, ptr %54, align 8, !tbaa !9
  br label %360

360:                                              ; preds = %357, %351
  %361 = load double, ptr %55, align 8, !tbaa !11
  %362 = fcmp une double %361, 1.000000e+00
  br i1 %362, label %363, label %364

363:                                              ; preds = %360
  store double 0.000000e+00, ptr %53, align 8, !tbaa !11
  br label %554

364:                                              ; preds = %360
  %365 = load i64, ptr %64, align 8, !tbaa !9
  %366 = icmp ne i64 %365, 0
  br i1 %366, label %367, label %495

367:                                              ; preds = %364
  %368 = load double, ptr %48, align 8, !tbaa !11
  %369 = load double, ptr %63, align 8, !tbaa !11
  %370 = fcmp oge double %368, %369
  br i1 %370, label %371, label %373

371:                                              ; preds = %367
  %372 = load double, ptr %48, align 8, !tbaa !11
  br label %375

373:                                              ; preds = %367
  %374 = load double, ptr %63, align 8, !tbaa !11
  br label %375

375:                                              ; preds = %373, %371
  %376 = phi double [ %372, %371 ], [ %374, %373 ]
  %377 = fdiv double 5.000000e-01, %376
  store double %377, ptr %53, align 8, !tbaa !11
  %378 = load double, ptr %53, align 8, !tbaa !11
  store double %378, ptr %48, align 8, !tbaa !11
  %379 = load i64, ptr %57, align 8, !tbaa !9
  store i64 %379, ptr %28, align 8, !tbaa !9
  %380 = load i64, ptr %46, align 8, !tbaa !9
  store i64 %380, ptr %29, align 8, !tbaa !9
  %381 = load i64, ptr %62, align 8, !tbaa !9
  store i64 %381, ptr %42, align 8, !tbaa !9
  br label %382

382:                                              ; preds = %489, %375
  %383 = load i64, ptr %29, align 8, !tbaa !9
  %384 = icmp slt i64 %383, 0
  br i1 %384, label %385, label %390

385:                                              ; preds = %382
  %386 = load i64, ptr %42, align 8, !tbaa !9
  %387 = load i64, ptr %28, align 8, !tbaa !9
  %388 = icmp sge i64 %386, %387
  %389 = zext i1 %388 to i32
  br label %395

390:                                              ; preds = %382
  %391 = load i64, ptr %42, align 8, !tbaa !9
  %392 = load i64, ptr %28, align 8, !tbaa !9
  %393 = icmp sle i64 %391, %392
  %394 = zext i1 %393 to i32
  br label %395

395:                                              ; preds = %390, %385
  %396 = phi i32 [ %389, %385 ], [ %394, %390 ]
  %397 = icmp ne i32 %396, 0
  br i1 %397, label %398, label %493

398:                                              ; preds = %395
  %399 = load double, ptr %53, align 8, !tbaa !11
  %400 = load double, ptr %63, align 8, !tbaa !11
  %401 = fcmp ole double %399, %400
  br i1 %401, label %402, label %403

402:                                              ; preds = %398
  br label %554

403:                                              ; preds = %398
  %404 = load i64, ptr %54, align 8, !tbaa !9
  %405 = load i64, ptr %42, align 8, !tbaa !9
  %406 = load i64, ptr %26, align 8, !tbaa !9
  %407 = mul nsw i64 %405, %406
  %408 = add nsw i64 %404, %407
  store i64 %408, ptr %30, align 8, !tbaa !9
  %409 = load ptr, ptr %20, align 8, !tbaa !5
  %410 = load i64, ptr %30, align 8, !tbaa !9
  %411 = getelementptr inbounds %struct.doublecomplex, ptr %409, i64 %410
  %412 = getelementptr inbounds %struct.doublecomplex, ptr %411, i32 0, i32 0
  %413 = load double, ptr %412, align 8, !tbaa !16
  %414 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %413, ptr %414, align 8, !tbaa !16
  %415 = load ptr, ptr %20, align 8, !tbaa !5
  %416 = load i64, ptr %30, align 8, !tbaa !9
  %417 = getelementptr inbounds %struct.doublecomplex, ptr %415, i64 %416
  %418 = getelementptr inbounds %struct.doublecomplex, ptr %417, i32 0, i32 1
  %419 = load double, ptr %418, align 8, !tbaa !19
  %420 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double %419, ptr %420, align 8, !tbaa !19
  %421 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %422 = load double, ptr %421, align 8, !tbaa !16
  store double %422, ptr %33, align 8, !tbaa !11
  %423 = load double, ptr %33, align 8, !tbaa !11
  %424 = fcmp oge double %423, 0.000000e+00
  br i1 %424, label %425, label %427

425:                                              ; preds = %403
  %426 = load double, ptr %33, align 8, !tbaa !11
  br label %430

427:                                              ; preds = %403
  %428 = load double, ptr %33, align 8, !tbaa !11
  %429 = fneg double %428
  br label %430

430:                                              ; preds = %427, %425
  %431 = phi double [ %426, %425 ], [ %429, %427 ]
  %432 = call double @d_imag(ptr noundef %51)
  store double %432, ptr %34, align 8, !tbaa !11
  %433 = load double, ptr %34, align 8, !tbaa !11
  %434 = fcmp oge double %433, 0.000000e+00
  br i1 %434, label %435, label %437

435:                                              ; preds = %430
  %436 = load double, ptr %34, align 8, !tbaa !11
  br label %440

437:                                              ; preds = %430
  %438 = load double, ptr %34, align 8, !tbaa !11
  %439 = fneg double %438
  br label %440

440:                                              ; preds = %437, %435
  %441 = phi double [ %436, %435 ], [ %439, %437 ]
  %442 = fadd double %431, %441
  store double %442, ptr %45, align 8, !tbaa !11
  %443 = load double, ptr %45, align 8, !tbaa !11
  %444 = load double, ptr %63, align 8, !tbaa !11
  %445 = fcmp oge double %443, %444
  br i1 %445, label %446, label %466

446:                                              ; preds = %440
  %447 = load double, ptr %48, align 8, !tbaa !11
  store double %447, ptr %33, align 8, !tbaa !11
  %448 = load double, ptr %45, align 8, !tbaa !11
  %449 = fcmp ole double 1.000000e+00, %448
  br i1 %449, label %450, label %451

450:                                              ; preds = %446
  br label %453

451:                                              ; preds = %446
  %452 = load double, ptr %45, align 8, !tbaa !11
  br label %453

453:                                              ; preds = %451, %450
  %454 = phi double [ 1.000000e+00, %450 ], [ %452, %451 ]
  %455 = load double, ptr %53, align 8, !tbaa !11
  %456 = fmul double %454, %455
  store double %456, ptr %34, align 8, !tbaa !11
  %457 = load double, ptr %33, align 8, !tbaa !11
  %458 = load double, ptr %34, align 8, !tbaa !11
  %459 = fcmp ole double %457, %458
  br i1 %459, label %460, label %462

460:                                              ; preds = %453
  %461 = load double, ptr %33, align 8, !tbaa !11
  br label %464

462:                                              ; preds = %453
  %463 = load double, ptr %34, align 8, !tbaa !11
  br label %464

464:                                              ; preds = %462, %460
  %465 = phi double [ %461, %460 ], [ %463, %462 ]
  store double %465, ptr %48, align 8, !tbaa !11
  br label %467

466:                                              ; preds = %440
  store double 0.000000e+00, ptr %48, align 8, !tbaa !11
  br label %467

467:                                              ; preds = %466, %464
  %468 = load double, ptr %45, align 8, !tbaa !11
  %469 = load ptr, ptr %24, align 8, !tbaa !5
  %470 = load i64, ptr %42, align 8, !tbaa !9
  %471 = getelementptr inbounds double, ptr %469, i64 %470
  %472 = load double, ptr %471, align 8, !tbaa !11
  %473 = fadd double %468, %472
  %474 = load double, ptr %63, align 8, !tbaa !11
  %475 = fcmp oge double %473, %474
  br i1 %475, label %476, label %487

476:                                              ; preds = %467
  %477 = load double, ptr %45, align 8, !tbaa !11
  %478 = load double, ptr %45, align 8, !tbaa !11
  %479 = load ptr, ptr %24, align 8, !tbaa !5
  %480 = load i64, ptr %42, align 8, !tbaa !9
  %481 = getelementptr inbounds double, ptr %479, i64 %480
  %482 = load double, ptr %481, align 8, !tbaa !11
  %483 = fadd double %478, %482
  %484 = fdiv double %477, %483
  %485 = load double, ptr %53, align 8, !tbaa !11
  %486 = fmul double %485, %484
  store double %486, ptr %53, align 8, !tbaa !11
  br label %488

487:                                              ; preds = %467
  store double 0.000000e+00, ptr %53, align 8, !tbaa !11
  br label %488

488:                                              ; preds = %487, %476
  br label %489

489:                                              ; preds = %488
  %490 = load i64, ptr %29, align 8, !tbaa !9
  %491 = load i64, ptr %42, align 8, !tbaa !9
  %492 = add nsw i64 %491, %490
  store i64 %492, ptr %42, align 8, !tbaa !9
  br label %382, !llvm.loop !20

493:                                              ; preds = %395
  %494 = load double, ptr %48, align 8, !tbaa !11
  store double %494, ptr %53, align 8, !tbaa !11
  br label %553

495:                                              ; preds = %364
  store double 1.000000e+00, ptr %33, align 8, !tbaa !11
  %496 = load double, ptr %48, align 8, !tbaa !11
  %497 = load double, ptr %63, align 8, !tbaa !11
  %498 = fcmp oge double %496, %497
  br i1 %498, label %499, label %501

499:                                              ; preds = %495
  %500 = load double, ptr %48, align 8, !tbaa !11
  br label %503

501:                                              ; preds = %495
  %502 = load double, ptr %63, align 8, !tbaa !11
  br label %503

503:                                              ; preds = %501, %499
  %504 = phi double [ %500, %499 ], [ %502, %501 ]
  %505 = fdiv double 5.000000e-01, %504
  store double %505, ptr %34, align 8, !tbaa !11
  %506 = load double, ptr %33, align 8, !tbaa !11
  %507 = load double, ptr %34, align 8, !tbaa !11
  %508 = fcmp ole double %506, %507
  br i1 %508, label %509, label %511

509:                                              ; preds = %503
  %510 = load double, ptr %33, align 8, !tbaa !11
  br label %513

511:                                              ; preds = %503
  %512 = load double, ptr %34, align 8, !tbaa !11
  br label %513

513:                                              ; preds = %511, %509
  %514 = phi double [ %510, %509 ], [ %512, %511 ]
  store double %514, ptr %53, align 8, !tbaa !11
  %515 = load i64, ptr %57, align 8, !tbaa !9
  store i64 %515, ptr %29, align 8, !tbaa !9
  %516 = load i64, ptr %46, align 8, !tbaa !9
  store i64 %516, ptr %28, align 8, !tbaa !9
  %517 = load i64, ptr %62, align 8, !tbaa !9
  store i64 %517, ptr %42, align 8, !tbaa !9
  br label %518

518:                                              ; preds = %548, %513
  %519 = load i64, ptr %28, align 8, !tbaa !9
  %520 = icmp slt i64 %519, 0
  br i1 %520, label %521, label %526

521:                                              ; preds = %518
  %522 = load i64, ptr %42, align 8, !tbaa !9
  %523 = load i64, ptr %29, align 8, !tbaa !9
  %524 = icmp sge i64 %522, %523
  %525 = zext i1 %524 to i32
  br label %531

526:                                              ; preds = %518
  %527 = load i64, ptr %42, align 8, !tbaa !9
  %528 = load i64, ptr %29, align 8, !tbaa !9
  %529 = icmp sle i64 %527, %528
  %530 = zext i1 %529 to i32
  br label %531

531:                                              ; preds = %526, %521
  %532 = phi i32 [ %525, %521 ], [ %530, %526 ]
  %533 = icmp ne i32 %532, 0
  br i1 %533, label %534, label %552

534:                                              ; preds = %531
  %535 = load double, ptr %53, align 8, !tbaa !11
  %536 = load double, ptr %63, align 8, !tbaa !11
  %537 = fcmp ole double %535, %536
  br i1 %537, label %538, label %539

538:                                              ; preds = %534
  br label %554

539:                                              ; preds = %534
  %540 = load ptr, ptr %24, align 8, !tbaa !5
  %541 = load i64, ptr %42, align 8, !tbaa !9
  %542 = getelementptr inbounds double, ptr %540, i64 %541
  %543 = load double, ptr %542, align 8, !tbaa !11
  %544 = fadd double %543, 1.000000e+00
  %545 = fdiv double 1.000000e+00, %544
  %546 = load double, ptr %53, align 8, !tbaa !11
  %547 = fmul double %546, %545
  store double %547, ptr %53, align 8, !tbaa !11
  br label %548

548:                                              ; preds = %539
  %549 = load i64, ptr %28, align 8, !tbaa !9
  %550 = load i64, ptr %42, align 8, !tbaa !9
  %551 = add nsw i64 %550, %549
  store i64 %551, ptr %42, align 8, !tbaa !9
  br label %518, !llvm.loop !21

552:                                              ; preds = %531
  br label %553

553:                                              ; preds = %552, %493
  br label %554

554:                                              ; preds = %553, %538, %402, %363
  br label %758

555:                                              ; preds = %344
  %556 = load i64, ptr %59, align 8, !tbaa !9
  %557 = icmp ne i64 %556, 0
  br i1 %557, label %558, label %564

558:                                              ; preds = %555
  store i64 1, ptr %62, align 8, !tbaa !9
  %559 = load ptr, ptr %18, align 8, !tbaa !5
  %560 = load i64, ptr %559, align 8, !tbaa !9
  store i64 %560, ptr %57, align 8, !tbaa !9
  store i64 1, ptr %46, align 8, !tbaa !9
  %561 = load ptr, ptr %19, align 8, !tbaa !5
  %562 = load i64, ptr %561, align 8, !tbaa !9
  %563 = add nsw i64 %562, 1
  store i64 %563, ptr %54, align 8, !tbaa !9
  br label %567

564:                                              ; preds = %555
  %565 = load ptr, ptr %18, align 8, !tbaa !5
  %566 = load i64, ptr %565, align 8, !tbaa !9
  store i64 %566, ptr %62, align 8, !tbaa !9
  store i64 1, ptr %57, align 8, !tbaa !9
  store i64 -1, ptr %46, align 8, !tbaa !9
  store i64 1, ptr %54, align 8, !tbaa !9
  br label %567

567:                                              ; preds = %564, %558
  %568 = load double, ptr %55, align 8, !tbaa !11
  %569 = fcmp une double %568, 1.000000e+00
  br i1 %569, label %570, label %571

570:                                              ; preds = %567
  store double 0.000000e+00, ptr %53, align 8, !tbaa !11
  br label %757

571:                                              ; preds = %567
  %572 = load i64, ptr %64, align 8, !tbaa !9
  %573 = icmp ne i64 %572, 0
  br i1 %573, label %574, label %698

574:                                              ; preds = %571
  %575 = load double, ptr %48, align 8, !tbaa !11
  %576 = load double, ptr %63, align 8, !tbaa !11
  %577 = fcmp oge double %575, %576
  br i1 %577, label %578, label %580

578:                                              ; preds = %574
  %579 = load double, ptr %48, align 8, !tbaa !11
  br label %582

580:                                              ; preds = %574
  %581 = load double, ptr %63, align 8, !tbaa !11
  br label %582

582:                                              ; preds = %580, %578
  %583 = phi double [ %579, %578 ], [ %581, %580 ]
  %584 = fdiv double 5.000000e-01, %583
  store double %584, ptr %53, align 8, !tbaa !11
  %585 = load double, ptr %53, align 8, !tbaa !11
  store double %585, ptr %48, align 8, !tbaa !11
  %586 = load i64, ptr %57, align 8, !tbaa !9
  store i64 %586, ptr %28, align 8, !tbaa !9
  %587 = load i64, ptr %46, align 8, !tbaa !9
  store i64 %587, ptr %29, align 8, !tbaa !9
  %588 = load i64, ptr %62, align 8, !tbaa !9
  store i64 %588, ptr %42, align 8, !tbaa !9
  br label %589

589:                                              ; preds = %684, %582
  %590 = load i64, ptr %29, align 8, !tbaa !9
  %591 = icmp slt i64 %590, 0
  br i1 %591, label %592, label %597

592:                                              ; preds = %589
  %593 = load i64, ptr %42, align 8, !tbaa !9
  %594 = load i64, ptr %28, align 8, !tbaa !9
  %595 = icmp sge i64 %593, %594
  %596 = zext i1 %595 to i32
  br label %602

597:                                              ; preds = %589
  %598 = load i64, ptr %42, align 8, !tbaa !9
  %599 = load i64, ptr %28, align 8, !tbaa !9
  %600 = icmp sle i64 %598, %599
  %601 = zext i1 %600 to i32
  br label %602

602:                                              ; preds = %597, %592
  %603 = phi i32 [ %596, %592 ], [ %601, %597 ]
  %604 = icmp ne i32 %603, 0
  br i1 %604, label %605, label %688

605:                                              ; preds = %602
  %606 = load double, ptr %53, align 8, !tbaa !11
  %607 = load double, ptr %63, align 8, !tbaa !11
  %608 = fcmp ole double %606, %607
  br i1 %608, label %609, label %610

609:                                              ; preds = %605
  br label %757

610:                                              ; preds = %605
  %611 = load ptr, ptr %24, align 8, !tbaa !5
  %612 = load i64, ptr %42, align 8, !tbaa !9
  %613 = getelementptr inbounds double, ptr %611, i64 %612
  %614 = load double, ptr %613, align 8, !tbaa !11
  %615 = fadd double %614, 1.000000e+00
  store double %615, ptr %43, align 8, !tbaa !11
  %616 = load double, ptr %53, align 8, !tbaa !11
  store double %616, ptr %33, align 8, !tbaa !11
  %617 = load double, ptr %48, align 8, !tbaa !11
  %618 = load double, ptr %43, align 8, !tbaa !11
  %619 = fdiv double %617, %618
  store double %619, ptr %34, align 8, !tbaa !11
  %620 = load double, ptr %33, align 8, !tbaa !11
  %621 = load double, ptr %34, align 8, !tbaa !11
  %622 = fcmp ole double %620, %621
  br i1 %622, label %623, label %625

623:                                              ; preds = %610
  %624 = load double, ptr %33, align 8, !tbaa !11
  br label %627

625:                                              ; preds = %610
  %626 = load double, ptr %34, align 8, !tbaa !11
  br label %627

627:                                              ; preds = %625, %623
  %628 = phi double [ %624, %623 ], [ %626, %625 ]
  store double %628, ptr %53, align 8, !tbaa !11
  %629 = load i64, ptr %54, align 8, !tbaa !9
  %630 = load i64, ptr %42, align 8, !tbaa !9
  %631 = load i64, ptr %26, align 8, !tbaa !9
  %632 = mul nsw i64 %630, %631
  %633 = add nsw i64 %629, %632
  store i64 %633, ptr %30, align 8, !tbaa !9
  %634 = load ptr, ptr %20, align 8, !tbaa !5
  %635 = load i64, ptr %30, align 8, !tbaa !9
  %636 = getelementptr inbounds %struct.doublecomplex, ptr %634, i64 %635
  %637 = getelementptr inbounds %struct.doublecomplex, ptr %636, i32 0, i32 0
  %638 = load double, ptr %637, align 8, !tbaa !16
  %639 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %638, ptr %639, align 8, !tbaa !16
  %640 = load ptr, ptr %20, align 8, !tbaa !5
  %641 = load i64, ptr %30, align 8, !tbaa !9
  %642 = getelementptr inbounds %struct.doublecomplex, ptr %640, i64 %641
  %643 = getelementptr inbounds %struct.doublecomplex, ptr %642, i32 0, i32 1
  %644 = load double, ptr %643, align 8, !tbaa !19
  %645 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double %644, ptr %645, align 8, !tbaa !19
  %646 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %647 = load double, ptr %646, align 8, !tbaa !16
  store double %647, ptr %33, align 8, !tbaa !11
  %648 = load double, ptr %33, align 8, !tbaa !11
  %649 = fcmp oge double %648, 0.000000e+00
  br i1 %649, label %650, label %652

650:                                              ; preds = %627
  %651 = load double, ptr %33, align 8, !tbaa !11
  br label %655

652:                                              ; preds = %627
  %653 = load double, ptr %33, align 8, !tbaa !11
  %654 = fneg double %653
  br label %655

655:                                              ; preds = %652, %650
  %656 = phi double [ %651, %650 ], [ %654, %652 ]
  %657 = call double @d_imag(ptr noundef %51)
  store double %657, ptr %34, align 8, !tbaa !11
  %658 = load double, ptr %34, align 8, !tbaa !11
  %659 = fcmp oge double %658, 0.000000e+00
  br i1 %659, label %660, label %662

660:                                              ; preds = %655
  %661 = load double, ptr %34, align 8, !tbaa !11
  br label %665

662:                                              ; preds = %655
  %663 = load double, ptr %34, align 8, !tbaa !11
  %664 = fneg double %663
  br label %665

665:                                              ; preds = %662, %660
  %666 = phi double [ %661, %660 ], [ %664, %662 ]
  %667 = fadd double %656, %666
  store double %667, ptr %45, align 8, !tbaa !11
  %668 = load double, ptr %45, align 8, !tbaa !11
  %669 = load double, ptr %63, align 8, !tbaa !11
  %670 = fcmp oge double %668, %669
  br i1 %670, label %671, label %682

671:                                              ; preds = %665
  %672 = load double, ptr %43, align 8, !tbaa !11
  %673 = load double, ptr %45, align 8, !tbaa !11
  %674 = fcmp ogt double %672, %673
  br i1 %674, label %675, label %681

675:                                              ; preds = %671
  %676 = load double, ptr %45, align 8, !tbaa !11
  %677 = load double, ptr %43, align 8, !tbaa !11
  %678 = fdiv double %676, %677
  %679 = load double, ptr %48, align 8, !tbaa !11
  %680 = fmul double %679, %678
  store double %680, ptr %48, align 8, !tbaa !11
  br label %681

681:                                              ; preds = %675, %671
  br label %683

682:                                              ; preds = %665
  store double 0.000000e+00, ptr %48, align 8, !tbaa !11
  br label %683

683:                                              ; preds = %682, %681
  br label %684

684:                                              ; preds = %683
  %685 = load i64, ptr %29, align 8, !tbaa !9
  %686 = load i64, ptr %42, align 8, !tbaa !9
  %687 = add nsw i64 %686, %685
  store i64 %687, ptr %42, align 8, !tbaa !9
  br label %589, !llvm.loop !22

688:                                              ; preds = %602
  %689 = load double, ptr %53, align 8, !tbaa !11
  %690 = load double, ptr %48, align 8, !tbaa !11
  %691 = fcmp ole double %689, %690
  br i1 %691, label %692, label %694

692:                                              ; preds = %688
  %693 = load double, ptr %53, align 8, !tbaa !11
  br label %696

694:                                              ; preds = %688
  %695 = load double, ptr %48, align 8, !tbaa !11
  br label %696

696:                                              ; preds = %694, %692
  %697 = phi double [ %693, %692 ], [ %695, %694 ]
  store double %697, ptr %53, align 8, !tbaa !11
  br label %756

698:                                              ; preds = %571
  store double 1.000000e+00, ptr %33, align 8, !tbaa !11
  %699 = load double, ptr %48, align 8, !tbaa !11
  %700 = load double, ptr %63, align 8, !tbaa !11
  %701 = fcmp oge double %699, %700
  br i1 %701, label %702, label %704

702:                                              ; preds = %698
  %703 = load double, ptr %48, align 8, !tbaa !11
  br label %706

704:                                              ; preds = %698
  %705 = load double, ptr %63, align 8, !tbaa !11
  br label %706

706:                                              ; preds = %704, %702
  %707 = phi double [ %703, %702 ], [ %705, %704 ]
  %708 = fdiv double 5.000000e-01, %707
  store double %708, ptr %34, align 8, !tbaa !11
  %709 = load double, ptr %33, align 8, !tbaa !11
  %710 = load double, ptr %34, align 8, !tbaa !11
  %711 = fcmp ole double %709, %710
  br i1 %711, label %712, label %714

712:                                              ; preds = %706
  %713 = load double, ptr %33, align 8, !tbaa !11
  br label %716

714:                                              ; preds = %706
  %715 = load double, ptr %34, align 8, !tbaa !11
  br label %716

716:                                              ; preds = %714, %712
  %717 = phi double [ %713, %712 ], [ %715, %714 ]
  store double %717, ptr %53, align 8, !tbaa !11
  %718 = load i64, ptr %57, align 8, !tbaa !9
  store i64 %718, ptr %29, align 8, !tbaa !9
  %719 = load i64, ptr %46, align 8, !tbaa !9
  store i64 %719, ptr %28, align 8, !tbaa !9
  %720 = load i64, ptr %62, align 8, !tbaa !9
  store i64 %720, ptr %42, align 8, !tbaa !9
  br label %721

721:                                              ; preds = %751, %716
  %722 = load i64, ptr %28, align 8, !tbaa !9
  %723 = icmp slt i64 %722, 0
  br i1 %723, label %724, label %729

724:                                              ; preds = %721
  %725 = load i64, ptr %42, align 8, !tbaa !9
  %726 = load i64, ptr %29, align 8, !tbaa !9
  %727 = icmp sge i64 %725, %726
  %728 = zext i1 %727 to i32
  br label %734

729:                                              ; preds = %721
  %730 = load i64, ptr %42, align 8, !tbaa !9
  %731 = load i64, ptr %29, align 8, !tbaa !9
  %732 = icmp sle i64 %730, %731
  %733 = zext i1 %732 to i32
  br label %734

734:                                              ; preds = %729, %724
  %735 = phi i32 [ %728, %724 ], [ %733, %729 ]
  %736 = icmp ne i32 %735, 0
  br i1 %736, label %737, label %755

737:                                              ; preds = %734
  %738 = load double, ptr %53, align 8, !tbaa !11
  %739 = load double, ptr %63, align 8, !tbaa !11
  %740 = fcmp ole double %738, %739
  br i1 %740, label %741, label %742

741:                                              ; preds = %737
  br label %757

742:                                              ; preds = %737
  %743 = load ptr, ptr %24, align 8, !tbaa !5
  %744 = load i64, ptr %42, align 8, !tbaa !9
  %745 = getelementptr inbounds double, ptr %743, i64 %744
  %746 = load double, ptr %745, align 8, !tbaa !11
  %747 = fadd double %746, 1.000000e+00
  store double %747, ptr %43, align 8, !tbaa !11
  %748 = load double, ptr %43, align 8, !tbaa !11
  %749 = load double, ptr %53, align 8, !tbaa !11
  %750 = fdiv double %749, %748
  store double %750, ptr %53, align 8, !tbaa !11
  br label %751

751:                                              ; preds = %742
  %752 = load i64, ptr %28, align 8, !tbaa !9
  %753 = load i64, ptr %42, align 8, !tbaa !9
  %754 = add nsw i64 %753, %752
  store i64 %754, ptr %42, align 8, !tbaa !9
  br label %721, !llvm.loop !23

755:                                              ; preds = %734
  br label %756

756:                                              ; preds = %755, %696
  br label %757

757:                                              ; preds = %756, %741, %609, %570
  br label %758

758:                                              ; preds = %757, %554
  %759 = load double, ptr %53, align 8, !tbaa !11
  %760 = load double, ptr %55, align 8, !tbaa !11
  %761 = fmul double %759, %760
  %762 = load double, ptr %63, align 8, !tbaa !11
  %763 = fcmp ogt double %761, %762
  br i1 %763, label %764, label %777

764:                                              ; preds = %758
  %765 = load ptr, ptr %14, align 8, !tbaa !5
  %766 = load ptr, ptr %15, align 8, !tbaa !5
  %767 = load ptr, ptr %16, align 8, !tbaa !5
  %768 = load ptr, ptr %18, align 8, !tbaa !5
  %769 = load ptr, ptr %19, align 8, !tbaa !5
  %770 = load ptr, ptr %20, align 8, !tbaa !5
  %771 = load i64, ptr %27, align 8, !tbaa !9
  %772 = getelementptr inbounds %struct.doublecomplex, ptr %770, i64 %771
  %773 = load ptr, ptr %21, align 8, !tbaa !5
  %774 = load ptr, ptr %22, align 8, !tbaa !5
  %775 = getelementptr inbounds %struct.doublecomplex, ptr %774, i64 1
  %776 = call i32 @f2c_ztbsv(ptr noundef %765, ptr noundef %766, ptr noundef %767, ptr noundef %768, ptr noundef %769, ptr noundef %772, ptr noundef %773, ptr noundef %775, ptr noundef @c__1)
  br label %3021

777:                                              ; preds = %758
  %778 = load double, ptr %52, align 8, !tbaa !11
  %779 = load double, ptr %60, align 8, !tbaa !11
  %780 = fmul double %779, 5.000000e-01
  %781 = fcmp ogt double %778, %780
  br i1 %781, label %782, label %794

782:                                              ; preds = %777
  %783 = load double, ptr %60, align 8, !tbaa !11
  %784 = fmul double %783, 5.000000e-01
  %785 = load double, ptr %52, align 8, !tbaa !11
  %786 = fdiv double %784, %785
  %787 = load ptr, ptr %23, align 8, !tbaa !5
  store double %786, ptr %787, align 8, !tbaa !11
  %788 = load ptr, ptr %18, align 8, !tbaa !5
  %789 = load ptr, ptr %23, align 8, !tbaa !5
  %790 = load ptr, ptr %22, align 8, !tbaa !5
  %791 = getelementptr inbounds %struct.doublecomplex, ptr %790, i64 1
  %792 = call i32 @f2c_zdscal(ptr noundef %788, ptr noundef %789, ptr noundef %791, ptr noundef @c__1)
  %793 = load double, ptr %60, align 8, !tbaa !11
  store double %793, ptr %52, align 8, !tbaa !11
  br label %797

794:                                              ; preds = %777
  %795 = load double, ptr %52, align 8, !tbaa !11
  %796 = fmul double %795, 2.000000e+00
  store double %796, ptr %52, align 8, !tbaa !11
  br label %797

797:                                              ; preds = %794, %782
  %798 = load i64, ptr %61, align 8, !tbaa !9
  %799 = icmp ne i64 %798, 0
  br i1 %799, label %800, label %1355

800:                                              ; preds = %797
  %801 = load i64, ptr %57, align 8, !tbaa !9
  store i64 %801, ptr %28, align 8, !tbaa !9
  %802 = load i64, ptr %46, align 8, !tbaa !9
  store i64 %802, ptr %29, align 8, !tbaa !9
  %803 = load i64, ptr %62, align 8, !tbaa !9
  store i64 %803, ptr %42, align 8, !tbaa !9
  br label %804

804:                                              ; preds = %1350, %800
  %805 = load i64, ptr %29, align 8, !tbaa !9
  %806 = icmp slt i64 %805, 0
  br i1 %806, label %807, label %812

807:                                              ; preds = %804
  %808 = load i64, ptr %42, align 8, !tbaa !9
  %809 = load i64, ptr %28, align 8, !tbaa !9
  %810 = icmp sge i64 %808, %809
  %811 = zext i1 %810 to i32
  br label %817

812:                                              ; preds = %804
  %813 = load i64, ptr %42, align 8, !tbaa !9
  %814 = load i64, ptr %28, align 8, !tbaa !9
  %815 = icmp sle i64 %813, %814
  %816 = zext i1 %815 to i32
  br label %817

817:                                              ; preds = %812, %807
  %818 = phi i32 [ %811, %807 ], [ %816, %812 ]
  %819 = icmp ne i32 %818, 0
  br i1 %819, label %820, label %1354

820:                                              ; preds = %817
  %821 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %821, ptr %30, align 8, !tbaa !9
  %822 = load ptr, ptr %22, align 8, !tbaa !5
  %823 = load i64, ptr %30, align 8, !tbaa !9
  %824 = getelementptr inbounds %struct.doublecomplex, ptr %822, i64 %823
  %825 = getelementptr inbounds %struct.doublecomplex, ptr %824, i32 0, i32 0
  %826 = load double, ptr %825, align 8, !tbaa !16
  store double %826, ptr %33, align 8, !tbaa !11
  %827 = load double, ptr %33, align 8, !tbaa !11
  %828 = fcmp oge double %827, 0.000000e+00
  br i1 %828, label %829, label %831

829:                                              ; preds = %820
  %830 = load double, ptr %33, align 8, !tbaa !11
  br label %834

831:                                              ; preds = %820
  %832 = load double, ptr %33, align 8, !tbaa !11
  %833 = fneg double %832
  br label %834

834:                                              ; preds = %831, %829
  %835 = phi double [ %830, %829 ], [ %833, %831 ]
  %836 = load ptr, ptr %22, align 8, !tbaa !5
  %837 = load i64, ptr %42, align 8, !tbaa !9
  %838 = getelementptr inbounds %struct.doublecomplex, ptr %836, i64 %837
  %839 = call double @d_imag(ptr noundef %838)
  store double %839, ptr %34, align 8, !tbaa !11
  %840 = load double, ptr %34, align 8, !tbaa !11
  %841 = fcmp oge double %840, 0.000000e+00
  br i1 %841, label %842, label %844

842:                                              ; preds = %834
  %843 = load double, ptr %34, align 8, !tbaa !11
  br label %847

844:                                              ; preds = %834
  %845 = load double, ptr %34, align 8, !tbaa !11
  %846 = fneg double %845
  br label %847

847:                                              ; preds = %844, %842
  %848 = phi double [ %843, %842 ], [ %846, %844 ]
  %849 = fadd double %835, %848
  store double %849, ptr %43, align 8, !tbaa !11
  %850 = load i64, ptr %64, align 8, !tbaa !9
  %851 = icmp ne i64 %850, 0
  br i1 %851, label %852, label %880

852:                                              ; preds = %847
  %853 = load i64, ptr %54, align 8, !tbaa !9
  %854 = load i64, ptr %42, align 8, !tbaa !9
  %855 = load i64, ptr %26, align 8, !tbaa !9
  %856 = mul nsw i64 %854, %855
  %857 = add nsw i64 %853, %856
  store i64 %857, ptr %30, align 8, !tbaa !9
  %858 = load double, ptr %55, align 8, !tbaa !11
  %859 = load ptr, ptr %20, align 8, !tbaa !5
  %860 = load i64, ptr %30, align 8, !tbaa !9
  %861 = getelementptr inbounds %struct.doublecomplex, ptr %859, i64 %860
  %862 = getelementptr inbounds %struct.doublecomplex, ptr %861, i32 0, i32 0
  %863 = load double, ptr %862, align 8, !tbaa !16
  %864 = fmul double %858, %863
  %865 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  store double %864, ptr %865, align 8, !tbaa !16
  %866 = load double, ptr %55, align 8, !tbaa !11
  %867 = load ptr, ptr %20, align 8, !tbaa !5
  %868 = load i64, ptr %30, align 8, !tbaa !9
  %869 = getelementptr inbounds %struct.doublecomplex, ptr %867, i64 %868
  %870 = getelementptr inbounds %struct.doublecomplex, ptr %869, i32 0, i32 1
  %871 = load double, ptr %870, align 8, !tbaa !19
  %872 = fmul double %866, %871
  %873 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  store double %872, ptr %873, align 8, !tbaa !19
  %874 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  %875 = load double, ptr %874, align 8, !tbaa !16
  %876 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %875, ptr %876, align 8, !tbaa !16
  %877 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  %878 = load double, ptr %877, align 8, !tbaa !19
  %879 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double %878, ptr %879, align 8, !tbaa !19
  br label %888

880:                                              ; preds = %847
  %881 = load double, ptr %55, align 8, !tbaa !11
  %882 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %881, ptr %882, align 8, !tbaa !16
  %883 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double 0.000000e+00, ptr %883, align 8, !tbaa !19
  %884 = load double, ptr %55, align 8, !tbaa !11
  %885 = fcmp oeq double %884, 1.000000e+00
  br i1 %885, label %886, label %887

886:                                              ; preds = %880
  br label %1102

887:                                              ; preds = %880
  br label %888

888:                                              ; preds = %887, %852
  %889 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %890 = load double, ptr %889, align 8, !tbaa !16
  store double %890, ptr %33, align 8, !tbaa !11
  %891 = load double, ptr %33, align 8, !tbaa !11
  %892 = fcmp oge double %891, 0.000000e+00
  br i1 %892, label %893, label %895

893:                                              ; preds = %888
  %894 = load double, ptr %33, align 8, !tbaa !11
  br label %898

895:                                              ; preds = %888
  %896 = load double, ptr %33, align 8, !tbaa !11
  %897 = fneg double %896
  br label %898

898:                                              ; preds = %895, %893
  %899 = phi double [ %894, %893 ], [ %897, %895 ]
  %900 = call double @d_imag(ptr noundef %51)
  store double %900, ptr %34, align 8, !tbaa !11
  %901 = load double, ptr %34, align 8, !tbaa !11
  %902 = fcmp oge double %901, 0.000000e+00
  br i1 %902, label %903, label %905

903:                                              ; preds = %898
  %904 = load double, ptr %34, align 8, !tbaa !11
  br label %908

905:                                              ; preds = %898
  %906 = load double, ptr %34, align 8, !tbaa !11
  %907 = fneg double %906
  br label %908

908:                                              ; preds = %905, %903
  %909 = phi double [ %904, %903 ], [ %907, %905 ]
  %910 = fadd double %899, %909
  store double %910, ptr %45, align 8, !tbaa !11
  %911 = load double, ptr %45, align 8, !tbaa !11
  %912 = load double, ptr %63, align 8, !tbaa !11
  %913 = fcmp ogt double %911, %912
  br i1 %913, label %914, label %984

914:                                              ; preds = %908
  %915 = load double, ptr %45, align 8, !tbaa !11
  %916 = fcmp olt double %915, 1.000000e+00
  br i1 %916, label %917, label %938

917:                                              ; preds = %914
  %918 = load double, ptr %43, align 8, !tbaa !11
  %919 = load double, ptr %45, align 8, !tbaa !11
  %920 = load double, ptr %60, align 8, !tbaa !11
  %921 = fmul double %919, %920
  %922 = fcmp ogt double %918, %921
  br i1 %922, label %923, label %937

923:                                              ; preds = %917
  %924 = load double, ptr %43, align 8, !tbaa !11
  %925 = fdiv double 1.000000e+00, %924
  store double %925, ptr %44, align 8, !tbaa !11
  %926 = load ptr, ptr %18, align 8, !tbaa !5
  %927 = load ptr, ptr %22, align 8, !tbaa !5
  %928 = getelementptr inbounds %struct.doublecomplex, ptr %927, i64 1
  %929 = call i32 @f2c_zdscal(ptr noundef %926, ptr noundef %44, ptr noundef %928, ptr noundef @c__1)
  %930 = load double, ptr %44, align 8, !tbaa !11
  %931 = load ptr, ptr %23, align 8, !tbaa !5
  %932 = load double, ptr %931, align 8, !tbaa !11
  %933 = fmul double %932, %930
  store double %933, ptr %931, align 8, !tbaa !11
  %934 = load double, ptr %44, align 8, !tbaa !11
  %935 = load double, ptr %52, align 8, !tbaa !11
  %936 = fmul double %935, %934
  store double %936, ptr %52, align 8, !tbaa !11
  br label %937

937:                                              ; preds = %923, %917
  br label %938

938:                                              ; preds = %937, %914
  %939 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %939, ptr %30, align 8, !tbaa !9
  %940 = load ptr, ptr %22, align 8, !tbaa !5
  %941 = load i64, ptr %42, align 8, !tbaa !9
  %942 = getelementptr inbounds %struct.doublecomplex, ptr %940, i64 %941
  call void @zladiv_(ptr noundef %37, ptr noundef %942, ptr noundef %51)
  %943 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  %944 = load double, ptr %943, align 8, !tbaa !16
  %945 = load ptr, ptr %22, align 8, !tbaa !5
  %946 = load i64, ptr %30, align 8, !tbaa !9
  %947 = getelementptr inbounds %struct.doublecomplex, ptr %945, i64 %946
  %948 = getelementptr inbounds %struct.doublecomplex, ptr %947, i32 0, i32 0
  store double %944, ptr %948, align 8, !tbaa !16
  %949 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  %950 = load double, ptr %949, align 8, !tbaa !19
  %951 = load ptr, ptr %22, align 8, !tbaa !5
  %952 = load i64, ptr %30, align 8, !tbaa !9
  %953 = getelementptr inbounds %struct.doublecomplex, ptr %951, i64 %952
  %954 = getelementptr inbounds %struct.doublecomplex, ptr %953, i32 0, i32 1
  store double %950, ptr %954, align 8, !tbaa !19
  %955 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %955, ptr %30, align 8, !tbaa !9
  %956 = load ptr, ptr %22, align 8, !tbaa !5
  %957 = load i64, ptr %30, align 8, !tbaa !9
  %958 = getelementptr inbounds %struct.doublecomplex, ptr %956, i64 %957
  %959 = getelementptr inbounds %struct.doublecomplex, ptr %958, i32 0, i32 0
  %960 = load double, ptr %959, align 8, !tbaa !16
  store double %960, ptr %33, align 8, !tbaa !11
  %961 = load double, ptr %33, align 8, !tbaa !11
  %962 = fcmp oge double %961, 0.000000e+00
  br i1 %962, label %963, label %965

963:                                              ; preds = %938
  %964 = load double, ptr %33, align 8, !tbaa !11
  br label %968

965:                                              ; preds = %938
  %966 = load double, ptr %33, align 8, !tbaa !11
  %967 = fneg double %966
  br label %968

968:                                              ; preds = %965, %963
  %969 = phi double [ %964, %963 ], [ %967, %965 ]
  %970 = load ptr, ptr %22, align 8, !tbaa !5
  %971 = load i64, ptr %42, align 8, !tbaa !9
  %972 = getelementptr inbounds %struct.doublecomplex, ptr %970, i64 %971
  %973 = call double @d_imag(ptr noundef %972)
  store double %973, ptr %34, align 8, !tbaa !11
  %974 = load double, ptr %34, align 8, !tbaa !11
  %975 = fcmp oge double %974, 0.000000e+00
  br i1 %975, label %976, label %978

976:                                              ; preds = %968
  %977 = load double, ptr %34, align 8, !tbaa !11
  br label %981

978:                                              ; preds = %968
  %979 = load double, ptr %34, align 8, !tbaa !11
  %980 = fneg double %979
  br label %981

981:                                              ; preds = %978, %976
  %982 = phi double [ %977, %976 ], [ %980, %978 ]
  %983 = fadd double %969, %982
  store double %983, ptr %43, align 8, !tbaa !11
  br label %1101

984:                                              ; preds = %908
  %985 = load double, ptr %45, align 8, !tbaa !11
  %986 = fcmp ogt double %985, 0.000000e+00
  br i1 %986, label %987, label %1069

987:                                              ; preds = %984
  %988 = load double, ptr %43, align 8, !tbaa !11
  %989 = load double, ptr %45, align 8, !tbaa !11
  %990 = load double, ptr %60, align 8, !tbaa !11
  %991 = fmul double %989, %990
  %992 = fcmp ogt double %988, %991
  br i1 %992, label %993, label %1023

993:                                              ; preds = %987
  %994 = load double, ptr %45, align 8, !tbaa !11
  %995 = load double, ptr %60, align 8, !tbaa !11
  %996 = fmul double %994, %995
  %997 = load double, ptr %43, align 8, !tbaa !11
  %998 = fdiv double %996, %997
  store double %998, ptr %44, align 8, !tbaa !11
  %999 = load ptr, ptr %24, align 8, !tbaa !5
  %1000 = load i64, ptr %42, align 8, !tbaa !9
  %1001 = getelementptr inbounds double, ptr %999, i64 %1000
  %1002 = load double, ptr %1001, align 8, !tbaa !11
  %1003 = fcmp ogt double %1002, 1.000000e+00
  br i1 %1003, label %1004, label %1011

1004:                                             ; preds = %993
  %1005 = load ptr, ptr %24, align 8, !tbaa !5
  %1006 = load i64, ptr %42, align 8, !tbaa !9
  %1007 = getelementptr inbounds double, ptr %1005, i64 %1006
  %1008 = load double, ptr %1007, align 8, !tbaa !11
  %1009 = load double, ptr %44, align 8, !tbaa !11
  %1010 = fdiv double %1009, %1008
  store double %1010, ptr %44, align 8, !tbaa !11
  br label %1011

1011:                                             ; preds = %1004, %993
  %1012 = load ptr, ptr %18, align 8, !tbaa !5
  %1013 = load ptr, ptr %22, align 8, !tbaa !5
  %1014 = getelementptr inbounds %struct.doublecomplex, ptr %1013, i64 1
  %1015 = call i32 @f2c_zdscal(ptr noundef %1012, ptr noundef %44, ptr noundef %1014, ptr noundef @c__1)
  %1016 = load double, ptr %44, align 8, !tbaa !11
  %1017 = load ptr, ptr %23, align 8, !tbaa !5
  %1018 = load double, ptr %1017, align 8, !tbaa !11
  %1019 = fmul double %1018, %1016
  store double %1019, ptr %1017, align 8, !tbaa !11
  %1020 = load double, ptr %44, align 8, !tbaa !11
  %1021 = load double, ptr %52, align 8, !tbaa !11
  %1022 = fmul double %1021, %1020
  store double %1022, ptr %52, align 8, !tbaa !11
  br label %1023

1023:                                             ; preds = %1011, %987
  %1024 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %1024, ptr %30, align 8, !tbaa !9
  %1025 = load ptr, ptr %22, align 8, !tbaa !5
  %1026 = load i64, ptr %42, align 8, !tbaa !9
  %1027 = getelementptr inbounds %struct.doublecomplex, ptr %1025, i64 %1026
  call void @zladiv_(ptr noundef %37, ptr noundef %1027, ptr noundef %51)
  %1028 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  %1029 = load double, ptr %1028, align 8, !tbaa !16
  %1030 = load ptr, ptr %22, align 8, !tbaa !5
  %1031 = load i64, ptr %30, align 8, !tbaa !9
  %1032 = getelementptr inbounds %struct.doublecomplex, ptr %1030, i64 %1031
  %1033 = getelementptr inbounds %struct.doublecomplex, ptr %1032, i32 0, i32 0
  store double %1029, ptr %1033, align 8, !tbaa !16
  %1034 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  %1035 = load double, ptr %1034, align 8, !tbaa !19
  %1036 = load ptr, ptr %22, align 8, !tbaa !5
  %1037 = load i64, ptr %30, align 8, !tbaa !9
  %1038 = getelementptr inbounds %struct.doublecomplex, ptr %1036, i64 %1037
  %1039 = getelementptr inbounds %struct.doublecomplex, ptr %1038, i32 0, i32 1
  store double %1035, ptr %1039, align 8, !tbaa !19
  %1040 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %1040, ptr %30, align 8, !tbaa !9
  %1041 = load ptr, ptr %22, align 8, !tbaa !5
  %1042 = load i64, ptr %30, align 8, !tbaa !9
  %1043 = getelementptr inbounds %struct.doublecomplex, ptr %1041, i64 %1042
  %1044 = getelementptr inbounds %struct.doublecomplex, ptr %1043, i32 0, i32 0
  %1045 = load double, ptr %1044, align 8, !tbaa !16
  store double %1045, ptr %33, align 8, !tbaa !11
  %1046 = load double, ptr %33, align 8, !tbaa !11
  %1047 = fcmp oge double %1046, 0.000000e+00
  br i1 %1047, label %1048, label %1050

1048:                                             ; preds = %1023
  %1049 = load double, ptr %33, align 8, !tbaa !11
  br label %1053

1050:                                             ; preds = %1023
  %1051 = load double, ptr %33, align 8, !tbaa !11
  %1052 = fneg double %1051
  br label %1053

1053:                                             ; preds = %1050, %1048
  %1054 = phi double [ %1049, %1048 ], [ %1052, %1050 ]
  %1055 = load ptr, ptr %22, align 8, !tbaa !5
  %1056 = load i64, ptr %42, align 8, !tbaa !9
  %1057 = getelementptr inbounds %struct.doublecomplex, ptr %1055, i64 %1056
  %1058 = call double @d_imag(ptr noundef %1057)
  store double %1058, ptr %34, align 8, !tbaa !11
  %1059 = load double, ptr %34, align 8, !tbaa !11
  %1060 = fcmp oge double %1059, 0.000000e+00
  br i1 %1060, label %1061, label %1063

1061:                                             ; preds = %1053
  %1062 = load double, ptr %34, align 8, !tbaa !11
  br label %1066

1063:                                             ; preds = %1053
  %1064 = load double, ptr %34, align 8, !tbaa !11
  %1065 = fneg double %1064
  br label %1066

1066:                                             ; preds = %1063, %1061
  %1067 = phi double [ %1062, %1061 ], [ %1065, %1063 ]
  %1068 = fadd double %1054, %1067
  store double %1068, ptr %43, align 8, !tbaa !11
  br label %1100

1069:                                             ; preds = %984
  %1070 = load ptr, ptr %18, align 8, !tbaa !5
  %1071 = load i64, ptr %1070, align 8, !tbaa !9
  store i64 %1071, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %41, align 8, !tbaa !9
  br label %1072

1072:                                             ; preds = %1086, %1069
  %1073 = load i64, ptr %41, align 8, !tbaa !9
  %1074 = load i64, ptr %30, align 8, !tbaa !9
  %1075 = icmp sle i64 %1073, %1074
  br i1 %1075, label %1076, label %1089

1076:                                             ; preds = %1072
  %1077 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %1077, ptr %31, align 8, !tbaa !9
  %1078 = load ptr, ptr %22, align 8, !tbaa !5
  %1079 = load i64, ptr %31, align 8, !tbaa !9
  %1080 = getelementptr inbounds %struct.doublecomplex, ptr %1078, i64 %1079
  %1081 = getelementptr inbounds %struct.doublecomplex, ptr %1080, i32 0, i32 0
  store double 0.000000e+00, ptr %1081, align 8, !tbaa !16
  %1082 = load ptr, ptr %22, align 8, !tbaa !5
  %1083 = load i64, ptr %31, align 8, !tbaa !9
  %1084 = getelementptr inbounds %struct.doublecomplex, ptr %1082, i64 %1083
  %1085 = getelementptr inbounds %struct.doublecomplex, ptr %1084, i32 0, i32 1
  store double 0.000000e+00, ptr %1085, align 8, !tbaa !19
  br label %1086

1086:                                             ; preds = %1076
  %1087 = load i64, ptr %41, align 8, !tbaa !9
  %1088 = add nsw i64 %1087, 1
  store i64 %1088, ptr %41, align 8, !tbaa !9
  br label %1072, !llvm.loop !24

1089:                                             ; preds = %1072
  %1090 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %1090, ptr %30, align 8, !tbaa !9
  %1091 = load ptr, ptr %22, align 8, !tbaa !5
  %1092 = load i64, ptr %30, align 8, !tbaa !9
  %1093 = getelementptr inbounds %struct.doublecomplex, ptr %1091, i64 %1092
  %1094 = getelementptr inbounds %struct.doublecomplex, ptr %1093, i32 0, i32 0
  store double 1.000000e+00, ptr %1094, align 8, !tbaa !16
  %1095 = load ptr, ptr %22, align 8, !tbaa !5
  %1096 = load i64, ptr %30, align 8, !tbaa !9
  %1097 = getelementptr inbounds %struct.doublecomplex, ptr %1095, 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 %43, align 8, !tbaa !11
  %1099 = load ptr, ptr %23, align 8, !tbaa !5
  store double 0.000000e+00, ptr %1099, align 8, !tbaa !11
  store double 0.000000e+00, ptr %52, align 8, !tbaa !11
  br label %1100

1100:                                             ; preds = %1089, %1066
  br label %1101

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

1102:                                             ; preds = %1101, %886
  %1103 = load double, ptr %43, 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 %43, align 8, !tbaa !11
  %1107 = fdiv double 1.000000e+00, %1106
  store double %1107, ptr %44, align 8, !tbaa !11
  %1108 = load ptr, ptr %24, align 8, !tbaa !5
  %1109 = load i64, ptr %42, align 8, !tbaa !9
  %1110 = getelementptr inbounds double, ptr %1108, i64 %1109
  %1111 = load double, ptr %1110, align 8, !tbaa !11
  %1112 = load double, ptr %60, align 8, !tbaa !11
  %1113 = load double, ptr %52, align 8, !tbaa !11
  %1114 = fsub double %1112, %1113
  %1115 = load double, ptr %44, align 8, !tbaa !11
  %1116 = fmul double %1114, %1115
  %1117 = fcmp ogt double %1111, %1116
  br i1 %1117, label %1118, label %1129

1118:                                             ; preds = %1105
  %1119 = load double, ptr %44, align 8, !tbaa !11
  %1120 = fmul double %1119, 5.000000e-01
  store double %1120, ptr %44, align 8, !tbaa !11
  %1121 = load ptr, ptr %18, align 8, !tbaa !5
  %1122 = load ptr, ptr %22, align 8, !tbaa !5
  %1123 = getelementptr inbounds %struct.doublecomplex, ptr %1122, i64 1
  %1124 = call i32 @f2c_zdscal(ptr noundef %1121, ptr noundef %44, ptr noundef %1123, ptr noundef @c__1)
  %1125 = load double, ptr %44, align 8, !tbaa !11
  %1126 = load ptr, ptr %23, 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 = %1118, %1105
  br label %1150

1130:                                             ; preds = %1102
  %1131 = load double, ptr %43, align 8, !tbaa !11
  %1132 = load ptr, ptr %24, align 8, !tbaa !5
  %1133 = load i64, ptr %42, align 8, !tbaa !9
  %1134 = getelementptr inbounds double, ptr %1132, i64 %1133
  %1135 = load double, ptr %1134, align 8, !tbaa !11
  %1136 = fmul double %1131, %1135
  %1137 = load double, ptr %60, align 8, !tbaa !11
  %1138 = load double, ptr %52, align 8, !tbaa !11
  %1139 = fsub double %1137, %1138
  %1140 = fcmp ogt double %1136, %1139
  br i1 %1140, label %1141, label %1149

1141:                                             ; preds = %1130
  %1142 = load ptr, ptr %18, align 8, !tbaa !5
  %1143 = load ptr, ptr %22, align 8, !tbaa !5
  %1144 = getelementptr inbounds %struct.doublecomplex, ptr %1143, i64 1
  %1145 = call i32 @f2c_zdscal(ptr noundef %1142, ptr noundef @c_b36, ptr noundef %1144, ptr noundef @c__1)
  %1146 = load ptr, ptr %23, 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 = %1141, %1130
  br label %1150

1150:                                             ; preds = %1149, %1129
  %1151 = load i64, ptr %59, align 8, !tbaa !9
  %1152 = icmp ne i64 %1151, 0
  br i1 %1152, label %1153, label %1247

1153:                                             ; preds = %1150
  %1154 = load i64, ptr %42, align 8, !tbaa !9
  %1155 = icmp sgt i64 %1154, 1
  br i1 %1155, label %1156, label %1246

1156:                                             ; preds = %1153
  %1157 = load ptr, ptr %19, align 8, !tbaa !5
  %1158 = load i64, ptr %1157, align 8, !tbaa !9
  store i64 %1158, ptr %30, align 8, !tbaa !9
  %1159 = load i64, ptr %42, align 8, !tbaa !9
  %1160 = sub nsw i64 %1159, 1
  store i64 %1160, ptr %31, align 8, !tbaa !9
  %1161 = load i64, ptr %30, align 8, !tbaa !9
  %1162 = load i64, ptr %31, align 8, !tbaa !9
  %1163 = icmp sle i64 %1161, %1162
  br i1 %1163, label %1164, label %1166

1164:                                             ; preds = %1156
  %1165 = load i64, ptr %30, align 8, !tbaa !9
  br label %1168

1166:                                             ; preds = %1156
  %1167 = load i64, ptr %31, align 8, !tbaa !9
  br label %1168

1168:                                             ; preds = %1166, %1164
  %1169 = phi i64 [ %1165, %1164 ], [ %1167, %1166 ]
  store i64 %1169, ptr %47, align 8, !tbaa !9
  %1170 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %1170, ptr %30, align 8, !tbaa !9
  %1171 = load ptr, ptr %22, align 8, !tbaa !5
  %1172 = load i64, ptr %30, align 8, !tbaa !9
  %1173 = getelementptr inbounds %struct.doublecomplex, ptr %1171, i64 %1172
  %1174 = getelementptr inbounds %struct.doublecomplex, ptr %1173, i32 0, i32 0
  %1175 = load double, ptr %1174, align 8, !tbaa !16
  %1176 = fneg double %1175
  %1177 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  store double %1176, ptr %1177, align 8, !tbaa !16
  %1178 = load ptr, ptr %22, align 8, !tbaa !5
  %1179 = load i64, ptr %30, align 8, !tbaa !9
  %1180 = getelementptr inbounds %struct.doublecomplex, ptr %1178, i64 %1179
  %1181 = getelementptr inbounds %struct.doublecomplex, ptr %1180, i32 0, i32 1
  %1182 = load double, ptr %1181, align 8, !tbaa !19
  %1183 = fneg double %1182
  %1184 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  store double %1183, ptr %1184, align 8, !tbaa !19
  %1185 = load double, ptr %55, align 8, !tbaa !11
  %1186 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  %1187 = load double, ptr %1186, align 8, !tbaa !16
  %1188 = fmul double %1185, %1187
  %1189 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  store double %1188, ptr %1189, align 8, !tbaa !16
  %1190 = load double, ptr %55, align 8, !tbaa !11
  %1191 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  %1192 = load double, ptr %1191, align 8, !tbaa !19
  %1193 = fmul double %1190, %1192
  %1194 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  store double %1193, ptr %1194, align 8, !tbaa !19
  %1195 = load ptr, ptr %20, align 8, !tbaa !5
  %1196 = load ptr, ptr %19, align 8, !tbaa !5
  %1197 = load i64, ptr %1196, align 8, !tbaa !9
  %1198 = add nsw i64 %1197, 1
  %1199 = load i64, ptr %47, align 8, !tbaa !9
  %1200 = sub nsw i64 %1198, %1199
  %1201 = load i64, ptr %42, align 8, !tbaa !9
  %1202 = load i64, ptr %26, align 8, !tbaa !9
  %1203 = mul nsw i64 %1201, %1202
  %1204 = add nsw i64 %1200, %1203
  %1205 = getelementptr inbounds %struct.doublecomplex, ptr %1195, i64 %1204
  %1206 = load ptr, ptr %22, align 8, !tbaa !5
  %1207 = load i64, ptr %42, align 8, !tbaa !9
  %1208 = load i64, ptr %47, align 8, !tbaa !9
  %1209 = sub nsw i64 %1207, %1208
  %1210 = getelementptr inbounds %struct.doublecomplex, ptr %1206, i64 %1209
  %1211 = call i32 @f2c_zaxpy(ptr noundef %47, ptr noundef %37, ptr noundef %1205, ptr noundef @c__1, ptr noundef %1210, ptr noundef @c__1)
  %1212 = load i64, ptr %42, align 8, !tbaa !9
  %1213 = sub nsw i64 %1212, 1
  store i64 %1213, ptr %30, align 8, !tbaa !9
  %1214 = load ptr, ptr %22, align 8, !tbaa !5
  %1215 = getelementptr inbounds %struct.doublecomplex, ptr %1214, i64 1
  %1216 = call i64 @f2c_izamax(ptr noundef %30, ptr noundef %1215, ptr noundef @c__1)
  store i64 %1216, ptr %41, align 8, !tbaa !9
  %1217 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %1217, ptr %30, align 8, !tbaa !9
  %1218 = load ptr, ptr %22, align 8, !tbaa !5
  %1219 = load i64, ptr %30, align 8, !tbaa !9
  %1220 = getelementptr inbounds %struct.doublecomplex, ptr %1218, i64 %1219
  %1221 = getelementptr inbounds %struct.doublecomplex, ptr %1220, i32 0, i32 0
  %1222 = load double, ptr %1221, align 8, !tbaa !16
  store double %1222, ptr %33, align 8, !tbaa !11
  %1223 = load double, ptr %33, align 8, !tbaa !11
  %1224 = fcmp oge double %1223, 0.000000e+00
  br i1 %1224, label %1225, label %1227

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

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

1230:                                             ; preds = %1227, %1225
  %1231 = phi double [ %1226, %1225 ], [ %1229, %1227 ]
  %1232 = load ptr, ptr %22, align 8, !tbaa !5
  %1233 = load i64, ptr %41, align 8, !tbaa !9
  %1234 = getelementptr inbounds %struct.doublecomplex, ptr %1232, i64 %1233
  %1235 = call double @d_imag(ptr noundef %1234)
  store double %1235, ptr %34, align 8, !tbaa !11
  %1236 = load double, ptr %34, align 8, !tbaa !11
  %1237 = fcmp oge double %1236, 0.000000e+00
  br i1 %1237, label %1238, label %1240

1238:                                             ; preds = %1230
  %1239 = load double, ptr %34, align 8, !tbaa !11
  br label %1243

1240:                                             ; preds = %1230
  %1241 = load double, ptr %34, align 8, !tbaa !11
  %1242 = fneg double %1241
  br label %1243

1243:                                             ; preds = %1240, %1238
  %1244 = phi double [ %1239, %1238 ], [ %1242, %1240 ]
  %1245 = fadd double %1231, %1244
  store double %1245, ptr %52, align 8, !tbaa !11
  br label %1246

1246:                                             ; preds = %1243, %1153
  br label %1349

1247:                                             ; preds = %1150
  %1248 = load i64, ptr %42, align 8, !tbaa !9
  %1249 = load ptr, ptr %18, align 8, !tbaa !5
  %1250 = load i64, ptr %1249, align 8, !tbaa !9
  %1251 = icmp slt i64 %1248, %1250
  br i1 %1251, label %1252, label %1348

1252:                                             ; preds = %1247
  %1253 = load ptr, ptr %19, align 8, !tbaa !5
  %1254 = load i64, ptr %1253, align 8, !tbaa !9
  store i64 %1254, ptr %30, align 8, !tbaa !9
  %1255 = load ptr, ptr %18, align 8, !tbaa !5
  %1256 = load i64, ptr %1255, align 8, !tbaa !9
  %1257 = load i64, ptr %42, align 8, !tbaa !9
  %1258 = sub nsw i64 %1256, %1257
  store i64 %1258, ptr %31, align 8, !tbaa !9
  %1259 = load i64, ptr %30, align 8, !tbaa !9
  %1260 = load i64, ptr %31, align 8, !tbaa !9
  %1261 = icmp sle i64 %1259, %1260
  br i1 %1261, label %1262, label %1264

1262:                                             ; preds = %1252
  %1263 = load i64, ptr %30, align 8, !tbaa !9
  br label %1266

1264:                                             ; preds = %1252
  %1265 = load i64, ptr %31, align 8, !tbaa !9
  br label %1266

1266:                                             ; preds = %1264, %1262
  %1267 = phi i64 [ %1263, %1262 ], [ %1265, %1264 ]
  store i64 %1267, ptr %47, align 8, !tbaa !9
  %1268 = load i64, ptr %47, align 8, !tbaa !9
  %1269 = icmp sgt i64 %1268, 0
  br i1 %1269, label %1270, label %1307

1270:                                             ; preds = %1266
  %1271 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %1271, ptr %30, align 8, !tbaa !9
  %1272 = load ptr, ptr %22, align 8, !tbaa !5
  %1273 = load i64, ptr %30, align 8, !tbaa !9
  %1274 = getelementptr inbounds %struct.doublecomplex, ptr %1272, i64 %1273
  %1275 = getelementptr inbounds %struct.doublecomplex, ptr %1274, i32 0, i32 0
  %1276 = load double, ptr %1275, align 8, !tbaa !16
  %1277 = fneg double %1276
  %1278 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  store double %1277, ptr %1278, align 8, !tbaa !16
  %1279 = load ptr, ptr %22, align 8, !tbaa !5
  %1280 = load i64, ptr %30, align 8, !tbaa !9
  %1281 = getelementptr inbounds %struct.doublecomplex, ptr %1279, i64 %1280
  %1282 = getelementptr inbounds %struct.doublecomplex, ptr %1281, i32 0, i32 1
  %1283 = load double, ptr %1282, align 8, !tbaa !19
  %1284 = fneg double %1283
  %1285 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  store double %1284, ptr %1285, align 8, !tbaa !19
  %1286 = load double, ptr %55, align 8, !tbaa !11
  %1287 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  %1288 = load double, ptr %1287, align 8, !tbaa !16
  %1289 = fmul double %1286, %1288
  %1290 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  store double %1289, ptr %1290, align 8, !tbaa !16
  %1291 = load double, ptr %55, align 8, !tbaa !11
  %1292 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  %1293 = load double, ptr %1292, align 8, !tbaa !19
  %1294 = fmul double %1291, %1293
  %1295 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  store double %1294, ptr %1295, align 8, !tbaa !19
  %1296 = load ptr, ptr %20, align 8, !tbaa !5
  %1297 = load i64, ptr %42, align 8, !tbaa !9
  %1298 = load i64, ptr %26, align 8, !tbaa !9
  %1299 = mul nsw i64 %1297, %1298
  %1300 = add nsw i64 %1299, 2
  %1301 = getelementptr inbounds %struct.doublecomplex, ptr %1296, i64 %1300
  %1302 = load ptr, ptr %22, align 8, !tbaa !5
  %1303 = load i64, ptr %42, align 8, !tbaa !9
  %1304 = add nsw i64 %1303, 1
  %1305 = getelementptr inbounds %struct.doublecomplex, ptr %1302, i64 %1304
  %1306 = call i32 @f2c_zaxpy(ptr noundef %47, ptr noundef %37, ptr noundef %1301, ptr noundef @c__1, ptr noundef %1305, ptr noundef @c__1)
  br label %1307

1307:                                             ; preds = %1270, %1266
  %1308 = load ptr, ptr %18, align 8, !tbaa !5
  %1309 = load i64, ptr %1308, align 8, !tbaa !9
  %1310 = load i64, ptr %42, align 8, !tbaa !9
  %1311 = sub nsw i64 %1309, %1310
  store i64 %1311, ptr %30, align 8, !tbaa !9
  %1312 = load i64, ptr %42, align 8, !tbaa !9
  %1313 = load ptr, ptr %22, align 8, !tbaa !5
  %1314 = load i64, ptr %42, align 8, !tbaa !9
  %1315 = add nsw i64 %1314, 1
  %1316 = getelementptr inbounds %struct.doublecomplex, ptr %1313, i64 %1315
  %1317 = call i64 @f2c_izamax(ptr noundef %30, ptr noundef %1316, ptr noundef @c__1)
  %1318 = add nsw i64 %1312, %1317
  store i64 %1318, ptr %41, align 8, !tbaa !9
  %1319 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %1319, ptr %30, align 8, !tbaa !9
  %1320 = load ptr, ptr %22, align 8, !tbaa !5
  %1321 = load i64, ptr %30, align 8, !tbaa !9
  %1322 = getelementptr inbounds %struct.doublecomplex, ptr %1320, i64 %1321
  %1323 = getelementptr inbounds %struct.doublecomplex, ptr %1322, i32 0, i32 0
  %1324 = load double, ptr %1323, align 8, !tbaa !16
  store double %1324, ptr %33, align 8, !tbaa !11
  %1325 = load double, ptr %33, align 8, !tbaa !11
  %1326 = fcmp oge double %1325, 0.000000e+00
  br i1 %1326, label %1327, label %1329

1327:                                             ; preds = %1307
  %1328 = load double, ptr %33, align 8, !tbaa !11
  br label %1332

1329:                                             ; preds = %1307
  %1330 = load double, ptr %33, align 8, !tbaa !11
  %1331 = fneg double %1330
  br label %1332

1332:                                             ; preds = %1329, %1327
  %1333 = phi double [ %1328, %1327 ], [ %1331, %1329 ]
  %1334 = load ptr, ptr %22, align 8, !tbaa !5
  %1335 = load i64, ptr %41, align 8, !tbaa !9
  %1336 = getelementptr inbounds %struct.doublecomplex, ptr %1334, i64 %1335
  %1337 = call double @d_imag(ptr noundef %1336)
  store double %1337, ptr %34, align 8, !tbaa !11
  %1338 = load double, ptr %34, align 8, !tbaa !11
  %1339 = fcmp oge double %1338, 0.000000e+00
  br i1 %1339, label %1340, label %1342

1340:                                             ; preds = %1332
  %1341 = load double, ptr %34, align 8, !tbaa !11
  br label %1345

1342:                                             ; preds = %1332
  %1343 = load double, ptr %34, align 8, !tbaa !11
  %1344 = fneg double %1343
  br label %1345

1345:                                             ; preds = %1342, %1340
  %1346 = phi double [ %1341, %1340 ], [ %1344, %1342 ]
  %1347 = fadd double %1333, %1346
  store double %1347, ptr %52, align 8, !tbaa !11
  br label %1348

1348:                                             ; preds = %1345, %1247
  br label %1349

1349:                                             ; preds = %1348, %1246
  br label %1350

1350:                                             ; preds = %1349
  %1351 = load i64, ptr %29, align 8, !tbaa !9
  %1352 = load i64, ptr %42, align 8, !tbaa !9
  %1353 = add nsw i64 %1352, %1351
  store i64 %1353, ptr %42, align 8, !tbaa !9
  br label %804, !llvm.loop !25

1354:                                             ; preds = %817
  br label %3016

1355:                                             ; preds = %797
  %1356 = load ptr, ptr %15, align 8, !tbaa !5
  %1357 = call i64 @lsame_(ptr noundef %1356, ptr noundef @.str.3)
  %1358 = icmp ne i64 %1357, 0
  br i1 %1358, label %1359, label %2201

1359:                                             ; preds = %1355
  %1360 = load i64, ptr %57, align 8, !tbaa !9
  store i64 %1360, ptr %29, align 8, !tbaa !9
  %1361 = load i64, ptr %46, align 8, !tbaa !9
  store i64 %1361, ptr %28, align 8, !tbaa !9
  %1362 = load i64, ptr %62, align 8, !tbaa !9
  store i64 %1362, ptr %42, align 8, !tbaa !9
  br label %1363

1363:                                             ; preds = %2196, %1359
  %1364 = load i64, ptr %28, align 8, !tbaa !9
  %1365 = icmp slt i64 %1364, 0
  br i1 %1365, label %1366, label %1371

1366:                                             ; preds = %1363
  %1367 = load i64, ptr %42, align 8, !tbaa !9
  %1368 = load i64, ptr %29, align 8, !tbaa !9
  %1369 = icmp sge i64 %1367, %1368
  %1370 = zext i1 %1369 to i32
  br label %1376

1371:                                             ; preds = %1363
  %1372 = load i64, ptr %42, align 8, !tbaa !9
  %1373 = load i64, ptr %29, align 8, !tbaa !9
  %1374 = icmp sle i64 %1372, %1373
  %1375 = zext i1 %1374 to i32
  br label %1376

1376:                                             ; preds = %1371, %1366
  %1377 = phi i32 [ %1370, %1366 ], [ %1375, %1371 ]
  %1378 = icmp ne i32 %1377, 0
  br i1 %1378, label %1379, label %2200

1379:                                             ; preds = %1376
  %1380 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %1380, ptr %30, align 8, !tbaa !9
  %1381 = load ptr, ptr %22, align 8, !tbaa !5
  %1382 = load i64, ptr %30, align 8, !tbaa !9
  %1383 = getelementptr inbounds %struct.doublecomplex, ptr %1381, i64 %1382
  %1384 = getelementptr inbounds %struct.doublecomplex, ptr %1383, i32 0, i32 0
  %1385 = load double, ptr %1384, align 8, !tbaa !16
  store double %1385, ptr %33, align 8, !tbaa !11
  %1386 = load double, ptr %33, align 8, !tbaa !11
  %1387 = fcmp oge double %1386, 0.000000e+00
  br i1 %1387, label %1388, label %1390

1388:                                             ; preds = %1379
  %1389 = load double, ptr %33, align 8, !tbaa !11
  br label %1393

1390:                                             ; preds = %1379
  %1391 = load double, ptr %33, align 8, !tbaa !11
  %1392 = fneg double %1391
  br label %1393

1393:                                             ; preds = %1390, %1388
  %1394 = phi double [ %1389, %1388 ], [ %1392, %1390 ]
  %1395 = load ptr, ptr %22, align 8, !tbaa !5
  %1396 = load i64, ptr %42, align 8, !tbaa !9
  %1397 = getelementptr inbounds %struct.doublecomplex, ptr %1395, i64 %1396
  %1398 = call double @d_imag(ptr noundef %1397)
  store double %1398, ptr %34, align 8, !tbaa !11
  %1399 = load double, ptr %34, align 8, !tbaa !11
  %1400 = fcmp oge double %1399, 0.000000e+00
  br i1 %1400, label %1401, label %1403

1401:                                             ; preds = %1393
  %1402 = load double, ptr %34, align 8, !tbaa !11
  br label %1406

1403:                                             ; preds = %1393
  %1404 = load double, ptr %34, align 8, !tbaa !11
  %1405 = fneg double %1404
  br label %1406

1406:                                             ; preds = %1403, %1401
  %1407 = phi double [ %1402, %1401 ], [ %1405, %1403 ]
  %1408 = fadd double %1394, %1407
  store double %1408, ptr %43, align 8, !tbaa !11
  %1409 = load double, ptr %55, align 8, !tbaa !11
  %1410 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  store double %1409, ptr %1410, align 8, !tbaa !16
  %1411 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  store double 0.000000e+00, ptr %1411, align 8, !tbaa !19
  %1412 = load double, ptr %52, align 8, !tbaa !11
  %1413 = fcmp oge double %1412, 1.000000e+00
  br i1 %1413, label %1414, label %1416

1414:                                             ; preds = %1406
  %1415 = load double, ptr %52, align 8, !tbaa !11
  br label %1417

1416:                                             ; preds = %1406
  br label %1417

1417:                                             ; preds = %1416, %1414
  %1418 = phi double [ %1415, %1414 ], [ 1.000000e+00, %1416 ]
  %1419 = fdiv double 1.000000e+00, %1418
  store double %1419, ptr %44, align 8, !tbaa !11
  %1420 = load ptr, ptr %24, align 8, !tbaa !5
  %1421 = load i64, ptr %42, align 8, !tbaa !9
  %1422 = getelementptr inbounds double, ptr %1420, i64 %1421
  %1423 = load double, ptr %1422, align 8, !tbaa !11
  %1424 = load double, ptr %60, align 8, !tbaa !11
  %1425 = load double, ptr %43, align 8, !tbaa !11
  %1426 = fsub double %1424, %1425
  %1427 = load double, ptr %44, align 8, !tbaa !11
  %1428 = fmul double %1426, %1427
  %1429 = fcmp ogt double %1423, %1428
  br i1 %1429, label %1430, label %1527

1430:                                             ; preds = %1417
  %1431 = load double, ptr %44, align 8, !tbaa !11
  %1432 = fmul double %1431, 5.000000e-01
  store double %1432, ptr %44, align 8, !tbaa !11
  %1433 = load i64, ptr %64, align 8, !tbaa !9
  %1434 = icmp ne i64 %1433, 0
  br i1 %1434, label %1435, label %1463

1435:                                             ; preds = %1430
  %1436 = load i64, ptr %54, align 8, !tbaa !9
  %1437 = load i64, ptr %42, align 8, !tbaa !9
  %1438 = load i64, ptr %26, align 8, !tbaa !9
  %1439 = mul nsw i64 %1437, %1438
  %1440 = add nsw i64 %1436, %1439
  store i64 %1440, ptr %30, align 8, !tbaa !9
  %1441 = load double, ptr %55, align 8, !tbaa !11
  %1442 = load ptr, ptr %20, align 8, !tbaa !5
  %1443 = load i64, ptr %30, align 8, !tbaa !9
  %1444 = getelementptr inbounds %struct.doublecomplex, ptr %1442, i64 %1443
  %1445 = getelementptr inbounds %struct.doublecomplex, ptr %1444, i32 0, i32 0
  %1446 = load double, ptr %1445, align 8, !tbaa !16
  %1447 = fmul double %1441, %1446
  %1448 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  store double %1447, ptr %1448, align 8, !tbaa !16
  %1449 = load double, ptr %55, align 8, !tbaa !11
  %1450 = load ptr, ptr %20, align 8, !tbaa !5
  %1451 = load i64, ptr %30, align 8, !tbaa !9
  %1452 = getelementptr inbounds %struct.doublecomplex, ptr %1450, i64 %1451
  %1453 = getelementptr inbounds %struct.doublecomplex, ptr %1452, i32 0, i32 1
  %1454 = load double, ptr %1453, align 8, !tbaa !19
  %1455 = fmul double %1449, %1454
  %1456 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  store double %1455, ptr %1456, align 8, !tbaa !19
  %1457 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  %1458 = load double, ptr %1457, align 8, !tbaa !16
  %1459 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %1458, ptr %1459, align 8, !tbaa !16
  %1460 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  %1461 = load double, ptr %1460, align 8, !tbaa !19
  %1462 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double %1461, ptr %1462, align 8, !tbaa !19
  br label %1467

1463:                                             ; preds = %1430
  %1464 = load double, ptr %55, align 8, !tbaa !11
  %1465 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %1464, ptr %1465, align 8, !tbaa !16
  %1466 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double 0.000000e+00, ptr %1466, align 8, !tbaa !19
  br label %1467

1467:                                             ; preds = %1463, %1435
  %1468 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %1469 = load double, ptr %1468, align 8, !tbaa !16
  store double %1469, ptr %33, align 8, !tbaa !11
  %1470 = load double, ptr %33, align 8, !tbaa !11
  %1471 = fcmp oge double %1470, 0.000000e+00
  br i1 %1471, label %1472, label %1474

1472:                                             ; preds = %1467
  %1473 = load double, ptr %33, align 8, !tbaa !11
  br label %1477

1474:                                             ; preds = %1467
  %1475 = load double, ptr %33, align 8, !tbaa !11
  %1476 = fneg double %1475
  br label %1477

1477:                                             ; preds = %1474, %1472
  %1478 = phi double [ %1473, %1472 ], [ %1476, %1474 ]
  %1479 = call double @d_imag(ptr noundef %51)
  store double %1479, ptr %34, align 8, !tbaa !11
  %1480 = load double, ptr %34, align 8, !tbaa !11
  %1481 = fcmp oge double %1480, 0.000000e+00
  br i1 %1481, label %1482, label %1484

1482:                                             ; preds = %1477
  %1483 = load double, ptr %34, align 8, !tbaa !11
  br label %1487

1484:                                             ; preds = %1477
  %1485 = load double, ptr %34, align 8, !tbaa !11
  %1486 = fneg double %1485
  br label %1487

1487:                                             ; preds = %1484, %1482
  %1488 = phi double [ %1483, %1482 ], [ %1486, %1484 ]
  %1489 = fadd double %1478, %1488
  store double %1489, ptr %45, align 8, !tbaa !11
  %1490 = load double, ptr %45, align 8, !tbaa !11
  %1491 = fcmp ogt double %1490, 1.000000e+00
  br i1 %1491, label %1492, label %1511

1492:                                             ; preds = %1487
  store double 1.000000e+00, ptr %33, align 8, !tbaa !11
  %1493 = load double, ptr %44, align 8, !tbaa !11
  %1494 = load double, ptr %45, align 8, !tbaa !11
  %1495 = fmul double %1493, %1494
  store double %1495, ptr %34, align 8, !tbaa !11
  %1496 = load double, ptr %33, align 8, !tbaa !11
  %1497 = load double, ptr %34, align 8, !tbaa !11
  %1498 = fcmp ole double %1496, %1497
  br i1 %1498, label %1499, label %1501

1499:                                             ; preds = %1492
  %1500 = load double, ptr %33, align 8, !tbaa !11
  br label %1503

1501:                                             ; preds = %1492
  %1502 = load double, ptr %34, align 8, !tbaa !11
  br label %1503

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

1511:                                             ; preds = %1503, %1487
  %1512 = load double, ptr %44, align 8, !tbaa !11
  %1513 = fcmp olt double %1512, 1.000000e+00
  br i1 %1513, label %1514, label %1526

1514:                                             ; preds = %1511
  %1515 = load ptr, ptr %18, align 8, !tbaa !5
  %1516 = load ptr, ptr %22, align 8, !tbaa !5
  %1517 = getelementptr inbounds %struct.doublecomplex, ptr %1516, i64 1
  %1518 = call i32 @f2c_zdscal(ptr noundef %1515, ptr noundef %44, ptr noundef %1517, ptr noundef @c__1)
  %1519 = load double, ptr %44, align 8, !tbaa !11
  %1520 = load ptr, ptr %23, align 8, !tbaa !5
  %1521 = load double, ptr %1520, align 8, !tbaa !11
  %1522 = fmul double %1521, %1519
  store double %1522, ptr %1520, align 8, !tbaa !11
  %1523 = load double, ptr %44, align 8, !tbaa !11
  %1524 = load double, ptr %52, align 8, !tbaa !11
  %1525 = fmul double %1524, %1523
  store double %1525, ptr %52, align 8, !tbaa !11
  br label %1526

1526:                                             ; preds = %1514, %1511
  br label %1527

1527:                                             ; preds = %1526, %1417
  %1528 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 0
  store double 0.000000e+00, ptr %1528, align 8, !tbaa !16
  %1529 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 1
  store double 0.000000e+00, ptr %1529, align 8, !tbaa !19
  %1530 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %1531 = load double, ptr %1530, align 8, !tbaa !16
  %1532 = fcmp oeq double %1531, 1.000000e+00
  br i1 %1532, label %1533, label %1613

1533:                                             ; preds = %1527
  %1534 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %1535 = load double, ptr %1534, align 8, !tbaa !19
  %1536 = fcmp oeq double %1535, 0.000000e+00
  br i1 %1536, label %1537, label %1613

1537:                                             ; preds = %1533
  %1538 = load i64, ptr %59, align 8, !tbaa !9
  %1539 = icmp ne i64 %1538, 0
  br i1 %1539, label %1540, label %1576

1540:                                             ; preds = %1537
  %1541 = load ptr, ptr %19, align 8, !tbaa !5
  %1542 = load i64, ptr %1541, align 8, !tbaa !9
  store i64 %1542, ptr %30, align 8, !tbaa !9
  %1543 = load i64, ptr %42, align 8, !tbaa !9
  %1544 = sub nsw i64 %1543, 1
  store i64 %1544, ptr %31, align 8, !tbaa !9
  %1545 = load i64, ptr %30, align 8, !tbaa !9
  %1546 = load i64, ptr %31, align 8, !tbaa !9
  %1547 = icmp sle i64 %1545, %1546
  br i1 %1547, label %1548, label %1550

1548:                                             ; preds = %1540
  %1549 = load i64, ptr %30, align 8, !tbaa !9
  br label %1552

1550:                                             ; preds = %1540
  %1551 = load i64, ptr %31, align 8, !tbaa !9
  br label %1552

1552:                                             ; preds = %1550, %1548
  %1553 = phi i64 [ %1549, %1548 ], [ %1551, %1550 ]
  store i64 %1553, ptr %47, align 8, !tbaa !9
  %1554 = load ptr, ptr %20, align 8, !tbaa !5
  %1555 = load ptr, ptr %19, align 8, !tbaa !5
  %1556 = load i64, ptr %1555, align 8, !tbaa !9
  %1557 = add nsw i64 %1556, 1
  %1558 = load i64, ptr %47, align 8, !tbaa !9
  %1559 = sub nsw i64 %1557, %1558
  %1560 = load i64, ptr %42, align 8, !tbaa !9
  %1561 = load i64, ptr %26, align 8, !tbaa !9
  %1562 = mul nsw i64 %1560, %1561
  %1563 = add nsw i64 %1559, %1562
  %1564 = getelementptr inbounds %struct.doublecomplex, ptr %1554, i64 %1563
  %1565 = load ptr, ptr %22, align 8, !tbaa !5
  %1566 = load i64, ptr %42, align 8, !tbaa !9
  %1567 = load i64, ptr %47, align 8, !tbaa !9
  %1568 = sub nsw i64 %1566, %1567
  %1569 = getelementptr inbounds %struct.doublecomplex, ptr %1565, i64 %1568
  call void @f2c_zdotu(ptr noundef %37, ptr noundef %47, ptr noundef %1564, ptr noundef @c__1, ptr noundef %1569, ptr noundef @c__1)
  %1570 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  %1571 = load double, ptr %1570, align 8, !tbaa !16
  %1572 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 0
  store double %1571, ptr %1572, align 8, !tbaa !16
  %1573 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  %1574 = load double, ptr %1573, align 8, !tbaa !19
  %1575 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 1
  store double %1574, ptr %1575, align 8, !tbaa !19
  br label %1612

1576:                                             ; preds = %1537
  %1577 = load ptr, ptr %19, align 8, !tbaa !5
  %1578 = load i64, ptr %1577, align 8, !tbaa !9
  store i64 %1578, ptr %30, align 8, !tbaa !9
  %1579 = load ptr, ptr %18, align 8, !tbaa !5
  %1580 = load i64, ptr %1579, align 8, !tbaa !9
  %1581 = load i64, ptr %42, align 8, !tbaa !9
  %1582 = sub nsw i64 %1580, %1581
  store i64 %1582, ptr %31, align 8, !tbaa !9
  %1583 = load i64, ptr %30, align 8, !tbaa !9
  %1584 = load i64, ptr %31, align 8, !tbaa !9
  %1585 = icmp sle i64 %1583, %1584
  br i1 %1585, label %1586, label %1588

1586:                                             ; preds = %1576
  %1587 = load i64, ptr %30, align 8, !tbaa !9
  br label %1590

1588:                                             ; preds = %1576
  %1589 = load i64, ptr %31, align 8, !tbaa !9
  br label %1590

1590:                                             ; preds = %1588, %1586
  %1591 = phi i64 [ %1587, %1586 ], [ %1589, %1588 ]
  store i64 %1591, ptr %47, align 8, !tbaa !9
  %1592 = load i64, ptr %47, align 8, !tbaa !9
  %1593 = icmp sgt i64 %1592, 1
  br i1 %1593, label %1594, label %1611

1594:                                             ; preds = %1590
  %1595 = load ptr, ptr %20, align 8, !tbaa !5
  %1596 = load i64, ptr %42, align 8, !tbaa !9
  %1597 = load i64, ptr %26, align 8, !tbaa !9
  %1598 = mul nsw i64 %1596, %1597
  %1599 = add nsw i64 %1598, 2
  %1600 = getelementptr inbounds %struct.doublecomplex, ptr %1595, i64 %1599
  %1601 = load ptr, ptr %22, align 8, !tbaa !5
  %1602 = load i64, ptr %42, align 8, !tbaa !9
  %1603 = add nsw i64 %1602, 1
  %1604 = getelementptr inbounds %struct.doublecomplex, ptr %1601, i64 %1603
  call void @f2c_zdotu(ptr noundef %37, ptr noundef %47, ptr noundef %1600, ptr noundef @c__1, ptr noundef %1604, ptr noundef @c__1)
  %1605 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  %1606 = load double, ptr %1605, align 8, !tbaa !16
  %1607 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 0
  store double %1606, ptr %1607, align 8, !tbaa !16
  %1608 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  %1609 = load double, ptr %1608, align 8, !tbaa !19
  %1610 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 1
  store double %1609, ptr %1610, align 8, !tbaa !19
  br label %1611

1611:                                             ; preds = %1594, %1590
  br label %1612

1612:                                             ; preds = %1611, %1552
  br label %1868

1613:                                             ; preds = %1533, %1527
  %1614 = load i64, ptr %59, align 8, !tbaa !9
  %1615 = icmp ne i64 %1614, 0
  br i1 %1615, label %1616, label %1744

1616:                                             ; preds = %1613
  %1617 = load ptr, ptr %19, align 8, !tbaa !5
  %1618 = load i64, ptr %1617, align 8, !tbaa !9
  store i64 %1618, ptr %30, align 8, !tbaa !9
  %1619 = load i64, ptr %42, align 8, !tbaa !9
  %1620 = sub nsw i64 %1619, 1
  store i64 %1620, ptr %31, align 8, !tbaa !9
  %1621 = load i64, ptr %30, align 8, !tbaa !9
  %1622 = load i64, ptr %31, align 8, !tbaa !9
  %1623 = icmp sle i64 %1621, %1622
  br i1 %1623, label %1624, label %1626

1624:                                             ; preds = %1616
  %1625 = load i64, ptr %30, align 8, !tbaa !9
  br label %1628

1626:                                             ; preds = %1616
  %1627 = load i64, ptr %31, align 8, !tbaa !9
  br label %1628

1628:                                             ; preds = %1626, %1624
  %1629 = phi i64 [ %1625, %1624 ], [ %1627, %1626 ]
  store i64 %1629, ptr %47, align 8, !tbaa !9
  %1630 = load i64, ptr %47, align 8, !tbaa !9
  store i64 %1630, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %41, align 8, !tbaa !9
  br label %1631

1631:                                             ; preds = %1740, %1628
  %1632 = load i64, ptr %41, align 8, !tbaa !9
  %1633 = load i64, ptr %30, align 8, !tbaa !9
  %1634 = icmp sle i64 %1632, %1633
  br i1 %1634, label %1635, label %1743

1635:                                             ; preds = %1631
  %1636 = load ptr, ptr %19, align 8, !tbaa !5
  %1637 = load i64, ptr %1636, align 8, !tbaa !9
  %1638 = load i64, ptr %41, align 8, !tbaa !9
  %1639 = add nsw i64 %1637, %1638
  %1640 = load i64, ptr %47, align 8, !tbaa !9
  %1641 = sub nsw i64 %1639, %1640
  %1642 = load i64, ptr %42, align 8, !tbaa !9
  %1643 = load i64, ptr %26, align 8, !tbaa !9
  %1644 = mul nsw i64 %1642, %1643
  %1645 = add nsw i64 %1641, %1644
  store i64 %1645, ptr %31, align 8, !tbaa !9
  %1646 = load ptr, ptr %20, align 8, !tbaa !5
  %1647 = load i64, ptr %31, align 8, !tbaa !9
  %1648 = getelementptr inbounds %struct.doublecomplex, ptr %1646, i64 %1647
  %1649 = getelementptr inbounds %struct.doublecomplex, ptr %1648, i32 0, i32 0
  %1650 = load double, ptr %1649, align 8, !tbaa !16
  %1651 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %1652 = load double, ptr %1651, align 8, !tbaa !16
  %1653 = load ptr, ptr %20, align 8, !tbaa !5
  %1654 = load i64, ptr %31, align 8, !tbaa !9
  %1655 = getelementptr inbounds %struct.doublecomplex, ptr %1653, i64 %1654
  %1656 = getelementptr inbounds %struct.doublecomplex, ptr %1655, i32 0, i32 1
  %1657 = load double, ptr %1656, align 8, !tbaa !19
  %1658 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %1659 = load double, ptr %1658, align 8, !tbaa !19
  %1660 = fmul double %1657, %1659
  %1661 = fneg double %1660
  %1662 = call double @llvm.fmuladd.f64(double %1650, double %1652, double %1661)
  %1663 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double %1662, ptr %1663, align 8, !tbaa !16
  %1664 = load ptr, ptr %20, align 8, !tbaa !5
  %1665 = load i64, ptr %31, align 8, !tbaa !9
  %1666 = getelementptr inbounds %struct.doublecomplex, ptr %1664, i64 %1665
  %1667 = getelementptr inbounds %struct.doublecomplex, ptr %1666, i32 0, i32 0
  %1668 = load double, ptr %1667, align 8, !tbaa !16
  %1669 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %1670 = load double, ptr %1669, align 8, !tbaa !19
  %1671 = load ptr, ptr %20, align 8, !tbaa !5
  %1672 = load i64, ptr %31, align 8, !tbaa !9
  %1673 = getelementptr inbounds %struct.doublecomplex, ptr %1671, i64 %1672
  %1674 = getelementptr inbounds %struct.doublecomplex, ptr %1673, i32 0, i32 1
  %1675 = load double, ptr %1674, align 8, !tbaa !19
  %1676 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %1677 = load double, ptr %1676, align 8, !tbaa !16
  %1678 = fmul double %1675, %1677
  %1679 = call double @llvm.fmuladd.f64(double %1668, double %1670, double %1678)
  %1680 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double %1679, ptr %1680, align 8, !tbaa !19
  %1681 = load i64, ptr %42, align 8, !tbaa !9
  %1682 = load i64, ptr %47, align 8, !tbaa !9
  %1683 = sub nsw i64 %1681, %1682
  %1684 = sub nsw i64 %1683, 1
  %1685 = load i64, ptr %41, align 8, !tbaa !9
  %1686 = add nsw i64 %1684, %1685
  store i64 %1686, ptr %32, align 8, !tbaa !9
  %1687 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %1688 = load double, ptr %1687, align 8, !tbaa !16
  %1689 = load ptr, ptr %22, align 8, !tbaa !5
  %1690 = load i64, ptr %32, align 8, !tbaa !9
  %1691 = getelementptr inbounds %struct.doublecomplex, ptr %1689, i64 %1690
  %1692 = getelementptr inbounds %struct.doublecomplex, ptr %1691, i32 0, i32 0
  %1693 = load double, ptr %1692, align 8, !tbaa !16
  %1694 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  %1695 = load double, ptr %1694, align 8, !tbaa !19
  %1696 = load ptr, ptr %22, align 8, !tbaa !5
  %1697 = load i64, ptr %32, align 8, !tbaa !9
  %1698 = getelementptr inbounds %struct.doublecomplex, ptr %1696, i64 %1697
  %1699 = getelementptr inbounds %struct.doublecomplex, ptr %1698, i32 0, i32 1
  %1700 = load double, ptr %1699, align 8, !tbaa !19
  %1701 = fmul double %1695, %1700
  %1702 = fneg double %1701
  %1703 = call double @llvm.fmuladd.f64(double %1688, double %1693, double %1702)
  %1704 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  store double %1703, ptr %1704, align 8, !tbaa !16
  %1705 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %1706 = load double, ptr %1705, align 8, !tbaa !16
  %1707 = load ptr, ptr %22, align 8, !tbaa !5
  %1708 = load i64, ptr %32, align 8, !tbaa !9
  %1709 = getelementptr inbounds %struct.doublecomplex, ptr %1707, i64 %1708
  %1710 = getelementptr inbounds %struct.doublecomplex, ptr %1709, i32 0, i32 1
  %1711 = load double, ptr %1710, align 8, !tbaa !19
  %1712 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  %1713 = load double, ptr %1712, align 8, !tbaa !19
  %1714 = load ptr, ptr %22, align 8, !tbaa !5
  %1715 = load i64, ptr %32, align 8, !tbaa !9
  %1716 = getelementptr inbounds %struct.doublecomplex, ptr %1714, i64 %1715
  %1717 = getelementptr inbounds %struct.doublecomplex, ptr %1716, i32 0, i32 0
  %1718 = load double, ptr %1717, align 8, !tbaa !16
  %1719 = fmul double %1713, %1718
  %1720 = call double @llvm.fmuladd.f64(double %1706, double %1711, double %1719)
  %1721 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  store double %1720, ptr %1721, align 8, !tbaa !19
  %1722 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 0
  %1723 = load double, ptr %1722, align 8, !tbaa !16
  %1724 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  %1725 = load double, ptr %1724, align 8, !tbaa !16
  %1726 = fadd double %1723, %1725
  %1727 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  store double %1726, ptr %1727, align 8, !tbaa !16
  %1728 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 1
  %1729 = load double, ptr %1728, align 8, !tbaa !19
  %1730 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  %1731 = load double, ptr %1730, align 8, !tbaa !19
  %1732 = fadd double %1729, %1731
  %1733 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  store double %1732, ptr %1733, align 8, !tbaa !19
  %1734 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  %1735 = load double, ptr %1734, align 8, !tbaa !16
  %1736 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 0
  store double %1735, ptr %1736, align 8, !tbaa !16
  %1737 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  %1738 = load double, ptr %1737, align 8, !tbaa !19
  %1739 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 1
  store double %1738, ptr %1739, align 8, !tbaa !19
  br label %1740

1740:                                             ; preds = %1635
  %1741 = load i64, ptr %41, align 8, !tbaa !9
  %1742 = add nsw i64 %1741, 1
  store i64 %1742, ptr %41, align 8, !tbaa !9
  br label %1631, !llvm.loop !26

1743:                                             ; preds = %1631
  br label %1867

1744:                                             ; preds = %1613
  %1745 = load ptr, ptr %19, align 8, !tbaa !5
  %1746 = load i64, ptr %1745, align 8, !tbaa !9
  store i64 %1746, ptr %30, align 8, !tbaa !9
  %1747 = load ptr, ptr %18, align 8, !tbaa !5
  %1748 = load i64, ptr %1747, align 8, !tbaa !9
  %1749 = load i64, ptr %42, align 8, !tbaa !9
  %1750 = sub nsw i64 %1748, %1749
  store i64 %1750, ptr %31, align 8, !tbaa !9
  %1751 = load i64, ptr %30, align 8, !tbaa !9
  %1752 = load i64, ptr %31, align 8, !tbaa !9
  %1753 = icmp sle i64 %1751, %1752
  br i1 %1753, label %1754, label %1756

1754:                                             ; preds = %1744
  %1755 = load i64, ptr %30, align 8, !tbaa !9
  br label %1758

1756:                                             ; preds = %1744
  %1757 = load i64, ptr %31, align 8, !tbaa !9
  br label %1758

1758:                                             ; preds = %1756, %1754
  %1759 = phi i64 [ %1755, %1754 ], [ %1757, %1756 ]
  store i64 %1759, ptr %47, align 8, !tbaa !9
  %1760 = load i64, ptr %47, align 8, !tbaa !9
  store i64 %1760, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %41, align 8, !tbaa !9
  br label %1761

1761:                                             ; preds = %1863, %1758
  %1762 = load i64, ptr %41, align 8, !tbaa !9
  %1763 = load i64, ptr %30, align 8, !tbaa !9
  %1764 = icmp sle i64 %1762, %1763
  br i1 %1764, label %1765, label %1866

1765:                                             ; preds = %1761
  %1766 = load i64, ptr %41, align 8, !tbaa !9
  %1767 = add nsw i64 %1766, 1
  %1768 = load i64, ptr %42, align 8, !tbaa !9
  %1769 = load i64, ptr %26, align 8, !tbaa !9
  %1770 = mul nsw i64 %1768, %1769
  %1771 = add nsw i64 %1767, %1770
  store i64 %1771, ptr %31, align 8, !tbaa !9
  %1772 = load ptr, ptr %20, align 8, !tbaa !5
  %1773 = load i64, ptr %31, align 8, !tbaa !9
  %1774 = getelementptr inbounds %struct.doublecomplex, ptr %1772, i64 %1773
  %1775 = getelementptr inbounds %struct.doublecomplex, ptr %1774, i32 0, i32 0
  %1776 = load double, ptr %1775, align 8, !tbaa !16
  %1777 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %1778 = load double, ptr %1777, align 8, !tbaa !16
  %1779 = load ptr, ptr %20, align 8, !tbaa !5
  %1780 = load i64, ptr %31, align 8, !tbaa !9
  %1781 = getelementptr inbounds %struct.doublecomplex, ptr %1779, i64 %1780
  %1782 = getelementptr inbounds %struct.doublecomplex, ptr %1781, i32 0, i32 1
  %1783 = load double, ptr %1782, align 8, !tbaa !19
  %1784 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %1785 = load double, ptr %1784, align 8, !tbaa !19
  %1786 = fmul double %1783, %1785
  %1787 = fneg double %1786
  %1788 = call double @llvm.fmuladd.f64(double %1776, double %1778, double %1787)
  %1789 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double %1788, ptr %1789, align 8, !tbaa !16
  %1790 = load ptr, ptr %20, align 8, !tbaa !5
  %1791 = load i64, ptr %31, align 8, !tbaa !9
  %1792 = getelementptr inbounds %struct.doublecomplex, ptr %1790, i64 %1791
  %1793 = getelementptr inbounds %struct.doublecomplex, ptr %1792, i32 0, i32 0
  %1794 = load double, ptr %1793, align 8, !tbaa !16
  %1795 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %1796 = load double, ptr %1795, align 8, !tbaa !19
  %1797 = load ptr, ptr %20, align 8, !tbaa !5
  %1798 = load i64, ptr %31, align 8, !tbaa !9
  %1799 = getelementptr inbounds %struct.doublecomplex, ptr %1797, i64 %1798
  %1800 = getelementptr inbounds %struct.doublecomplex, ptr %1799, i32 0, i32 1
  %1801 = load double, ptr %1800, align 8, !tbaa !19
  %1802 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %1803 = load double, ptr %1802, align 8, !tbaa !16
  %1804 = fmul double %1801, %1803
  %1805 = call double @llvm.fmuladd.f64(double %1794, double %1796, double %1804)
  %1806 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double %1805, ptr %1806, align 8, !tbaa !19
  %1807 = load i64, ptr %42, align 8, !tbaa !9
  %1808 = load i64, ptr %41, align 8, !tbaa !9
  %1809 = add nsw i64 %1807, %1808
  store i64 %1809, ptr %32, align 8, !tbaa !9
  %1810 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %1811 = load double, ptr %1810, align 8, !tbaa !16
  %1812 = load ptr, ptr %22, align 8, !tbaa !5
  %1813 = load i64, ptr %32, align 8, !tbaa !9
  %1814 = getelementptr inbounds %struct.doublecomplex, ptr %1812, i64 %1813
  %1815 = getelementptr inbounds %struct.doublecomplex, ptr %1814, i32 0, i32 0
  %1816 = load double, ptr %1815, align 8, !tbaa !16
  %1817 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  %1818 = load double, ptr %1817, align 8, !tbaa !19
  %1819 = load ptr, ptr %22, align 8, !tbaa !5
  %1820 = load i64, ptr %32, align 8, !tbaa !9
  %1821 = getelementptr inbounds %struct.doublecomplex, ptr %1819, i64 %1820
  %1822 = getelementptr inbounds %struct.doublecomplex, ptr %1821, i32 0, i32 1
  %1823 = load double, ptr %1822, align 8, !tbaa !19
  %1824 = fmul double %1818, %1823
  %1825 = fneg double %1824
  %1826 = call double @llvm.fmuladd.f64(double %1811, double %1816, double %1825)
  %1827 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  store double %1826, ptr %1827, align 8, !tbaa !16
  %1828 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %1829 = load double, ptr %1828, align 8, !tbaa !16
  %1830 = load ptr, ptr %22, align 8, !tbaa !5
  %1831 = load i64, ptr %32, align 8, !tbaa !9
  %1832 = getelementptr inbounds %struct.doublecomplex, ptr %1830, i64 %1831
  %1833 = getelementptr inbounds %struct.doublecomplex, ptr %1832, i32 0, i32 1
  %1834 = load double, ptr %1833, align 8, !tbaa !19
  %1835 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  %1836 = load double, ptr %1835, align 8, !tbaa !19
  %1837 = load ptr, ptr %22, align 8, !tbaa !5
  %1838 = load i64, ptr %32, align 8, !tbaa !9
  %1839 = getelementptr inbounds %struct.doublecomplex, ptr %1837, i64 %1838
  %1840 = getelementptr inbounds %struct.doublecomplex, ptr %1839, i32 0, i32 0
  %1841 = load double, ptr %1840, align 8, !tbaa !16
  %1842 = fmul double %1836, %1841
  %1843 = call double @llvm.fmuladd.f64(double %1829, double %1834, double %1842)
  %1844 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  store double %1843, ptr %1844, align 8, !tbaa !19
  %1845 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 0
  %1846 = load double, ptr %1845, align 8, !tbaa !16
  %1847 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  %1848 = load double, ptr %1847, align 8, !tbaa !16
  %1849 = fadd double %1846, %1848
  %1850 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  store double %1849, ptr %1850, align 8, !tbaa !16
  %1851 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 1
  %1852 = load double, ptr %1851, align 8, !tbaa !19
  %1853 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  %1854 = load double, ptr %1853, align 8, !tbaa !19
  %1855 = fadd double %1852, %1854
  %1856 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  store double %1855, ptr %1856, align 8, !tbaa !19
  %1857 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  %1858 = load double, ptr %1857, align 8, !tbaa !16
  %1859 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 0
  store double %1858, ptr %1859, align 8, !tbaa !16
  %1860 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  %1861 = load double, ptr %1860, align 8, !tbaa !19
  %1862 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 1
  store double %1861, ptr %1862, align 8, !tbaa !19
  br label %1863

1863:                                             ; preds = %1765
  %1864 = load i64, ptr %41, align 8, !tbaa !9
  %1865 = add nsw i64 %1864, 1
  store i64 %1865, ptr %41, align 8, !tbaa !9
  br label %1761, !llvm.loop !27

1866:                                             ; preds = %1761
  br label %1867

1867:                                             ; preds = %1866, %1743
  br label %1868

1868:                                             ; preds = %1867, %1612
  %1869 = load double, ptr %55, align 8, !tbaa !11
  %1870 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  store double %1869, ptr %1870, align 8, !tbaa !16
  %1871 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  store double 0.000000e+00, ptr %1871, align 8, !tbaa !19
  %1872 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %1873 = load double, ptr %1872, align 8, !tbaa !16
  %1874 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  %1875 = load double, ptr %1874, align 8, !tbaa !16
  %1876 = fcmp oeq double %1873, %1875
  br i1 %1876, label %1877, label %2127

1877:                                             ; preds = %1868
  %1878 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %1879 = load double, ptr %1878, align 8, !tbaa !19
  %1880 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  %1881 = load double, ptr %1880, align 8, !tbaa !19
  %1882 = fcmp oeq double %1879, %1881
  br i1 %1882, label %1883, label %2127

1883:                                             ; preds = %1877
  %1884 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %1884, ptr %30, align 8, !tbaa !9
  %1885 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %1885, ptr %31, align 8, !tbaa !9
  %1886 = load ptr, ptr %22, align 8, !tbaa !5
  %1887 = load i64, ptr %31, align 8, !tbaa !9
  %1888 = getelementptr inbounds %struct.doublecomplex, ptr %1886, i64 %1887
  %1889 = getelementptr inbounds %struct.doublecomplex, ptr %1888, i32 0, i32 0
  %1890 = load double, ptr %1889, align 8, !tbaa !16
  %1891 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 0
  %1892 = load double, ptr %1891, align 8, !tbaa !16
  %1893 = fsub double %1890, %1892
  %1894 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  store double %1893, ptr %1894, align 8, !tbaa !16
  %1895 = load ptr, ptr %22, align 8, !tbaa !5
  %1896 = load i64, ptr %31, align 8, !tbaa !9
  %1897 = getelementptr inbounds %struct.doublecomplex, ptr %1895, i64 %1896
  %1898 = getelementptr inbounds %struct.doublecomplex, ptr %1897, i32 0, i32 1
  %1899 = load double, ptr %1898, align 8, !tbaa !19
  %1900 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 1
  %1901 = load double, ptr %1900, align 8, !tbaa !19
  %1902 = fsub double %1899, %1901
  %1903 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  store double %1902, ptr %1903, align 8, !tbaa !19
  %1904 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  %1905 = load double, ptr %1904, align 8, !tbaa !16
  %1906 = load ptr, ptr %22, align 8, !tbaa !5
  %1907 = load i64, ptr %30, align 8, !tbaa !9
  %1908 = getelementptr inbounds %struct.doublecomplex, ptr %1906, i64 %1907
  %1909 = getelementptr inbounds %struct.doublecomplex, ptr %1908, i32 0, i32 0
  store double %1905, ptr %1909, align 8, !tbaa !16
  %1910 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  %1911 = load double, ptr %1910, align 8, !tbaa !19
  %1912 = load ptr, ptr %22, align 8, !tbaa !5
  %1913 = load i64, ptr %30, align 8, !tbaa !9
  %1914 = getelementptr inbounds %struct.doublecomplex, ptr %1912, i64 %1913
  %1915 = getelementptr inbounds %struct.doublecomplex, ptr %1914, i32 0, i32 1
  store double %1911, ptr %1915, align 8, !tbaa !19
  %1916 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %1916, ptr %30, align 8, !tbaa !9
  %1917 = load ptr, ptr %22, align 8, !tbaa !5
  %1918 = load i64, ptr %30, align 8, !tbaa !9
  %1919 = getelementptr inbounds %struct.doublecomplex, ptr %1917, i64 %1918
  %1920 = getelementptr inbounds %struct.doublecomplex, ptr %1919, i32 0, i32 0
  %1921 = load double, ptr %1920, align 8, !tbaa !16
  store double %1921, ptr %33, align 8, !tbaa !11
  %1922 = load double, ptr %33, align 8, !tbaa !11
  %1923 = fcmp oge double %1922, 0.000000e+00
  br i1 %1923, label %1924, label %1926

1924:                                             ; preds = %1883
  %1925 = load double, ptr %33, align 8, !tbaa !11
  br label %1929

1926:                                             ; preds = %1883
  %1927 = load double, ptr %33, align 8, !tbaa !11
  %1928 = fneg double %1927
  br label %1929

1929:                                             ; preds = %1926, %1924
  %1930 = phi double [ %1925, %1924 ], [ %1928, %1926 ]
  %1931 = load ptr, ptr %22, align 8, !tbaa !5
  %1932 = load i64, ptr %42, align 8, !tbaa !9
  %1933 = getelementptr inbounds %struct.doublecomplex, ptr %1931, i64 %1932
  %1934 = call double @d_imag(ptr noundef %1933)
  store double %1934, ptr %34, align 8, !tbaa !11
  %1935 = load double, ptr %34, align 8, !tbaa !11
  %1936 = fcmp oge double %1935, 0.000000e+00
  br i1 %1936, label %1937, label %1939

1937:                                             ; preds = %1929
  %1938 = load double, ptr %34, align 8, !tbaa !11
  br label %1942

1939:                                             ; preds = %1929
  %1940 = load double, ptr %34, align 8, !tbaa !11
  %1941 = fneg double %1940
  br label %1942

1942:                                             ; preds = %1939, %1937
  %1943 = phi double [ %1938, %1937 ], [ %1941, %1939 ]
  %1944 = fadd double %1930, %1943
  store double %1944, ptr %43, align 8, !tbaa !11
  %1945 = load i64, ptr %64, align 8, !tbaa !9
  %1946 = icmp ne i64 %1945, 0
  br i1 %1946, label %1947, label %1975

1947:                                             ; preds = %1942
  %1948 = load i64, ptr %54, align 8, !tbaa !9
  %1949 = load i64, ptr %42, align 8, !tbaa !9
  %1950 = load i64, ptr %26, align 8, !tbaa !9
  %1951 = mul nsw i64 %1949, %1950
  %1952 = add nsw i64 %1948, %1951
  store i64 %1952, ptr %30, align 8, !tbaa !9
  %1953 = load double, ptr %55, align 8, !tbaa !11
  %1954 = load ptr, ptr %20, align 8, !tbaa !5
  %1955 = load i64, ptr %30, align 8, !tbaa !9
  %1956 = getelementptr inbounds %struct.doublecomplex, ptr %1954, i64 %1955
  %1957 = getelementptr inbounds %struct.doublecomplex, ptr %1956, i32 0, i32 0
  %1958 = load double, ptr %1957, align 8, !tbaa !16
  %1959 = fmul double %1953, %1958
  %1960 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  store double %1959, ptr %1960, align 8, !tbaa !16
  %1961 = load double, ptr %55, align 8, !tbaa !11
  %1962 = load ptr, ptr %20, align 8, !tbaa !5
  %1963 = load i64, ptr %30, align 8, !tbaa !9
  %1964 = getelementptr inbounds %struct.doublecomplex, ptr %1962, i64 %1963
  %1965 = getelementptr inbounds %struct.doublecomplex, ptr %1964, i32 0, i32 1
  %1966 = load double, ptr %1965, align 8, !tbaa !19
  %1967 = fmul double %1961, %1966
  %1968 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  store double %1967, ptr %1968, align 8, !tbaa !19
  %1969 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  %1970 = load double, ptr %1969, align 8, !tbaa !16
  %1971 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %1970, ptr %1971, align 8, !tbaa !16
  %1972 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  %1973 = load double, ptr %1972, align 8, !tbaa !19
  %1974 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double %1973, ptr %1974, align 8, !tbaa !19
  br label %1983

1975:                                             ; preds = %1942
  %1976 = load double, ptr %55, align 8, !tbaa !11
  %1977 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %1976, ptr %1977, align 8, !tbaa !16
  %1978 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double 0.000000e+00, ptr %1978, align 8, !tbaa !19
  %1979 = load double, ptr %55, align 8, !tbaa !11
  %1980 = fcmp oeq double %1979, 1.000000e+00
  br i1 %1980, label %1981, label %1982

1981:                                             ; preds = %1975
  br label %2126

1982:                                             ; preds = %1975
  br label %1983

1983:                                             ; preds = %1982, %1947
  %1984 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %1985 = load double, ptr %1984, align 8, !tbaa !16
  store double %1985, ptr %33, align 8, !tbaa !11
  %1986 = load double, ptr %33, align 8, !tbaa !11
  %1987 = fcmp oge double %1986, 0.000000e+00
  br i1 %1987, label %1988, label %1990

1988:                                             ; preds = %1983
  %1989 = load double, ptr %33, align 8, !tbaa !11
  br label %1993

1990:                                             ; preds = %1983
  %1991 = load double, ptr %33, align 8, !tbaa !11
  %1992 = fneg double %1991
  br label %1993

1993:                                             ; preds = %1990, %1988
  %1994 = phi double [ %1989, %1988 ], [ %1992, %1990 ]
  %1995 = call double @d_imag(ptr noundef %51)
  store double %1995, ptr %34, align 8, !tbaa !11
  %1996 = load double, ptr %34, align 8, !tbaa !11
  %1997 = fcmp oge double %1996, 0.000000e+00
  br i1 %1997, label %1998, label %2000

1998:                                             ; preds = %1993
  %1999 = load double, ptr %34, align 8, !tbaa !11
  br label %2003

2000:                                             ; preds = %1993
  %2001 = load double, ptr %34, align 8, !tbaa !11
  %2002 = fneg double %2001
  br label %2003

2003:                                             ; preds = %2000, %1998
  %2004 = phi double [ %1999, %1998 ], [ %2002, %2000 ]
  %2005 = fadd double %1994, %2004
  store double %2005, ptr %45, align 8, !tbaa !11
  %2006 = load double, ptr %45, align 8, !tbaa !11
  %2007 = load double, ptr %63, align 8, !tbaa !11
  %2008 = fcmp ogt double %2006, %2007
  br i1 %2008, label %2009, label %2050

2009:                                             ; preds = %2003
  %2010 = load double, ptr %45, align 8, !tbaa !11
  %2011 = fcmp olt double %2010, 1.000000e+00
  br i1 %2011, label %2012, label %2033

2012:                                             ; preds = %2009
  %2013 = load double, ptr %43, align 8, !tbaa !11
  %2014 = load double, ptr %45, align 8, !tbaa !11
  %2015 = load double, ptr %60, align 8, !tbaa !11
  %2016 = fmul double %2014, %2015
  %2017 = fcmp ogt double %2013, %2016
  br i1 %2017, label %2018, label %2032

2018:                                             ; preds = %2012
  %2019 = load double, ptr %43, align 8, !tbaa !11
  %2020 = fdiv double 1.000000e+00, %2019
  store double %2020, ptr %44, align 8, !tbaa !11
  %2021 = load ptr, ptr %18, align 8, !tbaa !5
  %2022 = load ptr, ptr %22, align 8, !tbaa !5
  %2023 = getelementptr inbounds %struct.doublecomplex, ptr %2022, i64 1
  %2024 = call i32 @f2c_zdscal(ptr noundef %2021, ptr noundef %44, ptr noundef %2023, ptr noundef @c__1)
  %2025 = load double, ptr %44, align 8, !tbaa !11
  %2026 = load ptr, ptr %23, align 8, !tbaa !5
  %2027 = load double, ptr %2026, align 8, !tbaa !11
  %2028 = fmul double %2027, %2025
  store double %2028, ptr %2026, align 8, !tbaa !11
  %2029 = load double, ptr %44, align 8, !tbaa !11
  %2030 = load double, ptr %52, align 8, !tbaa !11
  %2031 = fmul double %2030, %2029
  store double %2031, ptr %52, align 8, !tbaa !11
  br label %2032

2032:                                             ; preds = %2018, %2012
  br label %2033

2033:                                             ; preds = %2032, %2009
  %2034 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %2034, ptr %30, align 8, !tbaa !9
  %2035 = load ptr, ptr %22, align 8, !tbaa !5
  %2036 = load i64, ptr %42, align 8, !tbaa !9
  %2037 = getelementptr inbounds %struct.doublecomplex, ptr %2035, i64 %2036
  call void @zladiv_(ptr noundef %37, ptr noundef %2037, ptr noundef %51)
  %2038 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  %2039 = load double, ptr %2038, align 8, !tbaa !16
  %2040 = load ptr, ptr %22, align 8, !tbaa !5
  %2041 = load i64, ptr %30, align 8, !tbaa !9
  %2042 = getelementptr inbounds %struct.doublecomplex, ptr %2040, i64 %2041
  %2043 = getelementptr inbounds %struct.doublecomplex, ptr %2042, i32 0, i32 0
  store double %2039, ptr %2043, align 8, !tbaa !16
  %2044 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  %2045 = load double, ptr %2044, align 8, !tbaa !19
  %2046 = load ptr, ptr %22, align 8, !tbaa !5
  %2047 = load i64, ptr %30, align 8, !tbaa !9
  %2048 = getelementptr inbounds %struct.doublecomplex, ptr %2046, i64 %2047
  %2049 = getelementptr inbounds %struct.doublecomplex, ptr %2048, i32 0, i32 1
  store double %2045, ptr %2049, align 8, !tbaa !19
  br label %2125

2050:                                             ; preds = %2003
  %2051 = load double, ptr %45, align 8, !tbaa !11
  %2052 = fcmp ogt double %2051, 0.000000e+00
  br i1 %2052, label %2053, label %2093

2053:                                             ; preds = %2050
  %2054 = load double, ptr %43, align 8, !tbaa !11
  %2055 = load double, ptr %45, align 8, !tbaa !11
  %2056 = load double, ptr %60, align 8, !tbaa !11
  %2057 = fmul double %2055, %2056
  %2058 = fcmp ogt double %2054, %2057
  br i1 %2058, label %2059, label %2076

2059:                                             ; preds = %2053
  %2060 = load double, ptr %45, align 8, !tbaa !11
  %2061 = load double, ptr %60, align 8, !tbaa !11
  %2062 = fmul double %2060, %2061
  %2063 = load double, ptr %43, align 8, !tbaa !11
  %2064 = fdiv double %2062, %2063
  store double %2064, ptr %44, align 8, !tbaa !11
  %2065 = load ptr, ptr %18, align 8, !tbaa !5
  %2066 = load ptr, ptr %22, align 8, !tbaa !5
  %2067 = getelementptr inbounds %struct.doublecomplex, ptr %2066, i64 1
  %2068 = call i32 @f2c_zdscal(ptr noundef %2065, ptr noundef %44, ptr noundef %2067, ptr noundef @c__1)
  %2069 = load double, ptr %44, align 8, !tbaa !11
  %2070 = load ptr, ptr %23, align 8, !tbaa !5
  %2071 = load double, ptr %2070, align 8, !tbaa !11
  %2072 = fmul double %2071, %2069
  store double %2072, ptr %2070, align 8, !tbaa !11
  %2073 = load double, ptr %44, align 8, !tbaa !11
  %2074 = load double, ptr %52, align 8, !tbaa !11
  %2075 = fmul double %2074, %2073
  store double %2075, ptr %52, align 8, !tbaa !11
  br label %2076

2076:                                             ; preds = %2059, %2053
  %2077 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %2077, ptr %30, align 8, !tbaa !9
  %2078 = load ptr, ptr %22, align 8, !tbaa !5
  %2079 = load i64, ptr %42, align 8, !tbaa !9
  %2080 = getelementptr inbounds %struct.doublecomplex, ptr %2078, i64 %2079
  call void @zladiv_(ptr noundef %37, ptr noundef %2080, ptr noundef %51)
  %2081 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  %2082 = load double, ptr %2081, align 8, !tbaa !16
  %2083 = load ptr, ptr %22, align 8, !tbaa !5
  %2084 = load i64, ptr %30, align 8, !tbaa !9
  %2085 = getelementptr inbounds %struct.doublecomplex, ptr %2083, i64 %2084
  %2086 = getelementptr inbounds %struct.doublecomplex, ptr %2085, i32 0, i32 0
  store double %2082, ptr %2086, align 8, !tbaa !16
  %2087 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  %2088 = load double, ptr %2087, align 8, !tbaa !19
  %2089 = load ptr, ptr %22, align 8, !tbaa !5
  %2090 = load i64, ptr %30, align 8, !tbaa !9
  %2091 = getelementptr inbounds %struct.doublecomplex, ptr %2089, i64 %2090
  %2092 = getelementptr inbounds %struct.doublecomplex, ptr %2091, i32 0, i32 1
  store double %2088, ptr %2092, align 8, !tbaa !19
  br label %2124

2093:                                             ; preds = %2050
  %2094 = load ptr, ptr %18, align 8, !tbaa !5
  %2095 = load i64, ptr %2094, align 8, !tbaa !9
  store i64 %2095, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %41, align 8, !tbaa !9
  br label %2096

2096:                                             ; preds = %2110, %2093
  %2097 = load i64, ptr %41, align 8, !tbaa !9
  %2098 = load i64, ptr %30, align 8, !tbaa !9
  %2099 = icmp sle i64 %2097, %2098
  br i1 %2099, label %2100, label %2113

2100:                                             ; preds = %2096
  %2101 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %2101, ptr %31, align 8, !tbaa !9
  %2102 = load ptr, ptr %22, align 8, !tbaa !5
  %2103 = load i64, ptr %31, align 8, !tbaa !9
  %2104 = getelementptr inbounds %struct.doublecomplex, ptr %2102, i64 %2103
  %2105 = getelementptr inbounds %struct.doublecomplex, ptr %2104, i32 0, i32 0
  store double 0.000000e+00, ptr %2105, align 8, !tbaa !16
  %2106 = load ptr, ptr %22, align 8, !tbaa !5
  %2107 = load i64, ptr %31, align 8, !tbaa !9
  %2108 = getelementptr inbounds %struct.doublecomplex, ptr %2106, i64 %2107
  %2109 = getelementptr inbounds %struct.doublecomplex, ptr %2108, i32 0, i32 1
  store double 0.000000e+00, ptr %2109, align 8, !tbaa !19
  br label %2110

2110:                                             ; preds = %2100
  %2111 = load i64, ptr %41, align 8, !tbaa !9
  %2112 = add nsw i64 %2111, 1
  store i64 %2112, ptr %41, align 8, !tbaa !9
  br label %2096, !llvm.loop !28

2113:                                             ; preds = %2096
  %2114 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %2114, ptr %30, align 8, !tbaa !9
  %2115 = load ptr, ptr %22, align 8, !tbaa !5
  %2116 = load i64, ptr %30, align 8, !tbaa !9
  %2117 = getelementptr inbounds %struct.doublecomplex, ptr %2115, i64 %2116
  %2118 = getelementptr inbounds %struct.doublecomplex, ptr %2117, i32 0, i32 0
  store double 1.000000e+00, ptr %2118, align 8, !tbaa !16
  %2119 = load ptr, ptr %22, align 8, !tbaa !5
  %2120 = load i64, ptr %30, align 8, !tbaa !9
  %2121 = getelementptr inbounds %struct.doublecomplex, ptr %2119, i64 %2120
  %2122 = getelementptr inbounds %struct.doublecomplex, ptr %2121, i32 0, i32 1
  store double 0.000000e+00, ptr %2122, align 8, !tbaa !19
  %2123 = load ptr, ptr %23, align 8, !tbaa !5
  store double 0.000000e+00, ptr %2123, align 8, !tbaa !11
  store double 0.000000e+00, ptr %52, align 8, !tbaa !11
  br label %2124

2124:                                             ; preds = %2113, %2076
  br label %2125

2125:                                             ; preds = %2124, %2033
  br label %2126

2126:                                             ; preds = %2125, %1981
  br label %2156

2127:                                             ; preds = %1877, %1868
  %2128 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %2128, ptr %30, align 8, !tbaa !9
  %2129 = load ptr, ptr %22, align 8, !tbaa !5
  %2130 = load i64, ptr %42, align 8, !tbaa !9
  %2131 = getelementptr inbounds %struct.doublecomplex, ptr %2129, i64 %2130
  call void @zladiv_(ptr noundef %38, ptr noundef %2131, ptr noundef %51)
  %2132 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  %2133 = load double, ptr %2132, align 8, !tbaa !16
  %2134 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 0
  %2135 = load double, ptr %2134, align 8, !tbaa !16
  %2136 = fsub double %2133, %2135
  %2137 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  store double %2136, ptr %2137, align 8, !tbaa !16
  %2138 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  %2139 = load double, ptr %2138, align 8, !tbaa !19
  %2140 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 1
  %2141 = load double, ptr %2140, align 8, !tbaa !19
  %2142 = fsub double %2139, %2141
  %2143 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  store double %2142, ptr %2143, align 8, !tbaa !19
  %2144 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  %2145 = load double, ptr %2144, align 8, !tbaa !16
  %2146 = load ptr, ptr %22, align 8, !tbaa !5
  %2147 = load i64, ptr %30, align 8, !tbaa !9
  %2148 = getelementptr inbounds %struct.doublecomplex, ptr %2146, i64 %2147
  %2149 = getelementptr inbounds %struct.doublecomplex, ptr %2148, i32 0, i32 0
  store double %2145, ptr %2149, align 8, !tbaa !16
  %2150 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  %2151 = load double, ptr %2150, align 8, !tbaa !19
  %2152 = load ptr, ptr %22, align 8, !tbaa !5
  %2153 = load i64, ptr %30, align 8, !tbaa !9
  %2154 = getelementptr inbounds %struct.doublecomplex, ptr %2152, i64 %2153
  %2155 = getelementptr inbounds %struct.doublecomplex, ptr %2154, i32 0, i32 1
  store double %2151, ptr %2155, align 8, !tbaa !19
  br label %2156

2156:                                             ; preds = %2127, %2126
  %2157 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %2157, ptr %30, align 8, !tbaa !9
  %2158 = load double, ptr %52, align 8, !tbaa !11
  store double %2158, ptr %35, align 8, !tbaa !11
  %2159 = load ptr, ptr %22, align 8, !tbaa !5
  %2160 = load i64, ptr %30, align 8, !tbaa !9
  %2161 = getelementptr inbounds %struct.doublecomplex, ptr %2159, i64 %2160
  %2162 = getelementptr inbounds %struct.doublecomplex, ptr %2161, i32 0, i32 0
  %2163 = load double, ptr %2162, align 8, !tbaa !16
  store double %2163, ptr %33, align 8, !tbaa !11
  %2164 = load double, ptr %33, align 8, !tbaa !11
  %2165 = fcmp oge double %2164, 0.000000e+00
  br i1 %2165, label %2166, label %2168

2166:                                             ; preds = %2156
  %2167 = load double, ptr %33, align 8, !tbaa !11
  br label %2171

2168:                                             ; preds = %2156
  %2169 = load double, ptr %33, align 8, !tbaa !11
  %2170 = fneg double %2169
  br label %2171

2171:                                             ; preds = %2168, %2166
  %2172 = phi double [ %2167, %2166 ], [ %2170, %2168 ]
  %2173 = load ptr, ptr %22, align 8, !tbaa !5
  %2174 = load i64, ptr %42, align 8, !tbaa !9
  %2175 = getelementptr inbounds %struct.doublecomplex, ptr %2173, i64 %2174
  %2176 = call double @d_imag(ptr noundef %2175)
  store double %2176, ptr %34, align 8, !tbaa !11
  %2177 = load double, ptr %34, align 8, !tbaa !11
  %2178 = fcmp oge double %2177, 0.000000e+00
  br i1 %2178, label %2179, label %2181

2179:                                             ; preds = %2171
  %2180 = load double, ptr %34, align 8, !tbaa !11
  br label %2184

2181:                                             ; preds = %2171
  %2182 = load double, ptr %34, align 8, !tbaa !11
  %2183 = fneg double %2182
  br label %2184

2184:                                             ; preds = %2181, %2179
  %2185 = phi double [ %2180, %2179 ], [ %2183, %2181 ]
  %2186 = fadd double %2172, %2185
  store double %2186, ptr %36, align 8, !tbaa !11
  %2187 = load double, ptr %35, align 8, !tbaa !11
  %2188 = load double, ptr %36, align 8, !tbaa !11
  %2189 = fcmp oge double %2187, %2188
  br i1 %2189, label %2190, label %2192

2190:                                             ; preds = %2184
  %2191 = load double, ptr %35, align 8, !tbaa !11
  br label %2194

2192:                                             ; preds = %2184
  %2193 = load double, ptr %36, align 8, !tbaa !11
  br label %2194

2194:                                             ; preds = %2192, %2190
  %2195 = phi double [ %2191, %2190 ], [ %2193, %2192 ]
  store double %2195, ptr %52, align 8, !tbaa !11
  br label %2196

2196:                                             ; preds = %2194
  %2197 = load i64, ptr %28, align 8, !tbaa !9
  %2198 = load i64, ptr %42, align 8, !tbaa !9
  %2199 = add nsw i64 %2198, %2197
  store i64 %2199, ptr %42, align 8, !tbaa !9
  br label %1363, !llvm.loop !29

2200:                                             ; preds = %1376
  br label %3015

2201:                                             ; preds = %1355
  %2202 = load i64, ptr %57, align 8, !tbaa !9
  store i64 %2202, ptr %28, align 8, !tbaa !9
  %2203 = load i64, ptr %46, align 8, !tbaa !9
  store i64 %2203, ptr %29, align 8, !tbaa !9
  %2204 = load i64, ptr %62, align 8, !tbaa !9
  store i64 %2204, ptr %42, align 8, !tbaa !9
  br label %2205

2205:                                             ; preds = %3010, %2201
  %2206 = load i64, ptr %29, align 8, !tbaa !9
  %2207 = icmp slt i64 %2206, 0
  br i1 %2207, label %2208, label %2213

2208:                                             ; preds = %2205
  %2209 = load i64, ptr %42, align 8, !tbaa !9
  %2210 = load i64, ptr %28, align 8, !tbaa !9
  %2211 = icmp sge i64 %2209, %2210
  %2212 = zext i1 %2211 to i32
  br label %2218

2213:                                             ; preds = %2205
  %2214 = load i64, ptr %42, align 8, !tbaa !9
  %2215 = load i64, ptr %28, align 8, !tbaa !9
  %2216 = icmp sle i64 %2214, %2215
  %2217 = zext i1 %2216 to i32
  br label %2218

2218:                                             ; preds = %2213, %2208
  %2219 = phi i32 [ %2212, %2208 ], [ %2217, %2213 ]
  %2220 = icmp ne i32 %2219, 0
  br i1 %2220, label %2221, label %3014

2221:                                             ; preds = %2218
  %2222 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %2222, ptr %30, align 8, !tbaa !9
  %2223 = load ptr, ptr %22, align 8, !tbaa !5
  %2224 = load i64, ptr %30, align 8, !tbaa !9
  %2225 = getelementptr inbounds %struct.doublecomplex, ptr %2223, i64 %2224
  %2226 = getelementptr inbounds %struct.doublecomplex, ptr %2225, i32 0, i32 0
  %2227 = load double, ptr %2226, align 8, !tbaa !16
  store double %2227, ptr %33, align 8, !tbaa !11
  %2228 = load double, ptr %33, align 8, !tbaa !11
  %2229 = fcmp oge double %2228, 0.000000e+00
  br i1 %2229, label %2230, label %2232

2230:                                             ; preds = %2221
  %2231 = load double, ptr %33, align 8, !tbaa !11
  br label %2235

2232:                                             ; preds = %2221
  %2233 = load double, ptr %33, align 8, !tbaa !11
  %2234 = fneg double %2233
  br label %2235

2235:                                             ; preds = %2232, %2230
  %2236 = phi double [ %2231, %2230 ], [ %2234, %2232 ]
  %2237 = load ptr, ptr %22, align 8, !tbaa !5
  %2238 = load i64, ptr %42, align 8, !tbaa !9
  %2239 = getelementptr inbounds %struct.doublecomplex, ptr %2237, i64 %2238
  %2240 = call double @d_imag(ptr noundef %2239)
  store double %2240, ptr %34, align 8, !tbaa !11
  %2241 = load double, ptr %34, align 8, !tbaa !11
  %2242 = fcmp oge double %2241, 0.000000e+00
  br i1 %2242, label %2243, label %2245

2243:                                             ; preds = %2235
  %2244 = load double, ptr %34, align 8, !tbaa !11
  br label %2248

2245:                                             ; preds = %2235
  %2246 = load double, ptr %34, align 8, !tbaa !11
  %2247 = fneg double %2246
  br label %2248

2248:                                             ; preds = %2245, %2243
  %2249 = phi double [ %2244, %2243 ], [ %2247, %2245 ]
  %2250 = fadd double %2236, %2249
  store double %2250, ptr %43, align 8, !tbaa !11
  %2251 = load double, ptr %55, align 8, !tbaa !11
  %2252 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  store double %2251, ptr %2252, align 8, !tbaa !16
  %2253 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  store double 0.000000e+00, ptr %2253, align 8, !tbaa !19
  %2254 = load double, ptr %52, align 8, !tbaa !11
  %2255 = fcmp oge double %2254, 1.000000e+00
  br i1 %2255, label %2256, label %2258

2256:                                             ; preds = %2248
  %2257 = load double, ptr %52, align 8, !tbaa !11
  br label %2259

2258:                                             ; preds = %2248
  br label %2259

2259:                                             ; preds = %2258, %2256
  %2260 = phi double [ %2257, %2256 ], [ 1.000000e+00, %2258 ]
  %2261 = fdiv double 1.000000e+00, %2260
  store double %2261, ptr %44, align 8, !tbaa !11
  %2262 = load ptr, ptr %24, align 8, !tbaa !5
  %2263 = load i64, ptr %42, align 8, !tbaa !9
  %2264 = getelementptr inbounds double, ptr %2262, i64 %2263
  %2265 = load double, ptr %2264, align 8, !tbaa !11
  %2266 = load double, ptr %60, align 8, !tbaa !11
  %2267 = load double, ptr %43, align 8, !tbaa !11
  %2268 = fsub double %2266, %2267
  %2269 = load double, ptr %44, align 8, !tbaa !11
  %2270 = fmul double %2268, %2269
  %2271 = fcmp ogt double %2265, %2270
  br i1 %2271, label %2272, label %2365

2272:                                             ; preds = %2259
  %2273 = load double, ptr %44, align 8, !tbaa !11
  %2274 = fmul double %2273, 5.000000e-01
  store double %2274, ptr %44, align 8, !tbaa !11
  %2275 = load i64, ptr %64, align 8, !tbaa !9
  %2276 = icmp ne i64 %2275, 0
  br i1 %2276, label %2277, label %2301

2277:                                             ; preds = %2272
  %2278 = load ptr, ptr %20, align 8, !tbaa !5
  %2279 = load i64, ptr %54, align 8, !tbaa !9
  %2280 = load i64, ptr %42, align 8, !tbaa !9
  %2281 = load i64, ptr %26, align 8, !tbaa !9
  %2282 = mul nsw i64 %2280, %2281
  %2283 = add nsw i64 %2279, %2282
  %2284 = getelementptr inbounds %struct.doublecomplex, ptr %2278, i64 %2283
  call void @d_cnjg(ptr noundef %38, ptr noundef %2284)
  %2285 = load double, ptr %55, align 8, !tbaa !11
  %2286 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  %2287 = load double, ptr %2286, align 8, !tbaa !16
  %2288 = fmul double %2285, %2287
  %2289 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  store double %2288, ptr %2289, align 8, !tbaa !16
  %2290 = load double, ptr %55, align 8, !tbaa !11
  %2291 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  %2292 = load double, ptr %2291, align 8, !tbaa !19
  %2293 = fmul double %2290, %2292
  %2294 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  store double %2293, ptr %2294, align 8, !tbaa !19
  %2295 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  %2296 = load double, ptr %2295, align 8, !tbaa !16
  %2297 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %2296, ptr %2297, align 8, !tbaa !16
  %2298 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  %2299 = load double, ptr %2298, align 8, !tbaa !19
  %2300 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double %2299, ptr %2300, align 8, !tbaa !19
  br label %2305

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

2305:                                             ; preds = %2301, %2277
  %2306 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %2307 = load double, ptr %2306, align 8, !tbaa !16
  store double %2307, ptr %33, align 8, !tbaa !11
  %2308 = load double, ptr %33, align 8, !tbaa !11
  %2309 = fcmp oge double %2308, 0.000000e+00
  br i1 %2309, label %2310, label %2312

2310:                                             ; preds = %2305
  %2311 = load double, ptr %33, align 8, !tbaa !11
  br label %2315

2312:                                             ; preds = %2305
  %2313 = load double, ptr %33, align 8, !tbaa !11
  %2314 = fneg double %2313
  br label %2315

2315:                                             ; preds = %2312, %2310
  %2316 = phi double [ %2311, %2310 ], [ %2314, %2312 ]
  %2317 = call double @d_imag(ptr noundef %51)
  store double %2317, ptr %34, align 8, !tbaa !11
  %2318 = load double, ptr %34, align 8, !tbaa !11
  %2319 = fcmp oge double %2318, 0.000000e+00
  br i1 %2319, label %2320, label %2322

2320:                                             ; preds = %2315
  %2321 = load double, ptr %34, align 8, !tbaa !11
  br label %2325

2322:                                             ; preds = %2315
  %2323 = load double, ptr %34, align 8, !tbaa !11
  %2324 = fneg double %2323
  br label %2325

2325:                                             ; preds = %2322, %2320
  %2326 = phi double [ %2321, %2320 ], [ %2324, %2322 ]
  %2327 = fadd double %2316, %2326
  store double %2327, ptr %45, align 8, !tbaa !11
  %2328 = load double, ptr %45, align 8, !tbaa !11
  %2329 = fcmp ogt double %2328, 1.000000e+00
  br i1 %2329, label %2330, label %2349

2330:                                             ; preds = %2325
  store double 1.000000e+00, ptr %33, align 8, !tbaa !11
  %2331 = load double, ptr %44, align 8, !tbaa !11
  %2332 = load double, ptr %45, align 8, !tbaa !11
  %2333 = fmul double %2331, %2332
  store double %2333, ptr %34, align 8, !tbaa !11
  %2334 = load double, ptr %33, align 8, !tbaa !11
  %2335 = load double, ptr %34, align 8, !tbaa !11
  %2336 = fcmp ole double %2334, %2335
  br i1 %2336, label %2337, label %2339

2337:                                             ; preds = %2330
  %2338 = load double, ptr %33, align 8, !tbaa !11
  br label %2341

2339:                                             ; preds = %2330
  %2340 = load double, ptr %34, align 8, !tbaa !11
  br label %2341

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

2349:                                             ; preds = %2341, %2325
  %2350 = load double, ptr %44, align 8, !tbaa !11
  %2351 = fcmp olt double %2350, 1.000000e+00
  br i1 %2351, label %2352, label %2364

2352:                                             ; preds = %2349
  %2353 = load ptr, ptr %18, align 8, !tbaa !5
  %2354 = load ptr, ptr %22, align 8, !tbaa !5
  %2355 = getelementptr inbounds %struct.doublecomplex, ptr %2354, i64 1
  %2356 = call i32 @f2c_zdscal(ptr noundef %2353, ptr noundef %44, ptr noundef %2355, ptr noundef @c__1)
  %2357 = load double, ptr %44, align 8, !tbaa !11
  %2358 = load ptr, ptr %23, 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 %44, align 8, !tbaa !11
  %2362 = load double, ptr %52, align 8, !tbaa !11
  %2363 = fmul double %2362, %2361
  store double %2363, ptr %52, align 8, !tbaa !11
  br label %2364

2364:                                             ; preds = %2352, %2349
  br label %2365

2365:                                             ; preds = %2364, %2259
  %2366 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 0
  store double 0.000000e+00, ptr %2366, align 8, !tbaa !16
  %2367 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 1
  store double 0.000000e+00, ptr %2367, align 8, !tbaa !19
  %2368 = getelementptr inbounds %struct.doublecomplex, ptr %56, 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 %2451

2371:                                             ; preds = %2365
  %2372 = getelementptr inbounds %struct.doublecomplex, ptr %56, 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 %2451

2375:                                             ; preds = %2371
  %2376 = load i64, ptr %59, align 8, !tbaa !9
  %2377 = icmp ne i64 %2376, 0
  br i1 %2377, label %2378, label %2414

2378:                                             ; preds = %2375
  %2379 = load ptr, ptr %19, align 8, !tbaa !5
  %2380 = load i64, ptr %2379, align 8, !tbaa !9
  store i64 %2380, ptr %30, align 8, !tbaa !9
  %2381 = load i64, ptr %42, align 8, !tbaa !9
  %2382 = sub nsw i64 %2381, 1
  store i64 %2382, ptr %31, align 8, !tbaa !9
  %2383 = load i64, ptr %30, align 8, !tbaa !9
  %2384 = load i64, ptr %31, align 8, !tbaa !9
  %2385 = icmp sle i64 %2383, %2384
  br i1 %2385, label %2386, label %2388

2386:                                             ; preds = %2378
  %2387 = load i64, ptr %30, align 8, !tbaa !9
  br label %2390

2388:                                             ; preds = %2378
  %2389 = load i64, ptr %31, align 8, !tbaa !9
  br label %2390

2390:                                             ; preds = %2388, %2386
  %2391 = phi i64 [ %2387, %2386 ], [ %2389, %2388 ]
  store i64 %2391, ptr %47, align 8, !tbaa !9
  %2392 = load ptr, ptr %20, align 8, !tbaa !5
  %2393 = load ptr, ptr %19, align 8, !tbaa !5
  %2394 = load i64, ptr %2393, align 8, !tbaa !9
  %2395 = add nsw i64 %2394, 1
  %2396 = load i64, ptr %47, align 8, !tbaa !9
  %2397 = sub nsw i64 %2395, %2396
  %2398 = load i64, ptr %42, align 8, !tbaa !9
  %2399 = load i64, ptr %26, align 8, !tbaa !9
  %2400 = mul nsw i64 %2398, %2399
  %2401 = add nsw i64 %2397, %2400
  %2402 = getelementptr inbounds %struct.doublecomplex, ptr %2392, i64 %2401
  %2403 = load ptr, ptr %22, align 8, !tbaa !5
  %2404 = load i64, ptr %42, align 8, !tbaa !9
  %2405 = load i64, ptr %47, align 8, !tbaa !9
  %2406 = sub nsw i64 %2404, %2405
  %2407 = getelementptr inbounds %struct.doublecomplex, ptr %2403, i64 %2406
  call void @f2c_zdotc(ptr noundef %37, ptr noundef %47, ptr noundef %2402, ptr noundef @c__1, ptr noundef %2407, ptr noundef @c__1)
  %2408 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  %2409 = load double, ptr %2408, align 8, !tbaa !16
  %2410 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 0
  store double %2409, ptr %2410, align 8, !tbaa !16
  %2411 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  %2412 = load double, ptr %2411, align 8, !tbaa !19
  %2413 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 1
  store double %2412, ptr %2413, align 8, !tbaa !19
  br label %2450

2414:                                             ; preds = %2375
  %2415 = load ptr, ptr %19, align 8, !tbaa !5
  %2416 = load i64, ptr %2415, align 8, !tbaa !9
  store i64 %2416, ptr %30, align 8, !tbaa !9
  %2417 = load ptr, ptr %18, align 8, !tbaa !5
  %2418 = load i64, ptr %2417, align 8, !tbaa !9
  %2419 = load i64, ptr %42, align 8, !tbaa !9
  %2420 = sub nsw i64 %2418, %2419
  store i64 %2420, ptr %31, align 8, !tbaa !9
  %2421 = load i64, ptr %30, align 8, !tbaa !9
  %2422 = load i64, ptr %31, align 8, !tbaa !9
  %2423 = icmp sle i64 %2421, %2422
  br i1 %2423, label %2424, label %2426

2424:                                             ; preds = %2414
  %2425 = load i64, ptr %30, align 8, !tbaa !9
  br label %2428

2426:                                             ; preds = %2414
  %2427 = load i64, ptr %31, align 8, !tbaa !9
  br label %2428

2428:                                             ; preds = %2426, %2424
  %2429 = phi i64 [ %2425, %2424 ], [ %2427, %2426 ]
  store i64 %2429, ptr %47, align 8, !tbaa !9
  %2430 = load i64, ptr %47, align 8, !tbaa !9
  %2431 = icmp sgt i64 %2430, 1
  br i1 %2431, label %2432, label %2449

2432:                                             ; preds = %2428
  %2433 = load ptr, ptr %20, align 8, !tbaa !5
  %2434 = load i64, ptr %42, align 8, !tbaa !9
  %2435 = load i64, ptr %26, align 8, !tbaa !9
  %2436 = mul nsw i64 %2434, %2435
  %2437 = add nsw i64 %2436, 2
  %2438 = getelementptr inbounds %struct.doublecomplex, ptr %2433, i64 %2437
  %2439 = load ptr, ptr %22, align 8, !tbaa !5
  %2440 = load i64, ptr %42, align 8, !tbaa !9
  %2441 = add nsw i64 %2440, 1
  %2442 = getelementptr inbounds %struct.doublecomplex, ptr %2439, i64 %2441
  call void @f2c_zdotc(ptr noundef %37, ptr noundef %47, ptr noundef %2438, ptr noundef @c__1, ptr noundef %2442, ptr noundef @c__1)
  %2443 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  %2444 = load double, ptr %2443, align 8, !tbaa !16
  %2445 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 0
  store double %2444, ptr %2445, align 8, !tbaa !16
  %2446 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  %2447 = load double, ptr %2446, align 8, !tbaa !19
  %2448 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 1
  store double %2447, ptr %2448, align 8, !tbaa !19
  br label %2449

2449:                                             ; preds = %2432, %2428
  br label %2450

2450:                                             ; preds = %2449, %2390
  br label %2686

2451:                                             ; preds = %2371, %2365
  %2452 = load i64, ptr %59, align 8, !tbaa !9
  %2453 = icmp ne i64 %2452, 0
  br i1 %2453, label %2454, label %2572

2454:                                             ; preds = %2451
  %2455 = load ptr, ptr %19, align 8, !tbaa !5
  %2456 = load i64, ptr %2455, align 8, !tbaa !9
  store i64 %2456, ptr %30, align 8, !tbaa !9
  %2457 = load i64, ptr %42, align 8, !tbaa !9
  %2458 = sub nsw i64 %2457, 1
  store i64 %2458, ptr %31, align 8, !tbaa !9
  %2459 = load i64, ptr %30, align 8, !tbaa !9
  %2460 = load i64, ptr %31, align 8, !tbaa !9
  %2461 = icmp sle i64 %2459, %2460
  br i1 %2461, label %2462, label %2464

2462:                                             ; preds = %2454
  %2463 = load i64, ptr %30, align 8, !tbaa !9
  br label %2466

2464:                                             ; preds = %2454
  %2465 = load i64, ptr %31, align 8, !tbaa !9
  br label %2466

2466:                                             ; preds = %2464, %2462
  %2467 = phi i64 [ %2463, %2462 ], [ %2465, %2464 ]
  store i64 %2467, ptr %47, align 8, !tbaa !9
  %2468 = load i64, ptr %47, align 8, !tbaa !9
  store i64 %2468, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %41, align 8, !tbaa !9
  br label %2469

2469:                                             ; preds = %2568, %2466
  %2470 = load i64, ptr %41, align 8, !tbaa !9
  %2471 = load i64, ptr %30, align 8, !tbaa !9
  %2472 = icmp sle i64 %2470, %2471
  br i1 %2472, label %2473, label %2571

2473:                                             ; preds = %2469
  %2474 = load ptr, ptr %20, align 8, !tbaa !5
  %2475 = load ptr, ptr %19, align 8, !tbaa !5
  %2476 = load i64, ptr %2475, align 8, !tbaa !9
  %2477 = load i64, ptr %41, align 8, !tbaa !9
  %2478 = add nsw i64 %2476, %2477
  %2479 = load i64, ptr %47, align 8, !tbaa !9
  %2480 = sub nsw i64 %2478, %2479
  %2481 = load i64, ptr %42, align 8, !tbaa !9
  %2482 = load i64, ptr %26, align 8, !tbaa !9
  %2483 = mul nsw i64 %2481, %2482
  %2484 = add nsw i64 %2480, %2483
  %2485 = getelementptr inbounds %struct.doublecomplex, ptr %2474, i64 %2484
  call void @d_cnjg(ptr noundef %40, ptr noundef %2485)
  %2486 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 0
  %2487 = load double, ptr %2486, align 8, !tbaa !16
  %2488 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %2489 = load double, ptr %2488, align 8, !tbaa !16
  %2490 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 1
  %2491 = load double, ptr %2490, align 8, !tbaa !19
  %2492 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %2493 = load double, ptr %2492, align 8, !tbaa !19
  %2494 = fmul double %2491, %2493
  %2495 = fneg double %2494
  %2496 = call double @llvm.fmuladd.f64(double %2487, double %2489, double %2495)
  %2497 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double %2496, ptr %2497, align 8, !tbaa !16
  %2498 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 0
  %2499 = load double, ptr %2498, align 8, !tbaa !16
  %2500 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %2501 = load double, ptr %2500, align 8, !tbaa !19
  %2502 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 1
  %2503 = load double, ptr %2502, align 8, !tbaa !19
  %2504 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %2505 = load double, ptr %2504, align 8, !tbaa !16
  %2506 = fmul double %2503, %2505
  %2507 = call double @llvm.fmuladd.f64(double %2499, double %2501, double %2506)
  %2508 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double %2507, ptr %2508, align 8, !tbaa !19
  %2509 = load i64, ptr %42, align 8, !tbaa !9
  %2510 = load i64, ptr %47, align 8, !tbaa !9
  %2511 = sub nsw i64 %2509, %2510
  %2512 = sub nsw i64 %2511, 1
  %2513 = load i64, ptr %41, align 8, !tbaa !9
  %2514 = add nsw i64 %2512, %2513
  store i64 %2514, ptr %31, align 8, !tbaa !9
  %2515 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %2516 = load double, ptr %2515, align 8, !tbaa !16
  %2517 = load ptr, ptr %22, align 8, !tbaa !5
  %2518 = load i64, ptr %31, align 8, !tbaa !9
  %2519 = getelementptr inbounds %struct.doublecomplex, ptr %2517, i64 %2518
  %2520 = getelementptr inbounds %struct.doublecomplex, ptr %2519, i32 0, i32 0
  %2521 = load double, ptr %2520, align 8, !tbaa !16
  %2522 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  %2523 = load double, ptr %2522, align 8, !tbaa !19
  %2524 = load ptr, ptr %22, align 8, !tbaa !5
  %2525 = load i64, ptr %31, align 8, !tbaa !9
  %2526 = getelementptr inbounds %struct.doublecomplex, ptr %2524, i64 %2525
  %2527 = getelementptr inbounds %struct.doublecomplex, ptr %2526, i32 0, i32 1
  %2528 = load double, ptr %2527, align 8, !tbaa !19
  %2529 = fmul double %2523, %2528
  %2530 = fneg double %2529
  %2531 = call double @llvm.fmuladd.f64(double %2516, double %2521, double %2530)
  %2532 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  store double %2531, ptr %2532, align 8, !tbaa !16
  %2533 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %2534 = load double, ptr %2533, align 8, !tbaa !16
  %2535 = load ptr, ptr %22, align 8, !tbaa !5
  %2536 = load i64, ptr %31, align 8, !tbaa !9
  %2537 = getelementptr inbounds %struct.doublecomplex, ptr %2535, i64 %2536
  %2538 = getelementptr inbounds %struct.doublecomplex, ptr %2537, i32 0, i32 1
  %2539 = load double, ptr %2538, align 8, !tbaa !19
  %2540 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  %2541 = load double, ptr %2540, align 8, !tbaa !19
  %2542 = load ptr, ptr %22, align 8, !tbaa !5
  %2543 = load i64, ptr %31, align 8, !tbaa !9
  %2544 = getelementptr inbounds %struct.doublecomplex, ptr %2542, i64 %2543
  %2545 = getelementptr inbounds %struct.doublecomplex, ptr %2544, i32 0, i32 0
  %2546 = load double, ptr %2545, align 8, !tbaa !16
  %2547 = fmul double %2541, %2546
  %2548 = call double @llvm.fmuladd.f64(double %2534, double %2539, double %2547)
  %2549 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  store double %2548, ptr %2549, align 8, !tbaa !19
  %2550 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 0
  %2551 = load double, ptr %2550, align 8, !tbaa !16
  %2552 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  %2553 = load double, ptr %2552, align 8, !tbaa !16
  %2554 = fadd double %2551, %2553
  %2555 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  store double %2554, ptr %2555, align 8, !tbaa !16
  %2556 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 1
  %2557 = load double, ptr %2556, align 8, !tbaa !19
  %2558 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  %2559 = load double, ptr %2558, align 8, !tbaa !19
  %2560 = fadd double %2557, %2559
  %2561 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  store double %2560, ptr %2561, align 8, !tbaa !19
  %2562 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  %2563 = load double, ptr %2562, align 8, !tbaa !16
  %2564 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 0
  store double %2563, ptr %2564, align 8, !tbaa !16
  %2565 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  %2566 = load double, ptr %2565, align 8, !tbaa !19
  %2567 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 1
  store double %2566, ptr %2567, align 8, !tbaa !19
  br label %2568

2568:                                             ; preds = %2473
  %2569 = load i64, ptr %41, align 8, !tbaa !9
  %2570 = add nsw i64 %2569, 1
  store i64 %2570, ptr %41, align 8, !tbaa !9
  br label %2469, !llvm.loop !30

2571:                                             ; preds = %2469
  br label %2685

2572:                                             ; preds = %2451
  %2573 = load ptr, ptr %19, align 8, !tbaa !5
  %2574 = load i64, ptr %2573, align 8, !tbaa !9
  store i64 %2574, ptr %30, align 8, !tbaa !9
  %2575 = load ptr, ptr %18, align 8, !tbaa !5
  %2576 = load i64, ptr %2575, align 8, !tbaa !9
  %2577 = load i64, ptr %42, align 8, !tbaa !9
  %2578 = sub nsw i64 %2576, %2577
  store i64 %2578, ptr %31, align 8, !tbaa !9
  %2579 = load i64, ptr %30, align 8, !tbaa !9
  %2580 = load i64, ptr %31, align 8, !tbaa !9
  %2581 = icmp sle i64 %2579, %2580
  br i1 %2581, label %2582, label %2584

2582:                                             ; preds = %2572
  %2583 = load i64, ptr %30, align 8, !tbaa !9
  br label %2586

2584:                                             ; preds = %2572
  %2585 = load i64, ptr %31, align 8, !tbaa !9
  br label %2586

2586:                                             ; preds = %2584, %2582
  %2587 = phi i64 [ %2583, %2582 ], [ %2585, %2584 ]
  store i64 %2587, ptr %47, align 8, !tbaa !9
  %2588 = load i64, ptr %47, align 8, !tbaa !9
  store i64 %2588, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %41, align 8, !tbaa !9
  br label %2589

2589:                                             ; preds = %2681, %2586
  %2590 = load i64, ptr %41, align 8, !tbaa !9
  %2591 = load i64, ptr %30, align 8, !tbaa !9
  %2592 = icmp sle i64 %2590, %2591
  br i1 %2592, label %2593, label %2684

2593:                                             ; preds = %2589
  %2594 = load ptr, ptr %20, align 8, !tbaa !5
  %2595 = load i64, ptr %41, align 8, !tbaa !9
  %2596 = add nsw i64 %2595, 1
  %2597 = load i64, ptr %42, align 8, !tbaa !9
  %2598 = load i64, ptr %26, align 8, !tbaa !9
  %2599 = mul nsw i64 %2597, %2598
  %2600 = add nsw i64 %2596, %2599
  %2601 = getelementptr inbounds %struct.doublecomplex, ptr %2594, i64 %2600
  call void @d_cnjg(ptr noundef %40, ptr noundef %2601)
  %2602 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 0
  %2603 = load double, ptr %2602, align 8, !tbaa !16
  %2604 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %2605 = load double, ptr %2604, align 8, !tbaa !16
  %2606 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 1
  %2607 = load double, ptr %2606, align 8, !tbaa !19
  %2608 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %2609 = load double, ptr %2608, align 8, !tbaa !19
  %2610 = fmul double %2607, %2609
  %2611 = fneg double %2610
  %2612 = call double @llvm.fmuladd.f64(double %2603, double %2605, double %2611)
  %2613 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double %2612, ptr %2613, align 8, !tbaa !16
  %2614 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 0
  %2615 = load double, ptr %2614, align 8, !tbaa !16
  %2616 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %2617 = load double, ptr %2616, align 8, !tbaa !19
  %2618 = getelementptr inbounds %struct.doublecomplex, ptr %40, i32 0, i32 1
  %2619 = load double, ptr %2618, align 8, !tbaa !19
  %2620 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %2621 = load double, ptr %2620, align 8, !tbaa !16
  %2622 = fmul double %2619, %2621
  %2623 = call double @llvm.fmuladd.f64(double %2615, double %2617, double %2622)
  %2624 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double %2623, ptr %2624, align 8, !tbaa !19
  %2625 = load i64, ptr %42, align 8, !tbaa !9
  %2626 = load i64, ptr %41, align 8, !tbaa !9
  %2627 = add nsw i64 %2625, %2626
  store i64 %2627, ptr %31, align 8, !tbaa !9
  %2628 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %2629 = load double, ptr %2628, align 8, !tbaa !16
  %2630 = load ptr, ptr %22, align 8, !tbaa !5
  %2631 = load i64, ptr %31, align 8, !tbaa !9
  %2632 = getelementptr inbounds %struct.doublecomplex, ptr %2630, i64 %2631
  %2633 = getelementptr inbounds %struct.doublecomplex, ptr %2632, i32 0, i32 0
  %2634 = load double, ptr %2633, align 8, !tbaa !16
  %2635 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  %2636 = load double, ptr %2635, align 8, !tbaa !19
  %2637 = load ptr, ptr %22, align 8, !tbaa !5
  %2638 = load i64, ptr %31, align 8, !tbaa !9
  %2639 = getelementptr inbounds %struct.doublecomplex, ptr %2637, i64 %2638
  %2640 = getelementptr inbounds %struct.doublecomplex, ptr %2639, i32 0, i32 1
  %2641 = load double, ptr %2640, align 8, !tbaa !19
  %2642 = fmul double %2636, %2641
  %2643 = fneg double %2642
  %2644 = call double @llvm.fmuladd.f64(double %2629, double %2634, double %2643)
  %2645 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  store double %2644, ptr %2645, align 8, !tbaa !16
  %2646 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %2647 = load double, ptr %2646, align 8, !tbaa !16
  %2648 = load ptr, ptr %22, align 8, !tbaa !5
  %2649 = load i64, ptr %31, align 8, !tbaa !9
  %2650 = getelementptr inbounds %struct.doublecomplex, ptr %2648, i64 %2649
  %2651 = getelementptr inbounds %struct.doublecomplex, ptr %2650, i32 0, i32 1
  %2652 = load double, ptr %2651, align 8, !tbaa !19
  %2653 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  %2654 = load double, ptr %2653, align 8, !tbaa !19
  %2655 = load ptr, ptr %22, align 8, !tbaa !5
  %2656 = load i64, ptr %31, align 8, !tbaa !9
  %2657 = getelementptr inbounds %struct.doublecomplex, ptr %2655, i64 %2656
  %2658 = getelementptr inbounds %struct.doublecomplex, ptr %2657, i32 0, i32 0
  %2659 = load double, ptr %2658, align 8, !tbaa !16
  %2660 = fmul double %2654, %2659
  %2661 = call double @llvm.fmuladd.f64(double %2647, double %2652, double %2660)
  %2662 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  store double %2661, ptr %2662, align 8, !tbaa !19
  %2663 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 0
  %2664 = load double, ptr %2663, align 8, !tbaa !16
  %2665 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  %2666 = load double, ptr %2665, align 8, !tbaa !16
  %2667 = fadd double %2664, %2666
  %2668 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  store double %2667, ptr %2668, align 8, !tbaa !16
  %2669 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 1
  %2670 = load double, ptr %2669, align 8, !tbaa !19
  %2671 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  %2672 = load double, ptr %2671, align 8, !tbaa !19
  %2673 = fadd double %2670, %2672
  %2674 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  store double %2673, ptr %2674, align 8, !tbaa !19
  %2675 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  %2676 = load double, ptr %2675, align 8, !tbaa !16
  %2677 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 0
  store double %2676, ptr %2677, align 8, !tbaa !16
  %2678 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  %2679 = load double, ptr %2678, align 8, !tbaa !19
  %2680 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 1
  store double %2679, ptr %2680, align 8, !tbaa !19
  br label %2681

2681:                                             ; preds = %2593
  %2682 = load i64, ptr %41, align 8, !tbaa !9
  %2683 = add nsw i64 %2682, 1
  store i64 %2683, ptr %41, align 8, !tbaa !9
  br label %2589, !llvm.loop !31

2684:                                             ; preds = %2589
  br label %2685

2685:                                             ; preds = %2684, %2571
  br label %2686

2686:                                             ; preds = %2685, %2450
  %2687 = load double, ptr %55, align 8, !tbaa !11
  %2688 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  store double %2687, ptr %2688, align 8, !tbaa !16
  %2689 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  store double 0.000000e+00, ptr %2689, align 8, !tbaa !19
  %2690 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %2691 = load double, ptr %2690, align 8, !tbaa !16
  %2692 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  %2693 = load double, ptr %2692, align 8, !tbaa !16
  %2694 = fcmp oeq double %2691, %2693
  br i1 %2694, label %2695, label %2941

2695:                                             ; preds = %2686
  %2696 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %2697 = load double, ptr %2696, align 8, !tbaa !19
  %2698 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  %2699 = load double, ptr %2698, align 8, !tbaa !19
  %2700 = fcmp oeq double %2697, %2699
  br i1 %2700, label %2701, label %2941

2701:                                             ; preds = %2695
  %2702 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %2702, ptr %30, align 8, !tbaa !9
  %2703 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %2703, ptr %31, align 8, !tbaa !9
  %2704 = load ptr, ptr %22, align 8, !tbaa !5
  %2705 = load i64, ptr %31, align 8, !tbaa !9
  %2706 = getelementptr inbounds %struct.doublecomplex, ptr %2704, i64 %2705
  %2707 = getelementptr inbounds %struct.doublecomplex, ptr %2706, i32 0, i32 0
  %2708 = load double, ptr %2707, align 8, !tbaa !16
  %2709 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 0
  %2710 = load double, ptr %2709, align 8, !tbaa !16
  %2711 = fsub double %2708, %2710
  %2712 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  store double %2711, ptr %2712, align 8, !tbaa !16
  %2713 = load ptr, ptr %22, align 8, !tbaa !5
  %2714 = load i64, ptr %31, align 8, !tbaa !9
  %2715 = getelementptr inbounds %struct.doublecomplex, ptr %2713, i64 %2714
  %2716 = getelementptr inbounds %struct.doublecomplex, ptr %2715, i32 0, i32 1
  %2717 = load double, ptr %2716, align 8, !tbaa !19
  %2718 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 1
  %2719 = load double, ptr %2718, align 8, !tbaa !19
  %2720 = fsub double %2717, %2719
  %2721 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  store double %2720, ptr %2721, align 8, !tbaa !19
  %2722 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  %2723 = load double, ptr %2722, align 8, !tbaa !16
  %2724 = load ptr, ptr %22, align 8, !tbaa !5
  %2725 = load i64, ptr %30, align 8, !tbaa !9
  %2726 = getelementptr inbounds %struct.doublecomplex, ptr %2724, i64 %2725
  %2727 = getelementptr inbounds %struct.doublecomplex, ptr %2726, i32 0, i32 0
  store double %2723, ptr %2727, align 8, !tbaa !16
  %2728 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  %2729 = load double, ptr %2728, align 8, !tbaa !19
  %2730 = load ptr, ptr %22, align 8, !tbaa !5
  %2731 = load i64, ptr %30, align 8, !tbaa !9
  %2732 = getelementptr inbounds %struct.doublecomplex, ptr %2730, i64 %2731
  %2733 = getelementptr inbounds %struct.doublecomplex, ptr %2732, i32 0, i32 1
  store double %2729, ptr %2733, align 8, !tbaa !19
  %2734 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %2734, ptr %30, align 8, !tbaa !9
  %2735 = load ptr, ptr %22, align 8, !tbaa !5
  %2736 = load i64, ptr %30, align 8, !tbaa !9
  %2737 = getelementptr inbounds %struct.doublecomplex, ptr %2735, i64 %2736
  %2738 = getelementptr inbounds %struct.doublecomplex, ptr %2737, i32 0, i32 0
  %2739 = load double, ptr %2738, align 8, !tbaa !16
  store double %2739, ptr %33, align 8, !tbaa !11
  %2740 = load double, ptr %33, align 8, !tbaa !11
  %2741 = fcmp oge double %2740, 0.000000e+00
  br i1 %2741, label %2742, label %2744

2742:                                             ; preds = %2701
  %2743 = load double, ptr %33, align 8, !tbaa !11
  br label %2747

2744:                                             ; preds = %2701
  %2745 = load double, ptr %33, align 8, !tbaa !11
  %2746 = fneg double %2745
  br label %2747

2747:                                             ; preds = %2744, %2742
  %2748 = phi double [ %2743, %2742 ], [ %2746, %2744 ]
  %2749 = load ptr, ptr %22, align 8, !tbaa !5
  %2750 = load i64, ptr %42, align 8, !tbaa !9
  %2751 = getelementptr inbounds %struct.doublecomplex, ptr %2749, i64 %2750
  %2752 = call double @d_imag(ptr noundef %2751)
  store double %2752, ptr %34, align 8, !tbaa !11
  %2753 = load double, ptr %34, align 8, !tbaa !11
  %2754 = fcmp oge double %2753, 0.000000e+00
  br i1 %2754, label %2755, label %2757

2755:                                             ; preds = %2747
  %2756 = load double, ptr %34, align 8, !tbaa !11
  br label %2760

2757:                                             ; preds = %2747
  %2758 = load double, ptr %34, align 8, !tbaa !11
  %2759 = fneg double %2758
  br label %2760

2760:                                             ; preds = %2757, %2755
  %2761 = phi double [ %2756, %2755 ], [ %2759, %2757 ]
  %2762 = fadd double %2748, %2761
  store double %2762, ptr %43, align 8, !tbaa !11
  %2763 = load i64, ptr %64, align 8, !tbaa !9
  %2764 = icmp ne i64 %2763, 0
  br i1 %2764, label %2765, label %2789

2765:                                             ; preds = %2760
  %2766 = load ptr, ptr %20, align 8, !tbaa !5
  %2767 = load i64, ptr %54, align 8, !tbaa !9
  %2768 = load i64, ptr %42, align 8, !tbaa !9
  %2769 = load i64, ptr %26, align 8, !tbaa !9
  %2770 = mul nsw i64 %2768, %2769
  %2771 = add nsw i64 %2767, %2770
  %2772 = getelementptr inbounds %struct.doublecomplex, ptr %2766, i64 %2771
  call void @d_cnjg(ptr noundef %38, ptr noundef %2772)
  %2773 = load double, ptr %55, align 8, !tbaa !11
  %2774 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  %2775 = load double, ptr %2774, align 8, !tbaa !16
  %2776 = fmul double %2773, %2775
  %2777 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  store double %2776, ptr %2777, align 8, !tbaa !16
  %2778 = load double, ptr %55, align 8, !tbaa !11
  %2779 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  %2780 = load double, ptr %2779, align 8, !tbaa !19
  %2781 = fmul double %2778, %2780
  %2782 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  store double %2781, ptr %2782, align 8, !tbaa !19
  %2783 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  %2784 = load double, ptr %2783, align 8, !tbaa !16
  %2785 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %2784, ptr %2785, align 8, !tbaa !16
  %2786 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  %2787 = load double, ptr %2786, align 8, !tbaa !19
  %2788 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double %2787, ptr %2788, align 8, !tbaa !19
  br label %2797

2789:                                             ; preds = %2760
  %2790 = load double, ptr %55, align 8, !tbaa !11
  %2791 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %2790, ptr %2791, align 8, !tbaa !16
  %2792 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double 0.000000e+00, ptr %2792, align 8, !tbaa !19
  %2793 = load double, ptr %55, align 8, !tbaa !11
  %2794 = fcmp oeq double %2793, 1.000000e+00
  br i1 %2794, label %2795, label %2796

2795:                                             ; preds = %2789
  br label %2940

2796:                                             ; preds = %2789
  br label %2797

2797:                                             ; preds = %2796, %2765
  %2798 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %2799 = load double, ptr %2798, align 8, !tbaa !16
  store double %2799, ptr %33, align 8, !tbaa !11
  %2800 = load double, ptr %33, align 8, !tbaa !11
  %2801 = fcmp oge double %2800, 0.000000e+00
  br i1 %2801, label %2802, label %2804

2802:                                             ; preds = %2797
  %2803 = load double, ptr %33, align 8, !tbaa !11
  br label %2807

2804:                                             ; preds = %2797
  %2805 = load double, ptr %33, align 8, !tbaa !11
  %2806 = fneg double %2805
  br label %2807

2807:                                             ; preds = %2804, %2802
  %2808 = phi double [ %2803, %2802 ], [ %2806, %2804 ]
  %2809 = call double @d_imag(ptr noundef %51)
  store double %2809, ptr %34, align 8, !tbaa !11
  %2810 = load double, ptr %34, align 8, !tbaa !11
  %2811 = fcmp oge double %2810, 0.000000e+00
  br i1 %2811, label %2812, label %2814

2812:                                             ; preds = %2807
  %2813 = load double, ptr %34, align 8, !tbaa !11
  br label %2817

2814:                                             ; preds = %2807
  %2815 = load double, ptr %34, align 8, !tbaa !11
  %2816 = fneg double %2815
  br label %2817

2817:                                             ; preds = %2814, %2812
  %2818 = phi double [ %2813, %2812 ], [ %2816, %2814 ]
  %2819 = fadd double %2808, %2818
  store double %2819, ptr %45, align 8, !tbaa !11
  %2820 = load double, ptr %45, align 8, !tbaa !11
  %2821 = load double, ptr %63, align 8, !tbaa !11
  %2822 = fcmp ogt double %2820, %2821
  br i1 %2822, label %2823, label %2864

2823:                                             ; preds = %2817
  %2824 = load double, ptr %45, align 8, !tbaa !11
  %2825 = fcmp olt double %2824, 1.000000e+00
  br i1 %2825, label %2826, label %2847

2826:                                             ; preds = %2823
  %2827 = load double, ptr %43, align 8, !tbaa !11
  %2828 = load double, ptr %45, align 8, !tbaa !11
  %2829 = load double, ptr %60, align 8, !tbaa !11
  %2830 = fmul double %2828, %2829
  %2831 = fcmp ogt double %2827, %2830
  br i1 %2831, label %2832, label %2846

2832:                                             ; preds = %2826
  %2833 = load double, ptr %43, align 8, !tbaa !11
  %2834 = fdiv double 1.000000e+00, %2833
  store double %2834, ptr %44, align 8, !tbaa !11
  %2835 = load ptr, ptr %18, align 8, !tbaa !5
  %2836 = load ptr, ptr %22, align 8, !tbaa !5
  %2837 = getelementptr inbounds %struct.doublecomplex, ptr %2836, i64 1
  %2838 = call i32 @f2c_zdscal(ptr noundef %2835, ptr noundef %44, ptr noundef %2837, ptr noundef @c__1)
  %2839 = load double, ptr %44, align 8, !tbaa !11
  %2840 = load ptr, ptr %23, align 8, !tbaa !5
  %2841 = load double, ptr %2840, align 8, !tbaa !11
  %2842 = fmul double %2841, %2839
  store double %2842, ptr %2840, align 8, !tbaa !11
  %2843 = load double, ptr %44, align 8, !tbaa !11
  %2844 = load double, ptr %52, align 8, !tbaa !11
  %2845 = fmul double %2844, %2843
  store double %2845, ptr %52, align 8, !tbaa !11
  br label %2846

2846:                                             ; preds = %2832, %2826
  br label %2847

2847:                                             ; preds = %2846, %2823
  %2848 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %2848, ptr %30, align 8, !tbaa !9
  %2849 = load ptr, ptr %22, align 8, !tbaa !5
  %2850 = load i64, ptr %42, align 8, !tbaa !9
  %2851 = getelementptr inbounds %struct.doublecomplex, ptr %2849, i64 %2850
  call void @zladiv_(ptr noundef %37, ptr noundef %2851, ptr noundef %51)
  %2852 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  %2853 = load double, ptr %2852, align 8, !tbaa !16
  %2854 = load ptr, ptr %22, align 8, !tbaa !5
  %2855 = load i64, ptr %30, align 8, !tbaa !9
  %2856 = getelementptr inbounds %struct.doublecomplex, ptr %2854, i64 %2855
  %2857 = getelementptr inbounds %struct.doublecomplex, ptr %2856, i32 0, i32 0
  store double %2853, ptr %2857, align 8, !tbaa !16
  %2858 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  %2859 = load double, ptr %2858, align 8, !tbaa !19
  %2860 = load ptr, ptr %22, align 8, !tbaa !5
  %2861 = load i64, ptr %30, align 8, !tbaa !9
  %2862 = getelementptr inbounds %struct.doublecomplex, ptr %2860, i64 %2861
  %2863 = getelementptr inbounds %struct.doublecomplex, ptr %2862, i32 0, i32 1
  store double %2859, ptr %2863, align 8, !tbaa !19
  br label %2939

2864:                                             ; preds = %2817
  %2865 = load double, ptr %45, align 8, !tbaa !11
  %2866 = fcmp ogt double %2865, 0.000000e+00
  br i1 %2866, label %2867, label %2907

2867:                                             ; preds = %2864
  %2868 = load double, ptr %43, align 8, !tbaa !11
  %2869 = load double, ptr %45, align 8, !tbaa !11
  %2870 = load double, ptr %60, align 8, !tbaa !11
  %2871 = fmul double %2869, %2870
  %2872 = fcmp ogt double %2868, %2871
  br i1 %2872, label %2873, label %2890

2873:                                             ; preds = %2867
  %2874 = load double, ptr %45, align 8, !tbaa !11
  %2875 = load double, ptr %60, align 8, !tbaa !11
  %2876 = fmul double %2874, %2875
  %2877 = load double, ptr %43, align 8, !tbaa !11
  %2878 = fdiv double %2876, %2877
  store double %2878, ptr %44, align 8, !tbaa !11
  %2879 = load ptr, ptr %18, align 8, !tbaa !5
  %2880 = load ptr, ptr %22, align 8, !tbaa !5
  %2881 = getelementptr inbounds %struct.doublecomplex, ptr %2880, i64 1
  %2882 = call i32 @f2c_zdscal(ptr noundef %2879, ptr noundef %44, ptr noundef %2881, ptr noundef @c__1)
  %2883 = load double, ptr %44, align 8, !tbaa !11
  %2884 = load ptr, ptr %23, align 8, !tbaa !5
  %2885 = load double, ptr %2884, align 8, !tbaa !11
  %2886 = fmul double %2885, %2883
  store double %2886, ptr %2884, align 8, !tbaa !11
  %2887 = load double, ptr %44, align 8, !tbaa !11
  %2888 = load double, ptr %52, align 8, !tbaa !11
  %2889 = fmul double %2888, %2887
  store double %2889, ptr %52, align 8, !tbaa !11
  br label %2890

2890:                                             ; preds = %2873, %2867
  %2891 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %2891, ptr %30, align 8, !tbaa !9
  %2892 = load ptr, ptr %22, align 8, !tbaa !5
  %2893 = load i64, ptr %42, align 8, !tbaa !9
  %2894 = getelementptr inbounds %struct.doublecomplex, ptr %2892, i64 %2893
  call void @zladiv_(ptr noundef %37, ptr noundef %2894, ptr noundef %51)
  %2895 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  %2896 = load double, ptr %2895, align 8, !tbaa !16
  %2897 = load ptr, ptr %22, align 8, !tbaa !5
  %2898 = load i64, ptr %30, align 8, !tbaa !9
  %2899 = getelementptr inbounds %struct.doublecomplex, ptr %2897, i64 %2898
  %2900 = getelementptr inbounds %struct.doublecomplex, ptr %2899, i32 0, i32 0
  store double %2896, ptr %2900, align 8, !tbaa !16
  %2901 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  %2902 = load double, ptr %2901, align 8, !tbaa !19
  %2903 = load ptr, ptr %22, align 8, !tbaa !5
  %2904 = load i64, ptr %30, align 8, !tbaa !9
  %2905 = getelementptr inbounds %struct.doublecomplex, ptr %2903, i64 %2904
  %2906 = getelementptr inbounds %struct.doublecomplex, ptr %2905, i32 0, i32 1
  store double %2902, ptr %2906, align 8, !tbaa !19
  br label %2938

2907:                                             ; preds = %2864
  %2908 = load ptr, ptr %18, align 8, !tbaa !5
  %2909 = load i64, ptr %2908, align 8, !tbaa !9
  store i64 %2909, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %41, align 8, !tbaa !9
  br label %2910

2910:                                             ; preds = %2924, %2907
  %2911 = load i64, ptr %41, align 8, !tbaa !9
  %2912 = load i64, ptr %30, align 8, !tbaa !9
  %2913 = icmp sle i64 %2911, %2912
  br i1 %2913, label %2914, label %2927

2914:                                             ; preds = %2910
  %2915 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %2915, ptr %31, align 8, !tbaa !9
  %2916 = load ptr, ptr %22, align 8, !tbaa !5
  %2917 = load i64, ptr %31, align 8, !tbaa !9
  %2918 = getelementptr inbounds %struct.doublecomplex, ptr %2916, i64 %2917
  %2919 = getelementptr inbounds %struct.doublecomplex, ptr %2918, i32 0, i32 0
  store double 0.000000e+00, ptr %2919, align 8, !tbaa !16
  %2920 = load ptr, ptr %22, align 8, !tbaa !5
  %2921 = load i64, ptr %31, align 8, !tbaa !9
  %2922 = getelementptr inbounds %struct.doublecomplex, ptr %2920, i64 %2921
  %2923 = getelementptr inbounds %struct.doublecomplex, ptr %2922, i32 0, i32 1
  store double 0.000000e+00, ptr %2923, align 8, !tbaa !19
  br label %2924

2924:                                             ; preds = %2914
  %2925 = load i64, ptr %41, align 8, !tbaa !9
  %2926 = add nsw i64 %2925, 1
  store i64 %2926, ptr %41, align 8, !tbaa !9
  br label %2910, !llvm.loop !32

2927:                                             ; preds = %2910
  %2928 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %2928, ptr %30, align 8, !tbaa !9
  %2929 = load ptr, ptr %22, align 8, !tbaa !5
  %2930 = load i64, ptr %30, align 8, !tbaa !9
  %2931 = getelementptr inbounds %struct.doublecomplex, ptr %2929, i64 %2930
  %2932 = getelementptr inbounds %struct.doublecomplex, ptr %2931, i32 0, i32 0
  store double 1.000000e+00, ptr %2932, align 8, !tbaa !16
  %2933 = load ptr, ptr %22, align 8, !tbaa !5
  %2934 = load i64, ptr %30, align 8, !tbaa !9
  %2935 = getelementptr inbounds %struct.doublecomplex, ptr %2933, i64 %2934
  %2936 = getelementptr inbounds %struct.doublecomplex, ptr %2935, i32 0, i32 1
  store double 0.000000e+00, ptr %2936, align 8, !tbaa !19
  %2937 = load ptr, ptr %23, align 8, !tbaa !5
  store double 0.000000e+00, ptr %2937, align 8, !tbaa !11
  store double 0.000000e+00, ptr %52, align 8, !tbaa !11
  br label %2938

2938:                                             ; preds = %2927, %2890
  br label %2939

2939:                                             ; preds = %2938, %2847
  br label %2940

2940:                                             ; preds = %2939, %2795
  br label %2970

2941:                                             ; preds = %2695, %2686
  %2942 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %2942, ptr %30, align 8, !tbaa !9
  %2943 = load ptr, ptr %22, align 8, !tbaa !5
  %2944 = load i64, ptr %42, align 8, !tbaa !9
  %2945 = getelementptr inbounds %struct.doublecomplex, ptr %2943, i64 %2944
  call void @zladiv_(ptr noundef %38, ptr noundef %2945, ptr noundef %51)
  %2946 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  %2947 = load double, ptr %2946, align 8, !tbaa !16
  %2948 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 0
  %2949 = load double, ptr %2948, align 8, !tbaa !16
  %2950 = fsub double %2947, %2949
  %2951 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  store double %2950, ptr %2951, align 8, !tbaa !16
  %2952 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  %2953 = load double, ptr %2952, align 8, !tbaa !19
  %2954 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 1
  %2955 = load double, ptr %2954, align 8, !tbaa !19
  %2956 = fsub double %2953, %2955
  %2957 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  store double %2956, ptr %2957, align 8, !tbaa !19
  %2958 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 0
  %2959 = load double, ptr %2958, align 8, !tbaa !16
  %2960 = load ptr, ptr %22, align 8, !tbaa !5
  %2961 = load i64, ptr %30, align 8, !tbaa !9
  %2962 = getelementptr inbounds %struct.doublecomplex, ptr %2960, i64 %2961
  %2963 = getelementptr inbounds %struct.doublecomplex, ptr %2962, i32 0, i32 0
  store double %2959, ptr %2963, align 8, !tbaa !16
  %2964 = getelementptr inbounds %struct.doublecomplex, ptr %37, i32 0, i32 1
  %2965 = load double, ptr %2964, align 8, !tbaa !19
  %2966 = load ptr, ptr %22, align 8, !tbaa !5
  %2967 = load i64, ptr %30, align 8, !tbaa !9
  %2968 = getelementptr inbounds %struct.doublecomplex, ptr %2966, i64 %2967
  %2969 = getelementptr inbounds %struct.doublecomplex, ptr %2968, i32 0, i32 1
  store double %2965, ptr %2969, align 8, !tbaa !19
  br label %2970

2970:                                             ; preds = %2941, %2940
  %2971 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %2971, ptr %30, align 8, !tbaa !9
  %2972 = load double, ptr %52, align 8, !tbaa !11
  store double %2972, ptr %35, align 8, !tbaa !11
  %2973 = load ptr, ptr %22, align 8, !tbaa !5
  %2974 = load i64, ptr %30, align 8, !tbaa !9
  %2975 = getelementptr inbounds %struct.doublecomplex, ptr %2973, i64 %2974
  %2976 = getelementptr inbounds %struct.doublecomplex, ptr %2975, i32 0, i32 0
  %2977 = load double, ptr %2976, align 8, !tbaa !16
  store double %2977, ptr %33, align 8, !tbaa !11
  %2978 = load double, ptr %33, align 8, !tbaa !11
  %2979 = fcmp oge double %2978, 0.000000e+00
  br i1 %2979, label %2980, label %2982

2980:                                             ; preds = %2970
  %2981 = load double, ptr %33, align 8, !tbaa !11
  br label %2985

2982:                                             ; preds = %2970
  %2983 = load double, ptr %33, align 8, !tbaa !11
  %2984 = fneg double %2983
  br label %2985

2985:                                             ; preds = %2982, %2980
  %2986 = phi double [ %2981, %2980 ], [ %2984, %2982 ]
  %2987 = load ptr, ptr %22, align 8, !tbaa !5
  %2988 = load i64, ptr %42, align 8, !tbaa !9
  %2989 = getelementptr inbounds %struct.doublecomplex, ptr %2987, i64 %2988
  %2990 = call double @d_imag(ptr noundef %2989)
  store double %2990, ptr %34, align 8, !tbaa !11
  %2991 = load double, ptr %34, align 8, !tbaa !11
  %2992 = fcmp oge double %2991, 0.000000e+00
  br i1 %2992, label %2993, label %2995

2993:                                             ; preds = %2985
  %2994 = load double, ptr %34, align 8, !tbaa !11
  br label %2998

2995:                                             ; preds = %2985
  %2996 = load double, ptr %34, align 8, !tbaa !11
  %2997 = fneg double %2996
  br label %2998

2998:                                             ; preds = %2995, %2993
  %2999 = phi double [ %2994, %2993 ], [ %2997, %2995 ]
  %3000 = fadd double %2986, %2999
  store double %3000, ptr %36, align 8, !tbaa !11
  %3001 = load double, ptr %35, align 8, !tbaa !11
  %3002 = load double, ptr %36, align 8, !tbaa !11
  %3003 = fcmp oge double %3001, %3002
  br i1 %3003, label %3004, label %3006

3004:                                             ; preds = %2998
  %3005 = load double, ptr %35, align 8, !tbaa !11
  br label %3008

3006:                                             ; preds = %2998
  %3007 = load double, ptr %36, align 8, !tbaa !11
  br label %3008

3008:                                             ; preds = %3006, %3004
  %3009 = phi double [ %3005, %3004 ], [ %3007, %3006 ]
  store double %3009, ptr %52, align 8, !tbaa !11
  br label %3010

3010:                                             ; preds = %3008
  %3011 = load i64, ptr %29, align 8, !tbaa !9
  %3012 = load i64, ptr %42, align 8, !tbaa !9
  %3013 = add nsw i64 %3012, %3011
  store i64 %3013, ptr %42, align 8, !tbaa !9
  br label %2205, !llvm.loop !33

3014:                                             ; preds = %2218
  br label %3015

3015:                                             ; preds = %3014, %2200
  br label %3016

3016:                                             ; preds = %3015, %1354
  %3017 = load double, ptr %55, align 8, !tbaa !11
  %3018 = load ptr, ptr %23, align 8, !tbaa !5
  %3019 = load double, ptr %3018, align 8, !tbaa !11
  %3020 = fdiv double %3019, %3017
  store double %3020, ptr %3018, align 8, !tbaa !11
  br label %3021

3021:                                             ; preds = %3016, %764
  %3022 = load double, ptr %55, align 8, !tbaa !11
  %3023 = fcmp une double %3022, 1.000000e+00
  br i1 %3023, label %3024, label %3031

3024:                                             ; preds = %3021
  %3025 = load double, ptr %55, align 8, !tbaa !11
  %3026 = fdiv double 1.000000e+00, %3025
  store double %3026, ptr %33, align 8, !tbaa !11
  %3027 = load ptr, ptr %18, align 8, !tbaa !5
  %3028 = load ptr, ptr %24, align 8, !tbaa !5
  %3029 = getelementptr inbounds double, ptr %3028, i64 1
  %3030 = call i32 @f2c_dscal(ptr noundef %3027, ptr noundef %33, ptr noundef %3029, ptr noundef @c__1)
  br label %3031

3031:                                             ; preds = %3024, %3021
  store i32 0, ptr %13, align 4
  store i32 1, ptr %65, align 4
  br label %3032

3032:                                             ; preds = %3031, %165, %156
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #4
  %3033 = load i32, ptr %13, align 4
  ret i32 %3033
}

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

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

declare double @d_imag(ptr noundef) #2

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!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 i64, align 8
@c_b36 = external hidden global double, align 8

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

34:                                               ; preds = %12
  %35 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #6
  %.not853 = icmp eq i64 %35, 0
  br i1 %.not853, label %.thread.sink.split, label %36

36:                                               ; preds = %34, %12
  %.not854 = icmp eq i64 %32, 0
  br i1 %.not854, label %37, label %41

37:                                               ; preds = %36
  %38 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #6
  %.not855 = icmp eq i64 %38, 0
  br i1 %.not855, label %39, label %41

39:                                               ; preds = %37
  %40 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #6
  %.not856 = icmp eq i64 %40, 0
  br i1 %.not856, label %.thread.sink.split, label %41

41:                                               ; preds = %39, %37, %36
  %.not857 = icmp eq i64 %33, 0
  br i1 %.not857, label %42, label %44

42:                                               ; preds = %41
  %43 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str) #6
  %.not858 = icmp eq i64 %43, 0
  br i1 %.not858, label %.thread.sink.split, label %44

44:                                               ; preds = %42, %41
  %45 = tail call i64 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.5) #6
  %.not859 = icmp eq i64 %45, 0
  br i1 %.not859, label %46, label %48

46:                                               ; preds = %44
  %47 = tail call i64 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.1) #6
  %.not860 = icmp eq i64 %47, 0
  br i1 %.not860, label %.thread.sink.split, label %48

48:                                               ; preds = %46, %44
  %49 = load i64, ptr %4, align 8, !tbaa !5
  %50 = icmp slt i64 %49, 0
  br i1 %50, label %.thread.sink.split, label %51

51:                                               ; preds = %48
  %52 = load i64, ptr %5, align 8, !tbaa !5
  %53 = icmp slt i64 %52, 0
  br i1 %53, label %.thread.sink.split, label %54

54:                                               ; preds = %51
  %55 = load i64, ptr %7, align 8, !tbaa !5
  %.not861 = icmp sgt i64 %55, %52
  br i1 %.not861, label %56, label %.thread.sink.split

56:                                               ; preds = %54
  %.pr = load i64, ptr %11, align 8, !tbaa !5
  %.not862 = icmp eq i64 %.pr, 0
  br i1 %.not862, label %60, label %.thread

.thread.sink.split:                               ; preds = %54, %51, %48, %46, %42, %39, %34
  %.sink1109 = phi i64 [ -1, %34 ], [ -2, %39 ], [ -3, %42 ], [ -4, %46 ], [ -5, %48 ], [ -6, %51 ], [ -8, %54 ]
  store i64 %.sink1109, ptr %11, align 8, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %56
  %57 = phi i64 [ %.pr, %56 ], [ %.sink1109, %.thread.sink.split ]
  %58 = sub nsw i64 0, %57
  store i64 %58, ptr %13, align 8, !tbaa !5
  %59 = call i32 @xerbla_(ptr noundef nonnull @.str.6, ptr noundef nonnull %13) #6
  br label %964

60:                                               ; preds = %56
  %61 = icmp eq i64 %49, 0
  br i1 %61, label %964, label %62

62:                                               ; preds = %60
  %63 = tail call double @dlamch_(ptr noundef nonnull @.str.7) #6
  store double %63, ptr %25, align 8, !tbaa !9
  %64 = fdiv double 1.000000e+00, %63
  store double %64, ptr %24, align 8, !tbaa !9
  %65 = call i32 @dlabad_(ptr noundef nonnull %25, ptr noundef nonnull %24) #6
  %66 = call double @dlamch_(ptr noundef nonnull @.str.8) #6
  %67 = load double, ptr %25, align 8, !tbaa !9
  %68 = fdiv double %67, %66
  store double %68, ptr %25, align 8, !tbaa !9
  %69 = fdiv double 1.000000e+00, %68
  store double %69, ptr %24, align 8, !tbaa !9
  store double 1.000000e+00, ptr %9, align 8, !tbaa !9
  %70 = call i64 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.1) #6
  %.not863 = icmp eq i64 %70, 0
  br i1 %.not863, label %.loopexit931, label %71

71:                                               ; preds = %62
  %72 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %72, ptr %13, align 8, !tbaa !5
  br i1 %.not.not.not, label %85, label %73

73:                                               ; preds = %71
  %.not866935 = icmp slt i64 %72, 1
  br i1 %.not866935, label %.loopexit931, label %.lr.ph

.lr.ph:                                           ; preds = %73, %.lr.ph
  %.0810936 = phi i64 [ %84, %.lr.ph ], [ 1, %73 ]
  %74 = load i64, ptr %5, align 8, !tbaa !5
  %75 = add nsw i64 %.0810936, -1
  store i64 %75, ptr %14, align 8, !tbaa !5
  %76 = call i64 @llvm.smin.i64(i64 %74, i64 %75)
  store i64 %76, ptr %20, align 8, !tbaa !5
  %77 = add nsw i64 %74, 1
  %78 = sub i64 %77, %76
  %79 = mul nsw i64 %.0810936, %26
  %80 = getelementptr %struct.doublecomplex, ptr %28, i64 %78
  %81 = getelementptr %struct.doublecomplex, ptr %80, i64 %79
  %82 = call double @f2c_dzasum(ptr noundef nonnull %20, ptr noundef %81, ptr noundef nonnull @c__1) #6
  %83 = getelementptr inbounds double, ptr %30, i64 %.0810936
  store double %82, ptr %83, align 8, !tbaa !9
  %84 = add nuw nsw i64 %.0810936, 1
  %.not866.not = icmp slt i64 %.0810936, %72
  br i1 %.not866.not, label %.lr.ph, label %.loopexit931, !llvm.loop !11

85:                                               ; preds = %71
  %invariant.gep = getelementptr i8, ptr %28, i64 32
  %.not864937 = icmp slt i64 %72, 1
  br i1 %.not864937, label %.loopexit931, label %.lr.ph939

.lr.ph939:                                        ; preds = %85, %94
  %.1811938 = phi i64 [ %96, %94 ], [ 1, %85 ]
  %86 = load i64, ptr %5, align 8, !tbaa !5
  %87 = load i64, ptr %4, align 8, !tbaa !5
  %88 = sub nsw i64 %87, %.1811938
  store i64 %88, ptr %14, align 8, !tbaa !5
  %89 = call i64 @llvm.smin.i64(i64 %86, i64 %88)
  store i64 %89, ptr %20, align 8, !tbaa !5
  %90 = icmp sgt i64 %89, 0
  br i1 %90, label %91, label %94

91:                                               ; preds = %.lr.ph939
  %92 = mul nsw i64 %.1811938, %26
  %gep = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %92
  %93 = call double @f2c_dzasum(ptr noundef nonnull %20, ptr noundef %gep, ptr noundef nonnull @c__1) #6
  br label %94

94:                                               ; preds = %.lr.ph939, %91
  %.sink = phi double [ %93, %91 ], [ 0.000000e+00, %.lr.ph939 ]
  %95 = getelementptr inbounds double, ptr %30, i64 %.1811938
  store double %.sink, ptr %95, align 8
  %96 = add nuw nsw i64 %.1811938, 1
  %.not864.not = icmp slt i64 %.1811938, %72
  br i1 %.not864.not, label %.lr.ph939, label %.loopexit931, !llvm.loop !13

.loopexit931:                                     ; preds = %.lr.ph, %94, %73, %85, %62
  %97 = call i64 @f2c_idamax(ptr noundef nonnull %4, ptr noundef %10, ptr noundef nonnull @c__1) #6
  %98 = getelementptr inbounds double, ptr %30, i64 %97
  %99 = load double, ptr %98, align 8, !tbaa !9
  %100 = load double, ptr %24, align 8, !tbaa !9
  %101 = fmul double %100, 5.000000e-01
  %102 = fcmp ugt double %99, %101
  br i1 %102, label %104, label %103

103:                                              ; preds = %.loopexit931
  store double 1.000000e+00, ptr %22, align 8, !tbaa !9
  br label %109

104:                                              ; preds = %.loopexit931
  %105 = load double, ptr %25, align 8, !tbaa !9
  %106 = fmul double %99, %105
  %107 = fdiv double 5.000000e-01, %106
  store double %107, ptr %22, align 8, !tbaa !9
  %108 = call i32 @f2c_dscal(ptr noundef nonnull %4, ptr noundef nonnull %22, ptr noundef nonnull %10, ptr noundef nonnull @c__1) #6
  br label %109

109:                                              ; preds = %104, %103
  %110 = load i64, ptr %4, align 8, !tbaa !5
  %.not867940 = icmp slt i64 %110, 1
  br i1 %.not867940, label %._crit_edge, label %.lr.ph943

.lr.ph943:                                        ; preds = %109, %.lr.ph943
  %.0796942 = phi double [ %123, %.lr.ph943 ], [ 0.000000e+00, %109 ]
  %.2812941 = phi i64 [ %124, %.lr.ph943 ], [ 1, %109 ]
  %111 = getelementptr inbounds %struct.doublecomplex, ptr %29, i64 %.2812941
  %112 = load double, ptr %111, align 8, !tbaa !14
  %113 = call double @d_imag(ptr noundef nonnull %111) #6
  %114 = insertelement <2 x double> poison, double %112, i64 0
  %115 = insertelement <2 x double> %114, double %113, i64 1
  %116 = fmul <2 x double> %115, <double 5.000000e-01, double 5.000000e-01>
  %117 = fcmp oge <2 x double> %116, zeroinitializer
  %118 = fneg <2 x double> %116
  %119 = select <2 x i1> %117, <2 x double> %116, <2 x double> %118
  %shift = shufflevector <2 x double> %119, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %120 = fadd <2 x double> %119, %shift
  %121 = extractelement <2 x double> %120, i64 0
  %122 = fcmp oge double %.0796942, %121
  %123 = select i1 %122, double %.0796942, double %121
  %124 = add nuw nsw i64 %.2812941, 1
  %.not867.not = icmp slt i64 %.2812941, %110
  br i1 %.not867.not, label %.lr.ph943, label %._crit_edge, !llvm.loop !16

._crit_edge:                                      ; preds = %.lr.ph943, %109
  %.0796.lcssa = phi double [ 0.000000e+00, %109 ], [ %123, %.lr.ph943 ]
  %125 = load i64, ptr %4, align 8, !tbaa !5
  br i1 %.not854, label %191, label %126

126:                                              ; preds = %._crit_edge
  br i1 %.not.not.not, label %130, label %127

127:                                              ; preds = %126
  %128 = load i64, ptr %5, align 8, !tbaa !5
  %129 = add nsw i64 %128, 1
  br label %130

130:                                              ; preds = %126, %127
  %.0806 = phi i64 [ -1, %127 ], [ 1, %126 ]
  %.0790 = phi i64 [ %129, %127 ], [ 1, %126 ]
  %131 = phi i64 [ 1, %127 ], [ %125, %126 ]
  %.0786 = phi i64 [ %125, %127 ], [ 1, %126 ]
  %132 = load double, ptr %22, align 8, !tbaa !9
  %133 = fcmp une double %132, 1.000000e+00
  br i1 %133, label %.loopexit927, label %134

134:                                              ; preds = %130
  %135 = load double, ptr %25, align 8
  %136 = fcmp oge double %.0796.lcssa, %135
  %137 = select i1 %136, double %.0796.lcssa, double %135
  %138 = fdiv double 5.000000e-01, %137
  br i1 %.not857, label %176, label %139

139:                                              ; preds = %134
  %140 = icmp sge i64 %.0786, %131
  %141 = icmp sle i64 %.0786, %131
  %.in873944 = select i1 %.not.not.not, i1 %141, i1 %140
  br i1 %.in873944, label %.lr.ph949, label %.loopexit927

.lr.ph949:                                        ; preds = %139, %166
  %142 = phi double [ %158, %166 ], [ %135, %139 ]
  %.0793947 = phi double [ %.1794, %166 ], [ %138, %139 ]
  %.0802946 = phi double [ %.1803, %166 ], [ %138, %139 ]
  %.3813945 = phi i64 [ %173, %166 ], [ %.0786, %139 ]
  %143 = fcmp ugt double %.0793947, %142
  br i1 %143, label %144, label %.loopexit927

144:                                              ; preds = %.lr.ph949
  %145 = mul nsw i64 %.3813945, %26
  %146 = add nsw i64 %145, %.0790
  store i64 %146, ptr %14, align 8, !tbaa !5
  %147 = getelementptr inbounds %struct.doublecomplex, ptr %28, i64 %146
  %148 = load <2 x double>, ptr %147, align 8, !tbaa !9
  store <2 x double> %148, ptr %21, align 16, !tbaa !9
  %149 = extractelement <2 x double> %148, i64 0
  %150 = fcmp oge double %149, 0.000000e+00
  %151 = fneg double %149
  %152 = select i1 %150, double %149, double %151
  %153 = call double @d_imag(ptr noundef nonnull %21) #6
  %154 = fcmp oge double %153, 0.000000e+00
  %155 = fneg double %153
  %156 = select i1 %154, double %153, double %155
  %157 = fadd double %152, %156
  %158 = load double, ptr %25, align 8, !tbaa !9
  %159 = fcmp ult double %157, %158
  br i1 %159, label %166, label %160

160:                                              ; preds = %144
  store double %.0802946, ptr %15, align 8, !tbaa !9
  %161 = fcmp oge double %157, 1.000000e+00
  %162 = select i1 %161, double 1.000000e+00, double %157
  %163 = fmul double %.0793947, %162
  %164 = fcmp ole double %.0802946, %163
  %165 = select i1 %164, double %.0802946, double %163
  br label %166

166:                                              ; preds = %144, %160
  %.1803 = phi double [ %165, %160 ], [ 0.000000e+00, %144 ]
  %167 = getelementptr inbounds double, ptr %30, i64 %.3813945
  %168 = load double, ptr %167, align 8, !tbaa !9
  %169 = fadd double %157, %168
  %170 = fcmp ult double %169, %158
  %171 = fdiv double %157, %169
  %172 = fmul double %.0793947, %171
  %.1794 = select i1 %170, double 0.000000e+00, double %172
  %173 = add nsw i64 %.3813945, %.0806
  %174 = icmp sge i64 %173, %131
  %175 = icmp sle i64 %173, %131
  %.in873 = select i1 %.not.not.not, i1 %175, i1 %174
  br i1 %.in873, label %.lr.ph949, label %.loopexit927, !llvm.loop !17

176:                                              ; preds = %134
  %177 = fcmp oge double %138, 1.000000e+00
  %178 = select i1 %177, double 1.000000e+00, double %138
  %179 = icmp sge i64 %.0786, %131
  %180 = icmp sle i64 %.0786, %131
  %.in872953 = select i1 %.not.not.not, i1 %180, i1 %179
  %181 = fcmp ugt double %178, %135
  %or.cond901954 = select i1 %.in872953, i1 %181, i1 false
  br i1 %or.cond901954, label %.lr.ph958, label %.loopexit927

.lr.ph958:                                        ; preds = %176, %.lr.ph958
  %.2795956 = phi double [ %186, %.lr.ph958 ], [ %178, %176 ]
  %.4814955 = phi i64 [ %187, %.lr.ph958 ], [ %.0786, %176 ]
  %182 = getelementptr inbounds double, ptr %30, i64 %.4814955
  %183 = load double, ptr %182, align 8, !tbaa !9
  %184 = fadd double %183, 1.000000e+00
  %185 = fdiv double 1.000000e+00, %184
  %186 = fmul double %.2795956, %185
  %187 = add nsw i64 %.4814955, %.0806
  %188 = icmp sge i64 %187, %131
  %189 = icmp sle i64 %187, %131
  %.in872 = select i1 %.not.not.not, i1 %189, i1 %188
  %190 = fcmp ugt double %186, %135
  %or.cond901 = select i1 %.in872, i1 %190, i1 false
  br i1 %or.cond901, label %.lr.ph958, label %.loopexit927, !llvm.loop !18

191:                                              ; preds = %._crit_edge
  br i1 %.not.not.not, label %195, label %192

192:                                              ; preds = %191
  %193 = load i64, ptr %5, align 8, !tbaa !5
  %194 = add nsw i64 %193, 1
  br label %195

195:                                              ; preds = %191, %192
  %.1807 = phi i64 [ 1, %192 ], [ -1, %191 ]
  %.1791 = phi i64 [ %194, %192 ], [ 1, %191 ]
  %196 = phi i64 [ %125, %192 ], [ 1, %191 ]
  %.1 = phi i64 [ 1, %192 ], [ %125, %191 ]
  %197 = load double, ptr %22, align 8, !tbaa !9
  %198 = fcmp une double %197, 1.000000e+00
  br i1 %198, label %.loopexit927, label %199

199:                                              ; preds = %195
  %200 = load double, ptr %25, align 8
  %201 = fcmp oge double %.0796.lcssa, %200
  %202 = select i1 %201, double %.0796.lcssa, double %200
  %203 = fdiv double 5.000000e-01, %202
  br i1 %.not857, label %242, label %204

204:                                              ; preds = %199
  %205 = icmp sge i64 %.1, %196
  %206 = icmp sle i64 %.1, %196
  %.in870960 = select i1 %.not.not.not, i1 %205, i1 %206
  br i1 %.in870960, label %.lr.ph965, label %._crit_edge966

.lr.ph965:                                        ; preds = %204, %236
  %207 = phi double [ %229, %236 ], [ %200, %204 ]
  %.3963 = phi double [ %215, %236 ], [ %203, %204 ]
  %.2804962 = phi double [ %.3805, %236 ], [ %203, %204 ]
  %.5815961 = phi i64 [ %237, %236 ], [ %.1, %204 ]
  %208 = fcmp ugt double %.3963, %207
  br i1 %208, label %209, label %.loopexit927

209:                                              ; preds = %.lr.ph965
  %210 = getelementptr inbounds double, ptr %30, i64 %.5815961
  %211 = load double, ptr %210, align 8, !tbaa !9
  %212 = fadd double %211, 1.000000e+00
  %213 = fdiv double %.2804962, %212
  %214 = fcmp ole double %.3963, %213
  %215 = select i1 %214, double %.3963, double %213
  %216 = mul nsw i64 %.5815961, %26
  %217 = add nsw i64 %216, %.1791
  store i64 %217, ptr %14, align 8, !tbaa !5
  %218 = getelementptr inbounds %struct.doublecomplex, ptr %28, i64 %217
  %219 = load <2 x double>, ptr %218, align 8, !tbaa !9
  store <2 x double> %219, ptr %21, align 16, !tbaa !9
  %220 = extractelement <2 x double> %219, i64 0
  store double %220, ptr %15, align 8, !tbaa !9
  %221 = fcmp oge double %220, 0.000000e+00
  %222 = fneg double %220
  %223 = select i1 %221, double %220, double %222
  %224 = call double @d_imag(ptr noundef nonnull %21) #6
  %225 = fcmp oge double %224, 0.000000e+00
  %226 = fneg double %224
  %227 = select i1 %225, double %224, double %226
  %228 = fadd double %223, %227
  %229 = load double, ptr %25, align 8, !tbaa !9
  %230 = fcmp ult double %228, %229
  br i1 %230, label %236, label %231

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

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

236:                                              ; preds = %209, %233, %231
  %.3805 = phi double [ %235, %233 ], [ %.2804962, %231 ], [ 0.000000e+00, %209 ]
  %237 = add nsw i64 %.5815961, %.1807
  %238 = icmp sge i64 %237, %196
  %239 = icmp sle i64 %237, %196
  %.in870 = select i1 %.not.not.not, i1 %238, i1 %239
  br i1 %.in870, label %.lr.ph965, label %._crit_edge966, !llvm.loop !19

._crit_edge966:                                   ; preds = %236, %204
  %.2804.lcssa = phi double [ %203, %204 ], [ %.3805, %236 ]
  %.3.lcssa = phi double [ %203, %204 ], [ %215, %236 ]
  %240 = fcmp ole double %.3.lcssa, %.2804.lcssa
  %241 = select i1 %240, double %.3.lcssa, double %.2804.lcssa
  br label %.loopexit927

242:                                              ; preds = %199
  %243 = fcmp oge double %203, 1.000000e+00
  %244 = select i1 %243, double 1.000000e+00, double %203
  %245 = icmp sge i64 %.1, %196
  %246 = icmp sle i64 %.1, %196
  %.in969 = select i1 %.not.not.not, i1 %245, i1 %246
  %247 = fcmp ugt double %244, %200
  %or.cond903970 = select i1 %.in969, i1 %247, i1 false
  br i1 %or.cond903970, label %.lr.ph974, label %.loopexit927

.lr.ph974:                                        ; preds = %242, %.lr.ph974
  %.4972 = phi double [ %251, %.lr.ph974 ], [ %244, %242 ]
  %.6816971 = phi i64 [ %252, %.lr.ph974 ], [ %.1, %242 ]
  %248 = getelementptr inbounds double, ptr %30, i64 %.6816971
  %249 = load double, ptr %248, align 8, !tbaa !9
  %250 = fadd double %249, 1.000000e+00
  %251 = fdiv double %.4972, %250
  %252 = add nsw i64 %.6816971, %.1807
  %253 = icmp sge i64 %252, %196
  %254 = icmp sle i64 %252, %196
  %.in = select i1 %.not.not.not, i1 %253, i1 %254
  %255 = fcmp ugt double %251, %200
  %or.cond903 = select i1 %.in, i1 %255, i1 false
  br i1 %or.cond903, label %.lr.ph974, label %.loopexit927, !llvm.loop !20

.loopexit927:                                     ; preds = %.lr.ph949, %166, %.lr.ph958, %.lr.ph965, %.lr.ph974, %139, %176, %242, %195, %130, %._crit_edge966
  %256 = phi i64 [ %.1807, %._crit_edge966 ], [ %.0806, %130 ], [ %.1807, %195 ], [ %.1807, %242 ], [ %.0806, %176 ], [ %.0806, %139 ], [ %.1807, %.lr.ph974 ], [ %.1807, %.lr.ph965 ], [ %.0806, %.lr.ph958 ], [ %.0806, %166 ], [ %.0806, %.lr.ph949 ]
  %.5 = phi double [ %241, %._crit_edge966 ], [ 0.000000e+00, %130 ], [ 0.000000e+00, %195 ], [ %244, %242 ], [ %178, %176 ], [ %138, %139 ], [ %251, %.lr.ph974 ], [ %.3963, %.lr.ph965 ], [ %186, %.lr.ph958 ], [ %.0793947, %.lr.ph949 ], [ %.1803, %166 ]
  %.2792 = phi i64 [ %.1791, %._crit_edge966 ], [ %.0790, %130 ], [ %.1791, %195 ], [ %.1791, %242 ], [ %.0790, %176 ], [ %.0790, %139 ], [ %.1791, %.lr.ph974 ], [ %.1791, %.lr.ph965 ], [ %.0790, %.lr.ph958 ], [ %.0790, %166 ], [ %.0790, %.lr.ph949 ]
  %257 = phi i64 [ %196, %._crit_edge966 ], [ %131, %130 ], [ %196, %195 ], [ %196, %242 ], [ %131, %176 ], [ %131, %139 ], [ %196, %.lr.ph974 ], [ %196, %.lr.ph965 ], [ %131, %.lr.ph958 ], [ %131, %166 ], [ %131, %.lr.ph949 ]
  %.2 = phi i64 [ %.1, %._crit_edge966 ], [ %.0786, %130 ], [ %.1, %195 ], [ %.1, %242 ], [ %.0786, %176 ], [ %.0786, %139 ], [ %.1, %.lr.ph974 ], [ %.1, %.lr.ph965 ], [ %.0786, %.lr.ph958 ], [ %.0786, %166 ], [ %.0786, %.lr.ph949 ]
  %258 = load double, ptr %22, align 8, !tbaa !9
  %259 = fmul double %.5, %258
  %260 = load double, ptr %25, align 8, !tbaa !9
  %261 = fcmp ogt double %259, %260
  br i1 %261, label %262, label %264

262:                                              ; preds = %.loopexit927
  %263 = call i32 @f2c_ztbsv(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull @c__1) #6
  %.pr915 = load double, ptr %22, align 8, !tbaa !9
  br label %958

264:                                              ; preds = %.loopexit927
  %265 = load double, ptr %24, align 8, !tbaa !9
  %266 = fmul double %265, 5.000000e-01
  %267 = fcmp ogt double %.0796.lcssa, %266
  br i1 %267, label %268, label %272

268:                                              ; preds = %264
  %269 = fdiv double %266, %.0796.lcssa
  store double %269, ptr %9, align 8, !tbaa !9
  %270 = call i32 @f2c_zdscal(ptr noundef nonnull %4, ptr noundef nonnull %9, ptr noundef %8, ptr noundef nonnull @c__1) #6
  %271 = load double, ptr %24, align 8, !tbaa !9
  br label %274

272:                                              ; preds = %264
  %273 = fmul double %.0796.lcssa, 2.000000e+00
  br label %274

274:                                              ; preds = %272, %268
  %.1797 = phi double [ %271, %268 ], [ %273, %272 ]
  %275 = icmp sge i64 %.2, %257
  %276 = icmp sle i64 %.2, %257
  br i1 %.not854, label %448, label %277

277:                                              ; preds = %274
  %278 = icmp slt i64 %256, 0
  %invariant.gep980 = getelementptr i8, ptr %28, i64 32
  %.in894982 = select i1 %278, i1 %275, i1 %276
  br i1 %.in894982, label %.lr.ph986, label %.loopexit922

.lr.ph986:                                        ; preds = %277
  %279 = getelementptr inbounds i8, ptr %16, i64 8
  %280 = getelementptr inbounds i8, ptr %21, i64 8
  br label %281

281:                                              ; preds = %.lr.ph986, %444
  %.2798984 = phi double [ %.1797, %.lr.ph986 ], [ %.6, %444 ]
  %.7817983 = phi i64 [ %.2, %.lr.ph986 ], [ %445, %444 ]
  store i64 %.7817983, ptr %14, align 8, !tbaa !5
  %282 = getelementptr inbounds %struct.doublecomplex, ptr %29, i64 %.7817983
  %283 = load double, ptr %282, align 8, !tbaa !14
  %284 = fcmp oge double %283, 0.000000e+00
  %285 = fneg double %283
  %286 = select i1 %284, double %283, double %285
  %287 = call double @d_imag(ptr noundef nonnull %282) #6
  %288 = fcmp oge double %287, 0.000000e+00
  %289 = fneg double %287
  %290 = select i1 %288, double %287, double %289
  %291 = fadd double %286, %290
  br i1 %.not857, label %302, label %292

292:                                              ; preds = %281
  %293 = mul nsw i64 %.7817983, %26
  %294 = add nsw i64 %293, %.2792
  store i64 %294, ptr %14, align 8, !tbaa !5
  %295 = load double, ptr %22, align 8, !tbaa !9
  %296 = getelementptr inbounds %struct.doublecomplex, ptr %28, i64 %294
  %297 = load <2 x double>, ptr %296, align 8, !tbaa !9
  %298 = insertelement <2 x double> poison, double %295, i64 0
  %299 = shufflevector <2 x double> %298, <2 x double> poison, <2 x i32> zeroinitializer
  %300 = fmul <2 x double> %299, %297
  store <2 x double> %300, ptr %16, align 16, !tbaa !9
  store <2 x double> %300, ptr %21, align 16, !tbaa !9
  %301 = extractelement <2 x double> %300, i64 0
  br label %305

302:                                              ; preds = %281
  %303 = load double, ptr %22, align 8, !tbaa !9
  store double %303, ptr %21, align 16, !tbaa !14
  store double 0.000000e+00, ptr %280, align 8, !tbaa !21
  %304 = fcmp oeq double %303, 1.000000e+00
  br i1 %304, label %365, label %305

305:                                              ; preds = %302, %292
  %306 = phi double [ %303, %302 ], [ %301, %292 ]
  store double %306, ptr %15, align 8, !tbaa !9
  %307 = call double @d_imag(ptr noundef nonnull %21) #6
  %308 = insertelement <2 x double> poison, double %306, i64 0
  %309 = insertelement <2 x double> %308, double %307, i64 1
  %310 = fcmp oge <2 x double> %309, zeroinitializer
  %311 = fneg <2 x double> %309
  %312 = select <2 x i1> %310, <2 x double> %309, <2 x double> %311
  %shift1170 = shufflevector <2 x double> %312, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %313 = fadd <2 x double> %312, %shift1170
  %314 = extractelement <2 x double> %313, i64 0
  %315 = load double, ptr %25, align 8, !tbaa !9
  %316 = fcmp ogt double %314, %315
  br i1 %316, label %317, label %331

317:                                              ; preds = %305
  %318 = fcmp olt double %314, 1.000000e+00
  br i1 %318, label %319, label %330

319:                                              ; preds = %317
  %320 = load double, ptr %24, align 8, !tbaa !9
  %321 = fmul double %314, %320
  %322 = fcmp ogt double %291, %321
  br i1 %322, label %323, label %330

323:                                              ; preds = %319
  %324 = fdiv double 1.000000e+00, %291
  store double %324, ptr %19, align 8, !tbaa !9
  %325 = call i32 @f2c_zdscal(ptr noundef nonnull %4, ptr noundef nonnull %19, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #6
  %326 = load double, ptr %19, align 8, !tbaa !9
  %327 = load double, ptr %9, align 8, !tbaa !9
  %328 = fmul double %326, %327
  store double %328, ptr %9, align 8, !tbaa !9
  %329 = fmul double %.2798984, %326
  br label %330

330:                                              ; preds = %319, %323, %317
  %.3799 = phi double [ %329, %323 ], [ %.2798984, %319 ], [ %.2798984, %317 ]
  store i64 %.7817983, ptr %14, align 8, !tbaa !5
  call void @zladiv_(ptr noundef nonnull %16, ptr noundef nonnull %282, ptr noundef nonnull %21) #6
  br label %.sink.split

331:                                              ; preds = %305
  %332 = fcmp ogt double %314, 0.000000e+00
  br i1 %332, label %333, label %351

333:                                              ; preds = %331
  %334 = load double, ptr %24, align 8, !tbaa !9
  %335 = fmul double %314, %334
  %336 = fcmp ogt double %291, %335
  br i1 %336, label %337, label %350

337:                                              ; preds = %333
  %338 = fdiv double %335, %291
  store double %338, ptr %19, align 8, !tbaa !9
  %339 = getelementptr inbounds double, ptr %30, i64 %.7817983
  %340 = load double, ptr %339, align 8, !tbaa !9
  %341 = fcmp ogt double %340, 1.000000e+00
  br i1 %341, label %342, label %344

342:                                              ; preds = %337
  %343 = fdiv double %338, %340
  store double %343, ptr %19, align 8, !tbaa !9
  br label %344

344:                                              ; preds = %342, %337
  %345 = call i32 @f2c_zdscal(ptr noundef nonnull %4, ptr noundef nonnull %19, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #6
  %346 = load double, ptr %19, align 8, !tbaa !9
  %347 = load double, ptr %9, align 8, !tbaa !9
  %348 = fmul double %346, %347
  store double %348, ptr %9, align 8, !tbaa !9
  %349 = fmul double %.2798984, %346
  br label %350

350:                                              ; preds = %344, %333
  %.4800 = phi double [ %349, %344 ], [ %.2798984, %333 ]
  store i64 %.7817983, ptr %14, align 8, !tbaa !5
  call void @zladiv_(ptr noundef nonnull %16, ptr noundef nonnull %282, ptr noundef nonnull %21) #6
  br label %.sink.split

351:                                              ; preds = %331
  %352 = load i64, ptr %4, align 8, !tbaa !5
  %.not896976 = icmp slt i64 %352, 1
  br i1 %.not896976, label %.thread909, label %.lr.ph979.preheader

.lr.ph979.preheader:                              ; preds = %351
  %353 = shl nuw i64 %352, 4
  call void @llvm.memset.p0.i64(ptr nonnull align 8 %8, i8 0, i64 %353, i1 false), !tbaa !9
  br label %.thread909

.thread909:                                       ; preds = %.lr.ph979.preheader, %351
  store i64 %.7817983, ptr %14, align 8, !tbaa !5
  store <2 x double> <double 1.000000e+00, double 0.000000e+00>, ptr %282, align 8, !tbaa !9
  store double 0.000000e+00, ptr %9, align 8, !tbaa !9
  br label %381

.sink.split:                                      ; preds = %350, %330
  %.5801.ph = phi double [ %.4800, %350 ], [ %.3799, %330 ]
  %.sink1167 = load double, ptr %16, align 16, !tbaa !14
  %.sink1169 = load i64, ptr %14, align 8, !tbaa !5
  %354 = getelementptr inbounds %struct.doublecomplex, ptr %29, i64 %.sink1169
  store double %.sink1167, ptr %354, align 8, !tbaa !14
  %355 = load double, ptr %279, align 8, !tbaa !21
  %356 = getelementptr inbounds %struct.doublecomplex, ptr %29, i64 %.sink1169, i32 1
  store double %355, ptr %356, align 8, !tbaa !21
  store i64 %.7817983, ptr %14, align 8, !tbaa !5
  %storemerge1138 = load double, ptr %282, align 8, !tbaa !14
  store double %storemerge1138, ptr %15, align 8, !tbaa !9
  %357 = call double @d_imag(ptr noundef nonnull %282) #6
  %358 = insertelement <2 x double> poison, double %storemerge1138, i64 0
  %359 = insertelement <2 x double> %358, double %357, i64 1
  %360 = fcmp oge <2 x double> %359, zeroinitializer
  %361 = fneg <2 x double> %359
  %362 = select <2 x i1> %360, <2 x double> %359, <2 x double> %361
  %shift1171 = shufflevector <2 x double> %362, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %363 = fadd <2 x double> %362, %shift1171
  %364 = extractelement <2 x double> %363, i64 0
  br label %365

365:                                              ; preds = %.sink.split, %302
  %.0809 = phi double [ %291, %302 ], [ %364, %.sink.split ]
  %.5801 = phi double [ %.2798984, %302 ], [ %.5801.ph, %.sink.split ]
  %366 = fcmp ogt double %.0809, 1.000000e+00
  br i1 %366, label %367, label %381

367:                                              ; preds = %365
  %368 = fdiv double 1.000000e+00, %.0809
  store double %368, ptr %19, align 8, !tbaa !9
  %369 = getelementptr inbounds double, ptr %30, i64 %.7817983
  %370 = load double, ptr %369, align 8, !tbaa !9
  %371 = load double, ptr %24, align 8, !tbaa !9
  %372 = fsub double %371, %.5801
  %373 = fmul double %368, %372
  %374 = fcmp ogt double %370, %373
  br i1 %374, label %375, label %392

375:                                              ; preds = %367
  %376 = fmul double %368, 5.000000e-01
  store double %376, ptr %19, align 8, !tbaa !9
  %377 = call i32 @f2c_zdscal(ptr noundef nonnull %4, ptr noundef nonnull %19, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #6
  %378 = load double, ptr %19, align 8, !tbaa !9
  %379 = load double, ptr %9, align 8, !tbaa !9
  %380 = fmul double %378, %379
  br label %.sink.split1122

381:                                              ; preds = %.thread909, %365
  %.5801914 = phi double [ 0.000000e+00, %.thread909 ], [ %.5801, %365 ]
  %.0809912 = phi double [ 1.000000e+00, %.thread909 ], [ %.0809, %365 ]
  %382 = getelementptr inbounds double, ptr %30, i64 %.7817983
  %383 = load double, ptr %382, align 8, !tbaa !9
  %384 = fmul double %.0809912, %383
  %385 = load double, ptr %24, align 8, !tbaa !9
  %386 = fsub double %385, %.5801914
  %387 = fcmp ogt double %384, %386
  br i1 %387, label %388, label %392

388:                                              ; preds = %381
  %389 = call i32 @f2c_zdscal(ptr noundef nonnull %4, ptr noundef nonnull @c_b36, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #6
  %390 = load double, ptr %9, align 8, !tbaa !9
  %391 = fmul double %390, 5.000000e-01
  br label %.sink.split1122

.sink.split1122:                                  ; preds = %375, %388
  %.sink1123 = phi double [ %391, %388 ], [ %380, %375 ]
  %.5801913.ph = phi double [ %.5801914, %388 ], [ %.5801, %375 ]
  store double %.sink1123, ptr %9, align 8, !tbaa !9
  br label %392

392:                                              ; preds = %.sink.split1122, %381, %367
  %.5801913 = phi double [ %.5801914, %381 ], [ %.5801, %367 ], [ %.5801913.ph, %.sink.split1122 ]
  br i1 %.not.not.not, label %414, label %393

393:                                              ; preds = %392
  %394 = icmp sgt i64 %.7817983, 1
  br i1 %394, label %395, label %444

395:                                              ; preds = %393
  %396 = load i64, ptr %5, align 8, !tbaa !5
  %397 = add nsw i64 %.7817983, -1
  %398 = call i64 @llvm.smin.i64(i64 %396, i64 %397)
  store i64 %398, ptr %20, align 8, !tbaa !5
  store i64 %.7817983, ptr %14, align 8, !tbaa !5
  %399 = load <2 x double>, ptr %282, align 8, !tbaa !9
  %400 = fneg <2 x double> %399
  store <2 x double> %400, ptr %17, align 16, !tbaa !9
  %401 = load double, ptr %22, align 8, !tbaa !9
  %402 = insertelement <2 x double> poison, double %401, i64 0
  %403 = shufflevector <2 x double> %402, <2 x double> poison, <2 x i32> zeroinitializer
  %404 = fmul <2 x double> %403, %400
  store <2 x double> %404, ptr %16, align 16, !tbaa !9
  %405 = add nsw i64 %396, 1
  %406 = sub i64 %405, %398
  %407 = mul nsw i64 %.7817983, %26
  %408 = getelementptr %struct.doublecomplex, ptr %28, i64 %406
  %409 = getelementptr %struct.doublecomplex, ptr %408, i64 %407
  %410 = sub nsw i64 %.7817983, %398
  %411 = getelementptr inbounds %struct.doublecomplex, ptr %29, i64 %410
  %412 = call i32 @f2c_zaxpy(ptr noundef nonnull %20, ptr noundef nonnull %16, ptr noundef %409, ptr noundef nonnull @c__1, ptr noundef nonnull %411, ptr noundef nonnull @c__1) #6
  store i64 %397, ptr %14, align 8, !tbaa !5
  %413 = call i64 @f2c_izamax(ptr noundef nonnull %14, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #6
  br label %.sink.split1124

414:                                              ; preds = %392
  %415 = load i64, ptr %4, align 8, !tbaa !5
  %416 = icmp slt i64 %.7817983, %415
  br i1 %416, label %417, label %444

417:                                              ; preds = %414
  %418 = load i64, ptr %5, align 8, !tbaa !5
  %419 = sub nsw i64 %415, %.7817983
  %420 = call i64 @llvm.smin.i64(i64 %418, i64 %419)
  store i64 %420, ptr %20, align 8, !tbaa !5
  %421 = icmp sgt i64 %420, 0
  br i1 %421, label %422, label %432

422:                                              ; preds = %417
  store i64 %.7817983, ptr %14, align 8, !tbaa !5
  %423 = load <2 x double>, ptr %282, align 8, !tbaa !9
  %424 = fneg <2 x double> %423
  store <2 x double> %424, ptr %17, align 16, !tbaa !9
  %425 = load double, ptr %22, align 8, !tbaa !9
  %426 = insertelement <2 x double> poison, double %425, i64 0
  %427 = shufflevector <2 x double> %426, <2 x double> poison, <2 x i32> zeroinitializer
  %428 = fmul <2 x double> %427, %424
  store <2 x double> %428, ptr %16, align 16, !tbaa !9
  %429 = mul nsw i64 %.7817983, %26
  %gep981 = getelementptr %struct.doublecomplex, ptr %invariant.gep980, i64 %429
  %430 = getelementptr %struct.doublecomplex, ptr %8, i64 %.7817983
  %431 = call i32 @f2c_zaxpy(ptr noundef nonnull %20, ptr noundef nonnull %16, ptr noundef %gep981, ptr noundef nonnull @c__1, ptr noundef %430, ptr noundef nonnull @c__1) #6
  %.pre = load i64, ptr %4, align 8, !tbaa !5
  %.pre1082 = sub nsw i64 %.pre, %.7817983
  br label %432

432:                                              ; preds = %422, %417
  %.pre-phi = phi i64 [ %.pre1082, %422 ], [ %419, %417 ]
  store i64 %.pre-phi, ptr %14, align 8, !tbaa !5
  %433 = getelementptr %struct.doublecomplex, ptr %8, i64 %.7817983
  %434 = call i64 @f2c_izamax(ptr noundef nonnull %14, ptr noundef %433, ptr noundef nonnull @c__1) #6
  %435 = add nsw i64 %434, %.7817983
  br label %.sink.split1124

.sink.split1124:                                  ; preds = %432, %395
  %.pn = phi i64 [ %413, %395 ], [ %435, %432 ]
  store i64 %.pn, ptr %14, align 8, !tbaa !5
  %.sink1132 = getelementptr inbounds %struct.doublecomplex, ptr %29, i64 %.pn
  %.sink1137 = load double, ptr %.sink1132, align 8, !tbaa !14
  store double %.sink1137, ptr %15, align 8, !tbaa !9
  %436 = call double @d_imag(ptr noundef nonnull %.sink1132) #6
  %437 = insertelement <2 x double> poison, double %.sink1137, i64 0
  %438 = insertelement <2 x double> %437, double %436, i64 1
  %439 = fcmp oge <2 x double> %438, zeroinitializer
  %440 = fneg <2 x double> %438
  %441 = select <2 x i1> %439, <2 x double> %438, <2 x double> %440
  %shift1172 = shufflevector <2 x double> %441, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %442 = fadd <2 x double> %441, %shift1172
  %443 = extractelement <2 x double> %442, i64 0
  br label %444

444:                                              ; preds = %.sink.split1124, %393, %414
  %.6 = phi double [ %.5801913, %393 ], [ %.5801913, %414 ], [ %443, %.sink.split1124 ]
  %445 = add nsw i64 %.7817983, %256
  %446 = icmp sge i64 %445, %257
  %447 = icmp sle i64 %445, %257
  %.in894 = select i1 %278, i1 %446, i1 %447
  br i1 %.in894, label %281, label %.loopexit922, !llvm.loop !22

448:                                              ; preds = %274
  %449 = call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #6
  %.not = icmp eq i64 %449, 0
  br i1 %.not, label %698, label %450

450:                                              ; preds = %448
  store i64 %256, ptr %13, align 8, !tbaa !5
  %invariant.gep1019 = getelementptr i8, ptr %28, i64 32
  %451 = icmp slt i64 %256, 0
  %.in8841021 = select i1 %451, i1 %275, i1 %276
  br i1 %.in8841021, label %.lr.ph1025, label %.loopexit922

.lr.ph1025:                                       ; preds = %450
  %452 = getelementptr inbounds i8, ptr %23, i64 8
  %453 = getelementptr inbounds i8, ptr %16, i64 8
  %454 = getelementptr inbounds i8, ptr %21, i64 8
  br label %455

455:                                              ; preds = %.lr.ph1025, %683
  %.71023 = phi double [ %.1797, %.lr.ph1025 ], [ %694, %683 ]
  %.88181022 = phi i64 [ %.2, %.lr.ph1025 ], [ %695, %683 ]
  %456 = getelementptr inbounds %struct.doublecomplex, ptr %29, i64 %.88181022
  %457 = load double, ptr %456, align 8, !tbaa !14
  store double %457, ptr %15, align 8, !tbaa !9
  %458 = call double @d_imag(ptr noundef nonnull %456) #6
  %459 = insertelement <2 x double> poison, double %457, i64 0
  %460 = insertelement <2 x double> %459, double %458, i64 1
  %461 = fcmp oge <2 x double> %460, zeroinitializer
  %462 = fneg <2 x double> %460
  %463 = select <2 x i1> %461, <2 x double> %460, <2 x double> %462
  %shift1173 = shufflevector <2 x double> %463, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %464 = fadd <2 x double> %463, %shift1173
  %465 = extractelement <2 x double> %464, i64 0
  %466 = load double, ptr %22, align 8, !tbaa !9
  store double %466, ptr %23, align 16, !tbaa !14
  store double 0.000000e+00, ptr %452, align 8, !tbaa !21
  %467 = fcmp oge double %.71023, 1.000000e+00
  %468 = select i1 %467, double %.71023, double 1.000000e+00
  %469 = fdiv double 1.000000e+00, %468
  store double %469, ptr %19, align 8, !tbaa !9
  %470 = getelementptr inbounds double, ptr %30, i64 %.88181022
  %471 = load double, ptr %470, align 8, !tbaa !9
  %472 = load double, ptr %24, align 8, !tbaa !9
  %473 = fsub double %472, %465
  %474 = fmul double %469, %473
  %475 = fcmp ogt double %471, %474
  br i1 %475, label %476, label %513

476:                                              ; preds = %455
  %477 = fmul double %469, 5.000000e-01
  store double %477, ptr %19, align 8, !tbaa !9
  %478 = insertelement <2 x double> <double poison, double 0.000000e+00>, double %466, i64 0
  br i1 %.not857, label %486, label %479

479:                                              ; preds = %476
  %480 = mul nsw i64 %.88181022, %26
  %481 = add nsw i64 %480, %.2792
  store i64 %481, ptr %14, align 8, !tbaa !5
  %482 = getelementptr inbounds %struct.doublecomplex, ptr %28, i64 %481
  %483 = load <2 x double>, ptr %482, align 8, !tbaa !9
  %484 = shufflevector <2 x double> %478, <2 x double> poison, <2 x i32> zeroinitializer
  %485 = fmul <2 x double> %484, %483
  store <2 x double> %485, ptr %16, align 16, !tbaa !9
  br label %486

486:                                              ; preds = %476, %479
  %487 = phi <2 x double> [ %485, %479 ], [ %478, %476 ]
  store <2 x double> %487, ptr %21, align 16, !tbaa !9
  %488 = extractelement <2 x double> %487, i64 0
  %489 = fcmp oge double %488, 0.000000e+00
  %490 = fneg double %488
  %491 = select i1 %489, double %488, double %490
  %492 = call double @d_imag(ptr noundef nonnull %21) #6
  %493 = fcmp oge double %492, 0.000000e+00
  %494 = fneg double %492
  %495 = select i1 %493, double %492, double %494
  %496 = fadd double %491, %495
  %497 = fcmp ogt double %496, 1.000000e+00
  br i1 %497, label %498, label %504

498:                                              ; preds = %486
  store double 1.000000e+00, ptr %15, align 8, !tbaa !9
  %499 = load double, ptr %19, align 8, !tbaa !9
  %500 = fmul double %496, %499
  %501 = fcmp oge double %500, 1.000000e+00
  %502 = select i1 %501, double 1.000000e+00, double %500
  store double %502, ptr %19, align 8, !tbaa !9
  call void @zladiv_(ptr noundef nonnull %16, ptr noundef nonnull %23, ptr noundef nonnull %21) #6
  %503 = load <2 x double>, ptr %16, align 16, !tbaa !9
  store <2 x double> %503, ptr %23, align 16, !tbaa !9
  br label %504

504:                                              ; preds = %498, %486
  %505 = load double, ptr %19, align 8, !tbaa !9
  %506 = fcmp olt double %505, 1.000000e+00
  br i1 %506, label %507, label %513

507:                                              ; preds = %504
  %508 = call i32 @f2c_zdscal(ptr noundef nonnull %4, ptr noundef nonnull %19, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #6
  %509 = load double, ptr %19, align 8, !tbaa !9
  %510 = load double, ptr %9, align 8, !tbaa !9
  %511 = fmul double %509, %510
  store double %511, ptr %9, align 8, !tbaa !9
  %512 = fmul double %.71023, %509
  br label %513

513:                                              ; preds = %504, %507, %455
  %.8 = phi double [ %512, %507 ], [ %.71023, %504 ], [ %.71023, %455 ]
  %514 = load double, ptr %23, align 16, !tbaa !14
  %515 = fcmp oeq double %514, 1.000000e+00
  %516 = load double, ptr %452, align 8
  %517 = fcmp oeq double %516, 0.000000e+00
  %or.cond = select i1 %515, i1 %517, i1 false
  %518 = load i64, ptr %5, align 8, !tbaa !5
  br i1 %or.cond, label %519, label %540

519:                                              ; preds = %513
  br i1 %.not.not.not, label %531, label %520

520:                                              ; preds = %519
  %521 = add nsw i64 %.88181022, -1
  %522 = call i64 @llvm.smin.i64(i64 %518, i64 %521)
  store i64 %522, ptr %20, align 8, !tbaa !5
  %523 = add nsw i64 %518, 1
  %524 = sub i64 %523, %522
  %525 = mul nsw i64 %.88181022, %26
  %526 = getelementptr %struct.doublecomplex, ptr %28, i64 %524
  %527 = getelementptr %struct.doublecomplex, ptr %526, i64 %525
  %528 = sub nsw i64 %.88181022, %522
  %529 = getelementptr inbounds %struct.doublecomplex, ptr %29, i64 %528
  call void @f2c_zdotu(ptr noundef nonnull %16, ptr noundef nonnull %20, ptr noundef %527, ptr noundef nonnull @c__1, ptr noundef nonnull %529, ptr noundef nonnull @c__1) #6
  %530 = load <2 x double>, ptr %16, align 16, !tbaa !9
  br label %.loopexit923

531:                                              ; preds = %519
  %532 = load i64, ptr %4, align 8, !tbaa !5
  %533 = sub nsw i64 %532, %.88181022
  %534 = call i64 @llvm.smin.i64(i64 %518, i64 %533)
  store i64 %534, ptr %20, align 8, !tbaa !5
  %535 = icmp sgt i64 %534, 1
  br i1 %535, label %536, label %.loopexit923

536:                                              ; preds = %531
  %537 = mul nsw i64 %.88181022, %26
  %gep1020 = getelementptr %struct.doublecomplex, ptr %invariant.gep1019, i64 %537
  %538 = getelementptr %struct.doublecomplex, ptr %8, i64 %.88181022
  call void @f2c_zdotu(ptr noundef nonnull %16, ptr noundef nonnull %20, ptr noundef %gep1020, ptr noundef nonnull @c__1, ptr noundef %538, ptr noundef nonnull @c__1) #6
  %539 = load <2 x double>, ptr %16, align 16, !tbaa !9
  br label %.loopexit923

540:                                              ; preds = %513
  br i1 %.not.not.not, label %571, label %541

541:                                              ; preds = %540
  %542 = add nsw i64 %.88181022, -1
  %543 = call i64 @llvm.smin.i64(i64 %518, i64 %542)
  store i64 %543, ptr %20, align 8, !tbaa !5
  store i64 %543, ptr %14, align 8, !tbaa !5
  %.not889987 = icmp slt i64 %543, 1
  br i1 %.not889987, label %.loopexit923, label %.lr.ph992

.lr.ph992:                                        ; preds = %541
  %544 = sub i64 %518, %543
  %545 = mul nsw i64 %.88181022, %26
  %invariant.gep995 = getelementptr %struct.doublecomplex, ptr %28, i64 %545
  %546 = xor i64 %543, -1
  %547 = getelementptr %struct.doublecomplex, ptr %456, i64 %546
  %548 = getelementptr %struct.doublecomplex, ptr %invariant.gep995, i64 %544
  br label %549

549:                                              ; preds = %.lr.ph992, %549
  %.1821988 = phi i64 [ 1, %.lr.ph992 ], [ %570, %549 ]
  %550 = phi <2 x double> [ zeroinitializer, %.lr.ph992 ], [ %569, %549 ]
  %gep996 = getelementptr %struct.doublecomplex, ptr %548, i64 %.1821988
  %551 = load double, ptr %gep996, align 8, !tbaa !14
  %552 = getelementptr inbounds i8, ptr %gep996, i64 8
  %553 = load double, ptr %552, align 8, !tbaa !21
  %554 = fneg double %553
  %555 = fmul double %516, %554
  %556 = call double @llvm.fmuladd.f64(double %551, double %514, double %555)
  %557 = fmul double %514, %553
  %558 = call double @llvm.fmuladd.f64(double %551, double %516, double %557)
  %559 = getelementptr %struct.doublecomplex, ptr %547, i64 %.1821988
  %560 = fneg double %558
  %561 = load <2 x double>, ptr %559, align 8, !tbaa !9
  %562 = insertelement <2 x double> poison, double %558, i64 0
  %563 = insertelement <2 x double> %562, double %560, i64 1
  %564 = fmul <2 x double> %561, %563
  %565 = shufflevector <2 x double> %564, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %566 = insertelement <2 x double> poison, double %556, i64 0
  %567 = shufflevector <2 x double> %566, <2 x double> poison, <2 x i32> zeroinitializer
  %568 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %567, <2 x double> %561, <2 x double> %565)
  %569 = fadd <2 x double> %550, %568
  %570 = add nuw i64 %.1821988, 1
  %exitcond.not = icmp eq i64 %.1821988, %543
  br i1 %exitcond.not, label %..loopexit924_crit_edge, label %549, !llvm.loop !23

571:                                              ; preds = %540
  %572 = load i64, ptr %4, align 8, !tbaa !5
  %573 = sub nsw i64 %572, %.88181022
  %574 = call i64 @llvm.smin.i64(i64 %518, i64 %573)
  store i64 %574, ptr %20, align 8, !tbaa !5
  %.not8871000 = icmp slt i64 %574, 1
  br i1 %.not8871000, label %.loopexit923, label %.lr.ph1005

.lr.ph1005:                                       ; preds = %571
  %575 = mul nsw i64 %.88181022, %26
  %invariant.gep1008 = getelementptr %struct.doublecomplex, ptr %28, i64 %575
  br label %576

576:                                              ; preds = %.lr.ph1005, %576
  %.28221001 = phi i64 [ 1, %.lr.ph1005 ], [ %578, %576 ]
  %577 = phi <2 x double> [ zeroinitializer, %.lr.ph1005 ], [ %597, %576 ]
  %578 = add nuw nsw i64 %.28221001, 1
  %gep1009 = getelementptr %struct.doublecomplex, ptr %invariant.gep1008, i64 %578
  %579 = load double, ptr %gep1009, align 8, !tbaa !14
  %580 = getelementptr inbounds i8, ptr %gep1009, i64 8
  %581 = load double, ptr %580, align 8, !tbaa !21
  %582 = fneg double %581
  %583 = fmul double %516, %582
  %584 = call double @llvm.fmuladd.f64(double %579, double %514, double %583)
  %585 = fmul double %514, %581
  %586 = call double @llvm.fmuladd.f64(double %579, double %516, double %585)
  %587 = getelementptr %struct.doublecomplex, ptr %456, i64 %.28221001
  %588 = fneg double %586
  %589 = load <2 x double>, ptr %587, align 8, !tbaa !9
  %590 = insertelement <2 x double> poison, double %586, i64 0
  %591 = insertelement <2 x double> %590, double %588, i64 1
  %592 = fmul <2 x double> %589, %591
  %593 = shufflevector <2 x double> %592, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %594 = insertelement <2 x double> poison, double %584, i64 0
  %595 = shufflevector <2 x double> %594, <2 x double> poison, <2 x i32> zeroinitializer
  %596 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %595, <2 x double> %589, <2 x double> %593)
  %597 = fadd <2 x double> %577, %596
  %exitcond1081.not = icmp eq i64 %.28221001, %574
  br i1 %exitcond1081.not, label %..loopexit923_crit_edge, label %576, !llvm.loop !24

..loopexit923_crit_edge:                          ; preds = %576
  store <2 x double> %596, ptr %17, align 16, !tbaa !9
  br label %.loopexit923

..loopexit924_crit_edge:                          ; preds = %549
  store <2 x double> %568, ptr %17, align 16, !tbaa !9
  br label %.loopexit923

.loopexit923:                                     ; preds = %541, %..loopexit924_crit_edge, %571, %..loopexit923_crit_edge, %520, %536, %531
  %598 = phi <2 x double> [ %530, %520 ], [ %539, %536 ], [ zeroinitializer, %531 ], [ %597, %..loopexit923_crit_edge ], [ zeroinitializer, %571 ], [ %569, %..loopexit924_crit_edge ], [ zeroinitializer, %541 ]
  %599 = load double, ptr %22, align 8, !tbaa !9
  store double %599, ptr %16, align 16, !tbaa !14
  store double 0.000000e+00, ptr %453, align 8, !tbaa !21
  %600 = load double, ptr %23, align 16, !tbaa !14
  %601 = fcmp oeq double %600, %599
  %602 = load double, ptr %452, align 8
  %603 = fcmp oeq double %602, 0.000000e+00
  %or.cond905 = select i1 %601, i1 %603, i1 false
  br i1 %or.cond905, label %604, label %678

604:                                              ; preds = %.loopexit923
  %605 = load <2 x double>, ptr %456, align 8, !tbaa !9
  %606 = fsub <2 x double> %605, %598
  store <2 x double> %606, ptr %16, align 16, !tbaa !9
  store <2 x double> %606, ptr %456, align 8, !tbaa !9
  %607 = extractelement <2 x double> %606, i64 0
  %608 = fcmp oge double %607, 0.000000e+00
  %609 = fneg double %607
  %610 = select i1 %608, double %607, double %609
  %611 = call double @d_imag(ptr noundef nonnull %456) #6
  %612 = fcmp oge double %611, 0.000000e+00
  %613 = fneg double %611
  %614 = select i1 %612, double %611, double %613
  %615 = fadd double %610, %614
  br i1 %.not857, label %626, label %616

616:                                              ; preds = %604
  %617 = mul nsw i64 %.88181022, %26
  %618 = add nsw i64 %617, %.2792
  store i64 %618, ptr %14, align 8, !tbaa !5
  %619 = load double, ptr %22, align 8, !tbaa !9
  %620 = getelementptr inbounds %struct.doublecomplex, ptr %28, i64 %618
  %621 = load <2 x double>, ptr %620, align 8, !tbaa !9
  %622 = insertelement <2 x double> poison, double %619, i64 0
  %623 = shufflevector <2 x double> %622, <2 x double> poison, <2 x i32> zeroinitializer
  %624 = fmul <2 x double> %623, %621
  store <2 x double> %624, ptr %16, align 16, !tbaa !9
  store <2 x double> %624, ptr %21, align 16, !tbaa !9
  %625 = extractelement <2 x double> %624, i64 0
  br label %629

626:                                              ; preds = %604
  %627 = load double, ptr %22, align 8, !tbaa !9
  store double %627, ptr %21, align 16, !tbaa !14
  store double 0.000000e+00, ptr %454, align 8, !tbaa !21
  %628 = fcmp oeq double %627, 1.000000e+00
  br i1 %628, label %683, label %629

629:                                              ; preds = %626, %616
  %630 = phi double [ %627, %626 ], [ %625, %616 ]
  store double %630, ptr %15, align 8, !tbaa !9
  %631 = call double @d_imag(ptr noundef nonnull %21) #6
  %632 = insertelement <2 x double> poison, double %630, i64 0
  %633 = insertelement <2 x double> %632, double %631, i64 1
  %634 = fcmp oge <2 x double> %633, zeroinitializer
  %635 = fneg <2 x double> %633
  %636 = select <2 x i1> %634, <2 x double> %633, <2 x double> %635
  %shift1174 = shufflevector <2 x double> %636, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %637 = fadd <2 x double> %636, %shift1174
  %638 = extractelement <2 x double> %637, i64 0
  %639 = load double, ptr %25, align 8, !tbaa !9
  %640 = fcmp ogt double %638, %639
  br i1 %640, label %641, label %658

641:                                              ; preds = %629
  %642 = fcmp olt double %638, 1.000000e+00
  br i1 %642, label %643, label %654

643:                                              ; preds = %641
  %644 = load double, ptr %24, align 8, !tbaa !9
  %645 = fmul double %638, %644
  %646 = fcmp ogt double %615, %645
  br i1 %646, label %647, label %654

647:                                              ; preds = %643
  %648 = fdiv double 1.000000e+00, %615
  store double %648, ptr %19, align 8, !tbaa !9
  %649 = call i32 @f2c_zdscal(ptr noundef nonnull %4, ptr noundef nonnull %19, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #6
  %650 = load double, ptr %19, align 8, !tbaa !9
  %651 = load double, ptr %9, align 8, !tbaa !9
  %652 = fmul double %650, %651
  store double %652, ptr %9, align 8, !tbaa !9
  %653 = fmul double %.8, %650
  br label %654

654:                                              ; preds = %643, %647, %641
  %.9 = phi double [ %653, %647 ], [ %.8, %643 ], [ %.8, %641 ]
  store i64 %.88181022, ptr %14, align 8, !tbaa !5
  call void @zladiv_(ptr noundef nonnull %16, ptr noundef nonnull %456, ptr noundef nonnull %21) #6
  %655 = load i64, ptr %14, align 8, !tbaa !5
  %656 = getelementptr inbounds %struct.doublecomplex, ptr %29, i64 %655
  %657 = load <2 x double>, ptr %16, align 16, !tbaa !9
  store <2 x double> %657, ptr %656, align 8, !tbaa !9
  br label %683

658:                                              ; preds = %629
  %659 = fcmp ogt double %638, 0.000000e+00
  br i1 %659, label %660, label %675

660:                                              ; preds = %658
  %661 = load double, ptr %24, align 8, !tbaa !9
  %662 = fmul double %638, %661
  %663 = fcmp ogt double %615, %662
  br i1 %663, label %664, label %671

664:                                              ; preds = %660
  %665 = fdiv double %662, %615
  store double %665, ptr %19, align 8, !tbaa !9
  %666 = call i32 @f2c_zdscal(ptr noundef nonnull %4, ptr noundef nonnull %19, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #6
  %667 = load double, ptr %19, align 8, !tbaa !9
  %668 = load double, ptr %9, align 8, !tbaa !9
  %669 = fmul double %667, %668
  store double %669, ptr %9, align 8, !tbaa !9
  %670 = fmul double %.8, %667
  br label %671

671:                                              ; preds = %664, %660
  %.10 = phi double [ %670, %664 ], [ %.8, %660 ]
  store i64 %.88181022, ptr %14, align 8, !tbaa !5
  call void @zladiv_(ptr noundef nonnull %16, ptr noundef nonnull %456, ptr noundef nonnull %21) #6
  %672 = load i64, ptr %14, align 8, !tbaa !5
  %673 = getelementptr inbounds %struct.doublecomplex, ptr %29, i64 %672
  %674 = load <2 x double>, ptr %16, align 16, !tbaa !9
  store <2 x double> %674, ptr %673, align 8, !tbaa !9
  br label %683

675:                                              ; preds = %658
  %676 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %676, ptr %14, align 8, !tbaa !5
  %.not8931014 = icmp slt i64 %676, 1
  br i1 %.not8931014, label %._crit_edge1018, label %.lr.ph1017.preheader

.lr.ph1017.preheader:                             ; preds = %675
  %677 = shl nuw i64 %676, 4
  call void @llvm.memset.p0.i64(ptr nonnull align 8 %8, i8 0, i64 %677, i1 false), !tbaa !9
  br label %._crit_edge1018

._crit_edge1018:                                  ; preds = %.lr.ph1017.preheader, %675
  store <2 x double> <double 1.000000e+00, double 0.000000e+00>, ptr %456, align 8, !tbaa !9
  store double 0.000000e+00, ptr %9, align 8, !tbaa !9
  br label %683

678:                                              ; preds = %.loopexit923
  store i64 %.88181022, ptr %14, align 8, !tbaa !5
  call void @zladiv_(ptr noundef nonnull %17, ptr noundef nonnull %456, ptr noundef nonnull %21) #6
  %679 = load <2 x double>, ptr %17, align 16, !tbaa !9
  %680 = fsub <2 x double> %679, %598
  store <2 x double> %680, ptr %16, align 16, !tbaa !9
  %681 = load i64, ptr %14, align 8, !tbaa !5
  %682 = getelementptr inbounds %struct.doublecomplex, ptr %29, i64 %681
  store <2 x double> %680, ptr %682, align 8, !tbaa !9
  br label %683

683:                                              ; preds = %626, %671, %._crit_edge1018, %654, %678
  %.11 = phi double [ %.9, %654 ], [ %.10, %671 ], [ 0.000000e+00, %._crit_edge1018 ], [ %.8, %626 ], [ %.8, %678 ]
  store i64 %.88181022, ptr %14, align 8, !tbaa !5
  %684 = load double, ptr %456, align 8, !tbaa !14
  store double %684, ptr %15, align 8, !tbaa !9
  %685 = call double @d_imag(ptr noundef nonnull %456) #6
  %686 = insertelement <2 x double> poison, double %684, i64 0
  %687 = insertelement <2 x double> %686, double %685, i64 1
  %688 = fcmp oge <2 x double> %687, zeroinitializer
  %689 = fneg <2 x double> %687
  %690 = select <2 x i1> %688, <2 x double> %687, <2 x double> %689
  %shift1175 = shufflevector <2 x double> %690, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %691 = fadd <2 x double> %690, %shift1175
  %692 = extractelement <2 x double> %691, i64 0
  %693 = fcmp oge double %.11, %692
  %694 = select i1 %693, double %.11, double %692
  %695 = add nsw i64 %256, %.88181022
  %696 = icmp sge i64 %695, %257
  %697 = icmp sle i64 %695, %257
  %.in884 = select i1 %451, i1 %696, i1 %697
  br i1 %.in884, label %455, label %.loopexit922, !llvm.loop !25

698:                                              ; preds = %448
  store i64 %257, ptr %13, align 8, !tbaa !5
  %699 = icmp slt i64 %256, 0
  %invariant.gep1051 = getelementptr i8, ptr %28, i64 32
  %.in8741053 = select i1 %699, i1 %275, i1 %276
  br i1 %.in8741053, label %.lr.ph1057, label %.loopexit922

.lr.ph1057:                                       ; preds = %698
  %700 = getelementptr inbounds i8, ptr %23, i64 8
  %701 = getelementptr %struct.doublecomplex, ptr %28, i64 %.2792
  %702 = getelementptr inbounds i8, ptr %16, i64 8
  %703 = getelementptr inbounds i8, ptr %21, i64 8
  %704 = getelementptr inbounds i8, ptr %18, i64 8
  br label %705

705:                                              ; preds = %.lr.ph1057, %940
  %.121055 = phi double [ %.1797, %.lr.ph1057 ], [ %951, %940 ]
  %.98191054 = phi i64 [ %.2, %.lr.ph1057 ], [ %952, %940 ]
  %706 = getelementptr inbounds %struct.doublecomplex, ptr %29, i64 %.98191054
  %707 = load double, ptr %706, align 8, !tbaa !14
  store double %707, ptr %15, align 8, !tbaa !9
  %708 = call double @d_imag(ptr noundef nonnull %706) #6
  %709 = insertelement <2 x double> poison, double %707, i64 0
  %710 = insertelement <2 x double> %709, double %708, i64 1
  %711 = fcmp oge <2 x double> %710, zeroinitializer
  %712 = fneg <2 x double> %710
  %713 = select <2 x i1> %711, <2 x double> %710, <2 x double> %712
  %shift1176 = shufflevector <2 x double> %713, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %714 = fadd <2 x double> %713, %shift1176
  %715 = extractelement <2 x double> %714, i64 0
  %716 = load double, ptr %22, align 8, !tbaa !9
  store double %716, ptr %23, align 16, !tbaa !14
  store double 0.000000e+00, ptr %700, align 8, !tbaa !21
  %717 = fcmp oge double %.121055, 1.000000e+00
  %718 = select i1 %717, double %.121055, double 1.000000e+00
  %719 = fdiv double 1.000000e+00, %718
  store double %719, ptr %19, align 8, !tbaa !9
  %720 = getelementptr inbounds double, ptr %30, i64 %.98191054
  %721 = load double, ptr %720, align 8, !tbaa !9
  %722 = load double, ptr %24, align 8, !tbaa !9
  %723 = fsub double %722, %715
  %724 = fmul double %719, %723
  %725 = fcmp ogt double %721, %724
  br i1 %725, label %726, label %764

726:                                              ; preds = %705
  %727 = fmul double %719, 5.000000e-01
  store double %727, ptr %19, align 8, !tbaa !9
  %728 = insertelement <2 x double> <double poison, double 0.000000e+00>, double %716, i64 0
  br i1 %.not857, label %737, label %729

729:                                              ; preds = %726
  %730 = mul nsw i64 %.98191054, %26
  %731 = getelementptr %struct.doublecomplex, ptr %701, i64 %730
  call void @d_cnjg(ptr noundef nonnull %17, ptr noundef %731) #6
  %732 = load double, ptr %22, align 8, !tbaa !9
  %733 = load <2 x double>, ptr %17, align 16, !tbaa !9
  %734 = insertelement <2 x double> poison, double %732, i64 0
  %735 = shufflevector <2 x double> %734, <2 x double> poison, <2 x i32> zeroinitializer
  %736 = fmul <2 x double> %735, %733
  store <2 x double> %736, ptr %16, align 16, !tbaa !9
  br label %737

737:                                              ; preds = %726, %729
  %738 = phi <2 x double> [ %736, %729 ], [ %728, %726 ]
  store <2 x double> %738, ptr %21, align 16, !tbaa !9
  %739 = extractelement <2 x double> %738, i64 0
  %740 = fcmp oge double %739, 0.000000e+00
  %741 = fneg double %739
  %742 = select i1 %740, double %739, double %741
  %743 = call double @d_imag(ptr noundef nonnull %21) #6
  %744 = fcmp oge double %743, 0.000000e+00
  %745 = fneg double %743
  %746 = select i1 %744, double %743, double %745
  %747 = fadd double %742, %746
  %748 = fcmp ogt double %747, 1.000000e+00
  br i1 %748, label %749, label %755

749:                                              ; preds = %737
  store double 1.000000e+00, ptr %15, align 8, !tbaa !9
  %750 = load double, ptr %19, align 8, !tbaa !9
  %751 = fmul double %747, %750
  %752 = fcmp oge double %751, 1.000000e+00
  %753 = select i1 %752, double 1.000000e+00, double %751
  store double %753, ptr %19, align 8, !tbaa !9
  call void @zladiv_(ptr noundef nonnull %16, ptr noundef nonnull %23, ptr noundef nonnull %21) #6
  %754 = load <2 x double>, ptr %16, align 16, !tbaa !9
  store <2 x double> %754, ptr %23, align 16, !tbaa !9
  br label %755

755:                                              ; preds = %749, %737
  %756 = load double, ptr %19, align 8, !tbaa !9
  %757 = fcmp olt double %756, 1.000000e+00
  br i1 %757, label %758, label %764

758:                                              ; preds = %755
  %759 = call i32 @f2c_zdscal(ptr noundef nonnull %4, ptr noundef nonnull %19, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #6
  %760 = load double, ptr %19, align 8, !tbaa !9
  %761 = load double, ptr %9, align 8, !tbaa !9
  %762 = fmul double %760, %761
  store double %762, ptr %9, align 8, !tbaa !9
  %763 = fmul double %.121055, %760
  br label %764

764:                                              ; preds = %755, %758, %705
  %.13 = phi double [ %763, %758 ], [ %.121055, %755 ], [ %.121055, %705 ]
  %765 = load double, ptr %23, align 16, !tbaa !14
  %766 = fcmp oeq double %765, 1.000000e+00
  %767 = load double, ptr %700, align 8
  %768 = fcmp oeq double %767, 0.000000e+00
  %or.cond5 = select i1 %766, i1 %768, i1 false
  %769 = load i64, ptr %5, align 8, !tbaa !5
  br i1 %or.cond5, label %770, label %791

770:                                              ; preds = %764
  br i1 %.not.not.not, label %782, label %771

771:                                              ; preds = %770
  %772 = add nsw i64 %.98191054, -1
  %773 = call i64 @llvm.smin.i64(i64 %769, i64 %772)
  store i64 %773, ptr %20, align 8, !tbaa !5
  %774 = add nsw i64 %769, 1
  %775 = sub i64 %774, %773
  %776 = mul nsw i64 %.98191054, %26
  %777 = getelementptr %struct.doublecomplex, ptr %28, i64 %775
  %778 = getelementptr %struct.doublecomplex, ptr %777, i64 %776
  %779 = sub nsw i64 %.98191054, %773
  %780 = getelementptr inbounds %struct.doublecomplex, ptr %29, i64 %779
  call void @f2c_zdotc(ptr noundef nonnull %16, ptr noundef nonnull %20, ptr noundef %778, ptr noundef nonnull @c__1, ptr noundef nonnull %780, ptr noundef nonnull @c__1) #6
  %781 = load <2 x double>, ptr %16, align 16, !tbaa !9
  br label %.loopexit

782:                                              ; preds = %770
  %783 = load i64, ptr %4, align 8, !tbaa !5
  %784 = sub nsw i64 %783, %.98191054
  %785 = call i64 @llvm.smin.i64(i64 %769, i64 %784)
  store i64 %785, ptr %20, align 8, !tbaa !5
  %786 = icmp sgt i64 %785, 1
  br i1 %786, label %787, label %.loopexit

787:                                              ; preds = %782
  %788 = mul nsw i64 %.98191054, %26
  %gep1052 = getelementptr %struct.doublecomplex, ptr %invariant.gep1051, i64 %788
  %789 = getelementptr %struct.doublecomplex, ptr %8, i64 %.98191054
  call void @f2c_zdotc(ptr noundef nonnull %16, ptr noundef nonnull %20, ptr noundef %gep1052, ptr noundef nonnull @c__1, ptr noundef %789, ptr noundef nonnull @c__1) #6
  %790 = load <2 x double>, ptr %16, align 16, !tbaa !9
  br label %.loopexit

791:                                              ; preds = %764
  br i1 %.not.not.not, label %827, label %792

792:                                              ; preds = %791
  %793 = add nsw i64 %.98191054, -1
  %794 = call i64 @llvm.smin.i64(i64 %769, i64 %793)
  store i64 %794, ptr %20, align 8, !tbaa !5
  store i64 %794, ptr %14, align 8, !tbaa !5
  %.not8791026 = icmp slt i64 %794, 1
  br i1 %.not8791026, label %.loopexit, label %.lr.ph1031

.lr.ph1031:                                       ; preds = %792
  %795 = mul nsw i64 %.98191054, %26
  %invariant.gep1034 = getelementptr %struct.doublecomplex, ptr %28, i64 %795
  br label %796

796:                                              ; preds = %.lr.ph1031, %796
  %797 = phi i64 [ %794, %.lr.ph1031 ], [ %811, %796 ]
  %.48241027 = phi i64 [ 1, %.lr.ph1031 ], [ %825, %796 ]
  %798 = phi <2 x double> [ zeroinitializer, %.lr.ph1031 ], [ %824, %796 ]
  %799 = load i64, ptr %5, align 8, !tbaa !5
  %800 = add nsw i64 %799, %.48241027
  %801 = sub i64 %800, %797
  %gep1035 = getelementptr %struct.doublecomplex, ptr %invariant.gep1034, i64 %801
  call void @d_cnjg(ptr noundef nonnull %18, ptr noundef %gep1035) #6
  %802 = load double, ptr %18, align 8, !tbaa !14
  %803 = load double, ptr %23, align 16, !tbaa !14
  %804 = load double, ptr %704, align 8, !tbaa !21
  %805 = load double, ptr %700, align 8, !tbaa !21
  %806 = fneg double %804
  %807 = fmul double %805, %806
  %808 = call double @llvm.fmuladd.f64(double %802, double %803, double %807)
  %809 = fmul double %803, %804
  %810 = call double @llvm.fmuladd.f64(double %802, double %805, double %809)
  %811 = load i64, ptr %20, align 8, !tbaa !5
  %812 = xor i64 %811, -1
  %813 = getelementptr %struct.doublecomplex, ptr %706, i64 %812
  %814 = getelementptr %struct.doublecomplex, ptr %813, i64 %.48241027
  %815 = fneg double %810
  %816 = load <2 x double>, ptr %814, align 8, !tbaa !9
  %817 = insertelement <2 x double> poison, double %810, i64 0
  %818 = insertelement <2 x double> %817, double %815, i64 1
  %819 = fmul <2 x double> %816, %818
  %820 = shufflevector <2 x double> %819, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %821 = insertelement <2 x double> poison, double %808, i64 0
  %822 = shufflevector <2 x double> %821, <2 x double> poison, <2 x i32> zeroinitializer
  %823 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %822, <2 x double> %816, <2 x double> %820)
  store <2 x double> %823, ptr %17, align 16, !tbaa !9
  %824 = fadd <2 x double> %798, %823
  store <2 x double> %824, ptr %16, align 16, !tbaa !9
  %825 = add nuw nsw i64 %.48241027, 1
  %826 = load i64, ptr %14, align 8, !tbaa !5
  %.not879.not = icmp slt i64 %.48241027, %826
  br i1 %.not879.not, label %796, label %.loopexit, !llvm.loop !26

827:                                              ; preds = %791
  %828 = load i64, ptr %4, align 8, !tbaa !5
  %829 = sub nsw i64 %828, %.98191054
  %830 = call i64 @llvm.smin.i64(i64 %769, i64 %829)
  store i64 %830, ptr %20, align 8, !tbaa !5
  store i64 %830, ptr %14, align 8, !tbaa !5
  %.not8771036 = icmp slt i64 %830, 1
  br i1 %.not8771036, label %.loopexit, label %.lr.ph1041

.lr.ph1041:                                       ; preds = %827
  %831 = mul nsw i64 %.98191054, %26
  %invariant.gep1044 = getelementptr %struct.doublecomplex, ptr %28, i64 %831
  br label %832

832:                                              ; preds = %.lr.ph1041, %832
  %.58251037 = phi i64 [ 1, %.lr.ph1041 ], [ %834, %832 ]
  %833 = phi <2 x double> [ zeroinitializer, %.lr.ph1041 ], [ %854, %832 ]
  %834 = add nuw nsw i64 %.58251037, 1
  %gep1045 = getelementptr %struct.doublecomplex, ptr %invariant.gep1044, i64 %834
  call void @d_cnjg(ptr noundef nonnull %18, ptr noundef %gep1045) #6
  %835 = load double, ptr %18, align 8, !tbaa !14
  %836 = load double, ptr %23, align 16, !tbaa !14
  %837 = load double, ptr %704, align 8, !tbaa !21
  %838 = load double, ptr %700, align 8, !tbaa !21
  %839 = fneg double %837
  %840 = fmul double %838, %839
  %841 = call double @llvm.fmuladd.f64(double %835, double %836, double %840)
  %842 = fmul double %836, %837
  %843 = call double @llvm.fmuladd.f64(double %835, double %838, double %842)
  %844 = getelementptr %struct.doublecomplex, ptr %706, i64 %.58251037
  %845 = fneg double %843
  %846 = load <2 x double>, ptr %844, align 8, !tbaa !9
  %847 = insertelement <2 x double> poison, double %843, i64 0
  %848 = insertelement <2 x double> %847, double %845, i64 1
  %849 = fmul <2 x double> %846, %848
  %850 = shufflevector <2 x double> %849, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %851 = insertelement <2 x double> poison, double %841, i64 0
  %852 = shufflevector <2 x double> %851, <2 x double> poison, <2 x i32> zeroinitializer
  %853 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %852, <2 x double> %846, <2 x double> %850)
  store <2 x double> %853, ptr %17, align 16, !tbaa !9
  %854 = fadd <2 x double> %833, %853
  store <2 x double> %854, ptr %16, align 16, !tbaa !9
  %855 = load i64, ptr %14, align 8, !tbaa !5
  %.not877.not = icmp slt i64 %.58251037, %855
  br i1 %.not877.not, label %832, label %.loopexit, !llvm.loop !27

.loopexit:                                        ; preds = %796, %832, %792, %827, %771, %787, %782
  %856 = phi <2 x double> [ %781, %771 ], [ %790, %787 ], [ zeroinitializer, %782 ], [ zeroinitializer, %827 ], [ zeroinitializer, %792 ], [ %854, %832 ], [ %824, %796 ]
  %857 = load double, ptr %22, align 8, !tbaa !9
  store double %857, ptr %16, align 16, !tbaa !14
  store double 0.000000e+00, ptr %702, align 8, !tbaa !21
  %858 = load double, ptr %23, align 16, !tbaa !14
  %859 = fcmp oeq double %858, %857
  %860 = load double, ptr %700, align 8
  %861 = fcmp oeq double %860, 0.000000e+00
  %or.cond907 = select i1 %859, i1 %861, i1 false
  br i1 %or.cond907, label %862, label %935

862:                                              ; preds = %.loopexit
  %863 = load <2 x double>, ptr %706, align 8, !tbaa !9
  %864 = fsub <2 x double> %863, %856
  store <2 x double> %864, ptr %16, align 16, !tbaa !9
  store <2 x double> %864, ptr %706, align 8, !tbaa !9
  %865 = extractelement <2 x double> %864, i64 0
  %866 = fcmp oge double %865, 0.000000e+00
  %867 = fneg double %865
  %868 = select i1 %866, double %865, double %867
  %869 = call double @d_imag(ptr noundef nonnull %706) #6
  %870 = fcmp oge double %869, 0.000000e+00
  %871 = fneg double %869
  %872 = select i1 %870, double %869, double %871
  %873 = fadd double %868, %872
  br i1 %.not857, label %883, label %874

874:                                              ; preds = %862
  %875 = mul nsw i64 %.98191054, %26
  %876 = getelementptr %struct.doublecomplex, ptr %701, i64 %875
  call void @d_cnjg(ptr noundef nonnull %17, ptr noundef %876) #6
  %877 = load double, ptr %22, align 8, !tbaa !9
  %878 = load <2 x double>, ptr %17, align 16, !tbaa !9
  %879 = insertelement <2 x double> poison, double %877, i64 0
  %880 = shufflevector <2 x double> %879, <2 x double> poison, <2 x i32> zeroinitializer
  %881 = fmul <2 x double> %880, %878
  store <2 x double> %881, ptr %16, align 16, !tbaa !9
  store <2 x double> %881, ptr %21, align 16, !tbaa !9
  %882 = extractelement <2 x double> %881, i64 0
  br label %886

883:                                              ; preds = %862
  %884 = load double, ptr %22, align 8, !tbaa !9
  store double %884, ptr %21, align 16, !tbaa !14
  store double 0.000000e+00, ptr %703, align 8, !tbaa !21
  %885 = fcmp oeq double %884, 1.000000e+00
  br i1 %885, label %940, label %886

886:                                              ; preds = %883, %874
  %887 = phi double [ %884, %883 ], [ %882, %874 ]
  store double %887, ptr %15, align 8, !tbaa !9
  %888 = call double @d_imag(ptr noundef nonnull %21) #6
  %889 = insertelement <2 x double> poison, double %887, i64 0
  %890 = insertelement <2 x double> %889, double %888, i64 1
  %891 = fcmp oge <2 x double> %890, zeroinitializer
  %892 = fneg <2 x double> %890
  %893 = select <2 x i1> %891, <2 x double> %890, <2 x double> %892
  %shift1177 = shufflevector <2 x double> %893, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %894 = fadd <2 x double> %893, %shift1177
  %895 = extractelement <2 x double> %894, i64 0
  %896 = load double, ptr %25, align 8, !tbaa !9
  %897 = fcmp ogt double %895, %896
  br i1 %897, label %898, label %915

898:                                              ; preds = %886
  %899 = fcmp olt double %895, 1.000000e+00
  br i1 %899, label %900, label %911

900:                                              ; preds = %898
  %901 = load double, ptr %24, align 8, !tbaa !9
  %902 = fmul double %895, %901
  %903 = fcmp ogt double %873, %902
  br i1 %903, label %904, label %911

904:                                              ; preds = %900
  %905 = fdiv double 1.000000e+00, %873
  store double %905, ptr %19, align 8, !tbaa !9
  %906 = call i32 @f2c_zdscal(ptr noundef nonnull %4, ptr noundef nonnull %19, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #6
  %907 = load double, ptr %19, align 8, !tbaa !9
  %908 = load double, ptr %9, align 8, !tbaa !9
  %909 = fmul double %907, %908
  store double %909, ptr %9, align 8, !tbaa !9
  %910 = fmul double %.13, %907
  br label %911

911:                                              ; preds = %900, %904, %898
  %.14 = phi double [ %910, %904 ], [ %.13, %900 ], [ %.13, %898 ]
  store i64 %.98191054, ptr %14, align 8, !tbaa !5
  call void @zladiv_(ptr noundef nonnull %16, ptr noundef nonnull %706, ptr noundef nonnull %21) #6
  %912 = load i64, ptr %14, align 8, !tbaa !5
  %913 = getelementptr inbounds %struct.doublecomplex, ptr %29, i64 %912
  %914 = load <2 x double>, ptr %16, align 16, !tbaa !9
  store <2 x double> %914, ptr %913, align 8, !tbaa !9
  br label %940

915:                                              ; preds = %886
  %916 = fcmp ogt double %895, 0.000000e+00
  br i1 %916, label %917, label %932

917:                                              ; preds = %915
  %918 = load double, ptr %24, align 8, !tbaa !9
  %919 = fmul double %895, %918
  %920 = fcmp ogt double %873, %919
  br i1 %920, label %921, label %928

921:                                              ; preds = %917
  %922 = fdiv double %919, %873
  store double %922, ptr %19, align 8, !tbaa !9
  %923 = call i32 @f2c_zdscal(ptr noundef nonnull %4, ptr noundef nonnull %19, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #6
  %924 = load double, ptr %19, align 8, !tbaa !9
  %925 = load double, ptr %9, align 8, !tbaa !9
  %926 = fmul double %924, %925
  store double %926, ptr %9, align 8, !tbaa !9
  %927 = fmul double %.13, %924
  br label %928

928:                                              ; preds = %921, %917
  %.15 = phi double [ %927, %921 ], [ %.13, %917 ]
  store i64 %.98191054, ptr %14, align 8, !tbaa !5
  call void @zladiv_(ptr noundef nonnull %16, ptr noundef nonnull %706, ptr noundef nonnull %21) #6
  %929 = load i64, ptr %14, align 8, !tbaa !5
  %930 = getelementptr inbounds %struct.doublecomplex, ptr %29, i64 %929
  %931 = load <2 x double>, ptr %16, align 16, !tbaa !9
  store <2 x double> %931, ptr %930, align 8, !tbaa !9
  br label %940

932:                                              ; preds = %915
  %933 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %933, ptr %14, align 8, !tbaa !5
  %.not8831046 = icmp slt i64 %933, 1
  br i1 %.not8831046, label %._crit_edge1050, label %.lr.ph1049.preheader

.lr.ph1049.preheader:                             ; preds = %932
  %934 = shl nuw i64 %933, 4
  call void @llvm.memset.p0.i64(ptr nonnull align 8 %8, i8 0, i64 %934, i1 false), !tbaa !9
  br label %._crit_edge1050

._crit_edge1050:                                  ; preds = %.lr.ph1049.preheader, %932
  store <2 x double> <double 1.000000e+00, double 0.000000e+00>, ptr %706, align 8, !tbaa !9
  store double 0.000000e+00, ptr %9, align 8, !tbaa !9
  br label %940

935:                                              ; preds = %.loopexit
  store i64 %.98191054, ptr %14, align 8, !tbaa !5
  call void @zladiv_(ptr noundef nonnull %17, ptr noundef nonnull %706, ptr noundef nonnull %21) #6
  %936 = load <2 x double>, ptr %17, align 16, !tbaa !9
  %937 = fsub <2 x double> %936, %856
  store <2 x double> %937, ptr %16, align 16, !tbaa !9
  %938 = load i64, ptr %14, align 8, !tbaa !5
  %939 = getelementptr inbounds %struct.doublecomplex, ptr %29, i64 %938
  store <2 x double> %937, ptr %939, align 8, !tbaa !9
  br label %940

940:                                              ; preds = %883, %928, %._crit_edge1050, %911, %935
  %.16 = phi double [ %.14, %911 ], [ %.15, %928 ], [ 0.000000e+00, %._crit_edge1050 ], [ %.13, %883 ], [ %.13, %935 ]
  store i64 %.98191054, ptr %14, align 8, !tbaa !5
  %941 = load double, ptr %706, align 8, !tbaa !14
  store double %941, ptr %15, align 8, !tbaa !9
  %942 = call double @d_imag(ptr noundef nonnull %706) #6
  %943 = insertelement <2 x double> poison, double %941, i64 0
  %944 = insertelement <2 x double> %943, double %942, i64 1
  %945 = fcmp oge <2 x double> %944, zeroinitializer
  %946 = fneg <2 x double> %944
  %947 = select <2 x i1> %945, <2 x double> %944, <2 x double> %946
  %shift1178 = shufflevector <2 x double> %947, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %948 = fadd <2 x double> %947, %shift1178
  %949 = extractelement <2 x double> %948, i64 0
  %950 = fcmp oge double %.16, %949
  %951 = select i1 %950, double %.16, double %949
  %952 = add nsw i64 %.98191054, %256
  %953 = icmp sge i64 %952, %257
  %954 = icmp sle i64 %952, %257
  %.in874 = select i1 %699, i1 %953, i1 %954
  br i1 %.in874, label %705, label %.loopexit922, !llvm.loop !28

.loopexit922:                                     ; preds = %444, %683, %940, %277, %450, %698
  %955 = load double, ptr %22, align 8, !tbaa !9
  %956 = load double, ptr %9, align 8, !tbaa !9
  %957 = fdiv double %956, %955
  store double %957, ptr %9, align 8, !tbaa !9
  br label %958

958:                                              ; preds = %.loopexit922, %262
  %959 = phi double [ %955, %.loopexit922 ], [ %.pr915, %262 ]
  %960 = fcmp une double %959, 1.000000e+00
  br i1 %960, label %961, label %964

961:                                              ; preds = %958
  %962 = fdiv double 1.000000e+00, %959
  store double %962, ptr %15, align 8, !tbaa !9
  %963 = call i32 @f2c_dscal(ptr noundef nonnull %4, ptr noundef nonnull %15, ptr noundef %10, ptr noundef nonnull @c__1) #6
  br label %964

964:                                              ; preds = %958, %961, %60, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #6
  ret i32 0
}

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

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

declare i64 @f2c_idamax(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare double @d_imag(ptr noundef) local_unnamed_addr #2

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

declare i32 @f2c_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 i32 @f2c_zaxpy(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare i64 @f2c_izamax(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!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,MergedLoadStoreMotionPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass