; LLVM IR from aghaeifar/SpinWalk :: src/phantom/handler.ll (ZN7phantom7handler7executeERKNS_12execute_argsE)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"class.phantom::cylinder" = type { %"class.phantom::phantom_base", %"class.std::vector.8", %"class.std::vector", float, float }
%"class.phantom::phantom_base" = type { ptr, %"class.std::vector", %"class.std::vector", %"class.std::vector.3", i64, float, float, float, float, %"class.std::__cxx11::basic_string", [3 x float], i8, i64 }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<signed char, std::allocator<signed char>>::_Vector_impl" }
%"struct.std::_Vector_base<signed char, std::allocator<signed char>>::_Vector_impl" = type { %"struct.std::_Vector_base<signed char, std::allocator<signed char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<signed char, std::allocator<signed char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<std::vector<float>, std::allocator<std::vector<float>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<float>, std::allocator<std::vector<float>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<float>, std::allocator<std::vector<float>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<float>, std::allocator<std::vector<float>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.phantom::sphere" = type <{ %"class.phantom::phantom_base", %"class.std::vector.8", %"class.std::vector", float, [4 x i8] }>
%"class.phantom::twopools" = type { %"class.phantom::phantom_base" }
%"class.phantom::ply" = type { %"class.phantom::phantom_base", %"struct.phantom::AABB", %"class.std::__cxx11::basic_string" }
%"struct.phantom::AABB" = type { %"struct.phantom::Vec3", %"struct.phantom::Vec3" }
%"struct.phantom::Vec3" = type { double, double, double }
%"struct.phantom::execute_args" = type { i8, i8, i8, i8, float, float, float, float, i32, float, float, i32, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string" }

@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str = external hidden unnamed_addr constant [31 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [6 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN7phantom7handler7executeERKNS_12execute_argsE(ptr noundef nonnull align 8 dereferenceable(104) %0) #0 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca i8, align 1
  %4 = alloca %"class.phantom::cylinder", align 8
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca %"class.phantom::sphere", align 8
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.phantom::twopools", align 8
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.phantom::ply", align 8
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %3) #6
  store i8 1, ptr %3, align 1, !tbaa !9
  %15 = load ptr, ptr %2, align 8, !tbaa !5
  %16 = getelementptr inbounds %"struct.phantom::execute_args", ptr %15, i32 0, i32 0
  %17 = load i8, ptr %16, align 8, !tbaa !11, !range !18, !noundef !19
  %18 = trunc i8 %17 to i1
  br i1 %18, label %19, label %67

19:                                               ; preds = %1
  %20 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str)
  %21 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  call void @llvm.lifetime.start.p0(i64 216, ptr %4) #6
  %22 = load ptr, ptr %2, align 8, !tbaa !5
  %23 = getelementptr inbounds %"struct.phantom::execute_args", ptr %22, i32 0, i32 7
  %24 = load float, ptr %23, align 8, !tbaa !20
  %25 = load ptr, ptr %2, align 8, !tbaa !5
  %26 = getelementptr inbounds %"struct.phantom::execute_args", ptr %25, i32 0, i32 8
  %27 = load i32, ptr %26, align 4, !tbaa !21
  %28 = zext i32 %27 to i64
  %29 = load ptr, ptr %2, align 8, !tbaa !5
  %30 = getelementptr inbounds %"struct.phantom::execute_args", ptr %29, i32 0, i32 9
  %31 = load float, ptr %30, align 8, !tbaa !22
  %32 = load ptr, ptr %2, align 8, !tbaa !5
  %33 = getelementptr inbounds %"struct.phantom::execute_args", ptr %32, i32 0, i32 10
  %34 = load float, ptr %33, align 4, !tbaa !23
  %35 = load ptr, ptr %2, align 8, !tbaa !5
  %36 = getelementptr inbounds %"struct.phantom::execute_args", ptr %35, i32 0, i32 4
  %37 = load float, ptr %36, align 4, !tbaa !24
  %38 = load ptr, ptr %2, align 8, !tbaa !5
  %39 = getelementptr inbounds %"struct.phantom::execute_args", ptr %38, i32 0, i32 6
  %40 = load float, ptr %39, align 4, !tbaa !25
  %41 = load ptr, ptr %2, align 8, !tbaa !5
  %42 = getelementptr inbounds %"struct.phantom::execute_args", ptr %41, i32 0, i32 5
  %43 = load float, ptr %42, align 8, !tbaa !26
  %44 = load ptr, ptr %2, align 8, !tbaa !5
  %45 = getelementptr inbounds %"struct.phantom::execute_args", ptr %44, i32 0, i32 11
  %46 = load i32, ptr %45, align 8, !tbaa !27
  %47 = load ptr, ptr %2, align 8, !tbaa !5
  %48 = getelementptr inbounds %"struct.phantom::execute_args", ptr %47, i32 0, i32 13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %48)
  invoke void @_ZN7phantom8cylinderC1EfmfffffiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(216) %4, float noundef %24, i64 noundef %28, float noundef %31, float noundef %34, float noundef %37, float noundef %40, float noundef %43, i32 noundef %46, ptr noundef %5)
          to label %49 unwind label %58

49:                                               ; preds = %19
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #6
  %50 = load i8, ptr %3, align 1, !tbaa !9, !range !18, !noundef !19
  %51 = trunc i8 %50 to i1
  br i1 %51, label %52, label %55

52:                                               ; preds = %49
  %53 = invoke noundef zeroext i1 @_ZN7phantom8cylinder3runEb(ptr noundef nonnull align 8 dereferenceable(216) %4, i1 noundef zeroext true)
          to label %54 unwind label %62

54:                                               ; preds = %52
  br label %55

55:                                               ; preds = %54, %49
  %56 = phi i1 [ false, %49 ], [ %53, %54 ]
  %57 = zext i1 %56 to i8
  store i8 %57, ptr %3, align 1, !tbaa !9
  call void @_ZN7phantom8cylinderD1Ev(ptr noundef nonnull align 8 dereferenceable(216) %4) #6
  call void @llvm.lifetime.end.p0(i64 216, ptr %4) #6
  br label %67

58:                                               ; preds = %19
  %59 = landingpad { ptr, i32 }
          cleanup
  %60 = extractvalue { ptr, i32 } %59, 0
  store ptr %60, ptr %6, align 8
  %61 = extractvalue { ptr, i32 } %59, 1
  store i32 %61, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #6
  br label %66

62:                                               ; preds = %52
  %63 = landingpad { ptr, i32 }
          cleanup
  %64 = extractvalue { ptr, i32 } %63, 0
  store ptr %64, ptr %6, align 8
  %65 = extractvalue { ptr, i32 } %63, 1
  store i32 %65, ptr %7, align 4
  call void @_ZN7phantom8cylinderD1Ev(ptr noundef nonnull align 8 dereferenceable(216) %4) #6
  br label %66

66:                                               ; preds = %62, %58
  call void @llvm.lifetime.end.p0(i64 216, ptr %4) #6
  br label %206

67:                                               ; preds = %55, %1
  %68 = load ptr, ptr %2, align 8, !tbaa !5
  %69 = getelementptr inbounds %"struct.phantom::execute_args", ptr %68, i32 0, i32 1
  %70 = load i8, ptr %69, align 1, !tbaa !28, !range !18, !noundef !19
  %71 = trunc i8 %70 to i1
  br i1 %71, label %72, label %117

72:                                               ; preds = %67
  %73 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.1)
  %74 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %73, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  call void @llvm.lifetime.start.p0(i64 216, ptr %8) #6
  %75 = load ptr, ptr %2, align 8, !tbaa !5
  %76 = getelementptr inbounds %"struct.phantom::execute_args", ptr %75, i32 0, i32 7
  %77 = load float, ptr %76, align 8, !tbaa !20
  %78 = load ptr, ptr %2, align 8, !tbaa !5
  %79 = getelementptr inbounds %"struct.phantom::execute_args", ptr %78, i32 0, i32 8
  %80 = load i32, ptr %79, align 4, !tbaa !21
  %81 = zext i32 %80 to i64
  %82 = load ptr, ptr %2, align 8, !tbaa !5
  %83 = getelementptr inbounds %"struct.phantom::execute_args", ptr %82, i32 0, i32 9
  %84 = load float, ptr %83, align 8, !tbaa !22
  %85 = load ptr, ptr %2, align 8, !tbaa !5
  %86 = getelementptr inbounds %"struct.phantom::execute_args", ptr %85, i32 0, i32 10
  %87 = load float, ptr %86, align 4, !tbaa !23
  %88 = load ptr, ptr %2, align 8, !tbaa !5
  %89 = getelementptr inbounds %"struct.phantom::execute_args", ptr %88, i32 0, i32 4
  %90 = load float, ptr %89, align 4, !tbaa !24
  %91 = load ptr, ptr %2, align 8, !tbaa !5
  %92 = getelementptr inbounds %"struct.phantom::execute_args", ptr %91, i32 0, i32 6
  %93 = load float, ptr %92, align 4, !tbaa !25
  %94 = load ptr, ptr %2, align 8, !tbaa !5
  %95 = getelementptr inbounds %"struct.phantom::execute_args", ptr %94, i32 0, i32 11
  %96 = load i32, ptr %95, align 8, !tbaa !27
  %97 = load ptr, ptr %2, align 8, !tbaa !5
  %98 = getelementptr inbounds %"struct.phantom::execute_args", ptr %97, i32 0, i32 13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(32) %98)
  invoke void @_ZN7phantom6sphereC1EfmffffiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(212) %8, float noundef %77, i64 noundef %81, float noundef %84, float noundef %87, float noundef %90, float noundef %93, i32 noundef %96, ptr noundef %9)
          to label %99 unwind label %108

99:                                               ; preds = %72
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #6
  %100 = load i8, ptr %3, align 1, !tbaa !9, !range !18, !noundef !19
  %101 = trunc i8 %100 to i1
  br i1 %101, label %102, label %105

102:                                              ; preds = %99
  %103 = invoke noundef zeroext i1 @_ZN7phantom6sphere3runEb(ptr noundef nonnull align 8 dereferenceable(212) %8, i1 noundef zeroext true)
          to label %104 unwind label %112

104:                                              ; preds = %102
  br label %105

105:                                              ; preds = %104, %99
  %106 = phi i1 [ false, %99 ], [ %103, %104 ]
  %107 = zext i1 %106 to i8
  store i8 %107, ptr %3, align 1, !tbaa !9
  call void @_ZN7phantom6sphereD1Ev(ptr noundef nonnull align 8 dereferenceable(212) %8) #6
  call void @llvm.lifetime.end.p0(i64 216, ptr %8) #6
  br label %117

108:                                              ; preds = %72
  %109 = landingpad { ptr, i32 }
          cleanup
  %110 = extractvalue { ptr, i32 } %109, 0
  store ptr %110, ptr %6, align 8
  %111 = extractvalue { ptr, i32 } %109, 1
  store i32 %111, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #6
  br label %116

112:                                              ; preds = %102
  %113 = landingpad { ptr, i32 }
          cleanup
  %114 = extractvalue { ptr, i32 } %113, 0
  store ptr %114, ptr %6, align 8
  %115 = extractvalue { ptr, i32 } %113, 1
  store i32 %115, ptr %7, align 4
  call void @_ZN7phantom6sphereD1Ev(ptr noundef nonnull align 8 dereferenceable(212) %8) #6
  br label %116

116:                                              ; preds = %112, %108
  call void @llvm.lifetime.end.p0(i64 216, ptr %8) #6
  br label %206

117:                                              ; preds = %105, %67
  %118 = load ptr, ptr %2, align 8, !tbaa !5
  %119 = getelementptr inbounds %"struct.phantom::execute_args", ptr %118, i32 0, i32 2
  %120 = load i8, ptr %119, align 2, !tbaa !29, !range !18, !noundef !19
  %121 = trunc i8 %120 to i1
  br i1 %121, label %122, label %152

122:                                              ; preds = %117
  %123 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.2)
  %124 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %123, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  call void @llvm.lifetime.start.p0(i64 160, ptr %10) #6
  %125 = load ptr, ptr %2, align 8, !tbaa !5
  %126 = getelementptr inbounds %"struct.phantom::execute_args", ptr %125, i32 0, i32 7
  %127 = load float, ptr %126, align 8, !tbaa !20
  %128 = load ptr, ptr %2, align 8, !tbaa !5
  %129 = getelementptr inbounds %"struct.phantom::execute_args", ptr %128, i32 0, i32 8
  %130 = load i32, ptr %129, align 4, !tbaa !21
  %131 = zext i32 %130 to i64
  %132 = load ptr, ptr %2, align 8, !tbaa !5
  %133 = getelementptr inbounds %"struct.phantom::execute_args", ptr %132, i32 0, i32 13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(32) %133)
  invoke void @_ZN7phantom8twopoolsC1EfmNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(160) %10, float noundef %127, i64 noundef %131, ptr noundef %11)
          to label %134 unwind label %143

134:                                              ; preds = %122
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  %135 = load i8, ptr %3, align 1, !tbaa !9, !range !18, !noundef !19
  %136 = trunc i8 %135 to i1
  br i1 %136, label %137, label %140

137:                                              ; preds = %134
  %138 = invoke noundef zeroext i1 @_ZN7phantom8twopools3runEb(ptr noundef nonnull align 8 dereferenceable(160) %10, i1 noundef zeroext true)
          to label %139 unwind label %147

139:                                              ; preds = %137
  br label %140

140:                                              ; preds = %139, %134
  %141 = phi i1 [ false, %134 ], [ %138, %139 ]
  %142 = zext i1 %141 to i8
  store i8 %142, ptr %3, align 1, !tbaa !9
  call void @_ZN7phantom8twopoolsD1Ev(ptr noundef nonnull align 8 dereferenceable(160) %10) #6
  call void @llvm.lifetime.end.p0(i64 160, ptr %10) #6
  br label %152

143:                                              ; preds = %122
  %144 = landingpad { ptr, i32 }
          cleanup
  %145 = extractvalue { ptr, i32 } %144, 0
  store ptr %145, ptr %6, align 8
  %146 = extractvalue { ptr, i32 } %144, 1
  store i32 %146, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  br label %151

147:                                              ; preds = %137
  %148 = landingpad { ptr, i32 }
          cleanup
  %149 = extractvalue { ptr, i32 } %148, 0
  store ptr %149, ptr %6, align 8
  %150 = extractvalue { ptr, i32 } %148, 1
  store i32 %150, ptr %7, align 4
  call void @_ZN7phantom8twopoolsD1Ev(ptr noundef nonnull align 8 dereferenceable(160) %10) #6
  br label %151

151:                                              ; preds = %147, %143
  call void @llvm.lifetime.end.p0(i64 160, ptr %10) #6
  br label %206

152:                                              ; preds = %140, %117
  %153 = load ptr, ptr %2, align 8, !tbaa !5
  %154 = getelementptr inbounds %"struct.phantom::execute_args", ptr %153, i32 0, i32 3
  %155 = load i8, ptr %154, align 1, !tbaa !30, !range !18, !noundef !19
  %156 = trunc i8 %155 to i1
  br i1 %156, label %157, label %201

157:                                              ; preds = %152
  %158 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.3)
  %159 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %158, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  call void @llvm.lifetime.start.p0(i64 240, ptr %12) #6
  %160 = load ptr, ptr %2, align 8, !tbaa !5
  %161 = getelementptr inbounds %"struct.phantom::execute_args", ptr %160, i32 0, i32 7
  %162 = load float, ptr %161, align 8, !tbaa !20
  %163 = load ptr, ptr %2, align 8, !tbaa !5
  %164 = getelementptr inbounds %"struct.phantom::execute_args", ptr %163, i32 0, i32 8
  %165 = load i32, ptr %164, align 4, !tbaa !21
  %166 = zext i32 %165 to i64
  %167 = load ptr, ptr %2, align 8, !tbaa !5
  %168 = getelementptr inbounds %"struct.phantom::execute_args", ptr %167, i32 0, i32 9
  %169 = load float, ptr %168, align 8, !tbaa !22
  %170 = load ptr, ptr %2, align 8, !tbaa !5
  %171 = getelementptr inbounds %"struct.phantom::execute_args", ptr %170, i32 0, i32 10
  %172 = load float, ptr %171, align 4, !tbaa !23
  %173 = load ptr, ptr %2, align 8, !tbaa !5
  %174 = getelementptr inbounds %"struct.phantom::execute_args", ptr %173, i32 0, i32 12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 8 dereferenceable(32) %174)
  %175 = load ptr, ptr %2, align 8, !tbaa !5
  %176 = getelementptr inbounds %"struct.phantom::execute_args", ptr %175, i32 0, i32 13
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 8 dereferenceable(32) %176)
          to label %177 unwind label %187

177:                                              ; preds = %157
  invoke void @_ZN7phantom3plyC1EfmffNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_(ptr noundef nonnull align 8 dereferenceable(240) %12, float noundef %162, i64 noundef %166, float noundef %169, float noundef %172, ptr noundef %13, ptr noundef %14)
          to label %178 unwind label %191

178:                                              ; preds = %177
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #6
  %179 = load i8, ptr %3, align 1, !tbaa !9, !range !18, !noundef !19
  %180 = trunc i8 %179 to i1
  br i1 %180, label %181, label %184

181:                                              ; preds = %178
  %182 = invoke noundef zeroext i1 @_ZN7phantom3ply3runEb(ptr noundef nonnull align 8 dereferenceable(240) %12, i1 noundef zeroext true)
          to label %183 unwind label %196

183:                                              ; preds = %181
  br label %184

184:                                              ; preds = %183, %178
  %185 = phi i1 [ false, %178 ], [ %182, %183 ]
  %186 = zext i1 %185 to i8
  store i8 %186, ptr %3, align 1, !tbaa !9
  call void @_ZN7phantom3plyD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %12) #6
  call void @llvm.lifetime.end.p0(i64 240, ptr %12) #6
  br label %201

187:                                              ; preds = %157
  %188 = landingpad { ptr, i32 }
          cleanup
  %189 = extractvalue { ptr, i32 } %188, 0
  store ptr %189, ptr %6, align 8
  %190 = extractvalue { ptr, i32 } %188, 1
  store i32 %190, ptr %7, align 4
  br label %195

191:                                              ; preds = %177
  %192 = landingpad { ptr, i32 }
          cleanup
  %193 = extractvalue { ptr, i32 } %192, 0
  store ptr %193, ptr %6, align 8
  %194 = extractvalue { ptr, i32 } %192, 1
  store i32 %194, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #6
  br label %195

195:                                              ; preds = %191, %187
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #6
  br label %200

196:                                              ; preds = %181
  %197 = landingpad { ptr, i32 }
          cleanup
  %198 = extractvalue { ptr, i32 } %197, 0
  store ptr %198, ptr %6, align 8
  %199 = extractvalue { ptr, i32 } %197, 1
  store i32 %199, ptr %7, align 4
  call void @_ZN7phantom3plyD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %12) #6
  br label %200

200:                                              ; preds = %196, %195
  call void @llvm.lifetime.end.p0(i64 240, ptr %12) #6
  br label %206

201:                                              ; preds = %184, %152
  %202 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.4)
  %203 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %202, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %204 = load i8, ptr %3, align 1, !tbaa !9, !range !18, !noundef !19
  %205 = trunc i8 %204 to i1
  call void @llvm.lifetime.end.p0(i64 1, ptr %3) #6
  ret i1 %205

206:                                              ; preds = %200, %151, %116, %66
  call void @llvm.lifetime.end.p0(i64 1, ptr %3) #6
  br label %207

207:                                              ; preds = %206
  %208 = load ptr, ptr %6, align 8
  %209 = load i32, ptr %7, align 4
  %210 = insertvalue { ptr, i32 } poison, ptr %208, 0
  %211 = insertvalue { ptr, i32 } %210, i32 %209, 1
  resume { ptr, i32 } %211
}

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #2

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #2

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #0 align 2

declare void @_ZN7phantom8cylinderC1EfmfffffiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(216), float noundef, i64 noundef, float noundef, float noundef, float noundef, float noundef, float noundef, i32 noundef, ptr noundef) unnamed_addr #3

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4 align 2

declare noundef zeroext i1 @_ZN7phantom8cylinder3runEb(ptr noundef nonnull align 8 dereferenceable(216), i1 noundef zeroext) unnamed_addr #3

; Function Attrs: nounwind
declare void @_ZN7phantom8cylinderD1Ev(ptr noundef nonnull align 8 dereferenceable(216)) unnamed_addr #5

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

declare void @_ZN7phantom6sphereC1EfmffffiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(212), float noundef, i64 noundef, float noundef, float noundef, float noundef, float noundef, i32 noundef, ptr noundef) unnamed_addr #3

declare noundef zeroext i1 @_ZN7phantom6sphere3runEb(ptr noundef nonnull align 8 dereferenceable(212), i1 noundef zeroext) unnamed_addr #3

; Function Attrs: nounwind
declare void @_ZN7phantom6sphereD1Ev(ptr noundef nonnull align 8 dereferenceable(212)) unnamed_addr #5

declare void @_ZN7phantom8twopoolsC1EfmNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(160), float noundef, i64 noundef, ptr noundef) unnamed_addr #3

declare noundef zeroext i1 @_ZN7phantom8twopools3runEb(ptr noundef nonnull align 8 dereferenceable(160), i1 noundef zeroext) unnamed_addr #3

; Function Attrs: nounwind
declare void @_ZN7phantom8twopoolsD1Ev(ptr noundef nonnull align 8 dereferenceable(160)) unnamed_addr #5

declare void @_ZN7phantom3plyC1EfmffNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_(ptr noundef nonnull align 8 dereferenceable(240), float noundef, i64 noundef, float noundef, float noundef, ptr noundef, ptr noundef) unnamed_addr #3

declare noundef zeroext i1 @_ZN7phantom3ply3runEb(ptr noundef nonnull align 8 dereferenceable(240), i1 noundef zeroext) unnamed_addr #3

; Function Attrs: nounwind
declare void @_ZN7phantom3plyD1Ev(ptr noundef nonnull align 8 dereferenceable(240)) unnamed_addr #5

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 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress 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 "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nounwind }

!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 = !{!"bool", !7, i64 0}
!11 = !{!12, !10, i64 0}
!12 = !{!"_ZTSN7phantom12execute_argsE", !10, i64 0, !10, i64 1, !10, i64 2, !10, i64 3, !13, i64 4, !13, i64 8, !13, i64 12, !13, i64 16, !14, i64 20, !13, i64 24, !13, i64 28, !14, i64 32, !15, i64 40, !15, i64 72}
!13 = !{!"float", !7, i64 0}
!14 = !{!"int", !7, i64 0}
!15 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !16, i64 0, !17, i64 8, !7, i64 16}
!16 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!17 = !{!"long", !7, i64 0}
!18 = !{i8 0, i8 2}
!19 = !{}
!20 = !{!12, !13, i64 16}
!21 = !{!12, !14, i64 20}
!22 = !{!12, !13, i64 24}
!23 = !{!12, !13, i64 28}
!24 = !{!12, !13, i64 4}
!25 = !{!12, !13, i64 12}
!26 = !{!12, !13, i64 8}
!27 = !{!12, !14, i64 32}
!28 = !{!12, !10, i64 1}
!29 = !{!12, !10, i64 2}
!30 = !{!12, !10, i64 3}


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

%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"class.phantom::cylinder" = type { %"class.phantom::phantom_base", %"class.std::vector.8", %"class.std::vector", float, float }
%"class.phantom::phantom_base" = type { ptr, %"class.std::vector", %"class.std::vector", %"class.std::vector.3", i64, float, float, float, float, %"class.std::__cxx11::basic_string", [3 x float], i8, i64 }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<signed char, std::allocator<signed char>>::_Vector_impl" }
%"struct.std::_Vector_base<signed char, std::allocator<signed char>>::_Vector_impl" = type { %"struct.std::_Vector_base<signed char, std::allocator<signed char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<signed char, std::allocator<signed char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<std::vector<float>, std::allocator<std::vector<float>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<float>, std::allocator<std::vector<float>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<float>, std::allocator<std::vector<float>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<float>, std::allocator<std::vector<float>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.phantom::sphere" = type <{ %"class.phantom::phantom_base", %"class.std::vector.8", %"class.std::vector", float, [4 x i8] }>
%"class.phantom::twopools" = type { %"class.phantom::phantom_base" }
%"class.phantom::ply" = type { %"class.phantom::phantom_base", %"struct.phantom::AABB", %"class.std::__cxx11::basic_string" }
%"struct.phantom::AABB" = type { %"struct.phantom::Vec3", %"struct.phantom::Vec3" }
%"struct.phantom::Vec3" = type { double, double, double }

@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str = external hidden unnamed_addr constant [31 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [6 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN7phantom7handler7executeERKNS_12execute_argsE(ptr noundef nonnull align 8 dereferenceable(104) %0) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.phantom::cylinder", align 8
  %3 = alloca %"class.std::__cxx11::basic_string", align 8
  %4 = alloca %"class.phantom::sphere", align 8
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.phantom::twopools", align 8
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.phantom::ply", align 8
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = load i8, ptr %0, align 8, !tbaa !5, !range !16, !noundef !17
  %12 = trunc nuw i8 %11 to i1
  br i1 %12, label %13, label %43

13:                                               ; preds = %1
  %14 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str)
  %15 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  call void @llvm.lifetime.start.p0(i64 216, ptr nonnull %2) #6
  %16 = getelementptr inbounds i8, ptr %0, i64 16
  %17 = load float, ptr %16, align 8, !tbaa !18
  %18 = getelementptr inbounds i8, ptr %0, i64 20
  %19 = load i32, ptr %18, align 4, !tbaa !19
  %20 = zext i32 %19 to i64
  %21 = getelementptr inbounds i8, ptr %0, i64 24
  %22 = load float, ptr %21, align 8, !tbaa !20
  %23 = getelementptr inbounds i8, ptr %0, i64 28
  %24 = load float, ptr %23, align 4, !tbaa !21
  %25 = getelementptr inbounds i8, ptr %0, i64 4
  %26 = load float, ptr %25, align 4, !tbaa !22
  %27 = getelementptr inbounds i8, ptr %0, i64 12
  %28 = load float, ptr %27, align 4, !tbaa !23
  %29 = getelementptr inbounds i8, ptr %0, i64 8
  %30 = load float, ptr %29, align 8, !tbaa !24
  %31 = getelementptr inbounds i8, ptr %0, i64 32
  %32 = load i32, ptr %31, align 8, !tbaa !25
  %33 = getelementptr inbounds i8, ptr %0, i64 72
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(32) %33)
  invoke void @_ZN7phantom8cylinderC1EfmfffffiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(216) %2, float noundef %17, i64 noundef %20, float noundef %22, float noundef %24, float noundef %26, float noundef %28, float noundef %30, i32 noundef %32, ptr noundef nonnull %3)
          to label %34 unwind label %38

34:                                               ; preds = %13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #6
  %35 = invoke noundef zeroext i1 @_ZN7phantom8cylinder3runEb(ptr noundef nonnull align 8 dereferenceable(216) %2, i1 noundef zeroext true)
          to label %36 unwind label %40

36:                                               ; preds = %34
  %37 = zext i1 %35 to i8
  call void @_ZN7phantom8cylinderD1Ev(ptr noundef nonnull align 8 dereferenceable(216) %2) #6
  call void @llvm.lifetime.end.p0(i64 216, ptr nonnull %2) #6
  br label %43

38:                                               ; preds = %13
  %39 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #6
  br label %42

40:                                               ; preds = %34
  %41 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7phantom8cylinderD1Ev(ptr noundef nonnull align 8 dereferenceable(216) %2) #6
  br label %42

42:                                               ; preds = %40, %38
  %.pn = phi { ptr, i32 } [ %41, %40 ], [ %39, %38 ]
  call void @llvm.lifetime.end.p0(i64 216, ptr nonnull %2) #6
  br label %141

43:                                               ; preds = %36, %1
  %.042 = phi i8 [ %37, %36 ], [ 1, %1 ]
  %44 = getelementptr inbounds i8, ptr %0, i64 1
  %45 = load i8, ptr %44, align 1, !tbaa !26, !range !16, !noundef !17
  %46 = trunc nuw i8 %45 to i1
  br i1 %46, label %47, label %78

47:                                               ; preds = %43
  %48 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.1)
  %49 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  call void @llvm.lifetime.start.p0(i64 216, ptr nonnull %4) #6
  %50 = getelementptr inbounds i8, ptr %0, i64 16
  %51 = load float, ptr %50, align 8, !tbaa !18
  %52 = getelementptr inbounds i8, ptr %0, i64 20
  %53 = load i32, ptr %52, align 4, !tbaa !19
  %54 = zext i32 %53 to i64
  %55 = getelementptr inbounds i8, ptr %0, i64 24
  %56 = load float, ptr %55, align 8, !tbaa !20
  %57 = getelementptr inbounds i8, ptr %0, i64 28
  %58 = load float, ptr %57, align 4, !tbaa !21
  %59 = getelementptr inbounds i8, ptr %0, i64 4
  %60 = load float, ptr %59, align 4, !tbaa !22
  %61 = getelementptr inbounds i8, ptr %0, i64 12
  %62 = load float, ptr %61, align 4, !tbaa !23
  %63 = getelementptr inbounds i8, ptr %0, i64 32
  %64 = load i32, ptr %63, align 8, !tbaa !25
  %65 = getelementptr inbounds i8, ptr %0, i64 72
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %65)
  invoke void @_ZN7phantom6sphereC1EfmffffiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(212) %4, float noundef %51, i64 noundef %54, float noundef %56, float noundef %58, float noundef %60, float noundef %62, i32 noundef %64, ptr noundef nonnull %5)
          to label %66 unwind label %73

66:                                               ; preds = %47
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #6
  %67 = trunc nuw i8 %.042 to i1
  br i1 %67, label %68, label %70

68:                                               ; preds = %66
  %69 = invoke noundef zeroext i1 @_ZN7phantom6sphere3runEb(ptr noundef nonnull align 8 dereferenceable(212) %4, i1 noundef zeroext true)
          to label %70 unwind label %75

70:                                               ; preds = %68, %66
  %71 = phi i1 [ false, %66 ], [ %69, %68 ]
  %72 = zext i1 %71 to i8
  call void @_ZN7phantom6sphereD1Ev(ptr noundef nonnull align 8 dereferenceable(212) %4) #6
  call void @llvm.lifetime.end.p0(i64 216, ptr nonnull %4) #6
  br label %78

73:                                               ; preds = %47
  %74 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #6
  br label %77

75:                                               ; preds = %68
  %76 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7phantom6sphereD1Ev(ptr noundef nonnull align 8 dereferenceable(212) %4) #6
  br label %77

77:                                               ; preds = %75, %73
  %.pn47 = phi { ptr, i32 } [ %76, %75 ], [ %74, %73 ]
  call void @llvm.lifetime.end.p0(i64 216, ptr nonnull %4) #6
  br label %141

78:                                               ; preds = %70, %43
  %.143 = phi i8 [ %72, %70 ], [ %.042, %43 ]
  %79 = getelementptr inbounds i8, ptr %0, i64 2
  %80 = load i8, ptr %79, align 2, !tbaa !27, !range !16, !noundef !17
  %81 = trunc nuw i8 %80 to i1
  br i1 %81, label %82, label %103

82:                                               ; preds = %78
  %83 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.2)
  %84 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %83, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  call void @llvm.lifetime.start.p0(i64 160, ptr nonnull %6) #6
  %85 = getelementptr inbounds i8, ptr %0, i64 16
  %86 = load float, ptr %85, align 8, !tbaa !18
  %87 = getelementptr inbounds i8, ptr %0, i64 20
  %88 = load i32, ptr %87, align 4, !tbaa !19
  %89 = zext i32 %88 to i64
  %90 = getelementptr inbounds i8, ptr %0, i64 72
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(32) %90)
  invoke void @_ZN7phantom8twopoolsC1EfmNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(160) %6, float noundef %86, i64 noundef %89, ptr noundef nonnull %7)
          to label %91 unwind label %98

91:                                               ; preds = %82
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #6
  %92 = trunc nuw i8 %.143 to i1
  br i1 %92, label %93, label %95

93:                                               ; preds = %91
  %94 = invoke noundef zeroext i1 @_ZN7phantom8twopools3runEb(ptr noundef nonnull align 8 dereferenceable(160) %6, i1 noundef zeroext true)
          to label %95 unwind label %100

95:                                               ; preds = %93, %91
  %96 = phi i1 [ false, %91 ], [ %94, %93 ]
  %97 = zext i1 %96 to i8
  call void @_ZN7phantom8twopoolsD1Ev(ptr noundef nonnull align 8 dereferenceable(160) %6) #6
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %6) #6
  br label %103

98:                                               ; preds = %82
  %99 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #6
  br label %102

100:                                              ; preds = %93
  %101 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7phantom8twopoolsD1Ev(ptr noundef nonnull align 8 dereferenceable(160) %6) #6
  br label %102

102:                                              ; preds = %100, %98
  %.pn49 = phi { ptr, i32 } [ %101, %100 ], [ %99, %98 ]
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %6) #6
  br label %141

103:                                              ; preds = %95, %78
  %.244 = phi i8 [ %97, %95 ], [ %.143, %78 ]
  %104 = getelementptr inbounds i8, ptr %0, i64 3
  %105 = load i8, ptr %104, align 1, !tbaa !28, !range !16, !noundef !17
  %106 = trunc nuw i8 %105 to i1
  br i1 %106, label %107, label %137

107:                                              ; preds = %103
  %108 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.3)
  %109 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %108, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  call void @llvm.lifetime.start.p0(i64 240, ptr nonnull %8) #6
  %110 = getelementptr inbounds i8, ptr %0, i64 16
  %111 = load float, ptr %110, align 8, !tbaa !18
  %112 = getelementptr inbounds i8, ptr %0, i64 20
  %113 = load i32, ptr %112, align 4, !tbaa !19
  %114 = getelementptr inbounds i8, ptr %0, i64 24
  %115 = load float, ptr %114, align 8, !tbaa !20
  %116 = getelementptr inbounds i8, ptr %0, i64 28
  %117 = load float, ptr %116, align 4, !tbaa !21
  %118 = getelementptr inbounds i8, ptr %0, i64 40
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(32) %118)
  %119 = getelementptr inbounds i8, ptr %0, i64 72
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(32) %119)
          to label %120 unwind label %129

120:                                              ; preds = %107
  %121 = zext i32 %113 to i64
  invoke void @_ZN7phantom3plyC1EfmffNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_(ptr noundef nonnull align 8 dereferenceable(240) %8, float noundef %111, i64 noundef %121, float noundef %115, float noundef %117, ptr noundef nonnull %9, ptr noundef nonnull %10)
          to label %122 unwind label %131

122:                                              ; preds = %120
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #6
  %123 = trunc nuw i8 %.244 to i1
  br i1 %123, label %124, label %126

124:                                              ; preds = %122
  %125 = invoke noundef zeroext i1 @_ZN7phantom3ply3runEb(ptr noundef nonnull align 8 dereferenceable(240) %8, i1 noundef zeroext true)
          to label %126 unwind label %134

126:                                              ; preds = %124, %122
  %127 = phi i1 [ false, %122 ], [ %125, %124 ]
  %128 = zext i1 %127 to i8
  call void @_ZN7phantom3plyD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %8) #6
  call void @llvm.lifetime.end.p0(i64 240, ptr nonnull %8) #6
  br label %137

129:                                              ; preds = %107
  %130 = landingpad { ptr, i32 }
          cleanup
  br label %133

131:                                              ; preds = %120
  %132 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #6
  br label %133

133:                                              ; preds = %131, %129
  %.pn51 = phi { ptr, i32 } [ %132, %131 ], [ %130, %129 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #6
  br label %136

134:                                              ; preds = %124
  %135 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7phantom3plyD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %8) #6
  br label %136

136:                                              ; preds = %134, %133
  %.pn53 = phi { ptr, i32 } [ %135, %134 ], [ %.pn51, %133 ]
  call void @llvm.lifetime.end.p0(i64 240, ptr nonnull %8) #6
  br label %141

137:                                              ; preds = %126, %103
  %.345 = phi i8 [ %128, %126 ], [ %.244, %103 ]
  %138 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.4)
  %139 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %138, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %140 = trunc nuw i8 %.345 to i1
  ret i1 %140

141:                                              ; preds = %136, %102, %77, %42
  %.pn53.pn = phi { ptr, i32 } [ %.pn53, %136 ], [ %.pn49, %102 ], [ %.pn47, %77 ], [ %.pn, %42 ]
  resume { ptr, i32 } %.pn53.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: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #2

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #0 align 2

declare void @_ZN7phantom8cylinderC1EfmfffffiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(216), float noundef, i64 noundef, float noundef, float noundef, float noundef, float noundef, float noundef, i32 noundef, ptr noundef) unnamed_addr #3

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4 align 2

declare noundef zeroext i1 @_ZN7phantom8cylinder3runEb(ptr noundef nonnull align 8 dereferenceable(216), i1 noundef zeroext) unnamed_addr #3

; Function Attrs: nounwind
declare void @_ZN7phantom8cylinderD1Ev(ptr noundef nonnull align 8 dereferenceable(216)) unnamed_addr #5

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

declare void @_ZN7phantom6sphereC1EfmffffiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(212), float noundef, i64 noundef, float noundef, float noundef, float noundef, float noundef, i32 noundef, ptr noundef) unnamed_addr #3

declare noundef zeroext i1 @_ZN7phantom6sphere3runEb(ptr noundef nonnull align 8 dereferenceable(212), i1 noundef zeroext) unnamed_addr #3

; Function Attrs: nounwind
declare void @_ZN7phantom6sphereD1Ev(ptr noundef nonnull align 8 dereferenceable(212)) unnamed_addr #5

declare void @_ZN7phantom8twopoolsC1EfmNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(160), float noundef, i64 noundef, ptr noundef) unnamed_addr #3

declare noundef zeroext i1 @_ZN7phantom8twopools3runEb(ptr noundef nonnull align 8 dereferenceable(160), i1 noundef zeroext) unnamed_addr #3

; Function Attrs: nounwind
declare void @_ZN7phantom8twopoolsD1Ev(ptr noundef nonnull align 8 dereferenceable(160)) unnamed_addr #5

declare void @_ZN7phantom3plyC1EfmffNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_(ptr noundef nonnull align 8 dereferenceable(240), float noundef, i64 noundef, float noundef, float noundef, ptr noundef, ptr noundef) unnamed_addr #3

declare noundef zeroext i1 @_ZN7phantom3ply3runEb(ptr noundef nonnull align 8 dereferenceable(240), i1 noundef zeroext) unnamed_addr #3

; Function Attrs: nounwind
declare void @_ZN7phantom3plyD1Ev(ptr noundef nonnull align 8 dereferenceable(240)) unnamed_addr #5

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 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress 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 "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nounwind }

!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, !7, i64 0}
!6 = !{!"_ZTSN7phantom12execute_argsE", !7, i64 0, !7, i64 1, !7, i64 2, !7, i64 3, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !11, i64 20, !10, i64 24, !10, i64 28, !11, i64 32, !12, i64 40, !12, i64 72}
!7 = !{!"bool", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"float", !8, i64 0}
!11 = !{!"int", !8, i64 0}
!12 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !13, i64 0, !15, i64 8, !8, i64 16}
!13 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !14, i64 0}
!14 = !{!"any pointer", !8, i64 0}
!15 = !{!"long", !8, i64 0}
!16 = !{i8 0, i8 2}
!17 = !{}
!18 = !{!6, !10, i64 16}
!19 = !{!6, !11, i64 20}
!20 = !{!6, !10, i64 24}
!21 = !{!6, !10, i64 28}
!22 = !{!6, !10, i64 4}
!23 = !{!6, !10, i64 12}
!24 = !{!6, !10, i64 8}
!25 = !{!6, !11, i64 32}
!26 = !{!6, !7, i64 1}
!27 = !{!6, !7, i64 2}
!28 = !{!6, !7, i64 3}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,SROAPass,SimplifyCFGPass,TailCallElimPass