; LLVM IR from thepowersgang/mrustc :: src/mir/mir.ll (ZN3MIRlsERSoRKNS_10TerminatorE)

; 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.__gnu_cxx::__normal_iterator.59" = type { ptr }
%"struct.MIR::Terminator::Data_Panic" = type { i32 }
%"struct.MIR::Terminator::Data_If" = type { %"struct.MIR::LValue", i32, i32 }
%"struct.MIR::LValue" = type { %"class.MIR::LValue::Storage", %"class.std::vector.16" }
%"class.MIR::LValue::Storage" = type { i64 }
%"class.std::vector.16" = type { %"struct.std::_Vector_base.17" }
%"struct.std::_Vector_base.17" = 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 }
%"struct.MIR::Terminator::Data_Switch" = type { %"struct.MIR::LValue", %"class.std::vector.34" }
%"class.std::vector.34" = type { %"struct.std::_Vector_base.35" }
%"struct.std::_Vector_base.35" = 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.34", %"class.MIR::SwitchValues" }
%"class.MIR::SwitchValues" = type { i32, %"union.MIR::SwitchValues::DataUnion" }
%"union.MIR::SwitchValues::DataUnion" = type { %"class.std::vector.39" }
%"class.std::vector.39" = type { %"struct.std::_Vector_base.40" }
%"struct.std::_Vector_base.40" = 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::Terminator::Data_Call" = type { i32, i32, %"struct.MIR::LValue", %"class.MIR::CallTarget", %"class.std::vector.29" }
%"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.8" }
%"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.5, %class.ThinVector.6, %class.ThinVector.7 }
%class.ThinVector.5 = type { ptr }
%class.ThinVector.6 = type { ptr }
%class.ThinVector.7 = type { ptr }
%"class.std::unique_ptr.8" = type { %"struct.std::__uniq_ptr_data.9" }
%"struct.std::__uniq_ptr_data.9" = type { %"class.std::__uniq_ptr_impl.10" }
%"class.std::__uniq_ptr_impl.10" = type { %"class.std::tuple.11" }
%"class.std::tuple.11" = type { %"struct.std::_Tuple_impl.12" }
%"struct.std::_Tuple_impl.12" = type { %"struct.std::_Head_base.15" }
%"struct.std::_Head_base.15" = type { ptr }
%"class.std::vector.29" = type { %"struct.std::_Vector_base.30" }
%"struct.std::_Vector_base.30" = 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::CallTarget::Data_Intrinsic" = type { %class.RcString, %"struct.HIR::PathParams" }

@.str = external hidden unnamed_addr constant [39 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [3 x i8], align 1
@__PRETTY_FUNCTION__._ZN3MIRlsERSoRKNS_10TerminatorE = external hidden unnamed_addr constant [70 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [5 x i8], align 1

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_10TerminatorE(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(168) %1) #3 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca ptr, align 8
  %19 = alloca i32, align 4
  %20 = alloca ptr, align 8
  %21 = alloca i32, align 4
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca %"class.__gnu_cxx::__normal_iterator.59", align 8
  %28 = alloca %"class.__gnu_cxx::__normal_iterator.59", align 8
  %29 = alloca ptr, align 8
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  %30 = load ptr, ptr %4, align 8, !tbaa !5
  %31 = call noundef i32 @_ZNK3MIR10Terminator3tagEv(ptr noundef nonnull align 8 dereferenceable(168) %30)
  switch i32 %31, label %377 [
    i32 0, label %32
    i32 1, label %33
    i32 2, label %39
    i32 3, label %45
    i32 4, label %51
    i32 5, label %61
    i32 6, label %72
    i32 7, label %92
    i32 8, label %129
    i32 9, label %296
  ]

32:                                               ; preds = %2
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 483, ptr noundef @__PRETTY_FUNCTION__._ZN3MIRlsERSoRKNS_10TerminatorE) #7
  unreachable

33:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #8
  %34 = load ptr, ptr %4, align 8, !tbaa !5
  %35 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator13as_IncompleteEv(ptr noundef nonnull align 8 dereferenceable(168) %34)
  store ptr %35, ptr %5, align 8, !tbaa !5
  %36 = load ptr, ptr %5, align 8, !tbaa !5
  %37 = load ptr, ptr %3, align 8, !tbaa !5
  %38 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %37, ptr noundef @.str.71)
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #8
  br label %377

39:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #8
  %40 = load ptr, ptr %4, align 8, !tbaa !5
  %41 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator9as_ReturnEv(ptr noundef nonnull align 8 dereferenceable(168) %40)
  store ptr %41, ptr %6, align 8, !tbaa !5
  %42 = load ptr, ptr %6, align 8, !tbaa !5
  %43 = load ptr, ptr %3, align 8, !tbaa !5
  %44 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef @.str.72)
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #8
  br label %377

45:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #8
  %46 = load ptr, ptr %4, align 8, !tbaa !5
  %47 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator10as_DivergeEv(ptr noundef nonnull align 8 dereferenceable(168) %46)
  store ptr %47, ptr %7, align 8, !tbaa !5
  %48 = load ptr, ptr %7, align 8, !tbaa !5
  %49 = load ptr, ptr %3, align 8, !tbaa !5
  %50 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef @.str.73)
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #8
  br label %377

51:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #8
  %52 = load ptr, ptr %4, align 8, !tbaa !5
  %53 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3MIR10Terminator7as_GotoEv(ptr noundef nonnull align 8 dereferenceable(168) %52)
  store ptr %53, ptr %8, align 8, !tbaa !5
  %54 = load ptr, ptr %8, align 8, !tbaa !5
  %55 = load ptr, ptr %3, align 8, !tbaa !5
  %56 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %55, ptr noundef @.str.74)
  %57 = load ptr, ptr %8, align 8, !tbaa !5
  %58 = load i32, ptr %57, align 4, !tbaa !9
  %59 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %56, i32 noundef %58)
  %60 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %59, ptr noundef @.str.22)
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #8
  br label %377

61:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #8
  %62 = load ptr, ptr %4, align 8, !tbaa !5
  %63 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3MIR10Terminator8as_PanicEv(ptr noundef nonnull align 8 dereferenceable(168) %62)
  store ptr %63, ptr %9, align 8, !tbaa !5
  %64 = load ptr, ptr %9, align 8, !tbaa !5
  %65 = load ptr, ptr %3, align 8, !tbaa !5
  %66 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %65, ptr noundef @.str.75)
  %67 = load ptr, ptr %9, align 8, !tbaa !5
  %68 = getelementptr inbounds %"struct.MIR::Terminator::Data_Panic", ptr %67, i32 0, i32 0
  %69 = load i32, ptr %68, align 4, !tbaa !11
  %70 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %66, i32 noundef %69)
  %71 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %70, ptr noundef @.str.76)
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #8
  br label %377

72:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #8
  %73 = load ptr, ptr %4, align 8, !tbaa !5
  %74 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR10Terminator5as_IfEv(ptr noundef nonnull align 8 dereferenceable(168) %73)
  store ptr %74, ptr %10, align 8, !tbaa !5
  %75 = load ptr, ptr %10, align 8, !tbaa !5
  %76 = load ptr, ptr %3, align 8, !tbaa !5
  %77 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %76, ptr noundef @.str.77)
  %78 = load ptr, ptr %10, align 8, !tbaa !5
  %79 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %78, i32 0, i32 0
  %80 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %77, ptr noundef nonnull align 8 dereferenceable(32) %79)
  %81 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %80, ptr noundef @.str.78)
  %82 = load ptr, ptr %10, align 8, !tbaa !5
  %83 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %82, i32 0, i32 1
  %84 = load i32, ptr %83, align 8, !tbaa !13
  %85 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %81, i32 noundef %84)
  %86 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %85, ptr noundef @.str.29)
  %87 = load ptr, ptr %10, align 8, !tbaa !5
  %88 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %87, i32 0, i32 2
  %89 = load i32, ptr %88, align 4, !tbaa !22
  %90 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %86, i32 noundef %89)
  %91 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %90, ptr noundef @.str.22)
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  br label %377

92:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #8
  %93 = load ptr, ptr %4, align 8, !tbaa !5
  %94 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNK3MIR10Terminator9as_SwitchEv(ptr noundef nonnull align 8 dereferenceable(168) %93)
  store ptr %94, ptr %11, align 8, !tbaa !5
  %95 = load ptr, ptr %11, align 8, !tbaa !5
  %96 = load ptr, ptr %3, align 8, !tbaa !5
  %97 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %96, ptr noundef @.str.79)
  %98 = load ptr, ptr %11, align 8, !tbaa !5
  %99 = getelementptr inbounds %"struct.MIR::Terminator::Data_Switch", ptr %98, i32 0, i32 0
  %100 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %97, ptr noundef nonnull align 8 dereferenceable(32) %99)
  %101 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %100, ptr noundef @.str.78)
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #8
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %102

102:                                              ; preds = %123, %92
  %103 = load i32, ptr %12, align 4, !tbaa !9
  %104 = zext i32 %103 to i64
  %105 = load ptr, ptr %11, align 8, !tbaa !5
  %106 = getelementptr inbounds %"struct.MIR::Terminator::Data_Switch", ptr %105, i32 0, i32 1
  %107 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %106) #8
  %108 = icmp ult i64 %104, %107
  br i1 %108, label %110, label %109

109:                                              ; preds = %102
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #8
  br label %126

110:                                              ; preds = %102
  %111 = load ptr, ptr %3, align 8, !tbaa !5
  %112 = load i32, ptr %12, align 4, !tbaa !9
  %113 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %111, i32 noundef %112)
  %114 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %113, ptr noundef @.str.80)
  %115 = load ptr, ptr %11, align 8, !tbaa !5
  %116 = getelementptr inbounds %"struct.MIR::Terminator::Data_Switch", ptr %115, i32 0, i32 1
  %117 = load i32, ptr %12, align 4, !tbaa !9
  %118 = zext i32 %117 to i64
  %119 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %116, i64 noundef %118) #8
  %120 = load i32, ptr %119, align 4, !tbaa !9
  %121 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %114, i32 noundef %120)
  %122 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %121, ptr noundef @.str.29)
  br label %123

123:                                              ; preds = %110
  %124 = load i32, ptr %12, align 4, !tbaa !9
  %125 = add i32 %124, 1
  store i32 %125, ptr %12, align 4, !tbaa !9
  br label %102, !llvm.loop !23

126:                                              ; preds = %109
  %127 = load ptr, ptr %3, align 8, !tbaa !5
  %128 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %127, ptr noundef @.str.22)
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  br label %377

129:                                              ; preds = %2
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #8
  %130 = load ptr, ptr %4, align 8, !tbaa !5
  %131 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNK3MIR10Terminator14as_SwitchValueEv(ptr noundef nonnull align 8 dereferenceable(168) %130)
  store ptr %131, ptr %13, align 8, !tbaa !5
  %132 = load ptr, ptr %13, align 8, !tbaa !5
  %133 = load ptr, ptr %3, align 8, !tbaa !5
  %134 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %133, ptr noundef @.str.81)
  %135 = load ptr, ptr %13, align 8, !tbaa !5
  %136 = getelementptr inbounds %"struct.MIR::Terminator::Data_SwitchValue", ptr %135, i32 0, i32 0
  %137 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %134, ptr noundef nonnull align 8 dereferenceable(32) %136)
  %138 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %137, ptr noundef @.str.78)
  %139 = load ptr, ptr %13, align 8, !tbaa !5
  %140 = getelementptr inbounds %"struct.MIR::Terminator::Data_SwitchValue", ptr %139, i32 0, i32 3
  %141 = call noundef i32 @_ZNK3MIR12SwitchValues3tagEv(ptr noundef nonnull align 8 dereferenceable(32) %140)
  switch i32 %141, label %288 [
    i32 0, label %142
    i32 1, label %143
    i32 2, label %177
    i32 3, label %220
    i32 4, label %254
  ]

142:                                              ; preds = %129
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 462, ptr noundef @__PRETTY_FUNCTION__._ZN3MIRlsERSoRKNS_10TerminatorE) #7
  unreachable

143:                                              ; preds = %129
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #8
  %144 = load ptr, ptr %13, align 8, !tbaa !5
  %145 = getelementptr inbounds %"struct.MIR::Terminator::Data_SwitchValue", ptr %144, i32 0, i32 3
  %146 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR12SwitchValues11as_UnsignedEv(ptr noundef nonnull align 8 dereferenceable(32) %145)
  store ptr %146, ptr %14, align 8, !tbaa !5
  %147 = load ptr, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #8
  store i32 0, ptr %15, align 4, !tbaa !9
  br label %148

148:                                              ; preds = %173, %143
  %149 = load i32, ptr %15, align 4, !tbaa !9
  %150 = zext i32 %149 to i64
  %151 = load ptr, ptr %13, align 8, !tbaa !5
  %152 = getelementptr inbounds %"struct.MIR::Terminator::Data_SwitchValue", ptr %151, i32 0, i32 2
  %153 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %152) #8
  %154 = icmp ult i64 %150, %153
  br i1 %154, label %156, label %155

155:                                              ; preds = %148
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #8
  br label %176

156:                                              ; preds = %148
  %157 = load ptr, ptr %3, align 8, !tbaa !5
  %158 = load ptr, ptr %14, align 8, !tbaa !5
  %159 = load i32, ptr %15, align 4, !tbaa !9
  %160 = zext i32 %159 to i64
  %161 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %158, i64 noundef %160) #8
  %162 = load i64, ptr %161, align 8, !tbaa !25
  %163 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %157, i64 noundef %162)
  %164 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %163, ptr noundef @.str.80)
  %165 = load ptr, ptr %13, align 8, !tbaa !5
  %166 = getelementptr inbounds %"struct.MIR::Terminator::Data_SwitchValue", ptr %165, i32 0, i32 2
  %167 = load i32, ptr %15, align 4, !tbaa !9
  %168 = zext i32 %167 to i64
  %169 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %166, i64 noundef %168) #8
  %170 = load i32, ptr %169, align 4, !tbaa !9
  %171 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %164, i32 noundef %170)
  %172 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %171, ptr noundef @.str.29)
  br label %173

173:                                              ; preds = %156
  %174 = load i32, ptr %15, align 4, !tbaa !9
  %175 = add i32 %174, 1
  store i32 %175, ptr %15, align 4, !tbaa !9
  br label %148, !llvm.loop !26

176:                                              ; preds = %155
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #8
  br label %288

177:                                              ; preds = %129
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #8
  %178 = load ptr, ptr %13, align 8, !tbaa !5
  %179 = getelementptr inbounds %"struct.MIR::Terminator::Data_SwitchValue", ptr %178, i32 0, i32 3
  %180 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR12SwitchValues9as_SignedEv(ptr noundef nonnull align 8 dereferenceable(32) %179)
  store ptr %180, ptr %16, align 8, !tbaa !5
  %181 = load ptr, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #8
  store i32 0, ptr %17, align 4, !tbaa !9
  br label %182

182:                                              ; preds = %216, %177
  %183 = load i32, ptr %17, align 4, !tbaa !9
  %184 = zext i32 %183 to i64
  %185 = load ptr, ptr %13, align 8, !tbaa !5
  %186 = getelementptr inbounds %"struct.MIR::Terminator::Data_SwitchValue", ptr %185, i32 0, i32 2
  %187 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %186) #8
  %188 = icmp ult i64 %184, %187
  br i1 %188, label %190, label %189

189:                                              ; preds = %182
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  br label %219

190:                                              ; preds = %182
  %191 = load ptr, ptr %3, align 8, !tbaa !5
  %192 = load ptr, ptr %16, align 8, !tbaa !5
  %193 = load i32, ptr %17, align 4, !tbaa !9
  %194 = zext i32 %193 to i64
  %195 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %192, i64 noundef %194) #8
  %196 = load i64, ptr %195, align 8, !tbaa !25
  %197 = icmp sge i64 %196, 0
  %198 = zext i1 %197 to i64
  %199 = select i1 %197, ptr @.str.3, ptr @.str.17
  %200 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %191, ptr noundef %199)
  %201 = load ptr, ptr %16, align 8, !tbaa !5
  %202 = load i32, ptr %17, align 4, !tbaa !9
  %203 = zext i32 %202 to i64
  %204 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %201, i64 noundef %203) #8
  %205 = load i64, ptr %204, align 8, !tbaa !25
  %206 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEl(ptr noundef nonnull align 8 dereferenceable(8) %200, i64 noundef %205)
  %207 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %206, ptr noundef @.str.80)
  %208 = load ptr, ptr %13, align 8, !tbaa !5
  %209 = getelementptr inbounds %"struct.MIR::Terminator::Data_SwitchValue", ptr %208, i32 0, i32 2
  %210 = load i32, ptr %17, align 4, !tbaa !9
  %211 = zext i32 %210 to i64
  %212 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %209, i64 noundef %211) #8
  %213 = load i32, ptr %212, align 4, !tbaa !9
  %214 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %207, i32 noundef %213)
  %215 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %214, ptr noundef @.str.29)
  br label %216

216:                                              ; preds = %190
  %217 = load i32, ptr %17, align 4, !tbaa !9
  %218 = add i32 %217, 1
  store i32 %218, ptr %17, align 4, !tbaa !9
  br label %182, !llvm.loop !27

219:                                              ; preds = %189
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  br label %288

220:                                              ; preds = %129
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #8
  %221 = load ptr, ptr %13, align 8, !tbaa !5
  %222 = getelementptr inbounds %"struct.MIR::Terminator::Data_SwitchValue", ptr %221, i32 0, i32 3
  %223 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR12SwitchValues9as_StringB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(32) %222)
  store ptr %223, ptr %18, align 8, !tbaa !5
  %224 = load ptr, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #8
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %225

225:                                              ; preds = %250, %220
  %226 = load i32, ptr %19, align 4, !tbaa !9
  %227 = zext i32 %226 to i64
  %228 = load ptr, ptr %13, align 8, !tbaa !5
  %229 = getelementptr inbounds %"struct.MIR::Terminator::Data_SwitchValue", ptr %228, i32 0, i32 2
  %230 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %229) #8
  %231 = icmp ult i64 %227, %230
  br i1 %231, label %233, label %232

232:                                              ; preds = %225
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #8
  br label %253

233:                                              ; preds = %225
  %234 = load ptr, ptr %3, align 8, !tbaa !5
  %235 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %234, ptr noundef @.str.12)
  %236 = load ptr, ptr %18, align 8, !tbaa !5
  %237 = load i32, ptr %19, align 4, !tbaa !9
  %238 = zext i32 %237 to i64
  %239 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %236, i64 noundef %238) #8
  %240 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %235, ptr noundef nonnull align 8 dereferenceable(32) %239)
  %241 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %240, ptr noundef @.str.82)
  %242 = load ptr, ptr %13, align 8, !tbaa !5
  %243 = getelementptr inbounds %"struct.MIR::Terminator::Data_SwitchValue", ptr %242, i32 0, i32 2
  %244 = load i32, ptr %19, align 4, !tbaa !9
  %245 = zext i32 %244 to i64
  %246 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %243, i64 noundef %245) #8
  %247 = load i32, ptr %246, align 4, !tbaa !9
  %248 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %241, i32 noundef %247)
  %249 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %248, ptr noundef @.str.29)
  br label %250

250:                                              ; preds = %233
  %251 = load i32, ptr %19, align 4, !tbaa !9
  %252 = add i32 %251, 1
  store i32 %252, ptr %19, align 4, !tbaa !9
  br label %225, !llvm.loop !28

253:                                              ; preds = %232
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  br label %288

254:                                              ; preds = %129
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #8
  %255 = load ptr, ptr %13, align 8, !tbaa !5
  %256 = getelementptr inbounds %"struct.MIR::Terminator::Data_SwitchValue", ptr %255, i32 0, i32 3
  %257 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR12SwitchValues13as_ByteStringEv(ptr noundef nonnull align 8 dereferenceable(32) %256)
  store ptr %257, ptr %20, align 8, !tbaa !5
  %258 = load ptr, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #8
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %259

259:                                              ; preds = %284, %254
  %260 = load i32, ptr %21, align 4, !tbaa !9
  %261 = zext i32 %260 to i64
  %262 = load ptr, ptr %13, align 8, !tbaa !5
  %263 = getelementptr inbounds %"struct.MIR::Terminator::Data_SwitchValue", ptr %262, i32 0, i32 2
  %264 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %263) #8
  %265 = icmp ult i64 %261, %264
  br i1 %265, label %267, label %266

266:                                              ; preds = %259
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  br label %287

267:                                              ; preds = %259
  %268 = load ptr, ptr %3, align 8, !tbaa !5
  %269 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %268, ptr noundef @.str.8)
  %270 = load ptr, ptr %20, align 8, !tbaa !5
  %271 = load i32, ptr %21, align 4, !tbaa !9
  %272 = zext i32 %271 to i64
  %273 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IhSaIhEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %270, i64 noundef %272) #8
  %274 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIhERSoS0_RKSt6vectorIT_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(8) %269, ptr noundef nonnull align 8 dereferenceable(24) %273)
  %275 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %274, ptr noundef @.str.82)
  %276 = load ptr, ptr %13, align 8, !tbaa !5
  %277 = getelementptr inbounds %"struct.MIR::Terminator::Data_SwitchValue", ptr %276, i32 0, i32 2
  %278 = load i32, ptr %21, align 4, !tbaa !9
  %279 = zext i32 %278 to i64
  %280 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %277, i64 noundef %279) #8
  %281 = load i32, ptr %280, align 4, !tbaa !9
  %282 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %275, i32 noundef %281)
  %283 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %282, ptr noundef @.str.29)
  br label %284

284:                                              ; preds = %267
  %285 = load i32, ptr %21, align 4, !tbaa !9
  %286 = add i32 %285, 1
  store i32 %286, ptr %21, align 4, !tbaa !9
  br label %259, !llvm.loop !29

287:                                              ; preds = %266
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  br label %288

288:                                              ; preds = %287, %253, %219, %176, %129
  %289 = load ptr, ptr %3, align 8, !tbaa !5
  %290 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %289, ptr noundef @.str.83)
  %291 = load ptr, ptr %13, align 8, !tbaa !5
  %292 = getelementptr inbounds %"struct.MIR::Terminator::Data_SwitchValue", ptr %291, i32 0, i32 1
  %293 = load i32, ptr %292, align 8, !tbaa !30
  %294 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %290, i32 noundef %293)
  %295 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %294, ptr noundef @.str.22)
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #8
  br label %377

296:                                              ; preds = %2
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #8
  %297 = load ptr, ptr %4, align 8, !tbaa !5
  %298 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3MIR10Terminator7as_CallEv(ptr noundef nonnull align 8 dereferenceable(168) %297)
  store ptr %298, ptr %22, align 8, !tbaa !5
  %299 = load ptr, ptr %22, align 8, !tbaa !5
  %300 = load ptr, ptr %3, align 8, !tbaa !5
  %301 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %300, ptr noundef @.str.84)
  %302 = load ptr, ptr %22, align 8, !tbaa !5
  %303 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %302, i32 0, i32 2
  %304 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %301, ptr noundef nonnull align 8 dereferenceable(32) %303)
  %305 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %304, ptr noundef @.str.85)
  %306 = load ptr, ptr %22, align 8, !tbaa !5
  %307 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %306, i32 0, i32 3
  %308 = call noundef i32 @_ZNK3MIR10CallTarget3tagEv(ptr noundef nonnull align 8 dereferenceable(96) %307)
  switch i32 %308, label %342 [
    i32 0, label %309
    i32 1, label %310
    i32 2, label %320
    i32 3, label %328
  ]

309:                                              ; preds = %296
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 477, ptr noundef @__PRETTY_FUNCTION__._ZN3MIRlsERSoRKNS_10TerminatorE) #7
  unreachable

310:                                              ; preds = %296
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #8
  %311 = load ptr, ptr %22, align 8, !tbaa !5
  %312 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %311, i32 0, i32 3
  %313 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR10CallTarget8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(96) %312)
  store ptr %313, ptr %23, align 8, !tbaa !5
  %314 = load ptr, ptr %23, align 8, !tbaa !5
  %315 = load ptr, ptr %3, align 8, !tbaa !5
  %316 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %315, ptr noundef @.str.21)
  %317 = load ptr, ptr %23, align 8, !tbaa !5
  %318 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %316, ptr noundef nonnull align 8 dereferenceable(32) %317)
  %319 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %318, ptr noundef @.str.22)
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  br label %342

320:                                              ; preds = %296
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #8
  %321 = load ptr, ptr %22, align 8, !tbaa !5
  %322 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %321, i32 0, i32 3
  %323 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNK3MIR10CallTarget7as_PathEv(ptr noundef nonnull align 8 dereferenceable(96) %322)
  store ptr %323, ptr %24, align 8, !tbaa !5
  %324 = load ptr, ptr %24, align 8, !tbaa !5
  %325 = load ptr, ptr %3, align 8, !tbaa !5
  %326 = load ptr, ptr %24, align 8, !tbaa !5
  %327 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8) %325, ptr noundef nonnull align 8 dereferenceable(88) %326)
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  br label %342

328:                                              ; preds = %296
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #8
  %329 = load ptr, ptr %22, align 8, !tbaa !5
  %330 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %329, i32 0, i32 3
  %331 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR10CallTarget12as_IntrinsicEv(ptr noundef nonnull align 8 dereferenceable(96) %330)
  store ptr %331, ptr %25, align 8, !tbaa !5
  %332 = load ptr, ptr %25, align 8, !tbaa !5
  %333 = load ptr, ptr %3, align 8, !tbaa !5
  %334 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %333, ptr noundef @.str.12)
  %335 = load ptr, ptr %25, align 8, !tbaa !5
  %336 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %335, i32 0, i32 0
  %337 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %334, ptr noundef nonnull align 8 dereferenceable(8) %336)
  %338 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %337, ptr noundef @.str.86)
  %339 = load ptr, ptr %25, align 8, !tbaa !5
  %340 = getelementptr inbounds %"struct.MIR::CallTarget::Data_Intrinsic", ptr %339, i32 0, i32 1
  %341 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(8) %338, ptr noundef nonnull align 8 dereferenceable(24) %340)
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  br label %342

342:                                              ; preds = %328, %320, %310, %296
  %343 = load ptr, ptr %3, align 8, !tbaa !5
  %344 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %343, ptr noundef @.str.87)
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #8
  %345 = load ptr, ptr %22, align 8, !tbaa !5
  %346 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %345, i32 0, i32 4
  store ptr %346, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #8
  %347 = load ptr, ptr %26, align 8, !tbaa !5
  %348 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %347) #8
  %349 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.59", ptr %27, i32 0, i32 0
  store ptr %348, ptr %349, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #8
  %350 = load ptr, ptr %26, align 8, !tbaa !5
  %351 = call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %350) #8
  %352 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.59", ptr %28, i32 0, i32 0
  store ptr %351, ptr %352, align 8
  br label %353

353:                                              ; preds = %362, %342
  %354 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(8) %28) #8
  br i1 %354, label %356, label %355

355:                                              ; preds = %353
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  br label %364

356:                                              ; preds = %353
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #8
  %357 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %27) #8
  store ptr %357, ptr %29, align 8, !tbaa !5
  %358 = load ptr, ptr %3, align 8, !tbaa !5
  %359 = load ptr, ptr %29, align 8, !tbaa !5
  %360 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(8) %358, ptr noundef nonnull align 8 dereferenceable(48) %359)
  %361 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %360, ptr noundef @.str.29)
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  br label %362

362:                                              ; preds = %356
  %363 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %27) #8
  br label %353

364:                                              ; preds = %355
  %365 = load ptr, ptr %3, align 8, !tbaa !5
  %366 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %365, ptr noundef @.str.88)
  %367 = load ptr, ptr %22, align 8, !tbaa !5
  %368 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %367, i32 0, i32 0
  %369 = load i32, ptr %368, align 8, !tbaa !38
  %370 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %366, i32 noundef %369)
  %371 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %370, ptr noundef @.str.89)
  %372 = load ptr, ptr %22, align 8, !tbaa !5
  %373 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %372, i32 0, i32 1
  %374 = load i32, ptr %373, align 4, !tbaa !46
  %375 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %371, i32 noundef %374)
  %376 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %375, ptr noundef @.str.22)
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  br label %377

377:                                              ; preds = %364, %288, %126, %72, %61, %51, %45, %39, %33, %2
  %378 = load ptr, ptr %3, align 8, !tbaa !5
  ret ptr %378
}

; 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 i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #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 i32 @_ZNK3MIR12SwitchValues3tagEv(ptr noundef nonnull align 8 dereferenceable(32)) #5 align 2

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

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

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

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

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

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

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

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24)) #4

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #4

; 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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !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 = !{!12, !10, i64 0}
!12 = !{!"_ZTSN3MIR10Terminator10Data_PanicE", !10, i64 0}
!13 = !{!14, !10, i64 32}
!14 = !{!"_ZTSN3MIR10Terminator7Data_IfE", !15, i64 0, !10, i64 32, !10, i64 36}
!15 = !{!"_ZTSN3MIR6LValueE", !16, i64 0, !18, i64 8}
!16 = !{!"_ZTSN3MIR6LValue7StorageE", !17, i64 0}
!17 = !{!"long", !7, i64 0}
!18 = !{!"_ZTSSt6vectorIN3MIR6LValue7WrapperESaIS2_EE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!22 = !{!14, !10, i64 36}
!23 = distinct !{!23, !24}
!24 = !{!"llvm.loop.mustprogress"}
!25 = !{!17, !17, i64 0}
!26 = distinct !{!26, !24}
!27 = distinct !{!27, !24}
!28 = distinct !{!28, !24}
!29 = distinct !{!29, !24}
!30 = !{!31, !10, i64 32}
!31 = !{!"_ZTSN3MIR10Terminator16Data_SwitchValueE", !15, i64 0, !10, i64 32, !32, i64 40, !36, i64 64}
!32 = !{!"_ZTSSt6vectorIjSaIjEE", !33, i64 0}
!33 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!36 = !{!"_ZTSN3MIR12SwitchValuesE", !37, i64 0, !7, i64 8}
!37 = !{!"_ZTSN3MIR12SwitchValues3TagE", !7, i64 0}
!38 = !{!39, !10, i64 0}
!39 = !{!"_ZTSN3MIR10Terminator9Data_CallE", !10, i64 0, !10, i64 4, !15, i64 8, !40, i64 40, !42, i64 136}
!40 = !{!"_ZTSN3MIR10CallTargetE", !41, i64 0, !7, i64 8}
!41 = !{!"_ZTSN3MIR10CallTarget3TagE", !7, i64 0}
!42 = !{!"_ZTSSt6vectorIN3MIR5ParamESaIS1_EE", !43, i64 0}
!43 = !{!"_ZTSSt12_Vector_baseIN3MIR5ParamESaIS1_EE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE12_Vector_implE", !45, i64 0}
!45 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!46 = !{!39, !10, i64 4}


; 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.__gnu_cxx::__normal_iterator.59" = type { ptr }

@.str = external hidden unnamed_addr constant [39 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [3 x i8], align 1
@__PRETTY_FUNCTION__._ZN3MIRlsERSoRKNS_10TerminatorE = external hidden unnamed_addr constant [70 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [5 x i8], align 1

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local 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 #3

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

; Function Attrs: mustprogress uwtable
define dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_10TerminatorE(ptr noundef nonnull returned align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(168) %1) local_unnamed_addr #3 {
  %3 = alloca %"class.__gnu_cxx::__normal_iterator.59", align 8
  %4 = alloca %"class.__gnu_cxx::__normal_iterator.59", align 8
  %5 = tail call noundef i32 @_ZNK3MIR10Terminator3tagEv(ptr noundef nonnull align 8 dereferenceable(168) %1)
  switch i32 %5, label %189 [
    i32 0, label %6
    i32 1, label %7
    i32 2, label %10
    i32 3, label %13
    i32 4, label %16
    i32 5, label %22
    i32 6, label %28
    i32 7, label %41
    i32 8, label %60
    i32 9, label %146
  ]

6:                                                ; preds = %2
  tail call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 483, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3MIRlsERSoRKNS_10TerminatorE) #7
  unreachable

7:                                                ; preds = %2
  %8 = tail call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator13as_IncompleteEv(ptr noundef nonnull align 8 dereferenceable(168) %1)
  %9 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull @.str.71)
  br label %189

10:                                               ; preds = %2
  %11 = tail call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator9as_ReturnEv(ptr noundef nonnull align 8 dereferenceable(168) %1)
  %12 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull @.str.72)
  br label %189

13:                                               ; preds = %2
  %14 = tail call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator10as_DivergeEv(ptr noundef nonnull align 8 dereferenceable(168) %1)
  %15 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull @.str.73)
  br label %189

16:                                               ; preds = %2
  %17 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3MIR10Terminator7as_GotoEv(ptr noundef nonnull align 8 dereferenceable(168) %1)
  %18 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull @.str.74)
  %19 = load i32, ptr %17, align 4, !tbaa !5
  %20 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %18, i32 noundef %19)
  %21 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull @.str.22)
  br label %189

22:                                               ; preds = %2
  %23 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3MIR10Terminator8as_PanicEv(ptr noundef nonnull align 8 dereferenceable(168) %1)
  %24 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull @.str.75)
  %25 = load i32, ptr %23, align 4, !tbaa !9
  %26 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %24, i32 noundef %25)
  %27 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull @.str.76)
  br label %189

28:                                               ; preds = %2
  %29 = tail call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR10Terminator5as_IfEv(ptr noundef nonnull align 8 dereferenceable(168) %1)
  %30 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull @.str.77)
  %31 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(32) %29)
  %32 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef nonnull @.str.78)
  %33 = getelementptr inbounds i8, ptr %29, i64 32
  %34 = load i32, ptr %33, align 8, !tbaa !11
  %35 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %32, i32 noundef %34)
  %36 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull @.str.29)
  %37 = getelementptr inbounds i8, ptr %29, i64 36
  %38 = load i32, ptr %37, align 4, !tbaa !21
  %39 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %36, i32 noundef %38)
  %40 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull @.str.22)
  br label %189

41:                                               ; preds = %2
  %42 = tail call noundef nonnull align 8 dereferenceable(56) ptr @_ZNK3MIR10Terminator9as_SwitchEv(ptr noundef nonnull align 8 dereferenceable(168) %1)
  %43 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull @.str.79)
  %44 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull align 8 dereferenceable(32) %42)
  %45 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef nonnull @.str.78)
  %46 = getelementptr inbounds i8, ptr %42, i64 32
  %47 = tail call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %46) #8
  %.not143 = icmp eq i64 %47, 0
  br i1 %.not143, label %._crit_edge139, label %.lr.ph138

._crit_edge139:                                   ; preds = %.lr.ph138, %41
  %48 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull @.str.22)
  br label %189

.lr.ph138:                                        ; preds = %41, %.lr.ph138
  %49 = phi i64 [ %57, %.lr.ph138 ], [ 0, %41 ]
  %.0136 = phi i32 [ %56, %.lr.ph138 ], [ 0, %41 ]
  %50 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef %.0136)
  %51 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %50, ptr noundef nonnull @.str.80)
  %52 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %46, i64 noundef %49) #8
  %53 = load i32, ptr %52, align 4, !tbaa !5
  %54 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %51, i32 noundef %53)
  %55 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %54, ptr noundef nonnull @.str.29)
  %56 = add i32 %.0136, 1
  %57 = zext i32 %56 to i64
  %58 = tail call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %46) #8
  %59 = icmp ugt i64 %58, %57
  br i1 %59, label %.lr.ph138, label %._crit_edge139, !llvm.loop !22

60:                                               ; preds = %2
  %61 = tail call noundef nonnull align 8 dereferenceable(96) ptr @_ZNK3MIR10Terminator14as_SwitchValueEv(ptr noundef nonnull align 8 dereferenceable(168) %1)
  %62 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull @.str.81)
  %63 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %62, ptr noundef nonnull align 8 dereferenceable(32) %61)
  %64 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef nonnull @.str.78)
  %65 = getelementptr inbounds i8, ptr %61, i64 64
  %66 = tail call noundef i32 @_ZNK3MIR12SwitchValues3tagEv(ptr noundef nonnull align 8 dereferenceable(32) %65)
  switch i32 %66, label %.loopexit [
    i32 0, label %67
    i32 1, label %68
    i32 2, label %85
    i32 3, label %107
    i32 4, label %124
  ]

67:                                               ; preds = %60
  tail call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 462, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3MIRlsERSoRKNS_10TerminatorE) #7
  unreachable

68:                                               ; preds = %60
  %69 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR12SwitchValues11as_UnsignedEv(ptr noundef nonnull align 8 dereferenceable(32) %65)
  %70 = getelementptr inbounds i8, ptr %61, i64 40
  %71 = tail call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %70) #8
  %.not142 = icmp eq i64 %71, 0
  br i1 %.not142, label %.loopexit, label %.lr.ph135

.lr.ph135:                                        ; preds = %68, %.lr.ph135
  %72 = phi i64 [ %82, %.lr.ph135 ], [ 0, %68 ]
  %.0112133 = phi i32 [ %81, %.lr.ph135 ], [ 0, %68 ]
  %73 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %69, i64 noundef %72) #8
  %74 = load i64, ptr %73, align 8, !tbaa !24
  %75 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %0, i64 noundef %74)
  %76 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %75, ptr noundef nonnull @.str.80)
  %77 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %70, i64 noundef %72) #8
  %78 = load i32, ptr %77, align 4, !tbaa !5
  %79 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %76, i32 noundef %78)
  %80 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %79, ptr noundef nonnull @.str.29)
  %81 = add i32 %.0112133, 1
  %82 = zext i32 %81 to i64
  %83 = tail call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %70) #8
  %84 = icmp ugt i64 %83, %82
  br i1 %84, label %.lr.ph135, label %.loopexit, !llvm.loop !25

85:                                               ; preds = %60
  %86 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR12SwitchValues9as_SignedEv(ptr noundef nonnull align 8 dereferenceable(32) %65)
  %87 = getelementptr inbounds i8, ptr %61, i64 40
  %88 = tail call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %87) #8
  %.not141 = icmp eq i64 %88, 0
  br i1 %.not141, label %.loopexit, label %.lr.ph132

.lr.ph132:                                        ; preds = %85, %.lr.ph132
  %89 = phi i64 [ %104, %.lr.ph132 ], [ 0, %85 ]
  %.0113130 = phi i32 [ %103, %.lr.ph132 ], [ 0, %85 ]
  %90 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %86, i64 noundef %89) #8
  %91 = load i64, ptr %90, align 8, !tbaa !24
  %92 = icmp sgt i64 %91, -1
  %93 = select i1 %92, ptr @.str.3, ptr @.str.17
  %94 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull %93)
  %95 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %86, i64 noundef %89) #8
  %96 = load i64, ptr %95, align 8, !tbaa !24
  %97 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEl(ptr noundef nonnull align 8 dereferenceable(8) %94, i64 noundef %96)
  %98 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %97, ptr noundef nonnull @.str.80)
  %99 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %87, i64 noundef %89) #8
  %100 = load i32, ptr %99, align 4, !tbaa !5
  %101 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %98, i32 noundef %100)
  %102 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %101, ptr noundef nonnull @.str.29)
  %103 = add i32 %.0113130, 1
  %104 = zext i32 %103 to i64
  %105 = tail call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %87) #8
  %106 = icmp ugt i64 %105, %104
  br i1 %106, label %.lr.ph132, label %.loopexit, !llvm.loop !26

107:                                              ; preds = %60
  %108 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR12SwitchValues9as_StringB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(32) %65)
  %109 = getelementptr inbounds i8, ptr %61, i64 40
  %110 = tail call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %109) #8
  %.not140 = icmp eq i64 %110, 0
  br i1 %.not140, label %.loopexit, label %.lr.ph129

.lr.ph129:                                        ; preds = %107, %.lr.ph129
  %111 = phi i64 [ %121, %.lr.ph129 ], [ 0, %107 ]
  %.0114127 = phi i32 [ %120, %.lr.ph129 ], [ 0, %107 ]
  %112 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull @.str.12)
  %113 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %108, i64 noundef %111) #8
  %114 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %112, ptr noundef nonnull align 8 dereferenceable(32) %113)
  %115 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %114, ptr noundef nonnull @.str.82)
  %116 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %109, i64 noundef %111) #8
  %117 = load i32, ptr %116, align 4, !tbaa !5
  %118 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %115, i32 noundef %117)
  %119 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %118, ptr noundef nonnull @.str.29)
  %120 = add i32 %.0114127, 1
  %121 = zext i32 %120 to i64
  %122 = tail call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %109) #8
  %123 = icmp ugt i64 %122, %121
  br i1 %123, label %.lr.ph129, label %.loopexit, !llvm.loop !27

124:                                              ; preds = %60
  %125 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR12SwitchValues13as_ByteStringEv(ptr noundef nonnull align 8 dereferenceable(32) %65)
  %126 = getelementptr inbounds i8, ptr %61, i64 40
  %127 = tail call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %126) #8
  %.not = icmp eq i64 %127, 0
  br i1 %.not, label %.loopexit, label %.lr.ph126

.lr.ph126:                                        ; preds = %124, %.lr.ph126
  %128 = phi i64 [ %138, %.lr.ph126 ], [ 0, %124 ]
  %.0115124 = phi i32 [ %137, %.lr.ph126 ], [ 0, %124 ]
  %129 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull @.str.8)
  %130 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IhSaIhEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %125, i64 noundef %128) #8
  %131 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIhERSoS0_RKSt6vectorIT_SaIS2_EE(ptr noundef nonnull align 8 dereferenceable(8) %129, ptr noundef nonnull align 8 dereferenceable(24) %130)
  %132 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %131, ptr noundef nonnull @.str.82)
  %133 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %126, i64 noundef %128) #8
  %134 = load i32, ptr %133, align 4, !tbaa !5
  %135 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %132, i32 noundef %134)
  %136 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %135, ptr noundef nonnull @.str.29)
  %137 = add i32 %.0115124, 1
  %138 = zext i32 %137 to i64
  %139 = tail call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %126) #8
  %140 = icmp ugt i64 %139, %138
  br i1 %140, label %.lr.ph126, label %.loopexit, !llvm.loop !28

.loopexit:                                        ; preds = %.lr.ph126, %.lr.ph129, %.lr.ph132, %.lr.ph135, %124, %107, %85, %68, %60
  %141 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull @.str.83)
  %142 = getelementptr inbounds i8, ptr %61, i64 32
  %143 = load i32, ptr %142, align 8, !tbaa !29
  %144 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %141, i32 noundef %143)
  %145 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %144, ptr noundef nonnull @.str.22)
  br label %189

146:                                              ; preds = %2
  %147 = tail call noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3MIR10Terminator7as_CallEv(ptr noundef nonnull align 8 dereferenceable(168) %1)
  %148 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull @.str.84)
  %149 = getelementptr inbounds i8, ptr %147, i64 8
  %150 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %148, ptr noundef nonnull align 8 dereferenceable(32) %149)
  %151 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %150, ptr noundef nonnull @.str.85)
  %152 = getelementptr inbounds i8, ptr %147, i64 40
  %153 = tail call noundef i32 @_ZNK3MIR10CallTarget3tagEv(ptr noundef nonnull align 8 dereferenceable(96) %152)
  switch i32 %153, label %170 [
    i32 0, label %154
    i32 1, label %155
    i32 2, label %160
    i32 3, label %163
  ]

154:                                              ; preds = %146
  tail call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 477, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3MIRlsERSoRKNS_10TerminatorE) #7
  unreachable

155:                                              ; preds = %146
  %156 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR10CallTarget8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(96) %152)
  %157 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull @.str.21)
  %158 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %157, ptr noundef nonnull align 8 dereferenceable(32) %156)
  %159 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %158, ptr noundef nonnull @.str.22)
  br label %170

160:                                              ; preds = %146
  %161 = tail call noundef nonnull align 8 dereferenceable(88) ptr @_ZNK3MIR10CallTarget7as_PathEv(ptr noundef nonnull align 8 dereferenceable(96) %152)
  %162 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(88) %161)
  br label %170

163:                                              ; preds = %146
  %164 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR10CallTarget12as_IntrinsicEv(ptr noundef nonnull align 8 dereferenceable(96) %152)
  %165 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull @.str.12)
  %166 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %165, ptr noundef nonnull align 8 dereferenceable(8) %164)
  %167 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %166, ptr noundef nonnull @.str.86)
  %168 = getelementptr inbounds i8, ptr %164, i64 8
  %169 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(8) %167, ptr noundef nonnull align 8 dereferenceable(24) %168)
  br label %170

170:                                              ; preds = %163, %160, %155, %146
  %171 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull @.str.87)
  %172 = getelementptr inbounds i8, ptr %147, i64 136
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #8
  %173 = tail call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %172) #8
  store ptr %173, ptr %3, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #8
  %174 = tail call ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %172) #8
  store ptr %174, ptr %4, align 8
  %175 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(8) %4) #8
  br i1 %175, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph, %170
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #8
  %176 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull @.str.88)
  %177 = load i32, ptr %147, align 8, !tbaa !37
  %178 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %176, i32 noundef %177)
  %179 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %178, ptr noundef nonnull @.str.89)
  %180 = getelementptr inbounds i8, ptr %147, i64 4
  %181 = load i32, ptr %180, align 4, !tbaa !45
  %182 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %179, i32 noundef %181)
  %183 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %182, ptr noundef nonnull @.str.22)
  br label %189

.lr.ph:                                           ; preds = %170, %.lr.ph
  %184 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #8
  %185 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(48) %184)
  %186 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %185, ptr noundef nonnull @.str.29)
  %187 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #8
  %188 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR5ParamESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(8) %4) #8
  br i1 %188, label %.lr.ph, label %._crit_edge

189:                                              ; preds = %._crit_edge, %.loopexit, %._crit_edge139, %28, %22, %16, %13, %10, %7, %2
  ret ptr %0
}

; 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 i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) 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 i32 @_ZNK3MIR12SwitchValues3tagEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #5 align 2

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IhSaIhEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) 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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #4

; 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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 0}
!10 = !{!"_ZTSN3MIR10Terminator10Data_PanicE", !6, i64 0}
!11 = !{!12, !6, i64 32}
!12 = !{!"_ZTSN3MIR10Terminator7Data_IfE", !13, i64 0, !6, i64 32, !6, i64 36}
!13 = !{!"_ZTSN3MIR6LValueE", !14, i64 0, !16, i64 8}
!14 = !{!"_ZTSN3MIR6LValue7StorageE", !15, i64 0}
!15 = !{!"long", !7, i64 0}
!16 = !{!"_ZTSSt6vectorIN3MIR6LValue7WrapperESaIS2_EE", !17, i64 0}
!17 = !{!"_ZTSSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE12_Vector_implE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE17_Vector_impl_dataE", !20, i64 0, !20, i64 8, !20, i64 16}
!20 = !{!"any pointer", !7, i64 0}
!21 = !{!12, !6, i64 36}
!22 = distinct !{!22, !23}
!23 = !{!"llvm.loop.mustprogress"}
!24 = !{!15, !15, i64 0}
!25 = distinct !{!25, !23}
!26 = distinct !{!26, !23}
!27 = distinct !{!27, !23}
!28 = distinct !{!28, !23}
!29 = !{!30, !6, i64 32}
!30 = !{!"_ZTSN3MIR10Terminator16Data_SwitchValueE", !13, i64 0, !6, i64 32, !31, i64 40, !35, i64 64}
!31 = !{!"_ZTSSt6vectorIjSaIjEE", !32, i64 0}
!32 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !20, i64 0, !20, i64 8, !20, i64 16}
!35 = !{!"_ZTSN3MIR12SwitchValuesE", !36, i64 0, !7, i64 8}
!36 = !{!"_ZTSN3MIR12SwitchValues3TagE", !7, i64 0}
!37 = !{!38, !6, i64 0}
!38 = !{!"_ZTSN3MIR10Terminator9Data_CallE", !6, i64 0, !6, i64 4, !13, i64 8, !39, i64 40, !41, i64 136}
!39 = !{!"_ZTSN3MIR10CallTargetE", !40, i64 0, !7, i64 8}
!40 = !{!"_ZTSN3MIR10CallTarget3TagE", !7, i64 0}
!41 = !{!"_ZTSSt6vectorIN3MIR5ParamESaIS1_EE", !42, i64 0}
!42 = !{!"_ZTSSt12_Vector_baseIN3MIR5ParamESaIS1_EE", !43, i64 0}
!43 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE12_Vector_implE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE17_Vector_impl_dataE", !20, i64 0, !20, i64 8, !20, i64 16}
!45 = !{!38, !6, i64 4}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass,TailCallElimPass