; LLVM IR from ermig1979/Simd :: src/Test/TestDetection.ll (ZN4Test9GetSampleERKN4Simd5PointIlEEb)

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

%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<unsigned long, std::pair<const unsigned long, Simd::View<Simd::Allocator>>, std::_Select1st<std::pair<const unsigned long, Simd::View<Simd::Allocator>>>, std::less<unsigned long>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<unsigned long, std::pair<const unsigned long, Simd::View<Simd::Allocator>>, std::_Select1st<std::pair<const unsigned long, Simd::View<Simd::Allocator>>>, std::less<unsigned long>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.Test::PerformanceMeasurerStorage" = type { %"class.std::map.0", %"class.std::recursive_mutex" }
%"class.std::map.0" = type { %"class.std::_Rb_tree.1" }
%"class.std::_Rb_tree.1" = type { %"struct.std::_Rb_tree<std::thread::id, std::pair<const std::thread::id, Test::PerformanceMeasurerStorage::Thread>, std::_Select1st<std::pair<const std::thread::id, Test::PerformanceMeasurerStorage::Thread>>, std::less<std::thread::id>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::thread::id, std::pair<const std::thread::id, Test::PerformanceMeasurerStorage::Thread>, std::_Select1st<std::pair<const std::thread::id, Test::PerformanceMeasurerStorage::Thread>>, std::less<std::thread::id>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::recursive_mutex" = type { %"class.std::__recursive_mutex_base" }
%"class.std::__recursive_mutex_base" = type { %union.pthread_mutex_t }
%"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.Test::Log" = type { %"class.std::mutex", %"class.std::basic_ofstream", i32, i8, i8, %"class.std::map.10", %"class.std::map.10" }
%"class.std::mutex" = type { %"class.std::__mutex_base" }
%"class.std::__mutex_base" = type { %union.pthread_mutex_t }
%"class.std::basic_ofstream" = type { %"class.std::basic_ostream.base", %"class.std::basic_filebuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::basic_filebuf" = type { %"class.std::basic_streambuf", %union.pthread_mutex_t, %"class.std::__basic_file", i32, %struct.__mbstate_t, %struct.__mbstate_t, %struct.__mbstate_t, ptr, i64, i8, i8, i8, i8, ptr, ptr, i8, ptr, ptr, i64, ptr, ptr }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"class.std::__basic_file" = type <{ ptr, i8, [7 x i8] }>
%struct.__mbstate_t = type { i32, %union.anon.9 }
%union.anon.9 = type { i32 }
%"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::map.10" = type { %"class.std::_Rb_tree.11" }
%"class.std::_Rb_tree.11" = type { %"struct.std::_Rb_tree<std::thread::id, std::pair<const std::thread::id, std::__cxx11::basic_string<char>>, std::_Select1st<std::pair<const std::thread::id, std::__cxx11::basic_string<char>>>, std::less<std::thread::id>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::thread::id, std::pair<const std::thread::id, std::__cxx11::basic_string<char>>, std::_Select1st<std::pair<const std::thread::id, std::__cxx11::basic_string<char>>>, std::less<std::thread::id>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.Simd::View" = type <{ i64, i64, i64, i32, [4 x i8], ptr, i8, [7 x i8] }>
%"class.std::lock_guard" = type { ptr }
%"class.std::__cxx11::basic_stringstream" = type { %"class.std::basic_iostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_iostream.base" = type { %"class.std::basic_istream.base", %"class.std::basic_ostream.base" }
%"class.std::basic_istream.base" = type { ptr, i64 }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.15" = type { i8 }
%"struct.Simd::Point" = type { i64, i64 }

@_ZN4Test7g_mutexE = external dso_local global { %union.pthread_mutex_t }, align 8
@_ZN4Test9g_samplesE = external dso_local global %"class.std::map", align 8
@_ZN4Test26PerformanceMeasurerStorage9s_storageE = external global %"class.Test::PerformanceMeasurerStorage", align 8
@_ZN4Test9ROOT_PATHB5cxx11E = external global %"class.std::__cxx11::basic_string", align 8
@.str = external hidden unnamed_addr constant [26 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [4 x i8], align 1
@_ZN4Test3Log5s_logE = external global %"class.Test::Log", align 8

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4Test9GetSampleERKN4Simd5PointIlEEb(ptr dead_on_unwind noalias writable sret(%"struct.Simd::View") align 8 %0, ptr noundef nonnull align 8 dereferenceable(16) %1, i1 noundef zeroext %2) #0 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i8, align 1
  %7 = alloca %"class.std::lock_guard", align 8
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca i64, align 8
  %12 = alloca i32, align 4
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"struct.Simd::View", align 8
  %15 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca i8, align 1
  %18 = alloca i8, align 1
  %19 = alloca i8, align 1
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca i64, align 8
  %25 = alloca i64, align 8
  %26 = alloca i64, align 8
  %27 = alloca %"struct.Simd::View", align 8
  %28 = alloca %"class.std::vector", align 8
  %29 = alloca i8, align 1
  %30 = alloca %"class.std::allocator.15", align 1
  %31 = alloca i64, align 8
  %32 = alloca i64, align 8
  %33 = alloca %"struct.Simd::View", align 8
  %34 = alloca %"struct.Simd::Point", align 8
  %35 = alloca %"struct.Simd::View", align 8
  %36 = alloca %"struct.Simd::Point", align 8
  %37 = alloca %"struct.Simd::Point", align 8
  %38 = alloca %"struct.Simd::View", align 8
  %39 = alloca %"struct.Simd::Point", align 8
  %40 = alloca %"struct.Simd::Point", align 8
  %41 = alloca %"struct.Simd::Point", align 8
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i64, align 8
  %45 = alloca %"struct.Simd::View", align 8
  %46 = alloca %"struct.Simd::Point", align 8
  store ptr %0, ptr %4, align 8
  store ptr %1, ptr %5, align 8, !tbaa !5
  %47 = zext i1 %2 to i8
  store i8 %47, ptr %6, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #7
  call void @_ZNSt10lock_guardISt15recursive_mutexEC2ERS0_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(40) @_ZN4Test7g_mutexE)
  %48 = load ptr, ptr %5, align 8, !tbaa !5
  %49 = getelementptr inbounds %"struct.Simd::Point", ptr %48, i32 0, i32 0
  %50 = load i64, ptr %49, align 8, !tbaa !11
  %51 = invoke noundef i64 @_ZN4Test26PerformanceMeasurerStorage5AlignEm(ptr noundef nonnull align 8 dereferenceable(88) @_ZN4Test26PerformanceMeasurerStorage9s_storageE, i64 noundef %50)
          to label %52 unwind label %65

52:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #7
  %53 = load ptr, ptr %5, align 8, !tbaa !5
  %54 = getelementptr inbounds %"struct.Simd::Point", ptr %53, i32 0, i32 0
  %55 = load i64, ptr %54, align 8, !tbaa !11
  store i64 %55, ptr %11, align 8, !tbaa !14
  %56 = invoke noundef nonnull align 8 dereferenceable(41) ptr @_ZNSt3mapImN4Simd4ViewINS0_9AllocatorEEESt4lessImESaISt4pairIKmS3_EEEixEOm(ptr noundef nonnull align 8 dereferenceable(48) @_ZN4Test9g_samplesE, ptr noundef nonnull align 8 dereferenceable(8) %11)
          to label %57 unwind label %69

57:                                               ; preds = %52
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  store ptr %56, ptr %10, align 8, !tbaa !5
  %58 = load ptr, ptr %10, align 8, !tbaa !5
  %59 = getelementptr inbounds %"struct.Simd::View", ptr %58, i32 0, i32 3
  %60 = load i32, ptr %59, align 8, !tbaa !15
  %61 = icmp eq i32 %60, 1
  br i1 %61, label %62, label %77

62:                                               ; preds = %57
  %63 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4Simd4ViewINS_9AllocatorEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(41) %0, ptr noundef nonnull align 8 dereferenceable(41) %63)
          to label %64 unwind label %73

64:                                               ; preds = %62
  store i32 1, ptr %12, align 4
  br label %425

65:                                               ; preds = %3
  %66 = landingpad { ptr, i32 }
          cleanup
  %67 = extractvalue { ptr, i32 } %66, 0
  store ptr %67, ptr %8, align 8
  %68 = extractvalue { ptr, i32 } %66, 1
  store i32 %68, ptr %9, align 4
  br label %427

69:                                               ; preds = %52
  %70 = landingpad { ptr, i32 }
          cleanup
  %71 = extractvalue { ptr, i32 } %70, 0
  store ptr %71, ptr %8, align 8
  %72 = extractvalue { ptr, i32 } %70, 1
  store i32 %72, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  br label %426

73:                                               ; preds = %62
  %74 = landingpad { ptr, i32 }
          cleanup
  %75 = extractvalue { ptr, i32 } %74, 0
  store ptr %75, ptr %8, align 8
  %76 = extractvalue { ptr, i32 } %74, 1
  store i32 %76, ptr %9, align 4
  br label %426

77:                                               ; preds = %57
  call void @llvm.lifetime.start.p0(i64 32, ptr %13) #7
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %13, ptr noundef nonnull align 8 dereferenceable(32) @_ZN4Test9ROOT_PATHB5cxx11E, ptr noundef @.str)
          to label %78 unwind label %95

78:                                               ; preds = %77
  call void @llvm.lifetime.start.p0(i64 48, ptr %14) #7
  invoke void @_ZN4Simd4ViewINS_9AllocatorEEC2Ev(ptr noundef nonnull align 8 dereferenceable(41) %14)
          to label %79 unwind label %99

79:                                               ; preds = %78
  %80 = invoke noundef zeroext i1 @_ZN4Simd4ViewINS_9AllocatorEE4LoadERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS2_6FormatE(ptr noundef nonnull align 8 dereferenceable(41) %14, ptr noundef nonnull align 8 dereferenceable(32) %13, i32 noundef 0)
          to label %81 unwind label %103

81:                                               ; preds = %79
  br i1 %80, label %126, label %82

82:                                               ; preds = %81
  call void @llvm.lifetime.start.p0(i64 392, ptr %15) #7
  invoke void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %15)
          to label %83 unwind label %107

83:                                               ; preds = %82
  %84 = getelementptr inbounds i8, ptr %15, i64 16
  %85 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %84, ptr noundef @.str.2)
          to label %86 unwind label %111

86:                                               ; preds = %83
  %87 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %85, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %88 unwind label %111

88:                                               ; preds = %86
  %89 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %87, ptr noundef @.str.3)
          to label %90 unwind label %111

90:                                               ; preds = %88
  call void @llvm.lifetime.start.p0(i64 32, ptr %16) #7
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %16, ptr noundef nonnull align 8 dereferenceable(128) %15)
          to label %91 unwind label %115

91:                                               ; preds = %90
  invoke void @_ZN4Test3Log5WriteENS0_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(656) @_ZN4Test3Log5s_logE, i32 noundef 0, ptr noundef nonnull align 8 dereferenceable(32) %16)
          to label %92 unwind label %119

92:                                               ; preds = %91
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #7
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %15) #7
  call void @llvm.lifetime.end.p0(i64 392, ptr %15) #7
  %93 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4Simd4ViewINS_9AllocatorEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(41) %0, ptr noundef nonnull align 8 dereferenceable(41) %93)
          to label %94 unwind label %103

94:                                               ; preds = %92
  store i32 1, ptr %12, align 4
  br label %421

95:                                               ; preds = %77
  %96 = landingpad { ptr, i32 }
          cleanup
  %97 = extractvalue { ptr, i32 } %96, 0
  store ptr %97, ptr %8, align 8
  %98 = extractvalue { ptr, i32 } %96, 1
  store i32 %98, ptr %9, align 4
  br label %424

99:                                               ; preds = %78
  %100 = landingpad { ptr, i32 }
          cleanup
  %101 = extractvalue { ptr, i32 } %100, 0
  store ptr %101, ptr %8, align 8
  %102 = extractvalue { ptr, i32 } %100, 1
  store i32 %102, ptr %9, align 4
  br label %423

103:                                              ; preds = %138, %126, %92, %79
  %104 = landingpad { ptr, i32 }
          cleanup
  %105 = extractvalue { ptr, i32 } %104, 0
  store ptr %105, ptr %8, align 8
  %106 = extractvalue { ptr, i32 } %104, 1
  store i32 %106, ptr %9, align 4
  br label %422

107:                                              ; preds = %82
  %108 = landingpad { ptr, i32 }
          cleanup
  %109 = extractvalue { ptr, i32 } %108, 0
  store ptr %109, ptr %8, align 8
  %110 = extractvalue { ptr, i32 } %108, 1
  store i32 %110, ptr %9, align 4
  br label %125

111:                                              ; preds = %88, %86, %83
  %112 = landingpad { ptr, i32 }
          cleanup
  %113 = extractvalue { ptr, i32 } %112, 0
  store ptr %113, ptr %8, align 8
  %114 = extractvalue { ptr, i32 } %112, 1
  store i32 %114, ptr %9, align 4
  br label %124

115:                                              ; preds = %90
  %116 = landingpad { ptr, i32 }
          cleanup
  %117 = extractvalue { ptr, i32 } %116, 0
  store ptr %117, ptr %8, align 8
  %118 = extractvalue { ptr, i32 } %116, 1
  store i32 %118, ptr %9, align 4
  br label %123

119:                                              ; preds = %91
  %120 = landingpad { ptr, i32 }
          cleanup
  %121 = extractvalue { ptr, i32 } %120, 0
  store ptr %121, ptr %8, align 8
  %122 = extractvalue { ptr, i32 } %120, 1
  store i32 %122, ptr %9, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  br label %123

123:                                              ; preds = %119, %115
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #7
  br label %124

124:                                              ; preds = %123, %111
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %15) #7
  br label %125

125:                                              ; preds = %124, %107
  call void @llvm.lifetime.end.p0(i64 392, ptr %15) #7
  br label %422

126:                                              ; preds = %81
  %127 = load ptr, ptr %10, align 8, !tbaa !5
  %128 = load ptr, ptr %5, align 8, !tbaa !5
  %129 = getelementptr inbounds %"struct.Simd::Point", ptr %128, i32 0, i32 0
  %130 = load i64, ptr %129, align 8, !tbaa !11
  %131 = load ptr, ptr %5, align 8, !tbaa !5
  %132 = getelementptr inbounds %"struct.Simd::Point", ptr %131, i32 0, i32 1
  %133 = load i64, ptr %132, align 8, !tbaa !18
  %134 = load ptr, ptr %5, align 8, !tbaa !5
  %135 = getelementptr inbounds %"struct.Simd::Point", ptr %134, i32 0, i32 0
  %136 = load i64, ptr %135, align 8, !tbaa !11
  %137 = invoke noundef i64 @_ZN4Test26PerformanceMeasurerStorage5AlignEm(ptr noundef nonnull align 8 dereferenceable(88) @_ZN4Test26PerformanceMeasurerStorage9s_storageE, i64 noundef %136)
          to label %138 unwind label %103

138:                                              ; preds = %126
  invoke void @_ZN4Simd4ViewINS_9AllocatorEE8RecreateEmmNS2_6FormatEPvm(ptr noundef nonnull align 8 dereferenceable(41) %127, i64 noundef %130, i64 noundef %133, i32 noundef 1, ptr noundef null, i64 noundef %137)
          to label %139 unwind label %103

139:                                              ; preds = %138
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #7
  invoke void @_ZN4Simd12GetStatisticINS_9AllocatorEEEvRKNS_4ViewIT_EERhS7_S7_(ptr noundef nonnull align 8 dereferenceable(41) %14, ptr noundef nonnull align 1 dereferenceable(1) %17, ptr noundef nonnull align 1 dereferenceable(1) %18, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %140 unwind label %200

140:                                              ; preds = %139
  %141 = load ptr, ptr %10, align 8, !tbaa !5
  %142 = load i8, ptr %19, align 1, !tbaa !19
  %143 = zext i8 %142 to i32
  %144 = load i8, ptr %17, align 1, !tbaa !19
  %145 = zext i8 %144 to i32
  %146 = add nsw i32 %143, %145
  %147 = sdiv i32 %146, 2
  %148 = trunc i32 %147 to i8
  %149 = load i8, ptr %19, align 1, !tbaa !19
  %150 = zext i8 %149 to i32
  %151 = load i8, ptr %18, align 1, !tbaa !19
  %152 = zext i8 %151 to i32
  %153 = add nsw i32 %150, %152
  %154 = sdiv i32 %153, 2
  %155 = trunc i32 %154 to i8
  invoke void @_ZN4Test10FillRandomERN4Simd4ViewINS0_9AllocatorEEEhh(ptr noundef nonnull align 8 dereferenceable(41) %141, i8 noundef zeroext %148, i8 noundef zeroext %155)
          to label %156 unwind label %200

156:                                              ; preds = %140
  %157 = getelementptr inbounds %"struct.Simd::View", ptr %14, i32 0, i32 0
  %158 = load i64, ptr %157, align 8, !tbaa !20
  %159 = load ptr, ptr %10, align 8, !tbaa !5
  %160 = getelementptr inbounds %"struct.Simd::View", ptr %159, i32 0, i32 0
  %161 = load i64, ptr %160, align 8, !tbaa !20
  %162 = icmp ult i64 %158, %161
  br i1 %162, label %170, label %163

163:                                              ; preds = %156
  %164 = getelementptr inbounds %"struct.Simd::View", ptr %14, i32 0, i32 1
  %165 = load i64, ptr %164, align 8, !tbaa !21
  %166 = load ptr, ptr %10, align 8, !tbaa !5
  %167 = getelementptr inbounds %"struct.Simd::View", ptr %166, i32 0, i32 1
  %168 = load i64, ptr %167, align 8, !tbaa !21
  %169 = icmp ult i64 %165, %168
  br i1 %169, label %170, label %372

170:                                              ; preds = %163, %156
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #7
  %171 = load ptr, ptr %10, align 8, !tbaa !5
  %172 = getelementptr inbounds %"struct.Simd::View", ptr %171, i32 0, i32 1
  %173 = load i64, ptr %172, align 8, !tbaa !21
  %174 = getelementptr inbounds %"struct.Simd::View", ptr %14, i32 0, i32 1
  %175 = load i64, ptr %174, align 8, !tbaa !21
  %176 = udiv i64 %173, %175
  %177 = load i8, ptr %6, align 1, !tbaa !9, !range !22, !noundef !23
  %178 = trunc i8 %177 to i1
  %179 = zext i1 %178 to i64
  %180 = select i1 %178, i32 1, i32 2
  %181 = sext i32 %180 to i64
  %182 = mul i64 %176, %181
  store i64 %182, ptr %20, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #7
  %183 = load ptr, ptr %10, align 8, !tbaa !5
  %184 = getelementptr inbounds %"struct.Simd::View", ptr %183, i32 0, i32 0
  %185 = load i64, ptr %184, align 8, !tbaa !20
  %186 = getelementptr inbounds %"struct.Simd::View", ptr %14, i32 0, i32 0
  %187 = load i64, ptr %186, align 8, !tbaa !20
  %188 = udiv i64 %185, %187
  %189 = load i8, ptr %6, align 1, !tbaa !9, !range !22, !noundef !23
  %190 = trunc i8 %189 to i1
  %191 = zext i1 %190 to i64
  %192 = select i1 %190, i32 1, i32 2
  %193 = sext i32 %192 to i64
  %194 = mul i64 %188, %193
  store i64 %194, ptr %21, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #7
  store i64 0, ptr %22, align 8, !tbaa !14
  br label %195

195:                                              ; preds = %368, %170
  %196 = load i64, ptr %22, align 8, !tbaa !14
  %197 = load i64, ptr %20, align 8, !tbaa !14
  %198 = icmp ult i64 %196, %197
  br i1 %198, label %204, label %199

199:                                              ; preds = %195
  store i32 2, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  br label %371

200:                                              ; preds = %417, %140, %139
  %201 = landingpad { ptr, i32 }
          cleanup
  %202 = extractvalue { ptr, i32 } %201, 0
  store ptr %202, ptr %8, align 8
  %203 = extractvalue { ptr, i32 } %201, 1
  store i32 %203, ptr %9, align 4
  br label %420

204:                                              ; preds = %195
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #7
  %205 = load ptr, ptr %10, align 8, !tbaa !5
  %206 = getelementptr inbounds %"struct.Simd::View", ptr %205, i32 0, i32 1
  %207 = load i64, ptr %206, align 8, !tbaa !21
  %208 = load i64, ptr %22, align 8, !tbaa !14
  %209 = mul i64 %208, 2
  %210 = add i64 %209, 1
  %211 = mul i64 %207, %210
  %212 = load i64, ptr %20, align 8, !tbaa !14
  %213 = mul i64 2, %212
  %214 = udiv i64 %211, %213
  store i64 %214, ptr %23, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #7
  store i64 0, ptr %24, align 8, !tbaa !14
  br label %215

215:                                              ; preds = %326, %204
  %216 = load i64, ptr %24, align 8, !tbaa !14
  %217 = load i64, ptr %21, align 8, !tbaa !14
  %218 = icmp ult i64 %216, %217
  br i1 %218, label %220, label %219

219:                                              ; preds = %215
  store i32 5, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  br label %367

220:                                              ; preds = %215
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #7
  %221 = load ptr, ptr %10, align 8, !tbaa !5
  %222 = getelementptr inbounds %"struct.Simd::View", ptr %221, i32 0, i32 0
  %223 = load i64, ptr %222, align 8, !tbaa !20
  %224 = load i64, ptr %24, align 8, !tbaa !14
  %225 = mul i64 %224, 2
  %226 = add i64 %225, 1
  %227 = mul i64 %223, %226
  %228 = load i64, ptr %21, align 8, !tbaa !14
  %229 = mul i64 2, %228
  %230 = udiv i64 %227, %229
  store i64 %230, ptr %25, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #7
  %231 = getelementptr inbounds %"struct.Simd::View", ptr %14, i32 0, i32 0
  %232 = load i64, ptr %231, align 8, !tbaa !20
  %233 = load i8, ptr %6, align 1, !tbaa !9, !range !22, !noundef !23
  %234 = trunc i8 %233 to i1
  %235 = zext i1 %234 to i64
  %236 = select i1 %234, i32 3, i32 2
  %237 = sext i32 %236 to i64
  %238 = mul i64 %232, %237
  %239 = getelementptr inbounds %"struct.Simd::View", ptr %14, i32 0, i32 0
  %240 = load i64, ptr %239, align 8, !tbaa !20
  %241 = trunc i64 %240 to i32
  %242 = invoke noundef i32 @_ZN4Test6RandomEi(i32 noundef %241)
          to label %243 unwind label %267

243:                                              ; preds = %220
  %244 = load i8, ptr %6, align 1, !tbaa !9, !range !22, !noundef !23
  %245 = trunc i8 %244 to i1
  %246 = zext i1 %245 to i64
  %247 = select i1 %245, i32 7, i32 1
  %248 = mul nsw i32 %242, %247
  %249 = sext i32 %248 to i64
  %250 = add i64 %238, %249
  %251 = udiv i64 %250, 10
  store i64 %251, ptr %26, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 48, ptr %27) #7
  %252 = load i64, ptr %26, align 8, !tbaa !14
  %253 = load i64, ptr %26, align 8, !tbaa !14
  %254 = invoke noundef i64 @_ZN4Simd9AllocatorIhE9AlignmentEv()
          to label %255 unwind label %271

255:                                              ; preds = %243
  invoke void @_ZN4Simd4ViewINS_9AllocatorEEC2EmmNS2_6FormatEPvm(ptr noundef nonnull align 8 dereferenceable(41) %27, i64 noundef %252, i64 noundef %253, i32 noundef 1, ptr noundef null, i64 noundef %254)
          to label %256 unwind label %271

256:                                              ; preds = %255
  invoke void @_ZN4Simd6ResizeINS_9AllocatorEEEvRKNS_4ViewIT_EERS4_20SimdResizeMethodType(ptr noundef nonnull align 8 dereferenceable(41) %14, ptr noundef nonnull align 8 dereferenceable(41) %27, i32 noundef 2)
          to label %257 unwind label %275

257:                                              ; preds = %256
  call void @llvm.lifetime.start.p0(i64 24, ptr %28) #7
  %258 = load i64, ptr %26, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 1, ptr %29) #7
  store i8 -1, ptr %29, align 1, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 1, ptr %30) #7
  call void @_ZNSaIhEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #7
  invoke void @_ZNSt6vectorIhSaIhEEC2EmRKhRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %258, ptr noundef nonnull align 1 dereferenceable(1) %29, ptr noundef nonnull align 1 dereferenceable(1) %30)
          to label %259 unwind label %279

259:                                              ; preds = %257
  call void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #7
  store i64 0, ptr %31, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #7
  %260 = load i64, ptr %26, align 8, !tbaa !14
  %261 = udiv i64 %260, 4
  store i64 %261, ptr %32, align 8, !tbaa !14
  br label %262

262:                                              ; preds = %296, %259
  %263 = load i64, ptr %31, align 8, !tbaa !14
  %264 = load i64, ptr %32, align 8, !tbaa !14
  %265 = icmp ult i64 %263, %264
  br i1 %265, label %283, label %266

266:                                              ; preds = %262
  store i32 8, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  br label %299

267:                                              ; preds = %220
  %268 = landingpad { ptr, i32 }
          cleanup
  %269 = extractvalue { ptr, i32 } %268, 0
  store ptr %269, ptr %8, align 8
  %270 = extractvalue { ptr, i32 } %268, 1
  store i32 %270, ptr %9, align 4
  br label %366

271:                                              ; preds = %255, %243
  %272 = landingpad { ptr, i32 }
          cleanup
  %273 = extractvalue { ptr, i32 } %272, 0
  store ptr %273, ptr %8, align 8
  %274 = extractvalue { ptr, i32 } %272, 1
  store i32 %274, ptr %9, align 4
  br label %365

275:                                              ; preds = %256
  %276 = landingpad { ptr, i32 }
          cleanup
  %277 = extractvalue { ptr, i32 } %276, 0
  store ptr %277, ptr %8, align 8
  %278 = extractvalue { ptr, i32 } %276, 1
  store i32 %278, ptr %9, align 4
  br label %364

279:                                              ; preds = %257
  %280 = landingpad { ptr, i32 }
          cleanup
  %281 = extractvalue { ptr, i32 } %280, 0
  store ptr %281, ptr %8, align 8
  %282 = extractvalue { ptr, i32 } %280, 1
  store i32 %282, ptr %9, align 4
  call void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #7
  br label %363

283:                                              ; preds = %262
  %284 = load i64, ptr %31, align 8, !tbaa !14
  %285 = mul i64 %284, 255
  %286 = load i64, ptr %32, align 8, !tbaa !14
  %287 = udiv i64 %285, %286
  %288 = trunc i64 %287 to i8
  %289 = load i64, ptr %31, align 8, !tbaa !14
  %290 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %289) #7
  store i8 %288, ptr %290, align 1, !tbaa !19
  %291 = load i64, ptr %26, align 8, !tbaa !14
  %292 = load i64, ptr %31, align 8, !tbaa !14
  %293 = sub i64 %291, %292
  %294 = sub i64 %293, 1
  %295 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %294) #7
  store i8 %288, ptr %295, align 1, !tbaa !19
  br label %296

296:                                              ; preds = %283
  %297 = load i64, ptr %31, align 8, !tbaa !14
  %298 = add i64 %297, 1
  store i64 %298, ptr %31, align 8, !tbaa !14
  br label %262, !llvm.loop !24

299:                                              ; preds = %266
  call void @llvm.lifetime.start.p0(i64 48, ptr %33) #7
  %300 = load i64, ptr %26, align 8, !tbaa !14
  %301 = load i64, ptr %26, align 8, !tbaa !14
  %302 = invoke noundef i64 @_ZN4Simd9AllocatorIhE9AlignmentEv()
          to label %303 unwind label %329

303:                                              ; preds = %299
  invoke void @_ZN4Simd4ViewINS_9AllocatorEEC2EmmNS2_6FormatEPvm(ptr noundef nonnull align 8 dereferenceable(41) %33, i64 noundef %300, i64 noundef %301, i32 noundef 1, ptr noundef null, i64 noundef %302)
          to label %304 unwind label %329

304:                                              ; preds = %303
  %305 = call noundef ptr @_ZNSt6vectorIhSaIhEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %28) #7
  %306 = call noundef ptr @_ZNSt6vectorIhSaIhEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %28) #7
  invoke void @_ZN4Simd13VectorProductINS_9AllocatorEEEvPKhS3_RNS_4ViewIT_EE(ptr noundef %305, ptr noundef %306, ptr noundef nonnull align 8 dereferenceable(41) %33)
          to label %307 unwind label %333

307:                                              ; preds = %304
  call void @llvm.lifetime.start.p0(i64 16, ptr %34) #7
  %308 = load i64, ptr %25, align 8, !tbaa !14
  %309 = load i64, ptr %26, align 8, !tbaa !14
  %310 = udiv i64 %309, 2
  %311 = sub i64 %308, %310
  %312 = load i64, ptr %23, align 8, !tbaa !14
  %313 = load i64, ptr %26, align 8, !tbaa !14
  %314 = udiv i64 %313, 2
  %315 = sub i64 %312, %314
  invoke void @_ZN4Simd5PointIlEC2ImmEET_T0_(ptr noundef nonnull align 8 dereferenceable(16) %34, i64 noundef %311, i64 noundef %315)
          to label %316 unwind label %337

316:                                              ; preds = %307
  call void @llvm.lifetime.start.p0(i64 48, ptr %35) #7
  %317 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %36) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %37) #7
  %318 = load i64, ptr %26, align 8, !tbaa !14
  %319 = load i64, ptr %26, align 8, !tbaa !14
  invoke void @_ZN4Simd5PointIlEC2ImmEET_T0_(ptr noundef nonnull align 8 dereferenceable(16) %37, i64 noundef %318, i64 noundef %319)
          to label %320 unwind label %341

320:                                              ; preds = %316
  invoke void @_ZN4SimdplIlEENS_5PointIT_EERKS3_S5_(ptr dead_on_unwind writable sret(%"struct.Simd::Point") align 8 %36, ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef nonnull align 8 dereferenceable(16) %37)
          to label %321 unwind label %345

321:                                              ; preds = %320
  invoke void @_ZNK4Simd4ViewINS_9AllocatorEE6RegionERKNS_5PointIlEES6_(ptr dead_on_unwind writable sret(%"struct.Simd::View") align 8 %35, ptr noundef nonnull align 8 dereferenceable(41) %317, ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef nonnull align 8 dereferenceable(16) %36)
          to label %322 unwind label %349

322:                                              ; preds = %321
  %323 = invoke noundef nonnull align 8 dereferenceable(41) ptr @_ZN4Simd4ViewINS_9AllocatorEE3RefEv(ptr noundef nonnull align 8 dereferenceable(41) %35)
          to label %324 unwind label %353

324:                                              ; preds = %322
  invoke void @_ZN4Simd13AlphaBlendingINS_9AllocatorEEEvRKNS_4ViewIT_EES6_RS4_(ptr noundef nonnull align 8 dereferenceable(41) %27, ptr noundef nonnull align 8 dereferenceable(41) %33, ptr noundef nonnull align 8 dereferenceable(41) %323)
          to label %325 unwind label %353

325:                                              ; preds = %324
  call void @_ZN4Simd4ViewINS_9AllocatorEED2Ev(ptr noundef nonnull align 8 dereferenceable(41) %35) #7
  call void @_ZN4Simd5PointIlED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #7
  call void @_ZN4Simd5PointIlED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %35) #7
  call void @_ZN4Simd5PointIlED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #7
  call void @_ZN4Simd4ViewINS_9AllocatorEED2Ev(ptr noundef nonnull align 8 dereferenceable(41) %33) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %33) #7
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %28) #7
  call void @_ZN4Simd4ViewINS_9AllocatorEED2Ev(ptr noundef nonnull align 8 dereferenceable(41) %27) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  br label %326

326:                                              ; preds = %325
  %327 = load i64, ptr %24, align 8, !tbaa !14
  %328 = add i64 %327, 1
  store i64 %328, ptr %24, align 8, !tbaa !14
  br label %215, !llvm.loop !26

329:                                              ; preds = %303, %299
  %330 = landingpad { ptr, i32 }
          cleanup
  %331 = extractvalue { ptr, i32 } %330, 0
  store ptr %331, ptr %8, align 8
  %332 = extractvalue { ptr, i32 } %330, 1
  store i32 %332, ptr %9, align 4
  br label %362

333:                                              ; preds = %304
  %334 = landingpad { ptr, i32 }
          cleanup
  %335 = extractvalue { ptr, i32 } %334, 0
  store ptr %335, ptr %8, align 8
  %336 = extractvalue { ptr, i32 } %334, 1
  store i32 %336, ptr %9, align 4
  br label %361

337:                                              ; preds = %307
  %338 = landingpad { ptr, i32 }
          cleanup
  %339 = extractvalue { ptr, i32 } %338, 0
  store ptr %339, ptr %8, align 8
  %340 = extractvalue { ptr, i32 } %338, 1
  store i32 %340, ptr %9, align 4
  br label %360

341:                                              ; preds = %316
  %342 = landingpad { ptr, i32 }
          cleanup
  %343 = extractvalue { ptr, i32 } %342, 0
  store ptr %343, ptr %8, align 8
  %344 = extractvalue { ptr, i32 } %342, 1
  store i32 %344, ptr %9, align 4
  br label %359

345:                                              ; preds = %320
  %346 = landingpad { ptr, i32 }
          cleanup
  %347 = extractvalue { ptr, i32 } %346, 0
  store ptr %347, ptr %8, align 8
  %348 = extractvalue { ptr, i32 } %346, 1
  store i32 %348, ptr %9, align 4
  br label %358

349:                                              ; preds = %321
  %350 = landingpad { ptr, i32 }
          cleanup
  %351 = extractvalue { ptr, i32 } %350, 0
  store ptr %351, ptr %8, align 8
  %352 = extractvalue { ptr, i32 } %350, 1
  store i32 %352, ptr %9, align 4
  br label %357

353:                                              ; preds = %324, %322
  %354 = landingpad { ptr, i32 }
          cleanup
  %355 = extractvalue { ptr, i32 } %354, 0
  store ptr %355, ptr %8, align 8
  %356 = extractvalue { ptr, i32 } %354, 1
  store i32 %356, ptr %9, align 4
  call void @_ZN4Simd4ViewINS_9AllocatorEED2Ev(ptr noundef nonnull align 8 dereferenceable(41) %35) #7
  br label %357

357:                                              ; preds = %353, %349
  call void @_ZN4Simd5PointIlED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #7
  br label %358

358:                                              ; preds = %357, %345
  call void @_ZN4Simd5PointIlED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #7
  br label %359

359:                                              ; preds = %358, %341
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %35) #7
  call void @_ZN4Simd5PointIlED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #7
  br label %360

360:                                              ; preds = %359, %337
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #7
  br label %361

361:                                              ; preds = %360, %333
  call void @_ZN4Simd4ViewINS_9AllocatorEED2Ev(ptr noundef nonnull align 8 dereferenceable(41) %33) #7
  br label %362

362:                                              ; preds = %361, %329
  call void @llvm.lifetime.end.p0(i64 48, ptr %33) #7
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #7
  br label %363

363:                                              ; preds = %362, %279
  call void @llvm.lifetime.end.p0(i64 24, ptr %28) #7
  br label %364

364:                                              ; preds = %363, %275
  call void @_ZN4Simd4ViewINS_9AllocatorEED2Ev(ptr noundef nonnull align 8 dereferenceable(41) %27) #7
  br label %365

365:                                              ; preds = %364, %271
  call void @llvm.lifetime.end.p0(i64 48, ptr %27) #7
  br label %366

366:                                              ; preds = %365, %267
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  br label %420

367:                                              ; preds = %219
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  br label %368

368:                                              ; preds = %367
  %369 = load i64, ptr %22, align 8, !tbaa !14
  %370 = add i64 %369, 1
  store i64 %370, ptr %22, align 8, !tbaa !14
  br label %195, !llvm.loop !27

371:                                              ; preds = %199
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  br label %417

372:                                              ; preds = %163
  call void @llvm.lifetime.start.p0(i64 48, ptr %38) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %39) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %40) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %41) #7
  invoke void @_ZNK4Simd4ViewINS_9AllocatorEE4SizeEv(ptr dead_on_unwind writable sret(%"struct.Simd::Point") align 8 %41, ptr noundef nonnull align 8 dereferenceable(41) %14)
          to label %373 unwind label %383

373:                                              ; preds = %372
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #7
  store i32 5, ptr %42, align 4, !tbaa !28
  invoke void @_ZN4SimdmlIliEENS_5PointIT_EERKS3_RKT0_(ptr dead_on_unwind writable sret(%"struct.Simd::Point") align 8 %40, ptr noundef nonnull align 8 dereferenceable(16) %41, ptr noundef nonnull align 4 dereferenceable(4) %42)
          to label %374 unwind label %387

374:                                              ; preds = %373
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #7
  store i32 7, ptr %43, align 4, !tbaa !28
  invoke void @_ZN4SimddvIliEENS_5PointIT_EERKS3_RKT0_(ptr dead_on_unwind writable sret(%"struct.Simd::Point") align 8 %39, ptr noundef nonnull align 8 dereferenceable(16) %40, ptr noundef nonnull align 4 dereferenceable(4) %43)
          to label %375 unwind label %391

375:                                              ; preds = %374
  invoke void @_ZNK4Simd4ViewINS_9AllocatorEE6RegionERKNS_5PointIlEENS2_8PositionE(ptr dead_on_unwind writable sret(%"struct.Simd::View") align 8 %38, ptr noundef nonnull align 8 dereferenceable(41) %14, ptr noundef nonnull align 8 dereferenceable(16) %39, i32 noundef 4)
          to label %376 unwind label %395

376:                                              ; preds = %375
  call void @_ZN4Simd5PointIlED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %39) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #7
  call void @_ZN4Simd5PointIlED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %40) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #7
  call void @_ZN4Simd5PointIlED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %41) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #7
  store i64 64, ptr %44, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 48, ptr %45) #7
  %377 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %46) #7
  %378 = load i64, ptr %44, align 8, !tbaa !14
  %379 = load i64, ptr %44, align 8, !tbaa !14
  invoke void @_ZN4Simd5PointIlEC2ImmEET_T0_(ptr noundef nonnull align 8 dereferenceable(16) %46, i64 noundef %378, i64 noundef %379)
          to label %380 unwind label %402

380:                                              ; preds = %376
  invoke void @_ZNK4Simd4ViewINS_9AllocatorEE6RegionERKNS_5PointIlEENS2_8PositionE(ptr dead_on_unwind writable sret(%"struct.Simd::View") align 8 %45, ptr noundef nonnull align 8 dereferenceable(41) %377, ptr noundef nonnull align 8 dereferenceable(16) %46, i32 noundef 4)
          to label %381 unwind label %406

381:                                              ; preds = %380
  call void @_ZN4Simd5PointIlED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %46) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #7
  invoke void @_ZN4Simd6ResizeINS_9AllocatorEEEvRKNS_4ViewIT_EERS4_20SimdResizeMethodType(ptr noundef nonnull align 8 dereferenceable(41) %38, ptr noundef nonnull align 8 dereferenceable(41) %45, i32 noundef 2)
          to label %382 unwind label %411

382:                                              ; preds = %381
  call void @_ZN4Simd4ViewINS_9AllocatorEED2Ev(ptr noundef nonnull align 8 dereferenceable(41) %45) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  call void @_ZN4Simd4ViewINS_9AllocatorEED2Ev(ptr noundef nonnull align 8 dereferenceable(41) %38) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %38) #7
  br label %417

383:                                              ; preds = %372
  %384 = landingpad { ptr, i32 }
          cleanup
  %385 = extractvalue { ptr, i32 } %384, 0
  store ptr %385, ptr %8, align 8
  %386 = extractvalue { ptr, i32 } %384, 1
  store i32 %386, ptr %9, align 4
  br label %401

387:                                              ; preds = %373
  %388 = landingpad { ptr, i32 }
          cleanup
  %389 = extractvalue { ptr, i32 } %388, 0
  store ptr %389, ptr %8, align 8
  %390 = extractvalue { ptr, i32 } %388, 1
  store i32 %390, ptr %9, align 4
  br label %400

391:                                              ; preds = %374
  %392 = landingpad { ptr, i32 }
          cleanup
  %393 = extractvalue { ptr, i32 } %392, 0
  store ptr %393, ptr %8, align 8
  %394 = extractvalue { ptr, i32 } %392, 1
  store i32 %394, ptr %9, align 4
  br label %399

395:                                              ; preds = %375
  %396 = landingpad { ptr, i32 }
          cleanup
  %397 = extractvalue { ptr, i32 } %396, 0
  store ptr %397, ptr %8, align 8
  %398 = extractvalue { ptr, i32 } %396, 1
  store i32 %398, ptr %9, align 4
  call void @_ZN4Simd5PointIlED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %39) #7
  br label %399

399:                                              ; preds = %395, %391
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #7
  call void @_ZN4Simd5PointIlED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %40) #7
  br label %400

400:                                              ; preds = %399, %387
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #7
  call void @_ZN4Simd5PointIlED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %41) #7
  br label %401

401:                                              ; preds = %400, %383
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #7
  br label %416

402:                                              ; preds = %376
  %403 = landingpad { ptr, i32 }
          cleanup
  %404 = extractvalue { ptr, i32 } %403, 0
  store ptr %404, ptr %8, align 8
  %405 = extractvalue { ptr, i32 } %403, 1
  store i32 %405, ptr %9, align 4
  br label %410

406:                                              ; preds = %380
  %407 = landingpad { ptr, i32 }
          cleanup
  %408 = extractvalue { ptr, i32 } %407, 0
  store ptr %408, ptr %8, align 8
  %409 = extractvalue { ptr, i32 } %407, 1
  store i32 %409, ptr %9, align 4
  call void @_ZN4Simd5PointIlED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %46) #7
  br label %410

410:                                              ; preds = %406, %402
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #7
  br label %415

411:                                              ; preds = %381
  %412 = landingpad { ptr, i32 }
          cleanup
  %413 = extractvalue { ptr, i32 } %412, 0
  store ptr %413, ptr %8, align 8
  %414 = extractvalue { ptr, i32 } %412, 1
  store i32 %414, ptr %9, align 4
  call void @_ZN4Simd4ViewINS_9AllocatorEED2Ev(ptr noundef nonnull align 8 dereferenceable(41) %45) #7
  br label %415

415:                                              ; preds = %411, %410
  call void @llvm.lifetime.end.p0(i64 48, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  call void @_ZN4Simd4ViewINS_9AllocatorEED2Ev(ptr noundef nonnull align 8 dereferenceable(41) %38) #7
  br label %416

416:                                              ; preds = %415, %401
  call void @llvm.lifetime.end.p0(i64 48, ptr %38) #7
  br label %420

417:                                              ; preds = %382, %371
  %418 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4Simd4ViewINS_9AllocatorEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(41) %0, ptr noundef nonnull align 8 dereferenceable(41) %418)
          to label %419 unwind label %200

419:                                              ; preds = %417
  store i32 1, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #7
  br label %421

420:                                              ; preds = %416, %366, %200
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #7
  br label %422

421:                                              ; preds = %419, %94
  call void @_ZN4Simd4ViewINS_9AllocatorEED2Ev(ptr noundef nonnull align 8 dereferenceable(41) %14) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %14) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %13) #7
  br label %425

422:                                              ; preds = %420, %125, %103
  call void @_ZN4Simd4ViewINS_9AllocatorEED2Ev(ptr noundef nonnull align 8 dereferenceable(41) %14) #7
  br label %423

423:                                              ; preds = %422, %99
  call void @llvm.lifetime.end.p0(i64 48, ptr %14) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  br label %424

424:                                              ; preds = %423, %95
  call void @llvm.lifetime.end.p0(i64 32, ptr %13) #7
  br label %426

425:                                              ; preds = %421, %64
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  call void @_ZNSt10lock_guardISt15recursive_mutexED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #7
  ret void

426:                                              ; preds = %424, %73, %69
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  br label %427

427:                                              ; preds = %426, %65
  call void @_ZNSt10lock_guardISt15recursive_mutexED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #7
  br label %428

428:                                              ; preds = %427
  %429 = load ptr, ptr %8, align 8
  %430 = load i32, ptr %9, align 4
  %431 = insertvalue { ptr, i32 } poison, ptr %429, 0
  %432 = insertvalue { ptr, i32 } %431, i32 %430, 1
  resume { ptr, i32 } %432
}

; 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 @_ZNSt10lock_guardISt15recursive_mutexEC2ERS0_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #0 align 2

declare noundef i64 @_ZN4Test26PerformanceMeasurerStorage5AlignEm(ptr noundef nonnull align 8 dereferenceable(88), i64 noundef) #2

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN4Simd4ViewINS_9AllocatorEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(41), ptr noundef nonnull align 8 dereferenceable(41)) unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #4

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN4Simd4ViewINS_9AllocatorEEC2Ev(ptr noundef nonnull align 8 dereferenceable(41)) unnamed_addr #3 align 2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN4Simd4ViewINS_9AllocatorEE4LoadERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS2_6FormatE(ptr noundef nonnull align 8 dereferenceable(41), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) #5 align 2

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

; 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) #4

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) #4

declare void @_ZN4Test3Log5WriteENS0_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(656), i32 noundef, ptr noundef nonnull align 8 dereferenceable(32)) #2

; Function Attrs: mustprogress uwtable
declare void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(128)) #0 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128)) unnamed_addr #6 align 2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZN4Simd4ViewINS_9AllocatorEE8RecreateEmmNS2_6FormatEPvm(ptr noundef nonnull align 8 dereferenceable(41), i64 noundef, i64 noundef, i32 noundef, ptr noundef, i64 noundef) #5 align 2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZN4Simd12GetStatisticINS_9AllocatorEEEvRKNS_4ViewIT_EERhS7_S7_(ptr noundef nonnull align 8 dereferenceable(41), ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) #5

declare void @_ZN4Test10FillRandomERN4Simd4ViewINS0_9AllocatorEEEhh(ptr noundef nonnull align 8 dereferenceable(41), i8 noundef zeroext, i8 noundef zeroext) #2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN4Test6RandomEi(i32 noundef) #3

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef i64 @_ZN4Simd9AllocatorIhE9AlignmentEv() #5 align 2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZN4Simd4ViewINS_9AllocatorEEC2EmmNS2_6FormatEPvm(ptr noundef nonnull align 8 dereferenceable(41), i64 noundef, i64 noundef, i32 noundef, ptr noundef, i64 noundef) unnamed_addr #5 align 2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZN4Simd6ResizeINS_9AllocatorEEEvRKNS_4ViewIT_EERS4_20SimdResizeMethodType(ptr noundef nonnull align 8 dereferenceable(41), ptr noundef nonnull align 8 dereferenceable(41), i32 noundef) #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSaIhEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIhSaIhEEC2EmRKhRKS0_(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #6 align 2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZN4Simd13VectorProductINS_9AllocatorEEEvPKhS3_RNS_4ViewIT_EE(ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(41)) #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNSt6vectorIhSaIhEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24)) #6 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN4Simd5PointIlEC2ImmEET_T0_(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef, i64 noundef) unnamed_addr #3 align 2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZN4Simd13AlphaBlendingINS_9AllocatorEEEvRKNS_4ViewIT_EES6_RS4_(ptr noundef nonnull align 8 dereferenceable(41), ptr noundef nonnull align 8 dereferenceable(41), ptr noundef nonnull align 8 dereferenceable(41)) #5

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZNK4Simd4ViewINS_9AllocatorEE6RegionERKNS_5PointIlEES6_(ptr dead_on_unwind noalias writable sret(%"struct.Simd::View") align 8, ptr noundef nonnull align 8 dereferenceable(41), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) #5 align 2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZN4SimdplIlEENS_5PointIT_EERKS3_S5_(ptr dead_on_unwind noalias writable sret(%"struct.Simd::Point") align 8, ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) #5

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(41) ptr @_ZN4Simd4ViewINS_9AllocatorEE3RefEv(ptr noundef nonnull align 8 dereferenceable(41)) #3 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN4Simd4ViewINS_9AllocatorEED2Ev(ptr noundef nonnull align 8 dereferenceable(41)) unnamed_addr #3 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN4Simd5PointIlED2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #6 align 2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZNK4Simd4ViewINS_9AllocatorEE6RegionERKNS_5PointIlEENS2_8PositionE(ptr dead_on_unwind noalias writable sret(%"struct.Simd::View") align 8, ptr noundef nonnull align 8 dereferenceable(41), ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) #5 align 2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZN4SimddvIliEENS_5PointIT_EERKS3_RKT0_(ptr dead_on_unwind noalias writable sret(%"struct.Simd::Point") align 8, ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(4)) #5

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZN4SimdmlIliEENS_5PointIT_EERKS3_RKT0_(ptr dead_on_unwind noalias writable sret(%"struct.Simd::Point") align 8, ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(4)) #5

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZNK4Simd4ViewINS_9AllocatorEE4SizeEv(ptr dead_on_unwind noalias writable sret(%"struct.Simd::Point") align 8, ptr noundef nonnull align 8 dereferenceable(41)) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt10lock_guardISt15recursive_mutexED2Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #6 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 = { "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 = { alwaysinline 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 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 = { alwaysinline 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 #6 = { 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 #7 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"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, !13, i64 0}
!12 = !{!"_ZTSN4Simd5PointIlEE", !13, i64 0, !13, i64 8}
!13 = !{!"long", !7, i64 0}
!14 = !{!13, !13, i64 0}
!15 = !{!16, !17, i64 24}
!16 = !{!"_ZTSN4Simd4ViewINS_9AllocatorEEE", !13, i64 0, !13, i64 8, !13, i64 16, !17, i64 24, !6, i64 32, !10, i64 40}
!17 = !{!"_ZTSN4Simd4ViewINS_9AllocatorEE6FormatE", !7, i64 0}
!18 = !{!12, !13, i64 8}
!19 = !{!7, !7, i64 0}
!20 = !{!16, !13, i64 0}
!21 = !{!16, !13, i64 8}
!22 = !{i8 0, i8 2}
!23 = !{}
!24 = distinct !{!24, !25}
!25 = !{!"llvm.loop.mustprogress"}
!26 = distinct !{!26, !25}
!27 = distinct !{!27, !25}
!28 = !{!29, !29, i64 0}
!29 = !{!"int", !7, i64 0}


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

%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<unsigned long, std::pair<const unsigned long, Simd::View<Simd::Allocator>>, std::_Select1st<std::pair<const unsigned long, Simd::View<Simd::Allocator>>>, std::less<unsigned long>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<unsigned long, std::pair<const unsigned long, Simd::View<Simd::Allocator>>, std::_Select1st<std::pair<const unsigned long, Simd::View<Simd::Allocator>>>, std::less<unsigned long>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.Test::PerformanceMeasurerStorage" = type { %"class.std::map.0", %"class.std::recursive_mutex" }
%"class.std::map.0" = type { %"class.std::_Rb_tree.1" }
%"class.std::_Rb_tree.1" = type { %"struct.std::_Rb_tree<std::thread::id, std::pair<const std::thread::id, Test::PerformanceMeasurerStorage::Thread>, std::_Select1st<std::pair<const std::thread::id, Test::PerformanceMeasurerStorage::Thread>>, std::less<std::thread::id>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::thread::id, std::pair<const std::thread::id, Test::PerformanceMeasurerStorage::Thread>, std::_Select1st<std::pair<const std::thread::id, Test::PerformanceMeasurerStorage::Thread>>, std::less<std::thread::id>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::recursive_mutex" = type { %"class.std::__recursive_mutex_base" }
%"class.std::__recursive_mutex_base" = type { %union.pthread_mutex_t }
%"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.Test::Log" = type { %"class.std::mutex", %"class.std::basic_ofstream", i32, i8, i8, %"class.std::map.10", %"class.std::map.10" }
%"class.std::mutex" = type { %"class.std::__mutex_base" }
%"class.std::__mutex_base" = type { %union.pthread_mutex_t }
%"class.std::basic_ofstream" = type { %"class.std::basic_ostream.base", %"class.std::basic_filebuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::basic_filebuf" = type { %"class.std::basic_streambuf", %union.pthread_mutex_t, %"class.std::__basic_file", i32, %struct.__mbstate_t, %struct.__mbstate_t, %struct.__mbstate_t, ptr, i64, i8, i8, i8, i8, ptr, ptr, i8, ptr, ptr, i64, ptr, ptr }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"class.std::__basic_file" = type <{ ptr, i8, [7 x i8] }>
%struct.__mbstate_t = type { i32, %union.anon.9 }
%union.anon.9 = type { i32 }
%"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::map.10" = type { %"class.std::_Rb_tree.11" }
%"class.std::_Rb_tree.11" = type { %"struct.std::_Rb_tree<std::thread::id, std::pair<const std::thread::id, std::__cxx11::basic_string<char>>, std::_Select1st<std::pair<const std::thread::id, std::__cxx11::basic_string<char>>>, std::less<std::thread::id>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::thread::id, std::pair<const std::thread::id, std::__cxx11::basic_string<char>>, std::_Select1st<std::pair<const std::thread::id, std::__cxx11::basic_string<char>>>, std::less<std::thread::id>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.Simd::View" = type <{ i64, i64, i64, i32, [4 x i8], ptr, i8, [7 x i8] }>
%"class.std::lock_guard" = type { ptr }
%"class.std::__cxx11::basic_stringstream" = type { %"class.std::basic_iostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_iostream.base" = type { %"class.std::basic_istream.base", %"class.std::basic_ostream.base" }
%"class.std::basic_istream.base" = type { ptr, i64 }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.15" = type { i8 }
%"struct.Simd::Point" = type { i64, i64 }

@_ZN4Test7g_mutexE = external dso_local global { %union.pthread_mutex_t }, align 8
@_ZN4Test9g_samplesE = external dso_local global %"class.std::map", align 8
@_ZN4Test26PerformanceMeasurerStorage9s_storageE = external global %"class.Test::PerformanceMeasurerStorage", align 8
@_ZN4Test9ROOT_PATHB5cxx11E = external global %"class.std::__cxx11::basic_string", align 8
@.str = external hidden unnamed_addr constant [26 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [4 x i8], align 1
@_ZN4Test3Log5s_logE = external global %"class.Test::Log", align 8

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4Test9GetSampleERKN4Simd5PointIlEEb(ptr dead_on_unwind noalias writable sret(%"struct.Simd::View") align 8 %0, ptr nocapture noundef nonnull readonly align 8 dereferenceable(16) %1, i1 noundef zeroext %2) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"class.std::lock_guard", align 8
  %5 = alloca i64, align 8
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"struct.Simd::View", align 8
  %8 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca i8, align 1
  %11 = alloca i8, align 1
  %12 = alloca i8, align 1
  %13 = alloca %"struct.Simd::View", align 8
  %14 = alloca %"class.std::vector", align 8
  %15 = alloca i8, align 1
  %16 = alloca %"class.std::allocator.15", align 1
  %17 = alloca %"struct.Simd::View", align 8
  %18 = alloca %"struct.Simd::Point", align 8
  %19 = alloca %"struct.Simd::View", align 8
  %20 = alloca %"struct.Simd::Point", align 8
  %21 = alloca %"struct.Simd::Point", align 8
  %22 = alloca %"struct.Simd::View", align 8
  %23 = alloca %"struct.Simd::Point", align 8
  %24 = alloca %"struct.Simd::Point", align 8
  %25 = alloca %"struct.Simd::Point", align 8
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca %"struct.Simd::View", align 8
  %29 = alloca %"struct.Simd::Point", align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #8
  call void @_ZNSt10lock_guardISt15recursive_mutexEC2ERS0_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(40) @_ZN4Test7g_mutexE)
  %30 = load i64, ptr %1, align 8, !tbaa !5
  %31 = invoke noundef i64 @_ZN4Test26PerformanceMeasurerStorage5AlignEm(ptr noundef nonnull align 8 dereferenceable(88) @_ZN4Test26PerformanceMeasurerStorage9s_storageE, i64 noundef %30)
          to label %32 unwind label %40

32:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #8
  %33 = load i64, ptr %1, align 8, !tbaa !5
  store i64 %33, ptr %5, align 8, !tbaa !10
  %34 = invoke noundef nonnull align 8 dereferenceable(41) ptr @_ZNSt3mapImN4Simd4ViewINS0_9AllocatorEEESt4lessImESaISt4pairIKmS3_EEEixEOm(ptr noundef nonnull align 8 dereferenceable(48) @_ZN4Test9g_samplesE, ptr noundef nonnull align 8 dereferenceable(8) %5)
          to label %35 unwind label %42

35:                                               ; preds = %32
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #8
  %36 = getelementptr inbounds i8, ptr %34, i64 24
  %37 = load i32, ptr %36, align 8, !tbaa !11
  %38 = icmp eq i32 %37, 1
  br i1 %38, label %39, label %44

39:                                               ; preds = %35
  call void @_ZN4Simd4ViewINS_9AllocatorEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(41) %0, ptr noundef nonnull align 8 dereferenceable(41) %34)
  br label %210

40:                                               ; preds = %3
  %41 = landingpad { ptr, i32 }
          cleanup
  br label %211

42:                                               ; preds = %32
  %43 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #8
  br label %211

44:                                               ; preds = %35
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #8
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %6, ptr noundef nonnull align 8 dereferenceable(32) @_ZN4Test9ROOT_PATHB5cxx11E, ptr noundef nonnull @.str)
          to label %45 unwind label %59

45:                                               ; preds = %44
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %7) #8
  call void @_ZN4Simd4ViewINS_9AllocatorEEC2Ev(ptr noundef nonnull align 8 dereferenceable(41) %7)
  %46 = invoke noundef zeroext i1 @_ZN4Simd4ViewINS_9AllocatorEE4LoadERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS2_6FormatE(ptr noundef nonnull align 8 dereferenceable(41) %7, ptr noundef nonnull align 8 dereferenceable(32) %6, i32 noundef 0)
          to label %47 unwind label %61

47:                                               ; preds = %45
  br i1 %46, label %74, label %48

48:                                               ; preds = %47
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %8) #8
  invoke void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %8)
          to label %49 unwind label %63

49:                                               ; preds = %48
  %50 = getelementptr inbounds i8, ptr %8, i64 16
  %51 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %50, ptr noundef nonnull @.str.2)
          to label %52 unwind label %65

52:                                               ; preds = %49
  %53 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %54 unwind label %65

54:                                               ; preds = %52
  %55 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %53, ptr noundef nonnull @.str.3)
          to label %56 unwind label %65

56:                                               ; preds = %54
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %9, ptr noundef nonnull align 8 dereferenceable(128) %8)
          to label %57 unwind label %67

57:                                               ; preds = %56
  invoke void @_ZN4Test3Log5WriteENS0_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(656) @_ZN4Test3Log5s_logE, i32 noundef 0, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %58 unwind label %69

58:                                               ; preds = %57
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %8) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %8) #8
  call void @_ZN4Simd4ViewINS_9AllocatorEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(41) %0, ptr noundef nonnull align 8 dereferenceable(41) %34)
  br label %207

59:                                               ; preds = %44
  %60 = landingpad { ptr, i32 }
          cleanup
  br label %209

61:                                               ; preds = %79, %74, %45
  %62 = landingpad { ptr, i32 }
          cleanup
  br label %208

63:                                               ; preds = %48
  %64 = landingpad { ptr, i32 }
          cleanup
  br label %73

65:                                               ; preds = %54, %52, %49
  %66 = landingpad { ptr, i32 }
          cleanup
  br label %72

67:                                               ; preds = %56
  %68 = landingpad { ptr, i32 }
          cleanup
  br label %71

69:                                               ; preds = %57
  %70 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #8
  br label %71

71:                                               ; preds = %69, %67
  %.pn = phi { ptr, i32 } [ %70, %69 ], [ %68, %67 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #8
  br label %72

72:                                               ; preds = %71, %65
  %.pn.pn = phi { ptr, i32 } [ %.pn, %71 ], [ %66, %65 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %8) #8
  br label %73

73:                                               ; preds = %72, %63
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %72 ], [ %64, %63 ]
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %8) #8
  br label %208

74:                                               ; preds = %47
  %75 = load i64, ptr %1, align 8, !tbaa !5
  %76 = getelementptr inbounds i8, ptr %1, i64 8
  %77 = load i64, ptr %76, align 8, !tbaa !16
  %78 = invoke noundef i64 @_ZN4Test26PerformanceMeasurerStorage5AlignEm(ptr noundef nonnull align 8 dereferenceable(88) @_ZN4Test26PerformanceMeasurerStorage9s_storageE, i64 noundef %75)
          to label %79 unwind label %61

79:                                               ; preds = %74
  invoke void @_ZN4Simd4ViewINS_9AllocatorEE8RecreateEmmNS2_6FormatEPvm(ptr noundef nonnull align 8 dereferenceable(41) %34, i64 noundef %75, i64 noundef %77, i32 noundef 1, ptr noundef null, i64 noundef %78)
          to label %80 unwind label %61

80:                                               ; preds = %79
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #8
  invoke void @_ZN4Simd12GetStatisticINS_9AllocatorEEEvRKNS_4ViewIT_EERhS7_S7_(ptr noundef nonnull align 8 dereferenceable(41) %7, ptr noundef nonnull align 1 dereferenceable(1) %10, ptr noundef nonnull align 1 dereferenceable(1) %11, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %81 unwind label %173

81:                                               ; preds = %80
  %82 = load i8, ptr %12, align 1, !tbaa !17
  %83 = zext i8 %82 to i32
  %84 = load i8, ptr %10, align 1, !tbaa !17
  %85 = zext i8 %84 to i32
  %86 = add nuw nsw i32 %85, %83
  %87 = lshr i32 %86, 1
  %88 = trunc nuw i32 %87 to i8
  %89 = load i8, ptr %11, align 1, !tbaa !17
  %90 = zext i8 %89 to i32
  %91 = add nuw nsw i32 %90, %83
  %92 = lshr i32 %91, 1
  %93 = trunc nuw i32 %92 to i8
  invoke void @_ZN4Test10FillRandomERN4Simd4ViewINS0_9AllocatorEEEhh(ptr noundef nonnull align 8 dereferenceable(41) %34, i8 noundef zeroext %88, i8 noundef zeroext %93)
          to label %94 unwind label %173

94:                                               ; preds = %81
  %95 = load i64, ptr %7, align 8, !tbaa !18
  %96 = load i64, ptr %34, align 8, !tbaa !18
  %97 = icmp ult i64 %95, %96
  br i1 %97, label %._crit_edge, label %98

._crit_edge:                                      ; preds = %94
  %.phi.trans.insert = getelementptr inbounds i8, ptr %34, i64 8
  %.pre = load i64, ptr %.phi.trans.insert, align 8, !tbaa !19
  %.phi.trans.insert140 = getelementptr inbounds i8, ptr %7, i64 8
  %.pre141 = load i64, ptr %.phi.trans.insert140, align 8, !tbaa !19
  br label %104

98:                                               ; preds = %94
  %99 = getelementptr inbounds i8, ptr %7, i64 8
  %100 = load i64, ptr %99, align 8, !tbaa !19
  %101 = getelementptr inbounds i8, ptr %34, i64 8
  %102 = load i64, ptr %101, align 8, !tbaa !19
  %103 = icmp ult i64 %100, %102
  br i1 %103, label %104, label %182

104:                                              ; preds = %._crit_edge, %98
  %105 = phi i64 [ %.pre141, %._crit_edge ], [ %100, %98 ]
  %106 = phi i64 [ %.pre, %._crit_edge ], [ %102, %98 ]
  %107 = getelementptr inbounds i8, ptr %34, i64 8
  %108 = udiv i64 %106, %105
  %not. = xor i1 %2, true
  %109 = zext i1 %not. to i64
  %110 = shl i64 %108, %109
  %111 = udiv i64 %96, %95
  %112 = shl i64 %111, %109
  %.not = icmp eq i64 %110, 0
  br i1 %.not, label %.loopexit, label %.lr.ph113

.lr.ph113:                                        ; preds = %104
  %113 = shl i64 %110, 1
  %.not135 = icmp eq i64 %112, 0
  %114 = shl i64 %112, 1
  %115 = select i1 %2, i64 3, i64 2
  %116 = select i1 %2, i32 7, i32 1
  br i1 %.not135, label %.loopexit, label %.lr.ph109.us

.lr.ph109.us:                                     ; preds = %.lr.ph113, %._crit_edge110.us
  %.077111.us = phi i64 [ %164, %._crit_edge110.us ], [ 0, %.lr.ph113 ]
  %117 = load i64, ptr %107, align 8, !tbaa !19
  %118 = shl i64 %.077111.us, 1
  %119 = or disjoint i64 %118, 1
  %120 = mul i64 %117, %119
  %121 = udiv i64 %120, %113
  br label %122

122:                                              ; preds = %.lr.ph109.us, %154
  %.078107.us = phi i64 [ 0, %.lr.ph109.us ], [ %155, %154 ]
  %123 = load i64, ptr %34, align 8, !tbaa !18
  %124 = shl i64 %.078107.us, 1
  %125 = or disjoint i64 %124, 1
  %126 = mul i64 %123, %125
  %127 = udiv i64 %126, %114
  %128 = load i64, ptr %7, align 8, !tbaa !18
  %129 = mul i64 %128, %115
  %130 = trunc i64 %128 to i32
  %131 = call noundef i32 @_ZN4Test6RandomEi(i32 noundef %130)
  %132 = mul i32 %131, %116
  %133 = sext i32 %132 to i64
  %134 = add i64 %129, %133
  %135 = udiv i64 %134, 10
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %13) #8
  %136 = invoke noundef i64 @_ZN4Simd9AllocatorIhE9AlignmentEv()
          to label %137 unwind label %.split.us

137:                                              ; preds = %122
  invoke void @_ZN4Simd4ViewINS_9AllocatorEEC2EmmNS2_6FormatEPvm(ptr noundef nonnull align 8 dereferenceable(41) %13, i64 noundef %135, i64 noundef %135, i32 noundef 1, ptr noundef null, i64 noundef %136)
          to label %138 unwind label %.split.us

138:                                              ; preds = %137
  invoke void @_ZN4Simd6ResizeINS_9AllocatorEEEvRKNS_4ViewIT_EERS4_20SimdResizeMethodType(ptr noundef nonnull align 8 dereferenceable(41) %7, ptr noundef nonnull align 8 dereferenceable(41) %13, i32 noundef 2)
          to label %139 unwind label %.split115.us

139:                                              ; preds = %138
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %15) #8
  store i8 -1, ptr %15, align 1, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %16) #8
  call void @_ZNSaIhEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #8
  invoke void @_ZNSt6vectorIhSaIhEEC2EmRKhRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %135, ptr noundef nonnull align 1 dereferenceable(1) %15, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %140 unwind label %.split118.us

140:                                              ; preds = %139
  call void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #8
  %141 = udiv i64 %134, 40
  %.not136 = icmp ult i64 %134, 40
  br i1 %.not136, label %._crit_edge.us, label %.lr.ph.us.preheader

.lr.ph.us.preheader:                              ; preds = %140
  %umax = call i64 @llvm.umax.i64(i64 %141, i64 1)
  br label %.lr.ph.us

._crit_edge.us:                                   ; preds = %.lr.ph.us, %140
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %17) #8
  %142 = invoke noundef i64 @_ZN4Simd9AllocatorIhE9AlignmentEv()
          to label %143 unwind label %.split121.us

143:                                              ; preds = %._crit_edge.us
  invoke void @_ZN4Simd4ViewINS_9AllocatorEEC2EmmNS2_6FormatEPvm(ptr noundef nonnull align 8 dereferenceable(41) %17, i64 noundef %135, i64 noundef %135, i32 noundef 1, ptr noundef null, i64 noundef %142)
          to label %144 unwind label %.split121.us

144:                                              ; preds = %143
  %145 = call noundef ptr @_ZNSt6vectorIhSaIhEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #8
  %146 = call noundef ptr @_ZNSt6vectorIhSaIhEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #8
  invoke void @_ZN4Simd13VectorProductINS_9AllocatorEEEvPKhS3_RNS_4ViewIT_EE(ptr noundef %145, ptr noundef %146, ptr noundef nonnull align 8 dereferenceable(41) %17)
          to label %147 unwind label %.split124.us

147:                                              ; preds = %144
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %18) #8
  %148 = udiv i64 %134, 20
  %149 = sub i64 %127, %148
  %150 = sub i64 %121, %148
  call void @_ZN4Simd5PointIlEC2ImmEET_T0_(ptr noundef nonnull align 8 dereferenceable(16) %18, i64 noundef %149, i64 noundef %150)
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %19) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #8
  call void @_ZN4Simd5PointIlEC2ImmEET_T0_(ptr noundef nonnull align 8 dereferenceable(16) %21, i64 noundef %135, i64 noundef %135)
  invoke void @_ZN4SimdplIlEENS_5PointIT_EERKS3_S5_(ptr dead_on_unwind nonnull writable sret(%"struct.Simd::Point") align 8 %20, ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef nonnull align 8 dereferenceable(16) %21)
          to label %151 unwind label %.split127.us

151:                                              ; preds = %147
  invoke void @_ZNK4Simd4ViewINS_9AllocatorEE6RegionERKNS_5PointIlEES6_(ptr dead_on_unwind nonnull writable sret(%"struct.Simd::View") align 8 %19, ptr noundef nonnull align 8 dereferenceable(41) %34, ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef nonnull align 8 dereferenceable(16) %20)
          to label %152 unwind label %.split130.us

152:                                              ; preds = %151
  %153 = call noundef nonnull align 8 dereferenceable(41) ptr @_ZN4Simd4ViewINS_9AllocatorEE3RefEv(ptr noundef nonnull align 8 dereferenceable(41) %19)
  invoke void @_ZN4Simd13AlphaBlendingINS_9AllocatorEEEvRKNS_4ViewIT_EES6_RS4_(ptr noundef nonnull align 8 dereferenceable(41) %13, ptr noundef nonnull align 8 dereferenceable(41) %17, ptr noundef nonnull align 8 dereferenceable(41) %153)
          to label %154 unwind label %.split133.us

154:                                              ; preds = %152
  call void @_ZN4Simd4ViewINS_9AllocatorEED2Ev(ptr noundef nonnull align 8 dereferenceable(41) %19) #8
  call void @_ZN4Simd5PointIlED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #8
  call void @_ZN4Simd5PointIlED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %19) #8
  call void @_ZN4Simd5PointIlED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #8
  call void @_ZN4Simd4ViewINS_9AllocatorEED2Ev(ptr noundef nonnull align 8 dereferenceable(41) %17) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %17) #8
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #8
  call void @_ZN4Simd4ViewINS_9AllocatorEED2Ev(ptr noundef nonnull align 8 dereferenceable(41) %13) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %13) #8
  %155 = add nuw i64 %.078107.us, 1
  %exitcond138.not = icmp eq i64 %155, %112
  br i1 %exitcond138.not, label %._crit_edge110.us, label %122, !llvm.loop !20

.lr.ph.us:                                        ; preds = %.lr.ph.us.preheader, %.lr.ph.us
  %.076106.us = phi i64 [ %163, %.lr.ph.us ], [ 0, %.lr.ph.us.preheader ]
  %156 = mul i64 %.076106.us, 255
  %157 = udiv i64 %156, %141
  %158 = trunc i64 %157 to i8
  %159 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %.076106.us) #8
  store i8 %158, ptr %159, align 1, !tbaa !17
  %160 = xor i64 %.076106.us, -1
  %161 = add nsw i64 %135, %160
  %162 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %161) #8
  store i8 %158, ptr %162, align 1, !tbaa !17
  %163 = add nuw nsw i64 %.076106.us, 1
  %exitcond.not = icmp eq i64 %163, %umax
  br i1 %exitcond.not, label %._crit_edge.us, label %.lr.ph.us, !llvm.loop !22

._crit_edge110.us:                                ; preds = %154
  %164 = add nuw i64 %.077111.us, 1
  %exitcond139.not = icmp eq i64 %164, %110
  br i1 %exitcond139.not, label %.loopexit, label %.lr.ph109.us, !llvm.loop !23

.split.us:                                        ; preds = %137, %122
  %165 = landingpad { ptr, i32 }
          cleanup
  br label %181

.split115.us:                                     ; preds = %138
  %166 = landingpad { ptr, i32 }
          cleanup
  br label %180

.split118.us:                                     ; preds = %139
  %167 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #8
  br label %179

.split121.us:                                     ; preds = %143, %._crit_edge.us
  %168 = landingpad { ptr, i32 }
          cleanup
  br label %178

.split124.us:                                     ; preds = %144
  %169 = landingpad { ptr, i32 }
          cleanup
  br label %177

.split127.us:                                     ; preds = %147
  %170 = landingpad { ptr, i32 }
          cleanup
  br label %176

.split130.us:                                     ; preds = %151
  %171 = landingpad { ptr, i32 }
          cleanup
  br label %175

.split133.us:                                     ; preds = %152
  %172 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4Simd4ViewINS_9AllocatorEED2Ev(ptr noundef nonnull align 8 dereferenceable(41) %19) #8
  br label %175

173:                                              ; preds = %81, %80
  %174 = landingpad { ptr, i32 }
          cleanup
  br label %206

175:                                              ; preds = %.split133.us, %.split130.us
  %.pn93 = phi { ptr, i32 } [ %172, %.split133.us ], [ %171, %.split130.us ]
  call void @_ZN4Simd5PointIlED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #8
  br label %176

176:                                              ; preds = %175, %.split127.us
  %.pn93.pn = phi { ptr, i32 } [ %.pn93, %175 ], [ %170, %.split127.us ]
  call void @_ZN4Simd5PointIlED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %19) #8
  call void @_ZN4Simd5PointIlED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #8
  br label %177

177:                                              ; preds = %176, %.split124.us
  %.pn93.pn.pn = phi { ptr, i32 } [ %.pn93.pn, %176 ], [ %169, %.split124.us ]
  call void @_ZN4Simd4ViewINS_9AllocatorEED2Ev(ptr noundef nonnull align 8 dereferenceable(41) %17) #8
  br label %178

178:                                              ; preds = %177, %.split121.us
  %.pn93.pn.pn.pn = phi { ptr, i32 } [ %.pn93.pn.pn, %177 ], [ %168, %.split121.us ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %17) #8
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #8
  br label %179

179:                                              ; preds = %178, %.split118.us
  %.pn93.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn93.pn.pn.pn, %178 ], [ %167, %.split118.us ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #8
  br label %180

180:                                              ; preds = %179, %.split115.us
  %.pn93.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn93.pn.pn.pn.pn, %179 ], [ %166, %.split115.us ]
  call void @_ZN4Simd4ViewINS_9AllocatorEED2Ev(ptr noundef nonnull align 8 dereferenceable(41) %13) #8
  br label %181

181:                                              ; preds = %180, %.split.us
  %.pn93.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn93.pn.pn.pn.pn.pn, %180 ], [ %165, %.split.us ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %13) #8
  br label %206

182:                                              ; preds = %98
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %22) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %23) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %24) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #8
  invoke void @_ZNK4Simd4ViewINS_9AllocatorEE4SizeEv(ptr dead_on_unwind nonnull writable sret(%"struct.Simd::Point") align 8 %25, ptr noundef nonnull align 8 dereferenceable(41) %7)
          to label %183 unwind label %189

183:                                              ; preds = %182
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #8
  store i32 5, ptr %26, align 4, !tbaa !24
  invoke void @_ZN4SimdmlIliEENS_5PointIT_EERKS3_RKT0_(ptr dead_on_unwind nonnull writable sret(%"struct.Simd::Point") align 8 %24, ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef nonnull align 4 dereferenceable(4) %26)
          to label %184 unwind label %191

184:                                              ; preds = %183
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #8
  store i32 7, ptr %27, align 4, !tbaa !24
  invoke void @_ZN4SimddvIliEENS_5PointIT_EERKS3_RKT0_(ptr dead_on_unwind nonnull writable sret(%"struct.Simd::Point") align 8 %23, ptr noundef nonnull align 8 dereferenceable(16) %24, ptr noundef nonnull align 4 dereferenceable(4) %27)
          to label %185 unwind label %193

185:                                              ; preds = %184
  invoke void @_ZNK4Simd4ViewINS_9AllocatorEE6RegionERKNS_5PointIlEENS2_8PositionE(ptr dead_on_unwind nonnull writable sret(%"struct.Simd::View") align 8 %22, ptr noundef nonnull align 8 dereferenceable(41) %7, ptr noundef nonnull align 8 dereferenceable(16) %23, i32 noundef 4)
          to label %186 unwind label %195

186:                                              ; preds = %185
  call void @_ZN4Simd5PointIlED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #8
  call void @_ZN4Simd5PointIlED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #8
  call void @_ZN4Simd5PointIlED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #8
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %28) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %29) #8
  call void @_ZN4Simd5PointIlEC2ImmEET_T0_(ptr noundef nonnull align 8 dereferenceable(16) %29, i64 noundef 64, i64 noundef 64)
  invoke void @_ZNK4Simd4ViewINS_9AllocatorEE6RegionERKNS_5PointIlEENS2_8PositionE(ptr dead_on_unwind nonnull writable sret(%"struct.Simd::View") align 8 %28, ptr noundef nonnull align 8 dereferenceable(41) %34, ptr noundef nonnull align 8 dereferenceable(16) %29, i32 noundef 4)
          to label %187 unwind label %200

187:                                              ; preds = %186
  call void @_ZN4Simd5PointIlED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #8
  invoke void @_ZN4Simd6ResizeINS_9AllocatorEEEvRKNS_4ViewIT_EERS4_20SimdResizeMethodType(ptr noundef nonnull align 8 dereferenceable(41) %22, ptr noundef nonnull align 8 dereferenceable(41) %28, i32 noundef 2)
          to label %188 unwind label %202

188:                                              ; preds = %187
  call void @_ZN4Simd4ViewINS_9AllocatorEED2Ev(ptr noundef nonnull align 8 dereferenceable(41) %28) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %28) #8
  call void @_ZN4Simd4ViewINS_9AllocatorEED2Ev(ptr noundef nonnull align 8 dereferenceable(41) %22) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %22) #8
  br label %.loopexit

189:                                              ; preds = %182
  %190 = landingpad { ptr, i32 }
          cleanup
  br label %199

191:                                              ; preds = %183
  %192 = landingpad { ptr, i32 }
          cleanup
  br label %198

193:                                              ; preds = %184
  %194 = landingpad { ptr, i32 }
          cleanup
  br label %197

195:                                              ; preds = %185
  %196 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4Simd5PointIlED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #8
  br label %197

197:                                              ; preds = %195, %193
  %.pn85 = phi { ptr, i32 } [ %196, %195 ], [ %194, %193 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #8
  call void @_ZN4Simd5PointIlED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #8
  br label %198

198:                                              ; preds = %197, %191
  %.pn85.pn = phi { ptr, i32 } [ %.pn85, %197 ], [ %192, %191 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #8
  call void @_ZN4Simd5PointIlED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #8
  br label %199

199:                                              ; preds = %198, %189
  %.pn85.pn.pn = phi { ptr, i32 } [ %.pn85.pn, %198 ], [ %190, %189 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #8
  br label %205

200:                                              ; preds = %186
  %201 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4Simd5PointIlED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #8
  br label %204

202:                                              ; preds = %187
  %203 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4Simd4ViewINS_9AllocatorEED2Ev(ptr noundef nonnull align 8 dereferenceable(41) %28) #8
  br label %204

204:                                              ; preds = %202, %200
  %.pn89 = phi { ptr, i32 } [ %203, %202 ], [ %201, %200 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %28) #8
  call void @_ZN4Simd4ViewINS_9AllocatorEED2Ev(ptr noundef nonnull align 8 dereferenceable(41) %22) #8
  br label %205

205:                                              ; preds = %204, %199
  %.pn89.pn = phi { ptr, i32 } [ %.pn89, %204 ], [ %.pn85.pn.pn, %199 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %22) #8
  br label %206

.loopexit:                                        ; preds = %._crit_edge110.us, %.lr.ph113, %104, %188
  call void @_ZN4Simd4ViewINS_9AllocatorEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(41) %0, ptr noundef nonnull align 8 dereferenceable(41) %34)
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #8
  br label %207

206:                                              ; preds = %205, %181, %173
  %.pn93.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn93.pn.pn.pn.pn.pn.pn, %181 ], [ %.pn89.pn, %205 ], [ %174, %173 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #8
  br label %208

207:                                              ; preds = %.loopexit, %58
  call void @_ZN4Simd4ViewINS_9AllocatorEED2Ev(ptr noundef nonnull align 8 dereferenceable(41) %7) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %7) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #8
  br label %210

208:                                              ; preds = %206, %73, %61
  %.pn93.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn93.pn.pn.pn.pn.pn.pn.pn, %206 ], [ %62, %61 ], [ %.pn.pn.pn, %73 ]
  call void @_ZN4Simd4ViewINS_9AllocatorEED2Ev(ptr noundef nonnull align 8 dereferenceable(41) %7) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %7) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #8
  br label %209

209:                                              ; preds = %208, %59
  %.pn93.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn93.pn.pn.pn.pn.pn.pn.pn.pn, %208 ], [ %60, %59 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #8
  br label %211

210:                                              ; preds = %207, %39
  call void @_ZNSt10lock_guardISt15recursive_mutexED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #8
  ret void

211:                                              ; preds = %42, %209, %40
  %.pn93.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %41, %40 ], [ %.pn93.pn.pn.pn.pn.pn.pn.pn.pn.pn, %209 ], [ %43, %42 ]
  call void @_ZNSt10lock_guardISt15recursive_mutexED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #8
  resume { ptr, i32 } %.pn93.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.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 @_ZNSt10lock_guardISt15recursive_mutexEC2ERS0_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #0 align 2

declare noundef i64 @_ZN4Test26PerformanceMeasurerStorage5AlignEm(ptr noundef nonnull align 8 dereferenceable(88), i64 noundef) local_unnamed_addr #2

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN4Simd4ViewINS_9AllocatorEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(41), ptr noundef nonnull align 8 dereferenceable(41)) unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #4

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN4Simd4ViewINS_9AllocatorEEC2Ev(ptr noundef nonnull align 8 dereferenceable(41)) unnamed_addr #3 align 2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN4Simd4ViewINS_9AllocatorEE4LoadERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS2_6FormatE(ptr noundef nonnull align 8 dereferenceable(41), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) local_unnamed_addr #5 align 2

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

; 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 #4

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #4

declare void @_ZN4Test3Log5WriteENS0_5LevelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(656), i32 noundef, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(128)) local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128)) unnamed_addr #6 align 2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZN4Simd4ViewINS_9AllocatorEE8RecreateEmmNS2_6FormatEPvm(ptr noundef nonnull align 8 dereferenceable(41), i64 noundef, i64 noundef, i32 noundef, ptr noundef, i64 noundef) local_unnamed_addr #5 align 2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZN4Simd12GetStatisticINS_9AllocatorEEEvRKNS_4ViewIT_EERhS7_S7_(ptr noundef nonnull align 8 dereferenceable(41), ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #5

declare void @_ZN4Test10FillRandomERN4Simd4ViewINS0_9AllocatorEEEhh(ptr noundef nonnull align 8 dereferenceable(41), i8 noundef zeroext, i8 noundef zeroext) local_unnamed_addr #2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN4Test6RandomEi(i32 noundef) local_unnamed_addr #3

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef i64 @_ZN4Simd9AllocatorIhE9AlignmentEv() local_unnamed_addr #5 align 2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZN4Simd4ViewINS_9AllocatorEEC2EmmNS2_6FormatEPvm(ptr noundef nonnull align 8 dereferenceable(41), i64 noundef, i64 noundef, i32 noundef, ptr noundef, i64 noundef) unnamed_addr #5 align 2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZN4Simd6ResizeINS_9AllocatorEEEvRKNS_4ViewIT_EERS4_20SimdResizeMethodType(ptr noundef nonnull align 8 dereferenceable(41), ptr noundef nonnull align 8 dereferenceable(41), i32 noundef) local_unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSaIhEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIhSaIhEEC2EmRKhRKS0_(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #6 align 2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZN4Simd13VectorProductINS_9AllocatorEEEvPKhS3_RNS_4ViewIT_EE(ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(41)) local_unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNSt6vectorIhSaIhEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #6 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN4Simd5PointIlEC2ImmEET_T0_(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef, i64 noundef) unnamed_addr #3 align 2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZN4Simd13AlphaBlendingINS_9AllocatorEEEvRKNS_4ViewIT_EES6_RS4_(ptr noundef nonnull align 8 dereferenceable(41), ptr noundef nonnull align 8 dereferenceable(41), ptr noundef nonnull align 8 dereferenceable(41)) local_unnamed_addr #5

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZNK4Simd4ViewINS_9AllocatorEE6RegionERKNS_5PointIlEES6_(ptr dead_on_unwind noalias writable sret(%"struct.Simd::View") align 8, ptr noundef nonnull align 8 dereferenceable(41), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #5 align 2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZN4SimdplIlEENS_5PointIT_EERKS3_S5_(ptr dead_on_unwind noalias writable sret(%"struct.Simd::Point") align 8, ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #5

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(41) ptr @_ZN4Simd4ViewINS_9AllocatorEE3RefEv(ptr noundef nonnull align 8 dereferenceable(41)) local_unnamed_addr #3 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN4Simd4ViewINS_9AllocatorEED2Ev(ptr noundef nonnull align 8 dereferenceable(41)) unnamed_addr #3 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN4Simd5PointIlED2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #6 align 2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZNK4Simd4ViewINS_9AllocatorEE6RegionERKNS_5PointIlEENS2_8PositionE(ptr dead_on_unwind noalias writable sret(%"struct.Simd::View") align 8, ptr noundef nonnull align 8 dereferenceable(41), ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) local_unnamed_addr #5 align 2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZN4SimddvIliEENS_5PointIT_EERKS3_RKT0_(ptr dead_on_unwind noalias writable sret(%"struct.Simd::Point") align 8, ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #5

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZN4SimdmlIliEENS_5PointIT_EERKS3_RKT0_(ptr dead_on_unwind noalias writable sret(%"struct.Simd::Point") align 8, ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #5

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZNK4Simd4ViewINS_9AllocatorEE4SizeEv(ptr dead_on_unwind noalias writable sret(%"struct.Simd::Point") align 8, ptr noundef nonnull align 8 dereferenceable(41)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt10lock_guardISt15recursive_mutexED2Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #6 align 2

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

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 = { "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 = { alwaysinline 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 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 = { alwaysinline 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 #6 = { 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 #7 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #8 = { nounwind }

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

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


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