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

; 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 [11 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [13 x i8], align 1

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

61:                                               ; preds = %11
  %62 = load ptr, ptr %12, align 8, !tbaa !5
  %63 = load i32, ptr %62, align 4, !tbaa !9
  %64 = call i32 @ilatrans_(ptr noundef @.str.1)
  %65 = icmp eq i32 %63, %64
  br i1 %65, label %72, label %66

66:                                               ; preds = %61
  %67 = load ptr, ptr %12, align 8, !tbaa !5
  %68 = load i32, ptr %67, align 4, !tbaa !9
  %69 = call i32 @ilatrans_(ptr noundef @.str.2)
  %70 = icmp eq i32 %68, %69
  br i1 %70, label %72, label %71

71:                                               ; preds = %66
  store i32 1, ptr %30, align 4, !tbaa !9
  br label %111

72:                                               ; preds = %66, %61, %11
  %73 = load ptr, ptr %13, align 8, !tbaa !5
  %74 = load i32, ptr %73, align 4, !tbaa !9
  %75 = icmp slt i32 %74, 0
  br i1 %75, label %76, label %77

76:                                               ; preds = %72
  store i32 2, ptr %30, align 4, !tbaa !9
  br label %110

77:                                               ; preds = %72
  %78 = load ptr, ptr %14, align 8, !tbaa !5
  %79 = load i32, ptr %78, align 4, !tbaa !9
  %80 = icmp slt i32 %79, 0
  br i1 %80, label %81, label %82

81:                                               ; preds = %77
  store i32 3, ptr %30, align 4, !tbaa !9
  br label %109

82:                                               ; preds = %77
  %83 = load ptr, ptr %17, align 8, !tbaa !5
  %84 = load i32, ptr %83, align 4, !tbaa !9
  %85 = load ptr, ptr %13, align 8, !tbaa !5
  %86 = load i32, ptr %85, align 4, !tbaa !9
  %87 = icmp sge i32 1, %86
  br i1 %87, label %88, label %89

88:                                               ; preds = %82
  br label %92

89:                                               ; preds = %82
  %90 = load ptr, ptr %13, align 8, !tbaa !5
  %91 = load i32, ptr %90, align 4, !tbaa !9
  br label %92

92:                                               ; preds = %89, %88
  %93 = phi i32 [ 1, %88 ], [ %91, %89 ]
  %94 = icmp slt i32 %84, %93
  br i1 %94, label %95, label %96

95:                                               ; preds = %92
  store i32 6, ptr %30, align 4, !tbaa !9
  br label %108

96:                                               ; preds = %92
  %97 = load ptr, ptr %19, align 8, !tbaa !5
  %98 = load i32, ptr %97, align 4, !tbaa !9
  %99 = icmp eq i32 %98, 0
  br i1 %99, label %100, label %101

100:                                              ; preds = %96
  store i32 8, ptr %30, align 4, !tbaa !9
  br label %107

101:                                              ; preds = %96
  %102 = load ptr, ptr %22, align 8, !tbaa !5
  %103 = load i32, ptr %102, align 4, !tbaa !9
  %104 = icmp eq i32 %103, 0
  br i1 %104, label %105, label %106

105:                                              ; preds = %101
  store i32 11, ptr %30, align 4, !tbaa !9
  br label %106

106:                                              ; preds = %105, %101
  br label %107

107:                                              ; preds = %106, %100
  br label %108

108:                                              ; preds = %107, %95
  br label %109

109:                                              ; preds = %108, %81
  br label %110

110:                                              ; preds = %109, %76
  br label %111

111:                                              ; preds = %110, %71
  %112 = load i32, ptr %30, align 4, !tbaa !9
  %113 = icmp ne i32 %112, 0
  br i1 %113, label %114, label %116

114:                                              ; preds = %111
  %115 = call i32 @xerbla_(ptr noundef @.str.3, ptr noundef %30, i32 noundef 10)
  store i32 1, ptr %42, align 4
  br label %1087

116:                                              ; preds = %111
  %117 = load ptr, ptr %13, align 8, !tbaa !5
  %118 = load i32, ptr %117, align 4, !tbaa !9
  %119 = icmp eq i32 %118, 0
  br i1 %119, label %132, label %120

120:                                              ; preds = %116
  %121 = load ptr, ptr %14, align 8, !tbaa !5
  %122 = load i32, ptr %121, align 4, !tbaa !9
  %123 = icmp eq i32 %122, 0
  br i1 %123, label %132, label %124

124:                                              ; preds = %120
  %125 = load ptr, ptr %15, align 8, !tbaa !5
  %126 = load double, ptr %125, align 8, !tbaa !11
  %127 = fcmp oeq double %126, 0.000000e+00
  br i1 %127, label %128, label %133

128:                                              ; preds = %124
  %129 = load ptr, ptr %20, align 8, !tbaa !5
  %130 = load double, ptr %129, align 8, !tbaa !11
  %131 = fcmp oeq double %130, 1.000000e+00
  br i1 %131, label %132, label %133

132:                                              ; preds = %128, %120, %116
  store i32 1, ptr %42, align 4
  br label %1087

133:                                              ; preds = %128, %124
  %134 = load ptr, ptr %12, align 8, !tbaa !5
  %135 = load i32, ptr %134, align 4, !tbaa !9
  %136 = call i32 @ilatrans_(ptr noundef @.str)
  %137 = icmp eq i32 %135, %136
  br i1 %137, label %138, label %143

138:                                              ; preds = %133
  %139 = load ptr, ptr %14, align 8, !tbaa !5
  %140 = load i32, ptr %139, align 4, !tbaa !9
  store i32 %140, ptr %32, align 4, !tbaa !9
  %141 = load ptr, ptr %13, align 8, !tbaa !5
  %142 = load i32, ptr %141, align 4, !tbaa !9
  store i32 %142, ptr %33, align 4, !tbaa !9
  br label %148

143:                                              ; preds = %133
  %144 = load ptr, ptr %13, align 8, !tbaa !5
  %145 = load i32, ptr %144, align 4, !tbaa !9
  store i32 %145, ptr %32, align 4, !tbaa !9
  %146 = load ptr, ptr %14, align 8, !tbaa !5
  %147 = load i32, ptr %146, align 4, !tbaa !9
  store i32 %147, ptr %33, align 4, !tbaa !9
  br label %148

148:                                              ; preds = %143, %138
  %149 = load ptr, ptr %19, align 8, !tbaa !5
  %150 = load i32, ptr %149, align 4, !tbaa !9
  %151 = icmp sgt i32 %150, 0
  br i1 %151, label %152, label %153

152:                                              ; preds = %148
  store i32 1, ptr %40, align 4, !tbaa !9
  br label %160

153:                                              ; preds = %148
  %154 = load i32, ptr %32, align 4, !tbaa !9
  %155 = sub nsw i32 %154, 1
  %156 = load ptr, ptr %19, align 8, !tbaa !5
  %157 = load i32, ptr %156, align 4, !tbaa !9
  %158 = mul nsw i32 %155, %157
  %159 = sub nsw i32 1, %158
  store i32 %159, ptr %40, align 4, !tbaa !9
  br label %160

160:                                              ; preds = %153, %152
  %161 = load ptr, ptr %22, align 8, !tbaa !5
  %162 = load i32, ptr %161, align 4, !tbaa !9
  %163 = icmp sgt i32 %162, 0
  br i1 %163, label %164, label %165

164:                                              ; preds = %160
  store i32 1, ptr %41, align 4, !tbaa !9
  br label %172

165:                                              ; preds = %160
  %166 = load i32, ptr %33, align 4, !tbaa !9
  %167 = sub nsw i32 %166, 1
  %168 = load ptr, ptr %22, align 8, !tbaa !5
  %169 = load i32, ptr %168, align 4, !tbaa !9
  %170 = mul nsw i32 %167, %169
  %171 = sub nsw i32 1, %170
  store i32 %171, ptr %41, align 4, !tbaa !9
  br label %172

172:                                              ; preds = %165, %164
  %173 = call double @dlamch_(ptr noundef @.str.4)
  store double %173, ptr %34, align 8, !tbaa !11
  %174 = load ptr, ptr %14, align 8, !tbaa !5
  %175 = load i32, ptr %174, align 4, !tbaa !9
  %176 = add nsw i32 %175, 1
  %177 = sitofp i32 %176 to double
  %178 = load double, ptr %34, align 8, !tbaa !11
  %179 = fmul double %177, %178
  store double %179, ptr %34, align 8, !tbaa !11
  %180 = load i32, ptr %41, align 4, !tbaa !9
  store i32 %180, ptr %38, align 4, !tbaa !9
  %181 = load ptr, ptr %19, align 8, !tbaa !5
  %182 = load i32, ptr %181, align 4, !tbaa !9
  %183 = icmp eq i32 %182, 1
  br i1 %183, label %184, label %630

184:                                              ; preds = %172
  %185 = load ptr, ptr %12, align 8, !tbaa !5
  %186 = load i32, ptr %185, align 4, !tbaa !9
  %187 = call i32 @ilatrans_(ptr noundef @.str)
  %188 = icmp eq i32 %186, %187
  br i1 %188, label %189, label %409

189:                                              ; preds = %184
  %190 = load i32, ptr %33, align 4, !tbaa !9
  store i32 %190, ptr %25, align 4, !tbaa !9
  store i32 1, ptr %35, align 4, !tbaa !9
  br label %191

191:                                              ; preds = %405, %189
  %192 = load i32, ptr %35, align 4, !tbaa !9
  %193 = load i32, ptr %25, align 4, !tbaa !9
  %194 = icmp sle i32 %192, %193
  br i1 %194, label %195, label %408

195:                                              ; preds = %191
  %196 = load ptr, ptr %20, align 8, !tbaa !5
  %197 = load double, ptr %196, align 8, !tbaa !11
  %198 = fcmp oeq double %197, 0.000000e+00
  br i1 %198, label %199, label %204

199:                                              ; preds = %195
  store i32 1, ptr %37, align 4, !tbaa !9
  %200 = load ptr, ptr %21, align 8, !tbaa !5
  %201 = load i32, ptr %38, align 4, !tbaa !9
  %202 = sext i32 %201 to i64
  %203 = getelementptr inbounds double, ptr %200, i64 %202
  store double 0.000000e+00, ptr %203, align 8, !tbaa !11
  br label %235

204:                                              ; preds = %195
  %205 = load ptr, ptr %21, align 8, !tbaa !5
  %206 = load i32, ptr %38, align 4, !tbaa !9
  %207 = sext i32 %206 to i64
  %208 = getelementptr inbounds double, ptr %205, i64 %207
  %209 = load double, ptr %208, align 8, !tbaa !11
  %210 = fcmp oeq double %209, 0.000000e+00
  br i1 %210, label %211, label %212

211:                                              ; preds = %204
  store i32 1, ptr %37, align 4, !tbaa !9
  br label %234

212:                                              ; preds = %204
  store i32 0, ptr %37, align 4, !tbaa !9
  %213 = load ptr, ptr %20, align 8, !tbaa !5
  %214 = load double, ptr %213, align 8, !tbaa !11
  %215 = load ptr, ptr %21, align 8, !tbaa !5
  %216 = load i32, ptr %38, align 4, !tbaa !9
  %217 = sext i32 %216 to i64
  %218 = getelementptr inbounds double, ptr %215, i64 %217
  %219 = load double, ptr %218, align 8, !tbaa !11
  store double %219, ptr %28, align 8, !tbaa !11
  %220 = load double, ptr %28, align 8, !tbaa !11
  %221 = fcmp oge double %220, 0.000000e+00
  br i1 %221, label %222, label %224

222:                                              ; preds = %212
  %223 = load double, ptr %28, align 8, !tbaa !11
  br label %227

224:                                              ; preds = %212
  %225 = load double, ptr %28, align 8, !tbaa !11
  %226 = fneg double %225
  br label %227

227:                                              ; preds = %224, %222
  %228 = phi double [ %223, %222 ], [ %226, %224 ]
  %229 = fmul double %214, %228
  %230 = load ptr, ptr %21, align 8, !tbaa !5
  %231 = load i32, ptr %38, align 4, !tbaa !9
  %232 = sext i32 %231 to i64
  %233 = getelementptr inbounds double, ptr %230, i64 %232
  store double %229, ptr %233, align 8, !tbaa !11
  br label %234

234:                                              ; preds = %227, %211
  br label %235

235:                                              ; preds = %234, %199
  %236 = load ptr, ptr %15, align 8, !tbaa !5
  %237 = load double, ptr %236, align 8, !tbaa !11
  %238 = fcmp une double %237, 0.000000e+00
  br i1 %238, label %239, label %361

239:                                              ; preds = %235
  %240 = load i32, ptr %32, align 4, !tbaa !9
  store i32 %240, ptr %26, align 4, !tbaa !9
  store i32 1, ptr %36, align 4, !tbaa !9
  br label %241

241:                                              ; preds = %357, %239
  %242 = load i32, ptr %36, align 4, !tbaa !9
  %243 = load i32, ptr %26, align 4, !tbaa !9
  %244 = icmp sle i32 %242, %243
  br i1 %244, label %245, label %360

245:                                              ; preds = %241
  %246 = load i32, ptr %35, align 4, !tbaa !9
  %247 = load i32, ptr %36, align 4, !tbaa !9
  %248 = load i32, ptr %23, align 4, !tbaa !9
  %249 = mul nsw i32 %247, %248
  %250 = add nsw i32 %246, %249
  store i32 %250, ptr %27, align 4, !tbaa !9
  %251 = load ptr, ptr %16, align 8, !tbaa !5
  %252 = load i32, ptr %27, align 4, !tbaa !9
  %253 = sext i32 %252 to i64
  %254 = getelementptr inbounds %struct.doublecomplex, ptr %251, i64 %253
  %255 = getelementptr inbounds %struct.doublecomplex, ptr %254, i32 0, i32 0
  %256 = load double, ptr %255, align 8, !tbaa !13
  store double %256, ptr %28, align 8, !tbaa !11
  %257 = load double, ptr %28, align 8, !tbaa !11
  %258 = fcmp oge double %257, 0.000000e+00
  br i1 %258, label %259, label %261

259:                                              ; preds = %245
  %260 = load double, ptr %28, align 8, !tbaa !11
  br label %264

261:                                              ; preds = %245
  %262 = load double, ptr %28, align 8, !tbaa !11
  %263 = fneg double %262
  br label %264

264:                                              ; preds = %261, %259
  %265 = phi double [ %260, %259 ], [ %263, %261 ]
  %266 = load ptr, ptr %16, align 8, !tbaa !5
  %267 = load i32, ptr %35, align 4, !tbaa !9
  %268 = load i32, ptr %36, align 4, !tbaa !9
  %269 = load i32, ptr %23, align 4, !tbaa !9
  %270 = mul nsw i32 %268, %269
  %271 = add nsw i32 %267, %270
  %272 = sext i32 %271 to i64
  %273 = getelementptr inbounds %struct.doublecomplex, ptr %266, i64 %272
  %274 = call { double, double } @Cd(ptr noundef %273)
  %275 = extractvalue { double, double } %274, 0
  %276 = extractvalue { double, double } %274, 1
  store double %276, ptr %29, align 8, !tbaa !11
  %277 = load double, ptr %29, align 8, !tbaa !11
  %278 = fcmp oge double %277, 0.000000e+00
  br i1 %278, label %279, label %281

279:                                              ; preds = %264
  %280 = load double, ptr %29, align 8, !tbaa !11
  br label %284

281:                                              ; preds = %264
  %282 = load double, ptr %29, align 8, !tbaa !11
  %283 = fneg double %282
  br label %284

284:                                              ; preds = %281, %279
  %285 = phi double [ %280, %279 ], [ %283, %281 ]
  %286 = fadd double %265, %285
  store double %286, ptr %31, align 8, !tbaa !11
  %287 = load i32, ptr %36, align 4, !tbaa !9
  store i32 %287, ptr %27, align 4, !tbaa !9
  %288 = load i32, ptr %37, align 4, !tbaa !9
  %289 = icmp ne i32 %288, 0
  br i1 %289, label %290, label %311

290:                                              ; preds = %284
  %291 = load ptr, ptr %18, align 8, !tbaa !5
  %292 = load i32, ptr %27, align 4, !tbaa !9
  %293 = sext i32 %292 to i64
  %294 = getelementptr inbounds %struct.doublecomplex, ptr %291, i64 %293
  %295 = getelementptr inbounds %struct.doublecomplex, ptr %294, i32 0, i32 0
  %296 = load double, ptr %295, align 8, !tbaa !13
  %297 = fcmp oeq double %296, 0.000000e+00
  br i1 %297, label %298, label %306

298:                                              ; preds = %290
  %299 = load ptr, ptr %18, align 8, !tbaa !5
  %300 = load i32, ptr %27, align 4, !tbaa !9
  %301 = sext i32 %300 to i64
  %302 = getelementptr inbounds %struct.doublecomplex, ptr %299, i64 %301
  %303 = getelementptr inbounds %struct.doublecomplex, ptr %302, i32 0, i32 1
  %304 = load double, ptr %303, align 8, !tbaa !15
  %305 = fcmp oeq double %304, 0.000000e+00
  br i1 %305, label %309, label %306

306:                                              ; preds = %298, %290
  %307 = load double, ptr %31, align 8, !tbaa !11
  %308 = fcmp oeq double %307, 0.000000e+00
  br label %309

309:                                              ; preds = %306, %298
  %310 = phi i1 [ true, %298 ], [ %308, %306 ]
  br label %311

311:                                              ; preds = %309, %284
  %312 = phi i1 [ false, %284 ], [ %310, %309 ]
  %313 = zext i1 %312 to i32
  store i32 %313, ptr %37, align 4, !tbaa !9
  %314 = load i32, ptr %36, align 4, !tbaa !9
  store i32 %314, ptr %27, align 4, !tbaa !9
  %315 = load ptr, ptr %15, align 8, !tbaa !5
  %316 = load double, ptr %315, align 8, !tbaa !11
  %317 = load ptr, ptr %18, align 8, !tbaa !5
  %318 = load i32, ptr %27, align 4, !tbaa !9
  %319 = sext i32 %318 to i64
  %320 = getelementptr inbounds %struct.doublecomplex, ptr %317, i64 %319
  %321 = getelementptr inbounds %struct.doublecomplex, ptr %320, i32 0, i32 0
  %322 = load double, ptr %321, align 8, !tbaa !13
  store double %322, ptr %28, align 8, !tbaa !11
  %323 = load double, ptr %28, align 8, !tbaa !11
  %324 = fcmp oge double %323, 0.000000e+00
  br i1 %324, label %325, label %327

325:                                              ; preds = %311
  %326 = load double, ptr %28, align 8, !tbaa !11
  br label %330

327:                                              ; preds = %311
  %328 = load double, ptr %28, align 8, !tbaa !11
  %329 = fneg double %328
  br label %330

330:                                              ; preds = %327, %325
  %331 = phi double [ %326, %325 ], [ %329, %327 ]
  %332 = load ptr, ptr %18, align 8, !tbaa !5
  %333 = load i32, ptr %36, align 4, !tbaa !9
  %334 = sext i32 %333 to i64
  %335 = getelementptr inbounds %struct.doublecomplex, ptr %332, i64 %334
  %336 = call { double, double } @Cd(ptr noundef %335)
  %337 = extractvalue { double, double } %336, 0
  %338 = extractvalue { double, double } %336, 1
  store double %338, ptr %29, align 8, !tbaa !11
  %339 = load double, ptr %29, align 8, !tbaa !11
  %340 = fcmp oge double %339, 0.000000e+00
  br i1 %340, label %341, label %343

341:                                              ; preds = %330
  %342 = load double, ptr %29, align 8, !tbaa !11
  br label %346

343:                                              ; preds = %330
  %344 = load double, ptr %29, align 8, !tbaa !11
  %345 = fneg double %344
  br label %346

346:                                              ; preds = %343, %341
  %347 = phi double [ %342, %341 ], [ %345, %343 ]
  %348 = fadd double %331, %347
  %349 = fmul double %316, %348
  %350 = load double, ptr %31, align 8, !tbaa !11
  %351 = load ptr, ptr %21, align 8, !tbaa !5
  %352 = load i32, ptr %38, align 4, !tbaa !9
  %353 = sext i32 %352 to i64
  %354 = getelementptr inbounds double, ptr %351, i64 %353
  %355 = load double, ptr %354, align 8, !tbaa !11
  %356 = call double @llvm.fmuladd.f64(double %349, double %350, double %355)
  store double %356, ptr %354, align 8, !tbaa !11
  br label %357

357:                                              ; preds = %346
  %358 = load i32, ptr %36, align 4, !tbaa !9
  %359 = add nsw i32 %358, 1
  store i32 %359, ptr %36, align 4, !tbaa !9
  br label %241, !llvm.loop !16

360:                                              ; preds = %241
  br label %361

361:                                              ; preds = %360, %235
  %362 = load i32, ptr %37, align 4, !tbaa !9
  %363 = icmp ne i32 %362, 0
  br i1 %363, label %400, label %364

364:                                              ; preds = %361
  %365 = load ptr, ptr %21, align 8, !tbaa !5
  %366 = load i32, ptr %38, align 4, !tbaa !9
  %367 = sext i32 %366 to i64
  %368 = getelementptr inbounds double, ptr %365, i64 %367
  %369 = load double, ptr %368, align 8, !tbaa !11
  %370 = fcmp oge double %369, 0.000000e+00
  br i1 %370, label %371, label %381

371:                                              ; preds = %364
  %372 = load double, ptr %34, align 8, !tbaa !11
  %373 = fcmp oge double %372, 0.000000e+00
  br i1 %373, label %374, label %376

374:                                              ; preds = %371
  %375 = load double, ptr %34, align 8, !tbaa !11
  br label %379

376:                                              ; preds = %371
  %377 = load double, ptr %34, align 8, !tbaa !11
  %378 = fneg double %377
  br label %379

379:                                              ; preds = %376, %374
  %380 = phi double [ %375, %374 ], [ %378, %376 ]
  br label %392

381:                                              ; preds = %364
  %382 = load double, ptr %34, align 8, !tbaa !11
  %383 = fcmp oge double %382, 0.000000e+00
  br i1 %383, label %384, label %386

384:                                              ; preds = %381
  %385 = load double, ptr %34, align 8, !tbaa !11
  br label %389

386:                                              ; preds = %381
  %387 = load double, ptr %34, align 8, !tbaa !11
  %388 = fneg double %387
  br label %389

389:                                              ; preds = %386, %384
  %390 = phi double [ %385, %384 ], [ %388, %386 ]
  %391 = fneg double %390
  br label %392

392:                                              ; preds = %389, %379
  %393 = phi double [ %380, %379 ], [ %391, %389 ]
  %394 = load ptr, ptr %21, align 8, !tbaa !5
  %395 = load i32, ptr %38, align 4, !tbaa !9
  %396 = sext i32 %395 to i64
  %397 = getelementptr inbounds double, ptr %394, i64 %396
  %398 = load double, ptr %397, align 8, !tbaa !11
  %399 = fadd double %398, %393
  store double %399, ptr %397, align 8, !tbaa !11
  br label %400

400:                                              ; preds = %392, %361
  %401 = load ptr, ptr %22, align 8, !tbaa !5
  %402 = load i32, ptr %401, align 4, !tbaa !9
  %403 = load i32, ptr %38, align 4, !tbaa !9
  %404 = add nsw i32 %403, %402
  store i32 %404, ptr %38, align 4, !tbaa !9
  br label %405

405:                                              ; preds = %400
  %406 = load i32, ptr %35, align 4, !tbaa !9
  %407 = add nsw i32 %406, 1
  store i32 %407, ptr %35, align 4, !tbaa !9
  br label %191, !llvm.loop !18

408:                                              ; preds = %191
  br label %629

409:                                              ; preds = %184
  %410 = load i32, ptr %33, align 4, !tbaa !9
  store i32 %410, ptr %25, align 4, !tbaa !9
  store i32 1, ptr %35, align 4, !tbaa !9
  br label %411

411:                                              ; preds = %625, %409
  %412 = load i32, ptr %35, align 4, !tbaa !9
  %413 = load i32, ptr %25, align 4, !tbaa !9
  %414 = icmp sle i32 %412, %413
  br i1 %414, label %415, label %628

415:                                              ; preds = %411
  %416 = load ptr, ptr %20, align 8, !tbaa !5
  %417 = load double, ptr %416, align 8, !tbaa !11
  %418 = fcmp oeq double %417, 0.000000e+00
  br i1 %418, label %419, label %424

419:                                              ; preds = %415
  store i32 1, ptr %37, align 4, !tbaa !9
  %420 = load ptr, ptr %21, align 8, !tbaa !5
  %421 = load i32, ptr %38, align 4, !tbaa !9
  %422 = sext i32 %421 to i64
  %423 = getelementptr inbounds double, ptr %420, i64 %422
  store double 0.000000e+00, ptr %423, align 8, !tbaa !11
  br label %455

424:                                              ; preds = %415
  %425 = load ptr, ptr %21, align 8, !tbaa !5
  %426 = load i32, ptr %38, align 4, !tbaa !9
  %427 = sext i32 %426 to i64
  %428 = getelementptr inbounds double, ptr %425, i64 %427
  %429 = load double, ptr %428, align 8, !tbaa !11
  %430 = fcmp oeq double %429, 0.000000e+00
  br i1 %430, label %431, label %432

431:                                              ; preds = %424
  store i32 1, ptr %37, align 4, !tbaa !9
  br label %454

432:                                              ; preds = %424
  store i32 0, ptr %37, align 4, !tbaa !9
  %433 = load ptr, ptr %20, align 8, !tbaa !5
  %434 = load double, ptr %433, align 8, !tbaa !11
  %435 = load ptr, ptr %21, align 8, !tbaa !5
  %436 = load i32, ptr %38, align 4, !tbaa !9
  %437 = sext i32 %436 to i64
  %438 = getelementptr inbounds double, ptr %435, i64 %437
  %439 = load double, ptr %438, align 8, !tbaa !11
  store double %439, ptr %28, align 8, !tbaa !11
  %440 = load double, ptr %28, align 8, !tbaa !11
  %441 = fcmp oge double %440, 0.000000e+00
  br i1 %441, label %442, label %444

442:                                              ; preds = %432
  %443 = load double, ptr %28, align 8, !tbaa !11
  br label %447

444:                                              ; preds = %432
  %445 = load double, ptr %28, align 8, !tbaa !11
  %446 = fneg double %445
  br label %447

447:                                              ; preds = %444, %442
  %448 = phi double [ %443, %442 ], [ %446, %444 ]
  %449 = fmul double %434, %448
  %450 = load ptr, ptr %21, align 8, !tbaa !5
  %451 = load i32, ptr %38, align 4, !tbaa !9
  %452 = sext i32 %451 to i64
  %453 = getelementptr inbounds double, ptr %450, i64 %452
  store double %449, ptr %453, align 8, !tbaa !11
  br label %454

454:                                              ; preds = %447, %431
  br label %455

455:                                              ; preds = %454, %419
  %456 = load ptr, ptr %15, align 8, !tbaa !5
  %457 = load double, ptr %456, align 8, !tbaa !11
  %458 = fcmp une double %457, 0.000000e+00
  br i1 %458, label %459, label %581

459:                                              ; preds = %455
  %460 = load i32, ptr %32, align 4, !tbaa !9
  store i32 %460, ptr %26, align 4, !tbaa !9
  store i32 1, ptr %36, align 4, !tbaa !9
  br label %461

461:                                              ; preds = %577, %459
  %462 = load i32, ptr %36, align 4, !tbaa !9
  %463 = load i32, ptr %26, align 4, !tbaa !9
  %464 = icmp sle i32 %462, %463
  br i1 %464, label %465, label %580

465:                                              ; preds = %461
  %466 = load i32, ptr %36, align 4, !tbaa !9
  %467 = load i32, ptr %35, align 4, !tbaa !9
  %468 = load i32, ptr %23, align 4, !tbaa !9
  %469 = mul nsw i32 %467, %468
  %470 = add nsw i32 %466, %469
  store i32 %470, ptr %27, align 4, !tbaa !9
  %471 = load ptr, ptr %16, align 8, !tbaa !5
  %472 = load i32, ptr %27, align 4, !tbaa !9
  %473 = sext i32 %472 to i64
  %474 = getelementptr inbounds %struct.doublecomplex, ptr %471, i64 %473
  %475 = getelementptr inbounds %struct.doublecomplex, ptr %474, i32 0, i32 0
  %476 = load double, ptr %475, align 8, !tbaa !13
  store double %476, ptr %28, align 8, !tbaa !11
  %477 = load double, ptr %28, align 8, !tbaa !11
  %478 = fcmp oge double %477, 0.000000e+00
  br i1 %478, label %479, label %481

479:                                              ; preds = %465
  %480 = load double, ptr %28, align 8, !tbaa !11
  br label %484

481:                                              ; preds = %465
  %482 = load double, ptr %28, align 8, !tbaa !11
  %483 = fneg double %482
  br label %484

484:                                              ; preds = %481, %479
  %485 = phi double [ %480, %479 ], [ %483, %481 ]
  %486 = load ptr, ptr %16, align 8, !tbaa !5
  %487 = load i32, ptr %36, align 4, !tbaa !9
  %488 = load i32, ptr %35, align 4, !tbaa !9
  %489 = load i32, ptr %23, align 4, !tbaa !9
  %490 = mul nsw i32 %488, %489
  %491 = add nsw i32 %487, %490
  %492 = sext i32 %491 to i64
  %493 = getelementptr inbounds %struct.doublecomplex, ptr %486, i64 %492
  %494 = call { double, double } @Cd(ptr noundef %493)
  %495 = extractvalue { double, double } %494, 0
  %496 = extractvalue { double, double } %494, 1
  store double %496, ptr %29, align 8, !tbaa !11
  %497 = load double, ptr %29, align 8, !tbaa !11
  %498 = fcmp oge double %497, 0.000000e+00
  br i1 %498, label %499, label %501

499:                                              ; preds = %484
  %500 = load double, ptr %29, align 8, !tbaa !11
  br label %504

501:                                              ; preds = %484
  %502 = load double, ptr %29, align 8, !tbaa !11
  %503 = fneg double %502
  br label %504

504:                                              ; preds = %501, %499
  %505 = phi double [ %500, %499 ], [ %503, %501 ]
  %506 = fadd double %485, %505
  store double %506, ptr %31, align 8, !tbaa !11
  %507 = load i32, ptr %36, align 4, !tbaa !9
  store i32 %507, ptr %27, align 4, !tbaa !9
  %508 = load i32, ptr %37, align 4, !tbaa !9
  %509 = icmp ne i32 %508, 0
  br i1 %509, label %510, label %531

510:                                              ; preds = %504
  %511 = load ptr, ptr %18, align 8, !tbaa !5
  %512 = load i32, ptr %27, align 4, !tbaa !9
  %513 = sext i32 %512 to i64
  %514 = getelementptr inbounds %struct.doublecomplex, ptr %511, i64 %513
  %515 = getelementptr inbounds %struct.doublecomplex, ptr %514, i32 0, i32 0
  %516 = load double, ptr %515, align 8, !tbaa !13
  %517 = fcmp oeq double %516, 0.000000e+00
  br i1 %517, label %518, label %526

518:                                              ; preds = %510
  %519 = load ptr, ptr %18, align 8, !tbaa !5
  %520 = load i32, ptr %27, align 4, !tbaa !9
  %521 = sext i32 %520 to i64
  %522 = getelementptr inbounds %struct.doublecomplex, ptr %519, i64 %521
  %523 = getelementptr inbounds %struct.doublecomplex, ptr %522, i32 0, i32 1
  %524 = load double, ptr %523, align 8, !tbaa !15
  %525 = fcmp oeq double %524, 0.000000e+00
  br i1 %525, label %529, label %526

526:                                              ; preds = %518, %510
  %527 = load double, ptr %31, align 8, !tbaa !11
  %528 = fcmp oeq double %527, 0.000000e+00
  br label %529

529:                                              ; preds = %526, %518
  %530 = phi i1 [ true, %518 ], [ %528, %526 ]
  br label %531

531:                                              ; preds = %529, %504
  %532 = phi i1 [ false, %504 ], [ %530, %529 ]
  %533 = zext i1 %532 to i32
  store i32 %533, ptr %37, align 4, !tbaa !9
  %534 = load i32, ptr %36, align 4, !tbaa !9
  store i32 %534, ptr %27, align 4, !tbaa !9
  %535 = load ptr, ptr %15, align 8, !tbaa !5
  %536 = load double, ptr %535, align 8, !tbaa !11
  %537 = load ptr, ptr %18, align 8, !tbaa !5
  %538 = load i32, ptr %27, align 4, !tbaa !9
  %539 = sext i32 %538 to i64
  %540 = getelementptr inbounds %struct.doublecomplex, ptr %537, i64 %539
  %541 = getelementptr inbounds %struct.doublecomplex, ptr %540, i32 0, i32 0
  %542 = load double, ptr %541, align 8, !tbaa !13
  store double %542, ptr %28, align 8, !tbaa !11
  %543 = load double, ptr %28, align 8, !tbaa !11
  %544 = fcmp oge double %543, 0.000000e+00
  br i1 %544, label %545, label %547

545:                                              ; preds = %531
  %546 = load double, ptr %28, align 8, !tbaa !11
  br label %550

547:                                              ; preds = %531
  %548 = load double, ptr %28, align 8, !tbaa !11
  %549 = fneg double %548
  br label %550

550:                                              ; preds = %547, %545
  %551 = phi double [ %546, %545 ], [ %549, %547 ]
  %552 = load ptr, ptr %18, align 8, !tbaa !5
  %553 = load i32, ptr %36, align 4, !tbaa !9
  %554 = sext i32 %553 to i64
  %555 = getelementptr inbounds %struct.doublecomplex, ptr %552, i64 %554
  %556 = call { double, double } @Cd(ptr noundef %555)
  %557 = extractvalue { double, double } %556, 0
  %558 = extractvalue { double, double } %556, 1
  store double %558, ptr %29, align 8, !tbaa !11
  %559 = load double, ptr %29, align 8, !tbaa !11
  %560 = fcmp oge double %559, 0.000000e+00
  br i1 %560, label %561, label %563

561:                                              ; preds = %550
  %562 = load double, ptr %29, align 8, !tbaa !11
  br label %566

563:                                              ; preds = %550
  %564 = load double, ptr %29, align 8, !tbaa !11
  %565 = fneg double %564
  br label %566

566:                                              ; preds = %563, %561
  %567 = phi double [ %562, %561 ], [ %565, %563 ]
  %568 = fadd double %551, %567
  %569 = fmul double %536, %568
  %570 = load double, ptr %31, align 8, !tbaa !11
  %571 = load ptr, ptr %21, align 8, !tbaa !5
  %572 = load i32, ptr %38, align 4, !tbaa !9
  %573 = sext i32 %572 to i64
  %574 = getelementptr inbounds double, ptr %571, i64 %573
  %575 = load double, ptr %574, align 8, !tbaa !11
  %576 = call double @llvm.fmuladd.f64(double %569, double %570, double %575)
  store double %576, ptr %574, align 8, !tbaa !11
  br label %577

577:                                              ; preds = %566
  %578 = load i32, ptr %36, align 4, !tbaa !9
  %579 = add nsw i32 %578, 1
  store i32 %579, ptr %36, align 4, !tbaa !9
  br label %461, !llvm.loop !19

580:                                              ; preds = %461
  br label %581

581:                                              ; preds = %580, %455
  %582 = load i32, ptr %37, align 4, !tbaa !9
  %583 = icmp ne i32 %582, 0
  br i1 %583, label %620, label %584

584:                                              ; preds = %581
  %585 = load ptr, ptr %21, align 8, !tbaa !5
  %586 = load i32, ptr %38, align 4, !tbaa !9
  %587 = sext i32 %586 to i64
  %588 = getelementptr inbounds double, ptr %585, i64 %587
  %589 = load double, ptr %588, align 8, !tbaa !11
  %590 = fcmp oge double %589, 0.000000e+00
  br i1 %590, label %591, label %601

591:                                              ; preds = %584
  %592 = load double, ptr %34, align 8, !tbaa !11
  %593 = fcmp oge double %592, 0.000000e+00
  br i1 %593, label %594, label %596

594:                                              ; preds = %591
  %595 = load double, ptr %34, align 8, !tbaa !11
  br label %599

596:                                              ; preds = %591
  %597 = load double, ptr %34, align 8, !tbaa !11
  %598 = fneg double %597
  br label %599

599:                                              ; preds = %596, %594
  %600 = phi double [ %595, %594 ], [ %598, %596 ]
  br label %612

601:                                              ; preds = %584
  %602 = load double, ptr %34, align 8, !tbaa !11
  %603 = fcmp oge double %602, 0.000000e+00
  br i1 %603, label %604, label %606

604:                                              ; preds = %601
  %605 = load double, ptr %34, align 8, !tbaa !11
  br label %609

606:                                              ; preds = %601
  %607 = load double, ptr %34, align 8, !tbaa !11
  %608 = fneg double %607
  br label %609

609:                                              ; preds = %606, %604
  %610 = phi double [ %605, %604 ], [ %608, %606 ]
  %611 = fneg double %610
  br label %612

612:                                              ; preds = %609, %599
  %613 = phi double [ %600, %599 ], [ %611, %609 ]
  %614 = load ptr, ptr %21, align 8, !tbaa !5
  %615 = load i32, ptr %38, align 4, !tbaa !9
  %616 = sext i32 %615 to i64
  %617 = getelementptr inbounds double, ptr %614, i64 %616
  %618 = load double, ptr %617, align 8, !tbaa !11
  %619 = fadd double %618, %613
  store double %619, ptr %617, align 8, !tbaa !11
  br label %620

620:                                              ; preds = %612, %581
  %621 = load ptr, ptr %22, align 8, !tbaa !5
  %622 = load i32, ptr %621, align 4, !tbaa !9
  %623 = load i32, ptr %38, align 4, !tbaa !9
  %624 = add nsw i32 %623, %622
  store i32 %624, ptr %38, align 4, !tbaa !9
  br label %625

625:                                              ; preds = %620
  %626 = load i32, ptr %35, align 4, !tbaa !9
  %627 = add nsw i32 %626, 1
  store i32 %627, ptr %35, align 4, !tbaa !9
  br label %411, !llvm.loop !20

628:                                              ; preds = %411
  br label %629

629:                                              ; preds = %628, %408
  br label %1086

630:                                              ; preds = %172
  %631 = load ptr, ptr %12, align 8, !tbaa !5
  %632 = load i32, ptr %631, align 4, !tbaa !9
  %633 = call i32 @ilatrans_(ptr noundef @.str)
  %634 = icmp eq i32 %632, %633
  br i1 %634, label %635, label %860

635:                                              ; preds = %630
  %636 = load i32, ptr %33, align 4, !tbaa !9
  store i32 %636, ptr %25, align 4, !tbaa !9
  store i32 1, ptr %35, align 4, !tbaa !9
  br label %637

637:                                              ; preds = %856, %635
  %638 = load i32, ptr %35, align 4, !tbaa !9
  %639 = load i32, ptr %25, align 4, !tbaa !9
  %640 = icmp sle i32 %638, %639
  br i1 %640, label %641, label %859

641:                                              ; preds = %637
  %642 = load ptr, ptr %20, align 8, !tbaa !5
  %643 = load double, ptr %642, align 8, !tbaa !11
  %644 = fcmp oeq double %643, 0.000000e+00
  br i1 %644, label %645, label %650

645:                                              ; preds = %641
  store i32 1, ptr %37, align 4, !tbaa !9
  %646 = load ptr, ptr %21, align 8, !tbaa !5
  %647 = load i32, ptr %38, align 4, !tbaa !9
  %648 = sext i32 %647 to i64
  %649 = getelementptr inbounds double, ptr %646, i64 %648
  store double 0.000000e+00, ptr %649, align 8, !tbaa !11
  br label %681

650:                                              ; preds = %641
  %651 = load ptr, ptr %21, align 8, !tbaa !5
  %652 = load i32, ptr %38, align 4, !tbaa !9
  %653 = sext i32 %652 to i64
  %654 = getelementptr inbounds double, ptr %651, i64 %653
  %655 = load double, ptr %654, align 8, !tbaa !11
  %656 = fcmp oeq double %655, 0.000000e+00
  br i1 %656, label %657, label %658

657:                                              ; preds = %650
  store i32 1, ptr %37, align 4, !tbaa !9
  br label %680

658:                                              ; preds = %650
  store i32 0, ptr %37, align 4, !tbaa !9
  %659 = load ptr, ptr %20, align 8, !tbaa !5
  %660 = load double, ptr %659, align 8, !tbaa !11
  %661 = load ptr, ptr %21, align 8, !tbaa !5
  %662 = load i32, ptr %38, align 4, !tbaa !9
  %663 = sext i32 %662 to i64
  %664 = getelementptr inbounds double, ptr %661, i64 %663
  %665 = load double, ptr %664, align 8, !tbaa !11
  store double %665, ptr %28, align 8, !tbaa !11
  %666 = load double, ptr %28, align 8, !tbaa !11
  %667 = fcmp oge double %666, 0.000000e+00
  br i1 %667, label %668, label %670

668:                                              ; preds = %658
  %669 = load double, ptr %28, align 8, !tbaa !11
  br label %673

670:                                              ; preds = %658
  %671 = load double, ptr %28, align 8, !tbaa !11
  %672 = fneg double %671
  br label %673

673:                                              ; preds = %670, %668
  %674 = phi double [ %669, %668 ], [ %672, %670 ]
  %675 = fmul double %660, %674
  %676 = load ptr, ptr %21, align 8, !tbaa !5
  %677 = load i32, ptr %38, align 4, !tbaa !9
  %678 = sext i32 %677 to i64
  %679 = getelementptr inbounds double, ptr %676, i64 %678
  store double %675, ptr %679, align 8, !tbaa !11
  br label %680

680:                                              ; preds = %673, %657
  br label %681

681:                                              ; preds = %680, %645
  %682 = load ptr, ptr %15, align 8, !tbaa !5
  %683 = load double, ptr %682, align 8, !tbaa !11
  %684 = fcmp une double %683, 0.000000e+00
  br i1 %684, label %685, label %812

685:                                              ; preds = %681
  %686 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %686, ptr %39, align 4, !tbaa !9
  %687 = load i32, ptr %32, align 4, !tbaa !9
  store i32 %687, ptr %26, align 4, !tbaa !9
  store i32 1, ptr %36, align 4, !tbaa !9
  br label %688

688:                                              ; preds = %808, %685
  %689 = load i32, ptr %36, align 4, !tbaa !9
  %690 = load i32, ptr %26, align 4, !tbaa !9
  %691 = icmp sle i32 %689, %690
  br i1 %691, label %692, label %811

692:                                              ; preds = %688
  %693 = load i32, ptr %35, align 4, !tbaa !9
  %694 = load i32, ptr %36, align 4, !tbaa !9
  %695 = load i32, ptr %23, align 4, !tbaa !9
  %696 = mul nsw i32 %694, %695
  %697 = add nsw i32 %693, %696
  store i32 %697, ptr %27, align 4, !tbaa !9
  %698 = load ptr, ptr %16, align 8, !tbaa !5
  %699 = load i32, ptr %27, align 4, !tbaa !9
  %700 = sext i32 %699 to i64
  %701 = getelementptr inbounds %struct.doublecomplex, ptr %698, i64 %700
  %702 = getelementptr inbounds %struct.doublecomplex, ptr %701, i32 0, i32 0
  %703 = load double, ptr %702, align 8, !tbaa !13
  store double %703, ptr %28, align 8, !tbaa !11
  %704 = load double, ptr %28, align 8, !tbaa !11
  %705 = fcmp oge double %704, 0.000000e+00
  br i1 %705, label %706, label %708

706:                                              ; preds = %692
  %707 = load double, ptr %28, align 8, !tbaa !11
  br label %711

708:                                              ; preds = %692
  %709 = load double, ptr %28, align 8, !tbaa !11
  %710 = fneg double %709
  br label %711

711:                                              ; preds = %708, %706
  %712 = phi double [ %707, %706 ], [ %710, %708 ]
  %713 = load ptr, ptr %16, align 8, !tbaa !5
  %714 = load i32, ptr %35, align 4, !tbaa !9
  %715 = load i32, ptr %36, align 4, !tbaa !9
  %716 = load i32, ptr %23, align 4, !tbaa !9
  %717 = mul nsw i32 %715, %716
  %718 = add nsw i32 %714, %717
  %719 = sext i32 %718 to i64
  %720 = getelementptr inbounds %struct.doublecomplex, ptr %713, i64 %719
  %721 = call { double, double } @Cd(ptr noundef %720)
  %722 = extractvalue { double, double } %721, 0
  %723 = extractvalue { double, double } %721, 1
  store double %723, ptr %29, align 8, !tbaa !11
  %724 = load double, ptr %29, align 8, !tbaa !11
  %725 = fcmp oge double %724, 0.000000e+00
  br i1 %725, label %726, label %728

726:                                              ; preds = %711
  %727 = load double, ptr %29, align 8, !tbaa !11
  br label %731

728:                                              ; preds = %711
  %729 = load double, ptr %29, align 8, !tbaa !11
  %730 = fneg double %729
  br label %731

731:                                              ; preds = %728, %726
  %732 = phi double [ %727, %726 ], [ %730, %728 ]
  %733 = fadd double %712, %732
  store double %733, ptr %31, align 8, !tbaa !11
  %734 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %734, ptr %27, align 4, !tbaa !9
  %735 = load i32, ptr %37, align 4, !tbaa !9
  %736 = icmp ne i32 %735, 0
  br i1 %736, label %737, label %758

737:                                              ; preds = %731
  %738 = load ptr, ptr %18, align 8, !tbaa !5
  %739 = load i32, ptr %27, align 4, !tbaa !9
  %740 = sext i32 %739 to i64
  %741 = getelementptr inbounds %struct.doublecomplex, ptr %738, i64 %740
  %742 = getelementptr inbounds %struct.doublecomplex, ptr %741, i32 0, i32 0
  %743 = load double, ptr %742, align 8, !tbaa !13
  %744 = fcmp oeq double %743, 0.000000e+00
  br i1 %744, label %745, label %753

745:                                              ; preds = %737
  %746 = load ptr, ptr %18, align 8, !tbaa !5
  %747 = load i32, ptr %27, align 4, !tbaa !9
  %748 = sext i32 %747 to i64
  %749 = getelementptr inbounds %struct.doublecomplex, ptr %746, i64 %748
  %750 = getelementptr inbounds %struct.doublecomplex, ptr %749, i32 0, i32 1
  %751 = load double, ptr %750, align 8, !tbaa !15
  %752 = fcmp oeq double %751, 0.000000e+00
  br i1 %752, label %756, label %753

753:                                              ; preds = %745, %737
  %754 = load double, ptr %31, align 8, !tbaa !11
  %755 = fcmp oeq double %754, 0.000000e+00
  br label %756

756:                                              ; preds = %753, %745
  %757 = phi i1 [ true, %745 ], [ %755, %753 ]
  br label %758

758:                                              ; preds = %756, %731
  %759 = phi i1 [ false, %731 ], [ %757, %756 ]
  %760 = zext i1 %759 to i32
  store i32 %760, ptr %37, align 4, !tbaa !9
  %761 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %761, ptr %27, align 4, !tbaa !9
  %762 = load ptr, ptr %15, align 8, !tbaa !5
  %763 = load double, ptr %762, align 8, !tbaa !11
  %764 = load ptr, ptr %18, align 8, !tbaa !5
  %765 = load i32, ptr %27, align 4, !tbaa !9
  %766 = sext i32 %765 to i64
  %767 = getelementptr inbounds %struct.doublecomplex, ptr %764, i64 %766
  %768 = getelementptr inbounds %struct.doublecomplex, ptr %767, i32 0, i32 0
  %769 = load double, ptr %768, align 8, !tbaa !13
  store double %769, ptr %28, align 8, !tbaa !11
  %770 = load double, ptr %28, align 8, !tbaa !11
  %771 = fcmp oge double %770, 0.000000e+00
  br i1 %771, label %772, label %774

772:                                              ; preds = %758
  %773 = load double, ptr %28, align 8, !tbaa !11
  br label %777

774:                                              ; preds = %758
  %775 = load double, ptr %28, align 8, !tbaa !11
  %776 = fneg double %775
  br label %777

777:                                              ; preds = %774, %772
  %778 = phi double [ %773, %772 ], [ %776, %774 ]
  %779 = load ptr, ptr %18, align 8, !tbaa !5
  %780 = load i32, ptr %39, align 4, !tbaa !9
  %781 = sext i32 %780 to i64
  %782 = getelementptr inbounds %struct.doublecomplex, ptr %779, i64 %781
  %783 = call { double, double } @Cd(ptr noundef %782)
  %784 = extractvalue { double, double } %783, 0
  %785 = extractvalue { double, double } %783, 1
  store double %785, ptr %29, align 8, !tbaa !11
  %786 = load double, ptr %29, align 8, !tbaa !11
  %787 = fcmp oge double %786, 0.000000e+00
  br i1 %787, label %788, label %790

788:                                              ; preds = %777
  %789 = load double, ptr %29, align 8, !tbaa !11
  br label %793

790:                                              ; preds = %777
  %791 = load double, ptr %29, align 8, !tbaa !11
  %792 = fneg double %791
  br label %793

793:                                              ; preds = %790, %788
  %794 = phi double [ %789, %788 ], [ %792, %790 ]
  %795 = fadd double %778, %794
  %796 = fmul double %763, %795
  %797 = load double, ptr %31, align 8, !tbaa !11
  %798 = load ptr, ptr %21, align 8, !tbaa !5
  %799 = load i32, ptr %38, align 4, !tbaa !9
  %800 = sext i32 %799 to i64
  %801 = getelementptr inbounds double, ptr %798, i64 %800
  %802 = load double, ptr %801, align 8, !tbaa !11
  %803 = call double @llvm.fmuladd.f64(double %796, double %797, double %802)
  store double %803, ptr %801, align 8, !tbaa !11
  %804 = load ptr, ptr %19, align 8, !tbaa !5
  %805 = load i32, ptr %804, align 4, !tbaa !9
  %806 = load i32, ptr %39, align 4, !tbaa !9
  %807 = add nsw i32 %806, %805
  store i32 %807, ptr %39, align 4, !tbaa !9
  br label %808

808:                                              ; preds = %793
  %809 = load i32, ptr %36, align 4, !tbaa !9
  %810 = add nsw i32 %809, 1
  store i32 %810, ptr %36, align 4, !tbaa !9
  br label %688, !llvm.loop !21

811:                                              ; preds = %688
  br label %812

812:                                              ; preds = %811, %681
  %813 = load i32, ptr %37, align 4, !tbaa !9
  %814 = icmp ne i32 %813, 0
  br i1 %814, label %851, label %815

815:                                              ; preds = %812
  %816 = load ptr, ptr %21, align 8, !tbaa !5
  %817 = load i32, ptr %38, align 4, !tbaa !9
  %818 = sext i32 %817 to i64
  %819 = getelementptr inbounds double, ptr %816, i64 %818
  %820 = load double, ptr %819, align 8, !tbaa !11
  %821 = fcmp oge double %820, 0.000000e+00
  br i1 %821, label %822, label %832

822:                                              ; preds = %815
  %823 = load double, ptr %34, align 8, !tbaa !11
  %824 = fcmp oge double %823, 0.000000e+00
  br i1 %824, label %825, label %827

825:                                              ; preds = %822
  %826 = load double, ptr %34, align 8, !tbaa !11
  br label %830

827:                                              ; preds = %822
  %828 = load double, ptr %34, align 8, !tbaa !11
  %829 = fneg double %828
  br label %830

830:                                              ; preds = %827, %825
  %831 = phi double [ %826, %825 ], [ %829, %827 ]
  br label %843

832:                                              ; preds = %815
  %833 = load double, ptr %34, align 8, !tbaa !11
  %834 = fcmp oge double %833, 0.000000e+00
  br i1 %834, label %835, label %837

835:                                              ; preds = %832
  %836 = load double, ptr %34, align 8, !tbaa !11
  br label %840

837:                                              ; preds = %832
  %838 = load double, ptr %34, align 8, !tbaa !11
  %839 = fneg double %838
  br label %840

840:                                              ; preds = %837, %835
  %841 = phi double [ %836, %835 ], [ %839, %837 ]
  %842 = fneg double %841
  br label %843

843:                                              ; preds = %840, %830
  %844 = phi double [ %831, %830 ], [ %842, %840 ]
  %845 = load ptr, ptr %21, align 8, !tbaa !5
  %846 = load i32, ptr %38, align 4, !tbaa !9
  %847 = sext i32 %846 to i64
  %848 = getelementptr inbounds double, ptr %845, i64 %847
  %849 = load double, ptr %848, align 8, !tbaa !11
  %850 = fadd double %849, %844
  store double %850, ptr %848, align 8, !tbaa !11
  br label %851

851:                                              ; preds = %843, %812
  %852 = load ptr, ptr %22, align 8, !tbaa !5
  %853 = load i32, ptr %852, align 4, !tbaa !9
  %854 = load i32, ptr %38, align 4, !tbaa !9
  %855 = add nsw i32 %854, %853
  store i32 %855, ptr %38, align 4, !tbaa !9
  br label %856

856:                                              ; preds = %851
  %857 = load i32, ptr %35, align 4, !tbaa !9
  %858 = add nsw i32 %857, 1
  store i32 %858, ptr %35, align 4, !tbaa !9
  br label %637, !llvm.loop !22

859:                                              ; preds = %637
  br label %1085

860:                                              ; preds = %630
  %861 = load i32, ptr %33, align 4, !tbaa !9
  store i32 %861, ptr %25, align 4, !tbaa !9
  store i32 1, ptr %35, align 4, !tbaa !9
  br label %862

862:                                              ; preds = %1081, %860
  %863 = load i32, ptr %35, align 4, !tbaa !9
  %864 = load i32, ptr %25, align 4, !tbaa !9
  %865 = icmp sle i32 %863, %864
  br i1 %865, label %866, label %1084

866:                                              ; preds = %862
  %867 = load ptr, ptr %20, align 8, !tbaa !5
  %868 = load double, ptr %867, align 8, !tbaa !11
  %869 = fcmp oeq double %868, 0.000000e+00
  br i1 %869, label %870, label %875

870:                                              ; preds = %866
  store i32 1, ptr %37, align 4, !tbaa !9
  %871 = load ptr, ptr %21, align 8, !tbaa !5
  %872 = load i32, ptr %38, align 4, !tbaa !9
  %873 = sext i32 %872 to i64
  %874 = getelementptr inbounds double, ptr %871, i64 %873
  store double 0.000000e+00, ptr %874, align 8, !tbaa !11
  br label %906

875:                                              ; preds = %866
  %876 = load ptr, ptr %21, align 8, !tbaa !5
  %877 = load i32, ptr %38, align 4, !tbaa !9
  %878 = sext i32 %877 to i64
  %879 = getelementptr inbounds double, ptr %876, i64 %878
  %880 = load double, ptr %879, align 8, !tbaa !11
  %881 = fcmp oeq double %880, 0.000000e+00
  br i1 %881, label %882, label %883

882:                                              ; preds = %875
  store i32 1, ptr %37, align 4, !tbaa !9
  br label %905

883:                                              ; preds = %875
  store i32 0, ptr %37, align 4, !tbaa !9
  %884 = load ptr, ptr %20, align 8, !tbaa !5
  %885 = load double, ptr %884, align 8, !tbaa !11
  %886 = load ptr, ptr %21, align 8, !tbaa !5
  %887 = load i32, ptr %38, align 4, !tbaa !9
  %888 = sext i32 %887 to i64
  %889 = getelementptr inbounds double, ptr %886, i64 %888
  %890 = load double, ptr %889, align 8, !tbaa !11
  store double %890, ptr %28, align 8, !tbaa !11
  %891 = load double, ptr %28, align 8, !tbaa !11
  %892 = fcmp oge double %891, 0.000000e+00
  br i1 %892, label %893, label %895

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

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

898:                                              ; preds = %895, %893
  %899 = phi double [ %894, %893 ], [ %897, %895 ]
  %900 = fmul double %885, %899
  %901 = load ptr, ptr %21, align 8, !tbaa !5
  %902 = load i32, ptr %38, align 4, !tbaa !9
  %903 = sext i32 %902 to i64
  %904 = getelementptr inbounds double, ptr %901, i64 %903
  store double %900, ptr %904, align 8, !tbaa !11
  br label %905

905:                                              ; preds = %898, %882
  br label %906

906:                                              ; preds = %905, %870
  %907 = load ptr, ptr %15, align 8, !tbaa !5
  %908 = load double, ptr %907, align 8, !tbaa !11
  %909 = fcmp une double %908, 0.000000e+00
  br i1 %909, label %910, label %1037

910:                                              ; preds = %906
  %911 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %911, ptr %39, align 4, !tbaa !9
  %912 = load i32, ptr %32, align 4, !tbaa !9
  store i32 %912, ptr %26, align 4, !tbaa !9
  store i32 1, ptr %36, align 4, !tbaa !9
  br label %913

913:                                              ; preds = %1033, %910
  %914 = load i32, ptr %36, align 4, !tbaa !9
  %915 = load i32, ptr %26, align 4, !tbaa !9
  %916 = icmp sle i32 %914, %915
  br i1 %916, label %917, label %1036

917:                                              ; preds = %913
  %918 = load i32, ptr %36, align 4, !tbaa !9
  %919 = load i32, ptr %35, align 4, !tbaa !9
  %920 = load i32, ptr %23, align 4, !tbaa !9
  %921 = mul nsw i32 %919, %920
  %922 = add nsw i32 %918, %921
  store i32 %922, ptr %27, align 4, !tbaa !9
  %923 = load ptr, ptr %16, align 8, !tbaa !5
  %924 = load i32, ptr %27, align 4, !tbaa !9
  %925 = sext i32 %924 to i64
  %926 = getelementptr inbounds %struct.doublecomplex, ptr %923, i64 %925
  %927 = getelementptr inbounds %struct.doublecomplex, ptr %926, i32 0, i32 0
  %928 = load double, ptr %927, align 8, !tbaa !13
  store double %928, ptr %28, align 8, !tbaa !11
  %929 = load double, ptr %28, align 8, !tbaa !11
  %930 = fcmp oge double %929, 0.000000e+00
  br i1 %930, label %931, label %933

931:                                              ; preds = %917
  %932 = load double, ptr %28, align 8, !tbaa !11
  br label %936

933:                                              ; preds = %917
  %934 = load double, ptr %28, align 8, !tbaa !11
  %935 = fneg double %934
  br label %936

936:                                              ; preds = %933, %931
  %937 = phi double [ %932, %931 ], [ %935, %933 ]
  %938 = load ptr, ptr %16, align 8, !tbaa !5
  %939 = load i32, ptr %36, align 4, !tbaa !9
  %940 = load i32, ptr %35, align 4, !tbaa !9
  %941 = load i32, ptr %23, align 4, !tbaa !9
  %942 = mul nsw i32 %940, %941
  %943 = add nsw i32 %939, %942
  %944 = sext i32 %943 to i64
  %945 = getelementptr inbounds %struct.doublecomplex, ptr %938, i64 %944
  %946 = call { double, double } @Cd(ptr noundef %945)
  %947 = extractvalue { double, double } %946, 0
  %948 = extractvalue { double, double } %946, 1
  store double %948, ptr %29, align 8, !tbaa !11
  %949 = load double, ptr %29, align 8, !tbaa !11
  %950 = fcmp oge double %949, 0.000000e+00
  br i1 %950, label %951, label %953

951:                                              ; preds = %936
  %952 = load double, ptr %29, align 8, !tbaa !11
  br label %956

953:                                              ; preds = %936
  %954 = load double, ptr %29, align 8, !tbaa !11
  %955 = fneg double %954
  br label %956

956:                                              ; preds = %953, %951
  %957 = phi double [ %952, %951 ], [ %955, %953 ]
  %958 = fadd double %937, %957
  store double %958, ptr %31, align 8, !tbaa !11
  %959 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %959, ptr %27, align 4, !tbaa !9
  %960 = load i32, ptr %37, align 4, !tbaa !9
  %961 = icmp ne i32 %960, 0
  br i1 %961, label %962, label %983

962:                                              ; preds = %956
  %963 = load ptr, ptr %18, align 8, !tbaa !5
  %964 = load i32, ptr %27, align 4, !tbaa !9
  %965 = sext i32 %964 to i64
  %966 = getelementptr inbounds %struct.doublecomplex, ptr %963, i64 %965
  %967 = getelementptr inbounds %struct.doublecomplex, ptr %966, i32 0, i32 0
  %968 = load double, ptr %967, align 8, !tbaa !13
  %969 = fcmp oeq double %968, 0.000000e+00
  br i1 %969, label %970, label %978

970:                                              ; preds = %962
  %971 = load ptr, ptr %18, align 8, !tbaa !5
  %972 = load i32, ptr %27, align 4, !tbaa !9
  %973 = sext i32 %972 to i64
  %974 = getelementptr inbounds %struct.doublecomplex, ptr %971, i64 %973
  %975 = getelementptr inbounds %struct.doublecomplex, ptr %974, i32 0, i32 1
  %976 = load double, ptr %975, align 8, !tbaa !15
  %977 = fcmp oeq double %976, 0.000000e+00
  br i1 %977, label %981, label %978

978:                                              ; preds = %970, %962
  %979 = load double, ptr %31, align 8, !tbaa !11
  %980 = fcmp oeq double %979, 0.000000e+00
  br label %981

981:                                              ; preds = %978, %970
  %982 = phi i1 [ true, %970 ], [ %980, %978 ]
  br label %983

983:                                              ; preds = %981, %956
  %984 = phi i1 [ false, %956 ], [ %982, %981 ]
  %985 = zext i1 %984 to i32
  store i32 %985, ptr %37, align 4, !tbaa !9
  %986 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %986, ptr %27, align 4, !tbaa !9
  %987 = load ptr, ptr %15, align 8, !tbaa !5
  %988 = load double, ptr %987, align 8, !tbaa !11
  %989 = load ptr, ptr %18, align 8, !tbaa !5
  %990 = load i32, ptr %27, align 4, !tbaa !9
  %991 = sext i32 %990 to i64
  %992 = getelementptr inbounds %struct.doublecomplex, ptr %989, i64 %991
  %993 = getelementptr inbounds %struct.doublecomplex, ptr %992, i32 0, i32 0
  %994 = load double, ptr %993, align 8, !tbaa !13
  store double %994, ptr %28, align 8, !tbaa !11
  %995 = load double, ptr %28, align 8, !tbaa !11
  %996 = fcmp oge double %995, 0.000000e+00
  br i1 %996, label %997, label %999

997:                                              ; preds = %983
  %998 = load double, ptr %28, align 8, !tbaa !11
  br label %1002

999:                                              ; preds = %983
  %1000 = load double, ptr %28, align 8, !tbaa !11
  %1001 = fneg double %1000
  br label %1002

1002:                                             ; preds = %999, %997
  %1003 = phi double [ %998, %997 ], [ %1001, %999 ]
  %1004 = load ptr, ptr %18, align 8, !tbaa !5
  %1005 = load i32, ptr %39, align 4, !tbaa !9
  %1006 = sext i32 %1005 to i64
  %1007 = getelementptr inbounds %struct.doublecomplex, ptr %1004, i64 %1006
  %1008 = call { double, double } @Cd(ptr noundef %1007)
  %1009 = extractvalue { double, double } %1008, 0
  %1010 = extractvalue { double, double } %1008, 1
  store double %1010, ptr %29, align 8, !tbaa !11
  %1011 = load double, ptr %29, align 8, !tbaa !11
  %1012 = fcmp oge double %1011, 0.000000e+00
  br i1 %1012, label %1013, label %1015

1013:                                             ; preds = %1002
  %1014 = load double, ptr %29, align 8, !tbaa !11
  br label %1018

1015:                                             ; preds = %1002
  %1016 = load double, ptr %29, align 8, !tbaa !11
  %1017 = fneg double %1016
  br label %1018

1018:                                             ; preds = %1015, %1013
  %1019 = phi double [ %1014, %1013 ], [ %1017, %1015 ]
  %1020 = fadd double %1003, %1019
  %1021 = fmul double %988, %1020
  %1022 = load double, ptr %31, align 8, !tbaa !11
  %1023 = load ptr, ptr %21, align 8, !tbaa !5
  %1024 = load i32, ptr %38, align 4, !tbaa !9
  %1025 = sext i32 %1024 to i64
  %1026 = getelementptr inbounds double, ptr %1023, i64 %1025
  %1027 = load double, ptr %1026, align 8, !tbaa !11
  %1028 = call double @llvm.fmuladd.f64(double %1021, double %1022, double %1027)
  store double %1028, ptr %1026, align 8, !tbaa !11
  %1029 = load ptr, ptr %19, align 8, !tbaa !5
  %1030 = load i32, ptr %1029, align 4, !tbaa !9
  %1031 = load i32, ptr %39, align 4, !tbaa !9
  %1032 = add nsw i32 %1031, %1030
  store i32 %1032, ptr %39, align 4, !tbaa !9
  br label %1033

1033:                                             ; preds = %1018
  %1034 = load i32, ptr %36, align 4, !tbaa !9
  %1035 = add nsw i32 %1034, 1
  store i32 %1035, ptr %36, align 4, !tbaa !9
  br label %913, !llvm.loop !23

1036:                                             ; preds = %913
  br label %1037

1037:                                             ; preds = %1036, %906
  %1038 = load i32, ptr %37, align 4, !tbaa !9
  %1039 = icmp ne i32 %1038, 0
  br i1 %1039, label %1076, label %1040

1040:                                             ; preds = %1037
  %1041 = load ptr, ptr %21, align 8, !tbaa !5
  %1042 = load i32, ptr %38, align 4, !tbaa !9
  %1043 = sext i32 %1042 to i64
  %1044 = getelementptr inbounds double, ptr %1041, i64 %1043
  %1045 = load double, ptr %1044, align 8, !tbaa !11
  %1046 = fcmp oge double %1045, 0.000000e+00
  br i1 %1046, label %1047, label %1057

1047:                                             ; preds = %1040
  %1048 = load double, ptr %34, align 8, !tbaa !11
  %1049 = fcmp oge double %1048, 0.000000e+00
  br i1 %1049, label %1050, label %1052

1050:                                             ; preds = %1047
  %1051 = load double, ptr %34, align 8, !tbaa !11
  br label %1055

1052:                                             ; preds = %1047
  %1053 = load double, ptr %34, align 8, !tbaa !11
  %1054 = fneg double %1053
  br label %1055

1055:                                             ; preds = %1052, %1050
  %1056 = phi double [ %1051, %1050 ], [ %1054, %1052 ]
  br label %1068

1057:                                             ; preds = %1040
  %1058 = load double, ptr %34, align 8, !tbaa !11
  %1059 = fcmp oge double %1058, 0.000000e+00
  br i1 %1059, label %1060, label %1062

1060:                                             ; preds = %1057
  %1061 = load double, ptr %34, align 8, !tbaa !11
  br label %1065

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

1065:                                             ; preds = %1062, %1060
  %1066 = phi double [ %1061, %1060 ], [ %1064, %1062 ]
  %1067 = fneg double %1066
  br label %1068

1068:                                             ; preds = %1065, %1055
  %1069 = phi double [ %1056, %1055 ], [ %1067, %1065 ]
  %1070 = load ptr, ptr %21, align 8, !tbaa !5
  %1071 = load i32, ptr %38, align 4, !tbaa !9
  %1072 = sext i32 %1071 to i64
  %1073 = getelementptr inbounds double, ptr %1070, i64 %1072
  %1074 = load double, ptr %1073, align 8, !tbaa !11
  %1075 = fadd double %1074, %1069
  store double %1075, ptr %1073, align 8, !tbaa !11
  br label %1076

1076:                                             ; preds = %1068, %1037
  %1077 = load ptr, ptr %22, align 8, !tbaa !5
  %1078 = load i32, ptr %1077, align 4, !tbaa !9
  %1079 = load i32, ptr %38, align 4, !tbaa !9
  %1080 = add nsw i32 %1079, %1078
  store i32 %1080, ptr %38, align 4, !tbaa !9
  br label %1081

1081:                                             ; preds = %1076
  %1082 = load i32, ptr %35, align 4, !tbaa !9
  %1083 = add nsw i32 %1082, 1
  store i32 %1083, ptr %35, align 4, !tbaa !9
  br label %862, !llvm.loop !24

1084:                                             ; preds = %862
  br label %1085

1085:                                             ; preds = %1084, %859
  br label %1086

1086:                                             ; preds = %1085, %629
  store i32 1, ptr %42, align 4
  br label %1087

1087:                                             ; preds = %1086, %132, %114
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #5
  ret void
}

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

declare i32 @ilatrans_(ptr noundef) #2

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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


; 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 [11 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [13 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @zla_geamv_(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, ptr nocapture noundef readonly %3, ptr noundef %4, ptr nocapture noundef readonly %5, ptr noundef %6, ptr nocapture noundef readonly %7, ptr nocapture noundef readonly %8, ptr nocapture noundef %9, ptr nocapture noundef readonly %10) local_unnamed_addr #0 {
  %12 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #6
  %13 = load i32, ptr %5, align 4, !tbaa !5
  %narrow = xor i32 %13, -1
  %14 = sext i32 %narrow to i64
  %15 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %14
  %16 = getelementptr inbounds i8, ptr %6, i64 -16
  %17 = getelementptr inbounds i8, ptr %9, i64 -8
  %18 = load i32, ptr %0, align 4, !tbaa !5
  %19 = tail call i32 @ilatrans_(ptr noundef nonnull @.str) #6
  %20 = icmp eq i32 %18, %19
  br i1 %20, label %30, label %21

21:                                               ; preds = %11
  %22 = load i32, ptr %0, align 4, !tbaa !5
  %23 = tail call i32 @ilatrans_(ptr noundef nonnull @.str.1) #6
  %24 = icmp eq i32 %22, %23
  br i1 %24, label %30, label %25

25:                                               ; preds = %21
  %26 = load i32, ptr %0, align 4, !tbaa !5
  %27 = tail call i32 @ilatrans_(ptr noundef nonnull @.str.2) #6
  %28 = icmp eq i32 %26, %27
  br i1 %28, label %30, label %29

29:                                               ; preds = %25
  store i32 1, ptr %12, align 4, !tbaa !5
  br label %.thread

30:                                               ; preds = %25, %21, %11
  %31 = load i32, ptr %1, align 4, !tbaa !5
  %32 = icmp slt i32 %31, 0
  br i1 %32, label %33, label %34

33:                                               ; preds = %30
  store i32 2, ptr %12, align 4, !tbaa !5
  br label %.thread

34:                                               ; preds = %30
  %35 = load i32, ptr %2, align 4, !tbaa !5
  %36 = icmp slt i32 %35, 0
  br i1 %36, label %37, label %38

37:                                               ; preds = %34
  store i32 3, ptr %12, align 4, !tbaa !5
  br label %.thread

38:                                               ; preds = %34
  %39 = load i32, ptr %5, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %31, i32 1)
  %40 = icmp slt i32 %39, %spec.select
  br i1 %40, label %41, label %42

41:                                               ; preds = %38
  store i32 6, ptr %12, align 4, !tbaa !5
  br label %.thread

42:                                               ; preds = %38
  %43 = load i32, ptr %7, align 4, !tbaa !5
  %44 = icmp eq i32 %43, 0
  br i1 %44, label %45, label %46

45:                                               ; preds = %42
  store i32 8, ptr %12, align 4, !tbaa !5
  br label %.thread

46:                                               ; preds = %42
  %47 = load i32, ptr %10, align 4, !tbaa !5
  %48 = icmp eq i32 %47, 0
  br i1 %48, label %49, label %51

49:                                               ; preds = %46
  store i32 11, ptr %12, align 4, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %29, %37, %45, %49, %41, %33
  %50 = call i32 @xerbla_(ptr noundef nonnull @.str.3, ptr noundef nonnull %12, i32 noundef 10) #6
  br label %.loopexit382

51:                                               ; preds = %46
  %52 = icmp eq i32 %31, 0
  %53 = icmp eq i32 %35, 0
  %or.cond = or i1 %52, %53
  br i1 %or.cond, label %.loopexit382, label %54

54:                                               ; preds = %51
  %55 = load double, ptr %3, align 8, !tbaa !9
  %56 = fcmp oeq double %55, 0.000000e+00
  br i1 %56, label %57, label %60

57:                                               ; preds = %54
  %58 = load double, ptr %8, align 8, !tbaa !9
  %59 = fcmp oeq double %58, 1.000000e+00
  br i1 %59, label %.loopexit382, label %60

60:                                               ; preds = %57, %54
  %61 = load i32, ptr %0, align 4, !tbaa !5
  %62 = tail call i32 @ilatrans_(ptr noundef nonnull @.str) #6
  %63 = icmp eq i32 %61, %62
  %. = select i1 %63, ptr %2, ptr %1
  %.378 = select i1 %63, ptr %1, ptr %2
  %.0346 = load i32, ptr %.378, align 4, !tbaa !5
  %.0347 = load i32, ptr %., align 4, !tbaa !5
  %64 = load i32, ptr %7, align 4, !tbaa !5
  %65 = add nsw i32 %.0347, -1
  %66 = mul nsw i32 %65, %64
  %67 = sub nsw i32 1, %66
  %.inv = icmp slt i32 %64, 1
  %.0330 = select i1 %.inv, i32 %67, i32 1
  %68 = load i32, ptr %10, align 4, !tbaa !5
  %69 = add nsw i32 %.0346, -1
  %70 = mul nsw i32 %68, %69
  %71 = sub nsw i32 1, %70
  %.inv380 = icmp slt i32 %68, 1
  %.0 = select i1 %.inv380, i32 %71, i32 1
  %72 = tail call double @dlamch_(ptr noundef nonnull @.str.4) #6
  %73 = load i32, ptr %2, align 4, !tbaa !5
  %74 = add nsw i32 %73, 1
  %75 = sitofp i32 %74 to double
  %76 = fmul double %72, %75
  %77 = load i32, ptr %7, align 4, !tbaa !5
  %78 = icmp eq i32 %77, 1
  %79 = load i32, ptr %0, align 4, !tbaa !5
  %80 = tail call i32 @ilatrans_(ptr noundef nonnull @.str) #6
  %81 = icmp eq i32 %79, %80
  %.not373430 = icmp slt i32 %.0346, 1
  br i1 %78, label %82, label %223

82:                                               ; preds = %60
  br i1 %81, label %.preheader381, label %.preheader385

.preheader385:                                    ; preds = %82
  br i1 %.not373430, label %.loopexit382, label %.lr.ph424

.lr.ph424:                                        ; preds = %.preheader385
  %.not369415 = icmp slt i32 %.0347, 1
  %83 = fcmp oge double %76, 0.000000e+00
  %84 = fneg double %76
  %85 = add i32 %.0347, 1
  %86 = sext i32 %13 to i64
  %87 = add nuw i32 %.0346, 1
  %wide.trip.count476 = zext i32 %87 to i64
  %wide.trip.count471 = zext i32 %85 to i64
  br label %158

.preheader381:                                    ; preds = %82
  br i1 %.not373430, label %.loopexit382, label %.lr.ph434

.lr.ph434:                                        ; preds = %.preheader381
  %.not374425 = icmp slt i32 %.0347, 1
  %88 = fcmp oge double %76, 0.000000e+00
  %89 = fneg double %76
  %90 = sext i32 %13 to i64
  %91 = add i32 %.0347, 1
  %92 = add nuw i32 %.0346, 1
  %wide.trip.count486 = zext i32 %92 to i64
  %wide.trip.count481 = zext i32 %91 to i64
  br label %93

93:                                               ; preds = %.lr.ph434, %155
  %indvars.iv483 = phi i64 [ 1, %.lr.ph434 ], [ %indvars.iv.next484, %155 ]
  %.0332433 = phi i32 [ %.0, %.lr.ph434 ], [ %157, %155 ]
  %94 = load double, ptr %8, align 8, !tbaa !9
  %95 = fcmp oeq double %94, 0.000000e+00
  %96 = sext i32 %.0332433 to i64
  %97 = getelementptr inbounds double, ptr %17, i64 %96
  br i1 %95, label %.sink.split, label %98

98:                                               ; preds = %93
  %99 = load double, ptr %97, align 8, !tbaa !9
  %100 = fcmp oeq double %99, 0.000000e+00
  br i1 %100, label %106, label %101

101:                                              ; preds = %98
  %102 = fcmp oge double %99, 0.000000e+00
  %103 = fneg double %99
  %104 = select i1 %102, double %99, double %103
  %105 = fmul double %94, %104
  br label %.sink.split

.sink.split:                                      ; preds = %93, %101
  %.sink = phi double [ %105, %101 ], [ 0.000000e+00, %93 ]
  %.0334.ph = phi i32 [ 0, %101 ], [ 1, %93 ]
  store double %.sink, ptr %97, align 8, !tbaa !9
  br label %106

106:                                              ; preds = %.sink.split, %98
  %107 = phi double [ %99, %98 ], [ %.sink, %.sink.split ]
  %.0334 = phi i32 [ 1, %98 ], [ %.0334.ph, %.sink.split ]
  %108 = load double, ptr %3, align 8, !tbaa !9
  %109 = fcmp oeq double %108, 0.000000e+00
  %brmerge = select i1 %109, i1 true, i1 %.not374425
  br i1 %brmerge, label %.loopexit, label %.lr.ph428

.lr.ph428:                                        ; preds = %106
  %110 = sext i32 %.0332433 to i64
  %111 = getelementptr inbounds double, ptr %17, i64 %110
  %invariant.gep514 = getelementptr %struct.doublecomplex, ptr %15, i64 %indvars.iv483
  br label %112

112:                                              ; preds = %.lr.ph428, %._crit_edge496
  %indvars.iv478 = phi i64 [ 1, %.lr.ph428 ], [ %indvars.iv.next479, %._crit_edge496 ]
  %.1335427 = phi i32 [ %.0334, %.lr.ph428 ], [ %133, %._crit_edge496 ]
  %113 = mul nsw i64 %indvars.iv478, %90
  %gep515 = getelementptr %struct.doublecomplex, ptr %invariant.gep514, i64 %113
  %114 = load double, ptr %gep515, align 8, !tbaa !11
  %115 = fcmp oge double %114, 0.000000e+00
  %116 = fneg double %114
  %117 = select i1 %115, double %114, double %116
  %118 = tail call { double, double } @Cd(ptr noundef nonnull %gep515)
  %119 = extractvalue { double, double } %118, 1
  %120 = fcmp oge double %119, 0.000000e+00
  %121 = fneg double %119
  %122 = select i1 %120, double %119, double %121
  %123 = fadd double %117, %122
  %.not377 = icmp eq i32 %.1335427, 0
  %.phi.trans.insert497 = getelementptr inbounds %struct.doublecomplex, ptr %16, i64 %indvars.iv478
  %.pre498 = load double, ptr %.phi.trans.insert497, align 8, !tbaa !11
  br i1 %.not377, label %._crit_edge496, label %124

124:                                              ; preds = %112
  %125 = fcmp oeq double %.pre498, 0.000000e+00
  br i1 %125, label %126, label %130

126:                                              ; preds = %124
  %127 = getelementptr inbounds i8, ptr %.phi.trans.insert497, i64 8
  %128 = load double, ptr %127, align 8, !tbaa !13
  %129 = fcmp oeq double %128, 0.000000e+00
  br i1 %129, label %._crit_edge496, label %130

130:                                              ; preds = %126, %124
  %131 = fcmp oeq double %123, 0.000000e+00
  br label %._crit_edge496

._crit_edge496:                                   ; preds = %112, %126, %130
  %132 = phi i1 [ true, %126 ], [ %131, %130 ], [ false, %112 ]
  %133 = zext i1 %132 to i32
  %134 = load double, ptr %3, align 8, !tbaa !9
  %135 = getelementptr inbounds %struct.doublecomplex, ptr %16, i64 %indvars.iv478
  %136 = tail call { double, double } @Cd(ptr noundef nonnull %135)
  %137 = extractvalue { double, double } %136, 1
  %138 = insertelement <2 x double> poison, double %.pre498, i64 0
  %139 = insertelement <2 x double> %138, double %137, i64 1
  %140 = fcmp oge <2 x double> %139, zeroinitializer
  %141 = fneg <2 x double> %139
  %142 = select <2 x i1> %140, <2 x double> %139, <2 x double> %141
  %shift = shufflevector <2 x double> %142, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %143 = fadd <2 x double> %142, %shift
  %144 = extractelement <2 x double> %143, i64 0
  %145 = fmul double %134, %144
  %146 = load double, ptr %111, align 8, !tbaa !9
  %147 = tail call double @llvm.fmuladd.f64(double %145, double %123, double %146)
  store double %147, ptr %111, align 8, !tbaa !9
  %indvars.iv.next479 = add nuw nsw i64 %indvars.iv478, 1
  %exitcond482.not = icmp eq i64 %indvars.iv.next479, %wide.trip.count481
  br i1 %exitcond482.not, label %.loopexit, label %112, !llvm.loop !14

.loopexit:                                        ; preds = %._crit_edge496, %106
  %148 = phi double [ %107, %106 ], [ %147, %._crit_edge496 ]
  %.2336 = phi i32 [ %.0334, %106 ], [ %133, %._crit_edge496 ]
  %.not375 = icmp eq i32 %.2336, 0
  br i1 %.not375, label %149, label %155

149:                                              ; preds = %.loopexit
  %150 = sext i32 %.0332433 to i64
  %151 = getelementptr inbounds double, ptr %17, i64 %150
  %152 = fcmp ult double %148, 0.000000e+00
  %153 = xor i1 %88, %152
  %.435 = select i1 %153, double %76, double %89
  %154 = fadd double %148, %.435
  store double %154, ptr %151, align 8, !tbaa !9
  br label %155

155:                                              ; preds = %149, %.loopexit
  %156 = load i32, ptr %10, align 4, !tbaa !5
  %157 = add nsw i32 %156, %.0332433
  %indvars.iv.next484 = add nuw nsw i64 %indvars.iv483, 1
  %exitcond487.not = icmp eq i64 %indvars.iv.next484, %wide.trip.count486
  br i1 %exitcond487.not, label %.loopexit382, label %93, !llvm.loop !16

158:                                              ; preds = %.lr.ph424, %220
  %indvars.iv473 = phi i64 [ 1, %.lr.ph424 ], [ %indvars.iv.next474, %220 ]
  %.1333423 = phi i32 [ %.0, %.lr.ph424 ], [ %222, %220 ]
  %159 = load double, ptr %8, align 8, !tbaa !9
  %160 = fcmp oeq double %159, 0.000000e+00
  %161 = sext i32 %.1333423 to i64
  %162 = getelementptr inbounds double, ptr %17, i64 %161
  br i1 %160, label %.sink.split516, label %163

163:                                              ; preds = %158
  %164 = load double, ptr %162, align 8, !tbaa !9
  %165 = fcmp oeq double %164, 0.000000e+00
  br i1 %165, label %171, label %166

166:                                              ; preds = %163
  %167 = fcmp oge double %164, 0.000000e+00
  %168 = fneg double %164
  %169 = select i1 %167, double %164, double %168
  %170 = fmul double %159, %169
  br label %.sink.split516

.sink.split516:                                   ; preds = %158, %166
  %.sink518 = phi double [ %170, %166 ], [ 0.000000e+00, %158 ]
  %.3337.ph = phi i32 [ 0, %166 ], [ 1, %158 ]
  store double %.sink518, ptr %162, align 8, !tbaa !9
  br label %171

171:                                              ; preds = %.sink.split516, %163
  %172 = phi double [ %164, %163 ], [ %.sink518, %.sink.split516 ]
  %.3337 = phi i32 [ 1, %163 ], [ %.3337.ph, %.sink.split516 ]
  %173 = load double, ptr %3, align 8, !tbaa !9
  %174 = fcmp oeq double %173, 0.000000e+00
  %brmerge441 = select i1 %174, i1 true, i1 %.not369415
  br i1 %brmerge441, label %.loopexit384, label %.lr.ph418

.lr.ph418:                                        ; preds = %171
  %175 = mul nsw i64 %indvars.iv473, %86
  %176 = sext i32 %.1333423 to i64
  %177 = getelementptr inbounds double, ptr %17, i64 %176
  %invariant.gep512 = getelementptr %struct.doublecomplex, ptr %15, i64 %175
  br label %178

178:                                              ; preds = %.lr.ph418, %._crit_edge493
  %indvars.iv468 = phi i64 [ 1, %.lr.ph418 ], [ %indvars.iv.next469, %._crit_edge493 ]
  %.4417 = phi i32 [ %.3337, %.lr.ph418 ], [ %198, %._crit_edge493 ]
  %gep513 = getelementptr %struct.doublecomplex, ptr %invariant.gep512, i64 %indvars.iv468
  %179 = load double, ptr %gep513, align 8, !tbaa !11
  %180 = fcmp oge double %179, 0.000000e+00
  %181 = fneg double %179
  %182 = select i1 %180, double %179, double %181
  %183 = tail call { double, double } @Cd(ptr noundef nonnull %gep513)
  %184 = extractvalue { double, double } %183, 1
  %185 = fcmp oge double %184, 0.000000e+00
  %186 = fneg double %184
  %187 = select i1 %185, double %184, double %186
  %188 = fadd double %182, %187
  %.not372 = icmp eq i32 %.4417, 0
  %.phi.trans.insert494 = getelementptr inbounds %struct.doublecomplex, ptr %16, i64 %indvars.iv468
  %.pre495 = load double, ptr %.phi.trans.insert494, align 8, !tbaa !11
  br i1 %.not372, label %._crit_edge493, label %189

189:                                              ; preds = %178
  %190 = fcmp oeq double %.pre495, 0.000000e+00
  br i1 %190, label %191, label %195

191:                                              ; preds = %189
  %192 = getelementptr inbounds i8, ptr %.phi.trans.insert494, i64 8
  %193 = load double, ptr %192, align 8, !tbaa !13
  %194 = fcmp oeq double %193, 0.000000e+00
  br i1 %194, label %._crit_edge493, label %195

195:                                              ; preds = %191, %189
  %196 = fcmp oeq double %188, 0.000000e+00
  br label %._crit_edge493

._crit_edge493:                                   ; preds = %178, %191, %195
  %197 = phi i1 [ true, %191 ], [ %196, %195 ], [ false, %178 ]
  %198 = zext i1 %197 to i32
  %199 = load double, ptr %3, align 8, !tbaa !9
  %200 = getelementptr inbounds %struct.doublecomplex, ptr %16, i64 %indvars.iv468
  %201 = tail call { double, double } @Cd(ptr noundef nonnull %200)
  %202 = extractvalue { double, double } %201, 1
  %203 = insertelement <2 x double> poison, double %.pre495, i64 0
  %204 = insertelement <2 x double> %203, double %202, i64 1
  %205 = fcmp oge <2 x double> %204, zeroinitializer
  %206 = fneg <2 x double> %204
  %207 = select <2 x i1> %205, <2 x double> %204, <2 x double> %206
  %shift535 = shufflevector <2 x double> %207, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %208 = fadd <2 x double> %207, %shift535
  %209 = extractelement <2 x double> %208, i64 0
  %210 = fmul double %199, %209
  %211 = load double, ptr %177, align 8, !tbaa !9
  %212 = tail call double @llvm.fmuladd.f64(double %210, double %188, double %211)
  store double %212, ptr %177, align 8, !tbaa !9
  %indvars.iv.next469 = add nuw nsw i64 %indvars.iv468, 1
  %exitcond472.not = icmp eq i64 %indvars.iv.next469, %wide.trip.count471
  br i1 %exitcond472.not, label %.loopexit384, label %178, !llvm.loop !17

.loopexit384:                                     ; preds = %._crit_edge493, %171
  %213 = phi double [ %172, %171 ], [ %212, %._crit_edge493 ]
  %.5 = phi i32 [ %.3337, %171 ], [ %198, %._crit_edge493 ]
  %.not370 = icmp eq i32 %.5, 0
  br i1 %.not370, label %214, label %220

214:                                              ; preds = %.loopexit384
  %215 = sext i32 %.1333423 to i64
  %216 = getelementptr inbounds double, ptr %17, i64 %215
  %217 = fcmp ult double %213, 0.000000e+00
  %218 = xor i1 %83, %217
  %.436 = select i1 %218, double %76, double %84
  %219 = fadd double %213, %.436
  store double %219, ptr %216, align 8, !tbaa !9
  br label %220

220:                                              ; preds = %214, %.loopexit384
  %221 = load i32, ptr %10, align 4, !tbaa !5
  %222 = add nsw i32 %221, %.1333423
  %indvars.iv.next474 = add nuw nsw i64 %indvars.iv473, 1
  %exitcond477.not = icmp eq i64 %indvars.iv.next474, %wide.trip.count476
  br i1 %exitcond477.not, label %.loopexit382, label %158, !llvm.loop !18

223:                                              ; preds = %60
  br i1 %81, label %.preheader389, label %.preheader393

.preheader393:                                    ; preds = %223
  br i1 %.not373430, label %.loopexit382, label %.lr.ph403

.lr.ph403:                                        ; preds = %.preheader393
  %.not360395 = icmp slt i32 %.0347, 1
  %224 = fcmp oge double %76, 0.000000e+00
  %225 = fneg double %76
  %226 = add i32 %.0347, 1
  %227 = sext i32 %13 to i64
  %228 = add nuw i32 %.0346, 1
  %wide.trip.count456 = zext i32 %228 to i64
  %wide.trip.count = zext i32 %226 to i64
  br label %301

.preheader389:                                    ; preds = %223
  br i1 %.not373430, label %.loopexit382, label %.lr.ph414

.lr.ph414:                                        ; preds = %.preheader389
  %.not364404 = icmp slt i32 %.0347, 1
  %229 = fcmp oge double %76, 0.000000e+00
  %230 = fneg double %76
  %231 = sext i32 %13 to i64
  %232 = add i32 %.0347, 1
  %233 = add nuw i32 %.0346, 1
  %wide.trip.count466 = zext i32 %233 to i64
  %wide.trip.count461 = zext i32 %232 to i64
  br label %234

234:                                              ; preds = %.lr.ph414, %298
  %indvars.iv463 = phi i64 [ 1, %.lr.ph414 ], [ %indvars.iv.next464, %298 ]
  %.2413 = phi i32 [ %.0, %.lr.ph414 ], [ %300, %298 ]
  %235 = load double, ptr %8, align 8, !tbaa !9
  %236 = fcmp oeq double %235, 0.000000e+00
  %237 = sext i32 %.2413 to i64
  %238 = getelementptr inbounds double, ptr %17, i64 %237
  br i1 %236, label %.sink.split519, label %239

239:                                              ; preds = %234
  %240 = load double, ptr %238, align 8, !tbaa !9
  %241 = fcmp oeq double %240, 0.000000e+00
  br i1 %241, label %247, label %242

242:                                              ; preds = %239
  %243 = fcmp oge double %240, 0.000000e+00
  %244 = fneg double %240
  %245 = select i1 %243, double %240, double %244
  %246 = fmul double %235, %245
  br label %.sink.split519

.sink.split519:                                   ; preds = %234, %242
  %.sink521 = phi double [ %246, %242 ], [ 0.000000e+00, %234 ]
  %.6.ph = phi i32 [ 0, %242 ], [ 1, %234 ]
  store double %.sink521, ptr %238, align 8, !tbaa !9
  br label %247

247:                                              ; preds = %.sink.split519, %239
  %248 = phi double [ %240, %239 ], [ %.sink521, %.sink.split519 ]
  %.6 = phi i32 [ 1, %239 ], [ %.6.ph, %.sink.split519 ]
  %249 = load double, ptr %3, align 8, !tbaa !9
  %250 = fcmp oeq double %249, 0.000000e+00
  %brmerge443 = select i1 %250, i1 true, i1 %.not364404
  br i1 %brmerge443, label %.loopexit388, label %.lr.ph408

.lr.ph408:                                        ; preds = %247
  %251 = sext i32 %.2413 to i64
  %252 = getelementptr inbounds double, ptr %17, i64 %251
  %invariant.gep510 = getelementptr %struct.doublecomplex, ptr %15, i64 %indvars.iv463
  br label %253

253:                                              ; preds = %.lr.ph408, %._crit_edge489
  %indvars.iv458 = phi i64 [ 1, %.lr.ph408 ], [ %indvars.iv.next459, %._crit_edge489 ]
  %.0331407 = phi i32 [ %.0330, %.lr.ph408 ], [ %290, %._crit_edge489 ]
  %.7406 = phi i32 [ %.6, %.lr.ph408 ], [ %274, %._crit_edge489 ]
  %254 = mul nsw i64 %indvars.iv458, %231
  %gep511 = getelementptr %struct.doublecomplex, ptr %invariant.gep510, i64 %254
  %255 = load double, ptr %gep511, align 8, !tbaa !11
  %256 = fcmp oge double %255, 0.000000e+00
  %257 = fneg double %255
  %258 = select i1 %256, double %255, double %257
  %259 = tail call { double, double } @Cd(ptr noundef nonnull %gep511)
  %260 = extractvalue { double, double } %259, 1
  %261 = fcmp oge double %260, 0.000000e+00
  %262 = fneg double %260
  %263 = select i1 %261, double %260, double %262
  %264 = fadd double %258, %263
  %.not367 = icmp eq i32 %.7406, 0
  %.phi.trans.insert490 = sext i32 %.0331407 to i64
  %.phi.trans.insert491 = getelementptr inbounds %struct.doublecomplex, ptr %16, i64 %.phi.trans.insert490
  %.pre492 = load double, ptr %.phi.trans.insert491, align 8, !tbaa !11
  br i1 %.not367, label %._crit_edge489, label %265

265:                                              ; preds = %253
  %266 = fcmp oeq double %.pre492, 0.000000e+00
  br i1 %266, label %267, label %271

267:                                              ; preds = %265
  %268 = getelementptr inbounds i8, ptr %.phi.trans.insert491, i64 8
  %269 = load double, ptr %268, align 8, !tbaa !13
  %270 = fcmp oeq double %269, 0.000000e+00
  br i1 %270, label %._crit_edge489, label %271

271:                                              ; preds = %267, %265
  %272 = fcmp oeq double %264, 0.000000e+00
  br label %._crit_edge489

._crit_edge489:                                   ; preds = %253, %267, %271
  %273 = phi i1 [ true, %267 ], [ %272, %271 ], [ false, %253 ]
  %274 = zext i1 %273 to i32
  %275 = load double, ptr %3, align 8, !tbaa !9
  %276 = getelementptr inbounds %struct.doublecomplex, ptr %16, i64 %.phi.trans.insert490
  %277 = tail call { double, double } @Cd(ptr noundef nonnull %276)
  %278 = extractvalue { double, double } %277, 1
  %279 = insertelement <2 x double> poison, double %.pre492, i64 0
  %280 = insertelement <2 x double> %279, double %278, i64 1
  %281 = fcmp oge <2 x double> %280, zeroinitializer
  %282 = fneg <2 x double> %280
  %283 = select <2 x i1> %281, <2 x double> %280, <2 x double> %282
  %shift536 = shufflevector <2 x double> %283, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %284 = fadd <2 x double> %283, %shift536
  %285 = extractelement <2 x double> %284, i64 0
  %286 = fmul double %275, %285
  %287 = load double, ptr %252, align 8, !tbaa !9
  %288 = tail call double @llvm.fmuladd.f64(double %286, double %264, double %287)
  store double %288, ptr %252, align 8, !tbaa !9
  %289 = load i32, ptr %7, align 4, !tbaa !5
  %290 = add nsw i32 %289, %.0331407
  %indvars.iv.next459 = add nuw nsw i64 %indvars.iv458, 1
  %exitcond462.not = icmp eq i64 %indvars.iv.next459, %wide.trip.count461
  br i1 %exitcond462.not, label %.loopexit388, label %253, !llvm.loop !19

.loopexit388:                                     ; preds = %._crit_edge489, %247
  %291 = phi double [ %248, %247 ], [ %288, %._crit_edge489 ]
  %.8 = phi i32 [ %.6, %247 ], [ %274, %._crit_edge489 ]
  %.not365 = icmp eq i32 %.8, 0
  br i1 %.not365, label %292, label %298

292:                                              ; preds = %.loopexit388
  %293 = sext i32 %.2413 to i64
  %294 = getelementptr inbounds double, ptr %17, i64 %293
  %295 = fcmp ult double %291, 0.000000e+00
  %296 = xor i1 %229, %295
  %.437 = select i1 %296, double %76, double %230
  %297 = fadd double %291, %.437
  store double %297, ptr %294, align 8, !tbaa !9
  br label %298

298:                                              ; preds = %292, %.loopexit388
  %299 = load i32, ptr %10, align 4, !tbaa !5
  %300 = add nsw i32 %299, %.2413
  %indvars.iv.next464 = add nuw nsw i64 %indvars.iv463, 1
  %exitcond467.not = icmp eq i64 %indvars.iv.next464, %wide.trip.count466
  br i1 %exitcond467.not, label %.loopexit382, label %234, !llvm.loop !20

301:                                              ; preds = %.lr.ph403, %365
  %indvars.iv453 = phi i64 [ 1, %.lr.ph403 ], [ %indvars.iv.next454, %365 ]
  %.3402 = phi i32 [ %.0, %.lr.ph403 ], [ %367, %365 ]
  %302 = load double, ptr %8, align 8, !tbaa !9
  %303 = fcmp oeq double %302, 0.000000e+00
  %304 = sext i32 %.3402 to i64
  %305 = getelementptr inbounds double, ptr %17, i64 %304
  br i1 %303, label %.sink.split522, label %306

306:                                              ; preds = %301
  %307 = load double, ptr %305, align 8, !tbaa !9
  %308 = fcmp oeq double %307, 0.000000e+00
  br i1 %308, label %314, label %309

309:                                              ; preds = %306
  %310 = fcmp oge double %307, 0.000000e+00
  %311 = fneg double %307
  %312 = select i1 %310, double %307, double %311
  %313 = fmul double %302, %312
  br label %.sink.split522

.sink.split522:                                   ; preds = %301, %309
  %.sink524 = phi double [ %313, %309 ], [ 0.000000e+00, %301 ]
  %.9.ph = phi i32 [ 0, %309 ], [ 1, %301 ]
  store double %.sink524, ptr %305, align 8, !tbaa !9
  br label %314

314:                                              ; preds = %.sink.split522, %306
  %315 = phi double [ %307, %306 ], [ %.sink524, %.sink.split522 ]
  %.9 = phi i32 [ 1, %306 ], [ %.9.ph, %.sink.split522 ]
  %316 = load double, ptr %3, align 8, !tbaa !9
  %317 = fcmp oeq double %316, 0.000000e+00
  %brmerge445 = select i1 %317, i1 true, i1 %.not360395
  br i1 %brmerge445, label %.loopexit392, label %.lr.ph

.lr.ph:                                           ; preds = %314
  %318 = mul nsw i64 %indvars.iv453, %227
  %319 = sext i32 %.3402 to i64
  %320 = getelementptr inbounds double, ptr %17, i64 %319
  %invariant.gep = getelementptr %struct.doublecomplex, ptr %15, i64 %318
  br label %321

321:                                              ; preds = %.lr.ph, %._crit_edge
  %indvars.iv = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next, %._crit_edge ]
  %.1398 = phi i32 [ %.0330, %.lr.ph ], [ %357, %._crit_edge ]
  %.10397 = phi i32 [ %.9, %.lr.ph ], [ %341, %._crit_edge ]
  %gep = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %indvars.iv
  %322 = load double, ptr %gep, align 8, !tbaa !11
  %323 = fcmp oge double %322, 0.000000e+00
  %324 = fneg double %322
  %325 = select i1 %323, double %322, double %324
  %326 = tail call { double, double } @Cd(ptr noundef nonnull %gep)
  %327 = extractvalue { double, double } %326, 1
  %328 = fcmp oge double %327, 0.000000e+00
  %329 = fneg double %327
  %330 = select i1 %328, double %327, double %329
  %331 = fadd double %325, %330
  %.not362 = icmp eq i32 %.10397, 0
  %.phi.trans.insert = sext i32 %.1398 to i64
  %.phi.trans.insert488 = getelementptr inbounds %struct.doublecomplex, ptr %16, i64 %.phi.trans.insert
  %.pre = load double, ptr %.phi.trans.insert488, align 8, !tbaa !11
  br i1 %.not362, label %._crit_edge, label %332

332:                                              ; preds = %321
  %333 = fcmp oeq double %.pre, 0.000000e+00
  br i1 %333, label %334, label %338

334:                                              ; preds = %332
  %335 = getelementptr inbounds i8, ptr %.phi.trans.insert488, i64 8
  %336 = load double, ptr %335, align 8, !tbaa !13
  %337 = fcmp oeq double %336, 0.000000e+00
  br i1 %337, label %._crit_edge, label %338

338:                                              ; preds = %334, %332
  %339 = fcmp oeq double %331, 0.000000e+00
  br label %._crit_edge

._crit_edge:                                      ; preds = %321, %334, %338
  %340 = phi i1 [ true, %334 ], [ %339, %338 ], [ false, %321 ]
  %341 = zext i1 %340 to i32
  %342 = load double, ptr %3, align 8, !tbaa !9
  %343 = getelementptr inbounds %struct.doublecomplex, ptr %16, i64 %.phi.trans.insert
  %344 = tail call { double, double } @Cd(ptr noundef nonnull %343)
  %345 = extractvalue { double, double } %344, 1
  %346 = insertelement <2 x double> poison, double %.pre, i64 0
  %347 = insertelement <2 x double> %346, double %345, i64 1
  %348 = fcmp oge <2 x double> %347, zeroinitializer
  %349 = fneg <2 x double> %347
  %350 = select <2 x i1> %348, <2 x double> %347, <2 x double> %349
  %shift537 = shufflevector <2 x double> %350, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %351 = fadd <2 x double> %350, %shift537
  %352 = extractelement <2 x double> %351, i64 0
  %353 = fmul double %342, %352
  %354 = load double, ptr %320, align 8, !tbaa !9
  %355 = tail call double @llvm.fmuladd.f64(double %353, double %331, double %354)
  store double %355, ptr %320, align 8, !tbaa !9
  %356 = load i32, ptr %7, align 4, !tbaa !5
  %357 = add nsw i32 %356, %.1398
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %.loopexit392, label %321, !llvm.loop !21

.loopexit392:                                     ; preds = %._crit_edge, %314
  %358 = phi double [ %315, %314 ], [ %355, %._crit_edge ]
  %.11 = phi i32 [ %.9, %314 ], [ %341, %._crit_edge ]
  %.not361 = icmp eq i32 %.11, 0
  br i1 %.not361, label %359, label %365

359:                                              ; preds = %.loopexit392
  %360 = sext i32 %.3402 to i64
  %361 = getelementptr inbounds double, ptr %17, i64 %360
  %362 = fcmp ult double %358, 0.000000e+00
  %363 = xor i1 %224, %362
  %.438 = select i1 %363, double %76, double %225
  %364 = fadd double %358, %.438
  store double %364, ptr %361, align 8, !tbaa !9
  br label %365

365:                                              ; preds = %359, %.loopexit392
  %366 = load i32, ptr %10, align 4, !tbaa !5
  %367 = add nsw i32 %366, %.3402
  %indvars.iv.next454 = add nuw nsw i64 %indvars.iv453, 1
  %exitcond457.not = icmp eq i64 %indvars.iv.next454, %wide.trip.count456
  br i1 %exitcond457.not, label %.loopexit382, label %301, !llvm.loop !22

.loopexit382:                                     ; preds = %365, %298, %220, %155, %.preheader393, %.preheader389, %.preheader385, %.preheader381, %51, %57, %.thread
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #6
  ret void
}

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

declare i32 @ilatrans_(ptr noundef) local_unnamed_addr #2

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

; Function Attrs: 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 i32 @llvm.umax.i32(i32, i32) #5

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


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