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

; 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 [5 x i8], align 1
@c_b1 = external hidden global %struct.doublecomplex, align 8
@.str.1 = external hidden unnamed_addr constant [10 x i8], align 1
@c__1 = external hidden global i32, align 4
@c__2 = external hidden global i32, align 4
@c_b28 = external hidden global double, align 8

; Function Attrs: nounwind uwtable
define dso_local void @zlarrv_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef %23, ptr noundef %24) #0 {
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = alloca ptr, align 8
  %48 = alloca ptr, align 8
  %49 = alloca ptr, align 8
  %50 = alloca ptr, align 8
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca double, align 8
  %60 = alloca double, align 8
  %61 = alloca %struct.doublecomplex, align 8
  %62 = alloca i32, align 4
  %63 = alloca i32, align 4
  %64 = alloca i32, align 4
  %65 = alloca double, align 8
  %66 = alloca i32, align 4
  %67 = alloca double, align 8
  %68 = alloca double, align 8
  %69 = alloca i32, align 4
  %70 = alloca i32, align 4
  %71 = alloca double, align 8
  %72 = alloca i32, align 4
  %73 = alloca i32, align 4
  %74 = alloca i32, align 4
  %75 = alloca i32, align 4
  %76 = alloca i32, align 4
  %77 = alloca i32, align 4
  %78 = alloca i32, align 4
  %79 = alloca i32, align 4
  %80 = alloca double, align 8
  %81 = alloca i32, align 4
  %82 = alloca double, align 8
  %83 = alloca i32, align 4
  %84 = alloca i32, align 4
  %85 = alloca double, align 8
  %86 = alloca i32, align 4
  %87 = alloca double, align 8
  %88 = alloca i32, align 4
  %89 = alloca i32, align 4
  %90 = alloca double, align 8
  %91 = alloca i32, align 4
  %92 = alloca i32, align 4
  %93 = alloca i32, align 4
  %94 = alloca i32, align 4
  %95 = alloca i32, align 4
  %96 = alloca i32, align 4
  %97 = alloca double, align 8
  %98 = alloca i32, align 4
  %99 = alloca double, align 8
  %100 = alloca i32, align 4
  %101 = alloca i32, align 4
  %102 = alloca double, align 8
  %103 = alloca i32, align 4
  %104 = alloca i32, align 4
  %105 = alloca i32, align 4
  %106 = alloca i32, align 4
  %107 = alloca double, align 8
  %108 = alloca double, align 8
  %109 = alloca i32, align 4
  %110 = alloca i32, align 4
  %111 = alloca i32, align 4
  %112 = alloca i32, align 4
  %113 = alloca double, align 8
  %114 = alloca i32, align 4
  %115 = alloca double, align 8
  %116 = alloca i32, align 4
  %117 = alloca double, align 8
  %118 = alloca i32, align 4
  %119 = alloca i32, align 4
  %120 = alloca i32, align 4
  %121 = alloca double, align 8
  %122 = alloca i32, align 4
  %123 = alloca i32, align 4
  %124 = alloca i32, align 4
  %125 = alloca i32, align 4
  %126 = alloca i32, align 4
  %127 = alloca i32, align 4
  %128 = alloca i32, align 4
  %129 = alloca i32, align 4
  %130 = alloca i32, align 4
  %131 = alloca i32, align 4
  %132 = alloca i32, align 4
  %133 = alloca i32, align 4
  %134 = alloca i32, align 4
  %135 = alloca i32, align 4
  %136 = alloca double, align 8
  %137 = alloca i32, align 4
  %138 = alloca i32, align 4
  %139 = alloca i32, align 4
  %140 = alloca double, align 8
  %141 = alloca i32, align 4
  %142 = alloca i32, align 4
  %143 = alloca double, align 8
  %144 = alloca double, align 8
  %145 = alloca double, align 8
  %146 = alloca double, align 8
  %147 = alloca double, align 8
  %148 = alloca double, align 8
  %149 = alloca i32, align 4
  %150 = alloca double, align 8
  %151 = alloca i32, align 4
  store ptr %0, ptr %26, align 8, !tbaa !5
  store ptr %1, ptr %27, align 8, !tbaa !5
  store ptr %2, ptr %28, align 8, !tbaa !5
  store ptr %3, ptr %29, align 8, !tbaa !5
  store ptr %4, ptr %30, align 8, !tbaa !5
  store ptr %5, ptr %31, align 8, !tbaa !5
  store ptr %6, ptr %32, align 8, !tbaa !5
  store ptr %7, ptr %33, align 8, !tbaa !5
  store ptr %8, ptr %34, align 8, !tbaa !5
  store ptr %9, ptr %35, align 8, !tbaa !5
  store ptr %10, ptr %36, align 8, !tbaa !5
  store ptr %11, ptr %37, align 8, !tbaa !5
  store ptr %12, ptr %38, align 8, !tbaa !5
  store ptr %13, ptr %39, align 8, !tbaa !5
  store ptr %14, ptr %40, align 8, !tbaa !5
  store ptr %15, ptr %41, align 8, !tbaa !5
  store ptr %16, ptr %42, align 8, !tbaa !5
  store ptr %17, ptr %43, align 8, !tbaa !5
  store ptr %18, ptr %44, align 8, !tbaa !5
  store ptr %19, ptr %45, align 8, !tbaa !5
  store ptr %20, ptr %46, align 8, !tbaa !5
  store ptr %21, ptr %47, align 8, !tbaa !5
  store ptr %22, ptr %48, align 8, !tbaa !5
  store ptr %23, ptr %49, align 8, !tbaa !5
  store ptr %24, ptr %50, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %61) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %86) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %88) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %89) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %93) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %94) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %95) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %96) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %98) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %100) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %101) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %103) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %104) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %105) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %106) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %109) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %110) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %111) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %112) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %113) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %114) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %115) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %116) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %117) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %118) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %119) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %120) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %121) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %122) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %123) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %124) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %125) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %126) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %127) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %128) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %129) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %130) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %131) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %132) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %133) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %134) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %135) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %136) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %137) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %138) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %139) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %140) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %141) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %142) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %143) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %144) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %145) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %146) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %147) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %148) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %149) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %150) #5
  %152 = load ptr, ptr %29, align 8, !tbaa !5
  %153 = getelementptr inbounds double, ptr %152, i32 -1
  store ptr %153, ptr %29, align 8, !tbaa !5
  %154 = load ptr, ptr %30, align 8, !tbaa !5
  %155 = getelementptr inbounds double, ptr %154, i32 -1
  store ptr %155, ptr %30, align 8, !tbaa !5
  %156 = load ptr, ptr %32, align 8, !tbaa !5
  %157 = getelementptr inbounds i32, ptr %156, i32 -1
  store ptr %157, ptr %32, align 8, !tbaa !5
  %158 = load ptr, ptr %39, align 8, !tbaa !5
  %159 = getelementptr inbounds double, ptr %158, i32 -1
  store ptr %159, ptr %39, align 8, !tbaa !5
  %160 = load ptr, ptr %40, align 8, !tbaa !5
  %161 = getelementptr inbounds double, ptr %160, i32 -1
  store ptr %161, ptr %40, align 8, !tbaa !5
  %162 = load ptr, ptr %41, align 8, !tbaa !5
  %163 = getelementptr inbounds double, ptr %162, i32 -1
  store ptr %163, ptr %41, align 8, !tbaa !5
  %164 = load ptr, ptr %42, align 8, !tbaa !5
  %165 = getelementptr inbounds i32, ptr %164, i32 -1
  store ptr %165, ptr %42, align 8, !tbaa !5
  %166 = load ptr, ptr %43, align 8, !tbaa !5
  %167 = getelementptr inbounds i32, ptr %166, i32 -1
  store ptr %167, ptr %43, align 8, !tbaa !5
  %168 = load ptr, ptr %44, align 8, !tbaa !5
  %169 = getelementptr inbounds double, ptr %168, i32 -1
  store ptr %169, ptr %44, align 8, !tbaa !5
  %170 = load ptr, ptr %46, align 8, !tbaa !5
  %171 = load i32, ptr %170, align 4, !tbaa !9
  store i32 %171, ptr %51, align 4, !tbaa !9
  %172 = load i32, ptr %51, align 4, !tbaa !9
  %173 = mul nsw i32 %172, 1
  %174 = add nsw i32 1, %173
  store i32 %174, ptr %52, align 4, !tbaa !9
  %175 = load i32, ptr %52, align 4, !tbaa !9
  %176 = load ptr, ptr %45, align 8, !tbaa !5
  %177 = sext i32 %175 to i64
  %178 = sub i64 0, %177
  %179 = getelementptr inbounds %struct.doublecomplex, ptr %176, i64 %178
  store ptr %179, ptr %45, align 8, !tbaa !5
  %180 = load ptr, ptr %47, align 8, !tbaa !5
  %181 = getelementptr inbounds i32, ptr %180, i32 -1
  store ptr %181, ptr %47, align 8, !tbaa !5
  %182 = load ptr, ptr %48, align 8, !tbaa !5
  %183 = getelementptr inbounds double, ptr %182, i32 -1
  store ptr %183, ptr %48, align 8, !tbaa !5
  %184 = load ptr, ptr %49, align 8, !tbaa !5
  %185 = getelementptr inbounds i32, ptr %184, i32 -1
  store ptr %185, ptr %49, align 8, !tbaa !5
  %186 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 0, ptr %186, align 4, !tbaa !9
  %187 = load ptr, ptr %26, align 8, !tbaa !5
  %188 = load i32, ptr %187, align 4, !tbaa !9
  %189 = icmp sle i32 %188, 0
  br i1 %189, label %194, label %190

190:                                              ; preds = %25
  %191 = load ptr, ptr %33, align 8, !tbaa !5
  %192 = load i32, ptr %191, align 4, !tbaa !9
  %193 = icmp sle i32 %192, 0
  br i1 %193, label %194, label %195

194:                                              ; preds = %190, %25
  store i32 1, ptr %151, align 4
  br label %2276

195:                                              ; preds = %190
  %196 = load ptr, ptr %26, align 8, !tbaa !5
  %197 = load i32, ptr %196, align 4, !tbaa !9
  %198 = add nsw i32 %197, 1
  store i32 %198, ptr %79, align 4, !tbaa !9
  %199 = load ptr, ptr %26, align 8, !tbaa !5
  %200 = load i32, ptr %199, align 4, !tbaa !9
  %201 = shl i32 %200, 1
  %202 = add nsw i32 %201, 1
  store i32 %202, ptr %106, align 4, !tbaa !9
  %203 = load ptr, ptr %26, align 8, !tbaa !5
  %204 = load i32, ptr %203, align 4, !tbaa !9
  %205 = mul nsw i32 %204, 3
  %206 = add nsw i32 %205, 1
  store i32 %206, ptr %93, align 4, !tbaa !9
  %207 = load ptr, ptr %26, align 8, !tbaa !5
  %208 = load i32, ptr %207, align 4, !tbaa !9
  %209 = shl i32 %208, 2
  %210 = add nsw i32 %209, 1
  store i32 %210, ptr %94, align 4, !tbaa !9
  %211 = load ptr, ptr %26, align 8, !tbaa !5
  %212 = load i32, ptr %211, align 4, !tbaa !9
  %213 = mul nsw i32 %212, 5
  %214 = add nsw i32 %213, 1
  store i32 %214, ptr %124, align 4, !tbaa !9
  %215 = load ptr, ptr %26, align 8, !tbaa !5
  %216 = load i32, ptr %215, align 4, !tbaa !9
  %217 = mul nsw i32 %216, 12
  store i32 %217, ptr %72, align 4, !tbaa !9
  %218 = load i32, ptr %72, align 4, !tbaa !9
  store i32 %218, ptr %53, align 4, !tbaa !9
  store i32 1, ptr %74, align 4, !tbaa !9
  br label %219

219:                                              ; preds = %228, %195
  %220 = load i32, ptr %74, align 4, !tbaa !9
  %221 = load i32, ptr %53, align 4, !tbaa !9
  %222 = icmp sle i32 %220, %221
  br i1 %222, label %223, label %231

223:                                              ; preds = %219
  %224 = load ptr, ptr %48, align 8, !tbaa !5
  %225 = load i32, ptr %74, align 4, !tbaa !9
  %226 = sext i32 %225 to i64
  %227 = getelementptr inbounds double, ptr %224, i64 %226
  store double 0.000000e+00, ptr %227, align 8, !tbaa !11
  br label %228

228:                                              ; preds = %223
  %229 = load i32, ptr %74, align 4, !tbaa !9
  %230 = add nsw i32 %229, 1
  store i32 %230, ptr %74, align 4, !tbaa !9
  br label %219, !llvm.loop !13

231:                                              ; preds = %219
  store i32 0, ptr %84, align 4, !tbaa !9
  %232 = load ptr, ptr %26, align 8, !tbaa !5
  %233 = load i32, ptr %232, align 4, !tbaa !9
  store i32 %233, ptr %91, align 4, !tbaa !9
  %234 = load ptr, ptr %26, align 8, !tbaa !5
  %235 = load i32, ptr %234, align 4, !tbaa !9
  %236 = shl i32 %235, 1
  store i32 %236, ptr %92, align 4, !tbaa !9
  %237 = load ptr, ptr %26, align 8, !tbaa !5
  %238 = load i32, ptr %237, align 4, !tbaa !9
  %239 = mul nsw i32 %238, 3
  %240 = add nsw i32 %239, 1
  store i32 %240, ptr %119, align 4, !tbaa !9
  %241 = load ptr, ptr %26, align 8, !tbaa !5
  %242 = load i32, ptr %241, align 4, !tbaa !9
  %243 = mul nsw i32 %242, 7
  store i32 %243, ptr %95, align 4, !tbaa !9
  %244 = load i32, ptr %95, align 4, !tbaa !9
  store i32 %244, ptr %53, align 4, !tbaa !9
  store i32 1, ptr %74, align 4, !tbaa !9
  br label %245

245:                                              ; preds = %254, %231
  %246 = load i32, ptr %74, align 4, !tbaa !9
  %247 = load i32, ptr %53, align 4, !tbaa !9
  %248 = icmp sle i32 %246, %247
  br i1 %248, label %249, label %257

249:                                              ; preds = %245
  %250 = load ptr, ptr %49, align 8, !tbaa !5
  %251 = load i32, ptr %74, align 4, !tbaa !9
  %252 = sext i32 %251 to i64
  %253 = getelementptr inbounds i32, ptr %250, i64 %252
  store i32 0, ptr %253, align 4, !tbaa !9
  br label %254

254:                                              ; preds = %249
  %255 = load i32, ptr %74, align 4, !tbaa !9
  %256 = add nsw i32 %255, 1
  store i32 %256, ptr %74, align 4, !tbaa !9
  br label %245, !llvm.loop !15

257:                                              ; preds = %245
  store i32 1, ptr %135, align 4, !tbaa !9
  %258 = load ptr, ptr %34, align 8, !tbaa !5
  %259 = load i32, ptr %258, align 4, !tbaa !9
  %260 = icmp sgt i32 %259, 1
  br i1 %260, label %261, label %265

261:                                              ; preds = %257
  %262 = load ptr, ptr %34, align 8, !tbaa !5
  %263 = load i32, ptr %262, align 4, !tbaa !9
  %264 = sub nsw i32 %263, 1
  store i32 %264, ptr %135, align 4, !tbaa !9
  br label %265

265:                                              ; preds = %261, %257
  %266 = load ptr, ptr %33, align 8, !tbaa !5
  %267 = load i32, ptr %266, align 4, !tbaa !9
  store i32 %267, ptr %138, align 4, !tbaa !9
  %268 = load ptr, ptr %35, align 8, !tbaa !5
  %269 = load i32, ptr %268, align 4, !tbaa !9
  %270 = load ptr, ptr %33, align 8, !tbaa !5
  %271 = load i32, ptr %270, align 4, !tbaa !9
  %272 = icmp slt i32 %269, %271
  br i1 %272, label %273, label %277

273:                                              ; preds = %265
  %274 = load ptr, ptr %35, align 8, !tbaa !5
  %275 = load i32, ptr %274, align 4, !tbaa !9
  %276 = add nsw i32 %275, 1
  store i32 %276, ptr %138, align 4, !tbaa !9
  br label %277

277:                                              ; preds = %273, %265
  %278 = load i32, ptr %138, align 4, !tbaa !9
  %279 = load i32, ptr %135, align 4, !tbaa !9
  %280 = sub nsw i32 %278, %279
  %281 = add nsw i32 %280, 1
  store i32 %281, ptr %139, align 4, !tbaa !9
  %282 = load ptr, ptr %26, align 8, !tbaa !5
  %283 = load ptr, ptr %45, align 8, !tbaa !5
  %284 = load i32, ptr %135, align 4, !tbaa !9
  %285 = load i32, ptr %51, align 4, !tbaa !9
  %286 = mul nsw i32 %284, %285
  %287 = add nsw i32 %286, 1
  %288 = sext i32 %287 to i64
  %289 = getelementptr inbounds %struct.doublecomplex, ptr %283, i64 %288
  %290 = load ptr, ptr %46, align 8, !tbaa !5
  call void @zlaset_(ptr noundef @.str, ptr noundef %282, ptr noundef %139, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %289, ptr noundef %290)
  %291 = call double @dlamch_(ptr noundef @.str.1)
  store double %291, ptr %145, align 8, !tbaa !11
  %292 = load double, ptr %145, align 8, !tbaa !11
  %293 = fmul double %292, 2.000000e+00
  store double %293, ptr %90, align 8, !tbaa !11
  store i32 1, ptr %141, align 4, !tbaa !9
  %294 = load ptr, ptr %34, align 8, !tbaa !5
  %295 = load i32, ptr %294, align 4, !tbaa !9
  %296 = icmp eq i32 %295, 1
  br i1 %296, label %297, label %304

297:                                              ; preds = %277
  %298 = load ptr, ptr %35, align 8, !tbaa !5
  %299 = load i32, ptr %298, align 4, !tbaa !9
  %300 = load ptr, ptr %33, align 8, !tbaa !5
  %301 = load i32, ptr %300, align 4, !tbaa !9
  %302 = icmp eq i32 %299, %301
  br i1 %302, label %303, label %304

303:                                              ; preds = %297
  br label %311

304:                                              ; preds = %297, %277
  %305 = load double, ptr %145, align 8, !tbaa !11
  %306 = fmul double %305, 4.000000e+00
  %307 = load ptr, ptr %37, align 8, !tbaa !5
  store double %306, ptr %307, align 8, !tbaa !11
  %308 = load double, ptr %145, align 8, !tbaa !11
  %309 = fmul double %308, 4.000000e+00
  %310 = load ptr, ptr %38, align 8, !tbaa !5
  store double %309, ptr %310, align 8, !tbaa !11
  br label %311

311:                                              ; preds = %304, %303
  store i32 0, ptr %66, align 4, !tbaa !9
  store i32 1, ptr %103, align 4, !tbaa !9
  store i32 1, ptr %111, align 4, !tbaa !9
  %312 = load ptr, ptr %42, align 8, !tbaa !5
  %313 = load ptr, ptr %33, align 8, !tbaa !5
  %314 = load i32, ptr %313, align 4, !tbaa !9
  %315 = sext i32 %314 to i64
  %316 = getelementptr inbounds i32, ptr %312, i64 %315
  %317 = load i32, ptr %316, align 4, !tbaa !9
  store i32 %317, ptr %53, align 4, !tbaa !9
  store i32 1, ptr %64, align 4, !tbaa !9
  br label %318

318:                                              ; preds = %2272, %311
  %319 = load i32, ptr %64, align 4, !tbaa !9
  %320 = load i32, ptr %53, align 4, !tbaa !9
  %321 = icmp sle i32 %319, %320
  br i1 %321, label %322, label %2275

322:                                              ; preds = %318
  %323 = load ptr, ptr %32, align 8, !tbaa !5
  %324 = load i32, ptr %64, align 4, !tbaa !9
  %325 = sext i32 %324 to i64
  %326 = getelementptr inbounds i32, ptr %323, i64 %325
  %327 = load i32, ptr %326, align 4, !tbaa !9
  store i32 %327, ptr %63, align 4, !tbaa !9
  %328 = load ptr, ptr %30, align 8, !tbaa !5
  %329 = load i32, ptr %63, align 4, !tbaa !9
  %330 = sext i32 %329 to i64
  %331 = getelementptr inbounds double, ptr %328, i64 %330
  %332 = load double, ptr %331, align 8, !tbaa !11
  store double %332, ptr %82, align 8, !tbaa !11
  %333 = load i32, ptr %111, align 4, !tbaa !9
  %334 = sub nsw i32 %333, 1
  store i32 %334, ptr %69, align 4, !tbaa !9
  br label %335

335:                                              ; preds = %349, %322
  %336 = load i32, ptr %69, align 4, !tbaa !9
  %337 = load ptr, ptr %33, align 8, !tbaa !5
  %338 = load i32, ptr %337, align 4, !tbaa !9
  %339 = icmp slt i32 %336, %338
  br i1 %339, label %340, label %353

340:                                              ; preds = %335
  %341 = load ptr, ptr %42, align 8, !tbaa !5
  %342 = load i32, ptr %69, align 4, !tbaa !9
  %343 = add nsw i32 %342, 1
  %344 = sext i32 %343 to i64
  %345 = getelementptr inbounds i32, ptr %341, i64 %344
  %346 = load i32, ptr %345, align 4, !tbaa !9
  %347 = load i32, ptr %64, align 4, !tbaa !9
  %348 = icmp eq i32 %346, %347
  br i1 %348, label %349, label %352

349:                                              ; preds = %340
  %350 = load i32, ptr %69, align 4, !tbaa !9
  %351 = add nsw i32 %350, 1
  store i32 %351, ptr %69, align 4, !tbaa !9
  br label %335

352:                                              ; preds = %340
  br label %353

353:                                              ; preds = %352, %335
  %354 = load i32, ptr %69, align 4, !tbaa !9
  %355 = load i32, ptr %111, align 4, !tbaa !9
  %356 = icmp slt i32 %354, %355
  br i1 %356, label %357, label %360

357:                                              ; preds = %353
  %358 = load i32, ptr %63, align 4, !tbaa !9
  %359 = add nsw i32 %358, 1
  store i32 %359, ptr %103, align 4, !tbaa !9
  br label %2271

360:                                              ; preds = %353
  %361 = load i32, ptr %69, align 4, !tbaa !9
  %362 = load ptr, ptr %34, align 8, !tbaa !5
  %363 = load i32, ptr %362, align 4, !tbaa !9
  %364 = icmp slt i32 %361, %363
  br i1 %364, label %370, label %365

365:                                              ; preds = %360
  %366 = load i32, ptr %111, align 4, !tbaa !9
  %367 = load ptr, ptr %35, align 8, !tbaa !5
  %368 = load i32, ptr %367, align 4, !tbaa !9
  %369 = icmp sgt i32 %366, %368
  br i1 %369, label %370, label %375

370:                                              ; preds = %365, %360
  %371 = load i32, ptr %63, align 4, !tbaa !9
  %372 = add nsw i32 %371, 1
  store i32 %372, ptr %103, align 4, !tbaa !9
  %373 = load i32, ptr %69, align 4, !tbaa !9
  %374 = add nsw i32 %373, 1
  store i32 %374, ptr %111, align 4, !tbaa !9
  br label %2271

375:                                              ; preds = %365
  br label %376

376:                                              ; preds = %375
  %377 = load ptr, ptr %44, align 8, !tbaa !5
  %378 = load i32, ptr %103, align 4, !tbaa !9
  %379 = shl i32 %378, 1
  %380 = sub nsw i32 %379, 1
  %381 = sext i32 %380 to i64
  %382 = getelementptr inbounds double, ptr %377, i64 %381
  %383 = load double, ptr %382, align 8, !tbaa !11
  store double %383, ptr %99, align 8, !tbaa !11
  %384 = load ptr, ptr %44, align 8, !tbaa !5
  %385 = load i32, ptr %103, align 4, !tbaa !9
  %386 = mul nsw i32 %385, 2
  %387 = sext i32 %386 to i64
  %388 = getelementptr inbounds double, ptr %384, i64 %387
  %389 = load double, ptr %388, align 8, !tbaa !11
  store double %389, ptr %102, align 8, !tbaa !11
  %390 = load i32, ptr %63, align 4, !tbaa !9
  store i32 %390, ptr %54, align 4, !tbaa !9
  %391 = load i32, ptr %103, align 4, !tbaa !9
  %392 = add nsw i32 %391, 1
  store i32 %392, ptr %74, align 4, !tbaa !9
  br label %393

393:                                              ; preds = %429, %376
  %394 = load i32, ptr %74, align 4, !tbaa !9
  %395 = load i32, ptr %54, align 4, !tbaa !9
  %396 = icmp sle i32 %394, %395
  br i1 %396, label %397, label %432

397:                                              ; preds = %393
  %398 = load ptr, ptr %44, align 8, !tbaa !5
  %399 = load i32, ptr %74, align 4, !tbaa !9
  %400 = shl i32 %399, 1
  %401 = sub nsw i32 %400, 1
  %402 = sext i32 %401 to i64
  %403 = getelementptr inbounds double, ptr %398, i64 %402
  %404 = load double, ptr %403, align 8, !tbaa !11
  store double %404, ptr %59, align 8, !tbaa !11
  %405 = load double, ptr %59, align 8, !tbaa !11
  %406 = load double, ptr %99, align 8, !tbaa !11
  %407 = fcmp ole double %405, %406
  br i1 %407, label %408, label %410

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

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

412:                                              ; preds = %410, %408
  %413 = phi double [ %409, %408 ], [ %411, %410 ]
  store double %413, ptr %99, align 8, !tbaa !11
  %414 = load ptr, ptr %44, align 8, !tbaa !5
  %415 = load i32, ptr %74, align 4, !tbaa !9
  %416 = mul nsw i32 %415, 2
  %417 = sext i32 %416 to i64
  %418 = getelementptr inbounds double, ptr %414, i64 %417
  %419 = load double, ptr %418, align 8, !tbaa !11
  store double %419, ptr %59, align 8, !tbaa !11
  %420 = load double, ptr %59, align 8, !tbaa !11
  %421 = load double, ptr %102, align 8, !tbaa !11
  %422 = fcmp oge double %420, %421
  br i1 %422, label %423, label %425

423:                                              ; preds = %412
  %424 = load double, ptr %59, align 8, !tbaa !11
  br label %427

425:                                              ; preds = %412
  %426 = load double, ptr %102, align 8, !tbaa !11
  br label %427

427:                                              ; preds = %425, %423
  %428 = phi double [ %424, %423 ], [ %426, %425 ]
  store double %428, ptr %102, align 8, !tbaa !11
  br label %429

429:                                              ; preds = %427
  %430 = load i32, ptr %74, align 4, !tbaa !9
  %431 = add nsw i32 %430, 1
  store i32 %431, ptr %74, align 4, !tbaa !9
  br label %393, !llvm.loop !16

432:                                              ; preds = %393
  %433 = load double, ptr %102, align 8, !tbaa !11
  %434 = load double, ptr %99, align 8, !tbaa !11
  %435 = fsub double %433, %434
  store double %435, ptr %113, align 8, !tbaa !11
  %436 = load i32, ptr %103, align 4, !tbaa !9
  %437 = sub nsw i32 %436, 1
  store i32 %437, ptr %109, align 4, !tbaa !9
  %438 = load i32, ptr %63, align 4, !tbaa !9
  %439 = load i32, ptr %103, align 4, !tbaa !9
  %440 = sub nsw i32 %438, %439
  %441 = add nsw i32 %440, 1
  store i32 %441, ptr %101, align 4, !tbaa !9
  %442 = load i32, ptr %69, align 4, !tbaa !9
  %443 = load i32, ptr %111, align 4, !tbaa !9
  %444 = sub nsw i32 %442, %443
  %445 = add nsw i32 %444, 1
  store i32 %445, ptr %100, align 4, !tbaa !9
  %446 = load i32, ptr %103, align 4, !tbaa !9
  %447 = load i32, ptr %63, align 4, !tbaa !9
  %448 = icmp eq i32 %446, %447
  br i1 %448, label %449, label %500

449:                                              ; preds = %432
  %450 = load i32, ptr %66, align 4, !tbaa !9
  %451 = add nsw i32 %450, 1
  store i32 %451, ptr %66, align 4, !tbaa !9
  %452 = load i32, ptr %103, align 4, !tbaa !9
  %453 = load i32, ptr %111, align 4, !tbaa !9
  %454 = load i32, ptr %51, align 4, !tbaa !9
  %455 = mul nsw i32 %453, %454
  %456 = add nsw i32 %452, %455
  store i32 %456, ptr %54, align 4, !tbaa !9
  %457 = load ptr, ptr %45, align 8, !tbaa !5
  %458 = load i32, ptr %54, align 4, !tbaa !9
  %459 = sext i32 %458 to i64
  %460 = getelementptr inbounds %struct.doublecomplex, ptr %457, i64 %459
  %461 = getelementptr inbounds %struct.doublecomplex, ptr %460, i32 0, i32 0
  store double 1.000000e+00, ptr %461, align 8, !tbaa !17
  %462 = load ptr, ptr %45, align 8, !tbaa !5
  %463 = load i32, ptr %54, align 4, !tbaa !9
  %464 = sext i32 %463 to i64
  %465 = getelementptr inbounds %struct.doublecomplex, ptr %462, i64 %464
  %466 = getelementptr inbounds %struct.doublecomplex, ptr %465, i32 0, i32 1
  store double 0.000000e+00, ptr %466, align 8, !tbaa !19
  %467 = load i32, ptr %103, align 4, !tbaa !9
  %468 = load ptr, ptr %47, align 8, !tbaa !5
  %469 = load i32, ptr %111, align 4, !tbaa !9
  %470 = shl i32 %469, 1
  %471 = sub nsw i32 %470, 1
  %472 = sext i32 %471 to i64
  %473 = getelementptr inbounds i32, ptr %468, i64 %472
  store i32 %467, ptr %473, align 4, !tbaa !9
  %474 = load i32, ptr %103, align 4, !tbaa !9
  %475 = load ptr, ptr %47, align 8, !tbaa !5
  %476 = load i32, ptr %111, align 4, !tbaa !9
  %477 = mul nsw i32 %476, 2
  %478 = sext i32 %477 to i64
  %479 = getelementptr inbounds i32, ptr %475, i64 %478
  store i32 %474, ptr %479, align 4, !tbaa !9
  %480 = load double, ptr %82, align 8, !tbaa !11
  %481 = load ptr, ptr %39, align 8, !tbaa !5
  %482 = load i32, ptr %111, align 4, !tbaa !9
  %483 = sext i32 %482 to i64
  %484 = getelementptr inbounds double, ptr %481, i64 %483
  %485 = load double, ptr %484, align 8, !tbaa !11
  %486 = fadd double %485, %480
  store double %486, ptr %484, align 8, !tbaa !11
  %487 = load ptr, ptr %39, align 8, !tbaa !5
  %488 = load i32, ptr %111, align 4, !tbaa !9
  %489 = sext i32 %488 to i64
  %490 = getelementptr inbounds double, ptr %487, i64 %489
  %491 = load double, ptr %490, align 8, !tbaa !11
  %492 = load ptr, ptr %48, align 8, !tbaa !5
  %493 = load i32, ptr %111, align 4, !tbaa !9
  %494 = sext i32 %493 to i64
  %495 = getelementptr inbounds double, ptr %492, i64 %494
  store double %491, ptr %495, align 8, !tbaa !11
  %496 = load i32, ptr %63, align 4, !tbaa !9
  %497 = add nsw i32 %496, 1
  store i32 %497, ptr %103, align 4, !tbaa !9
  %498 = load i32, ptr %111, align 4, !tbaa !9
  %499 = add nsw i32 %498, 1
  store i32 %499, ptr %111, align 4, !tbaa !9
  br label %2271

500:                                              ; preds = %432
  %501 = load ptr, ptr %39, align 8, !tbaa !5
  %502 = load i32, ptr %111, align 4, !tbaa !9
  %503 = sext i32 %502 to i64
  %504 = getelementptr inbounds double, ptr %501, i64 %503
  %505 = load ptr, ptr %48, align 8, !tbaa !5
  %506 = load i32, ptr %111, align 4, !tbaa !9
  %507 = sext i32 %506 to i64
  %508 = getelementptr inbounds double, ptr %505, i64 %507
  call void @dcopy_(ptr noundef %100, ptr noundef %504, ptr noundef @c__1, ptr noundef %508, ptr noundef @c__1)
  %509 = load i32, ptr %100, align 4, !tbaa !9
  store i32 %509, ptr %54, align 4, !tbaa !9
  store i32 1, ptr %74, align 4, !tbaa !9
  br label %510

510:                                              ; preds = %525, %500
  %511 = load i32, ptr %74, align 4, !tbaa !9
  %512 = load i32, ptr %54, align 4, !tbaa !9
  %513 = icmp sle i32 %511, %512
  br i1 %513, label %514, label %528

514:                                              ; preds = %510
  %515 = load double, ptr %82, align 8, !tbaa !11
  %516 = load ptr, ptr %39, align 8, !tbaa !5
  %517 = load i32, ptr %111, align 4, !tbaa !9
  %518 = load i32, ptr %74, align 4, !tbaa !9
  %519 = add nsw i32 %517, %518
  %520 = sub nsw i32 %519, 1
  %521 = sext i32 %520 to i64
  %522 = getelementptr inbounds double, ptr %516, i64 %521
  %523 = load double, ptr %522, align 8, !tbaa !11
  %524 = fadd double %523, %515
  store double %524, ptr %522, align 8, !tbaa !11
  br label %525

525:                                              ; preds = %514
  %526 = load i32, ptr %74, align 4, !tbaa !9
  %527 = add nsw i32 %526, 1
  store i32 %527, ptr %74, align 4, !tbaa !9
  br label %510, !llvm.loop !20

528:                                              ; preds = %510
  store i32 0, ptr %116, align 4, !tbaa !9
  store i32 1, ptr %130, align 4, !tbaa !9
  store i32 1, ptr %88, align 4, !tbaa !9
  %529 = load ptr, ptr %49, align 8, !tbaa !5
  %530 = load i32, ptr %91, align 4, !tbaa !9
  %531 = add nsw i32 %530, 1
  %532 = sext i32 %531 to i64
  %533 = getelementptr inbounds i32, ptr %529, i64 %532
  store i32 1, ptr %533, align 4, !tbaa !9
  %534 = load i32, ptr %100, align 4, !tbaa !9
  %535 = load ptr, ptr %49, align 8, !tbaa !5
  %536 = load i32, ptr %91, align 4, !tbaa !9
  %537 = add nsw i32 %536, 2
  %538 = sext i32 %537 to i64
  %539 = getelementptr inbounds i32, ptr %535, i64 %538
  store i32 %534, ptr %539, align 4, !tbaa !9
  store i32 0, ptr %81, align 4, !tbaa !9
  br label %540

540:                                              ; preds = %2263, %528
  %541 = load i32, ptr %81, align 4, !tbaa !9
  %542 = load i32, ptr %100, align 4, !tbaa !9
  %543 = icmp slt i32 %541, %542
  br i1 %543, label %544, label %2266

544:                                              ; preds = %540
  %545 = load i32, ptr %116, align 4, !tbaa !9
  %546 = load ptr, ptr %33, align 8, !tbaa !5
  %547 = load i32, ptr %546, align 4, !tbaa !9
  %548 = icmp sgt i32 %545, %547
  br i1 %548, label %549, label %551

549:                                              ; preds = %544
  %550 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -2, ptr %550, align 4, !tbaa !9
  store i32 1, ptr %151, align 4
  br label %2276

551:                                              ; preds = %544
  %552 = load i32, ptr %88, align 4, !tbaa !9
  store i32 %552, ptr %110, align 4, !tbaa !9
  store i32 0, ptr %88, align 4, !tbaa !9
  %553 = load i32, ptr %130, align 4, !tbaa !9
  %554 = sub nsw i32 1, %553
  store i32 %554, ptr %130, align 4, !tbaa !9
  %555 = load i32, ptr %130, align 4, !tbaa !9
  %556 = icmp eq i32 %555, 0
  br i1 %556, label %557, label %560

557:                                              ; preds = %551
  %558 = load i32, ptr %91, align 4, !tbaa !9
  store i32 %558, ptr %114, align 4, !tbaa !9
  %559 = load i32, ptr %92, align 4, !tbaa !9
  store i32 %559, ptr %122, align 4, !tbaa !9
  br label %563

560:                                              ; preds = %551
  %561 = load i32, ptr %92, align 4, !tbaa !9
  store i32 %561, ptr %114, align 4, !tbaa !9
  %562 = load i32, ptr %91, align 4, !tbaa !9
  store i32 %562, ptr %122, align 4, !tbaa !9
  br label %563

563:                                              ; preds = %560, %557
  %564 = load i32, ptr %110, align 4, !tbaa !9
  store i32 %564, ptr %54, align 4, !tbaa !9
  store i32 1, ptr %74, align 4, !tbaa !9
  br label %565

565:                                              ; preds = %2260, %563
  %566 = load i32, ptr %74, align 4, !tbaa !9
  %567 = load i32, ptr %54, align 4, !tbaa !9
  %568 = icmp sle i32 %566, %567
  br i1 %568, label %569, label %2263

569:                                              ; preds = %565
  %570 = load i32, ptr %114, align 4, !tbaa !9
  %571 = load i32, ptr %74, align 4, !tbaa !9
  %572 = shl i32 %571, 1
  %573 = add nsw i32 %570, %572
  store i32 %573, ptr %75, align 4, !tbaa !9
  %574 = load ptr, ptr %49, align 8, !tbaa !5
  %575 = load i32, ptr %75, align 4, !tbaa !9
  %576 = sub nsw i32 %575, 1
  %577 = sext i32 %576 to i64
  %578 = getelementptr inbounds i32, ptr %574, i64 %577
  %579 = load i32, ptr %578, align 4, !tbaa !9
  store i32 %579, ptr %123, align 4, !tbaa !9
  %580 = load ptr, ptr %49, align 8, !tbaa !5
  %581 = load i32, ptr %75, align 4, !tbaa !9
  %582 = sext i32 %581 to i64
  %583 = getelementptr inbounds i32, ptr %580, i64 %582
  %584 = load i32, ptr %583, align 4, !tbaa !9
  store i32 %584, ptr %126, align 4, !tbaa !9
  %585 = load i32, ptr %116, align 4, !tbaa !9
  %586 = icmp sgt i32 %585, 0
  br i1 %586, label %587, label %723

587:                                              ; preds = %569
  %588 = load ptr, ptr %34, align 8, !tbaa !5
  %589 = load i32, ptr %588, align 4, !tbaa !9
  %590 = icmp eq i32 %589, 1
  br i1 %590, label %591, label %602

591:                                              ; preds = %587
  %592 = load ptr, ptr %35, align 8, !tbaa !5
  %593 = load i32, ptr %592, align 4, !tbaa !9
  %594 = load ptr, ptr %33, align 8, !tbaa !5
  %595 = load i32, ptr %594, align 4, !tbaa !9
  %596 = icmp eq i32 %593, %595
  br i1 %596, label %597, label %602

597:                                              ; preds = %591
  %598 = load i32, ptr %111, align 4, !tbaa !9
  %599 = load i32, ptr %123, align 4, !tbaa !9
  %600 = add nsw i32 %598, %599
  %601 = sub nsw i32 %600, 1
  store i32 %601, ptr %75, align 4, !tbaa !9
  br label %632

602:                                              ; preds = %591, %587
  %603 = load i32, ptr %111, align 4, !tbaa !9
  %604 = load i32, ptr %123, align 4, !tbaa !9
  %605 = add nsw i32 %603, %604
  %606 = sub nsw i32 %605, 1
  %607 = load ptr, ptr %34, align 8, !tbaa !5
  %608 = load i32, ptr %607, align 4, !tbaa !9
  %609 = icmp slt i32 %606, %608
  br i1 %609, label %610, label %614

610:                                              ; preds = %602
  %611 = load ptr, ptr %34, align 8, !tbaa !5
  %612 = load i32, ptr %611, align 4, !tbaa !9
  %613 = sub nsw i32 %612, 1
  store i32 %613, ptr %75, align 4, !tbaa !9
  br label %631

614:                                              ; preds = %602
  %615 = load i32, ptr %111, align 4, !tbaa !9
  %616 = load i32, ptr %123, align 4, !tbaa !9
  %617 = add nsw i32 %615, %616
  %618 = sub nsw i32 %617, 1
  %619 = load ptr, ptr %35, align 8, !tbaa !5
  %620 = load i32, ptr %619, align 4, !tbaa !9
  %621 = icmp sgt i32 %618, %620
  br i1 %621, label %622, label %625

622:                                              ; preds = %614
  %623 = load ptr, ptr %35, align 8, !tbaa !5
  %624 = load i32, ptr %623, align 4, !tbaa !9
  store i32 %624, ptr %75, align 4, !tbaa !9
  br label %630

625:                                              ; preds = %614
  %626 = load i32, ptr %111, align 4, !tbaa !9
  %627 = load i32, ptr %123, align 4, !tbaa !9
  %628 = add nsw i32 %626, %627
  %629 = sub nsw i32 %628, 1
  store i32 %629, ptr %75, align 4, !tbaa !9
  br label %630

630:                                              ; preds = %625, %622
  br label %631

631:                                              ; preds = %630, %610
  br label %632

632:                                              ; preds = %631, %597
  %633 = load i32, ptr %101, align 4, !tbaa !9
  %634 = sub nsw i32 %633, 1
  store i32 %634, ptr %55, align 4, !tbaa !9
  store i32 1, ptr %76, align 4, !tbaa !9
  br label %635

635:                                              ; preds = %683, %632
  %636 = load i32, ptr %76, align 4, !tbaa !9
  %637 = load i32, ptr %55, align 4, !tbaa !9
  %638 = icmp sle i32 %636, %637
  br i1 %638, label %639, label %686

639:                                              ; preds = %635
  %640 = load i32, ptr %103, align 4, !tbaa !9
  %641 = load i32, ptr %76, align 4, !tbaa !9
  %642 = add nsw i32 %640, %641
  %643 = sub nsw i32 %642, 1
  %644 = load i32, ptr %75, align 4, !tbaa !9
  %645 = load i32, ptr %51, align 4, !tbaa !9
  %646 = mul nsw i32 %644, %645
  %647 = add nsw i32 %643, %646
  store i32 %647, ptr %56, align 4, !tbaa !9
  %648 = load ptr, ptr %45, align 8, !tbaa !5
  %649 = load i32, ptr %56, align 4, !tbaa !9
  %650 = sext i32 %649 to i64
  %651 = getelementptr inbounds %struct.doublecomplex, ptr %648, i64 %650
  %652 = getelementptr inbounds %struct.doublecomplex, ptr %651, i32 0, i32 0
  %653 = load double, ptr %652, align 8, !tbaa !17
  %654 = load ptr, ptr %29, align 8, !tbaa !5
  %655 = load i32, ptr %103, align 4, !tbaa !9
  %656 = load i32, ptr %76, align 4, !tbaa !9
  %657 = add nsw i32 %655, %656
  %658 = sub nsw i32 %657, 1
  %659 = sext i32 %658 to i64
  %660 = getelementptr inbounds double, ptr %654, i64 %659
  store double %653, ptr %660, align 8, !tbaa !11
  %661 = load i32, ptr %103, align 4, !tbaa !9
  %662 = load i32, ptr %76, align 4, !tbaa !9
  %663 = add nsw i32 %661, %662
  %664 = sub nsw i32 %663, 1
  %665 = load i32, ptr %75, align 4, !tbaa !9
  %666 = add nsw i32 %665, 1
  %667 = load i32, ptr %51, align 4, !tbaa !9
  %668 = mul nsw i32 %666, %667
  %669 = add nsw i32 %664, %668
  store i32 %669, ptr %56, align 4, !tbaa !9
  %670 = load ptr, ptr %45, align 8, !tbaa !5
  %671 = load i32, ptr %56, align 4, !tbaa !9
  %672 = sext i32 %671 to i64
  %673 = getelementptr inbounds %struct.doublecomplex, ptr %670, i64 %672
  %674 = getelementptr inbounds %struct.doublecomplex, ptr %673, i32 0, i32 0
  %675 = load double, ptr %674, align 8, !tbaa !17
  %676 = load ptr, ptr %30, align 8, !tbaa !5
  %677 = load i32, ptr %103, align 4, !tbaa !9
  %678 = load i32, ptr %76, align 4, !tbaa !9
  %679 = add nsw i32 %677, %678
  %680 = sub nsw i32 %679, 1
  %681 = sext i32 %680 to i64
  %682 = getelementptr inbounds double, ptr %676, i64 %681
  store double %675, ptr %682, align 8, !tbaa !11
  br label %683

683:                                              ; preds = %639
  %684 = load i32, ptr %76, align 4, !tbaa !9
  %685 = add nsw i32 %684, 1
  store i32 %685, ptr %76, align 4, !tbaa !9
  br label %635, !llvm.loop !21

686:                                              ; preds = %635
  %687 = load i32, ptr %63, align 4, !tbaa !9
  %688 = load i32, ptr %75, align 4, !tbaa !9
  %689 = load i32, ptr %51, align 4, !tbaa !9
  %690 = mul nsw i32 %688, %689
  %691 = add nsw i32 %687, %690
  store i32 %691, ptr %55, align 4, !tbaa !9
  %692 = load ptr, ptr %45, align 8, !tbaa !5
  %693 = load i32, ptr %55, align 4, !tbaa !9
  %694 = sext i32 %693 to i64
  %695 = getelementptr inbounds %struct.doublecomplex, ptr %692, i64 %694
  %696 = getelementptr inbounds %struct.doublecomplex, ptr %695, i32 0, i32 0
  %697 = load double, ptr %696, align 8, !tbaa !17
  %698 = load ptr, ptr %29, align 8, !tbaa !5
  %699 = load i32, ptr %63, align 4, !tbaa !9
  %700 = sext i32 %699 to i64
  %701 = getelementptr inbounds double, ptr %698, i64 %700
  store double %697, ptr %701, align 8, !tbaa !11
  %702 = load i32, ptr %63, align 4, !tbaa !9
  %703 = load i32, ptr %75, align 4, !tbaa !9
  %704 = add nsw i32 %703, 1
  %705 = load i32, ptr %51, align 4, !tbaa !9
  %706 = mul nsw i32 %704, %705
  %707 = add nsw i32 %702, %706
  store i32 %707, ptr %55, align 4, !tbaa !9
  %708 = load ptr, ptr %45, align 8, !tbaa !5
  %709 = load i32, ptr %55, align 4, !tbaa !9
  %710 = sext i32 %709 to i64
  %711 = getelementptr inbounds %struct.doublecomplex, ptr %708, i64 %710
  %712 = getelementptr inbounds %struct.doublecomplex, ptr %711, i32 0, i32 0
  %713 = load double, ptr %712, align 8, !tbaa !17
  store double %713, ptr %82, align 8, !tbaa !11
  %714 = load ptr, ptr %45, align 8, !tbaa !5
  %715 = load i32, ptr %103, align 4, !tbaa !9
  %716 = load i32, ptr %75, align 4, !tbaa !9
  %717 = load i32, ptr %51, align 4, !tbaa !9
  %718 = mul nsw i32 %716, %717
  %719 = add nsw i32 %715, %718
  %720 = sext i32 %719 to i64
  %721 = getelementptr inbounds %struct.doublecomplex, ptr %714, i64 %720
  %722 = load ptr, ptr %46, align 8, !tbaa !5
  call void @zlaset_(ptr noundef @.str, ptr noundef %101, ptr noundef @c__2, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %721, ptr noundef %722)
  br label %723

723:                                              ; preds = %686, %569
  %724 = load i32, ptr %63, align 4, !tbaa !9
  %725 = sub nsw i32 %724, 1
  store i32 %725, ptr %55, align 4, !tbaa !9
  %726 = load i32, ptr %103, align 4, !tbaa !9
  store i32 %726, ptr %75, align 4, !tbaa !9
  br label %727

727:                                              ; preds = %765, %723
  %728 = load i32, ptr %75, align 4, !tbaa !9
  %729 = load i32, ptr %55, align 4, !tbaa !9
  %730 = icmp sle i32 %728, %729
  br i1 %730, label %731, label %768

731:                                              ; preds = %727
  %732 = load ptr, ptr %29, align 8, !tbaa !5
  %733 = load i32, ptr %75, align 4, !tbaa !9
  %734 = sext i32 %733 to i64
  %735 = getelementptr inbounds double, ptr %732, i64 %734
  %736 = load double, ptr %735, align 8, !tbaa !11
  %737 = load ptr, ptr %30, align 8, !tbaa !5
  %738 = load i32, ptr %75, align 4, !tbaa !9
  %739 = sext i32 %738 to i64
  %740 = getelementptr inbounds double, ptr %737, i64 %739
  %741 = load double, ptr %740, align 8, !tbaa !11
  %742 = fmul double %736, %741
  store double %742, ptr %148, align 8, !tbaa !11
  %743 = load double, ptr %148, align 8, !tbaa !11
  %744 = load ptr, ptr %48, align 8, !tbaa !5
  %745 = load i32, ptr %79, align 4, !tbaa !9
  %746 = sub nsw i32 %745, 1
  %747 = load i32, ptr %75, align 4, !tbaa !9
  %748 = add nsw i32 %746, %747
  %749 = sext i32 %748 to i64
  %750 = getelementptr inbounds double, ptr %744, i64 %749
  store double %743, ptr %750, align 8, !tbaa !11
  %751 = load double, ptr %148, align 8, !tbaa !11
  %752 = load ptr, ptr %30, align 8, !tbaa !5
  %753 = load i32, ptr %75, align 4, !tbaa !9
  %754 = sext i32 %753 to i64
  %755 = getelementptr inbounds double, ptr %752, i64 %754
  %756 = load double, ptr %755, align 8, !tbaa !11
  %757 = fmul double %751, %756
  %758 = load ptr, ptr %48, align 8, !tbaa !5
  %759 = load i32, ptr %106, align 4, !tbaa !9
  %760 = sub nsw i32 %759, 1
  %761 = load i32, ptr %75, align 4, !tbaa !9
  %762 = add nsw i32 %760, %761
  %763 = sext i32 %762 to i64
  %764 = getelementptr inbounds double, ptr %758, i64 %763
  store double %757, ptr %764, align 8, !tbaa !11
  br label %765

765:                                              ; preds = %731
  %766 = load i32, ptr %75, align 4, !tbaa !9
  %767 = add nsw i32 %766, 1
  store i32 %767, ptr %75, align 4, !tbaa !9
  br label %727, !llvm.loop !22

768:                                              ; preds = %727
  %769 = load i32, ptr %116, align 4, !tbaa !9
  %770 = icmp sgt i32 %769, 0
  br i1 %770, label %771, label %989

771:                                              ; preds = %768
  %772 = load ptr, ptr %43, align 8, !tbaa !5
  %773 = load i32, ptr %111, align 4, !tbaa !9
  %774 = sub nsw i32 %773, 1
  %775 = load i32, ptr %123, align 4, !tbaa !9
  %776 = add nsw i32 %774, %775
  %777 = sext i32 %776 to i64
  %778 = getelementptr inbounds i32, ptr %772, i64 %777
  %779 = load i32, ptr %778, align 4, !tbaa !9
  store i32 %779, ptr %77, align 4, !tbaa !9
  %780 = load ptr, ptr %43, align 8, !tbaa !5
  %781 = load i32, ptr %111, align 4, !tbaa !9
  %782 = sub nsw i32 %781, 1
  %783 = load i32, ptr %126, align 4, !tbaa !9
  %784 = add nsw i32 %782, %783
  %785 = sext i32 %784 to i64
  %786 = getelementptr inbounds i32, ptr %780, i64 %785
  %787 = load i32, ptr %786, align 4, !tbaa !9
  store i32 %787, ptr %78, align 4, !tbaa !9
  %788 = load ptr, ptr %43, align 8, !tbaa !5
  %789 = load i32, ptr %111, align 4, !tbaa !9
  %790 = sext i32 %789 to i64
  %791 = getelementptr inbounds i32, ptr %788, i64 %790
  %792 = load i32, ptr %791, align 4, !tbaa !9
  %793 = sub nsw i32 %792, 1
  store i32 %793, ptr %120, align 4, !tbaa !9
  %794 = load ptr, ptr %29, align 8, !tbaa !5
  %795 = load i32, ptr %103, align 4, !tbaa !9
  %796 = sext i32 %795 to i64
  %797 = getelementptr inbounds double, ptr %794, i64 %796
  %798 = load ptr, ptr %48, align 8, !tbaa !5
  %799 = load i32, ptr %106, align 4, !tbaa !9
  %800 = load i32, ptr %103, align 4, !tbaa !9
  %801 = add nsw i32 %799, %800
  %802 = sub nsw i32 %801, 1
  %803 = sext i32 %802 to i64
  %804 = getelementptr inbounds double, ptr %798, i64 %803
  %805 = load ptr, ptr %37, align 8, !tbaa !5
  %806 = load ptr, ptr %38, align 8, !tbaa !5
  %807 = load ptr, ptr %48, align 8, !tbaa !5
  %808 = load i32, ptr %111, align 4, !tbaa !9
  %809 = sext i32 %808 to i64
  %810 = getelementptr inbounds double, ptr %807, i64 %809
  %811 = load ptr, ptr %41, align 8, !tbaa !5
  %812 = load i32, ptr %111, align 4, !tbaa !9
  %813 = sext i32 %812 to i64
  %814 = getelementptr inbounds double, ptr %811, i64 %813
  %815 = load ptr, ptr %40, align 8, !tbaa !5
  %816 = load i32, ptr %111, align 4, !tbaa !9
  %817 = sext i32 %816 to i64
  %818 = getelementptr inbounds double, ptr %815, i64 %817
  %819 = load ptr, ptr %48, align 8, !tbaa !5
  %820 = load i32, ptr %124, align 4, !tbaa !9
  %821 = sext i32 %820 to i64
  %822 = getelementptr inbounds double, ptr %819, i64 %821
  %823 = load ptr, ptr %49, align 8, !tbaa !5
  %824 = load i32, ptr %119, align 4, !tbaa !9
  %825 = sext i32 %824 to i64
  %826 = getelementptr inbounds i32, ptr %823, i64 %825
  %827 = load ptr, ptr %31, align 8, !tbaa !5
  call void @dlarrb_(ptr noundef %101, ptr noundef %797, ptr noundef %804, ptr noundef %77, ptr noundef %78, ptr noundef %805, ptr noundef %806, ptr noundef %120, ptr noundef %810, ptr noundef %814, ptr noundef %818, ptr noundef %822, ptr noundef %826, ptr noundef %827, ptr noundef %113, ptr noundef %101, ptr noundef %83)
  %828 = load i32, ptr %83, align 4, !tbaa !9
  %829 = icmp ne i32 %828, 0
  br i1 %829, label %830, label %832

830:                                              ; preds = %771
  %831 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -1, ptr %831, align 4, !tbaa !9
  store i32 1, ptr %151, align 4
  br label %2276

832:                                              ; preds = %771
  %833 = load i32, ptr %123, align 4, !tbaa !9
  %834 = icmp sgt i32 %833, 1
  br i1 %834, label %835, label %895

835:                                              ; preds = %832
  %836 = load ptr, ptr %41, align 8, !tbaa !5
  %837 = load i32, ptr %111, align 4, !tbaa !9
  %838 = load i32, ptr %123, align 4, !tbaa !9
  %839 = add nsw i32 %837, %838
  %840 = sub nsw i32 %839, 2
  %841 = sext i32 %840 to i64
  %842 = getelementptr inbounds double, ptr %836, i64 %841
  %843 = load double, ptr %842, align 8, !tbaa !11
  store double %843, ptr %59, align 8, !tbaa !11
  %844 = load ptr, ptr %39, align 8, !tbaa !5
  %845 = load i32, ptr %111, align 4, !tbaa !9
  %846 = load i32, ptr %123, align 4, !tbaa !9
  %847 = add nsw i32 %845, %846
  %848 = sub nsw i32 %847, 1
  %849 = sext i32 %848 to i64
  %850 = getelementptr inbounds double, ptr %844, i64 %849
  %851 = load double, ptr %850, align 8, !tbaa !11
  %852 = load ptr, ptr %40, align 8, !tbaa !5
  %853 = load i32, ptr %111, align 4, !tbaa !9
  %854 = load i32, ptr %123, align 4, !tbaa !9
  %855 = add nsw i32 %853, %854
  %856 = sub nsw i32 %855, 1
  %857 = sext i32 %856 to i64
  %858 = getelementptr inbounds double, ptr %852, i64 %857
  %859 = load double, ptr %858, align 8, !tbaa !11
  %860 = fsub double %851, %859
  %861 = load ptr, ptr %39, align 8, !tbaa !5
  %862 = load i32, ptr %111, align 4, !tbaa !9
  %863 = load i32, ptr %123, align 4, !tbaa !9
  %864 = add nsw i32 %862, %863
  %865 = sub nsw i32 %864, 2
  %866 = sext i32 %865 to i64
  %867 = getelementptr inbounds double, ptr %861, i64 %866
  %868 = load double, ptr %867, align 8, !tbaa !11
  %869 = fsub double %860, %868
  %870 = load ptr, ptr %40, align 8, !tbaa !5
  %871 = load i32, ptr %111, align 4, !tbaa !9
  %872 = load i32, ptr %123, align 4, !tbaa !9
  %873 = add nsw i32 %871, %872
  %874 = sub nsw i32 %873, 2
  %875 = sext i32 %874 to i64
  %876 = getelementptr inbounds double, ptr %870, i64 %875
  %877 = load double, ptr %876, align 8, !tbaa !11
  %878 = fsub double %869, %877
  store double %878, ptr %60, align 8, !tbaa !11
  %879 = load double, ptr %59, align 8, !tbaa !11
  %880 = load double, ptr %60, align 8, !tbaa !11
  %881 = fcmp oge double %879, %880
  br i1 %881, label %882, label %884

882:                                              ; preds = %835
  %883 = load double, ptr %59, align 8, !tbaa !11
  br label %886

884:                                              ; preds = %835
  %885 = load double, ptr %60, align 8, !tbaa !11
  br label %886

886:                                              ; preds = %884, %882
  %887 = phi double [ %883, %882 ], [ %885, %884 ]
  %888 = load ptr, ptr %41, align 8, !tbaa !5
  %889 = load i32, ptr %111, align 4, !tbaa !9
  %890 = load i32, ptr %123, align 4, !tbaa !9
  %891 = add nsw i32 %889, %890
  %892 = sub nsw i32 %891, 2
  %893 = sext i32 %892 to i64
  %894 = getelementptr inbounds double, ptr %888, i64 %893
  store double %887, ptr %894, align 8, !tbaa !11
  br label %895

895:                                              ; preds = %886, %832
  %896 = load i32, ptr %111, align 4, !tbaa !9
  %897 = load i32, ptr %126, align 4, !tbaa !9
  %898 = add nsw i32 %896, %897
  %899 = sub nsw i32 %898, 1
  %900 = load i32, ptr %69, align 4, !tbaa !9
  %901 = icmp slt i32 %899, %900
  br i1 %901, label %902, label %960

902:                                              ; preds = %895
  %903 = load ptr, ptr %41, align 8, !tbaa !5
  %904 = load i32, ptr %111, align 4, !tbaa !9
  %905 = load i32, ptr %126, align 4, !tbaa !9
  %906 = add nsw i32 %904, %905
  %907 = sub nsw i32 %906, 1
  %908 = sext i32 %907 to i64
  %909 = getelementptr inbounds double, ptr %903, i64 %908
  %910 = load double, ptr %909, align 8, !tbaa !11
  store double %910, ptr %59, align 8, !tbaa !11
  %911 = load ptr, ptr %39, align 8, !tbaa !5
  %912 = load i32, ptr %111, align 4, !tbaa !9
  %913 = load i32, ptr %126, align 4, !tbaa !9
  %914 = add nsw i32 %912, %913
  %915 = sext i32 %914 to i64
  %916 = getelementptr inbounds double, ptr %911, i64 %915
  %917 = load double, ptr %916, align 8, !tbaa !11
  %918 = load ptr, ptr %40, align 8, !tbaa !5
  %919 = load i32, ptr %111, align 4, !tbaa !9
  %920 = load i32, ptr %126, align 4, !tbaa !9
  %921 = add nsw i32 %919, %920
  %922 = sext i32 %921 to i64
  %923 = getelementptr inbounds double, ptr %918, i64 %922
  %924 = load double, ptr %923, align 8, !tbaa !11
  %925 = fsub double %917, %924
  %926 = load ptr, ptr %39, align 8, !tbaa !5
  %927 = load i32, ptr %111, align 4, !tbaa !9
  %928 = load i32, ptr %126, align 4, !tbaa !9
  %929 = add nsw i32 %927, %928
  %930 = sub nsw i32 %929, 1
  %931 = sext i32 %930 to i64
  %932 = getelementptr inbounds double, ptr %926, i64 %931
  %933 = load double, ptr %932, align 8, !tbaa !11
  %934 = fsub double %925, %933
  %935 = load ptr, ptr %40, align 8, !tbaa !5
  %936 = load i32, ptr %111, align 4, !tbaa !9
  %937 = load i32, ptr %126, align 4, !tbaa !9
  %938 = add nsw i32 %936, %937
  %939 = sub nsw i32 %938, 1
  %940 = sext i32 %939 to i64
  %941 = getelementptr inbounds double, ptr %935, i64 %940
  %942 = load double, ptr %941, align 8, !tbaa !11
  %943 = fsub double %934, %942
  store double %943, ptr %60, align 8, !tbaa !11
  %944 = load double, ptr %59, align 8, !tbaa !11
  %945 = load double, ptr %60, align 8, !tbaa !11
  %946 = fcmp oge double %944, %945
  br i1 %946, label %947, label %949

947:                                              ; preds = %902
  %948 = load double, ptr %59, align 8, !tbaa !11
  br label %951

949:                                              ; preds = %902
  %950 = load double, ptr %60, align 8, !tbaa !11
  br label %951

951:                                              ; preds = %949, %947
  %952 = phi double [ %948, %947 ], [ %950, %949 ]
  %953 = load ptr, ptr %41, align 8, !tbaa !5
  %954 = load i32, ptr %111, align 4, !tbaa !9
  %955 = load i32, ptr %126, align 4, !tbaa !9
  %956 = add nsw i32 %954, %955
  %957 = sub nsw i32 %956, 1
  %958 = sext i32 %957 to i64
  %959 = getelementptr inbounds double, ptr %953, i64 %958
  store double %952, ptr %959, align 8, !tbaa !11
  br label %960

960:                                              ; preds = %951, %895
  %961 = load i32, ptr %126, align 4, !tbaa !9
  store i32 %961, ptr %55, align 4, !tbaa !9
  %962 = load i32, ptr %123, align 4, !tbaa !9
  store i32 %962, ptr %75, align 4, !tbaa !9
  br label %963

963:                                              ; preds = %985, %960
  %964 = load i32, ptr %75, align 4, !tbaa !9
  %965 = load i32, ptr %55, align 4, !tbaa !9
  %966 = icmp sle i32 %964, %965
  br i1 %966, label %967, label %988

967:                                              ; preds = %963
  %968 = load ptr, ptr %48, align 8, !tbaa !5
  %969 = load i32, ptr %111, align 4, !tbaa !9
  %970 = load i32, ptr %75, align 4, !tbaa !9
  %971 = add nsw i32 %969, %970
  %972 = sub nsw i32 %971, 1
  %973 = sext i32 %972 to i64
  %974 = getelementptr inbounds double, ptr %968, i64 %973
  %975 = load double, ptr %974, align 8, !tbaa !11
  %976 = load double, ptr %82, align 8, !tbaa !11
  %977 = fadd double %975, %976
  %978 = load ptr, ptr %39, align 8, !tbaa !5
  %979 = load i32, ptr %111, align 4, !tbaa !9
  %980 = load i32, ptr %75, align 4, !tbaa !9
  %981 = add nsw i32 %979, %980
  %982 = sub nsw i32 %981, 1
  %983 = sext i32 %982 to i64
  %984 = getelementptr inbounds double, ptr %978, i64 %983
  store double %977, ptr %984, align 8, !tbaa !11
  br label %985

985:                                              ; preds = %967
  %986 = load i32, ptr %75, align 4, !tbaa !9
  %987 = add nsw i32 %986, 1
  store i32 %987, ptr %75, align 4, !tbaa !9
  br label %963, !llvm.loop !23

988:                                              ; preds = %963
  br label %989

989:                                              ; preds = %988, %768
  %990 = load i32, ptr %123, align 4, !tbaa !9
  store i32 %990, ptr %128, align 4, !tbaa !9
  %991 = load i32, ptr %126, align 4, !tbaa !9
  store i32 %991, ptr %55, align 4, !tbaa !9
  %992 = load i32, ptr %123, align 4, !tbaa !9
  store i32 %992, ptr %75, align 4, !tbaa !9
  br label %993

993:                                              ; preds = %2256, %989
  %994 = load i32, ptr %75, align 4, !tbaa !9
  %995 = load i32, ptr %55, align 4, !tbaa !9
  %996 = icmp sle i32 %994, %995
  br i1 %996, label %997, label %2259

997:                                              ; preds = %993
  %998 = load i32, ptr %75, align 4, !tbaa !9
  %999 = load i32, ptr %126, align 4, !tbaa !9
  %1000 = icmp eq i32 %998, %999
  br i1 %1000, label %1001, label %1003

1001:                                             ; preds = %997
  %1002 = load i32, ptr %75, align 4, !tbaa !9
  store i32 %1002, ptr %134, align 4, !tbaa !9
  br label %1037

1003:                                             ; preds = %997
  %1004 = load ptr, ptr %41, align 8, !tbaa !5
  %1005 = load i32, ptr %111, align 4, !tbaa !9
  %1006 = load i32, ptr %75, align 4, !tbaa !9
  %1007 = add nsw i32 %1005, %1006
  %1008 = sub nsw i32 %1007, 1
  %1009 = sext i32 %1008 to i64
  %1010 = getelementptr inbounds double, ptr %1004, i64 %1009
  %1011 = load double, ptr %1010, align 8, !tbaa !11
  %1012 = load ptr, ptr %36, align 8, !tbaa !5
  %1013 = load double, ptr %1012, align 8, !tbaa !11
  %1014 = load ptr, ptr %48, align 8, !tbaa !5
  %1015 = load i32, ptr %111, align 4, !tbaa !9
  %1016 = load i32, ptr %75, align 4, !tbaa !9
  %1017 = add nsw i32 %1015, %1016
  %1018 = sub nsw i32 %1017, 1
  %1019 = sext i32 %1018 to i64
  %1020 = getelementptr inbounds double, ptr %1014, i64 %1019
  %1021 = load double, ptr %1020, align 8, !tbaa !11
  store double %1021, ptr %59, align 8, !tbaa !11
  %1022 = load double, ptr %59, align 8, !tbaa !11
  %1023 = fcmp oge double %1022, 0.000000e+00
  br i1 %1023, label %1024, label %1026

1024:                                             ; preds = %1003
  %1025 = load double, ptr %59, align 8, !tbaa !11
  br label %1029

1026:                                             ; preds = %1003
  %1027 = load double, ptr %59, align 8, !tbaa !11
  %1028 = fneg double %1027
  br label %1029

1029:                                             ; preds = %1026, %1024
  %1030 = phi double [ %1025, %1024 ], [ %1028, %1026 ]
  %1031 = fmul double %1013, %1030
  %1032 = fcmp oge double %1011, %1031
  br i1 %1032, label %1033, label %1035

1033:                                             ; preds = %1029
  %1034 = load i32, ptr %75, align 4, !tbaa !9
  store i32 %1034, ptr %134, align 4, !tbaa !9
  br label %1036

1035:                                             ; preds = %1029
  br label %2255

1036:                                             ; preds = %1033
  br label %1037

1037:                                             ; preds = %1036, %1001
  %1038 = load i32, ptr %134, align 4, !tbaa !9
  %1039 = load i32, ptr %128, align 4, !tbaa !9
  %1040 = sub nsw i32 %1038, %1039
  %1041 = add nsw i32 %1040, 1
  store i32 %1041, ptr %137, align 4, !tbaa !9
  %1042 = load ptr, ptr %34, align 8, !tbaa !5
  %1043 = load i32, ptr %1042, align 4, !tbaa !9
  %1044 = icmp eq i32 %1043, 1
  br i1 %1044, label %1045, label %1056

1045:                                             ; preds = %1037
  %1046 = load ptr, ptr %35, align 8, !tbaa !5
  %1047 = load i32, ptr %1046, align 4, !tbaa !9
  %1048 = load ptr, ptr %33, align 8, !tbaa !5
  %1049 = load i32, ptr %1048, align 4, !tbaa !9
  %1050 = icmp eq i32 %1047, %1049
  br i1 %1050, label %1051, label %1056

1051:                                             ; preds = %1045
  %1052 = load i32, ptr %111, align 4, !tbaa !9
  %1053 = load i32, ptr %128, align 4, !tbaa !9
  %1054 = add nsw i32 %1052, %1053
  %1055 = sub nsw i32 %1054, 1
  store i32 %1055, ptr %129, align 4, !tbaa !9
  br label %1086

1056:                                             ; preds = %1045, %1037
  %1057 = load i32, ptr %111, align 4, !tbaa !9
  %1058 = load i32, ptr %128, align 4, !tbaa !9
  %1059 = add nsw i32 %1057, %1058
  %1060 = sub nsw i32 %1059, 1
  %1061 = load ptr, ptr %34, align 8, !tbaa !5
  %1062 = load i32, ptr %1061, align 4, !tbaa !9
  %1063 = icmp slt i32 %1060, %1062
  br i1 %1063, label %1064, label %1068

1064:                                             ; preds = %1056
  %1065 = load ptr, ptr %34, align 8, !tbaa !5
  %1066 = load i32, ptr %1065, align 4, !tbaa !9
  %1067 = sub nsw i32 %1066, 1
  store i32 %1067, ptr %129, align 4, !tbaa !9
  br label %1085

1068:                                             ; preds = %1056
  %1069 = load i32, ptr %111, align 4, !tbaa !9
  %1070 = load i32, ptr %128, align 4, !tbaa !9
  %1071 = add nsw i32 %1069, %1070
  %1072 = sub nsw i32 %1071, 1
  %1073 = load ptr, ptr %35, align 8, !tbaa !5
  %1074 = load i32, ptr %1073, align 4, !tbaa !9
  %1075 = icmp sgt i32 %1072, %1074
  br i1 %1075, label %1076, label %1079

1076:                                             ; preds = %1068
  %1077 = load ptr, ptr %35, align 8, !tbaa !5
  %1078 = load i32, ptr %1077, align 4, !tbaa !9
  store i32 %1078, ptr %129, align 4, !tbaa !9
  br label %1084

1079:                                             ; preds = %1068
  %1080 = load i32, ptr %111, align 4, !tbaa !9
  %1081 = load i32, ptr %128, align 4, !tbaa !9
  %1082 = add nsw i32 %1080, %1081
  %1083 = sub nsw i32 %1082, 1
  store i32 %1083, ptr %129, align 4, !tbaa !9
  br label %1084

1084:                                             ; preds = %1079, %1076
  br label %1085

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

1086:                                             ; preds = %1085, %1051
  %1087 = load i32, ptr %137, align 4, !tbaa !9
  %1088 = icmp sgt i32 %1087, 1
  br i1 %1088, label %1089, label %1493

1089:                                             ; preds = %1086
  %1090 = load i32, ptr %128, align 4, !tbaa !9
  %1091 = icmp eq i32 %1090, 1
  br i1 %1091, label %1092, label %1116

1092:                                             ; preds = %1089
  store double 0.000000e+00, ptr %59, align 8, !tbaa !11
  %1093 = load ptr, ptr %39, align 8, !tbaa !5
  %1094 = load i32, ptr %111, align 4, !tbaa !9
  %1095 = sext i32 %1094 to i64
  %1096 = getelementptr inbounds double, ptr %1093, i64 %1095
  %1097 = load double, ptr %1096, align 8, !tbaa !11
  %1098 = load ptr, ptr %40, align 8, !tbaa !5
  %1099 = load i32, ptr %111, align 4, !tbaa !9
  %1100 = sext i32 %1099 to i64
  %1101 = getelementptr inbounds double, ptr %1098, i64 %1100
  %1102 = load double, ptr %1101, align 8, !tbaa !11
  %1103 = fsub double %1097, %1102
  %1104 = load ptr, ptr %27, align 8, !tbaa !5
  %1105 = load double, ptr %1104, align 8, !tbaa !11
  %1106 = fsub double %1103, %1105
  store double %1106, ptr %60, align 8, !tbaa !11
  %1107 = load double, ptr %59, align 8, !tbaa !11
  %1108 = load double, ptr %60, align 8, !tbaa !11
  %1109 = fcmp oge double %1107, %1108
  br i1 %1109, label %1110, label %1112

1110:                                             ; preds = %1092
  %1111 = load double, ptr %59, align 8, !tbaa !11
  br label %1114

1112:                                             ; preds = %1092
  %1113 = load double, ptr %60, align 8, !tbaa !11
  br label %1114

1114:                                             ; preds = %1112, %1110
  %1115 = phi double [ %1111, %1110 ], [ %1113, %1112 ]
  store double %1115, ptr %65, align 8, !tbaa !11
  br label %1125

1116:                                             ; preds = %1089
  %1117 = load ptr, ptr %41, align 8, !tbaa !5
  %1118 = load i32, ptr %111, align 4, !tbaa !9
  %1119 = load i32, ptr %128, align 4, !tbaa !9
  %1120 = add nsw i32 %1118, %1119
  %1121 = sub nsw i32 %1120, 2
  %1122 = sext i32 %1121 to i64
  %1123 = getelementptr inbounds double, ptr %1117, i64 %1122
  %1124 = load double, ptr %1123, align 8, !tbaa !11
  store double %1124, ptr %65, align 8, !tbaa !11
  br label %1125

1125:                                             ; preds = %1116, %1114
  %1126 = load ptr, ptr %41, align 8, !tbaa !5
  %1127 = load i32, ptr %111, align 4, !tbaa !9
  %1128 = load i32, ptr %134, align 4, !tbaa !9
  %1129 = add nsw i32 %1127, %1128
  %1130 = sub nsw i32 %1129, 1
  %1131 = sext i32 %1130 to i64
  %1132 = getelementptr inbounds double, ptr %1126, i64 %1131
  %1133 = load double, ptr %1132, align 8, !tbaa !11
  store double %1133, ptr %67, align 8, !tbaa !11
  store i32 1, ptr %76, align 4, !tbaa !9
  br label %1134

1134:                                             ; preds = %1197, %1125
  %1135 = load i32, ptr %76, align 4, !tbaa !9
  %1136 = icmp sle i32 %1135, 2
  br i1 %1136, label %1137, label %1200

1137:                                             ; preds = %1134
  %1138 = load i32, ptr %76, align 4, !tbaa !9
  %1139 = icmp eq i32 %1138, 1
  br i1 %1139, label %1140, label %1149

1140:                                             ; preds = %1137
  %1141 = load ptr, ptr %43, align 8, !tbaa !5
  %1142 = load i32, ptr %111, align 4, !tbaa !9
  %1143 = sub nsw i32 %1142, 1
  %1144 = load i32, ptr %128, align 4, !tbaa !9
  %1145 = add nsw i32 %1143, %1144
  %1146 = sext i32 %1145 to i64
  %1147 = getelementptr inbounds i32, ptr %1141, i64 %1146
  %1148 = load i32, ptr %1147, align 4, !tbaa !9
  store i32 %1148, ptr %77, align 4, !tbaa !9
  br label %1158

1149:                                             ; preds = %1137
  %1150 = load ptr, ptr %43, align 8, !tbaa !5
  %1151 = load i32, ptr %111, align 4, !tbaa !9
  %1152 = sub nsw i32 %1151, 1
  %1153 = load i32, ptr %134, align 4, !tbaa !9
  %1154 = add nsw i32 %1152, %1153
  %1155 = sext i32 %1154 to i64
  %1156 = getelementptr inbounds i32, ptr %1150, i64 %1155
  %1157 = load i32, ptr %1156, align 4, !tbaa !9
  store i32 %1157, ptr %77, align 4, !tbaa !9
  br label %1158

1158:                                             ; preds = %1149, %1140
  %1159 = load ptr, ptr %43, align 8, !tbaa !5
  %1160 = load i32, ptr %111, align 4, !tbaa !9
  %1161 = sext i32 %1160 to i64
  %1162 = getelementptr inbounds i32, ptr %1159, i64 %1161
  %1163 = load i32, ptr %1162, align 4, !tbaa !9
  %1164 = sub nsw i32 %1163, 1
  store i32 %1164, ptr %120, align 4, !tbaa !9
  %1165 = load ptr, ptr %29, align 8, !tbaa !5
  %1166 = load i32, ptr %103, align 4, !tbaa !9
  %1167 = sext i32 %1166 to i64
  %1168 = getelementptr inbounds double, ptr %1165, i64 %1167
  %1169 = load ptr, ptr %48, align 8, !tbaa !5
  %1170 = load i32, ptr %106, align 4, !tbaa !9
  %1171 = load i32, ptr %103, align 4, !tbaa !9
  %1172 = add nsw i32 %1170, %1171
  %1173 = sub nsw i32 %1172, 1
  %1174 = sext i32 %1173 to i64
  %1175 = getelementptr inbounds double, ptr %1169, i64 %1174
  %1176 = load ptr, ptr %48, align 8, !tbaa !5
  %1177 = load i32, ptr %111, align 4, !tbaa !9
  %1178 = sext i32 %1177 to i64
  %1179 = getelementptr inbounds double, ptr %1176, i64 %1178
  %1180 = load ptr, ptr %41, align 8, !tbaa !5
  %1181 = load i32, ptr %111, align 4, !tbaa !9
  %1182 = sext i32 %1181 to i64
  %1183 = getelementptr inbounds double, ptr %1180, i64 %1182
  %1184 = load ptr, ptr %40, align 8, !tbaa !5
  %1185 = load i32, ptr %111, align 4, !tbaa !9
  %1186 = sext i32 %1185 to i64
  %1187 = getelementptr inbounds double, ptr %1184, i64 %1186
  %1188 = load ptr, ptr %48, align 8, !tbaa !5
  %1189 = load i32, ptr %124, align 4, !tbaa !9
  %1190 = sext i32 %1189 to i64
  %1191 = getelementptr inbounds double, ptr %1188, i64 %1190
  %1192 = load ptr, ptr %49, align 8, !tbaa !5
  %1193 = load i32, ptr %119, align 4, !tbaa !9
  %1194 = sext i32 %1193 to i64
  %1195 = getelementptr inbounds i32, ptr %1192, i64 %1194
  %1196 = load ptr, ptr %31, align 8, !tbaa !5
  call void @dlarrb_(ptr noundef %101, ptr noundef %1168, ptr noundef %1175, ptr noundef %77, ptr noundef %77, ptr noundef %90, ptr noundef %90, ptr noundef %120, ptr noundef %1179, ptr noundef %1183, ptr noundef %1187, ptr noundef %1191, ptr noundef %1195, ptr noundef %1196, ptr noundef %113, ptr noundef %101, ptr noundef %83)
  br label %1197

1197:                                             ; preds = %1158
  %1198 = load i32, ptr %76, align 4, !tbaa !9
  %1199 = add nsw i32 %1198, 1
  store i32 %1199, ptr %76, align 4, !tbaa !9
  br label %1134, !llvm.loop !24

1200:                                             ; preds = %1134
  %1201 = load i32, ptr %111, align 4, !tbaa !9
  %1202 = load i32, ptr %134, align 4, !tbaa !9
  %1203 = add nsw i32 %1201, %1202
  %1204 = sub nsw i32 %1203, 1
  %1205 = load ptr, ptr %34, align 8, !tbaa !5
  %1206 = load i32, ptr %1205, align 4, !tbaa !9
  %1207 = icmp slt i32 %1204, %1206
  br i1 %1207, label %1216, label %1208

1208:                                             ; preds = %1200
  %1209 = load i32, ptr %111, align 4, !tbaa !9
  %1210 = load i32, ptr %128, align 4, !tbaa !9
  %1211 = add nsw i32 %1209, %1210
  %1212 = sub nsw i32 %1211, 1
  %1213 = load ptr, ptr %35, align 8, !tbaa !5
  %1214 = load i32, ptr %1213, align 4, !tbaa !9
  %1215 = icmp sgt i32 %1212, %1214
  br i1 %1215, label %1216, label %1223

1216:                                             ; preds = %1208, %1200
  %1217 = load i32, ptr %81, align 4, !tbaa !9
  %1218 = load i32, ptr %134, align 4, !tbaa !9
  %1219 = add nsw i32 %1217, %1218
  %1220 = load i32, ptr %128, align 4, !tbaa !9
  %1221 = sub nsw i32 %1219, %1220
  %1222 = add nsw i32 %1221, 1
  store i32 %1222, ptr %81, align 4, !tbaa !9
  br label %2252

1223:                                             ; preds = %1208
  %1224 = load ptr, ptr %29, align 8, !tbaa !5
  %1225 = load i32, ptr %103, align 4, !tbaa !9
  %1226 = sext i32 %1225 to i64
  %1227 = getelementptr inbounds double, ptr %1224, i64 %1226
  %1228 = load ptr, ptr %30, align 8, !tbaa !5
  %1229 = load i32, ptr %103, align 4, !tbaa !9
  %1230 = sext i32 %1229 to i64
  %1231 = getelementptr inbounds double, ptr %1228, i64 %1230
  %1232 = load ptr, ptr %48, align 8, !tbaa !5
  %1233 = load i32, ptr %79, align 4, !tbaa !9
  %1234 = load i32, ptr %103, align 4, !tbaa !9
  %1235 = add nsw i32 %1233, %1234
  %1236 = sub nsw i32 %1235, 1
  %1237 = sext i32 %1236 to i64
  %1238 = getelementptr inbounds double, ptr %1232, i64 %1237
  %1239 = load ptr, ptr %48, align 8, !tbaa !5
  %1240 = load i32, ptr %111, align 4, !tbaa !9
  %1241 = sext i32 %1240 to i64
  %1242 = getelementptr inbounds double, ptr %1239, i64 %1241
  %1243 = load ptr, ptr %41, align 8, !tbaa !5
  %1244 = load i32, ptr %111, align 4, !tbaa !9
  %1245 = sext i32 %1244 to i64
  %1246 = getelementptr inbounds double, ptr %1243, i64 %1245
  %1247 = load ptr, ptr %40, align 8, !tbaa !5
  %1248 = load i32, ptr %111, align 4, !tbaa !9
  %1249 = sext i32 %1248 to i64
  %1250 = getelementptr inbounds double, ptr %1247, i64 %1249
  %1251 = load ptr, ptr %31, align 8, !tbaa !5
  %1252 = load ptr, ptr %48, align 8, !tbaa !5
  %1253 = load i32, ptr %93, align 4, !tbaa !9
  %1254 = sext i32 %1253 to i64
  %1255 = getelementptr inbounds double, ptr %1252, i64 %1254
  %1256 = load ptr, ptr %48, align 8, !tbaa !5
  %1257 = load i32, ptr %94, align 4, !tbaa !9
  %1258 = sext i32 %1257 to i64
  %1259 = getelementptr inbounds double, ptr %1256, i64 %1258
  %1260 = load ptr, ptr %48, align 8, !tbaa !5
  %1261 = load i32, ptr %124, align 4, !tbaa !9
  %1262 = sext i32 %1261 to i64
  %1263 = getelementptr inbounds double, ptr %1260, i64 %1262
  call void @dlarrf_(ptr noundef %101, ptr noundef %1227, ptr noundef %1231, ptr noundef %1238, ptr noundef %128, ptr noundef %134, ptr noundef %1242, ptr noundef %1246, ptr noundef %1250, ptr noundef %113, ptr noundef %65, ptr noundef %67, ptr noundef %1251, ptr noundef %146, ptr noundef %1255, ptr noundef %1259, ptr noundef %1263, ptr noundef %83)
  %1264 = load i32, ptr %101, align 4, !tbaa !9
  %1265 = sub nsw i32 %1264, 1
  store i32 %1265, ptr %56, align 4, !tbaa !9
  store i32 1, ptr %76, align 4, !tbaa !9
  br label %1266

1266:                                             ; preds = %1338, %1223
  %1267 = load i32, ptr %76, align 4, !tbaa !9
  %1268 = load i32, ptr %56, align 4, !tbaa !9
  %1269 = icmp sle i32 %1267, %1268
  br i1 %1269, label %1270, label %1341

1270:                                             ; preds = %1266
  %1271 = load i32, ptr %103, align 4, !tbaa !9
  %1272 = load i32, ptr %76, align 4, !tbaa !9
  %1273 = add nsw i32 %1271, %1272
  %1274 = sub nsw i32 %1273, 1
  %1275 = load i32, ptr %129, align 4, !tbaa !9
  %1276 = load i32, ptr %51, align 4, !tbaa !9
  %1277 = mul nsw i32 %1275, %1276
  %1278 = add nsw i32 %1274, %1277
  store i32 %1278, ptr %57, align 4, !tbaa !9
  %1279 = load i32, ptr %93, align 4, !tbaa !9
  %1280 = load i32, ptr %76, align 4, !tbaa !9
  %1281 = add nsw i32 %1279, %1280
  %1282 = sub nsw i32 %1281, 1
  store i32 %1282, ptr %58, align 4, !tbaa !9
  %1283 = load ptr, ptr %48, align 8, !tbaa !5
  %1284 = load i32, ptr %58, align 4, !tbaa !9
  %1285 = sext i32 %1284 to i64
  %1286 = getelementptr inbounds double, ptr %1283, i64 %1285
  %1287 = load double, ptr %1286, align 8, !tbaa !11
  %1288 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  store double %1287, ptr %1288, align 8, !tbaa !17
  %1289 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  store double 0.000000e+00, ptr %1289, align 8, !tbaa !19
  %1290 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  %1291 = load double, ptr %1290, align 8, !tbaa !17
  %1292 = load ptr, ptr %45, align 8, !tbaa !5
  %1293 = load i32, ptr %57, align 4, !tbaa !9
  %1294 = sext i32 %1293 to i64
  %1295 = getelementptr inbounds %struct.doublecomplex, ptr %1292, i64 %1294
  %1296 = getelementptr inbounds %struct.doublecomplex, ptr %1295, i32 0, i32 0
  store double %1291, ptr %1296, align 8, !tbaa !17
  %1297 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  %1298 = load double, ptr %1297, align 8, !tbaa !19
  %1299 = load ptr, ptr %45, align 8, !tbaa !5
  %1300 = load i32, ptr %57, align 4, !tbaa !9
  %1301 = sext i32 %1300 to i64
  %1302 = getelementptr inbounds %struct.doublecomplex, ptr %1299, i64 %1301
  %1303 = getelementptr inbounds %struct.doublecomplex, ptr %1302, i32 0, i32 1
  store double %1298, ptr %1303, align 8, !tbaa !19
  %1304 = load i32, ptr %103, align 4, !tbaa !9
  %1305 = load i32, ptr %76, align 4, !tbaa !9
  %1306 = add nsw i32 %1304, %1305
  %1307 = sub nsw i32 %1306, 1
  %1308 = load i32, ptr %129, align 4, !tbaa !9
  %1309 = add nsw i32 %1308, 1
  %1310 = load i32, ptr %51, align 4, !tbaa !9
  %1311 = mul nsw i32 %1309, %1310
  %1312 = add nsw i32 %1307, %1311
  store i32 %1312, ptr %57, align 4, !tbaa !9
  %1313 = load i32, ptr %94, align 4, !tbaa !9
  %1314 = load i32, ptr %76, align 4, !tbaa !9
  %1315 = add nsw i32 %1313, %1314
  %1316 = sub nsw i32 %1315, 1
  store i32 %1316, ptr %58, align 4, !tbaa !9
  %1317 = load ptr, ptr %48, align 8, !tbaa !5
  %1318 = load i32, ptr %58, align 4, !tbaa !9
  %1319 = sext i32 %1318 to i64
  %1320 = getelementptr inbounds double, ptr %1317, i64 %1319
  %1321 = load double, ptr %1320, align 8, !tbaa !11
  %1322 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  store double %1321, ptr %1322, align 8, !tbaa !17
  %1323 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  store double 0.000000e+00, ptr %1323, align 8, !tbaa !19
  %1324 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  %1325 = load double, ptr %1324, align 8, !tbaa !17
  %1326 = load ptr, ptr %45, align 8, !tbaa !5
  %1327 = load i32, ptr %57, align 4, !tbaa !9
  %1328 = sext i32 %1327 to i64
  %1329 = getelementptr inbounds %struct.doublecomplex, ptr %1326, i64 %1328
  %1330 = getelementptr inbounds %struct.doublecomplex, ptr %1329, i32 0, i32 0
  store double %1325, ptr %1330, align 8, !tbaa !17
  %1331 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  %1332 = load double, ptr %1331, align 8, !tbaa !19
  %1333 = load ptr, ptr %45, align 8, !tbaa !5
  %1334 = load i32, ptr %57, align 4, !tbaa !9
  %1335 = sext i32 %1334 to i64
  %1336 = getelementptr inbounds %struct.doublecomplex, ptr %1333, i64 %1335
  %1337 = getelementptr inbounds %struct.doublecomplex, ptr %1336, i32 0, i32 1
  store double %1332, ptr %1337, align 8, !tbaa !19
  br label %1338

1338:                                             ; preds = %1270
  %1339 = load i32, ptr %76, align 4, !tbaa !9
  %1340 = add nsw i32 %1339, 1
  store i32 %1340, ptr %76, align 4, !tbaa !9
  br label %1266, !llvm.loop !25

1341:                                             ; preds = %1266
  %1342 = load i32, ptr %63, align 4, !tbaa !9
  %1343 = load i32, ptr %129, align 4, !tbaa !9
  %1344 = load i32, ptr %51, align 4, !tbaa !9
  %1345 = mul nsw i32 %1343, %1344
  %1346 = add nsw i32 %1342, %1345
  store i32 %1346, ptr %56, align 4, !tbaa !9
  %1347 = load i32, ptr %93, align 4, !tbaa !9
  %1348 = load i32, ptr %101, align 4, !tbaa !9
  %1349 = add nsw i32 %1347, %1348
  %1350 = sub nsw i32 %1349, 1
  store i32 %1350, ptr %57, align 4, !tbaa !9
  %1351 = load ptr, ptr %48, align 8, !tbaa !5
  %1352 = load i32, ptr %57, align 4, !tbaa !9
  %1353 = sext i32 %1352 to i64
  %1354 = getelementptr inbounds double, ptr %1351, i64 %1353
  %1355 = load double, ptr %1354, align 8, !tbaa !11
  %1356 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  store double %1355, ptr %1356, align 8, !tbaa !17
  %1357 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  store double 0.000000e+00, ptr %1357, align 8, !tbaa !19
  %1358 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  %1359 = load double, ptr %1358, align 8, !tbaa !17
  %1360 = load ptr, ptr %45, align 8, !tbaa !5
  %1361 = load i32, ptr %56, align 4, !tbaa !9
  %1362 = sext i32 %1361 to i64
  %1363 = getelementptr inbounds %struct.doublecomplex, ptr %1360, i64 %1362
  %1364 = getelementptr inbounds %struct.doublecomplex, ptr %1363, i32 0, i32 0
  store double %1359, ptr %1364, align 8, !tbaa !17
  %1365 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  %1366 = load double, ptr %1365, align 8, !tbaa !19
  %1367 = load ptr, ptr %45, align 8, !tbaa !5
  %1368 = load i32, ptr %56, align 4, !tbaa !9
  %1369 = sext i32 %1368 to i64
  %1370 = getelementptr inbounds %struct.doublecomplex, ptr %1367, i64 %1369
  %1371 = getelementptr inbounds %struct.doublecomplex, ptr %1370, i32 0, i32 1
  store double %1366, ptr %1371, align 8, !tbaa !19
  %1372 = load i32, ptr %83, align 4, !tbaa !9
  %1373 = icmp eq i32 %1372, 0
  br i1 %1373, label %1374, label %1490

1374:                                             ; preds = %1341
  %1375 = load double, ptr %82, align 8, !tbaa !11
  %1376 = load double, ptr %146, align 8, !tbaa !11
  %1377 = fadd double %1375, %1376
  store double %1377, ptr %117, align 8, !tbaa !11
  %1378 = load i32, ptr %63, align 4, !tbaa !9
  %1379 = load i32, ptr %129, align 4, !tbaa !9
  %1380 = add nsw i32 %1379, 1
  %1381 = load i32, ptr %51, align 4, !tbaa !9
  %1382 = mul nsw i32 %1380, %1381
  %1383 = add nsw i32 %1378, %1382
  store i32 %1383, ptr %56, align 4, !tbaa !9
  %1384 = load double, ptr %117, align 8, !tbaa !11
  %1385 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  store double %1384, ptr %1385, align 8, !tbaa !17
  %1386 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  store double 0.000000e+00, ptr %1386, align 8, !tbaa !19
  %1387 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  %1388 = load double, ptr %1387, align 8, !tbaa !17
  %1389 = load ptr, ptr %45, align 8, !tbaa !5
  %1390 = load i32, ptr %56, align 4, !tbaa !9
  %1391 = sext i32 %1390 to i64
  %1392 = getelementptr inbounds %struct.doublecomplex, ptr %1389, i64 %1391
  %1393 = getelementptr inbounds %struct.doublecomplex, ptr %1392, i32 0, i32 0
  store double %1388, ptr %1393, align 8, !tbaa !17
  %1394 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  %1395 = load double, ptr %1394, align 8, !tbaa !19
  %1396 = load ptr, ptr %45, align 8, !tbaa !5
  %1397 = load i32, ptr %56, align 4, !tbaa !9
  %1398 = sext i32 %1397 to i64
  %1399 = getelementptr inbounds %struct.doublecomplex, ptr %1396, i64 %1398
  %1400 = getelementptr inbounds %struct.doublecomplex, ptr %1399, i32 0, i32 1
  store double %1395, ptr %1400, align 8, !tbaa !19
  %1401 = load i32, ptr %134, align 4, !tbaa !9
  store i32 %1401, ptr %56, align 4, !tbaa !9
  %1402 = load i32, ptr %128, align 4, !tbaa !9
  store i32 %1402, ptr %76, align 4, !tbaa !9
  br label %1403

1403:                                             ; preds = %1469, %1374
  %1404 = load i32, ptr %76, align 4, !tbaa !9
  %1405 = load i32, ptr %56, align 4, !tbaa !9
  %1406 = icmp sle i32 %1404, %1405
  br i1 %1406, label %1407, label %1472

1407:                                             ; preds = %1403
  %1408 = load double, ptr %145, align 8, !tbaa !11
  %1409 = fmul double %1408, 3.000000e+00
  %1410 = load ptr, ptr %48, align 8, !tbaa !5
  %1411 = load i32, ptr %111, align 4, !tbaa !9
  %1412 = load i32, ptr %76, align 4, !tbaa !9
  %1413 = add nsw i32 %1411, %1412
  %1414 = sub nsw i32 %1413, 1
  %1415 = sext i32 %1414 to i64
  %1416 = getelementptr inbounds double, ptr %1410, i64 %1415
  %1417 = load double, ptr %1416, align 8, !tbaa !11
  store double %1417, ptr %59, align 8, !tbaa !11
  %1418 = load double, ptr %59, align 8, !tbaa !11
  %1419 = fcmp oge double %1418, 0.000000e+00
  br i1 %1419, label %1420, label %1422

1420:                                             ; preds = %1407
  %1421 = load double, ptr %59, align 8, !tbaa !11
  br label %1425

1422:                                             ; preds = %1407
  %1423 = load double, ptr %59, align 8, !tbaa !11
  %1424 = fneg double %1423
  br label %1425

1425:                                             ; preds = %1422, %1420
  %1426 = phi double [ %1421, %1420 ], [ %1424, %1422 ]
  %1427 = fmul double %1409, %1426
  store double %1427, ptr %80, align 8, !tbaa !11
  %1428 = load double, ptr %146, align 8, !tbaa !11
  %1429 = load ptr, ptr %48, align 8, !tbaa !5
  %1430 = load i32, ptr %111, align 4, !tbaa !9
  %1431 = load i32, ptr %76, align 4, !tbaa !9
  %1432 = add nsw i32 %1430, %1431
  %1433 = sub nsw i32 %1432, 1
  %1434 = sext i32 %1433 to i64
  %1435 = getelementptr inbounds double, ptr %1429, i64 %1434
  %1436 = load double, ptr %1435, align 8, !tbaa !11
  %1437 = fsub double %1436, %1428
  store double %1437, ptr %1435, align 8, !tbaa !11
  %1438 = load double, ptr %145, align 8, !tbaa !11
  %1439 = fmul double %1438, 4.000000e+00
  %1440 = load ptr, ptr %48, align 8, !tbaa !5
  %1441 = load i32, ptr %111, align 4, !tbaa !9
  %1442 = load i32, ptr %76, align 4, !tbaa !9
  %1443 = add nsw i32 %1441, %1442
  %1444 = sub nsw i32 %1443, 1
  %1445 = sext i32 %1444 to i64
  %1446 = getelementptr inbounds double, ptr %1440, i64 %1445
  %1447 = load double, ptr %1446, align 8, !tbaa !11
  store double %1447, ptr %59, align 8, !tbaa !11
  %1448 = load double, ptr %59, align 8, !tbaa !11
  %1449 = fcmp oge double %1448, 0.000000e+00
  br i1 %1449, label %1450, label %1452

1450:                                             ; preds = %1425
  %1451 = load double, ptr %59, align 8, !tbaa !11
  br label %1455

1452:                                             ; preds = %1425
  %1453 = load double, ptr %59, align 8, !tbaa !11
  %1454 = fneg double %1453
  br label %1455

1455:                                             ; preds = %1452, %1450
  %1456 = phi double [ %1451, %1450 ], [ %1454, %1452 ]
  %1457 = load double, ptr %80, align 8, !tbaa !11
  %1458 = call double @llvm.fmuladd.f64(double %1439, double %1456, double %1457)
  store double %1458, ptr %80, align 8, !tbaa !11
  %1459 = load double, ptr %80, align 8, !tbaa !11
  %1460 = load ptr, ptr %40, align 8, !tbaa !5
  %1461 = load i32, ptr %111, align 4, !tbaa !9
  %1462 = load i32, ptr %76, align 4, !tbaa !9
  %1463 = add nsw i32 %1461, %1462
  %1464 = sub nsw i32 %1463, 1
  %1465 = sext i32 %1464 to i64
  %1466 = getelementptr inbounds double, ptr %1460, i64 %1465
  %1467 = load double, ptr %1466, align 8, !tbaa !11
  %1468 = fadd double %1467, %1459
  store double %1468, ptr %1466, align 8, !tbaa !11
  br label %1469

1469:                                             ; preds = %1455
  %1470 = load i32, ptr %76, align 4, !tbaa !9
  %1471 = add nsw i32 %1470, 1
  store i32 %1471, ptr %76, align 4, !tbaa !9
  br label %1403, !llvm.loop !26

1472:                                             ; preds = %1403
  %1473 = load i32, ptr %88, align 4, !tbaa !9
  %1474 = add nsw i32 %1473, 1
  store i32 %1474, ptr %88, align 4, !tbaa !9
  %1475 = load i32, ptr %122, align 4, !tbaa !9
  %1476 = load i32, ptr %88, align 4, !tbaa !9
  %1477 = shl i32 %1476, 1
  %1478 = add nsw i32 %1475, %1477
  store i32 %1478, ptr %76, align 4, !tbaa !9
  %1479 = load i32, ptr %128, align 4, !tbaa !9
  %1480 = load ptr, ptr %49, align 8, !tbaa !5
  %1481 = load i32, ptr %76, align 4, !tbaa !9
  %1482 = sub nsw i32 %1481, 1
  %1483 = sext i32 %1482 to i64
  %1484 = getelementptr inbounds i32, ptr %1480, i64 %1483
  store i32 %1479, ptr %1484, align 4, !tbaa !9
  %1485 = load i32, ptr %134, align 4, !tbaa !9
  %1486 = load ptr, ptr %49, align 8, !tbaa !5
  %1487 = load i32, ptr %76, align 4, !tbaa !9
  %1488 = sext i32 %1487 to i64
  %1489 = getelementptr inbounds i32, ptr %1486, i64 %1488
  store i32 %1485, ptr %1489, align 4, !tbaa !9
  br label %1492

1490:                                             ; preds = %1341
  %1491 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -2, ptr %1491, align 4, !tbaa !9
  store i32 1, ptr %151, align 4
  br label %2276

1492:                                             ; preds = %1472
  br label %2251

1493:                                             ; preds = %1086
  store i32 0, ptr %70, align 4, !tbaa !9
  %1494 = load i32, ptr %101, align 4, !tbaa !9
  %1495 = sitofp i32 %1494 to double
  %1496 = call double @log(double noundef %1495) #5
  %1497 = fmul double %1496, 4.000000e+00
  %1498 = load double, ptr %145, align 8, !tbaa !11
  %1499 = fmul double %1497, %1498
  store double %1499, ptr %147, align 8, !tbaa !11
  %1500 = load i32, ptr %128, align 4, !tbaa !9
  store i32 %1500, ptr %76, align 4, !tbaa !9
  %1501 = load i32, ptr %111, align 4, !tbaa !9
  %1502 = load i32, ptr %76, align 4, !tbaa !9
  %1503 = add nsw i32 %1501, %1502
  %1504 = sub nsw i32 %1503, 1
  store i32 %1504, ptr %125, align 4, !tbaa !9
  %1505 = load i32, ptr %125, align 4, !tbaa !9
  %1506 = sub nsw i32 %1505, 1
  store i32 %1506, ptr %56, align 4, !tbaa !9
  %1507 = load i32, ptr %56, align 4, !tbaa !9
  %1508 = icmp sge i32 %1507, 1
  br i1 %1508, label %1509, label %1511

1509:                                             ; preds = %1493
  %1510 = load i32, ptr %56, align 4, !tbaa !9
  br label %1512

1511:                                             ; preds = %1493
  br label %1512

1512:                                             ; preds = %1511, %1509
  %1513 = phi i32 [ %1510, %1509 ], [ 1, %1511 ]
  store i32 %1513, ptr %131, align 4, !tbaa !9
  %1514 = load i32, ptr %125, align 4, !tbaa !9
  %1515 = add nsw i32 %1514, 1
  store i32 %1515, ptr %56, align 4, !tbaa !9
  %1516 = load i32, ptr %56, align 4, !tbaa !9
  %1517 = load ptr, ptr %33, align 8, !tbaa !5
  %1518 = load i32, ptr %1517, align 4, !tbaa !9
  %1519 = icmp sle i32 %1516, %1518
  br i1 %1519, label %1520, label %1522

1520:                                             ; preds = %1512
  %1521 = load i32, ptr %56, align 4, !tbaa !9
  br label %1525

1522:                                             ; preds = %1512
  %1523 = load ptr, ptr %33, align 8, !tbaa !5
  %1524 = load i32, ptr %1523, align 4, !tbaa !9
  br label %1525

1525:                                             ; preds = %1522, %1520
  %1526 = phi i32 [ %1521, %1520 ], [ %1524, %1522 ]
  store i32 %1526, ptr %132, align 4, !tbaa !9
  %1527 = load ptr, ptr %48, align 8, !tbaa !5
  %1528 = load i32, ptr %125, align 4, !tbaa !9
  %1529 = sext i32 %1528 to i64
  %1530 = getelementptr inbounds double, ptr %1527, i64 %1529
  %1531 = load double, ptr %1530, align 8, !tbaa !11
  store double %1531, ptr %97, align 8, !tbaa !11
  %1532 = load i32, ptr %66, align 4, !tbaa !9
  %1533 = add nsw i32 %1532, 1
  store i32 %1533, ptr %66, align 4, !tbaa !9
  %1534 = load i32, ptr %125, align 4, !tbaa !9
  %1535 = load ptr, ptr %34, align 8, !tbaa !5
  %1536 = load i32, ptr %1535, align 4, !tbaa !9
  %1537 = icmp slt i32 %1534, %1536
  br i1 %1537, label %1543, label %1538

1538:                                             ; preds = %1525
  %1539 = load i32, ptr %125, align 4, !tbaa !9
  %1540 = load ptr, ptr %35, align 8, !tbaa !5
  %1541 = load i32, ptr %1540, align 4, !tbaa !9
  %1542 = icmp sgt i32 %1539, %1541
  br i1 %1542, label %1543, label %1544

1543:                                             ; preds = %1538, %1525
  store i32 1, ptr %86, align 4, !tbaa !9
  br label %2150

1544:                                             ; preds = %1538
  store i32 0, ptr %86, align 4, !tbaa !9
  br label %1545

1545:                                             ; preds = %1544
  %1546 = load ptr, ptr %48, align 8, !tbaa !5
  %1547 = load i32, ptr %125, align 4, !tbaa !9
  %1548 = sext i32 %1547 to i64
  %1549 = getelementptr inbounds double, ptr %1546, i64 %1548
  %1550 = load double, ptr %1549, align 8, !tbaa !11
  %1551 = load ptr, ptr %40, align 8, !tbaa !5
  %1552 = load i32, ptr %125, align 4, !tbaa !9
  %1553 = sext i32 %1552 to i64
  %1554 = getelementptr inbounds double, ptr %1551, i64 %1553
  %1555 = load double, ptr %1554, align 8, !tbaa !11
  %1556 = fsub double %1550, %1555
  store double %1556, ptr %68, align 8, !tbaa !11
  %1557 = load ptr, ptr %48, align 8, !tbaa !5
  %1558 = load i32, ptr %125, align 4, !tbaa !9
  %1559 = sext i32 %1558 to i64
  %1560 = getelementptr inbounds double, ptr %1557, i64 %1559
  %1561 = load double, ptr %1560, align 8, !tbaa !11
  %1562 = load ptr, ptr %40, align 8, !tbaa !5
  %1563 = load i32, ptr %125, align 4, !tbaa !9
  %1564 = sext i32 %1563 to i64
  %1565 = getelementptr inbounds double, ptr %1562, i64 %1564
  %1566 = load double, ptr %1565, align 8, !tbaa !11
  %1567 = fadd double %1561, %1566
  store double %1567, ptr %87, align 8, !tbaa !11
  %1568 = load ptr, ptr %43, align 8, !tbaa !5
  %1569 = load i32, ptr %125, align 4, !tbaa !9
  %1570 = sext i32 %1569 to i64
  %1571 = getelementptr inbounds i32, ptr %1568, i64 %1570
  %1572 = load i32, ptr %1571, align 4, !tbaa !9
  store i32 %1572, ptr %104, align 4, !tbaa !9
  %1573 = load i32, ptr %76, align 4, !tbaa !9
  %1574 = icmp eq i32 %1573, 1
  br i1 %1574, label %1575, label %1605

1575:                                             ; preds = %1545
  %1576 = load double, ptr %68, align 8, !tbaa !11
  %1577 = fcmp oge double %1576, 0.000000e+00
  br i1 %1577, label %1578, label %1580

1578:                                             ; preds = %1575
  %1579 = load double, ptr %68, align 8, !tbaa !11
  br label %1583

1580:                                             ; preds = %1575
  %1581 = load double, ptr %68, align 8, !tbaa !11
  %1582 = fneg double %1581
  br label %1583

1583:                                             ; preds = %1580, %1578
  %1584 = phi double [ %1579, %1578 ], [ %1582, %1580 ]
  store double %1584, ptr %59, align 8, !tbaa !11
  %1585 = load double, ptr %87, align 8, !tbaa !11
  %1586 = fcmp oge double %1585, 0.000000e+00
  br i1 %1586, label %1587, label %1589

1587:                                             ; preds = %1583
  %1588 = load double, ptr %87, align 8, !tbaa !11
  br label %1592

1589:                                             ; preds = %1583
  %1590 = load double, ptr %87, align 8, !tbaa !11
  %1591 = fneg double %1590
  br label %1592

1592:                                             ; preds = %1589, %1587
  %1593 = phi double [ %1588, %1587 ], [ %1591, %1589 ]
  store double %1593, ptr %60, align 8, !tbaa !11
  %1594 = load double, ptr %145, align 8, !tbaa !11
  %1595 = load double, ptr %59, align 8, !tbaa !11
  %1596 = load double, ptr %60, align 8, !tbaa !11
  %1597 = fcmp oge double %1595, %1596
  br i1 %1597, label %1598, label %1600

1598:                                             ; preds = %1592
  %1599 = load double, ptr %59, align 8, !tbaa !11
  br label %1602

1600:                                             ; preds = %1592
  %1601 = load double, ptr %60, align 8, !tbaa !11
  br label %1602

1602:                                             ; preds = %1600, %1598
  %1603 = phi double [ %1599, %1598 ], [ %1601, %1600 ]
  %1604 = fmul double %1594, %1603
  store double %1604, ptr %65, align 8, !tbaa !11
  br label %1611

1605:                                             ; preds = %1545
  %1606 = load ptr, ptr %41, align 8, !tbaa !5
  %1607 = load i32, ptr %131, align 4, !tbaa !9
  %1608 = sext i32 %1607 to i64
  %1609 = getelementptr inbounds double, ptr %1606, i64 %1608
  %1610 = load double, ptr %1609, align 8, !tbaa !11
  store double %1610, ptr %65, align 8, !tbaa !11
  br label %1611

1611:                                             ; preds = %1605, %1602
  %1612 = load i32, ptr %76, align 4, !tbaa !9
  %1613 = load i32, ptr %100, align 4, !tbaa !9
  %1614 = icmp eq i32 %1612, %1613
  br i1 %1614, label %1615, label %1645

1615:                                             ; preds = %1611
  %1616 = load double, ptr %68, align 8, !tbaa !11
  %1617 = fcmp oge double %1616, 0.000000e+00
  br i1 %1617, label %1618, label %1620

1618:                                             ; preds = %1615
  %1619 = load double, ptr %68, align 8, !tbaa !11
  br label %1623

1620:                                             ; preds = %1615
  %1621 = load double, ptr %68, align 8, !tbaa !11
  %1622 = fneg double %1621
  br label %1623

1623:                                             ; preds = %1620, %1618
  %1624 = phi double [ %1619, %1618 ], [ %1622, %1620 ]
  store double %1624, ptr %59, align 8, !tbaa !11
  %1625 = load double, ptr %87, align 8, !tbaa !11
  %1626 = fcmp oge double %1625, 0.000000e+00
  br i1 %1626, label %1627, label %1629

1627:                                             ; preds = %1623
  %1628 = load double, ptr %87, align 8, !tbaa !11
  br label %1632

1629:                                             ; preds = %1623
  %1630 = load double, ptr %87, align 8, !tbaa !11
  %1631 = fneg double %1630
  br label %1632

1632:                                             ; preds = %1629, %1627
  %1633 = phi double [ %1628, %1627 ], [ %1631, %1629 ]
  store double %1633, ptr %60, align 8, !tbaa !11
  %1634 = load double, ptr %145, align 8, !tbaa !11
  %1635 = load double, ptr %59, align 8, !tbaa !11
  %1636 = load double, ptr %60, align 8, !tbaa !11
  %1637 = fcmp oge double %1635, %1636
  br i1 %1637, label %1638, label %1640

1638:                                             ; preds = %1632
  %1639 = load double, ptr %59, align 8, !tbaa !11
  br label %1642

1640:                                             ; preds = %1632
  %1641 = load double, ptr %60, align 8, !tbaa !11
  br label %1642

1642:                                             ; preds = %1640, %1638
  %1643 = phi double [ %1639, %1638 ], [ %1641, %1640 ]
  %1644 = fmul double %1634, %1643
  store double %1644, ptr %67, align 8, !tbaa !11
  br label %1651

1645:                                             ; preds = %1611
  %1646 = load ptr, ptr %41, align 8, !tbaa !5
  %1647 = load i32, ptr %125, align 4, !tbaa !9
  %1648 = sext i32 %1647 to i64
  %1649 = getelementptr inbounds double, ptr %1646, i64 %1648
  %1650 = load double, ptr %1649, align 8, !tbaa !11
  store double %1650, ptr %67, align 8, !tbaa !11
  br label %1651

1651:                                             ; preds = %1645, %1642
  %1652 = load double, ptr %65, align 8, !tbaa !11
  %1653 = load double, ptr %67, align 8, !tbaa !11
  %1654 = fcmp ole double %1652, %1653
  br i1 %1654, label %1655, label %1657

1655:                                             ; preds = %1651
  %1656 = load double, ptr %65, align 8, !tbaa !11
  br label %1659

1657:                                             ; preds = %1651
  %1658 = load double, ptr %67, align 8, !tbaa !11
  br label %1659

1659:                                             ; preds = %1657, %1655
  %1660 = phi double [ %1656, %1655 ], [ %1658, %1657 ]
  store double %1660, ptr %144, align 8, !tbaa !11
  %1661 = load i32, ptr %76, align 4, !tbaa !9
  %1662 = icmp eq i32 %1661, 1
  br i1 %1662, label %1667, label %1663

1663:                                             ; preds = %1659
  %1664 = load i32, ptr %76, align 4, !tbaa !9
  %1665 = load i32, ptr %100, align 4, !tbaa !9
  %1666 = icmp eq i32 %1664, %1665
  br i1 %1666, label %1667, label %1668

1667:                                             ; preds = %1663, %1659
  store double 0.000000e+00, ptr %121, align 8, !tbaa !11
  br label %1672

1668:                                             ; preds = %1663
  %1669 = load double, ptr %144, align 8, !tbaa !11
  %1670 = load double, ptr %145, align 8, !tbaa !11
  %1671 = fmul double %1669, %1670
  store double %1671, ptr %121, align 8, !tbaa !11
  br label %1672

1672:                                             ; preds = %1668, %1667
  %1673 = load i32, ptr %101, align 4, !tbaa !9
  store i32 %1673, ptr %133, align 4, !tbaa !9
  store i32 1, ptr %142, align 4, !tbaa !9
  %1674 = load ptr, ptr %41, align 8, !tbaa !5
  %1675 = load i32, ptr %125, align 4, !tbaa !9
  %1676 = sext i32 %1675 to i64
  %1677 = getelementptr inbounds double, ptr %1674, i64 %1676
  %1678 = load double, ptr %1677, align 8, !tbaa !11
  store double %1678, ptr %115, align 8, !tbaa !11
  %1679 = load double, ptr %144, align 8, !tbaa !11
  %1680 = load ptr, ptr %41, align 8, !tbaa !5
  %1681 = load i32, ptr %125, align 4, !tbaa !9
  %1682 = sext i32 %1681 to i64
  %1683 = getelementptr inbounds double, ptr %1680, i64 %1682
  store double %1679, ptr %1683, align 8, !tbaa !11
  store i32 0, ptr %118, align 4, !tbaa !9
  store i32 0, ptr %127, align 4, !tbaa !9
  %1684 = load i32, ptr %141, align 4, !tbaa !9
  %1685 = icmp ne i32 %1684, 0
  %1686 = xor i1 %1685, true
  %1687 = zext i1 %1686 to i32
  store i32 %1687, ptr %105, align 4, !tbaa !9
  br label %1688

1688:                                             ; preds = %1961, %1957, %1953, %1672
  %1689 = load i32, ptr %105, align 4, !tbaa !9
  %1690 = icmp ne i32 %1689, 0
  br i1 %1690, label %1691, label %1755

1691:                                             ; preds = %1688
  store i32 1, ptr %118, align 4, !tbaa !9
  %1692 = load ptr, ptr %49, align 8, !tbaa !5
  %1693 = load i32, ptr %84, align 4, !tbaa !9
  %1694 = load i32, ptr %125, align 4, !tbaa !9
  %1695 = add nsw i32 %1693, %1694
  %1696 = sext i32 %1695 to i64
  %1697 = getelementptr inbounds i32, ptr %1692, i64 %1696
  %1698 = load i32, ptr %1697, align 4, !tbaa !9
  store i32 %1698, ptr %73, align 4, !tbaa !9
  %1699 = load ptr, ptr %43, align 8, !tbaa !5
  %1700 = load i32, ptr %111, align 4, !tbaa !9
  %1701 = sext i32 %1700 to i64
  %1702 = getelementptr inbounds i32, ptr %1699, i64 %1701
  %1703 = load i32, ptr %1702, align 4, !tbaa !9
  %1704 = sub nsw i32 %1703, 1
  store i32 %1704, ptr %120, align 4, !tbaa !9
  %1705 = load double, ptr %145, align 8, !tbaa !11
  %1706 = fmul double %1705, 2.000000e+00
  store double %1706, ptr %59, align 8, !tbaa !11
  %1707 = load ptr, ptr %29, align 8, !tbaa !5
  %1708 = load i32, ptr %103, align 4, !tbaa !9
  %1709 = sext i32 %1708 to i64
  %1710 = getelementptr inbounds double, ptr %1707, i64 %1709
  %1711 = load ptr, ptr %48, align 8, !tbaa !5
  %1712 = load i32, ptr %106, align 4, !tbaa !9
  %1713 = load i32, ptr %103, align 4, !tbaa !9
  %1714 = add nsw i32 %1712, %1713
  %1715 = sub nsw i32 %1714, 1
  %1716 = sext i32 %1715 to i64
  %1717 = getelementptr inbounds double, ptr %1711, i64 %1716
  %1718 = load ptr, ptr %48, align 8, !tbaa !5
  %1719 = load i32, ptr %111, align 4, !tbaa !9
  %1720 = sext i32 %1719 to i64
  %1721 = getelementptr inbounds double, ptr %1718, i64 %1720
  %1722 = load ptr, ptr %41, align 8, !tbaa !5
  %1723 = load i32, ptr %111, align 4, !tbaa !9
  %1724 = sext i32 %1723 to i64
  %1725 = getelementptr inbounds double, ptr %1722, i64 %1724
  %1726 = load ptr, ptr %40, align 8, !tbaa !5
  %1727 = load i32, ptr %111, align 4, !tbaa !9
  %1728 = sext i32 %1727 to i64
  %1729 = getelementptr inbounds double, ptr %1726, i64 %1728
  %1730 = load ptr, ptr %48, align 8, !tbaa !5
  %1731 = load i32, ptr %124, align 4, !tbaa !9
  %1732 = sext i32 %1731 to i64
  %1733 = getelementptr inbounds double, ptr %1730, i64 %1732
  %1734 = load ptr, ptr %49, align 8, !tbaa !5
  %1735 = load i32, ptr %119, align 4, !tbaa !9
  %1736 = sext i32 %1735 to i64
  %1737 = getelementptr inbounds i32, ptr %1734, i64 %1736
  %1738 = load ptr, ptr %31, align 8, !tbaa !5
  call void @dlarrb_(ptr noundef %101, ptr noundef %1710, ptr noundef %1717, ptr noundef %104, ptr noundef %104, ptr noundef @c_b28, ptr noundef %59, ptr noundef %120, ptr noundef %1721, ptr noundef %1725, ptr noundef %1729, ptr noundef %1733, ptr noundef %1737, ptr noundef %1738, ptr noundef %113, ptr noundef %73, ptr noundef %83)
  %1739 = load i32, ptr %83, align 4, !tbaa !9
  %1740 = icmp ne i32 %1739, 0
  br i1 %1740, label %1741, label %1743

1741:                                             ; preds = %1691
  %1742 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -3, ptr %1742, align 4, !tbaa !9
  store i32 1, ptr %151, align 4
  br label %2276

1743:                                             ; preds = %1691
  %1744 = load ptr, ptr %48, align 8, !tbaa !5
  %1745 = load i32, ptr %125, align 4, !tbaa !9
  %1746 = sext i32 %1745 to i64
  %1747 = getelementptr inbounds double, ptr %1744, i64 %1746
  %1748 = load double, ptr %1747, align 8, !tbaa !11
  store double %1748, ptr %97, align 8, !tbaa !11
  %1749 = load ptr, ptr %49, align 8, !tbaa !5
  %1750 = load i32, ptr %84, align 4, !tbaa !9
  %1751 = load i32, ptr %125, align 4, !tbaa !9
  %1752 = add nsw i32 %1750, %1751
  %1753 = sext i32 %1752 to i64
  %1754 = getelementptr inbounds i32, ptr %1749, i64 %1753
  store i32 0, ptr %1754, align 4, !tbaa !9
  br label %1755

1755:                                             ; preds = %1743, %1688
  %1756 = load i32, ptr %118, align 4, !tbaa !9
  %1757 = icmp ne i32 %1756, 0
  %1758 = xor i1 %1757, true
  %1759 = zext i1 %1758 to i32
  store i32 %1759, ptr %62, align 4, !tbaa !9
  %1760 = load ptr, ptr %29, align 8, !tbaa !5
  %1761 = load i32, ptr %103, align 4, !tbaa !9
  %1762 = sext i32 %1761 to i64
  %1763 = getelementptr inbounds double, ptr %1760, i64 %1762
  %1764 = load ptr, ptr %30, align 8, !tbaa !5
  %1765 = load i32, ptr %103, align 4, !tbaa !9
  %1766 = sext i32 %1765 to i64
  %1767 = getelementptr inbounds double, ptr %1764, i64 %1766
  %1768 = load ptr, ptr %48, align 8, !tbaa !5
  %1769 = load i32, ptr %79, align 4, !tbaa !9
  %1770 = load i32, ptr %103, align 4, !tbaa !9
  %1771 = add nsw i32 %1769, %1770
  %1772 = sub nsw i32 %1771, 1
  %1773 = sext i32 %1772 to i64
  %1774 = getelementptr inbounds double, ptr %1768, i64 %1773
  %1775 = load ptr, ptr %48, align 8, !tbaa !5
  %1776 = load i32, ptr %106, align 4, !tbaa !9
  %1777 = load i32, ptr %103, align 4, !tbaa !9
  %1778 = add nsw i32 %1776, %1777
  %1779 = sub nsw i32 %1778, 1
  %1780 = sext i32 %1779 to i64
  %1781 = getelementptr inbounds double, ptr %1775, i64 %1780
  %1782 = load ptr, ptr %31, align 8, !tbaa !5
  %1783 = load ptr, ptr %45, align 8, !tbaa !5
  %1784 = load i32, ptr %103, align 4, !tbaa !9
  %1785 = load i32, ptr %125, align 4, !tbaa !9
  %1786 = load i32, ptr %51, align 4, !tbaa !9
  %1787 = mul nsw i32 %1785, %1786
  %1788 = add nsw i32 %1784, %1787
  %1789 = sext i32 %1788 to i64
  %1790 = getelementptr inbounds %struct.doublecomplex, ptr %1783, i64 %1789
  %1791 = load ptr, ptr %49, align 8, !tbaa !5
  %1792 = load i32, ptr %84, align 4, !tbaa !9
  %1793 = load i32, ptr %125, align 4, !tbaa !9
  %1794 = add nsw i32 %1792, %1793
  %1795 = sext i32 %1794 to i64
  %1796 = getelementptr inbounds i32, ptr %1791, i64 %1795
  %1797 = load ptr, ptr %47, align 8, !tbaa !5
  %1798 = load i32, ptr %125, align 4, !tbaa !9
  %1799 = shl i32 %1798, 1
  %1800 = sub nsw i32 %1799, 1
  %1801 = sext i32 %1800 to i64
  %1802 = getelementptr inbounds i32, ptr %1797, i64 %1801
  %1803 = load ptr, ptr %48, align 8, !tbaa !5
  %1804 = load i32, ptr %124, align 4, !tbaa !9
  %1805 = sext i32 %1804 to i64
  %1806 = getelementptr inbounds double, ptr %1803, i64 %1805
  call void @zlar1v_(ptr noundef %101, ptr noundef @c__1, ptr noundef %101, ptr noundef %97, ptr noundef %1763, ptr noundef %1767, ptr noundef %1774, ptr noundef %1781, ptr noundef %1782, ptr noundef %121, ptr noundef %1790, ptr noundef %62, ptr noundef %112, ptr noundef %150, ptr noundef %108, ptr noundef %1796, ptr noundef %1802, ptr noundef %140, ptr noundef %85, ptr noundef %143, ptr noundef %1806)
  %1807 = load i32, ptr %70, align 4, !tbaa !9
  %1808 = icmp eq i32 %1807, 0
  br i1 %1808, label %1809, label %1812

1809:                                             ; preds = %1755
  %1810 = load double, ptr %85, align 8, !tbaa !11
  store double %1810, ptr %136, align 8, !tbaa !11
  %1811 = load double, ptr %97, align 8, !tbaa !11
  store double %1811, ptr %71, align 8, !tbaa !11
  br label %1820

1812:                                             ; preds = %1755
  %1813 = load double, ptr %85, align 8, !tbaa !11
  %1814 = load double, ptr %136, align 8, !tbaa !11
  %1815 = fcmp olt double %1813, %1814
  br i1 %1815, label %1816, label %1819

1816:                                             ; preds = %1812
  %1817 = load double, ptr %85, align 8, !tbaa !11
  store double %1817, ptr %136, align 8, !tbaa !11
  %1818 = load double, ptr %97, align 8, !tbaa !11
  store double %1818, ptr %71, align 8, !tbaa !11
  br label %1819

1819:                                             ; preds = %1816, %1812
  br label %1820

1820:                                             ; preds = %1819, %1809
  %1821 = load i32, ptr %133, align 4, !tbaa !9
  store i32 %1821, ptr %56, align 4, !tbaa !9
  %1822 = load ptr, ptr %47, align 8, !tbaa !5
  %1823 = load i32, ptr %125, align 4, !tbaa !9
  %1824 = shl i32 %1823, 1
  %1825 = sub nsw i32 %1824, 1
  %1826 = sext i32 %1825 to i64
  %1827 = getelementptr inbounds i32, ptr %1822, i64 %1826
  %1828 = load i32, ptr %1827, align 4, !tbaa !9
  store i32 %1828, ptr %57, align 4, !tbaa !9
  %1829 = load i32, ptr %56, align 4, !tbaa !9
  %1830 = load i32, ptr %57, align 4, !tbaa !9
  %1831 = icmp sle i32 %1829, %1830
  br i1 %1831, label %1832, label %1834

1832:                                             ; preds = %1820
  %1833 = load i32, ptr %56, align 4, !tbaa !9
  br label %1836

1834:                                             ; preds = %1820
  %1835 = load i32, ptr %57, align 4, !tbaa !9
  br label %1836

1836:                                             ; preds = %1834, %1832
  %1837 = phi i32 [ %1833, %1832 ], [ %1835, %1834 ]
  store i32 %1837, ptr %133, align 4, !tbaa !9
  %1838 = load i32, ptr %142, align 4, !tbaa !9
  store i32 %1838, ptr %56, align 4, !tbaa !9
  %1839 = load ptr, ptr %47, align 8, !tbaa !5
  %1840 = load i32, ptr %125, align 4, !tbaa !9
  %1841 = mul nsw i32 %1840, 2
  %1842 = sext i32 %1841 to i64
  %1843 = getelementptr inbounds i32, ptr %1839, i64 %1842
  %1844 = load i32, ptr %1843, align 4, !tbaa !9
  store i32 %1844, ptr %57, align 4, !tbaa !9
  %1845 = load i32, ptr %56, align 4, !tbaa !9
  %1846 = load i32, ptr %57, align 4, !tbaa !9
  %1847 = icmp sge i32 %1845, %1846
  br i1 %1847, label %1848, label %1850

1848:                                             ; preds = %1836
  %1849 = load i32, ptr %56, align 4, !tbaa !9
  br label %1852

1850:                                             ; preds = %1836
  %1851 = load i32, ptr %57, align 4, !tbaa !9
  br label %1852

1852:                                             ; preds = %1850, %1848
  %1853 = phi i32 [ %1849, %1848 ], [ %1851, %1850 ]
  store i32 %1853, ptr %142, align 4, !tbaa !9
  %1854 = load i32, ptr %70, align 4, !tbaa !9
  %1855 = add nsw i32 %1854, 1
  store i32 %1855, ptr %70, align 4, !tbaa !9
  %1856 = load double, ptr %85, align 8, !tbaa !11
  %1857 = load double, ptr %147, align 8, !tbaa !11
  %1858 = load double, ptr %144, align 8, !tbaa !11
  %1859 = fmul double %1857, %1858
  %1860 = fcmp ogt double %1856, %1859
  br i1 %1860, label %1861, label %1964

1861:                                             ; preds = %1852
  %1862 = load double, ptr %143, align 8, !tbaa !11
  %1863 = fcmp oge double %1862, 0.000000e+00
  br i1 %1863, label %1864, label %1866

1864:                                             ; preds = %1861
  %1865 = load double, ptr %143, align 8, !tbaa !11
  br label %1869

1866:                                             ; preds = %1861
  %1867 = load double, ptr %143, align 8, !tbaa !11
  %1868 = fneg double %1867
  br label %1869

1869:                                             ; preds = %1866, %1864
  %1870 = phi double [ %1865, %1864 ], [ %1868, %1866 ]
  %1871 = load double, ptr %90, align 8, !tbaa !11
  %1872 = load double, ptr %97, align 8, !tbaa !11
  %1873 = fcmp oge double %1872, 0.000000e+00
  br i1 %1873, label %1874, label %1876

1874:                                             ; preds = %1869
  %1875 = load double, ptr %97, align 8, !tbaa !11
  br label %1879

1876:                                             ; preds = %1869
  %1877 = load double, ptr %97, align 8, !tbaa !11
  %1878 = fneg double %1877
  br label %1879

1879:                                             ; preds = %1876, %1874
  %1880 = phi double [ %1875, %1874 ], [ %1878, %1876 ]
  %1881 = fmul double %1871, %1880
  %1882 = fcmp ogt double %1870, %1881
  br i1 %1882, label %1883, label %1964

1883:                                             ; preds = %1879
  %1884 = load i32, ptr %118, align 4, !tbaa !9
  %1885 = icmp ne i32 %1884, 0
  br i1 %1885, label %1964, label %1886

1886:                                             ; preds = %1883
  %1887 = load i32, ptr %104, align 4, !tbaa !9
  %1888 = load i32, ptr %112, align 4, !tbaa !9
  %1889 = icmp sle i32 %1887, %1888
  br i1 %1889, label %1890, label %1891

1890:                                             ; preds = %1886
  store double -1.000000e+00, ptr %107, align 8, !tbaa !11
  br label %1892

1891:                                             ; preds = %1886
  store double 1.000000e+00, ptr %107, align 8, !tbaa !11
  br label %1892

1892:                                             ; preds = %1891, %1890
  %1893 = load double, ptr %143, align 8, !tbaa !11
  %1894 = load double, ptr %107, align 8, !tbaa !11
  %1895 = fmul double %1893, %1894
  %1896 = fcmp oge double %1895, 0.000000e+00
  br i1 %1896, label %1897, label %1936

1897:                                             ; preds = %1892
  %1898 = load double, ptr %97, align 8, !tbaa !11
  %1899 = load double, ptr %143, align 8, !tbaa !11
  %1900 = fadd double %1898, %1899
  %1901 = load double, ptr %87, align 8, !tbaa !11
  %1902 = fcmp ole double %1900, %1901
  br i1 %1902, label %1903, label %1936

1903:                                             ; preds = %1897
  %1904 = load double, ptr %97, align 8, !tbaa !11
  %1905 = load double, ptr %143, align 8, !tbaa !11
  %1906 = fadd double %1904, %1905
  %1907 = load double, ptr %68, align 8, !tbaa !11
  %1908 = fcmp oge double %1906, %1907
  br i1 %1908, label %1909, label %1936

1909:                                             ; preds = %1903
  store i32 1, ptr %127, align 4, !tbaa !9
  %1910 = load double, ptr %107, align 8, !tbaa !11
  %1911 = fcmp oeq double %1910, 1.000000e+00
  br i1 %1911, label %1912, label %1914

1912:                                             ; preds = %1909
  %1913 = load double, ptr %97, align 8, !tbaa !11
  store double %1913, ptr %68, align 8, !tbaa !11
  br label %1916

1914:                                             ; preds = %1909
  %1915 = load double, ptr %97, align 8, !tbaa !11
  store double %1915, ptr %87, align 8, !tbaa !11
  br label %1916

1916:                                             ; preds = %1914, %1912
  %1917 = load double, ptr %87, align 8, !tbaa !11
  %1918 = load double, ptr %68, align 8, !tbaa !11
  %1919 = fadd double %1917, %1918
  %1920 = fmul double %1919, 5.000000e-01
  %1921 = load ptr, ptr %48, align 8, !tbaa !5
  %1922 = load i32, ptr %125, align 4, !tbaa !9
  %1923 = sext i32 %1922 to i64
  %1924 = getelementptr inbounds double, ptr %1921, i64 %1923
  store double %1920, ptr %1924, align 8, !tbaa !11
  %1925 = load double, ptr %143, align 8, !tbaa !11
  %1926 = load double, ptr %97, align 8, !tbaa !11
  %1927 = fadd double %1926, %1925
  store double %1927, ptr %97, align 8, !tbaa !11
  %1928 = load double, ptr %87, align 8, !tbaa !11
  %1929 = load double, ptr %68, align 8, !tbaa !11
  %1930 = fsub double %1928, %1929
  %1931 = fmul double %1930, 5.000000e-01
  %1932 = load ptr, ptr %40, align 8, !tbaa !5
  %1933 = load i32, ptr %125, align 4, !tbaa !9
  %1934 = sext i32 %1933 to i64
  %1935 = getelementptr inbounds double, ptr %1932, i64 %1934
  store double %1931, ptr %1935, align 8, !tbaa !11
  br label %1937

1936:                                             ; preds = %1903, %1897, %1892
  store i32 1, ptr %105, align 4, !tbaa !9
  br label %1937

1937:                                             ; preds = %1936, %1916
  %1938 = load double, ptr %87, align 8, !tbaa !11
  %1939 = load double, ptr %68, align 8, !tbaa !11
  %1940 = fsub double %1938, %1939
  %1941 = load double, ptr %90, align 8, !tbaa !11
  %1942 = load double, ptr %97, align 8, !tbaa !11
  %1943 = fcmp oge double %1942, 0.000000e+00
  br i1 %1943, label %1944, label %1946

1944:                                             ; preds = %1937
  %1945 = load double, ptr %97, align 8, !tbaa !11
  br label %1949

1946:                                             ; preds = %1937
  %1947 = load double, ptr %97, align 8, !tbaa !11
  %1948 = fneg double %1947
  br label %1949

1949:                                             ; preds = %1946, %1944
  %1950 = phi double [ %1945, %1944 ], [ %1948, %1946 ]
  %1951 = fmul double %1941, %1950
  %1952 = fcmp olt double %1940, %1951
  br i1 %1952, label %1953, label %1954

1953:                                             ; preds = %1949
  store i32 1, ptr %118, align 4, !tbaa !9
  br label %1688

1954:                                             ; preds = %1949
  %1955 = load i32, ptr %70, align 4, !tbaa !9
  %1956 = icmp slt i32 %1955, 10
  br i1 %1956, label %1957, label %1958

1957:                                             ; preds = %1954
  br label %1688

1958:                                             ; preds = %1954
  %1959 = load i32, ptr %70, align 4, !tbaa !9
  %1960 = icmp eq i32 %1959, 10
  br i1 %1960, label %1961, label %1962

1961:                                             ; preds = %1958
  store i32 1, ptr %105, align 4, !tbaa !9
  br label %1688

1962:                                             ; preds = %1958
  %1963 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 5, ptr %1963, align 4, !tbaa !9
  store i32 1, ptr %151, align 4
  br label %2276

1964:                                             ; preds = %1883, %1879, %1852
  store i32 0, ptr %96, align 4, !tbaa !9
  %1965 = load i32, ptr %127, align 4, !tbaa !9
  %1966 = icmp ne i32 %1965, 0
  br i1 %1966, label %1967, label %1976

1967:                                             ; preds = %1964
  %1968 = load i32, ptr %118, align 4, !tbaa !9
  %1969 = icmp ne i32 %1968, 0
  br i1 %1969, label %1970, label %1976

1970:                                             ; preds = %1967
  %1971 = load double, ptr %136, align 8, !tbaa !11
  %1972 = load double, ptr %85, align 8, !tbaa !11
  %1973 = fcmp ole double %1971, %1972
  br i1 %1973, label %1974, label %1976

1974:                                             ; preds = %1970
  %1975 = load double, ptr %71, align 8, !tbaa !11
  store double %1975, ptr %97, align 8, !tbaa !11
  store i32 1, ptr %96, align 4, !tbaa !9
  br label %1976

1976:                                             ; preds = %1974, %1970, %1967, %1964
  %1977 = load i32, ptr %96, align 4, !tbaa !9
  %1978 = icmp ne i32 %1977, 0
  br i1 %1978, label %1979, label %2031

1979:                                             ; preds = %1976
  %1980 = load i32, ptr %118, align 4, !tbaa !9
  %1981 = icmp ne i32 %1980, 0
  %1982 = xor i1 %1981, true
  %1983 = zext i1 %1982 to i32
  store i32 %1983, ptr %62, align 4, !tbaa !9
  %1984 = load ptr, ptr %29, align 8, !tbaa !5
  %1985 = load i32, ptr %103, align 4, !tbaa !9
  %1986 = sext i32 %1985 to i64
  %1987 = getelementptr inbounds double, ptr %1984, i64 %1986
  %1988 = load ptr, ptr %30, align 8, !tbaa !5
  %1989 = load i32, ptr %103, align 4, !tbaa !9
  %1990 = sext i32 %1989 to i64
  %1991 = getelementptr inbounds double, ptr %1988, i64 %1990
  %1992 = load ptr, ptr %48, align 8, !tbaa !5
  %1993 = load i32, ptr %79, align 4, !tbaa !9
  %1994 = load i32, ptr %103, align 4, !tbaa !9
  %1995 = add nsw i32 %1993, %1994
  %1996 = sub nsw i32 %1995, 1
  %1997 = sext i32 %1996 to i64
  %1998 = getelementptr inbounds double, ptr %1992, i64 %1997
  %1999 = load ptr, ptr %48, align 8, !tbaa !5
  %2000 = load i32, ptr %106, align 4, !tbaa !9
  %2001 = load i32, ptr %103, align 4, !tbaa !9
  %2002 = add nsw i32 %2000, %2001
  %2003 = sub nsw i32 %2002, 1
  %2004 = sext i32 %2003 to i64
  %2005 = getelementptr inbounds double, ptr %1999, i64 %2004
  %2006 = load ptr, ptr %31, align 8, !tbaa !5
  %2007 = load ptr, ptr %45, align 8, !tbaa !5
  %2008 = load i32, ptr %103, align 4, !tbaa !9
  %2009 = load i32, ptr %125, align 4, !tbaa !9
  %2010 = load i32, ptr %51, align 4, !tbaa !9
  %2011 = mul nsw i32 %2009, %2010
  %2012 = add nsw i32 %2008, %2011
  %2013 = sext i32 %2012 to i64
  %2014 = getelementptr inbounds %struct.doublecomplex, ptr %2007, i64 %2013
  %2015 = load ptr, ptr %49, align 8, !tbaa !5
  %2016 = load i32, ptr %84, align 4, !tbaa !9
  %2017 = load i32, ptr %125, align 4, !tbaa !9
  %2018 = add nsw i32 %2016, %2017
  %2019 = sext i32 %2018 to i64
  %2020 = getelementptr inbounds i32, ptr %2015, i64 %2019
  %2021 = load ptr, ptr %47, align 8, !tbaa !5
  %2022 = load i32, ptr %125, align 4, !tbaa !9
  %2023 = shl i32 %2022, 1
  %2024 = sub nsw i32 %2023, 1
  %2025 = sext i32 %2024 to i64
  %2026 = getelementptr inbounds i32, ptr %2021, i64 %2025
  %2027 = load ptr, ptr %48, align 8, !tbaa !5
  %2028 = load i32, ptr %124, align 4, !tbaa !9
  %2029 = sext i32 %2028 to i64
  %2030 = getelementptr inbounds double, ptr %2027, i64 %2029
  call void @zlar1v_(ptr noundef %101, ptr noundef @c__1, ptr noundef %101, ptr noundef %97, ptr noundef %1987, ptr noundef %1991, ptr noundef %1998, ptr noundef %2005, ptr noundef %2006, ptr noundef %121, ptr noundef %2014, ptr noundef %62, ptr noundef %112, ptr noundef %150, ptr noundef %108, ptr noundef %2020, ptr noundef %2026, ptr noundef %140, ptr noundef %85, ptr noundef %143, ptr noundef %2030)
  br label %2031

2031:                                             ; preds = %1979, %1976
  %2032 = load double, ptr %97, align 8, !tbaa !11
  %2033 = load ptr, ptr %48, align 8, !tbaa !5
  %2034 = load i32, ptr %125, align 4, !tbaa !9
  %2035 = sext i32 %2034 to i64
  %2036 = getelementptr inbounds double, ptr %2033, i64 %2035
  store double %2032, ptr %2036, align 8, !tbaa !11
  br label %2037

2037:                                             ; preds = %2031
  %2038 = load i32, ptr %109, align 4, !tbaa !9
  %2039 = load ptr, ptr %47, align 8, !tbaa !5
  %2040 = load i32, ptr %125, align 4, !tbaa !9
  %2041 = shl i32 %2040, 1
  %2042 = sub nsw i32 %2041, 1
  %2043 = sext i32 %2042 to i64
  %2044 = getelementptr inbounds i32, ptr %2039, i64 %2043
  %2045 = load i32, ptr %2044, align 4, !tbaa !9
  %2046 = add nsw i32 %2045, %2038
  store i32 %2046, ptr %2044, align 4, !tbaa !9
  %2047 = load i32, ptr %109, align 4, !tbaa !9
  %2048 = load ptr, ptr %47, align 8, !tbaa !5
  %2049 = load i32, ptr %125, align 4, !tbaa !9
  %2050 = mul nsw i32 %2049, 2
  %2051 = sext i32 %2050 to i64
  %2052 = getelementptr inbounds i32, ptr %2048, i64 %2051
  %2053 = load i32, ptr %2052, align 4, !tbaa !9
  %2054 = add nsw i32 %2053, %2047
  store i32 %2054, ptr %2052, align 4, !tbaa !9
  %2055 = load ptr, ptr %47, align 8, !tbaa !5
  %2056 = load i32, ptr %125, align 4, !tbaa !9
  %2057 = shl i32 %2056, 1
  %2058 = sub nsw i32 %2057, 1
  %2059 = sext i32 %2058 to i64
  %2060 = getelementptr inbounds i32, ptr %2055, i64 %2059
  %2061 = load i32, ptr %2060, align 4, !tbaa !9
  store i32 %2061, ptr %89, align 4, !tbaa !9
  %2062 = load ptr, ptr %47, align 8, !tbaa !5
  %2063 = load i32, ptr %125, align 4, !tbaa !9
  %2064 = mul nsw i32 %2063, 2
  %2065 = sext i32 %2064 to i64
  %2066 = getelementptr inbounds i32, ptr %2062, i64 %2065
  %2067 = load i32, ptr %2066, align 4, !tbaa !9
  store i32 %2067, ptr %149, align 4, !tbaa !9
  %2068 = load i32, ptr %109, align 4, !tbaa !9
  %2069 = load i32, ptr %133, align 4, !tbaa !9
  %2070 = add nsw i32 %2069, %2068
  store i32 %2070, ptr %133, align 4, !tbaa !9
  %2071 = load i32, ptr %109, align 4, !tbaa !9
  %2072 = load i32, ptr %142, align 4, !tbaa !9
  %2073 = add nsw i32 %2072, %2071
  store i32 %2073, ptr %142, align 4, !tbaa !9
  %2074 = load i32, ptr %133, align 4, !tbaa !9
  %2075 = load i32, ptr %89, align 4, !tbaa !9
  %2076 = icmp slt i32 %2074, %2075
  br i1 %2076, label %2077, label %2105

2077:                                             ; preds = %2037
  %2078 = load i32, ptr %89, align 4, !tbaa !9
  %2079 = sub nsw i32 %2078, 1
  store i32 %2079, ptr %56, align 4, !tbaa !9
  %2080 = load i32, ptr %133, align 4, !tbaa !9
  store i32 %2080, ptr %98, align 4, !tbaa !9
  br label %2081

2081:                                             ; preds = %2101, %2077
  %2082 = load i32, ptr %98, align 4, !tbaa !9
  %2083 = load i32, ptr %56, align 4, !tbaa !9
  %2084 = icmp sle i32 %2082, %2083
  br i1 %2084, label %2085, label %2104

2085:                                             ; preds = %2081
  %2086 = load i32, ptr %98, align 4, !tbaa !9
  %2087 = load i32, ptr %125, align 4, !tbaa !9
  %2088 = load i32, ptr %51, align 4, !tbaa !9
  %2089 = mul nsw i32 %2087, %2088
  %2090 = add nsw i32 %2086, %2089
  store i32 %2090, ptr %57, align 4, !tbaa !9
  %2091 = load ptr, ptr %45, align 8, !tbaa !5
  %2092 = load i32, ptr %57, align 4, !tbaa !9
  %2093 = sext i32 %2092 to i64
  %2094 = getelementptr inbounds %struct.doublecomplex, ptr %2091, i64 %2093
  %2095 = getelementptr inbounds %struct.doublecomplex, ptr %2094, i32 0, i32 0
  store double 0.000000e+00, ptr %2095, align 8, !tbaa !17
  %2096 = load ptr, ptr %45, align 8, !tbaa !5
  %2097 = load i32, ptr %57, align 4, !tbaa !9
  %2098 = sext i32 %2097 to i64
  %2099 = getelementptr inbounds %struct.doublecomplex, ptr %2096, i64 %2098
  %2100 = getelementptr inbounds %struct.doublecomplex, ptr %2099, i32 0, i32 1
  store double 0.000000e+00, ptr %2100, align 8, !tbaa !19
  br label %2101

2101:                                             ; preds = %2085
  %2102 = load i32, ptr %98, align 4, !tbaa !9
  %2103 = add nsw i32 %2102, 1
  store i32 %2103, ptr %98, align 4, !tbaa !9
  br label %2081, !llvm.loop !27

2104:                                             ; preds = %2081
  br label %2105

2105:                                             ; preds = %2104, %2037
  %2106 = load i32, ptr %142, align 4, !tbaa !9
  %2107 = load i32, ptr %149, align 4, !tbaa !9
  %2108 = icmp sgt i32 %2106, %2107
  br i1 %2108, label %2109, label %2137

2109:                                             ; preds = %2105
  %2110 = load i32, ptr %142, align 4, !tbaa !9
  store i32 %2110, ptr %56, align 4, !tbaa !9
  %2111 = load i32, ptr %149, align 4, !tbaa !9
  %2112 = add nsw i32 %2111, 1
  store i32 %2112, ptr %98, align 4, !tbaa !9
  br label %2113

2113:                                             ; preds = %2133, %2109
  %2114 = load i32, ptr %98, align 4, !tbaa !9
  %2115 = load i32, ptr %56, align 4, !tbaa !9
  %2116 = icmp sle i32 %2114, %2115
  br i1 %2116, label %2117, label %2136

2117:                                             ; preds = %2113
  %2118 = load i32, ptr %98, align 4, !tbaa !9
  %2119 = load i32, ptr %125, align 4, !tbaa !9
  %2120 = load i32, ptr %51, align 4, !tbaa !9
  %2121 = mul nsw i32 %2119, %2120
  %2122 = add nsw i32 %2118, %2121
  store i32 %2122, ptr %57, align 4, !tbaa !9
  %2123 = load ptr, ptr %45, align 8, !tbaa !5
  %2124 = load i32, ptr %57, align 4, !tbaa !9
  %2125 = sext i32 %2124 to i64
  %2126 = getelementptr inbounds %struct.doublecomplex, ptr %2123, i64 %2125
  %2127 = getelementptr inbounds %struct.doublecomplex, ptr %2126, i32 0, i32 0
  store double 0.000000e+00, ptr %2127, align 8, !tbaa !17
  %2128 = load ptr, ptr %45, align 8, !tbaa !5
  %2129 = load i32, ptr %57, align 4, !tbaa !9
  %2130 = sext i32 %2129 to i64
  %2131 = getelementptr inbounds %struct.doublecomplex, ptr %2128, i64 %2130
  %2132 = getelementptr inbounds %struct.doublecomplex, ptr %2131, i32 0, i32 1
  store double 0.000000e+00, ptr %2132, align 8, !tbaa !19
  br label %2133

2133:                                             ; preds = %2117
  %2134 = load i32, ptr %98, align 4, !tbaa !9
  %2135 = add nsw i32 %2134, 1
  store i32 %2135, ptr %98, align 4, !tbaa !9
  br label %2113, !llvm.loop !28

2136:                                             ; preds = %2113
  br label %2137

2137:                                             ; preds = %2136, %2105
  %2138 = load i32, ptr %149, align 4, !tbaa !9
  %2139 = load i32, ptr %89, align 4, !tbaa !9
  %2140 = sub nsw i32 %2138, %2139
  %2141 = add nsw i32 %2140, 1
  store i32 %2141, ptr %56, align 4, !tbaa !9
  %2142 = load ptr, ptr %45, align 8, !tbaa !5
  %2143 = load i32, ptr %89, align 4, !tbaa !9
  %2144 = load i32, ptr %125, align 4, !tbaa !9
  %2145 = load i32, ptr %51, align 4, !tbaa !9
  %2146 = mul nsw i32 %2144, %2145
  %2147 = add nsw i32 %2143, %2146
  %2148 = sext i32 %2147 to i64
  %2149 = getelementptr inbounds %struct.doublecomplex, ptr %2142, i64 %2148
  call void @zdscal_(ptr noundef %56, ptr noundef %140, ptr noundef %2149, ptr noundef @c__1)
  br label %2150

2150:                                             ; preds = %2137, %1543
  %2151 = load double, ptr %97, align 8, !tbaa !11
  %2152 = load double, ptr %82, align 8, !tbaa !11
  %2153 = fadd double %2151, %2152
  %2154 = load ptr, ptr %39, align 8, !tbaa !5
  %2155 = load i32, ptr %125, align 4, !tbaa !9
  %2156 = sext i32 %2155 to i64
  %2157 = getelementptr inbounds double, ptr %2154, i64 %2156
  store double %2153, ptr %2157, align 8, !tbaa !11
  %2158 = load i32, ptr %86, align 4, !tbaa !9
  %2159 = icmp ne i32 %2158, 0
  br i1 %2159, label %2248, label %2160

2160:                                             ; preds = %2150
  %2161 = load i32, ptr %76, align 4, !tbaa !9
  %2162 = icmp sgt i32 %2161, 1
  br i1 %2162, label %2163, label %2205

2163:                                             ; preds = %2160
  %2164 = load ptr, ptr %41, align 8, !tbaa !5
  %2165 = load i32, ptr %131, align 4, !tbaa !9
  %2166 = sext i32 %2165 to i64
  %2167 = getelementptr inbounds double, ptr %2164, i64 %2166
  %2168 = load double, ptr %2167, align 8, !tbaa !11
  store double %2168, ptr %59, align 8, !tbaa !11
  %2169 = load ptr, ptr %39, align 8, !tbaa !5
  %2170 = load i32, ptr %125, align 4, !tbaa !9
  %2171 = sext i32 %2170 to i64
  %2172 = getelementptr inbounds double, ptr %2169, i64 %2171
  %2173 = load double, ptr %2172, align 8, !tbaa !11
  %2174 = load ptr, ptr %40, align 8, !tbaa !5
  %2175 = load i32, ptr %125, align 4, !tbaa !9
  %2176 = sext i32 %2175 to i64
  %2177 = getelementptr inbounds double, ptr %2174, i64 %2176
  %2178 = load double, ptr %2177, align 8, !tbaa !11
  %2179 = fsub double %2173, %2178
  %2180 = load ptr, ptr %39, align 8, !tbaa !5
  %2181 = load i32, ptr %131, align 4, !tbaa !9
  %2182 = sext i32 %2181 to i64
  %2183 = getelementptr inbounds double, ptr %2180, i64 %2182
  %2184 = load double, ptr %2183, align 8, !tbaa !11
  %2185 = fsub double %2179, %2184
  %2186 = load ptr, ptr %40, align 8, !tbaa !5
  %2187 = load i32, ptr %131, align 4, !tbaa !9
  %2188 = sext i32 %2187 to i64
  %2189 = getelementptr inbounds double, ptr %2186, i64 %2188
  %2190 = load double, ptr %2189, align 8, !tbaa !11
  %2191 = fsub double %2185, %2190
  store double %2191, ptr %60, align 8, !tbaa !11
  %2192 = load double, ptr %59, align 8, !tbaa !11
  %2193 = load double, ptr %60, align 8, !tbaa !11
  %2194 = fcmp oge double %2192, %2193
  br i1 %2194, label %2195, label %2197

2195:                                             ; preds = %2163
  %2196 = load double, ptr %59, align 8, !tbaa !11
  br label %2199

2197:                                             ; preds = %2163
  %2198 = load double, ptr %60, align 8, !tbaa !11
  br label %2199

2199:                                             ; preds = %2197, %2195
  %2200 = phi double [ %2196, %2195 ], [ %2198, %2197 ]
  %2201 = load ptr, ptr %41, align 8, !tbaa !5
  %2202 = load i32, ptr %131, align 4, !tbaa !9
  %2203 = sext i32 %2202 to i64
  %2204 = getelementptr inbounds double, ptr %2201, i64 %2203
  store double %2200, ptr %2204, align 8, !tbaa !11
  br label %2205

2205:                                             ; preds = %2199, %2160
  %2206 = load i32, ptr %125, align 4, !tbaa !9
  %2207 = load i32, ptr %69, align 4, !tbaa !9
  %2208 = icmp slt i32 %2206, %2207
  br i1 %2208, label %2209, label %2247

2209:                                             ; preds = %2205
  %2210 = load double, ptr %115, align 8, !tbaa !11
  store double %2210, ptr %59, align 8, !tbaa !11
  %2211 = load ptr, ptr %39, align 8, !tbaa !5
  %2212 = load i32, ptr %132, align 4, !tbaa !9
  %2213 = sext i32 %2212 to i64
  %2214 = getelementptr inbounds double, ptr %2211, i64 %2213
  %2215 = load double, ptr %2214, align 8, !tbaa !11
  %2216 = load ptr, ptr %40, align 8, !tbaa !5
  %2217 = load i32, ptr %132, align 4, !tbaa !9
  %2218 = sext i32 %2217 to i64
  %2219 = getelementptr inbounds double, ptr %2216, i64 %2218
  %2220 = load double, ptr %2219, align 8, !tbaa !11
  %2221 = fsub double %2215, %2220
  %2222 = load ptr, ptr %39, align 8, !tbaa !5
  %2223 = load i32, ptr %125, align 4, !tbaa !9
  %2224 = sext i32 %2223 to i64
  %2225 = getelementptr inbounds double, ptr %2222, i64 %2224
  %2226 = load double, ptr %2225, align 8, !tbaa !11
  %2227 = fsub double %2221, %2226
  %2228 = load ptr, ptr %40, align 8, !tbaa !5
  %2229 = load i32, ptr %125, align 4, !tbaa !9
  %2230 = sext i32 %2229 to i64
  %2231 = getelementptr inbounds double, ptr %2228, i64 %2230
  %2232 = load double, ptr %2231, align 8, !tbaa !11
  %2233 = fsub double %2227, %2232
  store double %2233, ptr %60, align 8, !tbaa !11
  %2234 = load double, ptr %59, align 8, !tbaa !11
  %2235 = load double, ptr %60, align 8, !tbaa !11
  %2236 = fcmp oge double %2234, %2235
  br i1 %2236, label %2237, label %2239

2237:                                             ; preds = %2209
  %2238 = load double, ptr %59, align 8, !tbaa !11
  br label %2241

2239:                                             ; preds = %2209
  %2240 = load double, ptr %60, align 8, !tbaa !11
  br label %2241

2241:                                             ; preds = %2239, %2237
  %2242 = phi double [ %2238, %2237 ], [ %2240, %2239 ]
  %2243 = load ptr, ptr %41, align 8, !tbaa !5
  %2244 = load i32, ptr %125, align 4, !tbaa !9
  %2245 = sext i32 %2244 to i64
  %2246 = getelementptr inbounds double, ptr %2243, i64 %2245
  store double %2242, ptr %2246, align 8, !tbaa !11
  br label %2247

2247:                                             ; preds = %2241, %2205
  br label %2248

2248:                                             ; preds = %2247, %2150
  %2249 = load i32, ptr %81, align 4, !tbaa !9
  %2250 = add nsw i32 %2249, 1
  store i32 %2250, ptr %81, align 4, !tbaa !9
  br label %2251

2251:                                             ; preds = %2248, %1492
  br label %2252

2252:                                             ; preds = %2251, %1216
  %2253 = load i32, ptr %75, align 4, !tbaa !9
  %2254 = add nsw i32 %2253, 1
  store i32 %2254, ptr %128, align 4, !tbaa !9
  br label %2255

2255:                                             ; preds = %2252, %1035
  br label %2256

2256:                                             ; preds = %2255
  %2257 = load i32, ptr %75, align 4, !tbaa !9
  %2258 = add nsw i32 %2257, 1
  store i32 %2258, ptr %75, align 4, !tbaa !9
  br label %993, !llvm.loop !29

2259:                                             ; preds = %993
  br label %2260

2260:                                             ; preds = %2259
  %2261 = load i32, ptr %74, align 4, !tbaa !9
  %2262 = add nsw i32 %2261, 1
  store i32 %2262, ptr %74, align 4, !tbaa !9
  br label %565, !llvm.loop !30

2263:                                             ; preds = %565
  %2264 = load i32, ptr %116, align 4, !tbaa !9
  %2265 = add nsw i32 %2264, 1
  store i32 %2265, ptr %116, align 4, !tbaa !9
  br label %540

2266:                                             ; preds = %540
  %2267 = load i32, ptr %63, align 4, !tbaa !9
  %2268 = add nsw i32 %2267, 1
  store i32 %2268, ptr %103, align 4, !tbaa !9
  %2269 = load i32, ptr %69, align 4, !tbaa !9
  %2270 = add nsw i32 %2269, 1
  store i32 %2270, ptr %111, align 4, !tbaa !9
  br label %2271

2271:                                             ; preds = %2266, %449, %370, %357
  br label %2272

2272:                                             ; preds = %2271
  %2273 = load i32, ptr %64, align 4, !tbaa !9
  %2274 = add nsw i32 %2273, 1
  store i32 %2274, ptr %64, align 4, !tbaa !9
  br label %318, !llvm.loop !31

2275:                                             ; preds = %318
  store i32 1, ptr %151, align 4
  br label %2276

2276:                                             ; preds = %2275, %1962, %1741, %1490, %830, %549, %194
  call void @llvm.lifetime.end.p0(i64 8, ptr %150) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %149) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %148) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %147) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %146) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %144) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %143) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %142) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %141) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %140) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %139) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %138) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %137) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %135) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %134) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %133) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %132) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %131) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %130) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %129) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %128) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %127) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %126) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %125) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %124) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %123) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %122) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %120) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %119) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %118) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %116) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %114) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %111) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %109) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %106) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %105) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %104) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %61) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #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 void @zlaset_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare double @dlamch_(ptr noundef) #2

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

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

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

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

; Function Attrs: nounwind
declare double @log(double noundef) #4

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

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

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

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

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

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


; 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 [5 x i8], align 1
@c_b1 = external hidden global %struct.doublecomplex, align 8
@.str.1 = external hidden unnamed_addr constant [10 x i8], align 1
@c__1 = external hidden global i32, align 4
@c__2 = external hidden global i32, align 4
@c_b28 = external hidden global double, align 8

; Function Attrs: nounwind uwtable
define dso_local void @zlarrv_(ptr noundef %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readnone %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr nocapture noundef readonly %6, ptr nocapture noundef readonly %7, ptr nocapture noundef readonly %8, ptr nocapture noundef readonly %9, ptr nocapture noundef readonly %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr nocapture noundef readonly %16, ptr nocapture noundef readonly %17, ptr nocapture noundef readonly %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef %23, ptr nocapture noundef writeonly %24) local_unnamed_addr #0 {
  %26 = ptrtoint ptr %22 to i64
  %27 = ptrtoint ptr %13 to i64
  %28 = alloca i32, align 4
  %29 = alloca double, align 8
  %30 = alloca i32, align 4
  %31 = alloca double, align 8
  %32 = alloca double, align 8
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca double, align 8
  %38 = alloca double, align 8
  %39 = alloca double, align 8
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca double, align 8
  %44 = alloca i32, align 4
  %45 = alloca double, align 8
  %46 = alloca i32, align 4
  %47 = alloca double, align 8
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca double, align 8
  %52 = alloca double, align 8
  %53 = alloca double, align 8
  %54 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %30) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %33) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %34) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %35) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %36) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %40) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %41) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %42) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %44) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %46) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %48) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %49) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %50) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %53) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %54) #7
  %55 = getelementptr inbounds i8, ptr %3, i64 -8
  %56 = getelementptr inbounds i8, ptr %4, i64 -8
  %57 = getelementptr inbounds i8, ptr %6, i64 -4
  %58 = getelementptr inbounds i8, ptr %13, i64 -8
  %59 = getelementptr inbounds i8, ptr %14, i64 -8
  %60 = getelementptr inbounds i8, ptr %15, i64 -8
  %61 = getelementptr inbounds i8, ptr %16, i64 -4
  %62 = getelementptr inbounds i8, ptr %17, i64 -4
  %63 = getelementptr inbounds i8, ptr %18, i64 -8
  %64 = load i32, ptr %20, align 4, !tbaa !5
  %narrow = xor i32 %64, -1
  %65 = sext i32 %narrow to i64
  %66 = getelementptr inbounds %struct.doublecomplex, ptr %19, i64 %65
  %67 = getelementptr inbounds i8, ptr %21, i64 -4
  %68 = getelementptr inbounds i8, ptr %22, i64 -8
  %69 = getelementptr inbounds i8, ptr %23, i64 -4
  store i32 0, ptr %24, align 4, !tbaa !5
  %70 = load i32, ptr %0, align 4, !tbaa !5
  %71 = icmp slt i32 %70, 1
  br i1 %71, label %.loopexit920, label %72

72:                                               ; preds = %25
  %73 = load i32, ptr %7, align 4, !tbaa !5
  %74 = icmp slt i32 %73, 1
  br i1 %74, label %.loopexit920, label %._crit_edge1026

._crit_edge1026:                                  ; preds = %72
  %75 = shl nuw i32 %70, 1
  %76 = or disjoint i32 %75, 1
  %77 = mul i32 %70, 3
  %78 = add nuw nsw i32 %77, 1
  %79 = shl i32 %70, 2
  %80 = or disjoint i32 %79, 1
  %81 = mul nuw nsw i32 %70, 5
  %82 = mul i32 %70, 12
  %smax = tail call i32 @llvm.smax.i32(i32 %82, i32 1)
  %83 = zext nneg i32 %smax to i64
  %84 = shl nuw nsw i64 %83, 3
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %22, i8 0, i64 %84, i1 false), !tbaa !9
  %85 = mul i32 %70, 7
  %smax1177 = tail call i32 @llvm.smax.i32(i32 %85, i32 1)
  %86 = zext nneg i32 %smax1177 to i64
  %87 = shl nuw nsw i64 %86, 2
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %23, i8 0, i64 %87, i1 false), !tbaa !5
  %.pre = load i32, ptr %7, align 4, !tbaa !5
  %88 = load i32, ptr %8, align 4, !tbaa !5
  %89 = icmp sgt i32 %88, 1
  %90 = add nsw i32 %88, -1
  %spec.select = select i1 %89, i32 %90, i32 1
  %91 = load i32, ptr %9, align 4, !tbaa !5
  %92 = icmp slt i32 %91, %.pre
  %93 = add nsw i32 %91, 1
  %.0750 = select i1 %92, i32 %93, i32 %.pre
  %reass.sub = sub i32 %.0750, %spec.select
  %94 = add i32 %reass.sub, 1
  store i32 %94, ptr %50, align 4, !tbaa !5
  %95 = mul nsw i32 %spec.select, %64
  %96 = sext i32 %95 to i64
  %97 = getelementptr %struct.doublecomplex, ptr %66, i64 %96
  %98 = getelementptr i8, ptr %97, i64 16
  call void @zlaset_(ptr noundef nonnull @.str, ptr noundef nonnull %0, ptr noundef nonnull %50, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b1, ptr noundef %98, ptr noundef nonnull %20) #7
  %99 = call double @dlamch_(ptr noundef nonnull @.str.1) #7
  %100 = fmul double %99, 2.000000e+00
  store double %100, ptr %38, align 8, !tbaa !9
  %101 = load i32, ptr %8, align 4, !tbaa !5
  %102 = icmp eq i32 %101, 1
  %.pre1239.pre = load i32, ptr %7, align 4, !tbaa !5
  br i1 %102, label %103, label %106

103:                                              ; preds = %._crit_edge1026
  %104 = load i32, ptr %9, align 4, !tbaa !5
  %105 = icmp eq i32 %104, %.pre1239.pre
  br i1 %105, label %108, label %106

106:                                              ; preds = %103, %._crit_edge1026
  %107 = fmul double %99, 4.000000e+00
  store double %107, ptr %11, align 8, !tbaa !9
  store double %107, ptr %12, align 8, !tbaa !9
  br label %108

108:                                              ; preds = %103, %106
  %109 = sext i32 %.pre1239.pre to i64
  %110 = getelementptr inbounds i32, ptr %61, i64 %109
  %111 = load i32, ptr %110, align 4, !tbaa !5
  %invariant.gep1139 = getelementptr i8, ptr %21, i64 -8
  %.not8641141 = icmp slt i32 %111, 1
  br i1 %.not8641141, label %.loopexit920, label %.lr.ph1150

.lr.ph1150:                                       ; preds = %108
  %invariant.gep = getelementptr i8, ptr %13, i64 -16
  %112 = zext nneg i32 %70 to i64
  %113 = getelementptr i32, ptr %69, i64 %112
  %114 = getelementptr i8, ptr %113, i64 4
  %115 = getelementptr i8, ptr %113, i64 8
  %invariant.gep1102 = getelementptr i8, ptr %22, i64 -16
  %116 = zext nneg i32 %81 to i64
  %117 = getelementptr inbounds double, ptr %68, i64 %116
  %118 = getelementptr inbounds i8, ptr %117, i64 8
  %119 = zext nneg i32 %78 to i64
  %120 = getelementptr inbounds i32, ptr %69, i64 %119
  %invariant.gep1079 = getelementptr i8, ptr %15, i64 -24
  %invariant.gep1081 = getelementptr i8, ptr %15, i64 -16
  %121 = getelementptr inbounds double, ptr %68, i64 %119
  %122 = sext i32 %80 to i64
  %123 = getelementptr inbounds double, ptr %68, i64 %122
  %124 = fmul double %99, 3.000000e+00
  %125 = fmul double %99, 4.000000e+00
  %126 = zext nneg i32 %70 to i64
  %127 = sext i32 %75 to i64
  %128 = shl nsw i64 %65, 4
  %scevgep = getelementptr i8, ptr %19, i64 %128
  %129 = add nuw i32 %111, 1
  %wide.trip.count1237 = zext i32 %129 to i64
  %invariant.gep1290 = getelementptr double, ptr %68, i64 %126
  %invariant.gep1291 = getelementptr double, ptr %68, i64 %127
  %invariant.gep1293 = getelementptr double, ptr %invariant.gep1102, i64 %122
  %scevgep1316 = getelementptr i8, ptr %22, i64 -8
  %scevgep1319 = getelementptr i8, ptr %14, i64 -8
  %130 = add i32 %77, 1
  %131 = shl nsw i64 %65, 4
  %132 = or disjoint i64 %131, 8
  %scevgep1328 = getelementptr i8, ptr %19, i64 %132
  %scevgep1330 = getelementptr i8, ptr %19, i64 %132
  %scevgep1335 = getelementptr i8, ptr %19, i64 %131
  %scevgep1340 = getelementptr i8, ptr %19, i64 %131
  %133 = shl nsw i64 %65, 4
  %scevgep1346 = getelementptr i8, ptr %19, i64 %133
  %134 = add nsw i64 %133, -24
  %scevgep1348 = getelementptr i8, ptr %19, i64 %134
  %scevgep1350 = getelementptr i8, ptr %19, i64 %133
  %scevgep1352 = getelementptr i8, ptr %19, i64 %134
  %135 = or disjoint i64 %133, 8
  %scevgep1354 = getelementptr i8, ptr %19, i64 %135
  %136 = add nsw i64 %133, -16
  %scevgep1356 = getelementptr i8, ptr %19, i64 %136
  %scevgep1358 = getelementptr i8, ptr %19, i64 %135
  %scevgep1360 = getelementptr i8, ptr %19, i64 %136
  %137 = add i32 %77, 1
  %138 = sext i32 %137 to i64
  %139 = shl nsw i64 %138, 3
  %140 = getelementptr i8, ptr %22, i64 %139
  %scevgep1362 = getelementptr i8, ptr %140, i64 -8
  %141 = getelementptr i8, ptr %22, i64 %139
  %scevgep1363 = getelementptr i8, ptr %141, i64 -16
  %142 = sext i32 %79 to i64
  %143 = shl nsw i64 %142, 3
  %scevgep1365 = getelementptr i8, ptr %22, i64 %143
  %144 = getelementptr i8, ptr %22, i64 %143
  %scevgep1366 = getelementptr i8, ptr %144, i64 -8
  %145 = sub i64 %27, %26
  %146 = shl nuw nsw i64 %126, 3
  %147 = getelementptr i8, ptr %22, i64 %146
  %scevgep1460 = getelementptr i8, ptr %147, i64 -8
  %scevgep1462 = getelementptr i8, ptr %22, i64 -8
  %148 = shl nsw i64 %127, 3
  %149 = getelementptr i8, ptr %22, i64 %148
  %scevgep1464 = getelementptr i8, ptr %149, i64 -8
  %scevgep1466 = getelementptr i8, ptr %22, i64 -8
  %scevgep1468 = getelementptr i8, ptr %3, i64 -8
  %scevgep1470 = getelementptr i8, ptr %3, i64 -8
  %scevgep1472 = getelementptr i8, ptr %4, i64 -8
  %scevgep1474 = getelementptr i8, ptr %4, i64 -8
  %diff.check = icmp ult i64 %145, 32
  %broadcast.splatinsert = insertelement <2 x double> poison, double %124, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert1324 = insertelement <2 x double> poison, double %125, i64 0
  %broadcast.splat1325 = shufflevector <2 x double> %broadcast.splatinsert1324, <2 x double> poison, <2 x i32> zeroinitializer
  br label %150

150:                                              ; preds = %.lr.ph1150, %919
  %indvars.iv1234 = phi i64 [ 1, %.lr.ph1150 ], [ %indvars.iv.next1235, %919 ]
  %.07511148 = phi double [ undef, %.lr.ph1150 ], [ %.9, %919 ]
  %.07711146 = phi i32 [ 1, %.lr.ph1150 ], [ %.1772, %919 ]
  %.07761145 = phi i32 [ 1, %.lr.ph1150 ], [ %.1777, %919 ]
  %.08131142 = phi double [ undef, %.lr.ph1150 ], [ %.9822, %919 ]
  %151 = getelementptr inbounds i32, ptr %57, i64 %indvars.iv1234
  %152 = load i32, ptr %151, align 4, !tbaa !5
  %153 = sext i32 %152 to i64
  %154 = getelementptr inbounds double, ptr %56, i64 %153
  %155 = load double, ptr %154, align 8, !tbaa !9
  %156 = add i32 %.07711146, -1
  %157 = load i32, ptr %7, align 4, !tbaa !5
  %158 = sext i32 %156 to i64
  %159 = sext i32 %157 to i64
  %smax1179 = call i32 @llvm.smax.i32(i32 %157, i32 %156)
  br label %160

160:                                              ; preds = %162, %150
  %indvars.iv = phi i64 [ %indvars.iv.next, %162 ], [ %158, %150 ]
  %161 = icmp slt i64 %indvars.iv, %159
  br i1 %161, label %162, label %.split.loop.exit1286

162:                                              ; preds = %160
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %163 = getelementptr i32, ptr %16, i64 %indvars.iv
  %164 = load i32, ptr %163, align 4, !tbaa !5
  %165 = zext i32 %164 to i64
  %166 = icmp eq i64 %indvars.iv1234, %165
  br i1 %166, label %160, label %.split.loop.exit

.split.loop.exit:                                 ; preds = %162
  %167 = trunc nsw i64 %indvars.iv to i32
  br label %.split.loop.exit1286

.split.loop.exit1286:                             ; preds = %160, %.split.loop.exit
  %.0794.lcssa = phi i32 [ %167, %.split.loop.exit ], [ %smax1179, %160 ]
  %168 = icmp slt i32 %.0794.lcssa, %.07711146
  br i1 %168, label %919, label %169

169:                                              ; preds = %.split.loop.exit1286
  %170 = load i32, ptr %8, align 4, !tbaa !5
  %171 = icmp slt i32 %.0794.lcssa, %170
  br i1 %171, label %175, label %172

172:                                              ; preds = %169
  %173 = load i32, ptr %9, align 4, !tbaa !5
  %174 = icmp sgt i32 %.07711146, %173
  br i1 %174, label %175, label %177

175:                                              ; preds = %172, %169
  %176 = add nuw nsw i32 %.0794.lcssa, 1
  br label %919

177:                                              ; preds = %172
  %178 = shl i32 %.07761145, 1
  %179 = sext i32 %178 to i64
  %180 = getelementptr double, ptr %63, i64 %179
  %181 = getelementptr i8, ptr %180, i64 -8
  %182 = load double, ptr %181, align 8, !tbaa !9
  %183 = load double, ptr %180, align 8, !tbaa !9
  %.not865.not1027 = icmp slt i32 %.07761145, %152
  br i1 %.not865.not1027, label %.lr.ph1032.preheader, label %222

.lr.ph1032.preheader:                             ; preds = %177
  %184 = sext i32 %.07761145 to i64
  %185 = sub nsw i64 %153, %184
  %xtraiter = and i64 %185, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph1032.prol.loopexit, label %.lr.ph1032.prol

.lr.ph1032.prol:                                  ; preds = %.lr.ph1032.preheader
  %indvars.iv.next1182.prol = add nsw i64 %184, 1
  %186 = trunc nsw i64 %indvars.iv.next1182.prol to i32
  %187 = shl i32 %186, 1
  %188 = sext i32 %187 to i64
  %189 = getelementptr double, ptr %63, i64 %188
  %190 = getelementptr i8, ptr %189, i64 -8
  %191 = load double, ptr %190, align 8, !tbaa !9
  %192 = fcmp ole double %191, %182
  %193 = select i1 %192, double %191, double %182
  %194 = load double, ptr %189, align 8, !tbaa !9
  %195 = fcmp oge double %194, %183
  %196 = select i1 %195, double %194, double %183
  br label %.lr.ph1032.prol.loopexit

.lr.ph1032.prol.loopexit:                         ; preds = %.lr.ph1032.prol, %.lr.ph1032.preheader
  %.lcssa1538.unr = phi double [ poison, %.lr.ph1032.preheader ], [ %193, %.lr.ph1032.prol ]
  %.lcssa1537.unr = phi double [ poison, %.lr.ph1032.preheader ], [ %194, %.lr.ph1032.prol ]
  %.lcssa.unr = phi double [ poison, %.lr.ph1032.preheader ], [ %196, %.lr.ph1032.prol ]
  %indvars.iv1181.unr = phi i64 [ %184, %.lr.ph1032.preheader ], [ %indvars.iv.next1182.prol, %.lr.ph1032.prol ]
  %.07781030.unr = phi double [ %183, %.lr.ph1032.preheader ], [ %196, %.lr.ph1032.prol ]
  %.07791029.unr = phi double [ %182, %.lr.ph1032.preheader ], [ %193, %.lr.ph1032.prol ]
  %197 = add nsw i64 %153, -1
  %198 = icmp eq i64 %197, %184
  br i1 %198, label %._crit_edge1033, label %.lr.ph1032

.lr.ph1032:                                       ; preds = %.lr.ph1032.prol.loopexit, %.lr.ph1032
  %indvars.iv1181 = phi i64 [ %indvars.iv.next1182.1, %.lr.ph1032 ], [ %indvars.iv1181.unr, %.lr.ph1032.prol.loopexit ]
  %.07781030 = phi double [ %221, %.lr.ph1032 ], [ %.07781030.unr, %.lr.ph1032.prol.loopexit ]
  %.07791029 = phi double [ %218, %.lr.ph1032 ], [ %.07791029.unr, %.lr.ph1032.prol.loopexit ]
  %199 = trunc i64 %indvars.iv1181 to i32
  %200 = shl i32 %199, 1
  %201 = add i32 %200, 2
  %202 = sext i32 %201 to i64
  %203 = getelementptr double, ptr %63, i64 %202
  %204 = getelementptr i8, ptr %203, i64 -8
  %205 = load double, ptr %204, align 8, !tbaa !9
  %206 = fcmp ole double %205, %.07791029
  %207 = select i1 %206, double %205, double %.07791029
  %208 = load double, ptr %203, align 8, !tbaa !9
  %209 = fcmp oge double %208, %.07781030
  %210 = select i1 %209, double %208, double %.07781030
  %indvars.iv.next1182.1 = add nsw i64 %indvars.iv1181, 2
  %211 = trunc nsw i64 %indvars.iv.next1182.1 to i32
  %212 = shl i32 %211, 1
  %213 = sext i32 %212 to i64
  %214 = getelementptr double, ptr %63, i64 %213
  %215 = getelementptr i8, ptr %214, i64 -8
  %216 = load double, ptr %215, align 8, !tbaa !9
  %217 = fcmp ole double %216, %207
  %218 = select i1 %217, double %216, double %207
  %219 = load double, ptr %214, align 8, !tbaa !9
  %220 = fcmp oge double %219, %210
  %221 = select i1 %220, double %219, double %210
  %exitcond.not.1 = icmp eq i64 %indvars.iv.next1182.1, %153
  br i1 %exitcond.not.1, label %._crit_edge1033, label %.lr.ph1032, !llvm.loop !11

._crit_edge1033:                                  ; preds = %.lr.ph1032, %.lr.ph1032.prol.loopexit
  %.lcssa1538 = phi double [ %.lcssa1538.unr, %.lr.ph1032.prol.loopexit ], [ %218, %.lr.ph1032 ]
  %.lcssa1537 = phi double [ %.lcssa1537.unr, %.lr.ph1032.prol.loopexit ], [ %219, %.lr.ph1032 ]
  %.lcssa = phi double [ %.lcssa.unr, %.lr.ph1032.prol.loopexit ], [ %221, %.lr.ph1032 ]
  store double %.lcssa1537, ptr %29, align 8, !tbaa !9
  br label %222

222:                                              ; preds = %._crit_edge1033, %177
  %.0779.lcssa = phi double [ %.lcssa1538, %._crit_edge1033 ], [ %182, %177 ]
  %.0778.lcssa = phi double [ %.lcssa, %._crit_edge1033 ], [ %183, %177 ]
  %223 = fsub double %.0778.lcssa, %.0779.lcssa
  store double %223, ptr %45, align 8, !tbaa !9
  %224 = add nsw i32 %.07761145, -1
  %reass.sub1151 = sub i32 %152, %.07761145
  %225 = add i32 %reass.sub1151, 1
  store i32 %225, ptr %41, align 4, !tbaa !5
  %reass.sub1152 = sub i32 %.0794.lcssa, %.07711146
  %226 = add i32 %reass.sub1152, 1
  store i32 %226, ptr %40, align 4, !tbaa !5
  %227 = icmp eq i32 %.07761145, %152
  br i1 %227, label %228, label %243

228:                                              ; preds = %222
  %229 = mul nsw i32 %.07711146, %64
  %230 = add nsw i32 %229, %.07761145
  %231 = sext i32 %230 to i64
  %232 = getelementptr inbounds %struct.doublecomplex, ptr %66, i64 %231
  store <2 x double> <double 1.000000e+00, double 0.000000e+00>, ptr %232, align 8, !tbaa !9
  %233 = shl nuw i32 %.07711146, 1
  %234 = sext i32 %233 to i64
  %gep1140 = getelementptr i32, ptr %invariant.gep1139, i64 %234
  store i32 %.07761145, ptr %gep1140, align 4, !tbaa !5
  %235 = zext nneg i32 %233 to i64
  %236 = getelementptr inbounds i32, ptr %67, i64 %235
  store i32 %.07761145, ptr %236, align 4, !tbaa !5
  %237 = zext nneg i32 %.07711146 to i64
  %238 = getelementptr inbounds double, ptr %58, i64 %237
  %239 = load double, ptr %238, align 8, !tbaa !9
  %240 = fadd double %155, %239
  store double %240, ptr %238, align 8, !tbaa !9
  %241 = getelementptr inbounds double, ptr %68, i64 %237
  store double %240, ptr %241, align 8, !tbaa !9
  %242 = add nuw nsw i32 %.07711146, 1
  br label %919

243:                                              ; preds = %222
  %244 = zext nneg i32 %.07711146 to i64
  %245 = getelementptr inbounds double, ptr %58, i64 %244
  %246 = getelementptr inbounds double, ptr %68, i64 %244
  call void @dcopy_(ptr noundef nonnull %40, ptr noundef nonnull %245, ptr noundef nonnull @c__1, ptr noundef nonnull %246, ptr noundef nonnull @c__1) #7
  %247 = load i32, ptr %40, align 4, !tbaa !5
  %.not8661036 = icmp slt i32 %247, 1
  br i1 %.not8661036, label %._crit_edge1040.thread, label %.lr.ph1039.preheader

._crit_edge1040.thread:                           ; preds = %243
  store i32 1, ptr %114, align 4, !tbaa !5
  store i32 %247, ptr %115, align 4, !tbaa !5
  br label %._crit_edge1134

.lr.ph1039.preheader:                             ; preds = %243
  %248 = sext i32 %.07711146 to i64
  %249 = add nuw i32 %247, 1
  %wide.trip.count1187 = zext i32 %249 to i64
  %invariant.gep1288 = getelementptr double, ptr %invariant.gep, i64 %248
  %250 = zext nneg i32 %247 to i64
  %min.iters.check1513 = icmp ult i32 %247, 4
  br i1 %min.iters.check1513, label %.lr.ph1039.preheader1535, label %vector.ph1514

vector.ph1514:                                    ; preds = %.lr.ph1039.preheader
  %n.vec1516 = and i64 %250, 2147483644
  %ind.end1517 = or disjoint i64 %n.vec1516, 1
  %broadcast.splatinsert1524 = insertelement <2 x double> poison, double %155, i64 0
  %broadcast.splat1525 = shufflevector <2 x double> %broadcast.splatinsert1524, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1519

vector.body1519:                                  ; preds = %vector.body1519, %vector.ph1514
  %index1520 = phi i64 [ 0, %vector.ph1514 ], [ %index.next1526, %vector.body1519 ]
  %offset.idx1521 = or disjoint i64 %index1520, 1
  %251 = getelementptr double, ptr %invariant.gep1288, i64 %offset.idx1521
  %252 = getelementptr i8, ptr %251, i64 16
  %wide.load1522 = load <2 x double>, ptr %251, align 8, !tbaa !9
  %wide.load1523 = load <2 x double>, ptr %252, align 8, !tbaa !9
  %253 = fadd <2 x double> %broadcast.splat1525, %wide.load1522
  %254 = fadd <2 x double> %broadcast.splat1525, %wide.load1523
  store <2 x double> %253, ptr %251, align 8, !tbaa !9
  store <2 x double> %254, ptr %252, align 8, !tbaa !9
  %index.next1526 = add nuw i64 %index1520, 4
  %255 = icmp eq i64 %index.next1526, %n.vec1516
  br i1 %255, label %middle.block1511, label %vector.body1519, !llvm.loop !13

middle.block1511:                                 ; preds = %vector.body1519
  %cmp.n1527 = icmp eq i64 %n.vec1516, %250
  br i1 %cmp.n1527, label %._crit_edge1040, label %.lr.ph1039.preheader1535

.lr.ph1039.preheader1535:                         ; preds = %middle.block1511, %.lr.ph1039.preheader
  %indvars.iv1184.ph = phi i64 [ 1, %.lr.ph1039.preheader ], [ %ind.end1517, %middle.block1511 ]
  br label %.lr.ph1039

.lr.ph1039:                                       ; preds = %.lr.ph1039.preheader1535, %.lr.ph1039
  %indvars.iv1184 = phi i64 [ %indvars.iv.next1185, %.lr.ph1039 ], [ %indvars.iv1184.ph, %.lr.ph1039.preheader1535 ]
  %gep1289 = getelementptr double, ptr %invariant.gep1288, i64 %indvars.iv1184
  %256 = load double, ptr %gep1289, align 8, !tbaa !9
  %257 = fadd double %155, %256
  store double %257, ptr %gep1289, align 8, !tbaa !9
  %indvars.iv.next1185 = add nuw nsw i64 %indvars.iv1184, 1
  %exitcond1188.not = icmp eq i64 %indvars.iv.next1185, %wide.trip.count1187
  br i1 %exitcond1188.not, label %._crit_edge1040, label %.lr.ph1039, !llvm.loop !16

._crit_edge1040:                                  ; preds = %.lr.ph1039, %middle.block1511
  store i32 1, ptr %114, align 4, !tbaa !5
  store i32 %247, ptr %115, align 4, !tbaa !5
  %258 = getelementptr inbounds double, ptr %55, i64 %153
  %259 = getelementptr inbounds i32, ptr %62, i64 %244
  %260 = sext i32 %.07761145 to i64
  %261 = getelementptr inbounds double, ptr %55, i64 %260
  %262 = add nsw i32 %.07761145, %76
  %263 = sext i32 %262 to i64
  %gep1103 = getelementptr double, ptr %invariant.gep1102, i64 %263
  %264 = getelementptr inbounds double, ptr %60, i64 %244
  %265 = getelementptr inbounds double, ptr %59, i64 %244
  %266 = getelementptr inbounds double, ptr %56, i64 %260
  %267 = add i32 %.07761145, %70
  %268 = sext i32 %267 to i64
  %269 = getelementptr inbounds double, ptr %68, i64 %268
  %270 = sext i32 %.07711146 to i64
  %invariant.gep1295 = getelementptr double, ptr %invariant.gep1081, i64 %270
  %271 = add i32 %.07711146, -1
  %272 = add i32 %.07711146, -1
  %273 = add i32 %.07711146, -1
  %274 = shl nsw i64 %260, 3
  %scevgep1461 = getelementptr i8, ptr %scevgep1460, i64 %274
  %275 = add nsw i64 %126, %153
  %276 = shl nsw i64 %275, 3
  %scevgep1463 = getelementptr i8, ptr %scevgep1462, i64 %276
  %scevgep1465 = getelementptr i8, ptr %scevgep1464, i64 %274
  %277 = add nsw i64 %127, %153
  %278 = shl nsw i64 %277, 3
  %scevgep1467 = getelementptr i8, ptr %scevgep1466, i64 %278
  %scevgep1469 = getelementptr i8, ptr %scevgep1468, i64 %274
  %279 = shl nsw i64 %153, 3
  %scevgep1471 = getelementptr i8, ptr %scevgep1470, i64 %279
  %scevgep1473 = getelementptr i8, ptr %scevgep1472, i64 %274
  %scevgep1475 = getelementptr i8, ptr %scevgep1474, i64 %279
  %280 = sub nsw i64 %153, %260
  %min.iters.check1497 = icmp ult i64 %280, 10
  %bound01476 = icmp ult ptr %scevgep1461, %scevgep1467
  %bound11477 = icmp ult ptr %scevgep1465, %scevgep1463
  %found.conflict1478 = and i1 %bound01476, %bound11477
  %bound01479 = icmp ult ptr %scevgep1461, %scevgep1471
  %bound11480 = icmp ult ptr %scevgep1469, %scevgep1463
  %found.conflict1481 = and i1 %bound01479, %bound11480
  %conflict.rdx1482 = or i1 %found.conflict1478, %found.conflict1481
  %bound01483 = icmp ult ptr %scevgep1461, %scevgep1475
  %bound11484 = icmp ult ptr %scevgep1473, %scevgep1463
  %found.conflict1485 = and i1 %bound01483, %bound11484
  %conflict.rdx1486 = or i1 %conflict.rdx1482, %found.conflict1485
  %bound01487 = icmp ult ptr %scevgep1465, %scevgep1471
  %bound11488 = icmp ult ptr %scevgep1469, %scevgep1467
  %found.conflict1489 = and i1 %bound01487, %bound11488
  %conflict.rdx1490 = or i1 %conflict.rdx1486, %found.conflict1489
  %bound01491 = icmp ult ptr %scevgep1465, %scevgep1475
  %bound11492 = icmp ult ptr %scevgep1473, %scevgep1467
  %found.conflict1493 = and i1 %bound01491, %bound11492
  %conflict.rdx1494 = or i1 %conflict.rdx1490, %found.conflict1493
  %n.vec1500 = and i64 %280, -2
  %ind.end1501 = add nsw i64 %n.vec1500, %260
  %cmp.n1510 = icmp eq i64 %280, %n.vec1500
  %281 = add nsw i64 %153, -1
  br label %282

282:                                              ; preds = %._crit_edge1040, %._crit_edge1115
  %283 = phi i32 [ %247, %._crit_edge1040 ], [ %915, %._crit_edge1115 ]
  %.11131 = phi double [ %.07511148, %._crit_edge1040 ], [ %.2.lcssa, %._crit_edge1115 ]
  %.07541130 = phi i32 [ 1, %._crit_edge1040 ], [ %287, %._crit_edge1115 ]
  %.07611129 = phi i32 [ 0, %._crit_edge1040 ], [ %916, %._crit_edge1115 ]
  %.07951126 = phi i32 [ 1, %._crit_edge1040 ], [ %.1796.lcssa, %._crit_edge1115 ]
  %.08051125 = phi double [ %155, %._crit_edge1040 ], [ %.1806.lcssa, %._crit_edge1115 ]
  %.08081124 = phi i32 [ 0, %._crit_edge1040 ], [ %.1809.lcssa, %._crit_edge1115 ]
  %.18141123 = phi double [ %.08131142, %._crit_edge1040 ], [ %.2815.lcssa, %._crit_edge1115 ]
  %284 = load i32, ptr %7, align 4, !tbaa !5
  %285 = icmp sgt i32 %.07611129, %284
  br i1 %285, label %.loopexit920.sink.split, label %286

286:                                              ; preds = %282
  %287 = sub nuw nsw i32 1, %.07541130
  %288 = icmp eq i32 %.07541130, 1
  %. = select i1 %288, i32 %70, i32 %75
  %.897 = select i1 %288, i32 %75, i32 %70
  %.not8671104 = icmp slt i32 %.07951126, 1
  br i1 %.not8671104, label %._crit_edge1115, label %.lr.ph1114

.lr.ph1114:                                       ; preds = %286
  %.not868 = icmp eq i32 %.07611129, 0
  %289 = add nuw i32 %.07951126, 1
  %wide.trip.count1232 = zext i32 %289 to i64
  br label %290

290:                                              ; preds = %.lr.ph1114, %._crit_edge1095
  %indvars.iv1229 = phi i64 [ 1, %.lr.ph1114 ], [ %indvars.iv.next1230, %._crit_edge1095 ]
  %.21112 = phi double [ %.11131, %.lr.ph1114 ], [ %.3.lcssa, %._crit_edge1095 ]
  %.17961109 = phi i32 [ 0, %.lr.ph1114 ], [ %.2797.lcssa, %._crit_edge1095 ]
  %.18061108 = phi double [ %.08051125, %.lr.ph1114 ], [ %.2807, %._crit_edge1095 ]
  %.18091107 = phi i32 [ %.08081124, %.lr.ph1114 ], [ %.2810.lcssa, %._crit_edge1095 ]
  %.28151106 = phi double [ %.18141123, %.lr.ph1114 ], [ %.3816.lcssa, %._crit_edge1095 ]
  %indvars.iv1229.tr = trunc i64 %indvars.iv1229 to i32
  %291 = shl i32 %indvars.iv1229.tr, 1
  %292 = add nsw i32 %291, %.
  %293 = sext i32 %292 to i64
  %294 = getelementptr i32, ptr %69, i64 %293
  %295 = getelementptr i8, ptr %294, i64 -4
  %296 = load i32, ptr %295, align 4, !tbaa !5
  %297 = load i32, ptr %294, align 4, !tbaa !5
  br i1 %.not868, label %344, label %298

298:                                              ; preds = %290
  %299 = load i32, ptr %8, align 4, !tbaa !5
  %300 = icmp eq i32 %299, 1
  br i1 %300, label %301, label %307

301:                                              ; preds = %298
  %302 = load i32, ptr %9, align 4, !tbaa !5
  %303 = load i32, ptr %7, align 4, !tbaa !5
  %304 = icmp eq i32 %302, %303
  br i1 %304, label %305, label %307

305:                                              ; preds = %301
  %306 = add i32 %156, %296
  br label %314

307:                                              ; preds = %301, %298
  %308 = add nsw i32 %296, %.07711146
  %.not869 = icmp sgt i32 %308, %299
  br i1 %.not869, label %311, label %309

309:                                              ; preds = %307
  %310 = add nsw i32 %299, -1
  br label %314

311:                                              ; preds = %307
  %312 = add nsw i32 %308, -1
  %313 = load i32, ptr %9, align 4, !tbaa !5
  %.898 = call i32 @llvm.smin.i32(i32 %312, i32 %313)
  br label %314

314:                                              ; preds = %311, %309, %305
  %.0832 = phi i32 [ %306, %305 ], [ %310, %309 ], [ %.898, %311 ]
  %315 = load i32, ptr %41, align 4, !tbaa !5
  %.not870.not1041 = icmp sgt i32 %315, 1
  %316 = mul nsw i32 %.0832, %64
  %317 = add nsw i32 %.0832, 1
  %318 = mul nsw i32 %317, %64
  br i1 %.not870.not1041, label %.lr.ph1044, label %._crit_edge1246

.lr.ph1044:                                       ; preds = %314
  %wide.trip.count1192 = zext nneg i32 %315 to i64
  br label %319

319:                                              ; preds = %.lr.ph1044, %319
  %indvars.iv1189 = phi i64 [ 1, %.lr.ph1044 ], [ %indvars.iv.next1190, %319 ]
  %320 = trunc nuw nsw i64 %indvars.iv1189 to i32
  %321 = add i32 %224, %320
  %322 = add nsw i32 %321, %316
  %323 = sext i32 %322 to i64
  %324 = getelementptr inbounds %struct.doublecomplex, ptr %66, i64 %323
  %325 = load double, ptr %324, align 8, !tbaa !17
  %326 = sext i32 %321 to i64
  %327 = getelementptr inbounds double, ptr %55, i64 %326
  store double %325, ptr %327, align 8, !tbaa !9
  %328 = add nsw i32 %321, %318
  %329 = sext i32 %328 to i64
  %330 = getelementptr inbounds %struct.doublecomplex, ptr %66, i64 %329
  %331 = load double, ptr %330, align 8, !tbaa !17
  %332 = getelementptr inbounds double, ptr %56, i64 %326
  store double %331, ptr %332, align 8, !tbaa !9
  %indvars.iv.next1190 = add nuw nsw i64 %indvars.iv1189, 1
  %exitcond1193.not = icmp eq i64 %indvars.iv.next1190, %wide.trip.count1192
  br i1 %exitcond1193.not, label %._crit_edge1045, label %319, !llvm.loop !19

._crit_edge1045:                                  ; preds = %319
  store i32 %328, ptr %28, align 4, !tbaa !5
  br label %._crit_edge1246

._crit_edge1246:                                  ; preds = %314, %._crit_edge1045
  %333 = add nsw i32 %316, %152
  %334 = sext i32 %333 to i64
  %335 = getelementptr inbounds %struct.doublecomplex, ptr %66, i64 %334
  %336 = load double, ptr %335, align 8, !tbaa !17
  store double %336, ptr %258, align 8, !tbaa !9
  %337 = add nsw i32 %318, %152
  %338 = sext i32 %337 to i64
  %339 = getelementptr inbounds %struct.doublecomplex, ptr %66, i64 %338
  %340 = load double, ptr %339, align 8, !tbaa !17
  %341 = add nsw i32 %316, %.07761145
  %342 = sext i32 %341 to i64
  %343 = getelementptr inbounds %struct.doublecomplex, ptr %66, i64 %342
  call void @zlaset_(ptr noundef nonnull @.str, ptr noundef nonnull %41, ptr noundef nonnull @c__2, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b1, ptr noundef %343, ptr noundef nonnull %20) #7
  br label %344

344:                                              ; preds = %._crit_edge1246, %290
  %.2807 = phi double [ %340, %._crit_edge1246 ], [ %.18061108, %290 ]
  br i1 %.not865.not1027, label %.lr.ph1050.preheader, label %._crit_edge1051

.lr.ph1050.preheader:                             ; preds = %344
  %brmerge = select i1 %min.iters.check1497, i1 true, i1 %conflict.rdx1494
  br i1 %brmerge, label %.lr.ph1050.preheader1532, label %vector.body1503

vector.body1503:                                  ; preds = %.lr.ph1050.preheader, %vector.body1503
  %index1504 = phi i64 [ %index.next1509, %vector.body1503 ], [ 0, %.lr.ph1050.preheader ]
  %offset.idx1505 = add i64 %index1504, %260
  %345 = getelementptr inbounds double, ptr %55, i64 %offset.idx1505
  %wide.load1506 = load <2 x double>, ptr %345, align 8, !tbaa !9, !alias.scope !20
  %346 = getelementptr inbounds double, ptr %56, i64 %offset.idx1505
  %wide.load1507 = load <2 x double>, ptr %346, align 8, !tbaa !9, !alias.scope !23
  %347 = fmul <2 x double> %wide.load1506, %wide.load1507
  %348 = getelementptr double, ptr %invariant.gep1290, i64 %offset.idx1505
  store <2 x double> %347, ptr %348, align 8, !tbaa !9, !alias.scope !25, !noalias !27
  %349 = fmul <2 x double> %347, %wide.load1507
  %350 = getelementptr double, ptr %invariant.gep1291, i64 %offset.idx1505
  store <2 x double> %349, ptr %350, align 8, !tbaa !9, !alias.scope !29, !noalias !30
  %index.next1509 = add nuw i64 %index1504, 2
  %351 = icmp eq i64 %index.next1509, %n.vec1500
  br i1 %351, label %middle.block1495, label %vector.body1503, !llvm.loop !31

middle.block1495:                                 ; preds = %vector.body1503
  br i1 %cmp.n1510, label %._crit_edge1051, label %.lr.ph1050.preheader1532

.lr.ph1050.preheader1532:                         ; preds = %.lr.ph1050.preheader, %middle.block1495
  %indvars.iv1194.ph = phi i64 [ %260, %.lr.ph1050.preheader ], [ %ind.end1501, %middle.block1495 ]
  %352 = sub nsw i64 %153, %indvars.iv1194.ph
  %xtraiter1553 = and i64 %352, 1
  %lcmp.mod1554.not = icmp eq i64 %xtraiter1553, 0
  br i1 %lcmp.mod1554.not, label %.lr.ph1050.prol.loopexit, label %.lr.ph1050.prol

.lr.ph1050.prol:                                  ; preds = %.lr.ph1050.preheader1532
  %353 = getelementptr inbounds double, ptr %55, i64 %indvars.iv1194.ph
  %354 = load double, ptr %353, align 8, !tbaa !9
  %355 = getelementptr inbounds double, ptr %56, i64 %indvars.iv1194.ph
  %356 = load double, ptr %355, align 8, !tbaa !9
  %357 = fmul double %354, %356
  %gep.prol = getelementptr double, ptr %invariant.gep1290, i64 %indvars.iv1194.ph
  store double %357, ptr %gep.prol, align 8, !tbaa !9
  %358 = load double, ptr %355, align 8, !tbaa !9
  %359 = fmul double %357, %358
  %gep1292.prol = getelementptr double, ptr %invariant.gep1291, i64 %indvars.iv1194.ph
  store double %359, ptr %gep1292.prol, align 8, !tbaa !9
  %indvars.iv.next1195.prol = add nsw i64 %indvars.iv1194.ph, 1
  br label %.lr.ph1050.prol.loopexit

.lr.ph1050.prol.loopexit:                         ; preds = %.lr.ph1050.prol, %.lr.ph1050.preheader1532
  %indvars.iv1194.unr = phi i64 [ %indvars.iv1194.ph, %.lr.ph1050.preheader1532 ], [ %indvars.iv.next1195.prol, %.lr.ph1050.prol ]
  %360 = icmp eq i64 %indvars.iv1194.ph, %281
  br i1 %360, label %._crit_edge1051, label %.lr.ph1050

.lr.ph1050:                                       ; preds = %.lr.ph1050.prol.loopexit, %.lr.ph1050
  %indvars.iv1194 = phi i64 [ %indvars.iv.next1195.1, %.lr.ph1050 ], [ %indvars.iv1194.unr, %.lr.ph1050.prol.loopexit ]
  %361 = getelementptr inbounds double, ptr %55, i64 %indvars.iv1194
  %362 = load double, ptr %361, align 8, !tbaa !9
  %363 = getelementptr inbounds double, ptr %56, i64 %indvars.iv1194
  %364 = load double, ptr %363, align 8, !tbaa !9
  %365 = fmul double %362, %364
  %gep = getelementptr double, ptr %invariant.gep1290, i64 %indvars.iv1194
  store double %365, ptr %gep, align 8, !tbaa !9
  %366 = load double, ptr %363, align 8, !tbaa !9
  %367 = fmul double %365, %366
  %gep1292 = getelementptr double, ptr %invariant.gep1291, i64 %indvars.iv1194
  store double %367, ptr %gep1292, align 8, !tbaa !9
  %indvars.iv.next1195 = add nsw i64 %indvars.iv1194, 1
  %368 = getelementptr double, ptr %3, i64 %indvars.iv1194
  %369 = load double, ptr %368, align 8, !tbaa !9
  %370 = getelementptr double, ptr %4, i64 %indvars.iv1194
  %371 = load double, ptr %370, align 8, !tbaa !9
  %372 = fmul double %369, %371
  %gep.1 = getelementptr double, ptr %invariant.gep1290, i64 %indvars.iv.next1195
  store double %372, ptr %gep.1, align 8, !tbaa !9
  %373 = load double, ptr %370, align 8, !tbaa !9
  %374 = fmul double %372, %373
  %gep1292.1 = getelementptr double, ptr %invariant.gep1291, i64 %indvars.iv.next1195
  store double %374, ptr %gep1292.1, align 8, !tbaa !9
  %indvars.iv.next1195.1 = add nsw i64 %indvars.iv1194, 2
  %exitcond1198.not.1 = icmp eq i64 %indvars.iv.next1195.1, %153
  br i1 %exitcond1198.not.1, label %._crit_edge1051, label %.lr.ph1050, !llvm.loop !32

._crit_edge1051:                                  ; preds = %.lr.ph1050.prol.loopexit, %.lr.ph1050, %middle.block1495, %344
  br i1 %.not868, label %.loopexit919, label %375

375:                                              ; preds = %._crit_edge1051
  %376 = add nsw i32 %296, %156
  %377 = sext i32 %376 to i64
  %378 = getelementptr inbounds i32, ptr %62, i64 %377
  %379 = load i32, ptr %378, align 4, !tbaa !5
  store i32 %379, ptr %34, align 4, !tbaa !5
  %380 = add nsw i32 %297, %156
  %381 = sext i32 %380 to i64
  %382 = getelementptr inbounds i32, ptr %62, i64 %381
  %383 = load i32, ptr %382, align 4, !tbaa !5
  store i32 %383, ptr %35, align 4, !tbaa !5
  %384 = load i32, ptr %259, align 4, !tbaa !5
  %385 = add nsw i32 %384, -1
  store i32 %385, ptr %46, align 4, !tbaa !5
  call void @dlarrb_(ptr noundef nonnull %41, ptr noundef nonnull %261, ptr noundef %gep1103, ptr noundef nonnull %34, ptr noundef nonnull %35, ptr noundef %11, ptr noundef %12, ptr noundef nonnull %46, ptr noundef nonnull %246, ptr noundef nonnull %264, ptr noundef nonnull %265, ptr noundef nonnull %118, ptr noundef nonnull %120, ptr noundef %5, ptr noundef nonnull %45, ptr noundef nonnull %41, ptr noundef nonnull %36) #7
  %386 = load i32, ptr %36, align 4, !tbaa !5
  %.not872 = icmp eq i32 %386, 0
  br i1 %.not872, label %387, label %.loopexit920.sink.split

387:                                              ; preds = %375
  %388 = icmp sgt i32 %296, 1
  br i1 %388, label %389, label %410

389:                                              ; preds = %387
  %390 = add nuw nsw i32 %296, %.07711146
  %391 = add nsw i32 %390, -2
  %392 = zext nneg i32 %391 to i64
  %393 = getelementptr inbounds double, ptr %60, i64 %392
  %394 = load double, ptr %393, align 8, !tbaa !9
  store double %394, ptr %29, align 8, !tbaa !9
  %395 = add nsw i32 %390, -1
  %396 = zext nneg i32 %395 to i64
  %397 = getelementptr inbounds double, ptr %58, i64 %396
  %398 = load double, ptr %397, align 8, !tbaa !9
  %399 = getelementptr inbounds double, ptr %59, i64 %396
  %400 = load double, ptr %399, align 8, !tbaa !9
  %401 = fsub double %398, %400
  %402 = getelementptr inbounds double, ptr %58, i64 %392
  %403 = load double, ptr %402, align 8, !tbaa !9
  %404 = fsub double %401, %403
  %405 = getelementptr inbounds double, ptr %59, i64 %392
  %406 = load double, ptr %405, align 8, !tbaa !9
  %407 = fsub double %404, %406
  %408 = fcmp oge double %394, %407
  %409 = select i1 %408, double %394, double %407
  store double %409, ptr %393, align 8, !tbaa !9
  br label %410

410:                                              ; preds = %389, %387
  %411 = add nsw i32 %297, %.07711146
  %.not873 = icmp sgt i32 %411, %.0794.lcssa
  br i1 %.not873, label %431, label %412

412:                                              ; preds = %410
  %413 = add nsw i32 %411, -1
  %414 = sext i32 %413 to i64
  %415 = getelementptr inbounds double, ptr %60, i64 %414
  %416 = load double, ptr %415, align 8, !tbaa !9
  store double %416, ptr %29, align 8, !tbaa !9
  %417 = sext i32 %411 to i64
  %418 = getelementptr inbounds double, ptr %58, i64 %417
  %419 = load double, ptr %418, align 8, !tbaa !9
  %420 = getelementptr inbounds double, ptr %59, i64 %417
  %421 = load double, ptr %420, align 8, !tbaa !9
  %422 = fsub double %419, %421
  %423 = getelementptr inbounds double, ptr %58, i64 %414
  %424 = load double, ptr %423, align 8, !tbaa !9
  %425 = fsub double %422, %424
  %426 = getelementptr inbounds double, ptr %59, i64 %414
  %427 = load double, ptr %426, align 8, !tbaa !9
  %428 = fsub double %425, %427
  %429 = fcmp oge double %416, %428
  %430 = select i1 %429, double %416, double %428
  store double %430, ptr %415, align 8, !tbaa !9
  br label %431

431:                                              ; preds = %412, %410
  %.not8741052 = icmp sgt i32 %296, %297
  br i1 %.not8741052, label %.loopexit919, label %.lr.ph1055.preheader

.lr.ph1055.preheader:                             ; preds = %431
  %432 = zext i32 %296 to i64
  %433 = add i32 %297, 1
  %434 = sub i32 %297, %296
  %435 = zext i32 %434 to i64
  %436 = add nuw nsw i64 %435, 1
  %min.iters.check1444 = icmp ult i32 %434, 7
  br i1 %min.iters.check1444, label %.lr.ph1055.preheader1531, label %vector.scevcheck1440

vector.scevcheck1440:                             ; preds = %.lr.ph1055.preheader
  %437 = add i32 %273, %296
  %438 = add i32 %273, %297
  %439 = icmp slt i32 %438, %437
  %or.cond1528 = or i1 %439, %diff.check
  br i1 %or.cond1528, label %.lr.ph1055.preheader1531, label %vector.ph1445

vector.ph1445:                                    ; preds = %vector.scevcheck1440
  %n.vec1447 = and i64 %436, 8589934588
  %ind.end1448 = add nuw nsw i64 %n.vec1447, %432
  %broadcast.splatinsert1455 = insertelement <2 x double> poison, double %.2807, i64 0
  %broadcast.splat1456 = shufflevector <2 x double> %broadcast.splatinsert1455, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1450

vector.body1450:                                  ; preds = %vector.body1450, %vector.ph1445
  %index1451 = phi i64 [ 0, %vector.ph1445 ], [ %index.next1457, %vector.body1450 ]
  %440 = trunc i64 %index1451 to i32
  %441 = add i32 %296, %440
  %442 = add i32 %156, %441
  %443 = sext i32 %442 to i64
  %444 = getelementptr inbounds double, ptr %68, i64 %443
  %445 = getelementptr inbounds i8, ptr %444, i64 16
  %wide.load1453 = load <2 x double>, ptr %444, align 8, !tbaa !9
  %wide.load1454 = load <2 x double>, ptr %445, align 8, !tbaa !9
  %446 = fadd <2 x double> %broadcast.splat1456, %wide.load1453
  %447 = fadd <2 x double> %broadcast.splat1456, %wide.load1454
  %448 = getelementptr inbounds double, ptr %58, i64 %443
  %449 = getelementptr inbounds i8, ptr %448, i64 16
  store <2 x double> %446, ptr %448, align 8, !tbaa !9
  store <2 x double> %447, ptr %449, align 8, !tbaa !9
  %index.next1457 = add nuw i64 %index1451, 4
  %450 = icmp eq i64 %index.next1457, %n.vec1447
  br i1 %450, label %middle.block1442, label %vector.body1450, !llvm.loop !33

middle.block1442:                                 ; preds = %vector.body1450
  %cmp.n1458 = icmp eq i64 %436, %n.vec1447
  br i1 %cmp.n1458, label %.loopexit919, label %.lr.ph1055.preheader1531

.lr.ph1055.preheader1531:                         ; preds = %middle.block1442, %vector.scevcheck1440, %.lr.ph1055.preheader
  %indvars.iv1199.ph = phi i64 [ %432, %vector.scevcheck1440 ], [ %432, %.lr.ph1055.preheader ], [ %ind.end1448, %middle.block1442 ]
  %451 = trunc i64 %indvars.iv1199.ph to i32
  %452 = add i32 %297, %451
  %453 = and i32 %452, 1
  %lcmp.mod1556.not.not = icmp eq i32 %453, 0
  br i1 %lcmp.mod1556.not.not, label %.lr.ph1055.prol, label %.lr.ph1055.prol.loopexit

.lr.ph1055.prol:                                  ; preds = %.lr.ph1055.preheader1531
  %454 = trunc i64 %indvars.iv1199.ph to i32
  %455 = add i32 %156, %454
  %456 = sext i32 %455 to i64
  %457 = getelementptr inbounds double, ptr %68, i64 %456
  %458 = load double, ptr %457, align 8, !tbaa !9
  %459 = fadd double %.2807, %458
  %460 = getelementptr inbounds double, ptr %58, i64 %456
  store double %459, ptr %460, align 8, !tbaa !9
  %indvars.iv.next1200.prol = add nsw i64 %indvars.iv1199.ph, 1
  br label %.lr.ph1055.prol.loopexit

.lr.ph1055.prol.loopexit:                         ; preds = %.lr.ph1055.prol, %.lr.ph1055.preheader1531
  %indvars.iv1199.unr = phi i64 [ %indvars.iv1199.ph, %.lr.ph1055.preheader1531 ], [ %indvars.iv.next1200.prol, %.lr.ph1055.prol ]
  %461 = icmp eq i32 %297, %451
  br i1 %461, label %.loopexit919, label %.lr.ph1055

.lr.ph1055:                                       ; preds = %.lr.ph1055.prol.loopexit, %.lr.ph1055
  %indvars.iv1199 = phi i64 [ %indvars.iv.next1200.1, %.lr.ph1055 ], [ %indvars.iv1199.unr, %.lr.ph1055.prol.loopexit ]
  %462 = trunc i64 %indvars.iv1199 to i32
  %463 = add i32 %156, %462
  %464 = sext i32 %463 to i64
  %465 = getelementptr inbounds double, ptr %68, i64 %464
  %466 = load double, ptr %465, align 8, !tbaa !9
  %467 = fadd double %.2807, %466
  %468 = getelementptr inbounds double, ptr %58, i64 %464
  store double %467, ptr %468, align 8, !tbaa !9
  %469 = trunc i64 %indvars.iv1199 to i32
  %470 = add i32 %.07711146, %469
  %471 = sext i32 %470 to i64
  %472 = getelementptr inbounds double, ptr %68, i64 %471
  %473 = load double, ptr %472, align 8, !tbaa !9
  %474 = fadd double %.2807, %473
  %475 = getelementptr inbounds double, ptr %58, i64 %471
  store double %474, ptr %475, align 8, !tbaa !9
  %indvars.iv.next1200.1 = add nuw nsw i64 %indvars.iv1199, 2
  %lftr.wideiv.1 = trunc i64 %indvars.iv.next1200.1 to i32
  %exitcond1202.not.1 = icmp eq i32 %433, %lftr.wideiv.1
  br i1 %exitcond1202.not.1, label %.loopexit919, label %.lr.ph1055, !llvm.loop !34

.loopexit919:                                     ; preds = %.lr.ph1055.prol.loopexit, %.lr.ph1055, %middle.block1442, %431, %._crit_edge1051
  store i32 %296, ptr %48, align 4, !tbaa !5
  %.not8751085 = icmp sgt i32 %296, %297
  br i1 %.not8751085, label %._crit_edge1095, label %.lr.ph1094.preheader

.lr.ph1094.preheader:                             ; preds = %.loopexit919
  %476 = sext i32 %296 to i64
  %sext = sext i32 %297 to i64
  %477 = add i32 %297, 1
  br label %.lr.ph1094

.lr.ph1094:                                       ; preds = %.lr.ph1094.preheader, %913
  %.val = phi i32 [ %296, %.lr.ph1094.preheader ], [ %914, %913 ]
  %indvars.iv1224 = phi i64 [ %476, %.lr.ph1094.preheader ], [ %indvars.iv.next1225.pre-phi, %913 ]
  %.31092 = phi double [ %.21112, %.lr.ph1094.preheader ], [ %.8, %913 ]
  %.27971089 = phi i32 [ %.17961109, %.lr.ph1094.preheader ], [ %.4799, %913 ]
  %.28101088 = phi i32 [ %.18091107, %.lr.ph1094.preheader ], [ %.4812, %913 ]
  %.38161087 = phi double [ %.28151106, %.lr.ph1094.preheader ], [ %.8821, %913 ]
  %478 = icmp eq i64 %indvars.iv1224, %sext
  %.pre1248 = trunc nsw i64 %indvars.iv1224 to i32
  br i1 %478, label %.lr.ph1094._crit_edge, label %479

479:                                              ; preds = %.lr.ph1094
  %480 = add i32 %156, %.pre1248
  %481 = sext i32 %480 to i64
  %482 = getelementptr inbounds double, ptr %60, i64 %481
  %483 = load double, ptr %482, align 8, !tbaa !9
  %484 = load double, ptr %10, align 8, !tbaa !9
  %485 = getelementptr inbounds double, ptr %68, i64 %481
  %486 = load double, ptr %485, align 8, !tbaa !9
  store double %486, ptr %29, align 8, !tbaa !9
  %487 = fcmp oge double %486, 0.000000e+00
  %488 = fneg double %486
  %489 = select i1 %487, double %486, double %488
  %490 = fmul double %484, %489
  %491 = fcmp ult double %483, %490
  br i1 %491, label %._crit_edge1247, label %.lr.ph1094._crit_edge

._crit_edge1247:                                  ; preds = %479
  %.pre1250 = add nsw i64 %indvars.iv1224, 1
  %.pre1251 = trunc i64 %.pre1250 to i32
  br label %913

.lr.ph1094._crit_edge:                            ; preds = %.lr.ph1094, %479
  store i32 %.pre1248, ptr %49, align 4, !tbaa !5
  %492 = load i32, ptr %8, align 4, !tbaa !5
  %493 = icmp eq i32 %492, 1
  br i1 %493, label %494, label %500

494:                                              ; preds = %.lr.ph1094._crit_edge
  %495 = load i32, ptr %9, align 4, !tbaa !5
  %496 = load i32, ptr %7, align 4, !tbaa !5
  %497 = icmp eq i32 %495, %496
  br i1 %497, label %498, label %500

498:                                              ; preds = %494
  %499 = add i32 %156, %.val
  br label %507

500:                                              ; preds = %494, %.lr.ph1094._crit_edge
  %501 = add nsw i32 %.val, %.07711146
  %.not876 = icmp sgt i32 %501, %492
  br i1 %.not876, label %504, label %502

502:                                              ; preds = %500
  %503 = add nsw i32 %492, -1
  br label %507

504:                                              ; preds = %500
  %505 = add nsw i32 %501, -1
  %506 = load i32, ptr %9, align 4, !tbaa !5
  %.899 = call i32 @llvm.smin.i32(i32 %505, i32 %506)
  br label %507

507:                                              ; preds = %504, %502, %498
  %.0755 = phi i32 [ %499, %498 ], [ %503, %502 ], [ %.899, %504 ]
  %508 = sext i32 %.val to i64
  %509 = icmp sgt i64 %indvars.iv1224, %508
  br i1 %509, label %510, label %699

510:                                              ; preds = %507
  %511 = icmp eq i32 %.val, 1
  br i1 %511, label %512, label %520

512:                                              ; preds = %510
  store double 0.000000e+00, ptr %29, align 8, !tbaa !9
  %513 = load double, ptr %245, align 8, !tbaa !9
  %514 = load double, ptr %265, align 8, !tbaa !9
  %515 = fsub double %513, %514
  %516 = load double, ptr %1, align 8, !tbaa !9
  %517 = fsub double %515, %516
  %518 = fcmp ole double %517, 0.000000e+00
  %519 = select i1 %518, double 0.000000e+00, double %517
  br label %524

520:                                              ; preds = %510
  %521 = add nsw i32 %.val, %.07711146
  %522 = sext i32 %521 to i64
  %gep1080 = getelementptr double, ptr %invariant.gep1079, i64 %522
  %523 = load double, ptr %gep1080, align 8, !tbaa !9
  br label %524

524:                                              ; preds = %520, %512
  %storemerge891 = phi double [ %523, %520 ], [ %519, %512 ]
  store double %storemerge891, ptr %31, align 8, !tbaa !9
  %gep1296 = getelementptr double, ptr %invariant.gep1295, i64 %indvars.iv1224
  %525 = load double, ptr %gep1296, align 8, !tbaa !9
  store double %525, ptr %32, align 8, !tbaa !9
  %.pn.in = add nsw i32 %.val, %156
  %.pn = sext i32 %.pn.in to i64
  %storemerge895.in = getelementptr inbounds i32, ptr %62, i64 %.pn
  %storemerge895 = load i32, ptr %storemerge895.in, align 4, !tbaa !5
  store i32 %storemerge895, ptr %34, align 4, !tbaa !5
  %526 = load i32, ptr %259, align 4, !tbaa !5
  %527 = add nsw i32 %526, -1
  store i32 %527, ptr %46, align 4, !tbaa !5
  call void @dlarrb_(ptr noundef nonnull %41, ptr noundef nonnull %261, ptr noundef %gep1103, ptr noundef nonnull %34, ptr noundef nonnull %34, ptr noundef nonnull %38, ptr noundef nonnull %38, ptr noundef nonnull %46, ptr noundef nonnull %246, ptr noundef nonnull %264, ptr noundef nonnull %265, ptr noundef nonnull %118, ptr noundef nonnull %120, ptr noundef %5, ptr noundef nonnull %45, ptr noundef nonnull %41, ptr noundef nonnull %36) #7
  %.val916.1 = load i32, ptr %49, align 4
  %.pn.in.1 = add nsw i32 %.val916.1, %156
  %.pn.1 = sext i32 %.pn.in.1 to i64
  %storemerge895.in.1 = getelementptr inbounds i32, ptr %62, i64 %.pn.1
  %storemerge895.1 = load i32, ptr %storemerge895.in.1, align 4, !tbaa !5
  store i32 %storemerge895.1, ptr %34, align 4, !tbaa !5
  %528 = load i32, ptr %259, align 4, !tbaa !5
  %529 = add nsw i32 %528, -1
  store i32 %529, ptr %46, align 4, !tbaa !5
  call void @dlarrb_(ptr noundef nonnull %41, ptr noundef nonnull %261, ptr noundef %gep1103, ptr noundef nonnull %34, ptr noundef nonnull %34, ptr noundef nonnull %38, ptr noundef nonnull %38, ptr noundef nonnull %46, ptr noundef nonnull %246, ptr noundef nonnull %264, ptr noundef nonnull %265, ptr noundef nonnull %118, ptr noundef nonnull %120, ptr noundef %5, ptr noundef nonnull %45, ptr noundef nonnull %41, ptr noundef nonnull %36) #7
  %530 = load i32, ptr %49, align 4, !tbaa !5
  %531 = add nsw i32 %530, %.07711146
  %532 = load i32, ptr %8, align 4, !tbaa !5
  %.not892 = icmp sgt i32 %531, %532
  %.pre1243 = load i32, ptr %48, align 4, !tbaa !5
  br i1 %.not892, label %533, label %537

533:                                              ; preds = %524
  %534 = add i32 %156, %.pre1243
  %535 = load i32, ptr %9, align 4, !tbaa !5
  %536 = icmp sgt i32 %534, %535
  br i1 %536, label %537, label %541

537:                                              ; preds = %533, %524
  %538 = add i32 %.28101088, 1
  %539 = add i32 %538, %530
  %540 = sub i32 %539, %.pre1243
  br label %910

541:                                              ; preds = %533
  call void @dlarrf_(ptr noundef nonnull %41, ptr noundef nonnull %261, ptr noundef nonnull %266, ptr noundef nonnull %269, ptr noundef nonnull %48, ptr noundef nonnull %49, ptr noundef nonnull %246, ptr noundef nonnull %264, ptr noundef nonnull %265, ptr noundef nonnull %45, ptr noundef nonnull %31, ptr noundef nonnull %32, ptr noundef %5, ptr noundef nonnull %53, ptr noundef nonnull %121, ptr noundef nonnull %123, ptr noundef nonnull %118, ptr noundef nonnull %36) #7
  %542 = load i32, ptr %41, align 4, !tbaa !5
  %.not893.not1068 = icmp sgt i32 %542, 1
  %543 = mul i32 %.0755, %64
  br i1 %.not893.not1068, label %.lr.ph1071, label %._crit_edge1072

.lr.ph1071:                                       ; preds = %541
  %544 = add i32 %.0755, 1
  %545 = mul i32 %544, %64
  %wide.trip.count1217 = zext nneg i32 %542 to i64
  %546 = add nsw i64 %wide.trip.count1217, -1
  %min.iters.check1424 = icmp ult i32 %542, 47
  br i1 %min.iters.check1424, label %scalar.ph1423.preheader, label %vector.scevcheck1327

vector.scevcheck1327:                             ; preds = %.lr.ph1071
  %547 = add nsw i64 %wide.trip.count1217, -2
  %548 = add i32 %.07761145, %543
  %549 = trunc i64 %547 to i32
  %550 = add i32 %548, %549
  %551 = icmp slt i32 %550, %548
  %552 = add i32 %.07761145, %545
  %553 = trunc i64 %547 to i32
  %554 = add i32 %552, %553
  %555 = icmp slt i32 %554, %552
  %556 = icmp ugt i64 %547, 4294967295
  %557 = or i1 %555, %556
  %558 = trunc i64 %547 to i32
  %559 = add i32 %130, %558
  %560 = icmp slt i32 %559, %130
  %561 = sext i32 %548 to i64
  %562 = shl nsw i64 %561, 4
  %scevgep1329 = getelementptr i8, ptr %scevgep1328, i64 %562
  %mul.result = shl nsw i64 %547, 4
  %563 = getelementptr i8, ptr %scevgep1329, i64 %mul.result
  %564 = icmp ult ptr %563, %scevgep1329
  %565 = sext i32 %552 to i64
  %566 = shl nsw i64 %565, 4
  %scevgep1331 = getelementptr i8, ptr %scevgep1330, i64 %566
  %mul.result1333 = shl nsw i64 %547, 4
  %567 = getelementptr i8, ptr %scevgep1331, i64 %mul.result1333
  %568 = icmp ult ptr %567, %scevgep1331
  %scevgep1336 = getelementptr i8, ptr %scevgep1335, i64 %566
  %mul.result1338 = shl nsw i64 %547, 4
  %569 = getelementptr i8, ptr %scevgep1336, i64 %mul.result1338
  %570 = icmp ult ptr %569, %scevgep1336
  %scevgep1341 = getelementptr i8, ptr %scevgep1340, i64 %562
  %mul.result1343 = shl nsw i64 %547, 4
  %571 = getelementptr i8, ptr %scevgep1341, i64 %mul.result1343
  %572 = icmp ult ptr %571, %scevgep1341
  %573 = or i1 %551, %557
  %574 = or i1 %560, %573
  %575 = or i1 %564, %574
  %576 = or i1 %568, %575
  %577 = or i1 %570, %576
  %578 = or i1 %572, %577
  br i1 %578, label %scalar.ph1423.preheader, label %vector.memcheck1345

vector.memcheck1345:                              ; preds = %vector.scevcheck1327
  %579 = add i32 %.07761145, %543
  %580 = sext i32 %579 to i64
  %581 = shl nsw i64 %580, 4
  %scevgep1347 = getelementptr i8, ptr %scevgep1346, i64 %581
  %582 = shl nuw nsw i64 %wide.trip.count1217, 4
  %583 = add nsw i64 %581, %582
  %scevgep1349 = getelementptr i8, ptr %scevgep1348, i64 %583
  %584 = add i32 %.07761145, %545
  %585 = sext i32 %584 to i64
  %586 = shl nsw i64 %585, 4
  %scevgep1351 = getelementptr i8, ptr %scevgep1350, i64 %586
  %587 = add nsw i64 %586, %582
  %scevgep1353 = getelementptr i8, ptr %scevgep1352, i64 %587
  %scevgep1355 = getelementptr i8, ptr %scevgep1354, i64 %581
  %scevgep1357 = getelementptr i8, ptr %scevgep1356, i64 %583
  %scevgep1359 = getelementptr i8, ptr %scevgep1358, i64 %586
  %scevgep1361 = getelementptr i8, ptr %scevgep1360, i64 %587
  %588 = shl nuw nsw i64 %wide.trip.count1217, 3
  %scevgep1364 = getelementptr i8, ptr %scevgep1363, i64 %588
  %scevgep1367 = getelementptr i8, ptr %scevgep1366, i64 %588
  %bound01368 = icmp ult ptr %scevgep1347, %scevgep1353
  %bound11369 = icmp ult ptr %scevgep1351, %scevgep1349
  %found.conflict1370 = and i1 %bound01368, %bound11369
  %bound01371 = icmp ult ptr %scevgep1347, %scevgep1357
  %bound11372 = icmp ult ptr %scevgep1355, %scevgep1349
  %found.conflict1373 = and i1 %bound01371, %bound11372
  %conflict.rdx = or i1 %found.conflict1370, %found.conflict1373
  %bound01374 = icmp ult ptr %scevgep1347, %scevgep1361
  %bound11375 = icmp ult ptr %scevgep1359, %scevgep1349
  %found.conflict1376 = and i1 %bound01374, %bound11375
  %conflict.rdx1377 = or i1 %conflict.rdx, %found.conflict1376
  %bound01378 = icmp ult ptr %scevgep1347, %scevgep1364
  %bound11379 = icmp ult ptr %scevgep1362, %scevgep1349
  %found.conflict1380 = and i1 %bound01378, %bound11379
  %conflict.rdx1381 = or i1 %conflict.rdx1377, %found.conflict1380
  %bound01382 = icmp ult ptr %scevgep1347, %scevgep1367
  %bound11383 = icmp ult ptr %scevgep1365, %scevgep1349
  %found.conflict1384 = and i1 %bound01382, %bound11383
  %conflict.rdx1385 = or i1 %conflict.rdx1381, %found.conflict1384
  %bound01386 = icmp ult ptr %scevgep1351, %scevgep1357
  %bound11387 = icmp ult ptr %scevgep1355, %scevgep1353
  %found.conflict1388 = and i1 %bound01386, %bound11387
  %conflict.rdx1389 = or i1 %conflict.rdx1385, %found.conflict1388
  %bound01390 = icmp ult ptr %scevgep1351, %scevgep1361
  %bound11391 = icmp ult ptr %scevgep1359, %scevgep1353
  %found.conflict1392 = and i1 %bound01390, %bound11391
  %conflict.rdx1393 = or i1 %conflict.rdx1389, %found.conflict1392
  %bound01394 = icmp ult ptr %scevgep1351, %scevgep1364
  %bound11395 = icmp ult ptr %scevgep1362, %scevgep1353
  %found.conflict1396 = and i1 %bound01394, %bound11395
  %conflict.rdx1397 = or i1 %conflict.rdx1393, %found.conflict1396
  %bound01398 = icmp ult ptr %scevgep1351, %scevgep1367
  %bound11399 = icmp ult ptr %scevgep1365, %scevgep1353
  %found.conflict1400 = and i1 %bound01398, %bound11399
  %conflict.rdx1401 = or i1 %conflict.rdx1397, %found.conflict1400
  %bound01402 = icmp ult ptr %scevgep1355, %scevgep1361
  %bound11403 = icmp ult ptr %scevgep1359, %scevgep1357
  %found.conflict1404 = and i1 %bound01402, %bound11403
  %conflict.rdx1405 = or i1 %conflict.rdx1401, %found.conflict1404
  %bound01406 = icmp ult ptr %scevgep1355, %scevgep1364
  %bound11407 = icmp ult ptr %scevgep1362, %scevgep1357
  %found.conflict1408 = and i1 %bound01406, %bound11407
  %conflict.rdx1409 = or i1 %conflict.rdx1405, %found.conflict1408
  %bound01410 = icmp ult ptr %scevgep1355, %scevgep1367
  %bound11411 = icmp ult ptr %scevgep1365, %scevgep1357
  %found.conflict1412 = and i1 %bound01410, %bound11411
  %conflict.rdx1413 = or i1 %conflict.rdx1409, %found.conflict1412
  %bound01414 = icmp ult ptr %scevgep1359, %scevgep1364
  %bound11415 = icmp ult ptr %scevgep1362, %scevgep1361
  %found.conflict1416 = and i1 %bound01414, %bound11415
  %conflict.rdx1417 = or i1 %conflict.rdx1413, %found.conflict1416
  %bound01418 = icmp ult ptr %scevgep1359, %scevgep1367
  %bound11419 = icmp ult ptr %scevgep1365, %scevgep1361
  %found.conflict1420 = and i1 %bound01418, %bound11419
  %conflict.rdx1421 = or i1 %conflict.rdx1417, %found.conflict1420
  br i1 %conflict.rdx1421, label %scalar.ph1423.preheader, label %vector.ph1425

vector.ph1425:                                    ; preds = %vector.memcheck1345
  %n.vec1427 = and i64 %546, -2
  %ind.end1428 = or i64 %546, 1
  br label %vector.body1430

vector.body1430:                                  ; preds = %vector.body1430, %vector.ph1425
  %index1431 = phi i64 [ 0, %vector.ph1425 ], [ %index.next1438, %vector.body1430 ]
  %offset.idx1432 = or disjoint i64 %index1431, 1
  %589 = trunc i64 %index1431 to i32
  %590 = or disjoint i32 %589, 1
  %591 = trunc i64 %index1431 to i32
  %592 = or disjoint i32 %591, 1
  %593 = add i32 %224, %590
  %594 = add nsw i32 %593, %543
  %595 = add i32 %77, %592
  %596 = sext i32 %595 to i64
  %597 = getelementptr inbounds double, ptr %68, i64 %596
  %wide.load1435 = load <2 x double>, ptr %597, align 8, !tbaa !9, !alias.scope !35
  %598 = sext i32 %594 to i64
  %599 = getelementptr inbounds %struct.doublecomplex, ptr %66, i64 %598
  %interleaved.vec = shufflevector <2 x double> %wide.load1435, <2 x double> zeroinitializer, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec, ptr %599, align 8, !tbaa !9
  %600 = add nsw i32 %593, %545
  %601 = getelementptr double, ptr %invariant.gep1293, i64 %offset.idx1432
  %wide.load1436 = load <2 x double>, ptr %601, align 8, !tbaa !9, !alias.scope !38
  %602 = sext i32 %600 to i64
  %603 = getelementptr inbounds %struct.doublecomplex, ptr %66, i64 %602
  %interleaved.vec1437 = shufflevector <2 x double> %wide.load1436, <2 x double> zeroinitializer, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec1437, ptr %603, align 8, !tbaa !9
  %index.next1438 = add nuw i64 %index1431, 2
  %604 = icmp eq i64 %index.next1438, %n.vec1427
  br i1 %604, label %middle.block1422, label %vector.body1430, !llvm.loop !40

middle.block1422:                                 ; preds = %vector.body1430
  %cmp.n1439 = icmp eq i64 %546, %n.vec1427
  br i1 %cmp.n1439, label %._crit_edge1072, label %scalar.ph1423.preheader

scalar.ph1423.preheader:                          ; preds = %middle.block1422, %vector.memcheck1345, %vector.scevcheck1327, %.lr.ph1071
  %indvars.iv1214.ph = phi i64 [ 1, %vector.memcheck1345 ], [ 1, %vector.scevcheck1327 ], [ 1, %.lr.ph1071 ], [ %ind.end1428, %middle.block1422 ]
  br label %scalar.ph1423

scalar.ph1423:                                    ; preds = %scalar.ph1423.preheader, %scalar.ph1423
  %indvars.iv1214 = phi i64 [ %indvars.iv.next1215, %scalar.ph1423 ], [ %indvars.iv1214.ph, %scalar.ph1423.preheader ]
  %605 = trunc nuw nsw i64 %indvars.iv1214 to i32
  %606 = add i32 %224, %605
  %607 = add nsw i32 %606, %543
  %608 = trunc i64 %indvars.iv1214 to i32
  %609 = add i32 %77, %608
  %610 = sext i32 %609 to i64
  %611 = getelementptr inbounds double, ptr %68, i64 %610
  %612 = load double, ptr %611, align 8, !tbaa !9
  %613 = sext i32 %607 to i64
  %614 = getelementptr inbounds %struct.doublecomplex, ptr %66, i64 %613
  store double %612, ptr %614, align 8, !tbaa !17
  %615 = getelementptr inbounds i8, ptr %614, i64 8
  store double 0.000000e+00, ptr %615, align 8, !tbaa !41
  %616 = add nsw i32 %606, %545
  %gep1294 = getelementptr double, ptr %invariant.gep1293, i64 %indvars.iv1214
  %617 = load double, ptr %gep1294, align 8, !tbaa !9
  %618 = sext i32 %616 to i64
  %619 = getelementptr inbounds %struct.doublecomplex, ptr %66, i64 %618
  store double %617, ptr %619, align 8, !tbaa !17
  %620 = getelementptr inbounds i8, ptr %619, i64 8
  store double 0.000000e+00, ptr %620, align 8, !tbaa !41
  %indvars.iv.next1215 = add nuw nsw i64 %indvars.iv1214, 1
  %exitcond1218.not = icmp eq i64 %indvars.iv.next1215, %wide.trip.count1217
  br i1 %exitcond1218.not, label %._crit_edge1072, label %scalar.ph1423, !llvm.loop !42

._crit_edge1072:                                  ; preds = %scalar.ph1423, %middle.block1422, %541
  %621 = add nsw i32 %543, %152
  %622 = add i32 %542, %77
  %623 = sext i32 %622 to i64
  %624 = getelementptr inbounds double, ptr %68, i64 %623
  %625 = load double, ptr %624, align 8, !tbaa !9
  %626 = sext i32 %621 to i64
  %627 = getelementptr inbounds %struct.doublecomplex, ptr %66, i64 %626
  store double %625, ptr %627, align 8, !tbaa !17
  %628 = getelementptr inbounds %struct.doublecomplex, ptr %66, i64 %626, i32 1
  store double 0.000000e+00, ptr %628, align 8, !tbaa !41
  %629 = load i32, ptr %36, align 4, !tbaa !5
  %630 = icmp eq i32 %629, 0
  br i1 %630, label %631, label %.loopexit920.sink.split

631:                                              ; preds = %._crit_edge1072
  %632 = load double, ptr %53, align 8, !tbaa !9
  %633 = fadd double %.2807, %632
  %634 = add nsw i32 %.0755, 1
  %635 = mul nsw i32 %634, %64
  %636 = add nsw i32 %635, %152
  %637 = sext i32 %636 to i64
  %638 = getelementptr inbounds %struct.doublecomplex, ptr %66, i64 %637
  store double %633, ptr %638, align 8, !tbaa !17
  %639 = getelementptr inbounds %struct.doublecomplex, ptr %66, i64 %637, i32 1
  store double 0.000000e+00, ptr %639, align 8, !tbaa !41
  %640 = load i32, ptr %49, align 4, !tbaa !5
  store i32 %640, ptr %28, align 4, !tbaa !5
  %641 = load i32, ptr %48, align 4, !tbaa !5
  %.not8941073 = icmp sgt i32 %641, %640
  br i1 %.not8941073, label %692, label %.lr.ph1076.preheader

.lr.ph1076.preheader:                             ; preds = %631
  %642 = zext i32 %641 to i64
  %643 = add i32 %640, 1
  %644 = sub i32 %640, %641
  %645 = zext i32 %644 to i64
  %646 = add nuw nsw i64 %645, 1
  %min.iters.check = icmp ult i32 %644, 3
  br i1 %min.iters.check, label %.lr.ph1076.preheader1529, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %.lr.ph1076.preheader
  %647 = add i32 %271, %641
  %648 = add i32 %271, %640
  %649 = icmp slt i32 %648, %647
  br i1 %649, label %.lr.ph1076.preheader1529, label %vector.memcheck

vector.memcheck:                                  ; preds = %vector.scevcheck
  %650 = add i32 %272, %641
  %651 = sext i32 %650 to i64
  %652 = shl nsw i64 %651, 3
  %scevgep1317 = getelementptr i8, ptr %scevgep1316, i64 %652
  %653 = sub i32 %640, %641
  %654 = zext i32 %653 to i64
  %655 = add nsw i64 %651, %654
  %656 = shl nsw i64 %655, 3
  %scevgep1318 = getelementptr i8, ptr %22, i64 %656
  %scevgep1320 = getelementptr i8, ptr %scevgep1319, i64 %652
  %scevgep1321 = getelementptr i8, ptr %14, i64 %656
  %bound0 = icmp ult ptr %scevgep1317, %scevgep1321
  %bound1 = icmp ult ptr %scevgep1320, %scevgep1318
  %found.conflict = and i1 %bound0, %bound1
  br i1 %found.conflict, label %.lr.ph1076.preheader1529, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %646, 8589934590
  %ind.end = add nuw nsw i64 %n.vec, %642
  %broadcast.splatinsert1322 = insertelement <2 x double> poison, double %632, i64 0
  %broadcast.splat1323 = shufflevector <2 x double> %broadcast.splatinsert1322, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %657 = trunc i64 %index to i32
  %658 = add i32 %641, %657
  %659 = add i32 %156, %658
  %660 = sext i32 %659 to i64
  %661 = getelementptr inbounds double, ptr %68, i64 %660
  %wide.load = load <2 x double>, ptr %661, align 8, !tbaa !9, !alias.scope !43, !noalias !46
  %662 = fcmp oge <2 x double> %wide.load, zeroinitializer
  %663 = fneg <2 x double> %wide.load
  %664 = select <2 x i1> %662, <2 x double> %wide.load, <2 x double> %663
  %665 = fmul <2 x double> %broadcast.splat, %664
  %666 = fsub <2 x double> %wide.load, %broadcast.splat1323
  store <2 x double> %666, ptr %661, align 8, !tbaa !9, !alias.scope !43, !noalias !46
  %667 = fcmp oge <2 x double> %666, zeroinitializer
  %668 = fneg <2 x double> %666
  %669 = select <2 x i1> %667, <2 x double> %666, <2 x double> %668
  %670 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat1325, <2 x double> %669, <2 x double> %665)
  %671 = getelementptr inbounds double, ptr %59, i64 %660
  %wide.load1326 = load <2 x double>, ptr %671, align 8, !tbaa !9, !alias.scope !46
  %672 = fadd <2 x double> %wide.load1326, %670
  store <2 x double> %672, ptr %671, align 8, !tbaa !9, !alias.scope !46
  %index.next = add nuw i64 %index, 2
  %673 = icmp eq i64 %index.next, %n.vec
  br i1 %673, label %middle.block, label %vector.body, !llvm.loop !48

middle.block:                                     ; preds = %vector.body
  %674 = extractelement <2 x double> %666, i64 1
  %cmp.n = icmp eq i64 %646, %n.vec
  br i1 %cmp.n, label %._crit_edge1077, label %.lr.ph1076.preheader1529

.lr.ph1076.preheader1529:                         ; preds = %middle.block, %vector.memcheck, %vector.scevcheck, %.lr.ph1076.preheader
  %indvars.iv1219.ph = phi i64 [ %642, %vector.memcheck ], [ %642, %vector.scevcheck ], [ %642, %.lr.ph1076.preheader ], [ %ind.end, %middle.block ]
  br label %.lr.ph1076

.lr.ph1076:                                       ; preds = %.lr.ph1076.preheader1529, %.lr.ph1076
  %indvars.iv1219 = phi i64 [ %indvars.iv.next1220, %.lr.ph1076 ], [ %indvars.iv1219.ph, %.lr.ph1076.preheader1529 ]
  %675 = trunc i64 %indvars.iv1219 to i32
  %676 = add i32 %156, %675
  %677 = sext i32 %676 to i64
  %678 = getelementptr inbounds double, ptr %68, i64 %677
  %679 = load double, ptr %678, align 8, !tbaa !9
  %680 = fcmp oge double %679, 0.000000e+00
  %681 = fneg double %679
  %682 = select i1 %680, double %679, double %681
  %683 = fmul double %124, %682
  %684 = fsub double %679, %632
  store double %684, ptr %678, align 8, !tbaa !9
  %685 = fcmp oge double %684, 0.000000e+00
  %686 = fneg double %684
  %687 = select i1 %685, double %684, double %686
  %688 = call double @llvm.fmuladd.f64(double %125, double %687, double %683)
  %689 = getelementptr inbounds double, ptr %59, i64 %677
  %690 = load double, ptr %689, align 8, !tbaa !9
  %691 = fadd double %690, %688
  store double %691, ptr %689, align 8, !tbaa !9
  %indvars.iv.next1220 = add i64 %indvars.iv1219, 1
  %lftr.wideiv1222 = trunc i64 %indvars.iv.next1220 to i32
  %exitcond1223.not = icmp eq i32 %643, %lftr.wideiv1222
  br i1 %exitcond1223.not, label %._crit_edge1077, label %.lr.ph1076, !llvm.loop !49

._crit_edge1077:                                  ; preds = %.lr.ph1076, %middle.block
  %.lcssa1312 = phi double [ %674, %middle.block ], [ %684, %.lr.ph1076 ]
  store double %.lcssa1312, ptr %29, align 8, !tbaa !9
  br label %692

692:                                              ; preds = %._crit_edge1077, %631
  %693 = add nsw i32 %.27971089, 1
  %694 = shl i32 %693, 1
  %695 = add nsw i32 %694, %.897
  %696 = sext i32 %695 to i64
  %697 = getelementptr i32, ptr %69, i64 %696
  %698 = getelementptr i8, ptr %697, i64 -4
  store i32 %641, ptr %698, align 4, !tbaa !5
  store i32 %640, ptr %697, align 4, !tbaa !5
  br label %910

699:                                              ; preds = %507
  %700 = load i32, ptr %41, align 4, !tbaa !5
  %701 = sitofp i32 %700 to double
  %702 = call double @log(double noundef %701) #7
  %703 = fmul double %702, 4.000000e+00
  %704 = fmul double %99, %703
  %705 = load i32, ptr %48, align 4, !tbaa !5
  %706 = add nsw i32 %705, %.07711146
  %707 = add nsw i32 %706, -1
  %708 = add nsw i32 %706, -2
  %709 = icmp sgt i32 %706, 2
  %710 = select i1 %709, i32 %708, i32 1
  store i32 %706, ptr %28, align 4, !tbaa !5
  %711 = load i32, ptr %7, align 4, !tbaa !5
  %.901 = call i32 @llvm.smin.i32(i32 %706, i32 %711)
  %712 = sext i32 %707 to i64
  %713 = getelementptr inbounds double, ptr %68, i64 %712
  %714 = load double, ptr %713, align 8, !tbaa !9
  store double %714, ptr %39, align 8, !tbaa !9
  %715 = load i32, ptr %8, align 4, !tbaa !5
  %.not878 = icmp sgt i32 %706, %715
  br i1 %.not878, label %716, label %.thread

716:                                              ; preds = %699
  %717 = load i32, ptr %9, align 4, !tbaa !5
  %718 = icmp sgt i32 %707, %717
  br i1 %718, label %.thread, label %719

719:                                              ; preds = %716
  %720 = getelementptr inbounds double, ptr %59, i64 %712
  %721 = load double, ptr %720, align 8, !tbaa !9
  %722 = fsub double %714, %721
  %723 = fadd double %714, %721
  %724 = getelementptr inbounds i32, ptr %62, i64 %712
  %725 = load i32, ptr %724, align 4, !tbaa !5
  store i32 %725, ptr %42, align 4, !tbaa !5
  %726 = icmp eq i32 %705, 1
  br i1 %726, label %727, label %738

727:                                              ; preds = %719
  %728 = insertelement <2 x double> poison, double %722, i64 0
  %729 = insertelement <2 x double> %728, double %723, i64 1
  %730 = fcmp oge <2 x double> %729, zeroinitializer
  %731 = fneg <2 x double> %729
  %732 = select <2 x i1> %730, <2 x double> %729, <2 x double> %731
  %733 = extractelement <2 x double> %732, i64 0
  store double %733, ptr %29, align 8, !tbaa !9
  %734 = extractelement <2 x double> %732, i64 1
  %735 = fcmp oge double %733, %734
  %736 = select i1 %735, double %733, double %734
  %737 = fmul double %99, %736
  br label %742

738:                                              ; preds = %719
  %739 = sext i32 %710 to i64
  %740 = getelementptr inbounds double, ptr %60, i64 %739
  %741 = load double, ptr %740, align 8, !tbaa !9
  br label %742

742:                                              ; preds = %738, %727
  %storemerge = phi double [ %741, %738 ], [ %737, %727 ]
  store double %storemerge, ptr %31, align 8, !tbaa !9
  %743 = load i32, ptr %40, align 4
  %744 = icmp eq i32 %705, %743
  br i1 %744, label %745, label %756

745:                                              ; preds = %742
  %746 = insertelement <2 x double> poison, double %722, i64 0
  %747 = insertelement <2 x double> %746, double %723, i64 1
  %748 = fcmp oge <2 x double> %747, zeroinitializer
  %749 = fneg <2 x double> %747
  %750 = select <2 x i1> %748, <2 x double> %747, <2 x double> %749
  %751 = extractelement <2 x double> %750, i64 0
  store double %751, ptr %29, align 8, !tbaa !9
  %752 = extractelement <2 x double> %750, i64 1
  %753 = fcmp oge double %751, %752
  %754 = select i1 %753, double %751, double %752
  %755 = fmul double %99, %754
  %.phi.trans.insert = getelementptr inbounds double, ptr %60, i64 %712
  %.pre1240 = load double, ptr %.phi.trans.insert, align 8, !tbaa !9
  br label %759

756:                                              ; preds = %742
  %757 = getelementptr inbounds double, ptr %60, i64 %712
  %758 = load double, ptr %757, align 8, !tbaa !9
  br label %759

759:                                              ; preds = %756, %745
  %760 = phi double [ %758, %756 ], [ %.pre1240, %745 ]
  %storemerge879 = phi double [ %758, %756 ], [ %755, %745 ]
  store double %storemerge879, ptr %32, align 8, !tbaa !9
  %761 = fcmp ole double %storemerge, %storemerge879
  %762 = select i1 %761, double %storemerge, double %storemerge879
  %or.cond903 = or i1 %726, %744
  %763 = fmul double %99, %762
  %storemerge880 = select i1 %or.cond903, double 0.000000e+00, double %763
  store double %storemerge880, ptr %47, align 8, !tbaa !9
  %764 = load i32, ptr %41, align 4, !tbaa !5
  %765 = getelementptr inbounds double, ptr %60, i64 %712
  store double %762, ptr %765, align 8, !tbaa !9
  %766 = getelementptr inbounds i32, ptr %69, i64 %712
  %767 = mul i32 %707, %64
  %768 = add nsw i32 %767, %.07761145
  %769 = sext i32 %768 to i64
  %770 = getelementptr inbounds %struct.doublecomplex, ptr %66, i64 %769
  %771 = shl i32 %707, 1
  %772 = sext i32 %771 to i64
  %773 = getelementptr i32, ptr %67, i64 %772
  %774 = getelementptr i8, ptr %773, i64 -4
  %775 = fmul double %704, %762
  br label %.backedge

.backedge:                                        ; preds = %.backedge.backedge, %759
  %.4817 = phi double [ %.38161087, %759 ], [ %.5818, %.backedge.backedge ]
  %.0804 = phi i32 [ 0, %759 ], [ %.0804.be, %.backedge.backedge ]
  %.0800 = phi double [ %723, %759 ], [ %.2802, %.backedge.backedge ]
  %.0791 = phi double [ %722, %759 ], [ %.2793, %.backedge.backedge ]
  %.0774 = phi i32 [ 0, %759 ], [ %.0774.be, %.backedge.backedge ]
  %.0759 = phi i32 [ 0, %759 ], [ %.0759.be, %.backedge.backedge ]
  %.0756 = phi i32 [ 0, %759 ], [ %.1757, %.backedge.backedge ]
  %.0753 = phi i32 [ %764, %759 ], [ %797, %.backedge.backedge ]
  %.4 = phi double [ %.31092, %759 ], [ %.5, %.backedge.backedge ]
  %.0 = phi i32 [ 1, %759 ], [ %799, %.backedge.backedge ]
  %.not881 = icmp eq i32 %.0774, 0
  br i1 %.not881, label %783, label %776

776:                                              ; preds = %.backedge
  %777 = load i32, ptr %766, align 4, !tbaa !5
  store i32 %777, ptr %33, align 4, !tbaa !5
  %778 = load i32, ptr %259, align 4, !tbaa !5
  %779 = add nsw i32 %778, -1
  store i32 %779, ptr %46, align 4, !tbaa !5
  store double %100, ptr %29, align 8, !tbaa !9
  call void @dlarrb_(ptr noundef nonnull %41, ptr noundef nonnull %261, ptr noundef %gep1103, ptr noundef nonnull %42, ptr noundef nonnull %42, ptr noundef nonnull @c_b28, ptr noundef nonnull %29, ptr noundef nonnull %46, ptr noundef nonnull %246, ptr noundef nonnull %264, ptr noundef nonnull %265, ptr noundef nonnull %118, ptr noundef nonnull %120, ptr noundef %5, ptr noundef nonnull %45, ptr noundef nonnull %33, ptr noundef nonnull %36) #7
  %780 = load i32, ptr %36, align 4, !tbaa !5
  %.not882 = icmp eq i32 %780, 0
  br i1 %.not882, label %781, label %.loopexit920.sink.split

781:                                              ; preds = %776
  %782 = load double, ptr %713, align 8, !tbaa !9
  store double %782, ptr %39, align 8, !tbaa !9
  store i32 0, ptr %766, align 4, !tbaa !5
  br label %783

783:                                              ; preds = %781, %.backedge
  %.1760 = phi i32 [ 1, %781 ], [ %.0759, %.backedge ]
  %784 = icmp ne i32 %.1760, 0
  %785 = xor i1 %784, true
  %786 = zext i1 %785 to i32
  store i32 %786, ptr %30, align 4, !tbaa !5
  call void @zlar1v_(ptr noundef nonnull %41, ptr noundef nonnull @c__1, ptr noundef nonnull %41, ptr noundef nonnull %39, ptr noundef nonnull %261, ptr noundef nonnull %266, ptr noundef nonnull %269, ptr noundef %gep1103, ptr noundef %5, ptr noundef nonnull %47, ptr noundef %770, ptr noundef nonnull %30, ptr noundef nonnull %44, ptr noundef nonnull %54, ptr noundef nonnull %43, ptr noundef nonnull %766, ptr noundef %774, ptr noundef nonnull %51, ptr noundef nonnull %37, ptr noundef nonnull %52, ptr noundef nonnull %118) #7
  %787 = icmp eq i32 %.0804, 0
  %788 = load double, ptr %37, align 8
  br i1 %787, label %789, label %791

789:                                              ; preds = %783
  %790 = load double, ptr %39, align 8, !tbaa !9
  br label %795

791:                                              ; preds = %783
  %792 = fcmp olt double %788, %.4
  br i1 %792, label %793, label %795

793:                                              ; preds = %791
  %794 = load double, ptr %39, align 8, !tbaa !9
  br label %795

795:                                              ; preds = %791, %793, %789
  %.5818 = phi double [ %790, %789 ], [ %794, %793 ], [ %.4817, %791 ]
  %.5 = phi double [ %788, %789 ], [ %788, %793 ], [ %.4, %791 ]
  %796 = load i32, ptr %774, align 4, !tbaa !5
  %797 = call i32 @llvm.smin.i32(i32 %.0753, i32 %796)
  store i32 %.0, ptr %28, align 4, !tbaa !5
  %798 = load i32, ptr %773, align 4, !tbaa !5
  %799 = call i32 @llvm.smax.i32(i32 %.0, i32 %798)
  %800 = add nsw i32 %.0804, 1
  %801 = fcmp ogt double %788, %775
  br i1 %801, label %802, label %839

802:                                              ; preds = %795
  %803 = load double, ptr %52, align 8
  %804 = fcmp oge double %803, 0.000000e+00
  %805 = fneg double %803
  %806 = select i1 %804, double %803, double %805
  %807 = load double, ptr %38, align 8, !tbaa !9
  %808 = load double, ptr %39, align 8
  %809 = fcmp oge double %808, 0.000000e+00
  %810 = fneg double %808
  %811 = select i1 %809, double %808, double %810
  %812 = fmul double %807, %811
  %813 = fcmp ule double %806, %812
  %or.cond = or i1 %784, %813
  br i1 %or.cond, label %839, label %814

814:                                              ; preds = %802
  %815 = load i32, ptr %42, align 4, !tbaa !5
  %816 = load i32, ptr %44, align 4, !tbaa !5
  %.not885 = icmp sgt i32 %815, %816
  %817 = select i1 %.not885, double %803, double %805
  %818 = fcmp ult double %817, 0.000000e+00
  br i1 %818, label %828, label %819

819:                                              ; preds = %814
  %820 = fadd double %803, %808
  %821 = fcmp ugt double %820, %.0800
  %822 = fcmp ult double %820, %.0791
  %or.cond905 = select i1 %821, i1 true, i1 %822
  br i1 %or.cond905, label %828, label %823

823:                                              ; preds = %819
  %.0800. = select i1 %.not885, double %.0800, double %808
  %..0791 = select i1 %.not885, double %808, double %.0791
  %824 = fadd double %.0800., %..0791
  %825 = fmul double %824, 5.000000e-01
  store double %825, ptr %713, align 8, !tbaa !9
  store double %820, ptr %39, align 8, !tbaa !9
  %826 = fsub double %.0800., %..0791
  %827 = fmul double %826, 5.000000e-01
  store double %827, ptr %720, align 8, !tbaa !9
  %.pre1245 = fneg double %820
  br label %828

828:                                              ; preds = %814, %819, %823
  %.pre-phi = phi double [ %810, %814 ], [ %810, %819 ], [ %.pre1245, %823 ]
  %829 = phi double [ %808, %814 ], [ %808, %819 ], [ %820, %823 ]
  %.2802 = phi double [ %.0800, %814 ], [ %.0800, %819 ], [ %.0800., %823 ]
  %.2793 = phi double [ %.0791, %814 ], [ %.0791, %819 ], [ %..0791, %823 ]
  %.1775 = phi i32 [ 1, %814 ], [ 1, %819 ], [ %.0774, %823 ]
  %.1757 = phi i32 [ %.0756, %814 ], [ %.0756, %819 ], [ 1, %823 ]
  %830 = fsub double %.2802, %.2793
  %831 = fcmp oge double %829, 0.000000e+00
  %832 = select i1 %831, double %829, double %.pre-phi
  %833 = fmul double %807, %832
  %834 = fcmp olt double %830, %833
  br i1 %834, label %.backedge.backedge, label %835

835:                                              ; preds = %828
  %836 = icmp slt i32 %.0804, 9
  br i1 %836, label %.backedge.backedge, label %837

.backedge.backedge:                               ; preds = %835, %828, %837
  %.0804.be = phi i32 [ %800, %835 ], [ %800, %828 ], [ 10, %837 ]
  %.0774.be = phi i32 [ %.1775, %835 ], [ %.1775, %828 ], [ 1, %837 ]
  %.0759.be = phi i32 [ 0, %835 ], [ 1, %828 ], [ 0, %837 ]
  br label %.backedge

837:                                              ; preds = %835
  %838 = icmp eq i32 %800, 10
  br i1 %838, label %.backedge.backedge, label %.loopexit920.sink.split

839:                                              ; preds = %802, %795
  %840 = icmp ne i32 %.0756, 0
  %or.cond3 = and i1 %840, %784
  %841 = fcmp ole double %.5, %788
  %or.cond907.not = select i1 %or.cond3, i1 %841, i1 false
  br i1 %or.cond907.not, label %.critedge, label %842

.critedge:                                        ; preds = %839
  store double %.5818, ptr %39, align 8, !tbaa !9
  store i32 %786, ptr %30, align 4, !tbaa !5
  call void @zlar1v_(ptr noundef nonnull %41, ptr noundef nonnull @c__1, ptr noundef nonnull %41, ptr noundef nonnull %39, ptr noundef nonnull %261, ptr noundef nonnull %266, ptr noundef nonnull %269, ptr noundef %gep1103, ptr noundef %5, ptr noundef nonnull %47, ptr noundef %770, ptr noundef nonnull %30, ptr noundef nonnull %44, ptr noundef nonnull %54, ptr noundef nonnull %43, ptr noundef nonnull %766, ptr noundef nonnull %774, ptr noundef nonnull %51, ptr noundef nonnull %37, ptr noundef nonnull %52, ptr noundef nonnull %118) #7
  %.pre1241 = load i32, ptr %774, align 4, !tbaa !5
  %.pre1242 = load i32, ptr %773, align 4, !tbaa !5
  br label %842

842:                                              ; preds = %839, %.critedge
  %843 = phi i32 [ %798, %839 ], [ %.pre1242, %.critedge ]
  %844 = phi i32 [ %796, %839 ], [ %.pre1241, %.critedge ]
  %845 = load double, ptr %39, align 8, !tbaa !9
  store double %845, ptr %713, align 8, !tbaa !9
  %846 = add i32 %844, %224
  store i32 %846, ptr %774, align 4, !tbaa !5
  %847 = add nsw i32 %843, %224
  store i32 %847, ptr %773, align 4, !tbaa !5
  %848 = add nsw i32 %799, %224
  %849 = icmp slt i32 %797, %844
  br i1 %849, label %.loopexit918.loopexit, label %.loopexit918

.loopexit918.loopexit:                            ; preds = %842
  %850 = add i32 %224, %767
  %851 = add i32 %850, %797
  %852 = sext i32 %851 to i64
  %853 = shl nsw i64 %852, 4
  %scevgep1203 = getelementptr i8, ptr %scevgep, i64 %853
  %854 = add i32 %.07761145, %797
  %smax1204 = call i32 @llvm.smax.i32(i32 %846, i32 %854)
  %855 = sub i32 %smax1204, %854
  %856 = zext i32 %855 to i64
  %857 = shl nuw nsw i64 %856, 4
  %858 = add nuw nsw i64 %857, 16
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %scevgep1203, i8 0, i64 %858, i1 false), !tbaa !9
  br label %.loopexit918

.loopexit918:                                     ; preds = %.loopexit918.loopexit, %842
  %859 = icmp sgt i32 %799, %843
  br i1 %859, label %860, label %.loopexit

860:                                              ; preds = %.loopexit918
  %861 = add i32 %843, %.07761145
  %.not8881061 = icmp sgt i32 %861, %848
  br i1 %.not8881061, label %.loopexit, label %.lr.ph1064.preheader

.lr.ph1064.preheader:                             ; preds = %860
  %862 = add i32 %861, %767
  %863 = sext i32 %862 to i64
  %864 = shl nsw i64 %863, 4
  %scevgep1209 = getelementptr i8, ptr %scevgep, i64 %864
  %865 = xor i32 %843, -1
  %866 = add i32 %799, %865
  %867 = zext i32 %866 to i64
  %868 = shl nuw nsw i64 %867, 4
  %869 = add nuw nsw i64 %868, 16
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %scevgep1209, i8 0, i64 %869, i1 false), !tbaa !9
  br label %.loopexit

.thread:                                          ; preds = %716, %699
  %870 = fadd double %.2807, %714
  %871 = getelementptr inbounds double, ptr %58, i64 %712
  store double %870, ptr %871, align 8, !tbaa !9
  br label %908

.loopexit:                                        ; preds = %.lr.ph1064.preheader, %860, %.loopexit918
  %reass.sub1153 = sub i32 %843, %844
  %872 = add i32 %reass.sub1153, 1
  store i32 %872, ptr %28, align 4, !tbaa !5
  %873 = add nsw i32 %846, %767
  %874 = sext i32 %873 to i64
  %875 = getelementptr inbounds %struct.doublecomplex, ptr %66, i64 %874
  call void @zdscal_(ptr noundef nonnull %28, ptr noundef nonnull %51, ptr noundef %875, ptr noundef nonnull @c__1) #7
  %876 = load double, ptr %39, align 8, !tbaa !9
  %877 = fadd double %.2807, %876
  %878 = getelementptr inbounds double, ptr %58, i64 %712
  store double %877, ptr %878, align 8, !tbaa !9
  %879 = icmp sgt i32 %705, 1
  br i1 %879, label %880, label %894

880:                                              ; preds = %.loopexit
  %881 = sext i32 %710 to i64
  %882 = getelementptr inbounds double, ptr %60, i64 %881
  %883 = load double, ptr %882, align 8, !tbaa !9
  store double %883, ptr %29, align 8, !tbaa !9
  %884 = load double, ptr %720, align 8, !tbaa !9
  %885 = fsub double %877, %884
  %886 = getelementptr inbounds double, ptr %58, i64 %881
  %887 = load double, ptr %886, align 8, !tbaa !9
  %888 = fsub double %885, %887
  %889 = getelementptr inbounds double, ptr %59, i64 %881
  %890 = load double, ptr %889, align 8, !tbaa !9
  %891 = fsub double %888, %890
  %892 = fcmp oge double %883, %891
  %893 = select i1 %892, double %883, double %891
  store double %893, ptr %882, align 8, !tbaa !9
  br label %894

894:                                              ; preds = %880, %.loopexit
  %.not890 = icmp sgt i32 %706, %.0794.lcssa
  br i1 %.not890, label %908, label %895

895:                                              ; preds = %894
  store double %760, ptr %29, align 8, !tbaa !9
  %896 = sext i32 %.901 to i64
  %897 = getelementptr inbounds double, ptr %58, i64 %896
  %898 = load double, ptr %897, align 8, !tbaa !9
  %899 = getelementptr inbounds double, ptr %59, i64 %896
  %900 = load double, ptr %899, align 8, !tbaa !9
  %901 = fsub double %898, %900
  %902 = load double, ptr %878, align 8, !tbaa !9
  %903 = fsub double %901, %902
  %904 = load double, ptr %720, align 8, !tbaa !9
  %905 = fsub double %903, %904
  %906 = fcmp oge double %760, %905
  %907 = select i1 %906, double %760, double %905
  store double %907, ptr %765, align 8, !tbaa !9
  br label %908

908:                                              ; preds = %.thread, %894, %895
  %.6914 = phi double [ %.31092, %.thread ], [ %.5, %894 ], [ %.5, %895 ]
  %.6819912 = phi double [ %.38161087, %.thread ], [ %.5818, %894 ], [ %.5818, %895 ]
  %909 = add nsw i32 %.28101088, 1
  br label %910

910:                                              ; preds = %692, %908, %537
  %.7820 = phi double [ %.38161087, %537 ], [ %.38161087, %692 ], [ %.6819912, %908 ]
  %.3811 = phi i32 [ %540, %537 ], [ %.28101088, %692 ], [ %909, %908 ]
  %.3798 = phi i32 [ %.27971089, %537 ], [ %693, %692 ], [ %.27971089, %908 ]
  %.7 = phi double [ %.31092, %537 ], [ %.31092, %692 ], [ %.6914, %908 ]
  %911 = add nsw i64 %indvars.iv1224, 1
  %912 = trunc i64 %911 to i32
  store i32 %912, ptr %48, align 4, !tbaa !5
  br label %913

913:                                              ; preds = %._crit_edge1247, %910
  %lftr.wideiv1227.pre-phi = phi i32 [ %.pre1251, %._crit_edge1247 ], [ %912, %910 ]
  %indvars.iv.next1225.pre-phi = phi i64 [ %.pre1250, %._crit_edge1247 ], [ %911, %910 ]
  %914 = phi i32 [ %.val, %._crit_edge1247 ], [ %912, %910 ]
  %.8821 = phi double [ %.38161087, %._crit_edge1247 ], [ %.7820, %910 ]
  %.4812 = phi i32 [ %.28101088, %._crit_edge1247 ], [ %.3811, %910 ]
  %.4799 = phi i32 [ %.27971089, %._crit_edge1247 ], [ %.3798, %910 ]
  %.8 = phi double [ %.31092, %._crit_edge1247 ], [ %.7, %910 ]
  %exitcond1228.not = icmp eq i32 %lftr.wideiv1227.pre-phi, %477
  br i1 %exitcond1228.not, label %._crit_edge1095, label %.lr.ph1094, !llvm.loop !50

._crit_edge1095:                                  ; preds = %913, %.loopexit919
  %.3816.lcssa = phi double [ %.28151106, %.loopexit919 ], [ %.8821, %913 ]
  %.2810.lcssa = phi i32 [ %.18091107, %.loopexit919 ], [ %.4812, %913 ]
  %.2797.lcssa = phi i32 [ %.17961109, %.loopexit919 ], [ %.4799, %913 ]
  %.3.lcssa = phi double [ %.21112, %.loopexit919 ], [ %.8, %913 ]
  %indvars.iv.next1230 = add nuw nsw i64 %indvars.iv1229, 1
  %exitcond1233.not = icmp eq i64 %indvars.iv.next1230, %wide.trip.count1232
  br i1 %exitcond1233.not, label %._crit_edge1115.loopexit, label %290, !llvm.loop !51

._crit_edge1115.loopexit:                         ; preds = %._crit_edge1095
  %.pre1244 = load i32, ptr %40, align 4, !tbaa !5
  br label %._crit_edge1115

._crit_edge1115:                                  ; preds = %._crit_edge1115.loopexit, %286
  %915 = phi i32 [ %283, %286 ], [ %.pre1244, %._crit_edge1115.loopexit ]
  %.2815.lcssa = phi double [ %.18141123, %286 ], [ %.3816.lcssa, %._crit_edge1115.loopexit ]
  %.1809.lcssa = phi i32 [ %.08081124, %286 ], [ %.2810.lcssa, %._crit_edge1115.loopexit ]
  %.1806.lcssa = phi double [ %.08051125, %286 ], [ %.2807, %._crit_edge1115.loopexit ]
  %.1796.lcssa = phi i32 [ 0, %286 ], [ %.2797.lcssa, %._crit_edge1115.loopexit ]
  %.2.lcssa = phi double [ %.11131, %286 ], [ %.3.lcssa, %._crit_edge1115.loopexit ]
  %916 = add nuw nsw i32 %.07611129, 1
  %917 = icmp slt i32 %.1809.lcssa, %915
  br i1 %917, label %282, label %._crit_edge1134

._crit_edge1134:                                  ; preds = %._crit_edge1115, %._crit_edge1040.thread
  %.1814.lcssa = phi double [ %.08131142, %._crit_edge1040.thread ], [ %.2815.lcssa, %._crit_edge1115 ]
  %.1.lcssa = phi double [ %.07511148, %._crit_edge1040.thread ], [ %.2.lcssa, %._crit_edge1115 ]
  %918 = add nuw nsw i32 %.0794.lcssa, 1
  br label %919

919:                                              ; preds = %.split.loop.exit1286, %175, %228, %._crit_edge1134
  %.9822 = phi double [ %.08131142, %175 ], [ %.08131142, %228 ], [ %.1814.lcssa, %._crit_edge1134 ], [ %.08131142, %.split.loop.exit1286 ]
  %.1772 = phi i32 [ %176, %175 ], [ %242, %228 ], [ %918, %._crit_edge1134 ], [ %.07711146, %.split.loop.exit1286 ]
  %.9 = phi double [ %.07511148, %175 ], [ %.07511148, %228 ], [ %.1.lcssa, %._crit_edge1134 ], [ %.07511148, %.split.loop.exit1286 ]
  %.1777 = add nsw i32 %152, 1
  %indvars.iv.next1235 = add nuw nsw i64 %indvars.iv1234, 1
  %exitcond1238.not = icmp eq i64 %indvars.iv.next1235, %wide.trip.count1237
  br i1 %exitcond1238.not, label %.loopexit920, label %150, !llvm.loop !52

.loopexit920.sink.split:                          ; preds = %282, %375, %._crit_edge1072, %837, %776
  %.sink = phi i32 [ -3, %776 ], [ 5, %837 ], [ -2, %._crit_edge1072 ], [ -1, %375 ], [ -2, %282 ]
  store i32 %.sink, ptr %24, align 4, !tbaa !5
  br label %.loopexit920

.loopexit920:                                     ; preds = %919, %.loopexit920.sink.split, %108, %25, %72
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %50) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %49) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %48) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %46) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %44) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %42) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %41) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %40) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #7
  ret void
}

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @log(double noundef) local_unnamed_addr #4

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

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x double> @llvm.fmuladd.v2f64(<2 x double>, <2 x double>, <2 x double>) #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 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { mustprogress nofree nounwind willreturn memory(write) "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 #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #7 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12, !14, !15}
!14 = !{!"llvm.loop.isvectorized", i32 1}
!15 = !{!"llvm.loop.unroll.runtime.disable"}
!16 = distinct !{!16, !12, !15, !14}
!17 = !{!18, !10, i64 0}
!18 = !{!"", !10, i64 0, !10, i64 8}
!19 = distinct !{!19, !12}
!20 = !{!21}
!21 = distinct !{!21, !22}
!22 = distinct !{!22, !"LVerDomain"}
!23 = !{!24}
!24 = distinct !{!24, !22}
!25 = !{!26}
!26 = distinct !{!26, !22}
!27 = !{!28, !21, !24}
!28 = distinct !{!28, !22}
!29 = !{!28}
!30 = !{!21, !24}
!31 = distinct !{!31, !12, !14, !15}
!32 = distinct !{!32, !12, !14}
!33 = distinct !{!33, !12, !14, !15}
!34 = distinct !{!34, !12, !14}
!35 = !{!36}
!36 = distinct !{!36, !37}
!37 = distinct !{!37, !"LVerDomain"}
!38 = !{!39}
!39 = distinct !{!39, !37}
!40 = distinct !{!40, !12, !14, !15}
!41 = !{!18, !10, i64 8}
!42 = distinct !{!42, !12, !14}
!43 = !{!44}
!44 = distinct !{!44, !45}
!45 = distinct !{!45, !"LVerDomain"}
!46 = !{!47}
!47 = distinct !{!47, !45}
!48 = distinct !{!48, !12, !14, !15}
!49 = distinct !{!49, !12, !14}
!50 = distinct !{!50, !12}
!51 = distinct !{!51, !12}
!52 = distinct !{!52, !12}


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