; LLVM IR from facebook/redex :: opt/outliner (OutlinerTypeAnalysis)

; 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.boost::optional.151" = type { %"class.boost::optional_detail::tc_optional_base" }
%"class.boost::optional_detail::tc_optional_base" = type { i8, ptr }
%"class.std::basic_string_view" = type { i64, ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.outliner_impl::OutlinerTypeAnalysis" = type { ptr, %class.Lazy, %class.Lazy.2, %class.Lazy, %class.Lazy.13, %class.Lazy.24, %class.Lazy.35 }
%class.Lazy.2 = type { %"class.std::function.3", %"class.std::unique_ptr.5" }
%"class.std::function.3" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%"class.std::unique_ptr.5" = type { %"struct.std::__uniq_ptr_data.6" }
%"struct.std::__uniq_ptr_data.6" = type { %"class.std::__uniq_ptr_impl.7" }
%"class.std::__uniq_ptr_impl.7" = type { %"class.std::tuple.8" }
%"class.std::tuple.8" = type { %"struct.std::_Tuple_impl.9" }
%"struct.std::_Tuple_impl.9" = type { %"struct.std::_Head_base.12" }
%"struct.std::_Head_base.12" = type { ptr }
%class.Lazy = type { %"class.std::function", %"class.std::unique_ptr" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.1" }
%"struct.std::_Head_base.1" = type { ptr }
%class.Lazy.13 = type { %"class.std::function.14", %"class.std::unique_ptr.16" }
%"class.std::function.14" = type { %"class.std::_Function_base", ptr }
%"class.std::unique_ptr.16" = type { %"struct.std::__uniq_ptr_data.17" }
%"struct.std::__uniq_ptr_data.17" = type { %"class.std::__uniq_ptr_impl.18" }
%"class.std::__uniq_ptr_impl.18" = type { %"class.std::tuple.19" }
%"class.std::tuple.19" = type { %"struct.std::_Tuple_impl.20" }
%"struct.std::_Tuple_impl.20" = type { %"struct.std::_Head_base.23" }
%"struct.std::_Head_base.23" = type { ptr }
%class.Lazy.24 = type { %"class.std::function.25", %"class.std::unique_ptr.27" }
%"class.std::function.25" = type { %"class.std::_Function_base", ptr }
%"class.std::unique_ptr.27" = type { %"struct.std::__uniq_ptr_data.28" }
%"struct.std::__uniq_ptr_data.28" = type { %"class.std::__uniq_ptr_impl.29" }
%"class.std::__uniq_ptr_impl.29" = type { %"class.std::tuple.30" }
%"class.std::tuple.30" = type { %"struct.std::_Tuple_impl.31" }
%"struct.std::_Tuple_impl.31" = type { %"struct.std::_Head_base.34" }
%"struct.std::_Head_base.34" = type { ptr }
%class.Lazy.35 = type { %"class.std::function.36", %"class.std::unique_ptr.38" }
%"class.std::function.36" = type { %"class.std::_Function_base", ptr }
%"class.std::unique_ptr.38" = type { %"struct.std::__uniq_ptr_data.39" }
%"struct.std::__uniq_ptr_data.39" = type { %"class.std::__uniq_ptr_impl.40" }
%"class.std::__uniq_ptr_impl.40" = type { %"class.std::tuple.41" }
%"class.std::tuple.41" = type { %"struct.std::_Tuple_impl.42" }
%"struct.std::_Tuple_impl.42" = type { %"struct.std::_Head_base.45" }
%"struct.std::_Head_base.45" = type { ptr }

@.str.9 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [30 x i8], align 1
@__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm = external hidden unnamed_addr constant [93 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [49 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { i8, ptr } @_ZNK14type_inference15TypeEnvironment12get_dex_typeEj(ptr noundef nonnull align 8 dereferenceable(48), i32 noundef) #2 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK5boost8optionalIPK7DexTypeEcvbEv(ptr noundef nonnull align 8 dereferenceable(16)) #3 align 2

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

declare noundef ptr @_ZN4type6_floatEv() #4

declare noundef ptr @_ZN4type5_longEv() #4

declare noundef ptr @_ZN4type7_doubleEv() #4

declare noundef ptr @_ZN4type8_booleanEv() #4

declare noundef ptr @_ZN4type5_byteEv() #4

declare noundef ptr @_ZN4type6_shortEv() #4

declare noundef ptr @_ZN4type5_charEv() #4

declare noundef ptr @_ZN4type4_intEv() #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32)) #1 align 2

; Function Attrs: noreturn
declare void @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef, ptr noundef, ...) #5

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

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

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

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

declare noundef ptr @_ZN4type19java_lang_ThrowableEv() #4

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

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

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

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

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

declare noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32), i16 noundef zeroext) #4

declare noundef zeroext i1 @_ZN4type8is_arrayEPK7DexType(ptr noundef) #4

declare noundef ptr @_ZN4type24get_array_component_typeEPK7DexType(ptr noundef) #4

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

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

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

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

declare noundef i64 @_ZNK13IRInstruction9srcs_sizeEv(ptr noundef nonnull align 8 dereferenceable(32)) #4

declare noundef ptr @_ZN4type16java_lang_ObjectEv() #4

; Function Attrs: mustprogress uwtable
define dso_local noundef ptr @_ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm(ptr noundef nonnull align 8 dereferenceable(248) %0, ptr noundef %1, i64 noundef %2) #2 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i64, align 8
  %8 = alloca ptr, align 8
  %9 = alloca %"class.boost::optional.151", align 8
  %10 = alloca ptr, align 8
  %11 = alloca %"class.boost::optional.151", align 8
  %12 = alloca %"class.std::basic_string_view", align 8
  %13 = alloca ptr, align 8
  %14 = alloca %"class.boost::optional.151", align 8
  %15 = alloca ptr, align 8
  %16 = alloca %"class.boost::optional.151", align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca i64, align 8
  %20 = alloca i32, align 4
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca ptr, align 8
  %23 = alloca i32, align 4
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store i64 %2, ptr %7, align 8, !tbaa !9
  %24 = load ptr, ptr %5, align 8
  %25 = load i64, ptr %7, align 8, !tbaa !9
  %26 = load ptr, ptr %6, align 8, !tbaa !5
  %27 = call noundef i64 @_ZNK13IRInstruction9srcs_sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %26)
  %28 = icmp ult i64 %25, %27
  br i1 %28, label %29, label %30

29:                                               ; preds = %3
  br label %32

30:                                               ; preds = %3
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.16, ptr noundef @.str.9, i32 noundef 461, ptr noundef @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef @.str.10) #6
  unreachable

31:                                               ; No predecessors!
  br label %32

32:                                               ; preds = %31, %29
  %33 = load ptr, ptr %6, align 8, !tbaa !5
  %34 = call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %33)
  %35 = zext i16 %34 to i32
  switch i32 %35, label %381 [
    i32 26, label %36
    i32 160, label %36
    i32 161, label %36
    i32 162, label %36
    i32 0, label %36
    i32 163, label %36
    i32 4, label %36
    i32 164, label %36
    i32 6, label %36
    i32 165, label %36
    i32 5, label %36
    i32 7, label %36
    i32 8, label %36
    i32 12, label %36
    i32 13, label %36
    i32 14, label %36
    i32 15, label %36
    i32 21, label %36
    i32 73, label %36
    i32 76, label %36
    i32 77, label %36
    i32 78, label %36
    i32 79, label %36
    i32 74, label %36
    i32 75, label %36
    i32 166, label %36
    i32 167, label %36
    i32 168, label %36
    i32 169, label %36
    i32 9, label %40
    i32 10, label %40
    i32 11, label %40
    i32 1, label %51
    i32 2, label %51
    i32 3, label %51
    i32 16, label %55
    i32 17, label %55
    i32 18, label %55
    i32 19, label %55
    i32 20, label %63
    i32 24, label %63
    i32 25, label %89
    i32 59, label %97
    i32 62, label %97
    i32 63, label %97
    i32 64, label %97
    i32 65, label %97
    i32 60, label %97
    i32 61, label %97
    i32 33, label %107
    i32 34, label %107
    i32 39, label %116
    i32 40, label %116
    i32 41, label %116
    i32 42, label %116
    i32 43, label %116
    i32 44, label %116
    i32 35, label %125
    i32 36, label %125
    i32 37, label %125
    i32 38, label %125
    i32 22, label %125
    i32 27, label %125
    i32 94, label %125
    i32 95, label %125
    i32 112, label %125
    i32 113, label %125
    i32 114, label %125
    i32 100, label %125
    i32 101, label %125
    i32 102, label %125
    i32 115, label %125
    i32 116, label %125
    i32 117, label %125
    i32 123, label %125
    i32 124, label %125
    i32 125, label %125
    i32 118, label %125
    i32 119, label %125
    i32 147, label %125
    i32 148, label %125
    i32 149, label %125
    i32 155, label %125
    i32 156, label %125
    i32 157, label %125
    i32 150, label %125
    i32 151, label %125
    i32 120, label %133
    i32 121, label %133
    i32 122, label %133
    i32 152, label %133
    i32 153, label %133
    i32 154, label %133
    i32 23, label %141
    i32 28, label %145
    i32 29, label %145
    i32 98, label %145
    i32 106, label %145
    i32 107, label %145
    i32 108, label %145
    i32 137, label %145
    i32 138, label %145
    i32 139, label %145
    i32 140, label %145
    i32 141, label %145
    i32 30, label %153
    i32 31, label %153
    i32 99, label %153
    i32 109, label %153
    i32 110, label %153
    i32 111, label %153
    i32 142, label %153
    i32 143, label %153
    i32 144, label %153
    i32 145, label %153
    i32 146, label %153
    i32 32, label %161
    i32 96, label %161
    i32 97, label %161
    i32 103, label %161
    i32 104, label %161
    i32 105, label %161
    i32 126, label %161
    i32 127, label %161
    i32 128, label %161
    i32 131, label %161
    i32 132, label %161
    i32 133, label %161
    i32 129, label %161
    i32 130, label %161
    i32 134, label %169
    i32 135, label %169
    i32 136, label %169
    i32 45, label %182
    i32 48, label %182
    i32 49, label %182
    i32 50, label %182
    i32 51, label %182
    i32 46, label %182
    i32 47, label %182
    i32 52, label %213
    i32 55, label %213
    i32 56, label %213
    i32 57, label %213
    i32 58, label %213
    i32 53, label %213
    i32 54, label %213
    i32 66, label %302
    i32 69, label %302
    i32 70, label %302
    i32 71, label %302
    i32 72, label %302
    i32 67, label %302
    i32 68, label %302
    i32 80, label %319
    i32 83, label %319
    i32 84, label %319
    i32 85, label %319
    i32 86, label %319
    i32 81, label %319
    i32 82, label %319
    i32 87, label %329
    i32 88, label %329
    i32 89, label %329
    i32 90, label %329
    i32 91, label %329
    i32 93, label %370
    i32 92, label %370
    i32 158, label %370
    i32 159, label %370
  ]

36:                                               ; preds = %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32
  br label %37

37:                                               ; preds = %38, %36
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.12, ptr noundef @.str.9, i32 noundef 492, ptr noundef @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef @.str.10) #6
  unreachable

38:                                               ; No predecessors!
  br i1 true, label %37, label %39, !llvm.loop !11

39:                                               ; preds = %38
  br label %40

40:                                               ; preds = %39, %32, %32, %32
  %41 = load i64, ptr %7, align 8, !tbaa !9
  %42 = icmp eq i64 %41, 0
  br i1 %42, label %43, label %44

43:                                               ; preds = %40
  br label %46

44:                                               ; preds = %40
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.17, ptr noundef @.str.9, i32 noundef 497, ptr noundef @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef @.str.10) #6
  unreachable

45:                                               ; No predecessors!
  br label %46

46:                                               ; preds = %45, %43
  %47 = getelementptr inbounds %"class.outliner_impl::OutlinerTypeAnalysis", ptr %24, i32 0, i32 0
  %48 = load ptr, ptr %47, align 8, !tbaa !13
  %49 = call noundef ptr @_ZNK12DexMethodRef9get_protoEv(ptr noundef nonnull align 8 dereferenceable(26) %48)
  %50 = call noundef ptr @_ZNK8DexProto9get_rtypeEv(ptr noundef nonnull align 8 dereferenceable(24) %49)
  store ptr %50, ptr %4, align 8
  br label %382

51:                                               ; preds = %32, %32, %32
  br label %52

52:                                               ; preds = %53, %51
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.12, ptr noundef @.str.9, i32 noundef 504, ptr noundef @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef @.str.10) #6
  unreachable

53:                                               ; No predecessors!
  br i1 true, label %52, label %54, !llvm.loop !56

54:                                               ; preds = %53
  br label %55

55:                                               ; preds = %54, %32, %32, %32, %32
  %56 = load i64, ptr %7, align 8, !tbaa !9
  %57 = icmp eq i64 %56, 0
  br i1 %57, label %58, label %59

58:                                               ; preds = %55
  br label %61

59:                                               ; preds = %55
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.17, ptr noundef @.str.9, i32 noundef 510, ptr noundef @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef @.str.10) #6
  unreachable

60:                                               ; No predecessors!
  br label %61

61:                                               ; preds = %60, %58
  %62 = call noundef ptr @_ZN4type16java_lang_ObjectEv()
  store ptr %62, ptr %4, align 8
  br label %382

63:                                               ; preds = %32, %32
  %64 = load i64, ptr %7, align 8, !tbaa !9
  %65 = icmp eq i64 %64, 0
  br i1 %65, label %66, label %67

66:                                               ; preds = %63
  br label %69

67:                                               ; preds = %63
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.17, ptr noundef @.str.9, i32 noundef 515, ptr noundef @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef @.str.10) #6
  unreachable

68:                                               ; No predecessors!
  br label %69

69:                                               ; preds = %68, %66
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #7
  %70 = getelementptr inbounds %"class.outliner_impl::OutlinerTypeAnalysis", ptr %24, i32 0, i32 5
  %71 = call noundef ptr @_ZN4LazyI12UnorderedMapIPK13IRInstructionN14type_inference15TypeEnvironmentESt4hashIS3_ESt8equal_toIS3_EEEptEv(ptr noundef nonnull align 8 dereferenceable(40) %70)
  %72 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN12UnorderedMapIPK13IRInstructionN14type_inference15TypeEnvironmentESt4hashIS2_ESt8equal_toIS2_EE2atERKS2_(ptr noundef nonnull align 8 dereferenceable(56) %71, ptr noundef nonnull align 8 dereferenceable(8) %6)
  store ptr %72, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %9) #7
  %73 = load ptr, ptr %8, align 8, !tbaa !5
  %74 = load ptr, ptr %6, align 8, !tbaa !5
  %75 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %74, i16 noundef zeroext 0)
  %76 = call { i8, ptr } @_ZNK14type_inference15TypeEnvironment12get_dex_typeEj(ptr noundef nonnull align 8 dereferenceable(48) %73, i32 noundef %75)
  %77 = getelementptr inbounds %"class.boost::optional.151", ptr %9, i32 0, i32 0
  %78 = getelementptr inbounds { i8, ptr }, ptr %77, i32 0, i32 0
  %79 = extractvalue { i8, ptr } %76, 0
  store i8 %79, ptr %78, align 8
  %80 = getelementptr inbounds { i8, ptr }, ptr %77, i32 0, i32 1
  %81 = extractvalue { i8, ptr } %76, 1
  store ptr %81, ptr %80, align 8
  %82 = call noundef zeroext i1 @_ZNK5boost8optionalIPK7DexTypeEcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %9) #7
  br i1 %82, label %83, label %86

83:                                               ; preds = %69
  %84 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNR5boost8optionalIPK7DexTypeEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %9)
  %85 = load ptr, ptr %84, align 8, !tbaa !5
  br label %87

86:                                               ; preds = %69
  br label %87

87:                                               ; preds = %86, %83
  %88 = phi ptr [ %85, %83 ], [ null, %86 ]
  store ptr %88, ptr %4, align 8
  call void @llvm.lifetime.end.p0(i64 16, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #7
  br label %382

89:                                               ; preds = %32
  %90 = load i64, ptr %7, align 8, !tbaa !9
  %91 = icmp eq i64 %90, 0
  br i1 %91, label %92, label %93

92:                                               ; preds = %89
  br label %95

93:                                               ; preds = %89
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.17, ptr noundef @.str.9, i32 noundef 522, ptr noundef @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef @.str.10) #6
  unreachable

94:                                               ; No predecessors!
  br label %95

95:                                               ; preds = %94, %92
  %96 = call noundef ptr @_ZN4type19java_lang_ThrowableEv()
  store ptr %96, ptr %4, align 8
  br label %382

97:                                               ; preds = %32, %32, %32, %32, %32, %32, %32
  %98 = load i64, ptr %7, align 8, !tbaa !9
  %99 = icmp eq i64 %98, 0
  br i1 %99, label %100, label %101

100:                                              ; preds = %97
  br label %103

101:                                              ; preds = %97
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.17, ptr noundef @.str.9, i32 noundef 532, ptr noundef @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef @.str.10) #6
  unreachable

102:                                              ; No predecessors!
  br label %103

103:                                              ; preds = %102, %100
  %104 = load ptr, ptr %6, align 8, !tbaa !5
  %105 = call noundef ptr @_ZNK13IRInstruction9get_fieldEv(ptr noundef nonnull align 8 dereferenceable(32) %104)
  %106 = call noundef ptr @_ZNK11DexFieldRef9get_classEv(ptr noundef nonnull align 8 dereferenceable(26) %105)
  store ptr %106, ptr %4, align 8
  br label %382

107:                                              ; preds = %32, %32
  %108 = load i64, ptr %7, align 8, !tbaa !9
  %109 = icmp ult i64 %108, 2
  br i1 %109, label %110, label %111

110:                                              ; preds = %107
  br label %113

111:                                              ; preds = %107
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.18, ptr noundef @.str.9, i32 noundef 537, ptr noundef @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef @.str.10) #6
  unreachable

112:                                              ; No predecessors!
  br label %113

113:                                              ; preds = %112, %110
  %114 = load ptr, ptr %6, align 8, !tbaa !5
  %115 = call noundef ptr @_ZN13outliner_impl20OutlinerTypeAnalysis23get_if_insn_type_demandEP13IRInstruction(ptr noundef nonnull align 8 dereferenceable(248) %24, ptr noundef %114)
  store ptr %115, ptr %4, align 8
  br label %382

116:                                              ; preds = %32, %32, %32, %32, %32, %32
  %117 = load i64, ptr %7, align 8, !tbaa !9
  %118 = icmp eq i64 %117, 0
  br i1 %118, label %119, label %120

119:                                              ; preds = %116
  br label %122

120:                                              ; preds = %116
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.17, ptr noundef @.str.9, i32 noundef 547, ptr noundef @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef @.str.10) #6
  unreachable

121:                                              ; No predecessors!
  br label %122

122:                                              ; preds = %121, %119
  %123 = load ptr, ptr %6, align 8, !tbaa !5
  %124 = call noundef ptr @_ZN13outliner_impl20OutlinerTypeAnalysis23get_if_insn_type_demandEP13IRInstruction(ptr noundef nonnull align 8 dereferenceable(248) %24, ptr noundef %123)
  store ptr %124, ptr %4, align 8
  br label %382

125:                                              ; preds = %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32
  %126 = load i64, ptr %7, align 8, !tbaa !9
  %127 = icmp ult i64 %126, 2
  br i1 %127, label %128, label %129

128:                                              ; preds = %125
  br label %131

129:                                              ; preds = %125
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.18, ptr noundef @.str.9, i32 noundef 581, ptr noundef @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef @.str.10) #6
  unreachable

130:                                              ; No predecessors!
  br label %131

131:                                              ; preds = %130, %128
  %132 = call noundef ptr @_ZN4type4_intEv()
  store ptr %132, ptr %4, align 8
  br label %382

133:                                              ; preds = %32, %32, %32, %32, %32, %32
  %134 = load i64, ptr %7, align 8, !tbaa !9
  %135 = icmp ult i64 %134, 2
  br i1 %135, label %136, label %137

136:                                              ; preds = %133
  br label %139

137:                                              ; preds = %133
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.18, ptr noundef @.str.9, i32 noundef 590, ptr noundef @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef @.str.10) #6
  unreachable

138:                                              ; No predecessors!
  br label %139

139:                                              ; preds = %138, %136
  %140 = call noundef ptr @_ZN4type4_intEv()
  store ptr %140, ptr %4, align 8
  br label %382

141:                                              ; preds = %32
  %142 = load ptr, ptr %6, align 8, !tbaa !5
  %143 = call noundef ptr @_ZNK13IRInstruction8get_typeEv(ptr noundef nonnull align 8 dereferenceable(32) %142)
  %144 = call noundef ptr @_ZN4type24get_array_component_typeEPK7DexType(ptr noundef %143)
  store ptr %144, ptr %4, align 8
  br label %382

145:                                              ; preds = %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32
  %146 = load i64, ptr %7, align 8, !tbaa !9
  %147 = icmp ult i64 %146, 2
  br i1 %147, label %148, label %149

148:                                              ; preds = %145
  br label %151

149:                                              ; preds = %145
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.18, ptr noundef @.str.9, i32 noundef 609, ptr noundef @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef @.str.10) #6
  unreachable

150:                                              ; No predecessors!
  br label %151

151:                                              ; preds = %150, %148
  %152 = call noundef ptr @_ZN4type6_floatEv()
  store ptr %152, ptr %4, align 8
  br label %382

153:                                              ; preds = %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32
  %154 = load i64, ptr %7, align 8, !tbaa !9
  %155 = icmp ult i64 %154, 2
  br i1 %155, label %156, label %157

156:                                              ; preds = %153
  br label %159

157:                                              ; preds = %153
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.18, ptr noundef @.str.9, i32 noundef 623, ptr noundef @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef @.str.10) #6
  unreachable

158:                                              ; No predecessors!
  br label %159

159:                                              ; preds = %158, %156
  %160 = call noundef ptr @_ZN4type7_doubleEv()
  store ptr %160, ptr %4, align 8
  br label %382

161:                                              ; preds = %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %32
  %162 = load i64, ptr %7, align 8, !tbaa !9
  %163 = icmp ult i64 %162, 2
  br i1 %163, label %164, label %165

164:                                              ; preds = %161
  br label %167

165:                                              ; preds = %161
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.18, ptr noundef @.str.9, i32 noundef 640, ptr noundef @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef @.str.10) #6
  unreachable

166:                                              ; No predecessors!
  br label %167

167:                                              ; preds = %166, %164
  %168 = call noundef ptr @_ZN4type5_longEv()
  store ptr %168, ptr %4, align 8
  br label %382

169:                                              ; preds = %32, %32, %32
  %170 = load i64, ptr %7, align 8, !tbaa !9
  %171 = icmp eq i64 %170, 0
  br i1 %171, label %172, label %174

172:                                              ; preds = %169
  %173 = call noundef ptr @_ZN4type5_longEv()
  store ptr %173, ptr %4, align 8
  br label %382

174:                                              ; preds = %169
  %175 = load i64, ptr %7, align 8, !tbaa !9
  %176 = icmp eq i64 %175, 1
  br i1 %176, label %177, label %178

177:                                              ; preds = %174
  br label %180

178:                                              ; preds = %174
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.19, ptr noundef @.str.9, i32 noundef 647, ptr noundef @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef @.str.10) #6
  unreachable

179:                                              ; No predecessors!
  br label %180

180:                                              ; preds = %179, %177
  %181 = call noundef ptr @_ZN4type4_intEv()
  store ptr %181, ptr %4, align 8
  br label %382

182:                                              ; preds = %32, %32, %32, %32, %32, %32, %32
  %183 = load i64, ptr %7, align 8, !tbaa !9
  %184 = icmp eq i64 %183, 0
  br i1 %184, label %185, label %205

185:                                              ; preds = %182
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #7
  %186 = getelementptr inbounds %"class.outliner_impl::OutlinerTypeAnalysis", ptr %24, i32 0, i32 5
  %187 = call noundef ptr @_ZN4LazyI12UnorderedMapIPK13IRInstructionN14type_inference15TypeEnvironmentESt4hashIS3_ESt8equal_toIS3_EEEptEv(ptr noundef nonnull align 8 dereferenceable(40) %186)
  %188 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN12UnorderedMapIPK13IRInstructionN14type_inference15TypeEnvironmentESt4hashIS2_ESt8equal_toIS2_EE2atERKS2_(ptr noundef nonnull align 8 dereferenceable(56) %187, ptr noundef nonnull align 8 dereferenceable(8) %6)
  store ptr %188, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %11) #7
  %189 = load ptr, ptr %10, align 8, !tbaa !5
  %190 = load ptr, ptr %6, align 8, !tbaa !5
  %191 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %190, i16 noundef zeroext 0)
  %192 = call { i8, ptr } @_ZNK14type_inference15TypeEnvironment12get_dex_typeEj(ptr noundef nonnull align 8 dereferenceable(48) %189, i32 noundef %191)
  %193 = getelementptr inbounds %"class.boost::optional.151", ptr %11, i32 0, i32 0
  %194 = getelementptr inbounds { i8, ptr }, ptr %193, i32 0, i32 0
  %195 = extractvalue { i8, ptr } %192, 0
  store i8 %195, ptr %194, align 8
  %196 = getelementptr inbounds { i8, ptr }, ptr %193, i32 0, i32 1
  %197 = extractvalue { i8, ptr } %192, 1
  store ptr %197, ptr %196, align 8
  %198 = call noundef zeroext i1 @_ZNK5boost8optionalIPK7DexTypeEcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %11) #7
  br i1 %198, label %199, label %202

199:                                              ; preds = %185
  %200 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNR5boost8optionalIPK7DexTypeEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %11)
  %201 = load ptr, ptr %200, align 8, !tbaa !5
  br label %203

202:                                              ; preds = %185
  br label %203

203:                                              ; preds = %202, %199
  %204 = phi ptr [ %201, %199 ], [ null, %202 ]
  store ptr %204, ptr %4, align 8
  call void @llvm.lifetime.end.p0(i64 16, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  br label %382

205:                                              ; preds = %182
  %206 = load i64, ptr %7, align 8, !tbaa !9
  %207 = icmp eq i64 %206, 1
  br i1 %207, label %208, label %209

208:                                              ; preds = %205
  br label %211

209:                                              ; preds = %205
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.19, ptr noundef @.str.9, i32 noundef 662, ptr noundef @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef @.str.10) #6
  unreachable

210:                                              ; No predecessors!
  br label %211

211:                                              ; preds = %210, %208
  %212 = call noundef ptr @_ZN4type4_intEv()
  store ptr %212, ptr %4, align 8
  br label %382

213:                                              ; preds = %32, %32, %32, %32, %32, %32, %32
  %214 = load i64, ptr %7, align 8, !tbaa !9
  %215 = icmp eq i64 %214, 1
  br i1 %215, label %216, label %247

216:                                              ; preds = %213
  %217 = load ptr, ptr %6, align 8, !tbaa !5
  %218 = call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %217)
  %219 = zext i16 %218 to i32
  %220 = icmp eq i32 %219, 54
  br i1 %220, label %221, label %227

221:                                              ; preds = %216
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef @.str.20) #7
  %222 = getelementptr inbounds { i64, ptr }, ptr %12, i32 0, i32 0
  %223 = load i64, ptr %222, align 8
  %224 = getelementptr inbounds { i64, ptr }, ptr %12, i32 0, i32 1
  %225 = load ptr, ptr %224, align 8
  %226 = call noundef ptr @_ZN7DexType9make_typeESt17basic_string_viewIcSt11char_traitsIcEE(i64 %223, ptr %225)
  store ptr %226, ptr %4, align 8
  br label %382

227:                                              ; preds = %216
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #7
  %228 = getelementptr inbounds %"class.outliner_impl::OutlinerTypeAnalysis", ptr %24, i32 0, i32 5
  %229 = call noundef ptr @_ZN4LazyI12UnorderedMapIPK13IRInstructionN14type_inference15TypeEnvironmentESt4hashIS3_ESt8equal_toIS3_EEEptEv(ptr noundef nonnull align 8 dereferenceable(40) %228)
  %230 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN12UnorderedMapIPK13IRInstructionN14type_inference15TypeEnvironmentESt4hashIS2_ESt8equal_toIS2_EE2atERKS2_(ptr noundef nonnull align 8 dereferenceable(56) %229, ptr noundef nonnull align 8 dereferenceable(8) %6)
  store ptr %230, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %14) #7
  %231 = load ptr, ptr %13, align 8, !tbaa !5
  %232 = load ptr, ptr %6, align 8, !tbaa !5
  %233 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %232, i16 noundef zeroext 1)
  %234 = call { i8, ptr } @_ZNK14type_inference15TypeEnvironment12get_dex_typeEj(ptr noundef nonnull align 8 dereferenceable(48) %231, i32 noundef %233)
  %235 = getelementptr inbounds %"class.boost::optional.151", ptr %14, i32 0, i32 0
  %236 = getelementptr inbounds { i8, ptr }, ptr %235, i32 0, i32 0
  %237 = extractvalue { i8, ptr } %234, 0
  store i8 %237, ptr %236, align 8
  %238 = getelementptr inbounds { i8, ptr }, ptr %235, i32 0, i32 1
  %239 = extractvalue { i8, ptr } %234, 1
  store ptr %239, ptr %238, align 8
  %240 = call noundef zeroext i1 @_ZNK5boost8optionalIPK7DexTypeEcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %14) #7
  br i1 %240, label %241, label %244

241:                                              ; preds = %227
  %242 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNR5boost8optionalIPK7DexTypeEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %14)
  %243 = load ptr, ptr %242, align 8, !tbaa !5
  br label %245

244:                                              ; preds = %227
  br label %245

245:                                              ; preds = %244, %241
  %246 = phi ptr [ %243, %241 ], [ null, %244 ]
  store ptr %246, ptr %4, align 8
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  br label %382

247:                                              ; preds = %213
  %248 = load i64, ptr %7, align 8, !tbaa !9
  %249 = icmp eq i64 %248, 2
  br i1 %249, label %250, label %252

250:                                              ; preds = %247
  %251 = call noundef ptr @_ZN4type4_intEv()
  store ptr %251, ptr %4, align 8
  br label %382

252:                                              ; preds = %247
  %253 = load i64, ptr %7, align 8, !tbaa !9
  %254 = icmp eq i64 %253, 0
  br i1 %254, label %255, label %256

255:                                              ; preds = %252
  br label %258

256:                                              ; preds = %252
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.17, ptr noundef @.str.9, i32 noundef 681, ptr noundef @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef @.str.10) #6
  unreachable

257:                                              ; No predecessors!
  br label %258

258:                                              ; preds = %257, %255
  %259 = load ptr, ptr %6, align 8, !tbaa !5
  %260 = call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %259)
  %261 = zext i16 %260 to i32
  switch i32 %261, label %297 [
    i32 52, label %262
    i32 53, label %262
    i32 55, label %287
    i32 56, label %289
    i32 57, label %291
    i32 58, label %293
    i32 54, label %295
  ]

262:                                              ; preds = %258, %258
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #7
  %263 = getelementptr inbounds %"class.outliner_impl::OutlinerTypeAnalysis", ptr %24, i32 0, i32 5
  %264 = call noundef ptr @_ZN4LazyI12UnorderedMapIPK13IRInstructionN14type_inference15TypeEnvironmentESt4hashIS3_ESt8equal_toIS3_EEEptEv(ptr noundef nonnull align 8 dereferenceable(40) %263)
  %265 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN12UnorderedMapIPK13IRInstructionN14type_inference15TypeEnvironmentESt4hashIS2_ESt8equal_toIS2_EE2atERKS2_(ptr noundef nonnull align 8 dereferenceable(56) %264, ptr noundef nonnull align 8 dereferenceable(8) %6)
  store ptr %265, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %16) #7
  %266 = load ptr, ptr %15, align 8, !tbaa !5
  %267 = load ptr, ptr %6, align 8, !tbaa !5
  %268 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %267, i16 noundef zeroext 1)
  %269 = call { i8, ptr } @_ZNK14type_inference15TypeEnvironment12get_dex_typeEj(ptr noundef nonnull align 8 dereferenceable(48) %266, i32 noundef %268)
  %270 = getelementptr inbounds %"class.boost::optional.151", ptr %16, i32 0, i32 0
  %271 = getelementptr inbounds { i8, ptr }, ptr %270, i32 0, i32 0
  %272 = extractvalue { i8, ptr } %269, 0
  store i8 %272, ptr %271, align 8
  %273 = getelementptr inbounds { i8, ptr }, ptr %270, i32 0, i32 1
  %274 = extractvalue { i8, ptr } %269, 1
  store ptr %274, ptr %273, align 8
  %275 = call noundef zeroext i1 @_ZNK5boost8optionalIPK7DexTypeEcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %16) #7
  br i1 %275, label %276, label %284

276:                                              ; preds = %262
  %277 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNR5boost8optionalIPK7DexTypeEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %16)
  %278 = load ptr, ptr %277, align 8, !tbaa !5
  %279 = call noundef zeroext i1 @_ZN4type8is_arrayEPK7DexType(ptr noundef %278)
  br i1 %279, label %280, label %284

280:                                              ; preds = %276
  %281 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNR5boost8optionalIPK7DexTypeEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %16)
  %282 = load ptr, ptr %281, align 8, !tbaa !5
  %283 = call noundef ptr @_ZN4type24get_array_component_typeEPK7DexType(ptr noundef %282)
  br label %285

284:                                              ; preds = %276, %262
  br label %285

285:                                              ; preds = %284, %280
  %286 = phi ptr [ %283, %280 ], [ null, %284 ]
  store ptr %286, ptr %4, align 8
  call void @llvm.lifetime.end.p0(i64 16, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  br label %382

287:                                              ; preds = %258
  %288 = call noundef ptr @_ZN4type8_booleanEv()
  store ptr %288, ptr %4, align 8
  br label %382

289:                                              ; preds = %258
  %290 = call noundef ptr @_ZN4type5_byteEv()
  store ptr %290, ptr %4, align 8
  br label %382

291:                                              ; preds = %258
  %292 = call noundef ptr @_ZN4type5_charEv()
  store ptr %292, ptr %4, align 8
  br label %382

293:                                              ; preds = %258
  %294 = call noundef ptr @_ZN4type6_shortEv()
  store ptr %294, ptr %4, align 8
  br label %382

295:                                              ; preds = %258
  %296 = call noundef ptr @_ZN4type16java_lang_ObjectEv()
  store ptr %296, ptr %4, align 8
  br label %382

297:                                              ; preds = %258
  br label %298

298:                                              ; preds = %299, %297
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.12, ptr noundef @.str.9, i32 noundef 706, ptr noundef @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef @.str.10) #6
  unreachable

299:                                              ; No predecessors!
  br i1 true, label %298, label %300, !llvm.loop !57

300:                                              ; preds = %299
  br label %301

301:                                              ; preds = %300
  br label %302

302:                                              ; preds = %301, %32, %32, %32, %32, %32, %32, %32
  %303 = load i64, ptr %7, align 8, !tbaa !9
  %304 = icmp eq i64 %303, 1
  br i1 %304, label %305, label %309

305:                                              ; preds = %302
  %306 = load ptr, ptr %6, align 8, !tbaa !5
  %307 = call noundef ptr @_ZNK13IRInstruction9get_fieldEv(ptr noundef nonnull align 8 dereferenceable(32) %306)
  %308 = call noundef ptr @_ZNK11DexFieldRef9get_classEv(ptr noundef nonnull align 8 dereferenceable(26) %307)
  store ptr %308, ptr %4, align 8
  br label %382

309:                                              ; preds = %302
  %310 = load i64, ptr %7, align 8, !tbaa !9
  %311 = icmp eq i64 %310, 0
  br i1 %311, label %312, label %313

312:                                              ; preds = %309
  br label %315

313:                                              ; preds = %309
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.17, ptr noundef @.str.9, i32 noundef 717, ptr noundef @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef @.str.10) #6
  unreachable

314:                                              ; No predecessors!
  br label %315

315:                                              ; preds = %314, %312
  %316 = load ptr, ptr %6, align 8, !tbaa !5
  %317 = call noundef ptr @_ZNK13IRInstruction9get_fieldEv(ptr noundef nonnull align 8 dereferenceable(32) %316)
  %318 = call noundef ptr @_ZNK11DexFieldRef8get_typeEv(ptr noundef nonnull align 8 dereferenceable(26) %317)
  store ptr %318, ptr %4, align 8
  br label %382

319:                                              ; preds = %32, %32, %32, %32, %32, %32, %32
  %320 = load i64, ptr %7, align 8, !tbaa !9
  %321 = icmp eq i64 %320, 0
  br i1 %321, label %322, label %323

322:                                              ; preds = %319
  br label %325

323:                                              ; preds = %319
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.17, ptr noundef @.str.9, i32 noundef 727, ptr noundef @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef @.str.10) #6
  unreachable

324:                                              ; No predecessors!
  br label %325

325:                                              ; preds = %324, %322
  %326 = load ptr, ptr %6, align 8, !tbaa !5
  %327 = call noundef ptr @_ZNK13IRInstruction9get_fieldEv(ptr noundef nonnull align 8 dereferenceable(32) %326)
  %328 = call noundef ptr @_ZNK11DexFieldRef8get_typeEv(ptr noundef nonnull align 8 dereferenceable(26) %327)
  store ptr %328, ptr %4, align 8
  br label %382

329:                                              ; preds = %32, %32, %32, %32, %32
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #7
  %330 = load ptr, ptr %6, align 8, !tbaa !5
  %331 = call noundef ptr @_ZNK13IRInstruction10get_methodEv(ptr noundef nonnull align 8 dereferenceable(32) %330)
  store ptr %331, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #7
  %332 = load ptr, ptr %17, align 8, !tbaa !5
  %333 = call noundef ptr @_ZNK12DexMethodRef9get_protoEv(ptr noundef nonnull align 8 dereferenceable(26) %332)
  %334 = call noundef ptr @_ZNK8DexProto8get_argsEv(ptr noundef nonnull align 8 dereferenceable(24) %333)
  store ptr %334, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #7
  %335 = load ptr, ptr %6, align 8, !tbaa !5
  %336 = call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %335)
  %337 = zext i16 %336 to i32
  %338 = icmp ne i32 %337, 90
  %339 = zext i1 %338 to i64
  %340 = select i1 %338, i32 1, i32 0
  %341 = sext i32 %340 to i64
  %342 = load ptr, ptr %18, align 8, !tbaa !5
  %343 = call noundef i64 @_ZNK11DexTypeList4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %342)
  %344 = add i64 %341, %343
  store i64 %344, ptr %19, align 8, !tbaa !9
  %345 = load ptr, ptr %6, align 8, !tbaa !5
  %346 = call noundef i64 @_ZNK13IRInstruction9srcs_sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %345)
  %347 = load i64, ptr %19, align 8, !tbaa !9
  %348 = icmp eq i64 %346, %347
  br i1 %348, label %349, label %350

349:                                              ; preds = %329
  br label %352

350:                                              ; preds = %329
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.21, ptr noundef @.str.9, i32 noundef 739, ptr noundef @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef @.str.10) #6
  unreachable

351:                                              ; No predecessors!
  br label %352

352:                                              ; preds = %351, %349
  %353 = load ptr, ptr %6, align 8, !tbaa !5
  %354 = call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %353)
  %355 = zext i16 %354 to i32
  %356 = icmp ne i32 %355, 90
  br i1 %356, label %357, label %365

357:                                              ; preds = %352
  %358 = load i64, ptr %7, align 8, !tbaa !9
  %359 = add i64 %358, -1
  store i64 %359, ptr %7, align 8, !tbaa !9
  %360 = icmp eq i64 %358, 0
  br i1 %360, label %361, label %364

361:                                              ; preds = %357
  %362 = load ptr, ptr %17, align 8, !tbaa !5
  %363 = call noundef ptr @_ZNK12DexMethodRef9get_classEv(ptr noundef nonnull align 8 dereferenceable(26) %362)
  store ptr %363, ptr %4, align 8
  store i32 1, ptr %20, align 4
  br label %369

364:                                              ; preds = %357
  br label %365

365:                                              ; preds = %364, %352
  %366 = load ptr, ptr %18, align 8, !tbaa !5
  %367 = load i64, ptr %7, align 8, !tbaa !9
  %368 = call noundef ptr @_ZNK11DexTypeList2atEm(ptr noundef nonnull align 8 dereferenceable(24) %366, i64 noundef %367)
  store ptr %368, ptr %4, align 8
  store i32 1, ptr %20, align 4
  br label %369

369:                                              ; preds = %365, %361
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  br label %382

370:                                              ; preds = %32, %32, %32, %32
  br label %371

371:                                              ; preds = %379, %370
  call void @llvm.lifetime.start.p0(i64 32, ptr %21) #7
  %372 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_Z4showI13IRInstructionRSoENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %21, ptr noundef %372)
  %373 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %21) #7
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.13, ptr noundef @.str.9, i32 noundef 755, ptr noundef @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef @.str.22, ptr noundef %373) #6
          to label %374 unwind label %375

374:                                              ; preds = %371
  unreachable

375:                                              ; preds = %371
  %376 = landingpad { ptr, i32 }
          cleanup
  %377 = extractvalue { ptr, i32 } %376, 0
  store ptr %377, ptr %22, align 8
  %378 = extractvalue { ptr, i32 } %376, 1
  store i32 %378, ptr %23, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #7
  br label %384

379:                                              ; No predecessors!
  br i1 true, label %371, label %380, !llvm.loop !58

380:                                              ; preds = %379
  br label %381

381:                                              ; preds = %380, %32
  unreachable

382:                                              ; preds = %369, %325, %315, %305, %295, %293, %291, %289, %287, %285, %250, %245, %221, %211, %203, %180, %172, %167, %159, %151, %141, %139, %131, %122, %113, %103, %95, %87, %61, %46
  %383 = load ptr, ptr %4, align 8
  ret ptr %383

384:                                              ; preds = %375
  %385 = load ptr, ptr %22, align 8
  %386 = load i32, ptr %23, align 4
  %387 = insertvalue { ptr, i32 } poison, ptr %385, 0
  %388 = insertvalue { ptr, i32 } %387, i32 %386, 1
  resume { ptr, i32 } %388
}

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN7DexType9make_typeESt17basic_string_viewIcSt11char_traitsIcEE(i64, ptr) #2 align 2

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!14, !6, i64 0}
!14 = !{!"_ZTSN13outliner_impl20OutlinerTypeAnalysisE", !6, i64 0, !15, i64 8, !24, i64 48, !15, i64 88, !32, i64 128, !40, i64 168, !48, i64 208}
!15 = !{!"_ZTS4LazyI12UnorderedMapIPK13IRInstructionN6sparta19AbstractEnvironmentINS4_15PatriciaTreeMapIjNS4_17SetAbstractDomainINS4_15PatriciaTreeSetIPS1_EEEENS4_17TopValueInterfaceISB_EEEEEESt4hashIS3_ESt8equal_toIS3_EEE", !16, i64 0, !18, i64 32}
!16 = !{!"_ZTSSt8functionIFSt10unique_ptrI12UnorderedMapIPK13IRInstructionN6sparta19AbstractEnvironmentINS5_15PatriciaTreeMapIjNS5_17SetAbstractDomainINS5_15PatriciaTreeSetIPS2_EEEENS5_17TopValueInterfaceISC_EEEEEESt4hashIS4_ESt8equal_toIS4_EESt14default_deleteISL_EEvEE", !17, i64 0, !6, i64 24}
!17 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!18 = !{!"_ZTSSt10unique_ptrI12UnorderedMapIPK13IRInstructionN6sparta19AbstractEnvironmentINS4_15PatriciaTreeMapIjNS4_17SetAbstractDomainINS4_15PatriciaTreeSetIPS1_EEEENS4_17TopValueInterfaceISB_EEEEEESt4hashIS3_ESt8equal_toIS3_EESt14default_deleteISK_EE", !19, i64 0}
!19 = !{!"_ZTSSt15__uniq_ptr_dataI12UnorderedMapIPK13IRInstructionN6sparta19AbstractEnvironmentINS4_15PatriciaTreeMapIjNS4_17SetAbstractDomainINS4_15PatriciaTreeSetIPS1_EEEENS4_17TopValueInterfaceISB_EEEEEESt4hashIS3_ESt8equal_toIS3_EESt14default_deleteISK_ELb1ELb1EE", !20, i64 0}
!20 = !{!"_ZTSSt15__uniq_ptr_implI12UnorderedMapIPK13IRInstructionN6sparta19AbstractEnvironmentINS4_15PatriciaTreeMapIjNS4_17SetAbstractDomainINS4_15PatriciaTreeSetIPS1_EEEENS4_17TopValueInterfaceISB_EEEEEESt4hashIS3_ESt8equal_toIS3_EESt14default_deleteISK_EE", !21, i64 0}
!21 = !{!"_ZTSSt5tupleIJP12UnorderedMapIPK13IRInstructionN6sparta19AbstractEnvironmentINS4_15PatriciaTreeMapIjNS4_17SetAbstractDomainINS4_15PatriciaTreeSetIPS1_EEEENS4_17TopValueInterfaceISB_EEEEEESt4hashIS3_ESt8equal_toIS3_EESt14default_deleteISK_EEE", !22, i64 0}
!22 = !{!"_ZTSSt11_Tuple_implILm0EJP12UnorderedMapIPK13IRInstructionN6sparta19AbstractEnvironmentINS4_15PatriciaTreeMapIjNS4_17SetAbstractDomainINS4_15PatriciaTreeSetIPS1_EEEENS4_17TopValueInterfaceISB_EEEEEESt4hashIS3_ESt8equal_toIS3_EESt14default_deleteISK_EEE", !23, i64 0}
!23 = !{!"_ZTSSt10_Head_baseILm0EP12UnorderedMapIPK13IRInstructionN6sparta19AbstractEnvironmentINS4_15PatriciaTreeMapIjNS4_17SetAbstractDomainINS4_15PatriciaTreeSetIPS1_EEEENS4_17TopValueInterfaceISB_EEEEEESt4hashIS3_ESt8equal_toIS3_EELb0EE", !6, i64 0}
!24 = !{!"_ZTS4LazyIN10live_range6ChainsEE", !25, i64 0, !26, i64 32}
!25 = !{!"_ZTSSt8functionIFSt10unique_ptrIN10live_range6ChainsESt14default_deleteIS2_EEvEE", !17, i64 0, !6, i64 24}
!26 = !{!"_ZTSSt10unique_ptrIN10live_range6ChainsESt14default_deleteIS1_EE", !27, i64 0}
!27 = !{!"_ZTSSt15__uniq_ptr_dataIN10live_range6ChainsESt14default_deleteIS1_ELb1ELb1EE", !28, i64 0}
!28 = !{!"_ZTSSt15__uniq_ptr_implIN10live_range6ChainsESt14default_deleteIS1_EE", !29, i64 0}
!29 = !{!"_ZTSSt5tupleIJPN10live_range6ChainsESt14default_deleteIS1_EEE", !30, i64 0}
!30 = !{!"_ZTSSt11_Tuple_implILm0EJPN10live_range6ChainsESt14default_deleteIS1_EEE", !31, i64 0}
!31 = !{!"_ZTSSt10_Head_baseILm0EPN10live_range6ChainsELb0EE", !6, i64 0}
!32 = !{!"_ZTS4LazyI12UnorderedMapIP13IRInstruction12UnorderedSetIN10live_range3UseESt4hashIS5_ESt8equal_toIS5_EES6_IS2_ES8_IS2_EEE", !33, i64 0, !34, i64 32}
!33 = !{!"_ZTSSt8functionIFSt10unique_ptrI12UnorderedMapIP13IRInstruction12UnorderedSetIN10live_range3UseESt4hashIS6_ESt8equal_toIS6_EES7_IS3_ES9_IS3_EESt14default_deleteISE_EEvEE", !17, i64 0, !6, i64 24}
!34 = !{!"_ZTSSt10unique_ptrI12UnorderedMapIP13IRInstruction12UnorderedSetIN10live_range3UseESt4hashIS5_ESt8equal_toIS5_EES6_IS2_ES8_IS2_EESt14default_deleteISD_EE", !35, i64 0}
!35 = !{!"_ZTSSt15__uniq_ptr_dataI12UnorderedMapIP13IRInstruction12UnorderedSetIN10live_range3UseESt4hashIS5_ESt8equal_toIS5_EES6_IS2_ES8_IS2_EESt14default_deleteISD_ELb1ELb1EE", !36, i64 0}
!36 = !{!"_ZTSSt15__uniq_ptr_implI12UnorderedMapIP13IRInstruction12UnorderedSetIN10live_range3UseESt4hashIS5_ESt8equal_toIS5_EES6_IS2_ES8_IS2_EESt14default_deleteISD_EE", !37, i64 0}
!37 = !{!"_ZTSSt5tupleIJP12UnorderedMapIP13IRInstruction12UnorderedSetIN10live_range3UseESt4hashIS5_ESt8equal_toIS5_EES6_IS2_ES8_IS2_EESt14default_deleteISD_EEE", !38, i64 0}
!38 = !{!"_ZTSSt11_Tuple_implILm0EJP12UnorderedMapIP13IRInstruction12UnorderedSetIN10live_range3UseESt4hashIS5_ESt8equal_toIS5_EES6_IS2_ES8_IS2_EESt14default_deleteISD_EEE", !39, i64 0}
!39 = !{!"_ZTSSt10_Head_baseILm0EP12UnorderedMapIP13IRInstruction12UnorderedSetIN10live_range3UseESt4hashIS5_ESt8equal_toIS5_EES6_IS2_ES8_IS2_EELb0EE", !6, i64 0}
!40 = !{!"_ZTS4LazyI12UnorderedMapIPK13IRInstructionN14type_inference15TypeEnvironmentESt4hashIS3_ESt8equal_toIS3_EEE", !41, i64 0, !42, i64 32}
!41 = !{!"_ZTSSt8functionIFSt10unique_ptrI12UnorderedMapIPK13IRInstructionN14type_inference15TypeEnvironmentESt4hashIS4_ESt8equal_toIS4_EESt14default_deleteISB_EEvEE", !17, i64 0, !6, i64 24}
!42 = !{!"_ZTSSt10unique_ptrI12UnorderedMapIPK13IRInstructionN14type_inference15TypeEnvironmentESt4hashIS3_ESt8equal_toIS3_EESt14default_deleteISA_EE", !43, i64 0}
!43 = !{!"_ZTSSt15__uniq_ptr_dataI12UnorderedMapIPK13IRInstructionN14type_inference15TypeEnvironmentESt4hashIS3_ESt8equal_toIS3_EESt14default_deleteISA_ELb1ELb1EE", !44, i64 0}
!44 = !{!"_ZTSSt15__uniq_ptr_implI12UnorderedMapIPK13IRInstructionN14type_inference15TypeEnvironmentESt4hashIS3_ESt8equal_toIS3_EESt14default_deleteISA_EE", !45, i64 0}
!45 = !{!"_ZTSSt5tupleIJP12UnorderedMapIPK13IRInstructionN14type_inference15TypeEnvironmentESt4hashIS3_ESt8equal_toIS3_EESt14default_deleteISA_EEE", !46, i64 0}
!46 = !{!"_ZTSSt11_Tuple_implILm0EJP12UnorderedMapIPK13IRInstructionN14type_inference15TypeEnvironmentESt4hashIS3_ESt8equal_toIS3_EESt14default_deleteISA_EEE", !47, i64 0}
!47 = !{!"_ZTSSt10_Head_baseILm0EP12UnorderedMapIPK13IRInstructionN14type_inference15TypeEnvironmentESt4hashIS3_ESt8equal_toIS3_EELb0EE", !6, i64 0}
!48 = !{!"_ZTS4LazyIN13constant_uses12ConstantUsesEE", !49, i64 0, !50, i64 32}
!49 = !{!"_ZTSSt8functionIFSt10unique_ptrIN13constant_uses12ConstantUsesESt14default_deleteIS2_EEvEE", !17, i64 0, !6, i64 24}
!50 = !{!"_ZTSSt10unique_ptrIN13constant_uses12ConstantUsesESt14default_deleteIS1_EE", !51, i64 0}
!51 = !{!"_ZTSSt15__uniq_ptr_dataIN13constant_uses12ConstantUsesESt14default_deleteIS1_ELb1ELb1EE", !52, i64 0}
!52 = !{!"_ZTSSt15__uniq_ptr_implIN13constant_uses12ConstantUsesESt14default_deleteIS1_EE", !53, i64 0}
!53 = !{!"_ZTSSt5tupleIJPN13constant_uses12ConstantUsesESt14default_deleteIS1_EEE", !54, i64 0}
!54 = !{!"_ZTSSt11_Tuple_implILm0EJPN13constant_uses12ConstantUsesESt14default_deleteIS1_EEE", !55, i64 0}
!55 = !{!"_ZTSSt10_Head_baseILm0EPN13constant_uses12ConstantUsesELb0EE", !6, i64 0}
!56 = distinct !{!56, !12}
!57 = distinct !{!57, !12}
!58 = distinct !{!58, !12}


; 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.boost::optional.151" = type { %"class.boost::optional_detail::tc_optional_base" }
%"class.boost::optional_detail::tc_optional_base" = type { i8, ptr }
%"class.std::basic_string_view" = type { i64, ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }

@.str.9 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [30 x i8], align 1
@__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm = external hidden unnamed_addr constant [93 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [49 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { i8, ptr } @_ZNK14type_inference15TypeEnvironment12get_dex_typeEj(ptr noundef nonnull align 8 dereferenceable(48), i32 noundef) local_unnamed_addr #2 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK5boost8optionalIPK7DexTypeEcvbEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3 align 2

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

declare noundef ptr @_ZN4type6_floatEv() local_unnamed_addr #4

declare noundef ptr @_ZN4type5_longEv() local_unnamed_addr #4

declare noundef ptr @_ZN4type7_doubleEv() local_unnamed_addr #4

declare noundef ptr @_ZN4type8_booleanEv() local_unnamed_addr #4

declare noundef ptr @_ZN4type5_byteEv() local_unnamed_addr #4

declare noundef ptr @_ZN4type6_shortEv() local_unnamed_addr #4

declare noundef ptr @_ZN4type5_charEv() local_unnamed_addr #4

declare noundef ptr @_ZN4type4_intEv() local_unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1 align 2

; Function Attrs: noreturn
declare void @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef, ptr noundef, ...) local_unnamed_addr #5

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

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

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

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

declare noundef ptr @_ZN4type19java_lang_ThrowableEv() local_unnamed_addr #4

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

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

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

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

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

declare noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32), i16 noundef zeroext) local_unnamed_addr #4

declare noundef zeroext i1 @_ZN4type8is_arrayEPK7DexType(ptr noundef) local_unnamed_addr #4

declare noundef ptr @_ZN4type24get_array_component_typeEPK7DexType(ptr noundef) local_unnamed_addr #4

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

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

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

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

declare noundef i64 @_ZNK13IRInstruction9srcs_sizeEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #4

declare noundef ptr @_ZN4type16java_lang_ObjectEv() local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
define dso_local noundef ptr @_ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm(ptr noundef nonnull align 8 dereferenceable(248) %0, ptr noundef nonnull %1, i64 noundef %2) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca %"class.boost::optional.151", align 8
  %6 = alloca %"class.boost::optional.151", align 8
  %7 = alloca %"class.std::basic_string_view", align 8
  %8 = alloca %"class.boost::optional.151", align 8
  %9 = alloca %"class.boost::optional.151", align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  store ptr %1, ptr %4, align 8, !tbaa !5
  %11 = tail call noundef i64 @_ZNK13IRInstruction9srcs_sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  %12 = icmp ugt i64 %11, %2
  br i1 %12, label %14, label %13

13:                                               ; preds = %3
  tail call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.9, i32 noundef 461, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef nonnull @.str.10) #6
  unreachable

14:                                               ; preds = %3
  %15 = tail call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  switch i16 %15, label %225 [
    i16 26, label %16
    i16 160, label %16
    i16 161, label %16
    i16 162, label %16
    i16 0, label %16
    i16 163, label %16
    i16 4, label %16
    i16 164, label %16
    i16 6, label %16
    i16 165, label %16
    i16 5, label %16
    i16 7, label %16
    i16 8, label %16
    i16 12, label %16
    i16 13, label %16
    i16 14, label %16
    i16 15, label %16
    i16 21, label %16
    i16 73, label %16
    i16 76, label %16
    i16 77, label %16
    i16 78, label %16
    i16 79, label %16
    i16 74, label %16
    i16 75, label %16
    i16 166, label %16
    i16 167, label %16
    i16 168, label %16
    i16 169, label %16
    i16 9, label %17
    i16 10, label %17
    i16 11, label %17
    i16 1, label %24
    i16 2, label %24
    i16 3, label %24
    i16 16, label %25
    i16 17, label %25
    i16 18, label %25
    i16 19, label %25
    i16 20, label %30
    i16 24, label %30
    i16 25, label %49
    i16 59, label %54
    i16 62, label %54
    i16 63, label %54
    i16 64, label %54
    i16 65, label %54
    i16 60, label %54
    i16 61, label %54
    i16 33, label %60
    i16 34, label %60
    i16 39, label %65
    i16 40, label %65
    i16 41, label %65
    i16 42, label %65
    i16 43, label %65
    i16 44, label %65
    i16 35, label %70
    i16 36, label %70
    i16 37, label %70
    i16 38, label %70
    i16 22, label %70
    i16 27, label %70
    i16 94, label %70
    i16 95, label %70
    i16 112, label %70
    i16 113, label %70
    i16 114, label %70
    i16 100, label %70
    i16 101, label %70
    i16 102, label %70
    i16 115, label %70
    i16 116, label %70
    i16 117, label %70
    i16 123, label %70
    i16 124, label %70
    i16 125, label %70
    i16 118, label %70
    i16 119, label %70
    i16 147, label %70
    i16 148, label %70
    i16 149, label %70
    i16 155, label %70
    i16 156, label %70
    i16 157, label %70
    i16 150, label %70
    i16 151, label %70
    i16 120, label %75
    i16 121, label %75
    i16 122, label %75
    i16 152, label %75
    i16 153, label %75
    i16 154, label %75
    i16 23, label %80
    i16 28, label %83
    i16 29, label %83
    i16 98, label %83
    i16 106, label %83
    i16 107, label %83
    i16 108, label %83
    i16 137, label %83
    i16 138, label %83
    i16 139, label %83
    i16 140, label %83
    i16 141, label %83
    i16 30, label %88
    i16 31, label %88
    i16 99, label %88
    i16 109, label %88
    i16 110, label %88
    i16 111, label %88
    i16 142, label %88
    i16 143, label %88
    i16 144, label %88
    i16 145, label %88
    i16 146, label %88
    i16 32, label %93
    i16 96, label %93
    i16 97, label %93
    i16 103, label %93
    i16 104, label %93
    i16 105, label %93
    i16 126, label %93
    i16 127, label %93
    i16 128, label %93
    i16 131, label %93
    i16 132, label %93
    i16 133, label %93
    i16 129, label %93
    i16 130, label %93
    i16 134, label %98
    i16 135, label %98
    i16 136, label %98
    i16 45, label %104
    i16 48, label %104
    i16 49, label %104
    i16 50, label %104
    i16 51, label %104
    i16 46, label %104
    i16 47, label %104
    i16 52, label %124
    i16 55, label %124
    i16 56, label %124
    i16 57, label %124
    i16 58, label %124
    i16 53, label %124
    i16 54, label %124
    i16 66, label %186
    i16 69, label %186
    i16 70, label %186
    i16 71, label %186
    i16 72, label %186
    i16 67, label %186
    i16 68, label %186
    i16 80, label %194
    i16 83, label %194
    i16 84, label %194
    i16 85, label %194
    i16 86, label %194
    i16 81, label %194
    i16 82, label %194
    i16 87, label %200
    i16 88, label %200
    i16 89, label %200
    i16 90, label %200
    i16 91, label %200
    i16 93, label %220
    i16 92, label %220
    i16 158, label %220
    i16 159, label %220
  ]

16:                                               ; preds = %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14
  tail call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.9, i32 noundef 492, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef nonnull @.str.10) #6
  unreachable

17:                                               ; preds = %14, %14, %14
  %18 = icmp eq i64 %2, 0
  br i1 %18, label %20, label %19

19:                                               ; preds = %17
  tail call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.9, i32 noundef 497, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef nonnull @.str.10) #6
  unreachable

20:                                               ; preds = %17
  %21 = load ptr, ptr %0, align 8, !tbaa !9
  %22 = tail call noundef ptr @_ZNK12DexMethodRef9get_protoEv(ptr noundef nonnull align 8 dereferenceable(26) %21)
  %23 = tail call noundef ptr @_ZNK8DexProto9get_rtypeEv(ptr noundef nonnull align 8 dereferenceable(24) %22)
  br label %226

24:                                               ; preds = %14, %14, %14
  tail call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.9, i32 noundef 504, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef nonnull @.str.10) #6
  unreachable

25:                                               ; preds = %14, %14, %14, %14
  %26 = icmp eq i64 %2, 0
  br i1 %26, label %28, label %27

27:                                               ; preds = %25
  tail call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.9, i32 noundef 510, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef nonnull @.str.10) #6
  unreachable

28:                                               ; preds = %25
  %29 = tail call noundef ptr @_ZN4type16java_lang_ObjectEv()
  br label %226

30:                                               ; preds = %14, %14
  %31 = icmp eq i64 %2, 0
  br i1 %31, label %33, label %32

32:                                               ; preds = %30
  tail call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.9, i32 noundef 515, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef nonnull @.str.10) #6
  unreachable

33:                                               ; preds = %30
  %34 = getelementptr inbounds i8, ptr %0, i64 168
  %35 = tail call noundef ptr @_ZN4LazyI12UnorderedMapIPK13IRInstructionN14type_inference15TypeEnvironmentESt4hashIS3_ESt8equal_toIS3_EEEptEv(ptr noundef nonnull align 8 dereferenceable(40) %34)
  %36 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN12UnorderedMapIPK13IRInstructionN14type_inference15TypeEnvironmentESt4hashIS2_ESt8equal_toIS2_EE2atERKS2_(ptr noundef nonnull align 8 dereferenceable(56) %35, ptr noundef nonnull align 8 dereferenceable(8) %4)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #7
  %37 = load ptr, ptr %4, align 8, !tbaa !5
  %38 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %37, i16 noundef zeroext 0)
  %39 = call { i8, ptr } @_ZNK14type_inference15TypeEnvironment12get_dex_typeEj(ptr noundef nonnull align 8 dereferenceable(48) %36, i32 noundef %38)
  %40 = extractvalue { i8, ptr } %39, 0
  store i8 %40, ptr %5, align 8
  %41 = getelementptr inbounds i8, ptr %5, i64 8
  %42 = extractvalue { i8, ptr } %39, 1
  store ptr %42, ptr %41, align 8
  %43 = call noundef zeroext i1 @_ZNK5boost8optionalIPK7DexTypeEcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %5) #7
  br i1 %43, label %44, label %47

44:                                               ; preds = %33
  %45 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNR5boost8optionalIPK7DexTypeEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %5)
  %46 = load ptr, ptr %45, align 8, !tbaa !5
  br label %47

47:                                               ; preds = %33, %44
  %48 = phi ptr [ %46, %44 ], [ null, %33 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #7
  br label %226

49:                                               ; preds = %14
  %50 = icmp eq i64 %2, 0
  br i1 %50, label %52, label %51

51:                                               ; preds = %49
  tail call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.9, i32 noundef 522, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef nonnull @.str.10) #6
  unreachable

52:                                               ; preds = %49
  %53 = tail call noundef ptr @_ZN4type19java_lang_ThrowableEv()
  br label %226

54:                                               ; preds = %14, %14, %14, %14, %14, %14, %14
  %55 = icmp eq i64 %2, 0
  br i1 %55, label %57, label %56

56:                                               ; preds = %54
  tail call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.9, i32 noundef 532, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef nonnull @.str.10) #6
  unreachable

57:                                               ; preds = %54
  %58 = tail call noundef ptr @_ZNK13IRInstruction9get_fieldEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  %59 = tail call noundef ptr @_ZNK11DexFieldRef9get_classEv(ptr noundef nonnull align 8 dereferenceable(26) %58)
  br label %226

60:                                               ; preds = %14, %14
  %61 = icmp ult i64 %2, 2
  br i1 %61, label %63, label %62

62:                                               ; preds = %60
  tail call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.9, i32 noundef 537, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef nonnull @.str.10) #6
  unreachable

63:                                               ; preds = %60
  %64 = tail call noundef ptr @_ZN13outliner_impl20OutlinerTypeAnalysis23get_if_insn_type_demandEP13IRInstruction(ptr noundef nonnull align 8 dereferenceable(248) %0, ptr noundef nonnull %1)
  br label %226

65:                                               ; preds = %14, %14, %14, %14, %14, %14
  %66 = icmp eq i64 %2, 0
  br i1 %66, label %68, label %67

67:                                               ; preds = %65
  tail call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.9, i32 noundef 547, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef nonnull @.str.10) #6
  unreachable

68:                                               ; preds = %65
  %69 = tail call noundef ptr @_ZN13outliner_impl20OutlinerTypeAnalysis23get_if_insn_type_demandEP13IRInstruction(ptr noundef nonnull align 8 dereferenceable(248) %0, ptr noundef nonnull %1)
  br label %226

70:                                               ; preds = %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14
  %71 = icmp ult i64 %2, 2
  br i1 %71, label %73, label %72

72:                                               ; preds = %70
  tail call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.9, i32 noundef 581, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef nonnull @.str.10) #6
  unreachable

73:                                               ; preds = %70
  %74 = tail call noundef ptr @_ZN4type4_intEv()
  br label %226

75:                                               ; preds = %14, %14, %14, %14, %14, %14
  %76 = icmp ult i64 %2, 2
  br i1 %76, label %78, label %77

77:                                               ; preds = %75
  tail call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.9, i32 noundef 590, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef nonnull @.str.10) #6
  unreachable

78:                                               ; preds = %75
  %79 = tail call noundef ptr @_ZN4type4_intEv()
  br label %226

80:                                               ; preds = %14
  %81 = tail call noundef ptr @_ZNK13IRInstruction8get_typeEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  %82 = tail call noundef ptr @_ZN4type24get_array_component_typeEPK7DexType(ptr noundef %81)
  br label %226

83:                                               ; preds = %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14
  %84 = icmp ult i64 %2, 2
  br i1 %84, label %86, label %85

85:                                               ; preds = %83
  tail call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.9, i32 noundef 609, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef nonnull @.str.10) #6
  unreachable

86:                                               ; preds = %83
  %87 = tail call noundef ptr @_ZN4type6_floatEv()
  br label %226

88:                                               ; preds = %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14
  %89 = icmp ult i64 %2, 2
  br i1 %89, label %91, label %90

90:                                               ; preds = %88
  tail call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.9, i32 noundef 623, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef nonnull @.str.10) #6
  unreachable

91:                                               ; preds = %88
  %92 = tail call noundef ptr @_ZN4type7_doubleEv()
  br label %226

93:                                               ; preds = %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14, %14
  %94 = icmp ult i64 %2, 2
  br i1 %94, label %96, label %95

95:                                               ; preds = %93
  tail call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.9, i32 noundef 640, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef nonnull @.str.10) #6
  unreachable

96:                                               ; preds = %93
  %97 = tail call noundef ptr @_ZN4type5_longEv()
  br label %226

98:                                               ; preds = %14, %14, %14
  switch i64 %2, label %101 [
    i64 0, label %99
    i64 1, label %102
  ]

99:                                               ; preds = %98
  %100 = tail call noundef ptr @_ZN4type5_longEv()
  br label %226

101:                                              ; preds = %98
  tail call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.9, i32 noundef 647, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef nonnull @.str.10) #6
  unreachable

102:                                              ; preds = %98
  %103 = tail call noundef ptr @_ZN4type4_intEv()
  br label %226

104:                                              ; preds = %14, %14, %14, %14, %14, %14, %14
  switch i64 %2, label %121 [
    i64 0, label %105
    i64 1, label %122
  ]

105:                                              ; preds = %104
  %106 = getelementptr inbounds i8, ptr %0, i64 168
  %107 = tail call noundef ptr @_ZN4LazyI12UnorderedMapIPK13IRInstructionN14type_inference15TypeEnvironmentESt4hashIS3_ESt8equal_toIS3_EEEptEv(ptr noundef nonnull align 8 dereferenceable(40) %106)
  %108 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN12UnorderedMapIPK13IRInstructionN14type_inference15TypeEnvironmentESt4hashIS2_ESt8equal_toIS2_EE2atERKS2_(ptr noundef nonnull align 8 dereferenceable(56) %107, ptr noundef nonnull align 8 dereferenceable(8) %4)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #7
  %109 = load ptr, ptr %4, align 8, !tbaa !5
  %110 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %109, i16 noundef zeroext 0)
  %111 = call { i8, ptr } @_ZNK14type_inference15TypeEnvironment12get_dex_typeEj(ptr noundef nonnull align 8 dereferenceable(48) %108, i32 noundef %110)
  %112 = extractvalue { i8, ptr } %111, 0
  store i8 %112, ptr %6, align 8
  %113 = getelementptr inbounds i8, ptr %6, i64 8
  %114 = extractvalue { i8, ptr } %111, 1
  store ptr %114, ptr %113, align 8
  %115 = call noundef zeroext i1 @_ZNK5boost8optionalIPK7DexTypeEcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %6) #7
  br i1 %115, label %116, label %119

116:                                              ; preds = %105
  %117 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNR5boost8optionalIPK7DexTypeEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %6)
  %118 = load ptr, ptr %117, align 8, !tbaa !5
  br label %119

119:                                              ; preds = %105, %116
  %120 = phi ptr [ %118, %116 ], [ null, %105 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #7
  br label %226

121:                                              ; preds = %104
  tail call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.9, i32 noundef 662, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef nonnull @.str.10) #6
  unreachable

122:                                              ; preds = %104
  %123 = tail call noundef ptr @_ZN4type4_intEv()
  br label %226

124:                                              ; preds = %14, %14, %14, %14, %14, %14, %14
  switch i64 %2, label %151 [
    i64 1, label %125
    i64 2, label %149
    i64 0, label %152
  ]

125:                                              ; preds = %124
  %126 = tail call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  %127 = icmp eq i16 %126, 54
  br i1 %127, label %128, label %133

128:                                              ; preds = %125
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef @.str.20) #7
  %129 = load i64, ptr %7, align 8
  %130 = getelementptr inbounds i8, ptr %7, i64 8
  %131 = load ptr, ptr %130, align 8
  %132 = call noundef ptr @_ZN7DexType9make_typeESt17basic_string_viewIcSt11char_traitsIcEE(i64 %129, ptr %131)
  br label %226

133:                                              ; preds = %125
  %134 = getelementptr inbounds i8, ptr %0, i64 168
  %135 = tail call noundef ptr @_ZN4LazyI12UnorderedMapIPK13IRInstructionN14type_inference15TypeEnvironmentESt4hashIS3_ESt8equal_toIS3_EEEptEv(ptr noundef nonnull align 8 dereferenceable(40) %134)
  %136 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN12UnorderedMapIPK13IRInstructionN14type_inference15TypeEnvironmentESt4hashIS2_ESt8equal_toIS2_EE2atERKS2_(ptr noundef nonnull align 8 dereferenceable(56) %135, ptr noundef nonnull align 8 dereferenceable(8) %4)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #7
  %137 = load ptr, ptr %4, align 8, !tbaa !5
  %138 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %137, i16 noundef zeroext 1)
  %139 = call { i8, ptr } @_ZNK14type_inference15TypeEnvironment12get_dex_typeEj(ptr noundef nonnull align 8 dereferenceable(48) %136, i32 noundef %138)
  %140 = extractvalue { i8, ptr } %139, 0
  store i8 %140, ptr %8, align 8
  %141 = getelementptr inbounds i8, ptr %8, i64 8
  %142 = extractvalue { i8, ptr } %139, 1
  store ptr %142, ptr %141, align 8
  %143 = call noundef zeroext i1 @_ZNK5boost8optionalIPK7DexTypeEcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %8) #7
  br i1 %143, label %144, label %147

144:                                              ; preds = %133
  %145 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNR5boost8optionalIPK7DexTypeEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %8)
  %146 = load ptr, ptr %145, align 8, !tbaa !5
  br label %147

147:                                              ; preds = %133, %144
  %148 = phi ptr [ %146, %144 ], [ null, %133 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #7
  br label %226

149:                                              ; preds = %124
  %150 = tail call noundef ptr @_ZN4type4_intEv()
  br label %226

151:                                              ; preds = %124
  tail call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.9, i32 noundef 681, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef nonnull @.str.10) #6
  unreachable

152:                                              ; preds = %124
  %153 = tail call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  switch i16 %153, label %185 [
    i16 52, label %154
    i16 53, label %154
    i16 55, label %175
    i16 56, label %177
    i16 57, label %179
    i16 58, label %181
    i16 54, label %183
  ]

154:                                              ; preds = %152, %152
  %155 = getelementptr inbounds i8, ptr %0, i64 168
  %156 = tail call noundef ptr @_ZN4LazyI12UnorderedMapIPK13IRInstructionN14type_inference15TypeEnvironmentESt4hashIS3_ESt8equal_toIS3_EEEptEv(ptr noundef nonnull align 8 dereferenceable(40) %155)
  %157 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN12UnorderedMapIPK13IRInstructionN14type_inference15TypeEnvironmentESt4hashIS2_ESt8equal_toIS2_EE2atERKS2_(ptr noundef nonnull align 8 dereferenceable(56) %156, ptr noundef nonnull align 8 dereferenceable(8) %4)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #7
  %158 = load ptr, ptr %4, align 8, !tbaa !5
  %159 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %158, i16 noundef zeroext 1)
  %160 = call { i8, ptr } @_ZNK14type_inference15TypeEnvironment12get_dex_typeEj(ptr noundef nonnull align 8 dereferenceable(48) %157, i32 noundef %159)
  %161 = extractvalue { i8, ptr } %160, 0
  store i8 %161, ptr %9, align 8
  %162 = getelementptr inbounds i8, ptr %9, i64 8
  %163 = extractvalue { i8, ptr } %160, 1
  store ptr %163, ptr %162, align 8
  %164 = call noundef zeroext i1 @_ZNK5boost8optionalIPK7DexTypeEcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %9) #7
  br i1 %164, label %165, label %173

165:                                              ; preds = %154
  %166 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNR5boost8optionalIPK7DexTypeEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %9)
  %167 = load ptr, ptr %166, align 8, !tbaa !5
  %168 = call noundef zeroext i1 @_ZN4type8is_arrayEPK7DexType(ptr noundef %167)
  br i1 %168, label %169, label %173

169:                                              ; preds = %165
  %170 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNR5boost8optionalIPK7DexTypeEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %9)
  %171 = load ptr, ptr %170, align 8, !tbaa !5
  %172 = call noundef ptr @_ZN4type24get_array_component_typeEPK7DexType(ptr noundef %171)
  br label %173

173:                                              ; preds = %154, %165, %169
  %174 = phi ptr [ %172, %169 ], [ null, %165 ], [ null, %154 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #7
  br label %226

175:                                              ; preds = %152
  %176 = tail call noundef ptr @_ZN4type8_booleanEv()
  br label %226

177:                                              ; preds = %152
  %178 = tail call noundef ptr @_ZN4type5_byteEv()
  br label %226

179:                                              ; preds = %152
  %180 = tail call noundef ptr @_ZN4type5_charEv()
  br label %226

181:                                              ; preds = %152
  %182 = tail call noundef ptr @_ZN4type6_shortEv()
  br label %226

183:                                              ; preds = %152
  %184 = tail call noundef ptr @_ZN4type16java_lang_ObjectEv()
  br label %226

185:                                              ; preds = %152
  tail call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.9, i32 noundef 706, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef nonnull @.str.10) #6
  unreachable

186:                                              ; preds = %14, %14, %14, %14, %14, %14, %14
  switch i64 %2, label %190 [
    i64 1, label %187
    i64 0, label %191
  ]

187:                                              ; preds = %186
  %188 = tail call noundef ptr @_ZNK13IRInstruction9get_fieldEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  %189 = tail call noundef ptr @_ZNK11DexFieldRef9get_classEv(ptr noundef nonnull align 8 dereferenceable(26) %188)
  br label %226

190:                                              ; preds = %186
  tail call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.9, i32 noundef 717, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef nonnull @.str.10) #6
  unreachable

191:                                              ; preds = %186
  %192 = tail call noundef ptr @_ZNK13IRInstruction9get_fieldEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  %193 = tail call noundef ptr @_ZNK11DexFieldRef8get_typeEv(ptr noundef nonnull align 8 dereferenceable(26) %192)
  br label %226

194:                                              ; preds = %14, %14, %14, %14, %14, %14, %14
  %195 = icmp eq i64 %2, 0
  br i1 %195, label %197, label %196

196:                                              ; preds = %194
  tail call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.9, i32 noundef 727, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef nonnull @.str.10) #6
  unreachable

197:                                              ; preds = %194
  %198 = tail call noundef ptr @_ZNK13IRInstruction9get_fieldEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  %199 = tail call noundef ptr @_ZNK11DexFieldRef8get_typeEv(ptr noundef nonnull align 8 dereferenceable(26) %198)
  br label %226

200:                                              ; preds = %14, %14, %14, %14, %14
  %201 = tail call noundef ptr @_ZNK13IRInstruction10get_methodEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  %202 = tail call noundef ptr @_ZNK12DexMethodRef9get_protoEv(ptr noundef nonnull align 8 dereferenceable(26) %201)
  %203 = tail call noundef ptr @_ZNK8DexProto8get_argsEv(ptr noundef nonnull align 8 dereferenceable(24) %202)
  %204 = tail call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  %.not = icmp ne i16 %204, 90
  %205 = zext i1 %.not to i64
  %206 = tail call noundef i64 @_ZNK11DexTypeList4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %203)
  %207 = add i64 %206, %205
  %208 = tail call noundef i64 @_ZNK13IRInstruction9srcs_sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  %209 = icmp eq i64 %208, %207
  br i1 %209, label %211, label %210

210:                                              ; preds = %200
  tail call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.9, i32 noundef 739, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef nonnull @.str.10) #6
  unreachable

211:                                              ; preds = %200
  %212 = tail call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  %.not39 = icmp eq i16 %212, 90
  br i1 %.not39, label %218, label %213

213:                                              ; preds = %211
  %214 = add i64 %2, -1
  %215 = icmp eq i64 %2, 0
  br i1 %215, label %216, label %218

216:                                              ; preds = %213
  %217 = tail call noundef ptr @_ZNK12DexMethodRef9get_classEv(ptr noundef nonnull align 8 dereferenceable(26) %201)
  br label %226

218:                                              ; preds = %213, %211
  %.037 = phi i64 [ %214, %213 ], [ %2, %211 ]
  %219 = tail call noundef ptr @_ZNK11DexTypeList2atEm(ptr noundef nonnull align 8 dereferenceable(24) %203, i64 noundef %.037)
  br label %226

220:                                              ; preds = %14, %14, %14, %14
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #7
  call void @_Z4showI13IRInstructionRSoENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %10, ptr noundef nonnull %1)
  %221 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %10) #7
  invoke void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.9, i32 noundef 755, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN13outliner_impl20OutlinerTypeAnalysis15get_type_demandEP13IRInstructionm, i32 noundef 2, ptr noundef nonnull @.str.22, ptr noundef %221) #6
          to label %222 unwind label %223

222:                                              ; preds = %220
  unreachable

223:                                              ; preds = %220
  %224 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #7
  resume { ptr, i32 } %224

225:                                              ; preds = %14
  unreachable

226:                                              ; preds = %216, %218, %197, %191, %187, %183, %181, %179, %177, %175, %173, %149, %147, %128, %122, %119, %102, %99, %96, %91, %86, %80, %78, %73, %68, %63, %57, %52, %47, %28, %20
  %.1 = phi ptr [ %199, %197 ], [ %189, %187 ], [ %193, %191 ], [ %132, %128 ], [ %148, %147 ], [ %150, %149 ], [ %184, %183 ], [ %182, %181 ], [ %180, %179 ], [ %178, %177 ], [ %176, %175 ], [ %174, %173 ], [ %120, %119 ], [ %123, %122 ], [ %100, %99 ], [ %103, %102 ], [ %97, %96 ], [ %92, %91 ], [ %87, %86 ], [ %82, %80 ], [ %79, %78 ], [ %74, %73 ], [ %69, %68 ], [ %64, %63 ], [ %59, %57 ], [ %53, %52 ], [ %48, %47 ], [ %29, %28 ], [ %23, %20 ], [ %217, %216 ], [ %219, %218 ]
  ret ptr %.1
}

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN7DexType9make_typeESt17basic_string_viewIcSt11char_traitsIcEE(i64, ptr) local_unnamed_addr #2 align 2

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 0}
!10 = !{!"_ZTSN13outliner_impl20OutlinerTypeAnalysisE", !6, i64 0, !11, i64 8, !20, i64 48, !11, i64 88, !28, i64 128, !36, i64 168, !44, i64 208}
!11 = !{!"_ZTS4LazyI12UnorderedMapIPK13IRInstructionN6sparta19AbstractEnvironmentINS4_15PatriciaTreeMapIjNS4_17SetAbstractDomainINS4_15PatriciaTreeSetIPS1_EEEENS4_17TopValueInterfaceISB_EEEEEESt4hashIS3_ESt8equal_toIS3_EEE", !12, i64 0, !14, i64 32}
!12 = !{!"_ZTSSt8functionIFSt10unique_ptrI12UnorderedMapIPK13IRInstructionN6sparta19AbstractEnvironmentINS5_15PatriciaTreeMapIjNS5_17SetAbstractDomainINS5_15PatriciaTreeSetIPS2_EEEENS5_17TopValueInterfaceISC_EEEEEESt4hashIS4_ESt8equal_toIS4_EESt14default_deleteISL_EEvEE", !13, i64 0, !6, i64 24}
!13 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!14 = !{!"_ZTSSt10unique_ptrI12UnorderedMapIPK13IRInstructionN6sparta19AbstractEnvironmentINS4_15PatriciaTreeMapIjNS4_17SetAbstractDomainINS4_15PatriciaTreeSetIPS1_EEEENS4_17TopValueInterfaceISB_EEEEEESt4hashIS3_ESt8equal_toIS3_EESt14default_deleteISK_EE", !15, i64 0}
!15 = !{!"_ZTSSt15__uniq_ptr_dataI12UnorderedMapIPK13IRInstructionN6sparta19AbstractEnvironmentINS4_15PatriciaTreeMapIjNS4_17SetAbstractDomainINS4_15PatriciaTreeSetIPS1_EEEENS4_17TopValueInterfaceISB_EEEEEESt4hashIS3_ESt8equal_toIS3_EESt14default_deleteISK_ELb1ELb1EE", !16, i64 0}
!16 = !{!"_ZTSSt15__uniq_ptr_implI12UnorderedMapIPK13IRInstructionN6sparta19AbstractEnvironmentINS4_15PatriciaTreeMapIjNS4_17SetAbstractDomainINS4_15PatriciaTreeSetIPS1_EEEENS4_17TopValueInterfaceISB_EEEEEESt4hashIS3_ESt8equal_toIS3_EESt14default_deleteISK_EE", !17, i64 0}
!17 = !{!"_ZTSSt5tupleIJP12UnorderedMapIPK13IRInstructionN6sparta19AbstractEnvironmentINS4_15PatriciaTreeMapIjNS4_17SetAbstractDomainINS4_15PatriciaTreeSetIPS1_EEEENS4_17TopValueInterfaceISB_EEEEEESt4hashIS3_ESt8equal_toIS3_EESt14default_deleteISK_EEE", !18, i64 0}
!18 = !{!"_ZTSSt11_Tuple_implILm0EJP12UnorderedMapIPK13IRInstructionN6sparta19AbstractEnvironmentINS4_15PatriciaTreeMapIjNS4_17SetAbstractDomainINS4_15PatriciaTreeSetIPS1_EEEENS4_17TopValueInterfaceISB_EEEEEESt4hashIS3_ESt8equal_toIS3_EESt14default_deleteISK_EEE", !19, i64 0}
!19 = !{!"_ZTSSt10_Head_baseILm0EP12UnorderedMapIPK13IRInstructionN6sparta19AbstractEnvironmentINS4_15PatriciaTreeMapIjNS4_17SetAbstractDomainINS4_15PatriciaTreeSetIPS1_EEEENS4_17TopValueInterfaceISB_EEEEEESt4hashIS3_ESt8equal_toIS3_EELb0EE", !6, i64 0}
!20 = !{!"_ZTS4LazyIN10live_range6ChainsEE", !21, i64 0, !22, i64 32}
!21 = !{!"_ZTSSt8functionIFSt10unique_ptrIN10live_range6ChainsESt14default_deleteIS2_EEvEE", !13, i64 0, !6, i64 24}
!22 = !{!"_ZTSSt10unique_ptrIN10live_range6ChainsESt14default_deleteIS1_EE", !23, i64 0}
!23 = !{!"_ZTSSt15__uniq_ptr_dataIN10live_range6ChainsESt14default_deleteIS1_ELb1ELb1EE", !24, i64 0}
!24 = !{!"_ZTSSt15__uniq_ptr_implIN10live_range6ChainsESt14default_deleteIS1_EE", !25, i64 0}
!25 = !{!"_ZTSSt5tupleIJPN10live_range6ChainsESt14default_deleteIS1_EEE", !26, i64 0}
!26 = !{!"_ZTSSt11_Tuple_implILm0EJPN10live_range6ChainsESt14default_deleteIS1_EEE", !27, i64 0}
!27 = !{!"_ZTSSt10_Head_baseILm0EPN10live_range6ChainsELb0EE", !6, i64 0}
!28 = !{!"_ZTS4LazyI12UnorderedMapIP13IRInstruction12UnorderedSetIN10live_range3UseESt4hashIS5_ESt8equal_toIS5_EES6_IS2_ES8_IS2_EEE", !29, i64 0, !30, i64 32}
!29 = !{!"_ZTSSt8functionIFSt10unique_ptrI12UnorderedMapIP13IRInstruction12UnorderedSetIN10live_range3UseESt4hashIS6_ESt8equal_toIS6_EES7_IS3_ES9_IS3_EESt14default_deleteISE_EEvEE", !13, i64 0, !6, i64 24}
!30 = !{!"_ZTSSt10unique_ptrI12UnorderedMapIP13IRInstruction12UnorderedSetIN10live_range3UseESt4hashIS5_ESt8equal_toIS5_EES6_IS2_ES8_IS2_EESt14default_deleteISD_EE", !31, i64 0}
!31 = !{!"_ZTSSt15__uniq_ptr_dataI12UnorderedMapIP13IRInstruction12UnorderedSetIN10live_range3UseESt4hashIS5_ESt8equal_toIS5_EES6_IS2_ES8_IS2_EESt14default_deleteISD_ELb1ELb1EE", !32, i64 0}
!32 = !{!"_ZTSSt15__uniq_ptr_implI12UnorderedMapIP13IRInstruction12UnorderedSetIN10live_range3UseESt4hashIS5_ESt8equal_toIS5_EES6_IS2_ES8_IS2_EESt14default_deleteISD_EE", !33, i64 0}
!33 = !{!"_ZTSSt5tupleIJP12UnorderedMapIP13IRInstruction12UnorderedSetIN10live_range3UseESt4hashIS5_ESt8equal_toIS5_EES6_IS2_ES8_IS2_EESt14default_deleteISD_EEE", !34, i64 0}
!34 = !{!"_ZTSSt11_Tuple_implILm0EJP12UnorderedMapIP13IRInstruction12UnorderedSetIN10live_range3UseESt4hashIS5_ESt8equal_toIS5_EES6_IS2_ES8_IS2_EESt14default_deleteISD_EEE", !35, i64 0}
!35 = !{!"_ZTSSt10_Head_baseILm0EP12UnorderedMapIP13IRInstruction12UnorderedSetIN10live_range3UseESt4hashIS5_ESt8equal_toIS5_EES6_IS2_ES8_IS2_EELb0EE", !6, i64 0}
!36 = !{!"_ZTS4LazyI12UnorderedMapIPK13IRInstructionN14type_inference15TypeEnvironmentESt4hashIS3_ESt8equal_toIS3_EEE", !37, i64 0, !38, i64 32}
!37 = !{!"_ZTSSt8functionIFSt10unique_ptrI12UnorderedMapIPK13IRInstructionN14type_inference15TypeEnvironmentESt4hashIS4_ESt8equal_toIS4_EESt14default_deleteISB_EEvEE", !13, i64 0, !6, i64 24}
!38 = !{!"_ZTSSt10unique_ptrI12UnorderedMapIPK13IRInstructionN14type_inference15TypeEnvironmentESt4hashIS3_ESt8equal_toIS3_EESt14default_deleteISA_EE", !39, i64 0}
!39 = !{!"_ZTSSt15__uniq_ptr_dataI12UnorderedMapIPK13IRInstructionN14type_inference15TypeEnvironmentESt4hashIS3_ESt8equal_toIS3_EESt14default_deleteISA_ELb1ELb1EE", !40, i64 0}
!40 = !{!"_ZTSSt15__uniq_ptr_implI12UnorderedMapIPK13IRInstructionN14type_inference15TypeEnvironmentESt4hashIS3_ESt8equal_toIS3_EESt14default_deleteISA_EE", !41, i64 0}
!41 = !{!"_ZTSSt5tupleIJP12UnorderedMapIPK13IRInstructionN14type_inference15TypeEnvironmentESt4hashIS3_ESt8equal_toIS3_EESt14default_deleteISA_EEE", !42, i64 0}
!42 = !{!"_ZTSSt11_Tuple_implILm0EJP12UnorderedMapIPK13IRInstructionN14type_inference15TypeEnvironmentESt4hashIS3_ESt8equal_toIS3_EESt14default_deleteISA_EEE", !43, i64 0}
!43 = !{!"_ZTSSt10_Head_baseILm0EP12UnorderedMapIPK13IRInstructionN14type_inference15TypeEnvironmentESt4hashIS3_ESt8equal_toIS3_EELb0EE", !6, i64 0}
!44 = !{!"_ZTS4LazyIN13constant_uses12ConstantUsesEE", !45, i64 0, !46, i64 32}
!45 = !{!"_ZTSSt8functionIFSt10unique_ptrIN13constant_uses12ConstantUsesESt14default_deleteIS2_EEvEE", !13, i64 0, !6, i64 24}
!46 = !{!"_ZTSSt10unique_ptrIN13constant_uses12ConstantUsesESt14default_deleteIS1_EE", !47, i64 0}
!47 = !{!"_ZTSSt15__uniq_ptr_dataIN13constant_uses12ConstantUsesESt14default_deleteIS1_ELb1ELb1EE", !48, i64 0}
!48 = !{!"_ZTSSt15__uniq_ptr_implIN13constant_uses12ConstantUsesESt14default_deleteIS1_EE", !49, i64 0}
!49 = !{!"_ZTSSt5tupleIJPN13constant_uses12ConstantUsesESt14default_deleteIS1_EEE", !50, i64 0}
!50 = !{!"_ZTSSt11_Tuple_implILm0EJPN13constant_uses12ConstantUsesESt14default_deleteIS1_EEE", !51, i64 0}
!51 = !{!"_ZTSSt10_Head_baseILm0EPN13constant_uses12ConstantUsesELb0EE", !6, i64 0}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass