; LLVM IR from thepowersgang/mrustc :: src/trans/enumerate.ll (Z28Trans_Enumerate_FillFrom_MIRRN3MIR9EnumCacheERKNS_8FunctionE)

; 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 = type { i8 }
%"class.__gnu_cxx::__normal_iterator.545" = type { ptr }
%"class.std::function.546" = type { %"class.std::_Function_base", ptr }
%class.anon.549 = type { ptr }
%"class.__gnu_cxx::__normal_iterator.550" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.573" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.589" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.590" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.607" = type { ptr }
%"class.MIR::Function" = type { %"class.std::vector.286", %"class.std::vector.394", %"class.std::vector.398", %"class.MIR::EnumCachePtr" }
%"class.std::vector.286" = type { %"struct.std::_Vector_base.287" }
%"struct.std::_Vector_base.287" = 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.394" = 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 }
%"struct.std::_Bit_iterator" = type { %"struct.std::_Bit_iterator_base.base", [4 x i8] }
%"struct.std::_Bit_iterator_base.base" = type <{ ptr, i32 }>
%"class.std::vector.398" = type { %"struct.std::_Vector_base.399" }
%"struct.std::_Vector_base.399" = 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.MIR::EnumCachePtr" = type { ptr }
%"struct.MIR::BasicBlock" = type { %"class.std::vector.551", %"class.MIR::Terminator" }
%"class.std::vector.551" = type { %"struct.std::_Vector_base.552" }
%"struct.std::_Vector_base.552" = 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.568" }
%"struct.MIR::LValue" = type { %"class.MIR::LValue::Storage", %"class.std::vector.532" }
%"class.MIR::LValue::Storage" = type { i64 }
%"class.std::vector.532" = type { %"struct.std::_Vector_base.533" }
%"struct.std::_Vector_base.533" = 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.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::TypeRef" = type { 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 }
%"struct.HIR::PathParams" = type { %class.ThinVector.296, %class.ThinVector.297, %class.ThinVector.298 }
%class.ThinVector.296 = type { ptr }
%class.ThinVector.297 = type { ptr }
%class.ThinVector.298 = 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.300" }
%"struct.std::_Head_base.300" = type { ptr }
%"class.std::vector.568" = type { %"struct.std::_Vector_base.569" }
%"struct.std::_Vector_base.569" = 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::Statement::Data_Assign" = type { %"struct.MIR::LValue", %"class.MIR::RValue" }
%"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::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" }
%"struct.MIR::RValue::Data_SizedArray" = type { %"class.MIR::Param", %"class.HIR::ArraySize" }
%"class.HIR::ArraySize" = type { i32, %"union.HIR::ArraySize::DataUnion" }
%"union.HIR::ArraySize::DataUnion" = type { %"class.HIR::ConstGeneric" }
%"class.HIR::ConstGeneric" = type { i32, %"union.HIR::ConstGeneric::DataUnion" }
%"union.HIR::ConstGeneric::DataUnion" = type { %"class.std::unique_ptr.518", [8 x i8] }
%"class.std::unique_ptr.518" = type { %"struct.std::__uniq_ptr_data.519" }
%"struct.std::__uniq_ptr_data.519" = type { %"class.std::__uniq_ptr_impl.520" }
%"class.std::__uniq_ptr_impl.520" = type { %"class.std::tuple.521" }
%"class.std::tuple.521" = type { %"struct.std::_Tuple_impl.522" }
%"struct.std::_Tuple_impl.522" = type { %"struct.std::_Head_base.525" }
%"struct.std::_Head_base.525" = type { ptr }
%"struct.MIR::RValue::Data_Borrow" = type { i32, %"struct.MIR::LValue" }
%"struct.MIR::RValue::Data_Cast" = type { %"struct.MIR::LValue", %"class.HIR::TypeRef" }
%"struct.MIR::RValue::Data_UniOp" = type <{ %"struct.MIR::LValue", i32, [4 x i8] }>
%"struct.MIR::RValue::Data_DstMeta" = type { %"struct.MIR::LValue" }
%"struct.MIR::RValue::Data_DstPtr" = type { %"struct.MIR::LValue" }
%"struct.MIR::RValue::Data_MakeDst" = type { %"class.MIR::Param", %"class.MIR::Param" }
%"struct.MIR::RValue::Data_Tuple" = type { %"class.std::vector.568" }
%"struct.MIR::RValue::Data_Array" = type { %"class.std::vector.568" }
%"struct.MIR::RValue::Data_UnionVariant" = type { %"class.HIR::GenericPath", i32, %"class.MIR::Param" }
%"struct.MIR::RValue::Data_EnumVariant" = type { %"class.HIR::GenericPath", i32, %"class.std::vector.568" }
%"struct.MIR::RValue::Data_Struct" = type { %"class.HIR::GenericPath", %"class.std::vector.568" }
%"struct.MIR::Statement::Data_Asm2" = type { %"struct.AsmCommon::Options", %"class.std::vector.579", %"class.std::vector.584" }
%"struct.AsmCommon::Options" = type { i8, [3 x i8] }
%"class.std::vector.579" = type { %"struct.std::_Vector_base.580" }
%"struct.std::_Vector_base.580" = type { %"struct.std::_Vector_base<AsmCommon::Line, std::allocator<AsmCommon::Line>>::_Vector_impl" }
%"struct.std::_Vector_base<AsmCommon::Line, std::allocator<AsmCommon::Line>>::_Vector_impl" = type { %"struct.std::_Vector_base<AsmCommon::Line, std::allocator<AsmCommon::Line>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AsmCommon::Line, std::allocator<AsmCommon::Line>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.584" = type { %"struct.std::_Vector_base.585" }
%"struct.std::_Vector_base.585" = type { %"struct.std::_Vector_base<MIR::AsmParam, std::allocator<MIR::AsmParam>>::_Vector_impl" }
%"struct.std::_Vector_base<MIR::AsmParam, std::allocator<MIR::AsmParam>>::_Vector_impl" = type { %"struct.std::_Vector_base<MIR::AsmParam, std::allocator<MIR::AsmParam>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MIR::AsmParam, std::allocator<MIR::AsmParam>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.MIR::AsmParam::Data_Reg" = type { i32, %"class.AsmCommon::RegisterSpec", %"class.std::unique_ptr.591", %"class.std::unique_ptr.599" }
%"class.AsmCommon::RegisterSpec" = type { i32, %"union.AsmCommon::RegisterSpec::DataUnion" }
%"union.AsmCommon::RegisterSpec::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.std::unique_ptr.591" = type { %"struct.std::__uniq_ptr_data.592" }
%"struct.std::__uniq_ptr_data.592" = type { %"class.std::__uniq_ptr_impl.593" }
%"class.std::__uniq_ptr_impl.593" = type { %"class.std::tuple.594" }
%"class.std::tuple.594" = type { %"struct.std::_Tuple_impl.595" }
%"struct.std::_Tuple_impl.595" = type { %"struct.std::_Head_base.598" }
%"struct.std::_Head_base.598" = type { ptr }
%"class.std::unique_ptr.599" = type { %"struct.std::__uniq_ptr_data.600" }
%"struct.std::__uniq_ptr_data.600" = type { %"class.std::__uniq_ptr_impl.601" }
%"class.std::__uniq_ptr_impl.601" = type { %"class.std::tuple.602" }
%"class.std::tuple.602" = type { %"struct.std::_Tuple_impl.603" }
%"struct.std::_Tuple_impl.603" = type { %"struct.std::_Head_base.606" }
%"struct.std::_Head_base.606" = type { ptr }
%"struct.MIR::Statement::Data_Asm" = type { %"class.std::__cxx11::basic_string", %"class.std::vector.574", %"class.std::vector.574", %"class.std::vector.253", %"class.std::vector.253" }
%"class.std::vector.574" = type { %"struct.std::_Vector_base.575" }
%"struct.std::_Vector_base.575" = type { %"struct.std::_Vector_base<std::pair<std::__cxx11::basic_string<char>, MIR::LValue>, std::allocator<std::pair<std::__cxx11::basic_string<char>, MIR::LValue>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<std::__cxx11::basic_string<char>, MIR::LValue>, std::allocator<std::pair<std::__cxx11::basic_string<char>, MIR::LValue>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<std::__cxx11::basic_string<char>, MIR::LValue>, std::allocator<std::pair<std::__cxx11::basic_string<char>, MIR::LValue>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<std::__cxx11::basic_string<char>, MIR::LValue>, std::allocator<std::pair<std::__cxx11::basic_string<char>, MIR::LValue>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.253" = type { %"struct.std::_Vector_base.254" }
%"struct.std::_Vector_base.254" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::pair.608" = type { %"class.std::__cxx11::basic_string", %"struct.MIR::LValue" }
%"struct.MIR::Statement::Data_Drop" = type <{ i32, [4 x i8], %"struct.MIR::LValue", i32, [4 x i8] }>
%"struct.MIR::Terminator::Data_If" = type { %"struct.MIR::LValue", i32, i32 }
%"struct.MIR::Terminator::Data_Switch" = type { %"struct.MIR::LValue", %"class.std::vector.291" }
%"class.std::vector.291" = type { %"struct.std::_Vector_base.292" }
%"struct.std::_Vector_base.292" = 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.MIR::Terminator::Data_SwitchValue" = type { %"struct.MIR::LValue", i32, %"class.std::vector.291", %"class.MIR::SwitchValues" }
%"class.MIR::SwitchValues" = type { i32, %"union.MIR::SwitchValues::DataUnion" }
%"union.MIR::SwitchValues::DataUnion" = type { %"class.std::vector.556" }
%"class.std::vector.556" = type { %"struct.std::_Vector_base.557" }
%"struct.std::_Vector_base.557" = 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 }
%"struct.MIR::CallTarget::Data_Intrinsic" = type { %class.RcString, %"struct.HIR::PathParams" }

@g_debug_indent_level = external global i32, align 4
@.str.6 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [78 x i8], align 1
@__func__._Z28Trans_Enumerate_FillFrom_MIRRN3MIR9EnumCacheERKNS_8FunctionE = external hidden unnamed_addr constant [29 x i8], align 1
@__PRETTY_FUNCTION__._Z28Trans_Enumerate_FillFrom_MIRRN3MIR9EnumCacheERKNS_8FunctionE = external hidden unnamed_addr constant [77 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [8 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

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

declare noundef zeroext i1 @_Z13debug_enabledv() #1

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 @_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)) #3

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z28Trans_Enumerate_FillFrom_MIRRN3MIR9EnumCacheERKNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(96) %1) #2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca %class.TraceLog, align 8
  %6 = alloca %"class.std::function", align 8
  %7 = alloca %class.anon, align 1
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca %"class.__gnu_cxx::__normal_iterator.545", align 8
  %12 = alloca %"class.__gnu_cxx::__normal_iterator.545", align 8
  %13 = alloca ptr, align 8
  %14 = alloca %"class.std::function.546", align 8
  %15 = alloca %class.anon.549, align 8
  %16 = alloca ptr, align 8
  %17 = alloca %"class.__gnu_cxx::__normal_iterator.550", align 8
  %18 = alloca %"class.__gnu_cxx::__normal_iterator.550", align 8
  %19 = alloca i32, align 4
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca %"class.__gnu_cxx::__normal_iterator.573", align 8
  %23 = alloca %"class.__gnu_cxx::__normal_iterator.573", align 8
  %24 = alloca ptr, align 8
  %25 = alloca i8, align 1
  %26 = alloca ptr, align 8
  %27 = alloca i8, align 1
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca %"class.__gnu_cxx::__normal_iterator.589", align 8
  %42 = alloca %"class.__gnu_cxx::__normal_iterator.589", align 8
  %43 = alloca ptr, align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca %"class.__gnu_cxx::__normal_iterator.589", align 8
  %47 = alloca %"class.__gnu_cxx::__normal_iterator.589", align 8
  %48 = alloca ptr, align 8
  %49 = alloca ptr, align 8
  %50 = alloca ptr, align 8
  %51 = alloca ptr, align 8
  %52 = alloca %"class.__gnu_cxx::__normal_iterator.589", align 8
  %53 = alloca %"class.__gnu_cxx::__normal_iterator.589", align 8
  %54 = alloca ptr, align 8
  %55 = alloca ptr, align 8
  %56 = alloca ptr, align 8
  %57 = alloca %"class.__gnu_cxx::__normal_iterator.589", align 8
  %58 = alloca %"class.__gnu_cxx::__normal_iterator.589", align 8
  %59 = alloca ptr, align 8
  %60 = alloca i8, align 1
  %61 = alloca ptr, align 8
  %62 = alloca ptr, align 8
  %63 = alloca %"class.__gnu_cxx::__normal_iterator.590", align 8
  %64 = alloca %"class.__gnu_cxx::__normal_iterator.590", align 8
  %65 = alloca ptr, align 8
  %66 = alloca i8, align 1
  %67 = alloca ptr, align 8
  %68 = alloca i8, align 1
  %69 = alloca ptr, align 8
  %70 = alloca i8, align 1
  %71 = alloca ptr, align 8
  %72 = alloca i8, align 1
  %73 = alloca ptr, align 8
  %74 = alloca i8, align 1
  %75 = alloca ptr, align 8
  %76 = alloca ptr, align 8
  %77 = alloca %"class.__gnu_cxx::__normal_iterator.607", align 8
  %78 = alloca %"class.__gnu_cxx::__normal_iterator.607", align 8
  %79 = alloca ptr, align 8
  %80 = alloca ptr, align 8
  %81 = alloca %"class.__gnu_cxx::__normal_iterator.607", align 8
  %82 = alloca %"class.__gnu_cxx::__normal_iterator.607", align 8
  %83 = alloca ptr, align 8
  %84 = alloca i8, align 1
  %85 = alloca ptr, align 8
  %86 = alloca i8, align 1
  %87 = alloca ptr, align 8
  %88 = alloca i8, align 1
  %89 = alloca ptr, align 8
  %90 = alloca ptr, align 8
  %91 = alloca ptr, align 8
  %92 = alloca ptr, align 8
  %93 = alloca ptr, align 8
  %94 = alloca ptr, align 8
  %95 = alloca ptr, align 8
  %96 = alloca ptr, align 8
  %97 = alloca ptr, align 8
  %98 = alloca ptr, align 8
  %99 = alloca ptr, align 8
  %100 = alloca ptr, align 8
  %101 = alloca ptr, align 8
  %102 = alloca ptr, align 8
  %103 = alloca %"class.__gnu_cxx::__normal_iterator.589", align 8
  %104 = alloca %"class.__gnu_cxx::__normal_iterator.589", align 8
  %105 = alloca ptr, align 8
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 40, ptr %5) #8
  %106 = call noundef zeroext i1 @_Z13debug_enabledv()
  %107 = zext i1 %106 to i64
  %108 = select i1 %106, ptr @__func__._Z28Trans_Enumerate_FillFrom_MIRRN3MIR9EnumCacheERKNS_8FunctionE, ptr null
  call void @llvm.lifetime.start.p0(i64 1, ptr %7) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZ28Trans_Enumerate_FillFrom_MIRRN3MIR9EnumCacheERKNS4_8FunctionEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 1 dereferenceable(1) %7) #8
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %5, ptr noundef %108, ptr noundef %6)
          to label %109 unwind label %121

109:                                              ; preds = %2
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #8
  %110 = load ptr, ptr %4, align 8, !tbaa !5
  %111 = getelementptr inbounds %"class.MIR::Function", ptr %110, i32 0, i32 0
  store ptr %111, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #8
  %112 = load ptr, ptr %10, align 8, !tbaa !5
  %113 = call ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %112) #8
  %114 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.545", ptr %11, i32 0, i32 0
  store ptr %113, ptr %114, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #8
  %115 = load ptr, ptr %10, align 8, !tbaa !5
  %116 = call ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %115) #8
  %117 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.545", ptr %12, i32 0, i32 0
  store ptr %116, ptr %117, align 8
  br label %118

118:                                              ; preds = %132, %109
  %119 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #8
  br i1 %119, label %125, label %120

120:                                              ; preds = %118
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  br label %138

121:                                              ; preds = %2
  %122 = landingpad { ptr, i32 }
          cleanup
  %123 = extractvalue { ptr, i32 } %122, 0
  store ptr %123, ptr %8, align 8
  %124 = extractvalue { ptr, i32 } %122, 1
  store i32 %124, ptr %9, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #8
  br label %1110

125:                                              ; preds = %118
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #8
  %126 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  store ptr %126, ptr %13, align 8, !tbaa !5
  %127 = load ptr, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #8
  %128 = getelementptr inbounds %class.anon.549, ptr %15, i32 0, i32 0
  %129 = load ptr, ptr %3, align 8, !tbaa !5
  store ptr %129, ptr %128, align 8, !tbaa !5
  call void @"_ZNSt8functionIFbRKN3HIR7TypeRefEEEC2IZ28Trans_Enumerate_FillFrom_MIRRN3MIR9EnumCacheERKNS7_8FunctionEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 8 dereferenceable(8) %15) #8
  %130 = invoke noundef zeroext i1 @_Z13visit_ty_withRKN3HIR7TypeRefESt8functionIFbS2_EE(ptr noundef nonnull align 8 dereferenceable(8) %127, ptr noundef %14)
          to label %131 unwind label %134

131:                                              ; preds = %125
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #8
  br label %132

132:                                              ; preds = %131
  %133 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  br label %118

134:                                              ; preds = %125
  %135 = landingpad { ptr, i32 }
          cleanup
  %136 = extractvalue { ptr, i32 } %135, 0
  store ptr %136, ptr %8, align 8
  %137 = extractvalue { ptr, i32 } %135, 1
  store i32 %137, ptr %9, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  br label %1109

138:                                              ; preds = %120
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #8
  %139 = load ptr, ptr %4, align 8, !tbaa !5
  %140 = getelementptr inbounds %"class.MIR::Function", ptr %139, i32 0, i32 2
  store ptr %140, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #8
  %141 = load ptr, ptr %16, align 8, !tbaa !5
  %142 = call ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %141) #8
  %143 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.550", ptr %17, i32 0, i32 0
  store ptr %142, ptr %143, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #8
  %144 = load ptr, ptr %16, align 8, !tbaa !5
  %145 = call ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %144) #8
  %146 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.550", ptr %18, i32 0, i32 0
  store ptr %145, ptr %146, align 8
  br label %147

147:                                              ; preds = %1105, %138
  %148 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %18) #8
  br i1 %148, label %150, label %149

149:                                              ; preds = %147
  store i32 4, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  br label %1108

150:                                              ; preds = %147
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #8
  %151 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %17) #8
  store ptr %151, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #8
  %152 = load ptr, ptr %20, align 8, !tbaa !5
  %153 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %152, i32 0, i32 0
  store ptr %153, ptr %21, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #8
  %154 = load ptr, ptr %21, align 8, !tbaa !5
  %155 = call ptr @_ZNKSt6vectorIN3MIR9StatementESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %154) #8
  %156 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.573", ptr %22, i32 0, i32 0
  store ptr %155, ptr %156, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #8
  %157 = load ptr, ptr %21, align 8, !tbaa !5
  %158 = call ptr @_ZNKSt6vectorIN3MIR9StatementESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %157) #8
  %159 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.573", ptr %23, i32 0, i32 0
  store ptr %158, ptr %159, align 8
  br label %160

160:                                              ; preds = %887, %150
  %161 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR9StatementESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %23) #8
  br i1 %161, label %163, label %162

162:                                              ; preds = %160
  store i32 6, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #8
  br label %889

163:                                              ; preds = %160
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #8
  %164 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR9StatementESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #8
  store ptr %164, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #8
  store i8 1, ptr %25, align 1, !tbaa !9
  br label %165

165:                                              ; preds = %885, %163
  %166 = load i8, ptr %25, align 1, !tbaa !9, !range !11, !noundef !12
  %167 = trunc i8 %166 to i1
  br i1 %167, label %169, label %168

168:                                              ; preds = %165
  store i32 8, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #8
  br label %886

169:                                              ; preds = %165
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #8
  %170 = load ptr, ptr %24, align 8, !tbaa !5
  store ptr %170, ptr %26, align 8, !tbaa !5
  br label %171

171:                                              ; preds = %882, %169
  %172 = load i8, ptr %25, align 1, !tbaa !9, !range !11, !noundef !12
  %173 = trunc i8 %172 to i1
  br i1 %173, label %175, label %174

174:                                              ; preds = %171
  store i32 11, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  br label %884

175:                                              ; preds = %171
  %176 = load ptr, ptr %26, align 8, !tbaa !5
  %177 = invoke noundef i32 @_ZNK3MIR9Statement3tagEv(ptr noundef nonnull align 8 dereferenceable(152) %176)
          to label %178 unwind label %179

178:                                              ; preds = %175
  switch i32 %177, label %881 [
    i32 0, label %183
    i32 1, label %184
    i32 3, label %540
    i32 2, label %700
    i32 4, label %788
    i32 6, label %811
    i32 5, label %834
  ]

179:                                              ; preds = %175
  %180 = landingpad { ptr, i32 }
          cleanup
  %181 = extractvalue { ptr, i32 } %180, 0
  store ptr %181, ptr %8, align 8
  %182 = extractvalue { ptr, i32 } %180, 1
  store i32 %182, ptr %9, align 4
  br label %883

183:                                              ; preds = %178
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str.7, i32 noundef 1762, ptr noundef @__PRETTY_FUNCTION__._Z28Trans_Enumerate_FillFrom_MIRRN3MIR9EnumCacheERKNS_8FunctionE) #9
  unreachable

184:                                              ; preds = %178
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #8
  store i8 1, ptr %27, align 1, !tbaa !9
  br label %185

185:                                              ; preds = %538, %184
  %186 = load i8, ptr %27, align 1, !tbaa !9, !range !11, !noundef !12
  %187 = trunc i8 %186 to i1
  br i1 %187, label %189, label %188

188:                                              ; preds = %185
  store i32 15, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #8
  br label %539

189:                                              ; preds = %185
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #8
  %190 = load ptr, ptr %26, align 8, !tbaa !5
  %191 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %190)
          to label %192 unwind label %198

192:                                              ; preds = %189
  store ptr %191, ptr %28, align 8, !tbaa !5
  br label %193

193:                                              ; preds = %535, %192
  %194 = load ptr, ptr %28, align 8, !tbaa !5
  %195 = load i8, ptr %27, align 1, !tbaa !9, !range !11, !noundef !12
  %196 = trunc i8 %195 to i1
  br i1 %196, label %202, label %197

197:                                              ; preds = %193
  store i32 18, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  br label %537

198:                                              ; preds = %232, %228, %223, %221, %217, %215, %211, %209, %206, %203, %189
  %199 = landingpad { ptr, i32 }
          cleanup
  %200 = extractvalue { ptr, i32 } %199, 0
  store ptr %200, ptr %8, align 8
  %201 = extractvalue { ptr, i32 } %199, 1
  store i32 %201, ptr %9, align 4
  br label %536

202:                                              ; preds = %193
  br label %203

203:                                              ; preds = %202
  %204 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %205 unwind label %198

205:                                              ; preds = %203
  br i1 %204, label %206, label %226

206:                                              ; preds = %205
  %207 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !13
  %208 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %207, ptr noundef @__func__._Z28Trans_Enumerate_FillFrom_MIRRN3MIR9EnumCacheERKNS_8FunctionE)
          to label %209 unwind label %198

209:                                              ; preds = %206
  %210 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %208, ptr noundef @.str.14)
          to label %211 unwind label %198

211:                                              ; preds = %209
  %212 = load ptr, ptr %28, align 8, !tbaa !5
  %213 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %212, i32 0, i32 0
  %214 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %210, ptr noundef nonnull align 8 dereferenceable(32) %213)
          to label %215 unwind label %198

215:                                              ; preds = %211
  %216 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %214, ptr noundef @.str.15)
          to label %217 unwind label %198

217:                                              ; preds = %215
  %218 = load ptr, ptr %28, align 8, !tbaa !5
  %219 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %218, i32 0, i32 1
  %220 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6RValueE(ptr noundef nonnull align 8 dereferenceable(8) %216, ptr noundef nonnull align 8 dereferenceable(112) %219)
          to label %221 unwind label %198

221:                                              ; preds = %217
  %222 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %220, ptr noundef @_ZSt3decRSt8ios_base)
          to label %223 unwind label %198

223:                                              ; preds = %221
  %224 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %222, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %225 unwind label %198

225:                                              ; preds = %223
  br label %226

226:                                              ; preds = %225, %205
  br label %227

227:                                              ; preds = %226
  br label %228

228:                                              ; preds = %227
  %229 = load ptr, ptr %3, align 8, !tbaa !5
  %230 = load ptr, ptr %28, align 8, !tbaa !5
  %231 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %230, i32 0, i32 0
  invoke void @_Z35Trans_Enumerate_FillFrom_MIR_LValueRN3MIR9EnumCacheERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %229, ptr noundef nonnull align 8 dereferenceable(32) %231)
          to label %232 unwind label %198

232:                                              ; preds = %228
  %233 = load ptr, ptr %28, align 8, !tbaa !5
  %234 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %233, i32 0, i32 1
  %235 = invoke noundef i32 @_ZNK3MIR6RValue3tagEv(ptr noundef nonnull align 8 dereferenceable(112) %234)
          to label %236 unwind label %198

236:                                              ; preds = %232
  switch i32 %235, label %534 [
    i32 0, label %237
    i32 1, label %238
    i32 3, label %251
    i32 4, label %264
    i32 2, label %278
    i32 5, label %292
    i32 6, label %306
    i32 7, label %324
    i32 8, label %338
    i32 9, label %352
    i32 10, label %366
    i32 11, label %384
    i32 12, label %418
    i32 13, label %452
    i32 14, label %466
    i32 15, label %500
  ]

237:                                              ; preds = %236
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str.7, i32 noundef 1818, ptr noundef @__PRETTY_FUNCTION__._Z28Trans_Enumerate_FillFrom_MIRRN3MIR9EnumCacheERKNS_8FunctionE) #9
  unreachable

238:                                              ; preds = %236
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #8
  %239 = load ptr, ptr %28, align 8, !tbaa !5
  %240 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %239, i32 0, i32 1
  %241 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR6RValue6as_UseEv(ptr noundef nonnull align 8 dereferenceable(112) %240)
          to label %242 unwind label %247

242:                                              ; preds = %238
  store ptr %241, ptr %29, align 8, !tbaa !5
  %243 = load ptr, ptr %29, align 8, !tbaa !5
  %244 = load ptr, ptr %3, align 8, !tbaa !5
  %245 = load ptr, ptr %29, align 8, !tbaa !5
  invoke void @_Z35Trans_Enumerate_FillFrom_MIR_LValueRN3MIR9EnumCacheERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %244, ptr noundef nonnull align 8 dereferenceable(32) %245)
          to label %246 unwind label %247

246:                                              ; preds = %242
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  br label %534

247:                                              ; preds = %242, %238
  %248 = landingpad { ptr, i32 }
          cleanup
  %249 = extractvalue { ptr, i32 } %248, 0
  store ptr %249, ptr %8, align 8
  %250 = extractvalue { ptr, i32 } %248, 1
  store i32 %250, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  br label %536

251:                                              ; preds = %236
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #8
  %252 = load ptr, ptr %28, align 8, !tbaa !5
  %253 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %252, i32 0, i32 1
  %254 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR6RValue11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(112) %253)
          to label %255 unwind label %260

255:                                              ; preds = %251
  store ptr %254, ptr %30, align 8, !tbaa !5
  %256 = load ptr, ptr %30, align 8, !tbaa !5
  %257 = load ptr, ptr %3, align 8, !tbaa !5
  %258 = load ptr, ptr %30, align 8, !tbaa !5
  invoke void @_Z37Trans_Enumerate_FillFrom_MIR_ConstantRN3MIR9EnumCacheERKNS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %257, ptr noundef nonnull align 8 dereferenceable(40) %258)
          to label %259 unwind label %260

259:                                              ; preds = %255
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  br label %534

260:                                              ; preds = %255, %251
  %261 = landingpad { ptr, i32 }
          cleanup
  %262 = extractvalue { ptr, i32 } %261, 0
  store ptr %262, ptr %8, align 8
  %263 = extractvalue { ptr, i32 } %261, 1
  store i32 %263, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  br label %536

264:                                              ; preds = %236
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #8
  %265 = load ptr, ptr %28, align 8, !tbaa !5
  %266 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %265, i32 0, i32 1
  %267 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3MIR6RValue13as_SizedArrayEv(ptr noundef nonnull align 8 dereferenceable(112) %266)
          to label %268 unwind label %274

268:                                              ; preds = %264
  store ptr %267, ptr %31, align 8, !tbaa !5
  %269 = load ptr, ptr %31, align 8, !tbaa !5
  %270 = load ptr, ptr %3, align 8, !tbaa !5
  %271 = load ptr, ptr %31, align 8, !tbaa !5
  %272 = getelementptr inbounds %"struct.MIR::RValue::Data_SizedArray", ptr %271, i32 0, i32 0
  invoke void @_Z34Trans_Enumerate_FillFrom_MIR_ParamRN3MIR9EnumCacheERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(48) %270, ptr noundef nonnull align 8 dereferenceable(48) %272)
          to label %273 unwind label %274

273:                                              ; preds = %268
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  br label %534

274:                                              ; preds = %268, %264
  %275 = landingpad { ptr, i32 }
          cleanup
  %276 = extractvalue { ptr, i32 } %275, 0
  store ptr %276, ptr %8, align 8
  %277 = extractvalue { ptr, i32 } %275, 1
  store i32 %277, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  br label %536

278:                                              ; preds = %236
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #8
  %279 = load ptr, ptr %28, align 8, !tbaa !5
  %280 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %279, i32 0, i32 1
  %281 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR6RValue9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(112) %280)
          to label %282 unwind label %288

282:                                              ; preds = %278
  store ptr %281, ptr %32, align 8, !tbaa !5
  %283 = load ptr, ptr %32, align 8, !tbaa !5
  %284 = load ptr, ptr %3, align 8, !tbaa !5
  %285 = load ptr, ptr %32, align 8, !tbaa !5
  %286 = getelementptr inbounds %"struct.MIR::RValue::Data_Borrow", ptr %285, i32 0, i32 1
  invoke void @_Z35Trans_Enumerate_FillFrom_MIR_LValueRN3MIR9EnumCacheERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %284, ptr noundef nonnull align 8 dereferenceable(32) %286)
          to label %287 unwind label %288

287:                                              ; preds = %282
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  br label %534

288:                                              ; preds = %282, %278
  %289 = landingpad { ptr, i32 }
          cleanup
  %290 = extractvalue { ptr, i32 } %289, 0
  store ptr %290, ptr %8, align 8
  %291 = extractvalue { ptr, i32 } %289, 1
  store i32 %291, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  br label %536

292:                                              ; preds = %236
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #8
  %293 = load ptr, ptr %28, align 8, !tbaa !5
  %294 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %293, i32 0, i32 1
  %295 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR6RValue7as_CastEv(ptr noundef nonnull align 8 dereferenceable(112) %294)
          to label %296 unwind label %302

296:                                              ; preds = %292
  store ptr %295, ptr %33, align 8, !tbaa !5
  %297 = load ptr, ptr %33, align 8, !tbaa !5
  %298 = load ptr, ptr %3, align 8, !tbaa !5
  %299 = load ptr, ptr %33, align 8, !tbaa !5
  %300 = getelementptr inbounds %"struct.MIR::RValue::Data_Cast", ptr %299, i32 0, i32 0
  invoke void @_Z35Trans_Enumerate_FillFrom_MIR_LValueRN3MIR9EnumCacheERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %298, ptr noundef nonnull align 8 dereferenceable(32) %300)
          to label %301 unwind label %302

301:                                              ; preds = %296
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  br label %534

302:                                              ; preds = %296, %292
  %303 = landingpad { ptr, i32 }
          cleanup
  %304 = extractvalue { ptr, i32 } %303, 0
  store ptr %304, ptr %8, align 8
  %305 = extractvalue { ptr, i32 } %303, 1
  store i32 %305, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  br label %536

306:                                              ; preds = %236
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #8
  %307 = load ptr, ptr %28, align 8, !tbaa !5
  %308 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %307, i32 0, i32 1
  %309 = invoke noundef nonnull align 8 dereferenceable(104) ptr @_ZNK3MIR6RValue8as_BinOpEv(ptr noundef nonnull align 8 dereferenceable(112) %308)
          to label %310 unwind label %320

310:                                              ; preds = %306
  store ptr %309, ptr %34, align 8, !tbaa !5
  %311 = load ptr, ptr %34, align 8, !tbaa !5
  %312 = load ptr, ptr %3, align 8, !tbaa !5
  %313 = load ptr, ptr %34, align 8, !tbaa !5
  %314 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %313, i32 0, i32 0
  invoke void @_Z34Trans_Enumerate_FillFrom_MIR_ParamRN3MIR9EnumCacheERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(48) %312, ptr noundef nonnull align 8 dereferenceable(48) %314)
          to label %315 unwind label %320

315:                                              ; preds = %310
  %316 = load ptr, ptr %3, align 8, !tbaa !5
  %317 = load ptr, ptr %34, align 8, !tbaa !5
  %318 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %317, i32 0, i32 2
  invoke void @_Z34Trans_Enumerate_FillFrom_MIR_ParamRN3MIR9EnumCacheERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(48) %316, ptr noundef nonnull align 8 dereferenceable(48) %318)
          to label %319 unwind label %320

319:                                              ; preds = %315
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  br label %534

320:                                              ; preds = %315, %310, %306
  %321 = landingpad { ptr, i32 }
          cleanup
  %322 = extractvalue { ptr, i32 } %321, 0
  store ptr %322, ptr %8, align 8
  %323 = extractvalue { ptr, i32 } %321, 1
  store i32 %323, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  br label %536

324:                                              ; preds = %236
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #8
  %325 = load ptr, ptr %28, align 8, !tbaa !5
  %326 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %325, i32 0, i32 1
  %327 = invoke noundef nonnull align 8 dereferenceable(36) ptr @_ZNK3MIR6RValue8as_UniOpEv(ptr noundef nonnull align 8 dereferenceable(112) %326)
          to label %328 unwind label %334

328:                                              ; preds = %324
  store ptr %327, ptr %35, align 8, !tbaa !5
  %329 = load ptr, ptr %35, align 8, !tbaa !5
  %330 = load ptr, ptr %3, align 8, !tbaa !5
  %331 = load ptr, ptr %35, align 8, !tbaa !5
  %332 = getelementptr inbounds %"struct.MIR::RValue::Data_UniOp", ptr %331, i32 0, i32 0
  invoke void @_Z35Trans_Enumerate_FillFrom_MIR_LValueRN3MIR9EnumCacheERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %330, ptr noundef nonnull align 8 dereferenceable(32) %332)
          to label %333 unwind label %334

333:                                              ; preds = %328
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  br label %534

334:                                              ; preds = %328, %324
  %335 = landingpad { ptr, i32 }
          cleanup
  %336 = extractvalue { ptr, i32 } %335, 0
  store ptr %336, ptr %8, align 8
  %337 = extractvalue { ptr, i32 } %335, 1
  store i32 %337, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  br label %536

338:                                              ; preds = %236
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #8
  %339 = load ptr, ptr %28, align 8, !tbaa !5
  %340 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %339, i32 0, i32 1
  %341 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR6RValue10as_DstMetaEv(ptr noundef nonnull align 8 dereferenceable(112) %340)
          to label %342 unwind label %348

342:                                              ; preds = %338
  store ptr %341, ptr %36, align 8, !tbaa !5
  %343 = load ptr, ptr %36, align 8, !tbaa !5
  %344 = load ptr, ptr %3, align 8, !tbaa !5
  %345 = load ptr, ptr %36, align 8, !tbaa !5
  %346 = getelementptr inbounds %"struct.MIR::RValue::Data_DstMeta", ptr %345, i32 0, i32 0
  invoke void @_Z35Trans_Enumerate_FillFrom_MIR_LValueRN3MIR9EnumCacheERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %344, ptr noundef nonnull align 8 dereferenceable(32) %346)
          to label %347 unwind label %348

347:                                              ; preds = %342
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #8
  br label %534

348:                                              ; preds = %342, %338
  %349 = landingpad { ptr, i32 }
          cleanup
  %350 = extractvalue { ptr, i32 } %349, 0
  store ptr %350, ptr %8, align 8
  %351 = extractvalue { ptr, i32 } %349, 1
  store i32 %351, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #8
  br label %536

352:                                              ; preds = %236
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #8
  %353 = load ptr, ptr %28, align 8, !tbaa !5
  %354 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %353, i32 0, i32 1
  %355 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR6RValue9as_DstPtrEv(ptr noundef nonnull align 8 dereferenceable(112) %354)
          to label %356 unwind label %362

356:                                              ; preds = %352
  store ptr %355, ptr %37, align 8, !tbaa !5
  %357 = load ptr, ptr %37, align 8, !tbaa !5
  %358 = load ptr, ptr %3, align 8, !tbaa !5
  %359 = load ptr, ptr %37, align 8, !tbaa !5
  %360 = getelementptr inbounds %"struct.MIR::RValue::Data_DstPtr", ptr %359, i32 0, i32 0
  invoke void @_Z35Trans_Enumerate_FillFrom_MIR_LValueRN3MIR9EnumCacheERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %358, ptr noundef nonnull align 8 dereferenceable(32) %360)
          to label %361 unwind label %362

361:                                              ; preds = %356
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  br label %534

362:                                              ; preds = %356, %352
  %363 = landingpad { ptr, i32 }
          cleanup
  %364 = extractvalue { ptr, i32 } %363, 0
  store ptr %364, ptr %8, align 8
  %365 = extractvalue { ptr, i32 } %363, 1
  store i32 %365, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  br label %536

366:                                              ; preds = %236
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #8
  %367 = load ptr, ptr %28, align 8, !tbaa !5
  %368 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %367, i32 0, i32 1
  %369 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZNK3MIR6RValue10as_MakeDstEv(ptr noundef nonnull align 8 dereferenceable(112) %368)
          to label %370 unwind label %380

370:                                              ; preds = %366
  store ptr %369, ptr %38, align 8, !tbaa !5
  %371 = load ptr, ptr %38, align 8, !tbaa !5
  %372 = load ptr, ptr %3, align 8, !tbaa !5
  %373 = load ptr, ptr %38, align 8, !tbaa !5
  %374 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %373, i32 0, i32 0
  invoke void @_Z34Trans_Enumerate_FillFrom_MIR_ParamRN3MIR9EnumCacheERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(48) %372, ptr noundef nonnull align 8 dereferenceable(48) %374)
          to label %375 unwind label %380

375:                                              ; preds = %370
  %376 = load ptr, ptr %3, align 8, !tbaa !5
  %377 = load ptr, ptr %38, align 8, !tbaa !5
  %378 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %377, i32 0, i32 1
  invoke void @_Z34Trans_Enumerate_FillFrom_MIR_ParamRN3MIR9EnumCacheERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(48) %376, ptr noundef nonnull align 8 dereferenceable(48) %378)
          to label %379 unwind label %380

379:                                              ; preds = %375
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  br label %534

380:                                              ; preds = %375, %370, %366
  %381 = landingpad { ptr, i32 }
          cleanup
  %382 = extractvalue { ptr, i32 } %381, 0
  store ptr %382, ptr %8, align 8
  %383 = extractvalue { ptr, i32 } %381, 1
  store i32 %383, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  br label %536

384:                                              ; preds = %236
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #8
  %385 = load ptr, ptr %28, align 8, !tbaa !5
  %386 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %385, i32 0, i32 1
  %387 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR6RValue8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(112) %386)
          to label %388 unwind label %401

388:                                              ; preds = %384
  store ptr %387, ptr %39, align 8, !tbaa !5
  %389 = load ptr, ptr %39, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #8
  %390 = load ptr, ptr %39, align 8, !tbaa !5
  %391 = getelementptr inbounds %"struct.MIR::RValue::Data_Tuple", ptr %390, i32 0, i32 0
  store ptr %391, ptr %40, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #8
  %392 = load ptr, ptr %40, align 8, !tbaa !5
  %393 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %392) #8
  %394 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.589", ptr %41, i32 0, i32 0
  store ptr %393, ptr %394, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #8
  %395 = load ptr, ptr %40, align 8, !tbaa !5
  %396 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %395) #8
  %397 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.589", ptr %42, i32 0, i32 0
  store ptr %396, ptr %397, align 8
  br label %398

398:                                              ; preds = %410, %388
  %399 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %41, ptr noundef nonnull align 8 dereferenceable(8) %42) #8
  br i1 %399, label %405, label %400

400:                                              ; preds = %398
  store i32 24, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #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 %416

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

405:                                              ; preds = %398
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #8
  %406 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %41) #8
  store ptr %406, ptr %43, align 8, !tbaa !5
  %407 = load ptr, ptr %3, align 8, !tbaa !5
  %408 = load ptr, ptr %43, align 8, !tbaa !5
  invoke void @_Z34Trans_Enumerate_FillFrom_MIR_ParamRN3MIR9EnumCacheERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(48) %407, ptr noundef nonnull align 8 dereferenceable(48) %408)
          to label %409 unwind label %412

409:                                              ; preds = %405
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #8
  br label %410

410:                                              ; preds = %409
  %411 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %41) #8
  br label %398

412:                                              ; preds = %405
  %413 = landingpad { ptr, i32 }
          cleanup
  %414 = extractvalue { ptr, i32 } %413, 0
  store ptr %414, ptr %8, align 8
  %415 = extractvalue { ptr, i32 } %413, 1
  store i32 %415, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #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 %417

416:                                              ; preds = %400
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  br label %534

417:                                              ; preds = %412, %401
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  br label %536

418:                                              ; preds = %236
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #8
  %419 = load ptr, ptr %28, align 8, !tbaa !5
  %420 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %419, i32 0, i32 1
  %421 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR6RValue8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(112) %420)
          to label %422 unwind label %435

422:                                              ; preds = %418
  store ptr %421, ptr %44, align 8, !tbaa !5
  %423 = load ptr, ptr %44, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #8
  %424 = load ptr, ptr %44, align 8, !tbaa !5
  %425 = getelementptr inbounds %"struct.MIR::RValue::Data_Array", ptr %424, i32 0, i32 0
  store ptr %425, ptr %45, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #8
  %426 = load ptr, ptr %45, align 8, !tbaa !5
  %427 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %426) #8
  %428 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.589", ptr %46, i32 0, i32 0
  store ptr %427, ptr %428, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #8
  %429 = load ptr, ptr %45, align 8, !tbaa !5
  %430 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %429) #8
  %431 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.589", ptr %47, i32 0, i32 0
  store ptr %430, ptr %431, align 8
  br label %432

432:                                              ; preds = %444, %422
  %433 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %46, ptr noundef nonnull align 8 dereferenceable(8) %47) #8
  br i1 %433, label %439, label %434

434:                                              ; preds = %432
  store i32 26, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #8
  br label %450

435:                                              ; preds = %418
  %436 = landingpad { ptr, i32 }
          cleanup
  %437 = extractvalue { ptr, i32 } %436, 0
  store ptr %437, ptr %8, align 8
  %438 = extractvalue { ptr, i32 } %436, 1
  store i32 %438, ptr %9, align 4
  br label %451

439:                                              ; preds = %432
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #8
  %440 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %46) #8
  store ptr %440, ptr %48, align 8, !tbaa !5
  %441 = load ptr, ptr %3, align 8, !tbaa !5
  %442 = load ptr, ptr %48, align 8, !tbaa !5
  invoke void @_Z34Trans_Enumerate_FillFrom_MIR_ParamRN3MIR9EnumCacheERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(48) %441, ptr noundef nonnull align 8 dereferenceable(48) %442)
          to label %443 unwind label %446

443:                                              ; preds = %439
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #8
  br label %444

444:                                              ; preds = %443
  %445 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %46) #8
  br label %432

446:                                              ; preds = %439
  %447 = landingpad { ptr, i32 }
          cleanup
  %448 = extractvalue { ptr, i32 } %447, 0
  store ptr %448, ptr %8, align 8
  %449 = extractvalue { ptr, i32 } %447, 1
  store i32 %449, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #8
  br label %451

450:                                              ; preds = %434
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  br label %534

451:                                              ; preds = %446, %435
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  br label %536

452:                                              ; preds = %236
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #8
  %453 = load ptr, ptr %28, align 8, !tbaa !5
  %454 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %453, i32 0, i32 1
  %455 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZNK3MIR6RValue15as_UnionVariantEv(ptr noundef nonnull align 8 dereferenceable(112) %454)
          to label %456 unwind label %462

456:                                              ; preds = %452
  store ptr %455, ptr %49, align 8, !tbaa !5
  %457 = load ptr, ptr %49, align 8, !tbaa !5
  %458 = load ptr, ptr %3, align 8, !tbaa !5
  %459 = load ptr, ptr %49, align 8, !tbaa !5
  %460 = getelementptr inbounds %"struct.MIR::RValue::Data_UnionVariant", ptr %459, i32 0, i32 2
  invoke void @_Z34Trans_Enumerate_FillFrom_MIR_ParamRN3MIR9EnumCacheERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(48) %458, ptr noundef nonnull align 8 dereferenceable(48) %460)
          to label %461 unwind label %462

461:                                              ; preds = %456
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #8
  br label %534

462:                                              ; preds = %456, %452
  %463 = landingpad { ptr, i32 }
          cleanup
  %464 = extractvalue { ptr, i32 } %463, 0
  store ptr %464, ptr %8, align 8
  %465 = extractvalue { ptr, i32 } %463, 1
  store i32 %465, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #8
  br label %536

466:                                              ; preds = %236
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #8
  %467 = load ptr, ptr %28, align 8, !tbaa !5
  %468 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %467, i32 0, i32 1
  %469 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNK3MIR6RValue14as_EnumVariantEv(ptr noundef nonnull align 8 dereferenceable(112) %468)
          to label %470 unwind label %483

470:                                              ; preds = %466
  store ptr %469, ptr %50, align 8, !tbaa !5
  %471 = load ptr, ptr %50, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #8
  %472 = load ptr, ptr %50, align 8, !tbaa !5
  %473 = getelementptr inbounds %"struct.MIR::RValue::Data_EnumVariant", ptr %472, i32 0, i32 2
  store ptr %473, ptr %51, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #8
  %474 = load ptr, ptr %51, align 8, !tbaa !5
  %475 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %474) #8
  %476 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.589", ptr %52, i32 0, i32 0
  store ptr %475, ptr %476, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #8
  %477 = load ptr, ptr %51, align 8, !tbaa !5
  %478 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %477) #8
  %479 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.589", ptr %53, i32 0, i32 0
  store ptr %478, ptr %479, align 8
  br label %480

480:                                              ; preds = %492, %470
  %481 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull align 8 dereferenceable(8) %53) #8
  br i1 %481, label %487, label %482

482:                                              ; preds = %480
  store i32 28, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #8
  br label %498

483:                                              ; preds = %466
  %484 = landingpad { ptr, i32 }
          cleanup
  %485 = extractvalue { ptr, i32 } %484, 0
  store ptr %485, ptr %8, align 8
  %486 = extractvalue { ptr, i32 } %484, 1
  store i32 %486, ptr %9, align 4
  br label %499

487:                                              ; preds = %480
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #8
  %488 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %52) #8
  store ptr %488, ptr %54, align 8, !tbaa !5
  %489 = load ptr, ptr %3, align 8, !tbaa !5
  %490 = load ptr, ptr %54, align 8, !tbaa !5
  invoke void @_Z34Trans_Enumerate_FillFrom_MIR_ParamRN3MIR9EnumCacheERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(48) %489, ptr noundef nonnull align 8 dereferenceable(48) %490)
          to label %491 unwind label %494

491:                                              ; preds = %487
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #8
  br label %492

492:                                              ; preds = %491
  %493 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %52) #8
  br label %480

494:                                              ; preds = %487
  %495 = landingpad { ptr, i32 }
          cleanup
  %496 = extractvalue { ptr, i32 } %495, 0
  store ptr %496, ptr %8, align 8
  %497 = extractvalue { ptr, i32 } %495, 1
  store i32 %497, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #8
  br label %499

498:                                              ; preds = %482
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #8
  br label %534

499:                                              ; preds = %494, %483
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #8
  br label %536

500:                                              ; preds = %236
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #8
  %501 = load ptr, ptr %28, align 8, !tbaa !5
  %502 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %501, i32 0, i32 1
  %503 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZNK3MIR6RValue9as_StructEv(ptr noundef nonnull align 8 dereferenceable(112) %502)
          to label %504 unwind label %517

504:                                              ; preds = %500
  store ptr %503, ptr %55, align 8, !tbaa !5
  %505 = load ptr, ptr %55, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #8
  %506 = load ptr, ptr %55, align 8, !tbaa !5
  %507 = getelementptr inbounds %"struct.MIR::RValue::Data_Struct", ptr %506, i32 0, i32 1
  store ptr %507, ptr %56, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #8
  %508 = load ptr, ptr %56, align 8, !tbaa !5
  %509 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %508) #8
  %510 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.589", ptr %57, i32 0, i32 0
  store ptr %509, ptr %510, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #8
  %511 = load ptr, ptr %56, align 8, !tbaa !5
  %512 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %511) #8
  %513 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.589", ptr %58, i32 0, i32 0
  store ptr %512, ptr %513, align 8
  br label %514

514:                                              ; preds = %526, %504
  %515 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %57, ptr noundef nonnull align 8 dereferenceable(8) %58) #8
  br i1 %515, label %521, label %516

516:                                              ; preds = %514
  store i32 30, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, 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
  br label %532

517:                                              ; preds = %500
  %518 = landingpad { ptr, i32 }
          cleanup
  %519 = extractvalue { ptr, i32 } %518, 0
  store ptr %519, ptr %8, align 8
  %520 = extractvalue { ptr, i32 } %518, 1
  store i32 %520, ptr %9, align 4
  br label %533

521:                                              ; preds = %514
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #8
  %522 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %57) #8
  store ptr %522, ptr %59, align 8, !tbaa !5
  %523 = load ptr, ptr %3, align 8, !tbaa !5
  %524 = load ptr, ptr %59, align 8, !tbaa !5
  invoke void @_Z34Trans_Enumerate_FillFrom_MIR_ParamRN3MIR9EnumCacheERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(48) %523, ptr noundef nonnull align 8 dereferenceable(48) %524)
          to label %525 unwind label %528

525:                                              ; preds = %521
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #8
  br label %526

526:                                              ; preds = %525
  %527 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %57) #8
  br label %514

528:                                              ; preds = %521
  %529 = landingpad { ptr, i32 }
          cleanup
  %530 = extractvalue { ptr, i32 } %529, 0
  store ptr %530, ptr %8, align 8
  %531 = extractvalue { ptr, i32 } %529, 1
  store i32 %531, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #8
  call void @llvm.lifetime.end.p0(i64 8, 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
  br label %533

532:                                              ; preds = %516
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #8
  br label %534

533:                                              ; preds = %528, %517
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #8
  br label %536

534:                                              ; preds = %532, %498, %461, %450, %416, %379, %361, %347, %333, %319, %301, %287, %273, %259, %246, %236
  br label %535

535:                                              ; preds = %534
  store i8 0, ptr %27, align 1, !tbaa !9
  br label %193, !llvm.loop !15

536:                                              ; preds = %533, %499, %462, %451, %417, %380, %362, %348, %334, %320, %302, %288, %274, %260, %247, %198
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #8
  br label %883

537:                                              ; preds = %197
  br label %538

538:                                              ; preds = %537
  store i8 0, ptr %27, align 1, !tbaa !9
  br label %185, !llvm.loop !17

539:                                              ; preds = %188
  br label %881

540:                                              ; preds = %178
  call void @llvm.lifetime.start.p0(i64 1, ptr %60) #8
  store i8 1, ptr %60, align 1, !tbaa !9
  br label %541

541:                                              ; preds = %698, %540
  %542 = load i8, ptr %60, align 1, !tbaa !9, !range !11, !noundef !12
  %543 = trunc i8 %542 to i1
  br i1 %543, label %545, label %544

544:                                              ; preds = %541
  store i32 32, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #8
  br label %699

545:                                              ; preds = %541
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #8
  %546 = load ptr, ptr %26, align 8, !tbaa !5
  %547 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZNK3MIR9Statement7as_Asm2Ev(ptr noundef nonnull align 8 dereferenceable(152) %546)
          to label %548 unwind label %554

548:                                              ; preds = %545
  store ptr %547, ptr %61, align 8, !tbaa !5
  br label %549

549:                                              ; preds = %695, %548
  %550 = load ptr, ptr %61, align 8, !tbaa !5
  %551 = load i8, ptr %60, align 1, !tbaa !9, !range !11, !noundef !12
  %552 = trunc i8 %551 to i1
  br i1 %552, label %558, label %553

553:                                              ; preds = %549
  store i32 35, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #8
  br label %697

554:                                              ; preds = %545
  %555 = landingpad { ptr, i32 }
          cleanup
  %556 = extractvalue { ptr, i32 } %555, 0
  store ptr %556, ptr %8, align 8
  %557 = extractvalue { ptr, i32 } %555, 1
  store i32 %557, ptr %9, align 4
  br label %696

558:                                              ; preds = %549
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #8
  %559 = load ptr, ptr %61, align 8, !tbaa !5
  %560 = getelementptr inbounds %"struct.MIR::Statement::Data_Asm2", ptr %559, i32 0, i32 2
  store ptr %560, ptr %62, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #8
  %561 = load ptr, ptr %62, align 8, !tbaa !5
  %562 = call ptr @_ZNKSt6vectorIN3MIR8AsmParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %561) #8
  %563 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.590", ptr %63, i32 0, i32 0
  store ptr %562, ptr %563, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #8
  %564 = load ptr, ptr %62, align 8, !tbaa !5
  %565 = call ptr @_ZNKSt6vectorIN3MIR8AsmParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %564) #8
  %566 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.590", ptr %64, i32 0, i32 0
  store ptr %565, ptr %566, align 8
  br label %567

567:                                              ; preds = %692, %558
  %568 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR8AsmParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef nonnull align 8 dereferenceable(8) %64) #8
  br i1 %568, label %570, label %569

569:                                              ; preds = %567
  store i32 38, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #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 %694

570:                                              ; preds = %567
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #8
  %571 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR8AsmParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %63) #8
  store ptr %571, ptr %65, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %66) #8
  store i8 1, ptr %66, align 1, !tbaa !9
  br label %572

572:                                              ; preds = %690, %570
  %573 = load i8, ptr %66, align 1, !tbaa !9, !range !11, !noundef !12
  %574 = trunc i8 %573 to i1
  br i1 %574, label %576, label %575

575:                                              ; preds = %572
  store i32 40, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #8
  br label %691

576:                                              ; preds = %572
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #8
  %577 = load ptr, ptr %65, align 8, !tbaa !5
  store ptr %577, ptr %67, align 8, !tbaa !5
  br label %578

578:                                              ; preds = %687, %576
  %579 = load i8, ptr %66, align 1, !tbaa !9, !range !11, !noundef !12
  %580 = trunc i8 %579 to i1
  br i1 %580, label %582, label %581

581:                                              ; preds = %578
  store i32 43, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #8
  br label %689

582:                                              ; preds = %578
  %583 = load ptr, ptr %67, align 8, !tbaa !5
  %584 = invoke noundef i32 @_ZNK3MIR8AsmParam3tagEv(ptr noundef nonnull align 8 dereferenceable(96) %583)
          to label %585 unwind label %586

585:                                              ; preds = %582
  switch i32 %584, label %686 [
    i32 0, label %590
    i32 1, label %591
    i32 2, label %617
    i32 3, label %643
  ]

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

590:                                              ; preds = %585
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str.7, i32 noundef 1823, ptr noundef @__PRETTY_FUNCTION__._Z28Trans_Enumerate_FillFrom_MIRRN3MIR9EnumCacheERKNS_8FunctionE) #9
  unreachable

591:                                              ; preds = %585
  call void @llvm.lifetime.start.p0(i64 1, ptr %68) #8
  store i8 1, ptr %68, align 1, !tbaa !9
  br label %592

592:                                              ; preds = %615, %591
  %593 = load i8, ptr %68, align 1, !tbaa !9, !range !11, !noundef !12
  %594 = trunc i8 %593 to i1
  br i1 %594, label %596, label %595

595:                                              ; preds = %592
  store i32 47, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #8
  br label %616

596:                                              ; preds = %592
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #8
  %597 = load ptr, ptr %67, align 8, !tbaa !5
  %598 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR8AsmParam8as_ConstEv(ptr noundef nonnull align 8 dereferenceable(96) %597)
          to label %599 unwind label %605

599:                                              ; preds = %596
  store ptr %598, ptr %69, align 8, !tbaa !5
  br label %600

600:                                              ; preds = %613, %599
  %601 = load ptr, ptr %69, align 8, !tbaa !5
  %602 = load i8, ptr %68, align 1, !tbaa !9, !range !11, !noundef !12
  %603 = trunc i8 %602 to i1
  br i1 %603, label %609, label %604

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

605:                                              ; preds = %609, %596
  %606 = landingpad { ptr, i32 }
          cleanup
  %607 = extractvalue { ptr, i32 } %606, 0
  store ptr %607, ptr %8, align 8
  %608 = extractvalue { ptr, i32 } %606, 1
  store i32 %608, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #8
  br label %688

609:                                              ; preds = %600
  %610 = load ptr, ptr %3, align 8, !tbaa !5
  %611 = load ptr, ptr %69, align 8, !tbaa !5
  invoke void @_Z37Trans_Enumerate_FillFrom_MIR_ConstantRN3MIR9EnumCacheERKNS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %610, ptr noundef nonnull align 8 dereferenceable(40) %611)
          to label %612 unwind label %605

612:                                              ; preds = %609
  br label %613

613:                                              ; preds = %612
  store i8 0, ptr %68, align 1, !tbaa !9
  br label %600, !llvm.loop !18

614:                                              ; preds = %604
  br label %615

615:                                              ; preds = %614
  store i8 0, ptr %68, align 1, !tbaa !9
  br label %592, !llvm.loop !19

616:                                              ; preds = %595
  br label %686

617:                                              ; preds = %585
  call void @llvm.lifetime.start.p0(i64 1, ptr %70) #8
  store i8 1, ptr %70, align 1, !tbaa !9
  br label %618

618:                                              ; preds = %641, %617
  %619 = load i8, ptr %70, align 1, !tbaa !9, !range !11, !noundef !12
  %620 = trunc i8 %619 to i1
  br i1 %620, label %622, label %621

621:                                              ; preds = %618
  store i32 53, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #8
  br label %642

622:                                              ; preds = %618
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #8
  %623 = load ptr, ptr %67, align 8, !tbaa !5
  %624 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZNK3MIR8AsmParam6as_SymEv(ptr noundef nonnull align 8 dereferenceable(96) %623)
          to label %625 unwind label %631

625:                                              ; preds = %622
  store ptr %624, ptr %71, align 8, !tbaa !5
  br label %626

626:                                              ; preds = %639, %625
  %627 = load ptr, ptr %71, align 8, !tbaa !5
  %628 = load i8, ptr %70, align 1, !tbaa !9, !range !11, !noundef !12
  %629 = trunc i8 %628 to i1
  br i1 %629, label %635, label %630

630:                                              ; preds = %626
  store i32 56, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #8
  br label %640

631:                                              ; preds = %635, %622
  %632 = landingpad { ptr, i32 }
          cleanup
  %633 = extractvalue { ptr, i32 } %632, 0
  store ptr %633, ptr %8, align 8
  %634 = extractvalue { ptr, i32 } %632, 1
  store i32 %634, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #8
  br label %688

635:                                              ; preds = %626
  %636 = load ptr, ptr %3, align 8, !tbaa !5
  %637 = load ptr, ptr %71, align 8, !tbaa !5
  invoke void @_ZN3MIR9EnumCache11insert_pathERKN3HIR4PathE(ptr noundef nonnull align 8 dereferenceable(48) %636, ptr noundef nonnull align 8 dereferenceable(88) %637)
          to label %638 unwind label %631

638:                                              ; preds = %635
  br label %639

639:                                              ; preds = %638
  store i8 0, ptr %70, align 1, !tbaa !9
  br label %626, !llvm.loop !20

640:                                              ; preds = %630
  br label %641

641:                                              ; preds = %640
  store i8 0, ptr %70, align 1, !tbaa !9
  br label %618, !llvm.loop !21

642:                                              ; preds = %621
  br label %686

643:                                              ; preds = %585
  call void @llvm.lifetime.start.p0(i64 1, ptr %72) #8
  store i8 1, ptr %72, align 1, !tbaa !9
  br label %644

644:                                              ; preds = %684, %643
  %645 = load i8, ptr %72, align 1, !tbaa !9, !range !11, !noundef !12
  %646 = trunc i8 %645 to i1
  br i1 %646, label %648, label %647

647:                                              ; preds = %644
  store i32 59, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %72) #8
  br label %685

648:                                              ; preds = %644
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #8
  %649 = load ptr, ptr %67, align 8, !tbaa !5
  %650 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNK3MIR8AsmParam6as_RegEv(ptr noundef nonnull align 8 dereferenceable(96) %649)
          to label %651 unwind label %657

651:                                              ; preds = %648
  store ptr %650, ptr %73, align 8, !tbaa !5
  br label %652

652:                                              ; preds = %682, %651
  %653 = load ptr, ptr %73, align 8, !tbaa !5
  %654 = load i8, ptr %72, align 1, !tbaa !9, !range !11, !noundef !12
  %655 = trunc i8 %654 to i1
  br i1 %655, label %661, label %656

656:                                              ; preds = %652
  store i32 62, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #8
  br label %683

657:                                              ; preds = %675, %665, %648
  %658 = landingpad { ptr, i32 }
          cleanup
  %659 = extractvalue { ptr, i32 } %658, 0
  store ptr %659, ptr %8, align 8
  %660 = extractvalue { ptr, i32 } %658, 1
  store i32 %660, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %72) #8
  br label %688

661:                                              ; preds = %652
  %662 = load ptr, ptr %73, align 8, !tbaa !5
  %663 = getelementptr inbounds %"struct.MIR::AsmParam::Data_Reg", ptr %662, i32 0, i32 2
  %664 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN3MIR5ParamESt14default_deleteIS1_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %663) #8
  br i1 %664, label %665, label %671

665:                                              ; preds = %661
  %666 = load ptr, ptr %3, align 8, !tbaa !5
  %667 = load ptr, ptr %73, align 8, !tbaa !5
  %668 = getelementptr inbounds %"struct.MIR::AsmParam::Data_Reg", ptr %667, i32 0, i32 2
  %669 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt10unique_ptrIN3MIR5ParamESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %668) #8
  invoke void @_Z34Trans_Enumerate_FillFrom_MIR_ParamRN3MIR9EnumCacheERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(48) %666, ptr noundef nonnull align 8 dereferenceable(48) %669)
          to label %670 unwind label %657

670:                                              ; preds = %665
  br label %671

671:                                              ; preds = %670, %661
  %672 = load ptr, ptr %73, align 8, !tbaa !5
  %673 = getelementptr inbounds %"struct.MIR::AsmParam::Data_Reg", ptr %672, i32 0, i32 3
  %674 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN3MIR6LValueESt14default_deleteIS1_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %673) #8
  br i1 %674, label %675, label %681

675:                                              ; preds = %671
  %676 = load ptr, ptr %3, align 8, !tbaa !5
  %677 = load ptr, ptr %73, align 8, !tbaa !5
  %678 = getelementptr inbounds %"struct.MIR::AsmParam::Data_Reg", ptr %677, i32 0, i32 3
  %679 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt10unique_ptrIN3MIR6LValueESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %678) #8
  invoke void @_Z35Trans_Enumerate_FillFrom_MIR_LValueRN3MIR9EnumCacheERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %676, ptr noundef nonnull align 8 dereferenceable(32) %679)
          to label %680 unwind label %657

680:                                              ; preds = %675
  br label %681

681:                                              ; preds = %680, %671
  br label %682

682:                                              ; preds = %681
  store i8 0, ptr %72, align 1, !tbaa !9
  br label %652, !llvm.loop !22

683:                                              ; preds = %656
  br label %684

684:                                              ; preds = %683
  store i8 0, ptr %72, align 1, !tbaa !9
  br label %644, !llvm.loop !23

685:                                              ; preds = %647
  br label %686

686:                                              ; preds = %685, %642, %616, %585
  br label %687

687:                                              ; preds = %686
  store i8 0, ptr %66, align 1, !tbaa !9
  br label %578, !llvm.loop !24

688:                                              ; preds = %657, %631, %605, %586
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #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 %696

689:                                              ; preds = %581
  br label %690

690:                                              ; preds = %689
  store i8 0, ptr %66, align 1, !tbaa !9
  br label %572, !llvm.loop !25

691:                                              ; preds = %575
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #8
  br label %692

692:                                              ; preds = %691
  %693 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR8AsmParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %63) #8
  br label %567

694:                                              ; preds = %569
  br label %695

695:                                              ; preds = %694
  store i8 0, ptr %60, align 1, !tbaa !9
  br label %549, !llvm.loop !26

696:                                              ; preds = %688, %554
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #8
  br label %883

697:                                              ; preds = %553
  br label %698

698:                                              ; preds = %697
  store i8 0, ptr %60, align 1, !tbaa !9
  br label %541, !llvm.loop !27

699:                                              ; preds = %544
  br label %881

700:                                              ; preds = %178
  call void @llvm.lifetime.start.p0(i64 1, ptr %74) #8
  store i8 1, ptr %74, align 1, !tbaa !9
  br label %701

701:                                              ; preds = %786, %700
  %702 = load i8, ptr %74, align 1, !tbaa !9, !range !11, !noundef !12
  %703 = trunc i8 %702 to i1
  br i1 %703, label %705, label %704

704:                                              ; preds = %701
  store i32 65, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #8
  br label %787

705:                                              ; preds = %701
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #8
  %706 = load ptr, ptr %26, align 8, !tbaa !5
  %707 = invoke noundef nonnull align 8 dereferenceable(128) ptr @_ZNK3MIR9Statement6as_AsmEv(ptr noundef nonnull align 8 dereferenceable(152) %706)
          to label %708 unwind label %714

708:                                              ; preds = %705
  store ptr %707, ptr %75, align 8, !tbaa !5
  br label %709

709:                                              ; preds = %783, %708
  %710 = load ptr, ptr %75, align 8, !tbaa !5
  %711 = load i8, ptr %74, align 1, !tbaa !9, !range !11, !noundef !12
  %712 = trunc i8 %711 to i1
  br i1 %712, label %718, label %713

713:                                              ; preds = %709
  store i32 68, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #8
  br label %785

714:                                              ; preds = %729, %727, %725, %722, %719, %705
  %715 = landingpad { ptr, i32 }
          cleanup
  %716 = extractvalue { ptr, i32 } %715, 0
  store ptr %716, ptr %8, align 8
  %717 = extractvalue { ptr, i32 } %715, 1
  store i32 %717, ptr %9, align 4
  br label %784

718:                                              ; preds = %709
  br label %719

719:                                              ; preds = %718
  %720 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %721 unwind label %714

721:                                              ; preds = %719
  br i1 %720, label %722, label %732

722:                                              ; preds = %721
  %723 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !13
  %724 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %723, ptr noundef @__func__._Z28Trans_Enumerate_FillFrom_MIRRN3MIR9EnumCacheERKNS_8FunctionE)
          to label %725 unwind label %714

725:                                              ; preds = %722
  %726 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %724, ptr noundef @.str.16)
          to label %727 unwind label %714

727:                                              ; preds = %725
  %728 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %726, ptr noundef @_ZSt3decRSt8ios_base)
          to label %729 unwind label %714

729:                                              ; preds = %727
  %730 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %728, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %731 unwind label %714

731:                                              ; preds = %729
  br label %732

732:                                              ; preds = %731, %721
  br label %733

733:                                              ; preds = %732
  br label %734

734:                                              ; preds = %733
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #8
  %735 = load ptr, ptr %75, align 8, !tbaa !5
  %736 = getelementptr inbounds %"struct.MIR::Statement::Data_Asm", ptr %735, i32 0, i32 2
  store ptr %736, ptr %76, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #8
  %737 = load ptr, ptr %76, align 8, !tbaa !5
  %738 = call ptr @_ZNKSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESaIS9_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %737) #8
  %739 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.607", ptr %77, i32 0, i32 0
  store ptr %738, ptr %739, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #8
  %740 = load ptr, ptr %76, align 8, !tbaa !5
  %741 = call ptr @_ZNKSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESaIS9_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %740) #8
  %742 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.607", ptr %78, i32 0, i32 0
  store ptr %741, ptr %742, align 8
  br label %743

743:                                              ; preds = %752, %734
  %744 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEEbRKNS_17__normal_iteratorIT_T0_EESL_(ptr noundef nonnull align 8 dereferenceable(8) %77, ptr noundef nonnull align 8 dereferenceable(8) %78) #8
  br i1 %744, label %746, label %745

745:                                              ; preds = %743
  store i32 73, 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 %758

746:                                              ; preds = %743
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #8
  %747 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %77) #8
  store ptr %747, ptr %79, align 8, !tbaa !5
  %748 = load ptr, ptr %3, align 8, !tbaa !5
  %749 = load ptr, ptr %79, align 8, !tbaa !5
  %750 = getelementptr inbounds %"struct.std::pair.608", ptr %749, i32 0, i32 1
  invoke void @_Z35Trans_Enumerate_FillFrom_MIR_LValueRN3MIR9EnumCacheERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %748, ptr noundef nonnull align 8 dereferenceable(32) %750)
          to label %751 unwind label %754

751:                                              ; preds = %746
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #8
  br label %752

752:                                              ; preds = %751
  %753 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %77) #8
  br label %743

754:                                              ; preds = %746
  %755 = landingpad { ptr, i32 }
          cleanup
  %756 = extractvalue { ptr, i32 } %755, 0
  store ptr %756, ptr %8, align 8
  %757 = extractvalue { ptr, i32 } %755, 1
  store i32 %757, ptr %9, 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 %784

758:                                              ; preds = %745
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #8
  %759 = load ptr, ptr %75, align 8, !tbaa !5
  %760 = getelementptr inbounds %"struct.MIR::Statement::Data_Asm", ptr %759, i32 0, i32 1
  store ptr %760, ptr %80, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #8
  %761 = load ptr, ptr %80, align 8, !tbaa !5
  %762 = call ptr @_ZNKSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESaIS9_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %761) #8
  %763 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.607", ptr %81, i32 0, i32 0
  store ptr %762, ptr %763, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #8
  %764 = load ptr, ptr %80, align 8, !tbaa !5
  %765 = call ptr @_ZNKSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESaIS9_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %764) #8
  %766 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.607", ptr %82, i32 0, i32 0
  store ptr %765, ptr %766, align 8
  br label %767

767:                                              ; preds = %776, %758
  %768 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEEbRKNS_17__normal_iteratorIT_T0_EESL_(ptr noundef nonnull align 8 dereferenceable(8) %81, ptr noundef nonnull align 8 dereferenceable(8) %82) #8
  br i1 %768, label %770, label %769

769:                                              ; preds = %767
  store i32 75, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #8
  br label %782

770:                                              ; preds = %767
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #8
  %771 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %81) #8
  store ptr %771, ptr %83, align 8, !tbaa !5
  %772 = load ptr, ptr %3, align 8, !tbaa !5
  %773 = load ptr, ptr %83, align 8, !tbaa !5
  %774 = getelementptr inbounds %"struct.std::pair.608", ptr %773, i32 0, i32 1
  invoke void @_Z35Trans_Enumerate_FillFrom_MIR_LValueRN3MIR9EnumCacheERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %772, ptr noundef nonnull align 8 dereferenceable(32) %774)
          to label %775 unwind label %778

775:                                              ; preds = %770
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #8
  br label %776

776:                                              ; preds = %775
  %777 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %81) #8
  br label %767

778:                                              ; preds = %770
  %779 = landingpad { ptr, i32 }
          cleanup
  %780 = extractvalue { ptr, i32 } %779, 0
  store ptr %780, ptr %8, align 8
  %781 = extractvalue { ptr, i32 } %779, 1
  store i32 %781, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #8
  br label %784

782:                                              ; preds = %769
  br label %783

783:                                              ; preds = %782
  store i8 0, ptr %74, align 1, !tbaa !9
  br label %709, !llvm.loop !28

784:                                              ; preds = %778, %754, %714
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #8
  br label %883

785:                                              ; preds = %713
  br label %786

786:                                              ; preds = %785
  store i8 0, ptr %74, align 1, !tbaa !9
  br label %701, !llvm.loop !29

787:                                              ; preds = %704
  br label %881

788:                                              ; preds = %178
  call void @llvm.lifetime.start.p0(i64 1, ptr %84) #8
  store i8 1, ptr %84, align 1, !tbaa !9
  br label %789

789:                                              ; preds = %809, %788
  %790 = load i8, ptr %84, align 1, !tbaa !9, !range !11, !noundef !12
  %791 = trunc i8 %790 to i1
  br i1 %791, label %793, label %792

792:                                              ; preds = %789
  store i32 77, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %84) #8
  br label %810

793:                                              ; preds = %789
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #8
  %794 = load ptr, ptr %26, align 8, !tbaa !5
  %795 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZNK3MIR9Statement14as_SetDropFlagEv(ptr noundef nonnull align 8 dereferenceable(152) %794)
          to label %796 unwind label %802

796:                                              ; preds = %793
  store ptr %795, ptr %85, align 8, !tbaa !5
  br label %797

797:                                              ; preds = %807, %796
  %798 = load ptr, ptr %85, align 8, !tbaa !5
  %799 = load i8, ptr %84, align 1, !tbaa !9, !range !11, !noundef !12
  %800 = trunc i8 %799 to i1
  br i1 %800, label %806, label %801

801:                                              ; preds = %797
  store i32 80, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #8
  br label %808

802:                                              ; preds = %793
  %803 = landingpad { ptr, i32 }
          cleanup
  %804 = extractvalue { ptr, i32 } %803, 0
  store ptr %804, ptr %8, align 8
  %805 = extractvalue { ptr, i32 } %803, 1
  store i32 %805, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %84) #8
  br label %883

806:                                              ; preds = %797
  br label %807

807:                                              ; preds = %806
  store i8 0, ptr %84, align 1, !tbaa !9
  br label %797, !llvm.loop !30

808:                                              ; preds = %801
  br label %809

809:                                              ; preds = %808
  store i8 0, ptr %84, align 1, !tbaa !9
  br label %789, !llvm.loop !31

810:                                              ; preds = %792
  br label %881

811:                                              ; preds = %178
  call void @llvm.lifetime.start.p0(i64 1, ptr %86) #8
  store i8 1, ptr %86, align 1, !tbaa !9
  br label %812

812:                                              ; preds = %832, %811
  %813 = load i8, ptr %86, align 1, !tbaa !9, !range !11, !noundef !12
  %814 = trunc i8 %813 to i1
  br i1 %814, label %816, label %815

815:                                              ; preds = %812
  store i32 83, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %86) #8
  br label %833

816:                                              ; preds = %812
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #8
  %817 = load ptr, ptr %26, align 8, !tbaa !5
  %818 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR9Statement11as_ScopeEndEv(ptr noundef nonnull align 8 dereferenceable(152) %817)
          to label %819 unwind label %825

819:                                              ; preds = %816
  store ptr %818, ptr %87, align 8, !tbaa !5
  br label %820

820:                                              ; preds = %830, %819
  %821 = load ptr, ptr %87, align 8, !tbaa !5
  %822 = load i8, ptr %86, align 1, !tbaa !9, !range !11, !noundef !12
  %823 = trunc i8 %822 to i1
  br i1 %823, label %829, label %824

824:                                              ; preds = %820
  store i32 86, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #8
  br label %831

825:                                              ; preds = %816
  %826 = landingpad { ptr, i32 }
          cleanup
  %827 = extractvalue { ptr, i32 } %826, 0
  store ptr %827, ptr %8, align 8
  %828 = extractvalue { ptr, i32 } %826, 1
  store i32 %828, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %86) #8
  br label %883

829:                                              ; preds = %820
  br label %830

830:                                              ; preds = %829
  store i8 0, ptr %86, align 1, !tbaa !9
  br label %820, !llvm.loop !32

831:                                              ; preds = %824
  br label %832

832:                                              ; preds = %831
  store i8 0, ptr %86, align 1, !tbaa !9
  br label %812, !llvm.loop !33

833:                                              ; preds = %815
  br label %881

834:                                              ; preds = %178
  call void @llvm.lifetime.start.p0(i64 1, ptr %88) #8
  store i8 1, ptr %88, align 1, !tbaa !9
  br label %835

835:                                              ; preds = %879, %834
  %836 = load i8, ptr %88, align 1, !tbaa !9, !range !11, !noundef !12
  %837 = trunc i8 %836 to i1
  br i1 %837, label %839, label %838

838:                                              ; preds = %835
  store i32 89, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %88) #8
  br label %880

839:                                              ; preds = %835
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #8
  %840 = load ptr, ptr %26, align 8, !tbaa !5
  %841 = invoke noundef nonnull align 8 dereferenceable(44) ptr @_ZNK3MIR9Statement7as_DropEv(ptr noundef nonnull align 8 dereferenceable(152) %840)
          to label %842 unwind label %848

842:                                              ; preds = %839
  store ptr %841, ptr %89, align 8, !tbaa !5
  br label %843

843:                                              ; preds = %877, %842
  %844 = load ptr, ptr %89, align 8, !tbaa !5
  %845 = load i8, ptr %88, align 1, !tbaa !9, !range !11, !noundef !12
  %846 = trunc i8 %845 to i1
  br i1 %846, label %852, label %847

847:                                              ; preds = %843
  store i32 92, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #8
  br label %878

848:                                              ; preds = %872, %867, %865, %861, %859, %856, %853, %839
  %849 = landingpad { ptr, i32 }
          cleanup
  %850 = extractvalue { ptr, i32 } %849, 0
  store ptr %850, ptr %8, align 8
  %851 = extractvalue { ptr, i32 } %849, 1
  store i32 %851, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %88) #8
  br label %883

852:                                              ; preds = %843
  br label %853

853:                                              ; preds = %852
  %854 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %855 unwind label %848

855:                                              ; preds = %853
  br i1 %854, label %856, label %870

856:                                              ; preds = %855
  %857 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !13
  %858 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %857, ptr noundef @__func__._Z28Trans_Enumerate_FillFrom_MIRRN3MIR9EnumCacheERKNS_8FunctionE)
          to label %859 unwind label %848

859:                                              ; preds = %856
  %860 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %858, ptr noundef @.str.17)
          to label %861 unwind label %848

861:                                              ; preds = %859
  %862 = load ptr, ptr %89, align 8, !tbaa !5
  %863 = getelementptr inbounds %"struct.MIR::Statement::Data_Drop", ptr %862, i32 0, i32 2
  %864 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %860, ptr noundef nonnull align 8 dereferenceable(32) %863)
          to label %865 unwind label %848

865:                                              ; preds = %861
  %866 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %864, ptr noundef @_ZSt3decRSt8ios_base)
          to label %867 unwind label %848

867:                                              ; preds = %865
  %868 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %866, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %869 unwind label %848

869:                                              ; preds = %867
  br label %870

870:                                              ; preds = %869, %855
  br label %871

871:                                              ; preds = %870
  br label %872

872:                                              ; preds = %871
  %873 = load ptr, ptr %3, align 8, !tbaa !5
  %874 = load ptr, ptr %89, align 8, !tbaa !5
  %875 = getelementptr inbounds %"struct.MIR::Statement::Data_Drop", ptr %874, i32 0, i32 2
  invoke void @_Z35Trans_Enumerate_FillFrom_MIR_LValueRN3MIR9EnumCacheERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %873, ptr noundef nonnull align 8 dereferenceable(32) %875)
          to label %876 unwind label %848

876:                                              ; preds = %872
  br label %877

877:                                              ; preds = %876
  store i8 0, ptr %88, align 1, !tbaa !9
  br label %843, !llvm.loop !34

878:                                              ; preds = %847
  br label %879

879:                                              ; preds = %878
  store i8 0, ptr %88, align 1, !tbaa !9
  br label %835, !llvm.loop !35

880:                                              ; preds = %838
  br label %881

881:                                              ; preds = %880, %833, %810, %787, %699, %539, %178
  br label %882

882:                                              ; preds = %881
  store i8 0, ptr %25, align 1, !tbaa !9
  br label %171, !llvm.loop !36

883:                                              ; preds = %848, %825, %802, %784, %696, %536, %179
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 1, 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
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #8
  br label %1107

884:                                              ; preds = %174
  br label %885

885:                                              ; preds = %884
  store i8 0, ptr %25, align 1, !tbaa !9
  br label %165, !llvm.loop !37

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

887:                                              ; preds = %886
  %888 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR9StatementESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #8
  br label %160

889:                                              ; preds = %162
  br label %890

890:                                              ; preds = %889
  %891 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %892 unwind label %907

892:                                              ; preds = %890
  br i1 %891, label %893, label %911

893:                                              ; preds = %892
  %894 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !13
  %895 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %894, ptr noundef @__func__._Z28Trans_Enumerate_FillFrom_MIRRN3MIR9EnumCacheERKNS_8FunctionE)
          to label %896 unwind label %907

896:                                              ; preds = %893
  %897 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %895, ptr noundef @.str.18)
          to label %898 unwind label %907

898:                                              ; preds = %896
  %899 = load ptr, ptr %20, align 8, !tbaa !5
  %900 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %899, i32 0, i32 1
  %901 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_10TerminatorE(ptr noundef nonnull align 8 dereferenceable(8) %897, ptr noundef nonnull align 8 dereferenceable(168) %900)
          to label %902 unwind label %907

902:                                              ; preds = %898
  %903 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %901, ptr noundef @_ZSt3decRSt8ios_base)
          to label %904 unwind label %907

904:                                              ; preds = %902
  %905 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %903, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %906 unwind label %907

906:                                              ; preds = %904
  br label %911

907:                                              ; preds = %913, %904, %902, %898, %896, %893, %890
  %908 = landingpad { ptr, i32 }
          cleanup
  %909 = extractvalue { ptr, i32 } %908, 0
  store ptr %909, ptr %8, align 8
  %910 = extractvalue { ptr, i32 } %908, 1
  store i32 %910, ptr %9, align 4
  br label %1107

911:                                              ; preds = %906, %892
  br label %912

912:                                              ; preds = %911
  br label %913

913:                                              ; preds = %912
  %914 = load ptr, ptr %20, align 8, !tbaa !5
  %915 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %914, i32 0, i32 1
  %916 = invoke noundef i32 @_ZNK3MIR10Terminator3tagEv(ptr noundef nonnull align 8 dereferenceable(168) %915)
          to label %917 unwind label %907

917:                                              ; preds = %913
  switch i32 %916, label %1104 [
    i32 0, label %918
    i32 1, label %919
    i32 2, label %929
    i32 3, label %939
    i32 4, label %949
    i32 5, label %959
    i32 6, label %969
    i32 7, label %983
    i32 8, label %997
    i32 9, label %1011
  ]

918:                                              ; preds = %917
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str.7, i32 noundef 1888, ptr noundef @__PRETTY_FUNCTION__._Z28Trans_Enumerate_FillFrom_MIRRN3MIR9EnumCacheERKNS_8FunctionE) #9
  unreachable

919:                                              ; preds = %917
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #8
  %920 = load ptr, ptr %20, align 8, !tbaa !5
  %921 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %920, i32 0, i32 1
  %922 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator13as_IncompleteEv(ptr noundef nonnull align 8 dereferenceable(168) %921)
          to label %923 unwind label %925

923:                                              ; preds = %919
  store ptr %922, ptr %90, align 8, !tbaa !5
  %924 = load ptr, ptr %90, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #8
  br label %1104

925:                                              ; preds = %919
  %926 = landingpad { ptr, i32 }
          cleanup
  %927 = extractvalue { ptr, i32 } %926, 0
  store ptr %927, ptr %8, align 8
  %928 = extractvalue { ptr, i32 } %926, 1
  store i32 %928, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #8
  br label %1107

929:                                              ; preds = %917
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #8
  %930 = load ptr, ptr %20, align 8, !tbaa !5
  %931 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %930, i32 0, i32 1
  %932 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator9as_ReturnEv(ptr noundef nonnull align 8 dereferenceable(168) %931)
          to label %933 unwind label %935

933:                                              ; preds = %929
  store ptr %932, ptr %91, align 8, !tbaa !5
  %934 = load ptr, ptr %91, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #8
  br label %1104

935:                                              ; preds = %929
  %936 = landingpad { ptr, i32 }
          cleanup
  %937 = extractvalue { ptr, i32 } %936, 0
  store ptr %937, ptr %8, align 8
  %938 = extractvalue { ptr, i32 } %936, 1
  store i32 %938, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #8
  br label %1107

939:                                              ; preds = %917
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #8
  %940 = load ptr, ptr %20, align 8, !tbaa !5
  %941 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %940, i32 0, i32 1
  %942 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator10as_DivergeEv(ptr noundef nonnull align 8 dereferenceable(168) %941)
          to label %943 unwind label %945

943:                                              ; preds = %939
  store ptr %942, ptr %92, align 8, !tbaa !5
  %944 = load ptr, ptr %92, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #8
  br label %1104

945:                                              ; preds = %939
  %946 = landingpad { ptr, i32 }
          cleanup
  %947 = extractvalue { ptr, i32 } %946, 0
  store ptr %947, ptr %8, align 8
  %948 = extractvalue { ptr, i32 } %946, 1
  store i32 %948, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #8
  br label %1107

949:                                              ; preds = %917
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #8
  %950 = load ptr, ptr %20, align 8, !tbaa !5
  %951 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %950, i32 0, i32 1
  %952 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3MIR10Terminator7as_GotoEv(ptr noundef nonnull align 8 dereferenceable(168) %951)
          to label %953 unwind label %955

953:                                              ; preds = %949
  store ptr %952, ptr %93, align 8, !tbaa !5
  %954 = load ptr, ptr %93, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #8
  br label %1104

955:                                              ; preds = %949
  %956 = landingpad { ptr, i32 }
          cleanup
  %957 = extractvalue { ptr, i32 } %956, 0
  store ptr %957, ptr %8, align 8
  %958 = extractvalue { ptr, i32 } %956, 1
  store i32 %958, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #8
  br label %1107

959:                                              ; preds = %917
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #8
  %960 = load ptr, ptr %20, align 8, !tbaa !5
  %961 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %960, i32 0, i32 1
  %962 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3MIR10Terminator8as_PanicEv(ptr noundef nonnull align 8 dereferenceable(168) %961)
          to label %963 unwind label %965

963:                                              ; preds = %959
  store ptr %962, ptr %94, align 8, !tbaa !5
  %964 = load ptr, ptr %94, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #8
  br label %1104

965:                                              ; preds = %959
  %966 = landingpad { ptr, i32 }
          cleanup
  %967 = extractvalue { ptr, i32 } %966, 0
  store ptr %967, ptr %8, align 8
  %968 = extractvalue { ptr, i32 } %966, 1
  store i32 %968, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #8
  br label %1107

969:                                              ; preds = %917
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #8
  %970 = load ptr, ptr %20, align 8, !tbaa !5
  %971 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %970, i32 0, i32 1
  %972 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR10Terminator5as_IfEv(ptr noundef nonnull align 8 dereferenceable(168) %971)
          to label %973 unwind label %979

973:                                              ; preds = %969
  store ptr %972, ptr %95, align 8, !tbaa !5
  %974 = load ptr, ptr %95, align 8, !tbaa !5
  %975 = load ptr, ptr %3, align 8, !tbaa !5
  %976 = load ptr, ptr %95, align 8, !tbaa !5
  %977 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %976, i32 0, i32 0
  invoke void @_Z35Trans_Enumerate_FillFrom_MIR_LValueRN3MIR9EnumCacheERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %975, ptr noundef nonnull align 8 dereferenceable(32) %977)
          to label %978 unwind label %979

978:                                              ; preds = %973
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #8
  br label %1104

979:                                              ; preds = %973, %969
  %980 = landingpad { ptr, i32 }
          cleanup
  %981 = extractvalue { ptr, i32 } %980, 0
  store ptr %981, ptr %8, align 8
  %982 = extractvalue { ptr, i32 } %980, 1
  store i32 %982, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #8
  br label %1107

983:                                              ; preds = %917
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #8
  %984 = load ptr, ptr %20, align 8, !tbaa !5
  %985 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %984, i32 0, i32 1
  %986 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZNK3MIR10Terminator9as_SwitchEv(ptr noundef nonnull align 8 dereferenceable(168) %985)
          to label %987 unwind label %993

987:                                              ; preds = %983
  store ptr %986, ptr %96, align 8, !tbaa !5
  %988 = load ptr, ptr %96, align 8, !tbaa !5
  %989 = load ptr, ptr %3, align 8, !tbaa !5
  %990 = load ptr, ptr %96, align 8, !tbaa !5
  %991 = getelementptr inbounds %"struct.MIR::Terminator::Data_Switch", ptr %990, i32 0, i32 0
  invoke void @_Z35Trans_Enumerate_FillFrom_MIR_LValueRN3MIR9EnumCacheERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %989, ptr noundef nonnull align 8 dereferenceable(32) %991)
          to label %992 unwind label %993

992:                                              ; preds = %987
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #8
  br label %1104

993:                                              ; preds = %987, %983
  %994 = landingpad { ptr, i32 }
          cleanup
  %995 = extractvalue { ptr, i32 } %994, 0
  store ptr %995, ptr %8, align 8
  %996 = extractvalue { ptr, i32 } %994, 1
  store i32 %996, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #8
  br label %1107

997:                                              ; preds = %917
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #8
  %998 = load ptr, ptr %20, align 8, !tbaa !5
  %999 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %998, i32 0, i32 1
  %1000 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZNK3MIR10Terminator14as_SwitchValueEv(ptr noundef nonnull align 8 dereferenceable(168) %999)
          to label %1001 unwind label %1007

1001:                                             ; preds = %997
  store ptr %1000, ptr %97, align 8, !tbaa !5
  %1002 = load ptr, ptr %97, align 8, !tbaa !5
  %1003 = load ptr, ptr %3, align 8, !tbaa !5
  %1004 = load ptr, ptr %97, align 8, !tbaa !5
  %1005 = getelementptr inbounds %"struct.MIR::Terminator::Data_SwitchValue", ptr %1004, i32 0, i32 0
  invoke void @_Z35Trans_Enumerate_FillFrom_MIR_LValueRN3MIR9EnumCacheERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %1003, ptr noundef nonnull align 8 dereferenceable(32) %1005)
          to label %1006 unwind label %1007

1006:                                             ; preds = %1001
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #8
  br label %1104

1007:                                             ; preds = %1001, %997
  %1008 = landingpad { ptr, i32 }
          cleanup
  %1009 = extractvalue { ptr, i32 } %1008, 0
  store ptr %1009, ptr %8, align 8
  %1010 = extractvalue { ptr, i32 } %1008, 1
  store i32 %1010, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #8
  br label %1107

1011:                                             ; preds = %917
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #8
  %1012 = load ptr, ptr %20, align 8, !tbaa !5
  %1013 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %1012, i32 0, i32 1
  %1014 = invoke noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3MIR10Terminator7as_CallEv(ptr noundef nonnull align 8 dereferenceable(168) %1013)
          to label %1015 unwind label %1025

1015:                                             ; preds = %1011
  store ptr %1014, ptr %98, align 8, !tbaa !5
  %1016 = load ptr, ptr %98, align 8, !tbaa !5
  %1017 = load ptr, ptr %3, align 8, !tbaa !5
  %1018 = load ptr, ptr %98, align 8, !tbaa !5
  %1019 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %1018, i32 0, i32 2
  invoke void @_Z35Trans_Enumerate_FillFrom_MIR_LValueRN3MIR9EnumCacheERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %1017, ptr noundef nonnull align 8 dereferenceable(32) %1019)
          to label %1020 unwind label %1025

1020:                                             ; preds = %1015
  %1021 = load ptr, ptr %98, align 8, !tbaa !5
  %1022 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %1021, i32 0, i32 3
  %1023 = invoke noundef i32 @_ZNK3MIR10CallTarget3tagEv(ptr noundef nonnull align 8 dereferenceable(96) %1022)
          to label %1024 unwind label %1025

1024:                                             ; preds = %1020
  switch i32 %1023, label %1079 [
    i32 0, label %1029
    i32 1, label %1030
    i32 2, label %1043
    i32 3, label %1056
  ]

1025:                                             ; preds = %1020, %1015, %1011
  %1026 = landingpad { ptr, i32 }
          cleanup
  %1027 = extractvalue { ptr, i32 } %1026, 0
  store ptr %1027, ptr %8, align 8
  %1028 = extractvalue { ptr, i32 } %1026, 1
  store i32 %1028, ptr %9, align 4
  br label %1103

1029:                                             ; preds = %1024
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str.7, i32 noundef 1884, ptr noundef @__PRETTY_FUNCTION__._Z28Trans_Enumerate_FillFrom_MIRRN3MIR9EnumCacheERKNS_8FunctionE) #9
  unreachable

1030:                                             ; preds = %1024
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #8
  %1031 = load ptr, ptr %98, align 8, !tbaa !5
  %1032 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %1031, i32 0, i32 3
  %1033 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR10CallTarget8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(96) %1032)
          to label %1034 unwind label %1039

1034:                                             ; preds = %1030
  store ptr %1033, ptr %99, align 8, !tbaa !5
  %1035 = load ptr, ptr %99, align 8, !tbaa !5
  %1036 = load ptr, ptr %3, align 8, !tbaa !5
  %1037 = load ptr, ptr %99, align 8, !tbaa !5
  invoke void @_Z35Trans_Enumerate_FillFrom_MIR_LValueRN3MIR9EnumCacheERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %1036, ptr noundef nonnull align 8 dereferenceable(32) %1037)
          to label %1038 unwind label %1039

1038:                                             ; preds = %1034
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #8
  br label %1079

1039:                                             ; preds = %1034, %1030
  %1040 = landingpad { ptr, i32 }
          cleanup
  %1041 = extractvalue { ptr, i32 } %1040, 0
  store ptr %1041, ptr %8, align 8
  %1042 = extractvalue { ptr, i32 } %1040, 1
  store i32 %1042, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #8
  br label %1103

1043:                                             ; preds = %1024
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #8
  %1044 = load ptr, ptr %98, align 8, !tbaa !5
  %1045 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %1044, i32 0, i32 3
  %1046 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZNK3MIR10CallTarget7as_PathEv(ptr noundef nonnull align 8 dereferenceable(96) %1045)
          to label %1047 unwind label %1052

1047:                                             ; preds = %1043
  store ptr %1046, ptr %100, align 8, !tbaa !5
  %1048 = load ptr, ptr %100, align 8, !tbaa !5
  %1049 = load ptr, ptr %3, align 8, !tbaa !5
  %1050 = load ptr, ptr %100, align 8, !tbaa !5
  invoke void @_ZN3MIR9EnumCache11insert_pathERKN3HIR4PathE(ptr noundef nonnull align 8 dereferenceable(48) %1049, ptr noundef nonnull align 8 dereferenceable(88) %1050)
          to label %1051 unwind label %1052

1051:                                             ; preds = %1047
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #8
  br label %1079

1052:                                             ; preds = %1047, %1043
  %1053 = landingpad { ptr, i32 }
          cleanup
  %1054 = extractvalue { ptr, i32 } %1053, 0
  store ptr %1054, ptr %8, align 8
  %1055 = extractvalue { ptr, i32 } %1053, 1
  store i32 %1055, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #8
  br label %1103

1056:                                             ; preds = %1024
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #8
  %1057 = load ptr, ptr %98, align 8, !tbaa !5
  %1058 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %1057, i32 0, i32 3
  %1059 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR10CallTarget12as_IntrinsicEv(ptr noundef nonnull align 8 dereferenceable(96) %1058)
          to label %1060 unwind label %1074

1060:                                             ; preds = %1056
  store ptr %1059, ptr %101, align 8, !tbaa !5
  %1061 = load ptr, ptr %101, align 8, !tbaa !5
  %1062 = load ptr, ptr %101, align 8, !tbaa !5
  %1063 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %1062, i32 0, i32 0
  %1064 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1063, ptr noundef @.str.19)
          to label %1065 unwind label %1074

1065:                                             ; preds = %1060
  br i1 %1064, label %1066, label %1078

1066:                                             ; preds = %1065
  %1067 = load ptr, ptr %3, align 8, !tbaa !5
  %1068 = load ptr, ptr %101, align 8, !tbaa !5
  %1069 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %1068, i32 0, i32 1
  %1070 = getelementptr inbounds %"struct.HIR::PathParams", ptr %1069, i32 0, i32 1
  %1071 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %1070, i64 noundef 0)
          to label %1072 unwind label %1074

1072:                                             ; preds = %1066
  invoke void @_ZN3MIR9EnumCache13insert_typeidERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(48) %1067, ptr noundef nonnull align 8 dereferenceable(8) %1071)
          to label %1073 unwind label %1074

1073:                                             ; preds = %1072
  br label %1078

1074:                                             ; preds = %1072, %1066, %1060, %1056
  %1075 = landingpad { ptr, i32 }
          cleanup
  %1076 = extractvalue { ptr, i32 } %1075, 0
  store ptr %1076, ptr %8, align 8
  %1077 = extractvalue { ptr, i32 } %1075, 1
  store i32 %1077, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #8
  br label %1103

1078:                                             ; preds = %1073, %1065
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #8
  br label %1079

1079:                                             ; preds = %1078, %1051, %1038, %1024
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #8
  %1080 = load ptr, ptr %98, align 8, !tbaa !5
  %1081 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %1080, i32 0, i32 4
  store ptr %1081, ptr %102, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #8
  %1082 = load ptr, ptr %102, align 8, !tbaa !5
  %1083 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1082) #8
  %1084 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.589", ptr %103, i32 0, i32 0
  store ptr %1083, ptr %1084, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #8
  %1085 = load ptr, ptr %102, align 8, !tbaa !5
  %1086 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1085) #8
  %1087 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.589", ptr %104, i32 0, i32 0
  store ptr %1086, ptr %1087, align 8
  br label %1088

1088:                                             ; preds = %1096, %1079
  %1089 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %103, ptr noundef nonnull align 8 dereferenceable(8) %104) #8
  br i1 %1089, label %1091, label %1090

1090:                                             ; preds = %1088
  store i32 101, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #8
  br label %1102

1091:                                             ; preds = %1088
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #8
  %1092 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %103) #8
  store ptr %1092, ptr %105, align 8, !tbaa !5
  %1093 = load ptr, ptr %3, align 8, !tbaa !5
  %1094 = load ptr, ptr %105, align 8, !tbaa !5
  invoke void @_Z34Trans_Enumerate_FillFrom_MIR_ParamRN3MIR9EnumCacheERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(48) %1093, ptr noundef nonnull align 8 dereferenceable(48) %1094)
          to label %1095 unwind label %1098

1095:                                             ; preds = %1091
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #8
  br label %1096

1096:                                             ; preds = %1095
  %1097 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %103) #8
  br label %1088

1098:                                             ; preds = %1091
  %1099 = landingpad { ptr, i32 }
          cleanup
  %1100 = extractvalue { ptr, i32 } %1099, 0
  store ptr %1100, ptr %8, align 8
  %1101 = extractvalue { ptr, i32 } %1099, 1
  store i32 %1101, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #8
  br label %1103

1102:                                             ; preds = %1090
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #8
  br label %1104

1103:                                             ; preds = %1098, %1074, %1052, %1039, %1025
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #8
  br label %1107

1104:                                             ; preds = %1102, %1006, %992, %978, %963, %953, %943, %933, %923, %917
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  br label %1105

1105:                                             ; preds = %1104
  %1106 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %17) #8
  br label %147

1107:                                             ; preds = %1103, %1007, %993, %979, %965, %955, %945, %935, %925, %907, %883
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  br label %1109

1108:                                             ; preds = %149
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %5) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %5) #8
  ret void

1109:                                             ; preds = %1107, %134
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %5) #8
  br label %1110

1110:                                             ; preds = %1109, %121
  call void @llvm.lifetime.end.p0(i64 40, ptr %5) #8
  br label %1111

1111:                                             ; preds = %1110
  %1112 = load ptr, ptr %8, align 8
  %1113 = load i32, ptr %9, align 4
  %1114 = insertvalue { ptr, i32 } poison, ptr %1112, 0
  %1115 = insertvalue { ptr, i32 } %1114, i32 %1113, 1
  resume { ptr, i32 } %1115
}

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #4

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) #5 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)) #6

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) #5 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)) #6

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3MIR9Statement3tagEv(ptr noundef nonnull align 8 dereferenceable(152)) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152)) #5 align 2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6RValueE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(112)) #1

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: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3MIR6RValue3tagEv(ptr noundef nonnull align 8 dereferenceable(112)) #5 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR6RValue11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(112)) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3MIR6RValue13as_SizedArrayEv(ptr noundef nonnull align 8 dereferenceable(112)) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR6RValue9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(112)) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR6RValue7as_CastEv(ptr noundef nonnull align 8 dereferenceable(112)) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(104) ptr @_ZNK3MIR6RValue8as_BinOpEv(ptr noundef nonnull align 8 dereferenceable(112)) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(36) ptr @_ZNK3MIR6RValue8as_UniOpEv(ptr noundef nonnull align 8 dereferenceable(112)) #5 align 2

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(88) ptr @_ZNK3MIR6RValue15as_UnionVariantEv(ptr noundef nonnull align 8 dereferenceable(112)) #5 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(56) ptr @_ZNK3MIR6RValue9as_StructEv(ptr noundef nonnull align 8 dereferenceable(112)) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(56) ptr @_ZNK3MIR9Statement7as_Asm2Ev(ptr noundef nonnull align 8 dereferenceable(152)) #5 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(128) ptr @_ZNK3MIR9Statement6as_AsmEv(ptr noundef nonnull align 8 dereferenceable(152)) #5 align 2

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(44) ptr @_ZNK3MIR9Statement7as_DropEv(ptr noundef nonnull align 8 dereferenceable(152)) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR9StatementESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) #5 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 dso_local noundef i32 @_ZNK3MIR10Terminator3tagEv(ptr noundef nonnull align 8 dereferenceable(168)) #5 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 = { 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 #4 = { noreturn 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 #5 = { 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 nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nounwind }
attributes #9 = { noreturn nounwind }

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

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


; 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 = type { i8 }
%"class.__gnu_cxx::__normal_iterator.545" = type { ptr }
%"class.std::function.546" = type { %"class.std::_Function_base", ptr }
%class.anon.549 = type { ptr }
%"class.__gnu_cxx::__normal_iterator.550" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.573" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.589" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.590" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.607" = type { ptr }

@g_debug_indent_level = external local_unnamed_addr global i32, align 4
@.str.6 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [78 x i8], align 1
@__func__._Z28Trans_Enumerate_FillFrom_MIRRN3MIR9EnumCacheERKNS_8FunctionE = external hidden unnamed_addr constant [29 x i8], align 1
@__PRETTY_FUNCTION__._Z28Trans_Enumerate_FillFrom_MIRRN3MIR9EnumCacheERKNS_8FunctionE = external hidden unnamed_addr constant [77 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [8 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

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

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #1

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 @_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)) #3

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z28Trans_Enumerate_FillFrom_MIRRN3MIR9EnumCacheERKNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(96) %1) local_unnamed_addr #2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %class.TraceLog, align 8
  %4 = alloca %"class.std::function", align 8
  %5 = alloca %class.anon, align 1
  %6 = alloca %"class.__gnu_cxx::__normal_iterator.545", align 8
  %7 = alloca %"class.__gnu_cxx::__normal_iterator.545", align 8
  %8 = alloca %"class.std::function.546", align 8
  %9 = alloca %class.anon.549, align 8
  %10 = alloca %"class.__gnu_cxx::__normal_iterator.550", align 8
  %11 = alloca %"class.__gnu_cxx::__normal_iterator.550", align 8
  %12 = alloca %"class.__gnu_cxx::__normal_iterator.573", align 8
  %13 = alloca %"class.__gnu_cxx::__normal_iterator.573", align 8
  %14 = alloca %"class.__gnu_cxx::__normal_iterator.589", align 8
  %15 = alloca %"class.__gnu_cxx::__normal_iterator.589", align 8
  %16 = alloca %"class.__gnu_cxx::__normal_iterator.589", align 8
  %17 = alloca %"class.__gnu_cxx::__normal_iterator.589", align 8
  %18 = alloca %"class.__gnu_cxx::__normal_iterator.589", align 8
  %19 = alloca %"class.__gnu_cxx::__normal_iterator.589", align 8
  %20 = alloca %"class.__gnu_cxx::__normal_iterator.589", align 8
  %21 = alloca %"class.__gnu_cxx::__normal_iterator.589", align 8
  %22 = alloca %"class.__gnu_cxx::__normal_iterator.590", align 8
  %23 = alloca %"class.__gnu_cxx::__normal_iterator.590", align 8
  %24 = alloca %"class.__gnu_cxx::__normal_iterator.607", align 8
  %25 = alloca %"class.__gnu_cxx::__normal_iterator.607", align 8
  %26 = alloca %"class.__gnu_cxx::__normal_iterator.607", align 8
  %27 = alloca %"class.__gnu_cxx::__normal_iterator.607", align 8
  %28 = alloca %"class.__gnu_cxx::__normal_iterator.589", align 8
  %29 = alloca %"class.__gnu_cxx::__normal_iterator.589", align 8
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %3) #8
  %30 = tail call noundef zeroext i1 @_Z13debug_enabledv()
  %31 = select i1 %30, ptr @__func__._Z28Trans_Enumerate_FillFrom_MIRRN3MIR9EnumCacheERKNS_8FunctionE, ptr null
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZ28Trans_Enumerate_FillFrom_MIRRN3MIR9EnumCacheERKNS4_8FunctionEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 1 dereferenceable(1) %5) #8
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %3, ptr noundef %31, ptr noundef nonnull %4)
          to label %32 unwind label %40

32:                                               ; preds = %2
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #8
  %33 = call ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #8
  store ptr %33, ptr %6, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #8
  %34 = call ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #8
  store ptr %34, ptr %7, align 8
  %35 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %7) #8
  br i1 %35, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %44, %32
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #8
  %36 = getelementptr inbounds i8, ptr %1, i64 64
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #8
  %37 = call ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %36) #8
  store ptr %37, ptr %10, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #8
  %38 = call ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %36) #8
  store ptr %38, ptr %11, align 8
  %39 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  br i1 %39, label %.lr.ph512, label %._crit_edge513

40:                                               ; preds = %2
  %41 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #8
  br label %346

.lr.ph:                                           ; preds = %32, %44
  %42 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #8
  store ptr %0, ptr %9, align 8, !tbaa !5
  call void @"_ZNSt8functionIFbRKN3HIR7TypeRefEEEC2IZ28Trans_Enumerate_FillFrom_MIRRN3MIR9EnumCacheERKNS7_8FunctionEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(8) %9) #8
  %43 = invoke noundef zeroext i1 @_Z13visit_ty_withRKN3HIR7TypeRefESt8functionIFbS2_EE(ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull %8)
          to label %44 unwind label %47

44:                                               ; preds = %.lr.ph
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #8
  %45 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #8
  %46 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %7) #8
  br i1 %46, label %.lr.ph, label %._crit_edge

47:                                               ; preds = %.lr.ph
  %48 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #8
  br label %345

._crit_edge513:                                   ; preds = %341, %._crit_edge
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #8
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %3) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %3) #8
  ret void

.lr.ph512:                                        ; preds = %._crit_edge, %341
  %49 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #8
  %50 = call ptr @_ZNKSt6vectorIN3MIR9StatementESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %49) #8
  store ptr %50, ptr %12, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #8
  %51 = call ptr @_ZNKSt6vectorIN3MIR9StatementESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %49) #8
  store ptr %51, ptr %13, align 8
  %52 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR9StatementESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %13) #8
  br i1 %52, label %.lr.ph503, label %._crit_edge507

._crit_edge507:                                   ; preds = %.loopexit281, %.lr.ph512
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  %53 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %262 unwind label %275

.loopexit281:                                     ; preds = %260, %.preheader276.split, %.preheader274.split, %.lr.ph503, %._crit_edge490, %._crit_edge493, %._crit_edge496, %._crit_edge499, %86, %89, %93, %97, %101, %106, %112, %116, %120, %124, %130, %156, %..loopexit263_crit_edge, %..loopexit264_crit_edge
  %54 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR9StatementESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %12) #8
  %55 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR9StatementESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %13) #8
  br i1 %55, label %.lr.ph503, label %._crit_edge507

.lr.ph503:                                        ; preds = %.lr.ph512, %.loopexit281
  %56 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR9StatementESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %12) #8
  %57 = call noundef i32 @_ZNK3MIR9Statement3tagEv(ptr noundef nonnull align 8 dereferenceable(152) %56)
  switch i32 %57, label %.loopexit281 [
    i32 0, label %63
    i32 1, label %.lr.ph501
    i32 3, label %.lr.ph486
    i32 2, label %.lr.ph375
    i32 4, label %.preheader274.split
    i32 6, label %.preheader276.split
    i32 5, label %.preheader278.split
  ]

.preheader278.split:                              ; preds = %.lr.ph503
  %58 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK3MIR9Statement7as_DropEv(ptr noundef nonnull align 8 dereferenceable(152) %56)
  %59 = getelementptr inbounds i8, ptr %58, i64 8
  %60 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %248 unwind label %.split

.preheader276.split:                              ; preds = %.lr.ph503
  %61 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR9Statement11as_ScopeEndEv(ptr noundef nonnull align 8 dereferenceable(152) %56)
  br label %.loopexit281

.preheader274.split:                              ; preds = %.lr.ph503
  %62 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNK3MIR9Statement14as_SetDropFlagEv(ptr noundef nonnull align 8 dereferenceable(152) %56)
  br label %.loopexit281

63:                                               ; preds = %.lr.ph503
  call void @__assert_fail(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, i32 noundef 1762, ptr noundef nonnull @__PRETTY_FUNCTION__._Z28Trans_Enumerate_FillFrom_MIRRN3MIR9EnumCacheERKNS_8FunctionE) #9
  unreachable

.lr.ph501:                                        ; preds = %.lr.ph503
  %64 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %56)
  %65 = getelementptr inbounds i8, ptr %64, i64 32
  %66 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %69 unwind label %67

67:                                               ; preds = %85, %83, %81, %79, %77, %75, %73, %70, %.lr.ph501
  %68 = landingpad { ptr, i32 }
          cleanup
  br label %261

69:                                               ; preds = %.lr.ph501
  br i1 %66, label %70, label %85

70:                                               ; preds = %69
  %71 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %72 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %71, ptr noundef nonnull @__func__._Z28Trans_Enumerate_FillFrom_MIRRN3MIR9EnumCacheERKNS_8FunctionE)
          to label %73 unwind label %67

73:                                               ; preds = %70
  %74 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %72, ptr noundef nonnull @.str.14)
          to label %75 unwind label %67

75:                                               ; preds = %73
  %76 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %74, ptr noundef nonnull align 8 dereferenceable(32) %64)
          to label %77 unwind label %67

77:                                               ; preds = %75
  %78 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %76, ptr noundef nonnull @.str.15)
          to label %79 unwind label %67

79:                                               ; preds = %77
  %80 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6RValueE(ptr noundef nonnull align 8 dereferenceable(8) %78, ptr noundef nonnull align 8 dereferenceable(112) %65)
          to label %81 unwind label %67

81:                                               ; preds = %79
  %82 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %80, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %83 unwind label %67

83:                                               ; preds = %81
  %84 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %82, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %85 unwind label %67

85:                                               ; preds = %83, %69
  invoke void @_Z35Trans_Enumerate_FillFrom_MIR_LValueRN3MIR9EnumCacheERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(32) %64)
          to label %86 unwind label %67

86:                                               ; preds = %85
  %87 = call noundef i32 @_ZNK3MIR6RValue3tagEv(ptr noundef nonnull align 8 dereferenceable(112) %65)
  switch i32 %87, label %.loopexit281 [
    i32 0, label %88
    i32 1, label %89
    i32 3, label %93
    i32 4, label %97
    i32 2, label %101
    i32 5, label %106
    i32 6, label %110
    i32 7, label %116
    i32 8, label %120
    i32 9, label %124
    i32 10, label %128
    i32 11, label %134
    i32 12, label %145
    i32 13, label %156
    i32 14, label %161
    i32 15, label %173
  ]

88:                                               ; preds = %86
  call void @__assert_fail(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, i32 noundef 1818, ptr noundef nonnull @__PRETTY_FUNCTION__._Z28Trans_Enumerate_FillFrom_MIRRN3MIR9EnumCacheERKNS_8FunctionE) #9
  unreachable

89:                                               ; preds = %86
  %90 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR6RValue6as_UseEv(ptr noundef nonnull align 8 dereferenceable(112) %65)
  invoke void @_Z35Trans_Enumerate_FillFrom_MIR_LValueRN3MIR9EnumCacheERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(32) %90)
          to label %.loopexit281 unwind label %91

91:                                               ; preds = %89
  %92 = landingpad { ptr, i32 }
          cleanup
  br label %261

93:                                               ; preds = %86
  %94 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR6RValue11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(112) %65)
  invoke void @_Z37Trans_Enumerate_FillFrom_MIR_ConstantRN3MIR9EnumCacheERKNS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(40) %94)
          to label %.loopexit281 unwind label %95

95:                                               ; preds = %93
  %96 = landingpad { ptr, i32 }
          cleanup
  br label %261

97:                                               ; preds = %86
  %98 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3MIR6RValue13as_SizedArrayEv(ptr noundef nonnull align 8 dereferenceable(112) %65)
  invoke void @_Z34Trans_Enumerate_FillFrom_MIR_ParamRN3MIR9EnumCacheERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(48) %98)
          to label %.loopexit281 unwind label %99

99:                                               ; preds = %97
  %100 = landingpad { ptr, i32 }
          cleanup
  br label %261

101:                                              ; preds = %86
  %102 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR6RValue9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(112) %65)
  %103 = getelementptr inbounds i8, ptr %102, i64 8
  invoke void @_Z35Trans_Enumerate_FillFrom_MIR_LValueRN3MIR9EnumCacheERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(32) %103)
          to label %.loopexit281 unwind label %104

104:                                              ; preds = %101
  %105 = landingpad { ptr, i32 }
          cleanup
  br label %261

106:                                              ; preds = %86
  %107 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR6RValue7as_CastEv(ptr noundef nonnull align 8 dereferenceable(112) %65)
  invoke void @_Z35Trans_Enumerate_FillFrom_MIR_LValueRN3MIR9EnumCacheERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(32) %107)
          to label %.loopexit281 unwind label %108

108:                                              ; preds = %106
  %109 = landingpad { ptr, i32 }
          cleanup
  br label %261

110:                                              ; preds = %86
  %111 = call noundef nonnull align 8 dereferenceable(104) ptr @_ZNK3MIR6RValue8as_BinOpEv(ptr noundef nonnull align 8 dereferenceable(112) %65)
  invoke void @_Z34Trans_Enumerate_FillFrom_MIR_ParamRN3MIR9EnumCacheERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(48) %111)
          to label %112 unwind label %114

112:                                              ; preds = %110
  %113 = getelementptr inbounds i8, ptr %111, i64 56
  invoke void @_Z34Trans_Enumerate_FillFrom_MIR_ParamRN3MIR9EnumCacheERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(48) %113)
          to label %.loopexit281 unwind label %114

114:                                              ; preds = %112, %110
  %115 = landingpad { ptr, i32 }
          cleanup
  br label %261

116:                                              ; preds = %86
  %117 = call noundef nonnull align 8 dereferenceable(36) ptr @_ZNK3MIR6RValue8as_UniOpEv(ptr noundef nonnull align 8 dereferenceable(112) %65)
  invoke void @_Z35Trans_Enumerate_FillFrom_MIR_LValueRN3MIR9EnumCacheERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(32) %117)
          to label %.loopexit281 unwind label %118

118:                                              ; preds = %116
  %119 = landingpad { ptr, i32 }
          cleanup
  br label %261

120:                                              ; preds = %86
  %121 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR6RValue10as_DstMetaEv(ptr noundef nonnull align 8 dereferenceable(112) %65)
  invoke void @_Z35Trans_Enumerate_FillFrom_MIR_LValueRN3MIR9EnumCacheERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(32) %121)
          to label %.loopexit281 unwind label %122

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

124:                                              ; preds = %86
  %125 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR6RValue9as_DstPtrEv(ptr noundef nonnull align 8 dereferenceable(112) %65)
  invoke void @_Z35Trans_Enumerate_FillFrom_MIR_LValueRN3MIR9EnumCacheERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(32) %125)
          to label %.loopexit281 unwind label %126

126:                                              ; preds = %124
  %127 = landingpad { ptr, i32 }
          cleanup
  br label %261

128:                                              ; preds = %86
  %129 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNK3MIR6RValue10as_MakeDstEv(ptr noundef nonnull align 8 dereferenceable(112) %65)
  invoke void @_Z34Trans_Enumerate_FillFrom_MIR_ParamRN3MIR9EnumCacheERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(48) %129)
          to label %130 unwind label %132

130:                                              ; preds = %128
  %131 = getelementptr inbounds i8, ptr %129, i64 48
  invoke void @_Z34Trans_Enumerate_FillFrom_MIR_ParamRN3MIR9EnumCacheERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(48) %131)
          to label %.loopexit281 unwind label %132

132:                                              ; preds = %130, %128
  %133 = landingpad { ptr, i32 }
          cleanup
  br label %261

134:                                              ; preds = %86
  %135 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR6RValue8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(112) %65)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #8
  %136 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %135) #8
  store ptr %136, ptr %14, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #8
  %137 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %135) #8
  store ptr %137, ptr %15, align 8
  %138 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 8 dereferenceable(8) %15) #8
  br i1 %138, label %.lr.ph498, label %._crit_edge499

._crit_edge499:                                   ; preds = %140, %134
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  br label %.loopexit281

.lr.ph498:                                        ; preds = %134, %140
  %139 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %14) #8
  invoke void @_Z34Trans_Enumerate_FillFrom_MIR_ParamRN3MIR9EnumCacheERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(48) %139)
          to label %140 unwind label %143

140:                                              ; preds = %.lr.ph498
  %141 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %14) #8
  %142 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 8 dereferenceable(8) %15) #8
  br i1 %142, label %.lr.ph498, label %._crit_edge499

143:                                              ; preds = %.lr.ph498
  %144 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  br label %261

145:                                              ; preds = %86
  %146 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR6RValue8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(112) %65)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #8
  %147 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %146) #8
  store ptr %147, ptr %16, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #8
  %148 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %146) #8
  store ptr %148, ptr %17, align 8
  %149 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17) #8
  br i1 %149, label %.lr.ph495, label %._crit_edge496

._crit_edge496:                                   ; preds = %151, %145
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #8
  br label %.loopexit281

.lr.ph495:                                        ; preds = %145, %151
  %150 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  invoke void @_Z34Trans_Enumerate_FillFrom_MIR_ParamRN3MIR9EnumCacheERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(48) %150)
          to label %151 unwind label %154

151:                                              ; preds = %.lr.ph495
  %152 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  %153 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17) #8
  br i1 %153, label %.lr.ph495, label %._crit_edge496

154:                                              ; preds = %.lr.ph495
  %155 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #8
  br label %261

156:                                              ; preds = %86
  %157 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNK3MIR6RValue15as_UnionVariantEv(ptr noundef nonnull align 8 dereferenceable(112) %65)
  %158 = getelementptr inbounds i8, ptr %157, i64 40
  invoke void @_Z34Trans_Enumerate_FillFrom_MIR_ParamRN3MIR9EnumCacheERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(48) %158)
          to label %.loopexit281 unwind label %159

159:                                              ; preds = %156
  %160 = landingpad { ptr, i32 }
          cleanup
  br label %261

161:                                              ; preds = %86
  %162 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK3MIR6RValue14as_EnumVariantEv(ptr noundef nonnull align 8 dereferenceable(112) %65)
  %163 = getelementptr inbounds i8, ptr %162, i64 40
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #8
  %164 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %163) #8
  store ptr %164, ptr %18, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #8
  %165 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %163) #8
  store ptr %165, ptr %19, align 8
  %166 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %19) #8
  br i1 %166, label %.lr.ph492, label %._crit_edge493

._crit_edge493:                                   ; preds = %168, %161
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #8
  br label %.loopexit281

.lr.ph492:                                        ; preds = %161, %168
  %167 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #8
  invoke void @_Z34Trans_Enumerate_FillFrom_MIR_ParamRN3MIR9EnumCacheERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(48) %167)
          to label %168 unwind label %171

168:                                              ; preds = %.lr.ph492
  %169 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #8
  %170 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %19) #8
  br i1 %170, label %.lr.ph492, label %._crit_edge493

171:                                              ; preds = %.lr.ph492
  %172 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #8
  br label %261

173:                                              ; preds = %86
  %174 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNK3MIR6RValue9as_StructEv(ptr noundef nonnull align 8 dereferenceable(112) %65)
  %175 = getelementptr inbounds i8, ptr %174, i64 32
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #8
  %176 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %175) #8
  store ptr %176, ptr %20, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #8
  %177 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %175) #8
  store ptr %177, ptr %21, align 8
  %178 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %21) #8
  br i1 %178, label %.lr.ph489, label %._crit_edge490

._crit_edge490:                                   ; preds = %180, %173
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #8
  br label %.loopexit281

.lr.ph489:                                        ; preds = %173, %180
  %179 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #8
  invoke void @_Z34Trans_Enumerate_FillFrom_MIR_ParamRN3MIR9EnumCacheERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(48) %179)
          to label %180 unwind label %183

180:                                              ; preds = %.lr.ph489
  %181 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #8
  %182 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %21) #8
  br i1 %182, label %.lr.ph489, label %._crit_edge490

183:                                              ; preds = %.lr.ph489
  %184 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #8
  br label %261

.lr.ph486:                                        ; preds = %.lr.ph503
  %185 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNK3MIR9Statement7as_Asm2Ev(ptr noundef nonnull align 8 dereferenceable(152) %56)
  %186 = getelementptr inbounds i8, ptr %185, i64 32
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #8
  %187 = call ptr @_ZNKSt6vectorIN3MIR8AsmParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %186) #8
  store ptr %187, ptr %22, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #8
  %188 = call ptr @_ZNKSt6vectorIN3MIR8AsmParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %186) #8
  store ptr %188, ptr %23, align 8
  %189 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR8AsmParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %23) #8
  br i1 %189, label %.lr.ph483, label %..loopexit263_crit_edge

..loopexit263_crit_edge:                          ; preds = %..loopexit261_crit_edge, %.lr.ph486
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #8
  br label %.loopexit281

.lr.ph483:                                        ; preds = %.lr.ph486, %..loopexit261_crit_edge
  %190 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR8AsmParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #8
  %191 = call noundef i32 @_ZNK3MIR8AsmParam3tagEv(ptr noundef nonnull align 8 dereferenceable(96) %190)
  switch i32 %191, label %..loopexit261_crit_edge [
    i32 0, label %.split429
    i32 1, label %.preheader.split
    i32 2, label %.preheader256.split
    i32 3, label %.preheader258.split.split
  ]

.preheader258.split.split:                        ; preds = %.lr.ph483
  %192 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK3MIR8AsmParam6as_RegEv(ptr noundef nonnull align 8 dereferenceable(96) %190)
  %193 = getelementptr inbounds i8, ptr %192, i64 48
  %194 = getelementptr inbounds i8, ptr %192, i64 56
  %195 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN3MIR5ParamESt14default_deleteIS1_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %193) #8
  br i1 %195, label %201, label %203

.preheader256.split:                              ; preds = %.lr.ph483
  %196 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNK3MIR8AsmParam6as_SymEv(ptr noundef nonnull align 8 dereferenceable(96) %190)
  invoke void @_ZN3MIR9EnumCache11insert_pathERKN3HIR4PathE(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(88) %196)
          to label %..loopexit261_crit_edge unwind label %.split396.split.split, !llvm.loop !11

.preheader.split:                                 ; preds = %.lr.ph483
  %197 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR8AsmParam8as_ConstEv(ptr noundef nonnull align 8 dereferenceable(96) %190)
  invoke void @_Z37Trans_Enumerate_FillFrom_MIR_ConstantRN3MIR9EnumCacheERKNS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(40) %197)
          to label %..loopexit261_crit_edge unwind label %.split407.split.split, !llvm.loop !13

.split429:                                        ; preds = %.lr.ph483
  call void @__assert_fail(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, i32 noundef 1823, ptr noundef nonnull @__PRETTY_FUNCTION__._Z28Trans_Enumerate_FillFrom_MIRRN3MIR9EnumCacheERKNS_8FunctionE) #9
  unreachable

.split407.split.split:                            ; preds = %.preheader.split
  %198 = landingpad { ptr, i32 }
          cleanup
  br label %209

.split396.split.split:                            ; preds = %.preheader256.split
  %199 = landingpad { ptr, i32 }
          cleanup
  br label %209

.split380.split.split.split:                      ; preds = %205, %201
  %200 = landingpad { ptr, i32 }
          cleanup
  br label %209

201:                                              ; preds = %.preheader258.split.split
  %202 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt10unique_ptrIN3MIR5ParamESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %193) #8
  invoke void @_Z34Trans_Enumerate_FillFrom_MIR_ParamRN3MIR9EnumCacheERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(48) %202)
          to label %203 unwind label %.split380.split.split.split

203:                                              ; preds = %201, %.preheader258.split.split
  %204 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN3MIR6LValueESt14default_deleteIS1_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %194) #8
  br i1 %204, label %205, label %..loopexit261_crit_edge

205:                                              ; preds = %203
  %206 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt10unique_ptrIN3MIR6LValueESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %194) #8
  invoke void @_Z35Trans_Enumerate_FillFrom_MIR_LValueRN3MIR9EnumCacheERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(32) %206)
          to label %..loopexit261_crit_edge unwind label %.split380.split.split.split

..loopexit261_crit_edge:                          ; preds = %.preheader256.split, %.preheader.split, %205, %203, %.lr.ph483
  %207 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR8AsmParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #8
  %208 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR8AsmParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %23) #8
  br i1 %208, label %.lr.ph483, label %..loopexit263_crit_edge

209:                                              ; preds = %.split380.split.split.split, %.split396.split.split, %.split407.split.split
  %.pn243 = phi { ptr, i32 } [ %200, %.split380.split.split.split ], [ %199, %.split396.split.split ], [ %198, %.split407.split.split ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #8
  br label %261

.lr.ph375:                                        ; preds = %.lr.ph503
  %210 = call noundef nonnull align 8 dereferenceable(128) ptr @_ZNK3MIR9Statement6as_AsmEv(ptr noundef nonnull align 8 dereferenceable(152) %56)
  %211 = getelementptr inbounds i8, ptr %210, i64 56
  %212 = getelementptr inbounds i8, ptr %210, i64 32
  %213 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %216 unwind label %214

214:                                              ; preds = %224, %222, %220, %217, %.lr.ph375
  %215 = landingpad { ptr, i32 }
          cleanup
  br label %261

216:                                              ; preds = %.lr.ph375
  br i1 %213, label %217, label %226

217:                                              ; preds = %216
  %218 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %219 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %218, ptr noundef nonnull @__func__._Z28Trans_Enumerate_FillFrom_MIRRN3MIR9EnumCacheERKNS_8FunctionE)
          to label %220 unwind label %214

220:                                              ; preds = %217
  %221 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %219, ptr noundef nonnull @.str.16)
          to label %222 unwind label %214

222:                                              ; preds = %220
  %223 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %221, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %224 unwind label %214

224:                                              ; preds = %222
  %225 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %223, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %226 unwind label %214

226:                                              ; preds = %224, %216
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #8
  %227 = call ptr @_ZNKSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESaIS9_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %211) #8
  store ptr %227, ptr %24, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #8
  %228 = call ptr @_ZNKSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESaIS9_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %211) #8
  store ptr %228, ptr %25, align 8
  %229 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEEbRKNS_17__normal_iteratorIT_T0_EESL_(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %25) #8
  br i1 %229, label %.lr.ph369, label %._crit_edge370

._crit_edge370:                                   ; preds = %235, %226
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #8
  %230 = call ptr @_ZNKSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESaIS9_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %212) #8
  store ptr %230, ptr %26, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #8
  %231 = call ptr @_ZNKSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESaIS9_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %212) #8
  store ptr %231, ptr %27, align 8
  %232 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEEbRKNS_17__normal_iteratorIT_T0_EESL_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %27) #8
  br i1 %232, label %.lr.ph372, label %..loopexit264_crit_edge

.lr.ph369:                                        ; preds = %226, %235
  %233 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #8
  %234 = getelementptr inbounds i8, ptr %233, i64 32
  invoke void @_Z35Trans_Enumerate_FillFrom_MIR_LValueRN3MIR9EnumCacheERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(32) %234)
          to label %235 unwind label %238

235:                                              ; preds = %.lr.ph369
  %236 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #8
  %237 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEEbRKNS_17__normal_iteratorIT_T0_EESL_(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %25) #8
  br i1 %237, label %.lr.ph369, label %._crit_edge370

238:                                              ; preds = %.lr.ph369
  %239 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #8
  br label %261

..loopexit264_crit_edge:                          ; preds = %242, %._crit_edge370
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #8
  br label %.loopexit281

.lr.ph372:                                        ; preds = %._crit_edge370, %242
  %240 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %26) #8
  %241 = getelementptr inbounds i8, ptr %240, i64 32
  invoke void @_Z35Trans_Enumerate_FillFrom_MIR_LValueRN3MIR9EnumCacheERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(32) %241)
          to label %242 unwind label %245

242:                                              ; preds = %.lr.ph372
  %243 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %26) #8
  %244 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3MIR6LValueEESt6vectorISA_SaISA_EEEEbRKNS_17__normal_iteratorIT_T0_EESL_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %27) #8
  br i1 %244, label %.lr.ph372, label %..loopexit264_crit_edge

245:                                              ; preds = %.lr.ph372
  %246 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #8
  br label %261

.split:                                           ; preds = %260, %258, %256, %254, %252, %249, %.preheader278.split
  %247 = landingpad { ptr, i32 }
          cleanup
  br label %261

248:                                              ; preds = %.preheader278.split
  br i1 %60, label %249, label %260

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

252:                                              ; preds = %249
  %253 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %251, ptr noundef nonnull @.str.17)
          to label %254 unwind label %.split

254:                                              ; preds = %252
  %255 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %253, ptr noundef nonnull align 8 dereferenceable(32) %59)
          to label %256 unwind label %.split

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

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

260:                                              ; preds = %258, %248
  invoke void @_Z35Trans_Enumerate_FillFrom_MIR_LValueRN3MIR9EnumCacheERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(32) %59)
          to label %.loopexit281 unwind label %.split, !llvm.loop !14

261:                                              ; preds = %214, %238, %245, %67, %91, %95, %99, %104, %108, %114, %118, %122, %126, %132, %143, %154, %159, %171, %183, %.split, %209
  %.pn247 = phi { ptr, i32 } [ %247, %.split ], [ %.pn243, %209 ], [ %184, %183 ], [ %172, %171 ], [ %160, %159 ], [ %155, %154 ], [ %144, %143 ], [ %133, %132 ], [ %127, %126 ], [ %123, %122 ], [ %119, %118 ], [ %115, %114 ], [ %109, %108 ], [ %105, %104 ], [ %100, %99 ], [ %96, %95 ], [ %92, %91 ], [ %68, %67 ], [ %239, %238 ], [ %246, %245 ], [ %215, %214 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  br label %344

262:                                              ; preds = %._crit_edge507
  br i1 %53, label %263, label %277

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

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.18)
          to label %268 unwind label %275

268:                                              ; preds = %266
  %269 = getelementptr inbounds i8, ptr %49, i64 24
  %270 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_10TerminatorE(ptr noundef nonnull align 8 dereferenceable(8) %267, ptr noundef nonnull align 8 dereferenceable(168) %269)
          to label %271 unwind label %275

271:                                              ; preds = %268
  %272 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %270, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %273 unwind label %275

273:                                              ; preds = %271
  %274 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %272, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %277 unwind label %275

275:                                              ; preds = %273, %271, %268, %266, %263, %._crit_edge507
  %276 = landingpad { ptr, i32 }
          cleanup
  br label %344

277:                                              ; preds = %273, %262
  %278 = getelementptr inbounds i8, ptr %49, i64 24
  %279 = call noundef i32 @_ZNK3MIR10Terminator3tagEv(ptr noundef nonnull align 8 dereferenceable(168) %278)
  switch i32 %279, label %341 [
    i32 0, label %280
    i32 1, label %281
    i32 2, label %283
    i32 3, label %285
    i32 4, label %287
    i32 5, label %289
    i32 6, label %291
    i32 7, label %295
    i32 8, label %299
    i32 9, label %303
  ]

280:                                              ; preds = %277
  call void @__assert_fail(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, i32 noundef 1888, ptr noundef nonnull @__PRETTY_FUNCTION__._Z28Trans_Enumerate_FillFrom_MIRRN3MIR9EnumCacheERKNS_8FunctionE) #9
  unreachable

281:                                              ; preds = %277
  %282 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator13as_IncompleteEv(ptr noundef nonnull align 8 dereferenceable(168) %278)
  br label %341

283:                                              ; preds = %277
  %284 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator9as_ReturnEv(ptr noundef nonnull align 8 dereferenceable(168) %278)
  br label %341

285:                                              ; preds = %277
  %286 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator10as_DivergeEv(ptr noundef nonnull align 8 dereferenceable(168) %278)
  br label %341

287:                                              ; preds = %277
  %288 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3MIR10Terminator7as_GotoEv(ptr noundef nonnull align 8 dereferenceable(168) %278)
  br label %341

289:                                              ; preds = %277
  %290 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3MIR10Terminator8as_PanicEv(ptr noundef nonnull align 8 dereferenceable(168) %278)
  br label %341

291:                                              ; preds = %277
  %292 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR10Terminator5as_IfEv(ptr noundef nonnull align 8 dereferenceable(168) %278)
  invoke void @_Z35Trans_Enumerate_FillFrom_MIR_LValueRN3MIR9EnumCacheERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(32) %292)
          to label %341 unwind label %293

293:                                              ; preds = %291
  %294 = landingpad { ptr, i32 }
          cleanup
  br label %344

295:                                              ; preds = %277
  %296 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNK3MIR10Terminator9as_SwitchEv(ptr noundef nonnull align 8 dereferenceable(168) %278)
  invoke void @_Z35Trans_Enumerate_FillFrom_MIR_LValueRN3MIR9EnumCacheERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(32) %296)
          to label %341 unwind label %297

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

299:                                              ; preds = %277
  %300 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNK3MIR10Terminator14as_SwitchValueEv(ptr noundef nonnull align 8 dereferenceable(168) %278)
  invoke void @_Z35Trans_Enumerate_FillFrom_MIR_LValueRN3MIR9EnumCacheERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(32) %300)
          to label %341 unwind label %301

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

303:                                              ; preds = %277
  %304 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3MIR10Terminator7as_CallEv(ptr noundef nonnull align 8 dereferenceable(168) %278)
  %305 = getelementptr inbounds i8, ptr %304, i64 8
  invoke void @_Z35Trans_Enumerate_FillFrom_MIR_LValueRN3MIR9EnumCacheERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(32) %305)
          to label %306 unwind label %309

306:                                              ; preds = %303
  %307 = getelementptr inbounds i8, ptr %304, i64 40
  %308 = call noundef i32 @_ZNK3MIR10CallTarget3tagEv(ptr noundef nonnull align 8 dereferenceable(96) %307)
  switch i32 %308, label %330 [
    i32 0, label %311
    i32 1, label %312
    i32 2, label %316
    i32 3, label %320
  ]

309:                                              ; preds = %303
  %310 = landingpad { ptr, i32 }
          cleanup
  br label %344

311:                                              ; preds = %306
  call void @__assert_fail(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, i32 noundef 1884, ptr noundef nonnull @__PRETTY_FUNCTION__._Z28Trans_Enumerate_FillFrom_MIRRN3MIR9EnumCacheERKNS_8FunctionE) #9
  unreachable

312:                                              ; preds = %306
  %313 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR10CallTarget8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(96) %307)
  invoke void @_Z35Trans_Enumerate_FillFrom_MIR_LValueRN3MIR9EnumCacheERKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(32) %313)
          to label %330 unwind label %314

314:                                              ; preds = %312
  %315 = landingpad { ptr, i32 }
          cleanup
  br label %344

316:                                              ; preds = %306
  %317 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNK3MIR10CallTarget7as_PathEv(ptr noundef nonnull align 8 dereferenceable(96) %307)
  invoke void @_ZN3MIR9EnumCache11insert_pathERKN3HIR4PathE(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(88) %317)
          to label %330 unwind label %318

318:                                              ; preds = %316
  %319 = landingpad { ptr, i32 }
          cleanup
  br label %344

320:                                              ; preds = %306
  %321 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR10CallTarget12as_IntrinsicEv(ptr noundef nonnull align 8 dereferenceable(96) %307)
  %322 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %321, ptr noundef nonnull @.str.19)
          to label %323 unwind label %328

323:                                              ; preds = %320
  br i1 %322, label %324, label %330

324:                                              ; preds = %323
  %325 = getelementptr inbounds i8, ptr %321, i64 16
  %326 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %325, i64 noundef 0)
          to label %327 unwind label %328

327:                                              ; preds = %324
  invoke void @_ZN3MIR9EnumCache13insert_typeidERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(8) %326)
          to label %330 unwind label %328

328:                                              ; preds = %327, %324, %320
  %329 = landingpad { ptr, i32 }
          cleanup
  br label %344

330:                                              ; preds = %323, %327, %316, %312, %306
  %331 = getelementptr inbounds i8, ptr %304, i64 136
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #8
  %332 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %331) #8
  store ptr %332, ptr %28, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #8
  %333 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %331) #8
  store ptr %333, ptr %29, align 8
  %334 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %29) #8
  br i1 %334, label %.lr.ph509, label %._crit_edge510

._crit_edge510:                                   ; preds = %336, %330
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #8
  br label %341

.lr.ph509:                                        ; preds = %330, %336
  %335 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %28) #8
  invoke void @_Z34Trans_Enumerate_FillFrom_MIR_ParamRN3MIR9EnumCacheERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(48) %335)
          to label %336 unwind label %339

336:                                              ; preds = %.lr.ph509
  %337 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %28) #8
  %338 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %29) #8
  br i1 %338, label %.lr.ph509, label %._crit_edge510

339:                                              ; preds = %.lr.ph509
  %340 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #8
  br label %344

341:                                              ; preds = %299, %295, %291, %._crit_edge510, %289, %287, %285, %283, %281, %277
  %342 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #8
  %343 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  br i1 %343, label %.lr.ph512, label %._crit_edge513

344:                                              ; preds = %309, %314, %318, %328, %339, %301, %297, %293, %275, %261
  %.pn247.pn = phi { ptr, i32 } [ %.pn247, %261 ], [ %302, %301 ], [ %298, %297 ], [ %294, %293 ], [ %276, %275 ], [ %340, %339 ], [ %329, %328 ], [ %319, %318 ], [ %315, %314 ], [ %310, %309 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #8
  br label %345

345:                                              ; preds = %344, %47
  %.pn250 = phi { ptr, i32 } [ %48, %47 ], [ %.pn247.pn, %344 ]
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %3) #8
  br label %346

346:                                              ; preds = %345, %40
  %.pn250.pn = phi { ptr, i32 } [ %.pn250, %345 ], [ %41, %40 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %3) #8
  resume { ptr, i32 } %.pn250.pn
}

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #4

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #5 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 #6

; 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 #5 align 2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #5 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 #6

; 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 #5 align 2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3MIR9Statement3tagEv(ptr noundef nonnull align 8 dereferenceable(152)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152)) local_unnamed_addr #5 align 2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6RValueE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #1

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: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3MIR6RValue3tagEv(ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #5 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR6RValue11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3MIR6RValue13as_SizedArrayEv(ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR6RValue9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR6RValue7as_CastEv(ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(104) ptr @_ZNK3MIR6RValue8as_BinOpEv(ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(36) ptr @_ZNK3MIR6RValue8as_UniOpEv(ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #5 align 2

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(88) ptr @_ZNK3MIR6RValue15as_UnionVariantEv(ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #5 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(56) ptr @_ZNK3MIR6RValue9as_StructEv(ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(56) ptr @_ZNK3MIR9Statement7as_Asm2Ev(ptr noundef nonnull align 8 dereferenceable(152)) local_unnamed_addr #5 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(128) ptr @_ZNK3MIR9Statement6as_AsmEv(ptr noundef nonnull align 8 dereferenceable(152)) local_unnamed_addr #5 align 2

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(44) ptr @_ZNK3MIR9Statement7as_DropEv(ptr noundef nonnull align 8 dereferenceable(152)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR9StatementESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5 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 dso_local noundef i32 @_ZNK3MIR10Terminator3tagEv(ptr noundef nonnull align 8 dereferenceable(168)) local_unnamed_addr #5 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8), i64 noundef) 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_iteratorIPKN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5 align 2

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

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 = { 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 #4 = { noreturn 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 #5 = { 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 nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nounwind }
attributes #9 = { noreturn nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !12}


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