; LLVM IR from bohanwang/libpgo :: third-party/CCD/ExactCCD (rootparitycollisiontest)

; 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.Vec = type { [3 x %class.Interval] }
%class.Interval = type { %class.IntervalBase, [2 x double] }
%class.IntervalBase = type { ptr }
%struct.Vec.1 = type { [3 x %class.expansion] }
%class.expansion = type { ptr, %"class.std::vector" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.rootparity::RootParityCollisionTest" = type { ptr, %struct.Vec.0, %struct.Vec.0, %struct.Vec.0, %struct.Vec.0, %struct.Vec.0, %struct.Vec.0, %struct.Vec.0, i8, %struct.Vec.0, [8 x %struct.Vec], [8 x %struct.Vec.1], [8 x i8] }
%struct.Vec.0 = type { [3 x double] }

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN10rootparity23RootParityCollisionTest30point_tetrahedron_intersectionERK3VecILj4EjERKS1_ILj4EbES7_S7_RKS1_ILj3EdE(ptr noundef nonnull align 8 dereferenceable(1560) %0, ptr noundef nonnull align 4 dereferenceable(16) %1, ptr noundef nonnull align 1 dereferenceable(4) %2, ptr noundef nonnull align 1 dereferenceable(4) %3, ptr noundef nonnull align 1 dereferenceable(4) %4, ptr noundef nonnull align 8 dereferenceable(24) %5) #0 align 2 personality ptr @__gxx_personality_v0 {
  %7 = alloca i1, align 1
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca %struct.Vec, align 8
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca [5 x double], align 16
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca %struct.Vec.1, align 8
  %21 = alloca i32, align 4
  store ptr %0, ptr %8, align 8, !tbaa !5
  store ptr %1, ptr %9, align 8, !tbaa !5
  store ptr %2, ptr %10, align 8, !tbaa !5
  store ptr %3, ptr %11, align 8, !tbaa !5
  store ptr %4, ptr %12, align 8, !tbaa !5
  store ptr %5, ptr %13, align 8, !tbaa !5
  %22 = load ptr, ptr %8, align 8
  call void @llvm.lifetime.start.p0(i64 72, ptr %14) #5
  call void @_ZN3VecILj3E8IntervalEC2Ev(ptr noundef nonnull align 8 dereferenceable(72) %14)
  %23 = load ptr, ptr %13, align 8, !tbaa !5
  invoke void @_ZN10rootparity12_GLOBAL__N_111make_vectorILj3E8IntervalEEvRK3VecIXT_EdERS3_IXT_ET0_E(ptr noundef nonnull align 8 dereferenceable(24) %23, ptr noundef nonnull align 8 dereferenceable(72) %14)
          to label %24 unwind label %67

24:                                               ; preds = %6
  call void @llvm.lifetime.start.p0(i64 40, ptr %17) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #5
  %25 = getelementptr inbounds %"class.rootparity::RootParityCollisionTest", ptr %22, i32 0, i32 10
  %26 = load ptr, ptr %9, align 8, !tbaa !5
  %27 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3VecILj4EjEixEi(ptr noundef nonnull align 4 dereferenceable(16) %26, i32 noundef 0)
          to label %28 unwind label %71

28:                                               ; preds = %24
  %29 = load i32, ptr %27, align 4, !tbaa !9
  %30 = zext i32 %29 to i64
  %31 = getelementptr inbounds [8 x %struct.Vec], ptr %25, i64 0, i64 %30
  %32 = getelementptr inbounds %"class.rootparity::RootParityCollisionTest", ptr %22, i32 0, i32 10
  %33 = load ptr, ptr %9, align 8, !tbaa !5
  %34 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3VecILj4EjEixEi(ptr noundef nonnull align 4 dereferenceable(16) %33, i32 noundef 1)
          to label %35 unwind label %71

35:                                               ; preds = %28
  %36 = load i32, ptr %34, align 4, !tbaa !9
  %37 = zext i32 %36 to i64
  %38 = getelementptr inbounds [8 x %struct.Vec], ptr %32, i64 0, i64 %37
  %39 = getelementptr inbounds %"class.rootparity::RootParityCollisionTest", ptr %22, i32 0, i32 10
  %40 = load ptr, ptr %9, align 8, !tbaa !5
  %41 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3VecILj4EjEixEi(ptr noundef nonnull align 4 dereferenceable(16) %40, i32 noundef 2)
          to label %42 unwind label %71

42:                                               ; preds = %35
  %43 = load i32, ptr %41, align 4, !tbaa !9
  %44 = zext i32 %43 to i64
  %45 = getelementptr inbounds [8 x %struct.Vec], ptr %39, i64 0, i64 %44
  %46 = getelementptr inbounds %"class.rootparity::RootParityCollisionTest", ptr %22, i32 0, i32 10
  %47 = load ptr, ptr %9, align 8, !tbaa !5
  %48 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3VecILj4EjEixEi(ptr noundef nonnull align 4 dereferenceable(16) %47, i32 noundef 3)
          to label %49 unwind label %71

49:                                               ; preds = %42
  %50 = load i32, ptr %48, align 4, !tbaa !9
  %51 = zext i32 %50 to i64
  %52 = getelementptr inbounds [8 x %struct.Vec], ptr %46, i64 0, i64 %51
  %53 = getelementptr inbounds [5 x double], ptr %17, i64 0, i64 0
  %54 = getelementptr inbounds [5 x double], ptr %17, i64 0, i64 1
  %55 = getelementptr inbounds [5 x double], ptr %17, i64 0, i64 2
  %56 = getelementptr inbounds [5 x double], ptr %17, i64 0, i64 3
  %57 = getelementptr inbounds [5 x double], ptr %17, i64 0, i64 4
  %58 = invoke noundef i32 @_ZN10rootparity12_GLOBAL__N_130point_tetrahedron_intersectionI8IntervalEEiRK3VecILj3ET_ES7_S7_S7_S7_PdS8_S8_S8_S8_(ptr noundef nonnull align 8 dereferenceable(72) %14, ptr noundef nonnull align 8 dereferenceable(72) %31, ptr noundef nonnull align 8 dereferenceable(72) %38, ptr noundef nonnull align 8 dereferenceable(72) %45, ptr noundef nonnull align 8 dereferenceable(72) %52, ptr noundef %53, ptr noundef %54, ptr noundef %55, ptr noundef %56, ptr noundef %57)
          to label %59 unwind label %71

59:                                               ; preds = %49
  store i32 %58, ptr %18, align 4, !tbaa !9
  %60 = load i32, ptr %18, align 4, !tbaa !9
  %61 = icmp slt i32 %60, 0
  br i1 %61, label %62, label %229

62:                                               ; preds = %59
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #5
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %63

63:                                               ; preds = %178, %62
  %64 = load i32, ptr %19, align 4, !tbaa !9
  %65 = icmp ult i32 %64, 4
  br i1 %65, label %75, label %66

66:                                               ; preds = %63
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #5
  br label %181

67:                                               ; preds = %6
  %68 = landingpad { ptr, i32 }
          cleanup
  %69 = extractvalue { ptr, i32 } %68, 0
  store ptr %69, ptr %15, align 8
  %70 = extractvalue { ptr, i32 } %68, 1
  store i32 %70, ptr %16, align 4
  br label %237

71:                                               ; preds = %49, %42, %35, %28, %24
  %72 = landingpad { ptr, i32 }
          cleanup
  %73 = extractvalue { ptr, i32 } %72, 0
  store ptr %73, ptr %15, align 8
  %74 = extractvalue { ptr, i32 } %72, 1
  store i32 %74, ptr %16, align 4
  br label %236

75:                                               ; preds = %63
  %76 = getelementptr inbounds %"class.rootparity::RootParityCollisionTest", ptr %22, i32 0, i32 12
  %77 = load ptr, ptr %9, align 8, !tbaa !5
  %78 = load i32, ptr %19, align 4, !tbaa !9
  %79 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3VecILj4EjEixEi(ptr noundef nonnull align 4 dereferenceable(16) %77, i32 noundef %78)
          to label %80 unwind label %127

80:                                               ; preds = %75
  %81 = load i32, ptr %79, align 4, !tbaa !9
  %82 = zext i32 %81 to i64
  %83 = getelementptr inbounds [8 x i8], ptr %76, i64 0, i64 %82
  %84 = load i8, ptr %83, align 1, !tbaa !11, !range !13, !noundef !14
  %85 = trunc i8 %84 to i1
  br i1 %85, label %177, label %86

86:                                               ; preds = %80
  %87 = getelementptr inbounds %"class.rootparity::RootParityCollisionTest", ptr %22, i32 0, i32 8
  %88 = load i8, ptr %87, align 8, !tbaa !15, !range !13, !noundef !14
  %89 = trunc i8 %88 to i1
  br i1 %89, label %90, label %131

90:                                               ; preds = %86
  %91 = getelementptr inbounds %"class.rootparity::RootParityCollisionTest", ptr %22, i32 0, i32 0
  %92 = load ptr, ptr %91, align 8, !tbaa !18
  %93 = getelementptr inbounds %"class.rootparity::RootParityCollisionTest", ptr %22, i32 0, i32 1
  %94 = getelementptr inbounds %"class.rootparity::RootParityCollisionTest", ptr %22, i32 0, i32 2
  %95 = getelementptr inbounds %"class.rootparity::RootParityCollisionTest", ptr %22, i32 0, i32 3
  %96 = getelementptr inbounds %"class.rootparity::RootParityCollisionTest", ptr %22, i32 0, i32 4
  %97 = getelementptr inbounds %"class.rootparity::RootParityCollisionTest", ptr %22, i32 0, i32 5
  %98 = getelementptr inbounds %"class.rootparity::RootParityCollisionTest", ptr %22, i32 0, i32 6
  %99 = getelementptr inbounds %"class.rootparity::RootParityCollisionTest", ptr %22, i32 0, i32 7
  %100 = load ptr, ptr %10, align 8, !tbaa !5
  %101 = load i32, ptr %19, align 4, !tbaa !9
  %102 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3VecILj4EbEixEi(ptr noundef nonnull align 1 dereferenceable(4) %100, i32 noundef %101)
          to label %103 unwind label %127

103:                                              ; preds = %90
  %104 = load i8, ptr %102, align 1, !tbaa !11, !range !13, !noundef !14
  %105 = trunc i8 %104 to i1
  %106 = load ptr, ptr %11, align 8, !tbaa !5
  %107 = load i32, ptr %19, align 4, !tbaa !9
  %108 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3VecILj4EbEixEi(ptr noundef nonnull align 1 dereferenceable(4) %106, i32 noundef %107)
          to label %109 unwind label %127

109:                                              ; preds = %103
  %110 = load i8, ptr %108, align 1, !tbaa !11, !range !13, !noundef !14
  %111 = trunc i8 %110 to i1
  %112 = load ptr, ptr %12, align 8, !tbaa !5
  %113 = load i32, ptr %19, align 4, !tbaa !9
  %114 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3VecILj4EbEixEi(ptr noundef nonnull align 1 dereferenceable(4) %112, i32 noundef %113)
          to label %115 unwind label %127

115:                                              ; preds = %109
  %116 = load i8, ptr %114, align 1, !tbaa !11, !range !13, !noundef !14
  %117 = trunc i8 %116 to i1
  %118 = getelementptr inbounds %"class.rootparity::RootParityCollisionTest", ptr %22, i32 0, i32 11
  %119 = load ptr, ptr %9, align 8, !tbaa !5
  %120 = load i32, ptr %19, align 4, !tbaa !9
  %121 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3VecILj4EjEixEi(ptr noundef nonnull align 4 dereferenceable(16) %119, i32 noundef %120)
          to label %122 unwind label %127

122:                                              ; preds = %115
  %123 = load i32, ptr %121, align 4, !tbaa !9
  %124 = zext i32 %123 to i64
  %125 = getelementptr inbounds [8 x %struct.Vec.1], ptr %118, i64 0, i64 %124
  invoke void @_ZN10rootparity12_GLOBAL__N_128edge_edge_collision_functionI9expansionEEvRK3VecILj3EdES6_S6_S6_S6_S6_S6_S6_bbbRS3_ILj3ET_E(ptr noundef nonnull align 8 dereferenceable(24) %92, ptr noundef nonnull align 8 dereferenceable(24) %93, ptr noundef nonnull align 8 dereferenceable(24) %94, ptr noundef nonnull align 8 dereferenceable(24) %95, ptr noundef nonnull align 8 dereferenceable(24) %96, ptr noundef nonnull align 8 dereferenceable(24) %97, ptr noundef nonnull align 8 dereferenceable(24) %98, ptr noundef nonnull align 8 dereferenceable(24) %99, i1 noundef zeroext %105, i1 noundef zeroext %111, i1 noundef zeroext %117, ptr noundef nonnull align 8 dereferenceable(96) %125)
          to label %126 unwind label %127

126:                                              ; preds = %122
  br label %168

127:                                              ; preds = %168, %163, %156, %150, %144, %131, %122, %115, %109, %103, %90, %75
  %128 = landingpad { ptr, i32 }
          cleanup
  %129 = extractvalue { ptr, i32 } %128, 0
  store ptr %129, ptr %15, align 8
  %130 = extractvalue { ptr, i32 } %128, 1
  store i32 %130, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #5
  br label %236

131:                                              ; preds = %86
  %132 = getelementptr inbounds %"class.rootparity::RootParityCollisionTest", ptr %22, i32 0, i32 0
  %133 = load ptr, ptr %132, align 8, !tbaa !18
  %134 = getelementptr inbounds %"class.rootparity::RootParityCollisionTest", ptr %22, i32 0, i32 1
  %135 = getelementptr inbounds %"class.rootparity::RootParityCollisionTest", ptr %22, i32 0, i32 2
  %136 = getelementptr inbounds %"class.rootparity::RootParityCollisionTest", ptr %22, i32 0, i32 3
  %137 = getelementptr inbounds %"class.rootparity::RootParityCollisionTest", ptr %22, i32 0, i32 4
  %138 = getelementptr inbounds %"class.rootparity::RootParityCollisionTest", ptr %22, i32 0, i32 5
  %139 = getelementptr inbounds %"class.rootparity::RootParityCollisionTest", ptr %22, i32 0, i32 6
  %140 = getelementptr inbounds %"class.rootparity::RootParityCollisionTest", ptr %22, i32 0, i32 7
  %141 = load ptr, ptr %10, align 8, !tbaa !5
  %142 = load i32, ptr %19, align 4, !tbaa !9
  %143 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3VecILj4EbEixEi(ptr noundef nonnull align 1 dereferenceable(4) %141, i32 noundef %142)
          to label %144 unwind label %127

144:                                              ; preds = %131
  %145 = load i8, ptr %143, align 1, !tbaa !11, !range !13, !noundef !14
  %146 = trunc i8 %145 to i1
  %147 = load ptr, ptr %11, align 8, !tbaa !5
  %148 = load i32, ptr %19, align 4, !tbaa !9
  %149 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3VecILj4EbEixEi(ptr noundef nonnull align 1 dereferenceable(4) %147, i32 noundef %148)
          to label %150 unwind label %127

150:                                              ; preds = %144
  %151 = load i8, ptr %149, align 1, !tbaa !11, !range !13, !noundef !14
  %152 = trunc i8 %151 to i1
  %153 = load ptr, ptr %12, align 8, !tbaa !5
  %154 = load i32, ptr %19, align 4, !tbaa !9
  %155 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3VecILj4EbEixEi(ptr noundef nonnull align 1 dereferenceable(4) %153, i32 noundef %154)
          to label %156 unwind label %127

156:                                              ; preds = %150
  %157 = load i8, ptr %155, align 1, !tbaa !11, !range !13, !noundef !14
  %158 = trunc i8 %157 to i1
  %159 = getelementptr inbounds %"class.rootparity::RootParityCollisionTest", ptr %22, i32 0, i32 11
  %160 = load ptr, ptr %9, align 8, !tbaa !5
  %161 = load i32, ptr %19, align 4, !tbaa !9
  %162 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3VecILj4EjEixEi(ptr noundef nonnull align 4 dereferenceable(16) %160, i32 noundef %161)
          to label %163 unwind label %127

163:                                              ; preds = %156
  %164 = load i32, ptr %162, align 4, !tbaa !9
  %165 = zext i32 %164 to i64
  %166 = getelementptr inbounds [8 x %struct.Vec.1], ptr %159, i64 0, i64 %165
  invoke void @_ZN10rootparity12_GLOBAL__N_133point_triangle_collision_functionI9expansionEEvRK3VecILj3EdES6_S6_S6_S6_S6_S6_S6_bbbRS3_ILj3ET_E(ptr noundef nonnull align 8 dereferenceable(24) %133, ptr noundef nonnull align 8 dereferenceable(24) %134, ptr noundef nonnull align 8 dereferenceable(24) %135, ptr noundef nonnull align 8 dereferenceable(24) %136, ptr noundef nonnull align 8 dereferenceable(24) %137, ptr noundef nonnull align 8 dereferenceable(24) %138, ptr noundef nonnull align 8 dereferenceable(24) %139, ptr noundef nonnull align 8 dereferenceable(24) %140, i1 noundef zeroext %146, i1 noundef zeroext %152, i1 noundef zeroext %158, ptr noundef nonnull align 8 dereferenceable(96) %166)
          to label %167 unwind label %127

167:                                              ; preds = %163
  br label %168

168:                                              ; preds = %167, %126
  %169 = getelementptr inbounds %"class.rootparity::RootParityCollisionTest", ptr %22, i32 0, i32 12
  %170 = load ptr, ptr %9, align 8, !tbaa !5
  %171 = load i32, ptr %19, align 4, !tbaa !9
  %172 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3VecILj4EjEixEi(ptr noundef nonnull align 4 dereferenceable(16) %170, i32 noundef %171)
          to label %173 unwind label %127

173:                                              ; preds = %168
  %174 = load i32, ptr %172, align 4, !tbaa !9
  %175 = zext i32 %174 to i64
  %176 = getelementptr inbounds [8 x i8], ptr %169, i64 0, i64 %175
  store i8 1, ptr %176, align 1, !tbaa !11
  br label %177

177:                                              ; preds = %173, %80
  br label %178

178:                                              ; preds = %177
  %179 = load i32, ptr %19, align 4, !tbaa !9
  %180 = add i32 %179, 1
  store i32 %180, ptr %19, align 4, !tbaa !9
  br label %63, !llvm.loop !19

181:                                              ; preds = %66
  call void @llvm.lifetime.start.p0(i64 96, ptr %20) #5
  invoke void @_ZN3VecILj3E9expansionEC2Ev(ptr noundef nonnull align 8 dereferenceable(96) %20)
          to label %182 unwind label %220

182:                                              ; preds = %181
  %183 = load ptr, ptr %13, align 8, !tbaa !5
  invoke void @_ZN10rootparity12_GLOBAL__N_111make_vectorILj3E9expansionEEvRK3VecIXT_EdERS3_IXT_ET0_E(ptr noundef nonnull align 8 dereferenceable(24) %183, ptr noundef nonnull align 8 dereferenceable(96) %20)
          to label %184 unwind label %224

184:                                              ; preds = %182
  %185 = getelementptr inbounds %"class.rootparity::RootParityCollisionTest", ptr %22, i32 0, i32 11
  %186 = load ptr, ptr %9, align 8, !tbaa !5
  %187 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3VecILj4EjEixEi(ptr noundef nonnull align 4 dereferenceable(16) %186, i32 noundef 0)
          to label %188 unwind label %224

188:                                              ; preds = %184
  %189 = load i32, ptr %187, align 4, !tbaa !9
  %190 = zext i32 %189 to i64
  %191 = getelementptr inbounds [8 x %struct.Vec.1], ptr %185, i64 0, i64 %190
  %192 = getelementptr inbounds %"class.rootparity::RootParityCollisionTest", ptr %22, i32 0, i32 11
  %193 = load ptr, ptr %9, align 8, !tbaa !5
  %194 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3VecILj4EjEixEi(ptr noundef nonnull align 4 dereferenceable(16) %193, i32 noundef 1)
          to label %195 unwind label %224

195:                                              ; preds = %188
  %196 = load i32, ptr %194, align 4, !tbaa !9
  %197 = zext i32 %196 to i64
  %198 = getelementptr inbounds [8 x %struct.Vec.1], ptr %192, i64 0, i64 %197
  %199 = getelementptr inbounds %"class.rootparity::RootParityCollisionTest", ptr %22, i32 0, i32 11
  %200 = load ptr, ptr %9, align 8, !tbaa !5
  %201 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3VecILj4EjEixEi(ptr noundef nonnull align 4 dereferenceable(16) %200, i32 noundef 2)
          to label %202 unwind label %224

202:                                              ; preds = %195
  %203 = load i32, ptr %201, align 4, !tbaa !9
  %204 = zext i32 %203 to i64
  %205 = getelementptr inbounds [8 x %struct.Vec.1], ptr %199, i64 0, i64 %204
  %206 = getelementptr inbounds %"class.rootparity::RootParityCollisionTest", ptr %22, i32 0, i32 11
  %207 = load ptr, ptr %9, align 8, !tbaa !5
  %208 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3VecILj4EjEixEi(ptr noundef nonnull align 4 dereferenceable(16) %207, i32 noundef 3)
          to label %209 unwind label %224

209:                                              ; preds = %202
  %210 = load i32, ptr %208, align 4, !tbaa !9
  %211 = zext i32 %210 to i64
  %212 = getelementptr inbounds [8 x %struct.Vec.1], ptr %206, i64 0, i64 %211
  %213 = getelementptr inbounds [5 x double], ptr %17, i64 0, i64 0
  %214 = getelementptr inbounds [5 x double], ptr %17, i64 0, i64 1
  %215 = getelementptr inbounds [5 x double], ptr %17, i64 0, i64 2
  %216 = getelementptr inbounds [5 x double], ptr %17, i64 0, i64 3
  %217 = getelementptr inbounds [5 x double], ptr %17, i64 0, i64 4
  %218 = invoke noundef i32 @_ZN10rootparity12_GLOBAL__N_130point_tetrahedron_intersectionI9expansionEEiRK3VecILj3ET_ES7_S7_S7_S7_PdS8_S8_S8_S8_(ptr noundef nonnull align 8 dereferenceable(96) %20, ptr noundef nonnull align 8 dereferenceable(96) %191, ptr noundef nonnull align 8 dereferenceable(96) %198, ptr noundef nonnull align 8 dereferenceable(96) %205, ptr noundef nonnull align 8 dereferenceable(96) %212, ptr noundef %213, ptr noundef %214, ptr noundef %215, ptr noundef %216, ptr noundef %217)
          to label %219 unwind label %224

219:                                              ; preds = %209
  store i32 %218, ptr %18, align 4, !tbaa !9
  call void @_ZN3VecILj3E9expansionED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %20) #5
  call void @llvm.lifetime.end.p0(i64 96, ptr %20) #5
  br label %229

220:                                              ; preds = %181
  %221 = landingpad { ptr, i32 }
          cleanup
  %222 = extractvalue { ptr, i32 } %221, 0
  store ptr %222, ptr %15, align 8
  %223 = extractvalue { ptr, i32 } %221, 1
  store i32 %223, ptr %16, align 4
  br label %228

224:                                              ; preds = %209, %202, %195, %188, %184, %182
  %225 = landingpad { ptr, i32 }
          cleanup
  %226 = extractvalue { ptr, i32 } %225, 0
  store ptr %226, ptr %15, align 8
  %227 = extractvalue { ptr, i32 } %225, 1
  store i32 %227, ptr %16, align 4
  call void @_ZN3VecILj3E9expansionED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %20) #5
  br label %228

228:                                              ; preds = %224, %220
  call void @llvm.lifetime.end.p0(i64 96, ptr %20) #5
  br label %236

229:                                              ; preds = %219, %59
  %230 = load i32, ptr %18, align 4, !tbaa !9
  %231 = icmp eq i32 %230, 0
  br i1 %231, label %232, label %233

232:                                              ; preds = %229
  store i1 false, ptr %7, align 1
  store i32 1, ptr %21, align 4
  br label %234

233:                                              ; preds = %229
  store i1 true, ptr %7, align 1
  store i32 1, ptr %21, align 4
  br label %234

234:                                              ; preds = %233, %232
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 40, ptr %17) #5
  call void @_ZN3VecILj3E8IntervalED2Ev(ptr noundef nonnull align 8 dereferenceable(72) %14) #5
  call void @llvm.lifetime.end.p0(i64 72, ptr %14) #5
  %235 = load i1, ptr %7, align 1
  ret i1 %235

236:                                              ; preds = %228, %127, %71
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 40, ptr %17) #5
  br label %237

237:                                              ; preds = %236, %67
  call void @_ZN3VecILj3E8IntervalED2Ev(ptr noundef nonnull align 8 dereferenceable(72) %14) #5
  call void @llvm.lifetime.end.p0(i64 72, ptr %14) #5
  br label %238

238:                                              ; preds = %237
  %239 = load ptr, ptr %15, align 8
  %240 = load i32, ptr %16, align 4
  %241 = insertvalue { ptr, i32 } poison, ptr %239, 0
  %242 = insertvalue { ptr, i32 } %241, i32 %240, 1
  resume { ptr, i32 } %242
}

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3VecILj3E8IntervalEC2Ev(ptr noundef nonnull align 8 dereferenceable(72)) unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZN10rootparity12_GLOBAL__N_111make_vectorILj3E8IntervalEEvRK3VecIXT_EdERS3_IXT_ET0_E(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(72)) #2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZN10rootparity12_GLOBAL__N_130point_tetrahedron_intersectionI8IntervalEEiRK3VecILj3ET_ES7_S7_S7_S7_PdS8_S8_S8_S8_(ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(72), ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3VecILj4EjEixEi(ptr noundef nonnull align 4 dereferenceable(16), i32 noundef) #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZN10rootparity12_GLOBAL__N_128edge_edge_collision_functionI9expansionEEvRK3VecILj3EdES6_S6_S6_S6_S6_S6_S6_bbbRS3_ILj3ET_E(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext, ptr noundef nonnull align 8 dereferenceable(96)) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3VecILj4EbEixEi(ptr noundef nonnull align 1 dereferenceable(4), i32 noundef) #3 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN10rootparity12_GLOBAL__N_133point_triangle_collision_functionI9expansionEEvRK3VecILj3EdES6_S6_S6_S6_S6_S6_S6_bbbRS3_ILj3ET_E(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext, ptr noundef nonnull align 8 dereferenceable(96)) #0

; 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
declare dso_local void @_ZN3VecILj3E9expansionEC2Ev(ptr noundef nonnull align 8 dereferenceable(96)) unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZN10rootparity12_GLOBAL__N_111make_vectorILj3E9expansionEEvRK3VecIXT_EdERS3_IXT_ET0_E(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(96)) #2

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZN10rootparity12_GLOBAL__N_130point_tetrahedron_intersectionI9expansionEEiRK3VecILj3ET_ES7_S7_S7_S7_PdS8_S8_S8_S8_(ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(96), ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #0

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3VecILj3E9expansionED2Ev(ptr noundef nonnull align 8 dereferenceable(96)) unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3VecILj3E8IntervalED2Ev(ptr noundef nonnull align 8 dereferenceable(72)) unnamed_addr #4 align 2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"bool", !7, i64 0}
!13 = !{i8 0, i8 2}
!14 = !{}
!15 = !{!16, !12, i64 176}
!16 = !{!"_ZTSN10rootparity23RootParityCollisionTestE", !6, i64 0, !17, i64 8, !17, i64 32, !17, i64 56, !17, i64 80, !17, i64 104, !17, i64 128, !17, i64 152, !12, i64 176, !17, i64 184, !7, i64 208, !7, i64 784, !7, i64 1552}
!17 = !{!"_ZTS3VecILj3EdE", !7, i64 0}
!18 = !{!16, !6, i64 0}
!19 = distinct !{!19, !20}
!20 = !{!"llvm.loop.mustprogress"}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.Vec = type { [3 x %class.Interval] }
%class.Interval = type { %class.IntervalBase, [2 x double] }
%class.IntervalBase = type { ptr }
%struct.Vec.1 = type { [3 x %class.expansion] }
%class.expansion = type { ptr, %"class.std::vector" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN10rootparity23RootParityCollisionTest30point_tetrahedron_intersectionERK3VecILj4EjERKS1_ILj4EbES7_S7_RKS1_ILj3EdE(ptr noundef nonnull align 8 dereferenceable(1560) %0, ptr noundef nonnull align 4 dereferenceable(16) %1, ptr noundef nonnull align 1 dereferenceable(4) %2, ptr noundef nonnull align 1 dereferenceable(4) %3, ptr noundef nonnull align 1 dereferenceable(4) %4, ptr noundef nonnull align 8 dereferenceable(24) %5) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %7 = alloca %struct.Vec, align 8
  %8 = alloca [5 x double], align 16
  %9 = alloca %struct.Vec.1, align 8
  call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %7) #5
  call void @_ZN3VecILj3E8IntervalEC2Ev(ptr noundef nonnull align 8 dereferenceable(72) %7)
  invoke void @_ZN10rootparity12_GLOBAL__N_111make_vectorILj3E8IntervalEEvRK3VecIXT_EdERS3_IXT_ET0_E(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(72) %7)
          to label %10 unwind label %51

10:                                               ; preds = %6
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %8) #5
  %11 = getelementptr inbounds i8, ptr %0, i64 208
  %12 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3VecILj4EjEixEi(ptr noundef nonnull align 4 dereferenceable(16) %1, i32 noundef 0)
  %13 = load i32, ptr %12, align 4, !tbaa !5
  %14 = zext i32 %13 to i64
  %15 = getelementptr inbounds [8 x %struct.Vec], ptr %11, i64 0, i64 %14
  %16 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3VecILj4EjEixEi(ptr noundef nonnull align 4 dereferenceable(16) %1, i32 noundef 1)
  %17 = load i32, ptr %16, align 4, !tbaa !5
  %18 = zext i32 %17 to i64
  %19 = getelementptr inbounds [8 x %struct.Vec], ptr %11, i64 0, i64 %18
  %20 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3VecILj4EjEixEi(ptr noundef nonnull align 4 dereferenceable(16) %1, i32 noundef 2)
  %21 = load i32, ptr %20, align 4, !tbaa !5
  %22 = zext i32 %21 to i64
  %23 = getelementptr inbounds [8 x %struct.Vec], ptr %11, i64 0, i64 %22
  %24 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3VecILj4EjEixEi(ptr noundef nonnull align 4 dereferenceable(16) %1, i32 noundef 3)
  %25 = load i32, ptr %24, align 4, !tbaa !5
  %26 = zext i32 %25 to i64
  %27 = getelementptr inbounds [8 x %struct.Vec], ptr %11, i64 0, i64 %26
  %28 = getelementptr inbounds i8, ptr %8, i64 8
  %29 = getelementptr inbounds i8, ptr %8, i64 16
  %30 = getelementptr inbounds i8, ptr %8, i64 24
  %31 = getelementptr inbounds i8, ptr %8, i64 32
  %32 = invoke noundef i32 @_ZN10rootparity12_GLOBAL__N_130point_tetrahedron_intersectionI8IntervalEEiRK3VecILj3ET_ES7_S7_S7_S7_PdS8_S8_S8_S8_(ptr noundef nonnull align 8 dereferenceable(72) %7, ptr noundef nonnull align 8 dereferenceable(72) %15, ptr noundef nonnull align 8 dereferenceable(72) %19, ptr noundef nonnull align 8 dereferenceable(72) %23, ptr noundef nonnull align 8 dereferenceable(72) %27, ptr noundef nonnull %8, ptr noundef nonnull %28, ptr noundef nonnull %29, ptr noundef nonnull %30, ptr noundef nonnull %31)
          to label %33 unwind label %53

33:                                               ; preds = %10
  %34 = icmp slt i32 %32, 0
  br i1 %34, label %.preheader, label %200

.preheader:                                       ; preds = %33
  %35 = getelementptr inbounds i8, ptr %0, i64 1552
  %36 = getelementptr inbounds i8, ptr %0, i64 176
  %37 = getelementptr inbounds i8, ptr %0, i64 8
  %38 = getelementptr inbounds i8, ptr %0, i64 32
  %39 = getelementptr inbounds i8, ptr %0, i64 56
  %40 = getelementptr inbounds i8, ptr %0, i64 80
  %41 = getelementptr inbounds i8, ptr %0, i64 104
  %42 = getelementptr inbounds i8, ptr %0, i64 128
  %43 = getelementptr inbounds i8, ptr %0, i64 152
  %44 = getelementptr inbounds i8, ptr %0, i64 784
  %45 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3VecILj4EjEixEi(ptr noundef nonnull align 4 dereferenceable(16) %1, i32 noundef 0)
  %46 = load i32, ptr %45, align 4, !tbaa !5
  %47 = zext i32 %46 to i64
  %48 = getelementptr inbounds [8 x i8], ptr %35, i64 0, i64 %47
  %49 = load i8, ptr %48, align 1, !tbaa !9, !range !11, !noundef !12
  %50 = trunc nuw i8 %49 to i1
  br i1 %50, label %81, label %55

51:                                               ; preds = %6
  %52 = landingpad { ptr, i32 }
          cleanup
  br label %203

53:                                               ; preds = %10
  %54 = landingpad { ptr, i32 }
          cleanup
  br label %202

55:                                               ; preds = %.preheader
  %56 = load i8, ptr %36, align 8, !tbaa !13, !range !11, !noundef !12
  %57 = trunc nuw i8 %56 to i1
  %58 = load ptr, ptr %0, align 8, !tbaa !17
  %59 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3VecILj4EbEixEi(ptr noundef nonnull align 1 dereferenceable(4) %2, i32 noundef 0)
  %60 = load i8, ptr %59, align 1, !tbaa !9, !range !11, !noundef !12
  %61 = trunc nuw i8 %60 to i1
  %62 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3VecILj4EbEixEi(ptr noundef nonnull align 1 dereferenceable(4) %3, i32 noundef 0)
  %63 = load i8, ptr %62, align 1, !tbaa !9, !range !11, !noundef !12
  %64 = trunc nuw i8 %63 to i1
  %65 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3VecILj4EbEixEi(ptr noundef nonnull align 1 dereferenceable(4) %4, i32 noundef 0)
  %66 = load i8, ptr %65, align 1, !tbaa !9, !range !11, !noundef !12
  %67 = trunc nuw i8 %66 to i1
  %68 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3VecILj4EjEixEi(ptr noundef nonnull align 4 dereferenceable(16) %1, i32 noundef 0)
  %69 = load i32, ptr %68, align 4, !tbaa !5
  %70 = zext i32 %69 to i64
  %71 = getelementptr inbounds [8 x %struct.Vec.1], ptr %44, i64 0, i64 %70
  br i1 %57, label %72, label %75

72:                                               ; preds = %55
  invoke void @_ZN10rootparity12_GLOBAL__N_128edge_edge_collision_functionI9expansionEEvRK3VecILj3EdES6_S6_S6_S6_S6_S6_S6_bbbRS3_ILj3ET_E(ptr noundef nonnull align 8 dereferenceable(24) %58, ptr noundef nonnull align 8 dereferenceable(24) %37, ptr noundef nonnull align 8 dereferenceable(24) %38, ptr noundef nonnull align 8 dereferenceable(24) %39, ptr noundef nonnull align 8 dereferenceable(24) %40, ptr noundef nonnull align 8 dereferenceable(24) %41, ptr noundef nonnull align 8 dereferenceable(24) %42, ptr noundef nonnull align 8 dereferenceable(24) %43, i1 noundef zeroext %61, i1 noundef zeroext %64, i1 noundef zeroext %67, ptr noundef nonnull align 8 dereferenceable(96) %71)
          to label %76 unwind label %73

73:                                               ; preds = %168, %167, %137, %136, %106, %105, %75, %72
  %74 = landingpad { ptr, i32 }
          cleanup
  br label %202

75:                                               ; preds = %55
  invoke void @_ZN10rootparity12_GLOBAL__N_133point_triangle_collision_functionI9expansionEEvRK3VecILj3EdES6_S6_S6_S6_S6_S6_S6_bbbRS3_ILj3ET_E(ptr noundef nonnull align 8 dereferenceable(24) %58, ptr noundef nonnull align 8 dereferenceable(24) %37, ptr noundef nonnull align 8 dereferenceable(24) %38, ptr noundef nonnull align 8 dereferenceable(24) %39, ptr noundef nonnull align 8 dereferenceable(24) %40, ptr noundef nonnull align 8 dereferenceable(24) %41, ptr noundef nonnull align 8 dereferenceable(24) %42, ptr noundef nonnull align 8 dereferenceable(24) %43, i1 noundef zeroext %61, i1 noundef zeroext %64, i1 noundef zeroext %67, ptr noundef nonnull align 8 dereferenceable(96) %71)
          to label %76 unwind label %73

76:                                               ; preds = %75, %72
  %77 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3VecILj4EjEixEi(ptr noundef nonnull align 4 dereferenceable(16) %1, i32 noundef 0)
  %78 = load i32, ptr %77, align 4, !tbaa !5
  %79 = zext i32 %78 to i64
  %80 = getelementptr inbounds [8 x i8], ptr %35, i64 0, i64 %79
  store i8 1, ptr %80, align 1, !tbaa !9
  br label %81

81:                                               ; preds = %.preheader, %76
  %82 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3VecILj4EjEixEi(ptr noundef nonnull align 4 dereferenceable(16) %1, i32 noundef 1)
  %83 = load i32, ptr %82, align 4, !tbaa !5
  %84 = zext i32 %83 to i64
  %85 = getelementptr inbounds [8 x i8], ptr %35, i64 0, i64 %84
  %86 = load i8, ptr %85, align 1, !tbaa !9, !range !11, !noundef !12
  %87 = trunc nuw i8 %86 to i1
  br i1 %87, label %112, label %88

88:                                               ; preds = %81
  %89 = load i8, ptr %36, align 8, !tbaa !13, !range !11, !noundef !12
  %90 = trunc nuw i8 %89 to i1
  %91 = load ptr, ptr %0, align 8, !tbaa !17
  %92 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3VecILj4EbEixEi(ptr noundef nonnull align 1 dereferenceable(4) %2, i32 noundef 1)
  %93 = load i8, ptr %92, align 1, !tbaa !9, !range !11, !noundef !12
  %94 = trunc nuw i8 %93 to i1
  %95 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3VecILj4EbEixEi(ptr noundef nonnull align 1 dereferenceable(4) %3, i32 noundef 1)
  %96 = load i8, ptr %95, align 1, !tbaa !9, !range !11, !noundef !12
  %97 = trunc nuw i8 %96 to i1
  %98 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3VecILj4EbEixEi(ptr noundef nonnull align 1 dereferenceable(4) %4, i32 noundef 1)
  %99 = load i8, ptr %98, align 1, !tbaa !9, !range !11, !noundef !12
  %100 = trunc nuw i8 %99 to i1
  %101 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3VecILj4EjEixEi(ptr noundef nonnull align 4 dereferenceable(16) %1, i32 noundef 1)
  %102 = load i32, ptr %101, align 4, !tbaa !5
  %103 = zext i32 %102 to i64
  %104 = getelementptr inbounds [8 x %struct.Vec.1], ptr %44, i64 0, i64 %103
  br i1 %90, label %106, label %105

105:                                              ; preds = %88
  invoke void @_ZN10rootparity12_GLOBAL__N_133point_triangle_collision_functionI9expansionEEvRK3VecILj3EdES6_S6_S6_S6_S6_S6_S6_bbbRS3_ILj3ET_E(ptr noundef nonnull align 8 dereferenceable(24) %91, ptr noundef nonnull align 8 dereferenceable(24) %37, ptr noundef nonnull align 8 dereferenceable(24) %38, ptr noundef nonnull align 8 dereferenceable(24) %39, ptr noundef nonnull align 8 dereferenceable(24) %40, ptr noundef nonnull align 8 dereferenceable(24) %41, ptr noundef nonnull align 8 dereferenceable(24) %42, ptr noundef nonnull align 8 dereferenceable(24) %43, i1 noundef zeroext %94, i1 noundef zeroext %97, i1 noundef zeroext %100, ptr noundef nonnull align 8 dereferenceable(96) %104)
          to label %107 unwind label %73

106:                                              ; preds = %88
  invoke void @_ZN10rootparity12_GLOBAL__N_128edge_edge_collision_functionI9expansionEEvRK3VecILj3EdES6_S6_S6_S6_S6_S6_S6_bbbRS3_ILj3ET_E(ptr noundef nonnull align 8 dereferenceable(24) %91, ptr noundef nonnull align 8 dereferenceable(24) %37, ptr noundef nonnull align 8 dereferenceable(24) %38, ptr noundef nonnull align 8 dereferenceable(24) %39, ptr noundef nonnull align 8 dereferenceable(24) %40, ptr noundef nonnull align 8 dereferenceable(24) %41, ptr noundef nonnull align 8 dereferenceable(24) %42, ptr noundef nonnull align 8 dereferenceable(24) %43, i1 noundef zeroext %94, i1 noundef zeroext %97, i1 noundef zeroext %100, ptr noundef nonnull align 8 dereferenceable(96) %104)
          to label %107 unwind label %73

107:                                              ; preds = %106, %105
  %108 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3VecILj4EjEixEi(ptr noundef nonnull align 4 dereferenceable(16) %1, i32 noundef 1)
  %109 = load i32, ptr %108, align 4, !tbaa !5
  %110 = zext i32 %109 to i64
  %111 = getelementptr inbounds [8 x i8], ptr %35, i64 0, i64 %110
  store i8 1, ptr %111, align 1, !tbaa !9
  br label %112

112:                                              ; preds = %107, %81
  %113 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3VecILj4EjEixEi(ptr noundef nonnull align 4 dereferenceable(16) %1, i32 noundef 2)
  %114 = load i32, ptr %113, align 4, !tbaa !5
  %115 = zext i32 %114 to i64
  %116 = getelementptr inbounds [8 x i8], ptr %35, i64 0, i64 %115
  %117 = load i8, ptr %116, align 1, !tbaa !9, !range !11, !noundef !12
  %118 = trunc nuw i8 %117 to i1
  br i1 %118, label %143, label %119

119:                                              ; preds = %112
  %120 = load i8, ptr %36, align 8, !tbaa !13, !range !11, !noundef !12
  %121 = trunc nuw i8 %120 to i1
  %122 = load ptr, ptr %0, align 8, !tbaa !17
  %123 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3VecILj4EbEixEi(ptr noundef nonnull align 1 dereferenceable(4) %2, i32 noundef 2)
  %124 = load i8, ptr %123, align 1, !tbaa !9, !range !11, !noundef !12
  %125 = trunc nuw i8 %124 to i1
  %126 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3VecILj4EbEixEi(ptr noundef nonnull align 1 dereferenceable(4) %3, i32 noundef 2)
  %127 = load i8, ptr %126, align 1, !tbaa !9, !range !11, !noundef !12
  %128 = trunc nuw i8 %127 to i1
  %129 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3VecILj4EbEixEi(ptr noundef nonnull align 1 dereferenceable(4) %4, i32 noundef 2)
  %130 = load i8, ptr %129, align 1, !tbaa !9, !range !11, !noundef !12
  %131 = trunc nuw i8 %130 to i1
  %132 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3VecILj4EjEixEi(ptr noundef nonnull align 4 dereferenceable(16) %1, i32 noundef 2)
  %133 = load i32, ptr %132, align 4, !tbaa !5
  %134 = zext i32 %133 to i64
  %135 = getelementptr inbounds [8 x %struct.Vec.1], ptr %44, i64 0, i64 %134
  br i1 %121, label %137, label %136

136:                                              ; preds = %119
  invoke void @_ZN10rootparity12_GLOBAL__N_133point_triangle_collision_functionI9expansionEEvRK3VecILj3EdES6_S6_S6_S6_S6_S6_S6_bbbRS3_ILj3ET_E(ptr noundef nonnull align 8 dereferenceable(24) %122, ptr noundef nonnull align 8 dereferenceable(24) %37, ptr noundef nonnull align 8 dereferenceable(24) %38, ptr noundef nonnull align 8 dereferenceable(24) %39, ptr noundef nonnull align 8 dereferenceable(24) %40, ptr noundef nonnull align 8 dereferenceable(24) %41, ptr noundef nonnull align 8 dereferenceable(24) %42, ptr noundef nonnull align 8 dereferenceable(24) %43, i1 noundef zeroext %125, i1 noundef zeroext %128, i1 noundef zeroext %131, ptr noundef nonnull align 8 dereferenceable(96) %135)
          to label %138 unwind label %73

137:                                              ; preds = %119
  invoke void @_ZN10rootparity12_GLOBAL__N_128edge_edge_collision_functionI9expansionEEvRK3VecILj3EdES6_S6_S6_S6_S6_S6_S6_bbbRS3_ILj3ET_E(ptr noundef nonnull align 8 dereferenceable(24) %122, ptr noundef nonnull align 8 dereferenceable(24) %37, ptr noundef nonnull align 8 dereferenceable(24) %38, ptr noundef nonnull align 8 dereferenceable(24) %39, ptr noundef nonnull align 8 dereferenceable(24) %40, ptr noundef nonnull align 8 dereferenceable(24) %41, ptr noundef nonnull align 8 dereferenceable(24) %42, ptr noundef nonnull align 8 dereferenceable(24) %43, i1 noundef zeroext %125, i1 noundef zeroext %128, i1 noundef zeroext %131, ptr noundef nonnull align 8 dereferenceable(96) %135)
          to label %138 unwind label %73

138:                                              ; preds = %137, %136
  %139 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3VecILj4EjEixEi(ptr noundef nonnull align 4 dereferenceable(16) %1, i32 noundef 2)
  %140 = load i32, ptr %139, align 4, !tbaa !5
  %141 = zext i32 %140 to i64
  %142 = getelementptr inbounds [8 x i8], ptr %35, i64 0, i64 %141
  store i8 1, ptr %142, align 1, !tbaa !9
  br label %143

143:                                              ; preds = %138, %112
  %144 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3VecILj4EjEixEi(ptr noundef nonnull align 4 dereferenceable(16) %1, i32 noundef 3)
  %145 = load i32, ptr %144, align 4, !tbaa !5
  %146 = zext i32 %145 to i64
  %147 = getelementptr inbounds [8 x i8], ptr %35, i64 0, i64 %146
  %148 = load i8, ptr %147, align 1, !tbaa !9, !range !11, !noundef !12
  %149 = trunc nuw i8 %148 to i1
  br i1 %149, label %174, label %150

150:                                              ; preds = %143
  %151 = load i8, ptr %36, align 8, !tbaa !13, !range !11, !noundef !12
  %152 = trunc nuw i8 %151 to i1
  %153 = load ptr, ptr %0, align 8, !tbaa !17
  %154 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3VecILj4EbEixEi(ptr noundef nonnull align 1 dereferenceable(4) %2, i32 noundef 3)
  %155 = load i8, ptr %154, align 1, !tbaa !9, !range !11, !noundef !12
  %156 = trunc nuw i8 %155 to i1
  %157 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3VecILj4EbEixEi(ptr noundef nonnull align 1 dereferenceable(4) %3, i32 noundef 3)
  %158 = load i8, ptr %157, align 1, !tbaa !9, !range !11, !noundef !12
  %159 = trunc nuw i8 %158 to i1
  %160 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3VecILj4EbEixEi(ptr noundef nonnull align 1 dereferenceable(4) %4, i32 noundef 3)
  %161 = load i8, ptr %160, align 1, !tbaa !9, !range !11, !noundef !12
  %162 = trunc nuw i8 %161 to i1
  %163 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3VecILj4EjEixEi(ptr noundef nonnull align 4 dereferenceable(16) %1, i32 noundef 3)
  %164 = load i32, ptr %163, align 4, !tbaa !5
  %165 = zext i32 %164 to i64
  %166 = getelementptr inbounds [8 x %struct.Vec.1], ptr %44, i64 0, i64 %165
  br i1 %152, label %168, label %167

167:                                              ; preds = %150
  invoke void @_ZN10rootparity12_GLOBAL__N_133point_triangle_collision_functionI9expansionEEvRK3VecILj3EdES6_S6_S6_S6_S6_S6_S6_bbbRS3_ILj3ET_E(ptr noundef nonnull align 8 dereferenceable(24) %153, ptr noundef nonnull align 8 dereferenceable(24) %37, ptr noundef nonnull align 8 dereferenceable(24) %38, ptr noundef nonnull align 8 dereferenceable(24) %39, ptr noundef nonnull align 8 dereferenceable(24) %40, ptr noundef nonnull align 8 dereferenceable(24) %41, ptr noundef nonnull align 8 dereferenceable(24) %42, ptr noundef nonnull align 8 dereferenceable(24) %43, i1 noundef zeroext %156, i1 noundef zeroext %159, i1 noundef zeroext %162, ptr noundef nonnull align 8 dereferenceable(96) %166)
          to label %169 unwind label %73

168:                                              ; preds = %150
  invoke void @_ZN10rootparity12_GLOBAL__N_128edge_edge_collision_functionI9expansionEEvRK3VecILj3EdES6_S6_S6_S6_S6_S6_S6_bbbRS3_ILj3ET_E(ptr noundef nonnull align 8 dereferenceable(24) %153, ptr noundef nonnull align 8 dereferenceable(24) %37, ptr noundef nonnull align 8 dereferenceable(24) %38, ptr noundef nonnull align 8 dereferenceable(24) %39, ptr noundef nonnull align 8 dereferenceable(24) %40, ptr noundef nonnull align 8 dereferenceable(24) %41, ptr noundef nonnull align 8 dereferenceable(24) %42, ptr noundef nonnull align 8 dereferenceable(24) %43, i1 noundef zeroext %156, i1 noundef zeroext %159, i1 noundef zeroext %162, ptr noundef nonnull align 8 dereferenceable(96) %166)
          to label %169 unwind label %73

169:                                              ; preds = %168, %167
  %170 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3VecILj4EjEixEi(ptr noundef nonnull align 4 dereferenceable(16) %1, i32 noundef 3)
  %171 = load i32, ptr %170, align 4, !tbaa !5
  %172 = zext i32 %171 to i64
  %173 = getelementptr inbounds [8 x i8], ptr %35, i64 0, i64 %172
  store i8 1, ptr %173, align 1, !tbaa !9
  br label %174

174:                                              ; preds = %169, %143
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %9) #5
  invoke void @_ZN3VecILj3E9expansionEC2Ev(ptr noundef nonnull align 8 dereferenceable(96) %9)
          to label %175 unwind label %195

175:                                              ; preds = %174
  invoke void @_ZN10rootparity12_GLOBAL__N_111make_vectorILj3E9expansionEEvRK3VecIXT_EdERS3_IXT_ET0_E(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(96) %9)
          to label %176 unwind label %197

176:                                              ; preds = %175
  %177 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3VecILj4EjEixEi(ptr noundef nonnull align 4 dereferenceable(16) %1, i32 noundef 0)
  %178 = load i32, ptr %177, align 4, !tbaa !5
  %179 = zext i32 %178 to i64
  %180 = getelementptr inbounds [8 x %struct.Vec.1], ptr %44, i64 0, i64 %179
  %181 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3VecILj4EjEixEi(ptr noundef nonnull align 4 dereferenceable(16) %1, i32 noundef 1)
  %182 = load i32, ptr %181, align 4, !tbaa !5
  %183 = zext i32 %182 to i64
  %184 = getelementptr inbounds [8 x %struct.Vec.1], ptr %44, i64 0, i64 %183
  %185 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3VecILj4EjEixEi(ptr noundef nonnull align 4 dereferenceable(16) %1, i32 noundef 2)
  %186 = load i32, ptr %185, align 4, !tbaa !5
  %187 = zext i32 %186 to i64
  %188 = getelementptr inbounds [8 x %struct.Vec.1], ptr %44, i64 0, i64 %187
  %189 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3VecILj4EjEixEi(ptr noundef nonnull align 4 dereferenceable(16) %1, i32 noundef 3)
  %190 = load i32, ptr %189, align 4, !tbaa !5
  %191 = zext i32 %190 to i64
  %192 = getelementptr inbounds [8 x %struct.Vec.1], ptr %44, i64 0, i64 %191
  %193 = invoke noundef i32 @_ZN10rootparity12_GLOBAL__N_130point_tetrahedron_intersectionI9expansionEEiRK3VecILj3ET_ES7_S7_S7_S7_PdS8_S8_S8_S8_(ptr noundef nonnull align 8 dereferenceable(96) %9, ptr noundef nonnull align 8 dereferenceable(96) %180, ptr noundef nonnull align 8 dereferenceable(96) %184, ptr noundef nonnull align 8 dereferenceable(96) %188, ptr noundef nonnull align 8 dereferenceable(96) %192, ptr noundef nonnull %8, ptr noundef nonnull %28, ptr noundef nonnull %29, ptr noundef nonnull %30, ptr noundef nonnull %31)
          to label %194 unwind label %197

194:                                              ; preds = %176
  call void @_ZN3VecILj3E9expansionED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %9) #5
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %9) #5
  br label %200

195:                                              ; preds = %174
  %196 = landingpad { ptr, i32 }
          cleanup
  br label %199

197:                                              ; preds = %176, %175
  %198 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3VecILj3E9expansionED2Ev(ptr noundef nonnull align 8 dereferenceable(96) %9) #5
  br label %199

199:                                              ; preds = %197, %195
  %.pn = phi { ptr, i32 } [ %198, %197 ], [ %196, %195 ]
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %9) #5
  br label %202

200:                                              ; preds = %194, %33
  %.037 = phi i32 [ %193, %194 ], [ %32, %33 ]
  %201 = icmp ne i32 %.037, 0
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %8) #5
  call void @_ZN3VecILj3E8IntervalED2Ev(ptr noundef nonnull align 8 dereferenceable(72) %7) #5
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %7) #5
  ret i1 %201

202:                                              ; preds = %199, %73, %53
  %.pn45 = phi { ptr, i32 } [ %74, %73 ], [ %.pn, %199 ], [ %54, %53 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %8) #5
  br label %203

203:                                              ; preds = %202, %51
  %.pn45.pn = phi { ptr, i32 } [ %.pn45, %202 ], [ %52, %51 ]
  call void @_ZN3VecILj3E8IntervalED2Ev(ptr noundef nonnull align 8 dereferenceable(72) %7) #5
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %7) #5
  resume { ptr, i32 } %.pn45.pn
}

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3VecILj3E8IntervalEC2Ev(ptr noundef nonnull align 8 dereferenceable(72)) unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZN10rootparity12_GLOBAL__N_111make_vectorILj3E8IntervalEEvRK3VecIXT_EdERS3_IXT_ET0_E(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZN10rootparity12_GLOBAL__N_130point_tetrahedron_intersectionI8IntervalEEiRK3VecILj3ET_ES7_S7_S7_S7_PdS8_S8_S8_S8_(ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(72), ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3VecILj4EjEixEi(ptr noundef nonnull align 4 dereferenceable(16), i32 noundef) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZN10rootparity12_GLOBAL__N_128edge_edge_collision_functionI9expansionEEvRK3VecILj3EdES6_S6_S6_S6_S6_S6_S6_bbbRS3_ILj3ET_E(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext, ptr noundef nonnull align 8 dereferenceable(96)) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3VecILj4EbEixEi(ptr noundef nonnull align 1 dereferenceable(4), i32 noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN10rootparity12_GLOBAL__N_133point_triangle_collision_functionI9expansionEEvRK3VecILj3EdES6_S6_S6_S6_S6_S6_S6_bbbRS3_ILj3ET_E(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext, ptr noundef nonnull align 8 dereferenceable(96)) local_unnamed_addr #0

; 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
declare dso_local void @_ZN3VecILj3E9expansionEC2Ev(ptr noundef nonnull align 8 dereferenceable(96)) unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZN10rootparity12_GLOBAL__N_111make_vectorILj3E9expansionEEvRK3VecIXT_EdERS3_IXT_ET0_E(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(96)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZN10rootparity12_GLOBAL__N_130point_tetrahedron_intersectionI9expansionEEiRK3VecILj3ET_ES7_S7_S7_S7_PdS8_S8_S8_S8_(ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(96), ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3VecILj3E9expansionED2Ev(ptr noundef nonnull align 8 dereferenceable(96)) unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3VecILj3E8IntervalED2Ev(ptr noundef nonnull align 8 dereferenceable(72)) unnamed_addr #4 align 2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{i8 0, i8 2}
!12 = !{}
!13 = !{!14, !10, i64 176}
!14 = !{!"_ZTSN10rootparity23RootParityCollisionTestE", !15, i64 0, !16, i64 8, !16, i64 32, !16, i64 56, !16, i64 80, !16, i64 104, !16, i64 128, !16, i64 152, !10, i64 176, !16, i64 184, !7, i64 208, !7, i64 784, !7, i64 1552}
!15 = !{!"any pointer", !7, i64 0}
!16 = !{!"_ZTS3VecILj3EdE", !7, i64 0}
!17 = !{!14, !15, i64 0}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,SROAPass,SimplifyCFGPass