; LLVM IR from Tiramisu-Compiler/tiramisu :: benchmarks/tensors/dibaryon/tiramisu_make_threaded_dibaryon_blocks_correlator/tir_05022b32 (iiiiiiiii)

; 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"

%"class.std::complex" = type { { double, double } }

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z8index_2diii(i32 noundef, i32 noundef, i32 noundef) #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z8index_4diiiiiii(i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z12Blocal_indexiiiiiiiiii(i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #0

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z16make_local_blockPdS_PKdS1_PKiS3_S1_S1_S1_iiiiiiiiii(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #1

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt7complexIdEC2Edd(ptr noundef nonnull align 8 dereferenceable(16), double noundef, double noundef) unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { double, double } @_ZStmlIdESt7complexIT_ERKS2_S4_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) #3

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef double @_ZSt4realIdET_RKSt7complexIS0_E(ptr noundef nonnull align 8 dereferenceable(16)) #1

; Function Attrs: mustprogress uwtable
declare dso_local noundef double @_ZSt4imagIdET_RKSt7complexIS0_E(ptr noundef nonnull align 8 dereferenceable(16)) #1

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

; Function Attrs: nounwind allocsize(0)
declare noalias ptr @malloc(i64 noundef) #5

; Function Attrs: nounwind
declare void @free(ptr noundef) #6

; Function Attrs: mustprogress uwtable
define dso_local void @_Z16make_nucleon_2ptPdS_PKdS1_PKiS3_S1_S3_S3_S1_S1_S1_S1_S1_iiiiiiiii(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, i32 noundef %14, i32 noundef %15, i32 noundef %16, i32 noundef %17, i32 noundef %18, i32 noundef %19, i32 noundef %20, i32 noundef %21, i32 noundef %22) #1 {
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %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 i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %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 ptr, align 8
  %59 = alloca ptr, align 8
  %60 = alloca ptr, align 8
  %61 = alloca ptr, align 8
  %62 = alloca %"class.std::complex", align 8
  %63 = alloca %"class.std::complex", align 8
  %64 = alloca %"class.std::complex", align 8
  %65 = alloca %"class.std::complex", align 8
  %66 = alloca %"class.std::complex", align 8
  %67 = alloca %"class.std::complex", align 8
  store ptr %0, ptr %24, align 8, !tbaa !5
  store ptr %1, ptr %25, align 8, !tbaa !5
  store ptr %2, ptr %26, align 8, !tbaa !5
  store ptr %3, ptr %27, align 8, !tbaa !5
  store ptr %4, ptr %28, align 8, !tbaa !5
  store ptr %5, ptr %29, align 8, !tbaa !5
  store ptr %6, ptr %30, align 8, !tbaa !5
  store ptr %7, ptr %31, align 8, !tbaa !5
  store ptr %8, ptr %32, align 8, !tbaa !5
  store ptr %9, ptr %33, align 8, !tbaa !5
  store ptr %10, ptr %34, align 8, !tbaa !5
  store ptr %11, ptr %35, align 8, !tbaa !5
  store ptr %12, ptr %36, align 8, !tbaa !5
  store ptr %13, ptr %37, align 8, !tbaa !5
  store i32 %14, ptr %38, align 4, !tbaa !9
  store i32 %15, ptr %39, align 4, !tbaa !9
  store i32 %16, ptr %40, align 4, !tbaa !9
  store i32 %17, ptr %41, align 4, !tbaa !9
  store i32 %18, ptr %42, align 4, !tbaa !9
  store i32 %19, ptr %43, align 4, !tbaa !9
  store i32 %20, ptr %44, align 4, !tbaa !9
  store i32 %21, ptr %45, align 4, !tbaa !9
  store i32 %22, ptr %46, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #7
  %68 = load i32, ptr %38, align 4, !tbaa !9
  %69 = load i32, ptr %39, align 4, !tbaa !9
  %70 = mul nsw i32 %68, %69
  %71 = load i32, ptr %38, align 4, !tbaa !9
  %72 = mul nsw i32 %70, %71
  %73 = load i32, ptr %39, align 4, !tbaa !9
  %74 = mul nsw i32 %72, %73
  %75 = load i32, ptr %38, align 4, !tbaa !9
  %76 = mul nsw i32 %74, %75
  %77 = load i32, ptr %39, align 4, !tbaa !9
  %78 = mul nsw i32 %76, %77
  %79 = load i32, ptr %45, align 4, !tbaa !9
  %80 = mul nsw i32 %78, %79
  %81 = sext i32 %80 to i64
  %82 = mul i64 %81, 8
  %83 = call noalias ptr @malloc(i64 noundef %82) #8
  store ptr %83, ptr %58, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #7
  %84 = load i32, ptr %38, align 4, !tbaa !9
  %85 = load i32, ptr %39, align 4, !tbaa !9
  %86 = mul nsw i32 %84, %85
  %87 = load i32, ptr %38, align 4, !tbaa !9
  %88 = mul nsw i32 %86, %87
  %89 = load i32, ptr %39, align 4, !tbaa !9
  %90 = mul nsw i32 %88, %89
  %91 = load i32, ptr %38, align 4, !tbaa !9
  %92 = mul nsw i32 %90, %91
  %93 = load i32, ptr %39, align 4, !tbaa !9
  %94 = mul nsw i32 %92, %93
  %95 = load i32, ptr %45, align 4, !tbaa !9
  %96 = mul nsw i32 %94, %95
  %97 = sext i32 %96 to i64
  %98 = mul i64 %97, 8
  %99 = call noalias ptr @malloc(i64 noundef %98) #8
  store ptr %99, ptr %59, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #7
  %100 = load i32, ptr %38, align 4, !tbaa !9
  %101 = load i32, ptr %39, align 4, !tbaa !9
  %102 = mul nsw i32 %100, %101
  %103 = load i32, ptr %38, align 4, !tbaa !9
  %104 = mul nsw i32 %102, %103
  %105 = load i32, ptr %39, align 4, !tbaa !9
  %106 = mul nsw i32 %104, %105
  %107 = load i32, ptr %38, align 4, !tbaa !9
  %108 = mul nsw i32 %106, %107
  %109 = load i32, ptr %39, align 4, !tbaa !9
  %110 = mul nsw i32 %108, %109
  %111 = load i32, ptr %45, align 4, !tbaa !9
  %112 = mul nsw i32 %110, %111
  %113 = sext i32 %112 to i64
  %114 = mul i64 %113, 8
  %115 = call noalias ptr @malloc(i64 noundef %114) #8
  store ptr %115, ptr %60, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #7
  %116 = load i32, ptr %38, align 4, !tbaa !9
  %117 = load i32, ptr %39, align 4, !tbaa !9
  %118 = mul nsw i32 %116, %117
  %119 = load i32, ptr %38, align 4, !tbaa !9
  %120 = mul nsw i32 %118, %119
  %121 = load i32, ptr %39, align 4, !tbaa !9
  %122 = mul nsw i32 %120, %121
  %123 = load i32, ptr %38, align 4, !tbaa !9
  %124 = mul nsw i32 %122, %123
  %125 = load i32, ptr %39, align 4, !tbaa !9
  %126 = mul nsw i32 %124, %125
  %127 = load i32, ptr %45, align 4, !tbaa !9
  %128 = mul nsw i32 %126, %127
  %129 = sext i32 %128 to i64
  %130 = mul i64 %129, 8
  %131 = call noalias ptr @malloc(i64 noundef %130) #8
  store ptr %131, ptr %61, align 8, !tbaa !5
  store i32 0, ptr %49, align 4, !tbaa !9
  br label %132

132:                                              ; preds = %498, %23
  %133 = load i32, ptr %49, align 4, !tbaa !9
  %134 = load i32, ptr %42, align 4, !tbaa !9
  %135 = icmp slt i32 %133, %134
  br i1 %135, label %136, label %501

136:                                              ; preds = %132
  store i32 0, ptr %50, align 4, !tbaa !9
  br label %137

137:                                              ; preds = %494, %136
  %138 = load i32, ptr %50, align 4, !tbaa !9
  %139 = load i32, ptr %41, align 4, !tbaa !9
  %140 = icmp slt i32 %138, %139
  br i1 %140, label %141, label %497

141:                                              ; preds = %137
  %142 = load ptr, ptr %58, align 8, !tbaa !5
  %143 = load ptr, ptr %59, align 8, !tbaa !5
  %144 = load ptr, ptr %26, align 8, !tbaa !5
  %145 = load ptr, ptr %27, align 8, !tbaa !5
  %146 = load ptr, ptr %28, align 8, !tbaa !5
  %147 = load ptr, ptr %29, align 8, !tbaa !5
  %148 = load ptr, ptr %30, align 8, !tbaa !5
  %149 = load ptr, ptr %34, align 8, !tbaa !5
  %150 = load ptr, ptr %35, align 8, !tbaa !5
  %151 = load i32, ptr %49, align 4, !tbaa !9
  %152 = load i32, ptr %50, align 4, !tbaa !9
  %153 = load i32, ptr %38, align 4, !tbaa !9
  %154 = load i32, ptr %39, align 4, !tbaa !9
  %155 = load i32, ptr %40, align 4, !tbaa !9
  %156 = load i32, ptr %41, align 4, !tbaa !9
  %157 = load i32, ptr %42, align 4, !tbaa !9
  %158 = load i32, ptr %43, align 4, !tbaa !9
  %159 = load i32, ptr %44, align 4, !tbaa !9
  %160 = load i32, ptr %45, align 4, !tbaa !9
  call void @_Z16make_local_blockPdS_PKdS1_PKiS3_S1_S1_S1_iiiiiiiiii(ptr noundef %142, ptr noundef %143, ptr noundef %144, ptr noundef %145, ptr noundef %146, ptr noundef %147, ptr noundef %148, ptr noundef %149, ptr noundef %150, i32 noundef %151, i32 noundef %152, i32 noundef %153, i32 noundef %154, i32 noundef %155, i32 noundef %156, i32 noundef %157, i32 noundef %158, i32 noundef %159, i32 noundef %160)
  %161 = load ptr, ptr %60, align 8, !tbaa !5
  %162 = load ptr, ptr %61, align 8, !tbaa !5
  %163 = load ptr, ptr %26, align 8, !tbaa !5
  %164 = load ptr, ptr %27, align 8, !tbaa !5
  %165 = load ptr, ptr %31, align 8, !tbaa !5
  %166 = load ptr, ptr %32, align 8, !tbaa !5
  %167 = load ptr, ptr %33, align 8, !tbaa !5
  %168 = load ptr, ptr %34, align 8, !tbaa !5
  %169 = load ptr, ptr %35, align 8, !tbaa !5
  %170 = load i32, ptr %49, align 4, !tbaa !9
  %171 = load i32, ptr %50, align 4, !tbaa !9
  %172 = load i32, ptr %38, align 4, !tbaa !9
  %173 = load i32, ptr %39, align 4, !tbaa !9
  %174 = load i32, ptr %40, align 4, !tbaa !9
  %175 = load i32, ptr %41, align 4, !tbaa !9
  %176 = load i32, ptr %42, align 4, !tbaa !9
  %177 = load i32, ptr %43, align 4, !tbaa !9
  %178 = load i32, ptr %44, align 4, !tbaa !9
  %179 = load i32, ptr %45, align 4, !tbaa !9
  call void @_Z16make_local_blockPdS_PKdS1_PKiS3_S1_S1_S1_iiiiiiiiii(ptr noundef %161, ptr noundef %162, ptr noundef %163, ptr noundef %164, ptr noundef %165, ptr noundef %166, ptr noundef %167, ptr noundef %168, ptr noundef %169, i32 noundef %170, i32 noundef %171, i32 noundef %172, i32 noundef %173, i32 noundef %174, i32 noundef %175, i32 noundef %176, i32 noundef %177, i32 noundef %178, i32 noundef %179)
  store i32 0, ptr %57, align 4, !tbaa !9
  br label %180

180:                                              ; preds = %333, %141
  %181 = load i32, ptr %57, align 4, !tbaa !9
  %182 = load i32, ptr %43, align 4, !tbaa !9
  %183 = icmp slt i32 %181, %182
  br i1 %183, label %184, label %336

184:                                              ; preds = %180
  %185 = load ptr, ptr %28, align 8, !tbaa !5
  %186 = load i32, ptr %57, align 4, !tbaa !9
  %187 = load i32, ptr %44, align 4, !tbaa !9
  %188 = call noundef i32 @_Z8index_2diii(i32 noundef %186, i32 noundef 0, i32 noundef %187)
  %189 = sext i32 %188 to i64
  %190 = getelementptr inbounds i32, ptr %185, i64 %189
  %191 = load i32, ptr %190, align 4, !tbaa !9
  store i32 %191, ptr %51, align 4, !tbaa !9
  %192 = load ptr, ptr %29, align 8, !tbaa !5
  %193 = load i32, ptr %57, align 4, !tbaa !9
  %194 = load i32, ptr %44, align 4, !tbaa !9
  %195 = call noundef i32 @_Z8index_2diii(i32 noundef %193, i32 noundef 0, i32 noundef %194)
  %196 = sext i32 %195 to i64
  %197 = getelementptr inbounds i32, ptr %192, i64 %196
  %198 = load i32, ptr %197, align 4, !tbaa !9
  store i32 %198, ptr %52, align 4, !tbaa !9
  %199 = load ptr, ptr %28, align 8, !tbaa !5
  %200 = load i32, ptr %57, align 4, !tbaa !9
  %201 = load i32, ptr %44, align 4, !tbaa !9
  %202 = call noundef i32 @_Z8index_2diii(i32 noundef %200, i32 noundef 1, i32 noundef %201)
  %203 = sext i32 %202 to i64
  %204 = getelementptr inbounds i32, ptr %199, i64 %203
  %205 = load i32, ptr %204, align 4, !tbaa !9
  store i32 %205, ptr %53, align 4, !tbaa !9
  %206 = load ptr, ptr %29, align 8, !tbaa !5
  %207 = load i32, ptr %57, align 4, !tbaa !9
  %208 = load i32, ptr %44, align 4, !tbaa !9
  %209 = call noundef i32 @_Z8index_2diii(i32 noundef %207, i32 noundef 1, i32 noundef %208)
  %210 = sext i32 %209 to i64
  %211 = getelementptr inbounds i32, ptr %206, i64 %210
  %212 = load i32, ptr %211, align 4, !tbaa !9
  store i32 %212, ptr %54, align 4, !tbaa !9
  %213 = load ptr, ptr %28, align 8, !tbaa !5
  %214 = load i32, ptr %57, align 4, !tbaa !9
  %215 = load i32, ptr %44, align 4, !tbaa !9
  %216 = call noundef i32 @_Z8index_2diii(i32 noundef %214, i32 noundef 2, i32 noundef %215)
  %217 = sext i32 %216 to i64
  %218 = getelementptr inbounds i32, ptr %213, i64 %217
  %219 = load i32, ptr %218, align 4, !tbaa !9
  store i32 %219, ptr %55, align 4, !tbaa !9
  %220 = load ptr, ptr %29, align 8, !tbaa !5
  %221 = load i32, ptr %57, align 4, !tbaa !9
  %222 = load i32, ptr %44, align 4, !tbaa !9
  %223 = call noundef i32 @_Z8index_2diii(i32 noundef %221, i32 noundef 2, i32 noundef %222)
  %224 = sext i32 %223 to i64
  %225 = getelementptr inbounds i32, ptr %220, i64 %224
  %226 = load i32, ptr %225, align 4, !tbaa !9
  store i32 %226, ptr %56, align 4, !tbaa !9
  store i32 0, ptr %48, align 4, !tbaa !9
  br label %227

227:                                              ; preds = %329, %184
  %228 = load i32, ptr %48, align 4, !tbaa !9
  %229 = load i32, ptr %45, align 4, !tbaa !9
  %230 = icmp slt i32 %228, %229
  br i1 %230, label %231, label %332

231:                                              ; preds = %227
  call void @llvm.lifetime.start.p0(i64 16, ptr %62) #7
  %232 = load ptr, ptr %58, align 8, !tbaa !5
  %233 = load i32, ptr %51, align 4, !tbaa !9
  %234 = load i32, ptr %52, align 4, !tbaa !9
  %235 = load i32, ptr %55, align 4, !tbaa !9
  %236 = load i32, ptr %56, align 4, !tbaa !9
  %237 = load i32, ptr %53, align 4, !tbaa !9
  %238 = load i32, ptr %54, align 4, !tbaa !9
  %239 = load i32, ptr %48, align 4, !tbaa !9
  %240 = load i32, ptr %38, align 4, !tbaa !9
  %241 = load i32, ptr %39, align 4, !tbaa !9
  %242 = load i32, ptr %45, align 4, !tbaa !9
  %243 = call noundef i32 @_Z12Blocal_indexiiiiiiiiii(i32 noundef %233, i32 noundef %234, i32 noundef %235, i32 noundef %236, i32 noundef %237, i32 noundef %238, i32 noundef %239, i32 noundef %240, i32 noundef %241, i32 noundef %242)
  %244 = sext i32 %243 to i64
  %245 = getelementptr inbounds double, ptr %232, i64 %244
  %246 = load double, ptr %245, align 8, !tbaa !11
  %247 = load ptr, ptr %59, align 8, !tbaa !5
  %248 = load i32, ptr %51, align 4, !tbaa !9
  %249 = load i32, ptr %52, align 4, !tbaa !9
  %250 = load i32, ptr %55, align 4, !tbaa !9
  %251 = load i32, ptr %56, align 4, !tbaa !9
  %252 = load i32, ptr %53, align 4, !tbaa !9
  %253 = load i32, ptr %54, align 4, !tbaa !9
  %254 = load i32, ptr %48, align 4, !tbaa !9
  %255 = load i32, ptr %38, align 4, !tbaa !9
  %256 = load i32, ptr %39, align 4, !tbaa !9
  %257 = load i32, ptr %45, align 4, !tbaa !9
  %258 = call noundef i32 @_Z12Blocal_indexiiiiiiiiii(i32 noundef %248, i32 noundef %249, i32 noundef %250, i32 noundef %251, i32 noundef %252, i32 noundef %253, i32 noundef %254, i32 noundef %255, i32 noundef %256, i32 noundef %257)
  %259 = sext i32 %258 to i64
  %260 = getelementptr inbounds double, ptr %247, i64 %259
  %261 = load double, ptr %260, align 8, !tbaa !11
  call void @_ZNSt7complexIdEC2Edd(ptr noundef nonnull align 8 dereferenceable(16) %62, double noundef %246, double noundef %261)
  store i32 0, ptr %47, align 4, !tbaa !9
  br label %262

262:                                              ; preds = %325, %231
  %263 = load i32, ptr %47, align 4, !tbaa !9
  %264 = load i32, ptr %46, align 4, !tbaa !9
  %265 = icmp slt i32 %263, %264
  br i1 %265, label %266, label %328

266:                                              ; preds = %262
  call void @llvm.lifetime.start.p0(i64 16, ptr %63) #7
  %267 = load ptr, ptr %36, align 8, !tbaa !5
  %268 = load i32, ptr %50, align 4, !tbaa !9
  %269 = load i32, ptr %47, align 4, !tbaa !9
  %270 = load i32, ptr %46, align 4, !tbaa !9
  %271 = call noundef i32 @_Z8index_2diii(i32 noundef %268, i32 noundef %269, i32 noundef %270)
  %272 = sext i32 %271 to i64
  %273 = getelementptr inbounds double, ptr %267, i64 %272
  %274 = load double, ptr %273, align 8, !tbaa !11
  %275 = load ptr, ptr %37, align 8, !tbaa !5
  %276 = load i32, ptr %50, align 4, !tbaa !9
  %277 = load i32, ptr %47, align 4, !tbaa !9
  %278 = load i32, ptr %46, align 4, !tbaa !9
  %279 = call noundef i32 @_Z8index_2diii(i32 noundef %276, i32 noundef %277, i32 noundef %278)
  %280 = sext i32 %279 to i64
  %281 = getelementptr inbounds double, ptr %275, i64 %280
  %282 = load double, ptr %281, align 8, !tbaa !11
  call void @_ZNSt7complexIdEC2Edd(ptr noundef nonnull align 8 dereferenceable(16) %63, double noundef %274, double noundef %282)
  call void @llvm.lifetime.start.p0(i64 16, ptr %64) #7
  %283 = call { double, double } @_ZStmlIdESt7complexIT_ERKS2_S4_(ptr noundef nonnull align 8 dereferenceable(16) %62, ptr noundef nonnull align 8 dereferenceable(16) %63)
  %284 = getelementptr inbounds %"class.std::complex", ptr %64, i32 0, i32 0
  %285 = getelementptr inbounds { double, double }, ptr %284, i32 0, i32 0
  %286 = extractvalue { double, double } %283, 0
  store double %286, ptr %285, align 8
  %287 = getelementptr inbounds { double, double }, ptr %284, i32 0, i32 1
  %288 = extractvalue { double, double } %283, 1
  store double %288, ptr %287, align 8
  %289 = load ptr, ptr %30, align 8, !tbaa !5
  %290 = load i32, ptr %57, align 4, !tbaa !9
  %291 = sext i32 %290 to i64
  %292 = getelementptr inbounds double, ptr %289, i64 %291
  %293 = load double, ptr %292, align 8, !tbaa !11
  %294 = call noundef double @_ZSt4realIdET_RKSt7complexIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %64)
  %295 = load ptr, ptr %24, align 8, !tbaa !5
  %296 = load i32, ptr %48, align 4, !tbaa !9
  %297 = load i32, ptr %47, align 4, !tbaa !9
  %298 = load i32, ptr %49, align 4, !tbaa !9
  %299 = load i32, ptr %45, align 4, !tbaa !9
  %300 = load i32, ptr %46, align 4, !tbaa !9
  %301 = load i32, ptr %42, align 4, !tbaa !9
  %302 = call noundef i32 @_Z8index_4diiiiiii(i32 noundef 0, i32 noundef %296, i32 noundef %297, i32 noundef %298, i32 noundef %299, i32 noundef %300, i32 noundef %301)
  %303 = sext i32 %302 to i64
  %304 = getelementptr inbounds double, ptr %295, i64 %303
  %305 = load double, ptr %304, align 8, !tbaa !11
  %306 = call double @llvm.fmuladd.f64(double %293, double %294, double %305)
  store double %306, ptr %304, align 8, !tbaa !11
  %307 = load ptr, ptr %30, align 8, !tbaa !5
  %308 = load i32, ptr %57, align 4, !tbaa !9
  %309 = sext i32 %308 to i64
  %310 = getelementptr inbounds double, ptr %307, i64 %309
  %311 = load double, ptr %310, align 8, !tbaa !11
  %312 = call noundef double @_ZSt4imagIdET_RKSt7complexIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %64)
  %313 = load ptr, ptr %25, align 8, !tbaa !5
  %314 = load i32, ptr %48, align 4, !tbaa !9
  %315 = load i32, ptr %47, align 4, !tbaa !9
  %316 = load i32, ptr %49, align 4, !tbaa !9
  %317 = load i32, ptr %45, align 4, !tbaa !9
  %318 = load i32, ptr %46, align 4, !tbaa !9
  %319 = load i32, ptr %42, align 4, !tbaa !9
  %320 = call noundef i32 @_Z8index_4diiiiiii(i32 noundef 0, i32 noundef %314, i32 noundef %315, i32 noundef %316, i32 noundef %317, i32 noundef %318, i32 noundef %319)
  %321 = sext i32 %320 to i64
  %322 = getelementptr inbounds double, ptr %313, i64 %321
  %323 = load double, ptr %322, align 8, !tbaa !11
  %324 = call double @llvm.fmuladd.f64(double %311, double %312, double %323)
  store double %324, ptr %322, align 8, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %64) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %63) #7
  br label %325

325:                                              ; preds = %266
  %326 = load i32, ptr %47, align 4, !tbaa !9
  %327 = add nsw i32 %326, 1
  store i32 %327, ptr %47, align 4, !tbaa !9
  br label %262, !llvm.loop !13

328:                                              ; preds = %262
  call void @llvm.lifetime.end.p0(i64 16, ptr %62) #7
  br label %329

329:                                              ; preds = %328
  %330 = load i32, ptr %48, align 4, !tbaa !9
  %331 = add nsw i32 %330, 1
  store i32 %331, ptr %48, align 4, !tbaa !9
  br label %227, !llvm.loop !15

332:                                              ; preds = %227
  br label %333

333:                                              ; preds = %332
  %334 = load i32, ptr %57, align 4, !tbaa !9
  %335 = add nsw i32 %334, 1
  store i32 %335, ptr %57, align 4, !tbaa !9
  br label %180, !llvm.loop !16

336:                                              ; preds = %180
  store i32 0, ptr %57, align 4, !tbaa !9
  br label %337

337:                                              ; preds = %490, %336
  %338 = load i32, ptr %57, align 4, !tbaa !9
  %339 = load i32, ptr %43, align 4, !tbaa !9
  %340 = icmp slt i32 %338, %339
  br i1 %340, label %341, label %493

341:                                              ; preds = %337
  %342 = load ptr, ptr %31, align 8, !tbaa !5
  %343 = load i32, ptr %57, align 4, !tbaa !9
  %344 = load i32, ptr %44, align 4, !tbaa !9
  %345 = call noundef i32 @_Z8index_2diii(i32 noundef %343, i32 noundef 0, i32 noundef %344)
  %346 = sext i32 %345 to i64
  %347 = getelementptr inbounds i32, ptr %342, i64 %346
  %348 = load i32, ptr %347, align 4, !tbaa !9
  store i32 %348, ptr %51, align 4, !tbaa !9
  %349 = load ptr, ptr %32, align 8, !tbaa !5
  %350 = load i32, ptr %57, align 4, !tbaa !9
  %351 = load i32, ptr %44, align 4, !tbaa !9
  %352 = call noundef i32 @_Z8index_2diii(i32 noundef %350, i32 noundef 0, i32 noundef %351)
  %353 = sext i32 %352 to i64
  %354 = getelementptr inbounds i32, ptr %349, i64 %353
  %355 = load i32, ptr %354, align 4, !tbaa !9
  store i32 %355, ptr %52, align 4, !tbaa !9
  %356 = load ptr, ptr %31, align 8, !tbaa !5
  %357 = load i32, ptr %57, align 4, !tbaa !9
  %358 = load i32, ptr %44, align 4, !tbaa !9
  %359 = call noundef i32 @_Z8index_2diii(i32 noundef %357, i32 noundef 1, i32 noundef %358)
  %360 = sext i32 %359 to i64
  %361 = getelementptr inbounds i32, ptr %356, i64 %360
  %362 = load i32, ptr %361, align 4, !tbaa !9
  store i32 %362, ptr %53, align 4, !tbaa !9
  %363 = load ptr, ptr %32, align 8, !tbaa !5
  %364 = load i32, ptr %57, align 4, !tbaa !9
  %365 = load i32, ptr %44, align 4, !tbaa !9
  %366 = call noundef i32 @_Z8index_2diii(i32 noundef %364, i32 noundef 1, i32 noundef %365)
  %367 = sext i32 %366 to i64
  %368 = getelementptr inbounds i32, ptr %363, i64 %367
  %369 = load i32, ptr %368, align 4, !tbaa !9
  store i32 %369, ptr %54, align 4, !tbaa !9
  %370 = load ptr, ptr %31, align 8, !tbaa !5
  %371 = load i32, ptr %57, align 4, !tbaa !9
  %372 = load i32, ptr %44, align 4, !tbaa !9
  %373 = call noundef i32 @_Z8index_2diii(i32 noundef %371, i32 noundef 2, i32 noundef %372)
  %374 = sext i32 %373 to i64
  %375 = getelementptr inbounds i32, ptr %370, i64 %374
  %376 = load i32, ptr %375, align 4, !tbaa !9
  store i32 %376, ptr %55, align 4, !tbaa !9
  %377 = load ptr, ptr %32, align 8, !tbaa !5
  %378 = load i32, ptr %57, align 4, !tbaa !9
  %379 = load i32, ptr %44, align 4, !tbaa !9
  %380 = call noundef i32 @_Z8index_2diii(i32 noundef %378, i32 noundef 2, i32 noundef %379)
  %381 = sext i32 %380 to i64
  %382 = getelementptr inbounds i32, ptr %377, i64 %381
  %383 = load i32, ptr %382, align 4, !tbaa !9
  store i32 %383, ptr %56, align 4, !tbaa !9
  store i32 0, ptr %48, align 4, !tbaa !9
  br label %384

384:                                              ; preds = %486, %341
  %385 = load i32, ptr %48, align 4, !tbaa !9
  %386 = load i32, ptr %45, align 4, !tbaa !9
  %387 = icmp slt i32 %385, %386
  br i1 %387, label %388, label %489

388:                                              ; preds = %384
  call void @llvm.lifetime.start.p0(i64 16, ptr %65) #7
  %389 = load ptr, ptr %60, align 8, !tbaa !5
  %390 = load i32, ptr %51, align 4, !tbaa !9
  %391 = load i32, ptr %52, align 4, !tbaa !9
  %392 = load i32, ptr %55, align 4, !tbaa !9
  %393 = load i32, ptr %56, align 4, !tbaa !9
  %394 = load i32, ptr %53, align 4, !tbaa !9
  %395 = load i32, ptr %54, align 4, !tbaa !9
  %396 = load i32, ptr %48, align 4, !tbaa !9
  %397 = load i32, ptr %38, align 4, !tbaa !9
  %398 = load i32, ptr %39, align 4, !tbaa !9
  %399 = load i32, ptr %45, align 4, !tbaa !9
  %400 = call noundef i32 @_Z12Blocal_indexiiiiiiiiii(i32 noundef %390, i32 noundef %391, i32 noundef %392, i32 noundef %393, i32 noundef %394, i32 noundef %395, i32 noundef %396, i32 noundef %397, i32 noundef %398, i32 noundef %399)
  %401 = sext i32 %400 to i64
  %402 = getelementptr inbounds double, ptr %389, i64 %401
  %403 = load double, ptr %402, align 8, !tbaa !11
  %404 = load ptr, ptr %61, align 8, !tbaa !5
  %405 = load i32, ptr %51, align 4, !tbaa !9
  %406 = load i32, ptr %52, align 4, !tbaa !9
  %407 = load i32, ptr %55, align 4, !tbaa !9
  %408 = load i32, ptr %56, align 4, !tbaa !9
  %409 = load i32, ptr %53, align 4, !tbaa !9
  %410 = load i32, ptr %54, align 4, !tbaa !9
  %411 = load i32, ptr %48, align 4, !tbaa !9
  %412 = load i32, ptr %38, align 4, !tbaa !9
  %413 = load i32, ptr %39, align 4, !tbaa !9
  %414 = load i32, ptr %45, align 4, !tbaa !9
  %415 = call noundef i32 @_Z12Blocal_indexiiiiiiiiii(i32 noundef %405, i32 noundef %406, i32 noundef %407, i32 noundef %408, i32 noundef %409, i32 noundef %410, i32 noundef %411, i32 noundef %412, i32 noundef %413, i32 noundef %414)
  %416 = sext i32 %415 to i64
  %417 = getelementptr inbounds double, ptr %404, i64 %416
  %418 = load double, ptr %417, align 8, !tbaa !11
  call void @_ZNSt7complexIdEC2Edd(ptr noundef nonnull align 8 dereferenceable(16) %65, double noundef %403, double noundef %418)
  store i32 0, ptr %47, align 4, !tbaa !9
  br label %419

419:                                              ; preds = %482, %388
  %420 = load i32, ptr %47, align 4, !tbaa !9
  %421 = load i32, ptr %46, align 4, !tbaa !9
  %422 = icmp slt i32 %420, %421
  br i1 %422, label %423, label %485

423:                                              ; preds = %419
  call void @llvm.lifetime.start.p0(i64 16, ptr %66) #7
  %424 = load ptr, ptr %36, align 8, !tbaa !5
  %425 = load i32, ptr %50, align 4, !tbaa !9
  %426 = load i32, ptr %47, align 4, !tbaa !9
  %427 = load i32, ptr %46, align 4, !tbaa !9
  %428 = call noundef i32 @_Z8index_2diii(i32 noundef %425, i32 noundef %426, i32 noundef %427)
  %429 = sext i32 %428 to i64
  %430 = getelementptr inbounds double, ptr %424, i64 %429
  %431 = load double, ptr %430, align 8, !tbaa !11
  %432 = load ptr, ptr %37, align 8, !tbaa !5
  %433 = load i32, ptr %50, align 4, !tbaa !9
  %434 = load i32, ptr %47, align 4, !tbaa !9
  %435 = load i32, ptr %46, align 4, !tbaa !9
  %436 = call noundef i32 @_Z8index_2diii(i32 noundef %433, i32 noundef %434, i32 noundef %435)
  %437 = sext i32 %436 to i64
  %438 = getelementptr inbounds double, ptr %432, i64 %437
  %439 = load double, ptr %438, align 8, !tbaa !11
  call void @_ZNSt7complexIdEC2Edd(ptr noundef nonnull align 8 dereferenceable(16) %66, double noundef %431, double noundef %439)
  call void @llvm.lifetime.start.p0(i64 16, ptr %67) #7
  %440 = call { double, double } @_ZStmlIdESt7complexIT_ERKS2_S4_(ptr noundef nonnull align 8 dereferenceable(16) %65, ptr noundef nonnull align 8 dereferenceable(16) %66)
  %441 = getelementptr inbounds %"class.std::complex", ptr %67, i32 0, i32 0
  %442 = getelementptr inbounds { double, double }, ptr %441, i32 0, i32 0
  %443 = extractvalue { double, double } %440, 0
  store double %443, ptr %442, align 8
  %444 = getelementptr inbounds { double, double }, ptr %441, i32 0, i32 1
  %445 = extractvalue { double, double } %440, 1
  store double %445, ptr %444, align 8
  %446 = load ptr, ptr %33, align 8, !tbaa !5
  %447 = load i32, ptr %57, align 4, !tbaa !9
  %448 = sext i32 %447 to i64
  %449 = getelementptr inbounds double, ptr %446, i64 %448
  %450 = load double, ptr %449, align 8, !tbaa !11
  %451 = call noundef double @_ZSt4realIdET_RKSt7complexIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %67)
  %452 = load ptr, ptr %24, align 8, !tbaa !5
  %453 = load i32, ptr %48, align 4, !tbaa !9
  %454 = load i32, ptr %47, align 4, !tbaa !9
  %455 = load i32, ptr %49, align 4, !tbaa !9
  %456 = load i32, ptr %45, align 4, !tbaa !9
  %457 = load i32, ptr %46, align 4, !tbaa !9
  %458 = load i32, ptr %42, align 4, !tbaa !9
  %459 = call noundef i32 @_Z8index_4diiiiiii(i32 noundef 1, i32 noundef %453, i32 noundef %454, i32 noundef %455, i32 noundef %456, i32 noundef %457, i32 noundef %458)
  %460 = sext i32 %459 to i64
  %461 = getelementptr inbounds double, ptr %452, i64 %460
  %462 = load double, ptr %461, align 8, !tbaa !11
  %463 = call double @llvm.fmuladd.f64(double %450, double %451, double %462)
  store double %463, ptr %461, align 8, !tbaa !11
  %464 = load ptr, ptr %33, align 8, !tbaa !5
  %465 = load i32, ptr %57, align 4, !tbaa !9
  %466 = sext i32 %465 to i64
  %467 = getelementptr inbounds double, ptr %464, i64 %466
  %468 = load double, ptr %467, align 8, !tbaa !11
  %469 = call noundef double @_ZSt4imagIdET_RKSt7complexIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %67)
  %470 = load ptr, ptr %25, align 8, !tbaa !5
  %471 = load i32, ptr %48, align 4, !tbaa !9
  %472 = load i32, ptr %47, align 4, !tbaa !9
  %473 = load i32, ptr %49, align 4, !tbaa !9
  %474 = load i32, ptr %45, align 4, !tbaa !9
  %475 = load i32, ptr %46, align 4, !tbaa !9
  %476 = load i32, ptr %42, align 4, !tbaa !9
  %477 = call noundef i32 @_Z8index_4diiiiiii(i32 noundef 1, i32 noundef %471, i32 noundef %472, i32 noundef %473, i32 noundef %474, i32 noundef %475, i32 noundef %476)
  %478 = sext i32 %477 to i64
  %479 = getelementptr inbounds double, ptr %470, i64 %478
  %480 = load double, ptr %479, align 8, !tbaa !11
  %481 = call double @llvm.fmuladd.f64(double %468, double %469, double %480)
  store double %481, ptr %479, align 8, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %67) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %66) #7
  br label %482

482:                                              ; preds = %423
  %483 = load i32, ptr %47, align 4, !tbaa !9
  %484 = add nsw i32 %483, 1
  store i32 %484, ptr %47, align 4, !tbaa !9
  br label %419, !llvm.loop !17

485:                                              ; preds = %419
  call void @llvm.lifetime.end.p0(i64 16, ptr %65) #7
  br label %486

486:                                              ; preds = %485
  %487 = load i32, ptr %48, align 4, !tbaa !9
  %488 = add nsw i32 %487, 1
  store i32 %488, ptr %48, align 4, !tbaa !9
  br label %384, !llvm.loop !18

489:                                              ; preds = %384
  br label %490

490:                                              ; preds = %489
  %491 = load i32, ptr %57, align 4, !tbaa !9
  %492 = add nsw i32 %491, 1
  store i32 %492, ptr %57, align 4, !tbaa !9
  br label %337, !llvm.loop !19

493:                                              ; preds = %337
  br label %494

494:                                              ; preds = %493
  %495 = load i32, ptr %50, align 4, !tbaa !9
  %496 = add nsw i32 %495, 1
  store i32 %496, ptr %50, align 4, !tbaa !9
  br label %137, !llvm.loop !20

497:                                              ; preds = %137
  br label %498

498:                                              ; preds = %497
  %499 = load i32, ptr %49, align 4, !tbaa !9
  %500 = add nsw i32 %499, 1
  store i32 %500, ptr %49, align 4, !tbaa !9
  br label %132, !llvm.loop !21

501:                                              ; preds = %132
  %502 = load ptr, ptr %58, align 8, !tbaa !5
  call void @free(ptr noundef %502) #7
  %503 = load ptr, ptr %59, align 8, !tbaa !5
  call void @free(ptr noundef %503) #7
  %504 = load ptr, ptr %60, align 8, !tbaa !5
  call void @free(ptr noundef %504) #7
  %505 = load ptr, ptr %61, align 8, !tbaa !5
  call void @free(ptr noundef %505) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #7
  ret void
}

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

!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++ 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 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !14}
!21 = distinct !{!21, !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"

%"class.std::complex" = type { { double, double } }

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z8index_2diii(i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z8index_4diiiiiii(i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z12Blocal_indexiiiiiiiiii(i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z16make_local_blockPdS_PKdS1_PKiS3_S1_S1_S1_iiiiiiiiii(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt7complexIdEC2Edd(ptr noundef nonnull align 8 dereferenceable(16), double noundef, double noundef) unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { double, double } @_ZStmlIdESt7complexIT_ERKS2_S4_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef double @_ZSt4realIdET_RKSt7complexIS0_E(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local noundef double @_ZSt4imagIdET_RKSt7complexIS0_E(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1

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

; Function Attrs: mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite)
declare noalias noundef ptr @malloc(i64 noundef) local_unnamed_addr #5

; Function Attrs: mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite)
declare void @free(ptr allocptr nocapture noundef) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
define dso_local void @_Z16make_nucleon_2ptPdS_PKdS1_PKiS3_S1_S3_S3_S1_S1_S1_S1_S1_iiiiiiiii(ptr nocapture noundef %0, ptr nocapture 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 nocapture noundef readonly %12, ptr nocapture noundef readonly %13, i32 noundef %14, i32 noundef %15, i32 noundef %16, i32 noundef %17, i32 noundef %18, i32 noundef %19, i32 noundef %20, i32 noundef %21, i32 noundef %22) local_unnamed_addr #1 {
  %24 = alloca %"class.std::complex", align 8
  %25 = alloca %"class.std::complex", align 8
  %26 = alloca %"class.std::complex", align 8
  %27 = alloca %"class.std::complex", align 8
  %28 = alloca %"class.std::complex", align 8
  %29 = alloca %"class.std::complex", align 8
  %30 = mul i32 %15, %14
  %31 = mul i32 %30, %30
  %32 = mul i32 %31, %30
  %33 = mul nsw i32 %32, %21
  %34 = sext i32 %33 to i64
  %35 = shl nsw i64 %34, 3
  %36 = tail call noalias ptr @malloc(i64 noundef %35) #7
  %37 = tail call noalias ptr @malloc(i64 noundef %35) #7
  %38 = tail call noalias ptr @malloc(i64 noundef %35) #7
  %39 = tail call noalias ptr @malloc(i64 noundef %35) #7
  %40 = icmp sgt i32 %18, 0
  br i1 %40, label %.preheader238.lr.ph, label %._crit_edge258

.preheader238.lr.ph:                              ; preds = %23
  %41 = icmp sgt i32 %17, 0
  %42 = icmp sgt i32 %19, 0
  %43 = icmp sgt i32 %21, 0
  %44 = icmp sgt i32 %22, 0
  %45 = getelementptr inbounds i8, ptr %26, i64 8
  %46 = getelementptr inbounds i8, ptr %29, i64 8
  br i1 %41, label %.preheader238.us.preheader, label %._crit_edge258

.preheader238.us.preheader:                       ; preds = %.preheader238.lr.ph
  %wide.trip.count = zext nneg i32 %19 to i64
  %wide.trip.count280 = zext nneg i32 %19 to i64
  br label %.preheader238.us

.preheader238.us:                                 ; preds = %.preheader238.us.preheader, %._crit_edge256.us
  %.0227257.us = phi i32 [ %191, %._crit_edge256.us ], [ 0, %.preheader238.us.preheader ]
  br label %47

47:                                               ; preds = %.preheader238.us, %._crit_edge.us266
  %.0228254.us = phi i32 [ 0, %.preheader238.us ], [ %48, %._crit_edge.us266 ]
  call void @_Z16make_local_blockPdS_PKdS1_PKiS3_S1_S1_S1_iiiiiiiiii(ptr noundef %36, ptr noundef %37, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %10, ptr noundef %11, i32 noundef %.0227257.us, i32 noundef %.0228254.us, i32 noundef %14, i32 noundef %15, i32 noundef %16, i32 noundef %17, i32 noundef %18, i32 noundef %19, i32 noundef %20, i32 noundef %21)
  call void @_Z16make_local_blockPdS_PKdS1_PKiS3_S1_S1_S1_iiiiiiiiii(ptr noundef %38, ptr noundef %39, ptr noundef %2, ptr noundef %3, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, i32 noundef %.0227257.us, i32 noundef %.0228254.us, i32 noundef %14, i32 noundef %15, i32 noundef %16, i32 noundef %17, i32 noundef %18, i32 noundef %19, i32 noundef %20, i32 noundef %21)
  br i1 %42, label %.lr.ph.us263, label %._crit_edge.us266

._crit_edge.us266:                                ; preds = %._crit_edge250.us, %47, %.preheader.us
  %48 = add nuw nsw i32 %.0228254.us, 1
  %exitcond282.not = icmp eq i32 %48, %17
  br i1 %exitcond282.not, label %._crit_edge256.us, label %47, !llvm.loop !5

.lr.ph253.us:                                     ; preds = %.preheader.us, %._crit_edge250.us
  %indvars.iv277 = phi i64 [ %indvars.iv.next278, %._crit_edge250.us ], [ 0, %.preheader.us ]
  %49 = trunc nuw nsw i64 %indvars.iv277 to i32
  %50 = call noundef i32 @_Z8index_2diii(i32 noundef %49, i32 noundef 0, i32 noundef %20)
  %51 = sext i32 %50 to i64
  %52 = getelementptr inbounds i32, ptr %7, i64 %51
  %53 = load i32, ptr %52, align 4, !tbaa !7
  %54 = call noundef i32 @_Z8index_2diii(i32 noundef %49, i32 noundef 0, i32 noundef %20)
  %55 = sext i32 %54 to i64
  %56 = getelementptr inbounds i32, ptr %8, i64 %55
  %57 = load i32, ptr %56, align 4, !tbaa !7
  %58 = call noundef i32 @_Z8index_2diii(i32 noundef %49, i32 noundef 1, i32 noundef %20)
  %59 = sext i32 %58 to i64
  %60 = getelementptr inbounds i32, ptr %7, i64 %59
  %61 = load i32, ptr %60, align 4, !tbaa !7
  %62 = call noundef i32 @_Z8index_2diii(i32 noundef %49, i32 noundef 1, i32 noundef %20)
  %63 = sext i32 %62 to i64
  %64 = getelementptr inbounds i32, ptr %8, i64 %63
  %65 = load i32, ptr %64, align 4, !tbaa !7
  %66 = call noundef i32 @_Z8index_2diii(i32 noundef %49, i32 noundef 2, i32 noundef %20)
  %67 = sext i32 %66 to i64
  %68 = getelementptr inbounds i32, ptr %7, i64 %67
  %69 = load i32, ptr %68, align 4, !tbaa !7
  %70 = call noundef i32 @_Z8index_2diii(i32 noundef %49, i32 noundef 2, i32 noundef %20)
  %71 = sext i32 %70 to i64
  %72 = getelementptr inbounds i32, ptr %8, i64 %71
  %73 = load i32, ptr %72, align 4, !tbaa !7
  br i1 %43, label %.lr.ph249.us, label %._crit_edge250.us

._crit_edge250.us:                                ; preds = %.lr.ph249.split.us265, %._crit_edge.us251.us, %.lr.ph253.us
  %indvars.iv.next278 = add nuw nsw i64 %indvars.iv277, 1
  %exitcond281.not = icmp eq i64 %indvars.iv.next278, %wide.trip.count280
  br i1 %exitcond281.not, label %._crit_edge.us266, label %.lr.ph253.us, !llvm.loop !11

.lr.ph249.split.us265:                            ; preds = %.lr.ph249.us, %.lr.ph249.split.us265
  %.1226247.us259 = phi i32 [ %82, %.lr.ph249.split.us265 ], [ 0, %.lr.ph249.us ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %27) #8
  %74 = call noundef i32 @_Z12Blocal_indexiiiiiiiiii(i32 noundef %53, i32 noundef %57, i32 noundef %69, i32 noundef %73, i32 noundef %61, i32 noundef %65, i32 noundef %.1226247.us259, i32 noundef %14, i32 noundef %15, i32 noundef %21)
  %75 = sext i32 %74 to i64
  %76 = getelementptr inbounds double, ptr %38, i64 %75
  %77 = load double, ptr %76, align 8, !tbaa !12
  %78 = call noundef i32 @_Z12Blocal_indexiiiiiiiiii(i32 noundef %53, i32 noundef %57, i32 noundef %69, i32 noundef %73, i32 noundef %61, i32 noundef %65, i32 noundef %.1226247.us259, i32 noundef %14, i32 noundef %15, i32 noundef %21)
  %79 = sext i32 %78 to i64
  %80 = getelementptr inbounds double, ptr %39, i64 %79
  %81 = load double, ptr %80, align 8, !tbaa !12
  call void @_ZNSt7complexIdEC2Edd(ptr noundef nonnull align 8 dereferenceable(16) %27, double noundef %77, double noundef %81)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #8
  %82 = add nuw nsw i32 %.1226247.us259, 1
  %exitcond274.not = icmp eq i32 %82, %21
  br i1 %exitcond274.not, label %._crit_edge250.us, label %.lr.ph249.split.us265, !llvm.loop !14

.lr.ph.us263:                                     ; preds = %47, %._crit_edge243.us
  %indvars.iv = phi i64 [ %indvars.iv.next, %._crit_edge243.us ], [ 0, %47 ]
  %83 = trunc nuw nsw i64 %indvars.iv to i32
  %84 = call noundef i32 @_Z8index_2diii(i32 noundef %83, i32 noundef 0, i32 noundef %20)
  %85 = sext i32 %84 to i64
  %86 = getelementptr inbounds i32, ptr %4, i64 %85
  %87 = load i32, ptr %86, align 4, !tbaa !7
  %88 = call noundef i32 @_Z8index_2diii(i32 noundef %83, i32 noundef 0, i32 noundef %20)
  %89 = sext i32 %88 to i64
  %90 = getelementptr inbounds i32, ptr %5, i64 %89
  %91 = load i32, ptr %90, align 4, !tbaa !7
  %92 = call noundef i32 @_Z8index_2diii(i32 noundef %83, i32 noundef 1, i32 noundef %20)
  %93 = sext i32 %92 to i64
  %94 = getelementptr inbounds i32, ptr %4, i64 %93
  %95 = load i32, ptr %94, align 4, !tbaa !7
  %96 = call noundef i32 @_Z8index_2diii(i32 noundef %83, i32 noundef 1, i32 noundef %20)
  %97 = sext i32 %96 to i64
  %98 = getelementptr inbounds i32, ptr %5, i64 %97
  %99 = load i32, ptr %98, align 4, !tbaa !7
  %100 = call noundef i32 @_Z8index_2diii(i32 noundef %83, i32 noundef 2, i32 noundef %20)
  %101 = sext i32 %100 to i64
  %102 = getelementptr inbounds i32, ptr %4, i64 %101
  %103 = load i32, ptr %102, align 4, !tbaa !7
  %104 = call noundef i32 @_Z8index_2diii(i32 noundef %83, i32 noundef 2, i32 noundef %20)
  %105 = sext i32 %104 to i64
  %106 = getelementptr inbounds i32, ptr %5, i64 %105
  %107 = load i32, ptr %106, align 4, !tbaa !7
  br i1 %43, label %.lr.ph242.us, label %._crit_edge243.us

._crit_edge243.us:                                ; preds = %.lr.ph242.split.us262, %._crit_edge.us.us, %.lr.ph.us263
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond273.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond273.not, label %.preheader.us, label %.lr.ph.us263, !llvm.loop !15

.lr.ph242.split.us262:                            ; preds = %.lr.ph242.us, %.lr.ph242.split.us262
  %.0225240.us260 = phi i32 [ %116, %.lr.ph242.split.us262 ], [ 0, %.lr.ph242.us ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %24) #8
  %108 = call noundef i32 @_Z12Blocal_indexiiiiiiiiii(i32 noundef %87, i32 noundef %91, i32 noundef %103, i32 noundef %107, i32 noundef %95, i32 noundef %99, i32 noundef %.0225240.us260, i32 noundef %14, i32 noundef %15, i32 noundef %21)
  %109 = sext i32 %108 to i64
  %110 = getelementptr inbounds double, ptr %36, i64 %109
  %111 = load double, ptr %110, align 8, !tbaa !12
  %112 = call noundef i32 @_Z12Blocal_indexiiiiiiiiii(i32 noundef %87, i32 noundef %91, i32 noundef %103, i32 noundef %107, i32 noundef %95, i32 noundef %99, i32 noundef %.0225240.us260, i32 noundef %14, i32 noundef %15, i32 noundef %21)
  %113 = sext i32 %112 to i64
  %114 = getelementptr inbounds double, ptr %37, i64 %113
  %115 = load double, ptr %114, align 8, !tbaa !12
  call void @_ZNSt7complexIdEC2Edd(ptr noundef nonnull align 8 dereferenceable(16) %24, double noundef %111, double noundef %115)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #8
  %116 = add nuw nsw i32 %.0225240.us260, 1
  %exitcond.not = icmp eq i32 %116, %21
  br i1 %exitcond.not, label %._crit_edge243.us, label %.lr.ph242.split.us262, !llvm.loop !16

.preheader.us:                                    ; preds = %._crit_edge243.us
  br i1 %42, label %.lr.ph253.us, label %._crit_edge.us266

.lr.ph242.us:                                     ; preds = %.lr.ph.us263
  %117 = getelementptr inbounds double, ptr %6, i64 %indvars.iv
  br i1 %44, label %.lr.ph.us.us, label %.lr.ph242.split.us262

.lr.ph.us.us:                                     ; preds = %.lr.ph242.us, %._crit_edge.us.us
  %.0225240.us.us = phi i32 [ %153, %._crit_edge.us.us ], [ 0, %.lr.ph242.us ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %24) #8
  %118 = call noundef i32 @_Z12Blocal_indexiiiiiiiiii(i32 noundef %87, i32 noundef %91, i32 noundef %103, i32 noundef %107, i32 noundef %95, i32 noundef %99, i32 noundef %.0225240.us.us, i32 noundef %14, i32 noundef %15, i32 noundef %21)
  %119 = sext i32 %118 to i64
  %120 = getelementptr inbounds double, ptr %36, i64 %119
  %121 = load double, ptr %120, align 8, !tbaa !12
  %122 = call noundef i32 @_Z12Blocal_indexiiiiiiiiii(i32 noundef %87, i32 noundef %91, i32 noundef %103, i32 noundef %107, i32 noundef %95, i32 noundef %99, i32 noundef %.0225240.us.us, i32 noundef %14, i32 noundef %15, i32 noundef %21)
  %123 = sext i32 %122 to i64
  %124 = getelementptr inbounds double, ptr %37, i64 %123
  %125 = load double, ptr %124, align 8, !tbaa !12
  call void @_ZNSt7complexIdEC2Edd(ptr noundef nonnull align 8 dereferenceable(16) %24, double noundef %121, double noundef %125)
  br label %126

126:                                              ; preds = %126, %.lr.ph.us.us
  %.0239.us.us = phi i32 [ 0, %.lr.ph.us.us ], [ %152, %126 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #8
  %127 = call noundef i32 @_Z8index_2diii(i32 noundef %.0228254.us, i32 noundef %.0239.us.us, i32 noundef %22)
  %128 = sext i32 %127 to i64
  %129 = getelementptr inbounds double, ptr %12, i64 %128
  %130 = load double, ptr %129, align 8, !tbaa !12
  %131 = call noundef i32 @_Z8index_2diii(i32 noundef %.0228254.us, i32 noundef %.0239.us.us, i32 noundef %22)
  %132 = sext i32 %131 to i64
  %133 = getelementptr inbounds double, ptr %13, i64 %132
  %134 = load double, ptr %133, align 8, !tbaa !12
  call void @_ZNSt7complexIdEC2Edd(ptr noundef nonnull align 8 dereferenceable(16) %25, double noundef %130, double noundef %134)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %26) #8
  %135 = call { double, double } @_ZStmlIdESt7complexIT_ERKS2_S4_(ptr noundef nonnull align 8 dereferenceable(16) %24, ptr noundef nonnull align 8 dereferenceable(16) %25)
  %136 = extractvalue { double, double } %135, 0
  store double %136, ptr %26, align 8
  %137 = extractvalue { double, double } %135, 1
  store double %137, ptr %45, align 8
  %138 = load double, ptr %117, align 8, !tbaa !12
  %139 = call noundef double @_ZSt4realIdET_RKSt7complexIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %26)
  %140 = call noundef i32 @_Z8index_4diiiiiii(i32 noundef 0, i32 noundef %.0225240.us.us, i32 noundef %.0239.us.us, i32 noundef %.0227257.us, i32 noundef %21, i32 noundef %22, i32 noundef %18)
  %141 = sext i32 %140 to i64
  %142 = getelementptr inbounds double, ptr %0, i64 %141
  %143 = load double, ptr %142, align 8, !tbaa !12
  %144 = call double @llvm.fmuladd.f64(double %138, double %139, double %143)
  store double %144, ptr %142, align 8, !tbaa !12
  %145 = load double, ptr %117, align 8, !tbaa !12
  %146 = call noundef double @_ZSt4imagIdET_RKSt7complexIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %26)
  %147 = call noundef i32 @_Z8index_4diiiiiii(i32 noundef 0, i32 noundef %.0225240.us.us, i32 noundef %.0239.us.us, i32 noundef %.0227257.us, i32 noundef %21, i32 noundef %22, i32 noundef %18)
  %148 = sext i32 %147 to i64
  %149 = getelementptr inbounds double, ptr %1, i64 %148
  %150 = load double, ptr %149, align 8, !tbaa !12
  %151 = call double @llvm.fmuladd.f64(double %145, double %146, double %150)
  store double %151, ptr %149, align 8, !tbaa !12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #8
  %152 = add nuw nsw i32 %.0239.us.us, 1
  %exitcond270.not = icmp eq i32 %152, %22
  br i1 %exitcond270.not, label %._crit_edge.us.us, label %126, !llvm.loop !17

._crit_edge.us.us:                                ; preds = %126
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #8
  %153 = add nuw nsw i32 %.0225240.us.us, 1
  %exitcond271.not = icmp eq i32 %153, %21
  br i1 %exitcond271.not, label %._crit_edge243.us, label %.lr.ph.us.us, !llvm.loop !16

.lr.ph249.us:                                     ; preds = %.lr.ph253.us
  %154 = getelementptr inbounds double, ptr %9, i64 %indvars.iv277
  br i1 %44, label %.lr.ph246.us.us, label %.lr.ph249.split.us265

.lr.ph246.us.us:                                  ; preds = %.lr.ph249.us, %._crit_edge.us251.us
  %.1226247.us.us = phi i32 [ %190, %._crit_edge.us251.us ], [ 0, %.lr.ph249.us ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %27) #8
  %155 = call noundef i32 @_Z12Blocal_indexiiiiiiiiii(i32 noundef %53, i32 noundef %57, i32 noundef %69, i32 noundef %73, i32 noundef %61, i32 noundef %65, i32 noundef %.1226247.us.us, i32 noundef %14, i32 noundef %15, i32 noundef %21)
  %156 = sext i32 %155 to i64
  %157 = getelementptr inbounds double, ptr %38, i64 %156
  %158 = load double, ptr %157, align 8, !tbaa !12
  %159 = call noundef i32 @_Z12Blocal_indexiiiiiiiiii(i32 noundef %53, i32 noundef %57, i32 noundef %69, i32 noundef %73, i32 noundef %61, i32 noundef %65, i32 noundef %.1226247.us.us, i32 noundef %14, i32 noundef %15, i32 noundef %21)
  %160 = sext i32 %159 to i64
  %161 = getelementptr inbounds double, ptr %39, i64 %160
  %162 = load double, ptr %161, align 8, !tbaa !12
  call void @_ZNSt7complexIdEC2Edd(ptr noundef nonnull align 8 dereferenceable(16) %27, double noundef %158, double noundef %162)
  br label %163

163:                                              ; preds = %163, %.lr.ph246.us.us
  %.1245.us.us = phi i32 [ 0, %.lr.ph246.us.us ], [ %189, %163 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %28) #8
  %164 = call noundef i32 @_Z8index_2diii(i32 noundef %.0228254.us, i32 noundef %.1245.us.us, i32 noundef %22)
  %165 = sext i32 %164 to i64
  %166 = getelementptr inbounds double, ptr %12, i64 %165
  %167 = load double, ptr %166, align 8, !tbaa !12
  %168 = call noundef i32 @_Z8index_2diii(i32 noundef %.0228254.us, i32 noundef %.1245.us.us, i32 noundef %22)
  %169 = sext i32 %168 to i64
  %170 = getelementptr inbounds double, ptr %13, i64 %169
  %171 = load double, ptr %170, align 8, !tbaa !12
  call void @_ZNSt7complexIdEC2Edd(ptr noundef nonnull align 8 dereferenceable(16) %28, double noundef %167, double noundef %171)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %29) #8
  %172 = call { double, double } @_ZStmlIdESt7complexIT_ERKS2_S4_(ptr noundef nonnull align 8 dereferenceable(16) %27, ptr noundef nonnull align 8 dereferenceable(16) %28)
  %173 = extractvalue { double, double } %172, 0
  store double %173, ptr %29, align 8
  %174 = extractvalue { double, double } %172, 1
  store double %174, ptr %46, align 8
  %175 = load double, ptr %154, align 8, !tbaa !12
  %176 = call noundef double @_ZSt4realIdET_RKSt7complexIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %29)
  %177 = call noundef i32 @_Z8index_4diiiiiii(i32 noundef 1, i32 noundef %.1226247.us.us, i32 noundef %.1245.us.us, i32 noundef %.0227257.us, i32 noundef %21, i32 noundef %22, i32 noundef %18)
  %178 = sext i32 %177 to i64
  %179 = getelementptr inbounds double, ptr %0, i64 %178
  %180 = load double, ptr %179, align 8, !tbaa !12
  %181 = call double @llvm.fmuladd.f64(double %175, double %176, double %180)
  store double %181, ptr %179, align 8, !tbaa !12
  %182 = load double, ptr %154, align 8, !tbaa !12
  %183 = call noundef double @_ZSt4imagIdET_RKSt7complexIS0_E(ptr noundef nonnull align 8 dereferenceable(16) %29)
  %184 = call noundef i32 @_Z8index_4diiiiiii(i32 noundef 1, i32 noundef %.1226247.us.us, i32 noundef %.1245.us.us, i32 noundef %.0227257.us, i32 noundef %21, i32 noundef %22, i32 noundef %18)
  %185 = sext i32 %184 to i64
  %186 = getelementptr inbounds double, ptr %1, i64 %185
  %187 = load double, ptr %186, align 8, !tbaa !12
  %188 = call double @llvm.fmuladd.f64(double %182, double %183, double %187)
  store double %188, ptr %186, align 8, !tbaa !12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #8
  %189 = add nuw nsw i32 %.1245.us.us, 1
  %exitcond275.not = icmp eq i32 %189, %22
  br i1 %exitcond275.not, label %._crit_edge.us251.us, label %163, !llvm.loop !18

._crit_edge.us251.us:                             ; preds = %163
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #8
  %190 = add nuw nsw i32 %.1226247.us.us, 1
  %exitcond276.not = icmp eq i32 %190, %21
  br i1 %exitcond276.not, label %._crit_edge250.us, label %.lr.ph246.us.us, !llvm.loop !14

._crit_edge256.us:                                ; preds = %._crit_edge.us266
  %191 = add nuw nsw i32 %.0227257.us, 1
  %exitcond283.not = icmp eq i32 %191, %18
  br i1 %exitcond283.not, label %._crit_edge258, label %.preheader238.us, !llvm.loop !19

._crit_edge258:                                   ; preds = %._crit_edge256.us, %.preheader238.lr.ph, %23
  call void @free(ptr noundef %36) #8
  call void @free(ptr noundef %37) #8
  call void @free(ptr noundef %38) #8
  call void @free(ptr noundef %39) #8
  ret void
}

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


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass