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

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

68:                                               ; preds = %13
  %69 = load ptr, ptr %14, align 8, !tbaa !5
  %70 = load i32, ptr %69, align 4, !tbaa !9
  %71 = call i32 @ilatrans_(ptr noundef @.str.1)
  %72 = icmp eq i32 %70, %71
  br i1 %72, label %79, label %73

73:                                               ; preds = %68
  %74 = load ptr, ptr %14, align 8, !tbaa !5
  %75 = load i32, ptr %74, align 4, !tbaa !9
  %76 = call i32 @ilatrans_(ptr noundef @.str.2)
  %77 = icmp eq i32 %75, %76
  br i1 %77, label %79, label %78

78:                                               ; preds = %73
  store i32 1, ptr %35, align 4, !tbaa !9
  br label %141

79:                                               ; preds = %73, %68, %13
  %80 = load ptr, ptr %15, align 8, !tbaa !5
  %81 = load i32, ptr %80, align 4, !tbaa !9
  %82 = icmp slt i32 %81, 0
  br i1 %82, label %83, label %84

83:                                               ; preds = %79
  store i32 2, ptr %35, align 4, !tbaa !9
  br label %140

84:                                               ; preds = %79
  %85 = load ptr, ptr %16, align 8, !tbaa !5
  %86 = load i32, ptr %85, align 4, !tbaa !9
  %87 = icmp slt i32 %86, 0
  br i1 %87, label %88, label %89

88:                                               ; preds = %84
  store i32 3, ptr %35, align 4, !tbaa !9
  br label %139

89:                                               ; preds = %84
  %90 = load ptr, ptr %17, align 8, !tbaa !5
  %91 = load i32, ptr %90, align 4, !tbaa !9
  %92 = icmp slt i32 %91, 0
  br i1 %92, label %100, label %93

93:                                               ; preds = %89
  %94 = load ptr, ptr %17, align 8, !tbaa !5
  %95 = load i32, ptr %94, align 4, !tbaa !9
  %96 = load ptr, ptr %15, align 8, !tbaa !5
  %97 = load i32, ptr %96, align 4, !tbaa !9
  %98 = sub nsw i32 %97, 1
  %99 = icmp sgt i32 %95, %98
  br i1 %99, label %100, label %101

100:                                              ; preds = %93, %89
  store i32 4, ptr %35, align 4, !tbaa !9
  br label %138

101:                                              ; preds = %93
  %102 = load ptr, ptr %18, align 8, !tbaa !5
  %103 = load i32, ptr %102, align 4, !tbaa !9
  %104 = icmp slt i32 %103, 0
  br i1 %104, label %112, label %105

105:                                              ; preds = %101
  %106 = load ptr, ptr %18, align 8, !tbaa !5
  %107 = load i32, ptr %106, align 4, !tbaa !9
  %108 = load ptr, ptr %16, align 8, !tbaa !5
  %109 = load i32, ptr %108, align 4, !tbaa !9
  %110 = sub nsw i32 %109, 1
  %111 = icmp sgt i32 %107, %110
  br i1 %111, label %112, label %113

112:                                              ; preds = %105, %101
  store i32 5, ptr %35, align 4, !tbaa !9
  br label %137

113:                                              ; preds = %105
  %114 = load ptr, ptr %21, align 8, !tbaa !5
  %115 = load i32, ptr %114, align 4, !tbaa !9
  %116 = load ptr, ptr %17, align 8, !tbaa !5
  %117 = load i32, ptr %116, align 4, !tbaa !9
  %118 = load ptr, ptr %18, align 8, !tbaa !5
  %119 = load i32, ptr %118, align 4, !tbaa !9
  %120 = add nsw i32 %117, %119
  %121 = add nsw i32 %120, 1
  %122 = icmp slt i32 %115, %121
  br i1 %122, label %123, label %124

123:                                              ; preds = %113
  store i32 6, ptr %35, align 4, !tbaa !9
  br label %136

124:                                              ; preds = %113
  %125 = load ptr, ptr %23, align 8, !tbaa !5
  %126 = load i32, ptr %125, align 4, !tbaa !9
  %127 = icmp eq i32 %126, 0
  br i1 %127, label %128, label %129

128:                                              ; preds = %124
  store i32 8, ptr %35, align 4, !tbaa !9
  br label %135

129:                                              ; preds = %124
  %130 = load ptr, ptr %26, align 8, !tbaa !5
  %131 = load i32, ptr %130, align 4, !tbaa !9
  %132 = icmp eq i32 %131, 0
  br i1 %132, label %133, label %134

133:                                              ; preds = %129
  store i32 11, ptr %35, align 4, !tbaa !9
  br label %134

134:                                              ; preds = %133, %129
  br label %135

135:                                              ; preds = %134, %128
  br label %136

136:                                              ; preds = %135, %123
  br label %137

137:                                              ; preds = %136, %112
  br label %138

138:                                              ; preds = %137, %100
  br label %139

139:                                              ; preds = %138, %88
  br label %140

140:                                              ; preds = %139, %83
  br label %141

141:                                              ; preds = %140, %78
  %142 = load i32, ptr %35, align 4, !tbaa !9
  %143 = icmp ne i32 %142, 0
  br i1 %143, label %144, label %146

144:                                              ; preds = %141
  %145 = call i32 @xerbla_(ptr noundef @.str.3, ptr noundef %35, i32 noundef 10)
  store i32 1, ptr %49, align 4
  br label %1247

146:                                              ; preds = %141
  %147 = load ptr, ptr %15, align 8, !tbaa !5
  %148 = load i32, ptr %147, align 4, !tbaa !9
  %149 = icmp eq i32 %148, 0
  br i1 %149, label %162, label %150

150:                                              ; preds = %146
  %151 = load ptr, ptr %16, align 8, !tbaa !5
  %152 = load i32, ptr %151, align 4, !tbaa !9
  %153 = icmp eq i32 %152, 0
  br i1 %153, label %162, label %154

154:                                              ; preds = %150
  %155 = load ptr, ptr %19, align 8, !tbaa !5
  %156 = load double, ptr %155, align 8, !tbaa !11
  %157 = fcmp oeq double %156, 0.000000e+00
  br i1 %157, label %158, label %163

158:                                              ; preds = %154
  %159 = load ptr, ptr %24, align 8, !tbaa !5
  %160 = load double, ptr %159, align 8, !tbaa !11
  %161 = fcmp oeq double %160, 1.000000e+00
  br i1 %161, label %162, label %163

162:                                              ; preds = %158, %150, %146
  store i32 1, ptr %49, align 4
  br label %1247

163:                                              ; preds = %158, %154
  %164 = load ptr, ptr %14, align 8, !tbaa !5
  %165 = load i32, ptr %164, align 4, !tbaa !9
  %166 = call i32 @ilatrans_(ptr noundef @.str)
  %167 = icmp eq i32 %165, %166
  br i1 %167, label %168, label %173

168:                                              ; preds = %163
  %169 = load ptr, ptr %16, align 8, !tbaa !5
  %170 = load i32, ptr %169, align 4, !tbaa !9
  store i32 %170, ptr %37, align 4, !tbaa !9
  %171 = load ptr, ptr %15, align 8, !tbaa !5
  %172 = load i32, ptr %171, align 4, !tbaa !9
  store i32 %172, ptr %38, align 4, !tbaa !9
  br label %178

173:                                              ; preds = %163
  %174 = load ptr, ptr %15, align 8, !tbaa !5
  %175 = load i32, ptr %174, align 4, !tbaa !9
  store i32 %175, ptr %37, align 4, !tbaa !9
  %176 = load ptr, ptr %16, align 8, !tbaa !5
  %177 = load i32, ptr %176, align 4, !tbaa !9
  store i32 %177, ptr %38, align 4, !tbaa !9
  br label %178

178:                                              ; preds = %173, %168
  %179 = load ptr, ptr %23, align 8, !tbaa !5
  %180 = load i32, ptr %179, align 4, !tbaa !9
  %181 = icmp sgt i32 %180, 0
  br i1 %181, label %182, label %183

182:                                              ; preds = %178
  store i32 1, ptr %47, align 4, !tbaa !9
  br label %190

183:                                              ; preds = %178
  %184 = load i32, ptr %37, align 4, !tbaa !9
  %185 = sub nsw i32 %184, 1
  %186 = load ptr, ptr %23, align 8, !tbaa !5
  %187 = load i32, ptr %186, align 4, !tbaa !9
  %188 = mul nsw i32 %185, %187
  %189 = sub nsw i32 1, %188
  store i32 %189, ptr %47, align 4, !tbaa !9
  br label %190

190:                                              ; preds = %183, %182
  %191 = load ptr, ptr %26, align 8, !tbaa !5
  %192 = load i32, ptr %191, align 4, !tbaa !9
  %193 = icmp sgt i32 %192, 0
  br i1 %193, label %194, label %195

194:                                              ; preds = %190
  store i32 1, ptr %48, align 4, !tbaa !9
  br label %202

195:                                              ; preds = %190
  %196 = load i32, ptr %38, align 4, !tbaa !9
  %197 = sub nsw i32 %196, 1
  %198 = load ptr, ptr %26, align 8, !tbaa !5
  %199 = load i32, ptr %198, align 4, !tbaa !9
  %200 = mul nsw i32 %197, %199
  %201 = sub nsw i32 1, %200
  store i32 %201, ptr %48, align 4, !tbaa !9
  br label %202

202:                                              ; preds = %195, %194
  %203 = call double @dlamch_(ptr noundef @.str.4)
  store double %203, ptr %39, align 8, !tbaa !11
  %204 = load ptr, ptr %16, align 8, !tbaa !5
  %205 = load i32, ptr %204, align 4, !tbaa !9
  %206 = add nsw i32 %205, 1
  %207 = sitofp i32 %206 to double
  %208 = load double, ptr %39, align 8, !tbaa !11
  %209 = fmul double %207, %208
  store double %209, ptr %39, align 8, !tbaa !11
  %210 = load ptr, ptr %18, align 8, !tbaa !5
  %211 = load i32, ptr %210, align 4, !tbaa !9
  %212 = add nsw i32 %211, 1
  store i32 %212, ptr %43, align 4, !tbaa !9
  %213 = load ptr, ptr %17, align 8, !tbaa !5
  %214 = load i32, ptr %213, align 4, !tbaa !9
  %215 = add nsw i32 %214, 1
  store i32 %215, ptr %44, align 4, !tbaa !9
  %216 = load i32, ptr %48, align 4, !tbaa !9
  store i32 %216, ptr %45, align 4, !tbaa !9
  %217 = load ptr, ptr %23, align 8, !tbaa !5
  %218 = load i32, ptr %217, align 4, !tbaa !9
  %219 = icmp eq i32 %218, 1
  br i1 %219, label %220, label %728

220:                                              ; preds = %202
  %221 = load ptr, ptr %14, align 8, !tbaa !5
  %222 = load i32, ptr %221, align 4, !tbaa !9
  %223 = call i32 @ilatrans_(ptr noundef @.str)
  %224 = icmp eq i32 %222, %223
  br i1 %224, label %225, label %476

225:                                              ; preds = %220
  %226 = load i32, ptr %38, align 4, !tbaa !9
  store i32 %226, ptr %29, align 4, !tbaa !9
  store i32 1, ptr %40, align 4, !tbaa !9
  br label %227

227:                                              ; preds = %472, %225
  %228 = load i32, ptr %40, align 4, !tbaa !9
  %229 = load i32, ptr %29, align 4, !tbaa !9
  %230 = icmp sle i32 %228, %229
  br i1 %230, label %231, label %475

231:                                              ; preds = %227
  %232 = load ptr, ptr %24, align 8, !tbaa !5
  %233 = load double, ptr %232, align 8, !tbaa !11
  %234 = fcmp oeq double %233, 0.000000e+00
  br i1 %234, label %235, label %240

235:                                              ; preds = %231
  store i32 1, ptr %42, align 4, !tbaa !9
  %236 = load ptr, ptr %25, align 8, !tbaa !5
  %237 = load i32, ptr %45, align 4, !tbaa !9
  %238 = sext i32 %237 to i64
  %239 = getelementptr inbounds double, ptr %236, i64 %238
  store double 0.000000e+00, ptr %239, align 8, !tbaa !11
  br label %271

240:                                              ; preds = %231
  %241 = load ptr, ptr %25, align 8, !tbaa !5
  %242 = load i32, ptr %45, align 4, !tbaa !9
  %243 = sext i32 %242 to i64
  %244 = getelementptr inbounds double, ptr %241, i64 %243
  %245 = load double, ptr %244, align 8, !tbaa !11
  %246 = fcmp oeq double %245, 0.000000e+00
  br i1 %246, label %247, label %248

247:                                              ; preds = %240
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %270

248:                                              ; preds = %240
  store i32 0, ptr %42, align 4, !tbaa !9
  %249 = load ptr, ptr %24, align 8, !tbaa !5
  %250 = load double, ptr %249, align 8, !tbaa !11
  %251 = load ptr, ptr %25, align 8, !tbaa !5
  %252 = load i32, ptr %45, align 4, !tbaa !9
  %253 = sext i32 %252 to i64
  %254 = getelementptr inbounds double, ptr %251, i64 %253
  %255 = load double, ptr %254, align 8, !tbaa !11
  store double %255, ptr %33, align 8, !tbaa !11
  %256 = load double, ptr %33, align 8, !tbaa !11
  %257 = fcmp oge double %256, 0.000000e+00
  br i1 %257, label %258, label %260

258:                                              ; preds = %248
  %259 = load double, ptr %33, align 8, !tbaa !11
  br label %263

260:                                              ; preds = %248
  %261 = load double, ptr %33, align 8, !tbaa !11
  %262 = fneg double %261
  br label %263

263:                                              ; preds = %260, %258
  %264 = phi double [ %259, %258 ], [ %262, %260 ]
  %265 = fmul double %250, %264
  %266 = load ptr, ptr %25, align 8, !tbaa !5
  %267 = load i32, ptr %45, align 4, !tbaa !9
  %268 = sext i32 %267 to i64
  %269 = getelementptr inbounds double, ptr %266, i64 %268
  store double %265, ptr %269, align 8, !tbaa !11
  br label %270

270:                                              ; preds = %263, %247
  br label %271

271:                                              ; preds = %270, %235
  %272 = load ptr, ptr %19, align 8, !tbaa !5
  %273 = load double, ptr %272, align 8, !tbaa !11
  %274 = fcmp une double %273, 0.000000e+00
  br i1 %274, label %275, label %428

275:                                              ; preds = %271
  %276 = load i32, ptr %40, align 4, !tbaa !9
  %277 = load ptr, ptr %17, align 8, !tbaa !5
  %278 = load i32, ptr %277, align 4, !tbaa !9
  %279 = sub nsw i32 %276, %278
  store i32 %279, ptr %30, align 4, !tbaa !9
  %280 = load i32, ptr %40, align 4, !tbaa !9
  %281 = load ptr, ptr %18, align 8, !tbaa !5
  %282 = load i32, ptr %281, align 4, !tbaa !9
  %283 = add nsw i32 %280, %282
  store i32 %283, ptr %32, align 4, !tbaa !9
  %284 = load i32, ptr %32, align 4, !tbaa !9
  %285 = load i32, ptr %37, align 4, !tbaa !9
  %286 = icmp sle i32 %284, %285
  br i1 %286, label %287, label %289

287:                                              ; preds = %275
  %288 = load i32, ptr %32, align 4, !tbaa !9
  br label %291

289:                                              ; preds = %275
  %290 = load i32, ptr %37, align 4, !tbaa !9
  br label %291

291:                                              ; preds = %289, %287
  %292 = phi i32 [ %288, %287 ], [ %290, %289 ]
  store i32 %292, ptr %31, align 4, !tbaa !9
  %293 = load i32, ptr %30, align 4, !tbaa !9
  %294 = icmp sge i32 %293, 1
  br i1 %294, label %295, label %297

295:                                              ; preds = %291
  %296 = load i32, ptr %30, align 4, !tbaa !9
  br label %298

297:                                              ; preds = %291
  br label %298

298:                                              ; preds = %297, %295
  %299 = phi i32 [ %296, %295 ], [ 1, %297 ]
  store i32 %299, ptr %41, align 4, !tbaa !9
  br label %300

300:                                              ; preds = %424, %298
  %301 = load i32, ptr %41, align 4, !tbaa !9
  %302 = load i32, ptr %31, align 4, !tbaa !9
  %303 = icmp sle i32 %301, %302
  br i1 %303, label %304, label %427

304:                                              ; preds = %300
  %305 = load i32, ptr %43, align 4, !tbaa !9
  %306 = load i32, ptr %40, align 4, !tbaa !9
  %307 = add nsw i32 %305, %306
  %308 = load i32, ptr %41, align 4, !tbaa !9
  %309 = sub nsw i32 %307, %308
  %310 = load i32, ptr %41, align 4, !tbaa !9
  %311 = load i32, ptr %27, align 4, !tbaa !9
  %312 = mul nsw i32 %310, %311
  %313 = add nsw i32 %309, %312
  store i32 %313, ptr %30, align 4, !tbaa !9
  %314 = load ptr, ptr %20, align 8, !tbaa !5
  %315 = load i32, ptr %30, align 4, !tbaa !9
  %316 = sext i32 %315 to i64
  %317 = getelementptr inbounds %struct.doublecomplex, ptr %314, i64 %316
  %318 = getelementptr inbounds %struct.doublecomplex, ptr %317, i32 0, i32 0
  %319 = load double, ptr %318, align 8, !tbaa !13
  store double %319, ptr %33, align 8, !tbaa !11
  %320 = load double, ptr %33, align 8, !tbaa !11
  %321 = fcmp oge double %320, 0.000000e+00
  br i1 %321, label %322, label %324

322:                                              ; preds = %304
  %323 = load double, ptr %33, align 8, !tbaa !11
  br label %327

324:                                              ; preds = %304
  %325 = load double, ptr %33, align 8, !tbaa !11
  %326 = fneg double %325
  br label %327

327:                                              ; preds = %324, %322
  %328 = phi double [ %323, %322 ], [ %326, %324 ]
  %329 = load ptr, ptr %20, align 8, !tbaa !5
  %330 = load i32, ptr %43, align 4, !tbaa !9
  %331 = load i32, ptr %40, align 4, !tbaa !9
  %332 = add nsw i32 %330, %331
  %333 = load i32, ptr %41, align 4, !tbaa !9
  %334 = sub nsw i32 %332, %333
  %335 = load i32, ptr %41, align 4, !tbaa !9
  %336 = load i32, ptr %27, align 4, !tbaa !9
  %337 = mul nsw i32 %335, %336
  %338 = add nsw i32 %334, %337
  %339 = sext i32 %338 to i64
  %340 = getelementptr inbounds %struct.doublecomplex, ptr %329, i64 %339
  %341 = call { double, double } @Cd(ptr noundef %340)
  %342 = extractvalue { double, double } %341, 0
  %343 = extractvalue { double, double } %341, 1
  store double %343, ptr %34, align 8, !tbaa !11
  %344 = load double, ptr %34, align 8, !tbaa !11
  %345 = fcmp oge double %344, 0.000000e+00
  br i1 %345, label %346, label %348

346:                                              ; preds = %327
  %347 = load double, ptr %34, align 8, !tbaa !11
  br label %351

348:                                              ; preds = %327
  %349 = load double, ptr %34, align 8, !tbaa !11
  %350 = fneg double %349
  br label %351

351:                                              ; preds = %348, %346
  %352 = phi double [ %347, %346 ], [ %350, %348 ]
  %353 = fadd double %328, %352
  store double %353, ptr %36, align 8, !tbaa !11
  %354 = load i32, ptr %41, align 4, !tbaa !9
  store i32 %354, ptr %30, align 4, !tbaa !9
  %355 = load i32, ptr %42, align 4, !tbaa !9
  %356 = icmp ne i32 %355, 0
  br i1 %356, label %357, label %378

357:                                              ; preds = %351
  %358 = load ptr, ptr %22, align 8, !tbaa !5
  %359 = load i32, ptr %30, align 4, !tbaa !9
  %360 = sext i32 %359 to i64
  %361 = getelementptr inbounds %struct.doublecomplex, ptr %358, i64 %360
  %362 = getelementptr inbounds %struct.doublecomplex, ptr %361, i32 0, i32 0
  %363 = load double, ptr %362, align 8, !tbaa !13
  %364 = fcmp oeq double %363, 0.000000e+00
  br i1 %364, label %365, label %373

365:                                              ; preds = %357
  %366 = load ptr, ptr %22, align 8, !tbaa !5
  %367 = load i32, ptr %30, align 4, !tbaa !9
  %368 = sext i32 %367 to i64
  %369 = getelementptr inbounds %struct.doublecomplex, ptr %366, i64 %368
  %370 = getelementptr inbounds %struct.doublecomplex, ptr %369, i32 0, i32 1
  %371 = load double, ptr %370, align 8, !tbaa !15
  %372 = fcmp oeq double %371, 0.000000e+00
  br i1 %372, label %376, label %373

373:                                              ; preds = %365, %357
  %374 = load double, ptr %36, align 8, !tbaa !11
  %375 = fcmp oeq double %374, 0.000000e+00
  br label %376

376:                                              ; preds = %373, %365
  %377 = phi i1 [ true, %365 ], [ %375, %373 ]
  br label %378

378:                                              ; preds = %376, %351
  %379 = phi i1 [ false, %351 ], [ %377, %376 ]
  %380 = zext i1 %379 to i32
  store i32 %380, ptr %42, align 4, !tbaa !9
  %381 = load i32, ptr %41, align 4, !tbaa !9
  store i32 %381, ptr %30, align 4, !tbaa !9
  %382 = load ptr, ptr %19, align 8, !tbaa !5
  %383 = load double, ptr %382, align 8, !tbaa !11
  %384 = load ptr, ptr %22, align 8, !tbaa !5
  %385 = load i32, ptr %30, align 4, !tbaa !9
  %386 = sext i32 %385 to i64
  %387 = getelementptr inbounds %struct.doublecomplex, ptr %384, i64 %386
  %388 = getelementptr inbounds %struct.doublecomplex, ptr %387, i32 0, i32 0
  %389 = load double, ptr %388, align 8, !tbaa !13
  store double %389, ptr %33, align 8, !tbaa !11
  %390 = load double, ptr %33, align 8, !tbaa !11
  %391 = fcmp oge double %390, 0.000000e+00
  br i1 %391, label %392, label %394

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

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

397:                                              ; preds = %394, %392
  %398 = phi double [ %393, %392 ], [ %396, %394 ]
  %399 = load ptr, ptr %22, align 8, !tbaa !5
  %400 = load i32, ptr %41, align 4, !tbaa !9
  %401 = sext i32 %400 to i64
  %402 = getelementptr inbounds %struct.doublecomplex, ptr %399, i64 %401
  %403 = call { double, double } @Cd(ptr noundef %402)
  %404 = extractvalue { double, double } %403, 0
  %405 = extractvalue { double, double } %403, 1
  store double %405, ptr %34, align 8, !tbaa !11
  %406 = load double, ptr %34, align 8, !tbaa !11
  %407 = fcmp oge double %406, 0.000000e+00
  br i1 %407, label %408, label %410

408:                                              ; preds = %397
  %409 = load double, ptr %34, align 8, !tbaa !11
  br label %413

410:                                              ; preds = %397
  %411 = load double, ptr %34, align 8, !tbaa !11
  %412 = fneg double %411
  br label %413

413:                                              ; preds = %410, %408
  %414 = phi double [ %409, %408 ], [ %412, %410 ]
  %415 = fadd double %398, %414
  %416 = fmul double %383, %415
  %417 = load double, ptr %36, align 8, !tbaa !11
  %418 = load ptr, ptr %25, align 8, !tbaa !5
  %419 = load i32, ptr %45, align 4, !tbaa !9
  %420 = sext i32 %419 to i64
  %421 = getelementptr inbounds double, ptr %418, i64 %420
  %422 = load double, ptr %421, align 8, !tbaa !11
  %423 = call double @llvm.fmuladd.f64(double %416, double %417, double %422)
  store double %423, ptr %421, align 8, !tbaa !11
  br label %424

424:                                              ; preds = %413
  %425 = load i32, ptr %41, align 4, !tbaa !9
  %426 = add nsw i32 %425, 1
  store i32 %426, ptr %41, align 4, !tbaa !9
  br label %300, !llvm.loop !16

427:                                              ; preds = %300
  br label %428

428:                                              ; preds = %427, %271
  %429 = load i32, ptr %42, align 4, !tbaa !9
  %430 = icmp ne i32 %429, 0
  br i1 %430, label %467, label %431

431:                                              ; preds = %428
  %432 = load ptr, ptr %25, align 8, !tbaa !5
  %433 = load i32, ptr %45, align 4, !tbaa !9
  %434 = sext i32 %433 to i64
  %435 = getelementptr inbounds double, ptr %432, i64 %434
  %436 = load double, ptr %435, align 8, !tbaa !11
  %437 = fcmp oge double %436, 0.000000e+00
  br i1 %437, label %438, label %448

438:                                              ; preds = %431
  %439 = load double, ptr %39, align 8, !tbaa !11
  %440 = fcmp oge double %439, 0.000000e+00
  br i1 %440, label %441, label %443

441:                                              ; preds = %438
  %442 = load double, ptr %39, align 8, !tbaa !11
  br label %446

443:                                              ; preds = %438
  %444 = load double, ptr %39, align 8, !tbaa !11
  %445 = fneg double %444
  br label %446

446:                                              ; preds = %443, %441
  %447 = phi double [ %442, %441 ], [ %445, %443 ]
  br label %459

448:                                              ; preds = %431
  %449 = load double, ptr %39, align 8, !tbaa !11
  %450 = fcmp oge double %449, 0.000000e+00
  br i1 %450, label %451, label %453

451:                                              ; preds = %448
  %452 = load double, ptr %39, align 8, !tbaa !11
  br label %456

453:                                              ; preds = %448
  %454 = load double, ptr %39, align 8, !tbaa !11
  %455 = fneg double %454
  br label %456

456:                                              ; preds = %453, %451
  %457 = phi double [ %452, %451 ], [ %455, %453 ]
  %458 = fneg double %457
  br label %459

459:                                              ; preds = %456, %446
  %460 = phi double [ %447, %446 ], [ %458, %456 ]
  %461 = load ptr, ptr %25, align 8, !tbaa !5
  %462 = load i32, ptr %45, align 4, !tbaa !9
  %463 = sext i32 %462 to i64
  %464 = getelementptr inbounds double, ptr %461, i64 %463
  %465 = load double, ptr %464, align 8, !tbaa !11
  %466 = fadd double %465, %460
  store double %466, ptr %464, align 8, !tbaa !11
  br label %467

467:                                              ; preds = %459, %428
  %468 = load ptr, ptr %26, align 8, !tbaa !5
  %469 = load i32, ptr %468, align 4, !tbaa !9
  %470 = load i32, ptr %45, align 4, !tbaa !9
  %471 = add nsw i32 %470, %469
  store i32 %471, ptr %45, align 4, !tbaa !9
  br label %472

472:                                              ; preds = %467
  %473 = load i32, ptr %40, align 4, !tbaa !9
  %474 = add nsw i32 %473, 1
  store i32 %474, ptr %40, align 4, !tbaa !9
  br label %227, !llvm.loop !18

475:                                              ; preds = %227
  br label %727

476:                                              ; preds = %220
  %477 = load i32, ptr %38, align 4, !tbaa !9
  store i32 %477, ptr %29, align 4, !tbaa !9
  store i32 1, ptr %40, align 4, !tbaa !9
  br label %478

478:                                              ; preds = %723, %476
  %479 = load i32, ptr %40, align 4, !tbaa !9
  %480 = load i32, ptr %29, align 4, !tbaa !9
  %481 = icmp sle i32 %479, %480
  br i1 %481, label %482, label %726

482:                                              ; preds = %478
  %483 = load ptr, ptr %24, align 8, !tbaa !5
  %484 = load double, ptr %483, align 8, !tbaa !11
  %485 = fcmp oeq double %484, 0.000000e+00
  br i1 %485, label %486, label %491

486:                                              ; preds = %482
  store i32 1, ptr %42, align 4, !tbaa !9
  %487 = load ptr, ptr %25, align 8, !tbaa !5
  %488 = load i32, ptr %45, align 4, !tbaa !9
  %489 = sext i32 %488 to i64
  %490 = getelementptr inbounds double, ptr %487, i64 %489
  store double 0.000000e+00, ptr %490, align 8, !tbaa !11
  br label %522

491:                                              ; preds = %482
  %492 = load ptr, ptr %25, align 8, !tbaa !5
  %493 = load i32, ptr %45, align 4, !tbaa !9
  %494 = sext i32 %493 to i64
  %495 = getelementptr inbounds double, ptr %492, i64 %494
  %496 = load double, ptr %495, align 8, !tbaa !11
  %497 = fcmp oeq double %496, 0.000000e+00
  br i1 %497, label %498, label %499

498:                                              ; preds = %491
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %521

499:                                              ; preds = %491
  store i32 0, ptr %42, align 4, !tbaa !9
  %500 = load ptr, ptr %24, align 8, !tbaa !5
  %501 = load double, ptr %500, align 8, !tbaa !11
  %502 = load ptr, ptr %25, align 8, !tbaa !5
  %503 = load i32, ptr %45, align 4, !tbaa !9
  %504 = sext i32 %503 to i64
  %505 = getelementptr inbounds double, ptr %502, i64 %504
  %506 = load double, ptr %505, align 8, !tbaa !11
  store double %506, ptr %33, align 8, !tbaa !11
  %507 = load double, ptr %33, align 8, !tbaa !11
  %508 = fcmp oge double %507, 0.000000e+00
  br i1 %508, label %509, label %511

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

511:                                              ; preds = %499
  %512 = load double, ptr %33, align 8, !tbaa !11
  %513 = fneg double %512
  br label %514

514:                                              ; preds = %511, %509
  %515 = phi double [ %510, %509 ], [ %513, %511 ]
  %516 = fmul double %501, %515
  %517 = load ptr, ptr %25, align 8, !tbaa !5
  %518 = load i32, ptr %45, align 4, !tbaa !9
  %519 = sext i32 %518 to i64
  %520 = getelementptr inbounds double, ptr %517, i64 %519
  store double %516, ptr %520, align 8, !tbaa !11
  br label %521

521:                                              ; preds = %514, %498
  br label %522

522:                                              ; preds = %521, %486
  %523 = load ptr, ptr %19, align 8, !tbaa !5
  %524 = load double, ptr %523, align 8, !tbaa !11
  %525 = fcmp une double %524, 0.000000e+00
  br i1 %525, label %526, label %679

526:                                              ; preds = %522
  %527 = load i32, ptr %40, align 4, !tbaa !9
  %528 = load ptr, ptr %17, align 8, !tbaa !5
  %529 = load i32, ptr %528, align 4, !tbaa !9
  %530 = sub nsw i32 %527, %529
  store i32 %530, ptr %31, align 4, !tbaa !9
  %531 = load i32, ptr %40, align 4, !tbaa !9
  %532 = load ptr, ptr %18, align 8, !tbaa !5
  %533 = load i32, ptr %532, align 4, !tbaa !9
  %534 = add nsw i32 %531, %533
  store i32 %534, ptr %32, align 4, !tbaa !9
  %535 = load i32, ptr %32, align 4, !tbaa !9
  %536 = load i32, ptr %37, align 4, !tbaa !9
  %537 = icmp sle i32 %535, %536
  br i1 %537, label %538, label %540

538:                                              ; preds = %526
  %539 = load i32, ptr %32, align 4, !tbaa !9
  br label %542

540:                                              ; preds = %526
  %541 = load i32, ptr %37, align 4, !tbaa !9
  br label %542

542:                                              ; preds = %540, %538
  %543 = phi i32 [ %539, %538 ], [ %541, %540 ]
  store i32 %543, ptr %30, align 4, !tbaa !9
  %544 = load i32, ptr %31, align 4, !tbaa !9
  %545 = icmp sge i32 %544, 1
  br i1 %545, label %546, label %548

546:                                              ; preds = %542
  %547 = load i32, ptr %31, align 4, !tbaa !9
  br label %549

548:                                              ; preds = %542
  br label %549

549:                                              ; preds = %548, %546
  %550 = phi i32 [ %547, %546 ], [ 1, %548 ]
  store i32 %550, ptr %41, align 4, !tbaa !9
  br label %551

551:                                              ; preds = %675, %549
  %552 = load i32, ptr %41, align 4, !tbaa !9
  %553 = load i32, ptr %30, align 4, !tbaa !9
  %554 = icmp sle i32 %552, %553
  br i1 %554, label %555, label %678

555:                                              ; preds = %551
  %556 = load i32, ptr %44, align 4, !tbaa !9
  %557 = load i32, ptr %40, align 4, !tbaa !9
  %558 = sub nsw i32 %556, %557
  %559 = load i32, ptr %41, align 4, !tbaa !9
  %560 = add nsw i32 %558, %559
  %561 = load i32, ptr %40, align 4, !tbaa !9
  %562 = load i32, ptr %27, align 4, !tbaa !9
  %563 = mul nsw i32 %561, %562
  %564 = add nsw i32 %560, %563
  store i32 %564, ptr %31, align 4, !tbaa !9
  %565 = load ptr, ptr %20, align 8, !tbaa !5
  %566 = load i32, ptr %31, align 4, !tbaa !9
  %567 = sext i32 %566 to i64
  %568 = getelementptr inbounds %struct.doublecomplex, ptr %565, i64 %567
  %569 = getelementptr inbounds %struct.doublecomplex, ptr %568, i32 0, i32 0
  %570 = load double, ptr %569, align 8, !tbaa !13
  store double %570, ptr %33, align 8, !tbaa !11
  %571 = load double, ptr %33, align 8, !tbaa !11
  %572 = fcmp oge double %571, 0.000000e+00
  br i1 %572, label %573, label %575

573:                                              ; preds = %555
  %574 = load double, ptr %33, align 8, !tbaa !11
  br label %578

575:                                              ; preds = %555
  %576 = load double, ptr %33, align 8, !tbaa !11
  %577 = fneg double %576
  br label %578

578:                                              ; preds = %575, %573
  %579 = phi double [ %574, %573 ], [ %577, %575 ]
  %580 = load ptr, ptr %20, align 8, !tbaa !5
  %581 = load i32, ptr %44, align 4, !tbaa !9
  %582 = load i32, ptr %40, align 4, !tbaa !9
  %583 = sub nsw i32 %581, %582
  %584 = load i32, ptr %41, align 4, !tbaa !9
  %585 = add nsw i32 %583, %584
  %586 = load i32, ptr %40, align 4, !tbaa !9
  %587 = load i32, ptr %27, align 4, !tbaa !9
  %588 = mul nsw i32 %586, %587
  %589 = add nsw i32 %585, %588
  %590 = sext i32 %589 to i64
  %591 = getelementptr inbounds %struct.doublecomplex, ptr %580, i64 %590
  %592 = call { double, double } @Cd(ptr noundef %591)
  %593 = extractvalue { double, double } %592, 0
  %594 = extractvalue { double, double } %592, 1
  store double %594, ptr %34, align 8, !tbaa !11
  %595 = load double, ptr %34, align 8, !tbaa !11
  %596 = fcmp oge double %595, 0.000000e+00
  br i1 %596, label %597, label %599

597:                                              ; preds = %578
  %598 = load double, ptr %34, align 8, !tbaa !11
  br label %602

599:                                              ; preds = %578
  %600 = load double, ptr %34, align 8, !tbaa !11
  %601 = fneg double %600
  br label %602

602:                                              ; preds = %599, %597
  %603 = phi double [ %598, %597 ], [ %601, %599 ]
  %604 = fadd double %579, %603
  store double %604, ptr %36, align 8, !tbaa !11
  %605 = load i32, ptr %41, align 4, !tbaa !9
  store i32 %605, ptr %31, align 4, !tbaa !9
  %606 = load i32, ptr %42, align 4, !tbaa !9
  %607 = icmp ne i32 %606, 0
  br i1 %607, label %608, label %629

608:                                              ; preds = %602
  %609 = load ptr, ptr %22, align 8, !tbaa !5
  %610 = load i32, ptr %31, align 4, !tbaa !9
  %611 = sext i32 %610 to i64
  %612 = getelementptr inbounds %struct.doublecomplex, ptr %609, i64 %611
  %613 = getelementptr inbounds %struct.doublecomplex, ptr %612, i32 0, i32 0
  %614 = load double, ptr %613, align 8, !tbaa !13
  %615 = fcmp oeq double %614, 0.000000e+00
  br i1 %615, label %616, label %624

616:                                              ; preds = %608
  %617 = load ptr, ptr %22, align 8, !tbaa !5
  %618 = load i32, ptr %31, align 4, !tbaa !9
  %619 = sext i32 %618 to i64
  %620 = getelementptr inbounds %struct.doublecomplex, ptr %617, i64 %619
  %621 = getelementptr inbounds %struct.doublecomplex, ptr %620, i32 0, i32 1
  %622 = load double, ptr %621, align 8, !tbaa !15
  %623 = fcmp oeq double %622, 0.000000e+00
  br i1 %623, label %627, label %624

624:                                              ; preds = %616, %608
  %625 = load double, ptr %36, align 8, !tbaa !11
  %626 = fcmp oeq double %625, 0.000000e+00
  br label %627

627:                                              ; preds = %624, %616
  %628 = phi i1 [ true, %616 ], [ %626, %624 ]
  br label %629

629:                                              ; preds = %627, %602
  %630 = phi i1 [ false, %602 ], [ %628, %627 ]
  %631 = zext i1 %630 to i32
  store i32 %631, ptr %42, align 4, !tbaa !9
  %632 = load i32, ptr %41, align 4, !tbaa !9
  store i32 %632, ptr %31, align 4, !tbaa !9
  %633 = load ptr, ptr %19, align 8, !tbaa !5
  %634 = load double, ptr %633, align 8, !tbaa !11
  %635 = load ptr, ptr %22, align 8, !tbaa !5
  %636 = load i32, ptr %31, align 4, !tbaa !9
  %637 = sext i32 %636 to i64
  %638 = getelementptr inbounds %struct.doublecomplex, ptr %635, i64 %637
  %639 = getelementptr inbounds %struct.doublecomplex, ptr %638, i32 0, i32 0
  %640 = load double, ptr %639, align 8, !tbaa !13
  store double %640, ptr %33, align 8, !tbaa !11
  %641 = load double, ptr %33, align 8, !tbaa !11
  %642 = fcmp oge double %641, 0.000000e+00
  br i1 %642, label %643, label %645

643:                                              ; preds = %629
  %644 = load double, ptr %33, align 8, !tbaa !11
  br label %648

645:                                              ; preds = %629
  %646 = load double, ptr %33, align 8, !tbaa !11
  %647 = fneg double %646
  br label %648

648:                                              ; preds = %645, %643
  %649 = phi double [ %644, %643 ], [ %647, %645 ]
  %650 = load ptr, ptr %22, align 8, !tbaa !5
  %651 = load i32, ptr %41, align 4, !tbaa !9
  %652 = sext i32 %651 to i64
  %653 = getelementptr inbounds %struct.doublecomplex, ptr %650, i64 %652
  %654 = call { double, double } @Cd(ptr noundef %653)
  %655 = extractvalue { double, double } %654, 0
  %656 = extractvalue { double, double } %654, 1
  store double %656, ptr %34, align 8, !tbaa !11
  %657 = load double, ptr %34, align 8, !tbaa !11
  %658 = fcmp oge double %657, 0.000000e+00
  br i1 %658, label %659, label %661

659:                                              ; preds = %648
  %660 = load double, ptr %34, align 8, !tbaa !11
  br label %664

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

664:                                              ; preds = %661, %659
  %665 = phi double [ %660, %659 ], [ %663, %661 ]
  %666 = fadd double %649, %665
  %667 = fmul double %634, %666
  %668 = load double, ptr %36, align 8, !tbaa !11
  %669 = load ptr, ptr %25, align 8, !tbaa !5
  %670 = load i32, ptr %45, align 4, !tbaa !9
  %671 = sext i32 %670 to i64
  %672 = getelementptr inbounds double, ptr %669, i64 %671
  %673 = load double, ptr %672, align 8, !tbaa !11
  %674 = call double @llvm.fmuladd.f64(double %667, double %668, double %673)
  store double %674, ptr %672, align 8, !tbaa !11
  br label %675

675:                                              ; preds = %664
  %676 = load i32, ptr %41, align 4, !tbaa !9
  %677 = add nsw i32 %676, 1
  store i32 %677, ptr %41, align 4, !tbaa !9
  br label %551, !llvm.loop !19

678:                                              ; preds = %551
  br label %679

679:                                              ; preds = %678, %522
  %680 = load i32, ptr %42, align 4, !tbaa !9
  %681 = icmp ne i32 %680, 0
  br i1 %681, label %718, label %682

682:                                              ; preds = %679
  %683 = load ptr, ptr %25, align 8, !tbaa !5
  %684 = load i32, ptr %45, align 4, !tbaa !9
  %685 = sext i32 %684 to i64
  %686 = getelementptr inbounds double, ptr %683, i64 %685
  %687 = load double, ptr %686, align 8, !tbaa !11
  %688 = fcmp oge double %687, 0.000000e+00
  br i1 %688, label %689, label %699

689:                                              ; preds = %682
  %690 = load double, ptr %39, align 8, !tbaa !11
  %691 = fcmp oge double %690, 0.000000e+00
  br i1 %691, label %692, label %694

692:                                              ; preds = %689
  %693 = load double, ptr %39, align 8, !tbaa !11
  br label %697

694:                                              ; preds = %689
  %695 = load double, ptr %39, align 8, !tbaa !11
  %696 = fneg double %695
  br label %697

697:                                              ; preds = %694, %692
  %698 = phi double [ %693, %692 ], [ %696, %694 ]
  br label %710

699:                                              ; preds = %682
  %700 = load double, ptr %39, align 8, !tbaa !11
  %701 = fcmp oge double %700, 0.000000e+00
  br i1 %701, label %702, label %704

702:                                              ; preds = %699
  %703 = load double, ptr %39, align 8, !tbaa !11
  br label %707

704:                                              ; preds = %699
  %705 = load double, ptr %39, align 8, !tbaa !11
  %706 = fneg double %705
  br label %707

707:                                              ; preds = %704, %702
  %708 = phi double [ %703, %702 ], [ %706, %704 ]
  %709 = fneg double %708
  br label %710

710:                                              ; preds = %707, %697
  %711 = phi double [ %698, %697 ], [ %709, %707 ]
  %712 = load ptr, ptr %25, align 8, !tbaa !5
  %713 = load i32, ptr %45, align 4, !tbaa !9
  %714 = sext i32 %713 to i64
  %715 = getelementptr inbounds double, ptr %712, i64 %714
  %716 = load double, ptr %715, align 8, !tbaa !11
  %717 = fadd double %716, %711
  store double %717, ptr %715, align 8, !tbaa !11
  br label %718

718:                                              ; preds = %710, %679
  %719 = load ptr, ptr %26, align 8, !tbaa !5
  %720 = load i32, ptr %719, align 4, !tbaa !9
  %721 = load i32, ptr %45, align 4, !tbaa !9
  %722 = add nsw i32 %721, %720
  store i32 %722, ptr %45, align 4, !tbaa !9
  br label %723

723:                                              ; preds = %718
  %724 = load i32, ptr %40, align 4, !tbaa !9
  %725 = add nsw i32 %724, 1
  store i32 %725, ptr %40, align 4, !tbaa !9
  br label %478, !llvm.loop !20

726:                                              ; preds = %478
  br label %727

727:                                              ; preds = %726, %475
  br label %1246

728:                                              ; preds = %202
  %729 = load ptr, ptr %14, align 8, !tbaa !5
  %730 = load i32, ptr %729, align 4, !tbaa !9
  %731 = call i32 @ilatrans_(ptr noundef @.str)
  %732 = icmp eq i32 %730, %731
  br i1 %732, label %733, label %989

733:                                              ; preds = %728
  %734 = load i32, ptr %38, align 4, !tbaa !9
  store i32 %734, ptr %29, align 4, !tbaa !9
  store i32 1, ptr %40, align 4, !tbaa !9
  br label %735

735:                                              ; preds = %985, %733
  %736 = load i32, ptr %40, align 4, !tbaa !9
  %737 = load i32, ptr %29, align 4, !tbaa !9
  %738 = icmp sle i32 %736, %737
  br i1 %738, label %739, label %988

739:                                              ; preds = %735
  %740 = load ptr, ptr %24, align 8, !tbaa !5
  %741 = load double, ptr %740, align 8, !tbaa !11
  %742 = fcmp oeq double %741, 0.000000e+00
  br i1 %742, label %743, label %748

743:                                              ; preds = %739
  store i32 1, ptr %42, align 4, !tbaa !9
  %744 = load ptr, ptr %25, align 8, !tbaa !5
  %745 = load i32, ptr %45, align 4, !tbaa !9
  %746 = sext i32 %745 to i64
  %747 = getelementptr inbounds double, ptr %744, i64 %746
  store double 0.000000e+00, ptr %747, align 8, !tbaa !11
  br label %779

748:                                              ; preds = %739
  %749 = load ptr, ptr %25, align 8, !tbaa !5
  %750 = load i32, ptr %45, align 4, !tbaa !9
  %751 = sext i32 %750 to i64
  %752 = getelementptr inbounds double, ptr %749, i64 %751
  %753 = load double, ptr %752, align 8, !tbaa !11
  %754 = fcmp oeq double %753, 0.000000e+00
  br i1 %754, label %755, label %756

755:                                              ; preds = %748
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %778

756:                                              ; preds = %748
  store i32 0, ptr %42, align 4, !tbaa !9
  %757 = load ptr, ptr %24, align 8, !tbaa !5
  %758 = load double, ptr %757, align 8, !tbaa !11
  %759 = load ptr, ptr %25, align 8, !tbaa !5
  %760 = load i32, ptr %45, align 4, !tbaa !9
  %761 = sext i32 %760 to i64
  %762 = getelementptr inbounds double, ptr %759, i64 %761
  %763 = load double, ptr %762, align 8, !tbaa !11
  store double %763, ptr %33, align 8, !tbaa !11
  %764 = load double, ptr %33, align 8, !tbaa !11
  %765 = fcmp oge double %764, 0.000000e+00
  br i1 %765, label %766, label %768

766:                                              ; preds = %756
  %767 = load double, ptr %33, align 8, !tbaa !11
  br label %771

768:                                              ; preds = %756
  %769 = load double, ptr %33, align 8, !tbaa !11
  %770 = fneg double %769
  br label %771

771:                                              ; preds = %768, %766
  %772 = phi double [ %767, %766 ], [ %770, %768 ]
  %773 = fmul double %758, %772
  %774 = load ptr, ptr %25, align 8, !tbaa !5
  %775 = load i32, ptr %45, align 4, !tbaa !9
  %776 = sext i32 %775 to i64
  %777 = getelementptr inbounds double, ptr %774, i64 %776
  store double %773, ptr %777, align 8, !tbaa !11
  br label %778

778:                                              ; preds = %771, %755
  br label %779

779:                                              ; preds = %778, %743
  %780 = load ptr, ptr %19, align 8, !tbaa !5
  %781 = load double, ptr %780, align 8, !tbaa !11
  %782 = fcmp une double %781, 0.000000e+00
  br i1 %782, label %783, label %941

783:                                              ; preds = %779
  %784 = load i32, ptr %47, align 4, !tbaa !9
  store i32 %784, ptr %46, align 4, !tbaa !9
  %785 = load i32, ptr %40, align 4, !tbaa !9
  %786 = load ptr, ptr %17, align 8, !tbaa !5
  %787 = load i32, ptr %786, align 4, !tbaa !9
  %788 = sub nsw i32 %785, %787
  store i32 %788, ptr %30, align 4, !tbaa !9
  %789 = load i32, ptr %40, align 4, !tbaa !9
  %790 = load ptr, ptr %18, align 8, !tbaa !5
  %791 = load i32, ptr %790, align 4, !tbaa !9
  %792 = add nsw i32 %789, %791
  store i32 %792, ptr %32, align 4, !tbaa !9
  %793 = load i32, ptr %32, align 4, !tbaa !9
  %794 = load i32, ptr %37, align 4, !tbaa !9
  %795 = icmp sle i32 %793, %794
  br i1 %795, label %796, label %798

796:                                              ; preds = %783
  %797 = load i32, ptr %32, align 4, !tbaa !9
  br label %800

798:                                              ; preds = %783
  %799 = load i32, ptr %37, align 4, !tbaa !9
  br label %800

800:                                              ; preds = %798, %796
  %801 = phi i32 [ %797, %796 ], [ %799, %798 ]
  store i32 %801, ptr %31, align 4, !tbaa !9
  %802 = load i32, ptr %30, align 4, !tbaa !9
  %803 = icmp sge i32 %802, 1
  br i1 %803, label %804, label %806

804:                                              ; preds = %800
  %805 = load i32, ptr %30, align 4, !tbaa !9
  br label %807

806:                                              ; preds = %800
  br label %807

807:                                              ; preds = %806, %804
  %808 = phi i32 [ %805, %804 ], [ 1, %806 ]
  store i32 %808, ptr %41, align 4, !tbaa !9
  br label %809

809:                                              ; preds = %937, %807
  %810 = load i32, ptr %41, align 4, !tbaa !9
  %811 = load i32, ptr %31, align 4, !tbaa !9
  %812 = icmp sle i32 %810, %811
  br i1 %812, label %813, label %940

813:                                              ; preds = %809
  %814 = load i32, ptr %43, align 4, !tbaa !9
  %815 = load i32, ptr %40, align 4, !tbaa !9
  %816 = add nsw i32 %814, %815
  %817 = load i32, ptr %41, align 4, !tbaa !9
  %818 = sub nsw i32 %816, %817
  %819 = load i32, ptr %41, align 4, !tbaa !9
  %820 = load i32, ptr %27, align 4, !tbaa !9
  %821 = mul nsw i32 %819, %820
  %822 = add nsw i32 %818, %821
  store i32 %822, ptr %30, align 4, !tbaa !9
  %823 = load ptr, ptr %20, align 8, !tbaa !5
  %824 = load i32, ptr %30, align 4, !tbaa !9
  %825 = sext i32 %824 to i64
  %826 = getelementptr inbounds %struct.doublecomplex, ptr %823, i64 %825
  %827 = getelementptr inbounds %struct.doublecomplex, ptr %826, i32 0, i32 0
  %828 = load double, ptr %827, align 8, !tbaa !13
  store double %828, ptr %33, align 8, !tbaa !11
  %829 = load double, ptr %33, align 8, !tbaa !11
  %830 = fcmp oge double %829, 0.000000e+00
  br i1 %830, label %831, label %833

831:                                              ; preds = %813
  %832 = load double, ptr %33, align 8, !tbaa !11
  br label %836

833:                                              ; preds = %813
  %834 = load double, ptr %33, align 8, !tbaa !11
  %835 = fneg double %834
  br label %836

836:                                              ; preds = %833, %831
  %837 = phi double [ %832, %831 ], [ %835, %833 ]
  %838 = load ptr, ptr %20, align 8, !tbaa !5
  %839 = load i32, ptr %43, align 4, !tbaa !9
  %840 = load i32, ptr %40, align 4, !tbaa !9
  %841 = add nsw i32 %839, %840
  %842 = load i32, ptr %41, align 4, !tbaa !9
  %843 = sub nsw i32 %841, %842
  %844 = load i32, ptr %41, align 4, !tbaa !9
  %845 = load i32, ptr %27, align 4, !tbaa !9
  %846 = mul nsw i32 %844, %845
  %847 = add nsw i32 %843, %846
  %848 = sext i32 %847 to i64
  %849 = getelementptr inbounds %struct.doublecomplex, ptr %838, i64 %848
  %850 = call { double, double } @Cd(ptr noundef %849)
  %851 = extractvalue { double, double } %850, 0
  %852 = extractvalue { double, double } %850, 1
  store double %852, ptr %34, align 8, !tbaa !11
  %853 = load double, ptr %34, align 8, !tbaa !11
  %854 = fcmp oge double %853, 0.000000e+00
  br i1 %854, label %855, label %857

855:                                              ; preds = %836
  %856 = load double, ptr %34, align 8, !tbaa !11
  br label %860

857:                                              ; preds = %836
  %858 = load double, ptr %34, align 8, !tbaa !11
  %859 = fneg double %858
  br label %860

860:                                              ; preds = %857, %855
  %861 = phi double [ %856, %855 ], [ %859, %857 ]
  %862 = fadd double %837, %861
  store double %862, ptr %36, align 8, !tbaa !11
  %863 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %863, ptr %30, align 4, !tbaa !9
  %864 = load i32, ptr %42, align 4, !tbaa !9
  %865 = icmp ne i32 %864, 0
  br i1 %865, label %866, label %887

866:                                              ; preds = %860
  %867 = load ptr, ptr %22, align 8, !tbaa !5
  %868 = load i32, ptr %30, align 4, !tbaa !9
  %869 = sext i32 %868 to i64
  %870 = getelementptr inbounds %struct.doublecomplex, ptr %867, i64 %869
  %871 = getelementptr inbounds %struct.doublecomplex, ptr %870, i32 0, i32 0
  %872 = load double, ptr %871, align 8, !tbaa !13
  %873 = fcmp oeq double %872, 0.000000e+00
  br i1 %873, label %874, label %882

874:                                              ; preds = %866
  %875 = load ptr, ptr %22, align 8, !tbaa !5
  %876 = load i32, ptr %30, align 4, !tbaa !9
  %877 = sext i32 %876 to i64
  %878 = getelementptr inbounds %struct.doublecomplex, ptr %875, i64 %877
  %879 = getelementptr inbounds %struct.doublecomplex, ptr %878, i32 0, i32 1
  %880 = load double, ptr %879, align 8, !tbaa !15
  %881 = fcmp oeq double %880, 0.000000e+00
  br i1 %881, label %885, label %882

882:                                              ; preds = %874, %866
  %883 = load double, ptr %36, align 8, !tbaa !11
  %884 = fcmp oeq double %883, 0.000000e+00
  br label %885

885:                                              ; preds = %882, %874
  %886 = phi i1 [ true, %874 ], [ %884, %882 ]
  br label %887

887:                                              ; preds = %885, %860
  %888 = phi i1 [ false, %860 ], [ %886, %885 ]
  %889 = zext i1 %888 to i32
  store i32 %889, ptr %42, align 4, !tbaa !9
  %890 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %890, ptr %30, align 4, !tbaa !9
  %891 = load ptr, ptr %19, align 8, !tbaa !5
  %892 = load double, ptr %891, align 8, !tbaa !11
  %893 = load ptr, ptr %22, align 8, !tbaa !5
  %894 = load i32, ptr %30, align 4, !tbaa !9
  %895 = sext i32 %894 to i64
  %896 = getelementptr inbounds %struct.doublecomplex, ptr %893, i64 %895
  %897 = getelementptr inbounds %struct.doublecomplex, ptr %896, i32 0, i32 0
  %898 = load double, ptr %897, align 8, !tbaa !13
  store double %898, ptr %33, align 8, !tbaa !11
  %899 = load double, ptr %33, align 8, !tbaa !11
  %900 = fcmp oge double %899, 0.000000e+00
  br i1 %900, label %901, label %903

901:                                              ; preds = %887
  %902 = load double, ptr %33, align 8, !tbaa !11
  br label %906

903:                                              ; preds = %887
  %904 = load double, ptr %33, align 8, !tbaa !11
  %905 = fneg double %904
  br label %906

906:                                              ; preds = %903, %901
  %907 = phi double [ %902, %901 ], [ %905, %903 ]
  %908 = load ptr, ptr %22, align 8, !tbaa !5
  %909 = load i32, ptr %46, align 4, !tbaa !9
  %910 = sext i32 %909 to i64
  %911 = getelementptr inbounds %struct.doublecomplex, ptr %908, i64 %910
  %912 = call { double, double } @Cd(ptr noundef %911)
  %913 = extractvalue { double, double } %912, 0
  %914 = extractvalue { double, double } %912, 1
  store double %914, ptr %34, align 8, !tbaa !11
  %915 = load double, ptr %34, align 8, !tbaa !11
  %916 = fcmp oge double %915, 0.000000e+00
  br i1 %916, label %917, label %919

917:                                              ; preds = %906
  %918 = load double, ptr %34, align 8, !tbaa !11
  br label %922

919:                                              ; preds = %906
  %920 = load double, ptr %34, align 8, !tbaa !11
  %921 = fneg double %920
  br label %922

922:                                              ; preds = %919, %917
  %923 = phi double [ %918, %917 ], [ %921, %919 ]
  %924 = fadd double %907, %923
  %925 = fmul double %892, %924
  %926 = load double, ptr %36, align 8, !tbaa !11
  %927 = load ptr, ptr %25, align 8, !tbaa !5
  %928 = load i32, ptr %45, align 4, !tbaa !9
  %929 = sext i32 %928 to i64
  %930 = getelementptr inbounds double, ptr %927, i64 %929
  %931 = load double, ptr %930, align 8, !tbaa !11
  %932 = call double @llvm.fmuladd.f64(double %925, double %926, double %931)
  store double %932, ptr %930, align 8, !tbaa !11
  %933 = load ptr, ptr %23, align 8, !tbaa !5
  %934 = load i32, ptr %933, align 4, !tbaa !9
  %935 = load i32, ptr %46, align 4, !tbaa !9
  %936 = add nsw i32 %935, %934
  store i32 %936, ptr %46, align 4, !tbaa !9
  br label %937

937:                                              ; preds = %922
  %938 = load i32, ptr %41, align 4, !tbaa !9
  %939 = add nsw i32 %938, 1
  store i32 %939, ptr %41, align 4, !tbaa !9
  br label %809, !llvm.loop !21

940:                                              ; preds = %809
  br label %941

941:                                              ; preds = %940, %779
  %942 = load i32, ptr %42, align 4, !tbaa !9
  %943 = icmp ne i32 %942, 0
  br i1 %943, label %980, label %944

944:                                              ; preds = %941
  %945 = load ptr, ptr %25, align 8, !tbaa !5
  %946 = load i32, ptr %45, align 4, !tbaa !9
  %947 = sext i32 %946 to i64
  %948 = getelementptr inbounds double, ptr %945, i64 %947
  %949 = load double, ptr %948, align 8, !tbaa !11
  %950 = fcmp oge double %949, 0.000000e+00
  br i1 %950, label %951, label %961

951:                                              ; preds = %944
  %952 = load double, ptr %39, align 8, !tbaa !11
  %953 = fcmp oge double %952, 0.000000e+00
  br i1 %953, label %954, label %956

954:                                              ; preds = %951
  %955 = load double, ptr %39, align 8, !tbaa !11
  br label %959

956:                                              ; preds = %951
  %957 = load double, ptr %39, align 8, !tbaa !11
  %958 = fneg double %957
  br label %959

959:                                              ; preds = %956, %954
  %960 = phi double [ %955, %954 ], [ %958, %956 ]
  br label %972

961:                                              ; preds = %944
  %962 = load double, ptr %39, align 8, !tbaa !11
  %963 = fcmp oge double %962, 0.000000e+00
  br i1 %963, label %964, label %966

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

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

969:                                              ; preds = %966, %964
  %970 = phi double [ %965, %964 ], [ %968, %966 ]
  %971 = fneg double %970
  br label %972

972:                                              ; preds = %969, %959
  %973 = phi double [ %960, %959 ], [ %971, %969 ]
  %974 = load ptr, ptr %25, align 8, !tbaa !5
  %975 = load i32, ptr %45, align 4, !tbaa !9
  %976 = sext i32 %975 to i64
  %977 = getelementptr inbounds double, ptr %974, i64 %976
  %978 = load double, ptr %977, align 8, !tbaa !11
  %979 = fadd double %978, %973
  store double %979, ptr %977, align 8, !tbaa !11
  br label %980

980:                                              ; preds = %972, %941
  %981 = load ptr, ptr %26, align 8, !tbaa !5
  %982 = load i32, ptr %981, align 4, !tbaa !9
  %983 = load i32, ptr %45, align 4, !tbaa !9
  %984 = add nsw i32 %983, %982
  store i32 %984, ptr %45, align 4, !tbaa !9
  br label %985

985:                                              ; preds = %980
  %986 = load i32, ptr %40, align 4, !tbaa !9
  %987 = add nsw i32 %986, 1
  store i32 %987, ptr %40, align 4, !tbaa !9
  br label %735, !llvm.loop !22

988:                                              ; preds = %735
  br label %1245

989:                                              ; preds = %728
  %990 = load i32, ptr %38, align 4, !tbaa !9
  store i32 %990, ptr %29, align 4, !tbaa !9
  store i32 1, ptr %40, align 4, !tbaa !9
  br label %991

991:                                              ; preds = %1241, %989
  %992 = load i32, ptr %40, align 4, !tbaa !9
  %993 = load i32, ptr %29, align 4, !tbaa !9
  %994 = icmp sle i32 %992, %993
  br i1 %994, label %995, label %1244

995:                                              ; preds = %991
  %996 = load ptr, ptr %24, align 8, !tbaa !5
  %997 = load double, ptr %996, align 8, !tbaa !11
  %998 = fcmp oeq double %997, 0.000000e+00
  br i1 %998, label %999, label %1004

999:                                              ; preds = %995
  store i32 1, ptr %42, align 4, !tbaa !9
  %1000 = load ptr, ptr %25, align 8, !tbaa !5
  %1001 = load i32, ptr %45, align 4, !tbaa !9
  %1002 = sext i32 %1001 to i64
  %1003 = getelementptr inbounds double, ptr %1000, i64 %1002
  store double 0.000000e+00, ptr %1003, align 8, !tbaa !11
  br label %1035

1004:                                             ; preds = %995
  %1005 = load ptr, ptr %25, align 8, !tbaa !5
  %1006 = load i32, ptr %45, align 4, !tbaa !9
  %1007 = sext i32 %1006 to i64
  %1008 = getelementptr inbounds double, ptr %1005, i64 %1007
  %1009 = load double, ptr %1008, align 8, !tbaa !11
  %1010 = fcmp oeq double %1009, 0.000000e+00
  br i1 %1010, label %1011, label %1012

1011:                                             ; preds = %1004
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %1034

1012:                                             ; preds = %1004
  store i32 0, ptr %42, align 4, !tbaa !9
  %1013 = load ptr, ptr %24, align 8, !tbaa !5
  %1014 = load double, ptr %1013, align 8, !tbaa !11
  %1015 = load ptr, ptr %25, align 8, !tbaa !5
  %1016 = load i32, ptr %45, align 4, !tbaa !9
  %1017 = sext i32 %1016 to i64
  %1018 = getelementptr inbounds double, ptr %1015, i64 %1017
  %1019 = load double, ptr %1018, align 8, !tbaa !11
  store double %1019, ptr %33, align 8, !tbaa !11
  %1020 = load double, ptr %33, align 8, !tbaa !11
  %1021 = fcmp oge double %1020, 0.000000e+00
  br i1 %1021, label %1022, label %1024

1022:                                             ; preds = %1012
  %1023 = load double, ptr %33, align 8, !tbaa !11
  br label %1027

1024:                                             ; preds = %1012
  %1025 = load double, ptr %33, align 8, !tbaa !11
  %1026 = fneg double %1025
  br label %1027

1027:                                             ; preds = %1024, %1022
  %1028 = phi double [ %1023, %1022 ], [ %1026, %1024 ]
  %1029 = fmul double %1014, %1028
  %1030 = load ptr, ptr %25, align 8, !tbaa !5
  %1031 = load i32, ptr %45, align 4, !tbaa !9
  %1032 = sext i32 %1031 to i64
  %1033 = getelementptr inbounds double, ptr %1030, i64 %1032
  store double %1029, ptr %1033, align 8, !tbaa !11
  br label %1034

1034:                                             ; preds = %1027, %1011
  br label %1035

1035:                                             ; preds = %1034, %999
  %1036 = load ptr, ptr %19, align 8, !tbaa !5
  %1037 = load double, ptr %1036, align 8, !tbaa !11
  %1038 = fcmp une double %1037, 0.000000e+00
  br i1 %1038, label %1039, label %1197

1039:                                             ; preds = %1035
  %1040 = load i32, ptr %47, align 4, !tbaa !9
  store i32 %1040, ptr %46, align 4, !tbaa !9
  %1041 = load i32, ptr %40, align 4, !tbaa !9
  %1042 = load ptr, ptr %17, align 8, !tbaa !5
  %1043 = load i32, ptr %1042, align 4, !tbaa !9
  %1044 = sub nsw i32 %1041, %1043
  store i32 %1044, ptr %31, align 4, !tbaa !9
  %1045 = load i32, ptr %40, align 4, !tbaa !9
  %1046 = load ptr, ptr %18, align 8, !tbaa !5
  %1047 = load i32, ptr %1046, align 4, !tbaa !9
  %1048 = add nsw i32 %1045, %1047
  store i32 %1048, ptr %32, align 4, !tbaa !9
  %1049 = load i32, ptr %32, align 4, !tbaa !9
  %1050 = load i32, ptr %37, align 4, !tbaa !9
  %1051 = icmp sle i32 %1049, %1050
  br i1 %1051, label %1052, label %1054

1052:                                             ; preds = %1039
  %1053 = load i32, ptr %32, align 4, !tbaa !9
  br label %1056

1054:                                             ; preds = %1039
  %1055 = load i32, ptr %37, align 4, !tbaa !9
  br label %1056

1056:                                             ; preds = %1054, %1052
  %1057 = phi i32 [ %1053, %1052 ], [ %1055, %1054 ]
  store i32 %1057, ptr %30, align 4, !tbaa !9
  %1058 = load i32, ptr %31, align 4, !tbaa !9
  %1059 = icmp sge i32 %1058, 1
  br i1 %1059, label %1060, label %1062

1060:                                             ; preds = %1056
  %1061 = load i32, ptr %31, align 4, !tbaa !9
  br label %1063

1062:                                             ; preds = %1056
  br label %1063

1063:                                             ; preds = %1062, %1060
  %1064 = phi i32 [ %1061, %1060 ], [ 1, %1062 ]
  store i32 %1064, ptr %41, align 4, !tbaa !9
  br label %1065

1065:                                             ; preds = %1193, %1063
  %1066 = load i32, ptr %41, align 4, !tbaa !9
  %1067 = load i32, ptr %30, align 4, !tbaa !9
  %1068 = icmp sle i32 %1066, %1067
  br i1 %1068, label %1069, label %1196

1069:                                             ; preds = %1065
  %1070 = load i32, ptr %44, align 4, !tbaa !9
  %1071 = load i32, ptr %40, align 4, !tbaa !9
  %1072 = sub nsw i32 %1070, %1071
  %1073 = load i32, ptr %41, align 4, !tbaa !9
  %1074 = add nsw i32 %1072, %1073
  %1075 = load i32, ptr %40, align 4, !tbaa !9
  %1076 = load i32, ptr %27, align 4, !tbaa !9
  %1077 = mul nsw i32 %1075, %1076
  %1078 = add nsw i32 %1074, %1077
  store i32 %1078, ptr %31, align 4, !tbaa !9
  %1079 = load ptr, ptr %20, align 8, !tbaa !5
  %1080 = load i32, ptr %31, align 4, !tbaa !9
  %1081 = sext i32 %1080 to i64
  %1082 = getelementptr inbounds %struct.doublecomplex, ptr %1079, i64 %1081
  %1083 = getelementptr inbounds %struct.doublecomplex, ptr %1082, i32 0, i32 0
  %1084 = load double, ptr %1083, align 8, !tbaa !13
  store double %1084, ptr %33, align 8, !tbaa !11
  %1085 = load double, ptr %33, align 8, !tbaa !11
  %1086 = fcmp oge double %1085, 0.000000e+00
  br i1 %1086, label %1087, label %1089

1087:                                             ; preds = %1069
  %1088 = load double, ptr %33, align 8, !tbaa !11
  br label %1092

1089:                                             ; preds = %1069
  %1090 = load double, ptr %33, align 8, !tbaa !11
  %1091 = fneg double %1090
  br label %1092

1092:                                             ; preds = %1089, %1087
  %1093 = phi double [ %1088, %1087 ], [ %1091, %1089 ]
  %1094 = load ptr, ptr %20, align 8, !tbaa !5
  %1095 = load i32, ptr %44, align 4, !tbaa !9
  %1096 = load i32, ptr %40, align 4, !tbaa !9
  %1097 = sub nsw i32 %1095, %1096
  %1098 = load i32, ptr %41, align 4, !tbaa !9
  %1099 = add nsw i32 %1097, %1098
  %1100 = load i32, ptr %40, align 4, !tbaa !9
  %1101 = load i32, ptr %27, align 4, !tbaa !9
  %1102 = mul nsw i32 %1100, %1101
  %1103 = add nsw i32 %1099, %1102
  %1104 = sext i32 %1103 to i64
  %1105 = getelementptr inbounds %struct.doublecomplex, ptr %1094, i64 %1104
  %1106 = call { double, double } @Cd(ptr noundef %1105)
  %1107 = extractvalue { double, double } %1106, 0
  %1108 = extractvalue { double, double } %1106, 1
  store double %1108, ptr %34, align 8, !tbaa !11
  %1109 = load double, ptr %34, align 8, !tbaa !11
  %1110 = fcmp oge double %1109, 0.000000e+00
  br i1 %1110, label %1111, label %1113

1111:                                             ; preds = %1092
  %1112 = load double, ptr %34, align 8, !tbaa !11
  br label %1116

1113:                                             ; preds = %1092
  %1114 = load double, ptr %34, align 8, !tbaa !11
  %1115 = fneg double %1114
  br label %1116

1116:                                             ; preds = %1113, %1111
  %1117 = phi double [ %1112, %1111 ], [ %1115, %1113 ]
  %1118 = fadd double %1093, %1117
  store double %1118, ptr %36, align 8, !tbaa !11
  %1119 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %1119, ptr %31, align 4, !tbaa !9
  %1120 = load i32, ptr %42, align 4, !tbaa !9
  %1121 = icmp ne i32 %1120, 0
  br i1 %1121, label %1122, label %1143

1122:                                             ; preds = %1116
  %1123 = load ptr, ptr %22, align 8, !tbaa !5
  %1124 = load i32, ptr %31, align 4, !tbaa !9
  %1125 = sext i32 %1124 to i64
  %1126 = getelementptr inbounds %struct.doublecomplex, ptr %1123, i64 %1125
  %1127 = getelementptr inbounds %struct.doublecomplex, ptr %1126, i32 0, i32 0
  %1128 = load double, ptr %1127, align 8, !tbaa !13
  %1129 = fcmp oeq double %1128, 0.000000e+00
  br i1 %1129, label %1130, label %1138

1130:                                             ; preds = %1122
  %1131 = load ptr, ptr %22, align 8, !tbaa !5
  %1132 = load i32, ptr %31, align 4, !tbaa !9
  %1133 = sext i32 %1132 to i64
  %1134 = getelementptr inbounds %struct.doublecomplex, ptr %1131, i64 %1133
  %1135 = getelementptr inbounds %struct.doublecomplex, ptr %1134, i32 0, i32 1
  %1136 = load double, ptr %1135, align 8, !tbaa !15
  %1137 = fcmp oeq double %1136, 0.000000e+00
  br i1 %1137, label %1141, label %1138

1138:                                             ; preds = %1130, %1122
  %1139 = load double, ptr %36, align 8, !tbaa !11
  %1140 = fcmp oeq double %1139, 0.000000e+00
  br label %1141

1141:                                             ; preds = %1138, %1130
  %1142 = phi i1 [ true, %1130 ], [ %1140, %1138 ]
  br label %1143

1143:                                             ; preds = %1141, %1116
  %1144 = phi i1 [ false, %1116 ], [ %1142, %1141 ]
  %1145 = zext i1 %1144 to i32
  store i32 %1145, ptr %42, align 4, !tbaa !9
  %1146 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %1146, ptr %31, align 4, !tbaa !9
  %1147 = load ptr, ptr %19, align 8, !tbaa !5
  %1148 = load double, ptr %1147, align 8, !tbaa !11
  %1149 = load ptr, ptr %22, align 8, !tbaa !5
  %1150 = load i32, ptr %31, align 4, !tbaa !9
  %1151 = sext i32 %1150 to i64
  %1152 = getelementptr inbounds %struct.doublecomplex, ptr %1149, i64 %1151
  %1153 = getelementptr inbounds %struct.doublecomplex, ptr %1152, i32 0, i32 0
  %1154 = load double, ptr %1153, align 8, !tbaa !13
  store double %1154, ptr %33, align 8, !tbaa !11
  %1155 = load double, ptr %33, align 8, !tbaa !11
  %1156 = fcmp oge double %1155, 0.000000e+00
  br i1 %1156, label %1157, label %1159

1157:                                             ; preds = %1143
  %1158 = load double, ptr %33, align 8, !tbaa !11
  br label %1162

1159:                                             ; preds = %1143
  %1160 = load double, ptr %33, align 8, !tbaa !11
  %1161 = fneg double %1160
  br label %1162

1162:                                             ; preds = %1159, %1157
  %1163 = phi double [ %1158, %1157 ], [ %1161, %1159 ]
  %1164 = load ptr, ptr %22, align 8, !tbaa !5
  %1165 = load i32, ptr %46, align 4, !tbaa !9
  %1166 = sext i32 %1165 to i64
  %1167 = getelementptr inbounds %struct.doublecomplex, ptr %1164, i64 %1166
  %1168 = call { double, double } @Cd(ptr noundef %1167)
  %1169 = extractvalue { double, double } %1168, 0
  %1170 = extractvalue { double, double } %1168, 1
  store double %1170, ptr %34, align 8, !tbaa !11
  %1171 = load double, ptr %34, align 8, !tbaa !11
  %1172 = fcmp oge double %1171, 0.000000e+00
  br i1 %1172, label %1173, label %1175

1173:                                             ; preds = %1162
  %1174 = load double, ptr %34, align 8, !tbaa !11
  br label %1178

1175:                                             ; preds = %1162
  %1176 = load double, ptr %34, align 8, !tbaa !11
  %1177 = fneg double %1176
  br label %1178

1178:                                             ; preds = %1175, %1173
  %1179 = phi double [ %1174, %1173 ], [ %1177, %1175 ]
  %1180 = fadd double %1163, %1179
  %1181 = fmul double %1148, %1180
  %1182 = load double, ptr %36, align 8, !tbaa !11
  %1183 = load ptr, ptr %25, align 8, !tbaa !5
  %1184 = load i32, ptr %45, align 4, !tbaa !9
  %1185 = sext i32 %1184 to i64
  %1186 = getelementptr inbounds double, ptr %1183, i64 %1185
  %1187 = load double, ptr %1186, align 8, !tbaa !11
  %1188 = call double @llvm.fmuladd.f64(double %1181, double %1182, double %1187)
  store double %1188, ptr %1186, align 8, !tbaa !11
  %1189 = load ptr, ptr %23, align 8, !tbaa !5
  %1190 = load i32, ptr %1189, align 4, !tbaa !9
  %1191 = load i32, ptr %46, align 4, !tbaa !9
  %1192 = add nsw i32 %1191, %1190
  store i32 %1192, ptr %46, align 4, !tbaa !9
  br label %1193

1193:                                             ; preds = %1178
  %1194 = load i32, ptr %41, align 4, !tbaa !9
  %1195 = add nsw i32 %1194, 1
  store i32 %1195, ptr %41, align 4, !tbaa !9
  br label %1065, !llvm.loop !23

1196:                                             ; preds = %1065
  br label %1197

1197:                                             ; preds = %1196, %1035
  %1198 = load i32, ptr %42, align 4, !tbaa !9
  %1199 = icmp ne i32 %1198, 0
  br i1 %1199, label %1236, label %1200

1200:                                             ; preds = %1197
  %1201 = load ptr, ptr %25, align 8, !tbaa !5
  %1202 = load i32, ptr %45, align 4, !tbaa !9
  %1203 = sext i32 %1202 to i64
  %1204 = getelementptr inbounds double, ptr %1201, i64 %1203
  %1205 = load double, ptr %1204, align 8, !tbaa !11
  %1206 = fcmp oge double %1205, 0.000000e+00
  br i1 %1206, label %1207, label %1217

1207:                                             ; preds = %1200
  %1208 = load double, ptr %39, align 8, !tbaa !11
  %1209 = fcmp oge double %1208, 0.000000e+00
  br i1 %1209, label %1210, label %1212

1210:                                             ; preds = %1207
  %1211 = load double, ptr %39, align 8, !tbaa !11
  br label %1215

1212:                                             ; preds = %1207
  %1213 = load double, ptr %39, align 8, !tbaa !11
  %1214 = fneg double %1213
  br label %1215

1215:                                             ; preds = %1212, %1210
  %1216 = phi double [ %1211, %1210 ], [ %1214, %1212 ]
  br label %1228

1217:                                             ; preds = %1200
  %1218 = load double, ptr %39, align 8, !tbaa !11
  %1219 = fcmp oge double %1218, 0.000000e+00
  br i1 %1219, label %1220, label %1222

1220:                                             ; preds = %1217
  %1221 = load double, ptr %39, align 8, !tbaa !11
  br label %1225

1222:                                             ; preds = %1217
  %1223 = load double, ptr %39, align 8, !tbaa !11
  %1224 = fneg double %1223
  br label %1225

1225:                                             ; preds = %1222, %1220
  %1226 = phi double [ %1221, %1220 ], [ %1224, %1222 ]
  %1227 = fneg double %1226
  br label %1228

1228:                                             ; preds = %1225, %1215
  %1229 = phi double [ %1216, %1215 ], [ %1227, %1225 ]
  %1230 = load ptr, ptr %25, align 8, !tbaa !5
  %1231 = load i32, ptr %45, align 4, !tbaa !9
  %1232 = sext i32 %1231 to i64
  %1233 = getelementptr inbounds double, ptr %1230, i64 %1232
  %1234 = load double, ptr %1233, align 8, !tbaa !11
  %1235 = fadd double %1234, %1229
  store double %1235, ptr %1233, align 8, !tbaa !11
  br label %1236

1236:                                             ; preds = %1228, %1197
  %1237 = load ptr, ptr %26, align 8, !tbaa !5
  %1238 = load i32, ptr %1237, align 4, !tbaa !9
  %1239 = load i32, ptr %45, align 4, !tbaa !9
  %1240 = add nsw i32 %1239, %1238
  store i32 %1240, ptr %45, align 4, !tbaa !9
  br label %1241

1241:                                             ; preds = %1236
  %1242 = load i32, ptr %40, align 4, !tbaa !9
  %1243 = add nsw i32 %1242, 1
  store i32 %1243, ptr %40, align 4, !tbaa !9
  br label %991, !llvm.loop !24

1244:                                             ; preds = %991
  br label %1245

1245:                                             ; preds = %1244, %988
  br label %1246

1246:                                             ; preds = %1245, %727
  store i32 1, ptr %49, align 4
  br label %1247

1247:                                             ; preds = %1246, %162, %144
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 8, 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 8, 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 8, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #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_gbamv_(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, ptr nocapture noundef readonly %3, ptr nocapture noundef readonly %4, ptr nocapture noundef readonly %5, ptr noundef %6, ptr nocapture noundef readonly %7, ptr noundef %8, ptr nocapture noundef readonly %9, ptr nocapture noundef readonly %10, ptr nocapture noundef %11, ptr nocapture noundef readonly %12) local_unnamed_addr #0 {
  %14 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #6
  %15 = load i32, ptr %7, align 4, !tbaa !5
  %narrow = xor i32 %15, -1
  %16 = sext i32 %narrow to i64
  %17 = getelementptr inbounds %struct.doublecomplex, ptr %6, i64 %16
  %18 = getelementptr inbounds i8, ptr %8, i64 -16
  %19 = getelementptr inbounds i8, ptr %11, i64 -8
  %20 = load i32, ptr %0, align 4, !tbaa !5
  %21 = tail call i32 @ilatrans_(ptr noundef nonnull @.str) #6
  %22 = icmp eq i32 %20, %21
  br i1 %22, label %32, label %23

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

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

31:                                               ; preds = %27
  store i32 1, ptr %14, align 4, !tbaa !5
  br label %.thread

32:                                               ; preds = %27, %23, %13
  %33 = load i32, ptr %1, align 4, !tbaa !5
  %34 = icmp slt i32 %33, 0
  br i1 %34, label %35, label %36

35:                                               ; preds = %32
  store i32 2, ptr %14, align 4, !tbaa !5
  br label %.thread

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

39:                                               ; preds = %36
  store i32 3, ptr %14, align 4, !tbaa !5
  br label %.thread

40:                                               ; preds = %36
  %41 = load i32, ptr %3, align 4, !tbaa !5
  %or.cond = icmp ult i32 %41, %33
  br i1 %or.cond, label %43, label %42

42:                                               ; preds = %40
  store i32 4, ptr %14, align 4, !tbaa !5
  br label %.thread

43:                                               ; preds = %40
  %44 = load i32, ptr %4, align 4, !tbaa !5
  %or.cond448 = icmp ult i32 %44, %37
  br i1 %or.cond448, label %46, label %45

45:                                               ; preds = %43
  store i32 5, ptr %14, align 4, !tbaa !5
  br label %.thread

46:                                               ; preds = %43
  %47 = load i32, ptr %7, align 4, !tbaa !5
  %48 = add nuw nsw i32 %44, %41
  %.not423 = icmp sgt i32 %47, %48
  br i1 %.not423, label %50, label %49

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

50:                                               ; preds = %46
  %51 = load i32, ptr %9, align 4, !tbaa !5
  %52 = icmp eq i32 %51, 0
  br i1 %52, label %53, label %54

53:                                               ; preds = %50
  store i32 8, ptr %14, align 4, !tbaa !5
  br label %.thread

54:                                               ; preds = %50
  %55 = load i32, ptr %12, align 4, !tbaa !5
  %56 = icmp eq i32 %55, 0
  br i1 %56, label %57, label %59

57:                                               ; preds = %54
  store i32 11, ptr %14, align 4, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %31, %39, %45, %53, %57, %49, %42, %35
  %58 = call i32 @xerbla_(ptr noundef nonnull @.str.3, ptr noundef nonnull %14, i32 noundef 10) #6
  br label %.loopexit452

59:                                               ; preds = %54
  %60 = load double, ptr %5, align 8, !tbaa !9
  %61 = fcmp oeq double %60, 0.000000e+00
  br i1 %61, label %62, label %65

62:                                               ; preds = %59
  %63 = load double, ptr %10, align 8, !tbaa !9
  %64 = fcmp oeq double %63, 1.000000e+00
  br i1 %64, label %.loopexit452, label %65

65:                                               ; preds = %62, %59
  %66 = load i32, ptr %0, align 4, !tbaa !5
  %67 = tail call i32 @ilatrans_(ptr noundef nonnull @.str) #6
  %68 = icmp eq i32 %66, %67
  %. = select i1 %68, ptr %2, ptr %1
  %.449 = select i1 %68, ptr %1, ptr %2
  %.0406 = load i32, ptr %.449, align 4, !tbaa !5
  %.0407 = load i32, ptr %., align 4, !tbaa !5
  %69 = load i32, ptr %9, align 4, !tbaa !5
  %70 = add nsw i32 %.0407, -1
  %71 = mul nsw i32 %70, %69
  %72 = sub nsw i32 1, %71
  %.inv = icmp slt i32 %69, 1
  %.0390 = select i1 %.inv, i32 %72, i32 1
  %73 = load i32, ptr %12, align 4, !tbaa !5
  %74 = add nsw i32 %.0406, -1
  %75 = mul nsw i32 %73, %74
  %76 = sub nsw i32 1, %75
  %.inv451 = icmp slt i32 %73, 1
  %.0 = select i1 %.inv451, i32 %76, i32 1
  %77 = tail call double @dlamch_(ptr noundef nonnull @.str.4) #6
  %78 = load i32, ptr %2, align 4, !tbaa !5
  %79 = add nsw i32 %78, 1
  %80 = sitofp i32 %79 to double
  %81 = fmul double %77, %80
  %82 = load i32, ptr %4, align 4, !tbaa !5
  %83 = add nsw i32 %82, 1
  %84 = load i32, ptr %3, align 4, !tbaa !5
  %85 = add nsw i32 %84, 1
  %86 = load i32, ptr %9, align 4, !tbaa !5
  %87 = icmp eq i32 %86, 1
  %88 = load i32, ptr %0, align 4, !tbaa !5
  %89 = tail call i32 @ilatrans_(ptr noundef nonnull @.str) #6
  %90 = icmp eq i32 %88, %89
  %.not442497 = icmp slt i32 %.0406, 1
  br i1 %87, label %91, label %259

91:                                               ; preds = %65
  br i1 %90, label %.preheader, label %.preheader454

.preheader454:                                    ; preds = %91
  br i1 %.not442497, label %.loopexit452, label %.lr.ph491

.lr.ph491:                                        ; preds = %.preheader454
  %92 = fcmp oge double %81, 0.000000e+00
  %93 = fneg double %81
  br label %178

.preheader:                                       ; preds = %91
  br i1 %.not442497, label %.loopexit452, label %.lr.ph501

.lr.ph501:                                        ; preds = %.preheader
  %94 = fcmp oge double %81, 0.000000e+00
  %95 = fneg double %81
  %96 = sext i32 %15 to i64
  br label %97

97:                                               ; preds = %.lr.ph501, %174
  %.0392500 = phi i32 [ %.0, %.lr.ph501 ], [ %176, %174 ]
  %.0402498 = phi i32 [ 1, %.lr.ph501 ], [ %177, %174 ]
  %98 = load double, ptr %10, align 8, !tbaa !9
  %99 = fcmp oeq double %98, 0.000000e+00
  %100 = sext i32 %.0392500 to i64
  %101 = getelementptr inbounds double, ptr %19, i64 %100
  br i1 %99, label %.sink.split, label %102

102:                                              ; preds = %97
  %103 = load double, ptr %101, align 8, !tbaa !9
  %104 = fcmp oeq double %103, 0.000000e+00
  br i1 %104, label %110, label %105

105:                                              ; preds = %102
  %106 = fcmp oge double %103, 0.000000e+00
  %107 = fneg double %103
  %108 = select i1 %106, double %103, double %107
  %109 = fmul double %98, %108
  br label %.sink.split

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

110:                                              ; preds = %.sink.split, %102
  %111 = phi double [ %103, %102 ], [ %.sink, %.sink.split ]
  %.0394 = phi i32 [ 1, %102 ], [ %.0394.ph, %.sink.split ]
  %112 = load double, ptr %5, align 8, !tbaa !9
  %113 = fcmp une double %112, 0.000000e+00
  br i1 %113, label %114, label %.loopexit

114:                                              ; preds = %110
  %115 = load i32, ptr %3, align 4, !tbaa !5
  %116 = sub i32 %.0402498, %115
  %117 = load i32, ptr %4, align 4, !tbaa !5
  %118 = add nsw i32 %117, %.0402498
  %119 = tail call i32 @llvm.smin.i32(i32 %118, i32 %.0407)
  %120 = tail call i32 @llvm.smax.i32(i32 %116, i32 1)
  %.not444492 = icmp sgt i32 %120, %119
  br i1 %.not444492, label %.loopexit, label %.lr.ph495

.lr.ph495:                                        ; preds = %114
  %121 = add nsw i32 %.0402498, %83
  %122 = sext i32 %.0392500 to i64
  %123 = getelementptr inbounds double, ptr %19, i64 %122
  %124 = zext nneg i32 %120 to i64
  %125 = zext nneg i32 %119 to i64
  br label %126

126:                                              ; preds = %.lr.ph495, %._crit_edge537
  %indvars.iv524 = phi i64 [ %124, %.lr.ph495 ], [ %indvars.iv.next525, %._crit_edge537 ]
  %.1395494 = phi i32 [ %.0394, %.lr.ph495 ], [ %152, %._crit_edge537 ]
  %127 = trunc nuw nsw i64 %indvars.iv524 to i32
  %128 = sub i32 %121, %127
  %129 = mul nsw i64 %indvars.iv524, %96
  %130 = sext i32 %128 to i64
  %131 = getelementptr %struct.doublecomplex, ptr %17, i64 %129
  %132 = getelementptr %struct.doublecomplex, ptr %131, i64 %130
  %133 = load double, ptr %132, align 8, !tbaa !11
  %134 = fcmp oge double %133, 0.000000e+00
  %135 = fneg double %133
  %136 = select i1 %134, double %133, double %135
  %137 = tail call { double, double } @Cd(ptr noundef nonnull %132)
  %138 = extractvalue { double, double } %137, 1
  %139 = fcmp oge double %138, 0.000000e+00
  %140 = fneg double %138
  %141 = select i1 %139, double %138, double %140
  %142 = fadd double %136, %141
  %.not447 = icmp eq i32 %.1395494, 0
  %.phi.trans.insert538 = getelementptr inbounds %struct.doublecomplex, ptr %18, i64 %indvars.iv524
  %.pre539 = load double, ptr %.phi.trans.insert538, align 8, !tbaa !11
  br i1 %.not447, label %._crit_edge537, label %143

143:                                              ; preds = %126
  %144 = fcmp oeq double %.pre539, 0.000000e+00
  br i1 %144, label %145, label %149

145:                                              ; preds = %143
  %146 = getelementptr inbounds i8, ptr %.phi.trans.insert538, i64 8
  %147 = load double, ptr %146, align 8, !tbaa !13
  %148 = fcmp oeq double %147, 0.000000e+00
  br i1 %148, label %._crit_edge537, label %149

149:                                              ; preds = %145, %143
  %150 = fcmp oeq double %142, 0.000000e+00
  br label %._crit_edge537

._crit_edge537:                                   ; preds = %126, %145, %149
  %151 = phi i1 [ true, %145 ], [ %150, %149 ], [ false, %126 ]
  %152 = zext i1 %151 to i32
  %153 = load double, ptr %5, align 8, !tbaa !9
  %154 = getelementptr inbounds %struct.doublecomplex, ptr %18, i64 %indvars.iv524
  %155 = tail call { double, double } @Cd(ptr noundef nonnull %154)
  %156 = extractvalue { double, double } %155, 1
  %157 = insertelement <2 x double> poison, double %.pre539, i64 0
  %158 = insertelement <2 x double> %157, double %156, i64 1
  %159 = fcmp oge <2 x double> %158, zeroinitializer
  %160 = fneg <2 x double> %158
  %161 = select <2 x i1> %159, <2 x double> %158, <2 x double> %160
  %shift = shufflevector <2 x double> %161, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %162 = fadd <2 x double> %161, %shift
  %163 = extractelement <2 x double> %162, i64 0
  %164 = fmul double %153, %163
  %165 = load double, ptr %123, align 8, !tbaa !9
  %166 = tail call double @llvm.fmuladd.f64(double %164, double %142, double %165)
  store double %166, ptr %123, align 8, !tbaa !9
  %indvars.iv.next525 = add nuw nsw i64 %indvars.iv524, 1
  %.not444.not = icmp ult i64 %indvars.iv524, %125
  br i1 %.not444.not, label %126, label %.loopexit, !llvm.loop !14

.loopexit:                                        ; preds = %._crit_edge537, %114, %110
  %167 = phi double [ %111, %110 ], [ %111, %114 ], [ %166, %._crit_edge537 ]
  %.2396 = phi i32 [ %.0394, %110 ], [ %.0394, %114 ], [ %152, %._crit_edge537 ]
  %.not445 = icmp eq i32 %.2396, 0
  br i1 %.not445, label %168, label %174

168:                                              ; preds = %.loopexit
  %169 = sext i32 %.0392500 to i64
  %170 = getelementptr inbounds double, ptr %19, i64 %169
  %171 = fcmp ult double %167, 0.000000e+00
  %172 = xor i1 %94, %171
  %.502 = select i1 %172, double %81, double %95
  %173 = fadd double %167, %.502
  store double %173, ptr %170, align 8, !tbaa !9
  br label %174

174:                                              ; preds = %168, %.loopexit
  %175 = load i32, ptr %12, align 4, !tbaa !5
  %176 = add nsw i32 %175, %.0392500
  %177 = add nuw i32 %.0402498, 1
  %exitcond527.not = icmp eq i32 %.0402498, %.0406
  br i1 %exitcond527.not, label %.loopexit452, label %97, !llvm.loop !16

178:                                              ; preds = %.lr.ph491, %255
  %.1393490 = phi i32 [ %.0, %.lr.ph491 ], [ %257, %255 ]
  %.1403488 = phi i32 [ 1, %.lr.ph491 ], [ %258, %255 ]
  %179 = load double, ptr %10, align 8, !tbaa !9
  %180 = fcmp oeq double %179, 0.000000e+00
  %181 = sext i32 %.1393490 to i64
  %182 = getelementptr inbounds double, ptr %19, i64 %181
  br i1 %180, label %.sink.split551, label %183

183:                                              ; preds = %178
  %184 = load double, ptr %182, align 8, !tbaa !9
  %185 = fcmp oeq double %184, 0.000000e+00
  br i1 %185, label %191, label %186

186:                                              ; preds = %183
  %187 = fcmp oge double %184, 0.000000e+00
  %188 = fneg double %184
  %189 = select i1 %187, double %184, double %188
  %190 = fmul double %179, %189
  br label %.sink.split551

.sink.split551:                                   ; preds = %178, %186
  %.sink553 = phi double [ %190, %186 ], [ 0.000000e+00, %178 ]
  %.3397.ph = phi i32 [ 0, %186 ], [ 1, %178 ]
  store double %.sink553, ptr %182, align 8, !tbaa !9
  br label %191

191:                                              ; preds = %.sink.split551, %183
  %192 = phi double [ %184, %183 ], [ %.sink553, %.sink.split551 ]
  %.3397 = phi i32 [ 1, %183 ], [ %.3397.ph, %.sink.split551 ]
  %193 = load double, ptr %5, align 8, !tbaa !9
  %194 = fcmp une double %193, 0.000000e+00
  br i1 %194, label %195, label %.loopexit453

195:                                              ; preds = %191
  %196 = load i32, ptr %3, align 4, !tbaa !5
  %197 = sub i32 %.1403488, %196
  %198 = load i32, ptr %4, align 4, !tbaa !5
  %199 = add nsw i32 %198, %.1403488
  %200 = tail call i32 @llvm.smin.i32(i32 %199, i32 %.0407)
  %201 = tail call i32 @llvm.smax.i32(i32 %197, i32 1)
  %.not438482 = icmp sgt i32 %201, %200
  br i1 %.not438482, label %.loopexit453, label %.lr.ph485

.lr.ph485:                                        ; preds = %195
  %202 = sub i32 %85, %.1403488
  %203 = mul nsw i32 %.1403488, %15
  %204 = add i32 %202, %203
  %205 = sext i32 %.1393490 to i64
  %206 = getelementptr inbounds double, ptr %19, i64 %205
  %207 = zext nneg i32 %201 to i64
  %208 = zext nneg i32 %200 to i64
  br label %209

209:                                              ; preds = %.lr.ph485, %._crit_edge534
  %indvars.iv519 = phi i64 [ %207, %.lr.ph485 ], [ %indvars.iv.next520, %._crit_edge534 ]
  %.4484 = phi i32 [ %.3397, %.lr.ph485 ], [ %233, %._crit_edge534 ]
  %210 = trunc nuw nsw i64 %indvars.iv519 to i32
  %211 = add i32 %204, %210
  %212 = sext i32 %211 to i64
  %213 = getelementptr inbounds %struct.doublecomplex, ptr %17, i64 %212
  %214 = load double, ptr %213, align 8, !tbaa !11
  %215 = fcmp oge double %214, 0.000000e+00
  %216 = fneg double %214
  %217 = select i1 %215, double %214, double %216
  %218 = tail call { double, double } @Cd(ptr noundef nonnull %213)
  %219 = extractvalue { double, double } %218, 1
  %220 = fcmp oge double %219, 0.000000e+00
  %221 = fneg double %219
  %222 = select i1 %220, double %219, double %221
  %223 = fadd double %217, %222
  %.not441 = icmp eq i32 %.4484, 0
  %.phi.trans.insert535 = getelementptr inbounds %struct.doublecomplex, ptr %18, i64 %indvars.iv519
  %.pre536 = load double, ptr %.phi.trans.insert535, align 8, !tbaa !11
  br i1 %.not441, label %._crit_edge534, label %224

224:                                              ; preds = %209
  %225 = fcmp oeq double %.pre536, 0.000000e+00
  br i1 %225, label %226, label %230

226:                                              ; preds = %224
  %227 = getelementptr inbounds i8, ptr %.phi.trans.insert535, i64 8
  %228 = load double, ptr %227, align 8, !tbaa !13
  %229 = fcmp oeq double %228, 0.000000e+00
  br i1 %229, label %._crit_edge534, label %230

230:                                              ; preds = %226, %224
  %231 = fcmp oeq double %223, 0.000000e+00
  br label %._crit_edge534

._crit_edge534:                                   ; preds = %209, %226, %230
  %232 = phi i1 [ true, %226 ], [ %231, %230 ], [ false, %209 ]
  %233 = zext i1 %232 to i32
  %234 = load double, ptr %5, align 8, !tbaa !9
  %235 = getelementptr inbounds %struct.doublecomplex, ptr %18, i64 %indvars.iv519
  %236 = tail call { double, double } @Cd(ptr noundef nonnull %235)
  %237 = extractvalue { double, double } %236, 1
  %238 = insertelement <2 x double> poison, double %.pre536, i64 0
  %239 = insertelement <2 x double> %238, double %237, i64 1
  %240 = fcmp oge <2 x double> %239, zeroinitializer
  %241 = fneg <2 x double> %239
  %242 = select <2 x i1> %240, <2 x double> %239, <2 x double> %241
  %shift570 = shufflevector <2 x double> %242, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %243 = fadd <2 x double> %242, %shift570
  %244 = extractelement <2 x double> %243, i64 0
  %245 = fmul double %234, %244
  %246 = load double, ptr %206, align 8, !tbaa !9
  %247 = tail call double @llvm.fmuladd.f64(double %245, double %223, double %246)
  store double %247, ptr %206, align 8, !tbaa !9
  %indvars.iv.next520 = add nuw nsw i64 %indvars.iv519, 1
  %.not438.not = icmp ult i64 %indvars.iv519, %208
  br i1 %.not438.not, label %209, label %.loopexit453, !llvm.loop !17

.loopexit453:                                     ; preds = %._crit_edge534, %195, %191
  %248 = phi double [ %192, %191 ], [ %192, %195 ], [ %247, %._crit_edge534 ]
  %.5 = phi i32 [ %.3397, %191 ], [ %.3397, %195 ], [ %233, %._crit_edge534 ]
  %.not439 = icmp eq i32 %.5, 0
  br i1 %.not439, label %249, label %255

249:                                              ; preds = %.loopexit453
  %250 = sext i32 %.1393490 to i64
  %251 = getelementptr inbounds double, ptr %19, i64 %250
  %252 = fcmp ult double %248, 0.000000e+00
  %253 = xor i1 %92, %252
  %.503 = select i1 %253, double %81, double %93
  %254 = fadd double %248, %.503
  store double %254, ptr %251, align 8, !tbaa !9
  br label %255

255:                                              ; preds = %249, %.loopexit453
  %256 = load i32, ptr %12, align 4, !tbaa !5
  %257 = add nsw i32 %256, %.1393490
  %258 = add nuw i32 %.1403488, 1
  %exitcond522.not = icmp eq i32 %.1403488, %.0406
  br i1 %exitcond522.not, label %.loopexit452, label %178, !llvm.loop !18

259:                                              ; preds = %65
  br i1 %90, label %.preheader457, label %.preheader460

.preheader460:                                    ; preds = %259
  br i1 %.not442497, label %.loopexit452, label %.lr.ph470

.lr.ph470:                                        ; preds = %.preheader460
  %260 = fcmp oge double %81, 0.000000e+00
  %261 = fneg double %81
  br label %348

.preheader457:                                    ; preds = %259
  br i1 %.not442497, label %.loopexit452, label %.lr.ph481

.lr.ph481:                                        ; preds = %.preheader457
  %262 = fcmp oge double %81, 0.000000e+00
  %263 = fneg double %81
  %264 = sext i32 %15 to i64
  br label %265

265:                                              ; preds = %.lr.ph481, %344
  %.2480 = phi i32 [ %.0, %.lr.ph481 ], [ %346, %344 ]
  %.2404478 = phi i32 [ 1, %.lr.ph481 ], [ %347, %344 ]
  %266 = load double, ptr %10, align 8, !tbaa !9
  %267 = fcmp oeq double %266, 0.000000e+00
  %268 = sext i32 %.2480 to i64
  %269 = getelementptr inbounds double, ptr %19, i64 %268
  br i1 %267, label %.sink.split554, label %270

270:                                              ; preds = %265
  %271 = load double, ptr %269, align 8, !tbaa !9
  %272 = fcmp oeq double %271, 0.000000e+00
  br i1 %272, label %278, label %273

273:                                              ; preds = %270
  %274 = fcmp oge double %271, 0.000000e+00
  %275 = fneg double %271
  %276 = select i1 %274, double %271, double %275
  %277 = fmul double %266, %276
  br label %.sink.split554

.sink.split554:                                   ; preds = %265, %273
  %.sink556 = phi double [ %277, %273 ], [ 0.000000e+00, %265 ]
  %.6.ph = phi i32 [ 0, %273 ], [ 1, %265 ]
  store double %.sink556, ptr %269, align 8, !tbaa !9
  br label %278

278:                                              ; preds = %.sink.split554, %270
  %279 = phi double [ %271, %270 ], [ %.sink556, %.sink.split554 ]
  %.6 = phi i32 [ 1, %270 ], [ %.6.ph, %.sink.split554 ]
  %280 = load double, ptr %5, align 8, !tbaa !9
  %281 = fcmp une double %280, 0.000000e+00
  br i1 %281, label %282, label %.loopexit456

282:                                              ; preds = %278
  %283 = load i32, ptr %3, align 4, !tbaa !5
  %284 = sub i32 %.2404478, %283
  %285 = load i32, ptr %4, align 4, !tbaa !5
  %286 = add nsw i32 %285, %.2404478
  %287 = tail call i32 @llvm.smin.i32(i32 %286, i32 %.0407)
  %288 = tail call i32 @llvm.smax.i32(i32 %284, i32 1)
  %.not432471 = icmp sgt i32 %288, %287
  br i1 %.not432471, label %.loopexit456, label %.lr.ph475

.lr.ph475:                                        ; preds = %282
  %289 = add nsw i32 %.2404478, %83
  %290 = sext i32 %.2480 to i64
  %291 = getelementptr inbounds double, ptr %19, i64 %290
  %292 = zext nneg i32 %288 to i64
  %293 = zext nneg i32 %287 to i64
  br label %294

294:                                              ; preds = %.lr.ph475, %._crit_edge530
  %indvars.iv514 = phi i64 [ %292, %.lr.ph475 ], [ %indvars.iv.next515, %._crit_edge530 ]
  %.0391474 = phi i32 [ %.0390, %.lr.ph475 ], [ %336, %._crit_edge530 ]
  %.7473 = phi i32 [ %.6, %.lr.ph475 ], [ %320, %._crit_edge530 ]
  %295 = trunc nuw nsw i64 %indvars.iv514 to i32
  %296 = sub i32 %289, %295
  %297 = mul nsw i64 %indvars.iv514, %264
  %298 = sext i32 %296 to i64
  %299 = getelementptr %struct.doublecomplex, ptr %17, i64 %297
  %300 = getelementptr %struct.doublecomplex, ptr %299, i64 %298
  %301 = load double, ptr %300, align 8, !tbaa !11
  %302 = fcmp oge double %301, 0.000000e+00
  %303 = fneg double %301
  %304 = select i1 %302, double %301, double %303
  %305 = tail call { double, double } @Cd(ptr noundef nonnull %300)
  %306 = extractvalue { double, double } %305, 1
  %307 = fcmp oge double %306, 0.000000e+00
  %308 = fneg double %306
  %309 = select i1 %307, double %306, double %308
  %310 = fadd double %304, %309
  %.not435 = icmp eq i32 %.7473, 0
  %.phi.trans.insert531 = sext i32 %.0391474 to i64
  %.phi.trans.insert532 = getelementptr inbounds %struct.doublecomplex, ptr %18, i64 %.phi.trans.insert531
  %.pre533 = load double, ptr %.phi.trans.insert532, align 8, !tbaa !11
  br i1 %.not435, label %._crit_edge530, label %311

311:                                              ; preds = %294
  %312 = fcmp oeq double %.pre533, 0.000000e+00
  br i1 %312, label %313, label %317

313:                                              ; preds = %311
  %314 = getelementptr inbounds i8, ptr %.phi.trans.insert532, i64 8
  %315 = load double, ptr %314, align 8, !tbaa !13
  %316 = fcmp oeq double %315, 0.000000e+00
  br i1 %316, label %._crit_edge530, label %317

317:                                              ; preds = %313, %311
  %318 = fcmp oeq double %310, 0.000000e+00
  br label %._crit_edge530

._crit_edge530:                                   ; preds = %294, %313, %317
  %319 = phi i1 [ true, %313 ], [ %318, %317 ], [ false, %294 ]
  %320 = zext i1 %319 to i32
  %321 = load double, ptr %5, align 8, !tbaa !9
  %322 = getelementptr inbounds %struct.doublecomplex, ptr %18, i64 %.phi.trans.insert531
  %323 = tail call { double, double } @Cd(ptr noundef nonnull %322)
  %324 = extractvalue { double, double } %323, 1
  %325 = insertelement <2 x double> poison, double %.pre533, i64 0
  %326 = insertelement <2 x double> %325, double %324, i64 1
  %327 = fcmp oge <2 x double> %326, zeroinitializer
  %328 = fneg <2 x double> %326
  %329 = select <2 x i1> %327, <2 x double> %326, <2 x double> %328
  %shift571 = shufflevector <2 x double> %329, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %330 = fadd <2 x double> %329, %shift571
  %331 = extractelement <2 x double> %330, i64 0
  %332 = fmul double %321, %331
  %333 = load double, ptr %291, align 8, !tbaa !9
  %334 = tail call double @llvm.fmuladd.f64(double %332, double %310, double %333)
  store double %334, ptr %291, align 8, !tbaa !9
  %335 = load i32, ptr %9, align 4, !tbaa !5
  %336 = add nsw i32 %335, %.0391474
  %indvars.iv.next515 = add nuw nsw i64 %indvars.iv514, 1
  %.not432.not = icmp ult i64 %indvars.iv514, %293
  br i1 %.not432.not, label %294, label %.loopexit456, !llvm.loop !19

.loopexit456:                                     ; preds = %._crit_edge530, %282, %278
  %337 = phi double [ %279, %278 ], [ %279, %282 ], [ %334, %._crit_edge530 ]
  %.8 = phi i32 [ %.6, %278 ], [ %.6, %282 ], [ %320, %._crit_edge530 ]
  %.not433 = icmp eq i32 %.8, 0
  br i1 %.not433, label %338, label %344

338:                                              ; preds = %.loopexit456
  %339 = sext i32 %.2480 to i64
  %340 = getelementptr inbounds double, ptr %19, i64 %339
  %341 = fcmp ult double %337, 0.000000e+00
  %342 = xor i1 %262, %341
  %.504 = select i1 %342, double %81, double %263
  %343 = fadd double %337, %.504
  store double %343, ptr %340, align 8, !tbaa !9
  br label %344

344:                                              ; preds = %338, %.loopexit456
  %345 = load i32, ptr %12, align 4, !tbaa !5
  %346 = add nsw i32 %345, %.2480
  %347 = add nuw i32 %.2404478, 1
  %exitcond517.not = icmp eq i32 %.2404478, %.0406
  br i1 %exitcond517.not, label %.loopexit452, label %265, !llvm.loop !20

348:                                              ; preds = %.lr.ph470, %427
  %.3469 = phi i32 [ %.0, %.lr.ph470 ], [ %429, %427 ]
  %.3405467 = phi i32 [ 1, %.lr.ph470 ], [ %430, %427 ]
  %349 = load double, ptr %10, align 8, !tbaa !9
  %350 = fcmp oeq double %349, 0.000000e+00
  %351 = sext i32 %.3469 to i64
  %352 = getelementptr inbounds double, ptr %19, i64 %351
  br i1 %350, label %.sink.split557, label %353

353:                                              ; preds = %348
  %354 = load double, ptr %352, align 8, !tbaa !9
  %355 = fcmp oeq double %354, 0.000000e+00
  br i1 %355, label %361, label %356

356:                                              ; preds = %353
  %357 = fcmp oge double %354, 0.000000e+00
  %358 = fneg double %354
  %359 = select i1 %357, double %354, double %358
  %360 = fmul double %349, %359
  br label %.sink.split557

.sink.split557:                                   ; preds = %348, %356
  %.sink559 = phi double [ %360, %356 ], [ 0.000000e+00, %348 ]
  %.9.ph = phi i32 [ 0, %356 ], [ 1, %348 ]
  store double %.sink559, ptr %352, align 8, !tbaa !9
  br label %361

361:                                              ; preds = %.sink.split557, %353
  %362 = phi double [ %354, %353 ], [ %.sink559, %.sink.split557 ]
  %.9 = phi i32 [ 1, %353 ], [ %.9.ph, %.sink.split557 ]
  %363 = load double, ptr %5, align 8, !tbaa !9
  %364 = fcmp une double %363, 0.000000e+00
  br i1 %364, label %365, label %.loopexit459

365:                                              ; preds = %361
  %366 = load i32, ptr %3, align 4, !tbaa !5
  %367 = sub i32 %.3405467, %366
  %368 = load i32, ptr %4, align 4, !tbaa !5
  %369 = add nsw i32 %368, %.3405467
  %370 = tail call i32 @llvm.smin.i32(i32 %369, i32 %.0407)
  %371 = tail call i32 @llvm.smax.i32(i32 %367, i32 1)
  %.not427462 = icmp sgt i32 %371, %370
  br i1 %.not427462, label %.loopexit459, label %.lr.ph

.lr.ph:                                           ; preds = %365
  %372 = sub i32 %85, %.3405467
  %373 = mul nsw i32 %.3405467, %15
  %374 = add i32 %372, %373
  %375 = sext i32 %.3469 to i64
  %376 = getelementptr inbounds double, ptr %19, i64 %375
  %377 = zext nneg i32 %371 to i64
  %378 = zext nneg i32 %370 to i64
  br label %379

379:                                              ; preds = %.lr.ph, %._crit_edge
  %indvars.iv = phi i64 [ %377, %.lr.ph ], [ %indvars.iv.next, %._crit_edge ]
  %.1465 = phi i32 [ %.0390, %.lr.ph ], [ %419, %._crit_edge ]
  %.10464 = phi i32 [ %.9, %.lr.ph ], [ %403, %._crit_edge ]
  %380 = trunc nuw nsw i64 %indvars.iv to i32
  %381 = add i32 %374, %380
  %382 = sext i32 %381 to i64
  %383 = getelementptr inbounds %struct.doublecomplex, ptr %17, i64 %382
  %384 = load double, ptr %383, align 8, !tbaa !11
  %385 = fcmp oge double %384, 0.000000e+00
  %386 = fneg double %384
  %387 = select i1 %385, double %384, double %386
  %388 = tail call { double, double } @Cd(ptr noundef nonnull %383)
  %389 = extractvalue { double, double } %388, 1
  %390 = fcmp oge double %389, 0.000000e+00
  %391 = fneg double %389
  %392 = select i1 %390, double %389, double %391
  %393 = fadd double %387, %392
  %.not429 = icmp eq i32 %.10464, 0
  %.phi.trans.insert = sext i32 %.1465 to i64
  %.phi.trans.insert529 = getelementptr inbounds %struct.doublecomplex, ptr %18, i64 %.phi.trans.insert
  %.pre = load double, ptr %.phi.trans.insert529, align 8, !tbaa !11
  br i1 %.not429, label %._crit_edge, label %394

394:                                              ; preds = %379
  %395 = fcmp oeq double %.pre, 0.000000e+00
  br i1 %395, label %396, label %400

396:                                              ; preds = %394
  %397 = getelementptr inbounds i8, ptr %.phi.trans.insert529, i64 8
  %398 = load double, ptr %397, align 8, !tbaa !13
  %399 = fcmp oeq double %398, 0.000000e+00
  br i1 %399, label %._crit_edge, label %400

400:                                              ; preds = %396, %394
  %401 = fcmp oeq double %393, 0.000000e+00
  br label %._crit_edge

._crit_edge:                                      ; preds = %379, %396, %400
  %402 = phi i1 [ true, %396 ], [ %401, %400 ], [ false, %379 ]
  %403 = zext i1 %402 to i32
  %404 = load double, ptr %5, align 8, !tbaa !9
  %405 = getelementptr inbounds %struct.doublecomplex, ptr %18, i64 %.phi.trans.insert
  %406 = tail call { double, double } @Cd(ptr noundef nonnull %405)
  %407 = extractvalue { double, double } %406, 1
  %408 = insertelement <2 x double> poison, double %.pre, i64 0
  %409 = insertelement <2 x double> %408, double %407, i64 1
  %410 = fcmp oge <2 x double> %409, zeroinitializer
  %411 = fneg <2 x double> %409
  %412 = select <2 x i1> %410, <2 x double> %409, <2 x double> %411
  %shift572 = shufflevector <2 x double> %412, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %413 = fadd <2 x double> %412, %shift572
  %414 = extractelement <2 x double> %413, i64 0
  %415 = fmul double %404, %414
  %416 = load double, ptr %376, align 8, !tbaa !9
  %417 = tail call double @llvm.fmuladd.f64(double %415, double %393, double %416)
  store double %417, ptr %376, align 8, !tbaa !9
  %418 = load i32, ptr %9, align 4, !tbaa !5
  %419 = add nsw i32 %418, %.1465
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %.not427.not = icmp ult i64 %indvars.iv, %378
  br i1 %.not427.not, label %379, label %.loopexit459, !llvm.loop !21

.loopexit459:                                     ; preds = %._crit_edge, %365, %361
  %420 = phi double [ %362, %361 ], [ %362, %365 ], [ %417, %._crit_edge ]
  %.11 = phi i32 [ %.9, %361 ], [ %.9, %365 ], [ %403, %._crit_edge ]
  %.not428 = icmp eq i32 %.11, 0
  br i1 %.not428, label %421, label %427

421:                                              ; preds = %.loopexit459
  %422 = sext i32 %.3469 to i64
  %423 = getelementptr inbounds double, ptr %19, i64 %422
  %424 = fcmp ult double %420, 0.000000e+00
  %425 = xor i1 %260, %424
  %.505 = select i1 %425, double %81, double %261
  %426 = fadd double %420, %.505
  store double %426, ptr %423, align 8, !tbaa !9
  br label %427

427:                                              ; preds = %421, %.loopexit459
  %428 = load i32, ptr %12, align 4, !tbaa !5
  %429 = add nsw i32 %428, %.3469
  %430 = add nuw i32 %.3405467, 1
  %exitcond.not = icmp eq i32 %.3405467, %.0406
  br i1 %exitcond.not, label %.loopexit452, label %348, !llvm.loop !22

.loopexit452:                                     ; preds = %427, %344, %255, %174, %.preheader460, %.preheader457, %.preheader454, %.preheader, %62, %.thread
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #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.smin.i32(i32, i32) #5

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smax.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