; LLVM IR from facebook/redex :: libredex (IRTypeChecker)

; 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" = type { %"class.boost::optional_detail::tc_optional_base" }
%"class.boost::optional_detail::tc_optional_base" = type { i8, ptr }
%"class.std::__cxx11::basic_ostringstream" = type { %"class.std::basic_ostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { 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.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%class.anon = type { i8 }
%class.anon.207 = type { ptr }
%class.anon.208 = type { i8 }
%class.anon.210 = type { i8 }
%class.anon.212 = type { ptr, ptr }
%class.anon.213 = type { ptr }
%class.anon.214 = type { ptr, ptr }
%class.anon.215 = type { i8 }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%class.IRTypeChecker = type { ptr, i8, i8, i8, i8, i8, i8, i8, %"class.std::__cxx11::basic_string", %"class.std::unique_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 }

@_ZTIN12_GLOBAL__N_121TypeCheckingExceptionE = external hidden constant { ptr, ptr, ptr }, align 8
@.str.10 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [24 x i8], align 1
@__PRETTY_FUNCTION__._ZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentE = external hidden unnamed_addr constant [80 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [26 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: noreturn
declare void @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef, ptr noundef, ...) #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
define dso_local void @_ZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentE(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef %1, ptr noundef %2) #3 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca %"class.boost::optional", align 8
  %8 = alloca ptr, align 8
  %9 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca i1, align 1
  %14 = alloca ptr, align 8
  %15 = alloca i8, align 1
  %16 = alloca i64, align 8
  %17 = alloca %class.anon, align 1
  %18 = alloca %class.anon.207, align 8
  %19 = alloca %class.anon.208, align 1
  %20 = alloca %class.anon.210, align 1
  %21 = alloca %class.anon.212, align 8
  %22 = alloca %class.anon.213, align 8
  %23 = alloca %class.anon.214, align 8
  %24 = alloca %class.anon.215, align 1
  %25 = alloca ptr, align 8
  %26 = alloca %"class.boost::optional", align 8
  %27 = alloca ptr, align 8
  %28 = alloca %"class.boost::optional", align 8
  %29 = alloca ptr, align 8
  %30 = alloca %"class.boost::optional", align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca %"class.boost::optional", align 8
  %34 = alloca ptr, align 8
  %35 = alloca %"class.boost::optional", align 8
  %36 = alloca ptr, align 8
  %37 = alloca %"class.boost::optional", align 8
  %38 = alloca ptr, align 8
  %39 = alloca %"class.boost::optional", align 8
  %40 = alloca ptr, align 8
  %41 = alloca %"class.boost::optional", align 8
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca %"class.boost::optional", align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = alloca i64, align 8
  %48 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %49 = alloca %"class.std::__cxx11::basic_string", align 8
  %50 = alloca %"class.std::__cxx11::basic_string", align 8
  %51 = alloca i1, align 1
  %52 = alloca i64, align 8
  %53 = alloca i32, align 4
  %54 = alloca %"class.boost::optional", align 8
  %55 = alloca i32, align 4
  %56 = alloca %"class.boost::optional", align 8
  %57 = alloca ptr, align 8
  %58 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %59 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %60 = alloca i32, align 4
  %61 = alloca ptr, align 8
  %62 = alloca i32, align 4
  %63 = alloca %"class.boost::optional", align 8
  %64 = alloca ptr, align 8
  %65 = alloca i32, align 4
  %66 = alloca ptr, align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  store ptr %2, ptr %6, align 8, !tbaa !5
  %67 = load ptr, ptr %4, align 8
  %68 = load ptr, ptr %5, align 8, !tbaa !5
  %69 = call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %68)
  %70 = zext i16 %69 to i32
  switch i32 %70, label %1046 [
    i32 160, label %71
    i32 161, label %71
    i32 162, label %71
    i32 0, label %72
    i32 1, label %73
    i32 3, label %77
    i32 2, label %81
    i32 163, label %85
    i32 4, label %85
    i32 164, label %87
    i32 6, label %87
    i32 165, label %89
    i32 5, label %89
    i32 7, label %91
    i32 8, label %92
    i32 9, label %93
    i32 10, label %97
    i32 11, label %101
    i32 12, label %167
    i32 13, label %168
    i32 14, label %169
    i32 15, label %170
    i32 158, label %171
    i32 159, label %172
    i32 16, label %173
    i32 17, label %173
    i32 18, label %177
    i32 19, label %181
    i32 20, label %181
    i32 21, label %185
    i32 22, label %186
    i32 23, label %190
    i32 24, label %229
    i32 25, label %230
    i32 26, label %234
    i32 27, label %235
    i32 28, label %239
    i32 29, label %239
    i32 30, label %246
    i32 31, label %246
    i32 32, label %253
    i32 33, label %260
    i32 34, label %260
    i32 35, label %266
    i32 36, label %266
    i32 37, label %266
    i32 38, label %266
    i32 39, label %273
    i32 40, label %273
    i32 41, label %277
    i32 42, label %277
    i32 43, label %277
    i32 44, label %277
    i32 45, label %281
    i32 48, label %288
    i32 49, label %288
    i32 50, label %288
    i32 51, label %288
    i32 46, label %296
    i32 47, label %303
    i32 52, label %310
    i32 55, label %322
    i32 56, label %322
    i32 57, label %322
    i32 58, label %322
    i32 53, label %333
    i32 54, label %345
    i32 59, label %355
    i32 62, label %376
    i32 63, label %376
    i32 64, label %376
    i32 65, label %376
    i32 60, label %376
    i32 61, label %397
    i32 66, label %424
    i32 69, label %459
    i32 70, label %459
    i32 71, label %459
    i32 72, label %459
    i32 67, label %483
    i32 68, label %507
    i32 73, label %554
    i32 76, label %555
    i32 77, label %555
    i32 78, label %555
    i32 79, label %555
    i32 74, label %556
    i32 75, label %557
    i32 80, label %558
    i32 83, label %573
    i32 84, label %573
    i32 85, label %573
    i32 86, label %573
    i32 81, label %577
    i32 82, label %581
    i32 93, label %608
    i32 92, label %608
    i32 87, label %608
    i32 88, label %608
    i32 89, label %608
    i32 90, label %608
    i32 91, label %608
    i32 94, label %920
    i32 95, label %920
    i32 96, label %924
    i32 97, label %924
    i32 98, label %928
    i32 99, label %932
    i32 112, label %936
    i32 113, label %936
    i32 114, label %936
    i32 103, label %940
    i32 106, label %944
    i32 109, label %948
    i32 100, label %952
    i32 107, label %956
    i32 110, label %960
    i32 101, label %964
    i32 104, label %968
    i32 111, label %972
    i32 102, label %976
    i32 105, label %980
    i32 108, label %984
    i32 115, label %988
    i32 116, label %988
    i32 117, label %988
    i32 120, label %988
    i32 121, label %988
    i32 122, label %988
    i32 123, label %988
    i32 124, label %988
    i32 125, label %988
    i32 118, label %995
    i32 119, label %995
    i32 126, label %1002
    i32 127, label %1002
    i32 128, label %1002
    i32 131, label %1002
    i32 132, label %1002
    i32 133, label %1002
    i32 129, label %1009
    i32 130, label %1009
    i32 134, label %1016
    i32 135, label %1016
    i32 136, label %1016
    i32 137, label %1023
    i32 138, label %1023
    i32 139, label %1023
    i32 140, label %1023
    i32 141, label %1023
    i32 142, label %1030
    i32 143, label %1030
    i32 144, label %1030
    i32 145, label %1030
    i32 146, label %1030
    i32 147, label %1037
    i32 148, label %1037
    i32 149, label %1037
    i32 152, label %1037
    i32 153, label %1037
    i32 154, label %1037
    i32 155, label %1037
    i32 156, label %1037
    i32 157, label %1037
    i32 150, label %1041
    i32 151, label %1041
    i32 166, label %1045
    i32 167, label %1045
    i32 168, label %1045
    i32 169, label %1045
  ]

71:                                               ; preds = %3, %3, %3
  br label %1046

72:                                               ; preds = %3
  br label %1046

73:                                               ; preds = %3
  %74 = load ptr, ptr %6, align 8, !tbaa !5
  %75 = load ptr, ptr %5, align 8, !tbaa !5
  %76 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %75, i16 noundef zeroext 0)
  call void @_ZNK13IRTypeChecker13assume_scalarEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %67, ptr noundef %74, i32 noundef %76, i1 noundef zeroext true)
  br label %1046

77:                                               ; preds = %3
  %78 = load ptr, ptr %6, align 8, !tbaa !5
  %79 = load ptr, ptr %5, align 8, !tbaa !5
  %80 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %79, i16 noundef zeroext 0)
  call void @_ZNK13IRTypeChecker16assume_referenceEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %67, ptr noundef %78, i32 noundef %80, i1 noundef zeroext true)
  br label %1046

81:                                               ; preds = %3
  %82 = load ptr, ptr %6, align 8, !tbaa !5
  %83 = load ptr, ptr %5, align 8, !tbaa !5
  %84 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %83, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_118assume_wide_scalarEPN14type_inference15TypeEnvironmentEj(ptr noundef %82, i32 noundef %84)
  br label %1046

85:                                               ; preds = %3, %3
  %86 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZNK13IRTypeChecker13assume_scalarEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %67, ptr noundef %86, i32 noundef -2, i1 noundef zeroext false)
  br label %1046

87:                                               ; preds = %3, %3
  %88 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZNK13IRTypeChecker16assume_referenceEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %67, ptr noundef %88, i32 noundef -2, i1 noundef zeroext false)
  br label %1046

89:                                               ; preds = %3, %3
  %90 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN12_GLOBAL__N_118assume_wide_scalarEPN14type_inference15TypeEnvironmentEj(ptr noundef %90, i32 noundef -2)
  br label %1046

91:                                               ; preds = %3
  br label %1046

92:                                               ; preds = %3
  br label %1046

93:                                               ; preds = %3
  %94 = load ptr, ptr %6, align 8, !tbaa !5
  %95 = load ptr, ptr %5, align 8, !tbaa !5
  %96 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %95, i16 noundef zeroext 0)
  call void @_ZNK13IRTypeChecker13assume_scalarEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %67, ptr noundef %94, i32 noundef %96, i1 noundef zeroext false)
  br label %1046

97:                                               ; preds = %3
  %98 = load ptr, ptr %6, align 8, !tbaa !5
  %99 = load ptr, ptr %5, align 8, !tbaa !5
  %100 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %99, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_118assume_wide_scalarEPN14type_inference15TypeEnvironmentEj(ptr noundef %98, i32 noundef %100)
  br label %1046

101:                                              ; preds = %3
  %102 = load ptr, ptr %6, align 8, !tbaa !5
  %103 = load ptr, ptr %5, align 8, !tbaa !5
  %104 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %103, i16 noundef zeroext 0)
  call void @_ZNK13IRTypeChecker16assume_referenceEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %67, ptr noundef %102, i32 noundef %104, i1 noundef zeroext false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %7) #9
  %105 = load ptr, ptr %6, align 8, !tbaa !5
  %106 = load ptr, ptr %5, align 8, !tbaa !5
  %107 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %106, i16 noundef zeroext 0)
  %108 = call { i8, ptr } @_ZNK14type_inference15TypeEnvironment12get_dex_typeEj(ptr noundef nonnull align 8 dereferenceable(48) %105, i32 noundef %107)
  %109 = getelementptr inbounds %"class.boost::optional", ptr %7, i32 0, i32 0
  %110 = getelementptr inbounds { i8, ptr }, ptr %109, i32 0, i32 0
  %111 = extractvalue { i8, ptr } %108, 0
  store i8 %111, ptr %110, align 8
  %112 = getelementptr inbounds { i8, ptr }, ptr %109, i32 0, i32 1
  %113 = extractvalue { i8, ptr } %108, 1
  store ptr %113, ptr %112, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #9
  %114 = getelementptr inbounds %class.IRTypeChecker, ptr %67, i32 0, i32 0
  %115 = load ptr, ptr %114, align 8, !tbaa !9
  %116 = call noundef ptr @_ZNK12DexMethodRef9get_protoEv(ptr noundef nonnull align 8 dereferenceable(26) %115)
  %117 = call noundef ptr @_ZNK8DexProto9get_rtypeEv(ptr noundef nonnull align 8 dereferenceable(24) %116)
  store ptr %117, ptr %8, align 8, !tbaa !5
  %118 = call noundef zeroext i1 @_ZNK5boost8optionalIPK7DexTypeEcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %7) #9
  br i1 %118, label %119, label %166

119:                                              ; preds = %101
  %120 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNR5boost8optionalIPK7DexTypeEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %7)
  %121 = load ptr, ptr %120, align 8, !tbaa !5
  %122 = call noundef zeroext i1 @_ZN12_GLOBAL__N_126is_inference_fallback_typeEPK7DexType(ptr noundef %121)
  br i1 %122, label %166, label %123

123:                                              ; preds = %119
  %124 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNR5boost8optionalIPK7DexTypeEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %7)
  %125 = load ptr, ptr %124, align 8, !tbaa !5
  %126 = load ptr, ptr %8, align 8, !tbaa !5
  %127 = call noundef zeroext i1 @_ZN12_GLOBAL__N_124check_is_assignable_fromEPK7DexTypeS2_b(ptr noundef %125, ptr noundef %126, i1 noundef zeroext false)
  br i1 %127, label %165, label %128

128:                                              ; preds = %123
  call void @llvm.lifetime.start.p0(i64 376, ptr %9) #9
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %9)
  %129 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef @.str.20)
          to label %130 unwind label %148

130:                                              ; preds = %128
  %131 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5boostlsIcSt11char_traitsIcEPK7DexTypeEERSt13basic_ostreamIT_T0_ESA_RKNS_8optionalIT1_EE(ptr noundef nonnull align 8 dereferenceable(8) %129, ptr noundef nonnull align 8 dereferenceable(16) %7)
          to label %132 unwind label %148

132:                                              ; preds = %130
  %133 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %131, ptr noundef @.str.21)
          to label %134 unwind label %148

134:                                              ; preds = %132
  %135 = load ptr, ptr %8, align 8, !tbaa !5
  %136 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoPK7DexType(ptr noundef nonnull align 8 dereferenceable(8) %133, ptr noundef %135)
          to label %137 unwind label %148

137:                                              ; preds = %134
  %138 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %136, ptr noundef @.str.19)
          to label %139 unwind label %148

139:                                              ; preds = %137
  %140 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNR5boost8optionalIPK7DexTypeEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %7)
          to label %141 unwind label %148

141:                                              ; preds = %139
  %142 = load ptr, ptr %140, align 8, !tbaa !5
  %143 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN12_GLOBAL__N_120print_type_hierarchyERSoPK7DexType(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef %142)
          to label %144 unwind label %148

144:                                              ; preds = %141
  store i1 true, ptr %13, align 1
  %145 = call ptr @__cxa_allocate_exception(i64 16) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %12) #9
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %12, ptr noundef nonnull align 8 dereferenceable(112) %9)
          to label %146 unwind label %152

146:                                              ; preds = %144
  invoke void @_ZN12_GLOBAL__N_121TypeCheckingExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %145, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %147 unwind label %156

147:                                              ; preds = %146
  store i1 false, ptr %13, align 1
  invoke void @__cxa_throw(ptr %145, ptr @_ZTIN12_GLOBAL__N_121TypeCheckingExceptionE, ptr @_ZNSt13runtime_errorD2Ev) #10
          to label %1072 unwind label %156

148:                                              ; preds = %141, %139, %137, %134, %132, %130, %128
  %149 = landingpad { ptr, i32 }
          cleanup
  %150 = extractvalue { ptr, i32 } %149, 0
  store ptr %150, ptr %10, align 8
  %151 = extractvalue { ptr, i32 } %149, 1
  store i32 %151, ptr %11, align 4
  br label %164

152:                                              ; preds = %144
  %153 = landingpad { ptr, i32 }
          cleanup
  %154 = extractvalue { ptr, i32 } %153, 0
  store ptr %154, ptr %10, align 8
  %155 = extractvalue { ptr, i32 } %153, 1
  store i32 %155, ptr %11, align 4
  br label %160

156:                                              ; preds = %147, %146
  %157 = landingpad { ptr, i32 }
          cleanup
  %158 = extractvalue { ptr, i32 } %157, 0
  store ptr %158, ptr %10, align 8
  %159 = extractvalue { ptr, i32 } %157, 1
  store i32 %159, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #9
  br label %160

160:                                              ; preds = %156, %152
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #9
  %161 = load i1, ptr %13, align 1
  br i1 %161, label %162, label %163

162:                                              ; preds = %160
  call void @__cxa_free_exception(ptr %145) #9
  br label %163

163:                                              ; preds = %162, %160
  br label %164

164:                                              ; preds = %163, %148
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %9) #9
  call void @llvm.lifetime.end.p0(i64 376, ptr %9) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %7) #9
  br label %1067

165:                                              ; preds = %123
  br label %166

166:                                              ; preds = %165, %119, %101
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %7) #9
  br label %1046

167:                                              ; preds = %3
  br label %1046

168:                                              ; preds = %3
  br label %1046

169:                                              ; preds = %3
  br label %1046

170:                                              ; preds = %3
  br label %1046

171:                                              ; preds = %3
  br label %1046

172:                                              ; preds = %3
  br label %1046

173:                                              ; preds = %3, %3
  %174 = load ptr, ptr %6, align 8, !tbaa !5
  %175 = load ptr, ptr %5, align 8, !tbaa !5
  %176 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %175, i16 noundef zeroext 0)
  call void @_ZNK13IRTypeChecker16assume_referenceEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %67, ptr noundef %174, i32 noundef %176, i1 noundef zeroext false)
  br label %1046

177:                                              ; preds = %3
  %178 = load ptr, ptr %6, align 8, !tbaa !5
  %179 = load ptr, ptr %5, align 8, !tbaa !5
  %180 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %179, i16 noundef zeroext 0)
  call void @_ZNK13IRTypeChecker16assume_referenceEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %67, ptr noundef %178, i32 noundef %180, i1 noundef zeroext false)
  br label %1046

181:                                              ; preds = %3, %3
  %182 = load ptr, ptr %6, align 8, !tbaa !5
  %183 = load ptr, ptr %5, align 8, !tbaa !5
  %184 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %183, i16 noundef zeroext 0)
  call void @_ZNK13IRTypeChecker16assume_referenceEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %67, ptr noundef %182, i32 noundef %184, i1 noundef zeroext false)
  br label %1046

185:                                              ; preds = %3
  br label %1046

186:                                              ; preds = %3
  %187 = load ptr, ptr %6, align 8, !tbaa !5
  %188 = load ptr, ptr %5, align 8, !tbaa !5
  %189 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %188, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %187, i32 noundef %189)
  br label %1046

190:                                              ; preds = %3
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #9
  %191 = load ptr, ptr %5, align 8, !tbaa !5
  %192 = call noundef ptr @_ZNK13IRInstruction8get_typeEv(ptr noundef nonnull align 8 dereferenceable(32) %191)
  %193 = call noundef ptr @_ZN4type24get_array_component_typeEPK7DexType(ptr noundef %192)
  store ptr %193, ptr %14, align 8, !tbaa !5
  %194 = load ptr, ptr %14, align 8, !tbaa !5
  %195 = icmp ne ptr %194, null
  br i1 %195, label %196, label %197

196:                                              ; preds = %190
  br label %199

197:                                              ; preds = %190
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.22, ptr noundef @.str.10, i32 noundef 1316, ptr noundef @__PRETTY_FUNCTION__._ZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentE, i32 noundef 2, ptr noundef @.str.23) #10
  unreachable

198:                                              ; No predecessors!
  br label %199

199:                                              ; preds = %198, %196
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #9
  %200 = load ptr, ptr %14, align 8, !tbaa !5
  %201 = call noundef zeroext i1 @_ZN4type9is_objectEPK7DexType(ptr noundef %200)
  %202 = zext i1 %201 to i8
  store i8 %202, ptr %15, align 1, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #9
  store i64 0, ptr %16, align 8, !tbaa !22
  br label %203

203:                                              ; preds = %225, %199
  %204 = load i64, ptr %16, align 8, !tbaa !22
  %205 = load ptr, ptr %5, align 8, !tbaa !5
  %206 = call noundef i64 @_ZNK13IRInstruction9srcs_sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %205)
  %207 = icmp ult i64 %204, %206
  br i1 %207, label %209, label %208

208:                                              ; preds = %203
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #9
  br label %228

209:                                              ; preds = %203
  %210 = load i8, ptr %15, align 1, !tbaa !21, !range !23, !noundef !24
  %211 = trunc i8 %210 to i1
  br i1 %211, label %212, label %218

212:                                              ; preds = %209
  %213 = load ptr, ptr %6, align 8, !tbaa !5
  %214 = load ptr, ptr %5, align 8, !tbaa !5
  %215 = load i64, ptr %16, align 8, !tbaa !22
  %216 = trunc i64 %215 to i16
  %217 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %214, i16 noundef zeroext %216)
  call void @_ZNK13IRTypeChecker16assume_referenceEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %67, ptr noundef %213, i32 noundef %217, i1 noundef zeroext false)
  br label %224

218:                                              ; preds = %209
  %219 = load ptr, ptr %6, align 8, !tbaa !5
  %220 = load ptr, ptr %5, align 8, !tbaa !5
  %221 = load i64, ptr %16, align 8, !tbaa !22
  %222 = trunc i64 %221 to i16
  %223 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %220, i16 noundef zeroext %222)
  call void @_ZNK13IRTypeChecker13assume_scalarEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %67, ptr noundef %219, i32 noundef %223, i1 noundef zeroext false)
  br label %224

224:                                              ; preds = %218, %212
  br label %225

225:                                              ; preds = %224
  %226 = load i64, ptr %16, align 8, !tbaa !22
  %227 = add i64 %226, 1
  store i64 %227, ptr %16, align 8, !tbaa !22
  br label %203, !llvm.loop !25

228:                                              ; preds = %208
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #9
  br label %1046

229:                                              ; preds = %3
  br label %1046

230:                                              ; preds = %3
  %231 = load ptr, ptr %6, align 8, !tbaa !5
  %232 = load ptr, ptr %5, align 8, !tbaa !5
  %233 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %232, i16 noundef zeroext 0)
  call void @_ZNK13IRTypeChecker16assume_referenceEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %67, ptr noundef %231, i32 noundef %233, i1 noundef zeroext false)
  br label %1046

234:                                              ; preds = %3
  br label %1046

235:                                              ; preds = %3
  %236 = load ptr, ptr %6, align 8, !tbaa !5
  %237 = load ptr, ptr %5, align 8, !tbaa !5
  %238 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %237, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %236, i32 noundef %238)
  br label %1046

239:                                              ; preds = %3, %3
  %240 = load ptr, ptr %6, align 8, !tbaa !5
  %241 = load ptr, ptr %5, align 8, !tbaa !5
  %242 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %241, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_112assume_floatEPN14type_inference15TypeEnvironmentEj(ptr noundef %240, i32 noundef %242)
  %243 = load ptr, ptr %6, align 8, !tbaa !5
  %244 = load ptr, ptr %5, align 8, !tbaa !5
  %245 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %244, i16 noundef zeroext 1)
  call void @_ZN12_GLOBAL__N_112assume_floatEPN14type_inference15TypeEnvironmentEj(ptr noundef %243, i32 noundef %245)
  br label %1046

246:                                              ; preds = %3, %3
  %247 = load ptr, ptr %6, align 8, !tbaa !5
  %248 = load ptr, ptr %5, align 8, !tbaa !5
  %249 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %248, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_113assume_doubleEPN14type_inference15TypeEnvironmentEj(ptr noundef %247, i32 noundef %249)
  %250 = load ptr, ptr %6, align 8, !tbaa !5
  %251 = load ptr, ptr %5, align 8, !tbaa !5
  %252 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %251, i16 noundef zeroext 1)
  call void @_ZN12_GLOBAL__N_113assume_doubleEPN14type_inference15TypeEnvironmentEj(ptr noundef %250, i32 noundef %252)
  br label %1046

253:                                              ; preds = %3
  %254 = load ptr, ptr %6, align 8, !tbaa !5
  %255 = load ptr, ptr %5, align 8, !tbaa !5
  %256 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %255, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_111assume_longEPN14type_inference15TypeEnvironmentEj(ptr noundef %254, i32 noundef %256)
  %257 = load ptr, ptr %6, align 8, !tbaa !5
  %258 = load ptr, ptr %5, align 8, !tbaa !5
  %259 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %258, i16 noundef zeroext 1)
  call void @_ZN12_GLOBAL__N_111assume_longEPN14type_inference15TypeEnvironmentEj(ptr noundef %257, i32 noundef %259)
  br label %1046

260:                                              ; preds = %3, %3
  %261 = load ptr, ptr %6, align 8, !tbaa !5
  %262 = load ptr, ptr %5, align 8, !tbaa !5
  %263 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %262, i16 noundef zeroext 0)
  %264 = load ptr, ptr %5, align 8, !tbaa !5
  %265 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %264, i16 noundef zeroext 1)
  call void @_ZN12_GLOBAL__N_117assume_comparableEPN14type_inference15TypeEnvironmentEjj(ptr noundef %261, i32 noundef %263, i32 noundef %265)
  br label %1046

266:                                              ; preds = %3, %3, %3, %3
  %267 = load ptr, ptr %6, align 8, !tbaa !5
  %268 = load ptr, ptr %5, align 8, !tbaa !5
  %269 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %268, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %267, i32 noundef %269)
  %270 = load ptr, ptr %6, align 8, !tbaa !5
  %271 = load ptr, ptr %5, align 8, !tbaa !5
  %272 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %271, i16 noundef zeroext 1)
  call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %270, i32 noundef %272)
  br label %1046

273:                                              ; preds = %3, %3
  %274 = load ptr, ptr %6, align 8, !tbaa !5
  %275 = load ptr, ptr %5, align 8, !tbaa !5
  %276 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %275, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_127assume_comparable_with_zeroEPN14type_inference15TypeEnvironmentEj(ptr noundef %274, i32 noundef %276)
  br label %1046

277:                                              ; preds = %3, %3, %3, %3
  %278 = load ptr, ptr %6, align 8, !tbaa !5
  %279 = load ptr, ptr %5, align 8, !tbaa !5
  %280 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %279, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %278, i32 noundef %280)
  br label %1046

281:                                              ; preds = %3
  %282 = load ptr, ptr %6, align 8, !tbaa !5
  %283 = load ptr, ptr %5, align 8, !tbaa !5
  %284 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %283, i16 noundef zeroext 0)
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #9
  call void @"_ZN12_GLOBAL__N_112assume_arrayIZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentEE3$_0EEvS6_jRKT_"(ptr noundef %282, i32 noundef %284, ptr noundef nonnull align 1 dereferenceable(1) %17)
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #9
  %285 = load ptr, ptr %6, align 8, !tbaa !5
  %286 = load ptr, ptr %5, align 8, !tbaa !5
  %287 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %286, i16 noundef zeroext 1)
  call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %285, i32 noundef %287)
  br label %1046

288:                                              ; preds = %3, %3, %3, %3
  %289 = load ptr, ptr %6, align 8, !tbaa !5
  %290 = load ptr, ptr %5, align 8, !tbaa !5
  %291 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %290, i16 noundef zeroext 0)
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #9
  %292 = getelementptr inbounds %class.anon.207, ptr %18, i32 0, i32 0
  store ptr %5, ptr %292, align 8, !tbaa !5
  call void @"_ZN12_GLOBAL__N_112assume_arrayIZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentEE3$_1EEvS6_jRKT_"(ptr noundef %289, i32 noundef %291, ptr noundef nonnull align 8 dereferenceable(8) %18)
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #9
  %293 = load ptr, ptr %6, align 8, !tbaa !5
  %294 = load ptr, ptr %5, align 8, !tbaa !5
  %295 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %294, i16 noundef zeroext 1)
  call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %293, i32 noundef %295)
  br label %1046

296:                                              ; preds = %3
  %297 = load ptr, ptr %6, align 8, !tbaa !5
  %298 = load ptr, ptr %5, align 8, !tbaa !5
  %299 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %298, i16 noundef zeroext 0)
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #9
  call void @"_ZN12_GLOBAL__N_112assume_arrayIZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentEE3$_2EEvS6_jRKT_"(ptr noundef %297, i32 noundef %299, ptr noundef nonnull align 1 dereferenceable(1) %19)
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #9
  %300 = load ptr, ptr %6, align 8, !tbaa !5
  %301 = load ptr, ptr %5, align 8, !tbaa !5
  %302 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %301, i16 noundef zeroext 1)
  call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %300, i32 noundef %302)
  br label %1046

303:                                              ; preds = %3
  %304 = load ptr, ptr %6, align 8, !tbaa !5
  %305 = load ptr, ptr %5, align 8, !tbaa !5
  %306 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %305, i16 noundef zeroext 0)
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #9
  call void @"_ZN12_GLOBAL__N_112assume_arrayIZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentEE3$_3EEvS6_jRKT_"(ptr noundef %304, i32 noundef %306, ptr noundef nonnull align 1 dereferenceable(1) %20)
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #9
  %307 = load ptr, ptr %6, align 8, !tbaa !5
  %308 = load ptr, ptr %5, align 8, !tbaa !5
  %309 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %308, i16 noundef zeroext 1)
  call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %307, i32 noundef %309)
  br label %1046

310:                                              ; preds = %3
  %311 = load ptr, ptr %6, align 8, !tbaa !5
  %312 = load ptr, ptr %5, align 8, !tbaa !5
  %313 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %312, i16 noundef zeroext 0)
  call void @_ZNK13IRTypeChecker13assume_scalarEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %67, ptr noundef %311, i32 noundef %313, i1 noundef zeroext false)
  %314 = load ptr, ptr %6, align 8, !tbaa !5
  %315 = load ptr, ptr %5, align 8, !tbaa !5
  %316 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %315, i16 noundef zeroext 1)
  call void @llvm.lifetime.start.p0(i64 16, ptr %21) #9
  %317 = getelementptr inbounds %class.anon.212, ptr %21, i32 0, i32 0
  store ptr %5, ptr %317, align 8, !tbaa !5
  %318 = getelementptr inbounds %class.anon.212, ptr %21, i32 0, i32 1
  store ptr %6, ptr %318, align 8, !tbaa !5
  call void @"_ZN12_GLOBAL__N_112assume_arrayIZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentEE3$_4EEvS6_jRKT_"(ptr noundef %314, i32 noundef %316, ptr noundef nonnull align 8 dereferenceable(16) %21)
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #9
  %319 = load ptr, ptr %6, align 8, !tbaa !5
  %320 = load ptr, ptr %5, align 8, !tbaa !5
  %321 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %320, i16 noundef zeroext 2)
  call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %319, i32 noundef %321)
  br label %1046

322:                                              ; preds = %3, %3, %3, %3
  %323 = load ptr, ptr %6, align 8, !tbaa !5
  %324 = load ptr, ptr %5, align 8, !tbaa !5
  %325 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %324, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %323, i32 noundef %325)
  %326 = load ptr, ptr %6, align 8, !tbaa !5
  %327 = load ptr, ptr %5, align 8, !tbaa !5
  %328 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %327, i16 noundef zeroext 1)
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #9
  %329 = getelementptr inbounds %class.anon.213, ptr %22, i32 0, i32 0
  store ptr %5, ptr %329, align 8, !tbaa !5
  call void @"_ZN12_GLOBAL__N_112assume_arrayIZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentEE3$_5EEvS6_jRKT_"(ptr noundef %326, i32 noundef %328, ptr noundef nonnull align 8 dereferenceable(8) %22)
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #9
  %330 = load ptr, ptr %6, align 8, !tbaa !5
  %331 = load ptr, ptr %5, align 8, !tbaa !5
  %332 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %331, i16 noundef zeroext 2)
  call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %330, i32 noundef %332)
  br label %1046

333:                                              ; preds = %3
  %334 = load ptr, ptr %6, align 8, !tbaa !5
  %335 = load ptr, ptr %5, align 8, !tbaa !5
  %336 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %335, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_118assume_wide_scalarEPN14type_inference15TypeEnvironmentEj(ptr noundef %334, i32 noundef %336)
  %337 = load ptr, ptr %6, align 8, !tbaa !5
  %338 = load ptr, ptr %5, align 8, !tbaa !5
  %339 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %338, i16 noundef zeroext 1)
  call void @llvm.lifetime.start.p0(i64 16, ptr %23) #9
  %340 = getelementptr inbounds %class.anon.214, ptr %23, i32 0, i32 0
  store ptr %5, ptr %340, align 8, !tbaa !5
  %341 = getelementptr inbounds %class.anon.214, ptr %23, i32 0, i32 1
  store ptr %6, ptr %341, align 8, !tbaa !5
  call void @"_ZN12_GLOBAL__N_112assume_arrayIZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentEE3$_6EEvS6_jRKT_"(ptr noundef %337, i32 noundef %339, ptr noundef nonnull align 8 dereferenceable(16) %23)
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #9
  %342 = load ptr, ptr %6, align 8, !tbaa !5
  %343 = load ptr, ptr %5, align 8, !tbaa !5
  %344 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %343, i16 noundef zeroext 2)
  call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %342, i32 noundef %344)
  br label %1046

345:                                              ; preds = %3
  %346 = load ptr, ptr %6, align 8, !tbaa !5
  %347 = load ptr, ptr %5, align 8, !tbaa !5
  %348 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %347, i16 noundef zeroext 0)
  call void @_ZNK13IRTypeChecker16assume_referenceEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %67, ptr noundef %346, i32 noundef %348, i1 noundef zeroext false)
  %349 = load ptr, ptr %6, align 8, !tbaa !5
  %350 = load ptr, ptr %5, align 8, !tbaa !5
  %351 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %350, i16 noundef zeroext 1)
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #9
  call void @"_ZN12_GLOBAL__N_112assume_arrayIZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentEE3$_7EEvS6_jRKT_"(ptr noundef %349, i32 noundef %351, ptr noundef nonnull align 1 dereferenceable(1) %24)
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #9
  %352 = load ptr, ptr %6, align 8, !tbaa !5
  %353 = load ptr, ptr %5, align 8, !tbaa !5
  %354 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %353, i16 noundef zeroext 2)
  call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %352, i32 noundef %354)
  br label %1046

355:                                              ; preds = %3
  %356 = load ptr, ptr %6, align 8, !tbaa !5
  %357 = load ptr, ptr %5, align 8, !tbaa !5
  %358 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %357, i16 noundef zeroext 0)
  call void @_ZNK13IRTypeChecker16assume_referenceEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %67, ptr noundef %356, i32 noundef %358, i1 noundef zeroext false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #9
  %359 = load ptr, ptr %5, align 8, !tbaa !5
  %360 = call noundef ptr @_ZNK13IRInstruction9get_fieldEv(ptr noundef nonnull align 8 dereferenceable(32) %359)
  %361 = call noundef ptr @_ZNK11DexFieldRef9get_classEv(ptr noundef nonnull align 8 dereferenceable(26) %360)
  store ptr %361, ptr %25, align 8, !tbaa !5
  %362 = load ptr, ptr %6, align 8, !tbaa !5
  %363 = load ptr, ptr %5, align 8, !tbaa !5
  %364 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %363, i16 noundef zeroext 0)
  %365 = call { i8, ptr } @_ZNK14type_inference15TypeEnvironment12get_dex_typeEj(ptr noundef nonnull align 8 dereferenceable(48) %362, i32 noundef %364)
  %366 = getelementptr inbounds %"class.boost::optional", ptr %26, i32 0, i32 0
  %367 = getelementptr inbounds { i8, ptr }, ptr %366, i32 0, i32 0
  %368 = extractvalue { i8, ptr } %365, 0
  store i8 %368, ptr %367, align 8
  %369 = getelementptr inbounds { i8, ptr }, ptr %366, i32 0, i32 1
  %370 = extractvalue { i8, ptr } %365, 1
  store ptr %370, ptr %369, align 8
  %371 = load ptr, ptr %25, align 8, !tbaa !5
  %372 = getelementptr inbounds { i8, ptr }, ptr %26, i32 0, i32 0
  %373 = load i8, ptr %372, align 8
  %374 = getelementptr inbounds { i8, ptr }, ptr %26, i32 0, i32 1
  %375 = load ptr, ptr %374, align 8
  call void @_ZNK13IRTypeChecker17assume_assignableEN5boost8optionalIPK7DexTypeEEPS2_(ptr noundef nonnull align 8 dereferenceable(56) %67, i8 %373, ptr %375, ptr noundef %371)
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #9
  br label %1046

376:                                              ; preds = %3, %3, %3, %3, %3
  %377 = load ptr, ptr %6, align 8, !tbaa !5
  %378 = load ptr, ptr %5, align 8, !tbaa !5
  %379 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %378, i16 noundef zeroext 0)
  call void @_ZNK13IRTypeChecker16assume_referenceEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %67, ptr noundef %377, i32 noundef %379, i1 noundef zeroext false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #9
  %380 = load ptr, ptr %5, align 8, !tbaa !5
  %381 = call noundef ptr @_ZNK13IRInstruction9get_fieldEv(ptr noundef nonnull align 8 dereferenceable(32) %380)
  %382 = call noundef ptr @_ZNK11DexFieldRef9get_classEv(ptr noundef nonnull align 8 dereferenceable(26) %381)
  store ptr %382, ptr %27, align 8, !tbaa !5
  %383 = load ptr, ptr %6, align 8, !tbaa !5
  %384 = load ptr, ptr %5, align 8, !tbaa !5
  %385 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %384, i16 noundef zeroext 0)
  %386 = call { i8, ptr } @_ZNK14type_inference15TypeEnvironment12get_dex_typeEj(ptr noundef nonnull align 8 dereferenceable(48) %383, i32 noundef %385)
  %387 = getelementptr inbounds %"class.boost::optional", ptr %28, i32 0, i32 0
  %388 = getelementptr inbounds { i8, ptr }, ptr %387, i32 0, i32 0
  %389 = extractvalue { i8, ptr } %386, 0
  store i8 %389, ptr %388, align 8
  %390 = getelementptr inbounds { i8, ptr }, ptr %387, i32 0, i32 1
  %391 = extractvalue { i8, ptr } %386, 1
  store ptr %391, ptr %390, align 8
  %392 = load ptr, ptr %27, align 8, !tbaa !5
  %393 = getelementptr inbounds { i8, ptr }, ptr %28, i32 0, i32 0
  %394 = load i8, ptr %393, align 8
  %395 = getelementptr inbounds { i8, ptr }, ptr %28, i32 0, i32 1
  %396 = load ptr, ptr %395, align 8
  call void @_ZNK13IRTypeChecker17assume_assignableEN5boost8optionalIPK7DexTypeEEPS2_(ptr noundef nonnull align 8 dereferenceable(56) %67, i8 %394, ptr %396, ptr noundef %392)
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #9
  br label %1046

397:                                              ; preds = %3
  %398 = load ptr, ptr %6, align 8, !tbaa !5
  %399 = load ptr, ptr %5, align 8, !tbaa !5
  %400 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %399, i16 noundef zeroext 0)
  call void @_ZNK13IRTypeChecker16assume_referenceEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %67, ptr noundef %398, i32 noundef %400, i1 noundef zeroext false)
  %401 = load ptr, ptr %5, align 8, !tbaa !5
  %402 = call noundef zeroext i1 @_ZNK13IRInstruction9has_fieldEv(ptr noundef nonnull align 8 dereferenceable(32) %401)
  br i1 %402, label %403, label %404

403:                                              ; preds = %397
  br label %406

404:                                              ; preds = %397
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.24, ptr noundef @.str.10, i32 noundef 1550, ptr noundef @__PRETTY_FUNCTION__._ZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentE, i32 noundef 2, ptr noundef @.str.23) #10
  unreachable

405:                                              ; No predecessors!
  br label %406

406:                                              ; preds = %405, %403
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #9
  %407 = load ptr, ptr %5, align 8, !tbaa !5
  %408 = call noundef ptr @_ZNK13IRInstruction9get_fieldEv(ptr noundef nonnull align 8 dereferenceable(32) %407)
  %409 = call noundef ptr @_ZNK11DexFieldRef9get_classEv(ptr noundef nonnull align 8 dereferenceable(26) %408)
  store ptr %409, ptr %29, align 8, !tbaa !5
  %410 = load ptr, ptr %6, align 8, !tbaa !5
  %411 = load ptr, ptr %5, align 8, !tbaa !5
  %412 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %411, i16 noundef zeroext 0)
  %413 = call { i8, ptr } @_ZNK14type_inference15TypeEnvironment12get_dex_typeEj(ptr noundef nonnull align 8 dereferenceable(48) %410, i32 noundef %412)
  %414 = getelementptr inbounds %"class.boost::optional", ptr %30, i32 0, i32 0
  %415 = getelementptr inbounds { i8, ptr }, ptr %414, i32 0, i32 0
  %416 = extractvalue { i8, ptr } %413, 0
  store i8 %416, ptr %415, align 8
  %417 = getelementptr inbounds { i8, ptr }, ptr %414, i32 0, i32 1
  %418 = extractvalue { i8, ptr } %413, 1
  store ptr %418, ptr %417, align 8
  %419 = load ptr, ptr %29, align 8, !tbaa !5
  %420 = getelementptr inbounds { i8, ptr }, ptr %30, i32 0, i32 0
  %421 = load i8, ptr %420, align 8
  %422 = getelementptr inbounds { i8, ptr }, ptr %30, i32 0, i32 1
  %423 = load ptr, ptr %422, align 8
  call void @_ZNK13IRTypeChecker17assume_assignableEN5boost8optionalIPK7DexTypeEEPS2_(ptr noundef nonnull align 8 dereferenceable(56) %67, i8 %421, ptr %423, ptr noundef %419)
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #9
  br label %1046

424:                                              ; preds = %3
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #9
  %425 = load ptr, ptr %5, align 8, !tbaa !5
  %426 = call noundef ptr @_ZNK13IRInstruction9get_fieldEv(ptr noundef nonnull align 8 dereferenceable(32) %425)
  %427 = call noundef ptr @_ZNK11DexFieldRef8get_typeEv(ptr noundef nonnull align 8 dereferenceable(26) %426)
  store ptr %427, ptr %31, align 8, !tbaa !5
  %428 = load ptr, ptr %31, align 8, !tbaa !5
  %429 = call noundef zeroext i1 @_ZN4type8is_floatEPK7DexType(ptr noundef %428)
  br i1 %429, label %430, label %434

430:                                              ; preds = %424
  %431 = load ptr, ptr %6, align 8, !tbaa !5
  %432 = load ptr, ptr %5, align 8, !tbaa !5
  %433 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %432, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_112assume_floatEPN14type_inference15TypeEnvironmentEj(ptr noundef %431, i32 noundef %433)
  br label %438

434:                                              ; preds = %424
  %435 = load ptr, ptr %6, align 8, !tbaa !5
  %436 = load ptr, ptr %5, align 8, !tbaa !5
  %437 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %436, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %435, i32 noundef %437)
  br label %438

438:                                              ; preds = %434, %430
  %439 = load ptr, ptr %6, align 8, !tbaa !5
  %440 = load ptr, ptr %5, align 8, !tbaa !5
  %441 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %440, i16 noundef zeroext 1)
  call void @_ZNK13IRTypeChecker16assume_referenceEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %67, ptr noundef %439, i32 noundef %441, i1 noundef zeroext false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #9
  %442 = load ptr, ptr %5, align 8, !tbaa !5
  %443 = call noundef ptr @_ZNK13IRInstruction9get_fieldEv(ptr noundef nonnull align 8 dereferenceable(32) %442)
  %444 = call noundef ptr @_ZNK11DexFieldRef9get_classEv(ptr noundef nonnull align 8 dereferenceable(26) %443)
  store ptr %444, ptr %32, align 8, !tbaa !5
  %445 = load ptr, ptr %6, align 8, !tbaa !5
  %446 = load ptr, ptr %5, align 8, !tbaa !5
  %447 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %446, i16 noundef zeroext 1)
  %448 = call { i8, ptr } @_ZNK14type_inference15TypeEnvironment12get_dex_typeEj(ptr noundef nonnull align 8 dereferenceable(48) %445, i32 noundef %447)
  %449 = getelementptr inbounds %"class.boost::optional", ptr %33, i32 0, i32 0
  %450 = getelementptr inbounds { i8, ptr }, ptr %449, i32 0, i32 0
  %451 = extractvalue { i8, ptr } %448, 0
  store i8 %451, ptr %450, align 8
  %452 = getelementptr inbounds { i8, ptr }, ptr %449, i32 0, i32 1
  %453 = extractvalue { i8, ptr } %448, 1
  store ptr %453, ptr %452, align 8
  %454 = load ptr, ptr %32, align 8, !tbaa !5
  %455 = getelementptr inbounds { i8, ptr }, ptr %33, i32 0, i32 0
  %456 = load i8, ptr %455, align 8
  %457 = getelementptr inbounds { i8, ptr }, ptr %33, i32 0, i32 1
  %458 = load ptr, ptr %457, align 8
  call void @_ZNK13IRTypeChecker17assume_assignableEN5boost8optionalIPK7DexTypeEEPS2_(ptr noundef nonnull align 8 dereferenceable(56) %67, i8 %456, ptr %458, ptr noundef %454)
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #9
  br label %1046

459:                                              ; preds = %3, %3, %3, %3
  %460 = load ptr, ptr %6, align 8, !tbaa !5
  %461 = load ptr, ptr %5, align 8, !tbaa !5
  %462 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %461, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %460, i32 noundef %462)
  %463 = load ptr, ptr %6, align 8, !tbaa !5
  %464 = load ptr, ptr %5, align 8, !tbaa !5
  %465 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %464, i16 noundef zeroext 1)
  call void @_ZNK13IRTypeChecker16assume_referenceEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %67, ptr noundef %463, i32 noundef %465, i1 noundef zeroext false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #9
  %466 = load ptr, ptr %5, align 8, !tbaa !5
  %467 = call noundef ptr @_ZNK13IRInstruction9get_fieldEv(ptr noundef nonnull align 8 dereferenceable(32) %466)
  %468 = call noundef ptr @_ZNK11DexFieldRef9get_classEv(ptr noundef nonnull align 8 dereferenceable(26) %467)
  store ptr %468, ptr %34, align 8, !tbaa !5
  %469 = load ptr, ptr %6, align 8, !tbaa !5
  %470 = load ptr, ptr %5, align 8, !tbaa !5
  %471 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %470, i16 noundef zeroext 1)
  %472 = call { i8, ptr } @_ZNK14type_inference15TypeEnvironment12get_dex_typeEj(ptr noundef nonnull align 8 dereferenceable(48) %469, i32 noundef %471)
  %473 = getelementptr inbounds %"class.boost::optional", ptr %35, i32 0, i32 0
  %474 = getelementptr inbounds { i8, ptr }, ptr %473, i32 0, i32 0
  %475 = extractvalue { i8, ptr } %472, 0
  store i8 %475, ptr %474, align 8
  %476 = getelementptr inbounds { i8, ptr }, ptr %473, i32 0, i32 1
  %477 = extractvalue { i8, ptr } %472, 1
  store ptr %477, ptr %476, align 8
  %478 = load ptr, ptr %34, align 8, !tbaa !5
  %479 = getelementptr inbounds { i8, ptr }, ptr %35, i32 0, i32 0
  %480 = load i8, ptr %479, align 8
  %481 = getelementptr inbounds { i8, ptr }, ptr %35, i32 0, i32 1
  %482 = load ptr, ptr %481, align 8
  call void @_ZNK13IRTypeChecker17assume_assignableEN5boost8optionalIPK7DexTypeEEPS2_(ptr noundef nonnull align 8 dereferenceable(56) %67, i8 %480, ptr %482, ptr noundef %478)
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #9
  br label %1046

483:                                              ; preds = %3
  %484 = load ptr, ptr %6, align 8, !tbaa !5
  %485 = load ptr, ptr %5, align 8, !tbaa !5
  %486 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %485, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_118assume_wide_scalarEPN14type_inference15TypeEnvironmentEj(ptr noundef %484, i32 noundef %486)
  %487 = load ptr, ptr %6, align 8, !tbaa !5
  %488 = load ptr, ptr %5, align 8, !tbaa !5
  %489 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %488, i16 noundef zeroext 1)
  call void @_ZNK13IRTypeChecker16assume_referenceEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %67, ptr noundef %487, i32 noundef %489, i1 noundef zeroext false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #9
  %490 = load ptr, ptr %5, align 8, !tbaa !5
  %491 = call noundef ptr @_ZNK13IRInstruction9get_fieldEv(ptr noundef nonnull align 8 dereferenceable(32) %490)
  %492 = call noundef ptr @_ZNK11DexFieldRef9get_classEv(ptr noundef nonnull align 8 dereferenceable(26) %491)
  store ptr %492, ptr %36, align 8, !tbaa !5
  %493 = load ptr, ptr %6, align 8, !tbaa !5
  %494 = load ptr, ptr %5, align 8, !tbaa !5
  %495 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %494, i16 noundef zeroext 1)
  %496 = call { i8, ptr } @_ZNK14type_inference15TypeEnvironment12get_dex_typeEj(ptr noundef nonnull align 8 dereferenceable(48) %493, i32 noundef %495)
  %497 = getelementptr inbounds %"class.boost::optional", ptr %37, i32 0, i32 0
  %498 = getelementptr inbounds { i8, ptr }, ptr %497, i32 0, i32 0
  %499 = extractvalue { i8, ptr } %496, 0
  store i8 %499, ptr %498, align 8
  %500 = getelementptr inbounds { i8, ptr }, ptr %497, i32 0, i32 1
  %501 = extractvalue { i8, ptr } %496, 1
  store ptr %501, ptr %500, align 8
  %502 = load ptr, ptr %36, align 8, !tbaa !5
  %503 = getelementptr inbounds { i8, ptr }, ptr %37, i32 0, i32 0
  %504 = load i8, ptr %503, align 8
  %505 = getelementptr inbounds { i8, ptr }, ptr %37, i32 0, i32 1
  %506 = load ptr, ptr %505, align 8
  call void @_ZNK13IRTypeChecker17assume_assignableEN5boost8optionalIPK7DexTypeEEPS2_(ptr noundef nonnull align 8 dereferenceable(56) %67, i8 %504, ptr %506, ptr noundef %502)
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #9
  br label %1046

507:                                              ; preds = %3
  %508 = load ptr, ptr %6, align 8, !tbaa !5
  %509 = load ptr, ptr %5, align 8, !tbaa !5
  %510 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %509, i16 noundef zeroext 0)
  call void @_ZNK13IRTypeChecker16assume_referenceEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %67, ptr noundef %508, i32 noundef %510, i1 noundef zeroext false)
  %511 = load ptr, ptr %6, align 8, !tbaa !5
  %512 = load ptr, ptr %5, align 8, !tbaa !5
  %513 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %512, i16 noundef zeroext 1)
  call void @_ZNK13IRTypeChecker16assume_referenceEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %67, ptr noundef %511, i32 noundef %513, i1 noundef zeroext false)
  %514 = load ptr, ptr %5, align 8, !tbaa !5
  %515 = call noundef zeroext i1 @_ZNK13IRInstruction9has_fieldEv(ptr noundef nonnull align 8 dereferenceable(32) %514)
  br i1 %515, label %516, label %517

516:                                              ; preds = %507
  br label %519

517:                                              ; preds = %507
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.24, ptr noundef @.str.10, i32 noundef 1587, ptr noundef @__PRETTY_FUNCTION__._ZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentE, i32 noundef 2, ptr noundef @.str.23) #10
  unreachable

518:                                              ; No predecessors!
  br label %519

519:                                              ; preds = %518, %516
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #9
  %520 = load ptr, ptr %5, align 8, !tbaa !5
  %521 = call noundef ptr @_ZNK13IRInstruction9get_fieldEv(ptr noundef nonnull align 8 dereferenceable(32) %520)
  %522 = call noundef ptr @_ZNK11DexFieldRef8get_typeEv(ptr noundef nonnull align 8 dereferenceable(26) %521)
  store ptr %522, ptr %38, align 8, !tbaa !5
  %523 = load ptr, ptr %6, align 8, !tbaa !5
  %524 = load ptr, ptr %5, align 8, !tbaa !5
  %525 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %524, i16 noundef zeroext 0)
  %526 = call { i8, ptr } @_ZNK14type_inference15TypeEnvironment12get_dex_typeEj(ptr noundef nonnull align 8 dereferenceable(48) %523, i32 noundef %525)
  %527 = getelementptr inbounds %"class.boost::optional", ptr %39, i32 0, i32 0
  %528 = getelementptr inbounds { i8, ptr }, ptr %527, i32 0, i32 0
  %529 = extractvalue { i8, ptr } %526, 0
  store i8 %529, ptr %528, align 8
  %530 = getelementptr inbounds { i8, ptr }, ptr %527, i32 0, i32 1
  %531 = extractvalue { i8, ptr } %526, 1
  store ptr %531, ptr %530, align 8
  %532 = load ptr, ptr %38, align 8, !tbaa !5
  %533 = getelementptr inbounds { i8, ptr }, ptr %39, i32 0, i32 0
  %534 = load i8, ptr %533, align 8
  %535 = getelementptr inbounds { i8, ptr }, ptr %39, i32 0, i32 1
  %536 = load ptr, ptr %535, align 8
  call void @_ZNK13IRTypeChecker17assume_assignableEN5boost8optionalIPK7DexTypeEEPS2_(ptr noundef nonnull align 8 dereferenceable(56) %67, i8 %534, ptr %536, ptr noundef %532)
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #9
  %537 = load ptr, ptr %5, align 8, !tbaa !5
  %538 = call noundef ptr @_ZNK13IRInstruction9get_fieldEv(ptr noundef nonnull align 8 dereferenceable(32) %537)
  %539 = call noundef ptr @_ZNK11DexFieldRef9get_classEv(ptr noundef nonnull align 8 dereferenceable(26) %538)
  store ptr %539, ptr %40, align 8, !tbaa !5
  %540 = load ptr, ptr %6, align 8, !tbaa !5
  %541 = load ptr, ptr %5, align 8, !tbaa !5
  %542 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %541, i16 noundef zeroext 1)
  %543 = call { i8, ptr } @_ZNK14type_inference15TypeEnvironment12get_dex_typeEj(ptr noundef nonnull align 8 dereferenceable(48) %540, i32 noundef %542)
  %544 = getelementptr inbounds %"class.boost::optional", ptr %41, i32 0, i32 0
  %545 = getelementptr inbounds { i8, ptr }, ptr %544, i32 0, i32 0
  %546 = extractvalue { i8, ptr } %543, 0
  store i8 %546, ptr %545, align 8
  %547 = getelementptr inbounds { i8, ptr }, ptr %544, i32 0, i32 1
  %548 = extractvalue { i8, ptr } %543, 1
  store ptr %548, ptr %547, align 8
  %549 = load ptr, ptr %40, align 8, !tbaa !5
  %550 = getelementptr inbounds { i8, ptr }, ptr %41, i32 0, i32 0
  %551 = load i8, ptr %550, align 8
  %552 = getelementptr inbounds { i8, ptr }, ptr %41, i32 0, i32 1
  %553 = load ptr, ptr %552, align 8
  call void @_ZNK13IRTypeChecker17assume_assignableEN5boost8optionalIPK7DexTypeEEPS2_(ptr noundef nonnull align 8 dereferenceable(56) %67, i8 %551, ptr %553, ptr noundef %549)
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #9
  br label %1046

554:                                              ; preds = %3
  br label %1046

555:                                              ; preds = %3, %3, %3, %3
  br label %1046

556:                                              ; preds = %3
  br label %1046

557:                                              ; preds = %3
  br label %1046

558:                                              ; preds = %3
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #9
  %559 = load ptr, ptr %5, align 8, !tbaa !5
  %560 = call noundef ptr @_ZNK13IRInstruction9get_fieldEv(ptr noundef nonnull align 8 dereferenceable(32) %559)
  %561 = call noundef ptr @_ZNK11DexFieldRef8get_typeEv(ptr noundef nonnull align 8 dereferenceable(26) %560)
  store ptr %561, ptr %42, align 8, !tbaa !5
  %562 = load ptr, ptr %42, align 8, !tbaa !5
  %563 = call noundef zeroext i1 @_ZN4type8is_floatEPK7DexType(ptr noundef %562)
  br i1 %563, label %564, label %568

564:                                              ; preds = %558
  %565 = load ptr, ptr %6, align 8, !tbaa !5
  %566 = load ptr, ptr %5, align 8, !tbaa !5
  %567 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %566, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_112assume_floatEPN14type_inference15TypeEnvironmentEj(ptr noundef %565, i32 noundef %567)
  br label %572

568:                                              ; preds = %558
  %569 = load ptr, ptr %6, align 8, !tbaa !5
  %570 = load ptr, ptr %5, align 8, !tbaa !5
  %571 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %570, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %569, i32 noundef %571)
  br label %572

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

573:                                              ; preds = %3, %3, %3, %3
  %574 = load ptr, ptr %6, align 8, !tbaa !5
  %575 = load ptr, ptr %5, align 8, !tbaa !5
  %576 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %575, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %574, i32 noundef %576)
  br label %1046

577:                                              ; preds = %3
  %578 = load ptr, ptr %6, align 8, !tbaa !5
  %579 = load ptr, ptr %5, align 8, !tbaa !5
  %580 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %579, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_118assume_wide_scalarEPN14type_inference15TypeEnvironmentEj(ptr noundef %578, i32 noundef %580)
  br label %1046

581:                                              ; preds = %3
  %582 = load ptr, ptr %6, align 8, !tbaa !5
  %583 = load ptr, ptr %5, align 8, !tbaa !5
  %584 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %583, i16 noundef zeroext 0)
  call void @_ZNK13IRTypeChecker16assume_referenceEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %67, ptr noundef %582, i32 noundef %584, i1 noundef zeroext false)
  %585 = load ptr, ptr %5, align 8, !tbaa !5
  %586 = call noundef zeroext i1 @_ZNK13IRInstruction9has_fieldEv(ptr noundef nonnull align 8 dereferenceable(32) %585)
  br i1 %586, label %587, label %588

587:                                              ; preds = %581
  br label %590

588:                                              ; preds = %581
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.24, ptr noundef @.str.10, i32 noundef 1632, ptr noundef @__PRETTY_FUNCTION__._ZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentE, i32 noundef 2, ptr noundef @.str.23) #10
  unreachable

589:                                              ; No predecessors!
  br label %590

590:                                              ; preds = %589, %587
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #9
  %591 = load ptr, ptr %5, align 8, !tbaa !5
  %592 = call noundef ptr @_ZNK13IRInstruction9get_fieldEv(ptr noundef nonnull align 8 dereferenceable(32) %591)
  %593 = call noundef ptr @_ZNK11DexFieldRef8get_typeEv(ptr noundef nonnull align 8 dereferenceable(26) %592)
  store ptr %593, ptr %43, align 8, !tbaa !5
  %594 = load ptr, ptr %6, align 8, !tbaa !5
  %595 = load ptr, ptr %5, align 8, !tbaa !5
  %596 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %595, i16 noundef zeroext 0)
  %597 = call { i8, ptr } @_ZNK14type_inference15TypeEnvironment12get_dex_typeEj(ptr noundef nonnull align 8 dereferenceable(48) %594, i32 noundef %596)
  %598 = getelementptr inbounds %"class.boost::optional", ptr %44, i32 0, i32 0
  %599 = getelementptr inbounds { i8, ptr }, ptr %598, i32 0, i32 0
  %600 = extractvalue { i8, ptr } %597, 0
  store i8 %600, ptr %599, align 8
  %601 = getelementptr inbounds { i8, ptr }, ptr %598, i32 0, i32 1
  %602 = extractvalue { i8, ptr } %597, 1
  store ptr %602, ptr %601, align 8
  %603 = load ptr, ptr %43, align 8, !tbaa !5
  %604 = getelementptr inbounds { i8, ptr }, ptr %44, i32 0, i32 0
  %605 = load i8, ptr %604, align 8
  %606 = getelementptr inbounds { i8, ptr }, ptr %44, i32 0, i32 1
  %607 = load ptr, ptr %606, align 8
  call void @_ZNK13IRTypeChecker17assume_assignableEN5boost8optionalIPK7DexTypeEEPS2_(ptr noundef nonnull align 8 dereferenceable(56) %67, i8 %605, ptr %607, ptr noundef %603)
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #9
  br label %1046

608:                                              ; preds = %3, %3, %3, %3, %3, %3, %3
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #9
  %609 = load ptr, ptr %5, align 8, !tbaa !5
  %610 = call noundef ptr @_ZNK13IRInstruction10get_methodEv(ptr noundef nonnull align 8 dereferenceable(32) %609)
  store ptr %610, ptr %45, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #9
  %611 = load ptr, ptr %45, align 8, !tbaa !5
  %612 = call noundef ptr @_ZNK12DexMethodRef9get_protoEv(ptr noundef nonnull align 8 dereferenceable(26) %611)
  %613 = call noundef ptr @_ZNK8DexProto8get_argsEv(ptr noundef nonnull align 8 dereferenceable(24) %612)
  store ptr %613, ptr %46, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #9
  %614 = load ptr, ptr %5, align 8, !tbaa !5
  %615 = call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %614)
  %616 = zext i16 %615 to i32
  %617 = icmp ne i32 %616, 90
  %618 = zext i1 %617 to i64
  %619 = select i1 %617, i32 1, i32 0
  %620 = sext i32 %619 to i64
  %621 = load ptr, ptr %46, align 8, !tbaa !5
  %622 = call noundef i64 @_ZNK11DexTypeList4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %621)
  %623 = add i64 %620, %622
  store i64 %623, ptr %47, align 8, !tbaa !22
  %624 = load ptr, ptr %5, align 8, !tbaa !5
  %625 = call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %624)
  %626 = zext i16 %625 to i32
  %627 = icmp eq i32 %626, 92
  br i1 %627, label %628, label %630

628:                                              ; preds = %608
  %629 = load ptr, ptr %45, align 8, !tbaa !5
  call void @_ZN12_GLOBAL__N_127validate_invoke_polymorphicEPK12DexMethodRef(ptr noundef %629)
  br label %685

630:                                              ; preds = %608
  %631 = load ptr, ptr %5, align 8, !tbaa !5
  %632 = call noundef i64 @_ZNK13IRInstruction9srcs_sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %631)
  %633 = load i64, ptr %47, align 8, !tbaa !22
  %634 = icmp ne i64 %632, %633
  br i1 %634, label %635, label %684

635:                                              ; preds = %630
  call void @llvm.lifetime.start.p0(i64 376, ptr %48) #9
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %48)
  call void @llvm.lifetime.start.p0(i64 32, ptr %49) #9
  %636 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_Z4showI13IRInstructionRSoENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %49, ptr noundef %636)
          to label %637 unwind label %662

637:                                              ; preds = %635
  %638 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %49) #9
  %639 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef %638)
          to label %640 unwind label %666

640:                                              ; preds = %637
  %641 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %639, ptr noundef @.str.25)
          to label %642 unwind label %666

642:                                              ; preds = %640
  %643 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %641, ptr noundef @.str.26)
          to label %644 unwind label %666

644:                                              ; preds = %642
  %645 = load i64, ptr %47, align 8, !tbaa !22
  %646 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %643, i64 noundef %645)
          to label %647 unwind label %666

647:                                              ; preds = %644
  %648 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %646, ptr noundef @.str.27)
          to label %649 unwind label %666

649:                                              ; preds = %647
  %650 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %648, ptr noundef @.str.28)
          to label %651 unwind label %666

651:                                              ; preds = %649
  %652 = load ptr, ptr %5, align 8, !tbaa !5
  %653 = invoke noundef i64 @_ZNK13IRInstruction9srcs_sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %652)
          to label %654 unwind label %666

654:                                              ; preds = %651
  %655 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %650, i64 noundef %653)
          to label %656 unwind label %666

656:                                              ; preds = %654
  %657 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %655, ptr noundef @.str.29)
          to label %658 unwind label %666

658:                                              ; preds = %656
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #9
  store i1 true, ptr %51, align 1
  %659 = call ptr @__cxa_allocate_exception(i64 16) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %50) #9
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %50, ptr noundef nonnull align 8 dereferenceable(112) %48)
          to label %660 unwind label %671

660:                                              ; preds = %658
  invoke void @_ZN12_GLOBAL__N_121TypeCheckingExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %659, ptr noundef nonnull align 8 dereferenceable(32) %50)
          to label %661 unwind label %675

661:                                              ; preds = %660
  store i1 false, ptr %51, align 1
  invoke void @__cxa_throw(ptr %659, ptr @_ZTIN12_GLOBAL__N_121TypeCheckingExceptionE, ptr @_ZNSt13runtime_errorD2Ev) #10
          to label %1072 unwind label %675

662:                                              ; preds = %635
  %663 = landingpad { ptr, i32 }
          cleanup
  %664 = extractvalue { ptr, i32 } %663, 0
  store ptr %664, ptr %10, align 8
  %665 = extractvalue { ptr, i32 } %663, 1
  store i32 %665, ptr %11, align 4
  br label %670

666:                                              ; preds = %656, %654, %651, %649, %647, %644, %642, %640, %637
  %667 = landingpad { ptr, i32 }
          cleanup
  %668 = extractvalue { ptr, i32 } %667, 0
  store ptr %668, ptr %10, align 8
  %669 = extractvalue { ptr, i32 } %667, 1
  store i32 %669, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #9
  br label %670

670:                                              ; preds = %666, %662
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #9
  br label %683

671:                                              ; preds = %658
  %672 = landingpad { ptr, i32 }
          cleanup
  %673 = extractvalue { ptr, i32 } %672, 0
  store ptr %673, ptr %10, align 8
  %674 = extractvalue { ptr, i32 } %672, 1
  store i32 %674, ptr %11, align 4
  br label %679

675:                                              ; preds = %661, %660
  %676 = landingpad { ptr, i32 }
          cleanup
  %677 = extractvalue { ptr, i32 } %676, 0
  store ptr %677, ptr %10, align 8
  %678 = extractvalue { ptr, i32 } %676, 1
  store i32 %678, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #9
  br label %679

679:                                              ; preds = %675, %671
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #9
  %680 = load i1, ptr %51, align 1
  br i1 %680, label %681, label %682

681:                                              ; preds = %679
  call void @__cxa_free_exception(ptr %659) #9
  br label %682

682:                                              ; preds = %681, %679
  br label %683

683:                                              ; preds = %682, %670
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %48) #9
  call void @llvm.lifetime.end.p0(i64 376, ptr %48) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #9
  br label %1067

684:                                              ; preds = %630
  br label %685

685:                                              ; preds = %684, %628
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #9
  store i64 0, ptr %52, align 8, !tbaa !22
  %686 = load ptr, ptr %5, align 8, !tbaa !5
  %687 = call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %686)
  %688 = zext i16 %687 to i32
  %689 = icmp ne i32 %688, 90
  br i1 %689, label %690, label %712

690:                                              ; preds = %685
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #9
  %691 = load ptr, ptr %5, align 8, !tbaa !5
  %692 = load i64, ptr %52, align 8, !tbaa !22
  %693 = add i64 %692, 1
  store i64 %693, ptr %52, align 8, !tbaa !22
  %694 = trunc i64 %692 to i16
  %695 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %691, i16 noundef zeroext %694)
  store i32 %695, ptr %53, align 4, !tbaa !27
  %696 = load ptr, ptr %6, align 8, !tbaa !5
  %697 = load i32, ptr %53, align 4, !tbaa !27
  call void @_ZNK13IRTypeChecker16assume_referenceEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %67, ptr noundef %696, i32 noundef %697, i1 noundef zeroext false)
  %698 = load ptr, ptr %6, align 8, !tbaa !5
  %699 = load i32, ptr %53, align 4, !tbaa !27
  %700 = call { i8, ptr } @_ZNK14type_inference15TypeEnvironment12get_dex_typeEj(ptr noundef nonnull align 8 dereferenceable(48) %698, i32 noundef %699)
  %701 = getelementptr inbounds %"class.boost::optional", ptr %54, i32 0, i32 0
  %702 = getelementptr inbounds { i8, ptr }, ptr %701, i32 0, i32 0
  %703 = extractvalue { i8, ptr } %700, 0
  store i8 %703, ptr %702, align 8
  %704 = getelementptr inbounds { i8, ptr }, ptr %701, i32 0, i32 1
  %705 = extractvalue { i8, ptr } %700, 1
  store ptr %705, ptr %704, align 8
  %706 = load ptr, ptr %45, align 8, !tbaa !5
  %707 = call noundef ptr @_ZNK12DexMethodRef9get_classEv(ptr noundef nonnull align 8 dereferenceable(26) %706)
  %708 = getelementptr inbounds { i8, ptr }, ptr %54, i32 0, i32 0
  %709 = load i8, ptr %708, align 8
  %710 = getelementptr inbounds { i8, ptr }, ptr %54, i32 0, i32 1
  %711 = load ptr, ptr %710, align 8
  call void @_ZNK13IRTypeChecker17assume_assignableEN5boost8optionalIPK7DexTypeEEPS2_(ptr noundef nonnull align 8 dereferenceable(56) %67, i8 %709, ptr %711, ptr noundef %707)
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #9
  br label %712

712:                                              ; preds = %690, %685
  %713 = load ptr, ptr %5, align 8, !tbaa !5
  %714 = call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %713)
  %715 = zext i16 %714 to i32
  %716 = icmp eq i32 %715, 92
  br i1 %716, label %717, label %762

717:                                              ; preds = %712
  %718 = load ptr, ptr %46, align 8, !tbaa !5
  %719 = call noundef i64 @_ZNK11DexTypeList4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %718)
  %720 = icmp eq i64 %719, 1
  br i1 %720, label %721, label %722

721:                                              ; preds = %717
  br label %724

722:                                              ; preds = %717
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.30, ptr noundef @.str.10, i32 noundef 1667, ptr noundef @__PRETTY_FUNCTION__._ZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentE, i32 noundef 2, ptr noundef @.str.23) #10
  unreachable

723:                                              ; No predecessors!
  br label %724

724:                                              ; preds = %723, %721
  %725 = load i64, ptr %52, align 8, !tbaa !22
  %726 = icmp eq i64 %725, 1
  br i1 %726, label %727, label %728

727:                                              ; preds = %724
  br label %730

728:                                              ; preds = %724
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.31, ptr noundef @.str.10, i32 noundef 1668, ptr noundef @__PRETTY_FUNCTION__._ZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentE, i32 noundef 2, ptr noundef @.str.23) #10
  unreachable

729:                                              ; No predecessors!
  br label %730

730:                                              ; preds = %729, %727
  br label %731

731:                                              ; preds = %758, %730
  %732 = load i64, ptr %52, align 8, !tbaa !22
  %733 = load ptr, ptr %5, align 8, !tbaa !5
  %734 = call noundef i64 @_ZNK13IRInstruction9srcs_sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %733)
  %735 = icmp ult i64 %732, %734
  br i1 %735, label %736, label %761

736:                                              ; preds = %731
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #9
  %737 = load ptr, ptr %5, align 8, !tbaa !5
  %738 = load i64, ptr %52, align 8, !tbaa !22
  %739 = trunc i64 %738 to i16
  %740 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %737, i16 noundef zeroext %739)
  store i32 %740, ptr %55, align 4, !tbaa !27
  %741 = load ptr, ptr %6, align 8, !tbaa !5
  %742 = load i32, ptr %55, align 4, !tbaa !27
  call void @_ZNK13IRTypeChecker16assume_referenceEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %67, ptr noundef %741, i32 noundef %742, i1 noundef zeroext false)
  %743 = load ptr, ptr %6, align 8, !tbaa !5
  %744 = load i32, ptr %55, align 4, !tbaa !27
  %745 = call { i8, ptr } @_ZNK14type_inference15TypeEnvironment12get_dex_typeEj(ptr noundef nonnull align 8 dereferenceable(48) %743, i32 noundef %744)
  %746 = getelementptr inbounds %"class.boost::optional", ptr %56, i32 0, i32 0
  %747 = getelementptr inbounds { i8, ptr }, ptr %746, i32 0, i32 0
  %748 = extractvalue { i8, ptr } %745, 0
  store i8 %748, ptr %747, align 8
  %749 = getelementptr inbounds { i8, ptr }, ptr %746, i32 0, i32 1
  %750 = extractvalue { i8, ptr } %745, 1
  store ptr %750, ptr %749, align 8
  %751 = load ptr, ptr %46, align 8, !tbaa !5
  %752 = call noundef ptr @_ZNK11DexTypeList2atEm(ptr noundef nonnull align 8 dereferenceable(24) %751, i64 noundef 0)
  %753 = call noundef ptr @_ZN4type22get_array_element_typeEPK7DexType(ptr noundef %752)
  %754 = getelementptr inbounds { i8, ptr }, ptr %56, i32 0, i32 0
  %755 = load i8, ptr %754, align 8
  %756 = getelementptr inbounds { i8, ptr }, ptr %56, i32 0, i32 1
  %757 = load ptr, ptr %756, align 8
  call void @_ZNK13IRTypeChecker17assume_assignableEN5boost8optionalIPK7DexTypeEEPS2_(ptr noundef nonnull align 8 dereferenceable(56) %67, i8 %755, ptr %757, ptr noundef %753)
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #9
  br label %758

758:                                              ; preds = %736
  %759 = load i64, ptr %52, align 8, !tbaa !22
  %760 = add i64 %759, 1
  store i64 %760, ptr %52, align 8, !tbaa !22
  br label %731, !llvm.loop !29

761:                                              ; preds = %731
  br label %848

762:                                              ; preds = %712
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #9
  %763 = load ptr, ptr %46, align 8, !tbaa !5
  store ptr %763, ptr %57, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #9
  %764 = load ptr, ptr %57, align 8, !tbaa !5
  %765 = call ptr @_ZNK11DexTypeList5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %764)
  %766 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %58, i32 0, i32 0
  store ptr %765, ptr %766, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #9
  %767 = load ptr, ptr %57, align 8, !tbaa !5
  %768 = call ptr @_ZNK11DexTypeList3endEv(ptr noundef nonnull align 8 dereferenceable(24) %767)
  %769 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %59, i32 0, i32 0
  store ptr %768, ptr %769, align 8
  br label %770

770:                                              ; preds = %845, %762
  %771 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKP7DexTypeSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef nonnull align 8 dereferenceable(8) %59) #9
  br i1 %771, label %773, label %772

772:                                              ; preds = %770
  store i32 9, ptr %60, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #9
  br label %847

773:                                              ; preds = %770
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #9
  %774 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP7DexTypeSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %58) #9
  %775 = load ptr, ptr %774, align 8, !tbaa !5
  store ptr %775, ptr %61, align 8, !tbaa !5
  %776 = load ptr, ptr %61, align 8, !tbaa !5
  %777 = call noundef zeroext i1 @_ZN4type9is_objectEPK7DexType(ptr noundef %776)
  br i1 %777, label %778, label %799

778:                                              ; preds = %773
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #9
  %779 = load ptr, ptr %5, align 8, !tbaa !5
  %780 = load i64, ptr %52, align 8, !tbaa !22
  %781 = add i64 %780, 1
  store i64 %781, ptr %52, align 8, !tbaa !22
  %782 = trunc i64 %780 to i16
  %783 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %779, i16 noundef zeroext %782)
  store i32 %783, ptr %62, align 4, !tbaa !27
  %784 = load ptr, ptr %6, align 8, !tbaa !5
  %785 = load i32, ptr %62, align 4, !tbaa !27
  call void @_ZNK13IRTypeChecker16assume_referenceEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %67, ptr noundef %784, i32 noundef %785, i1 noundef zeroext false)
  %786 = load ptr, ptr %6, align 8, !tbaa !5
  %787 = load i32, ptr %62, align 4, !tbaa !27
  %788 = call { i8, ptr } @_ZNK14type_inference15TypeEnvironment12get_dex_typeEj(ptr noundef nonnull align 8 dereferenceable(48) %786, i32 noundef %787)
  %789 = getelementptr inbounds %"class.boost::optional", ptr %63, i32 0, i32 0
  %790 = getelementptr inbounds { i8, ptr }, ptr %789, i32 0, i32 0
  %791 = extractvalue { i8, ptr } %788, 0
  store i8 %791, ptr %790, align 8
  %792 = getelementptr inbounds { i8, ptr }, ptr %789, i32 0, i32 1
  %793 = extractvalue { i8, ptr } %788, 1
  store ptr %793, ptr %792, align 8
  %794 = load ptr, ptr %61, align 8, !tbaa !5
  %795 = getelementptr inbounds { i8, ptr }, ptr %63, i32 0, i32 0
  %796 = load i8, ptr %795, align 8
  %797 = getelementptr inbounds { i8, ptr }, ptr %63, i32 0, i32 1
  %798 = load ptr, ptr %797, align 8
  call void @_ZNK13IRTypeChecker17assume_assignableEN5boost8optionalIPK7DexTypeEEPS2_(ptr noundef nonnull align 8 dereferenceable(56) %67, i8 %796, ptr %798, ptr noundef %794)
  store i32 10, ptr %60, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #9
  br label %842

799:                                              ; preds = %773
  %800 = load ptr, ptr %61, align 8, !tbaa !5
  %801 = call noundef zeroext i1 @_ZN4type11is_integralEPK7DexType(ptr noundef %800)
  br i1 %801, label %802, label %809

802:                                              ; preds = %799
  %803 = load ptr, ptr %6, align 8, !tbaa !5
  %804 = load ptr, ptr %5, align 8, !tbaa !5
  %805 = load i64, ptr %52, align 8, !tbaa !22
  %806 = add i64 %805, 1
  store i64 %806, ptr %52, align 8, !tbaa !22
  %807 = trunc i64 %805 to i16
  %808 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %804, i16 noundef zeroext %807)
  call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %803, i32 noundef %808)
  store i32 10, ptr %60, align 4
  br label %842

809:                                              ; preds = %799
  %810 = load ptr, ptr %61, align 8, !tbaa !5
  %811 = call noundef zeroext i1 @_ZN4type7is_longEPK7DexType(ptr noundef %810)
  br i1 %811, label %812, label %819

812:                                              ; preds = %809
  %813 = load ptr, ptr %6, align 8, !tbaa !5
  %814 = load ptr, ptr %5, align 8, !tbaa !5
  %815 = load i64, ptr %52, align 8, !tbaa !22
  %816 = add i64 %815, 1
  store i64 %816, ptr %52, align 8, !tbaa !22
  %817 = trunc i64 %815 to i16
  %818 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %814, i16 noundef zeroext %817)
  call void @_ZN12_GLOBAL__N_111assume_longEPN14type_inference15TypeEnvironmentEj(ptr noundef %813, i32 noundef %818)
  store i32 10, ptr %60, align 4
  br label %842

819:                                              ; preds = %809
  %820 = load ptr, ptr %61, align 8, !tbaa !5
  %821 = call noundef zeroext i1 @_ZN4type8is_floatEPK7DexType(ptr noundef %820)
  br i1 %821, label %822, label %829

822:                                              ; preds = %819
  %823 = load ptr, ptr %6, align 8, !tbaa !5
  %824 = load ptr, ptr %5, align 8, !tbaa !5
  %825 = load i64, ptr %52, align 8, !tbaa !22
  %826 = add i64 %825, 1
  store i64 %826, ptr %52, align 8, !tbaa !22
  %827 = trunc i64 %825 to i16
  %828 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %824, i16 noundef zeroext %827)
  call void @_ZN12_GLOBAL__N_112assume_floatEPN14type_inference15TypeEnvironmentEj(ptr noundef %823, i32 noundef %828)
  store i32 10, ptr %60, align 4
  br label %842

829:                                              ; preds = %819
  %830 = load ptr, ptr %61, align 8, !tbaa !5
  %831 = call noundef zeroext i1 @_ZN4type9is_doubleEPK7DexType(ptr noundef %830)
  br i1 %831, label %832, label %833

832:                                              ; preds = %829
  br label %835

833:                                              ; preds = %829
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef @.str.32, ptr noundef @.str.10, i32 noundef 1701, ptr noundef @__PRETTY_FUNCTION__._ZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentE, i32 noundef 2, ptr noundef @.str.23) #10
  unreachable

834:                                              ; No predecessors!
  br label %835

835:                                              ; preds = %834, %832
  %836 = load ptr, ptr %6, align 8, !tbaa !5
  %837 = load ptr, ptr %5, align 8, !tbaa !5
  %838 = load i64, ptr %52, align 8, !tbaa !22
  %839 = add i64 %838, 1
  store i64 %839, ptr %52, align 8, !tbaa !22
  %840 = trunc i64 %838 to i16
  %841 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %837, i16 noundef zeroext %840)
  call void @_ZN12_GLOBAL__N_113assume_doubleEPN14type_inference15TypeEnvironmentEj(ptr noundef %836, i32 noundef %841)
  store i32 0, ptr %60, align 4
  br label %842

842:                                              ; preds = %835, %822, %812, %802, %778
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #9
  %843 = load i32, ptr %60, align 4
  switch i32 %843, label %1072 [
    i32 0, label %844
    i32 10, label %845
  ]

844:                                              ; preds = %842
  br label %845

845:                                              ; preds = %844, %842
  %846 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKP7DexTypeSt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %58) #9
  br label %770

847:                                              ; preds = %772
  br label %848

848:                                              ; preds = %847, %761
  %849 = getelementptr inbounds %class.IRTypeChecker, ptr %67, i32 0, i32 1
  %850 = load i8, ptr %849, align 8, !tbaa !30, !range !23, !noundef !24
  %851 = trunc i8 %850 to i1
  br i1 %851, label %852, label %862

852:                                              ; preds = %848
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #9
  %853 = load ptr, ptr %45, align 8, !tbaa !5
  %854 = load ptr, ptr %5, align 8, !tbaa !5
  %855 = call noundef i32 @_Z16opcode_to_searchPK13IRInstruction(ptr noundef %854)
  %856 = getelementptr inbounds %class.IRTypeChecker, ptr %67, i32 0, i32 0
  %857 = load ptr, ptr %856, align 8, !tbaa !9
  %858 = call noundef ptr @_Z14resolve_methodP12DexMethodRef12MethodSearchPK9DexMethod(ptr noundef %853, i32 noundef %855, ptr noundef %857)
  store ptr %858, ptr %64, align 8, !tbaa !5
  %859 = getelementptr inbounds %class.IRTypeChecker, ptr %67, i32 0, i32 0
  %860 = load ptr, ptr %859, align 8, !tbaa !9
  %861 = load ptr, ptr %64, align 8, !tbaa !5
  call void @_ZN12_GLOBAL__N_115validate_accessI9DexMethodEEvPKS1_PKT_(ptr noundef %860, ptr noundef %861)
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #9
  br label %862

862:                                              ; preds = %852, %848
  %863 = getelementptr inbounds %class.IRTypeChecker, ptr %67, i32 0, i32 2
  %864 = load i8, ptr %863, align 1, !tbaa !31, !range !23, !noundef !24
  %865 = trunc i8 %864 to i1
  br i1 %865, label %866, label %875

866:                                              ; preds = %862
  %867 = load ptr, ptr %5, align 8, !tbaa !5
  %868 = call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %867)
  %869 = zext i16 %868 to i32
  %870 = icmp eq i32 %869, 88
  br i1 %870, label %871, label %875

871:                                              ; preds = %866
  %872 = getelementptr inbounds %class.IRTypeChecker, ptr %67, i32 0, i32 0
  %873 = load ptr, ptr %872, align 8, !tbaa !9
  %874 = load ptr, ptr %45, align 8, !tbaa !5
  call void @_ZN12_GLOBAL__N_121validate_invoke_superEPK9DexMethodPK12DexMethodRef(ptr noundef %873, ptr noundef %874)
  br label %915

875:                                              ; preds = %866, %862
  %876 = load ptr, ptr %5, align 8, !tbaa !5
  %877 = call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %876)
  %878 = zext i16 %877 to i32
  %879 = icmp eq i32 %878, 87
  br i1 %879, label %880, label %884

880:                                              ; preds = %875
  %881 = getelementptr inbounds %class.IRTypeChecker, ptr %67, i32 0, i32 0
  %882 = load ptr, ptr %881, align 8, !tbaa !9
  %883 = load ptr, ptr %45, align 8, !tbaa !5
  call void @_ZN12_GLOBAL__N_123validate_invoke_virtualEPK9DexMethodPK12DexMethodRef(ptr noundef %882, ptr noundef %883)
  br label %914

884:                                              ; preds = %875
  %885 = load ptr, ptr %5, align 8, !tbaa !5
  %886 = call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %885)
  %887 = zext i16 %886 to i32
  %888 = icmp eq i32 %887, 89
  br i1 %888, label %889, label %893

889:                                              ; preds = %884
  %890 = getelementptr inbounds %class.IRTypeChecker, ptr %67, i32 0, i32 0
  %891 = load ptr, ptr %890, align 8, !tbaa !9
  %892 = load ptr, ptr %45, align 8, !tbaa !5
  call void @_ZN12_GLOBAL__N_122validate_invoke_directEPK9DexMethodPK12DexMethodRef(ptr noundef %891, ptr noundef %892)
  br label %913

893:                                              ; preds = %884
  %894 = load ptr, ptr %5, align 8, !tbaa !5
  %895 = call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %894)
  %896 = zext i16 %895 to i32
  %897 = icmp eq i32 %896, 90
  br i1 %897, label %898, label %902

898:                                              ; preds = %893
  %899 = getelementptr inbounds %class.IRTypeChecker, ptr %67, i32 0, i32 0
  %900 = load ptr, ptr %899, align 8, !tbaa !9
  %901 = load ptr, ptr %45, align 8, !tbaa !5
  call void @_ZN12_GLOBAL__N_122validate_invoke_staticEPK9DexMethodPK12DexMethodRef(ptr noundef %900, ptr noundef %901)
  br label %912

902:                                              ; preds = %893
  %903 = load ptr, ptr %5, align 8, !tbaa !5
  %904 = call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %903)
  %905 = zext i16 %904 to i32
  %906 = icmp eq i32 %905, 91
  br i1 %906, label %907, label %911

907:                                              ; preds = %902
  %908 = getelementptr inbounds %class.IRTypeChecker, ptr %67, i32 0, i32 0
  %909 = load ptr, ptr %908, align 8, !tbaa !9
  %910 = load ptr, ptr %45, align 8, !tbaa !5
  call void @_ZN12_GLOBAL__N_125validate_invoke_interfaceEPK9DexMethodPK12DexMethodRef(ptr noundef %909, ptr noundef %910)
  br label %911

911:                                              ; preds = %907, %902
  br label %912

912:                                              ; preds = %911, %898
  br label %913

913:                                              ; preds = %912, %889
  br label %914

914:                                              ; preds = %913, %880
  br label %915

915:                                              ; preds = %914, %871
  %916 = load ptr, ptr %45, align 8, !tbaa !5
  call void @_ZN12_GLOBAL__N_133validate_invoke_class_initializerEPK12DexMethodRef(ptr noundef %916)
  %917 = load ptr, ptr %45, align 8, !tbaa !5
  %918 = load ptr, ptr %5, align 8, !tbaa !5
  %919 = call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %918)
  call void @_ZN12_GLOBAL__N_134validate_invoke_direct_constructorEPK12DexMethodRef8IROpcode(ptr noundef %917, i16 noundef zeroext %919)
  store i32 2, ptr %60, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #9
  br label %1046

920:                                              ; preds = %3, %3
  %921 = load ptr, ptr %6, align 8, !tbaa !5
  %922 = load ptr, ptr %5, align 8, !tbaa !5
  %923 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %922, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %921, i32 noundef %923)
  br label %1046

924:                                              ; preds = %3, %3
  %925 = load ptr, ptr %6, align 8, !tbaa !5
  %926 = load ptr, ptr %5, align 8, !tbaa !5
  %927 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %926, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_111assume_longEPN14type_inference15TypeEnvironmentEj(ptr noundef %925, i32 noundef %927)
  br label %1046

928:                                              ; preds = %3
  %929 = load ptr, ptr %6, align 8, !tbaa !5
  %930 = load ptr, ptr %5, align 8, !tbaa !5
  %931 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %930, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_112assume_floatEPN14type_inference15TypeEnvironmentEj(ptr noundef %929, i32 noundef %931)
  br label %1046

932:                                              ; preds = %3
  %933 = load ptr, ptr %6, align 8, !tbaa !5
  %934 = load ptr, ptr %5, align 8, !tbaa !5
  %935 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %934, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_113assume_doubleEPN14type_inference15TypeEnvironmentEj(ptr noundef %933, i32 noundef %935)
  br label %1046

936:                                              ; preds = %3, %3, %3
  %937 = load ptr, ptr %6, align 8, !tbaa !5
  %938 = load ptr, ptr %5, align 8, !tbaa !5
  %939 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %938, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %937, i32 noundef %939)
  br label %1046

940:                                              ; preds = %3
  %941 = load ptr, ptr %6, align 8, !tbaa !5
  %942 = load ptr, ptr %5, align 8, !tbaa !5
  %943 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %942, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_111assume_longEPN14type_inference15TypeEnvironmentEj(ptr noundef %941, i32 noundef %943)
  br label %1046

944:                                              ; preds = %3
  %945 = load ptr, ptr %6, align 8, !tbaa !5
  %946 = load ptr, ptr %5, align 8, !tbaa !5
  %947 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %946, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_112assume_floatEPN14type_inference15TypeEnvironmentEj(ptr noundef %945, i32 noundef %947)
  br label %1046

948:                                              ; preds = %3
  %949 = load ptr, ptr %6, align 8, !tbaa !5
  %950 = load ptr, ptr %5, align 8, !tbaa !5
  %951 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %950, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_113assume_doubleEPN14type_inference15TypeEnvironmentEj(ptr noundef %949, i32 noundef %951)
  br label %1046

952:                                              ; preds = %3
  %953 = load ptr, ptr %6, align 8, !tbaa !5
  %954 = load ptr, ptr %5, align 8, !tbaa !5
  %955 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %954, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %953, i32 noundef %955)
  br label %1046

956:                                              ; preds = %3
  %957 = load ptr, ptr %6, align 8, !tbaa !5
  %958 = load ptr, ptr %5, align 8, !tbaa !5
  %959 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %958, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_112assume_floatEPN14type_inference15TypeEnvironmentEj(ptr noundef %957, i32 noundef %959)
  br label %1046

960:                                              ; preds = %3
  %961 = load ptr, ptr %6, align 8, !tbaa !5
  %962 = load ptr, ptr %5, align 8, !tbaa !5
  %963 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %962, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_113assume_doubleEPN14type_inference15TypeEnvironmentEj(ptr noundef %961, i32 noundef %963)
  br label %1046

964:                                              ; preds = %3
  %965 = load ptr, ptr %6, align 8, !tbaa !5
  %966 = load ptr, ptr %5, align 8, !tbaa !5
  %967 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %966, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %965, i32 noundef %967)
  br label %1046

968:                                              ; preds = %3
  %969 = load ptr, ptr %6, align 8, !tbaa !5
  %970 = load ptr, ptr %5, align 8, !tbaa !5
  %971 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %970, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_111assume_longEPN14type_inference15TypeEnvironmentEj(ptr noundef %969, i32 noundef %971)
  br label %1046

972:                                              ; preds = %3
  %973 = load ptr, ptr %6, align 8, !tbaa !5
  %974 = load ptr, ptr %5, align 8, !tbaa !5
  %975 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %974, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_113assume_doubleEPN14type_inference15TypeEnvironmentEj(ptr noundef %973, i32 noundef %975)
  br label %1046

976:                                              ; preds = %3
  %977 = load ptr, ptr %6, align 8, !tbaa !5
  %978 = load ptr, ptr %5, align 8, !tbaa !5
  %979 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %978, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %977, i32 noundef %979)
  br label %1046

980:                                              ; preds = %3
  %981 = load ptr, ptr %6, align 8, !tbaa !5
  %982 = load ptr, ptr %5, align 8, !tbaa !5
  %983 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %982, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_111assume_longEPN14type_inference15TypeEnvironmentEj(ptr noundef %981, i32 noundef %983)
  br label %1046

984:                                              ; preds = %3
  %985 = load ptr, ptr %6, align 8, !tbaa !5
  %986 = load ptr, ptr %5, align 8, !tbaa !5
  %987 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %986, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_112assume_floatEPN14type_inference15TypeEnvironmentEj(ptr noundef %985, i32 noundef %987)
  br label %1046

988:                                              ; preds = %3, %3, %3, %3, %3, %3, %3, %3, %3
  %989 = load ptr, ptr %6, align 8, !tbaa !5
  %990 = load ptr, ptr %5, align 8, !tbaa !5
  %991 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %990, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %989, i32 noundef %991)
  %992 = load ptr, ptr %6, align 8, !tbaa !5
  %993 = load ptr, ptr %5, align 8, !tbaa !5
  %994 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %993, i16 noundef zeroext 1)
  call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %992, i32 noundef %994)
  br label %1046

995:                                              ; preds = %3, %3
  %996 = load ptr, ptr %6, align 8, !tbaa !5
  %997 = load ptr, ptr %5, align 8, !tbaa !5
  %998 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %997, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %996, i32 noundef %998)
  %999 = load ptr, ptr %6, align 8, !tbaa !5
  %1000 = load ptr, ptr %5, align 8, !tbaa !5
  %1001 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1000, i16 noundef zeroext 1)
  call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %999, i32 noundef %1001)
  br label %1046

1002:                                             ; preds = %3, %3, %3, %3, %3, %3
  %1003 = load ptr, ptr %6, align 8, !tbaa !5
  %1004 = load ptr, ptr %5, align 8, !tbaa !5
  %1005 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1004, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_111assume_longEPN14type_inference15TypeEnvironmentEj(ptr noundef %1003, i32 noundef %1005)
  %1006 = load ptr, ptr %6, align 8, !tbaa !5
  %1007 = load ptr, ptr %5, align 8, !tbaa !5
  %1008 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1007, i16 noundef zeroext 1)
  call void @_ZN12_GLOBAL__N_111assume_longEPN14type_inference15TypeEnvironmentEj(ptr noundef %1006, i32 noundef %1008)
  br label %1046

1009:                                             ; preds = %3, %3
  %1010 = load ptr, ptr %6, align 8, !tbaa !5
  %1011 = load ptr, ptr %5, align 8, !tbaa !5
  %1012 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1011, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_111assume_longEPN14type_inference15TypeEnvironmentEj(ptr noundef %1010, i32 noundef %1012)
  %1013 = load ptr, ptr %6, align 8, !tbaa !5
  %1014 = load ptr, ptr %5, align 8, !tbaa !5
  %1015 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1014, i16 noundef zeroext 1)
  call void @_ZN12_GLOBAL__N_111assume_longEPN14type_inference15TypeEnvironmentEj(ptr noundef %1013, i32 noundef %1015)
  br label %1046

1016:                                             ; preds = %3, %3, %3
  %1017 = load ptr, ptr %6, align 8, !tbaa !5
  %1018 = load ptr, ptr %5, align 8, !tbaa !5
  %1019 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1018, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_111assume_longEPN14type_inference15TypeEnvironmentEj(ptr noundef %1017, i32 noundef %1019)
  %1020 = load ptr, ptr %6, align 8, !tbaa !5
  %1021 = load ptr, ptr %5, align 8, !tbaa !5
  %1022 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1021, i16 noundef zeroext 1)
  call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %1020, i32 noundef %1022)
  br label %1046

1023:                                             ; preds = %3, %3, %3, %3, %3
  %1024 = load ptr, ptr %6, align 8, !tbaa !5
  %1025 = load ptr, ptr %5, align 8, !tbaa !5
  %1026 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1025, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_112assume_floatEPN14type_inference15TypeEnvironmentEj(ptr noundef %1024, i32 noundef %1026)
  %1027 = load ptr, ptr %6, align 8, !tbaa !5
  %1028 = load ptr, ptr %5, align 8, !tbaa !5
  %1029 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1028, i16 noundef zeroext 1)
  call void @_ZN12_GLOBAL__N_112assume_floatEPN14type_inference15TypeEnvironmentEj(ptr noundef %1027, i32 noundef %1029)
  br label %1046

1030:                                             ; preds = %3, %3, %3, %3, %3
  %1031 = load ptr, ptr %6, align 8, !tbaa !5
  %1032 = load ptr, ptr %5, align 8, !tbaa !5
  %1033 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1032, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_113assume_doubleEPN14type_inference15TypeEnvironmentEj(ptr noundef %1031, i32 noundef %1033)
  %1034 = load ptr, ptr %6, align 8, !tbaa !5
  %1035 = load ptr, ptr %5, align 8, !tbaa !5
  %1036 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1035, i16 noundef zeroext 1)
  call void @_ZN12_GLOBAL__N_113assume_doubleEPN14type_inference15TypeEnvironmentEj(ptr noundef %1034, i32 noundef %1036)
  br label %1046

1037:                                             ; preds = %3, %3, %3, %3, %3, %3, %3, %3, %3
  %1038 = load ptr, ptr %6, align 8, !tbaa !5
  %1039 = load ptr, ptr %5, align 8, !tbaa !5
  %1040 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1039, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %1038, i32 noundef %1040)
  br label %1046

1041:                                             ; preds = %3, %3
  %1042 = load ptr, ptr %6, align 8, !tbaa !5
  %1043 = load ptr, ptr %5, align 8, !tbaa !5
  %1044 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1043, i16 noundef zeroext 0)
  call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %1042, i32 noundef %1044)
  br label %1046

1045:                                             ; preds = %3, %3, %3, %3
  br label %1046

1046:                                             ; preds = %1045, %1041, %1037, %1030, %1023, %1016, %1009, %1002, %995, %988, %984, %980, %976, %972, %968, %964, %960, %956, %952, %948, %944, %940, %936, %932, %928, %924, %920, %915, %590, %577, %573, %572, %557, %556, %555, %554, %519, %483, %459, %438, %406, %376, %355, %345, %333, %322, %310, %303, %296, %288, %281, %277, %273, %266, %260, %253, %246, %239, %235, %234, %230, %229, %228, %186, %185, %181, %177, %173, %172, %171, %170, %169, %168, %167, %166, %97, %93, %92, %91, %89, %87, %85, %81, %77, %73, %72, %71, %3
  %1047 = load ptr, ptr %5, align 8, !tbaa !5
  %1048 = call noundef zeroext i1 @_ZNK13IRInstruction9has_fieldEv(ptr noundef nonnull align 8 dereferenceable(32) %1047)
  br i1 %1048, label %1049, label %1066

1049:                                             ; preds = %1046
  %1050 = getelementptr inbounds %class.IRTypeChecker, ptr %67, i32 0, i32 1
  %1051 = load i8, ptr %1050, align 8, !tbaa !30, !range !23, !noundef !24
  %1052 = trunc i8 %1051 to i1
  br i1 %1052, label %1053, label %1066

1053:                                             ; preds = %1049
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #9
  %1054 = load ptr, ptr %5, align 8, !tbaa !5
  %1055 = call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %1054)
  %1056 = call noundef zeroext i1 @_ZN6opcode15is_an_sfield_opE8IROpcode(i16 noundef zeroext %1055)
  %1057 = zext i1 %1056 to i64
  %1058 = select i1 %1056, i32 0, i32 1
  store i32 %1058, ptr %65, align 4, !tbaa !32
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #9
  %1059 = load ptr, ptr %5, align 8, !tbaa !5
  %1060 = call noundef ptr @_ZNK13IRInstruction9get_fieldEv(ptr noundef nonnull align 8 dereferenceable(32) %1059)
  %1061 = load i32, ptr %65, align 4, !tbaa !32
  %1062 = call noundef ptr @_Z13resolve_fieldPK11DexFieldRef11FieldSearch(ptr noundef %1060, i32 noundef %1061)
  store ptr %1062, ptr %66, align 8, !tbaa !5
  %1063 = getelementptr inbounds %class.IRTypeChecker, ptr %67, i32 0, i32 0
  %1064 = load ptr, ptr %1063, align 8, !tbaa !9
  %1065 = load ptr, ptr %66, align 8, !tbaa !5
  call void @_ZN12_GLOBAL__N_115validate_accessI8DexFieldEEvPK9DexMethodPKT_(ptr noundef %1064, ptr noundef %1065)
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #9
  br label %1066

1066:                                             ; preds = %1053, %1049, %1046
  ret void

1067:                                             ; preds = %683, %164
  %1068 = load ptr, ptr %10, align 8
  %1069 = load i32, ptr %11, align 4
  %1070 = insertvalue { ptr, i32 } poison, ptr %1068, 0
  %1071 = insertvalue { ptr, i32 } %1070, i32 %1069, 1
  resume { ptr, i32 } %1071

1072:                                             ; preds = %842, %661, %147
  unreachable
}

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK13IRTypeChecker17assume_assignableEN5boost8optionalIPK7DexTypeEEPS2_(ptr noundef nonnull align 8 dereferenceable(56), i8, ptr, ptr noundef) #3 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_124check_is_assignable_fromEPK7DexTypeS2_b(ptr noundef, ptr noundef, i1 noundef zeroext) #3

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoPK7DexType(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #6

; Function Attrs: mustprogress uwtable
declare hidden noundef nonnull align 8 dereferenceable(8) ptr @_ZN12_GLOBAL__N_120print_type_hierarchyERSoPK7DexType(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #3

declare ptr @__cxa_allocate_exception(i64)

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_121TypeCheckingExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #3 align 2

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

declare void @__cxa_throw(ptr, ptr, ptr)

declare void @__cxa_free_exception(ptr)

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_118assume_wide_scalarEPN14type_inference15TypeEnvironmentEj(ptr noundef, i32 noundef) #3

; Function Attrs: mustprogress uwtable
declare dso_local { i8, ptr } @_ZNK14type_inference15TypeEnvironment12get_dex_typeEj(ptr noundef nonnull align 8 dereferenceable(48), i32 noundef) #3 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 @_ZNK8DexProto9get_rtypeEv(ptr noundef nonnull align 8 dereferenceable(24)) #1 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_126is_inference_fallback_typeEPK7DexType(ptr noundef) #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN5boostlsIcSt11char_traitsIcEPK7DexTypeEERSt13basic_ostreamIT_T0_ESA_RKNS_8optionalIT1_EE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(16)) #4

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef, i32 noundef) #3

declare noundef ptr @_ZN4type24get_array_component_typeEPK7DexType(ptr noundef) #6

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

declare noundef zeroext i1 @_ZN4type9is_objectEPK7DexType(ptr noundef) #6

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_112assume_floatEPN14type_inference15TypeEnvironmentEj(ptr noundef, i32 noundef) #3

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_113assume_doubleEPN14type_inference15TypeEnvironmentEj(ptr noundef, i32 noundef) #3

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_111assume_longEPN14type_inference15TypeEnvironmentEj(ptr noundef, i32 noundef) #3

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_117assume_comparableEPN14type_inference15TypeEnvironmentEjj(ptr noundef, i32 noundef, i32 noundef) #3

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_127assume_comparable_with_zeroEPN14type_inference15TypeEnvironmentEj(ptr noundef, i32 noundef) #3

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZN12_GLOBAL__N_112assume_arrayIZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentEE3$_0EEvS6_jRKT_"(ptr noundef, i32 noundef, ptr noundef nonnull align 1 dereferenceable(1)) #3

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZN12_GLOBAL__N_112assume_arrayIZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentEE3$_1EEvS6_jRKT_"(ptr noundef, i32 noundef, ptr noundef nonnull align 8 dereferenceable(8)) #3

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZN12_GLOBAL__N_112assume_arrayIZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentEE3$_2EEvS6_jRKT_"(ptr noundef, i32 noundef, ptr noundef nonnull align 1 dereferenceable(1)) #3

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZN12_GLOBAL__N_112assume_arrayIZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentEE3$_3EEvS6_jRKT_"(ptr noundef, i32 noundef, ptr noundef nonnull align 1 dereferenceable(1)) #3

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZN12_GLOBAL__N_112assume_arrayIZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentEE3$_4EEvS6_jRKT_"(ptr noundef, i32 noundef, ptr noundef nonnull align 8 dereferenceable(16)) #3

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZN12_GLOBAL__N_112assume_arrayIZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentEE3$_5EEvS6_jRKT_"(ptr noundef, i32 noundef, ptr noundef nonnull align 8 dereferenceable(8)) #3

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZN12_GLOBAL__N_112assume_arrayIZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentEE3$_6EEvS6_jRKT_"(ptr noundef, i32 noundef, ptr noundef nonnull align 8 dereferenceable(16)) #3

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZN12_GLOBAL__N_112assume_arrayIZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentEE3$_7EEvS6_jRKT_"(ptr noundef, i32 noundef, ptr noundef nonnull align 1 dereferenceable(1)) #3

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

; 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 zeroext i1 @_ZNK13IRInstruction9has_fieldEv(ptr noundef nonnull align 8 dereferenceable(32)) #3 align 2

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

declare noundef zeroext i1 @_ZN4type8is_floatEPK7DexType(ptr noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZNK13IRInstruction10get_methodEv(ptr noundef nonnull align 8 dereferenceable(32)) #3 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 nounwind uwtable
declare dso_local noundef i64 @_ZNK11DexTypeList4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #1 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_127validate_invoke_polymorphicEPK12DexMethodRef(ptr noundef) #3

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

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

declare noundef ptr @_ZN4type22get_array_element_typeEPK7DexType(ptr noundef) #6

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

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

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

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

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

declare noundef zeroext i1 @_ZN4type11is_integralEPK7DexType(ptr noundef) #6

declare noundef zeroext i1 @_ZN4type7is_longEPK7DexType(ptr noundef) #6

declare noundef zeroext i1 @_ZN4type9is_doubleEPK7DexType(ptr noundef) #6

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_Z14resolve_methodP12DexMethodRef12MethodSearchPK9DexMethod(ptr noundef, i32 noundef, ptr noundef) #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_Z16opcode_to_searchPK13IRInstruction(ptr noundef) #4

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_115validate_accessI9DexMethodEEvPKS1_PKT_(ptr noundef, ptr noundef) #3

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_121validate_invoke_superEPK9DexMethodPK12DexMethodRef(ptr noundef, ptr noundef) #3

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_123validate_invoke_virtualEPK9DexMethodPK12DexMethodRef(ptr noundef, ptr noundef) #3

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_122validate_invoke_directEPK9DexMethodPK12DexMethodRef(ptr noundef, ptr noundef) #3

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_122validate_invoke_staticEPK9DexMethodPK12DexMethodRef(ptr noundef, ptr noundef) #3

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_125validate_invoke_interfaceEPK9DexMethodPK12DexMethodRef(ptr noundef, ptr noundef) #3

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_133validate_invoke_class_initializerEPK12DexMethodRef(ptr noundef) #3

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_134validate_invoke_direct_constructorEPK12DexMethodRef8IROpcode(ptr noundef, i16 noundef zeroext) #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN6opcode15is_an_sfield_opE8IROpcode(i16 noundef zeroext) #8

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_Z13resolve_fieldPK11DexFieldRef11FieldSearch(ptr noundef, i32 noundef) #4

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_115validate_accessI8DexFieldEEvPK9DexMethodPKT_(ptr noundef, ptr noundef) #3

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 0}
!10 = !{!"_ZTS13IRTypeChecker", !6, i64 0, !11, i64 8, !11, i64 9, !11, i64 10, !11, i64 11, !11, i64 12, !11, i64 13, !11, i64 14, !12, i64 16, !15, i64 48}
!11 = !{!"bool", !7, i64 0}
!12 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !13, i64 0, !14, i64 8, !7, i64 16}
!13 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!14 = !{!"long", !7, i64 0}
!15 = !{!"_ZTSSt10unique_ptrIN14type_inference13TypeInferenceESt14default_deleteIS1_EE", !16, i64 0}
!16 = !{!"_ZTSSt15__uniq_ptr_dataIN14type_inference13TypeInferenceESt14default_deleteIS1_ELb1ELb1EE", !17, i64 0}
!17 = !{!"_ZTSSt15__uniq_ptr_implIN14type_inference13TypeInferenceESt14default_deleteIS1_EE", !18, i64 0}
!18 = !{!"_ZTSSt5tupleIJPN14type_inference13TypeInferenceESt14default_deleteIS1_EEE", !19, i64 0}
!19 = !{!"_ZTSSt11_Tuple_implILm0EJPN14type_inference13TypeInferenceESt14default_deleteIS1_EEE", !20, i64 0}
!20 = !{!"_ZTSSt10_Head_baseILm0EPN14type_inference13TypeInferenceELb0EE", !6, i64 0}
!21 = !{!11, !11, i64 0}
!22 = !{!14, !14, i64 0}
!23 = !{i8 0, i8 2}
!24 = !{}
!25 = distinct !{!25, !26}
!26 = !{!"llvm.loop.mustprogress"}
!27 = !{!28, !28, i64 0}
!28 = !{!"int", !7, i64 0}
!29 = distinct !{!29, !26}
!30 = !{!10, !11, i64 8}
!31 = !{!10, !11, i64 9}
!32 = !{!33, !33, i64 0}
!33 = !{!"_ZTS11FieldSearch", !7, i64 0}


; 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" = type { %"class.boost::optional_detail::tc_optional_base" }
%"class.boost::optional_detail::tc_optional_base" = type { i8, ptr }
%"class.std::__cxx11::basic_ostringstream" = type { %"class.std::basic_ostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { 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.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%class.anon = type { i8 }
%class.anon.207 = type { ptr }
%class.anon.208 = type { i8 }
%class.anon.210 = type { i8 }
%class.anon.212 = type { ptr, ptr }
%class.anon.213 = type { ptr }
%class.anon.214 = type { ptr, ptr }
%class.anon.215 = type { i8 }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }

@_ZTIN12_GLOBAL__N_121TypeCheckingExceptionE = external hidden constant { ptr, ptr, ptr }, align 8
@.str.10 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [24 x i8], align 1
@__PRETTY_FUNCTION__._ZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentE = external hidden unnamed_addr constant [80 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [26 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: noreturn
declare void @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef, ptr noundef, ...) local_unnamed_addr #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
define dso_local void @_ZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentE(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull %1, ptr noundef %2) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca %"class.boost::optional", align 8
  %7 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %class.anon, align 1
  %10 = alloca %class.anon.207, align 8
  %11 = alloca %class.anon.208, align 1
  %12 = alloca %class.anon.210, align 1
  %13 = alloca %class.anon.212, align 8
  %14 = alloca %class.anon.213, align 8
  %15 = alloca %class.anon.214, align 8
  %16 = alloca %class.anon.215, align 1
  %17 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %21 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  store ptr %1, ptr %4, align 8, !tbaa !5
  store ptr %2, ptr %5, align 8, !tbaa !5
  %22 = tail call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  switch i16 %22, label %.loopexit [
    i16 151, label %505
    i16 150, label %505
    i16 157, label %503
    i16 156, label %503
    i16 1, label %23
    i16 3, label %25
    i16 2, label %27
    i16 163, label %29
    i16 4, label %29
    i16 164, label %30
    i16 6, label %30
    i16 165, label %31
    i16 5, label %31
    i16 155, label %503
    i16 154, label %503
    i16 9, label %32
    i16 10, label %34
    i16 11, label %36
    i16 153, label %503
    i16 152, label %503
    i16 149, label %503
    i16 148, label %503
    i16 147, label %503
    i16 146, label %500
    i16 16, label %83
    i16 17, label %83
    i16 18, label %85
    i16 19, label %87
    i16 20, label %87
    i16 145, label %500
    i16 22, label %89
    i16 23, label %91
    i16 144, label %500
    i16 25, label %108
    i16 143, label %500
    i16 27, label %110
    i16 28, label %112
    i16 29, label %112
    i16 30, label %115
    i16 31, label %115
    i16 32, label %118
    i16 33, label %121
    i16 34, label %121
    i16 35, label %124
    i16 36, label %124
    i16 37, label %124
    i16 38, label %124
    i16 39, label %127
    i16 40, label %127
    i16 41, label %129
    i16 42, label %129
    i16 43, label %129
    i16 44, label %129
    i16 45, label %131
    i16 48, label %136
    i16 49, label %136
    i16 50, label %136
    i16 51, label %136
    i16 46, label %141
    i16 47, label %146
    i16 52, label %151
    i16 55, label %158
    i16 56, label %158
    i16 57, label %158
    i16 58, label %158
    i16 53, label %164
    i16 54, label %171
    i16 59, label %177
    i16 62, label %185
    i16 63, label %185
    i16 64, label %185
    i16 65, label %185
    i16 60, label %185
    i16 61, label %193
    i16 66, label %204
    i16 69, label %219
    i16 70, label %219
    i16 71, label %219
    i16 72, label %219
    i16 67, label %228
    i16 68, label %237
    i16 142, label %500
    i16 141, label %497
    i16 140, label %497
    i16 139, label %497
    i16 138, label %497
    i16 137, label %497
    i16 136, label %494
    i16 80, label %255
    i16 83, label %262
    i16 84, label %262
    i16 85, label %262
    i16 86, label %262
    i16 81, label %264
    i16 82, label %266
    i16 93, label %277
    i16 92, label %277
    i16 87, label %277
    i16 88, label %277
    i16 89, label %277
    i16 90, label %277
    i16 91, label %277
    i16 94, label %448
    i16 95, label %448
    i16 96, label %450
    i16 97, label %450
    i16 98, label %452
    i16 99, label %454
    i16 112, label %456
    i16 113, label %456
    i16 114, label %456
    i16 103, label %458
    i16 106, label %460
    i16 109, label %462
    i16 100, label %464
    i16 107, label %466
    i16 110, label %468
    i16 101, label %470
    i16 104, label %472
    i16 111, label %474
    i16 102, label %476
    i16 105, label %478
    i16 108, label %480
    i16 115, label %482
    i16 116, label %482
    i16 117, label %482
    i16 120, label %482
    i16 121, label %482
    i16 122, label %482
    i16 123, label %482
    i16 124, label %482
    i16 125, label %482
    i16 118, label %485
    i16 119, label %485
    i16 126, label %488
    i16 127, label %488
    i16 128, label %488
    i16 131, label %488
    i16 132, label %488
    i16 133, label %488
    i16 129, label %491
    i16 130, label %491
    i16 134, label %494
    i16 135, label %494
  ]

23:                                               ; preds = %3
  %24 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZNK13IRTypeChecker13assume_scalarEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef %2, i32 noundef %24, i1 noundef zeroext true)
  br label %.loopexit

25:                                               ; preds = %3
  %26 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZNK13IRTypeChecker16assume_referenceEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef %2, i32 noundef %26, i1 noundef zeroext true)
  br label %.loopexit

27:                                               ; preds = %3
  %28 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZN12_GLOBAL__N_118assume_wide_scalarEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %28)
  br label %.loopexit

29:                                               ; preds = %3, %3
  tail call void @_ZNK13IRTypeChecker13assume_scalarEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef %2, i32 noundef -2, i1 noundef zeroext false)
  br label %.loopexit

30:                                               ; preds = %3, %3
  tail call void @_ZNK13IRTypeChecker16assume_referenceEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef %2, i32 noundef -2, i1 noundef zeroext false)
  br label %.loopexit

31:                                               ; preds = %3, %3
  tail call void @_ZN12_GLOBAL__N_118assume_wide_scalarEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef -2)
  br label %.loopexit

32:                                               ; preds = %3
  %33 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZNK13IRTypeChecker13assume_scalarEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef %2, i32 noundef %33, i1 noundef zeroext false)
  br label %.loopexit

34:                                               ; preds = %3
  %35 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZN12_GLOBAL__N_118assume_wide_scalarEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %35)
  br label %.loopexit

36:                                               ; preds = %3
  %37 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZNK13IRTypeChecker16assume_referenceEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef %2, i32 noundef %37, i1 noundef zeroext false)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #9
  %38 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  %39 = tail call { i8, ptr } @_ZNK14type_inference15TypeEnvironment12get_dex_typeEj(ptr noundef nonnull align 8 dereferenceable(48) %2, i32 noundef %38)
  %40 = extractvalue { i8, ptr } %39, 0
  store i8 %40, ptr %6, align 8
  %41 = getelementptr inbounds i8, ptr %6, i64 8
  %42 = extractvalue { i8, ptr } %39, 1
  store ptr %42, ptr %41, align 8
  %43 = load ptr, ptr %0, align 8, !tbaa !9
  %44 = tail call noundef ptr @_ZNK12DexMethodRef9get_protoEv(ptr noundef nonnull align 8 dereferenceable(26) %43)
  %45 = tail call noundef ptr @_ZNK8DexProto9get_rtypeEv(ptr noundef nonnull align 8 dereferenceable(24) %44)
  %46 = call noundef zeroext i1 @_ZNK5boost8optionalIPK7DexTypeEcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %6) #9
  br i1 %46, label %47, label %82

47:                                               ; preds = %36
  %48 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNR5boost8optionalIPK7DexTypeEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %6)
  %49 = load ptr, ptr %48, align 8, !tbaa !5
  %50 = call noundef zeroext i1 @_ZN12_GLOBAL__N_126is_inference_fallback_typeEPK7DexType(ptr noundef %49)
  br i1 %50, label %82, label %51

51:                                               ; preds = %47
  %52 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNR5boost8optionalIPK7DexTypeEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %6)
  %53 = load ptr, ptr %52, align 8, !tbaa !5
  %54 = call noundef zeroext i1 @_ZN12_GLOBAL__N_124check_is_assignable_fromEPK7DexTypeS2_b(ptr noundef %53, ptr noundef %45, i1 noundef zeroext false)
  br i1 %54, label %82, label %55

55:                                               ; preds = %51
  call void @llvm.lifetime.start.p0(i64 376, ptr nonnull %7) #9
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %7)
  %56 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull @.str.20)
          to label %57 unwind label %75

57:                                               ; preds = %55
  %58 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5boostlsIcSt11char_traitsIcEPK7DexTypeEERSt13basic_ostreamIT_T0_ESA_RKNS_8optionalIT1_EE(ptr noundef nonnull align 8 dereferenceable(8) %56, ptr noundef nonnull align 8 dereferenceable(16) %6)
          to label %59 unwind label %75

59:                                               ; preds = %57
  %60 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef nonnull @.str.21)
          to label %61 unwind label %75

61:                                               ; preds = %59
  %62 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoPK7DexType(ptr noundef nonnull align 8 dereferenceable(8) %60, ptr noundef %45)
          to label %63 unwind label %75

63:                                               ; preds = %61
  %64 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %62, ptr noundef nonnull @.str.19)
          to label %65 unwind label %75

65:                                               ; preds = %63
  %66 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNR5boost8optionalIPK7DexTypeEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %6)
          to label %67 unwind label %75

67:                                               ; preds = %65
  %68 = load ptr, ptr %66, align 8, !tbaa !5
  %69 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN12_GLOBAL__N_120print_type_hierarchyERSoPK7DexType(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef %68)
          to label %70 unwind label %75

70:                                               ; preds = %67
  %71 = call ptr @__cxa_allocate_exception(i64 16) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #9
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %8, ptr noundef nonnull align 8 dereferenceable(112) %7)
          to label %72 unwind label %.thread

72:                                               ; preds = %70
  invoke void @_ZN12_GLOBAL__N_121TypeCheckingExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %71, ptr noundef nonnull align 8 dereferenceable(32) %8)
          to label %74 unwind label %.thread121

.thread121:                                       ; preds = %72
  %73 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #9
  br label %80

74:                                               ; preds = %72
  invoke void @__cxa_throw(ptr nonnull %71, ptr nonnull @_ZTIN12_GLOBAL__N_121TypeCheckingExceptionE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #10
          to label %524 unwind label %78

75:                                               ; preds = %67, %65, %63, %61, %59, %57, %55
  %76 = landingpad { ptr, i32 }
          cleanup
  br label %81

.thread:                                          ; preds = %70
  %77 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #9
  br label %80

78:                                               ; preds = %74
  %79 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #9
  br label %81

80:                                               ; preds = %.thread121, %.thread
  %.pn114120 = phi { ptr, i32 } [ %77, %.thread ], [ %73, %.thread121 ]
  call void @__cxa_free_exception(ptr %71) #9
  br label %81

81:                                               ; preds = %78, %80, %75
  %.pn114.pn = phi { ptr, i32 } [ %.pn114120, %80 ], [ %79, %78 ], [ %76, %75 ]
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %7) #9
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %7) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #9
  br label %523

82:                                               ; preds = %51, %47, %36
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #9
  br label %.loopexit

83:                                               ; preds = %3, %3
  %84 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZNK13IRTypeChecker16assume_referenceEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef %2, i32 noundef %84, i1 noundef zeroext false)
  br label %.loopexit

85:                                               ; preds = %3
  %86 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZNK13IRTypeChecker16assume_referenceEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef %2, i32 noundef %86, i1 noundef zeroext false)
  br label %.loopexit

87:                                               ; preds = %3, %3
  %88 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZNK13IRTypeChecker16assume_referenceEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef %2, i32 noundef %88, i1 noundef zeroext false)
  br label %.loopexit

89:                                               ; preds = %3
  %90 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %90)
  br label %.loopexit

91:                                               ; preds = %3
  %92 = tail call noundef ptr @_ZNK13IRInstruction8get_typeEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  %93 = tail call noundef ptr @_ZN4type24get_array_component_typeEPK7DexType(ptr noundef %92)
  %.not113 = icmp eq ptr %93, null
  br i1 %.not113, label %94, label %95

94:                                               ; preds = %91
  tail call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.10, i32 noundef 1316, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentE, i32 noundef 2, ptr noundef nonnull @.str.23) #10
  unreachable

95:                                               ; preds = %91
  %96 = tail call noundef zeroext i1 @_ZN4type9is_objectEPK7DexType(ptr noundef nonnull %93)
  %97 = tail call noundef i64 @_ZNK13IRInstruction9srcs_sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  %.not136 = icmp eq i64 %97, 0
  br i1 %.not136, label %.loopexit, label %.lr.ph135

.lr.ph135:                                        ; preds = %95
  br i1 %96, label %.lr.ph135.split.us, label %.lr.ph135.split

.lr.ph135.split.us:                               ; preds = %.lr.ph135, %.lr.ph135.split.us
  %.098133.us = phi i64 [ %100, %.lr.ph135.split.us ], [ 0, %.lr.ph135 ]
  %98 = trunc i64 %.098133.us to i16
  %99 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext %98)
  tail call void @_ZNK13IRTypeChecker16assume_referenceEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef %2, i32 noundef %99, i1 noundef zeroext false)
  %100 = add nuw i64 %.098133.us, 1
  %101 = tail call noundef i64 @_ZNK13IRInstruction9srcs_sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  %102 = icmp ult i64 %100, %101
  br i1 %102, label %.lr.ph135.split.us, label %.loopexit, !llvm.loop !21

.lr.ph135.split:                                  ; preds = %.lr.ph135, %.lr.ph135.split
  %.098133 = phi i64 [ %105, %.lr.ph135.split ], [ 0, %.lr.ph135 ]
  %103 = trunc i64 %.098133 to i16
  %104 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext %103)
  tail call void @_ZNK13IRTypeChecker13assume_scalarEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef %2, i32 noundef %104, i1 noundef zeroext false)
  %105 = add nuw i64 %.098133, 1
  %106 = tail call noundef i64 @_ZNK13IRInstruction9srcs_sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  %107 = icmp ult i64 %105, %106
  br i1 %107, label %.lr.ph135.split, label %.loopexit, !llvm.loop !21

108:                                              ; preds = %3
  %109 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZNK13IRTypeChecker16assume_referenceEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef %2, i32 noundef %109, i1 noundef zeroext false)
  br label %.loopexit

110:                                              ; preds = %3
  %111 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %111)
  br label %.loopexit

112:                                              ; preds = %3, %3
  %113 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZN12_GLOBAL__N_112assume_floatEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %113)
  %114 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 1)
  tail call void @_ZN12_GLOBAL__N_112assume_floatEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %114)
  br label %.loopexit

115:                                              ; preds = %3, %3
  %116 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZN12_GLOBAL__N_113assume_doubleEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %116)
  %117 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 1)
  tail call void @_ZN12_GLOBAL__N_113assume_doubleEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %117)
  br label %.loopexit

118:                                              ; preds = %3
  %119 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZN12_GLOBAL__N_111assume_longEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %119)
  %120 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 1)
  tail call void @_ZN12_GLOBAL__N_111assume_longEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %120)
  br label %.loopexit

121:                                              ; preds = %3, %3
  %122 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  %123 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 1)
  tail call void @_ZN12_GLOBAL__N_117assume_comparableEPN14type_inference15TypeEnvironmentEjj(ptr noundef %2, i32 noundef %122, i32 noundef %123)
  br label %.loopexit

124:                                              ; preds = %3, %3, %3, %3
  %125 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %125)
  %126 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 1)
  tail call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %126)
  br label %.loopexit

127:                                              ; preds = %3, %3
  %128 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZN12_GLOBAL__N_127assume_comparable_with_zeroEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %128)
  br label %.loopexit

129:                                              ; preds = %3, %3, %3, %3
  %130 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %130)
  br label %.loopexit

131:                                              ; preds = %3
  %132 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %9) #9
  call void @"_ZN12_GLOBAL__N_112assume_arrayIZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentEE3$_0EEvS6_jRKT_"(ptr noundef %2, i32 noundef %132, ptr noundef nonnull align 1 dereferenceable(1) %9)
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #9
  %133 = load ptr, ptr %5, align 8, !tbaa !5
  %134 = load ptr, ptr %4, align 8, !tbaa !5
  %135 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %134, i16 noundef zeroext 1)
  call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %133, i32 noundef %135)
  br label %.loopexit

136:                                              ; preds = %3, %3, %3, %3
  %137 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #9
  store ptr %4, ptr %10, align 8, !tbaa !5
  call void @"_ZN12_GLOBAL__N_112assume_arrayIZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentEE3$_1EEvS6_jRKT_"(ptr noundef %2, i32 noundef %137, ptr noundef nonnull align 8 dereferenceable(8) %10)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #9
  %138 = load ptr, ptr %5, align 8, !tbaa !5
  %139 = load ptr, ptr %4, align 8, !tbaa !5
  %140 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %139, i16 noundef zeroext 1)
  call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %138, i32 noundef %140)
  br label %.loopexit

141:                                              ; preds = %3
  %142 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #9
  call void @"_ZN12_GLOBAL__N_112assume_arrayIZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentEE3$_2EEvS6_jRKT_"(ptr noundef %2, i32 noundef %142, ptr noundef nonnull align 1 dereferenceable(1) %11)
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #9
  %143 = load ptr, ptr %5, align 8, !tbaa !5
  %144 = load ptr, ptr %4, align 8, !tbaa !5
  %145 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %144, i16 noundef zeroext 1)
  call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %143, i32 noundef %145)
  br label %.loopexit

146:                                              ; preds = %3
  %147 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #9
  call void @"_ZN12_GLOBAL__N_112assume_arrayIZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentEE3$_3EEvS6_jRKT_"(ptr noundef %2, i32 noundef %147, ptr noundef nonnull align 1 dereferenceable(1) %12)
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #9
  %148 = load ptr, ptr %5, align 8, !tbaa !5
  %149 = load ptr, ptr %4, align 8, !tbaa !5
  %150 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %149, i16 noundef zeroext 1)
  call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %148, i32 noundef %150)
  br label %.loopexit

151:                                              ; preds = %3
  %152 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZNK13IRTypeChecker13assume_scalarEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef %2, i32 noundef %152, i1 noundef zeroext false)
  %153 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 1)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #9
  store ptr %4, ptr %13, align 8, !tbaa !5
  %154 = getelementptr inbounds i8, ptr %13, i64 8
  store ptr %5, ptr %154, align 8, !tbaa !5
  call void @"_ZN12_GLOBAL__N_112assume_arrayIZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentEE3$_4EEvS6_jRKT_"(ptr noundef %2, i32 noundef %153, ptr noundef nonnull align 8 dereferenceable(16) %13)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #9
  %155 = load ptr, ptr %5, align 8, !tbaa !5
  %156 = load ptr, ptr %4, align 8, !tbaa !5
  %157 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %156, i16 noundef zeroext 2)
  call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %155, i32 noundef %157)
  br label %.loopexit

158:                                              ; preds = %3, %3, %3, %3
  %159 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %159)
  %160 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 1)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #9
  store ptr %4, ptr %14, align 8, !tbaa !5
  call void @"_ZN12_GLOBAL__N_112assume_arrayIZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentEE3$_5EEvS6_jRKT_"(ptr noundef %2, i32 noundef %160, ptr noundef nonnull align 8 dereferenceable(8) %14)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #9
  %161 = load ptr, ptr %5, align 8, !tbaa !5
  %162 = load ptr, ptr %4, align 8, !tbaa !5
  %163 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %162, i16 noundef zeroext 2)
  call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %161, i32 noundef %163)
  br label %.loopexit

164:                                              ; preds = %3
  %165 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZN12_GLOBAL__N_118assume_wide_scalarEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %165)
  %166 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 1)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #9
  store ptr %4, ptr %15, align 8, !tbaa !5
  %167 = getelementptr inbounds i8, ptr %15, i64 8
  store ptr %5, ptr %167, align 8, !tbaa !5
  call void @"_ZN12_GLOBAL__N_112assume_arrayIZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentEE3$_6EEvS6_jRKT_"(ptr noundef %2, i32 noundef %166, ptr noundef nonnull align 8 dereferenceable(16) %15)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #9
  %168 = load ptr, ptr %5, align 8, !tbaa !5
  %169 = load ptr, ptr %4, align 8, !tbaa !5
  %170 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %169, i16 noundef zeroext 2)
  call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %168, i32 noundef %170)
  br label %.loopexit

171:                                              ; preds = %3
  %172 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZNK13IRTypeChecker16assume_referenceEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef %2, i32 noundef %172, i1 noundef zeroext false)
  %173 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 1)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %16) #9
  call void @"_ZN12_GLOBAL__N_112assume_arrayIZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentEE3$_7EEvS6_jRKT_"(ptr noundef %2, i32 noundef %173, ptr noundef nonnull align 1 dereferenceable(1) %16)
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #9
  %174 = load ptr, ptr %5, align 8, !tbaa !5
  %175 = load ptr, ptr %4, align 8, !tbaa !5
  %176 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %175, i16 noundef zeroext 2)
  call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %174, i32 noundef %176)
  br label %.loopexit

177:                                              ; preds = %3
  %178 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZNK13IRTypeChecker16assume_referenceEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef %2, i32 noundef %178, i1 noundef zeroext false)
  %179 = tail call noundef ptr @_ZNK13IRInstruction9get_fieldEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  %180 = tail call noundef ptr @_ZNK11DexFieldRef9get_classEv(ptr noundef nonnull align 8 dereferenceable(26) %179)
  %181 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  %182 = tail call { i8, ptr } @_ZNK14type_inference15TypeEnvironment12get_dex_typeEj(ptr noundef nonnull align 8 dereferenceable(48) %2, i32 noundef %181)
  %183 = extractvalue { i8, ptr } %182, 0
  %184 = extractvalue { i8, ptr } %182, 1
  tail call void @_ZNK13IRTypeChecker17assume_assignableEN5boost8optionalIPK7DexTypeEEPS2_(ptr noundef nonnull align 8 dereferenceable(56) %0, i8 %183, ptr %184, ptr noundef %180)
  br label %.loopexit

185:                                              ; preds = %3, %3, %3, %3, %3
  %186 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZNK13IRTypeChecker16assume_referenceEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef %2, i32 noundef %186, i1 noundef zeroext false)
  %187 = tail call noundef ptr @_ZNK13IRInstruction9get_fieldEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  %188 = tail call noundef ptr @_ZNK11DexFieldRef9get_classEv(ptr noundef nonnull align 8 dereferenceable(26) %187)
  %189 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  %190 = tail call { i8, ptr } @_ZNK14type_inference15TypeEnvironment12get_dex_typeEj(ptr noundef nonnull align 8 dereferenceable(48) %2, i32 noundef %189)
  %191 = extractvalue { i8, ptr } %190, 0
  %192 = extractvalue { i8, ptr } %190, 1
  tail call void @_ZNK13IRTypeChecker17assume_assignableEN5boost8optionalIPK7DexTypeEEPS2_(ptr noundef nonnull align 8 dereferenceable(56) %0, i8 %191, ptr %192, ptr noundef %188)
  br label %.loopexit

193:                                              ; preds = %3
  %194 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZNK13IRTypeChecker16assume_referenceEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef %2, i32 noundef %194, i1 noundef zeroext false)
  %195 = tail call noundef zeroext i1 @_ZNK13IRInstruction9has_fieldEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  br i1 %195, label %197, label %196

196:                                              ; preds = %193
  tail call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.10, i32 noundef 1550, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentE, i32 noundef 2, ptr noundef nonnull @.str.23) #10
  unreachable

197:                                              ; preds = %193
  %198 = tail call noundef ptr @_ZNK13IRInstruction9get_fieldEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  %199 = tail call noundef ptr @_ZNK11DexFieldRef9get_classEv(ptr noundef nonnull align 8 dereferenceable(26) %198)
  %200 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  %201 = tail call { i8, ptr } @_ZNK14type_inference15TypeEnvironment12get_dex_typeEj(ptr noundef nonnull align 8 dereferenceable(48) %2, i32 noundef %200)
  %202 = extractvalue { i8, ptr } %201, 0
  %203 = extractvalue { i8, ptr } %201, 1
  tail call void @_ZNK13IRTypeChecker17assume_assignableEN5boost8optionalIPK7DexTypeEEPS2_(ptr noundef nonnull align 8 dereferenceable(56) %0, i8 %202, ptr %203, ptr noundef %199)
  br label %.loopexit

204:                                              ; preds = %3
  %205 = tail call noundef ptr @_ZNK13IRInstruction9get_fieldEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  %206 = tail call noundef ptr @_ZNK11DexFieldRef8get_typeEv(ptr noundef nonnull align 8 dereferenceable(26) %205)
  %207 = tail call noundef zeroext i1 @_ZN4type8is_floatEPK7DexType(ptr noundef %206)
  %208 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  br i1 %207, label %209, label %210

209:                                              ; preds = %204
  tail call void @_ZN12_GLOBAL__N_112assume_floatEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %208)
  br label %211

210:                                              ; preds = %204
  tail call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %208)
  br label %211

211:                                              ; preds = %210, %209
  %212 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 1)
  tail call void @_ZNK13IRTypeChecker16assume_referenceEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef %2, i32 noundef %212, i1 noundef zeroext false)
  %213 = tail call noundef ptr @_ZNK13IRInstruction9get_fieldEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  %214 = tail call noundef ptr @_ZNK11DexFieldRef9get_classEv(ptr noundef nonnull align 8 dereferenceable(26) %213)
  %215 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 1)
  %216 = tail call { i8, ptr } @_ZNK14type_inference15TypeEnvironment12get_dex_typeEj(ptr noundef nonnull align 8 dereferenceable(48) %2, i32 noundef %215)
  %217 = extractvalue { i8, ptr } %216, 0
  %218 = extractvalue { i8, ptr } %216, 1
  tail call void @_ZNK13IRTypeChecker17assume_assignableEN5boost8optionalIPK7DexTypeEEPS2_(ptr noundef nonnull align 8 dereferenceable(56) %0, i8 %217, ptr %218, ptr noundef %214)
  br label %.loopexit

219:                                              ; preds = %3, %3, %3, %3
  %220 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %220)
  %221 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 1)
  tail call void @_ZNK13IRTypeChecker16assume_referenceEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef %2, i32 noundef %221, i1 noundef zeroext false)
  %222 = tail call noundef ptr @_ZNK13IRInstruction9get_fieldEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  %223 = tail call noundef ptr @_ZNK11DexFieldRef9get_classEv(ptr noundef nonnull align 8 dereferenceable(26) %222)
  %224 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 1)
  %225 = tail call { i8, ptr } @_ZNK14type_inference15TypeEnvironment12get_dex_typeEj(ptr noundef nonnull align 8 dereferenceable(48) %2, i32 noundef %224)
  %226 = extractvalue { i8, ptr } %225, 0
  %227 = extractvalue { i8, ptr } %225, 1
  tail call void @_ZNK13IRTypeChecker17assume_assignableEN5boost8optionalIPK7DexTypeEEPS2_(ptr noundef nonnull align 8 dereferenceable(56) %0, i8 %226, ptr %227, ptr noundef %223)
  br label %.loopexit

228:                                              ; preds = %3
  %229 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZN12_GLOBAL__N_118assume_wide_scalarEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %229)
  %230 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 1)
  tail call void @_ZNK13IRTypeChecker16assume_referenceEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef %2, i32 noundef %230, i1 noundef zeroext false)
  %231 = tail call noundef ptr @_ZNK13IRInstruction9get_fieldEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  %232 = tail call noundef ptr @_ZNK11DexFieldRef9get_classEv(ptr noundef nonnull align 8 dereferenceable(26) %231)
  %233 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 1)
  %234 = tail call { i8, ptr } @_ZNK14type_inference15TypeEnvironment12get_dex_typeEj(ptr noundef nonnull align 8 dereferenceable(48) %2, i32 noundef %233)
  %235 = extractvalue { i8, ptr } %234, 0
  %236 = extractvalue { i8, ptr } %234, 1
  tail call void @_ZNK13IRTypeChecker17assume_assignableEN5boost8optionalIPK7DexTypeEEPS2_(ptr noundef nonnull align 8 dereferenceable(56) %0, i8 %235, ptr %236, ptr noundef %232)
  br label %.loopexit

237:                                              ; preds = %3
  %238 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZNK13IRTypeChecker16assume_referenceEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef %2, i32 noundef %238, i1 noundef zeroext false)
  %239 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 1)
  tail call void @_ZNK13IRTypeChecker16assume_referenceEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef %2, i32 noundef %239, i1 noundef zeroext false)
  %240 = tail call noundef zeroext i1 @_ZNK13IRInstruction9has_fieldEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  br i1 %240, label %242, label %241

241:                                              ; preds = %237
  tail call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.10, i32 noundef 1587, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentE, i32 noundef 2, ptr noundef nonnull @.str.23) #10
  unreachable

242:                                              ; preds = %237
  %243 = tail call noundef ptr @_ZNK13IRInstruction9get_fieldEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  %244 = tail call noundef ptr @_ZNK11DexFieldRef8get_typeEv(ptr noundef nonnull align 8 dereferenceable(26) %243)
  %245 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  %246 = tail call { i8, ptr } @_ZNK14type_inference15TypeEnvironment12get_dex_typeEj(ptr noundef nonnull align 8 dereferenceable(48) %2, i32 noundef %245)
  %247 = extractvalue { i8, ptr } %246, 0
  %248 = extractvalue { i8, ptr } %246, 1
  tail call void @_ZNK13IRTypeChecker17assume_assignableEN5boost8optionalIPK7DexTypeEEPS2_(ptr noundef nonnull align 8 dereferenceable(56) %0, i8 %247, ptr %248, ptr noundef %244)
  %249 = tail call noundef ptr @_ZNK13IRInstruction9get_fieldEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  %250 = tail call noundef ptr @_ZNK11DexFieldRef9get_classEv(ptr noundef nonnull align 8 dereferenceable(26) %249)
  %251 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 1)
  %252 = tail call { i8, ptr } @_ZNK14type_inference15TypeEnvironment12get_dex_typeEj(ptr noundef nonnull align 8 dereferenceable(48) %2, i32 noundef %251)
  %253 = extractvalue { i8, ptr } %252, 0
  %254 = extractvalue { i8, ptr } %252, 1
  tail call void @_ZNK13IRTypeChecker17assume_assignableEN5boost8optionalIPK7DexTypeEEPS2_(ptr noundef nonnull align 8 dereferenceable(56) %0, i8 %253, ptr %254, ptr noundef %250)
  br label %.loopexit

255:                                              ; preds = %3
  %256 = tail call noundef ptr @_ZNK13IRInstruction9get_fieldEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  %257 = tail call noundef ptr @_ZNK11DexFieldRef8get_typeEv(ptr noundef nonnull align 8 dereferenceable(26) %256)
  %258 = tail call noundef zeroext i1 @_ZN4type8is_floatEPK7DexType(ptr noundef %257)
  %259 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  br i1 %258, label %260, label %261

260:                                              ; preds = %255
  tail call void @_ZN12_GLOBAL__N_112assume_floatEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %259)
  br label %.loopexit

261:                                              ; preds = %255
  tail call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %259)
  br label %.loopexit

262:                                              ; preds = %3, %3, %3, %3
  %263 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %263)
  br label %.loopexit

264:                                              ; preds = %3
  %265 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZN12_GLOBAL__N_118assume_wide_scalarEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %265)
  br label %.loopexit

266:                                              ; preds = %3
  %267 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZNK13IRTypeChecker16assume_referenceEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef %2, i32 noundef %267, i1 noundef zeroext false)
  %268 = tail call noundef zeroext i1 @_ZNK13IRInstruction9has_fieldEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  br i1 %268, label %270, label %269

269:                                              ; preds = %266
  tail call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.10, i32 noundef 1632, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentE, i32 noundef 2, ptr noundef nonnull @.str.23) #10
  unreachable

270:                                              ; preds = %266
  %271 = tail call noundef ptr @_ZNK13IRInstruction9get_fieldEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  %272 = tail call noundef ptr @_ZNK11DexFieldRef8get_typeEv(ptr noundef nonnull align 8 dereferenceable(26) %271)
  %273 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  %274 = tail call { i8, ptr } @_ZNK14type_inference15TypeEnvironment12get_dex_typeEj(ptr noundef nonnull align 8 dereferenceable(48) %2, i32 noundef %273)
  %275 = extractvalue { i8, ptr } %274, 0
  %276 = extractvalue { i8, ptr } %274, 1
  tail call void @_ZNK13IRTypeChecker17assume_assignableEN5boost8optionalIPK7DexTypeEEPS2_(ptr noundef nonnull align 8 dereferenceable(56) %0, i8 %275, ptr %276, ptr noundef %272)
  br label %.loopexit

277:                                              ; preds = %3, %3, %3, %3, %3, %3, %3
  %278 = tail call noundef ptr @_ZNK13IRInstruction10get_methodEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  %279 = tail call noundef ptr @_ZNK12DexMethodRef9get_protoEv(ptr noundef nonnull align 8 dereferenceable(26) %278)
  %280 = tail call noundef ptr @_ZNK8DexProto8get_argsEv(ptr noundef nonnull align 8 dereferenceable(24) %279)
  %281 = tail call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  %.not = icmp ne i16 %281, 90
  %282 = zext i1 %.not to i64
  %283 = tail call noundef i64 @_ZNK11DexTypeList4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %280)
  %284 = add i64 %283, %282
  %285 = tail call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  %286 = icmp eq i16 %285, 92
  br i1 %286, label %287, label %288

287:                                              ; preds = %277
  tail call void @_ZN12_GLOBAL__N_127validate_invoke_polymorphicEPK12DexMethodRef(ptr noundef nonnull %278)
  br label %327

288:                                              ; preds = %277
  %289 = tail call noundef i64 @_ZNK13IRInstruction9srcs_sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  %.not107 = icmp eq i64 %289, %284
  br i1 %.not107, label %327, label %290

290:                                              ; preds = %288
  call void @llvm.lifetime.start.p0(i64 376, ptr nonnull %17) #9
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %17)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #9
  %291 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_Z4showI13IRInstructionRSoENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %18, ptr noundef %291)
          to label %292 unwind label %317

292:                                              ; preds = %290
  %293 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %18) #9
  %294 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef %293)
          to label %295 unwind label %319

295:                                              ; preds = %292
  %296 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %294, ptr noundef nonnull @.str.25)
          to label %297 unwind label %319

297:                                              ; preds = %295
  %298 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %296, ptr noundef nonnull @.str.26)
          to label %299 unwind label %319

299:                                              ; preds = %297
  %300 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %298, i64 noundef %284)
          to label %301 unwind label %319

301:                                              ; preds = %299
  %302 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %300, ptr noundef nonnull @.str.27)
          to label %303 unwind label %319

303:                                              ; preds = %301
  %304 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %302, ptr noundef nonnull @.str.28)
          to label %305 unwind label %319

305:                                              ; preds = %303
  %306 = load ptr, ptr %4, align 8, !tbaa !5
  %307 = invoke noundef i64 @_ZNK13IRInstruction9srcs_sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %306)
          to label %308 unwind label %319

308:                                              ; preds = %305
  %309 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %304, i64 noundef %307)
          to label %310 unwind label %319

310:                                              ; preds = %308
  %311 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %309, ptr noundef nonnull @.str.29)
          to label %312 unwind label %319

312:                                              ; preds = %310
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #9
  %313 = call ptr @__cxa_allocate_exception(i64 16) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #9
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %19, ptr noundef nonnull align 8 dereferenceable(112) %17)
          to label %314 unwind label %.thread123

314:                                              ; preds = %312
  invoke void @_ZN12_GLOBAL__N_121TypeCheckingExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %313, ptr noundef nonnull align 8 dereferenceable(32) %19)
          to label %316 unwind label %.thread127

.thread127:                                       ; preds = %314
  %315 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #9
  br label %325

316:                                              ; preds = %314
  invoke void @__cxa_throw(ptr nonnull %313, ptr nonnull @_ZTIN12_GLOBAL__N_121TypeCheckingExceptionE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #10
          to label %524 unwind label %323

317:                                              ; preds = %290
  %318 = landingpad { ptr, i32 }
          cleanup
  br label %321

319:                                              ; preds = %310, %308, %305, %303, %301, %299, %297, %295, %292
  %320 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #9
  br label %321

321:                                              ; preds = %319, %317
  %.pn = phi { ptr, i32 } [ %320, %319 ], [ %318, %317 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #9
  br label %326

.thread123:                                       ; preds = %312
  %322 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #9
  br label %325

323:                                              ; preds = %316
  %324 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #9
  br label %326

325:                                              ; preds = %.thread127, %.thread123
  %.pn109126 = phi { ptr, i32 } [ %322, %.thread123 ], [ %315, %.thread127 ]
  call void @__cxa_free_exception(ptr %313) #9
  br label %326

326:                                              ; preds = %323, %325, %321
  %.pn109.pn = phi { ptr, i32 } [ %.pn109126, %325 ], [ %324, %323 ], [ %.pn, %321 ]
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %17) #9
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %17) #9
  br label %523

327:                                              ; preds = %288, %287
  %328 = tail call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  %.not112.not = icmp eq i16 %328, 90
  br i1 %.not112.not, label %335, label %329

329:                                              ; preds = %327
  %330 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZNK13IRTypeChecker16assume_referenceEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef %2, i32 noundef %330, i1 noundef zeroext false)
  %331 = tail call { i8, ptr } @_ZNK14type_inference15TypeEnvironment12get_dex_typeEj(ptr noundef nonnull align 8 dereferenceable(48) %2, i32 noundef %330)
  %332 = extractvalue { i8, ptr } %331, 0
  %333 = extractvalue { i8, ptr } %331, 1
  %334 = tail call noundef ptr @_ZNK12DexMethodRef9get_classEv(ptr noundef nonnull align 8 dereferenceable(26) %278)
  tail call void @_ZNK13IRTypeChecker17assume_assignableEN5boost8optionalIPK7DexTypeEEPS2_(ptr noundef nonnull align 8 dereferenceable(56) %0, i8 %332, ptr %333, ptr noundef %334)
  br label %335

335:                                              ; preds = %329, %327
  %.0101 = phi i64 [ 1, %329 ], [ 0, %327 ]
  %336 = tail call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  %337 = icmp eq i16 %336, 92
  br i1 %337, label %338, label %356

338:                                              ; preds = %335
  %339 = tail call noundef i64 @_ZNK11DexTypeList4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %280)
  %340 = icmp eq i64 %339, 1
  br i1 %340, label %342, label %341

341:                                              ; preds = %338
  tail call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.10, i32 noundef 1667, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentE, i32 noundef 2, ptr noundef nonnull @.str.23) #10
  unreachable

342:                                              ; preds = %338
  br i1 %.not112.not, label %345, label %.preheader

.preheader:                                       ; preds = %342
  %343 = tail call noundef i64 @_ZNK13IRInstruction9srcs_sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  %344 = icmp ugt i64 %343, 1
  br i1 %344, label %.lr.ph132, label %.loopexit129

345:                                              ; preds = %342
  tail call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.10, i32 noundef 1668, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentE, i32 noundef 2, ptr noundef nonnull @.str.23) #10
  unreachable

.lr.ph132:                                        ; preds = %.preheader, %.lr.ph132
  %.1102131 = phi i64 [ %353, %.lr.ph132 ], [ 1, %.preheader ]
  %346 = trunc i64 %.1102131 to i16
  %347 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext %346)
  tail call void @_ZNK13IRTypeChecker16assume_referenceEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef %2, i32 noundef %347, i1 noundef zeroext false)
  %348 = tail call { i8, ptr } @_ZNK14type_inference15TypeEnvironment12get_dex_typeEj(ptr noundef nonnull align 8 dereferenceable(48) %2, i32 noundef %347)
  %349 = extractvalue { i8, ptr } %348, 0
  %350 = extractvalue { i8, ptr } %348, 1
  %351 = tail call noundef ptr @_ZNK11DexTypeList2atEm(ptr noundef nonnull align 8 dereferenceable(24) %280, i64 noundef 0)
  %352 = tail call noundef ptr @_ZN4type22get_array_element_typeEPK7DexType(ptr noundef %351)
  tail call void @_ZNK13IRTypeChecker17assume_assignableEN5boost8optionalIPK7DexTypeEEPS2_(ptr noundef nonnull align 8 dereferenceable(56) %0, i8 %349, ptr %350, ptr noundef %352)
  %353 = add nuw i64 %.1102131, 1
  %354 = tail call noundef i64 @_ZNK13IRInstruction9srcs_sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %1)
  %355 = icmp ult i64 %353, %354
  br i1 %355, label %.lr.ph132, label %.loopexit129, !llvm.loop !23

356:                                              ; preds = %335
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #9
  %357 = tail call ptr @_ZNK11DexTypeList5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %280)
  store ptr %357, ptr %20, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #9
  %358 = tail call ptr @_ZNK11DexTypeList3endEv(ptr noundef nonnull align 8 dereferenceable(24) %280)
  store ptr %358, ptr %21, align 8
  %359 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKP7DexTypeSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %21) #9
  br i1 %359, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %401, %356
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #9
  %.pre139.pre140.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %.loopexit129

.lr.ph:                                           ; preds = %356, %401
  %.2103130 = phi i64 [ %.3104, %401 ], [ %.0101, %356 ]
  %360 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP7DexTypeSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #9
  %361 = load ptr, ptr %360, align 8, !tbaa !5
  %362 = call noundef zeroext i1 @_ZN4type9is_objectEPK7DexType(ptr noundef %361)
  br i1 %362, label %363, label %372

363:                                              ; preds = %.lr.ph
  %364 = load ptr, ptr %4, align 8, !tbaa !5
  %365 = trunc i64 %.2103130 to i16
  %366 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %364, i16 noundef zeroext %365)
  %367 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZNK13IRTypeChecker16assume_referenceEPN14type_inference15TypeEnvironmentEjb(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef %367, i32 noundef %366, i1 noundef zeroext false)
  %368 = load ptr, ptr %5, align 8, !tbaa !5
  %369 = call { i8, ptr } @_ZNK14type_inference15TypeEnvironment12get_dex_typeEj(ptr noundef nonnull align 8 dereferenceable(48) %368, i32 noundef %366)
  %370 = extractvalue { i8, ptr } %369, 0
  %371 = extractvalue { i8, ptr } %369, 1
  call void @_ZNK13IRTypeChecker17assume_assignableEN5boost8optionalIPK7DexTypeEEPS2_(ptr noundef nonnull align 8 dereferenceable(56) %0, i8 %370, ptr %371, ptr noundef %361)
  br label %401

372:                                              ; preds = %.lr.ph
  %373 = call noundef zeroext i1 @_ZN4type11is_integralEPK7DexType(ptr noundef %361)
  br i1 %373, label %374, label %379

374:                                              ; preds = %372
  %375 = load ptr, ptr %5, align 8, !tbaa !5
  %376 = load ptr, ptr %4, align 8, !tbaa !5
  %377 = trunc i64 %.2103130 to i16
  %378 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %376, i16 noundef zeroext %377)
  call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %375, i32 noundef %378)
  br label %401

379:                                              ; preds = %372
  %380 = call noundef zeroext i1 @_ZN4type7is_longEPK7DexType(ptr noundef %361)
  br i1 %380, label %381, label %386

381:                                              ; preds = %379
  %382 = load ptr, ptr %5, align 8, !tbaa !5
  %383 = load ptr, ptr %4, align 8, !tbaa !5
  %384 = trunc i64 %.2103130 to i16
  %385 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %383, i16 noundef zeroext %384)
  call void @_ZN12_GLOBAL__N_111assume_longEPN14type_inference15TypeEnvironmentEj(ptr noundef %382, i32 noundef %385)
  br label %401

386:                                              ; preds = %379
  %387 = call noundef zeroext i1 @_ZN4type8is_floatEPK7DexType(ptr noundef %361)
  br i1 %387, label %388, label %393

388:                                              ; preds = %386
  %389 = load ptr, ptr %5, align 8, !tbaa !5
  %390 = load ptr, ptr %4, align 8, !tbaa !5
  %391 = trunc i64 %.2103130 to i16
  %392 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %390, i16 noundef zeroext %391)
  call void @_ZN12_GLOBAL__N_112assume_floatEPN14type_inference15TypeEnvironmentEj(ptr noundef %389, i32 noundef %392)
  br label %401

393:                                              ; preds = %386
  %394 = call noundef zeroext i1 @_ZN4type9is_doubleEPK7DexType(ptr noundef %361)
  br i1 %394, label %396, label %395

395:                                              ; preds = %393
  call void (ptr, ptr, i32, ptr, i32, ptr, ...) @_Z11assert_failPKcS0_jS0_10RedexErrorS0_z(ptr noundef nonnull @.str.32, ptr noundef nonnull @.str.10, i32 noundef 1701, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentE, i32 noundef 2, ptr noundef nonnull @.str.23) #10
  unreachable

396:                                              ; preds = %393
  %397 = load ptr, ptr %5, align 8, !tbaa !5
  %398 = load ptr, ptr %4, align 8, !tbaa !5
  %399 = trunc i64 %.2103130 to i16
  %400 = call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %398, i16 noundef zeroext %399)
  call void @_ZN12_GLOBAL__N_113assume_doubleEPN14type_inference15TypeEnvironmentEj(ptr noundef %397, i32 noundef %400)
  br label %401

401:                                              ; preds = %396, %388, %381, %374, %363
  %.3104 = add i64 %.2103130, 1
  %402 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKP7DexTypeSt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #9
  %403 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKP7DexTypeSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %21) #9
  br i1 %403, label %.lr.ph, label %._crit_edge

.loopexit129:                                     ; preds = %.lr.ph132, %.preheader, %._crit_edge
  %.pre139.pre140 = phi ptr [ %1, %.preheader ], [ %.pre139.pre140.pre, %._crit_edge ], [ %1, %.lr.ph132 ]
  %404 = getelementptr inbounds i8, ptr %0, i64 8
  %405 = load i8, ptr %404, align 8, !tbaa !24, !range !25, !noundef !26
  %406 = trunc nuw i8 %405 to i1
  br i1 %406, label %407, label %412

407:                                              ; preds = %.loopexit129
  %408 = call noundef i32 @_Z16opcode_to_searchPK13IRInstruction(ptr noundef %.pre139.pre140)
  %409 = load ptr, ptr %0, align 8, !tbaa !9
  %410 = call noundef ptr @_Z14resolve_methodP12DexMethodRef12MethodSearchPK9DexMethod(ptr noundef nonnull %278, i32 noundef %408, ptr noundef %409)
  %411 = load ptr, ptr %0, align 8, !tbaa !9
  call void @_ZN12_GLOBAL__N_115validate_accessI9DexMethodEEvPKS1_PKT_(ptr noundef %411, ptr noundef %410)
  %.pre139.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %412

412:                                              ; preds = %407, %.loopexit129
  %.pre139 = phi ptr [ %.pre139.pre, %407 ], [ %.pre139.pre140, %.loopexit129 ]
  %413 = getelementptr inbounds i8, ptr %0, i64 9
  %414 = load i8, ptr %413, align 1, !tbaa !27, !range !25, !noundef !26
  %415 = trunc nuw i8 %414 to i1
  br i1 %415, label %416, label %421

416:                                              ; preds = %412
  %417 = call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %.pre139)
  %418 = icmp eq i16 %417, 88
  br i1 %418, label %419, label %._crit_edge138

._crit_edge138:                                   ; preds = %416
  %.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %421

419:                                              ; preds = %416
  %420 = load ptr, ptr %0, align 8, !tbaa !9
  call void @_ZN12_GLOBAL__N_121validate_invoke_superEPK9DexMethodPK12DexMethodRef(ptr noundef %420, ptr noundef nonnull %278)
  br label %445

421:                                              ; preds = %._crit_edge138, %412
  %422 = phi ptr [ %.pre, %._crit_edge138 ], [ %.pre139, %412 ]
  %423 = call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %422)
  %424 = icmp eq i16 %423, 87
  br i1 %424, label %425, label %427

425:                                              ; preds = %421
  %426 = load ptr, ptr %0, align 8, !tbaa !9
  call void @_ZN12_GLOBAL__N_123validate_invoke_virtualEPK9DexMethodPK12DexMethodRef(ptr noundef %426, ptr noundef nonnull %278)
  br label %445

427:                                              ; preds = %421
  %428 = load ptr, ptr %4, align 8, !tbaa !5
  %429 = call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %428)
  %430 = icmp eq i16 %429, 89
  br i1 %430, label %431, label %433

431:                                              ; preds = %427
  %432 = load ptr, ptr %0, align 8, !tbaa !9
  call void @_ZN12_GLOBAL__N_122validate_invoke_directEPK9DexMethodPK12DexMethodRef(ptr noundef %432, ptr noundef nonnull %278)
  br label %445

433:                                              ; preds = %427
  %434 = load ptr, ptr %4, align 8, !tbaa !5
  %435 = call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %434)
  %436 = icmp eq i16 %435, 90
  br i1 %436, label %437, label %439

437:                                              ; preds = %433
  %438 = load ptr, ptr %0, align 8, !tbaa !9
  call void @_ZN12_GLOBAL__N_122validate_invoke_staticEPK9DexMethodPK12DexMethodRef(ptr noundef %438, ptr noundef nonnull %278)
  br label %445

439:                                              ; preds = %433
  %440 = load ptr, ptr %4, align 8, !tbaa !5
  %441 = call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %440)
  %442 = icmp eq i16 %441, 91
  br i1 %442, label %443, label %445

443:                                              ; preds = %439
  %444 = load ptr, ptr %0, align 8, !tbaa !9
  call void @_ZN12_GLOBAL__N_125validate_invoke_interfaceEPK9DexMethodPK12DexMethodRef(ptr noundef %444, ptr noundef nonnull %278)
  br label %445

445:                                              ; preds = %425, %437, %443, %439, %431, %419
  call void @_ZN12_GLOBAL__N_133validate_invoke_class_initializerEPK12DexMethodRef(ptr noundef nonnull %278)
  %446 = load ptr, ptr %4, align 8, !tbaa !5
  %447 = call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %446)
  call void @_ZN12_GLOBAL__N_134validate_invoke_direct_constructorEPK12DexMethodRef8IROpcode(ptr noundef nonnull %278, i16 noundef zeroext %447)
  br label %.loopexit

448:                                              ; preds = %3, %3
  %449 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %449)
  br label %.loopexit

450:                                              ; preds = %3, %3
  %451 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZN12_GLOBAL__N_111assume_longEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %451)
  br label %.loopexit

452:                                              ; preds = %3
  %453 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZN12_GLOBAL__N_112assume_floatEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %453)
  br label %.loopexit

454:                                              ; preds = %3
  %455 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZN12_GLOBAL__N_113assume_doubleEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %455)
  br label %.loopexit

456:                                              ; preds = %3, %3, %3
  %457 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %457)
  br label %.loopexit

458:                                              ; preds = %3
  %459 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZN12_GLOBAL__N_111assume_longEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %459)
  br label %.loopexit

460:                                              ; preds = %3
  %461 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZN12_GLOBAL__N_112assume_floatEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %461)
  br label %.loopexit

462:                                              ; preds = %3
  %463 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZN12_GLOBAL__N_113assume_doubleEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %463)
  br label %.loopexit

464:                                              ; preds = %3
  %465 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %465)
  br label %.loopexit

466:                                              ; preds = %3
  %467 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZN12_GLOBAL__N_112assume_floatEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %467)
  br label %.loopexit

468:                                              ; preds = %3
  %469 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZN12_GLOBAL__N_113assume_doubleEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %469)
  br label %.loopexit

470:                                              ; preds = %3
  %471 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %471)
  br label %.loopexit

472:                                              ; preds = %3
  %473 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZN12_GLOBAL__N_111assume_longEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %473)
  br label %.loopexit

474:                                              ; preds = %3
  %475 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZN12_GLOBAL__N_113assume_doubleEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %475)
  br label %.loopexit

476:                                              ; preds = %3
  %477 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %477)
  br label %.loopexit

478:                                              ; preds = %3
  %479 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZN12_GLOBAL__N_111assume_longEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %479)
  br label %.loopexit

480:                                              ; preds = %3
  %481 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZN12_GLOBAL__N_112assume_floatEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %481)
  br label %.loopexit

482:                                              ; preds = %3, %3, %3, %3, %3, %3, %3, %3, %3
  %483 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %483)
  %484 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 1)
  tail call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %484)
  br label %.loopexit

485:                                              ; preds = %3, %3
  %486 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %486)
  %487 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 1)
  tail call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %487)
  br label %.loopexit

488:                                              ; preds = %3, %3, %3, %3, %3, %3
  %489 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZN12_GLOBAL__N_111assume_longEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %489)
  %490 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 1)
  tail call void @_ZN12_GLOBAL__N_111assume_longEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %490)
  br label %.loopexit

491:                                              ; preds = %3, %3
  %492 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZN12_GLOBAL__N_111assume_longEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %492)
  %493 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 1)
  tail call void @_ZN12_GLOBAL__N_111assume_longEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %493)
  br label %.loopexit

494:                                              ; preds = %3, %3, %3
  %495 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZN12_GLOBAL__N_111assume_longEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %495)
  %496 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 1)
  tail call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %496)
  br label %.loopexit

497:                                              ; preds = %3, %3, %3, %3, %3
  %498 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZN12_GLOBAL__N_112assume_floatEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %498)
  %499 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 1)
  tail call void @_ZN12_GLOBAL__N_112assume_floatEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %499)
  br label %.loopexit

500:                                              ; preds = %3, %3, %3, %3, %3
  %501 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZN12_GLOBAL__N_113assume_doubleEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %501)
  %502 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 1)
  tail call void @_ZN12_GLOBAL__N_113assume_doubleEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %502)
  br label %.loopexit

503:                                              ; preds = %3, %3, %3, %3, %3, %3, %3, %3, %3
  %504 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %504)
  br label %.loopexit

505:                                              ; preds = %3, %3
  %506 = tail call noundef i32 @_ZNK13IRInstruction3srcEt(ptr noundef nonnull align 8 dereferenceable(32) %1, i16 noundef zeroext 0)
  tail call void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef %2, i32 noundef %506)
  br label %.loopexit

.loopexit:                                        ; preds = %.lr.ph135.split, %.lr.ph135.split.us, %95, %260, %261, %505, %503, %500, %497, %494, %491, %488, %485, %482, %480, %478, %476, %474, %472, %470, %468, %466, %464, %462, %460, %458, %456, %454, %452, %450, %448, %445, %270, %264, %262, %242, %228, %219, %211, %197, %185, %177, %171, %164, %158, %151, %146, %141, %136, %131, %129, %127, %124, %121, %118, %115, %112, %110, %108, %89, %87, %85, %83, %82, %34, %32, %31, %30, %29, %27, %25, %23, %3
  %507 = load ptr, ptr %4, align 8, !tbaa !5
  %508 = call noundef zeroext i1 @_ZNK13IRInstruction9has_fieldEv(ptr noundef nonnull align 8 dereferenceable(32) %507)
  br i1 %508, label %509, label %522

509:                                              ; preds = %.loopexit
  %510 = getelementptr inbounds i8, ptr %0, i64 8
  %511 = load i8, ptr %510, align 8, !tbaa !24, !range !25, !noundef !26
  %512 = trunc nuw i8 %511 to i1
  br i1 %512, label %513, label %522

513:                                              ; preds = %509
  %514 = load ptr, ptr %4, align 8, !tbaa !5
  %515 = call noundef zeroext i16 @_ZNK13IRInstruction6opcodeEv(ptr noundef nonnull align 8 dereferenceable(32) %514)
  %516 = call noundef zeroext i1 @_ZN6opcode15is_an_sfield_opE8IROpcode(i16 noundef zeroext %515)
  %not. = xor i1 %516, true
  %517 = zext i1 %not. to i32
  %518 = load ptr, ptr %4, align 8, !tbaa !5
  %519 = call noundef ptr @_ZNK13IRInstruction9get_fieldEv(ptr noundef nonnull align 8 dereferenceable(32) %518)
  %520 = call noundef ptr @_Z13resolve_fieldPK11DexFieldRef11FieldSearch(ptr noundef %519, i32 noundef %517)
  %521 = load ptr, ptr %0, align 8, !tbaa !9
  call void @_ZN12_GLOBAL__N_115validate_accessI8DexFieldEEvPK9DexMethodPKT_(ptr noundef %521, ptr noundef %520)
  br label %522

522:                                              ; preds = %513, %509, %.loopexit
  ret void

523:                                              ; preds = %326, %81
  %.pn109.pn.pn = phi { ptr, i32 } [ %.pn109.pn, %326 ], [ %.pn114.pn, %81 ]
  resume { ptr, i32 } %.pn109.pn.pn

524:                                              ; preds = %316, %74
  unreachable
}

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK13IRTypeChecker17assume_assignableEN5boost8optionalIPK7DexTypeEEPS2_(ptr noundef nonnull align 8 dereferenceable(56), i8, ptr, ptr noundef) local_unnamed_addr #3 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 #5 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_124check_is_assignable_fromEPK7DexTypeS2_b(ptr noundef, ptr noundef, i1 noundef zeroext) local_unnamed_addr #3

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoPK7DexType(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #6

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_121TypeCheckingExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #3 align 2

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

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

declare void @__cxa_free_exception(ptr) local_unnamed_addr

; 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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_118assume_wide_scalarEPN14type_inference15TypeEnvironmentEj(ptr noundef, i32 noundef) local_unnamed_addr #3

; 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 #3 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 @_ZNK8DexProto9get_rtypeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_126is_inference_fallback_typeEPK7DexType(ptr noundef) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN5boostlsIcSt11char_traitsIcEPK7DexTypeEERSt13basic_ostreamIT_T0_ESA_RKNS_8optionalIT1_EE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_114assume_integerEPN14type_inference15TypeEnvironmentEj(ptr noundef, i32 noundef) local_unnamed_addr #3

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

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

declare noundef zeroext i1 @_ZN4type9is_objectEPK7DexType(ptr noundef) local_unnamed_addr #6

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_112assume_floatEPN14type_inference15TypeEnvironmentEj(ptr noundef, i32 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_113assume_doubleEPN14type_inference15TypeEnvironmentEj(ptr noundef, i32 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_111assume_longEPN14type_inference15TypeEnvironmentEj(ptr noundef, i32 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_117assume_comparableEPN14type_inference15TypeEnvironmentEjj(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_127assume_comparable_with_zeroEPN14type_inference15TypeEnvironmentEj(ptr noundef, i32 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZN12_GLOBAL__N_112assume_arrayIZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentEE3$_0EEvS6_jRKT_"(ptr noundef, i32 noundef, ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZN12_GLOBAL__N_112assume_arrayIZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentEE3$_1EEvS6_jRKT_"(ptr noundef, i32 noundef, ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZN12_GLOBAL__N_112assume_arrayIZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentEE3$_2EEvS6_jRKT_"(ptr noundef, i32 noundef, ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZN12_GLOBAL__N_112assume_arrayIZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentEE3$_3EEvS6_jRKT_"(ptr noundef, i32 noundef, ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZN12_GLOBAL__N_112assume_arrayIZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentEE3$_4EEvS6_jRKT_"(ptr noundef, i32 noundef, ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZN12_GLOBAL__N_112assume_arrayIZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentEE3$_5EEvS6_jRKT_"(ptr noundef, i32 noundef, ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZN12_GLOBAL__N_112assume_arrayIZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentEE3$_6EEvS6_jRKT_"(ptr noundef, i32 noundef, ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZN12_GLOBAL__N_112assume_arrayIZNK13IRTypeChecker17check_instructionEP13IRInstructionPN14type_inference15TypeEnvironmentEE3$_7EEvS6_jRKT_"(ptr noundef, i32 noundef, ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #3

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

; 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 zeroext i1 @_ZNK13IRInstruction9has_fieldEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3 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

declare noundef zeroext i1 @_ZN4type8is_floatEPK7DexType(ptr noundef) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZNK13IRInstruction10get_methodEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3 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 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 hidden void @_ZN12_GLOBAL__N_127validate_invoke_polymorphicEPK12DexMethodRef(ptr noundef) local_unnamed_addr #3

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

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

declare noundef ptr @_ZN4type22get_array_element_typeEPK7DexType(ptr noundef) local_unnamed_addr #6

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

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

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

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

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

declare noundef zeroext i1 @_ZN4type11is_integralEPK7DexType(ptr noundef) local_unnamed_addr #6

declare noundef zeroext i1 @_ZN4type7is_longEPK7DexType(ptr noundef) local_unnamed_addr #6

declare noundef zeroext i1 @_ZN4type9is_doubleEPK7DexType(ptr noundef) local_unnamed_addr #6

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_Z14resolve_methodP12DexMethodRef12MethodSearchPK9DexMethod(ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_Z16opcode_to_searchPK13IRInstruction(ptr noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_115validate_accessI9DexMethodEEvPKS1_PKT_(ptr noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_121validate_invoke_superEPK9DexMethodPK12DexMethodRef(ptr noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_123validate_invoke_virtualEPK9DexMethodPK12DexMethodRef(ptr noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_122validate_invoke_directEPK9DexMethodPK12DexMethodRef(ptr noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_122validate_invoke_staticEPK9DexMethodPK12DexMethodRef(ptr noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_125validate_invoke_interfaceEPK9DexMethodPK12DexMethodRef(ptr noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_133validate_invoke_class_initializerEPK12DexMethodRef(ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_134validate_invoke_direct_constructorEPK12DexMethodRef8IROpcode(ptr noundef, i16 noundef zeroext) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN6opcode15is_an_sfield_opE8IROpcode(i16 noundef zeroext) local_unnamed_addr #8

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_Z13resolve_fieldPK11DexFieldRef11FieldSearch(ptr noundef, i32 noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_115validate_accessI8DexFieldEEvPK9DexMethodPKT_(ptr noundef, ptr noundef) local_unnamed_addr #3

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 0}
!10 = !{!"_ZTS13IRTypeChecker", !6, i64 0, !11, i64 8, !11, i64 9, !11, i64 10, !11, i64 11, !11, i64 12, !11, i64 13, !11, i64 14, !12, i64 16, !15, i64 48}
!11 = !{!"bool", !7, i64 0}
!12 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !13, i64 0, !14, i64 8, !7, i64 16}
!13 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!14 = !{!"long", !7, i64 0}
!15 = !{!"_ZTSSt10unique_ptrIN14type_inference13TypeInferenceESt14default_deleteIS1_EE", !16, i64 0}
!16 = !{!"_ZTSSt15__uniq_ptr_dataIN14type_inference13TypeInferenceESt14default_deleteIS1_ELb1ELb1EE", !17, i64 0}
!17 = !{!"_ZTSSt15__uniq_ptr_implIN14type_inference13TypeInferenceESt14default_deleteIS1_EE", !18, i64 0}
!18 = !{!"_ZTSSt5tupleIJPN14type_inference13TypeInferenceESt14default_deleteIS1_EEE", !19, i64 0}
!19 = !{!"_ZTSSt11_Tuple_implILm0EJPN14type_inference13TypeInferenceESt14default_deleteIS1_EEE", !20, i64 0}
!20 = !{!"_ZTSSt10_Head_baseILm0EPN14type_inference13TypeInferenceELb0EE", !6, i64 0}
!21 = distinct !{!21, !22}
!22 = !{!"llvm.loop.mustprogress"}
!23 = distinct !{!23, !22}
!24 = !{!10, !11, i64 8}
!25 = !{i8 0, i8 2}
!26 = !{}
!27 = !{!10, !11, i64 9}


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