; LLVM IR from thepowersgang/mrustc :: tools/mir_opt_test (main)

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

%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"class.std::initializer_list" = type { ptr, i64 }
%struct.Options = type { %"class.helpers::path", %"class.std::vector" }
%"class.helpers::path" = type { %"class.std::__cxx11::basic_string" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<MirOptTestFile, std::allocator<MirOptTestFile>>::_Vector_impl" }
%"struct.std::_Vector_base<MirOptTestFile, std::allocator<MirOptTestFile>>::_Vector_impl" = type { %"struct.std::_Vector_base<MirOptTestFile, std::allocator<MirOptTestFile>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MirOptTestFile, std::allocator<MirOptTestFile>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.DebugTimedPhase = type { ptr, i64 }
%struct.stat = type { i64, i64, i64, i32, i32, i32, i32, i64, i64, i64, i64, %struct.timespec, %struct.timespec, %struct.timespec, [3 x i64] }
%struct.timespec = type { i64, i64 }
%struct.MirOptTestFile = type { %"class.std::__cxx11::basic_string", %"class.HIR::CratePtr", %"class.std::vector.8" }
%"class.HIR::CratePtr" = type { ptr }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<MirOptTestFile::Test, std::allocator<MirOptTestFile::Test>>::_Vector_impl" }
%"struct.std::_Vector_base<MirOptTestFile::Test, std::allocator<MirOptTestFile::Test>>::_Vector_impl" = type { %"struct.std::_Vector_base<MirOptTestFile::Test, std::allocator<MirOptTestFile::Test>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MirOptTestFile::Test, std::allocator<MirOptTestFile::Test>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.159" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.160" = type { ptr }
%"class.std::span" = type { ptr, i64 }
%struct.Span = type { ptr }
%class.StaticTraitResolve = type { ptr, %struct.TraitResolveCommon, i32, %"class.std::map.207", %"class.std::map.207", %"class.std::map.207", %"class.std::map.212" }
%struct.TraitResolveCommon = type { ptr, ptr, ptr, %"class.std::map.196", %class.RangeVecMap, %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath" }
%"class.std::map.196" = type { %"class.std::_Rb_tree.197" }
%"class.std::_Rb_tree.197" = type { %"struct.std::_Rb_tree<HIR::TypeRef, std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>, std::_Select1st<std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>>, std::less<HIR::TypeRef>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::TypeRef, std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>, std::_Select1st<std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>>, std::less<HIR::TypeRef>>::_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.RangeVecMap = type <{ %"class.std::vector.202", [8 x i8] }>
%"class.std::vector.202" = type { %"struct.std::_Vector_base.203" }
%"struct.std::_Vector_base.203" = type { %"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%"class.std::map.207" = type { %"class.std::_Rb_tree.208" }
%"class.std::_Rb_tree.208" = type { %"struct.std::_Rb_tree<HIR::TypeRef, std::pair<const HIR::TypeRef, bool>, std::_Select1st<std::pair<const HIR::TypeRef, bool>>, std::less<HIR::TypeRef>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::TypeRef, std::pair<const HIR::TypeRef, bool>, std::_Select1st<std::pair<const HIR::TypeRef, bool>>, std::less<HIR::TypeRef>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.212" = type { %"class.std::_Rb_tree.213" }
%"class.std::_Rb_tree.213" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, HIR::TypeRef>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, HIR::TypeRef>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, HIR::TypeRef>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, HIR::TypeRef>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.HIR::ItemPath" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.MIR::FunctionPointer" = type { ptr }
%class.RcString = type { ptr }
%struct.dirent = type { i64, i64, i16, i8, [256 x i8] }
%"struct.MirOptTestFile::Test" = type { %"struct.HIR::SimplePath", %"struct.HIR::SimplePath" }
%"class.HIR::Function" = type { i8, %"struct.HIR::Linkage", i32, %"class.HIR::TypeRef", %class.RcString, i8, i8, %"class.HIR::GenericParams", %"class.std::vector.181", i8, %"class.HIR::TypeRef", %"class.HIR::ExprPtr", %"struct.HIR::Function::Markings" }
%"struct.HIR::Linkage" = type { i32, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string" }
%"class.HIR::GenericParams" = type { %"class.std::vector.161", %"class.std::vector.166", %"class.std::vector.171", %"class.std::vector.176" }
%"class.std::vector.161" = type { %"struct.std::_Vector_base.162" }
%"struct.std::_Vector_base.162" = type { %"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.166" = type { %"struct.std::_Vector_base.167" }
%"struct.std::_Vector_base.167" = type { %"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.171" = type { %"struct.std::_Vector_base.172" }
%"struct.std::_Vector_base.172" = type { %"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.176" = type { %"struct.std::_Vector_base.177" }
%"struct.std::_Vector_base.177" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.181" = type { %"struct.std::_Vector_base.182" }
%"struct.std::_Vector_base.182" = type { %"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::TypeRef" = type { ptr }
%"class.HIR::ExprPtr" = type { %"class.HIR::ExprPtrInner", %"class.std::vector.186", %"class.std::vector.186", %"class.MIR::FunctionPointer", %"class.HIR::ExprStatePtr" }
%"class.HIR::ExprPtrInner" = type { ptr }
%"class.std::vector.186" = type { %"struct.std::_Vector_base.187" }
%"struct.std::_Vector_base.187" = type { %"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::ExprStatePtr" = type { ptr }
%"struct.HIR::Function::Markings" = type { %"class.std::vector.191", i8, i32 }
%"class.std::vector.191" = type { %"struct.std::_Vector_base.192" }
%"struct.std::_Vector_base.192" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@.str = external hidden unnamed_addr constant [14 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [10 x i8], align 1
@constinit = external hidden constant [5 x ptr], align 8
@_ZSt4cerr = external global %"class.std::basic_ostream", align 8
@.str.6 = external hidden unnamed_addr constant [26 x i8], align 1
@_ZTISt9exception = external constant ptr
@.str.7 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [20 x i8], align 1

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main(i32 noundef %0, ptr noundef %1) #0 personality ptr @__gxx_personality_v0 {
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca %"class.std::initializer_list", align 8
  %7 = alloca [5 x ptr], align 8
  %8 = alloca %struct.Options, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca %"class.std::vector.3", align 8
  %13 = alloca %class.DebugTimedPhase, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca %"class.helpers::path", align 8
  %17 = alloca %struct.stat, align 8
  %18 = alloca %struct.MirOptTestFile, align 8
  %19 = alloca ptr, align 8
  %20 = alloca %class.DebugTimedPhase, align 8
  %21 = alloca ptr, align 8
  %22 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %23 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %24 = alloca ptr, align 8
  %25 = alloca %class.DebugTimedPhase, align 8
  %26 = alloca ptr, align 8
  %27 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %28 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %29 = alloca ptr, align 8
  %30 = alloca %class.DebugTimedPhase, align 8
  %31 = alloca ptr, align 8
  %32 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %33 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca %"class.__gnu_cxx::__normal_iterator.159", align 8
  %37 = alloca %"class.__gnu_cxx::__normal_iterator.159", align 8
  %38 = alloca ptr, align 8
  %39 = alloca i8, align 1
  %40 = alloca ptr, align 8
  %41 = alloca %"class.__gnu_cxx::__normal_iterator.160", align 8
  %42 = alloca %"class.__gnu_cxx::__normal_iterator.160", align 8
  %43 = alloca ptr, align 8
  %44 = alloca %"class.std::span", align 8
  %45 = alloca ptr, align 8
  %46 = alloca %struct.Span, align 8
  %47 = alloca %class.StaticTraitResolve, align 8
  %48 = alloca %"class.HIR::ItemPath", align 8
  %49 = alloca %class.DebugTimedPhase, align 8
  %50 = alloca ptr, align 8
  %51 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %52 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %53 = alloca ptr, align 8
  %54 = alloca ptr, align 8
  %55 = alloca %"class.__gnu_cxx::__normal_iterator.159", align 8
  %56 = alloca %"class.__gnu_cxx::__normal_iterator.159", align 8
  %57 = alloca ptr, align 8
  %58 = alloca i8, align 1
  %59 = alloca ptr, align 8
  %60 = alloca %"class.__gnu_cxx::__normal_iterator.160", align 8
  %61 = alloca %"class.__gnu_cxx::__normal_iterator.160", align 8
  %62 = alloca ptr, align 8
  %63 = alloca %"class.std::span", align 8
  %64 = alloca ptr, align 8
  %65 = alloca %struct.Span, align 8
  %66 = alloca ptr, align 8
  %67 = alloca %struct.Span, align 8
  %68 = alloca %class.StaticTraitResolve, align 8
  %69 = alloca %"class.MIR::FunctionPointer", align 8
  %70 = alloca %"class.HIR::ItemPath", align 8
  %71 = alloca %"struct.HIR::SimplePath", align 8
  %72 = alloca %class.RcString, align 8
  %73 = alloca %"class.std::span", align 8
  store i32 0, ptr %3, align 4
  store i32 %0, ptr %4, align 4, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 40, ptr %7) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %7, ptr align 8 @constinit, i64 40, i1 false), !tbaa.struct !11
  %74 = getelementptr inbounds %"class.std::initializer_list", ptr %6, i32 0, i32 0
  store ptr %7, ptr %74, align 8, !tbaa !13
  %75 = getelementptr inbounds %"class.std::initializer_list", ptr %6, i32 0, i32 1
  store i64 5, ptr %75, align 8, !tbaa !16
  %76 = getelementptr inbounds { ptr, i64 }, ptr %6, i32 0, i32 0
  %77 = load ptr, ptr %76, align 8
  %78 = getelementptr inbounds { ptr, i64 }, ptr %6, i32 0, i32 1
  %79 = load i64, ptr %78, align 8
  call void @_Z17debug_init_phasesPKcSt16initializer_listIS0_E(ptr noundef @.str, ptr %77, i64 %79)
  call void @llvm.lifetime.end.p0(i64 40, ptr %7) #11
  call void @llvm.lifetime.start.p0(i64 56, ptr %8) #11
  call void @_ZN7OptionsC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %8)
  %80 = load i32, ptr %4, align 4, !tbaa !5
  %81 = load ptr, ptr %5, align 8, !tbaa !9
  %82 = invoke noundef zeroext i1 @_ZN7Options5parseEiPPc(ptr noundef nonnull align 8 dereferenceable(56) %8, i32 noundef %80, ptr noundef %81)
          to label %83 unwind label %85

83:                                               ; preds = %2
  br i1 %82, label %89, label %84

84:                                               ; preds = %83
  store i32 1, ptr %3, align 4
  store i32 1, ptr %11, align 4
  br label %629

85:                                               ; preds = %2
  %86 = landingpad { ptr, i32 }
          cleanup
  %87 = extractvalue { ptr, i32 } %86, 0
  store ptr %87, ptr %9, align 8
  %88 = extractvalue { ptr, i32 } %86, 1
  store i32 %88, ptr %10, align 4
  br label %631

89:                                               ; preds = %83
  call void @llvm.lifetime.start.p0(i64 24, ptr %12) #11
  call void @_ZNSt6vectorI14MirOptTestFileSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %13) #11
  invoke void @_ZN15DebugTimedPhaseC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef @.str.1)
          to label %90 unwind label %107

90:                                               ; preds = %89
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #11
  %91 = getelementptr inbounds %struct.Options, ptr %8, i32 0, i32 0
  %92 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK7helpers4path3strB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(32) %91)
          to label %93 unwind label %111

93:                                               ; preds = %90
  %94 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %92) #11
  %95 = invoke ptr @opendir(ptr noundef %94)
          to label %96 unwind label %111

96:                                               ; preds = %93
  store ptr %95, ptr %14, align 8, !tbaa !9
  %97 = load ptr, ptr %14, align 8, !tbaa !9
  %98 = icmp eq ptr %97, null
  br i1 %98, label %99, label %115

99:                                               ; preds = %96
  %100 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.6)
          to label %101 unwind label %111

101:                                              ; preds = %99
  %102 = getelementptr inbounds %struct.Options, ptr %8, i32 0, i32 0
  %103 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7helperslsERSoRKNS_4pathE(ptr noundef nonnull align 8 dereferenceable(8) %100, ptr noundef nonnull align 8 dereferenceable(32) %102)
          to label %104 unwind label %111

104:                                              ; preds = %101
  %105 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %103, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %106 unwind label %111

106:                                              ; preds = %104
  br label %115

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

111:                                              ; preds = %213, %104, %101, %99, %93, %90
  %112 = landingpad { ptr, i32 }
          cleanup
  %113 = extractvalue { ptr, i32 } %112, 0
  store ptr %113, ptr %9, align 8
  %114 = extractvalue { ptr, i32 } %112, 1
  store i32 %114, ptr %10, align 4
  br label %227

115:                                              ; preds = %106, %96
  br label %116

116:                                              ; preds = %199, %197, %115
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #11
  %117 = load ptr, ptr %14, align 8, !tbaa !9
  %118 = invoke ptr @readdir(ptr noundef %117)
          to label %119 unwind label %123

119:                                              ; preds = %116
  store ptr %118, ptr %15, align 8, !tbaa !9
  %120 = load ptr, ptr %15, align 8, !tbaa !9
  %121 = icmp ne ptr %120, null
  br i1 %121, label %127, label %122

122:                                              ; preds = %119
  store i32 3, ptr %11, align 4
  br label %197

123:                                              ; preds = %116
  %124 = landingpad { ptr, i32 }
          cleanup
  %125 = extractvalue { ptr, i32 } %124, 0
  store ptr %125, ptr %9, align 8
  %126 = extractvalue { ptr, i32 } %124, 1
  store i32 %126, ptr %10, align 4
  br label %212

127:                                              ; preds = %119
  %128 = load ptr, ptr %15, align 8, !tbaa !9
  %129 = getelementptr inbounds %struct.dirent, ptr %128, i32 0, i32 4
  %130 = getelementptr inbounds [256 x i8], ptr %129, i64 0, i64 0
  %131 = load i8, ptr %130, align 1, !tbaa !12
  %132 = sext i8 %131 to i32
  %133 = icmp eq i32 %132, 46
  br i1 %133, label %134, label %135

134:                                              ; preds = %127
  store i32 2, ptr %11, align 4
  br label %197, !llvm.loop !17

135:                                              ; preds = %127
  call void @llvm.lifetime.start.p0(i64 32, ptr %16) #11
  %136 = getelementptr inbounds %struct.Options, ptr %8, i32 0, i32 0
  %137 = load ptr, ptr %15, align 8, !tbaa !9
  %138 = getelementptr inbounds %struct.dirent, ptr %137, i32 0, i32 4
  %139 = getelementptr inbounds [256 x i8], ptr %138, i64 0, i64 0
  invoke void @_ZNK7helpers4pathdvEPKc(ptr dead_on_unwind writable sret(%"class.helpers::path") align 8 %16, ptr noundef nonnull align 8 dereferenceable(32) %136, ptr noundef %139)
          to label %140 unwind label %150

140:                                              ; preds = %135
  call void @llvm.lifetime.start.p0(i64 144, ptr %17) #11
  %141 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK7helpers4path3strB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(32) %16)
          to label %142 unwind label %154

142:                                              ; preds = %140
  %143 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %141) #11
  %144 = call i32 @stat(ptr noundef %143, ptr noundef %17) #11
  %145 = getelementptr inbounds %struct.stat, ptr %17, i32 0, i32 3
  %146 = load i32, ptr %145, align 8, !tbaa !19
  %147 = and i32 %146, 61440
  %148 = icmp ne i32 %147, 32768
  br i1 %148, label %149, label %158

149:                                              ; preds = %142
  store i32 2, ptr %11, align 4
  br label %194, !llvm.loop !17

150:                                              ; preds = %135
  %151 = landingpad { ptr, i32 }
          cleanup
  %152 = extractvalue { ptr, i32 } %151, 0
  store ptr %152, ptr %9, align 8
  %153 = extractvalue { ptr, i32 } %151, 1
  store i32 %153, ptr %10, align 4
  br label %211

154:                                              ; preds = %140
  %155 = landingpad { ptr, i32 }
          cleanup
  %156 = extractvalue { ptr, i32 } %155, 0
  store ptr %156, ptr %9, align 8
  %157 = extractvalue { ptr, i32 } %155, 1
  store i32 %157, ptr %10, align 4
  br label %210

158:                                              ; preds = %142
  call void @llvm.lifetime.start.p0(i64 64, ptr %18) #11
  invoke void @_ZN14MirOptTestFile14load_from_fileERKN7helpers4pathE(ptr dead_on_unwind writable sret(%struct.MirOptTestFile) align 8 %18, ptr noundef nonnull align 8 dereferenceable(32) %16)
          to label %159 unwind label %161

159:                                              ; preds = %158
  invoke void @_ZNSt6vectorI14MirOptTestFileSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %12, ptr noundef nonnull align 8 dereferenceable(64) %18)
          to label %160 unwind label %165

160:                                              ; preds = %159
  call void @_ZN14MirOptTestFileD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %18) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr %18) #11
  br label %193

161:                                              ; preds = %158
  %162 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %163 = extractvalue { ptr, i32 } %162, 0
  store ptr %163, ptr %9, align 8
  %164 = extractvalue { ptr, i32 } %162, 1
  store i32 %164, ptr %10, align 4
  br label %169

165:                                              ; preds = %159
  %166 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %167 = extractvalue { ptr, i32 } %166, 0
  store ptr %167, ptr %9, align 8
  %168 = extractvalue { ptr, i32 } %166, 1
  store i32 %168, ptr %10, align 4
  call void @_ZN14MirOptTestFileD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %18) #11
  br label %169

169:                                              ; preds = %165, %161
  call void @llvm.lifetime.end.p0(i64 64, ptr %18) #11
  br label %170

170:                                              ; preds = %169
  %171 = load i32, ptr %10, align 4
  %172 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTISt9exception) #11
  %173 = icmp eq i32 %171, %172
  br i1 %173, label %174, label %210

174:                                              ; preds = %170
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #11
  %175 = load ptr, ptr %9, align 8
  %176 = call ptr @__cxa_begin_catch(ptr %175) #11
  store ptr %176, ptr %19, align 8
  %177 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.7)
          to label %178 unwind label %200

178:                                              ; preds = %174
  %179 = load ptr, ptr %19, align 8, !tbaa !9
  %180 = load ptr, ptr %179, align 8, !tbaa !22
  %181 = getelementptr inbounds ptr, ptr %180, i64 2
  %182 = load ptr, ptr %181, align 8
  %183 = call noundef ptr %182(ptr noundef nonnull align 8 dereferenceable(8) %179) #11
  %184 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %177, ptr noundef %183)
          to label %185 unwind label %200

185:                                              ; preds = %178
  %186 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %184, ptr noundef @.str.8)
          to label %187 unwind label %200

187:                                              ; preds = %185
  %188 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7helperslsERSoRKNS_4pathE(ptr noundef nonnull align 8 dereferenceable(8) %186, ptr noundef nonnull align 8 dereferenceable(32) %16)
          to label %189 unwind label %200

189:                                              ; preds = %187
  %190 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %188, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %191 unwind label %200

191:                                              ; preds = %189
  invoke void @__cxa_end_catch()
          to label %192 unwind label %204

192:                                              ; preds = %191
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #11
  br label %193

193:                                              ; preds = %192, %160
  store i32 0, ptr %11, align 4
  br label %194

194:                                              ; preds = %193, %149
  call void @llvm.lifetime.end.p0(i64 144, ptr %17) #11
  call void @_ZN7helpers4pathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #11
  %195 = load i32, ptr %11, align 4
  switch i32 %195, label %197 [
    i32 0, label %196
  ]

196:                                              ; preds = %194
  store i32 0, ptr %11, align 4
  br label %197

197:                                              ; preds = %196, %194, %134, %122
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #11
  %198 = load i32, ptr %11, align 4
  switch i32 %198, label %640 [
    i32 0, label %199
    i32 3, label %213
    i32 2, label %116
  ]

199:                                              ; preds = %197
  br label %116, !llvm.loop !17

200:                                              ; preds = %189, %187, %185, %178, %174
  %201 = landingpad { ptr, i32 }
          cleanup
  %202 = extractvalue { ptr, i32 } %201, 0
  store ptr %202, ptr %9, align 8
  %203 = extractvalue { ptr, i32 } %201, 1
  store i32 %203, ptr %10, align 4
  invoke void @__cxa_end_catch()
          to label %208 unwind label %637

204:                                              ; preds = %191
  %205 = landingpad { ptr, i32 }
          cleanup
  %206 = extractvalue { ptr, i32 } %205, 0
  store ptr %206, ptr %9, align 8
  %207 = extractvalue { ptr, i32 } %205, 1
  store i32 %207, ptr %10, align 4
  br label %209

208:                                              ; preds = %200
  br label %209

209:                                              ; preds = %208, %204
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #11
  br label %210

210:                                              ; preds = %209, %170, %154
  call void @llvm.lifetime.end.p0(i64 144, ptr %17) #11
  call void @_ZN7helpers4pathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #11
  br label %211

211:                                              ; preds = %210, %150
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #11
  br label %212

212:                                              ; preds = %211, %123
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #11
  br label %227

213:                                              ; preds = %197
  %214 = load ptr, ptr %14, align 8, !tbaa !9
  %215 = invoke i32 @closedir(ptr noundef %214)
          to label %216 unwind label %111

216:                                              ; preds = %213
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #11
  call void @_ZN15DebugTimedPhaseD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %20) #11
  invoke void @_ZN15DebugTimedPhaseC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef @.str.2)
          to label %217 unwind label %229

217:                                              ; preds = %216
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #11
  store ptr %12, ptr %21, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #11
  %218 = load ptr, ptr %21, align 8, !tbaa !9
  %219 = call ptr @_ZNSt6vectorI14MirOptTestFileSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %218) #11
  %220 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %22, i32 0, i32 0
  store ptr %219, ptr %220, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #11
  %221 = load ptr, ptr %21, align 8, !tbaa !9
  %222 = call ptr @_ZNSt6vectorI14MirOptTestFileSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %221) #11
  %223 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %23, i32 0, i32 0
  store ptr %222, ptr %223, align 8
  br label %224

224:                                              ; preds = %240, %217
  %225 = call noundef zeroext i1 @_ZN9__gnu_cxxneIP14MirOptTestFileSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %23) #11
  br i1 %225, label %233, label %226

226:                                              ; preds = %224
  store i32 4, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #11
  br label %246

227:                                              ; preds = %212, %111
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #11
  call void @_ZN15DebugTimedPhaseD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #11
  br label %228

228:                                              ; preds = %227, %107
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #11
  br label %628

229:                                              ; preds = %216
  %230 = landingpad { ptr, i32 }
          cleanup
  %231 = extractvalue { ptr, i32 } %230, 0
  store ptr %231, ptr %9, align 8
  %232 = extractvalue { ptr, i32 } %230, 1
  store i32 %232, ptr %10, align 4
  br label %257

233:                                              ; preds = %224
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #11
  %234 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP14MirOptTestFileSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #11
  store ptr %234, ptr %24, align 8, !tbaa !9
  %235 = load ptr, ptr %24, align 8, !tbaa !9
  %236 = getelementptr inbounds %struct.MirOptTestFile, ptr %235, i32 0, i32 1
  %237 = invoke noundef nonnull align 8 dereferenceable(944) ptr @_ZN3HIR8CratePtrdeEv(ptr noundef nonnull align 8 dereferenceable(8) %236)
          to label %238 unwind label %242

238:                                              ; preds = %233
  invoke void @_Z15ConvertHIR_BindRN3HIR5CrateE(ptr noundef nonnull align 8 dereferenceable(944) %237)
          to label %239 unwind label %242

239:                                              ; preds = %238
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #11
  br label %240

240:                                              ; preds = %239
  %241 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIP14MirOptTestFileSt6vectorIS1_SaIS1_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #11
  br label %224

242:                                              ; preds = %238, %233
  %243 = landingpad { ptr, i32 }
          cleanup
  %244 = extractvalue { ptr, i32 } %243, 0
  store ptr %244, ptr %9, align 8
  %245 = extractvalue { ptr, i32 } %243, 1
  store i32 %245, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #11
  call void @_ZN15DebugTimedPhaseD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #11
  br label %257

246:                                              ; preds = %226
  call void @_ZN15DebugTimedPhaseD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %25) #11
  invoke void @_ZN15DebugTimedPhaseC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef @.str.3)
          to label %247 unwind label %258

247:                                              ; preds = %246
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #11
  store ptr %12, ptr %26, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #11
  %248 = load ptr, ptr %26, align 8, !tbaa !9
  %249 = call ptr @_ZNSt6vectorI14MirOptTestFileSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %248) #11
  %250 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %27, i32 0, i32 0
  store ptr %249, ptr %250, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #11
  %251 = load ptr, ptr %26, align 8, !tbaa !9
  %252 = call ptr @_ZNSt6vectorI14MirOptTestFileSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %251) #11
  %253 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %28, i32 0, i32 0
  store ptr %252, ptr %253, align 8
  br label %254

254:                                              ; preds = %269, %247
  %255 = call noundef zeroext i1 @_ZN9__gnu_cxxneIP14MirOptTestFileSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(8) %28) #11
  br i1 %255, label %262, label %256

256:                                              ; preds = %254
  store i32 6, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #11
  br label %275

257:                                              ; preds = %242, %229
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #11
  br label %628

258:                                              ; preds = %246
  %259 = landingpad { ptr, i32 }
          cleanup
  %260 = extractvalue { ptr, i32 } %259, 0
  store ptr %260, ptr %9, align 8
  %261 = extractvalue { ptr, i32 } %259, 1
  store i32 %261, ptr %10, align 4
  br label %286

262:                                              ; preds = %254
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #11
  %263 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP14MirOptTestFileSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %27) #11
  store ptr %263, ptr %29, align 8, !tbaa !9
  %264 = load ptr, ptr %29, align 8, !tbaa !9
  %265 = getelementptr inbounds %struct.MirOptTestFile, ptr %264, i32 0, i32 1
  %266 = invoke noundef nonnull align 8 dereferenceable(944) ptr @_ZN3HIR8CratePtrdeEv(ptr noundef nonnull align 8 dereferenceable(8) %265)
          to label %267 unwind label %271

267:                                              ; preds = %262
  invoke void @_Z14MIR_CheckCrateRN3HIR5CrateE(ptr noundef nonnull align 8 dereferenceable(944) %266)
          to label %268 unwind label %271

268:                                              ; preds = %267
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #11
  br label %269

269:                                              ; preds = %268
  %270 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIP14MirOptTestFileSt6vectorIS1_SaIS1_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %27) #11
  br label %254

271:                                              ; preds = %267, %262
  %272 = landingpad { ptr, i32 }
          cleanup
  %273 = extractvalue { ptr, i32 } %272, 0
  store ptr %273, ptr %9, align 8
  %274 = extractvalue { ptr, i32 } %272, 1
  store i32 %274, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #11
  call void @_ZN15DebugTimedPhaseD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #11
  br label %286

275:                                              ; preds = %256
  call void @_ZN15DebugTimedPhaseD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %30) #11
  invoke void @_ZN15DebugTimedPhaseC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %30, ptr noundef @.str.4)
          to label %276 unwind label %287

276:                                              ; preds = %275
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #11
  store ptr %12, ptr %31, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #11
  %277 = load ptr, ptr %31, align 8, !tbaa !9
  %278 = call ptr @_ZNSt6vectorI14MirOptTestFileSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %277) #11
  %279 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %32, i32 0, i32 0
  store ptr %278, ptr %279, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #11
  %280 = load ptr, ptr %31, align 8, !tbaa !9
  %281 = call ptr @_ZNSt6vectorI14MirOptTestFileSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %280) #11
  %282 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %33, i32 0, i32 0
  store ptr %281, ptr %282, align 8
  br label %283

283:                                              ; preds = %412, %276
  %284 = call noundef zeroext i1 @_ZN9__gnu_cxxneIP14MirOptTestFileSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 8 dereferenceable(8) %33) #11
  br i1 %284, label %291, label %285

285:                                              ; preds = %283
  store i32 8, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #11
  br label %414

286:                                              ; preds = %271, %258
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #11
  br label %628

287:                                              ; preds = %275
  %288 = landingpad { ptr, i32 }
          cleanup
  %289 = extractvalue { ptr, i32 } %288, 0
  store ptr %289, ptr %9, align 8
  %290 = extractvalue { ptr, i32 } %288, 1
  store i32 %290, ptr %10, align 4
  br label %425

291:                                              ; preds = %283
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #11
  %292 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP14MirOptTestFileSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %32) #11
  store ptr %292, ptr %34, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #11
  %293 = load ptr, ptr %34, align 8, !tbaa !9
  %294 = getelementptr inbounds %struct.MirOptTestFile, ptr %293, i32 0, i32 2
  store ptr %294, ptr %35, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #11
  %295 = load ptr, ptr %35, align 8, !tbaa !9
  %296 = call ptr @_ZNSt6vectorIN14MirOptTestFile4TestESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %295) #11
  %297 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.159", ptr %36, i32 0, i32 0
  store ptr %296, ptr %297, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #11
  %298 = load ptr, ptr %35, align 8, !tbaa !9
  %299 = call ptr @_ZNSt6vectorIN14MirOptTestFile4TestESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %298) #11
  %300 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.159", ptr %37, i32 0, i32 0
  store ptr %299, ptr %300, align 8
  br label %301

301:                                              ; preds = %385, %291
  %302 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN14MirOptTestFile4TestESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(8) %37) #11
  br i1 %302, label %304, label %303

303:                                              ; preds = %301
  store i32 10, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #11
  br label %411

304:                                              ; preds = %301
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #11
  %305 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN14MirOptTestFile4TestESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %36) #11
  store ptr %305, ptr %38, align 8, !tbaa !9
  %306 = getelementptr inbounds %struct.Options, ptr %8, i32 0, i32 1
  %307 = call noundef zeroext i1 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %306) #11
  br i1 %307, label %354, label %308

308:                                              ; preds = %304
  call void @llvm.lifetime.start.p0(i64 1, ptr %39) #11
  store i8 0, ptr %39, align 1, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #11
  %309 = getelementptr inbounds %struct.Options, ptr %8, i32 0, i32 1
  store ptr %309, ptr %40, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #11
  %310 = load ptr, ptr %40, align 8, !tbaa !9
  %311 = call ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %310) #11
  %312 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.160", ptr %41, i32 0, i32 0
  store ptr %311, ptr %312, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #11
  %313 = load ptr, ptr %40, align 8, !tbaa !9
  %314 = call ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %313) #11
  %315 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.160", ptr %42, i32 0, i32 0
  store ptr %314, ptr %315, align 8
  br label %316

316:                                              ; preds = %343, %308
  %317 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %41, ptr noundef nonnull align 8 dereferenceable(8) %42) #11
  br i1 %317, label %319, label %318

318:                                              ; preds = %316
  store i32 12, ptr %11, align 4
  br label %345

319:                                              ; preds = %316
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #11
  %320 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %41) #11
  store ptr %320, ptr %43, align 8, !tbaa !9
  %321 = load ptr, ptr %43, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %44) #11
  %322 = load ptr, ptr %38, align 8, !tbaa !9
  %323 = getelementptr inbounds %"struct.MirOptTestFile::Test", ptr %322, i32 0, i32 0
  %324 = invoke { ptr, i64 } @_ZNK3HIR10SimplePath10componentsEv(ptr noundef nonnull align 8 dereferenceable(8) %323)
          to label %325 unwind label %335

325:                                              ; preds = %319
  %326 = getelementptr inbounds { ptr, i64 }, ptr %44, i32 0, i32 0
  %327 = extractvalue { ptr, i64 } %324, 0
  store ptr %327, ptr %326, align 8
  %328 = getelementptr inbounds { ptr, i64 }, ptr %44, i32 0, i32 1
  %329 = extractvalue { ptr, i64 } %324, 1
  store i64 %329, ptr %328, align 8
  %330 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt4spanIK8RcStringE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %44)
          to label %331 unwind label %335

331:                                              ; preds = %325
  %332 = invoke noundef zeroext i1 @_ZSteqRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK8RcString(ptr noundef nonnull align 8 dereferenceable(32) %321, ptr noundef nonnull align 8 dereferenceable(8) %330)
          to label %333 unwind label %335

333:                                              ; preds = %331
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #11
  br i1 %332, label %334, label %339

334:                                              ; preds = %333
  store i8 1, ptr %39, align 1, !tbaa !24
  store i32 12, ptr %11, align 4
  br label %340

335:                                              ; preds = %331, %325, %319
  %336 = landingpad { ptr, i32 }
          cleanup
  %337 = extractvalue { ptr, i32 } %336, 0
  store ptr %337, ptr %9, align 8
  %338 = extractvalue { ptr, i32 } %336, 1
  store i32 %338, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #11
  br label %410

339:                                              ; preds = %333
  store i32 0, ptr %11, align 4
  br label %340

340:                                              ; preds = %339, %334
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #11
  %341 = load i32, ptr %11, align 4
  switch i32 %341, label %345 [
    i32 0, label %342
  ]

342:                                              ; preds = %340
  br label %343

343:                                              ; preds = %342
  %344 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %41) #11
  br label %316

345:                                              ; preds = %340, %318
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #11
  br label %346

346:                                              ; preds = %345
  %347 = load i8, ptr %39, align 1, !tbaa !24, !range !26, !noundef !27
  %348 = trunc i8 %347 to i1
  br i1 %348, label %350, label %349

349:                                              ; preds = %346
  store i32 11, ptr %11, align 4
  br label %351

350:                                              ; preds = %346
  store i32 0, ptr %11, align 4
  br label %351

351:                                              ; preds = %350, %349
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #11
  %352 = load i32, ptr %11, align 4
  switch i32 %352, label %382 [
    i32 0, label %353
  ]

353:                                              ; preds = %351
  br label %354

354:                                              ; preds = %353, %304
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #11
  %355 = load ptr, ptr %34, align 8, !tbaa !9
  %356 = getelementptr inbounds %struct.MirOptTestFile, ptr %355, i32 0, i32 1
  %357 = invoke noundef ptr @_ZN3HIR8CratePtrptEv(ptr noundef nonnull align 8 dereferenceable(8) %356)
          to label %358 unwind label %387

358:                                              ; preds = %354
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #11
  invoke void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %46)
          to label %359 unwind label %391

359:                                              ; preds = %358
  %360 = load ptr, ptr %38, align 8, !tbaa !9
  %361 = getelementptr inbounds %"struct.MirOptTestFile::Test", ptr %360, i32 0, i32 0
  %362 = invoke noundef nonnull align 8 dereferenceable(352) ptr @_ZNK3HIR5Crate20get_function_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %357, ptr noundef nonnull align 8 dereferenceable(8) %46, ptr noundef nonnull align 8 dereferenceable(8) %361)
          to label %363 unwind label %395

363:                                              ; preds = %359
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #11
  store ptr %362, ptr %45, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 424, ptr %47) #11
  %364 = load ptr, ptr %34, align 8, !tbaa !9
  %365 = getelementptr inbounds %struct.MirOptTestFile, ptr %364, i32 0, i32 1
  %366 = invoke noundef nonnull align 8 dereferenceable(944) ptr @_ZN3HIR8CratePtrdeEv(ptr noundef nonnull align 8 dereferenceable(8) %365)
          to label %367 unwind label %400

367:                                              ; preds = %363
  invoke void @_ZN18StaticTraitResolveC2ERKN3HIR5CrateE(ptr noundef nonnull align 8 dereferenceable(424) %47, ptr noundef nonnull align 8 dereferenceable(944) %366)
          to label %368 unwind label %400

368:                                              ; preds = %367
  call void @llvm.lifetime.start.p0(i64 56, ptr %48) #11
  %369 = load ptr, ptr %38, align 8, !tbaa !9
  %370 = getelementptr inbounds %"struct.MirOptTestFile::Test", ptr %369, i32 0, i32 0
  invoke void @_ZN3HIR8ItemPathC2ERKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(56) %48, ptr noundef nonnull align 8 dereferenceable(8) %370)
          to label %371 unwind label %404

371:                                              ; preds = %368
  %372 = load ptr, ptr %45, align 8, !tbaa !9
  %373 = getelementptr inbounds %"class.HIR::Function", ptr %372, i32 0, i32 11
  %374 = getelementptr inbounds %"class.HIR::ExprPtr", ptr %373, i32 0, i32 3
  %375 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZNK3MIR15FunctionPointerdeEv(ptr noundef nonnull align 8 dereferenceable(8) %374)
          to label %376 unwind label %404

376:                                              ; preds = %371
  %377 = load ptr, ptr %45, align 8, !tbaa !9
  %378 = getelementptr inbounds %"class.HIR::Function", ptr %377, i32 0, i32 8
  %379 = load ptr, ptr %45, align 8, !tbaa !9
  %380 = getelementptr inbounds %"class.HIR::Function", ptr %379, i32 0, i32 10
  invoke void @_Z15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_(ptr noundef nonnull align 8 dereferenceable(424) %47, ptr noundef nonnull align 8 dereferenceable(56) %48, ptr noundef nonnull align 8 dereferenceable(96) %375, ptr noundef nonnull align 8 dereferenceable(24) %378, ptr noundef nonnull align 8 dereferenceable(8) %380)
          to label %381 unwind label %404

381:                                              ; preds = %376
  call void @llvm.lifetime.end.p0(i64 56, ptr %48) #11
  call void @_ZN18StaticTraitResolveD2Ev(ptr noundef nonnull align 8 dereferenceable(424) %47) #11
  call void @llvm.lifetime.end.p0(i64 424, ptr %47) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #11
  store i32 0, ptr %11, align 4
  br label %382

382:                                              ; preds = %381, %351
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #11
  %383 = load i32, ptr %11, align 4
  switch i32 %383, label %640 [
    i32 0, label %384
    i32 11, label %385
  ]

384:                                              ; preds = %382
  br label %385

385:                                              ; preds = %384, %382
  %386 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN14MirOptTestFile4TestESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %36) #11
  br label %301

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

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

395:                                              ; preds = %359
  %396 = landingpad { ptr, i32 }
          cleanup
  %397 = extractvalue { ptr, i32 } %396, 0
  store ptr %397, ptr %9, align 8
  %398 = extractvalue { ptr, i32 } %396, 1
  store i32 %398, ptr %10, align 4
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #11
  br label %399

399:                                              ; preds = %395, %391
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #11
  br label %409

400:                                              ; preds = %367, %363
  %401 = landingpad { ptr, i32 }
          cleanup
  %402 = extractvalue { ptr, i32 } %401, 0
  store ptr %402, ptr %9, align 8
  %403 = extractvalue { ptr, i32 } %401, 1
  store i32 %403, ptr %10, align 4
  br label %408

404:                                              ; preds = %376, %371, %368
  %405 = landingpad { ptr, i32 }
          cleanup
  %406 = extractvalue { ptr, i32 } %405, 0
  store ptr %406, ptr %9, align 8
  %407 = extractvalue { ptr, i32 } %405, 1
  store i32 %407, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 56, ptr %48) #11
  call void @_ZN18StaticTraitResolveD2Ev(ptr noundef nonnull align 8 dereferenceable(424) %47) #11
  br label %408

408:                                              ; preds = %404, %400
  call void @llvm.lifetime.end.p0(i64 424, ptr %47) #11
  br label %409

409:                                              ; preds = %408, %399, %387
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #11
  br label %410

410:                                              ; preds = %409, %335
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #11
  call void @_ZN15DebugTimedPhaseD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %30) #11
  br label %425

411:                                              ; preds = %303
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #11
  br label %412

412:                                              ; preds = %411
  %413 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIP14MirOptTestFileSt6vectorIS1_SaIS1_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %32) #11
  br label %283

414:                                              ; preds = %285
  call void @_ZN15DebugTimedPhaseD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %30) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %49) #11
  invoke void @_ZN15DebugTimedPhaseC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %49, ptr noundef @.str.5)
          to label %415 unwind label %426

415:                                              ; preds = %414
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #11
  store ptr %12, ptr %50, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #11
  %416 = load ptr, ptr %50, align 8, !tbaa !9
  %417 = call ptr @_ZNSt6vectorI14MirOptTestFileSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %416) #11
  %418 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %51, i32 0, i32 0
  store ptr %417, ptr %418, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #11
  %419 = load ptr, ptr %50, align 8, !tbaa !9
  %420 = call ptr @_ZNSt6vectorI14MirOptTestFileSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %419) #11
  %421 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %52, i32 0, i32 0
  store ptr %420, ptr %421, align 8
  br label %422

422:                                              ; preds = %624, %415
  %423 = call noundef zeroext i1 @_ZN9__gnu_cxxneIP14MirOptTestFileSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef nonnull align 8 dereferenceable(8) %52) #11
  br i1 %423, label %430, label %424

424:                                              ; preds = %422
  store i32 14, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #11
  br label %626

425:                                              ; preds = %410, %287
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #11
  br label %628

426:                                              ; preds = %414
  %427 = landingpad { ptr, i32 }
          cleanup
  %428 = extractvalue { ptr, i32 } %427, 0
  store ptr %428, ptr %9, align 8
  %429 = extractvalue { ptr, i32 } %427, 1
  store i32 %429, ptr %10, align 4
  br label %627

430:                                              ; preds = %422
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #11
  %431 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP14MirOptTestFileSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %51) #11
  store ptr %431, ptr %53, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #11
  %432 = load ptr, ptr %53, align 8, !tbaa !9
  %433 = getelementptr inbounds %struct.MirOptTestFile, ptr %432, i32 0, i32 2
  store ptr %433, ptr %54, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #11
  %434 = load ptr, ptr %54, align 8, !tbaa !9
  %435 = call ptr @_ZNSt6vectorIN14MirOptTestFile4TestESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %434) #11
  %436 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.159", ptr %55, i32 0, i32 0
  store ptr %435, ptr %436, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #11
  %437 = load ptr, ptr %54, align 8, !tbaa !9
  %438 = call ptr @_ZNSt6vectorIN14MirOptTestFile4TestESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %437) #11
  %439 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.159", ptr %56, i32 0, i32 0
  store ptr %438, ptr %439, align 8
  br label %440

440:                                              ; preds = %614, %430
  %441 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN14MirOptTestFile4TestESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %55, ptr noundef nonnull align 8 dereferenceable(8) %56) #11
  br i1 %441, label %443, label %442

442:                                              ; preds = %440
  store i32 16, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #11
  br label %623

443:                                              ; preds = %440
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #11
  %444 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN14MirOptTestFile4TestESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %55) #11
  store ptr %444, ptr %57, align 8, !tbaa !9
  %445 = getelementptr inbounds %struct.Options, ptr %8, i32 0, i32 1
  %446 = call noundef zeroext i1 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %445) #11
  br i1 %446, label %493, label %447

447:                                              ; preds = %443
  call void @llvm.lifetime.start.p0(i64 1, ptr %58) #11
  store i8 0, ptr %58, align 1, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #11
  %448 = getelementptr inbounds %struct.Options, ptr %8, i32 0, i32 1
  store ptr %448, ptr %59, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #11
  %449 = load ptr, ptr %59, align 8, !tbaa !9
  %450 = call ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %449) #11
  %451 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.160", ptr %60, i32 0, i32 0
  store ptr %450, ptr %451, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #11
  %452 = load ptr, ptr %59, align 8, !tbaa !9
  %453 = call ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %452) #11
  %454 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.160", ptr %61, i32 0, i32 0
  store ptr %453, ptr %454, align 8
  br label %455

455:                                              ; preds = %482, %447
  %456 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %60, ptr noundef nonnull align 8 dereferenceable(8) %61) #11
  br i1 %456, label %458, label %457

457:                                              ; preds = %455
  store i32 18, ptr %11, align 4
  br label %484

458:                                              ; preds = %455
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #11
  %459 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %60) #11
  store ptr %459, ptr %62, align 8, !tbaa !9
  %460 = load ptr, ptr %62, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %63) #11
  %461 = load ptr, ptr %57, align 8, !tbaa !9
  %462 = getelementptr inbounds %"struct.MirOptTestFile::Test", ptr %461, i32 0, i32 0
  %463 = invoke { ptr, i64 } @_ZNK3HIR10SimplePath10componentsEv(ptr noundef nonnull align 8 dereferenceable(8) %462)
          to label %464 unwind label %474

464:                                              ; preds = %458
  %465 = getelementptr inbounds { ptr, i64 }, ptr %63, i32 0, i32 0
  %466 = extractvalue { ptr, i64 } %463, 0
  store ptr %466, ptr %465, align 8
  %467 = getelementptr inbounds { ptr, i64 }, ptr %63, i32 0, i32 1
  %468 = extractvalue { ptr, i64 } %463, 1
  store i64 %468, ptr %467, align 8
  %469 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt4spanIK8RcStringE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %63)
          to label %470 unwind label %474

470:                                              ; preds = %464
  %471 = invoke noundef zeroext i1 @_ZSteqRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK8RcString(ptr noundef nonnull align 8 dereferenceable(32) %460, ptr noundef nonnull align 8 dereferenceable(8) %469)
          to label %472 unwind label %474

472:                                              ; preds = %470
  call void @llvm.lifetime.end.p0(i64 16, ptr %63) #11
  br i1 %471, label %473, label %478

473:                                              ; preds = %472
  store i8 1, ptr %58, align 1, !tbaa !24
  store i32 18, ptr %11, align 4
  br label %479

474:                                              ; preds = %470, %464, %458
  %475 = landingpad { ptr, i32 }
          cleanup
  %476 = extractvalue { ptr, i32 } %475, 0
  store ptr %476, ptr %9, align 8
  %477 = extractvalue { ptr, i32 } %475, 1
  store i32 %477, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %63) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #11
  br label %622

478:                                              ; preds = %472
  store i32 0, ptr %11, align 4
  br label %479

479:                                              ; preds = %478, %473
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #11
  %480 = load i32, ptr %11, align 4
  switch i32 %480, label %484 [
    i32 0, label %481
  ]

481:                                              ; preds = %479
  br label %482

482:                                              ; preds = %481
  %483 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %60) #11
  br label %455

484:                                              ; preds = %479, %457
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #11
  br label %485

485:                                              ; preds = %484
  %486 = load i8, ptr %58, align 1, !tbaa !24, !range !26, !noundef !27
  %487 = trunc i8 %486 to i1
  br i1 %487, label %489, label %488

488:                                              ; preds = %485
  store i32 17, ptr %11, align 4
  br label %490

489:                                              ; preds = %485
  store i32 0, ptr %11, align 4
  br label %490

490:                                              ; preds = %489, %488
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #11
  %491 = load i32, ptr %11, align 4
  switch i32 %491, label %611 [
    i32 0, label %492
  ]

492:                                              ; preds = %490
  br label %493

493:                                              ; preds = %492, %443
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #11
  %494 = load ptr, ptr %53, align 8, !tbaa !9
  %495 = getelementptr inbounds %struct.MirOptTestFile, ptr %494, i32 0, i32 1
  %496 = invoke noundef ptr @_ZN3HIR8CratePtrptEv(ptr noundef nonnull align 8 dereferenceable(8) %495)
          to label %497 unwind label %560

497:                                              ; preds = %493
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #11
  invoke void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %65)
          to label %498 unwind label %564

498:                                              ; preds = %497
  %499 = load ptr, ptr %57, align 8, !tbaa !9
  %500 = getelementptr inbounds %"struct.MirOptTestFile::Test", ptr %499, i32 0, i32 0
  %501 = invoke noundef nonnull align 8 dereferenceable(352) ptr @_ZNK3HIR5Crate20get_function_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %496, ptr noundef nonnull align 8 dereferenceable(8) %65, ptr noundef nonnull align 8 dereferenceable(8) %500)
          to label %502 unwind label %568

502:                                              ; preds = %498
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #11
  store ptr %501, ptr %64, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #11
  %503 = load ptr, ptr %53, align 8, !tbaa !9
  %504 = getelementptr inbounds %struct.MirOptTestFile, ptr %503, i32 0, i32 1
  %505 = invoke noundef ptr @_ZN3HIR8CratePtrptEv(ptr noundef nonnull align 8 dereferenceable(8) %504)
          to label %506 unwind label %573

506:                                              ; preds = %502
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #11
  invoke void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %67)
          to label %507 unwind label %577

507:                                              ; preds = %506
  %508 = load ptr, ptr %57, align 8, !tbaa !9
  %509 = getelementptr inbounds %"struct.MirOptTestFile::Test", ptr %508, i32 0, i32 1
  %510 = invoke noundef nonnull align 8 dereferenceable(352) ptr @_ZNK3HIR5Crate20get_function_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %505, ptr noundef nonnull align 8 dereferenceable(8) %67, ptr noundef nonnull align 8 dereferenceable(8) %509)
          to label %511 unwind label %581

511:                                              ; preds = %507
  %512 = getelementptr inbounds %"class.HIR::Function", ptr %510, i32 0, i32 11
  %513 = getelementptr inbounds %"class.HIR::ExprPtr", ptr %512, i32 0, i32 3
  %514 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZNK3MIR15FunctionPointerdeEv(ptr noundef nonnull align 8 dereferenceable(8) %513)
          to label %515 unwind label %581

515:                                              ; preds = %511
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %67) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #11
  store ptr %514, ptr %66, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 424, ptr %68) #11
  %516 = load ptr, ptr %53, align 8, !tbaa !9
  %517 = getelementptr inbounds %struct.MirOptTestFile, ptr %516, i32 0, i32 1
  %518 = invoke noundef nonnull align 8 dereferenceable(944) ptr @_ZN3HIR8CratePtrdeEv(ptr noundef nonnull align 8 dereferenceable(8) %517)
          to label %519 unwind label %586

519:                                              ; preds = %515
  invoke void @_ZN18StaticTraitResolveC2ERKN3HIR5CrateE(ptr noundef nonnull align 8 dereferenceable(424) %68, ptr noundef nonnull align 8 dereferenceable(944) %518)
          to label %520 unwind label %586

520:                                              ; preds = %519
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #11
  %521 = load ptr, ptr %64, align 8, !tbaa !9
  %522 = getelementptr inbounds %"class.HIR::Function", ptr %521, i32 0, i32 11
  %523 = getelementptr inbounds %"class.HIR::ExprPtr", ptr %522, i32 0, i32 3
  invoke void @_ZN12_GLOBAL__N_19clone_mirERK18StaticTraitResolveRKN3MIR15FunctionPointerE(ptr dead_on_unwind writable sret(%"class.MIR::FunctionPointer") align 8 %69, ptr noundef nonnull align 8 dereferenceable(424) %68, ptr noundef nonnull align 8 dereferenceable(8) %523)
          to label %524 unwind label %590

524:                                              ; preds = %520
  call void @llvm.lifetime.start.p0(i64 56, ptr %70) #11
  %525 = load ptr, ptr %57, align 8, !tbaa !9
  %526 = getelementptr inbounds %"struct.MirOptTestFile::Test", ptr %525, i32 0, i32 0
  invoke void @_ZN3HIR8ItemPathC2ERKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(56) %70, ptr noundef nonnull align 8 dereferenceable(8) %526)
          to label %527 unwind label %594

527:                                              ; preds = %524
  %528 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR15FunctionPointerdeEv(ptr noundef nonnull align 8 dereferenceable(8) %69)
          to label %529 unwind label %594

529:                                              ; preds = %527
  %530 = load ptr, ptr %64, align 8, !tbaa !9
  %531 = getelementptr inbounds %"class.HIR::Function", ptr %530, i32 0, i32 8
  %532 = load ptr, ptr %64, align 8, !tbaa !9
  %533 = getelementptr inbounds %"class.HIR::Function", ptr %532, i32 0, i32 10
  invoke void @_Z12MIR_OptimiseRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_b(ptr noundef nonnull align 8 dereferenceable(424) %68, ptr noundef nonnull align 8 dereferenceable(56) %70, ptr noundef nonnull align 8 dereferenceable(96) %528, ptr noundef nonnull align 8 dereferenceable(24) %531, ptr noundef nonnull align 8 dereferenceable(8) %533, i1 noundef zeroext true)
          to label %534 unwind label %594

534:                                              ; preds = %529
  call void @llvm.lifetime.end.p0(i64 56, ptr %70) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #11
  %535 = load ptr, ptr %53, align 8, !tbaa !9
  %536 = getelementptr inbounds %struct.MirOptTestFile, ptr %535, i32 0, i32 0
  invoke void @_ZN8RcStringC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(8) %72, ptr noundef nonnull align 8 dereferenceable(32) %536)
          to label %537 unwind label %598

537:                                              ; preds = %534
  %538 = load ptr, ptr %57, align 8, !tbaa !9
  %539 = getelementptr inbounds %"struct.MirOptTestFile::Test", ptr %538, i32 0, i32 0
  %540 = invoke { ptr, i64 } @_ZNK3HIR10SimplePath10componentsEv(ptr noundef nonnull align 8 dereferenceable(8) %539)
          to label %541 unwind label %602

541:                                              ; preds = %537
  %542 = getelementptr inbounds { ptr, i64 }, ptr %73, i32 0, i32 0
  %543 = extractvalue { ptr, i64 } %540, 0
  store ptr %543, ptr %542, align 8
  %544 = getelementptr inbounds { ptr, i64 }, ptr %73, i32 0, i32 1
  %545 = extractvalue { ptr, i64 } %540, 1
  store i64 %545, ptr %544, align 8
  %546 = getelementptr inbounds { ptr, i64 }, ptr %73, i32 0, i32 0
  %547 = load ptr, ptr %546, align 8
  %548 = getelementptr inbounds { ptr, i64 }, ptr %73, i32 0, i32 1
  %549 = load i64, ptr %548, align 8
  invoke void @_ZN3HIR10SimplePathC2E8RcStringSt4spanIKS1_E(ptr noundef nonnull align 8 dereferenceable(8) %71, ptr noundef %72, ptr %547, i64 %549)
          to label %550 unwind label %602

550:                                              ; preds = %541
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %72) #11
  %551 = load ptr, ptr %66, align 8, !tbaa !9
  %552 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR15FunctionPointerdeEv(ptr noundef nonnull align 8 dereferenceable(8) %69)
          to label %553 unwind label %606

553:                                              ; preds = %550
  %554 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_111compare_mirERKN3MIR8FunctionES3_RKN3HIR10SimplePathE(ptr noundef nonnull align 8 dereferenceable(96) %551, ptr noundef nonnull align 8 dereferenceable(96) %552, ptr noundef nonnull align 8 dereferenceable(8) %71)
          to label %555 unwind label %606

555:                                              ; preds = %553
  br i1 %554, label %610, label %556

556:                                              ; preds = %555
  %557 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR15FunctionPointerdeEv(ptr noundef nonnull align 8 dereferenceable(8) %69)
          to label %558 unwind label %606

558:                                              ; preds = %556
  invoke void @_Z12MIR_Dump_FcnRSoRKN3MIR8FunctionEj(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull align 8 dereferenceable(96) %557, i32 noundef 0)
          to label %559 unwind label %606

559:                                              ; preds = %558
  br label %610

560:                                              ; preds = %493
  %561 = landingpad { ptr, i32 }
          cleanup
  %562 = extractvalue { ptr, i32 } %561, 0
  store ptr %562, ptr %9, align 8
  %563 = extractvalue { ptr, i32 } %561, 1
  store i32 %563, ptr %10, align 4
  br label %621

564:                                              ; preds = %497
  %565 = landingpad { ptr, i32 }
          cleanup
  %566 = extractvalue { ptr, i32 } %565, 0
  store ptr %566, ptr %9, align 8
  %567 = extractvalue { ptr, i32 } %565, 1
  store i32 %567, ptr %10, align 4
  br label %572

568:                                              ; preds = %498
  %569 = landingpad { ptr, i32 }
          cleanup
  %570 = extractvalue { ptr, i32 } %569, 0
  store ptr %570, ptr %9, align 8
  %571 = extractvalue { ptr, i32 } %569, 1
  store i32 %571, ptr %10, align 4
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #11
  br label %572

572:                                              ; preds = %568, %564
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #11
  br label %621

573:                                              ; preds = %502
  %574 = landingpad { ptr, i32 }
          cleanup
  %575 = extractvalue { ptr, i32 } %574, 0
  store ptr %575, ptr %9, align 8
  %576 = extractvalue { ptr, i32 } %574, 1
  store i32 %576, ptr %10, align 4
  br label %620

577:                                              ; preds = %506
  %578 = landingpad { ptr, i32 }
          cleanup
  %579 = extractvalue { ptr, i32 } %578, 0
  store ptr %579, ptr %9, align 8
  %580 = extractvalue { ptr, i32 } %578, 1
  store i32 %580, ptr %10, align 4
  br label %585

581:                                              ; preds = %511, %507
  %582 = landingpad { ptr, i32 }
          cleanup
  %583 = extractvalue { ptr, i32 } %582, 0
  store ptr %583, ptr %9, align 8
  %584 = extractvalue { ptr, i32 } %582, 1
  store i32 %584, ptr %10, align 4
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %67) #11
  br label %585

585:                                              ; preds = %581, %577
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #11
  br label %620

586:                                              ; preds = %519, %515
  %587 = landingpad { ptr, i32 }
          cleanup
  %588 = extractvalue { ptr, i32 } %587, 0
  store ptr %588, ptr %9, align 8
  %589 = extractvalue { ptr, i32 } %587, 1
  store i32 %589, ptr %10, align 4
  br label %619

590:                                              ; preds = %520
  %591 = landingpad { ptr, i32 }
          cleanup
  %592 = extractvalue { ptr, i32 } %591, 0
  store ptr %592, ptr %9, align 8
  %593 = extractvalue { ptr, i32 } %591, 1
  store i32 %593, ptr %10, align 4
  br label %618

594:                                              ; preds = %529, %527, %524
  %595 = landingpad { ptr, i32 }
          cleanup
  %596 = extractvalue { ptr, i32 } %595, 0
  store ptr %596, ptr %9, align 8
  %597 = extractvalue { ptr, i32 } %595, 1
  store i32 %597, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 56, ptr %70) #11
  br label %617

598:                                              ; preds = %534
  %599 = landingpad { ptr, i32 }
          cleanup
  %600 = extractvalue { ptr, i32 } %599, 0
  store ptr %600, ptr %9, align 8
  %601 = extractvalue { ptr, i32 } %599, 1
  store i32 %601, ptr %10, align 4
  br label %616

602:                                              ; preds = %541, %537
  %603 = landingpad { ptr, i32 }
          cleanup
  %604 = extractvalue { ptr, i32 } %603, 0
  store ptr %604, ptr %9, align 8
  %605 = extractvalue { ptr, i32 } %603, 1
  store i32 %605, ptr %10, align 4
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %72) #11
  br label %616

606:                                              ; preds = %558, %556, %553, %550
  %607 = landingpad { ptr, i32 }
          cleanup
  %608 = extractvalue { ptr, i32 } %607, 0
  store ptr %608, ptr %9, align 8
  %609 = extractvalue { ptr, i32 } %607, 1
  store i32 %609, ptr %10, align 4
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %71) #11
  br label %616

610:                                              ; preds = %559, %555
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %71) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #11
  call void @_ZN3MIR15FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %69) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #11
  call void @_ZN18StaticTraitResolveD2Ev(ptr noundef nonnull align 8 dereferenceable(424) %68) #11
  call void @llvm.lifetime.end.p0(i64 424, ptr %68) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #11
  store i32 0, ptr %11, align 4
  br label %611

611:                                              ; preds = %610, %490
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #11
  %612 = load i32, ptr %11, align 4
  switch i32 %612, label %640 [
    i32 0, label %613
    i32 17, label %614
  ]

613:                                              ; preds = %611
  br label %614

614:                                              ; preds = %613, %611
  %615 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN14MirOptTestFile4TestESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %55) #11
  br label %440

616:                                              ; preds = %606, %602, %598
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #11
  br label %617

617:                                              ; preds = %616, %594
  call void @_ZN3MIR15FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %69) #11
  br label %618

618:                                              ; preds = %617, %590
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #11
  call void @_ZN18StaticTraitResolveD2Ev(ptr noundef nonnull align 8 dereferenceable(424) %68) #11
  br label %619

619:                                              ; preds = %618, %586
  call void @llvm.lifetime.end.p0(i64 424, ptr %68) #11
  br label %620

620:                                              ; preds = %619, %585, %573
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #11
  br label %621

621:                                              ; preds = %620, %572, %560
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #11
  br label %622

622:                                              ; preds = %621, %474
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #11
  call void @_ZN15DebugTimedPhaseD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %49) #11
  br label %627

623:                                              ; preds = %442
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #11
  br label %624

624:                                              ; preds = %623
  %625 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIP14MirOptTestFileSt6vectorIS1_SaIS1_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %51) #11
  br label %422

626:                                              ; preds = %424
  call void @_ZN15DebugTimedPhaseD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %49) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %49) #11
  store i32 0, ptr %3, align 4
  store i32 1, ptr %11, align 4
  call void @_ZNSt6vectorI14MirOptTestFileSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #11
  br label %629

627:                                              ; preds = %622, %426
  call void @llvm.lifetime.end.p0(i64 16, ptr %49) #11
  br label %628

628:                                              ; preds = %627, %425, %286, %257, %228
  call void @_ZNSt6vectorI14MirOptTestFileSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #11
  br label %631

629:                                              ; preds = %626, %84
  call void @_ZN7OptionsD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %8) #11
  call void @llvm.lifetime.end.p0(i64 56, ptr %8) #11
  %630 = load i32, ptr %3, align 4
  ret i32 %630

631:                                              ; preds = %628, %85
  call void @_ZN7OptionsD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %8) #11
  call void @llvm.lifetime.end.p0(i64 56, ptr %8) #11
  br label %632

632:                                              ; preds = %631
  %633 = load ptr, ptr %9, align 8
  %634 = load i32, ptr %10, align 4
  %635 = insertvalue { ptr, i32 } poison, ptr %633, 0
  %636 = insertvalue { ptr, i32 } %635, i32 %634, 1
  resume { ptr, i32 } %636

637:                                              ; preds = %200
  %638 = landingpad { ptr, i32 }
          catch ptr null
  %639 = extractvalue { ptr, i32 } %638, 0
  call void @__clang_call_terminate(ptr %639) #12
  unreachable

640:                                              ; preds = %611, %382, %197
  unreachable
}

declare void @_Z17debug_init_phasesPKcSt16initializer_listIS0_E(ptr noundef, ptr, i64) #1

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3

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

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

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

declare i32 @__gxx_personality_v0(...)

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

declare void @_ZN15DebugTimedPhaseC1EPKc(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #1

declare ptr @opendir(ptr noundef) #1

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN7helperslsERSoRKNS_4pathE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) #5

; 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: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #5 align 2

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

declare ptr @readdir(ptr noundef) #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7helpers4pathdvEPKc(ptr dead_on_unwind noalias writable sret(%"class.helpers::path") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #5 align 2

; Function Attrs: nounwind
declare i32 @stat(ptr noundef, ptr noundef) #7

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorI14MirOptTestFileSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(64)) #5 align 2

declare void @_ZN14MirOptTestFile14load_from_fileERKN7helpers4pathE(ptr dead_on_unwind writable sret(%struct.MirOptTestFile) align 8, ptr noundef nonnull align 8 dereferenceable(32)) #1

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

; Function Attrs: nounwind memory(none)
declare i32 @llvm.eh.typeid.for.p0(ptr) #9

declare ptr @__cxa_begin_catch(ptr)

declare void @__cxa_end_catch()

; Function Attrs: noinline noreturn nounwind uwtable
declare hidden void @__clang_call_terminate(ptr noundef) #10

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

declare i32 @closedir(ptr noundef) #1

; Function Attrs: nounwind
declare void @_ZN15DebugTimedPhaseD1Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #7

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIP14MirOptTestFileSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #8

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

declare void @_Z15ConvertHIR_BindRN3HIR5CrateE(ptr noundef nonnull align 8 dereferenceable(944)) #1

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

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

declare void @_Z14MIR_CheckCrateRN3HIR5CrateE(ptr noundef nonnull align 8 dereferenceable(944)) #1

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPN14MirOptTestFile4TestESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #8

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #8

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i64 } @_ZNK3HIR10SimplePath10componentsEv(ptr noundef nonnull align 8 dereferenceable(8)) #5 align 2

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

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

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

declare noundef nonnull align 8 dereferenceable(352) ptr @_ZNK3HIR5Crate20get_function_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #1

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

; Function Attrs: nounwind
declare void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #7

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN18StaticTraitResolveC2ERKN3HIR5CrateE(ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(944)) unnamed_addr #5 align 2

declare void @_Z15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_(ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8)) #1

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(96) ptr @_ZNK3MIR15FunctionPointerdeEv(ptr noundef nonnull align 8 dereferenceable(8)) #5 align 2

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_19clone_mirERK18StaticTraitResolveRKN3MIR15FunctionPointerE(ptr dead_on_unwind noalias writable sret(%"class.MIR::FunctionPointer") align 8, ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(8)) #5

declare void @_Z12MIR_OptimiseRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_b(ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8), i1 noundef zeroext) #1

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR15FunctionPointerdeEv(ptr noundef nonnull align 8 dereferenceable(8)) #5 align 2

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

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

; Function Attrs: nounwind
declare void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #7

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_111compare_mirERKN3MIR8FunctionES3_RKN3HIR10SimplePathE(ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(8)) #5

declare void @_Z12MIR_Dump_FcnRSoRKN3MIR8FunctionEj(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(96), i32 noundef) #1

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{i64 0, i64 40, !12}
!12 = !{!7, !7, i64 0}
!13 = !{!14, !10, i64 0}
!14 = !{!"_ZTSSt16initializer_listIPKcE", !10, i64 0, !15, i64 8}
!15 = !{!"long", !7, i64 0}
!16 = !{!14, !15, i64 8}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.mustprogress"}
!19 = !{!20, !6, i64 24}
!20 = !{!"_ZTS4stat", !15, i64 0, !15, i64 8, !15, i64 16, !6, i64 24, !6, i64 28, !6, i64 32, !6, i64 36, !15, i64 40, !15, i64 48, !15, i64 56, !15, i64 64, !21, i64 72, !21, i64 88, !21, i64 104, !7, i64 120}
!21 = !{!"_ZTS8timespec", !15, i64 0, !15, i64 8}
!22 = !{!23, !23, i64 0}
!23 = !{!"vtable pointer", !8, i64 0}
!24 = !{!25, !25, i64 0}
!25 = !{!"bool", !7, i64 0}
!26 = !{i8 0, i8 2}
!27 = !{}


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

%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%struct.Options = type { %"class.helpers::path", %"class.std::vector" }
%"class.helpers::path" = type { %"class.std::__cxx11::basic_string" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<MirOptTestFile, std::allocator<MirOptTestFile>>::_Vector_impl" }
%"struct.std::_Vector_base<MirOptTestFile, std::allocator<MirOptTestFile>>::_Vector_impl" = type { %"struct.std::_Vector_base<MirOptTestFile, std::allocator<MirOptTestFile>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MirOptTestFile, std::allocator<MirOptTestFile>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.DebugTimedPhase = type { ptr, i64 }
%struct.stat = type { i64, i64, i64, i32, i32, i32, i32, i64, i64, i64, i64, %struct.timespec, %struct.timespec, %struct.timespec, [3 x i64] }
%struct.timespec = type { i64, i64 }
%struct.MirOptTestFile = type { %"class.std::__cxx11::basic_string", %"class.HIR::CratePtr", %"class.std::vector.8" }
%"class.HIR::CratePtr" = type { ptr }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<MirOptTestFile::Test, std::allocator<MirOptTestFile::Test>>::_Vector_impl" }
%"struct.std::_Vector_base<MirOptTestFile::Test, std::allocator<MirOptTestFile::Test>>::_Vector_impl" = type { %"struct.std::_Vector_base<MirOptTestFile::Test, std::allocator<MirOptTestFile::Test>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MirOptTestFile::Test, std::allocator<MirOptTestFile::Test>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.159" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.160" = type { ptr }
%"class.std::span" = type { ptr, i64 }
%struct.Span = type { ptr }
%class.StaticTraitResolve = type { ptr, %struct.TraitResolveCommon, i32, %"class.std::map.207", %"class.std::map.207", %"class.std::map.207", %"class.std::map.212" }
%struct.TraitResolveCommon = type { ptr, ptr, ptr, %"class.std::map.196", %class.RangeVecMap, %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath" }
%"class.std::map.196" = type { %"class.std::_Rb_tree.197" }
%"class.std::_Rb_tree.197" = type { %"struct.std::_Rb_tree<HIR::TypeRef, std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>, std::_Select1st<std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>>, std::less<HIR::TypeRef>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::TypeRef, std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>, std::_Select1st<std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>>, std::less<HIR::TypeRef>>::_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.RangeVecMap = type <{ %"class.std::vector.202", [8 x i8] }>
%"class.std::vector.202" = type { %"struct.std::_Vector_base.203" }
%"struct.std::_Vector_base.203" = type { %"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%"class.std::map.207" = type { %"class.std::_Rb_tree.208" }
%"class.std::_Rb_tree.208" = type { %"struct.std::_Rb_tree<HIR::TypeRef, std::pair<const HIR::TypeRef, bool>, std::_Select1st<std::pair<const HIR::TypeRef, bool>>, std::less<HIR::TypeRef>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::TypeRef, std::pair<const HIR::TypeRef, bool>, std::_Select1st<std::pair<const HIR::TypeRef, bool>>, std::less<HIR::TypeRef>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.212" = type { %"class.std::_Rb_tree.213" }
%"class.std::_Rb_tree.213" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, HIR::TypeRef>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, HIR::TypeRef>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, HIR::TypeRef>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, HIR::TypeRef>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.HIR::ItemPath" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.MIR::FunctionPointer" = type { ptr }
%class.RcString = type { ptr }

@.str = external hidden unnamed_addr constant [14 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [10 x i8], align 1
@constinit = external hidden local_unnamed_addr constant [5 x ptr], align 8
@_ZSt4cerr = external global %"class.std::basic_ostream", align 8
@.str.6 = external hidden unnamed_addr constant [26 x i8], align 1
@_ZTISt9exception = external constant ptr
@.str.7 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [20 x i8], align 1

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef range(i32 0, 2) i32 @main(i32 noundef %0, ptr noundef %1) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %3 = alloca [5 x ptr], align 8
  %4 = alloca %struct.Options, align 8
  %5 = alloca %"class.std::vector.3", align 8
  %6 = alloca %class.DebugTimedPhase, align 8
  %7 = alloca %"class.helpers::path", align 8
  %8 = alloca %struct.stat, align 8
  %9 = alloca %struct.MirOptTestFile, align 8
  %10 = alloca %class.DebugTimedPhase, align 8
  %11 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %12 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %13 = alloca %class.DebugTimedPhase, align 8
  %14 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %15 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %16 = alloca %class.DebugTimedPhase, align 8
  %17 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %18 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %19 = alloca %"class.__gnu_cxx::__normal_iterator.159", align 8
  %20 = alloca %"class.__gnu_cxx::__normal_iterator.159", align 8
  %21 = alloca %"class.__gnu_cxx::__normal_iterator.160", align 8
  %22 = alloca %"class.__gnu_cxx::__normal_iterator.160", align 8
  %23 = alloca %"class.std::span", align 8
  %24 = alloca %struct.Span, align 8
  %25 = alloca %class.StaticTraitResolve, align 8
  %26 = alloca %"class.HIR::ItemPath", align 8
  %27 = alloca %class.DebugTimedPhase, align 8
  %28 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %29 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %30 = alloca %"class.__gnu_cxx::__normal_iterator.159", align 8
  %31 = alloca %"class.__gnu_cxx::__normal_iterator.159", align 8
  %32 = alloca %"class.__gnu_cxx::__normal_iterator.160", align 8
  %33 = alloca %"class.__gnu_cxx::__normal_iterator.160", align 8
  %34 = alloca %"class.std::span", align 8
  %35 = alloca %struct.Span, align 8
  %36 = alloca %struct.Span, align 8
  %37 = alloca %class.StaticTraitResolve, align 8
  %38 = alloca %"class.MIR::FunctionPointer", align 8
  %39 = alloca %"class.HIR::ItemPath", align 8
  %40 = alloca %"struct.HIR::SimplePath", align 8
  %41 = alloca %class.RcString, align 8
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %3) #12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %3, ptr noundef nonnull align 8 dereferenceable(40) @constinit, i64 40, i1 false), !tbaa.struct !5
  call void @_Z17debug_init_phasesPKcSt16initializer_listIS0_E(ptr noundef nonnull @.str, ptr nonnull %3, i64 5)
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %3) #12
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %4) #12
  call void @_ZN7OptionsC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %4)
  %42 = invoke noundef zeroext i1 @_ZN7Options5parseEiPPc(ptr noundef nonnull align 8 dereferenceable(56) %4, i32 noundef %0, ptr noundef %1)
          to label %43 unwind label %44

43:                                               ; preds = %2
  br i1 %42, label %48, label %318

44:                                               ; preds = %2
  %45 = landingpad { ptr, i32 }
          cleanup
  %46 = extractvalue { ptr, i32 } %45, 0
  %47 = extractvalue { ptr, i32 } %45, 1
  br label %319

48:                                               ; preds = %43
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) #12
  call void @_ZNSt6vectorI14MirOptTestFileSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #12
  invoke void @_ZN15DebugTimedPhaseC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull @.str.1)
          to label %49 unwind label %60

49:                                               ; preds = %48
  %50 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK7helpers4path3strB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(32) %4)
  %51 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %50) #12
  %52 = call ptr @opendir(ptr noundef %51)
  %53 = icmp eq ptr %52, null
  br i1 %53, label %54, label %68

54:                                               ; preds = %49
  %55 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.6)
          to label %56 unwind label %64

56:                                               ; preds = %54
  %57 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7helperslsERSoRKNS_4pathE(ptr noundef nonnull align 8 dereferenceable(8) %55, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %58 unwind label %64

58:                                               ; preds = %56
  %59 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %57, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %68 unwind label %64

60:                                               ; preds = %48
  %61 = landingpad { ptr, i32 }
          cleanup
  %62 = extractvalue { ptr, i32 } %61, 0
  %63 = extractvalue { ptr, i32 } %61, 1
  br label %131

64:                                               ; preds = %58, %56, %54
  %65 = landingpad { ptr, i32 }
          cleanup
  %66 = extractvalue { ptr, i32 } %65, 0
  %67 = extractvalue { ptr, i32 } %65, 1
  br label %130

68:                                               ; preds = %58, %49
  %69 = getelementptr inbounds i8, ptr %8, i64 24
  br label %70

70:                                               ; preds = %.backedge, %68
  %71 = invoke ptr @readdir(ptr noundef %52)
          to label %72 unwind label %73

72:                                               ; preds = %70
  %.not = icmp eq ptr %71, null
  br i1 %.not, label %.thread, label %77

73:                                               ; preds = %70
  %74 = landingpad { ptr, i32 }
          cleanup
  %75 = extractvalue { ptr, i32 } %74, 0
  %76 = extractvalue { ptr, i32 } %74, 1
  br label %130

77:                                               ; preds = %72
  %78 = getelementptr inbounds i8, ptr %71, i64 19
  %79 = load i8, ptr %78, align 1, !tbaa !6
  %80 = icmp eq i8 %79, 46
  br i1 %80, label %.backedge, label %81

.backedge:                                        ; preds = %77, %118
  br label %70, !llvm.loop !9

81:                                               ; preds = %77
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #12
  invoke void @_ZNK7helpers4pathdvEPKc(ptr dead_on_unwind nonnull writable sret(%"class.helpers::path") align 8 %7, ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull %78)
          to label %82 unwind label %88

82:                                               ; preds = %81
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %8) #12
  %83 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK7helpers4path3strB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(32) %7)
  %84 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %83) #12
  %85 = call i32 @stat(ptr noundef %84, ptr noundef nonnull %8) #12
  %86 = load i32, ptr %69, align 8, !tbaa !11
  %87 = and i32 %86, 61440
  %.not107 = icmp eq i32 %87, 32768
  br i1 %.not107, label %92, label %118, !llvm.loop !9

88:                                               ; preds = %81
  %89 = landingpad { ptr, i32 }
          cleanup
  %90 = extractvalue { ptr, i32 } %89, 0
  %91 = extractvalue { ptr, i32 } %89, 1
  br label %124

92:                                               ; preds = %82
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %9) #12
  invoke void @_ZN14MirOptTestFile14load_from_fileERKN7helpers4pathE(ptr dead_on_unwind nonnull writable sret(%struct.MirOptTestFile) align 8 %9, ptr noundef nonnull align 8 dereferenceable(32) %7)
          to label %93 unwind label %95

93:                                               ; preds = %92
  invoke void @_ZNSt6vectorI14MirOptTestFileSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(64) %9)
          to label %94 unwind label %97

94:                                               ; preds = %93
  call void @_ZN14MirOptTestFileD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %9) #12
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %9) #12
  br label %118

95:                                               ; preds = %92
  %96 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  br label %99

97:                                               ; preds = %93
  %98 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @_ZN14MirOptTestFileD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %9) #12
  br label %99

99:                                               ; preds = %97, %95
  %.pn = phi { ptr, i32 } [ %98, %97 ], [ %96, %95 ]
  %.070 = extractvalue { ptr, i32 } %.pn, 0
  %.071 = extractvalue { ptr, i32 } %.pn, 1
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %9) #12
  %100 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt9exception) #12
  %101 = icmp eq i32 %.071, %100
  br i1 %101, label %102, label %.loopexit

102:                                              ; preds = %99
  %103 = call ptr @__cxa_begin_catch(ptr %.070) #12
  %104 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.7)
          to label %105 unwind label %119

105:                                              ; preds = %102
  %106 = load ptr, ptr %103, align 8, !tbaa !16
  %107 = getelementptr inbounds i8, ptr %106, i64 16
  %108 = load ptr, ptr %107, align 8
  %109 = call noundef ptr %108(ptr noundef nonnull align 8 dereferenceable(8) %103) #12
  %110 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %104, ptr noundef %109)
          to label %111 unwind label %119

111:                                              ; preds = %105
  %112 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %110, ptr noundef nonnull @.str.8)
          to label %113 unwind label %119

113:                                              ; preds = %111
  %114 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7helperslsERSoRKNS_4pathE(ptr noundef nonnull align 8 dereferenceable(8) %112, ptr noundef nonnull align 8 dereferenceable(32) %7)
          to label %115 unwind label %119

115:                                              ; preds = %113
  %116 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %114, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %117 unwind label %119

117:                                              ; preds = %115
  invoke void @__cxa_end_catch()
          to label %118 unwind label %121

118:                                              ; preds = %94, %117, %82
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %8) #12
  call void @_ZN7helpers4pathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #12
  br label %.backedge

119:                                              ; preds = %115, %113, %111, %105, %102
  %120 = landingpad { ptr, i32 }
          cleanup
  invoke void @__cxa_end_catch()
          to label %123 unwind label %322

121:                                              ; preds = %117
  %122 = landingpad { ptr, i32 }
          cleanup
  br label %123

123:                                              ; preds = %119, %121
  %.pn109 = phi { ptr, i32 } [ %122, %121 ], [ %120, %119 ]
  %.1 = extractvalue { ptr, i32 } %.pn109, 0
  %.172 = extractvalue { ptr, i32 } %.pn109, 1
  br label %.loopexit

.loopexit:                                        ; preds = %99, %123
  %.273 = phi i32 [ %.172, %123 ], [ %.071, %99 ]
  %.2 = phi ptr [ %.1, %123 ], [ %.070, %99 ]
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %8) #12
  call void @_ZN7helpers4pathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #12
  br label %124

124:                                              ; preds = %.loopexit, %88
  %.374 = phi i32 [ %.273, %.loopexit ], [ %91, %88 ]
  %.3 = phi ptr [ %.2, %.loopexit ], [ %90, %88 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #12
  br label %130

.thread:                                          ; preds = %72
  %125 = call i32 @closedir(ptr noundef %52)
  call void @_ZN15DebugTimedPhaseD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %6) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #12
  invoke void @_ZN15DebugTimedPhaseC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef nonnull @.str.2)
          to label %126 unwind label %132

126:                                              ; preds = %.thread
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #12
  %127 = call ptr @_ZNSt6vectorI14MirOptTestFileSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #12
  store ptr %127, ptr %11, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #12
  %128 = call ptr @_ZNSt6vectorI14MirOptTestFileSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #12
  store ptr %128, ptr %12, align 8
  %129 = call noundef zeroext i1 @_ZN9__gnu_cxxneIP14MirOptTestFileSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #12
  br i1 %129, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %137, %126
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #12
  call void @_ZN15DebugTimedPhaseD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #12
  invoke void @_ZN15DebugTimedPhaseC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull @.str.3)
          to label %142 unwind label %147

130:                                              ; preds = %73, %124, %64
  %.576 = phi i32 [ %67, %64 ], [ %.374, %124 ], [ %76, %73 ]
  %.5 = phi ptr [ %66, %64 ], [ %.3, %124 ], [ %75, %73 ]
  call void @_ZN15DebugTimedPhaseD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %6) #12
  br label %131

131:                                              ; preds = %130, %60
  %.677 = phi i32 [ %.576, %130 ], [ %63, %60 ]
  %.6 = phi ptr [ %.5, %130 ], [ %62, %60 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #12
  br label %317

132:                                              ; preds = %.thread
  %133 = landingpad { ptr, i32 }
          cleanup
  br label %146

.lr.ph:                                           ; preds = %126, %137
  %134 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP14MirOptTestFileSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #12
  %135 = getelementptr inbounds i8, ptr %134, i64 32
  %136 = call noundef nonnull align 8 dereferenceable(944) ptr @_ZN3HIR8CratePtrdeEv(ptr noundef nonnull align 8 dereferenceable(8) %135)
  invoke void @_Z15ConvertHIR_BindRN3HIR5CrateE(ptr noundef nonnull align 8 dereferenceable(944) %136)
          to label %137 unwind label %140

137:                                              ; preds = %.lr.ph
  %138 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIP14MirOptTestFileSt6vectorIS1_SaIS1_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #12
  %139 = call noundef zeroext i1 @_ZN9__gnu_cxxneIP14MirOptTestFileSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #12
  br i1 %139, label %.lr.ph, label %._crit_edge

140:                                              ; preds = %.lr.ph
  %141 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #12
  call void @_ZN15DebugTimedPhaseD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #12
  br label %146

142:                                              ; preds = %._crit_edge
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #12
  %143 = call ptr @_ZNSt6vectorI14MirOptTestFileSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #12
  store ptr %143, ptr %14, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #12
  %144 = call ptr @_ZNSt6vectorI14MirOptTestFileSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #12
  store ptr %144, ptr %15, align 8
  %145 = call noundef zeroext i1 @_ZN9__gnu_cxxneIP14MirOptTestFileSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 8 dereferenceable(8) %15) #12
  br i1 %145, label %.lr.ph143, label %._crit_edge144

._crit_edge144:                                   ; preds = %152, %142
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #12
  call void @_ZN15DebugTimedPhaseD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #12
  invoke void @_ZN15DebugTimedPhaseC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef nonnull @.str.4)
          to label %157 unwind label %164

146:                                              ; preds = %140, %132
  %.pn127 = phi { ptr, i32 } [ %141, %140 ], [ %133, %132 ]
  %.7 = extractvalue { ptr, i32 } %.pn127, 0
  %.778 = extractvalue { ptr, i32 } %.pn127, 1
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #12
  br label %317

147:                                              ; preds = %._crit_edge
  %148 = landingpad { ptr, i32 }
          cleanup
  br label %163

.lr.ph143:                                        ; preds = %142, %152
  %149 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP14MirOptTestFileSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %14) #12
  %150 = getelementptr inbounds i8, ptr %149, i64 32
  %151 = call noundef nonnull align 8 dereferenceable(944) ptr @_ZN3HIR8CratePtrdeEv(ptr noundef nonnull align 8 dereferenceable(8) %150)
  invoke void @_Z14MIR_CheckCrateRN3HIR5CrateE(ptr noundef nonnull align 8 dereferenceable(944) %151)
          to label %152 unwind label %155

152:                                              ; preds = %.lr.ph143
  %153 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIP14MirOptTestFileSt6vectorIS1_SaIS1_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %14) #12
  %154 = call noundef zeroext i1 @_ZN9__gnu_cxxneIP14MirOptTestFileSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 8 dereferenceable(8) %15) #12
  br i1 %154, label %.lr.ph143, label %._crit_edge144

155:                                              ; preds = %.lr.ph143
  %156 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #12
  call void @_ZN15DebugTimedPhaseD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #12
  br label %163

157:                                              ; preds = %._crit_edge144
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #12
  %158 = call ptr @_ZNSt6vectorI14MirOptTestFileSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #12
  store ptr %158, ptr %17, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #12
  %159 = call ptr @_ZNSt6vectorI14MirOptTestFileSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #12
  store ptr %159, ptr %18, align 8
  %160 = call noundef zeroext i1 @_ZN9__gnu_cxxneIP14MirOptTestFileSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %18) #12
  br i1 %160, label %.lr.ph151, label %._crit_edge152

.lr.ph151:                                        ; preds = %157
  %161 = getelementptr inbounds i8, ptr %4, i64 32
  %162 = getelementptr inbounds i8, ptr %23, i64 8
  br label %166

._crit_edge152:                                   ; preds = %._crit_edge149, %157
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #12
  call void @_ZN15DebugTimedPhaseD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %27) #12
  invoke void @_ZN15DebugTimedPhaseC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %27, ptr noundef nonnull @.str.5)
          to label %219 unwind label %226

163:                                              ; preds = %155, %147
  %.pn125 = phi { ptr, i32 } [ %156, %155 ], [ %148, %147 ]
  %.8 = extractvalue { ptr, i32 } %.pn125, 0
  %.879 = extractvalue { ptr, i32 } %.pn125, 1
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #12
  br label %317

164:                                              ; preds = %._crit_edge144
  %165 = landingpad { ptr, i32 }
          cleanup
  br label %225

166:                                              ; preds = %.lr.ph151, %._crit_edge149
  %167 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP14MirOptTestFileSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %17) #12
  %168 = getelementptr inbounds i8, ptr %167, i64 40
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #12
  %169 = call ptr @_ZNSt6vectorIN14MirOptTestFile4TestESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %168) #12
  store ptr %169, ptr %19, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #12
  %170 = call ptr @_ZNSt6vectorIN14MirOptTestFile4TestESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %168) #12
  store ptr %170, ptr %20, align 8
  %171 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN14MirOptTestFile4TestESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %20) #12
  br i1 %171, label %.lr.ph148, label %._crit_edge149

.lr.ph148:                                        ; preds = %166
  %172 = getelementptr inbounds i8, ptr %167, i64 32
  br label %175

._crit_edge149:                                   ; preds = %208, %166
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #12
  %173 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIP14MirOptTestFileSt6vectorIS1_SaIS1_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %17) #12
  %174 = call noundef zeroext i1 @_ZN9__gnu_cxxneIP14MirOptTestFileSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %18) #12
  br i1 %174, label %166, label %._crit_edge152

175:                                              ; preds = %.lr.ph148, %208
  %176 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN14MirOptTestFile4TestESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #12
  %177 = call noundef zeroext i1 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %161) #12
  br i1 %177, label %196, label %178

178:                                              ; preds = %175
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #12
  %179 = call ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %161) #12
  store ptr %179, ptr %21, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #12
  %180 = call ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %161) #12
  store ptr %180, ptr %22, align 8
  %181 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %22) #12
  br i1 %181, label %.lr.ph146, label %.critedge

.lr.ph146:                                        ; preds = %178, %192
  %182 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %21) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %23) #12
  %183 = invoke { ptr, i64 } @_ZNK3HIR10SimplePath10componentsEv(ptr noundef nonnull align 8 dereferenceable(8) %176)
          to label %184 unwind label %190

184:                                              ; preds = %.lr.ph146
  %185 = extractvalue { ptr, i64 } %183, 0
  store ptr %185, ptr %23, align 8
  %186 = extractvalue { ptr, i64 } %183, 1
  store i64 %186, ptr %162, align 8
  %187 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt4spanIK8RcStringE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %23)
  %188 = invoke noundef zeroext i1 @_ZSteqRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK8RcString(ptr noundef nonnull align 8 dereferenceable(32) %182, ptr noundef nonnull align 8 dereferenceable(8) %187)
          to label %189 unwind label %190

189:                                              ; preds = %184
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #12
  br i1 %188, label %195, label %192

190:                                              ; preds = %184, %.lr.ph146
  %191 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #12
  br label %218

192:                                              ; preds = %189
  %193 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %21) #12
  %194 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %22) #12
  br i1 %194, label %.lr.ph146, label %.critedge

195:                                              ; preds = %189
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #12
  br label %196

196:                                              ; preds = %195, %175
  %197 = call noundef ptr @_ZN3HIR8CratePtrptEv(ptr noundef nonnull align 8 dereferenceable(8) %172)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #12
  call void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %24)
  %198 = invoke noundef nonnull align 8 dereferenceable(352) ptr @_ZNK3HIR5Crate20get_function_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %197, ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %176)
          to label %199 unwind label %211

199:                                              ; preds = %196
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #12
  call void @llvm.lifetime.start.p0(i64 424, ptr nonnull %25) #12
  %200 = call noundef nonnull align 8 dereferenceable(944) ptr @_ZN3HIR8CratePtrdeEv(ptr noundef nonnull align 8 dereferenceable(8) %172)
  invoke void @_ZN18StaticTraitResolveC2ERKN3HIR5CrateE(ptr noundef nonnull align 8 dereferenceable(424) %25, ptr noundef nonnull align 8 dereferenceable(944) %200)
          to label %201 unwind label %213

201:                                              ; preds = %199
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %26) #12
  call void @_ZN3HIR8ItemPathC2ERKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(56) %26, ptr noundef nonnull align 8 dereferenceable(8) %176)
  %202 = getelementptr inbounds i8, ptr %198, i64 304
  %203 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZNK3MIR15FunctionPointerdeEv(ptr noundef nonnull align 8 dereferenceable(8) %202)
          to label %204 unwind label %215

204:                                              ; preds = %201
  %205 = getelementptr inbounds i8, ptr %198, i64 208
  %206 = getelementptr inbounds i8, ptr %198, i64 240
  invoke void @_Z15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_(ptr noundef nonnull align 8 dereferenceable(424) %25, ptr noundef nonnull align 8 dereferenceable(56) %26, ptr noundef nonnull align 8 dereferenceable(96) %203, ptr noundef nonnull align 8 dereferenceable(24) %205, ptr noundef nonnull align 8 dereferenceable(8) %206)
          to label %207 unwind label %215

207:                                              ; preds = %204
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %26) #12
  call void @_ZN18StaticTraitResolveD2Ev(ptr noundef nonnull align 8 dereferenceable(424) %25) #12
  call void @llvm.lifetime.end.p0(i64 424, ptr nonnull %25) #12
  br label %208

.critedge:                                        ; preds = %192, %178
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #12
  br label %208

208:                                              ; preds = %.critedge, %207
  %209 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN14MirOptTestFile4TestESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #12
  %210 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN14MirOptTestFile4TestESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %20) #12
  br i1 %210, label %175, label %._crit_edge149

211:                                              ; preds = %196
  %212 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #12
  br label %218

213:                                              ; preds = %199
  %214 = landingpad { ptr, i32 }
          cleanup
  br label %217

215:                                              ; preds = %204, %201
  %216 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %26) #12
  call void @_ZN18StaticTraitResolveD2Ev(ptr noundef nonnull align 8 dereferenceable(424) %25) #12
  br label %217

217:                                              ; preds = %215, %213
  %.pn120 = phi { ptr, i32 } [ %216, %215 ], [ %214, %213 ]
  call void @llvm.lifetime.end.p0(i64 424, ptr nonnull %25) #12
  br label %218

218:                                              ; preds = %211, %217, %190
  %.pn120.pn.pn = phi { ptr, i32 } [ %191, %190 ], [ %.pn120, %217 ], [ %212, %211 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #12
  call void @_ZN15DebugTimedPhaseD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #12
  br label %225

219:                                              ; preds = %._crit_edge152
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #12
  %220 = call ptr @_ZNSt6vectorI14MirOptTestFileSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #12
  store ptr %220, ptr %28, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #12
  %221 = call ptr @_ZNSt6vectorI14MirOptTestFileSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #12
  store ptr %221, ptr %29, align 8
  %222 = call noundef zeroext i1 @_ZN9__gnu_cxxneIP14MirOptTestFileSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %29) #12
  br i1 %222, label %.lr.ph159, label %._crit_edge160

.lr.ph159:                                        ; preds = %219
  %223 = getelementptr inbounds i8, ptr %4, i64 32
  %224 = getelementptr inbounds i8, ptr %34, i64 8
  br label %228

._crit_edge160:                                   ; preds = %._crit_edge157, %219
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #12
  call void @_ZN15DebugTimedPhaseD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %27) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #12
  call void @_ZNSt6vectorI14MirOptTestFileSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #12
  br label %318

225:                                              ; preds = %218, %164
  %.pn120.pn.pn.pn = phi { ptr, i32 } [ %.pn120.pn.pn, %218 ], [ %165, %164 ]
  %.12 = extractvalue { ptr, i32 } %.pn120.pn.pn.pn, 0
  %.1283 = extractvalue { ptr, i32 } %.pn120.pn.pn.pn, 1
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #12
  br label %317

226:                                              ; preds = %._crit_edge152
  %227 = landingpad { ptr, i32 }
          cleanup
  br label %316

228:                                              ; preds = %.lr.ph159, %._crit_edge157
  %229 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP14MirOptTestFileSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %28) #12
  %230 = getelementptr inbounds i8, ptr %229, i64 40
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #12
  %231 = call ptr @_ZNSt6vectorIN14MirOptTestFile4TestESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %230) #12
  store ptr %231, ptr %30, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #12
  %232 = call ptr @_ZNSt6vectorIN14MirOptTestFile4TestESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %230) #12
  store ptr %232, ptr %31, align 8
  %233 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN14MirOptTestFile4TestESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %31) #12
  br i1 %233, label %.lr.ph156, label %._crit_edge157

.lr.ph156:                                        ; preds = %228
  %234 = getelementptr inbounds i8, ptr %229, i64 32
  br label %237

._crit_edge157:                                   ; preds = %308, %228
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #12
  %235 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIP14MirOptTestFileSt6vectorIS1_SaIS1_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %28) #12
  %236 = call noundef zeroext i1 @_ZN9__gnu_cxxneIP14MirOptTestFileSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %29) #12
  br i1 %236, label %228, label %._crit_edge160

237:                                              ; preds = %.lr.ph156, %308
  %238 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN14MirOptTestFile4TestESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %30) #12
  %239 = call noundef zeroext i1 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %223) #12
  br i1 %239, label %258, label %240

240:                                              ; preds = %237
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #12
  %241 = call ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %223) #12
  store ptr %241, ptr %32, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #12
  %242 = call ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %223) #12
  store ptr %242, ptr %33, align 8
  %243 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 8 dereferenceable(8) %33) #12
  br i1 %243, label %.lr.ph154, label %.critedge133

.lr.ph154:                                        ; preds = %240, %254
  %244 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %32) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %34) #12
  %245 = invoke { ptr, i64 } @_ZNK3HIR10SimplePath10componentsEv(ptr noundef nonnull align 8 dereferenceable(8) %238)
          to label %246 unwind label %252

246:                                              ; preds = %.lr.ph154
  %247 = extractvalue { ptr, i64 } %245, 0
  store ptr %247, ptr %34, align 8
  %248 = extractvalue { ptr, i64 } %245, 1
  store i64 %248, ptr %224, align 8
  %249 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt4spanIK8RcStringE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %34)
  %250 = invoke noundef zeroext i1 @_ZSteqRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK8RcString(ptr noundef nonnull align 8 dereferenceable(32) %244, ptr noundef nonnull align 8 dereferenceable(8) %249)
          to label %251 unwind label %252

251:                                              ; preds = %246
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %34) #12
  br i1 %250, label %257, label %254

252:                                              ; preds = %246, %.lr.ph154
  %253 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %34) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #12
  br label %315

254:                                              ; preds = %251
  %255 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %32) #12
  %256 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 8 dereferenceable(8) %33) #12
  br i1 %256, label %.lr.ph154, label %.critedge133

257:                                              ; preds = %251
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #12
  br label %258

258:                                              ; preds = %257, %237
  %259 = call noundef ptr @_ZN3HIR8CratePtrptEv(ptr noundef nonnull align 8 dereferenceable(8) %234)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #12
  call void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %35)
  %260 = invoke noundef nonnull align 8 dereferenceable(352) ptr @_ZNK3HIR5Crate20get_function_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %259, ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(8) %238)
          to label %261 unwind label %291

261:                                              ; preds = %258
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #12
  %262 = call noundef ptr @_ZN3HIR8CratePtrptEv(ptr noundef nonnull align 8 dereferenceable(8) %234)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #12
  call void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %36)
  %263 = getelementptr inbounds i8, ptr %238, i64 8
  %264 = invoke noundef nonnull align 8 dereferenceable(352) ptr @_ZNK3HIR5Crate20get_function_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %262, ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(8) %263)
          to label %265 unwind label %293

265:                                              ; preds = %261
  %266 = getelementptr inbounds i8, ptr %264, i64 304
  %267 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZNK3MIR15FunctionPointerdeEv(ptr noundef nonnull align 8 dereferenceable(8) %266)
          to label %268 unwind label %293

268:                                              ; preds = %265
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #12
  call void @llvm.lifetime.start.p0(i64 424, ptr nonnull %37) #12
  %269 = call noundef nonnull align 8 dereferenceable(944) ptr @_ZN3HIR8CratePtrdeEv(ptr noundef nonnull align 8 dereferenceable(8) %234)
  invoke void @_ZN18StaticTraitResolveC2ERKN3HIR5CrateE(ptr noundef nonnull align 8 dereferenceable(424) %37, ptr noundef nonnull align 8 dereferenceable(944) %269)
          to label %270 unwind label %295

270:                                              ; preds = %268
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #12
  %271 = getelementptr inbounds i8, ptr %260, i64 304
  invoke void @_ZN12_GLOBAL__N_19clone_mirERK18StaticTraitResolveRKN3MIR15FunctionPointerE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::FunctionPointer") align 8 %38, ptr noundef nonnull align 8 dereferenceable(424) %37, ptr noundef nonnull align 8 dereferenceable(8) %271)
          to label %272 unwind label %297

272:                                              ; preds = %270
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %39) #12
  call void @_ZN3HIR8ItemPathC2ERKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(56) %39, ptr noundef nonnull align 8 dereferenceable(8) %238)
  %273 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR15FunctionPointerdeEv(ptr noundef nonnull align 8 dereferenceable(8) %38)
          to label %274 unwind label %299

274:                                              ; preds = %272
  %275 = getelementptr inbounds i8, ptr %260, i64 208
  %276 = getelementptr inbounds i8, ptr %260, i64 240
  invoke void @_Z12MIR_OptimiseRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_b(ptr noundef nonnull align 8 dereferenceable(424) %37, ptr noundef nonnull align 8 dereferenceable(56) %39, ptr noundef nonnull align 8 dereferenceable(96) %273, ptr noundef nonnull align 8 dereferenceable(24) %275, ptr noundef nonnull align 8 dereferenceable(8) %276, i1 noundef zeroext true)
          to label %277 unwind label %299

277:                                              ; preds = %274
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %39) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #12
  invoke void @_ZN8RcStringC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(8) %41, ptr noundef nonnull align 8 dereferenceable(32) %229)
          to label %278 unwind label %301

278:                                              ; preds = %277
  %279 = invoke { ptr, i64 } @_ZNK3HIR10SimplePath10componentsEv(ptr noundef nonnull align 8 dereferenceable(8) %238)
          to label %280 unwind label %303

280:                                              ; preds = %278
  %281 = extractvalue { ptr, i64 } %279, 0
  %282 = extractvalue { ptr, i64 } %279, 1
  invoke void @_ZN3HIR10SimplePathC2E8RcStringSt4spanIKS1_E(ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull %41, ptr %281, i64 %282)
          to label %283 unwind label %303

283:                                              ; preds = %280
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #12
  %284 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR15FunctionPointerdeEv(ptr noundef nonnull align 8 dereferenceable(8) %38)
          to label %285 unwind label %305

285:                                              ; preds = %283
  %286 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_111compare_mirERKN3MIR8FunctionES3_RKN3HIR10SimplePathE(ptr noundef nonnull align 8 dereferenceable(96) %267, ptr noundef nonnull align 8 dereferenceable(96) %284, ptr noundef nonnull align 8 dereferenceable(8) %40)
          to label %287 unwind label %305

287:                                              ; preds = %285
  br i1 %286, label %307, label %288

288:                                              ; preds = %287
  %289 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR15FunctionPointerdeEv(ptr noundef nonnull align 8 dereferenceable(8) %38)
          to label %290 unwind label %305

290:                                              ; preds = %288
  invoke void @_Z12MIR_Dump_FcnRSoRKN3MIR8FunctionEj(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull align 8 dereferenceable(96) %289, i32 noundef 0)
          to label %307 unwind label %305

291:                                              ; preds = %258
  %292 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #12
  br label %315

293:                                              ; preds = %265, %261
  %294 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #12
  br label %315

295:                                              ; preds = %268
  %296 = landingpad { ptr, i32 }
          cleanup
  br label %314

297:                                              ; preds = %270
  %298 = landingpad { ptr, i32 }
          cleanup
  br label %313

299:                                              ; preds = %274, %272
  %300 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %39) #12
  br label %312

301:                                              ; preds = %277
  %302 = landingpad { ptr, i32 }
          cleanup
  br label %311

303:                                              ; preds = %280, %278
  %304 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #12
  br label %311

305:                                              ; preds = %290, %288, %285, %283
  %306 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #12
  br label %311

307:                                              ; preds = %290, %287
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #12
  call void @_ZN3MIR15FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #12
  call void @_ZN18StaticTraitResolveD2Ev(ptr noundef nonnull align 8 dereferenceable(424) %37) #12
  call void @llvm.lifetime.end.p0(i64 424, ptr nonnull %37) #12
  br label %308

.critedge133:                                     ; preds = %254, %240
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #12
  br label %308

308:                                              ; preds = %.critedge133, %307
  %309 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN14MirOptTestFile4TestESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %30) #12
  %310 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN14MirOptTestFile4TestESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %31) #12
  br i1 %310, label %237, label %._crit_edge157

311:                                              ; preds = %305, %303, %301
  %.pn111 = phi { ptr, i32 } [ %306, %305 ], [ %304, %303 ], [ %302, %301 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #12
  br label %312

312:                                              ; preds = %311, %299
  %.pn111.pn = phi { ptr, i32 } [ %.pn111, %311 ], [ %300, %299 ]
  call void @_ZN3MIR15FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #12
  br label %313

313:                                              ; preds = %312, %297
  %.pn111.pn.pn = phi { ptr, i32 } [ %.pn111.pn, %312 ], [ %298, %297 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #12
  call void @_ZN18StaticTraitResolveD2Ev(ptr noundef nonnull align 8 dereferenceable(424) %37) #12
  br label %314

314:                                              ; preds = %313, %295
  %.pn111.pn.pn.pn = phi { ptr, i32 } [ %.pn111.pn.pn, %313 ], [ %296, %295 ]
  call void @llvm.lifetime.end.p0(i64 424, ptr nonnull %37) #12
  br label %315

315:                                              ; preds = %291, %314, %293, %252
  %.pn111.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %253, %252 ], [ %292, %291 ], [ %.pn111.pn.pn.pn, %314 ], [ %294, %293 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #12
  call void @_ZN15DebugTimedPhaseD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %27) #12
  br label %316

316:                                              ; preds = %315, %226
  %.pn111.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn111.pn.pn.pn.pn.pn.pn, %315 ], [ %227, %226 ]
  %.20 = extractvalue { ptr, i32 } %.pn111.pn.pn.pn.pn.pn.pn.pn, 0
  %.2091 = extractvalue { ptr, i32 } %.pn111.pn.pn.pn.pn.pn.pn.pn, 1
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #12
  br label %317

317:                                              ; preds = %316, %225, %163, %146, %131
  %.2192 = phi i32 [ %.778, %146 ], [ %.879, %163 ], [ %.1283, %225 ], [ %.2091, %316 ], [ %.677, %131 ]
  %.21 = phi ptr [ %.7, %146 ], [ %.8, %163 ], [ %.12, %225 ], [ %.20, %316 ], [ %.6, %131 ]
  call void @_ZNSt6vectorI14MirOptTestFileSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #12
  br label %319

318:                                              ; preds = %43, %._crit_edge160
  %.0 = phi i32 [ 0, %._crit_edge160 ], [ 1, %43 ]
  call void @_ZN7OptionsD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %4) #12
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %4) #12
  ret i32 %.0

319:                                              ; preds = %317, %44
  %.2293 = phi i32 [ %.2192, %317 ], [ %47, %44 ]
  %.22 = phi ptr [ %.21, %317 ], [ %46, %44 ]
  call void @_ZN7OptionsD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %4) #12
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %4) #12
  %320 = insertvalue { ptr, i32 } poison, ptr %.22, 0
  %321 = insertvalue { ptr, i32 } %320, i32 %.2293, 1
  resume { ptr, i32 } %321

322:                                              ; preds = %119
  %323 = landingpad { ptr, i32 }
          catch ptr null
  %324 = extractvalue { ptr, i32 } %323, 0
  call void @__clang_call_terminate(ptr %324) #13
  unreachable
}

declare void @_Z17debug_init_phasesPKcSt16initializer_listIS0_E(ptr noundef, ptr, i64) local_unnamed_addr #1

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

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3

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

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

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

declare i32 @__gxx_personality_v0(...)

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

declare void @_ZN15DebugTimedPhaseC1EPKc(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #1

; Function Attrs: nofree nounwind
declare noalias noundef ptr @opendir(ptr nocapture noundef readonly) local_unnamed_addr #7

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN7helperslsERSoRKNS_4pathE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #5

; 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: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #5 align 2

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

declare ptr @readdir(ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7helpers4pathdvEPKc(ptr dead_on_unwind noalias writable sret(%"class.helpers::path") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #5 align 2

; Function Attrs: nofree nounwind
declare noundef i32 @stat(ptr nocapture noundef readonly, ptr nocapture noundef) local_unnamed_addr #7

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorI14MirOptTestFileSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(64)) local_unnamed_addr #5 align 2

declare void @_ZN14MirOptTestFile14load_from_fileERKN7helpers4pathE(ptr dead_on_unwind writable sret(%struct.MirOptTestFile) align 8, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1

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

; Function Attrs: nofree nosync nounwind memory(none)
declare i32 @llvm.eh.typeid.for.p0(ptr) #9

declare ptr @__cxa_begin_catch(ptr) local_unnamed_addr

declare void @__cxa_end_catch() local_unnamed_addr

; Function Attrs: noinline noreturn nounwind uwtable
declare hidden void @__clang_call_terminate(ptr noundef) local_unnamed_addr #10

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

; Function Attrs: nofree nounwind
declare noundef i32 @closedir(ptr nocapture noundef) local_unnamed_addr #7

; Function Attrs: nounwind
declare void @_ZN15DebugTimedPhaseD1Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #11

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIP14MirOptTestFileSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #8

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

declare void @_Z15ConvertHIR_BindRN3HIR5CrateE(ptr noundef nonnull align 8 dereferenceable(944)) local_unnamed_addr #1

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

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

declare void @_Z14MIR_CheckCrateRN3HIR5CrateE(ptr noundef nonnull align 8 dereferenceable(944)) local_unnamed_addr #1

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPN14MirOptTestFile4TestESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #8

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #8

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i64 } @_ZNK3HIR10SimplePath10componentsEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5 align 2

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

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

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

declare noundef nonnull align 8 dereferenceable(352) ptr @_ZNK3HIR5Crate20get_function_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1

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

; Function Attrs: nounwind
declare void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #11

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN18StaticTraitResolveC2ERKN3HIR5CrateE(ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(944)) unnamed_addr #5 align 2

declare void @_Z15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_(ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(96) ptr @_ZNK3MIR15FunctionPointerdeEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5 align 2

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_19clone_mirERK18StaticTraitResolveRKN3MIR15FunctionPointerE(ptr dead_on_unwind noalias writable sret(%"class.MIR::FunctionPointer") align 8, ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5

declare void @_Z12MIR_OptimiseRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_b(ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8), i1 noundef zeroext) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR15FunctionPointerdeEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5 align 2

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

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

; Function Attrs: nounwind
declare void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #11

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_111compare_mirERKN3MIR8FunctionES3_RKN3HIR10SimplePathE(ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5

declare void @_Z12MIR_Dump_FcnRSoRKN3MIR8FunctionEj(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(96), i32 noundef) local_unnamed_addr #1

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

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

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

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

attributes #0 = { mustprogress norecurse 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 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
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 = { 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 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { nofree nosync nounwind memory(none) }
attributes #10 = { noinline noreturn nounwind uwtable "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 #11 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #12 = { nounwind }
attributes #13 = { noreturn 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 = !{i64 0, i64 40, !6}
!6 = !{!7, !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}
!11 = !{!12, !14, i64 24}
!12 = !{!"_ZTS4stat", !13, i64 0, !13, i64 8, !13, i64 16, !14, i64 24, !14, i64 28, !14, i64 32, !14, i64 36, !13, i64 40, !13, i64 48, !13, i64 56, !13, i64 64, !15, i64 72, !15, i64 88, !15, i64 104, !7, i64 120}
!13 = !{!"long", !7, i64 0}
!14 = !{!"int", !7, i64 0}
!15 = !{!"_ZTS8timespec", !13, i64 0, !13, i64 8}
!16 = !{!17, !17, i64 0}
!17 = !{!"vtable pointer", !8, i64 0}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,SCCPPass,SROAPass,SimplifyCFGPass