; LLVM IR from sympiler/nasoq :: src/symbolic (supernode_detection)

; 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.nasoq::sympiler_CSC" = type { i64, i64, i64, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32 }
%"struct.nasoq::Sympiler_BCSC" = type { i64, i64, ptr, ptr, ptr, i64, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i64, i64, i64, i64, i64, i64, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32 }

@.str.1 = external hidden unnamed_addr constant [85 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [14 x i8], align 1
@__PRETTY_FUNCTION__._ZN5nasoq20super_node_detectionEiPNS_12sympiler_CSCES1_PiS2_PNS_13Sympiler_BCSCES2_PdS2_i = external hidden unnamed_addr constant [102 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [17 x i8], align 1

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

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 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

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

115:                                              ; preds = %10
  store i32 0, ptr %11, align 4
  store i32 1, ptr %97, align 4
  br label %1398

116:                                              ; preds = %10
  %117 = load i32, ptr %68, align 4, !tbaa !5
  %118 = icmp eq i32 %117, 0
  br i1 %118, label %119, label %120

119:                                              ; preds = %116
  br label %120

120:                                              ; preds = %119, %116
  store i32 1, ptr %21, align 4, !tbaa !5
  %121 = load ptr, ptr %13, align 8, !tbaa !9
  %122 = getelementptr inbounds %"struct.nasoq::sympiler_CSC", ptr %121, i32 0, i32 0
  %123 = load i64, ptr %122, align 8, !tbaa !14
  %124 = trunc i64 %123 to i32
  store i32 %124, ptr %53, align 4, !tbaa !5
  %125 = load i32, ptr %53, align 4, !tbaa !5
  %126 = sext i32 %125 to i64
  %127 = call noundef i64 @_ZN5nasoq11mult_size_tEmmPi(i64 noundef %126, i64 noundef 4, ptr noundef %90)
  store i64 %127, ptr %89, align 8, !tbaa !15
  %128 = load i32, ptr %90, align 4, !tbaa !5
  %129 = icmp ne i32 %128, 0
  br i1 %129, label %131, label %130

130:                                              ; preds = %120
  store i32 0, ptr %11, align 4
  store i32 1, ptr %97, align 4
  br label %1398

131:                                              ; preds = %120
  %132 = load ptr, ptr %17, align 8, !tbaa !9
  %133 = getelementptr inbounds %"struct.nasoq::Sympiler_BCSC", ptr %132, i32 0, i32 36
  store i32 0, ptr %133, align 4, !tbaa !16
  %134 = load ptr, ptr %13, align 8, !tbaa !9
  %135 = getelementptr inbounds %"struct.nasoq::sympiler_CSC", ptr %134, i32 0, i32 3
  %136 = load ptr, ptr %135, align 8, !tbaa !18
  store ptr %136, ptr %34, align 8, !tbaa !9
  %137 = load ptr, ptr %13, align 8, !tbaa !9
  %138 = getelementptr inbounds %"struct.nasoq::sympiler_CSC", ptr %137, i32 0, i32 4
  %139 = load ptr, ptr %138, align 8, !tbaa !19
  store ptr %139, ptr %35, align 8, !tbaa !9
  %140 = load ptr, ptr %13, align 8, !tbaa !9
  %141 = getelementptr inbounds %"struct.nasoq::sympiler_CSC", ptr %140, i32 0, i32 5
  %142 = load ptr, ptr %141, align 8, !tbaa !20
  store ptr %142, ptr %41, align 8, !tbaa !9
  %143 = load i32, ptr %68, align 4, !tbaa !5
  %144 = icmp ne i32 %143, 0
  br i1 %144, label %145, label %146

145:                                              ; preds = %131
  store ptr null, ptr %46, align 8, !tbaa !9
  store ptr null, ptr %47, align 8, !tbaa !9
  store ptr null, ptr %40, align 8, !tbaa !9
  store i32 1, ptr %63, align 4, !tbaa !5
  br label %159

146:                                              ; preds = %131
  %147 = load ptr, ptr %14, align 8, !tbaa !9
  %148 = getelementptr inbounds %"struct.nasoq::sympiler_CSC", ptr %147, i32 0, i32 3
  %149 = load ptr, ptr %148, align 8, !tbaa !18
  store ptr %149, ptr %46, align 8, !tbaa !9
  %150 = load ptr, ptr %14, align 8, !tbaa !9
  %151 = getelementptr inbounds %"struct.nasoq::sympiler_CSC", ptr %150, i32 0, i32 4
  %152 = load ptr, ptr %151, align 8, !tbaa !19
  store ptr %152, ptr %47, align 8, !tbaa !9
  %153 = load ptr, ptr %14, align 8, !tbaa !9
  %154 = getelementptr inbounds %"struct.nasoq::sympiler_CSC", ptr %153, i32 0, i32 5
  %155 = load ptr, ptr %154, align 8, !tbaa !20
  store ptr %155, ptr %40, align 8, !tbaa !9
  %156 = load ptr, ptr %14, align 8, !tbaa !9
  %157 = getelementptr inbounds %"struct.nasoq::sympiler_CSC", ptr %156, i32 0, i32 13
  %158 = load i32, ptr %157, align 4, !tbaa !21
  store i32 %158, ptr %63, align 4, !tbaa !5
  br label %159

159:                                              ; preds = %146, %145
  %160 = load ptr, ptr %17, align 8, !tbaa !9
  %161 = getelementptr inbounds %"struct.nasoq::Sympiler_BCSC", ptr %160, i32 0, i32 3
  %162 = load ptr, ptr %161, align 8, !tbaa !22
  store ptr %162, ptr %48, align 8, !tbaa !9
  %163 = load ptr, ptr %18, align 8, !tbaa !9
  %164 = getelementptr inbounds i32, ptr %163, i64 0
  %165 = load i32, ptr %164, align 4, !tbaa !5
  store i32 %165, ptr %85, align 4, !tbaa !5
  %166 = load ptr, ptr %18, align 8, !tbaa !9
  %167 = getelementptr inbounds i32, ptr %166, i64 1
  %168 = load i32, ptr %167, align 4, !tbaa !5
  store i32 %168, ptr %86, align 4, !tbaa !5
  %169 = load ptr, ptr %18, align 8, !tbaa !9
  %170 = getelementptr inbounds i32, ptr %169, i64 2
  %171 = load i32, ptr %170, align 4, !tbaa !5
  store i32 %171, ptr %87, align 4, !tbaa !5
  %172 = load ptr, ptr %19, align 8, !tbaa !9
  %173 = getelementptr inbounds double, ptr %172, i64 0
  %174 = load double, ptr %173, align 8, !tbaa !23
  store double %174, ptr %22, align 8, !tbaa !23
  %175 = load ptr, ptr %19, align 8, !tbaa !9
  %176 = getelementptr inbounds double, ptr %175, i64 1
  %177 = load double, ptr %176, align 8, !tbaa !23
  store double %177, ptr %23, align 8, !tbaa !23
  %178 = load ptr, ptr %19, align 8, !tbaa !9
  %179 = getelementptr inbounds double, ptr %178, i64 2
  %180 = load double, ptr %179, align 8, !tbaa !23
  store double %180, ptr %24, align 8, !tbaa !23
  %181 = load i64, ptr %89, align 8, !tbaa !15
  %182 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %181, i64 4)
  %183 = extractvalue { i64, i1 } %182, 1
  %184 = extractvalue { i64, i1 } %182, 0
  %185 = select i1 %183, i64 -1, i64 %184
  %186 = call noalias noundef nonnull ptr @_Znam(i64 noundef %185) #10
  call void @llvm.memset.p0.i64(ptr align 4 %186, i8 0, i64 %185, i1 false)
  store ptr %186, ptr %50, align 8, !tbaa !9
  %187 = load ptr, ptr %50, align 8, !tbaa !9
  store ptr %187, ptr %30, align 8, !tbaa !9
  %188 = load ptr, ptr %50, align 8, !tbaa !9
  %189 = load i32, ptr %53, align 4, !tbaa !5
  %190 = sext i32 %189 to i64
  %191 = getelementptr inbounds i32, ptr %188, i64 %190
  store ptr %191, ptr %31, align 8, !tbaa !9
  %192 = load ptr, ptr %50, align 8, !tbaa !9
  %193 = load i32, ptr %53, align 4, !tbaa !5
  %194 = sext i32 %193 to i64
  %195 = mul i64 2, %194
  %196 = getelementptr inbounds i32, ptr %192, i64 %195
  store ptr %196, ptr %33, align 8, !tbaa !9
  %197 = load ptr, ptr %50, align 8, !tbaa !9
  %198 = load i32, ptr %53, align 4, !tbaa !5
  %199 = sext i32 %198 to i64
  %200 = mul i64 3, %199
  %201 = getelementptr inbounds i32, ptr %197, i64 %200
  store ptr %201, ptr %43, align 8, !tbaa !9
  %202 = load i32, ptr %53, align 4, !tbaa !5
  %203 = sext i32 %202 to i64
  %204 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %203, i64 4)
  %205 = extractvalue { i64, i1 } %204, 1
  %206 = extractvalue { i64, i1 } %204, 0
  %207 = select i1 %205, i64 -1, i64 %206
  %208 = call noalias noundef nonnull ptr @_Znam(i64 noundef %207) #10
  call void @llvm.memset.p0.i64(ptr align 4 %208, i8 0, i64 %207, i1 false)
  store ptr %208, ptr %36, align 8, !tbaa !9
  %209 = load i32, ptr %53, align 4, !tbaa !5
  %210 = add nsw i32 %209, 1
  %211 = sext i32 %210 to i64
  %212 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %211, i64 4)
  %213 = extractvalue { i64, i1 } %212, 1
  %214 = extractvalue { i64, i1 } %212, 0
  %215 = select i1 %213, i64 -1, i64 %214
  %216 = call noalias noundef nonnull ptr @_Znam(i64 noundef %215) #10
  call void @llvm.memset.p0.i64(ptr align 4 %216, i8 0, i64 %215, i1 false)
  store ptr %216, ptr %37, align 8, !tbaa !9
  store i32 0, ptr %54, align 4, !tbaa !5
  br label %217

217:                                              ; preds = %226, %159
  %218 = load i32, ptr %54, align 4, !tbaa !5
  %219 = load i32, ptr %53, align 4, !tbaa !5
  %220 = icmp slt i32 %218, %219
  br i1 %220, label %221, label %229

221:                                              ; preds = %217
  %222 = load ptr, ptr %30, align 8, !tbaa !9
  %223 = load i32, ptr %54, align 4, !tbaa !5
  %224 = sext i32 %223 to i64
  %225 = getelementptr inbounds i32, ptr %222, i64 %224
  store i32 0, ptr %225, align 4, !tbaa !5
  br label %226

226:                                              ; preds = %221
  %227 = load i32, ptr %54, align 4, !tbaa !5
  %228 = add nsw i32 %227, 1
  store i32 %228, ptr %54, align 4, !tbaa !5
  br label %217, !llvm.loop !25

229:                                              ; preds = %217
  store i32 0, ptr %54, align 4, !tbaa !5
  br label %230

230:                                              ; preds = %250, %229
  %231 = load i32, ptr %54, align 4, !tbaa !5
  %232 = load i32, ptr %53, align 4, !tbaa !5
  %233 = icmp slt i32 %231, %232
  br i1 %233, label %234, label %253

234:                                              ; preds = %230
  %235 = load ptr, ptr %15, align 8, !tbaa !9
  %236 = load i32, ptr %54, align 4, !tbaa !5
  %237 = sext i32 %236 to i64
  %238 = getelementptr inbounds i32, ptr %235, i64 %237
  %239 = load i32, ptr %238, align 4, !tbaa !5
  store i32 %239, ptr %58, align 4, !tbaa !5
  %240 = load i32, ptr %58, align 4, !tbaa !5
  %241 = icmp ne i32 %240, -1
  br i1 %241, label %242, label %249

242:                                              ; preds = %234
  %243 = load ptr, ptr %30, align 8, !tbaa !9
  %244 = load i32, ptr %58, align 4, !tbaa !5
  %245 = sext i32 %244 to i64
  %246 = getelementptr inbounds i32, ptr %243, i64 %245
  %247 = load i32, ptr %246, align 4, !tbaa !5
  %248 = add nsw i32 %247, 1
  store i32 %248, ptr %246, align 4, !tbaa !5
  br label %249

249:                                              ; preds = %242, %234
  br label %250

250:                                              ; preds = %249
  %251 = load i32, ptr %54, align 4, !tbaa !5
  %252 = add nsw i32 %251, 1
  store i32 %252, ptr %54, align 4, !tbaa !5
  br label %230, !llvm.loop !27

253:                                              ; preds = %230
  %254 = load ptr, ptr %37, align 8, !tbaa !9
  store ptr %254, ptr %32, align 8, !tbaa !9
  %255 = load i32, ptr %53, align 4, !tbaa !5
  %256 = icmp eq i32 %255, 0
  %257 = zext i1 %256 to i64
  %258 = select i1 %256, i32 0, i32 1
  store i32 %258, ptr %78, align 4, !tbaa !5
  %259 = load ptr, ptr %32, align 8, !tbaa !9
  %260 = getelementptr inbounds i32, ptr %259, i64 0
  store i32 0, ptr %260, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #9
  %261 = load i32, ptr %53, align 4, !tbaa !5
  %262 = sext i32 %261 to i64
  %263 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %262, i64 4)
  %264 = extractvalue { i64, i1 } %263, 1
  %265 = extractvalue { i64, i1 } %263, 0
  %266 = select i1 %264, i64 -1, i64 %265
  %267 = call noalias noundef nonnull ptr @_Znam(i64 noundef %266) #10
  call void @llvm.memset.p0.i64(ptr align 4 %267, i8 0, i64 %266, i1 false)
  store ptr %267, ptr %98, align 8, !tbaa !9
  store i32 1, ptr %54, align 4, !tbaa !5
  br label %268

268:                                              ; preds = %346, %253
  %269 = load i32, ptr %54, align 4, !tbaa !5
  %270 = load i32, ptr %53, align 4, !tbaa !5
  %271 = icmp slt i32 %269, %270
  br i1 %271, label %272, label %349

272:                                              ; preds = %268
  %273 = load ptr, ptr %15, align 8, !tbaa !9
  %274 = load i32, ptr %54, align 4, !tbaa !5
  %275 = sub nsw i32 %274, 1
  %276 = sext i32 %275 to i64
  %277 = getelementptr inbounds i32, ptr %273, i64 %276
  %278 = load i32, ptr %277, align 4, !tbaa !5
  %279 = load i32, ptr %54, align 4, !tbaa !5
  %280 = icmp ne i32 %278, %279
  br i1 %280, label %317, label %281

281:                                              ; preds = %272
  %282 = load ptr, ptr %48, align 8, !tbaa !9
  %283 = load i32, ptr %54, align 4, !tbaa !5
  %284 = sub nsw i32 %283, 1
  %285 = sext i32 %284 to i64
  %286 = getelementptr inbounds i32, ptr %282, i64 %285
  %287 = load i32, ptr %286, align 4, !tbaa !5
  %288 = load ptr, ptr %48, align 8, !tbaa !9
  %289 = load i32, ptr %54, align 4, !tbaa !5
  %290 = sext i32 %289 to i64
  %291 = getelementptr inbounds i32, ptr %288, i64 %290
  %292 = load i32, ptr %291, align 4, !tbaa !5
  %293 = add nsw i32 %292, 1
  %294 = icmp ne i32 %287, %293
  br i1 %294, label %317, label %295

295:                                              ; preds = %281
  %296 = load ptr, ptr %30, align 8, !tbaa !9
  %297 = load i32, ptr %54, align 4, !tbaa !5
  %298 = sext i32 %297 to i64
  %299 = getelementptr inbounds i32, ptr %296, i64 %298
  %300 = load i32, ptr %299, align 4, !tbaa !5
  %301 = icmp sgt i32 %300, 1
  br i1 %301, label %317, label %302

302:                                              ; preds = %295
  %303 = load ptr, ptr %16, align 8, !tbaa !9
  %304 = load i32, ptr %54, align 4, !tbaa !5
  %305 = sext i32 %304 to i64
  %306 = getelementptr inbounds i32, ptr %303, i64 %305
  %307 = load i32, ptr %306, align 4, !tbaa !5
  %308 = icmp eq i32 %307, 1
  br i1 %308, label %317, label %309

309:                                              ; preds = %302
  %310 = load ptr, ptr %16, align 8, !tbaa !9
  %311 = load i32, ptr %54, align 4, !tbaa !5
  %312 = sub nsw i32 %311, 1
  %313 = sext i32 %312 to i64
  %314 = getelementptr inbounds i32, ptr %310, i64 %313
  %315 = load i32, ptr %314, align 4, !tbaa !5
  %316 = icmp eq i32 %315, 1
  br i1 %316, label %317, label %345

317:                                              ; preds = %309, %302, %295, %281, %272
  %318 = load i32, ptr %54, align 4, !tbaa !5
  %319 = load ptr, ptr %32, align 8, !tbaa !9
  %320 = load i32, ptr %78, align 4, !tbaa !5
  %321 = add nsw i32 %320, 1
  store i32 %321, ptr %78, align 4, !tbaa !5
  %322 = sext i32 %320 to i64
  %323 = getelementptr inbounds i32, ptr %319, i64 %322
  store i32 %318, ptr %323, align 4, !tbaa !5
  %324 = load ptr, ptr %16, align 8, !tbaa !9
  %325 = load i32, ptr %54, align 4, !tbaa !5
  %326 = sext i32 %325 to i64
  %327 = getelementptr inbounds i32, ptr %324, i64 %326
  %328 = load i32, ptr %327, align 4, !tbaa !5
  %329 = icmp eq i32 %328, 1
  br i1 %329, label %338, label %330

330:                                              ; preds = %317
  %331 = load ptr, ptr %16, align 8, !tbaa !9
  %332 = load i32, ptr %54, align 4, !tbaa !5
  %333 = sub nsw i32 %332, 1
  %334 = sext i32 %333 to i64
  %335 = getelementptr inbounds i32, ptr %331, i64 %334
  %336 = load i32, ptr %335, align 4, !tbaa !5
  %337 = icmp eq i32 %336, 1
  br i1 %337, label %338, label %344

338:                                              ; preds = %330, %317
  %339 = load ptr, ptr %98, align 8, !tbaa !9
  %340 = load i32, ptr %78, align 4, !tbaa !5
  %341 = sub nsw i32 %340, 1
  %342 = sext i32 %341 to i64
  %343 = getelementptr inbounds i32, ptr %339, i64 %342
  store i32 1, ptr %343, align 4, !tbaa !5
  br label %344

344:                                              ; preds = %338, %330
  br label %345

345:                                              ; preds = %344, %309
  br label %346

346:                                              ; preds = %345
  %347 = load i32, ptr %54, align 4, !tbaa !5
  %348 = add nsw i32 %347, 1
  store i32 %348, ptr %54, align 4, !tbaa !5
  br label %268, !llvm.loop !28

349:                                              ; preds = %268
  %350 = load i32, ptr %53, align 4, !tbaa !5
  %351 = load ptr, ptr %32, align 8, !tbaa !9
  %352 = load i32, ptr %78, align 4, !tbaa !5
  %353 = sext i32 %352 to i64
  %354 = getelementptr inbounds i32, ptr %351, i64 %353
  store i32 %350, ptr %354, align 4, !tbaa !5
  %355 = load ptr, ptr %30, align 8, !tbaa !9
  store ptr %355, ptr %44, align 8, !tbaa !9
  %356 = load ptr, ptr %31, align 8, !tbaa !9
  store ptr %356, ptr %42, align 8, !tbaa !9
  store i32 0, ptr %56, align 4, !tbaa !5
  br label %357

357:                                              ; preds = %386, %349
  %358 = load i32, ptr %56, align 4, !tbaa !5
  %359 = load i32, ptr %78, align 4, !tbaa !5
  %360 = icmp slt i32 %358, %359
  br i1 %360, label %361, label %389

361:                                              ; preds = %357
  %362 = load ptr, ptr %32, align 8, !tbaa !9
  %363 = load i32, ptr %56, align 4, !tbaa !5
  %364 = sext i32 %363 to i64
  %365 = getelementptr inbounds i32, ptr %362, i64 %364
  %366 = load i32, ptr %365, align 4, !tbaa !5
  store i32 %366, ptr %55, align 4, !tbaa !5
  br label %367

367:                                              ; preds = %382, %361
  %368 = load i32, ptr %55, align 4, !tbaa !5
  %369 = load ptr, ptr %32, align 8, !tbaa !9
  %370 = load i32, ptr %56, align 4, !tbaa !5
  %371 = add nsw i32 %370, 1
  %372 = sext i32 %371 to i64
  %373 = getelementptr inbounds i32, ptr %369, i64 %372
  %374 = load i32, ptr %373, align 4, !tbaa !5
  %375 = icmp slt i32 %368, %374
  br i1 %375, label %376, label %385

376:                                              ; preds = %367
  %377 = load i32, ptr %56, align 4, !tbaa !5
  %378 = load ptr, ptr %42, align 8, !tbaa !9
  %379 = load i32, ptr %55, align 4, !tbaa !5
  %380 = sext i32 %379 to i64
  %381 = getelementptr inbounds i32, ptr %378, i64 %380
  store i32 %377, ptr %381, align 4, !tbaa !5
  br label %382

382:                                              ; preds = %376
  %383 = load i32, ptr %55, align 4, !tbaa !5
  %384 = add nsw i32 %383, 1
  store i32 %384, ptr %55, align 4, !tbaa !5
  br label %367, !llvm.loop !29

385:                                              ; preds = %367
  br label %386

386:                                              ; preds = %385
  %387 = load i32, ptr %56, align 4, !tbaa !5
  %388 = add nsw i32 %387, 1
  store i32 %388, ptr %56, align 4, !tbaa !5
  br label %357, !llvm.loop !30

389:                                              ; preds = %357
  store i32 0, ptr %56, align 4, !tbaa !5
  br label %390

390:                                              ; preds = %422, %389
  %391 = load i32, ptr %56, align 4, !tbaa !5
  %392 = load i32, ptr %78, align 4, !tbaa !5
  %393 = icmp slt i32 %391, %392
  br i1 %393, label %394, label %425

394:                                              ; preds = %390
  %395 = load ptr, ptr %32, align 8, !tbaa !9
  %396 = load i32, ptr %56, align 4, !tbaa !5
  %397 = add nsw i32 %396, 1
  %398 = sext i32 %397 to i64
  %399 = getelementptr inbounds i32, ptr %395, i64 %398
  %400 = load i32, ptr %399, align 4, !tbaa !5
  %401 = sub nsw i32 %400, 1
  store i32 %401, ptr %54, align 4, !tbaa !5
  %402 = load ptr, ptr %15, align 8, !tbaa !9
  %403 = load i32, ptr %54, align 4, !tbaa !5
  %404 = sext i32 %403 to i64
  %405 = getelementptr inbounds i32, ptr %402, i64 %404
  %406 = load i32, ptr %405, align 4, !tbaa !5
  store i32 %406, ptr %58, align 4, !tbaa !5
  %407 = load i32, ptr %58, align 4, !tbaa !5
  %408 = icmp eq i32 %407, -1
  br i1 %408, label %409, label %410

409:                                              ; preds = %394
  br label %416

410:                                              ; preds = %394
  %411 = load ptr, ptr %42, align 8, !tbaa !9
  %412 = load i32, ptr %58, align 4, !tbaa !5
  %413 = sext i32 %412 to i64
  %414 = getelementptr inbounds i32, ptr %411, i64 %413
  %415 = load i32, ptr %414, align 4, !tbaa !5
  br label %416

416:                                              ; preds = %410, %409
  %417 = phi i32 [ -1, %409 ], [ %415, %410 ]
  %418 = load ptr, ptr %20, align 8, !tbaa !9
  %419 = load i32, ptr %56, align 4, !tbaa !5
  %420 = sext i32 %419 to i64
  %421 = getelementptr inbounds i32, ptr %418, i64 %420
  store i32 %417, ptr %421, align 4, !tbaa !5
  br label %422

422:                                              ; preds = %416
  %423 = load i32, ptr %56, align 4, !tbaa !5
  %424 = add nsw i32 %423, 1
  store i32 %424, ptr %56, align 4, !tbaa !5
  br label %390, !llvm.loop !31

425:                                              ; preds = %390
  %426 = load ptr, ptr %31, align 8, !tbaa !9
  store ptr %426, ptr %45, align 8, !tbaa !9
  store i32 0, ptr %56, align 4, !tbaa !5
  br label %427

427:                                              ; preds = %480, %425
  %428 = load i32, ptr %56, align 4, !tbaa !5
  %429 = load i32, ptr %78, align 4, !tbaa !5
  %430 = icmp slt i32 %428, %429
  br i1 %430, label %431, label %483

431:                                              ; preds = %427
  %432 = load ptr, ptr %43, align 8, !tbaa !9
  %433 = load i32, ptr %56, align 4, !tbaa !5
  %434 = sext i32 %433 to i64
  %435 = getelementptr inbounds i32, ptr %432, i64 %434
  store i32 -1, ptr %435, align 4, !tbaa !5
  %436 = load ptr, ptr %32, align 8, !tbaa !9
  %437 = load i32, ptr %56, align 4, !tbaa !5
  %438 = add nsw i32 %437, 1
  %439 = sext i32 %438 to i64
  %440 = getelementptr inbounds i32, ptr %436, i64 %439
  %441 = load i32, ptr %440, align 4, !tbaa !5
  %442 = load ptr, ptr %32, align 8, !tbaa !9
  %443 = load i32, ptr %56, align 4, !tbaa !5
  %444 = sext i32 %443 to i64
  %445 = getelementptr inbounds i32, ptr %442, i64 %444
  %446 = load i32, ptr %445, align 4, !tbaa !5
  %447 = sub nsw i32 %441, %446
  %448 = load ptr, ptr %44, align 8, !tbaa !9
  %449 = load i32, ptr %56, align 4, !tbaa !5
  %450 = sext i32 %449 to i64
  %451 = getelementptr inbounds i32, ptr %448, i64 %450
  store i32 %447, ptr %451, align 4, !tbaa !5
  %452 = load ptr, ptr %45, align 8, !tbaa !9
  %453 = load i32, ptr %56, align 4, !tbaa !5
  %454 = sext i32 %453 to i64
  %455 = getelementptr inbounds i32, ptr %452, i64 %454
  store i32 0, ptr %455, align 4, !tbaa !5
  %456 = load i32, ptr %56, align 4, !tbaa !5
  %457 = load ptr, ptr %32, align 8, !tbaa !9
  %458 = load i32, ptr %56, align 4, !tbaa !5
  %459 = sext i32 %458 to i64
  %460 = getelementptr inbounds i32, ptr %457, i64 %459
  %461 = load i32, ptr %460, align 4, !tbaa !5
  %462 = icmp sle i32 %456, %461
  br i1 %462, label %463, label %464

463:                                              ; preds = %431
  br label %466

464:                                              ; preds = %431
  call void @__assert_fail(ptr noundef @.str.2, ptr noundef @.str.1, i32 noundef 273, ptr noundef @__PRETTY_FUNCTION__._ZN5nasoq20super_node_detectionEiPNS_12sympiler_CSCES1_PiS2_PNS_13Sympiler_BCSCES2_PdS2_i) #11
  unreachable

465:                                              ; No predecessors!
  br label %466

466:                                              ; preds = %465, %463
  %467 = load ptr, ptr %48, align 8, !tbaa !9
  %468 = load ptr, ptr %32, align 8, !tbaa !9
  %469 = load i32, ptr %56, align 4, !tbaa !5
  %470 = sext i32 %469 to i64
  %471 = getelementptr inbounds i32, ptr %468, i64 %470
  %472 = load i32, ptr %471, align 4, !tbaa !5
  %473 = sext i32 %472 to i64
  %474 = getelementptr inbounds i32, ptr %467, i64 %473
  %475 = load i32, ptr %474, align 4, !tbaa !5
  %476 = load ptr, ptr %33, align 8, !tbaa !9
  %477 = load i32, ptr %56, align 4, !tbaa !5
  %478 = sext i32 %477 to i64
  %479 = getelementptr inbounds i32, ptr %476, i64 %478
  store i32 %475, ptr %479, align 4, !tbaa !5
  br label %480

480:                                              ; preds = %466
  %481 = load i32, ptr %56, align 4, !tbaa !5
  %482 = add nsw i32 %481, 1
  store i32 %482, ptr %56, align 4, !tbaa !5
  br label %427, !llvm.loop !32

483:                                              ; preds = %427
  %484 = load i32, ptr %78, align 4, !tbaa !5
  %485 = sub nsw i32 %484, 2
  store i32 %485, ptr %56, align 4, !tbaa !5
  br label %486

486:                                              ; preds = %751, %483
  %487 = load i32, ptr %56, align 4, !tbaa !5
  %488 = icmp sge i32 %487, 0
  br i1 %488, label %489, label %754

489:                                              ; preds = %486
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #9
  %490 = load ptr, ptr %20, align 8, !tbaa !9
  %491 = load i32, ptr %56, align 4, !tbaa !5
  %492 = sext i32 %491 to i64
  %493 = getelementptr inbounds i32, ptr %490, i64 %492
  %494 = load i32, ptr %493, align 4, !tbaa !5
  store i32 %494, ptr %74, align 4, !tbaa !5
  %495 = load i32, ptr %74, align 4, !tbaa !5
  %496 = icmp eq i32 %495, -1
  br i1 %496, label %497, label %498

497:                                              ; preds = %489
  store i32 25, ptr %97, align 4
  br label %748

498:                                              ; preds = %489
  %499 = load ptr, ptr %98, align 8, !tbaa !9
  %500 = load i32, ptr %56, align 4, !tbaa !5
  %501 = sext i32 %500 to i64
  %502 = getelementptr inbounds i32, ptr %499, i64 %501
  %503 = load i32, ptr %502, align 4, !tbaa !5
  %504 = icmp ne i32 %503, 0
  br i1 %504, label %513, label %505

505:                                              ; preds = %498
  %506 = load ptr, ptr %98, align 8, !tbaa !9
  %507 = load i32, ptr %56, align 4, !tbaa !5
  %508 = add nsw i32 %507, 1
  %509 = sext i32 %508 to i64
  %510 = getelementptr inbounds i32, ptr %506, i64 %509
  %511 = load i32, ptr %510, align 4, !tbaa !5
  %512 = icmp ne i32 %511, 0
  br i1 %512, label %513, label %514

513:                                              ; preds = %505, %498
  store i32 25, ptr %97, align 4
  br label %748

514:                                              ; preds = %505
  %515 = load ptr, ptr %20, align 8, !tbaa !9
  %516 = load i32, ptr %56, align 4, !tbaa !5
  %517 = sext i32 %516 to i64
  %518 = getelementptr inbounds i32, ptr %515, i64 %517
  %519 = load i32, ptr %518, align 4, !tbaa !5
  store i32 %519, ptr %74, align 4, !tbaa !5
  br label %520

520:                                              ; preds = %528, %514
  %521 = load ptr, ptr %43, align 8, !tbaa !9
  %522 = load i32, ptr %74, align 4, !tbaa !5
  %523 = sext i32 %522 to i64
  %524 = getelementptr inbounds i32, ptr %521, i64 %523
  %525 = load i32, ptr %524, align 4, !tbaa !5
  %526 = icmp ne i32 %525, -1
  br i1 %526, label %527, label %534

527:                                              ; preds = %520
  br label %528

528:                                              ; preds = %527
  %529 = load ptr, ptr %43, align 8, !tbaa !9
  %530 = load i32, ptr %74, align 4, !tbaa !5
  %531 = sext i32 %530 to i64
  %532 = getelementptr inbounds i32, ptr %529, i64 %531
  %533 = load i32, ptr %532, align 4, !tbaa !5
  store i32 %533, ptr %74, align 4, !tbaa !5
  br label %520, !llvm.loop !33

534:                                              ; preds = %520
  %535 = load i32, ptr %74, align 4, !tbaa !5
  store i32 %535, ptr %69, align 4, !tbaa !5
  %536 = load ptr, ptr %20, align 8, !tbaa !9
  %537 = load i32, ptr %56, align 4, !tbaa !5
  %538 = sext i32 %537 to i64
  %539 = getelementptr inbounds i32, ptr %536, i64 %538
  %540 = load i32, ptr %539, align 4, !tbaa !5
  store i32 %540, ptr %74, align 4, !tbaa !5
  br label %541

541:                                              ; preds = %559, %534
  %542 = load ptr, ptr %43, align 8, !tbaa !9
  %543 = load i32, ptr %74, align 4, !tbaa !5
  %544 = sext i32 %543 to i64
  %545 = getelementptr inbounds i32, ptr %542, i64 %544
  %546 = load i32, ptr %545, align 4, !tbaa !5
  %547 = icmp ne i32 %546, -1
  br i1 %547, label %548, label %561

548:                                              ; preds = %541
  %549 = load ptr, ptr %43, align 8, !tbaa !9
  %550 = load i32, ptr %74, align 4, !tbaa !5
  %551 = sext i32 %550 to i64
  %552 = getelementptr inbounds i32, ptr %549, i64 %551
  %553 = load i32, ptr %552, align 4, !tbaa !5
  store i32 %553, ptr %82, align 4, !tbaa !5
  %554 = load i32, ptr %69, align 4, !tbaa !5
  %555 = load ptr, ptr %43, align 8, !tbaa !9
  %556 = load i32, ptr %74, align 4, !tbaa !5
  %557 = sext i32 %556 to i64
  %558 = getelementptr inbounds i32, ptr %555, i64 %557
  store i32 %554, ptr %558, align 4, !tbaa !5
  br label %559

559:                                              ; preds = %548
  %560 = load i32, ptr %82, align 4, !tbaa !5
  store i32 %560, ptr %74, align 4, !tbaa !5
  br label %541, !llvm.loop !34

561:                                              ; preds = %541
  %562 = load i32, ptr %69, align 4, !tbaa !5
  %563 = load i32, ptr %56, align 4, !tbaa !5
  %564 = add nsw i32 %563, 1
  %565 = icmp ne i32 %562, %564
  br i1 %565, label %566, label %567

566:                                              ; preds = %561
  store i32 25, ptr %97, align 4
  br label %748

567:                                              ; preds = %561
  %568 = load ptr, ptr %44, align 8, !tbaa !9
  %569 = load i32, ptr %56, align 4, !tbaa !5
  %570 = sext i32 %569 to i64
  %571 = getelementptr inbounds i32, ptr %568, i64 %570
  %572 = load i32, ptr %571, align 4, !tbaa !5
  store i32 %572, ptr %75, align 4, !tbaa !5
  %573 = load ptr, ptr %44, align 8, !tbaa !9
  %574 = load i32, ptr %56, align 4, !tbaa !5
  %575 = add nsw i32 %574, 1
  %576 = sext i32 %575 to i64
  %577 = getelementptr inbounds i32, ptr %573, i64 %576
  %578 = load i32, ptr %577, align 4, !tbaa !5
  store i32 %578, ptr %76, align 4, !tbaa !5
  %579 = load i32, ptr %75, align 4, !tbaa !5
  %580 = load i32, ptr %76, align 4, !tbaa !5
  %581 = add nsw i32 %579, %580
  store i32 %581, ptr %77, align 4, !tbaa !5
  %582 = load ptr, ptr %45, align 8, !tbaa !9
  %583 = load i32, ptr %56, align 4, !tbaa !5
  %584 = add nsw i32 %583, 1
  %585 = sext i32 %584 to i64
  %586 = getelementptr inbounds i32, ptr %582, i64 %585
  %587 = load i32, ptr %586, align 4, !tbaa !5
  store i32 %587, ptr %80, align 4, !tbaa !5
  %588 = load ptr, ptr %33, align 8, !tbaa !9
  %589 = load i32, ptr %56, align 4, !tbaa !5
  %590 = add nsw i32 %589, 1
  %591 = sext i32 %590 to i64
  %592 = getelementptr inbounds i32, ptr %588, i64 %591
  %593 = load i32, ptr %592, align 4, !tbaa !5
  %594 = sitofp i32 %593 to double
  store double %594, ptr %99, align 8, !tbaa !23
  %595 = load i32, ptr %77, align 4, !tbaa !5
  %596 = load i32, ptr %85, align 4, !tbaa !5
  %597 = icmp sle i32 %595, %596
  br i1 %597, label %598, label %599

598:                                              ; preds = %567
  store i32 1, ptr %81, align 4, !tbaa !5
  br label %708

599:                                              ; preds = %567
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #9
  %600 = load ptr, ptr %33, align 8, !tbaa !9
  %601 = load i32, ptr %56, align 4, !tbaa !5
  %602 = sext i32 %601 to i64
  %603 = getelementptr inbounds i32, ptr %600, i64 %602
  %604 = load i32, ptr %603, align 4, !tbaa !5
  %605 = sitofp i32 %604 to double
  store double %605, ptr %100, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #9
  %606 = load i32, ptr %75, align 4, !tbaa !5
  %607 = sitofp i32 %606 to double
  %608 = load double, ptr %99, align 8, !tbaa !23
  %609 = load i32, ptr %75, align 4, !tbaa !5
  %610 = sitofp i32 %609 to double
  %611 = fadd double %608, %610
  %612 = load double, ptr %100, align 8, !tbaa !23
  %613 = fsub double %611, %612
  %614 = fmul double %607, %613
  store double %614, ptr %101, align 8, !tbaa !23
  %615 = load i32, ptr %75, align 4, !tbaa !5
  %616 = load ptr, ptr %33, align 8, !tbaa !9
  %617 = load i32, ptr %56, align 4, !tbaa !5
  %618 = add nsw i32 %617, 1
  %619 = sext i32 %618 to i64
  %620 = getelementptr inbounds i32, ptr %616, i64 %619
  %621 = load i32, ptr %620, align 4, !tbaa !5
  %622 = load i32, ptr %75, align 4, !tbaa !5
  %623 = add nsw i32 %621, %622
  %624 = load ptr, ptr %33, align 8, !tbaa !9
  %625 = load i32, ptr %56, align 4, !tbaa !5
  %626 = sext i32 %625 to i64
  %627 = getelementptr inbounds i32, ptr %624, i64 %626
  %628 = load i32, ptr %627, align 4, !tbaa !5
  %629 = sub nsw i32 %623, %628
  %630 = mul nsw i32 %615, %629
  store i32 %630, ptr %79, align 4, !tbaa !5
  %631 = load i32, ptr %79, align 4, !tbaa !5
  %632 = sitofp i32 %631 to double
  %633 = load double, ptr %101, align 8, !tbaa !23
  %634 = fcmp oeq double %632, %633
  br i1 %634, label %635, label %636

635:                                              ; preds = %599
  br label %638

636:                                              ; preds = %599
  call void @__assert_fail(ptr noundef @.str.3, ptr noundef @.str.1, i32 noundef 331, ptr noundef @__PRETTY_FUNCTION__._ZN5nasoq20super_node_detectionEiPNS_12sympiler_CSCES1_PiS2_PNS_13Sympiler_BCSCES2_PdS2_i) #11
  unreachable

637:                                              ; No predecessors!
  br label %638

638:                                              ; preds = %637, %635
  %639 = load double, ptr %101, align 8, !tbaa !23
  %640 = fcmp oeq double %639, 0.000000e+00
  br i1 %640, label %641, label %642

641:                                              ; preds = %638
  store i32 1, ptr %81, align 4, !tbaa !5
  br label %707

642:                                              ; preds = %638
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #9
  %643 = load i32, ptr %80, align 4, !tbaa !5
  %644 = sitofp i32 %643 to double
  %645 = load double, ptr %101, align 8, !tbaa !23
  %646 = fadd double %644, %645
  store double %646, ptr %102, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #9
  %647 = load i32, ptr %77, align 4, !tbaa !5
  %648 = sitofp i32 %647 to double
  store double %648, ptr %103, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #9
  %649 = load double, ptr %103, align 8, !tbaa !23
  %650 = load double, ptr %103, align 8, !tbaa !23
  %651 = fadd double %650, 1.000000e+00
  %652 = fmul double %649, %651
  %653 = fdiv double %652, 2.000000e+00
  %654 = load double, ptr %103, align 8, !tbaa !23
  %655 = load double, ptr %99, align 8, !tbaa !23
  %656 = load i32, ptr %76, align 4, !tbaa !5
  %657 = sitofp i32 %656 to double
  %658 = fsub double %655, %657
  %659 = call double @llvm.fmuladd.f64(double %654, double %658, double %653)
  store double %659, ptr %104, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #9
  %660 = load double, ptr %102, align 8, !tbaa !23
  %661 = load double, ptr %104, align 8, !tbaa !23
  %662 = fdiv double %660, %661
  store double %662, ptr %105, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 4, ptr %106) #9
  %663 = load i32, ptr %77, align 4, !tbaa !5
  %664 = load i32, ptr %77, align 4, !tbaa !5
  %665 = add nsw i32 %664, 1
  %666 = mul nsw i32 %663, %665
  %667 = sdiv i32 %666, 2
  %668 = load i32, ptr %77, align 4, !tbaa !5
  %669 = load ptr, ptr %33, align 8, !tbaa !9
  %670 = load i32, ptr %56, align 4, !tbaa !5
  %671 = add nsw i32 %670, 1
  %672 = sext i32 %671 to i64
  %673 = getelementptr inbounds i32, ptr %669, i64 %672
  %674 = load i32, ptr %673, align 4, !tbaa !5
  %675 = load i32, ptr %76, align 4, !tbaa !5
  %676 = sub nsw i32 %674, %675
  %677 = mul nsw i32 %668, %676
  %678 = add nsw i32 %667, %677
  store i32 %678, ptr %106, align 4, !tbaa !5
  %679 = load i32, ptr %79, align 4, !tbaa !5
  %680 = load i32, ptr %80, align 4, !tbaa !5
  %681 = add nsw i32 %680, %679
  store i32 %681, ptr %80, align 4, !tbaa !5
  %682 = load i32, ptr %77, align 4, !tbaa !5
  %683 = load i32, ptr %86, align 4, !tbaa !5
  %684 = icmp sle i32 %682, %683
  br i1 %684, label %685, label %689

685:                                              ; preds = %642
  %686 = load double, ptr %105, align 8, !tbaa !23
  %687 = load double, ptr %22, align 8, !tbaa !23
  %688 = fcmp olt double %686, %687
  br i1 %688, label %701, label %689

689:                                              ; preds = %685, %642
  %690 = load i32, ptr %77, align 4, !tbaa !5
  %691 = load i32, ptr %87, align 4, !tbaa !5
  %692 = icmp sle i32 %690, %691
  br i1 %692, label %693, label %697

693:                                              ; preds = %689
  %694 = load double, ptr %105, align 8, !tbaa !23
  %695 = load double, ptr %23, align 8, !tbaa !23
  %696 = fcmp olt double %694, %695
  br i1 %696, label %701, label %697

697:                                              ; preds = %693, %689
  %698 = load double, ptr %105, align 8, !tbaa !23
  %699 = load double, ptr %24, align 8, !tbaa !23
  %700 = fcmp olt double %698, %699
  br i1 %700, label %701, label %704

701:                                              ; preds = %697, %693, %685
  %702 = load double, ptr %104, align 8, !tbaa !23
  %703 = fcmp olt double %702, 0x41AFFFFFFE000000
  br label %704

704:                                              ; preds = %701, %697
  %705 = phi i1 [ false, %697 ], [ %703, %701 ]
  %706 = zext i1 %705 to i32
  store i32 %706, ptr %81, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr %106) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #9
  br label %707

707:                                              ; preds = %704, %641
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #9
  br label %708

708:                                              ; preds = %707, %598
  %709 = load i32, ptr %81, align 4, !tbaa !5
  %710 = icmp ne i32 %709, 0
  br i1 %710, label %711, label %747

711:                                              ; preds = %708
  %712 = load i32, ptr %80, align 4, !tbaa !5
  %713 = load ptr, ptr %45, align 8, !tbaa !9
  %714 = load i32, ptr %56, align 4, !tbaa !5
  %715 = sext i32 %714 to i64
  %716 = getelementptr inbounds i32, ptr %713, i64 %715
  store i32 %712, ptr %716, align 4, !tbaa !5
  %717 = load i32, ptr %56, align 4, !tbaa !5
  %718 = load ptr, ptr %43, align 8, !tbaa !9
  %719 = load i32, ptr %56, align 4, !tbaa !5
  %720 = add nsw i32 %719, 1
  %721 = sext i32 %720 to i64
  %722 = getelementptr inbounds i32, ptr %718, i64 %721
  store i32 %717, ptr %722, align 4, !tbaa !5
  %723 = load i32, ptr %75, align 4, !tbaa !5
  %724 = load ptr, ptr %33, align 8, !tbaa !9
  %725 = load i32, ptr %56, align 4, !tbaa !5
  %726 = add nsw i32 %725, 1
  %727 = sext i32 %726 to i64
  %728 = getelementptr inbounds i32, ptr %724, i64 %727
  %729 = load i32, ptr %728, align 4, !tbaa !5
  %730 = add nsw i32 %723, %729
  %731 = load ptr, ptr %33, align 8, !tbaa !9
  %732 = load i32, ptr %56, align 4, !tbaa !5
  %733 = sext i32 %732 to i64
  %734 = getelementptr inbounds i32, ptr %731, i64 %733
  store i32 %730, ptr %734, align 4, !tbaa !5
  %735 = load ptr, ptr %44, align 8, !tbaa !9
  %736 = load i32, ptr %56, align 4, !tbaa !5
  %737 = add nsw i32 %736, 1
  %738 = sext i32 %737 to i64
  %739 = getelementptr inbounds i32, ptr %735, i64 %738
  %740 = load i32, ptr %739, align 4, !tbaa !5
  %741 = load ptr, ptr %44, align 8, !tbaa !9
  %742 = load i32, ptr %56, align 4, !tbaa !5
  %743 = sext i32 %742 to i64
  %744 = getelementptr inbounds i32, ptr %741, i64 %743
  %745 = load i32, ptr %744, align 4, !tbaa !5
  %746 = add nsw i32 %745, %740
  store i32 %746, ptr %744, align 4, !tbaa !5
  br label %747

747:                                              ; preds = %711, %708
  store i32 0, ptr %97, align 4
  br label %748

748:                                              ; preds = %747, %566, %513, %497
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #9
  %749 = load i32, ptr %97, align 4
  switch i32 %749, label %1400 [
    i32 0, label %750
    i32 25, label %751
  ]

750:                                              ; preds = %748
  br label %751

751:                                              ; preds = %750, %748
  %752 = load i32, ptr %56, align 4, !tbaa !5
  %753 = add nsw i32 %752, -1
  store i32 %753, ptr %56, align 4, !tbaa !5
  br label %486, !llvm.loop !35

754:                                              ; preds = %486
  store i64 0, ptr %29, align 8, !tbaa !15
  store i32 0, ptr %56, align 4, !tbaa !5
  br label %755

755:                                              ; preds = %786, %754
  %756 = load i32, ptr %56, align 4, !tbaa !5
  %757 = load i32, ptr %78, align 4, !tbaa !5
  %758 = icmp slt i32 %756, %757
  br i1 %758, label %759, label %789

759:                                              ; preds = %755
  %760 = load ptr, ptr %43, align 8, !tbaa !9
  %761 = load i32, ptr %56, align 4, !tbaa !5
  %762 = sext i32 %761 to i64
  %763 = getelementptr inbounds i32, ptr %760, i64 %762
  %764 = load i32, ptr %763, align 4, !tbaa !5
  %765 = icmp eq i32 %764, -1
  br i1 %765, label %766, label %785

766:                                              ; preds = %759
  %767 = load ptr, ptr %32, align 8, !tbaa !9
  %768 = load i32, ptr %56, align 4, !tbaa !5
  %769 = sext i32 %768 to i64
  %770 = getelementptr inbounds i32, ptr %767, i64 %769
  %771 = load i32, ptr %770, align 4, !tbaa !5
  %772 = load ptr, ptr %32, align 8, !tbaa !9
  %773 = load i64, ptr %29, align 8, !tbaa !15
  %774 = getelementptr inbounds i32, ptr %772, i64 %773
  store i32 %771, ptr %774, align 4, !tbaa !5
  %775 = load ptr, ptr %33, align 8, !tbaa !9
  %776 = load i32, ptr %56, align 4, !tbaa !5
  %777 = sext i32 %776 to i64
  %778 = getelementptr inbounds i32, ptr %775, i64 %777
  %779 = load i32, ptr %778, align 4, !tbaa !5
  %780 = load ptr, ptr %33, align 8, !tbaa !9
  %781 = load i64, ptr %29, align 8, !tbaa !15
  %782 = getelementptr inbounds i32, ptr %780, i64 %781
  store i32 %779, ptr %782, align 4, !tbaa !5
  %783 = load i64, ptr %29, align 8, !tbaa !15
  %784 = add i64 %783, 1
  store i64 %784, ptr %29, align 8, !tbaa !15
  br label %785

785:                                              ; preds = %766, %759
  br label %786

786:                                              ; preds = %785
  %787 = load i32, ptr %56, align 4, !tbaa !5
  %788 = add nsw i32 %787, 1
  store i32 %788, ptr %56, align 4, !tbaa !5
  br label %755, !llvm.loop !36

789:                                              ; preds = %755
  %790 = load i32, ptr %53, align 4, !tbaa !5
  %791 = load ptr, ptr %32, align 8, !tbaa !9
  %792 = load i64, ptr %29, align 8, !tbaa !15
  %793 = getelementptr inbounds i32, ptr %791, i64 %792
  store i32 %790, ptr %793, align 4, !tbaa !5
  store i32 0, ptr %56, align 4, !tbaa !5
  br label %794

794:                                              ; preds = %824, %789
  %795 = load i32, ptr %56, align 4, !tbaa !5
  %796 = sext i32 %795 to i64
  %797 = load i64, ptr %29, align 8, !tbaa !15
  %798 = icmp ult i64 %796, %797
  br i1 %798, label %799, label %827

799:                                              ; preds = %794
  %800 = load ptr, ptr %32, align 8, !tbaa !9
  %801 = load i32, ptr %56, align 4, !tbaa !5
  %802 = sext i32 %801 to i64
  %803 = getelementptr inbounds i32, ptr %800, i64 %802
  %804 = load i32, ptr %803, align 4, !tbaa !5
  store i32 %804, ptr %55, align 4, !tbaa !5
  br label %805

805:                                              ; preds = %820, %799
  %806 = load i32, ptr %55, align 4, !tbaa !5
  %807 = load ptr, ptr %32, align 8, !tbaa !9
  %808 = load i32, ptr %56, align 4, !tbaa !5
  %809 = add nsw i32 %808, 1
  %810 = sext i32 %809 to i64
  %811 = getelementptr inbounds i32, ptr %807, i64 %810
  %812 = load i32, ptr %811, align 4, !tbaa !5
  %813 = icmp slt i32 %806, %812
  br i1 %813, label %814, label %823

814:                                              ; preds = %805
  %815 = load i32, ptr %56, align 4, !tbaa !5
  %816 = load ptr, ptr %42, align 8, !tbaa !9
  %817 = load i32, ptr %55, align 4, !tbaa !5
  %818 = sext i32 %817 to i64
  %819 = getelementptr inbounds i32, ptr %816, i64 %818
  store i32 %815, ptr %819, align 4, !tbaa !5
  br label %820

820:                                              ; preds = %814
  %821 = load i32, ptr %55, align 4, !tbaa !5
  %822 = add nsw i32 %821, 1
  store i32 %822, ptr %55, align 4, !tbaa !5
  br label %805, !llvm.loop !37

823:                                              ; preds = %805
  br label %824

824:                                              ; preds = %823
  %825 = load i32, ptr %56, align 4, !tbaa !5
  %826 = add nsw i32 %825, 1
  store i32 %826, ptr %56, align 4, !tbaa !5
  br label %794, !llvm.loop !38

827:                                              ; preds = %794
  store i32 0, ptr %56, align 4, !tbaa !5
  br label %828

828:                                              ; preds = %861, %827
  %829 = load i32, ptr %56, align 4, !tbaa !5
  %830 = sext i32 %829 to i64
  %831 = load i64, ptr %29, align 8, !tbaa !15
  %832 = icmp ult i64 %830, %831
  br i1 %832, label %833, label %864

833:                                              ; preds = %828
  %834 = load ptr, ptr %32, align 8, !tbaa !9
  %835 = load i32, ptr %56, align 4, !tbaa !5
  %836 = add nsw i32 %835, 1
  %837 = sext i32 %836 to i64
  %838 = getelementptr inbounds i32, ptr %834, i64 %837
  %839 = load i32, ptr %838, align 4, !tbaa !5
  %840 = sub nsw i32 %839, 1
  store i32 %840, ptr %54, align 4, !tbaa !5
  %841 = load ptr, ptr %15, align 8, !tbaa !9
  %842 = load i32, ptr %54, align 4, !tbaa !5
  %843 = sext i32 %842 to i64
  %844 = getelementptr inbounds i32, ptr %841, i64 %843
  %845 = load i32, ptr %844, align 4, !tbaa !5
  store i32 %845, ptr %58, align 4, !tbaa !5
  %846 = load i32, ptr %58, align 4, !tbaa !5
  %847 = icmp eq i32 %846, -1
  br i1 %847, label %848, label %849

848:                                              ; preds = %833
  br label %855

849:                                              ; preds = %833
  %850 = load ptr, ptr %42, align 8, !tbaa !9
  %851 = load i32, ptr %58, align 4, !tbaa !5
  %852 = sext i32 %851 to i64
  %853 = getelementptr inbounds i32, ptr %850, i64 %852
  %854 = load i32, ptr %853, align 4, !tbaa !5
  br label %855

855:                                              ; preds = %849, %848
  %856 = phi i32 [ -1, %848 ], [ %854, %849 ]
  %857 = load ptr, ptr %20, align 8, !tbaa !9
  %858 = load i32, ptr %56, align 4, !tbaa !5
  %859 = sext i32 %858 to i64
  %860 = getelementptr inbounds i32, ptr %857, i64 %859
  store i32 %856, ptr %860, align 4, !tbaa !5
  br label %861

861:                                              ; preds = %855
  %862 = load i32, ptr %56, align 4, !tbaa !5
  %863 = add nsw i32 %862, 1
  store i32 %863, ptr %56, align 4, !tbaa !5
  br label %828, !llvm.loop !39

864:                                              ; preds = %828
  call void @llvm.lifetime.start.p0(i64 4, ptr %107) #9
  store i32 0, ptr %107, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %108) #9
  store i32 0, ptr %108, align 4, !tbaa !5
  br label %865

865:                                              ; preds = %886, %864
  %866 = load i32, ptr %108, align 4, !tbaa !5
  %867 = sext i32 %866 to i64
  %868 = load i64, ptr %29, align 8, !tbaa !15
  %869 = icmp ult i64 %867, %868
  br i1 %869, label %871, label %870

870:                                              ; preds = %865
  store i32 44, ptr %97, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %108) #9
  br label %889

871:                                              ; preds = %865
  %872 = load ptr, ptr %32, align 8, !tbaa !9
  %873 = load i32, ptr %108, align 4, !tbaa !5
  %874 = add nsw i32 %873, 1
  %875 = sext i32 %874 to i64
  %876 = getelementptr inbounds i32, ptr %872, i64 %875
  %877 = load i32, ptr %876, align 4, !tbaa !5
  %878 = load ptr, ptr %32, align 8, !tbaa !9
  %879 = load i32, ptr %108, align 4, !tbaa !5
  %880 = sext i32 %879 to i64
  %881 = getelementptr inbounds i32, ptr %878, i64 %880
  %882 = load i32, ptr %881, align 4, !tbaa !5
  %883 = sub nsw i32 %877, %882
  %884 = load i32, ptr %107, align 4, !tbaa !5
  %885 = add nsw i32 %884, %883
  store i32 %885, ptr %107, align 4, !tbaa !5
  br label %886

886:                                              ; preds = %871
  %887 = load i32, ptr %108, align 4, !tbaa !5
  %888 = add nsw i32 %887, 1
  store i32 %888, ptr %108, align 4, !tbaa !5
  br label %865, !llvm.loop !40

889:                                              ; preds = %870
  %890 = load i32, ptr %107, align 4, !tbaa !5
  %891 = load i32, ptr %53, align 4, !tbaa !5
  %892 = icmp eq i32 %890, %891
  br i1 %892, label %893, label %894

893:                                              ; preds = %889
  br label %896

894:                                              ; preds = %889
  call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str.1, i32 noundef 434, ptr noundef @__PRETTY_FUNCTION__._ZN5nasoq20super_node_detectionEiPNS_12sympiler_CSCES1_PiS2_PNS_13Sympiler_BCSCES2_PdS2_i) #11
  unreachable

895:                                              ; No predecessors!
  br label %896

896:                                              ; preds = %895, %893
  store i64 0, ptr %26, align 8, !tbaa !15
  store i64 0, ptr %27, align 8, !tbaa !15
  store i64 0, ptr %25, align 8, !tbaa !15
  store i32 1, ptr %91, align 4, !tbaa !5
  store i32 0, ptr %56, align 4, !tbaa !5
  br label %897

897:                                              ; preds = %958, %896
  %898 = load i32, ptr %56, align 4, !tbaa !5
  %899 = sext i32 %898 to i64
  %900 = load i64, ptr %29, align 8, !tbaa !15
  %901 = icmp ult i64 %899, %900
  br i1 %901, label %902, label %961

902:                                              ; preds = %897
  %903 = load ptr, ptr %32, align 8, !tbaa !9
  %904 = load i32, ptr %56, align 4, !tbaa !5
  %905 = add nsw i32 %904, 1
  %906 = sext i32 %905 to i64
  %907 = getelementptr inbounds i32, ptr %903, i64 %906
  %908 = load i32, ptr %907, align 4, !tbaa !5
  %909 = load ptr, ptr %32, align 8, !tbaa !9
  %910 = load i32, ptr %56, align 4, !tbaa !5
  %911 = sext i32 %910 to i64
  %912 = getelementptr inbounds i32, ptr %909, i64 %911
  %913 = load i32, ptr %912, align 4, !tbaa !5
  %914 = sub nsw i32 %908, %913
  store i32 %914, ptr %64, align 4, !tbaa !5
  %915 = load ptr, ptr %33, align 8, !tbaa !9
  %916 = load i32, ptr %56, align 4, !tbaa !5
  %917 = sext i32 %916 to i64
  %918 = getelementptr inbounds i32, ptr %915, i64 %917
  %919 = load i32, ptr %918, align 4, !tbaa !5
  store i32 %919, ptr %65, align 4, !tbaa !5
  %920 = load i32, ptr %64, align 4, !tbaa !5
  %921 = icmp sgt i32 %920, 0
  br i1 %921, label %922, label %923

922:                                              ; preds = %902
  br label %925

923:                                              ; preds = %902
  call void @__assert_fail(ptr noundef @.str.5, ptr noundef @.str.1, i32 noundef 445, ptr noundef @__PRETTY_FUNCTION__._ZN5nasoq20super_node_detectionEiPNS_12sympiler_CSCES1_PiS2_PNS_13Sympiler_BCSCES2_PdS2_i) #11
  unreachable

924:                                              ; No predecessors!
  br label %925

925:                                              ; preds = %924, %922
  %926 = load i32, ptr %65, align 4, !tbaa !5
  %927 = sext i32 %926 to i64
  %928 = load i64, ptr %26, align 8, !tbaa !15
  %929 = add i64 %928, %927
  store i64 %929, ptr %26, align 8, !tbaa !15
  %930 = load i32, ptr %91, align 4, !tbaa !5
  %931 = icmp ne i32 %930, 0
  br i1 %931, label %932, label %947

932:                                              ; preds = %925
  %933 = load i32, ptr %64, align 4, !tbaa !5
  %934 = load i32, ptr %65, align 4, !tbaa !5
  %935 = mul nsw i32 %933, %934
  %936 = sext i32 %935 to i64
  %937 = load i64, ptr %27, align 8, !tbaa !15
  %938 = add i64 %937, %936
  store i64 %938, ptr %27, align 8, !tbaa !15
  %939 = load i32, ptr %64, align 4, !tbaa !5
  %940 = sitofp i32 %939 to double
  %941 = load i32, ptr %65, align 4, !tbaa !5
  %942 = sitofp i32 %941 to double
  %943 = load i64, ptr %25, align 8, !tbaa !15
  %944 = uitofp i64 %943 to double
  %945 = call double @llvm.fmuladd.f64(double %940, double %942, double %944)
  %946 = fptoui double %945 to i64
  store i64 %946, ptr %25, align 8, !tbaa !15
  br label %947

947:                                              ; preds = %932, %925
  %948 = load i64, ptr %26, align 8, !tbaa !15
  %949 = icmp ult i64 %948, 0
  br i1 %949, label %950, label %951

950:                                              ; preds = %947
  store i32 0, ptr %11, align 4
  store i32 1, ptr %97, align 4
  br label %1397

951:                                              ; preds = %947
  %952 = load i64, ptr %26, align 8, !tbaa !15
  %953 = icmp ugt i64 %952, 0
  br i1 %953, label %954, label %955

954:                                              ; preds = %951
  br label %957

955:                                              ; preds = %951
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str.1, i32 noundef 463, ptr noundef @__PRETTY_FUNCTION__._ZN5nasoq20super_node_detectionEiPNS_12sympiler_CSCES1_PiS2_PNS_13Sympiler_BCSCES2_PdS2_i) #11
  unreachable

956:                                              ; No predecessors!
  br label %957

957:                                              ; preds = %956, %954
  br label %958

958:                                              ; preds = %957
  %959 = load i32, ptr %56, align 4, !tbaa !5
  %960 = add nsw i32 %959, 1
  store i32 %960, ptr %56, align 4, !tbaa !5
  br label %897, !llvm.loop !41

961:                                              ; preds = %897
  %962 = load i64, ptr %27, align 8, !tbaa !15
  %963 = icmp ugt i64 1, %962
  br i1 %963, label %964, label %965

964:                                              ; preds = %961
  br label %967

965:                                              ; preds = %961
  %966 = load i64, ptr %27, align 8, !tbaa !15
  br label %967

967:                                              ; preds = %965, %964
  %968 = phi i64 [ 1, %964 ], [ %966, %965 ]
  store i64 %968, ptr %27, align 8, !tbaa !15
  %969 = load i64, ptr %26, align 8, !tbaa !15
  %970 = icmp ugt i64 1, %969
  br i1 %970, label %971, label %972

971:                                              ; preds = %967
  br label %974

972:                                              ; preds = %967
  %973 = load i64, ptr %26, align 8, !tbaa !15
  br label %974

974:                                              ; preds = %972, %971
  %975 = phi i64 [ 1, %971 ], [ %973, %972 ]
  store i64 %975, ptr %26, align 8, !tbaa !15
  %976 = load i64, ptr %26, align 8, !tbaa !15
  %977 = load ptr, ptr %17, align 8, !tbaa !9
  %978 = getelementptr inbounds %"struct.nasoq::Sympiler_BCSC", ptr %977, i32 0, i32 16
  store i64 %976, ptr %978, align 8, !tbaa !42
  %979 = load i64, ptr %27, align 8, !tbaa !15
  %980 = load ptr, ptr %17, align 8, !tbaa !9
  %981 = getelementptr inbounds %"struct.nasoq::Sympiler_BCSC", ptr %980, i32 0, i32 17
  store i64 %979, ptr %981, align 8, !tbaa !43
  %982 = load i64, ptr %29, align 8, !tbaa !15
  %983 = load ptr, ptr %17, align 8, !tbaa !9
  %984 = getelementptr inbounds %"struct.nasoq::Sympiler_BCSC", ptr %983, i32 0, i32 15
  store i64 %982, ptr %984, align 8, !tbaa !44
  %985 = load ptr, ptr %17, align 8, !tbaa !9
  call void @_ZN5nasoq10allocateLCEPNS_13Sympiler_BCSCEi(ptr noundef %985, i32 noundef 1)
  %986 = load ptr, ptr %17, align 8, !tbaa !9
  %987 = getelementptr inbounds %"struct.nasoq::Sympiler_BCSC", ptr %986, i32 0, i32 23
  %988 = load ptr, ptr %987, align 8, !tbaa !45
  store ptr %988, ptr %28, align 8, !tbaa !9
  %989 = load ptr, ptr %17, align 8, !tbaa !9
  %990 = getelementptr inbounds %"struct.nasoq::Sympiler_BCSC", ptr %989, i32 0, i32 25
  %991 = load ptr, ptr %990, align 8, !tbaa !46
  store ptr %991, ptr %39, align 8, !tbaa !9
  %992 = load ptr, ptr %17, align 8, !tbaa !9
  %993 = getelementptr inbounds %"struct.nasoq::Sympiler_BCSC", ptr %992, i32 0, i32 26
  %994 = load ptr, ptr %993, align 8, !tbaa !47
  store ptr %994, ptr %38, align 8, !tbaa !9
  %995 = load ptr, ptr %38, align 8, !tbaa !9
  %996 = getelementptr inbounds i32, ptr %995, i64 0
  store i32 0, ptr %996, align 4, !tbaa !5
  %997 = load ptr, ptr %17, align 8, !tbaa !9
  %998 = getelementptr inbounds %"struct.nasoq::Sympiler_BCSC", ptr %997, i32 0, i32 21
  %999 = load ptr, ptr %998, align 8, !tbaa !48
  store ptr %999, ptr %49, align 8, !tbaa !9
  store i32 0, ptr %56, align 4, !tbaa !5
  br label %1000

1000:                                             ; preds = %1015, %974
  %1001 = load i32, ptr %56, align 4, !tbaa !5
  %1002 = sext i32 %1001 to i64
  %1003 = load i64, ptr %29, align 8, !tbaa !15
  %1004 = icmp ule i64 %1002, %1003
  br i1 %1004, label %1005, label %1018

1005:                                             ; preds = %1000
  %1006 = load ptr, ptr %32, align 8, !tbaa !9
  %1007 = load i32, ptr %56, align 4, !tbaa !5
  %1008 = sext i32 %1007 to i64
  %1009 = getelementptr inbounds i32, ptr %1006, i64 %1008
  %1010 = load i32, ptr %1009, align 4, !tbaa !5
  %1011 = load ptr, ptr %49, align 8, !tbaa !9
  %1012 = load i32, ptr %56, align 4, !tbaa !5
  %1013 = sext i32 %1012 to i64
  %1014 = getelementptr inbounds i32, ptr %1011, i64 %1013
  store i32 %1010, ptr %1014, align 4, !tbaa !5
  br label %1015

1015:                                             ; preds = %1005
  %1016 = load i32, ptr %56, align 4, !tbaa !5
  %1017 = add nsw i32 %1016, 1
  store i32 %1017, ptr %56, align 4, !tbaa !5
  br label %1000, !llvm.loop !49

1018:                                             ; preds = %1000
  %1019 = load ptr, ptr %49, align 8, !tbaa !9
  store ptr %1019, ptr %32, align 8, !tbaa !9
  store i32 0, ptr %59, align 4, !tbaa !5
  store i32 0, ptr %56, align 4, !tbaa !5
  br label %1020

1020:                                             ; preds = %1039, %1018
  %1021 = load i32, ptr %56, align 4, !tbaa !5
  %1022 = sext i32 %1021 to i64
  %1023 = load i64, ptr %29, align 8, !tbaa !15
  %1024 = icmp ult i64 %1022, %1023
  br i1 %1024, label %1025, label %1042

1025:                                             ; preds = %1020
  %1026 = load i32, ptr %59, align 4, !tbaa !5
  %1027 = sext i32 %1026 to i64
  %1028 = load ptr, ptr %28, align 8, !tbaa !9
  %1029 = load i32, ptr %56, align 4, !tbaa !5
  %1030 = sext i32 %1029 to i64
  %1031 = getelementptr inbounds i64, ptr %1028, i64 %1030
  store i64 %1027, ptr %1031, align 8, !tbaa !15
  %1032 = load ptr, ptr %33, align 8, !tbaa !9
  %1033 = load i32, ptr %56, align 4, !tbaa !5
  %1034 = sext i32 %1033 to i64
  %1035 = getelementptr inbounds i32, ptr %1032, i64 %1034
  %1036 = load i32, ptr %1035, align 4, !tbaa !5
  %1037 = load i32, ptr %59, align 4, !tbaa !5
  %1038 = add nsw i32 %1037, %1036
  store i32 %1038, ptr %59, align 4, !tbaa !5
  br label %1039

1039:                                             ; preds = %1025
  %1040 = load i32, ptr %56, align 4, !tbaa !5
  %1041 = add nsw i32 %1040, 1
  store i32 %1041, ptr %56, align 4, !tbaa !5
  br label %1020, !llvm.loop !50

1042:                                             ; preds = %1020
  %1043 = load i32, ptr %59, align 4, !tbaa !5
  %1044 = sext i32 %1043 to i64
  %1045 = load ptr, ptr %28, align 8, !tbaa !9
  %1046 = load i64, ptr %29, align 8, !tbaa !15
  %1047 = getelementptr inbounds i64, ptr %1045, i64 %1046
  store i64 %1044, ptr %1047, align 8, !tbaa !15
  %1048 = load ptr, ptr %17, align 8, !tbaa !9
  %1049 = getelementptr inbounds %"struct.nasoq::Sympiler_BCSC", ptr %1048, i32 0, i32 16
  %1050 = load i64, ptr %1049, align 8, !tbaa !42
  %1051 = trunc i64 %1050 to i32
  %1052 = load i32, ptr %59, align 4, !tbaa !5
  %1053 = icmp sgt i32 1, %1052
  br i1 %1053, label %1054, label %1055

1054:                                             ; preds = %1042
  br label %1057

1055:                                             ; preds = %1042
  %1056 = load i32, ptr %59, align 4, !tbaa !5
  br label %1057

1057:                                             ; preds = %1055, %1054
  %1058 = phi i32 [ 1, %1054 ], [ %1056, %1055 ]
  %1059 = icmp eq i32 %1051, %1058
  br i1 %1059, label %1060, label %1061

1060:                                             ; preds = %1057
  br label %1063

1061:                                             ; preds = %1057
  call void @__assert_fail(ptr noundef @.str.7, ptr noundef @.str.1, i32 noundef 518, ptr noundef @__PRETTY_FUNCTION__._ZN5nasoq20super_node_detectionEiPNS_12sympiler_CSCES1_PiS2_PNS_13Sympiler_BCSCES2_PdS2_i) #11
  unreachable

1062:                                             ; No predecessors!
  br label %1063

1063:                                             ; preds = %1062, %1060
  %1064 = load i32, ptr %53, align 4, !tbaa !5
  %1065 = add nsw i32 %1064, 1
  %1066 = sext i32 %1065 to i64
  %1067 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %1066, i64 4)
  %1068 = extractvalue { i64, i1 } %1067, 1
  %1069 = extractvalue { i64, i1 } %1067, 0
  %1070 = select i1 %1068, i64 -1, i64 %1069
  %1071 = call noalias noundef nonnull ptr @_Znam(i64 noundef %1070) #10
  call void @llvm.memset.p0.i64(ptr align 4 %1071, i8 0, i64 %1070, i1 false)
  store ptr %1071, ptr %51, align 8, !tbaa !9
  store i32 0, ptr %56, align 4, !tbaa !5
  br label %1072

1072:                                             ; preds = %1088, %1063
  %1073 = load i32, ptr %56, align 4, !tbaa !5
  %1074 = sext i32 %1073 to i64
  %1075 = load i64, ptr %29, align 8, !tbaa !15
  %1076 = icmp ult i64 %1074, %1075
  br i1 %1076, label %1077, label %1091

1077:                                             ; preds = %1072
  %1078 = load ptr, ptr %28, align 8, !tbaa !9
  %1079 = load i32, ptr %56, align 4, !tbaa !5
  %1080 = sext i32 %1079 to i64
  %1081 = getelementptr inbounds i64, ptr %1078, i64 %1080
  %1082 = load i64, ptr %1081, align 8, !tbaa !15
  %1083 = trunc i64 %1082 to i32
  %1084 = load ptr, ptr %51, align 8, !tbaa !9
  %1085 = load i32, ptr %56, align 4, !tbaa !5
  %1086 = sext i32 %1085 to i64
  %1087 = getelementptr inbounds i32, ptr %1084, i64 %1086
  store i32 %1083, ptr %1087, align 4, !tbaa !5
  br label %1088

1088:                                             ; preds = %1077
  %1089 = load i32, ptr %56, align 4, !tbaa !5
  %1090 = add nsw i32 %1089, 1
  store i32 %1090, ptr %56, align 4, !tbaa !5
  br label %1072, !llvm.loop !51

1091:                                             ; preds = %1072
  %1092 = load ptr, ptr %13, align 8, !tbaa !9
  %1093 = getelementptr inbounds %"struct.nasoq::sympiler_CSC", ptr %1092, i32 0, i32 12
  %1094 = load i32, ptr %1093, align 8, !tbaa !52
  store i32 %1094, ptr %88, align 4, !tbaa !5
  store i32 -1, ptr %57, align 4, !tbaa !5
  store i32 0, ptr %56, align 4, !tbaa !5
  br label %1095

1095:                                             ; preds = %1246, %1091
  %1096 = load i32, ptr %56, align 4, !tbaa !5
  %1097 = sext i32 %1096 to i64
  %1098 = load i64, ptr %29, align 8, !tbaa !15
  %1099 = icmp ult i64 %1097, %1098
  br i1 %1099, label %1100, label %1249

1100:                                             ; preds = %1095
  %1101 = load ptr, ptr %32, align 8, !tbaa !9
  %1102 = load i32, ptr %56, align 4, !tbaa !5
  %1103 = sext i32 %1102 to i64
  %1104 = getelementptr inbounds i32, ptr %1101, i64 %1103
  %1105 = load i32, ptr %1104, align 4, !tbaa !5
  store i32 %1105, ptr %61, align 4, !tbaa !5
  %1106 = load ptr, ptr %32, align 8, !tbaa !9
  %1107 = load i32, ptr %56, align 4, !tbaa !5
  %1108 = add nsw i32 %1107, 1
  %1109 = sext i32 %1108 to i64
  %1110 = getelementptr inbounds i32, ptr %1106, i64 %1109
  %1111 = load i32, ptr %1110, align 4, !tbaa !5
  store i32 %1111, ptr %62, align 4, !tbaa !5
  %1112 = load i32, ptr %61, align 4, !tbaa !5
  store i32 %1112, ptr %55, align 4, !tbaa !5
  br label %1113

1113:                                             ; preds = %1128, %1100
  %1114 = load i32, ptr %55, align 4, !tbaa !5
  %1115 = load i32, ptr %62, align 4, !tbaa !5
  %1116 = icmp slt i32 %1114, %1115
  br i1 %1116, label %1117, label %1131

1117:                                             ; preds = %1113
  %1118 = load i32, ptr %55, align 4, !tbaa !5
  %1119 = load ptr, ptr %38, align 8, !tbaa !9
  %1120 = load ptr, ptr %51, align 8, !tbaa !9
  %1121 = load i32, ptr %56, align 4, !tbaa !5
  %1122 = sext i32 %1121 to i64
  %1123 = getelementptr inbounds i32, ptr %1120, i64 %1122
  %1124 = load i32, ptr %1123, align 4, !tbaa !5
  %1125 = add nsw i32 %1124, 1
  store i32 %1125, ptr %1123, align 4, !tbaa !5
  %1126 = sext i32 %1124 to i64
  %1127 = getelementptr inbounds i32, ptr %1119, i64 %1126
  store i32 %1118, ptr %1127, align 4, !tbaa !5
  br label %1128

1128:                                             ; preds = %1117
  %1129 = load i32, ptr %55, align 4, !tbaa !5
  %1130 = add nsw i32 %1129, 1
  store i32 %1130, ptr %55, align 4, !tbaa !5
  br label %1113, !llvm.loop !53

1131:                                             ; preds = %1113
  %1132 = load i32, ptr %61, align 4, !tbaa !5
  store i32 %1132, ptr %55, align 4, !tbaa !5
  br label %1133

1133:                                             ; preds = %1242, %1131
  %1134 = load i32, ptr %55, align 4, !tbaa !5
  %1135 = load i32, ptr %62, align 4, !tbaa !5
  %1136 = icmp slt i32 %1134, %1135
  br i1 %1136, label %1137, label %1245

1137:                                             ; preds = %1133
  %1138 = load i32, ptr %57, align 4, !tbaa !5
  %1139 = add nsw i32 %1138, 1
  store i32 %1139, ptr %57, align 4, !tbaa !5
  %1140 = load i32, ptr %57, align 4, !tbaa !5
  %1141 = icmp sle i32 %1140, 0
  br i1 %1141, label %1142, label %1157

1142:                                             ; preds = %1137
  call void @llvm.lifetime.start.p0(i64 4, ptr %109) #9
  store i32 0, ptr %109, align 4, !tbaa !5
  br label %1143

1143:                                             ; preds = %1153, %1142
  %1144 = load i32, ptr %109, align 4, !tbaa !5
  %1145 = load i32, ptr %53, align 4, !tbaa !5
  %1146 = icmp slt i32 %1144, %1145
  br i1 %1146, label %1148, label %1147

1147:                                             ; preds = %1143
  store i32 68, ptr %97, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %109) #9
  br label %1156

1148:                                             ; preds = %1143
  %1149 = load ptr, ptr %36, align 8, !tbaa !9
  %1150 = load i32, ptr %109, align 4, !tbaa !5
  %1151 = sext i32 %1150 to i64
  %1152 = getelementptr inbounds i32, ptr %1149, i64 %1151
  store i32 -1, ptr %1152, align 4, !tbaa !5
  br label %1153

1153:                                             ; preds = %1148
  %1154 = load i32, ptr %109, align 4, !tbaa !5
  %1155 = add nsw i32 %1154, 1
  store i32 %1155, ptr %109, align 4, !tbaa !5
  br label %1143, !llvm.loop !54

1156:                                             ; preds = %1147
  store i32 0, ptr %57, align 4, !tbaa !5
  br label %1157

1157:                                             ; preds = %1156, %1137
  %1158 = load i32, ptr %57, align 4, !tbaa !5
  %1159 = load ptr, ptr %36, align 8, !tbaa !9
  %1160 = load i32, ptr %56, align 4, !tbaa !5
  %1161 = sext i32 %1160 to i64
  %1162 = getelementptr inbounds i32, ptr %1159, i64 %1161
  store i32 %1158, ptr %1162, align 4, !tbaa !5
  %1163 = load i32, ptr %56, align 4, !tbaa !5
  %1164 = load ptr, ptr %42, align 8, !tbaa !9
  %1165 = load i32, ptr %55, align 4, !tbaa !5
  %1166 = sext i32 %1165 to i64
  %1167 = getelementptr inbounds i32, ptr %1164, i64 %1166
  %1168 = load i32, ptr %1167, align 4, !tbaa !5
  %1169 = icmp eq i32 %1163, %1168
  br i1 %1169, label %1170, label %1171

1170:                                             ; preds = %1157
  br label %1173

1171:                                             ; preds = %1157
  call void @__assert_fail(ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 605, ptr noundef @__PRETTY_FUNCTION__._ZN5nasoq20super_node_detectionEiPNS_12sympiler_CSCES1_PiS2_PNS_13Sympiler_BCSCES2_PdS2_i) #11
  unreachable

1172:                                             ; No predecessors!
  br label %1173

1173:                                             ; preds = %1172, %1170
  %1174 = load i32, ptr %68, align 4, !tbaa !5
  %1175 = icmp ne i32 %1174, 0
  br i1 %1175, label %1176, label %1190

1176:                                             ; preds = %1173
  %1177 = load i32, ptr %55, align 4, !tbaa !5
  %1178 = load i32, ptr %55, align 4, !tbaa !5
  %1179 = load ptr, ptr %34, align 8, !tbaa !9
  %1180 = load ptr, ptr %35, align 8, !tbaa !9
  %1181 = load ptr, ptr %41, align 8, !tbaa !9
  %1182 = load ptr, ptr %42, align 8, !tbaa !9
  %1183 = load ptr, ptr %20, align 8, !tbaa !9
  %1184 = load i32, ptr %57, align 4, !tbaa !5
  %1185 = load i32, ptr %88, align 4, !tbaa !5
  %1186 = load i32, ptr %61, align 4, !tbaa !5
  %1187 = load ptr, ptr %36, align 8, !tbaa !9
  %1188 = load ptr, ptr %38, align 8, !tbaa !9
  %1189 = load ptr, ptr %51, align 8, !tbaa !9
  call void @_ZN5nasoq7subtreeEiiPiS0_S0_S0_S0_iiiS0_S0_S0_(i32 noundef %1177, i32 noundef %1178, ptr noundef %1179, ptr noundef %1180, ptr noundef %1181, ptr noundef %1182, ptr noundef %1183, i32 noundef %1184, i32 noundef %1185, i32 noundef %1186, ptr noundef %1187, ptr noundef %1188, ptr noundef %1189)
  br label %1241

1190:                                             ; preds = %1173
  %1191 = load ptr, ptr %46, align 8, !tbaa !9
  %1192 = load i32, ptr %55, align 4, !tbaa !5
  %1193 = sext i32 %1192 to i64
  %1194 = getelementptr inbounds i32, ptr %1191, i64 %1193
  %1195 = load i32, ptr %1194, align 4, !tbaa !5
  store i32 %1195, ptr %59, align 4, !tbaa !5
  %1196 = load i32, ptr %63, align 4, !tbaa !5
  %1197 = icmp ne i32 %1196, 0
  br i1 %1197, label %1198, label %1205

1198:                                             ; preds = %1190
  %1199 = load ptr, ptr %46, align 8, !tbaa !9
  %1200 = load i32, ptr %55, align 4, !tbaa !5
  %1201 = add nsw i32 %1200, 1
  %1202 = sext i32 %1201 to i64
  %1203 = getelementptr inbounds i32, ptr %1199, i64 %1202
  %1204 = load i32, ptr %1203, align 4, !tbaa !5
  br label %1213

1205:                                             ; preds = %1190
  %1206 = load i32, ptr %59, align 4, !tbaa !5
  %1207 = load ptr, ptr %40, align 8, !tbaa !9
  %1208 = load i32, ptr %55, align 4, !tbaa !5
  %1209 = sext i32 %1208 to i64
  %1210 = getelementptr inbounds i32, ptr %1207, i64 %1209
  %1211 = load i32, ptr %1210, align 4, !tbaa !5
  %1212 = add nsw i32 %1206, %1211
  br label %1213

1213:                                             ; preds = %1205, %1198
  %1214 = phi i32 [ %1204, %1198 ], [ %1212, %1205 ]
  store i32 %1214, ptr %60, align 4, !tbaa !5
  br label %1215

1215:                                             ; preds = %1237, %1213
  %1216 = load i32, ptr %59, align 4, !tbaa !5
  %1217 = load i32, ptr %60, align 4, !tbaa !5
  %1218 = icmp slt i32 %1216, %1217
  br i1 %1218, label %1219, label %1240

1219:                                             ; preds = %1215
  %1220 = load ptr, ptr %47, align 8, !tbaa !9
  %1221 = load i32, ptr %59, align 4, !tbaa !5
  %1222 = sext i32 %1221 to i64
  %1223 = getelementptr inbounds i32, ptr %1220, i64 %1222
  %1224 = load i32, ptr %1223, align 4, !tbaa !5
  %1225 = load i32, ptr %55, align 4, !tbaa !5
  %1226 = load ptr, ptr %34, align 8, !tbaa !9
  %1227 = load ptr, ptr %35, align 8, !tbaa !9
  %1228 = load ptr, ptr %41, align 8, !tbaa !9
  %1229 = load ptr, ptr %42, align 8, !tbaa !9
  %1230 = load ptr, ptr %20, align 8, !tbaa !9
  %1231 = load i32, ptr %57, align 4, !tbaa !5
  %1232 = load i32, ptr %88, align 4, !tbaa !5
  %1233 = load i32, ptr %61, align 4, !tbaa !5
  %1234 = load ptr, ptr %36, align 8, !tbaa !9
  %1235 = load ptr, ptr %38, align 8, !tbaa !9
  %1236 = load ptr, ptr %51, align 8, !tbaa !9
  call void @_ZN5nasoq7subtreeEiiPiS0_S0_S0_S0_iiiS0_S0_S0_(i32 noundef %1224, i32 noundef %1225, ptr noundef %1226, ptr noundef %1227, ptr noundef %1228, ptr noundef %1229, ptr noundef %1230, i32 noundef %1231, i32 noundef %1232, i32 noundef %1233, ptr noundef %1234, ptr noundef %1235, ptr noundef %1236)
  br label %1237

1237:                                             ; preds = %1219
  %1238 = load i32, ptr %59, align 4, !tbaa !5
  %1239 = add nsw i32 %1238, 1
  store i32 %1239, ptr %59, align 4, !tbaa !5
  br label %1215, !llvm.loop !55

1240:                                             ; preds = %1215
  br label %1241

1241:                                             ; preds = %1240, %1176
  br label %1242

1242:                                             ; preds = %1241
  %1243 = load i32, ptr %55, align 4, !tbaa !5
  %1244 = add nsw i32 %1243, 1
  store i32 %1244, ptr %55, align 4, !tbaa !5
  br label %1133, !llvm.loop !56

1245:                                             ; preds = %1133
  br label %1246

1246:                                             ; preds = %1245
  %1247 = load i32, ptr %56, align 4, !tbaa !5
  %1248 = add nsw i32 %1247, 1
  store i32 %1248, ptr %56, align 4, !tbaa !5
  br label %1095, !llvm.loop !57

1249:                                             ; preds = %1095
  store i32 1, ptr %73, align 4, !tbaa !5
  store i32 1, ptr %84, align 4, !tbaa !5
  store i32 0, ptr %52, align 4, !tbaa !5
  br label %1250

1250:                                             ; preds = %1363, %1249
  %1251 = load i32, ptr %52, align 4, !tbaa !5
  %1252 = sext i32 %1251 to i64
  %1253 = load i64, ptr %29, align 8, !tbaa !15
  %1254 = icmp ult i64 %1252, %1253
  br i1 %1254, label %1255, label %1366

1255:                                             ; preds = %1250
  %1256 = load ptr, ptr %32, align 8, !tbaa !9
  %1257 = load i32, ptr %52, align 4, !tbaa !5
  %1258 = add nsw i32 %1257, 1
  %1259 = sext i32 %1258 to i64
  %1260 = getelementptr inbounds i32, ptr %1256, i64 %1259
  %1261 = load i32, ptr %1260, align 4, !tbaa !5
  %1262 = load ptr, ptr %32, align 8, !tbaa !9
  %1263 = load i32, ptr %52, align 4, !tbaa !5
  %1264 = sext i32 %1263 to i64
  %1265 = getelementptr inbounds i32, ptr %1262, i64 %1264
  %1266 = load i32, ptr %1265, align 4, !tbaa !5
  %1267 = sub nsw i32 %1261, %1266
  store i32 %1267, ptr %64, align 4, !tbaa !5
  %1268 = load ptr, ptr %28, align 8, !tbaa !9
  %1269 = load i32, ptr %52, align 4, !tbaa !5
  %1270 = sext i32 %1269 to i64
  %1271 = getelementptr inbounds i64, ptr %1268, i64 %1270
  %1272 = load i64, ptr %1271, align 8, !tbaa !15
  %1273 = load i32, ptr %64, align 4, !tbaa !5
  %1274 = sext i32 %1273 to i64
  %1275 = add i64 %1272, %1274
  %1276 = trunc i64 %1275 to i32
  store i32 %1276, ptr %59, align 4, !tbaa !5
  %1277 = load i32, ptr %59, align 4, !tbaa !5
  store i32 %1277, ptr %70, align 4, !tbaa !5
  %1278 = load ptr, ptr %28, align 8, !tbaa !9
  %1279 = load i32, ptr %52, align 4, !tbaa !5
  %1280 = add nsw i32 %1279, 1
  %1281 = sext i32 %1280 to i64
  %1282 = getelementptr inbounds i64, ptr %1278, i64 %1281
  %1283 = load i64, ptr %1282, align 8, !tbaa !15
  %1284 = trunc i64 %1283 to i32
  store i32 %1284, ptr %60, align 4, !tbaa !5
  %1285 = load i32, ptr %60, align 4, !tbaa !5
  %1286 = load i32, ptr %59, align 4, !tbaa !5
  %1287 = sub nsw i32 %1285, %1286
  store i32 %1287, ptr %83, align 4, !tbaa !5
  %1288 = load i32, ptr %84, align 4, !tbaa !5
  %1289 = load i32, ptr %83, align 4, !tbaa !5
  %1290 = icmp sgt i32 %1288, %1289
  br i1 %1290, label %1291, label %1293

1291:                                             ; preds = %1255
  %1292 = load i32, ptr %84, align 4, !tbaa !5
  br label %1295

1293:                                             ; preds = %1255
  %1294 = load i32, ptr %83, align 4, !tbaa !5
  br label %1295

1295:                                             ; preds = %1293, %1291
  %1296 = phi i32 [ %1292, %1291 ], [ %1294, %1293 ]
  store i32 %1296, ptr %84, align 4, !tbaa !5
  %1297 = load i32, ptr %59, align 4, !tbaa !5
  %1298 = load i32, ptr %60, align 4, !tbaa !5
  %1299 = icmp eq i32 %1297, %1298
  br i1 %1299, label %1300, label %1301

1300:                                             ; preds = %1295
  br label %1311

1301:                                             ; preds = %1295
  %1302 = load ptr, ptr %42, align 8, !tbaa !9
  %1303 = load ptr, ptr %38, align 8, !tbaa !9
  %1304 = load i32, ptr %59, align 4, !tbaa !5
  %1305 = sext i32 %1304 to i64
  %1306 = getelementptr inbounds i32, ptr %1303, i64 %1305
  %1307 = load i32, ptr %1306, align 4, !tbaa !5
  %1308 = sext i32 %1307 to i64
  %1309 = getelementptr inbounds i32, ptr %1302, i64 %1308
  %1310 = load i32, ptr %1309, align 4, !tbaa !5
  br label %1311

1311:                                             ; preds = %1301, %1300
  %1312 = phi i32 [ -1, %1300 ], [ %1310, %1301 ]
  store i32 %1312, ptr %71, align 4, !tbaa !5
  br label %1313

1313:                                             ; preds = %1359, %1311
  %1314 = load i32, ptr %59, align 4, !tbaa !5
  %1315 = load i32, ptr %60, align 4, !tbaa !5
  %1316 = icmp sle i32 %1314, %1315
  br i1 %1316, label %1317, label %1362

1317:                                             ; preds = %1313
  %1318 = load i32, ptr %59, align 4, !tbaa !5
  %1319 = load i32, ptr %60, align 4, !tbaa !5
  %1320 = icmp eq i32 %1318, %1319
  br i1 %1320, label %1321, label %1322

1321:                                             ; preds = %1317
  br label %1332

1322:                                             ; preds = %1317
  %1323 = load ptr, ptr %42, align 8, !tbaa !9
  %1324 = load ptr, ptr %38, align 8, !tbaa !9
  %1325 = load i32, ptr %59, align 4, !tbaa !5
  %1326 = sext i32 %1325 to i64
  %1327 = getelementptr inbounds i32, ptr %1324, i64 %1326
  %1328 = load i32, ptr %1327, align 4, !tbaa !5
  %1329 = sext i32 %1328 to i64
  %1330 = getelementptr inbounds i32, ptr %1323, i64 %1329
  %1331 = load i32, ptr %1330, align 4, !tbaa !5
  br label %1332

1332:                                             ; preds = %1322, %1321
  %1333 = phi i32 [ -1, %1321 ], [ %1331, %1322 ]
  store i32 %1333, ptr %56, align 4, !tbaa !5
  %1334 = load i32, ptr %56, align 4, !tbaa !5
  %1335 = load i32, ptr %71, align 4, !tbaa !5
  %1336 = icmp ne i32 %1334, %1335
  br i1 %1336, label %1337, label %1358

1337:                                             ; preds = %1332
  %1338 = load i32, ptr %59, align 4, !tbaa !5
  %1339 = load i32, ptr %70, align 4, !tbaa !5
  %1340 = sub nsw i32 %1338, %1339
  store i32 %1340, ptr %66, align 4, !tbaa !5
  %1341 = load i32, ptr %60, align 4, !tbaa !5
  %1342 = load i32, ptr %70, align 4, !tbaa !5
  %1343 = sub nsw i32 %1341, %1342
  store i32 %1343, ptr %67, align 4, !tbaa !5
  %1344 = load i32, ptr %67, align 4, !tbaa !5
  %1345 = load i32, ptr %66, align 4, !tbaa !5
  %1346 = mul nsw i32 %1344, %1345
  store i32 %1346, ptr %72, align 4, !tbaa !5
  %1347 = load i32, ptr %73, align 4, !tbaa !5
  %1348 = load i32, ptr %72, align 4, !tbaa !5
  %1349 = icmp sgt i32 %1347, %1348
  br i1 %1349, label %1350, label %1352

1350:                                             ; preds = %1337
  %1351 = load i32, ptr %73, align 4, !tbaa !5
  br label %1354

1352:                                             ; preds = %1337
  %1353 = load i32, ptr %72, align 4, !tbaa !5
  br label %1354

1354:                                             ; preds = %1352, %1350
  %1355 = phi i32 [ %1351, %1350 ], [ %1353, %1352 ]
  store i32 %1355, ptr %73, align 4, !tbaa !5
  %1356 = load i32, ptr %59, align 4, !tbaa !5
  store i32 %1356, ptr %70, align 4, !tbaa !5
  %1357 = load i32, ptr %56, align 4, !tbaa !5
  store i32 %1357, ptr %71, align 4, !tbaa !5
  br label %1358

1358:                                             ; preds = %1354, %1332
  br label %1359

1359:                                             ; preds = %1358
  %1360 = load i32, ptr %59, align 4, !tbaa !5
  %1361 = add nsw i32 %1360, 1
  store i32 %1361, ptr %59, align 4, !tbaa !5
  br label %1313, !llvm.loop !58

1362:                                             ; preds = %1313
  br label %1363

1363:                                             ; preds = %1362
  %1364 = load i32, ptr %52, align 4, !tbaa !5
  %1365 = add nsw i32 %1364, 1
  store i32 %1365, ptr %52, align 4, !tbaa !5
  br label %1250, !llvm.loop !59

1366:                                             ; preds = %1250
  %1367 = load i32, ptr %73, align 4, !tbaa !5
  %1368 = sext i32 %1367 to i64
  %1369 = load ptr, ptr %17, align 8, !tbaa !9
  %1370 = getelementptr inbounds %"struct.nasoq::Sympiler_BCSC", ptr %1369, i32 0, i32 19
  store i64 %1368, ptr %1370, align 8, !tbaa !60
  %1371 = load i32, ptr %84, align 4, !tbaa !5
  %1372 = sext i32 %1371 to i64
  %1373 = load ptr, ptr %17, align 8, !tbaa !9
  %1374 = getelementptr inbounds %"struct.nasoq::Sympiler_BCSC", ptr %1373, i32 0, i32 20
  store i64 %1372, ptr %1374, align 8, !tbaa !61
  %1375 = load ptr, ptr %17, align 8, !tbaa !9
  %1376 = getelementptr inbounds %"struct.nasoq::Sympiler_BCSC", ptr %1375, i32 0, i32 31
  store i32 1, ptr %1376, align 8, !tbaa !62
  %1377 = load ptr, ptr %50, align 8, !tbaa !9
  %1378 = icmp eq ptr %1377, null
  br i1 %1378, label %1380, label %1379

1379:                                             ; preds = %1366
  call void @_ZdaPv(ptr noundef %1377) #12
  br label %1380

1380:                                             ; preds = %1379, %1366
  %1381 = load ptr, ptr %36, align 8, !tbaa !9
  %1382 = icmp eq ptr %1381, null
  br i1 %1382, label %1384, label %1383

1383:                                             ; preds = %1380
  call void @_ZdaPv(ptr noundef %1381) #12
  br label %1384

1384:                                             ; preds = %1383, %1380
  %1385 = load ptr, ptr %37, align 8, !tbaa !9
  %1386 = icmp eq ptr %1385, null
  br i1 %1386, label %1388, label %1387

1387:                                             ; preds = %1384
  call void @_ZdaPv(ptr noundef %1385) #12
  br label %1388

1388:                                             ; preds = %1387, %1384
  %1389 = load ptr, ptr %98, align 8, !tbaa !9
  %1390 = icmp eq ptr %1389, null
  br i1 %1390, label %1392, label %1391

1391:                                             ; preds = %1388
  call void @_ZdaPv(ptr noundef %1389) #12
  br label %1392

1392:                                             ; preds = %1391, %1388
  %1393 = load ptr, ptr %51, align 8, !tbaa !9
  %1394 = icmp eq ptr %1393, null
  br i1 %1394, label %1396, label %1395

1395:                                             ; preds = %1392
  call void @_ZdaPv(ptr noundef %1393) #12
  br label %1396

1396:                                             ; preds = %1395, %1392
  store i32 1, ptr %11, align 4
  store i32 1, ptr %97, align 4
  br label %1397

1397:                                             ; preds = %1396, %950
  call void @llvm.lifetime.end.p0(i64 4, ptr %107) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #9
  br label %1398

1398:                                             ; preds = %1397, %130, %115
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #9
  %1399 = load i32, ptr %11, align 4
  ret i32 %1399

1400:                                             ; preds = %748
  unreachable
}

declare noundef i64 @_ZN5nasoq11mult_size_tEmmPi(i64 noundef, i64 noundef, ptr noundef) #4

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare { i64, i1 } @llvm.umul.with.overflow.i64(i64, i64) #5

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znam(i64 noundef) #6

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

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

declare void @_ZN5nasoq10allocateLCEPNS_13Sympiler_BCSCEi(ptr noundef, i32 noundef) #4

; Function Attrs: nobuiltin nounwind
declare void @_ZdaPv(ptr noundef) #8

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 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { noreturn 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 #3 = { 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 = { "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 = { nobuiltin 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 #7 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #8 = { nobuiltin 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 #9 = { nounwind }
attributes #10 = { builtin allocsize(0) }
attributes #11 = { noreturn nounwind }
attributes #12 = { builtin 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++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !6, i64 64}
!12 = !{!"_ZTSN5nasoq12sympiler_CSCE", !13, i64 0, !13, i64 8, !13, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48, !10, i64 56, !6, i64 64, !6, i64 68, !6, i64 72, !6, i64 76, !6, i64 80, !6, i64 84}
!13 = !{!"long", !7, i64 0}
!14 = !{!12, !13, i64 0}
!15 = !{!13, !13, i64 0}
!16 = !{!17, !6, i64 260}
!17 = !{!"_ZTSN5nasoq13Sympiler_BCSCE", !13, i64 0, !13, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !13, i64 40, !10, i64 48, !10, i64 56, !10, i64 64, !10, i64 72, !10, i64 80, !10, i64 88, !10, i64 96, !10, i64 104, !10, i64 112, !13, i64 120, !13, i64 128, !13, i64 136, !13, i64 144, !13, i64 152, !13, i64 160, !10, i64 168, !10, i64 176, !10, i64 184, !10, i64 192, !10, i64 200, !10, i64 208, !10, i64 216, !10, i64 224, !6, i64 232, !6, i64 236, !6, i64 240, !6, i64 244, !6, i64 248, !6, i64 252, !6, i64 256, !6, i64 260}
!18 = !{!12, !10, i64 24}
!19 = !{!12, !10, i64 32}
!20 = !{!12, !10, i64 40}
!21 = !{!12, !6, i64 84}
!22 = !{!17, !10, i64 24}
!23 = !{!24, !24, i64 0}
!24 = !{!"double", !7, i64 0}
!25 = distinct !{!25, !26}
!26 = !{!"llvm.loop.mustprogress"}
!27 = distinct !{!27, !26}
!28 = distinct !{!28, !26}
!29 = distinct !{!29, !26}
!30 = distinct !{!30, !26}
!31 = distinct !{!31, !26}
!32 = distinct !{!32, !26}
!33 = distinct !{!33, !26}
!34 = distinct !{!34, !26}
!35 = distinct !{!35, !26}
!36 = distinct !{!36, !26}
!37 = distinct !{!37, !26}
!38 = distinct !{!38, !26}
!39 = distinct !{!39, !26}
!40 = distinct !{!40, !26}
!41 = distinct !{!41, !26}
!42 = !{!17, !13, i64 128}
!43 = !{!17, !13, i64 136}
!44 = !{!17, !13, i64 120}
!45 = !{!17, !10, i64 184}
!46 = !{!17, !10, i64 200}
!47 = !{!17, !10, i64 208}
!48 = !{!17, !10, i64 168}
!49 = distinct !{!49, !26}
!50 = distinct !{!50, !26}
!51 = distinct !{!51, !26}
!52 = !{!12, !6, i64 80}
!53 = distinct !{!53, !26}
!54 = distinct !{!54, !26}
!55 = distinct !{!55, !26}
!56 = distinct !{!56, !26}
!57 = distinct !{!57, !26}
!58 = distinct !{!58, !26}
!59 = distinct !{!59, !26}
!60 = !{!17, !13, i64 152}
!61 = !{!17, !13, i64 160}
!62 = !{!17, !6, i64 240}


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

@.str.1 = external hidden unnamed_addr constant [85 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [14 x i8], align 1
@__PRETTY_FUNCTION__._ZN5nasoq20super_node_detectionEiPNS_12sympiler_CSCES1_PiS2_PNS_13Sympiler_BCSCES2_PdS2_i = external hidden unnamed_addr constant [102 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [17 x i8], align 1

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

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 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: mustprogress uwtable
define dso_local noundef range(i32 0, 2) i32 @_ZN5nasoq20super_node_detectionEiPNS_12sympiler_CSCES1_PiS2_PNS_13Sympiler_BCSCES2_PdS2_i(i32 noundef %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, ptr nocapture noundef readonly %3, ptr nocapture noundef readonly %4, ptr noundef %5, ptr nocapture noundef readonly %6, ptr nocapture noundef readonly %7, ptr noundef %8, i32 noundef %9) local_unnamed_addr #3 {
  %11 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #10
  store i32 1, ptr %11, align 4, !tbaa !5
  %12 = getelementptr inbounds i8, ptr %1, i64 64
  %13 = load i32, ptr %12, align 8, !tbaa !9
  %14 = icmp slt i32 %13, 0
  br i1 %14, label %586, label %15

15:                                               ; preds = %10
  %16 = load i64, ptr %1, align 8, !tbaa !13
  %17 = trunc i64 %16 to i32
  %sext = shl i64 %16, 32
  %18 = ashr exact i64 %sext, 32
  %19 = call noundef i64 @_ZN5nasoq11mult_size_tEmmPi(i64 noundef %18, i64 noundef 4, ptr noundef nonnull %11)
  %20 = load i32, ptr %11, align 4, !tbaa !5
  %.not = icmp eq i32 %20, 0
  br i1 %.not, label %586, label %21

21:                                               ; preds = %15
  %22 = getelementptr inbounds i8, ptr %5, i64 260
  store i32 0, ptr %22, align 4, !tbaa !14
  %23 = getelementptr inbounds i8, ptr %1, i64 24
  %24 = load ptr, ptr %23, align 8, !tbaa !16
  %25 = getelementptr inbounds i8, ptr %1, i64 32
  %26 = load ptr, ptr %25, align 8, !tbaa !17
  %27 = getelementptr inbounds i8, ptr %1, i64 40
  %28 = load ptr, ptr %27, align 8, !tbaa !18
  %.not545 = icmp eq i32 %13, 0
  br i1 %.not545, label %29, label %38

29:                                               ; preds = %21
  %30 = getelementptr inbounds i8, ptr %2, i64 24
  %31 = load ptr, ptr %30, align 8, !tbaa !16
  %32 = getelementptr inbounds i8, ptr %2, i64 32
  %33 = load ptr, ptr %32, align 8, !tbaa !17
  %34 = getelementptr inbounds i8, ptr %2, i64 40
  %35 = load ptr, ptr %34, align 8, !tbaa !18
  %36 = getelementptr inbounds i8, ptr %2, i64 84
  %37 = load i32, ptr %36, align 4, !tbaa !19
  br label %38

38:                                               ; preds = %21, %29
  %.0501 = phi i32 [ %37, %29 ], [ 1, %21 ]
  %.0484 = phi ptr [ %33, %29 ], [ null, %21 ]
  %.0483 = phi ptr [ %31, %29 ], [ null, %21 ]
  %.0482 = phi ptr [ %35, %29 ], [ null, %21 ]
  %39 = getelementptr inbounds i8, ptr %5, i64 24
  %40 = load ptr, ptr %39, align 8, !tbaa !20
  %41 = load i32, ptr %6, align 4, !tbaa !5
  %42 = getelementptr inbounds i8, ptr %6, i64 4
  %43 = load i32, ptr %42, align 4, !tbaa !5
  %44 = getelementptr inbounds i8, ptr %6, i64 8
  %45 = load i32, ptr %44, align 4, !tbaa !5
  %46 = load double, ptr %7, align 8, !tbaa !21
  %47 = getelementptr inbounds i8, ptr %7, i64 8
  %48 = load double, ptr %47, align 8, !tbaa !21
  %49 = getelementptr inbounds i8, ptr %7, i64 16
  %50 = load double, ptr %49, align 8, !tbaa !21
  %51 = icmp ugt i64 %19, 4611686018427387903
  %52 = shl nuw i64 %19, 2
  %53 = select i1 %51, i64 -1, i64 %52
  %54 = call noalias noundef nonnull ptr @_Znam(i64 noundef %53) #11
  call void @llvm.memset.p0.i64(ptr nonnull align 4 %54, i8 0, i64 %53, i1 false)
  %55 = getelementptr inbounds i32, ptr %54, i64 %18
  %56 = ashr exact i64 %sext, 29
  %57 = getelementptr inbounds i8, ptr %54, i64 %56
  %.idx = mul nsw i64 %18, 12
  %58 = getelementptr inbounds i8, ptr %54, i64 %.idx
  %59 = icmp ugt i64 %18, 4611686018427387903
  %60 = ashr exact i64 %sext, 30
  %61 = select i1 %59, i64 -1, i64 %60
  %62 = call noalias noundef nonnull ptr @_Znam(i64 noundef %61) #11
  call void @llvm.memset.p0.i64(ptr nonnull align 4 %62, i8 0, i64 %61, i1 false)
  %sext546 = add i64 %sext, 4294967296
  %63 = ashr exact i64 %sext546, 30
  %.inv = icmp sgt i64 %sext546, -1
  %64 = select i1 %.inv, i64 %63, i64 -1
  %65 = call noalias noundef nonnull ptr @_Znam(i64 noundef %64) #11
  %66 = ptrtoint ptr %65 to i64
  call void @llvm.memset.p0.i64(ptr nonnull align 4 %65, i8 0, i64 %64, i1 false)
  %67 = icmp sgt i32 %17, 0
  br i1 %67, label %.lr.ph600.preheader, label %._crit_edge

.lr.ph600.preheader:                              ; preds = %38
  %68 = shl i64 %16, 2
  %69 = and i64 %68, 8589934588
  call void @llvm.memset.p0.i64(ptr nonnull align 4 %54, i8 0, i64 %69, i1 false), !tbaa !5
  %wide.trip.count = and i64 %16, 2147483647
  %xtraiter = and i64 %16, 1
  %70 = icmp eq i64 %wide.trip.count, 1
  br i1 %70, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph600.preheader.new

.lr.ph600.preheader.new:                          ; preds = %.lr.ph600.preheader
  %unroll_iter = sub nsw i64 %wide.trip.count, %xtraiter
  br label %.lr.ph600

.lr.ph600:                                        ; preds = %85, %.lr.ph600.preheader.new
  %indvars.iv = phi i64 [ 0, %.lr.ph600.preheader.new ], [ %indvars.iv.next.1, %85 ]
  %niter = phi i64 [ 0, %.lr.ph600.preheader.new ], [ %niter.next.1, %85 ]
  %71 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv
  %72 = load i32, ptr %71, align 4, !tbaa !5
  %.not564 = icmp eq i32 %72, -1
  br i1 %.not564, label %.lr.ph600.1, label %73

73:                                               ; preds = %.lr.ph600
  %74 = sext i32 %72 to i64
  %75 = getelementptr inbounds i32, ptr %54, i64 %74
  %76 = load i32, ptr %75, align 4, !tbaa !5
  %77 = add nsw i32 %76, 1
  store i32 %77, ptr %75, align 4, !tbaa !5
  br label %.lr.ph600.1

.lr.ph600.1:                                      ; preds = %.lr.ph600, %73
  %indvars.iv.next = or disjoint i64 %indvars.iv, 1
  %78 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next
  %79 = load i32, ptr %78, align 4, !tbaa !5
  %.not564.1 = icmp eq i32 %79, -1
  br i1 %.not564.1, label %85, label %80

80:                                               ; preds = %.lr.ph600.1
  %81 = sext i32 %79 to i64
  %82 = getelementptr inbounds i32, ptr %54, i64 %81
  %83 = load i32, ptr %82, align 4, !tbaa !5
  %84 = add nsw i32 %83, 1
  store i32 %84, ptr %82, align 4, !tbaa !5
  br label %85

85:                                               ; preds = %80, %.lr.ph600.1
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph600, !llvm.loop !23

._crit_edge.loopexit.unr-lcssa:                   ; preds = %85, %.lr.ph600.preheader
  %indvars.iv.unr = phi i64 [ 0, %.lr.ph600.preheader ], [ %indvars.iv.next.1, %85 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph600.epil

.lr.ph600.epil:                                   ; preds = %._crit_edge.loopexit.unr-lcssa
  %86 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.unr
  %87 = load i32, ptr %86, align 4, !tbaa !5
  %.not564.epil = icmp eq i32 %87, -1
  br i1 %.not564.epil, label %._crit_edge, label %88

88:                                               ; preds = %.lr.ph600.epil
  %89 = sext i32 %87 to i64
  %90 = getelementptr inbounds i32, ptr %54, i64 %89
  %91 = load i32, ptr %90, align 4, !tbaa !5
  %92 = add nsw i32 %91, 1
  store i32 %92, ptr %90, align 4, !tbaa !5
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit.unr-lcssa, %88, %.lr.ph600.epil, %38
  %93 = icmp ne i32 %17, 0
  %94 = zext i1 %93 to i32
  store i32 0, ptr %65, align 4, !tbaa !5
  %95 = call noalias noundef nonnull ptr @_Znam(i64 noundef %61) #11
  call void @llvm.memset.p0.i64(ptr nonnull align 4 %95, i8 0, i64 %61, i1 false)
  %96 = icmp sgt i32 %17, 1
  br i1 %96, label %.lr.ph604.preheader, label %._crit_edge605

.lr.ph604.preheader:                              ; preds = %._crit_edge
  %wide.trip.count718 = and i64 %16, 2147483647
  br label %.lr.ph604

.lr.ph604:                                        ; preds = %.lr.ph604.preheader, %133
  %indvars.iv715 = phi i64 [ 1, %.lr.ph604.preheader ], [ %indvars.iv.next716, %133 ]
  %.0514601 = phi i32 [ %94, %.lr.ph604.preheader ], [ %.1515, %133 ]
  %97 = add nsw i64 %indvars.iv715, -1
  %98 = getelementptr inbounds i32, ptr %3, i64 %97
  %99 = load i32, ptr %98, align 4, !tbaa !5
  %100 = zext i32 %99 to i64
  %.not562 = icmp eq i64 %indvars.iv715, %100
  br i1 %.not562, label %101, label %119

101:                                              ; preds = %.lr.ph604
  %102 = getelementptr inbounds i32, ptr %40, i64 %97
  %103 = load i32, ptr %102, align 4, !tbaa !5
  %104 = getelementptr inbounds i32, ptr %40, i64 %indvars.iv715
  %105 = load i32, ptr %104, align 4, !tbaa !5
  %106 = add nsw i32 %105, 1
  %.not563 = icmp eq i32 %103, %106
  br i1 %.not563, label %107, label %119

107:                                              ; preds = %101
  %108 = getelementptr inbounds i32, ptr %54, i64 %indvars.iv715
  %109 = load i32, ptr %108, align 4, !tbaa !5
  %110 = icmp sgt i32 %109, 1
  br i1 %110, label %119, label %111

111:                                              ; preds = %107
  %112 = getelementptr inbounds i32, ptr %4, i64 %indvars.iv715
  %113 = load i32, ptr %112, align 4, !tbaa !5
  %114 = icmp eq i32 %113, 1
  br i1 %114, label %119, label %115

115:                                              ; preds = %111
  %116 = getelementptr inbounds i32, ptr %4, i64 %97
  %117 = load i32, ptr %116, align 4, !tbaa !5
  %118 = icmp eq i32 %117, 1
  br i1 %118, label %119, label %133

119:                                              ; preds = %115, %111, %107, %101, %.lr.ph604
  %120 = add nsw i32 %.0514601, 1
  %121 = sext i32 %.0514601 to i64
  %122 = getelementptr inbounds i32, ptr %65, i64 %121
  %123 = trunc nuw nsw i64 %indvars.iv715 to i32
  store i32 %123, ptr %122, align 4, !tbaa !5
  %124 = getelementptr inbounds i32, ptr %4, i64 %indvars.iv715
  %125 = load i32, ptr %124, align 4, !tbaa !5
  %126 = icmp eq i32 %125, 1
  br i1 %126, label %131, label %127

127:                                              ; preds = %119
  %128 = getelementptr inbounds i32, ptr %4, i64 %97
  %129 = load i32, ptr %128, align 4, !tbaa !5
  %130 = icmp eq i32 %129, 1
  br i1 %130, label %131, label %133

131:                                              ; preds = %127, %119
  %132 = getelementptr inbounds i32, ptr %95, i64 %121
  store i32 1, ptr %132, align 4, !tbaa !5
  br label %133

133:                                              ; preds = %115, %131, %127
  %.1515 = phi i32 [ %120, %131 ], [ %120, %127 ], [ %.0514601, %115 ]
  %indvars.iv.next716 = add nuw nsw i64 %indvars.iv715, 1
  %exitcond719.not = icmp eq i64 %indvars.iv.next716, %wide.trip.count718
  br i1 %exitcond719.not, label %._crit_edge605, label %.lr.ph604, !llvm.loop !25

._crit_edge605:                                   ; preds = %133, %._crit_edge
  %.0514.lcssa = phi i32 [ %94, %._crit_edge ], [ %.1515, %133 ]
  %134 = sext i32 %.0514.lcssa to i64
  %135 = getelementptr inbounds i32, ptr %65, i64 %134
  store i32 %17, ptr %135, align 4, !tbaa !5
  %136 = icmp sgt i32 %.0514.lcssa, 0
  br i1 %136, label %.lr.ph612.preheader, label %._crit_edge627.thread

.lr.ph612.preheader:                              ; preds = %._crit_edge605
  %wide.trip.count728 = zext nneg i32 %.0514.lcssa to i64
  %.pre = load i32, ptr %65, align 4, !tbaa !5
  br label %.lr.ph612

.loopexit590:                                     ; preds = %.lr.ph608, %middle.block, %.lr.ph612
  %exitcond729.not = icmp eq i64 %indvars.iv.next726, %wide.trip.count728
  br i1 %exitcond729.not, label %.preheader589, label %.lr.ph612, !llvm.loop !26

.preheader589:                                    ; preds = %.loopexit590
  %invariant.gep = getelementptr i8, ptr %3, i64 -4
  br i1 %136, label %.lr.ph614.preheader, label %._crit_edge627.thread

.lr.ph614.preheader:                              ; preds = %.preheader589
  %137 = add nsw i64 %wide.trip.count728, -1
  %xtraiter938 = and i64 %wide.trip.count728, 1
  %138 = icmp eq i64 %137, 0
  br i1 %138, label %.preheader588.unr-lcssa, label %.lr.ph614.preheader.new

.lr.ph614.preheader.new:                          ; preds = %.lr.ph614.preheader
  %unroll_iter940 = and i64 %wide.trip.count728, 2147483646
  br label %.lr.ph614

.lr.ph612:                                        ; preds = %.lr.ph612.preheader, %.loopexit590
  %139 = phi i32 [ %.pre, %.lr.ph612.preheader ], [ %141, %.loopexit590 ]
  %indvars.iv725 = phi i64 [ 0, %.lr.ph612.preheader ], [ %indvars.iv.next726, %.loopexit590 ]
  %indvars.iv.next726 = add nuw nsw i64 %indvars.iv725, 1
  %140 = getelementptr inbounds i32, ptr %65, i64 %indvars.iv.next726
  %141 = load i32, ptr %140, align 4, !tbaa !5
  %142 = icmp slt i32 %139, %141
  br i1 %142, label %.lr.ph608.preheader, label %.loopexit590

.lr.ph608.preheader:                              ; preds = %.lr.ph612
  %143 = sext i32 %139 to i64
  %wide.trip.count723 = sext i32 %141 to i64
  %144 = trunc nuw nsw i64 %indvars.iv725 to i32
  %145 = sub nsw i64 %wide.trip.count723, %143
  %min.iters.check = icmp ult i64 %145, 8
  br i1 %min.iters.check, label %.lr.ph608.preheader937, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph608.preheader
  %n.vec = and i64 %145, -8
  %ind.end = add nsw i64 %n.vec, %143
  %broadcast.splatinsert = insertelement <4 x i32> poison, i32 %144, i64 0
  %broadcast.splat = shufflevector <4 x i32> %broadcast.splatinsert, <4 x i32> poison, <4 x i32> zeroinitializer
  %invariant.gep972 = getelementptr i32, ptr %55, i64 %143
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %gep973 = getelementptr i32, ptr %invariant.gep972, i64 %index
  %146 = getelementptr inbounds i8, ptr %gep973, i64 16
  store <4 x i32> %broadcast.splat, ptr %gep973, align 4, !tbaa !5
  store <4 x i32> %broadcast.splat, ptr %146, align 4, !tbaa !5
  %index.next = add nuw i64 %index, 8
  %147 = icmp eq i64 %index.next, %n.vec
  br i1 %147, label %middle.block, label %vector.body, !llvm.loop !27

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %145, %n.vec
  br i1 %cmp.n, label %.loopexit590, label %.lr.ph608.preheader937

.lr.ph608.preheader937:                           ; preds = %middle.block, %.lr.ph608.preheader
  %indvars.iv720.ph = phi i64 [ %143, %.lr.ph608.preheader ], [ %ind.end, %middle.block ]
  br label %.lr.ph608

.lr.ph608:                                        ; preds = %.lr.ph608.preheader937, %.lr.ph608
  %indvars.iv720 = phi i64 [ %indvars.iv.next721, %.lr.ph608 ], [ %indvars.iv720.ph, %.lr.ph608.preheader937 ]
  %148 = getelementptr inbounds i32, ptr %55, i64 %indvars.iv720
  store i32 %144, ptr %148, align 4, !tbaa !5
  %indvars.iv.next721 = add nsw i64 %indvars.iv720, 1
  %exitcond724.not = icmp eq i64 %indvars.iv.next721, %wide.trip.count723
  br i1 %exitcond724.not, label %.loopexit590, label %.lr.ph608, !llvm.loop !30

.preheader588.unr-lcssa:                          ; preds = %181, %.lr.ph614.preheader
  %indvars.iv730.unr = phi i64 [ 0, %.lr.ph614.preheader ], [ %indvars.iv.next731.1, %181 ]
  %lcmp.mod939.not = icmp eq i64 %xtraiter938, 0
  br i1 %lcmp.mod939.not, label %.preheader588, label %.lr.ph614.epil

.lr.ph614.epil:                                   ; preds = %.preheader588.unr-lcssa
  %149 = getelementptr i32, ptr %65, i64 %indvars.iv730.unr
  %150 = getelementptr i8, ptr %149, i64 4
  %151 = load i32, ptr %150, align 4, !tbaa !5
  %152 = sext i32 %151 to i64
  %gep.epil = getelementptr i32, ptr %invariant.gep, i64 %152
  %153 = load i32, ptr %gep.epil, align 4, !tbaa !5
  %154 = icmp eq i32 %153, -1
  br i1 %154, label %.preheader588.epilog-lcssa, label %155

155:                                              ; preds = %.lr.ph614.epil
  %156 = sext i32 %153 to i64
  %157 = getelementptr inbounds i32, ptr %55, i64 %156
  %158 = load i32, ptr %157, align 4, !tbaa !5
  br label %.preheader588.epilog-lcssa

.preheader588.epilog-lcssa:                       ; preds = %155, %.lr.ph614.epil
  %159 = phi i32 [ %158, %155 ], [ -1, %.lr.ph614.epil ]
  %160 = getelementptr inbounds i32, ptr %8, i64 %indvars.iv730.unr
  store i32 %159, ptr %160, align 4, !tbaa !5
  br label %.preheader588

.preheader588:                                    ; preds = %.preheader588.unr-lcssa, %.preheader588.epilog-lcssa
  br i1 %136, label %.lr.ph616.preheader, label %._crit_edge627.thread

.lr.ph616.preheader:                              ; preds = %.preheader588
  %wide.trip.count738 = zext nneg i32 %.0514.lcssa to i64
  %.pre815 = load i32, ptr %65, align 4, !tbaa !5
  br label %.lr.ph616

.lr.ph614:                                        ; preds = %181, %.lr.ph614.preheader.new
  %indvars.iv730 = phi i64 [ 0, %.lr.ph614.preheader.new ], [ %indvars.iv.next731.1, %181 ]
  %niter941 = phi i64 [ 0, %.lr.ph614.preheader.new ], [ %niter941.next.1, %181 ]
  %indvars.iv.next731 = or disjoint i64 %indvars.iv730, 1
  %161 = getelementptr inbounds i32, ptr %65, i64 %indvars.iv.next731
  %162 = load i32, ptr %161, align 4, !tbaa !5
  %163 = sext i32 %162 to i64
  %gep = getelementptr i32, ptr %invariant.gep, i64 %163
  %164 = load i32, ptr %gep, align 4, !tbaa !5
  %165 = icmp eq i32 %164, -1
  br i1 %165, label %.lr.ph614.1, label %166

166:                                              ; preds = %.lr.ph614
  %167 = sext i32 %164 to i64
  %168 = getelementptr inbounds i32, ptr %55, i64 %167
  %169 = load i32, ptr %168, align 4, !tbaa !5
  br label %.lr.ph614.1

.lr.ph614.1:                                      ; preds = %.lr.ph614, %166
  %170 = phi i32 [ %169, %166 ], [ -1, %.lr.ph614 ]
  %171 = getelementptr inbounds i32, ptr %8, i64 %indvars.iv730
  store i32 %170, ptr %171, align 4, !tbaa !5
  %indvars.iv.next731.1 = add nuw nsw i64 %indvars.iv730, 2
  %172 = getelementptr inbounds i32, ptr %65, i64 %indvars.iv.next731.1
  %173 = load i32, ptr %172, align 4, !tbaa !5
  %174 = sext i32 %173 to i64
  %gep.1 = getelementptr i32, ptr %invariant.gep, i64 %174
  %175 = load i32, ptr %gep.1, align 4, !tbaa !5
  %176 = icmp eq i32 %175, -1
  br i1 %176, label %181, label %177

177:                                              ; preds = %.lr.ph614.1
  %178 = sext i32 %175 to i64
  %179 = getelementptr inbounds i32, ptr %55, i64 %178
  %180 = load i32, ptr %179, align 4, !tbaa !5
  br label %181

181:                                              ; preds = %177, %.lr.ph614.1
  %182 = phi i32 [ %180, %177 ], [ -1, %.lr.ph614.1 ]
  %183 = getelementptr inbounds i32, ptr %8, i64 %indvars.iv.next731
  store i32 %182, ptr %183, align 4, !tbaa !5
  %niter941.next.1 = add i64 %niter941, 2
  %niter941.ncmp.1 = icmp eq i64 %niter941.next.1, %unroll_iter940
  br i1 %niter941.ncmp.1, label %.preheader588.unr-lcssa, label %.lr.ph614, !llvm.loop !31

.lr.ph616:                                        ; preds = %.lr.ph616.preheader, %193
  %184 = phi i32 [ %.pre815, %.lr.ph616.preheader ], [ %187, %193 ]
  %indvars.iv735 = phi i64 [ 0, %.lr.ph616.preheader ], [ %indvars.iv.next736, %193 ]
  %185 = getelementptr inbounds i32, ptr %58, i64 %indvars.iv735
  store i32 -1, ptr %185, align 4, !tbaa !5
  %indvars.iv.next736 = add nuw nsw i64 %indvars.iv735, 1
  %186 = getelementptr inbounds i32, ptr %65, i64 %indvars.iv.next736
  %187 = load i32, ptr %186, align 4, !tbaa !5
  %188 = sub nsw i32 %187, %184
  %189 = getelementptr inbounds i32, ptr %54, i64 %indvars.iv735
  store i32 %188, ptr %189, align 4, !tbaa !5
  %190 = getelementptr inbounds i32, ptr %55, i64 %indvars.iv735
  store i32 0, ptr %190, align 4, !tbaa !5
  %191 = sext i32 %184 to i64
  %.not561 = icmp sgt i64 %indvars.iv735, %191
  br i1 %.not561, label %192, label %193

192:                                              ; preds = %.lr.ph616
  call void @__assert_fail(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.1, i32 noundef 273, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5nasoq20super_node_detectionEiPNS_12sympiler_CSCES1_PiS2_PNS_13Sympiler_BCSCES2_PdS2_i) #12
  unreachable

193:                                              ; preds = %.lr.ph616
  %194 = getelementptr inbounds i32, ptr %40, i64 %191
  %195 = load i32, ptr %194, align 4, !tbaa !5
  %196 = getelementptr inbounds i32, ptr %57, i64 %indvars.iv735
  store i32 %195, ptr %196, align 4, !tbaa !5
  %exitcond739.not = icmp eq i64 %indvars.iv.next736, %wide.trip.count738
  br i1 %exitcond739.not, label %._crit_edge617, label %.lr.ph616, !llvm.loop !32

._crit_edge617:                                   ; preds = %193
  %.not854 = icmp eq i32 %.0514.lcssa, 1
  br i1 %.not854, label %.preheader585, label %.lr.ph623.preheader

.lr.ph623.preheader:                              ; preds = %._crit_edge617
  %197 = add nsw i32 %.0514.lcssa, -2
  %198 = zext nneg i32 %197 to i64
  br label %.lr.ph623

.preheader585:                                    ; preds = %.thread571, %._crit_edge617
  br i1 %136, label %.lr.ph626.preheader, label %._crit_edge627.thread

.lr.ph626.preheader:                              ; preds = %.preheader585
  %xtraiter942 = and i64 %wide.trip.count728, 1
  %199 = icmp eq i64 %137, 0
  br i1 %199, label %._crit_edge627.unr-lcssa, label %.lr.ph626.preheader.new

.lr.ph626.preheader.new:                          ; preds = %.lr.ph626.preheader
  %unroll_iter945 = and i64 %wide.trip.count728, 2147483646
  br label %.lr.ph626

.lr.ph623:                                        ; preds = %.lr.ph623.preheader, %.thread571
  %indvars.iv740 = phi i64 [ %198, %.lr.ph623.preheader ], [ %indvars.iv.next741, %.thread571 ]
  %200 = getelementptr inbounds i32, ptr %8, i64 %indvars.iv740
  %201 = load i32, ptr %200, align 4, !tbaa !5
  %202 = icmp eq i32 %201, -1
  br i1 %202, label %.thread571, label %203

203:                                              ; preds = %.lr.ph623
  %204 = getelementptr inbounds i32, ptr %95, i64 %indvars.iv740
  %205 = load i32, ptr %204, align 4, !tbaa !5
  %.not552 = icmp eq i32 %205, 0
  br i1 %.not552, label %206, label %.thread571

206:                                              ; preds = %203
  %207 = add nuw nsw i64 %indvars.iv740, 1
  %208 = getelementptr inbounds i32, ptr %95, i64 %207
  %209 = load i32, ptr %208, align 4, !tbaa !5
  %.not553 = icmp eq i32 %209, 0
  br i1 %.not553, label %.preheader587, label %.thread571

.preheader587:                                    ; preds = %206, %.preheader587
  %.0516 = phi i32 [ %212, %.preheader587 ], [ %201, %206 ]
  %210 = sext i32 %.0516 to i64
  %211 = getelementptr inbounds i32, ptr %58, i64 %210
  %212 = load i32, ptr %211, align 4, !tbaa !5
  %.not554 = icmp eq i32 %212, -1
  br i1 %.not554, label %.preheader586, label %.preheader587, !llvm.loop !33

.preheader586:                                    ; preds = %.preheader587
  %213 = sext i32 %201 to i64
  %214 = getelementptr inbounds i32, ptr %58, i64 %213
  %215 = load i32, ptr %214, align 4, !tbaa !5
  %.not555618 = icmp eq i32 %215, -1
  br i1 %.not555618, label %._crit_edge620, label %.lr.ph619

.lr.ph619:                                        ; preds = %.preheader586, %.lr.ph619
  %216 = phi i32 [ %220, %.lr.ph619 ], [ %215, %.preheader586 ]
  %217 = phi ptr [ %219, %.lr.ph619 ], [ %214, %.preheader586 ]
  store i32 %.0516, ptr %217, align 4, !tbaa !5
  %218 = sext i32 %216 to i64
  %219 = getelementptr inbounds i32, ptr %58, i64 %218
  %220 = load i32, ptr %219, align 4, !tbaa !5
  %.not555 = icmp eq i32 %220, -1
  br i1 %.not555, label %._crit_edge620, label %.lr.ph619, !llvm.loop !34

._crit_edge620:                                   ; preds = %.lr.ph619, %.preheader586
  %221 = zext i32 %.0516 to i64
  %.not556 = icmp eq i64 %207, %221
  br i1 %.not556, label %222, label %.thread571

222:                                              ; preds = %._crit_edge620
  %223 = getelementptr inbounds i32, ptr %54, i64 %indvars.iv740
  %224 = load i32, ptr %223, align 4, !tbaa !5
  %225 = getelementptr inbounds i32, ptr %54, i64 %207
  %226 = load i32, ptr %225, align 4, !tbaa !5
  %227 = add nsw i32 %226, %224
  %228 = getelementptr inbounds i32, ptr %55, i64 %207
  %229 = load i32, ptr %228, align 4, !tbaa !5
  %230 = getelementptr inbounds i32, ptr %57, i64 %207
  %231 = load i32, ptr %230, align 4, !tbaa !5
  %232 = sitofp i32 %231 to double
  %.not557 = icmp sgt i32 %227, %41
  br i1 %.not557, label %233, label %.thread

233:                                              ; preds = %222
  %234 = getelementptr inbounds i32, ptr %57, i64 %indvars.iv740
  %235 = load i32, ptr %234, align 4, !tbaa !5
  %236 = sitofp i32 %235 to double
  %237 = sitofp i32 %224 to double
  %238 = fadd double %237, %232
  %239 = fsub double %238, %236
  %240 = fmul double %239, %237
  %241 = add nsw i32 %231, %224
  %242 = sub i32 %241, %235
  %243 = mul nsw i32 %242, %224
  %244 = sitofp i32 %243 to double
  %245 = fcmp oeq double %240, %244
  br i1 %245, label %247, label %246

246:                                              ; preds = %233
  call void @__assert_fail(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.1, i32 noundef 331, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5nasoq20super_node_detectionEiPNS_12sympiler_CSCES1_PiS2_PNS_13Sympiler_BCSCES2_PdS2_i) #12
  unreachable

247:                                              ; preds = %233
  %248 = fcmp oeq double %240, 0.000000e+00
  br i1 %248, label %.thread, label %249

249:                                              ; preds = %247
  %250 = sitofp i32 %229 to double
  %251 = fadd double %240, %250
  %252 = sitofp i32 %227 to double
  %253 = fadd double %252, 1.000000e+00
  %254 = fmul double %253, %252
  %255 = fmul double %254, 5.000000e-01
  %256 = sitofp i32 %226 to double
  %257 = fsub double %232, %256
  %258 = call double @llvm.fmuladd.f64(double %252, double %257, double %255)
  %259 = fdiv double %251, %258
  %260 = add nsw i32 %243, %229
  %.not558 = icmp sle i32 %227, %43
  %261 = fcmp olt double %259, %46
  %or.cond = select i1 %.not558, i1 %261, i1 false
  br i1 %or.cond, label %266, label %262

262:                                              ; preds = %249
  %.not559 = icmp sgt i32 %227, %45
  %263 = fcmp uge double %259, %48
  %or.cond565.not695 = select i1 %.not559, i1 true, i1 %263
  %264 = fcmp uge double %259, %50
  %or.cond566.not693 = select i1 %or.cond565.not695, i1 %264, i1 false
  %265 = fcmp uge double %258, 0x41AFFFFFFE000000
  %or.cond573 = select i1 %or.cond566.not693, i1 true, i1 %265
  br i1 %or.cond573, label %.thread571, label %.thread

266:                                              ; preds = %249
  %.old = fcmp uge double %258, 0x41AFFFFFFE000000
  br i1 %.old, label %.thread571, label %.thread

.thread:                                          ; preds = %262, %247, %222, %266
  %.1510570 = phi i32 [ %260, %266 ], [ %229, %222 ], [ %229, %247 ], [ %260, %262 ]
  %267 = getelementptr inbounds i32, ptr %55, i64 %indvars.iv740
  store i32 %.1510570, ptr %267, align 4, !tbaa !5
  %268 = getelementptr inbounds i32, ptr %58, i64 %207
  %269 = trunc nuw nsw i64 %indvars.iv740 to i32
  store i32 %269, ptr %268, align 4, !tbaa !5
  %270 = load i32, ptr %230, align 4, !tbaa !5
  %271 = add nsw i32 %270, %224
  %272 = getelementptr inbounds i32, ptr %57, i64 %indvars.iv740
  store i32 %271, ptr %272, align 4, !tbaa !5
  %273 = load i32, ptr %225, align 4, !tbaa !5
  %274 = load i32, ptr %223, align 4, !tbaa !5
  %275 = add nsw i32 %274, %273
  store i32 %275, ptr %223, align 4, !tbaa !5
  br label %.thread571

.thread571:                                       ; preds = %262, %266, %.thread, %._crit_edge620, %203, %206, %.lr.ph623
  %indvars.iv.next741 = add nsw i64 %indvars.iv740, -1
  %276 = icmp sgt i64 %indvars.iv740, 0
  br i1 %276, label %.lr.ph623, label %.preheader585, !llvm.loop !35

.lr.ph626:                                        ; preds = %299, %.lr.ph626.preheader.new
  %indvars.iv743 = phi i64 [ 0, %.lr.ph626.preheader.new ], [ %indvars.iv.next744.1, %299 ]
  %.0480625 = phi i64 [ 0, %.lr.ph626.preheader.new ], [ %.1481.1, %299 ]
  %niter946 = phi i64 [ 0, %.lr.ph626.preheader.new ], [ %niter946.next.1, %299 ]
  %277 = getelementptr inbounds i32, ptr %58, i64 %indvars.iv743
  %278 = load i32, ptr %277, align 4, !tbaa !5
  %279 = icmp eq i32 %278, -1
  br i1 %279, label %280, label %.lr.ph626.1

280:                                              ; preds = %.lr.ph626
  %281 = getelementptr inbounds i32, ptr %65, i64 %indvars.iv743
  %282 = load i32, ptr %281, align 4, !tbaa !5
  %283 = getelementptr inbounds i32, ptr %65, i64 %.0480625
  store i32 %282, ptr %283, align 4, !tbaa !5
  %284 = getelementptr inbounds i32, ptr %57, i64 %indvars.iv743
  %285 = load i32, ptr %284, align 4, !tbaa !5
  %286 = getelementptr inbounds i32, ptr %57, i64 %.0480625
  store i32 %285, ptr %286, align 4, !tbaa !5
  %287 = add i64 %.0480625, 1
  br label %.lr.ph626.1

.lr.ph626.1:                                      ; preds = %.lr.ph626, %280
  %.1481 = phi i64 [ %287, %280 ], [ %.0480625, %.lr.ph626 ]
  %indvars.iv.next744 = or disjoint i64 %indvars.iv743, 1
  %288 = getelementptr inbounds i32, ptr %58, i64 %indvars.iv.next744
  %289 = load i32, ptr %288, align 4, !tbaa !5
  %290 = icmp eq i32 %289, -1
  br i1 %290, label %291, label %299

291:                                              ; preds = %.lr.ph626.1
  %292 = getelementptr inbounds i32, ptr %65, i64 %indvars.iv.next744
  %293 = load i32, ptr %292, align 4, !tbaa !5
  %294 = getelementptr inbounds i32, ptr %65, i64 %.1481
  store i32 %293, ptr %294, align 4, !tbaa !5
  %295 = getelementptr inbounds i32, ptr %57, i64 %indvars.iv.next744
  %296 = load i32, ptr %295, align 4, !tbaa !5
  %297 = getelementptr inbounds i32, ptr %57, i64 %.1481
  store i32 %296, ptr %297, align 4, !tbaa !5
  %298 = add i64 %.1481, 1
  br label %299

299:                                              ; preds = %291, %.lr.ph626.1
  %.1481.1 = phi i64 [ %298, %291 ], [ %.1481, %.lr.ph626.1 ]
  %indvars.iv.next744.1 = add nuw nsw i64 %indvars.iv743, 2
  %niter946.next.1 = add i64 %niter946, 2
  %niter946.ncmp.1 = icmp eq i64 %niter946.next.1, %unroll_iter945
  br i1 %niter946.ncmp.1, label %._crit_edge627.unr-lcssa, label %.lr.ph626, !llvm.loop !36

._crit_edge627.thread:                            ; preds = %.preheader585, %._crit_edge605, %.preheader589, %.preheader588
  store i32 %17, ptr %65, align 4, !tbaa !5
  br label %._crit_edge643

._crit_edge627.unr-lcssa:                         ; preds = %299, %.lr.ph626.preheader
  %.1481.lcssa.ph = phi i64 [ poison, %.lr.ph626.preheader ], [ %.1481.1, %299 ]
  %indvars.iv743.unr = phi i64 [ 0, %.lr.ph626.preheader ], [ %indvars.iv.next744.1, %299 ]
  %.0480625.unr = phi i64 [ 0, %.lr.ph626.preheader ], [ %.1481.1, %299 ]
  %lcmp.mod943.not = icmp eq i64 %xtraiter942, 0
  br i1 %lcmp.mod943.not, label %._crit_edge627, label %.lr.ph626.epil

.lr.ph626.epil:                                   ; preds = %._crit_edge627.unr-lcssa
  %300 = getelementptr inbounds i32, ptr %58, i64 %indvars.iv743.unr
  %301 = load i32, ptr %300, align 4, !tbaa !5
  %302 = icmp eq i32 %301, -1
  br i1 %302, label %303, label %._crit_edge627

303:                                              ; preds = %.lr.ph626.epil
  %304 = getelementptr inbounds i32, ptr %65, i64 %indvars.iv743.unr
  %305 = load i32, ptr %304, align 4, !tbaa !5
  %306 = getelementptr inbounds i32, ptr %65, i64 %.0480625.unr
  store i32 %305, ptr %306, align 4, !tbaa !5
  %307 = getelementptr inbounds i32, ptr %57, i64 %indvars.iv743.unr
  %308 = load i32, ptr %307, align 4, !tbaa !5
  %309 = getelementptr inbounds i32, ptr %57, i64 %.0480625.unr
  store i32 %308, ptr %309, align 4, !tbaa !5
  %310 = add i64 %.0480625.unr, 1
  br label %._crit_edge627

._crit_edge627:                                   ; preds = %.lr.ph626.epil, %303, %._crit_edge627.unr-lcssa
  %.1481.lcssa = phi i64 [ %.1481.lcssa.ph, %._crit_edge627.unr-lcssa ], [ %310, %303 ], [ %.0480625.unr, %.lr.ph626.epil ]
  %311 = getelementptr inbounds i32, ptr %65, i64 %.1481.lcssa
  store i32 %17, ptr %311, align 4, !tbaa !5
  %.not696 = icmp eq i64 %.1481.lcssa, 0
  br i1 %.not696, label %._crit_edge643, label %.lr.ph635.preheader

.lr.ph635.preheader:                              ; preds = %._crit_edge627
  %.pre816 = load i32, ptr %65, align 4, !tbaa !5
  br label %.lr.ph635

.loopexit584:                                     ; preds = %.lr.ph631, %middle.block865, %.lr.ph635
  %exitcond756.not = icmp eq i64 %indvars.iv.next754, %.1481.lcssa
  br i1 %exitcond756.not, label %.lr.ph639.preheader, label %.lr.ph635, !llvm.loop !37

.lr.ph639.preheader:                              ; preds = %.loopexit584
  %xtraiter947 = and i64 %.1481.lcssa, 1
  %312 = icmp eq i64 %.1481.lcssa, 1
  br i1 %312, label %.lr.ph642.preheader.unr-lcssa, label %.lr.ph639.preheader.new

.lr.ph639.preheader.new:                          ; preds = %.lr.ph639.preheader
  %unroll_iter949 = and i64 %.1481.lcssa, -2
  br label %.lr.ph639

.lr.ph635:                                        ; preds = %.lr.ph635.preheader, %.loopexit584
  %313 = phi i32 [ %.pre816, %.lr.ph635.preheader ], [ %315, %.loopexit584 ]
  %indvars.iv753 = phi i64 [ 0, %.lr.ph635.preheader ], [ %indvars.iv.next754, %.loopexit584 ]
  %indvars.iv.next754 = add nuw nsw i64 %indvars.iv753, 1
  %314 = getelementptr inbounds i32, ptr %65, i64 %indvars.iv.next754
  %315 = load i32, ptr %314, align 4, !tbaa !5
  %316 = icmp slt i32 %313, %315
  br i1 %316, label %.lr.ph631.preheader, label %.loopexit584

.lr.ph631.preheader:                              ; preds = %.lr.ph635
  %317 = sext i32 %313 to i64
  %wide.trip.count751 = sext i32 %315 to i64
  %318 = trunc nuw nsw i64 %indvars.iv753 to i32
  %319 = sub nsw i64 %wide.trip.count751, %317
  %min.iters.check867 = icmp ult i64 %319, 8
  br i1 %min.iters.check867, label %.lr.ph631.preheader936, label %vector.ph868

vector.ph868:                                     ; preds = %.lr.ph631.preheader
  %n.vec870 = and i64 %319, -8
  %ind.end871 = add nsw i64 %n.vec870, %317
  %broadcast.splatinsert876 = insertelement <4 x i32> poison, i32 %318, i64 0
  %broadcast.splat877 = shufflevector <4 x i32> %broadcast.splatinsert876, <4 x i32> poison, <4 x i32> zeroinitializer
  %invariant.gep974 = getelementptr i32, ptr %55, i64 %317
  br label %vector.body873

vector.body873:                                   ; preds = %vector.body873, %vector.ph868
  %index874 = phi i64 [ 0, %vector.ph868 ], [ %index.next878, %vector.body873 ]
  %gep975 = getelementptr i32, ptr %invariant.gep974, i64 %index874
  %320 = getelementptr inbounds i8, ptr %gep975, i64 16
  store <4 x i32> %broadcast.splat877, ptr %gep975, align 4, !tbaa !5
  store <4 x i32> %broadcast.splat877, ptr %320, align 4, !tbaa !5
  %index.next878 = add nuw i64 %index874, 8
  %321 = icmp eq i64 %index.next878, %n.vec870
  br i1 %321, label %middle.block865, label %vector.body873, !llvm.loop !38

middle.block865:                                  ; preds = %vector.body873
  %cmp.n879 = icmp eq i64 %319, %n.vec870
  br i1 %cmp.n879, label %.loopexit584, label %.lr.ph631.preheader936

.lr.ph631.preheader936:                           ; preds = %middle.block865, %.lr.ph631.preheader
  %indvars.iv748.ph = phi i64 [ %317, %.lr.ph631.preheader ], [ %ind.end871, %middle.block865 ]
  br label %.lr.ph631

.lr.ph631:                                        ; preds = %.lr.ph631.preheader936, %.lr.ph631
  %indvars.iv748 = phi i64 [ %indvars.iv.next749, %.lr.ph631 ], [ %indvars.iv748.ph, %.lr.ph631.preheader936 ]
  %322 = getelementptr inbounds i32, ptr %55, i64 %indvars.iv748
  store i32 %318, ptr %322, align 4, !tbaa !5
  %indvars.iv.next749 = add nsw i64 %indvars.iv748, 1
  %exitcond752.not = icmp eq i64 %indvars.iv.next749, %wide.trip.count751
  br i1 %exitcond752.not, label %.loopexit584, label %.lr.ph631, !llvm.loop !39

.lr.ph642.preheader.unr-lcssa:                    ; preds = %366, %.lr.ph639.preheader
  %indvars.iv757.unr = phi i64 [ 0, %.lr.ph639.preheader ], [ %indvars.iv.next758.1, %366 ]
  %lcmp.mod948.not = icmp eq i64 %xtraiter947, 0
  br i1 %lcmp.mod948.not, label %.lr.ph642.preheader, label %.lr.ph639.epil

.lr.ph639.epil:                                   ; preds = %.lr.ph642.preheader.unr-lcssa
  %323 = getelementptr i32, ptr %65, i64 %indvars.iv757.unr
  %324 = getelementptr i8, ptr %323, i64 4
  %325 = load i32, ptr %324, align 4, !tbaa !5
  %326 = sext i32 %325 to i64
  %gep637.epil = getelementptr i32, ptr %invariant.gep, i64 %326
  %327 = load i32, ptr %gep637.epil, align 4, !tbaa !5
  %328 = icmp eq i32 %327, -1
  br i1 %328, label %.lr.ph642.preheader.epilog-lcssa, label %329

329:                                              ; preds = %.lr.ph639.epil
  %330 = sext i32 %327 to i64
  %331 = getelementptr inbounds i32, ptr %55, i64 %330
  %332 = load i32, ptr %331, align 4, !tbaa !5
  br label %.lr.ph642.preheader.epilog-lcssa

.lr.ph642.preheader.epilog-lcssa:                 ; preds = %329, %.lr.ph639.epil
  %333 = phi i32 [ %332, %329 ], [ -1, %.lr.ph639.epil ]
  %334 = getelementptr inbounds i32, ptr %8, i64 %indvars.iv757.unr
  store i32 %333, ptr %334, align 4, !tbaa !5
  br label %.lr.ph642.preheader

.lr.ph642.preheader:                              ; preds = %.lr.ph642.preheader.unr-lcssa, %.lr.ph642.preheader.epilog-lcssa
  %.pre817 = load i32, ptr %65, align 4, !tbaa !5
  %min.iters.check882 = icmp ult i64 %.1481.lcssa, 8
  br i1 %min.iters.check882, label %.lr.ph642.preheader932, label %vector.ph883

.lr.ph642.preheader932:                           ; preds = %middle.block880, %.lr.ph642.preheader
  %.ph = phi i32 [ %.pre817, %.lr.ph642.preheader ], [ %vector.recur.extract, %middle.block880 ]
  %indvars.iv761.ph = phi i64 [ 0, %.lr.ph642.preheader ], [ %n.vec885, %middle.block880 ]
  %.0473640.ph = phi i32 [ 0, %.lr.ph642.preheader ], [ %345, %middle.block880 ]
  br label %.lr.ph642

vector.ph883:                                     ; preds = %.lr.ph642.preheader
  %n.vec885 = and i64 %.1481.lcssa, -8
  %vector.recur.init = insertelement <4 x i32> poison, i32 %.pre817, i64 3
  br label %vector.body887

vector.body887:                                   ; preds = %vector.body887, %vector.ph883
  %index888 = phi i64 [ 0, %vector.ph883 ], [ %index.next891, %vector.body887 ]
  %vector.recur = phi <4 x i32> [ %vector.recur.init, %vector.ph883 ], [ %wide.load890, %vector.body887 ]
  %vec.phi = phi <4 x i32> [ zeroinitializer, %vector.ph883 ], [ %342, %vector.body887 ]
  %vec.phi889 = phi <4 x i32> [ zeroinitializer, %vector.ph883 ], [ %343, %vector.body887 ]
  %335 = or disjoint i64 %index888, 1
  %336 = getelementptr inbounds i32, ptr %65, i64 %335
  %337 = getelementptr inbounds i8, ptr %336, i64 16
  %wide.load = load <4 x i32>, ptr %336, align 4, !tbaa !5
  %wide.load890 = load <4 x i32>, ptr %337, align 4, !tbaa !5
  %338 = shufflevector <4 x i32> %vector.recur, <4 x i32> %wide.load, <4 x i32> <i32 3, i32 4, i32 5, i32 6>
  %339 = shufflevector <4 x i32> %wide.load, <4 x i32> %wide.load890, <4 x i32> <i32 3, i32 4, i32 5, i32 6>
  %340 = add <4 x i32> %wide.load, %vec.phi
  %341 = add <4 x i32> %wide.load890, %vec.phi889
  %342 = sub <4 x i32> %340, %338
  %343 = sub <4 x i32> %341, %339
  %index.next891 = add nuw i64 %index888, 8
  %344 = icmp eq i64 %index.next891, %n.vec885
  br i1 %344, label %middle.block880, label %vector.body887, !llvm.loop !40

middle.block880:                                  ; preds = %vector.body887
  %bin.rdx = add <4 x i32> %343, %342
  %345 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %bin.rdx)
  %vector.recur.extract = extractelement <4 x i32> %wide.load890, i64 3
  %cmp.n892 = icmp eq i64 %.1481.lcssa, %n.vec885
  br i1 %cmp.n892, label %._crit_edge643, label %.lr.ph642.preheader932

.lr.ph639:                                        ; preds = %366, %.lr.ph639.preheader.new
  %indvars.iv757 = phi i64 [ 0, %.lr.ph639.preheader.new ], [ %indvars.iv.next758.1, %366 ]
  %niter950 = phi i64 [ 0, %.lr.ph639.preheader.new ], [ %niter950.next.1, %366 ]
  %indvars.iv.next758 = or disjoint i64 %indvars.iv757, 1
  %346 = getelementptr inbounds i32, ptr %65, i64 %indvars.iv.next758
  %347 = load i32, ptr %346, align 4, !tbaa !5
  %348 = sext i32 %347 to i64
  %gep637 = getelementptr i32, ptr %invariant.gep, i64 %348
  %349 = load i32, ptr %gep637, align 4, !tbaa !5
  %350 = icmp eq i32 %349, -1
  br i1 %350, label %.lr.ph639.1, label %351

351:                                              ; preds = %.lr.ph639
  %352 = sext i32 %349 to i64
  %353 = getelementptr inbounds i32, ptr %55, i64 %352
  %354 = load i32, ptr %353, align 4, !tbaa !5
  br label %.lr.ph639.1

.lr.ph639.1:                                      ; preds = %.lr.ph639, %351
  %355 = phi i32 [ %354, %351 ], [ -1, %.lr.ph639 ]
  %356 = getelementptr inbounds i32, ptr %8, i64 %indvars.iv757
  store i32 %355, ptr %356, align 4, !tbaa !5
  %indvars.iv.next758.1 = add nuw nsw i64 %indvars.iv757, 2
  %357 = getelementptr inbounds i32, ptr %65, i64 %indvars.iv.next758.1
  %358 = load i32, ptr %357, align 4, !tbaa !5
  %359 = sext i32 %358 to i64
  %gep637.1 = getelementptr i32, ptr %invariant.gep, i64 %359
  %360 = load i32, ptr %gep637.1, align 4, !tbaa !5
  %361 = icmp eq i32 %360, -1
  br i1 %361, label %366, label %362

362:                                              ; preds = %.lr.ph639.1
  %363 = sext i32 %360 to i64
  %364 = getelementptr inbounds i32, ptr %55, i64 %363
  %365 = load i32, ptr %364, align 4, !tbaa !5
  br label %366

366:                                              ; preds = %362, %.lr.ph639.1
  %367 = phi i32 [ %365, %362 ], [ -1, %.lr.ph639.1 ]
  %368 = getelementptr inbounds i32, ptr %8, i64 %indvars.iv.next758
  store i32 %367, ptr %368, align 4, !tbaa !5
  %niter950.next.1 = add i64 %niter950, 2
  %niter950.ncmp.1 = icmp eq i64 %niter950.next.1, %unroll_iter949
  br i1 %niter950.ncmp.1, label %.lr.ph642.preheader.unr-lcssa, label %.lr.ph639, !llvm.loop !41

._crit_edge643:                                   ; preds = %.lr.ph642, %middle.block880, %._crit_edge627, %._crit_edge627.thread
  %.not696834838843 = phi i1 [ true, %._crit_edge627 ], [ true, %._crit_edge627.thread ], [ %.not696, %middle.block880 ], [ %.not696, %.lr.ph642 ]
  %.0480.lcssa833839842 = phi i64 [ 0, %._crit_edge627 ], [ 0, %._crit_edge627.thread ], [ %.1481.lcssa, %middle.block880 ], [ %.1481.lcssa, %.lr.ph642 ]
  %.0473.lcssa = phi i32 [ 0, %._crit_edge627 ], [ 0, %._crit_edge627.thread ], [ %345, %middle.block880 ], [ %374, %.lr.ph642 ]
  %369 = icmp eq i32 %.0473.lcssa, %17
  br i1 %369, label %.preheader581, label %375

.lr.ph642:                                        ; preds = %.lr.ph642.preheader932, %.lr.ph642
  %370 = phi i32 [ %372, %.lr.ph642 ], [ %.ph, %.lr.ph642.preheader932 ]
  %indvars.iv761 = phi i64 [ %indvars.iv.next762, %.lr.ph642 ], [ %indvars.iv761.ph, %.lr.ph642.preheader932 ]
  %.0473640 = phi i32 [ %374, %.lr.ph642 ], [ %.0473640.ph, %.lr.ph642.preheader932 ]
  %indvars.iv.next762 = add nuw nsw i64 %indvars.iv761, 1
  %371 = getelementptr inbounds i32, ptr %65, i64 %indvars.iv.next762
  %372 = load i32, ptr %371, align 4, !tbaa !5
  %373 = add i32 %372, %.0473640
  %374 = sub i32 %373, %370
  %exitcond764.not = icmp eq i64 %indvars.iv.next762, %.1481.lcssa
  br i1 %exitcond764.not, label %._crit_edge643, label %.lr.ph642, !llvm.loop !42

375:                                              ; preds = %._crit_edge643
  call void @__assert_fail(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.1, i32 noundef 434, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5nasoq20super_node_detectionEiPNS_12sympiler_CSCES1_PiS2_PNS_13Sympiler_BCSCES2_PdS2_i) #12
  unreachable

.preheader581:                                    ; preds = %._crit_edge643, %384
  %indvars.iv765 = phi i64 [ %indvars.iv.next766, %384 ], [ 0, %._crit_edge643 ]
  %.0478 = phi i64 [ %391, %384 ], [ 0, %._crit_edge643 ]
  %.0477 = phi i64 [ %388, %384 ], [ 0, %._crit_edge643 ]
  %exitcond768.not = icmp eq i64 %indvars.iv765, %.0480.lcssa833839842
  br i1 %exitcond768.not, label %393, label %376

376:                                              ; preds = %.preheader581
  %indvars.iv.next766 = add nuw i64 %indvars.iv765, 1
  %377 = getelementptr inbounds i32, ptr %65, i64 %indvars.iv.next766
  %378 = load i32, ptr %377, align 4, !tbaa !5
  %379 = getelementptr inbounds i32, ptr %65, i64 %indvars.iv765
  %380 = load i32, ptr %379, align 4, !tbaa !5
  %381 = sub nsw i32 %378, %380
  %382 = icmp sgt i32 %381, 0
  br i1 %382, label %384, label %383

383:                                              ; preds = %376
  call void @__assert_fail(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.1, i32 noundef 445, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5nasoq20super_node_detectionEiPNS_12sympiler_CSCES1_PiS2_PNS_13Sympiler_BCSCES2_PdS2_i) #12
  unreachable

384:                                              ; preds = %376
  %385 = getelementptr inbounds i32, ptr %57, i64 %indvars.iv765
  %386 = load i32, ptr %385, align 4, !tbaa !5
  %387 = sext i32 %386 to i64
  %388 = add i64 %.0477, %387
  %389 = mul nsw i32 %386, %381
  %390 = sext i32 %389 to i64
  %391 = add i64 %.0478, %390
  %.not551 = icmp eq i64 %388, 0
  br i1 %.not551, label %392, label %.preheader581, !llvm.loop !43

392:                                              ; preds = %384
  call void @__assert_fail(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.1, i32 noundef 463, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5nasoq20super_node_detectionEiPNS_12sympiler_CSCES1_PiS2_PNS_13Sympiler_BCSCES2_PdS2_i) #12
  unreachable

393:                                              ; preds = %.preheader581
  %394 = call i64 @llvm.umax.i64(i64 %.0478, i64 1)
  %395 = call i64 @llvm.umax.i64(i64 %.0477, i64 1)
  %396 = getelementptr inbounds i8, ptr %5, i64 128
  store i64 %395, ptr %396, align 8, !tbaa !44
  %397 = getelementptr inbounds i8, ptr %5, i64 136
  store i64 %394, ptr %397, align 8, !tbaa !45
  %398 = getelementptr inbounds i8, ptr %5, i64 120
  store i64 %.0480.lcssa833839842, ptr %398, align 8, !tbaa !46
  call void @_ZN5nasoq10allocateLCEPNS_13Sympiler_BCSCEi(ptr noundef %5, i32 noundef 1)
  %399 = getelementptr inbounds i8, ptr %5, i64 184
  %400 = load ptr, ptr %399, align 8, !tbaa !47
  %401 = getelementptr inbounds i8, ptr %5, i64 208
  %402 = load ptr, ptr %401, align 8, !tbaa !48
  store i32 0, ptr %402, align 4, !tbaa !5
  %403 = getelementptr inbounds i8, ptr %5, i64 168
  %404 = load ptr, ptr %403, align 8, !tbaa !49
  %405 = add i64 %.0480.lcssa833839842, 1
  %min.iters.check895 = icmp ult i64 %405, 8
  %406 = ptrtoint ptr %404 to i64
  %407 = sub i64 %406, %66
  %diff.check = icmp ult i64 %407, 32
  %or.cond921 = select i1 %min.iters.check895, i1 true, i1 %diff.check
  br i1 %or.cond921, label %scalar.ph894.preheader, label %vector.ph896

scalar.ph894.preheader:                           ; preds = %middle.block893, %393
  %indvars.iv769.ph = phi i64 [ 0, %393 ], [ %n.vec898, %middle.block893 ]
  %408 = add i64 %.0480.lcssa833839842, 1
  %409 = sub i64 %.0480.lcssa833839842, %indvars.iv769.ph
  %xtraiter951 = and i64 %408, 3
  %lcmp.mod952.not = icmp eq i64 %xtraiter951, 0
  br i1 %lcmp.mod952.not, label %scalar.ph894.prol.loopexit, label %scalar.ph894.prol

scalar.ph894.prol:                                ; preds = %scalar.ph894.preheader, %scalar.ph894.prol
  %indvars.iv769.prol = phi i64 [ %indvars.iv.next770.prol, %scalar.ph894.prol ], [ %indvars.iv769.ph, %scalar.ph894.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph894.prol ], [ 0, %scalar.ph894.preheader ]
  %410 = getelementptr inbounds i32, ptr %65, i64 %indvars.iv769.prol
  %411 = load i32, ptr %410, align 4, !tbaa !5
  %412 = getelementptr inbounds i32, ptr %404, i64 %indvars.iv769.prol
  store i32 %411, ptr %412, align 4, !tbaa !5
  %indvars.iv.next770.prol = add nuw nsw i64 %indvars.iv769.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter951
  br i1 %prol.iter.cmp.not, label %scalar.ph894.prol.loopexit, label %scalar.ph894.prol, !llvm.loop !50

scalar.ph894.prol.loopexit:                       ; preds = %scalar.ph894.prol, %scalar.ph894.preheader
  %indvars.iv769.unr = phi i64 [ %indvars.iv769.ph, %scalar.ph894.preheader ], [ %indvars.iv.next770.prol, %scalar.ph894.prol ]
  %413 = icmp ult i64 %409, 3
  br i1 %413, label %.preheader580, label %scalar.ph894

vector.ph896:                                     ; preds = %393
  %n.vec898 = and i64 %405, -8
  br label %vector.body900

vector.body900:                                   ; preds = %vector.body900, %vector.ph896
  %index901 = phi i64 [ 0, %vector.ph896 ], [ %index.next904, %vector.body900 ]
  %414 = getelementptr inbounds i32, ptr %65, i64 %index901
  %415 = getelementptr inbounds i8, ptr %414, i64 16
  %wide.load902 = load <4 x i32>, ptr %414, align 4, !tbaa !5
  %wide.load903 = load <4 x i32>, ptr %415, align 4, !tbaa !5
  %416 = getelementptr inbounds i32, ptr %404, i64 %index901
  %417 = getelementptr inbounds i8, ptr %416, i64 16
  store <4 x i32> %wide.load902, ptr %416, align 4, !tbaa !5
  store <4 x i32> %wide.load903, ptr %417, align 4, !tbaa !5
  %index.next904 = add nuw i64 %index901, 8
  %418 = icmp eq i64 %index.next904, %n.vec898
  br i1 %418, label %middle.block893, label %vector.body900, !llvm.loop !52

middle.block893:                                  ; preds = %vector.body900
  %cmp.n905 = icmp eq i64 %405, %n.vec898
  br i1 %cmp.n905, label %.preheader580, label %scalar.ph894.preheader

.preheader580:                                    ; preds = %scalar.ph894.prol.loopexit, %scalar.ph894, %middle.block893
  br i1 %.not696834838843, label %._crit_edge649, label %.lr.ph648.preheader

.lr.ph648.preheader:                              ; preds = %.preheader580
  %419 = add i64 %.0480.lcssa833839842, -1
  %xtraiter953 = and i64 %.0480.lcssa833839842, 3
  %420 = icmp ult i64 %419, 3
  br i1 %420, label %._crit_edge649.loopexit.unr-lcssa, label %.lr.ph648.preheader.new

.lr.ph648.preheader.new:                          ; preds = %.lr.ph648.preheader
  %unroll_iter956 = and i64 %.0480.lcssa833839842, -4
  br label %.lr.ph648

scalar.ph894:                                     ; preds = %scalar.ph894.prol.loopexit, %scalar.ph894
  %indvars.iv769 = phi i64 [ %indvars.iv.next770.3, %scalar.ph894 ], [ %indvars.iv769.unr, %scalar.ph894.prol.loopexit ]
  %421 = getelementptr inbounds i32, ptr %65, i64 %indvars.iv769
  %422 = load i32, ptr %421, align 4, !tbaa !5
  %423 = getelementptr inbounds i32, ptr %404, i64 %indvars.iv769
  store i32 %422, ptr %423, align 4, !tbaa !5
  %indvars.iv.next770 = add nuw nsw i64 %indvars.iv769, 1
  %424 = getelementptr inbounds i32, ptr %65, i64 %indvars.iv.next770
  %425 = load i32, ptr %424, align 4, !tbaa !5
  %426 = getelementptr inbounds i32, ptr %404, i64 %indvars.iv.next770
  store i32 %425, ptr %426, align 4, !tbaa !5
  %indvars.iv.next770.1 = add nuw nsw i64 %indvars.iv769, 2
  %427 = getelementptr inbounds i32, ptr %65, i64 %indvars.iv.next770.1
  %428 = load i32, ptr %427, align 4, !tbaa !5
  %429 = getelementptr inbounds i32, ptr %404, i64 %indvars.iv.next770.1
  store i32 %428, ptr %429, align 4, !tbaa !5
  %indvars.iv.next770.2 = add nuw nsw i64 %indvars.iv769, 3
  %430 = getelementptr inbounds i32, ptr %65, i64 %indvars.iv.next770.2
  %431 = load i32, ptr %430, align 4, !tbaa !5
  %432 = getelementptr inbounds i32, ptr %404, i64 %indvars.iv.next770.2
  store i32 %431, ptr %432, align 4, !tbaa !5
  %indvars.iv.next770.3 = add nuw nsw i64 %indvars.iv769, 4
  %exitcond772.3 = icmp eq i64 %indvars.iv.next770.2, %.0480.lcssa833839842
  br i1 %exitcond772.3, label %.preheader580, label %scalar.ph894, !llvm.loop !53

.lr.ph648:                                        ; preds = %.lr.ph648, %.lr.ph648.preheader.new
  %indvars.iv773 = phi i64 [ 0, %.lr.ph648.preheader.new ], [ %indvars.iv.next774.3, %.lr.ph648 ]
  %.0498646 = phi i32 [ 0, %.lr.ph648.preheader.new ], [ %452, %.lr.ph648 ]
  %niter957 = phi i64 [ 0, %.lr.ph648.preheader.new ], [ %niter957.next.3, %.lr.ph648 ]
  %433 = sext i32 %.0498646 to i64
  %434 = getelementptr inbounds i64, ptr %400, i64 %indvars.iv773
  store i64 %433, ptr %434, align 8, !tbaa !54
  %435 = getelementptr inbounds i32, ptr %57, i64 %indvars.iv773
  %436 = load i32, ptr %435, align 4, !tbaa !5
  %437 = add nsw i32 %436, %.0498646
  %indvars.iv.next774 = or disjoint i64 %indvars.iv773, 1
  %438 = sext i32 %437 to i64
  %439 = getelementptr inbounds i64, ptr %400, i64 %indvars.iv.next774
  store i64 %438, ptr %439, align 8, !tbaa !54
  %440 = getelementptr inbounds i32, ptr %57, i64 %indvars.iv.next774
  %441 = load i32, ptr %440, align 4, !tbaa !5
  %442 = add nsw i32 %441, %437
  %indvars.iv.next774.1 = or disjoint i64 %indvars.iv773, 2
  %443 = sext i32 %442 to i64
  %444 = getelementptr inbounds i64, ptr %400, i64 %indvars.iv.next774.1
  store i64 %443, ptr %444, align 8, !tbaa !54
  %445 = getelementptr inbounds i32, ptr %57, i64 %indvars.iv.next774.1
  %446 = load i32, ptr %445, align 4, !tbaa !5
  %447 = add nsw i32 %446, %442
  %indvars.iv.next774.2 = or disjoint i64 %indvars.iv773, 3
  %448 = sext i32 %447 to i64
  %449 = getelementptr inbounds i64, ptr %400, i64 %indvars.iv.next774.2
  store i64 %448, ptr %449, align 8, !tbaa !54
  %450 = getelementptr inbounds i32, ptr %57, i64 %indvars.iv.next774.2
  %451 = load i32, ptr %450, align 4, !tbaa !5
  %452 = add nsw i32 %451, %447
  %indvars.iv.next774.3 = add nuw nsw i64 %indvars.iv773, 4
  %niter957.next.3 = add i64 %niter957, 4
  %niter957.ncmp.3 = icmp eq i64 %niter957.next.3, %unroll_iter956
  br i1 %niter957.ncmp.3, label %._crit_edge649.loopexit.unr-lcssa, label %.lr.ph648, !llvm.loop !55

._crit_edge649.loopexit.unr-lcssa:                ; preds = %.lr.ph648, %.lr.ph648.preheader
  %.lcssa927.ph = phi i32 [ poison, %.lr.ph648.preheader ], [ %452, %.lr.ph648 ]
  %indvars.iv773.unr = phi i64 [ 0, %.lr.ph648.preheader ], [ %indvars.iv.next774.3, %.lr.ph648 ]
  %.0498646.unr = phi i32 [ 0, %.lr.ph648.preheader ], [ %452, %.lr.ph648 ]
  %lcmp.mod954.not = icmp eq i64 %xtraiter953, 0
  br i1 %lcmp.mod954.not, label %._crit_edge649, label %.lr.ph648.epil

.lr.ph648.epil:                                   ; preds = %._crit_edge649.loopexit.unr-lcssa, %.lr.ph648.epil
  %indvars.iv773.epil = phi i64 [ %indvars.iv.next774.epil, %.lr.ph648.epil ], [ %indvars.iv773.unr, %._crit_edge649.loopexit.unr-lcssa ]
  %.0498646.epil = phi i32 [ %457, %.lr.ph648.epil ], [ %.0498646.unr, %._crit_edge649.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph648.epil ], [ 0, %._crit_edge649.loopexit.unr-lcssa ]
  %453 = sext i32 %.0498646.epil to i64
  %454 = getelementptr inbounds i64, ptr %400, i64 %indvars.iv773.epil
  store i64 %453, ptr %454, align 8, !tbaa !54
  %455 = getelementptr inbounds i32, ptr %57, i64 %indvars.iv773.epil
  %456 = load i32, ptr %455, align 4, !tbaa !5
  %457 = add nsw i32 %456, %.0498646.epil
  %indvars.iv.next774.epil = add nuw nsw i64 %indvars.iv773.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter953
  br i1 %epil.iter.cmp.not, label %._crit_edge649, label %.lr.ph648.epil, !llvm.loop !56

._crit_edge649:                                   ; preds = %._crit_edge649.loopexit.unr-lcssa, %.lr.ph648.epil, %.preheader580
  %.0498.lcssa = phi i32 [ 0, %.preheader580 ], [ %.lcssa927.ph, %._crit_edge649.loopexit.unr-lcssa ], [ %457, %.lr.ph648.epil ]
  %458 = sext i32 %.0498.lcssa to i64
  %459 = getelementptr inbounds i64, ptr %400, i64 %.0480.lcssa833839842
  store i64 %458, ptr %459, align 8, !tbaa !54
  %460 = load i64, ptr %396, align 8, !tbaa !44
  %461 = trunc i64 %460 to i32
  %462 = call i32 @llvm.smax.i32(i32 %.0498.lcssa, i32 1)
  %463 = icmp eq i32 %462, %461
  br i1 %463, label %465, label %464

464:                                              ; preds = %._crit_edge649
  call void @__assert_fail(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.1, i32 noundef 518, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5nasoq20super_node_detectionEiPNS_12sympiler_CSCES1_PiS2_PNS_13Sympiler_BCSCES2_PdS2_i) #12
  unreachable

465:                                              ; preds = %._crit_edge649
  %466 = call noalias noundef nonnull ptr @_Znam(i64 noundef %64) #11
  call void @llvm.memset.p0.i64(ptr nonnull align 4 %466, i8 0, i64 %64, i1 false)
  br i1 %.not696834838843, label %._crit_edge683, label %.lr.ph653.preheader

.lr.ph653.preheader:                              ; preds = %465
  %min.iters.check908 = icmp ult i64 %.0480.lcssa833839842, 4
  br i1 %min.iters.check908, label %.lr.ph653.preheader926, label %vector.ph909

vector.ph909:                                     ; preds = %.lr.ph653.preheader
  %n.vec911 = and i64 %.0480.lcssa833839842, -4
  br label %vector.body913

vector.body913:                                   ; preds = %vector.body913, %vector.ph909
  %index914 = phi i64 [ 0, %vector.ph909 ], [ %index.next917, %vector.body913 ]
  %467 = getelementptr inbounds i64, ptr %400, i64 %index914
  %468 = getelementptr inbounds i8, ptr %467, i64 16
  %wide.load915 = load <2 x i64>, ptr %467, align 8, !tbaa !54
  %wide.load916 = load <2 x i64>, ptr %468, align 8, !tbaa !54
  %469 = trunc <2 x i64> %wide.load915 to <2 x i32>
  %470 = trunc <2 x i64> %wide.load916 to <2 x i32>
  %471 = getelementptr inbounds i32, ptr %466, i64 %index914
  %472 = getelementptr inbounds i8, ptr %471, i64 8
  store <2 x i32> %469, ptr %471, align 4, !tbaa !5
  store <2 x i32> %470, ptr %472, align 4, !tbaa !5
  %index.next917 = add nuw i64 %index914, 4
  %473 = icmp eq i64 %index.next917, %n.vec911
  br i1 %473, label %middle.block906, label %vector.body913, !llvm.loop !57

middle.block906:                                  ; preds = %vector.body913
  %cmp.n918 = icmp eq i64 %.0480.lcssa833839842, %n.vec911
  br i1 %cmp.n918, label %._crit_edge654, label %.lr.ph653.preheader926

.lr.ph653.preheader926:                           ; preds = %middle.block906, %.lr.ph653.preheader
  %indvars.iv777.ph = phi i64 [ 0, %.lr.ph653.preheader ], [ %n.vec911, %middle.block906 ]
  br label %.lr.ph653

.lr.ph653:                                        ; preds = %.lr.ph653.preheader926, %.lr.ph653
  %indvars.iv777 = phi i64 [ %indvars.iv.next778, %.lr.ph653 ], [ %indvars.iv777.ph, %.lr.ph653.preheader926 ]
  %474 = getelementptr inbounds i64, ptr %400, i64 %indvars.iv777
  %475 = load i64, ptr %474, align 8, !tbaa !54
  %476 = trunc i64 %475 to i32
  %477 = getelementptr inbounds i32, ptr %466, i64 %indvars.iv777
  store i32 %476, ptr %477, align 4, !tbaa !5
  %indvars.iv.next778 = add nuw nsw i64 %indvars.iv777, 1
  %exitcond780.not = icmp eq i64 %indvars.iv.next778, %.0480.lcssa833839842
  br i1 %exitcond780.not, label %._crit_edge654, label %.lr.ph653, !llvm.loop !58

._crit_edge654:                                   ; preds = %.lr.ph653, %middle.block906
  %478 = getelementptr inbounds i8, ptr %1, i64 80
  %479 = load i32, ptr %478, align 8, !tbaa !59
  br i1 %.not696834838843, label %._crit_edge683, label %.lr.ph670

.lr.ph670:                                        ; preds = %._crit_edge654
  %480 = icmp slt i32 %17, 1
  %.not550 = icmp eq i32 %.0501, 0
  %481 = shl i64 %16, 2
  %482 = and i64 %481, 17179869180
  br label %483

.loopexit579:                                     ; preds = %539, %.loopexit575.us, %483, %.preheader578
  %.1496.lcssa = phi i32 [ %.0495667, %.preheader578 ], [ %.0495667, %483 ], [ %.2497.us, %.loopexit575.us ], [ %.2497, %539 ]
  %exitcond806.not = icmp eq i64 %indvars.iv.next804, %.0480.lcssa833839842
  br i1 %exitcond806.not, label %.preheader, label %483, !llvm.loop !60

.preheader:                                       ; preds = %.loopexit579
  br i1 %.not696834838843, label %._crit_edge683, label %.lr.ph682.preheader

.lr.ph682.preheader:                              ; preds = %.preheader
  %.pre818 = load i32, ptr %404, align 4, !tbaa !5
  %.pre819 = load i64, ptr %400, align 8, !tbaa !54
  br label %.lr.ph682

483:                                              ; preds = %.lr.ph670, %.loopexit579
  %indvars.iv803 = phi i64 [ 0, %.lr.ph670 ], [ %indvars.iv.next804, %.loopexit579 ]
  %.0495667 = phi i32 [ -1, %.lr.ph670 ], [ %.1496.lcssa, %.loopexit579 ]
  %484 = getelementptr inbounds i32, ptr %404, i64 %indvars.iv803
  %485 = load i32, ptr %484, align 4, !tbaa !5
  %indvars.iv.next804 = add nuw nsw i64 %indvars.iv803, 1
  %486 = getelementptr inbounds i32, ptr %404, i64 %indvars.iv.next804
  %487 = load i32, ptr %486, align 4, !tbaa !5
  %488 = icmp slt i32 %485, %487
  br i1 %488, label %.lr.ph657, label %.loopexit579

.lr.ph657:                                        ; preds = %483
  %489 = getelementptr inbounds i32, ptr %466, i64 %indvars.iv803
  %490 = sub i32 %487, %485
  %.neg = add i32 %485, 1
  %xtraiter958 = and i32 %490, 1
  %lcmp.mod959.not = icmp eq i32 %xtraiter958, 0
  br i1 %lcmp.mod959.not, label %.prol.loopexit, label %.prol.loopexit.unr-lcssa

.prol.loopexit.unr-lcssa:                         ; preds = %.lr.ph657
  %491 = load i32, ptr %489, align 4, !tbaa !5
  %492 = add nsw i32 %491, 1
  store i32 %492, ptr %489, align 4, !tbaa !5
  %493 = sext i32 %491 to i64
  %494 = getelementptr inbounds i32, ptr %402, i64 %493
  store i32 %485, ptr %494, align 4, !tbaa !5
  %495 = add nsw i32 %485, 1
  br label %.prol.loopexit

.prol.loopexit:                                   ; preds = %.prol.loopexit.unr-lcssa, %.lr.ph657
  %.2490655.unr = phi i32 [ %485, %.lr.ph657 ], [ %495, %.prol.loopexit.unr-lcssa ]
  %496 = icmp eq i32 %487, %.neg
  br i1 %496, label %.preheader578, label %.lr.ph657.new

.preheader578:                                    ; preds = %.lr.ph657.new, %.prol.loopexit
  br i1 %488, label %.lr.ph665, label %.loopexit579

.lr.ph665:                                        ; preds = %.preheader578
  %497 = getelementptr inbounds i32, ptr %62, i64 %indvars.iv803
  %498 = sext i32 %485 to i64
  %wide.trip.count801 = sext i32 %487 to i64
  br i1 %.not545, label %.lr.ph665.split.us, label %.lr.ph665.split

.lr.ph665.split.us:                               ; preds = %.lr.ph665, %.loopexit575.us
  %indvars.iv798 = phi i64 [ %indvars.iv.next799, %.loopexit575.us ], [ %498, %.lr.ph665 ]
  %.1496663.us = phi i32 [ %.2497.us, %.loopexit575.us ], [ %.0495667, %.lr.ph665 ]
  %499 = add nuw nsw i32 %.1496663.us, 1
  %500 = icmp sgt i32 %.1496663.us, -1
  %brmerge = or i1 %500, %480
  %.mux = select i1 %500, i32 %499, i32 0
  br i1 %brmerge, label %.loopexit577.us, label %.lr.ph659.us.preheader

.lr.ph659.us.preheader:                           ; preds = %.lr.ph665.split.us
  call void @llvm.memset.p0.i64(ptr nonnull align 4 %62, i8 -1, i64 %482, i1 false), !tbaa !5
  br label %.loopexit577.us

.loopexit577.us:                                  ; preds = %.lr.ph659.us.preheader, %.lr.ph665.split.us
  %.2497.us = phi i32 [ %.mux, %.lr.ph665.split.us ], [ 0, %.lr.ph659.us.preheader ]
  store i32 %.2497.us, ptr %497, align 4, !tbaa !5
  %501 = getelementptr inbounds i32, ptr %55, i64 %indvars.iv798
  %502 = load i32, ptr %501, align 4, !tbaa !5
  %503 = zext i32 %502 to i64
  %504 = icmp eq i64 %indvars.iv803, %503
  br i1 %504, label %505, label %.split.us

505:                                              ; preds = %.loopexit577.us
  %506 = getelementptr inbounds i32, ptr %.0483, i64 %indvars.iv798
  %507 = load i32, ptr %506, align 4, !tbaa !5
  br i1 %.not550, label %512, label %508

508:                                              ; preds = %505
  %509 = add nsw i64 %indvars.iv798, 1
  %510 = getelementptr inbounds i32, ptr %.0483, i64 %509
  %511 = load i32, ptr %510, align 4, !tbaa !5
  br label %516

512:                                              ; preds = %505
  %513 = getelementptr inbounds i32, ptr %.0482, i64 %indvars.iv798
  %514 = load i32, ptr %513, align 4, !tbaa !5
  %515 = add nsw i32 %514, %507
  br label %516

516:                                              ; preds = %512, %508
  %517 = phi i32 [ %511, %508 ], [ %515, %512 ]
  %518 = icmp slt i32 %507, %517
  br i1 %518, label %.lr.ph662.us.preheader, label %.loopexit575.us

.lr.ph662.us.preheader:                           ; preds = %516
  %519 = sext i32 %507 to i64
  %wide.trip.count796 = sext i32 %517 to i64
  %520 = trunc nsw i64 %indvars.iv798 to i32
  br label %.lr.ph662.us

.lr.ph662.us:                                     ; preds = %.lr.ph662.us.preheader, %.lr.ph662.us
  %indvars.iv793 = phi i64 [ %519, %.lr.ph662.us.preheader ], [ %indvars.iv.next794, %.lr.ph662.us ]
  %521 = getelementptr inbounds i32, ptr %.0484, i64 %indvars.iv793
  %522 = load i32, ptr %521, align 4, !tbaa !5
  call void @_ZN5nasoq7subtreeEiiPiS0_S0_S0_S0_iiiS0_S0_S0_(i32 noundef %522, i32 noundef %520, ptr noundef %24, ptr noundef %26, ptr noundef %28, ptr noundef nonnull %55, ptr noundef %8, i32 noundef %.2497.us, i32 noundef %479, i32 noundef %485, ptr noundef nonnull %62, ptr noundef nonnull %402, ptr noundef nonnull %466)
  %indvars.iv.next794 = add nsw i64 %indvars.iv793, 1
  %exitcond797.not = icmp eq i64 %indvars.iv.next794, %wide.trip.count796
  br i1 %exitcond797.not, label %.loopexit575.us, label %.lr.ph662.us, !llvm.loop !61

.loopexit575.us:                                  ; preds = %.lr.ph662.us, %516
  %indvars.iv.next799 = add nsw i64 %indvars.iv798, 1
  %exitcond802.not = icmp eq i64 %indvars.iv.next799, %wide.trip.count801
  br i1 %exitcond802.not, label %.loopexit579, label %.lr.ph665.split.us, !llvm.loop !62

.lr.ph657.new:                                    ; preds = %.prol.loopexit, %.lr.ph657.new
  %.2490655 = phi i32 [ %532, %.lr.ph657.new ], [ %.2490655.unr, %.prol.loopexit ]
  %523 = load i32, ptr %489, align 4, !tbaa !5
  %524 = add nsw i32 %523, 1
  store i32 %524, ptr %489, align 4, !tbaa !5
  %525 = sext i32 %523 to i64
  %526 = getelementptr inbounds i32, ptr %402, i64 %525
  store i32 %.2490655, ptr %526, align 4, !tbaa !5
  %527 = add nsw i32 %.2490655, 1
  %528 = load i32, ptr %489, align 4, !tbaa !5
  %529 = add nsw i32 %528, 1
  store i32 %529, ptr %489, align 4, !tbaa !5
  %530 = sext i32 %528 to i64
  %531 = getelementptr inbounds i32, ptr %402, i64 %530
  store i32 %527, ptr %531, align 4, !tbaa !5
  %532 = add nsw i32 %.2490655, 2
  %exitcond781.not.1 = icmp eq i32 %532, %487
  br i1 %exitcond781.not.1, label %.preheader578, label %.lr.ph657.new, !llvm.loop !63

.lr.ph665.split:                                  ; preds = %.lr.ph665, %539
  %indvars.iv785 = phi i64 [ %indvars.iv.next786, %539 ], [ %498, %.lr.ph665 ]
  %.1496663 = phi i32 [ %.2497, %539 ], [ %.0495667, %.lr.ph665 ]
  %533 = add nuw nsw i32 %.1496663, 1
  %534 = icmp sgt i32 %.1496663, -1
  %brmerge690 = or i1 %534, %480
  %.mux691 = select i1 %534, i32 %533, i32 0
  br i1 %brmerge690, label %.loopexit577, label %.lr.ph659.preheader

.lr.ph659.preheader:                              ; preds = %.lr.ph665.split
  call void @llvm.memset.p0.i64(ptr nonnull align 4 %62, i8 -1, i64 %482, i1 false), !tbaa !5
  br label %.loopexit577

.loopexit577:                                     ; preds = %.lr.ph659.preheader, %.lr.ph665.split
  %.2497 = phi i32 [ %.mux691, %.lr.ph665.split ], [ 0, %.lr.ph659.preheader ]
  store i32 %.2497, ptr %497, align 4, !tbaa !5
  %535 = getelementptr inbounds i32, ptr %55, i64 %indvars.iv785
  %536 = load i32, ptr %535, align 4, !tbaa !5
  %537 = zext i32 %536 to i64
  %538 = icmp eq i64 %indvars.iv803, %537
  br i1 %538, label %539, label %.split.us

.split.us:                                        ; preds = %.loopexit577, %.loopexit577.us
  call void @__assert_fail(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.1, i32 noundef 605, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5nasoq20super_node_detectionEiPNS_12sympiler_CSCES1_PiS2_PNS_13Sympiler_BCSCES2_PdS2_i) #12
  unreachable

539:                                              ; preds = %.loopexit577
  %540 = trunc nsw i64 %indvars.iv785 to i32
  call void @_ZN5nasoq7subtreeEiiPiS0_S0_S0_S0_iiiS0_S0_S0_(i32 noundef %540, i32 noundef %540, ptr noundef %24, ptr noundef %26, ptr noundef %28, ptr noundef nonnull %55, ptr noundef %8, i32 noundef %.2497, i32 noundef %479, i32 noundef %485, ptr noundef nonnull %62, ptr noundef nonnull %402, ptr noundef nonnull %466)
  %indvars.iv.next786 = add nsw i64 %indvars.iv785, 1
  %exitcond789.not = icmp eq i64 %indvars.iv.next786, %wide.trip.count801
  br i1 %exitcond789.not, label %.loopexit579, label %.lr.ph665.split, !llvm.loop !62

.loopexit:                                        ; preds = %580, %561
  %.1512.lcssa = phi i32 [ %.0511679, %561 ], [ %.2513, %580 ]
  %exitcond814.not = icmp eq i64 %indvars.iv.next812, %.0480.lcssa833839842
  br i1 %exitcond814.not, label %._crit_edge683.loopexit, label %.lr.ph682, !llvm.loop !64

.lr.ph682:                                        ; preds = %.lr.ph682.preheader, %.loopexit
  %541 = phi i64 [ %.pre819, %.lr.ph682.preheader ], [ %549, %.loopexit ]
  %542 = phi i32 [ %.pre818, %.lr.ph682.preheader ], [ %544, %.loopexit ]
  %indvars.iv811 = phi i64 [ 0, %.lr.ph682.preheader ], [ %indvars.iv.next812, %.loopexit ]
  %.0502680 = phi i32 [ 1, %.lr.ph682.preheader ], [ %552, %.loopexit ]
  %.0511679 = phi i32 [ 1, %.lr.ph682.preheader ], [ %.1512.lcssa, %.loopexit ]
  %indvars.iv.next812 = add nuw nsw i64 %indvars.iv811, 1
  %543 = getelementptr inbounds i32, ptr %404, i64 %indvars.iv.next812
  %544 = load i32, ptr %543, align 4, !tbaa !5
  %545 = sub nsw i32 %544, %542
  %546 = trunc i64 %541 to i32
  %547 = add i32 %545, %546
  %548 = getelementptr inbounds i64, ptr %400, i64 %indvars.iv.next812
  %549 = load i64, ptr %548, align 8, !tbaa !54
  %550 = trunc i64 %549 to i32
  %551 = sub nsw i32 %550, %547
  %552 = call i32 @llvm.smax.i32(i32 %.0502680, i32 %551)
  %553 = icmp eq i32 %547, %550
  br i1 %553, label %561, label %554

554:                                              ; preds = %.lr.ph682
  %555 = sext i32 %547 to i64
  %556 = getelementptr inbounds i32, ptr %402, i64 %555
  %557 = load i32, ptr %556, align 4, !tbaa !5
  %558 = sext i32 %557 to i64
  %559 = getelementptr inbounds i32, ptr %55, i64 %558
  %560 = load i32, ptr %559, align 4, !tbaa !5
  br label %561

561:                                              ; preds = %.lr.ph682, %554
  %562 = phi i32 [ %560, %554 ], [ -1, %.lr.ph682 ]
  %.not548671 = icmp sgt i32 %547, %550
  br i1 %.not548671, label %.loopexit, label %.lr.ph677.preheader

.lr.ph677.preheader:                              ; preds = %561
  %563 = sext i32 %547 to i64
  %sext820 = shl i64 %549, 32
  %564 = ashr exact i64 %sext820, 32
  br label %.lr.ph677

.lr.ph677:                                        ; preds = %.lr.ph677.preheader, %580
  %indvars.iv807 = phi i64 [ %563, %.lr.ph677.preheader ], [ %indvars.iv.next808, %580 ]
  %.0503674 = phi i32 [ %547, %.lr.ph677.preheader ], [ %.1504, %580 ]
  %.0505673 = phi i32 [ %562, %.lr.ph677.preheader ], [ %.1506, %580 ]
  %.1512672 = phi i32 [ %.0511679, %.lr.ph677.preheader ], [ %.2513, %580 ]
  %565 = icmp eq i64 %indvars.iv807, %564
  br i1 %565, label %572, label %566

566:                                              ; preds = %.lr.ph677
  %567 = getelementptr inbounds i32, ptr %402, i64 %indvars.iv807
  %568 = load i32, ptr %567, align 4, !tbaa !5
  %569 = sext i32 %568 to i64
  %570 = getelementptr inbounds i32, ptr %55, i64 %569
  %571 = load i32, ptr %570, align 4, !tbaa !5
  br label %572

572:                                              ; preds = %.lr.ph677, %566
  %573 = phi i32 [ %571, %566 ], [ -1, %.lr.ph677 ]
  %.not549 = icmp eq i32 %573, %.0505673
  br i1 %.not549, label %580, label %574

574:                                              ; preds = %572
  %575 = trunc nsw i64 %indvars.iv807 to i32
  %576 = sub nsw i32 %575, %.0503674
  %577 = sub nsw i32 %550, %.0503674
  %578 = mul nsw i32 %576, %577
  %579 = call i32 @llvm.smax.i32(i32 %.1512672, i32 %578)
  br label %580

580:                                              ; preds = %572, %574
  %.2513 = phi i32 [ %579, %574 ], [ %.1512672, %572 ]
  %.1506 = phi i32 [ %573, %574 ], [ %.0505673, %572 ]
  %.1504 = phi i32 [ %575, %574 ], [ %.0503674, %572 ]
  %indvars.iv.next808 = add nsw i64 %indvars.iv807, 1
  %.not548.not = icmp slt i64 %indvars.iv807, %564
  br i1 %.not548.not, label %.lr.ph677, label %.loopexit, !llvm.loop !65

._crit_edge683.loopexit:                          ; preds = %.loopexit
  %581 = zext nneg i32 %.1512.lcssa to i64
  %582 = zext nneg i32 %552 to i64
  br label %._crit_edge683

._crit_edge683:                                   ; preds = %465, %._crit_edge654, %._crit_edge683.loopexit, %.preheader
  %.0511.lcssa = phi i64 [ 1, %.preheader ], [ %581, %._crit_edge683.loopexit ], [ 1, %._crit_edge654 ], [ 1, %465 ]
  %.0502.lcssa = phi i64 [ 1, %.preheader ], [ %582, %._crit_edge683.loopexit ], [ 1, %._crit_edge654 ], [ 1, %465 ]
  %583 = getelementptr inbounds i8, ptr %5, i64 152
  store i64 %.0511.lcssa, ptr %583, align 8, !tbaa !66
  %584 = getelementptr inbounds i8, ptr %5, i64 160
  store i64 %.0502.lcssa, ptr %584, align 8, !tbaa !67
  %585 = getelementptr inbounds i8, ptr %5, i64 240
  store i32 1, ptr %585, align 8, !tbaa !68
  call void @_ZdaPv(ptr noundef nonnull %54) #13
  call void @_ZdaPv(ptr noundef nonnull %62) #13
  call void @_ZdaPv(ptr noundef nonnull %65) #13
  call void @_ZdaPv(ptr noundef nonnull %95) #13
  call void @_ZdaPv(ptr noundef nonnull %466) #13
  br label %586

586:                                              ; preds = %15, %10, %._crit_edge683
  %.1 = phi i32 [ 1, %._crit_edge683 ], [ 0, %10 ], [ 0, %15 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #10
  ret i32 %.1
}

declare noundef i64 @_ZN5nasoq11mult_size_tEmmPi(i64 noundef, i64 noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znam(i64 noundef) local_unnamed_addr #5

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

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

declare void @_ZN5nasoq10allocateLCEPNS_13Sympiler_BCSCEi(ptr noundef, i32 noundef) local_unnamed_addr #4

; Function Attrs: nobuiltin nounwind
declare void @_ZdaPv(ptr noundef) local_unnamed_addr #8

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smax.i32(i32, i32) #9

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.vector.reduce.add.v4i32(<4 x i32>) #9

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 nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { noreturn 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 #3 = { 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 = { "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 = { nobuiltin 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 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #7 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #8 = { nobuiltin 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 #9 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #10 = { nounwind }
attributes #11 = { builtin allocsize(0) }
attributes #12 = { noreturn nounwind }
attributes #13 = { builtin 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++ TBAA"}
!9 = !{!10, !6, i64 64}
!10 = !{!"_ZTSN5nasoq12sympiler_CSCE", !11, i64 0, !11, i64 8, !11, i64 16, !12, i64 24, !12, i64 32, !12, i64 40, !12, i64 48, !12, i64 56, !6, i64 64, !6, i64 68, !6, i64 72, !6, i64 76, !6, i64 80, !6, i64 84}
!11 = !{!"long", !7, i64 0}
!12 = !{!"any pointer", !7, i64 0}
!13 = !{!10, !11, i64 0}
!14 = !{!15, !6, i64 260}
!15 = !{!"_ZTSN5nasoq13Sympiler_BCSCE", !11, i64 0, !11, i64 8, !12, i64 16, !12, i64 24, !12, i64 32, !11, i64 40, !12, i64 48, !12, i64 56, !12, i64 64, !12, i64 72, !12, i64 80, !12, i64 88, !12, i64 96, !12, i64 104, !12, i64 112, !11, i64 120, !11, i64 128, !11, i64 136, !11, i64 144, !11, i64 152, !11, i64 160, !12, i64 168, !12, i64 176, !12, i64 184, !12, i64 192, !12, i64 200, !12, i64 208, !12, i64 216, !12, i64 224, !6, i64 232, !6, i64 236, !6, i64 240, !6, i64 244, !6, i64 248, !6, i64 252, !6, i64 256, !6, i64 260}
!16 = !{!10, !12, i64 24}
!17 = !{!10, !12, i64 32}
!18 = !{!10, !12, i64 40}
!19 = !{!10, !6, i64 84}
!20 = !{!15, !12, i64 24}
!21 = !{!22, !22, i64 0}
!22 = !{!"double", !7, i64 0}
!23 = distinct !{!23, !24}
!24 = !{!"llvm.loop.mustprogress"}
!25 = distinct !{!25, !24}
!26 = distinct !{!26, !24}
!27 = distinct !{!27, !24, !28, !29}
!28 = !{!"llvm.loop.isvectorized", i32 1}
!29 = !{!"llvm.loop.unroll.runtime.disable"}
!30 = distinct !{!30, !24, !29, !28}
!31 = distinct !{!31, !24}
!32 = distinct !{!32, !24}
!33 = distinct !{!33, !24}
!34 = distinct !{!34, !24}
!35 = distinct !{!35, !24}
!36 = distinct !{!36, !24}
!37 = distinct !{!37, !24}
!38 = distinct !{!38, !24, !28, !29}
!39 = distinct !{!39, !24, !29, !28}
!40 = distinct !{!40, !24, !28, !29}
!41 = distinct !{!41, !24}
!42 = distinct !{!42, !24, !29, !28}
!43 = distinct !{!43, !24}
!44 = !{!15, !11, i64 128}
!45 = !{!15, !11, i64 136}
!46 = !{!15, !11, i64 120}
!47 = !{!15, !12, i64 184}
!48 = !{!15, !12, i64 208}
!49 = !{!15, !12, i64 168}
!50 = distinct !{!50, !51}
!51 = !{!"llvm.loop.unroll.disable"}
!52 = distinct !{!52, !24, !28, !29}
!53 = distinct !{!53, !24, !28}
!54 = !{!11, !11, i64 0}
!55 = distinct !{!55, !24}
!56 = distinct !{!56, !51}
!57 = distinct !{!57, !24, !28, !29}
!58 = distinct !{!58, !24, !29, !28}
!59 = !{!10, !6, i64 80}
!60 = distinct !{!60, !24}
!61 = distinct !{!61, !24}
!62 = distinct !{!62, !24}
!63 = distinct !{!63, !24}
!64 = distinct !{!64, !24}
!65 = distinct !{!65, !24}
!66 = !{!15, !11, i64 152}
!67 = !{!15, !11, i64 160}
!68 = !{!15, !6, i64 240}


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