; LLVM IR from thepowersgang/mrustc :: src/mir (optimise)

; 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.TraceLog = type { ptr, %"class.std::function" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.197 = type { i8 }
%class.anon.199 = type { ptr }
%"class.std::vector.200" = type { %"struct.std::_Vector_base.201" }
%"struct.std::_Vector_base.201" = type { %"struct.std::_Vector_base<InlineEvent, std::allocator<InlineEvent>>::_Vector_impl" }
%"struct.std::_Vector_base<InlineEvent, std::allocator<InlineEvent>>::_Vector_impl" = type { %"struct.std::_Vector_base<InlineEvent, std::allocator<InlineEvent>>::_Vector_impl_data" }
%"struct.std::_Vector_base<InlineEvent, std::allocator<InlineEvent>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.205" = type { ptr }
%class.anon.206 = type { ptr, ptr }
%struct.Cloner = type { ptr, ptr, ptr, %"class.std::vector.111", %"struct.(anonymous namespace)::ParamsSet", i32, i32, i32, i32, i64, %"class.std::vector.138", %"struct.MIR::LValue" }
%"class.std::vector.111" = type { %"struct.std::_Vector_base.112" }
%"struct.std::_Vector_base.112" = 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 }
%"struct.(anonymous namespace)::ParamsSet" = type { %class.MonomorphiserPP, %"struct.HIR::PathParams", ptr, ptr, ptr, ptr, %"struct.HIR::PathParams" }
%class.MonomorphiserPP = type { %class.Monomorphiser }
%class.Monomorphiser = type { ptr, ptr, %"class.HIR::ItemPath", %"class.std::vector.207" }
%"class.HIR::ItemPath" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.std::vector.207" = type { %"struct.std::_Vector_base.208" }
%"struct.std::_Vector_base.208" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::PathParams" = type { %class.ThinVector.133, %class.ThinVector.134, %class.ThinVector.135 }
%class.ThinVector.133 = type { ptr }
%class.ThinVector.134 = type { ptr }
%class.ThinVector.135 = type { ptr }
%"class.std::vector.138" = type { %"struct.std::_Vector_base.139" }
%"struct.std::_Vector_base.139" = type { %"struct.std::_Vector_base<MIR::Param, std::allocator<MIR::Param>>::_Vector_impl" }
%"struct.std::_Vector_base<MIR::Param, std::allocator<MIR::Param>>::_Vector_impl" = type { %"struct.std::_Vector_base<MIR::Param, std::allocator<MIR::Param>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MIR::Param, std::allocator<MIR::Param>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.MIR::LValue" = type { %"class.MIR::LValue::Storage", %"class.std::vector.106" }
%"class.MIR::LValue::Storage" = type { i64 }
%"class.std::vector.106" = type { %"struct.std::_Vector_base.107" }
%"struct.std::_Vector_base.107" = type { %"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl" }
%"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl" = type { %"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.anon.212 = type { ptr }
%"class.HIR::TypeRef" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.213" = type { ptr }
%"struct.std::_Bit_const_iterator" = type { %"struct.std::_Bit_iterator_base.base", [4 x i8] }
%"struct.std::_Bit_iterator_base.base" = type <{ ptr, i32 }>
%"struct.std::_Bit_iterator" = type { %"struct.std::_Bit_iterator_base.base", [4 x i8] }
%"class.MIR::Param" = type { i32, %"union.MIR::Param::DataUnion" }
%"union.MIR::Param::DataUnion" = type { %"struct.MIR::Param::Data_Borrow" }
%"struct.MIR::Param::Data_Borrow" = type { i32, %"struct.MIR::LValue" }
%"class.std::vector.29" = type { %"struct.std::_Vector_base.30" }
%"struct.std::_Vector_base.30" = type { %"struct.std::_Vector_base<MIR::BasicBlock, std::allocator<MIR::BasicBlock>>::_Vector_impl" }
%"struct.std::_Vector_base<MIR::BasicBlock, std::allocator<MIR::BasicBlock>>::_Vector_impl" = type { %"struct.std::_Vector_base<MIR::BasicBlock, std::allocator<MIR::BasicBlock>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MIR::BasicBlock, std::allocator<MIR::BasicBlock>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.214" = type { ptr }
%"struct.MIR::BasicBlock" = type { %"class.std::vector.101", %"class.MIR::Terminator" }
%"class.std::vector.101" = type { %"struct.std::_Vector_base.102" }
%"struct.std::_Vector_base.102" = type { %"struct.std::_Vector_base<MIR::Statement, std::allocator<MIR::Statement>>::_Vector_impl" }
%"struct.std::_Vector_base<MIR::Statement, std::allocator<MIR::Statement>>::_Vector_impl" = type { %"struct.std::_Vector_base<MIR::Statement, std::allocator<MIR::Statement>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MIR::Statement, std::allocator<MIR::Statement>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.MIR::Terminator" = type { i32, %"union.MIR::Terminator::DataUnion" }
%"union.MIR::Terminator::DataUnion" = type { %"struct.MIR::Terminator::Data_Call" }
%"struct.MIR::Terminator::Data_Call" = type { i32, i32, %"struct.MIR::LValue", %"class.MIR::CallTarget", %"class.std::vector.138" }
%"class.MIR::CallTarget" = type { i32, %"union.MIR::CallTarget::DataUnion" }
%"union.MIR::CallTarget::DataUnion" = type { %"class.HIR::Path" }
%"class.HIR::Path" = type { %"class.HIR::Path::Data" }
%"class.HIR::Path::Data" = type { i32, %"union.HIR::Path::Data::DataUnion" }
%"union.HIR::Path::Data::DataUnion" = type { %"struct.HIR::Path::Data::Data_UfcsKnown" }
%"struct.HIR::Path::Data::Data_UfcsKnown" = type { %"class.HIR::TypeRef", %"class.HIR::GenericPath", %class.RcString, %"struct.HIR::PathParams", %"class.std::unique_ptr" }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%class.RcString = type { ptr }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.137" }
%"struct.std::_Head_base.137" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.215" = type { ptr }
%"class.MIR::RValue" = type { i32, %"union.MIR::RValue::DataUnion" }
%"union.MIR::RValue::DataUnion" = type { %"struct.MIR::RValue::Data_BinOp" }
%"struct.MIR::RValue::Data_BinOp" = type { %"class.MIR::Param", i32, %"class.MIR::Param" }
%"class.MIR::Constant" = type { i32, %"union.MIR::Constant::DataUnion" }
%"union.MIR::Constant::DataUnion" = 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.MIR::Statement" = type { i32, %"union.MIR::Statement::DataUnion" }
%"union.MIR::Statement::DataUnion" = type { %"struct.MIR::Statement::Data_Assign" }
%"struct.MIR::Statement::Data_Assign" = type { %"struct.MIR::LValue", %"class.MIR::RValue" }
%"class.__gnu_cxx::__normal_iterator.189" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.148" = type { ptr }
%struct.InlineEvent = type { %"class.HIR::Path", %"class.std::vector.116" }
%"class.std::vector.116" = type { %"struct.std::_Vector_base.117" }
%"struct.std::_Vector_base.117" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.MIR::Function" = type { %"class.std::vector.20", %"class.std::vector.25", %"class.std::vector.29", %"class.MIR::EnumCachePtr" }
%"class.std::vector.20" = type { %"struct.std::_Vector_base.21" }
%"struct.std::_Vector_base.21" = 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.std::vector.25" = type { %"struct.std::_Bvector_base" }
%"struct.std::_Bvector_base" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" = type { %"struct.std::_Bit_iterator", %"struct.std::_Bit_iterator", ptr }
%"class.MIR::EnumCachePtr" = type { ptr }
%"class.MIR::TypeResolve" = type { i32, ptr, ptr, ptr, %struct.FmtLambda, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32 }
%struct.FmtLambda = type { %"class.std::function" }

@g_debug_indent_level = external global i32, align 4
@__func__._Z21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransList = external hidden unnamed_addr constant [22 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [1 x i8], align 1
@_ZTIPKc = external constant ptr
@.str.12 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [20 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

declare noundef zeroext i1 @_Z13debug_enabledv() #1

declare void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef, ptr noundef) unnamed_addr #1

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_Z21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransList(ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(96) %1, i1 noundef zeroext %2, ptr noundef %3) #2 personality ptr @__gxx_personality_v0 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i8, align 1
  %8 = alloca ptr, align 8
  %9 = alloca i8, align 1
  %10 = alloca %class.TraceLog, align 8
  %11 = alloca %"class.std::function", align 8
  %12 = alloca %class.anon.197, align 1
  %13 = alloca %"class.std::function", align 8
  %14 = alloca %class.anon.199, align 8
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca %"class.std::vector.200", align 8
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca %"class.__gnu_cxx::__normal_iterator.205", align 8
  %24 = alloca %"class.__gnu_cxx::__normal_iterator.205", align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca %"class.std::function", align 8
  %28 = alloca %class.anon.206, align 8
  %29 = alloca %struct.Cloner, align 8
  %30 = alloca ptr, align 8
  %31 = alloca %class.TraceLog, align 8
  %32 = alloca %"class.std::function", align 8
  %33 = alloca %class.anon.212, align 8
  %34 = alloca %"struct.MIR::LValue", align 8
  %35 = alloca %"class.HIR::TypeRef", align 8
  %36 = alloca %"class.HIR::TypeRef", align 8
  %37 = alloca ptr, align 8
  %38 = alloca %"class.__gnu_cxx::__normal_iterator.213", align 8
  %39 = alloca %"class.__gnu_cxx::__normal_iterator.213", align 8
  %40 = alloca ptr, align 8
  %41 = alloca %"class.HIR::TypeRef", align 8
  %42 = alloca %"struct.std::_Bit_const_iterator", align 8
  %43 = alloca %"struct.std::_Bit_iterator", align 8
  %44 = alloca { ptr, i32 }, align 8
  %45 = alloca %"struct.std::_Bit_const_iterator", align 8
  %46 = alloca { ptr, i32 }, align 8
  %47 = alloca %"struct.std::_Bit_const_iterator", align 8
  %48 = alloca { ptr, i32 }, align 8
  %49 = alloca %"struct.std::_Bit_iterator", align 8
  %50 = alloca i64, align 8
  %51 = alloca ptr, align 8
  %52 = alloca %"class.MIR::Param", align 8
  %53 = alloca %"class.std::vector.29", align 8
  %54 = alloca ptr, align 8
  %55 = alloca %"class.__gnu_cxx::__normal_iterator.214", align 8
  %56 = alloca %"class.__gnu_cxx::__normal_iterator.214", align 8
  %57 = alloca ptr, align 8
  %58 = alloca %"struct.MIR::BasicBlock", align 8
  %59 = alloca ptr, align 8
  %60 = alloca %"class.__gnu_cxx::__normal_iterator.215", align 8
  %61 = alloca %"class.__gnu_cxx::__normal_iterator.215", align 8
  %62 = alloca ptr, align 8
  %63 = alloca %"class.HIR::TypeRef", align 8
  %64 = alloca %"class.HIR::TypeRef", align 8
  %65 = alloca %"struct.MIR::LValue", align 8
  %66 = alloca %"class.MIR::RValue", align 8
  %67 = alloca %"class.MIR::Constant", align 8
  %68 = alloca i1, align 1
  %69 = alloca %"struct.MIR::LValue", align 8
  %70 = alloca i1, align 1
  %71 = alloca %"class.MIR::Statement", align 8
  %72 = alloca %"struct.MIR::Statement::Data_Assign", align 8
  %73 = alloca %"class.__gnu_cxx::__normal_iterator.189", align 8
  %74 = alloca %"class.__gnu_cxx::__normal_iterator.148", align 8
  %75 = alloca %"class.__gnu_cxx::__normal_iterator.148", align 8
  %76 = alloca ptr, align 8
  %77 = alloca %"class.__gnu_cxx::__normal_iterator.205", align 8
  %78 = alloca %"class.__gnu_cxx::__normal_iterator.205", align 8
  %79 = alloca ptr, align 8
  %80 = alloca %struct.InlineEvent, align 8
  %81 = alloca %"class.HIR::Path", align 8
  %82 = alloca ptr, align 8
  %83 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %84 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %85 = alloca ptr, align 8
  %86 = alloca %"class.MIR::Terminator", align 8
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  %87 = zext i1 %2 to i8
  store i8 %87, ptr %7, align 1, !tbaa !9
  store ptr %3, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %9) #8
  store i8 0, ptr %9, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 40, ptr %10) #8
  %88 = call noundef zeroext i1 @_Z13debug_enabledv()
  %89 = zext i1 %88 to i64
  %90 = select i1 %88, ptr @__func__._Z21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransList, ptr null
  call void @llvm.lifetime.start.p0(i64 1, ptr %12) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS4_8FunctionEbPK9TransListE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 1 dereferenceable(1) %12) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #8
  %91 = getelementptr inbounds %class.anon.199, ptr %14, i32 0, i32 0
  store ptr %9, ptr %91, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS4_8FunctionEbPK9TransListE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 8 dereferenceable(8) %14) #8
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEES5_(ptr noundef nonnull align 8 dereferenceable(40) %10, ptr noundef %90, ptr noundef %11, ptr noundef %13)
          to label %92 unwind label %101

92:                                               ; preds = %4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #8
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %17) #8
  call void @_ZNSt6vectorIZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS0_8FunctionEbPK9TransListE11InlineEventSaIS8_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #8
  store i32 0, ptr %18, align 4, !tbaa !11
  br label %93

93:                                               ; preds = %896, %92
  %94 = load i32, ptr %18, align 4, !tbaa !11
  %95 = zext i32 %94 to i64
  %96 = load ptr, ptr %6, align 8, !tbaa !5
  %97 = getelementptr inbounds %"class.MIR::Function", ptr %96, i32 0, i32 2
  %98 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %97) #8
  %99 = icmp ult i64 %95, %98
  br i1 %99, label %105, label %100

100:                                              ; preds = %93
  store i32 2, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  br label %901

101:                                              ; preds = %4
  %102 = landingpad { ptr, i32 }
          cleanup
  %103 = extractvalue { ptr, i32 } %102, 0
  store ptr %103, ptr %15, align 8
  %104 = extractvalue { ptr, i32 } %102, 1
  store i32 %104, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #8
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #8
  br label %904

105:                                              ; preds = %93
  %106 = load ptr, ptr %5, align 8, !tbaa !5
  %107 = load i32, ptr %18, align 4, !tbaa !11
  invoke void @_ZN3MIR11TypeResolve17set_cur_stmt_termEj(ptr noundef nonnull align 8 dereferenceable(120) %106, i32 noundef %107)
          to label %108 unwind label %125

108:                                              ; preds = %105
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #8
  %109 = load ptr, ptr %6, align 8, !tbaa !5
  %110 = getelementptr inbounds %"class.MIR::Function", ptr %109, i32 0, i32 2
  %111 = load i32, ptr %18, align 4, !tbaa !11
  %112 = zext i32 %111 to i64
  %113 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %110, i64 noundef %112) #8
  %114 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %113, i32 0, i32 1
  %115 = invoke noundef ptr @_ZN3MIR10Terminator8opt_CallEv(ptr noundef nonnull align 8 dereferenceable(168) %114)
          to label %116 unwind label %129

116:                                              ; preds = %108
  store ptr %115, ptr %20, align 8, !tbaa !5
  %117 = load ptr, ptr %20, align 8, !tbaa !5
  %118 = icmp ne ptr %117, null
  br i1 %118, label %119, label %892

119:                                              ; preds = %116
  %120 = load ptr, ptr %20, align 8, !tbaa !5
  %121 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %120, i32 0, i32 3
  %122 = invoke noundef zeroext i1 @_ZNK3MIR10CallTarget7is_PathEv(ptr noundef nonnull align 8 dereferenceable(96) %121)
          to label %123 unwind label %129

123:                                              ; preds = %119
  br i1 %122, label %133, label %124

124:                                              ; preds = %123
  store i32 4, ptr %19, align 4
  br label %893

125:                                              ; preds = %105
  %126 = landingpad { ptr, i32 }
          cleanup
  %127 = extractvalue { ptr, i32 } %126, 0
  store ptr %127, ptr %15, align 8
  %128 = extractvalue { ptr, i32 } %126, 1
  store i32 %128, ptr %16, align 4
  br label %900

129:                                              ; preds = %119, %108
  %130 = landingpad { ptr, i32 }
          cleanup
  %131 = extractvalue { ptr, i32 } %130, 0
  store ptr %131, ptr %15, align 8
  %132 = extractvalue { ptr, i32 } %130, 1
  store i32 %132, ptr %16, align 4
  br label %899

133:                                              ; preds = %123
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #8
  %134 = load ptr, ptr %20, align 8, !tbaa !5
  %135 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %134, i32 0, i32 3
  %136 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN3MIR10CallTarget7as_PathEv(ptr noundef nonnull align 8 dereferenceable(96) %135)
          to label %137 unwind label %160

137:                                              ; preds = %133
  store ptr %136, ptr %21, align 8, !tbaa !5
  br label %138

138:                                              ; preds = %137
  %139 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %140 unwind label %160

140:                                              ; preds = %138
  br i1 %139, label %141, label %164

141:                                              ; preds = %140
  %142 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %143 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %142, ptr noundef @__func__._Z21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransList)
          to label %144 unwind label %160

144:                                              ; preds = %141
  %145 = load ptr, ptr %5, align 8, !tbaa !5
  %146 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %143, ptr noundef nonnull align 8 dereferenceable(120) %145)
          to label %147 unwind label %160

147:                                              ; preds = %144
  %148 = load ptr, ptr %6, align 8, !tbaa !5
  %149 = getelementptr inbounds %"class.MIR::Function", ptr %148, i32 0, i32 2
  %150 = load i32, ptr %18, align 4, !tbaa !11
  %151 = zext i32 %150 to i64
  %152 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %149, i64 noundef %151) #8
  %153 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %152, i32 0, i32 1
  %154 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_10TerminatorE(ptr noundef nonnull align 8 dereferenceable(8) %146, ptr noundef nonnull align 8 dereferenceable(168) %153)
          to label %155 unwind label %160

155:                                              ; preds = %147
  %156 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %154, ptr noundef @_ZSt3decRSt8ios_base)
          to label %157 unwind label %160

157:                                              ; preds = %155
  %158 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %156, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %159 unwind label %160

159:                                              ; preds = %157
  br label %164

160:                                              ; preds = %157, %155, %147, %144, %141, %138, %133
  %161 = landingpad { ptr, i32 }
          cleanup
  %162 = extractvalue { ptr, i32 } %161, 0
  store ptr %162, ptr %15, align 8
  %163 = extractvalue { ptr, i32 } %161, 1
  store i32 %163, ptr %16, align 4
  br label %891

164:                                              ; preds = %159, %140
  br label %165

165:                                              ; preds = %164
  br label %166

166:                                              ; preds = %165
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #8
  store ptr %17, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #8
  %167 = load ptr, ptr %22, align 8, !tbaa !5
  %168 = call ptr @_ZNSt6vectorIZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS0_8FunctionEbPK9TransListE11InlineEventSaIS8_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %167) #8
  %169 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.205", ptr %23, i32 0, i32 0
  store ptr %168, ptr %169, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #8
  %170 = load ptr, ptr %22, align 8, !tbaa !5
  %171 = call ptr @_ZNSt6vectorIZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS0_8FunctionEbPK9TransListE11InlineEventSaIS8_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %170) #8
  %172 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.205", ptr %24, i32 0, i32 0
  store ptr %171, ptr %172, align 8
  br label %173

173:                                              ; preds = %213, %166
  %174 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS1_8FunctionEbPK9TransListE11InlineEventSt6vectorIS9_SaIS9_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %24) #8
  br i1 %174, label %176, label %175

175:                                              ; preds = %173
  store i32 7, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  br label %216

176:                                              ; preds = %173
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #8
  %177 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS1_8FunctionEbPK9TransListE11InlineEventSt6vectorIS9_SaIS9_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #8
  store ptr %177, ptr %25, align 8, !tbaa !5
  %178 = load ptr, ptr %21, align 8, !tbaa !5
  %179 = load ptr, ptr %25, align 8, !tbaa !5
  %180 = getelementptr inbounds %struct.InlineEvent, ptr %179, i32 0, i32 0
  %181 = invoke noundef zeroext i1 @_ZNK3HIR4PatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(88) %178, ptr noundef nonnull align 8 dereferenceable(88) %180)
          to label %182 unwind label %197

182:                                              ; preds = %176
  br i1 %181, label %183, label %212

183:                                              ; preds = %182
  %184 = load ptr, ptr %25, align 8, !tbaa !5
  %185 = load i32, ptr %18, align 4, !tbaa !11
  %186 = zext i32 %185 to i64
  %187 = invoke noundef zeroext i1 @_ZZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListENK11InlineEvent6has_bbEm(ptr noundef nonnull align 8 dereferenceable(112) %184, i64 noundef %186)
          to label %188 unwind label %197

188:                                              ; preds = %183
  br i1 %187, label %189, label %212

189:                                              ; preds = %188
  br label %190

190:                                              ; preds = %189
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #8
  store ptr @__func__._Z21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransList, ptr %26, align 8, !tbaa !5
  %191 = load ptr, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %28) #8
  %192 = getelementptr inbounds %class.anon.206, ptr %28, i32 0, i32 0
  store ptr %26, ptr %192, align 8, !tbaa !5
  %193 = getelementptr inbounds %class.anon.206, ptr %28, i32 0, i32 1
  %194 = load ptr, ptr %21, align 8, !tbaa !5
  store ptr %194, ptr %193, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS4_8FunctionEbPK9TransListE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull align 8 dereferenceable(16) %28) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %191, ptr noundef %27)
          to label %195 unwind label %201

195:                                              ; preds = %190
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #8
  %196 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.11, ptr %196, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %196, ptr @_ZTIPKc, ptr null) #9
          to label %910 unwind label %205

197:                                              ; preds = %183, %176
  %198 = landingpad { ptr, i32 }
          cleanup
  %199 = extractvalue { ptr, i32 } %198, 0
  store ptr %199, ptr %15, align 8
  %200 = extractvalue { ptr, i32 } %198, 1
  store i32 %200, ptr %16, align 4
  br label %215

201:                                              ; preds = %190
  %202 = landingpad { ptr, i32 }
          cleanup
  %203 = extractvalue { ptr, i32 } %202, 0
  store ptr %203, ptr %15, align 8
  %204 = extractvalue { ptr, i32 } %202, 1
  store i32 %204, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #8
  br label %209

205:                                              ; preds = %195
  %206 = landingpad { ptr, i32 }
          cleanup
  %207 = extractvalue { ptr, i32 } %206, 0
  store ptr %207, ptr %15, align 8
  %208 = extractvalue { ptr, i32 } %206, 1
  store i32 %208, ptr %16, align 4
  br label %209

209:                                              ; preds = %205, %201
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  br label %215

210:                                              ; No predecessors!
  br label %211

211:                                              ; preds = %210
  br label %212

212:                                              ; preds = %211, %188, %182
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  br label %213

213:                                              ; preds = %212
  %214 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS1_8FunctionEbPK9TransListE11InlineEventSt6vectorIS9_SaIS9_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #8
  br label %173

215:                                              ; preds = %209, %197
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  br label %891

216:                                              ; preds = %175
  call void @llvm.lifetime.start.p0(i64 304, ptr %29) #8
  %217 = load ptr, ptr %5, align 8, !tbaa !5
  %218 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %217, i32 0, i32 1
  %219 = load ptr, ptr %218, align 8, !tbaa !13
  %220 = load ptr, ptr %5, align 8, !tbaa !5
  %221 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %220, i32 0, i32 2
  %222 = load ptr, ptr %221, align 8, !tbaa !18
  %223 = load ptr, ptr %20, align 8, !tbaa !5
  invoke void @_ZZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListEN6ClonerC2ERK4SpanRK18StaticTraitResolveRNS_10Terminator9Data_CallE(ptr noundef nonnull align 8 dereferenceable(304) %29, ptr noundef nonnull align 8 dereferenceable(8) %219, ptr noundef nonnull align 8 dereferenceable(424) %222, ptr noundef nonnull align 8 dereferenceable(160) %223)
          to label %224 unwind label %234

224:                                              ; preds = %216
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #8
  %225 = load ptr, ptr %5, align 8, !tbaa !5
  %226 = load ptr, ptr %8, align 8, !tbaa !5
  %227 = load ptr, ptr %21, align 8, !tbaa !5
  %228 = getelementptr inbounds %struct.Cloner, ptr %29, i32 0, i32 4
  %229 = invoke noundef ptr @_ZN12_GLOBAL__N_114get_called_mirERKN3MIR11TypeResolveEPK9TransListRKN3HIR4PathERNS_9ParamsSetE(ptr noundef nonnull align 8 dereferenceable(120) %225, ptr noundef %226, ptr noundef nonnull align 8 dereferenceable(88) %227, ptr noundef nonnull align 8 dereferenceable(176) %228)
          to label %230 unwind label %238

230:                                              ; preds = %224
  store ptr %229, ptr %30, align 8, !tbaa !5
  %231 = load ptr, ptr %30, align 8, !tbaa !5
  %232 = icmp ne ptr %231, null
  br i1 %232, label %242, label %233

233:                                              ; preds = %230
  store i32 4, ptr %19, align 4
  br label %874

234:                                              ; preds = %216
  %235 = landingpad { ptr, i32 }
          cleanup
  %236 = extractvalue { ptr, i32 } %235, 0
  store ptr %236, ptr %15, align 8
  %237 = extractvalue { ptr, i32 } %235, 1
  store i32 %237, ptr %16, align 4
  br label %890

238:                                              ; preds = %286, %284, %281, %279, %276, %273, %263, %257, %255, %253, %250, %247, %224
  %239 = landingpad { ptr, i32 }
          cleanup
  %240 = extractvalue { ptr, i32 } %239, 0
  store ptr %240, ptr %15, align 8
  %241 = extractvalue { ptr, i32 } %239, 1
  store i32 %241, ptr %16, align 4
  br label %889

242:                                              ; preds = %230
  %243 = load ptr, ptr %30, align 8, !tbaa !5
  %244 = load ptr, ptr %6, align 8, !tbaa !5
  %245 = icmp eq ptr %243, %244
  br i1 %245, label %246, label %263

246:                                              ; preds = %242
  br label %247

247:                                              ; preds = %246
  %248 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %249 unwind label %238

249:                                              ; preds = %247
  br i1 %248, label %250, label %260

250:                                              ; preds = %249
  %251 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %252 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %251, ptr noundef @__func__._Z21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransList)
          to label %253 unwind label %238

253:                                              ; preds = %250
  %254 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %252, ptr noundef @.str.12)
          to label %255 unwind label %238

255:                                              ; preds = %253
  %256 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %254, ptr noundef @_ZSt3decRSt8ios_base)
          to label %257 unwind label %238

257:                                              ; preds = %255
  %258 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %256, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %259 unwind label %238

259:                                              ; preds = %257
  br label %260

260:                                              ; preds = %259, %249
  br label %261

261:                                              ; preds = %260
  br label %262

262:                                              ; preds = %261
  store i32 4, ptr %19, align 4
  br label %874

263:                                              ; preds = %242
  %264 = load ptr, ptr %21, align 8, !tbaa !5
  %265 = load ptr, ptr %30, align 8, !tbaa !5
  %266 = load ptr, ptr %20, align 8, !tbaa !5
  %267 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %266, i32 0, i32 4
  %268 = load i8, ptr %7, align 1, !tbaa !9, !range !19, !noundef !20
  %269 = trunc i8 %268 to i1
  %270 = invoke noundef zeroext i1 @_ZZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListEN1H10can_inlineERKN3HIR4PathERKS2_RKSt6vectorINS_5ParamESaISF_EEb(ptr noundef nonnull align 8 dereferenceable(88) %264, ptr noundef nonnull align 8 dereferenceable(96) %265, ptr noundef nonnull align 8 dereferenceable(24) %267, i1 noundef zeroext %269)
          to label %271 unwind label %238

271:                                              ; preds = %263
  br i1 %270, label %292, label %272

272:                                              ; preds = %271
  br label %273

273:                                              ; preds = %272
  %274 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %275 unwind label %238

275:                                              ; preds = %273
  br i1 %274, label %276, label %289

276:                                              ; preds = %275
  %277 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %278 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %277, ptr noundef @__func__._Z21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransList)
          to label %279 unwind label %238

279:                                              ; preds = %276
  %280 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %278, ptr noundef @.str.13)
          to label %281 unwind label %238

281:                                              ; preds = %279
  %282 = load ptr, ptr %21, align 8, !tbaa !5
  %283 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8) %280, ptr noundef nonnull align 8 dereferenceable(88) %282)
          to label %284 unwind label %238

284:                                              ; preds = %281
  %285 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %283, ptr noundef @_ZSt3decRSt8ios_base)
          to label %286 unwind label %238

286:                                              ; preds = %284
  %287 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %285, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %288 unwind label %238

288:                                              ; preds = %286
  br label %289

289:                                              ; preds = %288, %275
  br label %290

290:                                              ; preds = %289
  br label %291

291:                                              ; preds = %290
  store i32 4, ptr %19, align 4
  br label %874

292:                                              ; preds = %271
  call void @llvm.lifetime.start.p0(i64 40, ptr %31) #8
  %293 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %294 unwind label %324

294:                                              ; preds = %292
  %295 = zext i1 %293 to i64
  %296 = select i1 %293, ptr @__func__._Z21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransList, ptr null
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #8
  %297 = getelementptr inbounds %class.anon.212, ptr %33, i32 0, i32 0
  %298 = load ptr, ptr %21, align 8, !tbaa !5
  store ptr %298, ptr %297, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS4_8FunctionEbPK9TransListE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef nonnull align 8 dereferenceable(8) %33) #8
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %31, ptr noundef %296, ptr noundef %32)
          to label %299 unwind label %328

299:                                              ; preds = %294
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %34) #8
  %300 = load ptr, ptr %6, align 8, !tbaa !5
  %301 = getelementptr inbounds %"class.MIR::Function", ptr %300, i32 0, i32 0
  %302 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %301) #8
  %303 = trunc i64 %302 to i32
  invoke void @_ZN3MIR6LValue9new_LocalEj(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %34, i32 noundef %303)
          to label %304 unwind label %332

304:                                              ; preds = %299
  %305 = getelementptr inbounds %struct.Cloner, ptr %29, i32 0, i32 11
  %306 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6LValueaSEOS0_(ptr noundef nonnull align 8 dereferenceable(32) %305, ptr noundef nonnull align 8 dereferenceable(32) %34)
          to label %307 unwind label %336

307:                                              ; preds = %304
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #8
  br label %308

308:                                              ; preds = %307
  %309 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %310 unwind label %341

310:                                              ; preds = %308
  br i1 %309, label %311, label %345

311:                                              ; preds = %310
  %312 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %313 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %312, ptr noundef @__func__._Z21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransList)
          to label %314 unwind label %341

314:                                              ; preds = %311
  %315 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %313, ptr noundef @.str.14)
          to label %316 unwind label %341

316:                                              ; preds = %314
  %317 = getelementptr inbounds %struct.Cloner, ptr %29, i32 0, i32 11
  %318 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %315, ptr noundef nonnull align 8 dereferenceable(32) %317)
          to label %319 unwind label %341

319:                                              ; preds = %316
  %320 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %318, ptr noundef @_ZSt3decRSt8ios_base)
          to label %321 unwind label %341

321:                                              ; preds = %319
  %322 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %320, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %323 unwind label %341

323:                                              ; preds = %321
  br label %345

324:                                              ; preds = %292
  %325 = landingpad { ptr, i32 }
          cleanup
  %326 = extractvalue { ptr, i32 } %325, 0
  store ptr %326, ptr %15, align 8
  %327 = extractvalue { ptr, i32 } %325, 1
  store i32 %327, ptr %16, align 4
  br label %888

328:                                              ; preds = %294
  %329 = landingpad { ptr, i32 }
          cleanup
  %330 = extractvalue { ptr, i32 } %329, 0
  store ptr %330, ptr %15, align 8
  %331 = extractvalue { ptr, i32 } %329, 1
  store i32 %331, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  br label %888

332:                                              ; preds = %299
  %333 = landingpad { ptr, i32 }
          cleanup
  %334 = extractvalue { ptr, i32 } %333, 0
  store ptr %334, ptr %15, align 8
  %335 = extractvalue { ptr, i32 } %333, 1
  store i32 %335, ptr %16, align 4
  br label %340

336:                                              ; preds = %304
  %337 = landingpad { ptr, i32 }
          cleanup
  %338 = extractvalue { ptr, i32 } %337, 0
  store ptr %338, ptr %15, align 8
  %339 = extractvalue { ptr, i32 } %337, 1
  store i32 %339, ptr %16, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #8
  br label %340

340:                                              ; preds = %336, %332
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #8
  br label %887

341:                                              ; preds = %321, %319, %316, %314, %311, %308
  %342 = landingpad { ptr, i32 }
          cleanup
  %343 = extractvalue { ptr, i32 } %342, 0
  store ptr %343, ptr %15, align 8
  %344 = extractvalue { ptr, i32 } %342, 1
  store i32 %344, ptr %16, align 4
  br label %887

345:                                              ; preds = %323, %310
  br label %346

346:                                              ; preds = %345
  br label %347

347:                                              ; preds = %346
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #8
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %35)
          to label %348 unwind label %374

348:                                              ; preds = %347
  %349 = load ptr, ptr %6, align 8, !tbaa !5
  %350 = getelementptr inbounds %"class.MIR::Function", ptr %349, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #8
  %351 = load ptr, ptr %5, align 8, !tbaa !5
  %352 = load ptr, ptr %20, align 8, !tbaa !5
  %353 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %352, i32 0, i32 2
  %354 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %351, ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(32) %353, i32 noundef 0)
          to label %355 unwind label %378

355:                                              ; preds = %348
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %36, ptr noundef nonnull align 8 dereferenceable(8) %354)
          to label %356 unwind label %378

356:                                              ; preds = %355
  invoke void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %350, ptr noundef nonnull align 8 dereferenceable(8) %36)
          to label %357 unwind label %382

357:                                              ; preds = %356
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  %358 = load ptr, ptr %6, align 8, !tbaa !5
  %359 = getelementptr inbounds %"class.MIR::Function", ptr %358, i32 0, i32 0
  %360 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %359) #8
  %361 = trunc i64 %360 to i32
  %362 = getelementptr inbounds %struct.Cloner, ptr %29, i32 0, i32 7
  store i32 %361, ptr %362, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #8
  %363 = load ptr, ptr %30, align 8, !tbaa !5
  %364 = getelementptr inbounds %"class.MIR::Function", ptr %363, i32 0, i32 0
  store ptr %364, ptr %37, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #8
  %365 = load ptr, ptr %37, align 8, !tbaa !5
  %366 = call ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %365) #8
  %367 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.213", ptr %38, i32 0, i32 0
  store ptr %366, ptr %367, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #8
  %368 = load ptr, ptr %37, align 8, !tbaa !5
  %369 = call ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %368) #8
  %370 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.213", ptr %39, i32 0, i32 0
  store ptr %369, ptr %370, align 8
  br label %371

371:                                              ; preds = %395, %357
  %372 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef nonnull align 8 dereferenceable(8) %39) #8
  br i1 %372, label %388, label %373

373:                                              ; preds = %371
  store i32 17, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  br label %406

374:                                              ; preds = %347
  %375 = landingpad { ptr, i32 }
          cleanup
  %376 = extractvalue { ptr, i32 } %375, 0
  store ptr %376, ptr %15, align 8
  %377 = extractvalue { ptr, i32 } %375, 1
  store i32 %377, ptr %16, align 4
  br label %387

378:                                              ; preds = %355, %348
  %379 = landingpad { ptr, i32 }
          cleanup
  %380 = extractvalue { ptr, i32 } %379, 0
  store ptr %380, ptr %15, align 8
  %381 = extractvalue { ptr, i32 } %379, 1
  store i32 %381, ptr %16, align 4
  br label %386

382:                                              ; preds = %356
  %383 = landingpad { ptr, i32 }
          cleanup
  %384 = extractvalue { ptr, i32 } %383, 0
  store ptr %384, ptr %15, align 8
  %385 = extractvalue { ptr, i32 } %383, 1
  store i32 %385, ptr %16, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #8
  br label %386

386:                                              ; preds = %382, %378
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  br label %387

387:                                              ; preds = %386, %374
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  br label %887

388:                                              ; preds = %371
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #8
  %389 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %38) #8
  store ptr %389, ptr %40, align 8, !tbaa !5
  %390 = load ptr, ptr %6, align 8, !tbaa !5
  %391 = getelementptr inbounds %"class.MIR::Function", ptr %390, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #8
  %392 = load ptr, ptr %40, align 8, !tbaa !5
  invoke void @_ZZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListENK6Cloner9monomorphERKN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %41, ptr noundef nonnull align 8 dereferenceable(304) %29, ptr noundef nonnull align 8 dereferenceable(8) %392)
          to label %393 unwind label %397

393:                                              ; preds = %388
  invoke void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %391, ptr noundef nonnull align 8 dereferenceable(8) %41)
          to label %394 unwind label %401

394:                                              ; preds = %393
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  br label %395

395:                                              ; preds = %394
  %396 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %38) #8
  br label %371

397:                                              ; preds = %388
  %398 = landingpad { ptr, i32 }
          cleanup
  %399 = extractvalue { ptr, i32 } %398, 0
  store ptr %399, ptr %15, align 8
  %400 = extractvalue { ptr, i32 } %398, 1
  store i32 %400, ptr %16, align 4
  br label %405

401:                                              ; preds = %393
  %402 = landingpad { ptr, i32 }
          cleanup
  %403 = extractvalue { ptr, i32 } %402, 0
  store ptr %403, ptr %15, align 8
  %404 = extractvalue { ptr, i32 } %402, 1
  store i32 %404, ptr %16, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #8
  br label %405

405:                                              ; preds = %401, %397
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  br label %887

406:                                              ; preds = %373
  %407 = load ptr, ptr %6, align 8, !tbaa !5
  %408 = getelementptr inbounds %"class.MIR::Function", ptr %407, i32 0, i32 0
  %409 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %408) #8
  %410 = getelementptr inbounds %struct.Cloner, ptr %29, i32 0, i32 9
  store i64 %409, ptr %410, align 8, !tbaa !50
  %411 = load ptr, ptr %6, align 8, !tbaa !5
  %412 = getelementptr inbounds %"class.MIR::Function", ptr %411, i32 0, i32 1
  %413 = call noundef i64 @_ZNKSt6vectorIbSaIbEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %412) #8
  %414 = trunc i64 %413 to i32
  %415 = getelementptr inbounds %struct.Cloner, ptr %29, i32 0, i32 8
  store i32 %414, ptr %415, align 4, !tbaa !51
  %416 = load ptr, ptr %6, align 8, !tbaa !5
  %417 = getelementptr inbounds %"class.MIR::Function", ptr %416, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 16, ptr %43) #8
  %418 = load ptr, ptr %6, align 8, !tbaa !5
  %419 = getelementptr inbounds %"class.MIR::Function", ptr %418, i32 0, i32 1
  %420 = call { ptr, i32 } @_ZNSt6vectorIbSaIbEE3endEv(ptr noundef nonnull align 8 dereferenceable(40) %419) #8
  store { ptr, i32 } %420, ptr %44, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %43, ptr align 8 %44, i64 12, i1 false)
  invoke void @_ZNSt19_Bit_const_iteratorC2ERKSt13_Bit_iterator(ptr noundef nonnull align 8 dereferenceable(12) %42, ptr noundef nonnull align 8 dereferenceable(12) %43)
          to label %421 unwind label %454

421:                                              ; preds = %406
  %422 = load ptr, ptr %30, align 8, !tbaa !5
  %423 = getelementptr inbounds %"class.MIR::Function", ptr %422, i32 0, i32 1
  %424 = call { ptr, i32 } @_ZNKSt6vectorIbSaIbEE5beginEv(ptr noundef nonnull align 8 dereferenceable(40) %423) #8
  store { ptr, i32 } %424, ptr %46, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %45, ptr align 8 %46, i64 12, i1 false)
  %425 = load ptr, ptr %30, align 8, !tbaa !5
  %426 = getelementptr inbounds %"class.MIR::Function", ptr %425, i32 0, i32 1
  %427 = call { ptr, i32 } @_ZNKSt6vectorIbSaIbEE3endEv(ptr noundef nonnull align 8 dereferenceable(40) %426) #8
  store { ptr, i32 } %427, ptr %48, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %47, ptr align 8 %48, i64 12, i1 false)
  %428 = getelementptr inbounds { ptr, i32 }, ptr %42, i32 0, i32 0
  %429 = load ptr, ptr %428, align 8
  %430 = getelementptr inbounds { ptr, i32 }, ptr %42, i32 0, i32 1
  %431 = load i32, ptr %430, align 8
  %432 = getelementptr inbounds { ptr, i32 }, ptr %45, i32 0, i32 0
  %433 = load ptr, ptr %432, align 8
  %434 = getelementptr inbounds { ptr, i32 }, ptr %45, i32 0, i32 1
  %435 = load i32, ptr %434, align 8
  %436 = invoke { ptr, i32 } @_ZNSt6vectorIbSaIbEE6insertISt19_Bit_const_iteratorvEESt13_Bit_iteratorS3_T_S5_(ptr noundef nonnull align 8 dereferenceable(40) %417, ptr %429, i32 %431, ptr %433, i32 %435, ptr noundef byval(%"struct.std::_Bit_const_iterator") align 8 %47)
          to label %437 unwind label %454

437:                                              ; preds = %421
  %438 = getelementptr inbounds { ptr, i32 }, ptr %49, i32 0, i32 0
  %439 = extractvalue { ptr, i32 } %436, 0
  store ptr %439, ptr %438, align 8
  %440 = getelementptr inbounds { ptr, i32 }, ptr %49, i32 0, i32 1
  %441 = extractvalue { ptr, i32 } %436, 1
  store i32 %441, ptr %440, align 8
  call void @llvm.lifetime.end.p0(i64 16, ptr %43) #8
  %442 = load ptr, ptr %6, align 8, !tbaa !5
  %443 = getelementptr inbounds %"class.MIR::Function", ptr %442, i32 0, i32 2
  %444 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %443) #8
  %445 = trunc i64 %444 to i32
  %446 = getelementptr inbounds %struct.Cloner, ptr %29, i32 0, i32 5
  store i32 %445, ptr %446, align 8, !tbaa !52
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #8
  store i64 0, ptr %50, align 8, !tbaa !53
  br label %447

447:                                              ; preds = %535, %437
  %448 = load i64, ptr %50, align 8, !tbaa !53
  %449 = load ptr, ptr %20, align 8, !tbaa !5
  %450 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %449, i32 0, i32 4
  %451 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %450) #8
  %452 = icmp ult i64 %448, %451
  br i1 %452, label %458, label %453

453:                                              ; preds = %447
  store i32 19, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #8
  br label %539

454:                                              ; preds = %421, %406
  %455 = landingpad { ptr, i32 }
          cleanup
  %456 = extractvalue { ptr, i32 } %455, 0
  store ptr %456, ptr %15, align 8
  %457 = extractvalue { ptr, i32 } %455, 1
  store i32 %457, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %43) #8
  br label %887

458:                                              ; preds = %447
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #8
  %459 = load ptr, ptr %20, align 8, !tbaa !5
  %460 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %459, i32 0, i32 4
  %461 = load i64, ptr %50, align 8, !tbaa !53
  %462 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %460, i64 noundef %461) #8
  store ptr %462, ptr %51, align 8, !tbaa !5
  %463 = load ptr, ptr %51, align 8, !tbaa !5
  %464 = invoke noundef zeroext i1 @_ZNK3MIR5Param9is_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %463)
          to label %465 unwind label %518

465:                                              ; preds = %458
  br i1 %464, label %466, label %473

466:                                              ; preds = %465
  %467 = load ptr, ptr %5, align 8, !tbaa !5
  %468 = load ptr, ptr %51, align 8, !tbaa !5
  %469 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR5Param9as_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %468)
          to label %470 unwind label %518

470:                                              ; preds = %466
  %471 = invoke noundef zeroext i1 @_ZNK3MIR11TypeResolve14lvalue_is_copyERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(120) %467, ptr noundef nonnull align 8 dereferenceable(32) %469)
          to label %472 unwind label %518

472:                                              ; preds = %470
  br i1 %471, label %473, label %534

473:                                              ; preds = %472, %465
  %474 = getelementptr inbounds %struct.Cloner, ptr %29, i32 0, i32 9
  %475 = load i64, ptr %474, align 8, !tbaa !50
  %476 = getelementptr inbounds %struct.Cloner, ptr %29, i32 0, i32 10
  %477 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %476) #8
  %478 = add i64 %475, %477
  %479 = trunc i64 %478 to i32
  %480 = getelementptr inbounds %struct.Cloner, ptr %29, i32 0, i32 3
  %481 = load i64, ptr %50, align 8, !tbaa !53
  %482 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %480, i64 noundef %481) #8
  store i32 %479, ptr %482, align 4, !tbaa !11
  %483 = getelementptr inbounds %struct.Cloner, ptr %29, i32 0, i32 10
  call void @llvm.lifetime.start.p0(i64 48, ptr %52) #8
  %484 = load ptr, ptr %51, align 8, !tbaa !5
  invoke void @_ZNK3MIR5Param5cloneEv(ptr dead_on_unwind writable sret(%"class.MIR::Param") align 8 %52, ptr noundef nonnull align 8 dereferenceable(48) %484)
          to label %485 unwind label %522

485:                                              ; preds = %473
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %483, ptr noundef nonnull align 8 dereferenceable(48) %52)
          to label %486 unwind label %526

486:                                              ; preds = %485
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %52) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr %52) #8
  br label %487

487:                                              ; preds = %486
  %488 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %489 unwind label %518

489:                                              ; preds = %487
  br i1 %488, label %490, label %531

490:                                              ; preds = %489
  %491 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %492 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %491, ptr noundef @__func__._Z21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransList)
          to label %493 unwind label %518

493:                                              ; preds = %490
  %494 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %492, ptr noundef @.str.15)
          to label %495 unwind label %518

495:                                              ; preds = %493
  %496 = load i64, ptr %50, align 8, !tbaa !53
  %497 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %494, i64 noundef %496)
          to label %498 unwind label %518

498:                                              ; preds = %495
  %499 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %497, ptr noundef @.str.16)
          to label %500 unwind label %518

500:                                              ; preds = %498
  %501 = load ptr, ptr %51, align 8, !tbaa !5
  %502 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(8) %499, ptr noundef nonnull align 8 dereferenceable(48) %501)
          to label %503 unwind label %518

503:                                              ; preds = %500
  %504 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %502, ptr noundef @.str.17)
          to label %505 unwind label %518

505:                                              ; preds = %503
  %506 = getelementptr inbounds %struct.Cloner, ptr %29, i32 0, i32 3
  %507 = load i64, ptr %50, align 8, !tbaa !53
  %508 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %506, i64 noundef %507) #8
  %509 = load i32, ptr %508, align 4, !tbaa !11
  %510 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %504, i32 noundef %509)
          to label %511 unwind label %518

511:                                              ; preds = %505
  %512 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %510, ptr noundef @.str.18)
          to label %513 unwind label %518

513:                                              ; preds = %511
  %514 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %512, ptr noundef @_ZSt3decRSt8ios_base)
          to label %515 unwind label %518

515:                                              ; preds = %513
  %516 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %514, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %517 unwind label %518

517:                                              ; preds = %515
  br label %531

518:                                              ; preds = %515, %513, %511, %505, %503, %500, %498, %495, %493, %490, %487, %470, %466, %458
  %519 = landingpad { ptr, i32 }
          cleanup
  %520 = extractvalue { ptr, i32 } %519, 0
  store ptr %520, ptr %15, align 8
  %521 = extractvalue { ptr, i32 } %519, 1
  store i32 %521, ptr %16, align 4
  br label %538

522:                                              ; preds = %473
  %523 = landingpad { ptr, i32 }
          cleanup
  %524 = extractvalue { ptr, i32 } %523, 0
  store ptr %524, ptr %15, align 8
  %525 = extractvalue { ptr, i32 } %523, 1
  store i32 %525, ptr %16, align 4
  br label %530

526:                                              ; preds = %485
  %527 = landingpad { ptr, i32 }
          cleanup
  %528 = extractvalue { ptr, i32 } %527, 0
  store ptr %528, ptr %15, align 8
  %529 = extractvalue { ptr, i32 } %527, 1
  store i32 %529, ptr %16, align 4
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %52) #8
  br label %530

530:                                              ; preds = %526, %522
  call void @llvm.lifetime.end.p0(i64 48, ptr %52) #8
  br label %538

531:                                              ; preds = %517, %489
  br label %532

532:                                              ; preds = %531
  br label %533

533:                                              ; preds = %532
  br label %534

534:                                              ; preds = %533, %472
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #8
  br label %535

535:                                              ; preds = %534
  %536 = load i64, ptr %50, align 8, !tbaa !53
  %537 = add i64 %536, 1
  store i64 %537, ptr %50, align 8, !tbaa !53
  br label %447, !llvm.loop !54

538:                                              ; preds = %530, %518
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #8
  br label %887

539:                                              ; preds = %453
  call void @llvm.lifetime.start.p0(i64 24, ptr %53) #8
  call void @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #8
  %540 = load ptr, ptr %30, align 8, !tbaa !5
  %541 = getelementptr inbounds %"class.MIR::Function", ptr %540, i32 0, i32 2
  %542 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %541) #8
  invoke void @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %53, i64 noundef %542)
          to label %543 unwind label %555

543:                                              ; preds = %539
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #8
  %544 = load ptr, ptr %30, align 8, !tbaa !5
  %545 = getelementptr inbounds %"class.MIR::Function", ptr %544, i32 0, i32 2
  store ptr %545, ptr %54, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #8
  %546 = load ptr, ptr %54, align 8, !tbaa !5
  %547 = call ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %546) #8
  %548 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.214", ptr %55, i32 0, i32 0
  store ptr %547, ptr %548, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #8
  %549 = load ptr, ptr %54, align 8, !tbaa !5
  %550 = call ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %549) #8
  %551 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.214", ptr %56, i32 0, i32 0
  store ptr %550, ptr %551, align 8
  br label %552

552:                                              ; preds = %579, %543
  %553 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %55, ptr noundef nonnull align 8 dereferenceable(8) %56) #8
  br i1 %553, label %559, label %554

554:                                              ; preds = %552
  store i32 24, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #8
  br label %590

555:                                              ; preds = %832, %813, %811, %809, %806, %803, %796, %601, %599, %597, %594, %591, %539
  %556 = landingpad { ptr, i32 }
          cleanup
  %557 = extractvalue { ptr, i32 } %556, 0
  store ptr %557, ptr %15, align 8
  %558 = extractvalue { ptr, i32 } %556, 1
  store i32 %558, ptr %16, align 4
  br label %886

559:                                              ; preds = %552
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #8
  %560 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %55) #8
  store ptr %560, ptr %57, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 192, ptr %58) #8
  %561 = load ptr, ptr %57, align 8, !tbaa !5
  %562 = load ptr, ptr %57, align 8, !tbaa !5
  %563 = load ptr, ptr %30, align 8, !tbaa !5
  %564 = getelementptr inbounds %"class.MIR::Function", ptr %563, i32 0, i32 2
  %565 = call noundef ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %564) #8
  %566 = ptrtoint ptr %562 to i64
  %567 = ptrtoint ptr %565 to i64
  %568 = sub i64 %566, %567
  %569 = sdiv exact i64 %568, 192
  %570 = trunc i64 %569 to i32
  %571 = load ptr, ptr %6, align 8, !tbaa !5
  %572 = getelementptr inbounds %"class.MIR::Function", ptr %571, i32 0, i32 2
  %573 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %572) #8
  %574 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %53) #8
  %575 = add i64 %573, %574
  %576 = trunc i64 %575 to i32
  invoke void @_ZZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListENK6Cloner8clone_bbERKNS_10BasicBlockEjj(ptr dead_on_unwind writable sret(%"struct.MIR::BasicBlock") align 8 %58, ptr noundef nonnull align 8 dereferenceable(304) %29, ptr noundef nonnull align 8 dereferenceable(192) %561, i32 noundef %570, i32 noundef %576)
          to label %577 unwind label %581

577:                                              ; preds = %559
  invoke void @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %53, ptr noundef nonnull align 8 dereferenceable(192) %58)
          to label %578 unwind label %585

578:                                              ; preds = %577
  call void @_ZN3MIR10BasicBlockD2Ev(ptr noundef nonnull align 8 dereferenceable(192) %58) #8
  call void @llvm.lifetime.end.p0(i64 192, ptr %58) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #8
  br label %579

579:                                              ; preds = %578
  %580 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %55) #8
  br label %552

581:                                              ; preds = %559
  %582 = landingpad { ptr, i32 }
          cleanup
  %583 = extractvalue { ptr, i32 } %582, 0
  store ptr %583, ptr %15, align 8
  %584 = extractvalue { ptr, i32 } %582, 1
  store i32 %584, ptr %16, align 4
  br label %589

585:                                              ; preds = %577
  %586 = landingpad { ptr, i32 }
          cleanup
  %587 = extractvalue { ptr, i32 } %586, 0
  store ptr %587, ptr %15, align 8
  %588 = extractvalue { ptr, i32 } %586, 1
  store i32 %588, ptr %16, align 4
  call void @_ZN3MIR10BasicBlockD2Ev(ptr noundef nonnull align 8 dereferenceable(192) %58) #8
  br label %589

589:                                              ; preds = %585, %581
  call void @llvm.lifetime.end.p0(i64 192, ptr %58) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #8
  br label %886

590:                                              ; preds = %554
  br label %591

591:                                              ; preds = %590
  %592 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %593 unwind label %555

593:                                              ; preds = %591
  br i1 %592, label %594, label %604

594:                                              ; preds = %593
  %595 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %596 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %595, ptr noundef @__func__._Z21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransList)
          to label %597 unwind label %555

597:                                              ; preds = %594
  %598 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %596, ptr noundef @.str.19)
          to label %599 unwind label %555

599:                                              ; preds = %597
  %600 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %598, ptr noundef @_ZSt3decRSt8ios_base)
          to label %601 unwind label %555

601:                                              ; preds = %599
  %602 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %600, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %603 unwind label %555

603:                                              ; preds = %601
  br label %604

604:                                              ; preds = %603, %593
  br label %605

605:                                              ; preds = %604
  br label %606

606:                                              ; preds = %605
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #8
  %607 = getelementptr inbounds %struct.Cloner, ptr %29, i32 0, i32 10
  store ptr %607, ptr %59, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #8
  %608 = load ptr, ptr %59, align 8, !tbaa !5
  %609 = call ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %608) #8
  %610 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.215", ptr %60, i32 0, i32 0
  store ptr %609, ptr %610, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #8
  %611 = load ptr, ptr %59, align 8, !tbaa !5
  %612 = call ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %611) #8
  %613 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.215", ptr %61, i32 0, i32 0
  store ptr %612, ptr %613, align 8
  br label %614

614:                                              ; preds = %747, %606
  %615 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %60, ptr noundef nonnull align 8 dereferenceable(8) %61) #8
  br i1 %615, label %617, label %616

616:                                              ; preds = %614
  store i32 28, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #8
  br label %760

617:                                              ; preds = %614
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #8
  %618 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %60) #8
  store ptr %618, ptr %62, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #8
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %63)
          to label %619 unwind label %686

619:                                              ; preds = %617
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #8
  %620 = load ptr, ptr %62, align 8, !tbaa !5
  %621 = invoke noundef zeroext i1 @_ZNK3MIR5Param11is_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48) %620)
          to label %622 unwind label %690

622:                                              ; preds = %619
  br i1 %621, label %623, label %629

623:                                              ; preds = %622
  %624 = load ptr, ptr %5, align 8, !tbaa !5
  %625 = load ptr, ptr %62, align 8, !tbaa !5
  %626 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR5Param11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48) %625)
          to label %627 unwind label %690

627:                                              ; preds = %623
  invoke void @_ZNK3MIR11TypeResolve14get_const_typeERKNS_8ConstantE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %64, ptr noundef nonnull align 8 dereferenceable(120) %624, ptr noundef nonnull align 8 dereferenceable(40) %626)
          to label %628 unwind label %690

628:                                              ; preds = %627
  br label %637

629:                                              ; preds = %622
  %630 = load ptr, ptr %5, align 8, !tbaa !5
  %631 = load ptr, ptr %62, align 8, !tbaa !5
  %632 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR5Param9as_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %631)
          to label %633 unwind label %690

633:                                              ; preds = %629
  %634 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %630, ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef nonnull align 8 dereferenceable(32) %632, i32 noundef 0)
          to label %635 unwind label %690

635:                                              ; preds = %633
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %64, ptr noundef nonnull align 8 dereferenceable(8) %634)
          to label %636 unwind label %690

636:                                              ; preds = %635
  br label %637

637:                                              ; preds = %636, %628
  call void @llvm.lifetime.start.p0(i64 32, ptr %65) #8
  %638 = load ptr, ptr %6, align 8, !tbaa !5
  %639 = getelementptr inbounds %"class.MIR::Function", ptr %638, i32 0, i32 0
  %640 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %639) #8
  %641 = trunc i64 %640 to i32
  invoke void @_ZN3MIR6LValue9new_LocalEj(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %65, i32 noundef %641)
          to label %642 unwind label %694

642:                                              ; preds = %637
  %643 = load ptr, ptr %6, align 8, !tbaa !5
  %644 = getelementptr inbounds %"class.MIR::Function", ptr %643, i32 0, i32 0
  invoke void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %644, ptr noundef nonnull align 8 dereferenceable(8) %64)
          to label %645 unwind label %698

645:                                              ; preds = %642
  call void @llvm.lifetime.start.p0(i64 112, ptr %66) #8
  %646 = load ptr, ptr %62, align 8, !tbaa !5
  store i1 false, ptr %68, align 1
  store i1 false, ptr %70, align 1
  %647 = invoke noundef zeroext i1 @_ZNK3MIR5Param11is_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48) %646)
          to label %648 unwind label %702

648:                                              ; preds = %645
  br i1 %647, label %649, label %654

649:                                              ; preds = %648
  %650 = load ptr, ptr %62, align 8, !tbaa !5
  %651 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR5Param11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48) %650)
          to label %652 unwind label %702

652:                                              ; preds = %649
  call void @_ZN3MIR8ConstantC2EOS0_(ptr noundef nonnull align 8 dereferenceable(40) %67, ptr noundef nonnull align 8 dereferenceable(40) %651) #8
  store i1 true, ptr %68, align 1
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %66, ptr noundef %67)
          to label %653 unwind label %706

653:                                              ; preds = %652
  br label %660

654:                                              ; preds = %648
  %655 = load ptr, ptr %62, align 8, !tbaa !5
  %656 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR5Param9as_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %655)
          to label %657 unwind label %706

657:                                              ; preds = %654
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %69, ptr noundef nonnull align 8 dereferenceable(32) %656)
          to label %658 unwind label %706

658:                                              ; preds = %657
  store i1 true, ptr %70, align 1
  invoke void @_ZN3MIR6RValueC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(112) %66, ptr noundef %69)
          to label %659 unwind label %710

659:                                              ; preds = %658
  br label %660

660:                                              ; preds = %659, %653
  %661 = load i1, ptr %70, align 1
  br i1 %661, label %662, label %663

662:                                              ; preds = %660
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #8
  br label %663

663:                                              ; preds = %662, %660
  %664 = load i1, ptr %68, align 1
  br i1 %664, label %665, label %666

665:                                              ; preds = %663
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %67) #8
  br label %666

666:                                              ; preds = %665, %663
  call void @llvm.lifetime.start.p0(i64 152, ptr %71) #8
  %667 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %72, i32 0, i32 0
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %667, ptr noundef nonnull align 8 dereferenceable(32) %65)
          to label %668 unwind label %721

668:                                              ; preds = %666
  %669 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %72, i32 0, i32 1
  call void @_ZN3MIR6RValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(112) %669, ptr noundef nonnull align 8 dereferenceable(112) %66) #8
  invoke void @_ZN3MIR9Statement11make_AssignENS0_11Data_AssignE(ptr dead_on_unwind writable sret(%"class.MIR::Statement") align 8 %71, ptr noundef %72)
          to label %670 unwind label %725

670:                                              ; preds = %668
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %72) #8
  br label %671

671:                                              ; preds = %670
  %672 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %673 unwind label %729

673:                                              ; preds = %671
  br i1 %672, label %674, label %733

674:                                              ; preds = %673
  %675 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %676 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %675, ptr noundef @__func__._Z21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransList)
          to label %677 unwind label %729

677:                                              ; preds = %674
  %678 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %676, ptr noundef @.str.20)
          to label %679 unwind label %729

679:                                              ; preds = %677
  %680 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8) %678, ptr noundef nonnull align 8 dereferenceable(152) %71)
          to label %681 unwind label %729

681:                                              ; preds = %679
  %682 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %680, ptr noundef @_ZSt3decRSt8ios_base)
          to label %683 unwind label %729

683:                                              ; preds = %681
  %684 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %682, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %685 unwind label %729

685:                                              ; preds = %683
  br label %733

686:                                              ; preds = %617
  %687 = landingpad { ptr, i32 }
          cleanup
  %688 = extractvalue { ptr, i32 } %687, 0
  store ptr %688, ptr %15, align 8
  %689 = extractvalue { ptr, i32 } %687, 1
  store i32 %689, ptr %16, align 4
  br label %759

690:                                              ; preds = %635, %633, %629, %627, %623, %619
  %691 = landingpad { ptr, i32 }
          cleanup
  %692 = extractvalue { ptr, i32 } %691, 0
  store ptr %692, ptr %15, align 8
  %693 = extractvalue { ptr, i32 } %691, 1
  store i32 %693, ptr %16, align 4
  br label %758

694:                                              ; preds = %637
  %695 = landingpad { ptr, i32 }
          cleanup
  %696 = extractvalue { ptr, i32 } %695, 0
  store ptr %696, ptr %15, align 8
  %697 = extractvalue { ptr, i32 } %695, 1
  store i32 %697, ptr %16, align 4
  br label %757

698:                                              ; preds = %642
  %699 = landingpad { ptr, i32 }
          cleanup
  %700 = extractvalue { ptr, i32 } %699, 0
  store ptr %700, ptr %15, align 8
  %701 = extractvalue { ptr, i32 } %699, 1
  store i32 %701, ptr %16, align 4
  br label %756

702:                                              ; preds = %649, %645
  %703 = landingpad { ptr, i32 }
          cleanup
  %704 = extractvalue { ptr, i32 } %703, 0
  store ptr %704, ptr %15, align 8
  %705 = extractvalue { ptr, i32 } %703, 1
  store i32 %705, ptr %16, align 4
  br label %755

706:                                              ; preds = %657, %654, %652
  %707 = landingpad { ptr, i32 }
          cleanup
  %708 = extractvalue { ptr, i32 } %707, 0
  store ptr %708, ptr %15, align 8
  %709 = extractvalue { ptr, i32 } %707, 1
  store i32 %709, ptr %16, align 4
  br label %717

710:                                              ; preds = %658
  %711 = landingpad { ptr, i32 }
          cleanup
  %712 = extractvalue { ptr, i32 } %711, 0
  store ptr %712, ptr %15, align 8
  %713 = extractvalue { ptr, i32 } %711, 1
  store i32 %713, ptr %16, align 4
  %714 = load i1, ptr %70, align 1
  br i1 %714, label %715, label %716

715:                                              ; preds = %710
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #8
  br label %716

716:                                              ; preds = %715, %710
  br label %717

717:                                              ; preds = %716, %706
  %718 = load i1, ptr %68, align 1
  br i1 %718, label %719, label %720

719:                                              ; preds = %717
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %67) #8
  br label %720

720:                                              ; preds = %719, %717
  br label %755

721:                                              ; preds = %666
  %722 = landingpad { ptr, i32 }
          cleanup
  %723 = extractvalue { ptr, i32 } %722, 0
  store ptr %723, ptr %15, align 8
  %724 = extractvalue { ptr, i32 } %722, 1
  store i32 %724, ptr %16, align 4
  br label %754

725:                                              ; preds = %668
  %726 = landingpad { ptr, i32 }
          cleanup
  %727 = extractvalue { ptr, i32 } %726, 0
  store ptr %727, ptr %15, align 8
  %728 = extractvalue { ptr, i32 } %726, 1
  store i32 %728, ptr %16, align 4
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %72) #8
  br label %754

729:                                              ; preds = %683, %681, %679, %677, %674, %671
  %730 = landingpad { ptr, i32 }
          cleanup
  %731 = extractvalue { ptr, i32 } %730, 0
  store ptr %731, ptr %15, align 8
  %732 = extractvalue { ptr, i32 } %730, 1
  store i32 %732, ptr %16, align 4
  br label %753

733:                                              ; preds = %685, %673
  br label %734

734:                                              ; preds = %733
  br label %735

735:                                              ; preds = %734
  %736 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %53, i64 noundef 0) #8
  %737 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %736, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #8
  %738 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %53, i64 noundef 0) #8
  %739 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %738, i32 0, i32 0
  %740 = call ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %739) #8
  %741 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.148", ptr %74, i32 0, i32 0
  store ptr %740, ptr %741, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR9StatementESt6vectorIS2_SaIS2_EEEC2IPS2_vEERKNS0_IT_S7_EE(ptr noundef nonnull align 8 dereferenceable(8) %73, ptr noundef nonnull align 8 dereferenceable(8) %74) #8
  %742 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.189", ptr %73, i32 0, i32 0
  %743 = load ptr, ptr %742, align 8
  %744 = invoke ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EE6insertEN9__gnu_cxx17__normal_iteratorIPKS1_S3_EEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %737, ptr %743, ptr noundef nonnull align 8 dereferenceable(152) %71)
          to label %745 unwind label %749

745:                                              ; preds = %735
  %746 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.148", ptr %75, i32 0, i32 0
  store ptr %744, ptr %746, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #8
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %71) #8
  call void @llvm.lifetime.end.p0(i64 152, ptr %71) #8
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %66) #8
  call void @llvm.lifetime.end.p0(i64 112, ptr %66) #8
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %65) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %63) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #8
  br label %747

747:                                              ; preds = %745
  %748 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %60) #8
  br label %614

749:                                              ; preds = %735
  %750 = landingpad { ptr, i32 }
          cleanup
  %751 = extractvalue { ptr, i32 } %750, 0
  store ptr %751, ptr %15, align 8
  %752 = extractvalue { ptr, i32 } %750, 1
  store i32 %752, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #8
  br label %753

753:                                              ; preds = %749, %729
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %71) #8
  br label %754

754:                                              ; preds = %753, %725, %721
  call void @llvm.lifetime.end.p0(i64 152, ptr %71) #8
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %66) #8
  br label %755

755:                                              ; preds = %754, %720, %702
  call void @llvm.lifetime.end.p0(i64 112, ptr %66) #8
  br label %756

756:                                              ; preds = %755, %698
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #8
  br label %757

757:                                              ; preds = %756, %694
  call void @llvm.lifetime.end.p0(i64 32, ptr %65) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #8
  br label %758

758:                                              ; preds = %757, %690
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %63) #8
  br label %759

759:                                              ; preds = %758, %686
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #8
  br label %886

760:                                              ; preds = %616
  %761 = getelementptr inbounds %struct.Cloner, ptr %29, i32 0, i32 10
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %761) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #8
  store ptr %17, ptr %76, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #8
  %762 = load ptr, ptr %76, align 8, !tbaa !5
  %763 = call ptr @_ZNSt6vectorIZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS0_8FunctionEbPK9TransListE11InlineEventSaIS8_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %762) #8
  %764 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.205", ptr %77, i32 0, i32 0
  store ptr %763, ptr %764, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #8
  %765 = load ptr, ptr %76, align 8, !tbaa !5
  %766 = call ptr @_ZNSt6vectorIZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS0_8FunctionEbPK9TransListE11InlineEventSaIS8_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %765) #8
  %767 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.205", ptr %78, i32 0, i32 0
  store ptr %766, ptr %767, align 8
  br label %768

768:                                              ; preds = %790, %760
  %769 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS1_8FunctionEbPK9TransListE11InlineEventSt6vectorIS9_SaIS9_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %77, ptr noundef nonnull align 8 dereferenceable(8) %78) #8
  br i1 %769, label %771, label %770

770:                                              ; preds = %768
  store i32 32, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #8
  br label %792

771:                                              ; preds = %768
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #8
  %772 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS1_8FunctionEbPK9TransListE11InlineEventSt6vectorIS9_SaIS9_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %77) #8
  store ptr %772, ptr %79, align 8, !tbaa !5
  %773 = load ptr, ptr %79, align 8, !tbaa !5
  %774 = load i32, ptr %18, align 4, !tbaa !11
  %775 = zext i32 %774 to i64
  %776 = invoke noundef zeroext i1 @_ZZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListENK11InlineEvent6has_bbEm(ptr noundef nonnull align 8 dereferenceable(112) %773, i64 noundef %775)
          to label %777 unwind label %785

777:                                              ; preds = %771
  br i1 %776, label %778, label %789

778:                                              ; preds = %777
  %779 = load ptr, ptr %79, align 8, !tbaa !5
  %780 = getelementptr inbounds %struct.Cloner, ptr %29, i32 0, i32 5
  %781 = load i32, ptr %780, align 8, !tbaa !52
  %782 = zext i32 %781 to i64
  %783 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %53) #8
  invoke void @_ZZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListEN11InlineEvent9add_rangeEmm(ptr noundef nonnull align 8 dereferenceable(112) %779, i64 noundef %782, i64 noundef %783)
          to label %784 unwind label %785

784:                                              ; preds = %778
  br label %789

785:                                              ; preds = %778, %771
  %786 = landingpad { ptr, i32 }
          cleanup
  %787 = extractvalue { ptr, i32 } %786, 0
  store ptr %787, ptr %15, align 8
  %788 = extractvalue { ptr, i32 } %786, 1
  store i32 %788, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #8
  br label %886

789:                                              ; preds = %784, %777
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #8
  br label %790

790:                                              ; preds = %789
  %791 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS1_8FunctionEbPK9TransListE11InlineEventSt6vectorIS9_SaIS9_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %77) #8
  br label %768

792:                                              ; preds = %770
  call void @llvm.lifetime.start.p0(i64 112, ptr %80) #8
  %793 = load ptr, ptr %21, align 8, !tbaa !5
  invoke void @_ZNK3HIR4Path5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::Path") align 8 %81, ptr noundef nonnull align 8 dereferenceable(88) %793)
          to label %794 unwind label %816

794:                                              ; preds = %792
  invoke void @_ZZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListEN11InlineEventC2EN3HIR4PathE(ptr noundef nonnull align 8 dereferenceable(112) %80, ptr noundef %81)
          to label %795 unwind label %820

795:                                              ; preds = %794
  invoke void @_ZNSt6vectorIZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS0_8FunctionEbPK9TransListE11InlineEventSaIS8_EE9push_backEOS8_(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 8 dereferenceable(112) %80)
          to label %796 unwind label %824

796:                                              ; preds = %795
  call void @_ZZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListEN11InlineEventD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %80) #8
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %81) #8
  call void @llvm.lifetime.end.p0(i64 112, ptr %80) #8
  %797 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNSt6vectorIZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS0_8FunctionEbPK9TransListE11InlineEventSaIS8_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %17) #8
  %798 = getelementptr inbounds %struct.Cloner, ptr %29, i32 0, i32 5
  %799 = load i32, ptr %798, align 8, !tbaa !52
  %800 = zext i32 %799 to i64
  %801 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %53) #8
  invoke void @_ZZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListEN11InlineEvent9add_rangeEmm(ptr noundef nonnull align 8 dereferenceable(112) %797, i64 noundef %800, i64 noundef %801)
          to label %802 unwind label %555

802:                                              ; preds = %796
  br label %803

803:                                              ; preds = %802
  %804 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %805 unwind label %555

805:                                              ; preds = %803
  br i1 %804, label %806, label %830

806:                                              ; preds = %805
  %807 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %808 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %807, ptr noundef @__func__._Z21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransList)
          to label %809 unwind label %555

809:                                              ; preds = %806
  %810 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %808, ptr noundef @.str.21)
          to label %811 unwind label %555

811:                                              ; preds = %809
  %812 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %810, ptr noundef @_ZSt3decRSt8ios_base)
          to label %813 unwind label %555

813:                                              ; preds = %811
  %814 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %812, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %815 unwind label %555

815:                                              ; preds = %813
  br label %830

816:                                              ; preds = %792
  %817 = landingpad { ptr, i32 }
          cleanup
  %818 = extractvalue { ptr, i32 } %817, 0
  store ptr %818, ptr %15, align 8
  %819 = extractvalue { ptr, i32 } %817, 1
  store i32 %819, ptr %16, align 4
  br label %829

820:                                              ; preds = %794
  %821 = landingpad { ptr, i32 }
          cleanup
  %822 = extractvalue { ptr, i32 } %821, 0
  store ptr %822, ptr %15, align 8
  %823 = extractvalue { ptr, i32 } %821, 1
  store i32 %823, ptr %16, align 4
  br label %828

824:                                              ; preds = %795
  %825 = landingpad { ptr, i32 }
          cleanup
  %826 = extractvalue { ptr, i32 } %825, 0
  store ptr %826, ptr %15, align 8
  %827 = extractvalue { ptr, i32 } %825, 1
  store i32 %827, ptr %16, align 4
  call void @_ZZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListEN11InlineEventD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %80) #8
  br label %828

828:                                              ; preds = %824, %820
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %81) #8
  br label %829

829:                                              ; preds = %828, %816
  call void @llvm.lifetime.end.p0(i64 112, ptr %80) #8
  br label %886

830:                                              ; preds = %815, %805
  br label %831

831:                                              ; preds = %830
  br label %832

832:                                              ; preds = %831
  %833 = load ptr, ptr %6, align 8, !tbaa !5
  %834 = getelementptr inbounds %"class.MIR::Function", ptr %833, i32 0, i32 2
  %835 = load ptr, ptr %6, align 8, !tbaa !5
  %836 = getelementptr inbounds %"class.MIR::Function", ptr %835, i32 0, i32 2
  %837 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %836) #8
  %838 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %53) #8
  %839 = add i64 %837, %838
  invoke void @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %834, i64 noundef %839)
          to label %840 unwind label %555

840:                                              ; preds = %832
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #8
  store ptr %53, ptr %82, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #8
  %841 = load ptr, ptr %82, align 8, !tbaa !5
  %842 = call ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %841) #8
  %843 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %83, i32 0, i32 0
  store ptr %842, ptr %843, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #8
  %844 = load ptr, ptr %82, align 8, !tbaa !5
  %845 = call ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %844) #8
  %846 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %84, i32 0, i32 0
  store ptr %845, ptr %846, align 8
  br label %847

847:                                              ; preds = %856, %840
  %848 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %83, ptr noundef nonnull align 8 dereferenceable(8) %84) #8
  br i1 %848, label %850, label %849

849:                                              ; preds = %847
  store i32 36, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #8
  br label %862

850:                                              ; preds = %847
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #8
  %851 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %83) #8
  store ptr %851, ptr %85, align 8, !tbaa !5
  %852 = load ptr, ptr %6, align 8, !tbaa !5
  %853 = getelementptr inbounds %"class.MIR::Function", ptr %852, i32 0, i32 2
  %854 = load ptr, ptr %85, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %853, ptr noundef nonnull align 8 dereferenceable(192) %854)
          to label %855 unwind label %858

855:                                              ; preds = %850
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #8
  br label %856

856:                                              ; preds = %855
  %857 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %83) #8
  br label %847

858:                                              ; preds = %850
  %859 = landingpad { ptr, i32 }
          cleanup
  %860 = extractvalue { ptr, i32 } %859, 0
  store ptr %860, ptr %15, align 8
  %861 = extractvalue { ptr, i32 } %859, 1
  store i32 %861, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #8
  br label %886

862:                                              ; preds = %849
  call void @llvm.lifetime.start.p0(i64 168, ptr %86) #8
  %863 = getelementptr inbounds %struct.Cloner, ptr %29, i32 0, i32 5
  %864 = load i32, ptr %863, align 8, !tbaa !52
  invoke void @_ZN3MIR10Terminator9make_GotoEj(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %86, i32 noundef %864)
          to label %865 unwind label %877

865:                                              ; preds = %862
  %866 = load ptr, ptr %6, align 8, !tbaa !5
  %867 = getelementptr inbounds %"class.MIR::Function", ptr %866, i32 0, i32 2
  %868 = load i32, ptr %18, align 4, !tbaa !11
  %869 = zext i32 %868 to i64
  %870 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %867, i64 noundef %869) #8
  %871 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %870, i32 0, i32 1
  %872 = invoke noundef nonnull align 8 dereferenceable(168) ptr @_ZN3MIR10TerminatoraSEOS0_(ptr noundef nonnull align 8 dereferenceable(168) %871, ptr noundef nonnull align 8 dereferenceable(168) %86)
          to label %873 unwind label %881

873:                                              ; preds = %865
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %86) #8
  call void @llvm.lifetime.end.p0(i64 168, ptr %86) #8
  store i8 1, ptr %9, align 1, !tbaa !9
  call void @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %53) #8
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %31) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %31) #8
  store i32 0, ptr %19, align 4
  br label %874

874:                                              ; preds = %873, %291, %262, %233
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  call void @_ZZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListEN6ClonerD2Ev(ptr noundef nonnull align 8 dereferenceable(304) %29) #8
  call void @llvm.lifetime.end.p0(i64 304, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #8
  %875 = load i32, ptr %19, align 4
  switch i32 %875, label %893 [
    i32 0, label %876
  ]

876:                                              ; preds = %874
  br label %892

877:                                              ; preds = %862
  %878 = landingpad { ptr, i32 }
          cleanup
  %879 = extractvalue { ptr, i32 } %878, 0
  store ptr %879, ptr %15, align 8
  %880 = extractvalue { ptr, i32 } %878, 1
  store i32 %880, ptr %16, align 4
  br label %885

881:                                              ; preds = %865
  %882 = landingpad { ptr, i32 }
          cleanup
  %883 = extractvalue { ptr, i32 } %882, 0
  store ptr %883, ptr %15, align 8
  %884 = extractvalue { ptr, i32 } %882, 1
  store i32 %884, ptr %16, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %86) #8
  br label %885

885:                                              ; preds = %881, %877
  call void @llvm.lifetime.end.p0(i64 168, ptr %86) #8
  br label %886

886:                                              ; preds = %885, %858, %829, %785, %759, %589, %555
  call void @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %53) #8
  br label %887

887:                                              ; preds = %886, %538, %454, %405, %387, %341, %340
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %31) #8
  br label %888

888:                                              ; preds = %887, %328, %324
  call void @llvm.lifetime.end.p0(i64 40, ptr %31) #8
  br label %889

889:                                              ; preds = %888, %238
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  call void @_ZZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListEN6ClonerD2Ev(ptr noundef nonnull align 8 dereferenceable(304) %29) #8
  br label %890

890:                                              ; preds = %889, %234
  call void @llvm.lifetime.end.p0(i64 304, ptr %29) #8
  br label %891

891:                                              ; preds = %890, %215, %160
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #8
  br label %899

892:                                              ; preds = %876, %116
  store i32 0, ptr %19, align 4
  br label %893

893:                                              ; preds = %892, %874, %124
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  %894 = load i32, ptr %19, align 4
  switch i32 %894, label %910 [
    i32 0, label %895
    i32 4, label %896
  ]

895:                                              ; preds = %893
  br label %896

896:                                              ; preds = %895, %893
  %897 = load i32, ptr %18, align 4, !tbaa !11
  %898 = add i32 %897, 1
  store i32 %898, ptr %18, align 4, !tbaa !11
  br label %93, !llvm.loop !56

899:                                              ; preds = %891, %129
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  br label %900

900:                                              ; preds = %899, %125
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  call void @_ZNSt6vectorIZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS0_8FunctionEbPK9TransListE11InlineEventSaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #8
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %10) #8
  br label %904

901:                                              ; preds = %100
  %902 = load i8, ptr %9, align 1, !tbaa !9, !range !19, !noundef !20
  %903 = trunc i8 %902 to i1
  store i32 1, ptr %19, align 4
  call void @_ZNSt6vectorIZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS0_8FunctionEbPK9TransListE11InlineEventSaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #8
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %10) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %10) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #8
  ret i1 %903

904:                                              ; preds = %900, %101
  call void @llvm.lifetime.end.p0(i64 40, ptr %10) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #8
  br label %905

905:                                              ; preds = %904
  %906 = load ptr, ptr %15, align 8
  %907 = load i32, ptr %16, align 4
  %908 = insertvalue { ptr, i32 } poison, ptr %906, 0
  %909 = insertvalue { ptr, i32 } %908, i32 %907, 1
  resume { ptr, i32 } %909

910:                                              ; preds = %893, %195
  unreachable
}

; Function Attrs: nounwind
declare void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #3

declare void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEES5_(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef, ptr noundef, ptr noundef) unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef) #2 align 2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(192) ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #4 align 2

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef, ptr noundef) #1

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(216) ptr @_ZSt3decRSt8ios_base(ptr noundef nonnull align 8 dereferenceable(216)) #6

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(152)) #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR9StatementESt6vectorIS2_SaIS2_EEEC2IPS2_vEERKNS0_IT_S7_EE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #4 align 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) #7

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(168) ptr @_ZN3MIR10TerminatoraSEOS0_(ptr noundef nonnull align 8 dereferenceable(168), ptr noundef nonnull align 8 dereferenceable(168)) #2 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3MIR11TypeResolve17set_cur_stmt_termEj(ptr noundef nonnull align 8 dereferenceable(120), i32 noundef) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(120)) #2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS4_8FunctionEbPK9TransListE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS4_8FunctionEbPK9TransListE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #4 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3MIR10CallTarget7is_PathEv(ptr noundef nonnull align 8 dereferenceable(96)) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(88) ptr @_ZN3MIR10CallTarget7as_PathEv(ptr noundef nonnull align 8 dereferenceable(96)) #4 align 2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_10TerminatorE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(168)) #1

; Function Attrs: mustprogress nounwind uwtable
declare hidden ptr @_ZNSt6vectorIZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS0_8FunctionEbPK9TransListE11InlineEventSaIS8_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden ptr @_ZNSt6vectorIZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS0_8FunctionEbPK9TransListE11InlineEventSaIS8_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) #4 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef nonnull align 8 dereferenceable(112) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS1_8FunctionEbPK9TransListE11InlineEventSt6vectorIS9_SaIS9_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) #4 align 2

declare noundef zeroext i1 @_ZNK3HIR4PatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(88)) #1

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListENK11InlineEvent6has_bbEm(ptr noundef nonnull align 8 dereferenceable(112), i64 noundef) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS4_8FunctionEbPK9TransListE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #4 align 2

declare ptr @__cxa_allocate_exception(i64)

declare void @__cxa_throw(ptr, ptr, ptr)

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS1_8FunctionEbPK9TransListE11InlineEventSt6vectorIS9_SaIS9_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) #4 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListEN6ClonerC2ERK4SpanRK18StaticTraitResolveRNS_10Terminator9Data_CallE(ptr noundef nonnull align 8 dereferenceable(304), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(160)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef ptr @_ZN12_GLOBAL__N_114get_called_mirERKN3MIR11TypeResolveEPK9TransListRKN3HIR4PathERNS_9ParamsSetE(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef, ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(176)) #2

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(88)) #1

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS4_8FunctionEbPK9TransListE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR6LValue9new_LocalEj(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8, i32 noundef) #2 align 2

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) #1

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) #1

declare void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8, ptr noundef nonnull align 8 dereferenceable(8)) #1

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListENK6Cloner9monomorphERKN3HIR7TypeRefE(ptr dead_on_unwind noalias writable sret(%"class.HIR::TypeRef") align 8, ptr noundef nonnull align 8 dereferenceable(304), ptr noundef nonnull align 8 dereferenceable(8)) #2 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIbSaIbEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(40)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i32 } @_ZNSt6vectorIbSaIbEE6insertISt19_Bit_const_iteratorvEESt13_Bit_iteratorS3_T_S5_(ptr noundef nonnull align 8 dereferenceable(40), ptr, i32, ptr, i32, ptr noundef byval(%"struct.std::_Bit_const_iterator") align 8) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { ptr, i32 } @_ZNSt6vectorIbSaIbEE3endEv(ptr noundef nonnull align 8 dereferenceable(40)) #4 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { ptr, i32 } @_ZNKSt6vectorIbSaIbEE5beginEv(ptr noundef nonnull align 8 dereferenceable(40)) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { ptr, i32 } @_ZNKSt6vectorIbSaIbEE3endEv(ptr noundef nonnull align 8 dereferenceable(40)) #4 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3MIR5Param9is_LValueEv(ptr noundef nonnull align 8 dereferenceable(48)) #4 align 2

declare noundef zeroext i1 @_ZNK3MIR11TypeResolve14lvalue_is_copyERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(32)) #1

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

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

declare void @_ZNK3MIR5Param5cloneEv(ptr dead_on_unwind writable sret(%"class.MIR::Param") align 8, ptr noundef nonnull align 8 dereferenceable(48)) #1

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(48)) #1

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListENK6Cloner8clone_bbERKNS_10BasicBlockEjj(ptr dead_on_unwind noalias writable sret(%"struct.MIR::BasicBlock") align 8, ptr noundef nonnull align 8 dereferenceable(304), ptr noundef nonnull align 8 dereferenceable(192), i32 noundef, i32 noundef) #2 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3MIR5Param11is_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48)) #4 align 2

declare void @_ZNK3MIR11TypeResolve14get_const_typeERKNS_8ConstantE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8, ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(40)) #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR5Param11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48)) #4 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3MIR8ConstantC2EOS0_(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #4 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR9Statement11make_AssignENS0_11Data_AssignE(ptr dead_on_unwind noalias writable sret(%"class.MIR::Statement") align 8, ptr noundef) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3MIR6RValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 8 dereferenceable(112)) unnamed_addr #4 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EE6insertEN9__gnu_cxx17__normal_iteratorIPKS1_S3_EEOS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr, ptr noundef nonnull align 8 dereferenceable(152)) #2 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListEN11InlineEvent9add_rangeEmm(ptr noundef nonnull align 8 dereferenceable(112), i64 noundef, i64 noundef) #2 align 2

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

declare void @_ZNK3HIR4Path5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::Path") align 8, ptr noundef nonnull align 8 dereferenceable(88)) #1

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListEN11InlineEventC2EN3HIR4PathE(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef) unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @_ZZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListEN11InlineEventD2Ev(ptr noundef nonnull align 8 dereferenceable(112)) unnamed_addr #5 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef nonnull align 8 dereferenceable(112) ptr @_ZNSt6vectorIZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS0_8FunctionEbPK9TransListE11InlineEventSaIS8_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR10Terminator9make_GotoEj(ptr dead_on_unwind noalias writable sret(%"class.MIR::Terminator") align 8, i32 noundef) #2 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @_ZZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListEN6ClonerD2Ev(ptr noundef nonnull align 8 dereferenceable(304)) unnamed_addr #5 align 2

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!14, !6, i64 8}
!14 = !{!"_ZTSN3MIR11TypeResolveE", !12, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !15, i64 32, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !12, i64 112, !12, i64 116}
!15 = !{!"_ZTS9FmtLambda", !16, i64 0}
!16 = !{!"_ZTSSt8functionIFvRSoEE", !17, i64 0, !6, i64 24}
!17 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!18 = !{!14, !6, i64 16}
!19 = !{i8 0, i8 2}
!20 = !{}
!21 = !{!22, !12, i64 232}
!22 = !{!"_ZTSZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListE6Cloner", !6, i64 0, !6, i64 8, !6, i64 16, !23, i64 24, !27, i64 48, !12, i64 224, !12, i64 228, !12, i64 232, !12, i64 236, !39, i64 240, !40, i64 248, !44, i64 272}
!23 = !{!"_ZTSSt6vectorIjSaIjEE", !24, i64 0}
!24 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!27 = !{!"_ZTSN12_GLOBAL__N_19ParamsSetE", !28, i64 0, !35, i64 96, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !35, i64 152}
!28 = !{!"_ZTS15MonomorphiserPP", !29, i64 0}
!29 = !{!"_ZTS13Monomorphiser", !6, i64 8, !30, i64 16, !31, i64 72}
!30 = !{!"_ZTSN3HIR8ItemPathE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48}
!31 = !{!"_ZTSSt6vectorIPKN3HIR13GenericParamsESaIS3_EE", !32, i64 0}
!32 = !{!"_ZTSSt12_Vector_baseIPKN3HIR13GenericParamsESaIS3_EE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIPKN3HIR13GenericParamsESaIS3_EE12_Vector_implE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIPKN3HIR13GenericParamsESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!35 = !{!"_ZTSN3HIR10PathParamsE", !36, i64 0, !37, i64 8, !38, i64 16}
!36 = !{!"_ZTS10ThinVectorIN3HIR11LifetimeRefEE", !6, i64 0}
!37 = !{!"_ZTS10ThinVectorIN3HIR7TypeRefEE", !6, i64 0}
!38 = !{!"_ZTS10ThinVectorIN3HIR12ConstGenericEE", !6, i64 0}
!39 = !{!"long", !7, i64 0}
!40 = !{!"_ZTSSt6vectorIN3MIR5ParamESaIS1_EE", !41, i64 0}
!41 = !{!"_ZTSSt12_Vector_baseIN3MIR5ParamESaIS1_EE", !42, i64 0}
!42 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE12_Vector_implE", !43, i64 0}
!43 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!44 = !{!"_ZTSN3MIR6LValueE", !45, i64 0, !46, i64 8}
!45 = !{!"_ZTSN3MIR6LValue7StorageE", !39, i64 0}
!46 = !{!"_ZTSSt6vectorIN3MIR6LValue7WrapperESaIS2_EE", !47, i64 0}
!47 = !{!"_ZTSSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE", !48, i64 0}
!48 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE12_Vector_implE", !49, i64 0}
!49 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!50 = !{!22, !39, i64 240}
!51 = !{!22, !12, i64 236}
!52 = !{!22, !12, i64 224}
!53 = !{!39, !39, i64 0}
!54 = distinct !{!54, !55}
!55 = !{!"llvm.loop.mustprogress"}
!56 = distinct !{!56, !55}


; 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.TraceLog = type { ptr, %"class.std::function" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.197 = type { i8 }
%class.anon.199 = type { ptr }
%"class.std::vector.200" = type { %"struct.std::_Vector_base.201" }
%"struct.std::_Vector_base.201" = type { %"struct.std::_Vector_base<InlineEvent, std::allocator<InlineEvent>>::_Vector_impl" }
%"struct.std::_Vector_base<InlineEvent, std::allocator<InlineEvent>>::_Vector_impl" = type { %"struct.std::_Vector_base<InlineEvent, std::allocator<InlineEvent>>::_Vector_impl_data" }
%"struct.std::_Vector_base<InlineEvent, std::allocator<InlineEvent>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.205" = type { ptr }
%class.anon.206 = type { ptr, ptr }
%struct.Cloner = type { ptr, ptr, ptr, %"class.std::vector.111", %"struct.(anonymous namespace)::ParamsSet", i32, i32, i32, i32, i64, %"class.std::vector.138", %"struct.MIR::LValue" }
%"class.std::vector.111" = type { %"struct.std::_Vector_base.112" }
%"struct.std::_Vector_base.112" = 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 }
%"struct.(anonymous namespace)::ParamsSet" = type { %class.MonomorphiserPP, %"struct.HIR::PathParams", ptr, ptr, ptr, ptr, %"struct.HIR::PathParams" }
%class.MonomorphiserPP = type { %class.Monomorphiser }
%class.Monomorphiser = type { ptr, ptr, %"class.HIR::ItemPath", %"class.std::vector.207" }
%"class.HIR::ItemPath" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.std::vector.207" = type { %"struct.std::_Vector_base.208" }
%"struct.std::_Vector_base.208" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::PathParams" = type { %class.ThinVector.133, %class.ThinVector.134, %class.ThinVector.135 }
%class.ThinVector.133 = type { ptr }
%class.ThinVector.134 = type { ptr }
%class.ThinVector.135 = type { ptr }
%"class.std::vector.138" = type { %"struct.std::_Vector_base.139" }
%"struct.std::_Vector_base.139" = type { %"struct.std::_Vector_base<MIR::Param, std::allocator<MIR::Param>>::_Vector_impl" }
%"struct.std::_Vector_base<MIR::Param, std::allocator<MIR::Param>>::_Vector_impl" = type { %"struct.std::_Vector_base<MIR::Param, std::allocator<MIR::Param>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MIR::Param, std::allocator<MIR::Param>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.MIR::LValue" = type { %"class.MIR::LValue::Storage", %"class.std::vector.106" }
%"class.MIR::LValue::Storage" = type { i64 }
%"class.std::vector.106" = type { %"struct.std::_Vector_base.107" }
%"struct.std::_Vector_base.107" = type { %"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl" }
%"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl" = type { %"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.anon.212 = type { ptr }
%"class.HIR::TypeRef" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.213" = type { ptr }
%"struct.std::_Bit_const_iterator" = type { %"struct.std::_Bit_iterator_base.base", [4 x i8] }
%"struct.std::_Bit_iterator_base.base" = type <{ ptr, i32 }>
%"struct.std::_Bit_iterator" = type { %"struct.std::_Bit_iterator_base.base", [4 x i8] }
%"class.MIR::Param" = type { i32, %"union.MIR::Param::DataUnion" }
%"union.MIR::Param::DataUnion" = type { %"struct.MIR::Param::Data_Borrow" }
%"struct.MIR::Param::Data_Borrow" = type { i32, %"struct.MIR::LValue" }
%"class.std::vector.29" = type { %"struct.std::_Vector_base.30" }
%"struct.std::_Vector_base.30" = type { %"struct.std::_Vector_base<MIR::BasicBlock, std::allocator<MIR::BasicBlock>>::_Vector_impl" }
%"struct.std::_Vector_base<MIR::BasicBlock, std::allocator<MIR::BasicBlock>>::_Vector_impl" = type { %"struct.std::_Vector_base<MIR::BasicBlock, std::allocator<MIR::BasicBlock>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MIR::BasicBlock, std::allocator<MIR::BasicBlock>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.214" = type { ptr }
%"struct.MIR::BasicBlock" = type { %"class.std::vector.101", %"class.MIR::Terminator" }
%"class.std::vector.101" = type { %"struct.std::_Vector_base.102" }
%"struct.std::_Vector_base.102" = type { %"struct.std::_Vector_base<MIR::Statement, std::allocator<MIR::Statement>>::_Vector_impl" }
%"struct.std::_Vector_base<MIR::Statement, std::allocator<MIR::Statement>>::_Vector_impl" = type { %"struct.std::_Vector_base<MIR::Statement, std::allocator<MIR::Statement>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MIR::Statement, std::allocator<MIR::Statement>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.MIR::Terminator" = type { i32, %"union.MIR::Terminator::DataUnion" }
%"union.MIR::Terminator::DataUnion" = type { %"struct.MIR::Terminator::Data_Call" }
%"struct.MIR::Terminator::Data_Call" = type { i32, i32, %"struct.MIR::LValue", %"class.MIR::CallTarget", %"class.std::vector.138" }
%"class.MIR::CallTarget" = type { i32, %"union.MIR::CallTarget::DataUnion" }
%"union.MIR::CallTarget::DataUnion" = type { %"class.HIR::Path" }
%"class.HIR::Path" = type { %"class.HIR::Path::Data" }
%"class.HIR::Path::Data" = type { i32, %"union.HIR::Path::Data::DataUnion" }
%"union.HIR::Path::Data::DataUnion" = type { %"struct.HIR::Path::Data::Data_UfcsKnown" }
%"struct.HIR::Path::Data::Data_UfcsKnown" = type { %"class.HIR::TypeRef", %"class.HIR::GenericPath", %class.RcString, %"struct.HIR::PathParams", %"class.std::unique_ptr" }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%class.RcString = type { ptr }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.137" }
%"struct.std::_Head_base.137" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.215" = type { ptr }
%"class.MIR::RValue" = type { i32, %"union.MIR::RValue::DataUnion" }
%"union.MIR::RValue::DataUnion" = type { %"struct.MIR::RValue::Data_BinOp" }
%"struct.MIR::RValue::Data_BinOp" = type { %"class.MIR::Param", i32, %"class.MIR::Param" }
%"class.MIR::Constant" = type { i32, %"union.MIR::Constant::DataUnion" }
%"union.MIR::Constant::DataUnion" = 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.MIR::Statement" = type { i32, %"union.MIR::Statement::DataUnion" }
%"union.MIR::Statement::DataUnion" = type { %"struct.MIR::Statement::Data_Assign" }
%"struct.MIR::Statement::Data_Assign" = type { %"struct.MIR::LValue", %"class.MIR::RValue" }
%"class.__gnu_cxx::__normal_iterator.189" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.148" = type { ptr }
%struct.InlineEvent = type { %"class.HIR::Path", %"class.std::vector.116" }
%"class.std::vector.116" = type { %"struct.std::_Vector_base.117" }
%"struct.std::_Vector_base.117" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }

@g_debug_indent_level = external local_unnamed_addr global i32, align 4
@__func__._Z21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransList = external hidden unnamed_addr constant [22 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [1 x i8], align 1
@_ZTIPKc = external constant ptr
@.str.12 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [20 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #1

declare void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef, ptr noundef) unnamed_addr #1

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_Z21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransList(ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(96) %1, i1 noundef zeroext %2, ptr noundef %3) local_unnamed_addr #2 personality ptr @__gxx_personality_v0 {
  %5 = alloca i8, align 1
  %6 = alloca %class.TraceLog, align 8
  %7 = alloca %"class.std::function", align 8
  %8 = alloca %class.anon.197, align 1
  %9 = alloca %"class.std::function", align 8
  %10 = alloca %class.anon.199, align 8
  %11 = alloca %"class.std::vector.200", align 8
  %12 = alloca %"class.__gnu_cxx::__normal_iterator.205", align 8
  %13 = alloca %"class.__gnu_cxx::__normal_iterator.205", align 8
  %14 = alloca ptr, align 8
  %15 = alloca %"class.std::function", align 8
  %16 = alloca %class.anon.206, align 8
  %17 = alloca %struct.Cloner, align 8
  %18 = alloca %class.TraceLog, align 8
  %19 = alloca %"class.std::function", align 8
  %20 = alloca %class.anon.212, align 8
  %21 = alloca %"struct.MIR::LValue", align 8
  %22 = alloca %"class.HIR::TypeRef", align 8
  %23 = alloca %"class.HIR::TypeRef", align 8
  %24 = alloca %"class.__gnu_cxx::__normal_iterator.213", align 8
  %25 = alloca %"class.__gnu_cxx::__normal_iterator.213", align 8
  %26 = alloca %"class.HIR::TypeRef", align 8
  %27 = alloca %"struct.std::_Bit_const_iterator", align 8
  %28 = alloca %"struct.std::_Bit_iterator", align 8
  %29 = alloca %"struct.std::_Bit_const_iterator", align 8
  %30 = alloca %"class.MIR::Param", align 8
  %31 = alloca %"class.std::vector.29", align 8
  %32 = alloca %"class.__gnu_cxx::__normal_iterator.214", align 8
  %33 = alloca %"class.__gnu_cxx::__normal_iterator.214", align 8
  %34 = alloca %"struct.MIR::BasicBlock", align 8
  %35 = alloca %"class.__gnu_cxx::__normal_iterator.215", align 8
  %36 = alloca %"class.__gnu_cxx::__normal_iterator.215", align 8
  %37 = alloca %"class.HIR::TypeRef", align 8
  %38 = alloca %"class.HIR::TypeRef", align 8
  %39 = alloca %"struct.MIR::LValue", align 8
  %40 = alloca %"class.MIR::RValue", align 8
  %41 = alloca %"class.MIR::Constant", align 8
  %42 = alloca %"struct.MIR::LValue", align 8
  %43 = alloca %"class.MIR::Statement", align 8
  %44 = alloca %"struct.MIR::Statement::Data_Assign", align 8
  %45 = alloca %"class.__gnu_cxx::__normal_iterator.189", align 8
  %46 = alloca %"class.__gnu_cxx::__normal_iterator.148", align 8
  %47 = alloca %"class.__gnu_cxx::__normal_iterator.205", align 8
  %48 = alloca %"class.__gnu_cxx::__normal_iterator.205", align 8
  %49 = alloca %struct.InlineEvent, align 8
  %50 = alloca %"class.HIR::Path", align 8
  %51 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %52 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %53 = alloca %"class.MIR::Terminator", align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #7
  store i8 0, ptr %5, align 1, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %6) #7
  %54 = tail call noundef zeroext i1 @_Z13debug_enabledv()
  %55 = select i1 %54, ptr @__func__._Z21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransList, ptr null
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #7
  call void @"_ZNSt8functionIFvRSoEEC2IZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS4_8FunctionEbPK9TransListE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 1 dereferenceable(1) %8) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #7
  store ptr %5, ptr %10, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvRSoEEC2IZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS4_8FunctionEbPK9TransListE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(8) %10) #7
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEES5_(ptr noundef nonnull align 8 dereferenceable(40) %6, ptr noundef %55, ptr noundef nonnull %7, ptr noundef nonnull %9)
          to label %56 unwind label %74

56:                                               ; preds = %4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #7
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) #7
  call void @_ZNSt6vectorIZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS0_8FunctionEbPK9TransListE11InlineEventSaIS8_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #7
  %57 = getelementptr inbounds i8, ptr %1, i64 64
  %58 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %57) #7
  %.not260 = icmp eq i64 %58, 0
  br i1 %.not260, label %._crit_edge259, label %.lr.ph258

.lr.ph258:                                        ; preds = %56
  %59 = getelementptr inbounds i8, ptr %0, i64 8
  %60 = getelementptr inbounds i8, ptr %0, i64 16
  %61 = getelementptr inbounds i8, ptr %17, i64 48
  %62 = getelementptr inbounds i8, ptr %17, i64 272
  %63 = getelementptr inbounds i8, ptr %17, i64 232
  %64 = getelementptr inbounds i8, ptr %17, i64 240
  %65 = getelementptr inbounds i8, ptr %1, i64 24
  %66 = getelementptr inbounds i8, ptr %17, i64 236
  %.sroa.243.0..sroa_idx = getelementptr inbounds i8, ptr %28, i64 8
  %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %29, i64 8
  %67 = getelementptr inbounds i8, ptr %27, i64 8
  %68 = getelementptr inbounds i8, ptr %17, i64 224
  %69 = getelementptr inbounds i8, ptr %17, i64 248
  %70 = getelementptr inbounds i8, ptr %17, i64 24
  %71 = getelementptr inbounds i8, ptr %44, i64 32
  br label %76

._crit_edge259:                                   ; preds = %481, %56
  %72 = load i8, ptr %5, align 1, !tbaa !5, !range !11, !noundef !12
  %73 = trunc nuw i8 %72 to i1
  call void @_ZNSt6vectorIZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS0_8FunctionEbPK9TransListE11InlineEventSaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #7
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %6) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #7
  ret i1 %73

74:                                               ; preds = %4
  %75 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #7
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #7
  br label %486

76:                                               ; preds = %.lr.ph258, %481
  %77 = phi i64 [ 0, %.lr.ph258 ], [ %483, %481 ]
  %.0144256 = phi i32 [ 0, %.lr.ph258 ], [ %482, %481 ]
  call void @_ZN3MIR11TypeResolve17set_cur_stmt_termEj(ptr noundef nonnull align 8 dereferenceable(120) %0, i32 noundef %.0144256)
  %78 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %77) #7
  %79 = getelementptr inbounds i8, ptr %78, i64 24
  %80 = call noundef ptr @_ZN3MIR10Terminator8opt_CallEv(ptr noundef nonnull align 8 dereferenceable(168) %79)
  %.not = icmp eq ptr %80, null
  br i1 %.not, label %481, label %81

81:                                               ; preds = %76
  %82 = getelementptr inbounds i8, ptr %80, i64 40
  %83 = call noundef zeroext i1 @_ZNK3MIR10CallTarget7is_PathEv(ptr noundef nonnull align 8 dereferenceable(96) %82)
  br i1 %83, label %84, label %481

84:                                               ; preds = %81
  %85 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZN3MIR10CallTarget7as_PathEv(ptr noundef nonnull align 8 dereferenceable(96) %82)
  %86 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %87 unwind label %101

87:                                               ; preds = %84
  br i1 %86, label %88, label %103

88:                                               ; preds = %87
  %89 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !13
  %90 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %89, ptr noundef nonnull @__func__._Z21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransList)
          to label %91 unwind label %101

91:                                               ; preds = %88
  %92 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %90, ptr noundef nonnull align 8 dereferenceable(120) %0)
          to label %93 unwind label %101

93:                                               ; preds = %91
  %94 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %77) #7
  %95 = getelementptr inbounds i8, ptr %94, i64 24
  %96 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_10TerminatorE(ptr noundef nonnull align 8 dereferenceable(8) %92, ptr noundef nonnull align 8 dereferenceable(168) %95)
          to label %97 unwind label %101

97:                                               ; preds = %93
  %98 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %96, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %99 unwind label %101

99:                                               ; preds = %97
  %100 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %98, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %103 unwind label %101

101:                                              ; preds = %99, %97, %93, %91, %88, %84
  %102 = landingpad { ptr, i32 }
          cleanup
  br label %480

103:                                              ; preds = %99, %87
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #7
  %104 = call ptr @_ZNSt6vectorIZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS0_8FunctionEbPK9TransListE11InlineEventSaIS8_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #7
  store ptr %104, ptr %12, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #7
  %105 = call ptr @_ZNSt6vectorIZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS0_8FunctionEbPK9TransListE11InlineEventSaIS8_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #7
  store ptr %105, ptr %13, align 8
  %106 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS1_8FunctionEbPK9TransListE11InlineEventSt6vectorIS9_SaIS9_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %13) #7
  br i1 %106, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %126, %103
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #7
  call void @llvm.lifetime.start.p0(i64 304, ptr nonnull %17) #7
  %107 = load ptr, ptr %59, align 8, !tbaa !15
  %108 = load ptr, ptr %60, align 8, !tbaa !20
  invoke void @_ZZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListEN6ClonerC2ERK4SpanRK18StaticTraitResolveRNS_10Terminator9Data_CallE(ptr noundef nonnull align 8 dereferenceable(304) %17, ptr noundef nonnull align 8 dereferenceable(8) %107, ptr noundef nonnull align 8 dereferenceable(424) %108, ptr noundef nonnull align 8 dereferenceable(160) %80)
          to label %130 unwind label %133

.lr.ph:                                           ; preds = %103, %126
  %109 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS1_8FunctionEbPK9TransListE11InlineEventSt6vectorIS9_SaIS9_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %12) #7
  %110 = invoke noundef zeroext i1 @_ZNK3HIR4PatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(88) %85, ptr noundef nonnull align 8 dereferenceable(88) %109)
          to label %111 unwind label %119

111:                                              ; preds = %.lr.ph
  br i1 %110, label %112, label %126

112:                                              ; preds = %111
  %113 = invoke noundef zeroext i1 @_ZZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListENK11InlineEvent6has_bbEm(ptr noundef nonnull align 8 dereferenceable(112) %109, i64 noundef %77)
          to label %114 unwind label %119

114:                                              ; preds = %112
  br i1 %113, label %115, label %126

115:                                              ; preds = %114
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #7
  store ptr @__func__._Z21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransList, ptr %14, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #7
  store ptr %14, ptr %16, align 8, !tbaa !9
  %116 = getelementptr inbounds i8, ptr %16, i64 8
  store ptr %85, ptr %116, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvRSoEEC2IZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS4_8FunctionEbPK9TransListE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull align 8 dereferenceable(16) %16) #7
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull %15)
          to label %117 unwind label %121

117:                                              ; preds = %115
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #7
  %118 = call ptr @__cxa_allocate_exception(i64 8) #7
  store ptr @.str.11, ptr %118, align 16, !tbaa !9
  invoke void @__cxa_throw(ptr nonnull %118, ptr nonnull @_ZTIPKc, ptr null) #8
          to label %487 unwind label %123

119:                                              ; preds = %112, %.lr.ph
  %120 = landingpad { ptr, i32 }
          cleanup
  br label %129

121:                                              ; preds = %115
  %122 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #7
  br label %125

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

125:                                              ; preds = %123, %121
  %.pn188 = phi { ptr, i32 } [ %124, %123 ], [ %122, %121 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #7
  br label %129

126:                                              ; preds = %114, %111
  %127 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS1_8FunctionEbPK9TransListE11InlineEventSt6vectorIS9_SaIS9_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %12) #7
  %128 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS1_8FunctionEbPK9TransListE11InlineEventSt6vectorIS9_SaIS9_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %13) #7
  br i1 %128, label %.lr.ph, label %._crit_edge

129:                                              ; preds = %125, %119
  %.pn188.pn = phi { ptr, i32 } [ %.pn188, %125 ], [ %120, %119 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #7
  br label %480

130:                                              ; preds = %._crit_edge
  %131 = invoke noundef ptr @_ZN12_GLOBAL__N_114get_called_mirERKN3MIR11TypeResolveEPK9TransListRKN3HIR4PathERNS_9ParamsSetE(ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef %3, ptr noundef nonnull align 8 dereferenceable(88) %85, ptr noundef nonnull align 8 dereferenceable(176) %61)
          to label %132 unwind label %135

132:                                              ; preds = %130
  %.not155 = icmp eq ptr %131, null
  br i1 %.not155, label %469, label %137

133:                                              ; preds = %._crit_edge
  %134 = landingpad { ptr, i32 }
          cleanup
  br label %479

135:                                              ; preds = %.invoke338, %.invoke, %159, %157, %154, %151, %147, %145, %142, %139, %130
  %136 = landingpad { ptr, i32 }
          cleanup
  br label %478

137:                                              ; preds = %132
  %138 = icmp eq ptr %131, %1
  br i1 %138, label %139, label %147

139:                                              ; preds = %137
  %140 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %141 unwind label %135

141:                                              ; preds = %139
  br i1 %140, label %142, label %469

142:                                              ; preds = %141
  %143 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !13
  %144 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %143, ptr noundef nonnull @__func__._Z21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransList)
          to label %145 unwind label %135

145:                                              ; preds = %142
  %146 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %144, ptr noundef nonnull @.str.12)
          to label %.invoke338 unwind label %135

147:                                              ; preds = %137
  %148 = getelementptr inbounds i8, ptr %80, i64 136
  %149 = invoke noundef zeroext i1 @_ZZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListEN1H10can_inlineERKN3HIR4PathERKS2_RKSt6vectorINS_5ParamESaISF_EEb(ptr noundef nonnull align 8 dereferenceable(88) %85, ptr noundef nonnull align 8 dereferenceable(96) %131, ptr noundef nonnull align 8 dereferenceable(24) %148, i1 noundef zeroext %2)
          to label %150 unwind label %135

150:                                              ; preds = %147
  br i1 %149, label %164, label %151

151:                                              ; preds = %150
  %152 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %153 unwind label %135

153:                                              ; preds = %151
  br i1 %152, label %154, label %469

154:                                              ; preds = %153
  %155 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !13
  %156 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %155, ptr noundef nonnull @__func__._Z21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransList)
          to label %157 unwind label %135

157:                                              ; preds = %154
  %158 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %156, ptr noundef nonnull @.str.13)
          to label %159 unwind label %135

159:                                              ; preds = %157
  %160 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8) %158, ptr noundef nonnull align 8 dereferenceable(88) %85)
          to label %.invoke338 unwind label %135

.invoke338:                                       ; preds = %159, %145
  %161 = phi ptr [ %146, %145 ], [ %160, %159 ]
  %162 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %161, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %.invoke unwind label %135

.invoke:                                          ; preds = %.invoke338
  %163 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %162, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %469 unwind label %135

164:                                              ; preds = %150
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %18) #7
  %165 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %166 unwind label %187

166:                                              ; preds = %164
  %167 = select i1 %165, ptr @__func__._Z21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransList, ptr null
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #7
  store ptr %85, ptr %20, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvRSoEEC2IZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS4_8FunctionEbPK9TransListE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %18, ptr noundef %167, ptr noundef nonnull %19)
          to label %168 unwind label %189

168:                                              ; preds = %166
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #7
  %169 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #7
  %170 = trunc i64 %169 to i32
  invoke void @_ZN3MIR6LValue9new_LocalEj(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %21, i32 noundef %170)
          to label %171 unwind label %191

171:                                              ; preds = %168
  %172 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6LValueaSEOS0_(ptr noundef nonnull align 8 dereferenceable(32) %62, ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %173 unwind label %193

173:                                              ; preds = %171
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #7
  %174 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %175 unwind label %196

175:                                              ; preds = %173
  br i1 %174, label %176, label %198

176:                                              ; preds = %175
  %177 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !13
  %178 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %177, ptr noundef nonnull @__func__._Z21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransList)
          to label %179 unwind label %196

179:                                              ; preds = %176
  %180 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %178, ptr noundef nonnull @.str.14)
          to label %181 unwind label %196

181:                                              ; preds = %179
  %182 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %180, ptr noundef nonnull align 8 dereferenceable(32) %62)
          to label %183 unwind label %196

183:                                              ; preds = %181
  %184 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %182, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %185 unwind label %196

185:                                              ; preds = %183
  %186 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %184, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %198 unwind label %196

187:                                              ; preds = %164
  %188 = landingpad { ptr, i32 }
          cleanup
  br label %477

189:                                              ; preds = %166
  %190 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #7
  br label %477

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

193:                                              ; preds = %171
  %194 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #7
  br label %195

195:                                              ; preds = %193, %191
  %.pn = phi { ptr, i32 } [ %194, %193 ], [ %192, %191 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #7
  br label %476

196:                                              ; preds = %185, %183, %181, %179, %176, %173
  %197 = landingpad { ptr, i32 }
          cleanup
  br label %476

198:                                              ; preds = %185, %175
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #7
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %199 unwind label %214

199:                                              ; preds = %198
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #7
  %200 = getelementptr inbounds i8, ptr %80, i64 8
  %201 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(32) %200, i32 noundef 0)
          to label %202 unwind label %216

202:                                              ; preds = %199
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %23, ptr noundef nonnull align 8 dereferenceable(8) %201)
          to label %203 unwind label %216

203:                                              ; preds = %202
  invoke void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(8) %23)
          to label %204 unwind label %218

204:                                              ; preds = %203
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #7
  %205 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #7
  %206 = trunc i64 %205 to i32
  store i32 %206, ptr %63, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #7
  %207 = call ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %131) #7
  store ptr %207, ptr %24, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #7
  %208 = call ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %131) #7
  store ptr %208, ptr %25, align 8
  %209 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %25) #7
  br i1 %209, label %.lr.ph238, label %._crit_edge239

._crit_edge239:                                   ; preds = %224, %204
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #7
  %210 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #7
  store i64 %210, ptr %64, align 8, !tbaa !50
  %211 = call noundef i64 @_ZNKSt6vectorIbSaIbEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %65) #7
  %212 = trunc i64 %211 to i32
  store i32 %212, ptr %66, align 4, !tbaa !51
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %28) #7
  %213 = call { ptr, i32 } @_ZNSt6vectorIbSaIbEE3endEv(ptr noundef nonnull align 8 dereferenceable(40) %65) #7
  %.fca.0.extract40 = extractvalue { ptr, i32 } %213, 0
  %.fca.1.extract41 = extractvalue { ptr, i32 } %213, 1
  store ptr %.fca.0.extract40, ptr %28, align 8
  store i32 %.fca.1.extract41, ptr %.sroa.243.0..sroa_idx, align 8
  invoke void @_ZNSt19_Bit_const_iteratorC2ERKSt13_Bit_iterator(ptr noundef nonnull align 8 dereferenceable(12) %27, ptr noundef nonnull align 8 dereferenceable(12) %28)
          to label %232 unwind label %245

214:                                              ; preds = %198
  %215 = landingpad { ptr, i32 }
          cleanup
  br label %221

216:                                              ; preds = %202, %199
  %217 = landingpad { ptr, i32 }
          cleanup
  br label %220

218:                                              ; preds = %203
  %219 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #7
  br label %220

220:                                              ; preds = %218, %216
  %.pn157 = phi { ptr, i32 } [ %219, %218 ], [ %217, %216 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #7
  br label %221

221:                                              ; preds = %220, %214
  %.pn157.pn = phi { ptr, i32 } [ %.pn157, %220 ], [ %215, %214 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #7
  br label %476

.lr.ph238:                                        ; preds = %204, %224
  %222 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #7
  invoke void @_ZZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListENK6Cloner9monomorphERKN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %26, ptr noundef nonnull align 8 dereferenceable(304) %17, ptr noundef nonnull align 8 dereferenceable(8) %222)
          to label %223 unwind label %227

223:                                              ; preds = %.lr.ph238
  invoke void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(8) %26)
          to label %224 unwind label %229

224:                                              ; preds = %223
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #7
  %225 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #7
  %226 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %25) #7
  br i1 %226, label %.lr.ph238, label %._crit_edge239

227:                                              ; preds = %.lr.ph238
  %228 = landingpad { ptr, i32 }
          cleanup
  br label %231

229:                                              ; preds = %223
  %230 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #7
  br label %231

231:                                              ; preds = %229, %227
  %.pn181 = phi { ptr, i32 } [ %230, %229 ], [ %228, %227 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #7
  br label %476

232:                                              ; preds = %._crit_edge239
  %233 = getelementptr inbounds i8, ptr %131, i64 24
  %234 = call { ptr, i32 } @_ZNKSt6vectorIbSaIbEE5beginEv(ptr noundef nonnull align 8 dereferenceable(40) %233) #7
  %.fca.0.extract34 = extractvalue { ptr, i32 } %234, 0
  %.fca.1.extract35 = extractvalue { ptr, i32 } %234, 1
  %235 = call { ptr, i32 } @_ZNKSt6vectorIbSaIbEE3endEv(ptr noundef nonnull align 8 dereferenceable(40) %233) #7
  %.fca.0.extract = extractvalue { ptr, i32 } %235, 0
  %.fca.1.extract = extractvalue { ptr, i32 } %235, 1
  store ptr %.fca.0.extract, ptr %29, align 8
  store i32 %.fca.1.extract, ptr %.sroa.2.0..sroa_idx, align 8
  %236 = load ptr, ptr %27, align 8
  %237 = load i32, ptr %67, align 8
  %238 = invoke { ptr, i32 } @_ZNSt6vectorIbSaIbEE6insertISt19_Bit_const_iteratorvEESt13_Bit_iteratorS3_T_S5_(ptr noundef nonnull align 8 dereferenceable(40) %65, ptr %236, i32 %237, ptr %.fca.0.extract34, i32 %.fca.1.extract35, ptr noundef nonnull byval(%"struct.std::_Bit_const_iterator") align 8 %29)
          to label %239 unwind label %245

239:                                              ; preds = %232
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #7
  %240 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %57) #7
  %241 = trunc i64 %240 to i32
  store i32 %241, ptr %68, align 8, !tbaa !52
  %242 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %148) #7
  %.not261 = icmp eq i64 %242, 0
  br i1 %.not261, label %._crit_edge243, label %.lr.ph242

._crit_edge243:                                   ; preds = %293, %239
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %31) #7
  call void @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #7
  %243 = getelementptr inbounds i8, ptr %131, i64 64
  %244 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %243) #7
  invoke void @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %31, i64 noundef %244)
          to label %297 unwind label %302

245:                                              ; preds = %232, %._crit_edge239
  %246 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #7
  br label %476

.lr.ph242:                                        ; preds = %239, %293
  %.0146240 = phi i64 [ %294, %293 ], [ 0, %239 ]
  %247 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %148, i64 noundef %.0146240) #7
  %248 = call noundef zeroext i1 @_ZNK3MIR5Param9is_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %247)
  br i1 %248, label %249, label %253

249:                                              ; preds = %.lr.ph242
  %250 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR5Param9as_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %247)
  %251 = invoke noundef zeroext i1 @_ZNK3MIR11TypeResolve14lvalue_is_copyERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(32) %250)
          to label %252 unwind label %286

252:                                              ; preds = %249
  br i1 %251, label %253, label %293

253:                                              ; preds = %252, %.lr.ph242
  %254 = load i64, ptr %64, align 8, !tbaa !50
  %255 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %69) #7
  %256 = add i64 %255, %254
  %257 = trunc i64 %256 to i32
  %258 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %70, i64 noundef %.0146240) #7
  store i32 %257, ptr %258, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %30) #7
  invoke void @_ZNK3MIR5Param5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Param") align 8 %30, ptr noundef nonnull align 8 dereferenceable(48) %247)
          to label %259 unwind label %288

259:                                              ; preds = %253
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %69, ptr noundef nonnull align 8 dereferenceable(48) %30)
          to label %260 unwind label %290

260:                                              ; preds = %259
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %30) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %30) #7
  %261 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %262 unwind label %286

262:                                              ; preds = %260
  br i1 %261, label %263, label %293

263:                                              ; preds = %262
  %264 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !13
  %265 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %264, ptr noundef nonnull @__func__._Z21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransList)
          to label %266 unwind label %286

266:                                              ; preds = %263
  %267 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %265, ptr noundef nonnull @.str.15)
          to label %268 unwind label %286

268:                                              ; preds = %266
  %269 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %267, i64 noundef %.0146240)
          to label %270 unwind label %286

270:                                              ; preds = %268
  %271 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %269, ptr noundef nonnull @.str.16)
          to label %272 unwind label %286

272:                                              ; preds = %270
  %273 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(8) %271, ptr noundef nonnull align 8 dereferenceable(48) %247)
          to label %274 unwind label %286

274:                                              ; preds = %272
  %275 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %273, ptr noundef nonnull @.str.17)
          to label %276 unwind label %286

276:                                              ; preds = %274
  %277 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %70, i64 noundef %.0146240) #7
  %278 = load i32, ptr %277, align 4, !tbaa !13
  %279 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %275, i32 noundef %278)
          to label %280 unwind label %286

280:                                              ; preds = %276
  %281 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %279, ptr noundef nonnull @.str.18)
          to label %282 unwind label %286

282:                                              ; preds = %280
  %283 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %281, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %284 unwind label %286

284:                                              ; preds = %282
  %285 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %283, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %293 unwind label %286

286:                                              ; preds = %284, %282, %280, %276, %274, %272, %270, %268, %266, %263, %260, %249
  %287 = landingpad { ptr, i32 }
          cleanup
  br label %476

288:                                              ; preds = %253
  %289 = landingpad { ptr, i32 }
          cleanup
  br label %292

290:                                              ; preds = %259
  %291 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %30) #7
  br label %292

292:                                              ; preds = %290, %288
  %.pn177 = phi { ptr, i32 } [ %291, %290 ], [ %289, %288 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %30) #7
  br label %476

293:                                              ; preds = %262, %284, %252
  %294 = add nuw i64 %.0146240, 1
  %295 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %148) #7
  %296 = icmp ult i64 %294, %295
  br i1 %296, label %.lr.ph242, label %._crit_edge243, !llvm.loop !53

297:                                              ; preds = %._crit_edge243
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #7
  %298 = call ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %243) #7
  store ptr %298, ptr %32, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #7
  %299 = call ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %243) #7
  store ptr %299, ptr %33, align 8
  %300 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 8 dereferenceable(8) %33) #7
  br i1 %300, label %.lr.ph245, label %._crit_edge246

._crit_edge246:                                   ; preds = %316, %297
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #7
  %301 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %324 unwind label %302

302:                                              ; preds = %450, %443, %441, %439, %436, %433, %428, %332, %330, %328, %325, %._crit_edge246, %._crit_edge243
  %303 = landingpad { ptr, i32 }
          cleanup
  br label %475

.lr.ph245:                                        ; preds = %297, %316
  %304 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %32) #7
  call void @llvm.lifetime.start.p0(i64 192, ptr nonnull %34) #7
  %305 = call noundef ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %243) #7
  %306 = ptrtoint ptr %304 to i64
  %307 = ptrtoint ptr %305 to i64
  %308 = sub i64 %306, %307
  %309 = sdiv exact i64 %308, 192
  %310 = trunc i64 %309 to i32
  %311 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %57) #7
  %312 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %31) #7
  %313 = add i64 %312, %311
  %314 = trunc i64 %313 to i32
  invoke void @_ZZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListENK6Cloner8clone_bbERKNS_10BasicBlockEjj(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::BasicBlock") align 8 %34, ptr noundef nonnull align 8 dereferenceable(304) %17, ptr noundef nonnull align 8 dereferenceable(192) %304, i32 noundef %310, i32 noundef %314)
          to label %315 unwind label %319

315:                                              ; preds = %.lr.ph245
  invoke void @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %31, ptr noundef nonnull align 8 dereferenceable(192) %34)
          to label %316 unwind label %321

316:                                              ; preds = %315
  call void @_ZN3MIR10BasicBlockD2Ev(ptr noundef nonnull align 8 dereferenceable(192) %34) #7
  call void @llvm.lifetime.end.p0(i64 192, ptr nonnull %34) #7
  %317 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %32) #7
  %318 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 8 dereferenceable(8) %33) #7
  br i1 %318, label %.lr.ph245, label %._crit_edge246

319:                                              ; preds = %.lr.ph245
  %320 = landingpad { ptr, i32 }
          cleanup
  br label %323

321:                                              ; preds = %315
  %322 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10BasicBlockD2Ev(ptr noundef nonnull align 8 dereferenceable(192) %34) #7
  br label %323

323:                                              ; preds = %321, %319
  %.pn174 = phi { ptr, i32 } [ %322, %321 ], [ %320, %319 ]
  call void @llvm.lifetime.end.p0(i64 192, ptr nonnull %34) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #7
  br label %475

324:                                              ; preds = %._crit_edge246
  br i1 %301, label %325, label %334

325:                                              ; preds = %324
  %326 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !13
  %327 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %326, ptr noundef nonnull @__func__._Z21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransList)
          to label %328 unwind label %302

328:                                              ; preds = %325
  %329 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %327, ptr noundef nonnull @.str.19)
          to label %330 unwind label %302

330:                                              ; preds = %328
  %331 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %329, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %332 unwind label %302

332:                                              ; preds = %330
  %333 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %331, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %334 unwind label %302

334:                                              ; preds = %332, %324
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #7
  %335 = call ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %69) #7
  store ptr %335, ptr %35, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #7
  %336 = call ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %69) #7
  store ptr %336, ptr %36, align 8
  %337 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(8) %36) #7
  br i1 %337, label %.lr.ph248, label %._crit_edge249

._crit_edge249:                                   ; preds = %403, %334
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #7
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %69) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #7
  %338 = call ptr @_ZNSt6vectorIZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS0_8FunctionEbPK9TransListE11InlineEventSaIS8_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #7
  store ptr %338, ptr %47, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #7
  %339 = call ptr @_ZNSt6vectorIZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS0_8FunctionEbPK9TransListE11InlineEventSaIS8_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #7
  store ptr %339, ptr %48, align 8
  %340 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS1_8FunctionEbPK9TransListE11InlineEventSt6vectorIS9_SaIS9_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %47, ptr noundef nonnull align 8 dereferenceable(8) %48) #7
  br i1 %340, label %.lr.ph251, label %._crit_edge252

.lr.ph248:                                        ; preds = %334, %403
  %341 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %35) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #7
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %37)
          to label %342 unwind label %378

342:                                              ; preds = %.lr.ph248
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #7
  %343 = call noundef zeroext i1 @_ZNK3MIR5Param11is_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48) %341)
  br i1 %343, label %344, label %346

344:                                              ; preds = %342
  %345 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR5Param11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48) %341)
  invoke void @_ZNK3MIR11TypeResolve14get_const_typeERKNS_8ConstantE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %38, ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(40) %345)
          to label %350 unwind label %380

346:                                              ; preds = %342
  %347 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR5Param9as_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %341)
  %348 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(8) %37, ptr noundef nonnull align 8 dereferenceable(32) %347, i32 noundef 0)
          to label %349 unwind label %380

349:                                              ; preds = %346
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %38, ptr noundef nonnull align 8 dereferenceable(8) %348)
          to label %350 unwind label %380

350:                                              ; preds = %349, %344
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %39) #7
  %351 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #7
  %352 = trunc i64 %351 to i32
  invoke void @_ZN3MIR6LValue9new_LocalEj(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %39, i32 noundef %352)
          to label %353 unwind label %382

353:                                              ; preds = %350
  invoke void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(8) %38)
          to label %354 unwind label %384

354:                                              ; preds = %353
  call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %40) #7
  %355 = call noundef zeroext i1 @_ZNK3MIR5Param11is_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48) %341)
  br i1 %355, label %356, label %358

356:                                              ; preds = %354
  %357 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR5Param11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48) %341)
  call void @_ZN3MIR8ConstantC2EOS0_(ptr noundef nonnull align 8 dereferenceable(40) %41, ptr noundef nonnull align 8 dereferenceable(40) %357) #7
  invoke void @_ZN3MIR6RValueC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(112) %40, ptr noundef nonnull %41)
          to label %.critedge unwind label %389

358:                                              ; preds = %354
  %359 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR5Param9as_LValueEv(ptr noundef nonnull align 8 dereferenceable(48) %341)
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %42, ptr noundef nonnull align 8 dereferenceable(32) %359)
          to label %360 unwind label %387

360:                                              ; preds = %358
  invoke void @_ZN3MIR6RValueC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(112) %40, ptr noundef nonnull %42)
          to label %361 unwind label %.thread195

361:                                              ; preds = %360
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #7
  br label %362

.critedge:                                        ; preds = %356
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %41) #7
  br label %362

362:                                              ; preds = %361, %.critedge
  call void @llvm.lifetime.start.p0(i64 152, ptr nonnull %43) #7
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull align 8 dereferenceable(32) %39)
          to label %363 unwind label %391

363:                                              ; preds = %362
  call void @_ZN3MIR6RValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(112) %71, ptr noundef nonnull align 8 dereferenceable(112) %40) #7
  invoke void @_ZN3MIR9Statement11make_AssignENS0_11Data_AssignE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Statement") align 8 %43, ptr noundef nonnull %44)
          to label %364 unwind label %393

364:                                              ; preds = %363
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %44) #7
  %365 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %366 unwind label %395

366:                                              ; preds = %364
  br i1 %365, label %367, label %397

367:                                              ; preds = %366
  %368 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !13
  %369 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %368, ptr noundef nonnull @__func__._Z21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransList)
          to label %370 unwind label %395

370:                                              ; preds = %367
  %371 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %369, ptr noundef nonnull @.str.20)
          to label %372 unwind label %395

372:                                              ; preds = %370
  %373 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8) %371, ptr noundef nonnull align 8 dereferenceable(152) %43)
          to label %374 unwind label %395

374:                                              ; preds = %372
  %375 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %373, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %376 unwind label %395

376:                                              ; preds = %374
  %377 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %375, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %397 unwind label %395

378:                                              ; preds = %.lr.ph248
  %379 = landingpad { ptr, i32 }
          cleanup
  br label %414

380:                                              ; preds = %349, %346, %344
  %381 = landingpad { ptr, i32 }
          cleanup
  br label %413

382:                                              ; preds = %350
  %383 = landingpad { ptr, i32 }
          cleanup
  br label %412

384:                                              ; preds = %353
  %385 = landingpad { ptr, i32 }
          cleanup
  br label %411

.thread195:                                       ; preds = %360
  %386 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #7
  br label %410

387:                                              ; preds = %358
  %388 = landingpad { ptr, i32 }
          cleanup
  br label %410

389:                                              ; preds = %356
  %390 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %41) #7
  br label %410

391:                                              ; preds = %362
  %392 = landingpad { ptr, i32 }
          cleanup
  br label %409

393:                                              ; preds = %363
  %394 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %44) #7
  br label %409

395:                                              ; preds = %376, %374, %372, %370, %367, %364
  %396 = landingpad { ptr, i32 }
          cleanup
  br label %408

397:                                              ; preds = %376, %366
  %398 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %31, i64 noundef 0) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #7
  %399 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %31, i64 noundef 0) #7
  %400 = call ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %399) #7
  store ptr %400, ptr %46, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR9StatementESt6vectorIS2_SaIS2_EEEC2IPS2_vEERKNS0_IT_S7_EE(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull align 8 dereferenceable(8) %46) #7
  %401 = load ptr, ptr %45, align 8
  %402 = invoke ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EE6insertEN9__gnu_cxx17__normal_iteratorIPKS1_S3_EEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %398, ptr %401, ptr noundef nonnull align 8 dereferenceable(152) %43)
          to label %403 unwind label %406

403:                                              ; preds = %397
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #7
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %43) #7
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %43) #7
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %40) #7
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %40) #7
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #7
  %404 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %35) #7
  %405 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(8) %36) #7
  br i1 %405, label %.lr.ph248, label %._crit_edge249

406:                                              ; preds = %397
  %407 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #7
  br label %408

408:                                              ; preds = %406, %395
  %.pn166 = phi { ptr, i32 } [ %407, %406 ], [ %396, %395 ]
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %43) #7
  br label %409

409:                                              ; preds = %408, %393, %391
  %.pn166.pn = phi { ptr, i32 } [ %.pn166, %408 ], [ %394, %393 ], [ %392, %391 ]
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %43) #7
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %40) #7
  br label %410

410:                                              ; preds = %387, %.thread195, %389, %409
  %.pn166.pn.pn = phi { ptr, i32 } [ %.pn166.pn, %409 ], [ %390, %389 ], [ %388, %387 ], [ %386, %.thread195 ]
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %40) #7
  br label %411

411:                                              ; preds = %410, %384
  %.pn166.pn.pn.pn = phi { ptr, i32 } [ %.pn166.pn.pn, %410 ], [ %385, %384 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #7
  br label %412

412:                                              ; preds = %411, %382
  %.pn166.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn166.pn.pn.pn, %411 ], [ %383, %382 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #7
  br label %413

413:                                              ; preds = %412, %380
  %.pn166.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn166.pn.pn.pn.pn, %412 ], [ %381, %380 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #7
  br label %414

414:                                              ; preds = %413, %378
  %.pn166.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn166.pn.pn.pn.pn.pn, %413 ], [ %379, %378 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #7
  br label %475

._crit_edge252:                                   ; preds = %424, %._crit_edge249
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #7
  call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %49) #7
  invoke void @_ZNK3HIR4Path5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::Path") align 8 %50, ptr noundef nonnull align 8 dereferenceable(88) %85)
          to label %427 unwind label %445

.lr.ph251:                                        ; preds = %._crit_edge249, %424
  %415 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS1_8FunctionEbPK9TransListE11InlineEventSt6vectorIS9_SaIS9_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %47) #7
  %416 = invoke noundef zeroext i1 @_ZZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListENK11InlineEvent6has_bbEm(ptr noundef nonnull align 8 dereferenceable(112) %415, i64 noundef %77)
          to label %417 unwind label %422

417:                                              ; preds = %.lr.ph251
  br i1 %416, label %418, label %424

418:                                              ; preds = %417
  %419 = load i32, ptr %68, align 8, !tbaa !52
  %420 = zext i32 %419 to i64
  %421 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %31) #7
  invoke void @_ZZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListEN11InlineEvent9add_rangeEmm(ptr noundef nonnull align 8 dereferenceable(112) %415, i64 noundef %420, i64 noundef %421)
          to label %424 unwind label %422

422:                                              ; preds = %418, %.lr.ph251
  %423 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #7
  br label %475

424:                                              ; preds = %418, %417
  %425 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS1_8FunctionEbPK9TransListE11InlineEventSt6vectorIS9_SaIS9_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %47) #7
  %426 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS1_8FunctionEbPK9TransListE11InlineEventSt6vectorIS9_SaIS9_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %47, ptr noundef nonnull align 8 dereferenceable(8) %48) #7
  br i1 %426, label %.lr.ph251, label %._crit_edge252

427:                                              ; preds = %._crit_edge252
  call void @_ZZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListEN11InlineEventC2EN3HIR4PathE(ptr noundef nonnull align 8 dereferenceable(112) %49, ptr noundef nonnull %50)
  invoke void @_ZNSt6vectorIZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS0_8FunctionEbPK9TransListE11InlineEventSaIS8_EE9push_backEOS8_(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 8 dereferenceable(112) %49)
          to label %428 unwind label %447

428:                                              ; preds = %427
  call void @_ZZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListEN11InlineEventD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %49) #7
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %50) #7
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %49) #7
  %429 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNSt6vectorIZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS0_8FunctionEbPK9TransListE11InlineEventSaIS8_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #7
  %430 = load i32, ptr %68, align 8, !tbaa !52
  %431 = zext i32 %430 to i64
  %432 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %31) #7
  invoke void @_ZZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListEN11InlineEvent9add_rangeEmm(ptr noundef nonnull align 8 dereferenceable(112) %429, i64 noundef %431, i64 noundef %432)
          to label %433 unwind label %302

433:                                              ; preds = %428
  %434 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %435 unwind label %302

435:                                              ; preds = %433
  br i1 %434, label %436, label %450

436:                                              ; preds = %435
  %437 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !13
  %438 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %437, ptr noundef nonnull @__func__._Z21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransList)
          to label %439 unwind label %302

439:                                              ; preds = %436
  %440 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %438, ptr noundef nonnull @.str.21)
          to label %441 unwind label %302

441:                                              ; preds = %439
  %442 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %440, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %443 unwind label %302

443:                                              ; preds = %441
  %444 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %442, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %450 unwind label %302

445:                                              ; preds = %._crit_edge252
  %446 = landingpad { ptr, i32 }
          cleanup
  br label %449

447:                                              ; preds = %427
  %448 = landingpad { ptr, i32 }
          cleanup
  call void @_ZZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListEN11InlineEventD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %49) #7
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %50) #7
  br label %449

449:                                              ; preds = %447, %445
  %.pn160 = phi { ptr, i32 } [ %448, %447 ], [ %446, %445 ]
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %49) #7
  br label %475

450:                                              ; preds = %443, %435
  %451 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %57) #7
  %452 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %31) #7
  %453 = add i64 %452, %451
  invoke void @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %453)
          to label %454 unwind label %302

454:                                              ; preds = %450
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #7
  %455 = call ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %31) #7
  store ptr %455, ptr %51, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #7
  %456 = call ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %31) #7
  store ptr %456, ptr %52, align 8
  %457 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef nonnull align 8 dereferenceable(8) %52) #7
  br i1 %457, label %.lr.ph254, label %._crit_edge255

._crit_edge255:                                   ; preds = %460, %454
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #7
  call void @llvm.lifetime.start.p0(i64 168, ptr nonnull %53) #7
  %458 = load i32, ptr %68, align 8, !tbaa !52
  invoke void @_ZN3MIR10Terminator9make_GotoEj(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %53, i32 noundef %458)
          to label %465 unwind label %470

.lr.ph254:                                        ; preds = %454, %460
  %459 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %51) #7
  invoke void @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %57, ptr noundef nonnull align 8 dereferenceable(192) %459)
          to label %460 unwind label %463

460:                                              ; preds = %.lr.ph254
  %461 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %51) #7
  %462 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef nonnull align 8 dereferenceable(8) %52) #7
  br i1 %462, label %.lr.ph254, label %._crit_edge255

463:                                              ; preds = %.lr.ph254
  %464 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #7
  br label %475

465:                                              ; preds = %._crit_edge255
  %466 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %77) #7
  %467 = getelementptr inbounds i8, ptr %466, i64 24
  %468 = invoke noundef nonnull align 8 dereferenceable(168) ptr @_ZN3MIR10TerminatoraSEOS0_(ptr noundef nonnull align 8 dereferenceable(168) %467, ptr noundef nonnull align 8 dereferenceable(168) %53)
          to label %.critedge194 unwind label %472

.critedge194:                                     ; preds = %465
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %53) #7
  call void @llvm.lifetime.end.p0(i64 168, ptr nonnull %53) #7
  store i8 1, ptr %5, align 1, !tbaa !5
  call void @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %31) #7
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %18) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %18) #7
  call void @_ZZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListEN6ClonerD2Ev(ptr noundef nonnull align 8 dereferenceable(304) %17) #7
  call void @llvm.lifetime.end.p0(i64 304, ptr nonnull %17) #7
  br label %481

469:                                              ; preds = %.invoke, %153, %141, %132
  call void @_ZZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListEN6ClonerD2Ev(ptr noundef nonnull align 8 dereferenceable(304) %17) #7
  call void @llvm.lifetime.end.p0(i64 304, ptr nonnull %17) #7
  br label %481

470:                                              ; preds = %._crit_edge255
  %471 = landingpad { ptr, i32 }
          cleanup
  br label %474

472:                                              ; preds = %465
  %473 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %53) #7
  br label %474

474:                                              ; preds = %472, %470
  %.pn162 = phi { ptr, i32 } [ %473, %472 ], [ %471, %470 ]
  call void @llvm.lifetime.end.p0(i64 168, ptr nonnull %53) #7
  br label %475

475:                                              ; preds = %474, %463, %449, %422, %414, %323, %302
  %.pn174.pn = phi { ptr, i32 } [ %.pn174, %323 ], [ %.pn166.pn.pn.pn.pn.pn.pn, %414 ], [ %423, %422 ], [ %464, %463 ], [ %.pn162, %474 ], [ %303, %302 ], [ %.pn160, %449 ]
  call void @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %31) #7
  br label %476

476:                                              ; preds = %286, %292, %475, %245, %231, %221, %196, %195
  %.pn181.pn = phi { ptr, i32 } [ %.pn181, %231 ], [ %.pn174.pn, %475 ], [ %246, %245 ], [ %.pn157.pn, %221 ], [ %197, %196 ], [ %.pn, %195 ], [ %287, %286 ], [ %.pn177, %292 ]
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %18) #7
  br label %477

477:                                              ; preds = %476, %189, %187
  %.pn181.pn.pn = phi { ptr, i32 } [ %.pn181.pn, %476 ], [ %190, %189 ], [ %188, %187 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %18) #7
  br label %478

478:                                              ; preds = %477, %135
  %.pn185 = phi { ptr, i32 } [ %136, %135 ], [ %.pn181.pn.pn, %477 ]
  call void @_ZZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListEN6ClonerD2Ev(ptr noundef nonnull align 8 dereferenceable(304) %17) #7
  br label %479

479:                                              ; preds = %478, %133
  %.pn185.pn = phi { ptr, i32 } [ %.pn185, %478 ], [ %134, %133 ]
  call void @llvm.lifetime.end.p0(i64 304, ptr nonnull %17) #7
  br label %480

480:                                              ; preds = %479, %129, %101
  %.pn188.pn.pn = phi { ptr, i32 } [ %.pn188.pn, %129 ], [ %.pn185.pn, %479 ], [ %102, %101 ]
  call void @_ZNSt6vectorIZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS0_8FunctionEbPK9TransListE11InlineEventSaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #7
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %6) #7
  br label %486

481:                                              ; preds = %76, %.critedge194, %469, %81
  %482 = add i32 %.0144256, 1
  %483 = zext i32 %482 to i64
  %484 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %57) #7
  %485 = icmp ugt i64 %484, %483
  br i1 %485, label %76, label %._crit_edge259, !llvm.loop !55

486:                                              ; preds = %480, %74
  %.pn188.pn.pn.pn = phi { ptr, i32 } [ %.pn188.pn.pn, %480 ], [ %75, %74 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #7
  resume { ptr, i32 } %.pn188.pn.pn.pn

487:                                              ; preds = %117
  unreachable
}

; Function Attrs: nounwind
declare void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #3

declare void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEES5_(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef, ptr noundef, ptr noundef) unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef) local_unnamed_addr #2 align 2

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

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef, ptr noundef) local_unnamed_addr #1

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(216) ptr @_ZSt3decRSt8ios_base(ptr noundef nonnull align 8 dereferenceable(216)) #6

; 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 #2 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)) #6

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(152)) local_unnamed_addr #1

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3MIR11TypeResolve17set_cur_stmt_termEj(ptr noundef nonnull align 8 dereferenceable(120), i32 noundef) local_unnamed_addr #4 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS4_8FunctionEbPK9TransListE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS4_8FunctionEbPK9TransListE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #4 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3MIR10CallTarget7is_PathEv(ptr noundef nonnull align 8 dereferenceable(96)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(88) ptr @_ZN3MIR10CallTarget7as_PathEv(ptr noundef nonnull align 8 dereferenceable(96)) local_unnamed_addr #4 align 2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_10TerminatorE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(168)) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare hidden ptr @_ZNSt6vectorIZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS0_8FunctionEbPK9TransListE11InlineEventSaIS8_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden ptr @_ZNSt6vectorIZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS0_8FunctionEbPK9TransListE11InlineEventSaIS8_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef nonnull align 8 dereferenceable(112) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS1_8FunctionEbPK9TransListE11InlineEventSt6vectorIS9_SaIS9_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #4 align 2

declare noundef zeroext i1 @_ZNK3HIR4PatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(88)) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListENK11InlineEvent6has_bbEm(ptr noundef nonnull align 8 dereferenceable(112), i64 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS4_8FunctionEbPK9TransListE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #4 align 2

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

declare void @__cxa_throw(ptr, ptr, ptr) local_unnamed_addr

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS1_8FunctionEbPK9TransListE11InlineEventSt6vectorIS9_SaIS9_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListEN6ClonerC2ERK4SpanRK18StaticTraitResolveRNS_10Terminator9Data_CallE(ptr noundef nonnull align 8 dereferenceable(304), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(160)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef ptr @_ZN12_GLOBAL__N_114get_called_mirERKN3MIR11TypeResolveEPK9TransListRKN3HIR4PathERNS_9ParamsSetE(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef, ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(176)) local_unnamed_addr #2

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(88)) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS4_8FunctionEbPK9TransListE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR6LValue9new_LocalEj(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8, i32 noundef) local_unnamed_addr #2 align 2

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) local_unnamed_addr #1

declare void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8, ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListENK6Cloner9monomorphERKN3HIR7TypeRefE(ptr dead_on_unwind noalias writable sret(%"class.HIR::TypeRef") align 8, ptr noundef nonnull align 8 dereferenceable(304), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIbSaIbEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i32 } @_ZNSt6vectorIbSaIbEE6insertISt19_Bit_const_iteratorvEESt13_Bit_iteratorS3_T_S5_(ptr noundef nonnull align 8 dereferenceable(40), ptr, i32, ptr, i32, ptr noundef byval(%"struct.std::_Bit_const_iterator") align 8) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { ptr, i32 } @_ZNSt6vectorIbSaIbEE3endEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #4 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { ptr, i32 } @_ZNKSt6vectorIbSaIbEE5beginEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { ptr, i32 } @_ZNKSt6vectorIbSaIbEE3endEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #4 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3MIR5Param9is_LValueEv(ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #4 align 2

declare noundef zeroext i1 @_ZNK3MIR11TypeResolve14lvalue_is_copyERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1

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

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

declare void @_ZNK3MIR5Param5cloneEv(ptr dead_on_unwind writable sret(%"class.MIR::Param") align 8, ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #1

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #1

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListENK6Cloner8clone_bbERKNS_10BasicBlockEjj(ptr dead_on_unwind noalias writable sret(%"struct.MIR::BasicBlock") align 8, ptr noundef nonnull align 8 dereferenceable(304), ptr noundef nonnull align 8 dereferenceable(192), i32 noundef, i32 noundef) local_unnamed_addr #2 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3MIR5Param11is_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #4 align 2

declare void @_ZNK3MIR11TypeResolve14get_const_typeERKNS_8ConstantE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8, ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR5Param11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #4 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3MIR8ConstantC2EOS0_(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #4 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR9Statement11make_AssignENS0_11Data_AssignE(ptr dead_on_unwind noalias writable sret(%"class.MIR::Statement") align 8, ptr noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3MIR6RValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 8 dereferenceable(112)) unnamed_addr #4 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EE6insertEN9__gnu_cxx17__normal_iteratorIPKS1_S3_EEOS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr, ptr noundef nonnull align 8 dereferenceable(152)) local_unnamed_addr #2 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListEN11InlineEvent9add_rangeEmm(ptr noundef nonnull align 8 dereferenceable(112), i64 noundef, i64 noundef) local_unnamed_addr #2 align 2

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

declare void @_ZNK3HIR4Path5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::Path") align 8, ptr noundef nonnull align 8 dereferenceable(88)) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListEN11InlineEventC2EN3HIR4PathE(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef) unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @_ZZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListEN11InlineEventD2Ev(ptr noundef nonnull align 8 dereferenceable(112)) unnamed_addr #5 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef nonnull align 8 dereferenceable(112) ptr @_ZNSt6vectorIZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS0_8FunctionEbPK9TransListE11InlineEventSaIS8_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR10Terminator9make_GotoEj(ptr dead_on_unwind noalias writable sret(%"class.MIR::Terminator") align 8, i32 noundef) local_unnamed_addr #2 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @_ZZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListEN6ClonerD2Ev(ptr noundef nonnull align 8 dereferenceable(304)) unnamed_addr #5 align 2

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

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

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

!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 = !{!"bool", !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 = !{i8 0, i8 2}
!12 = !{}
!13 = !{!14, !14, i64 0}
!14 = !{!"int", !7, i64 0}
!15 = !{!16, !10, i64 8}
!16 = !{!"_ZTSN3MIR11TypeResolveE", !14, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !17, i64 32, !10, i64 64, !10, i64 72, !10, i64 80, !10, i64 88, !10, i64 96, !10, i64 104, !14, i64 112, !14, i64 116}
!17 = !{!"_ZTS9FmtLambda", !18, i64 0}
!18 = !{!"_ZTSSt8functionIFvRSoEE", !19, i64 0, !10, i64 24}
!19 = !{!"_ZTSSt14_Function_base", !7, i64 0, !10, i64 16}
!20 = !{!16, !10, i64 16}
!21 = !{!22, !14, i64 232}
!22 = !{!"_ZTSZ21MIR_Optimise_InliningRN3MIR11TypeResolveERNS_8FunctionEbPK9TransListE6Cloner", !10, i64 0, !10, i64 8, !10, i64 16, !23, i64 24, !27, i64 48, !14, i64 224, !14, i64 228, !14, i64 232, !14, i64 236, !39, i64 240, !40, i64 248, !44, i64 272}
!23 = !{!"_ZTSSt6vectorIjSaIjEE", !24, i64 0}
!24 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!27 = !{!"_ZTSN12_GLOBAL__N_19ParamsSetE", !28, i64 0, !35, i64 96, !10, i64 120, !10, i64 128, !10, i64 136, !10, i64 144, !35, i64 152}
!28 = !{!"_ZTS15MonomorphiserPP", !29, i64 0}
!29 = !{!"_ZTS13Monomorphiser", !10, i64 8, !30, i64 16, !31, i64 72}
!30 = !{!"_ZTSN3HIR8ItemPathE", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48}
!31 = !{!"_ZTSSt6vectorIPKN3HIR13GenericParamsESaIS3_EE", !32, i64 0}
!32 = !{!"_ZTSSt12_Vector_baseIPKN3HIR13GenericParamsESaIS3_EE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIPKN3HIR13GenericParamsESaIS3_EE12_Vector_implE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIPKN3HIR13GenericParamsESaIS3_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!35 = !{!"_ZTSN3HIR10PathParamsE", !36, i64 0, !37, i64 8, !38, i64 16}
!36 = !{!"_ZTS10ThinVectorIN3HIR11LifetimeRefEE", !10, i64 0}
!37 = !{!"_ZTS10ThinVectorIN3HIR7TypeRefEE", !10, i64 0}
!38 = !{!"_ZTS10ThinVectorIN3HIR12ConstGenericEE", !10, i64 0}
!39 = !{!"long", !7, i64 0}
!40 = !{!"_ZTSSt6vectorIN3MIR5ParamESaIS1_EE", !41, i64 0}
!41 = !{!"_ZTSSt12_Vector_baseIN3MIR5ParamESaIS1_EE", !42, i64 0}
!42 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE12_Vector_implE", !43, i64 0}
!43 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!44 = !{!"_ZTSN3MIR6LValueE", !45, i64 0, !46, i64 8}
!45 = !{!"_ZTSN3MIR6LValue7StorageE", !39, i64 0}
!46 = !{!"_ZTSSt6vectorIN3MIR6LValue7WrapperESaIS2_EE", !47, i64 0}
!47 = !{!"_ZTSSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE", !48, i64 0}
!48 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE12_Vector_implE", !49, i64 0}
!49 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!50 = !{!22, !39, i64 240}
!51 = !{!22, !14, i64 236}
!52 = !{!22, !14, i64 224}
!53 = distinct !{!53, !54}
!54 = !{!"llvm.loop.mustprogress"}
!55 = distinct !{!55, !54}


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