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

; 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.std::vector.196" = type { %"struct.std::_Vector_base.197" }
%"struct.std::_Vector_base.197" = type { %"struct.std::_Vector_base<DexClass *, std::allocator<DexClass *>>::_Vector_impl" }
%"struct.std::_Vector_base<DexClass *, std::allocator<DexClass *>>::_Vector_impl" = type { %"struct.std::_Vector_base<DexClass *, std::allocator<DexClass *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<DexClass *, std::allocator<DexClass *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.init_classes::InitClassesWithSideEffects" = type <{ %class.InsertOnlyConcurrentMap, %"struct.std::atomic.208", %"class.std::vector.215", i8, [7 x i8] }>
%class.InsertOnlyConcurrentMap = type { %class.ConcurrentContainer }
%class.ConcurrentContainer = type { ptr, [83 x %"class.cc_impl::ConcurrentHashtable"] }
%"class.cc_impl::ConcurrentHashtable" = type { %"struct.std::atomic.206", %"struct.std::atomic.208", %"struct.std::atomic.210", %"struct.std::atomic.212" }
%"struct.std::atomic.206" = type { %"struct.std::__atomic_base.207" }
%"struct.std::__atomic_base.207" = type { ptr }
%"struct.std::atomic.210" = type { %"struct.std::__atomic_base.211" }
%"struct.std::__atomic_base.211" = type { i8 }
%"struct.std::atomic.212" = type { %"struct.std::__atomic_base.213" }
%"struct.std::__atomic_base.213" = type { ptr }
%"struct.std::atomic.208" = type { %"struct.std::__atomic_base.209" }
%"struct.std::__atomic_base.209" = type { i64 }
%"class.std::vector.215" = type { %"struct.std::_Vector_base.216" }
%"struct.std::_Vector_base.216" = type { %"struct.std::_Vector_base<const DexClass *, std::allocator<const DexClass *>>::_Vector_impl" }
%"struct.std::_Vector_base<const DexClass *, std::allocator<const DexClass *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const DexClass *, std::allocator<const DexClass *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const DexClass *, std::allocator<const DexClass *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.ConcurrentSet = type { %class.ConcurrentContainer.220 }
%class.ConcurrentContainer.220 = type { ptr, [83 x %"class.cc_impl::ConcurrentHashtable.221"] }
%"class.cc_impl::ConcurrentHashtable.221" = type { %"struct.std::atomic.222", %"struct.std::atomic.208", %"struct.std::atomic.210", %"struct.std::atomic.224" }
%"struct.std::atomic.222" = type { %"struct.std::__atomic_base.223" }
%"struct.std::__atomic_base.223" = type { ptr }
%"struct.std::atomic.224" = type { %"struct.std::__atomic_base.225" }
%"struct.std::__atomic_base.225" = type { ptr }
%"class.std::vector.227" = type { %"struct.std::_Vector_base.228" }
%"struct.std::_Vector_base.228" = type { %"struct.std::_Vector_base<std::vector<DexClass *> *, std::allocator<std::vector<DexClass *> *>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<DexClass *> *, std::allocator<std::vector<DexClass *> *>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<DexClass *> *, std::allocator<std::vector<DexClass *> *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<DexClass *> *, std::allocator<std::vector<DexClass *> *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.UnorderedMap = type { %"class.std::unordered_map" }
%"class.std::unordered_map" = type { %"class.std::_Hashtable.233" }
%"class.std::_Hashtable.233" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"class.__gnu_cxx::__normal_iterator.252" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.263" = type { ptr }
%class.anon.272 = type { ptr }
%class.anon.273 = type { ptr, ptr, ptr }
%class.AtomicMap = type { %class.ConcurrentContainer.274 }
%class.ConcurrentContainer.274 = type { ptr, [83 x %"class.cc_impl::ConcurrentHashtable.275"] }
%"class.cc_impl::ConcurrentHashtable.275" = type { %"struct.std::atomic.276", %"struct.std::atomic.208", %"struct.std::atomic.210", %"struct.std::atomic.278" }
%"struct.std::atomic.276" = type { %"struct.std::__atomic_base.277" }
%"struct.std::__atomic_base.277" = type { ptr }
%"struct.std::atomic.278" = type { %"struct.std::__atomic_base.279" }
%"struct.std::__atomic_base.279" = type { ptr }
%struct.Timer = type <{ %"class.std::__cxx11::basic_string", %"class.std::chrono::time_point", i8, [7 x i8] }>
%"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::chrono::time_point" = type { %"class.std::chrono::duration" }
%"class.std::chrono::duration" = type { i64 }
%class.ConcurrentMap = type { %class.ConcurrentContainer.281, [83 x %"class.std::mutex"] }
%class.ConcurrentContainer.281 = type { ptr, [83 x %"class.cc_impl::ConcurrentHashtable.282"] }
%"class.cc_impl::ConcurrentHashtable.282" = type { %"struct.std::atomic.283", %"struct.std::atomic.208", %"struct.std::atomic.210", %"struct.std::atomic.285" }
%"struct.std::atomic.283" = type { %"struct.std::__atomic_base.284" }
%"struct.std::__atomic_base.284" = type { ptr }
%"struct.std::atomic.285" = type { %"struct.std::__atomic_base.286" }
%"struct.std::__atomic_base.286" = type { ptr }
%"class.std::mutex" = type { %"class.std::__mutex_base" }
%"class.std::__mutex_base" = type { %union.pthread_mutex_t }
%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }
%class.anon.310 = type { i8 }
%"struct.method_splitting_impl::Config" = type { i8, i64, i64, i64, i64, i64, i64, i64, i64, float, float, float, i64, i64, i64, i64, i64, i64, %"class.std::vector.258" }
%"class.std::vector.258" = type { %"struct.std::_Vector_base.259" }
%"struct.std::_Vector_base.259" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.method_splitting_impl::Stats" = type { %"struct.std::atomic.208", %"struct.std::atomic.208", %"struct.std::atomic.208", %"struct.std::atomic.208", %"struct.std::atomic.208", %"struct.std::atomic.208", %"struct.std::atomic.208", %"struct.std::atomic.208", %"struct.std::atomic.208", %"struct.std::atomic.208", %"struct.std::atomic.208", %"struct.std::atomic.208", %class.UnorderedSet.288, %"struct.std::atomic.208", i64 }
%class.UnorderedSet.288 = type { %"class.std::unordered_set.290" }
%"class.std::unordered_set.290" = type { %"class.std::_Hashtable.291" }
%"class.std::_Hashtable.291" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }

@.str.15 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [28 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN21method_splitting_impl23split_methods_in_storesERSt6vectorI8DexStoreSaIS1_EEiRKNS_6ConfigEbmmPNS_5StatsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP23InsertOnlyConcurrentSetIPK9DexMethodSt4hashISL_ESt8equal_toISL_ELm83EEP23InsertOnlyConcurrentMapIPSJ_ST_SM_IST_ESO_IST_ELm83EEPSS_IST_mSU_SV_Lm83EE(ptr noundef nonnull align 8 dereferenceable(24) %0, i32 noundef %1, ptr noundef nonnull align 8 dereferenceable(160) %2, i1 noundef zeroext %3, i64 noundef %4, i64 noundef %5, ptr noundef %6, ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef %8, ptr noundef %9, ptr noundef %10) #2 personality ptr @__gxx_personality_v0 {
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca ptr, align 8
  %15 = alloca i8, align 1
  %16 = alloca i64, align 8
  %17 = alloca i64, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca %"class.std::vector.196", align 8
  %24 = alloca %"class.init_classes::InitClassesWithSideEffects", align 8
  %25 = alloca ptr, align 8
  %26 = alloca i32, align 4
  %27 = alloca %class.ConcurrentSet, align 8
  %28 = alloca %"class.std::vector.227", align 8
  %29 = alloca %class.UnorderedMap, align 8
  %30 = alloca ptr, align 8
  %31 = alloca %"class.__gnu_cxx::__normal_iterator.252", align 8
  %32 = alloca %"class.__gnu_cxx::__normal_iterator.252", align 8
  %33 = alloca i32, align 4
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca %"class.__gnu_cxx::__normal_iterator.263", align 8
  %37 = alloca %"class.__gnu_cxx::__normal_iterator.263", align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca %class.anon.272, align 8
  %42 = alloca %class.anon.273, align 8
  %43 = alloca i64, align 8
  %44 = alloca %class.AtomicMap, align 8
  %45 = alloca %struct.Timer, align 8
  %46 = alloca %"class.std::__cxx11::basic_string", align 8
  %47 = alloca %"class.std::__cxx11::basic_string", align 8
  %48 = alloca %class.ConcurrentMap, align 8
  %49 = alloca %class.ConcurrentSet, align 8
  %50 = alloca %class.ConcurrentSet, align 8
  %51 = alloca %class.anon.310, align 1
  store ptr %0, ptr %12, align 8, !tbaa !5
  store i32 %1, ptr %13, align 4, !tbaa !9
  store ptr %2, ptr %14, align 8, !tbaa !5
  %52 = zext i1 %3 to i8
  store i8 %52, ptr %15, align 1, !tbaa !11
  store i64 %4, ptr %16, align 8, !tbaa !13
  store i64 %5, ptr %17, align 8, !tbaa !13
  store ptr %6, ptr %18, align 8, !tbaa !5
  store ptr %7, ptr %19, align 8, !tbaa !5
  store ptr %8, ptr %20, align 8, !tbaa !5
  store ptr %9, ptr %21, align 8, !tbaa !5
  store ptr %10, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %23) #7
  %53 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_Z17build_class_scopeRKSt6vectorI8DexStoreSaIS0_EE(ptr dead_on_unwind writable sret(%"class.std::vector.196") align 8 %23, ptr noundef nonnull align 8 dereferenceable(24) %53)
  call void @llvm.lifetime.start.p0(i64 2704, ptr %24) #7
  %54 = load i8, ptr %15, align 1, !tbaa !11, !range !15, !noundef !16
  %55 = trunc i8 %54 to i1
  invoke void @_ZN12init_classes26InitClassesWithSideEffectsC1ERKSt6vectorIP8DexClassSaIS3_EEbPKN21method_override_graph5GraphE(ptr noundef nonnull align 8 dereferenceable(2697) %24, ptr noundef nonnull align 8 dereferenceable(24) %23, i1 noundef zeroext %55, ptr noundef null)
          to label %56 unwind label %68

56:                                               ; preds = %11
  call void @llvm.lifetime.start.p0(i64 2664, ptr %27) #7
  call void @_ZN13ConcurrentSetIP9DexMethodSt4hashIS1_ESt8equal_toIS1_ELm83EEC2Ev(ptr noundef nonnull align 8 dereferenceable(2664) %27) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %28) #7
  call void @_ZNSt6vectorIPS_IP8DexClassSaIS1_EESaIS4_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #7
  call void @llvm.lifetime.start.p0(i64 56, ptr %29) #7
  invoke void @_ZN12UnorderedMapIPSt6vectorIP8DexClassSaIS2_EESt10unique_ptrIN12_GLOBAL__N_18DexStateESt14default_deleteIS8_EESt4hashIS5_ESt8equal_toIS5_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %29)
          to label %57 unwind label %72

57:                                               ; preds = %56
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #7
  %58 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %58, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #7
  %59 = load ptr, ptr %30, align 8, !tbaa !5
  %60 = call ptr @_ZNSt6vectorI8DexStoreSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %59) #7
  %61 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.252", ptr %31, i32 0, i32 0
  store ptr %60, ptr %61, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #7
  %62 = load ptr, ptr %30, align 8, !tbaa !5
  %63 = call ptr @_ZNSt6vectorI8DexStoreSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %62) #7
  %64 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.252", ptr %32, i32 0, i32 0
  store ptr %63, ptr %64, align 8
  br label %65

65:                                               ; preds = %114, %57
  %66 = call noundef zeroext i1 @_ZN9__gnu_cxxneIP8DexStoreSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef nonnull align 8 dereferenceable(8) %32) #7
  br i1 %66, label %76, label %67

67:                                               ; preds = %65
  store i32 2, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  br label %116

68:                                               ; preds = %11
  %69 = landingpad { ptr, i32 }
          cleanup
  %70 = extractvalue { ptr, i32 } %69, 0
  store ptr %70, ptr %25, align 8
  %71 = extractvalue { ptr, i32 } %69, 1
  store i32 %71, ptr %26, align 4
  br label %228

72:                                               ; preds = %56
  %73 = landingpad { ptr, i32 }
          cleanup
  %74 = extractvalue { ptr, i32 } %73, 0
  store ptr %74, ptr %25, align 8
  %75 = extractvalue { ptr, i32 } %73, 1
  store i32 %75, ptr %26, align 4
  br label %227

76:                                               ; preds = %65
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #7
  %77 = call noundef nonnull align 8 dereferenceable(137) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP8DexStoreSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %31) #7
  store ptr %77, ptr %34, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #7
  %78 = load ptr, ptr %34, align 8, !tbaa !5
  %79 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN8DexStore9get_dexenEv(ptr noundef nonnull align 8 dereferenceable(137) %78)
          to label %80 unwind label %90

80:                                               ; preds = %76
  store ptr %79, ptr %35, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #7
  %81 = load ptr, ptr %35, align 8, !tbaa !5
  %82 = call ptr @_ZNSt6vectorIS_IP8DexClassSaIS1_EESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %81) #7
  %83 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.263", ptr %36, i32 0, i32 0
  store ptr %82, ptr %83, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #7
  %84 = load ptr, ptr %35, align 8, !tbaa !5
  %85 = call ptr @_ZNSt6vectorIS_IP8DexClassSaIS1_EESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %84) #7
  %86 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.263", ptr %37, i32 0, i32 0
  store ptr %85, ptr %86, align 8
  br label %87

87:                                               ; preds = %101, %80
  %88 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt6vectorIP8DexClassSaIS3_EES1_IS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(8) %37) #7
  br i1 %88, label %94, label %89

89:                                               ; preds = %87
  store i32 4, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  br label %113

90:                                               ; preds = %76
  %91 = landingpad { ptr, i32 }
          cleanup
  %92 = extractvalue { ptr, i32 } %91, 0
  store ptr %92, ptr %25, align 8
  %93 = extractvalue { ptr, i32 } %91, 1
  store i32 %93, ptr %26, align 4
  br label %112

94:                                               ; preds = %87
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #7
  %95 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt6vectorIP8DexClassSaIS3_EES1_IS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %36) #7
  store ptr %95, ptr %38, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #7
  %96 = load ptr, ptr %38, align 8, !tbaa !5
  store ptr %96, ptr %39, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIPS_IP8DexClassSaIS1_EESaIS4_EE9push_backEOS4_(ptr noundef nonnull align 8 dereferenceable(24) %28, ptr noundef nonnull align 8 dereferenceable(8) %39)
          to label %97 unwind label %103

97:                                               ; preds = %94
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #7
  %98 = load ptr, ptr %38, align 8, !tbaa !5
  store ptr %98, ptr %40, align 8, !tbaa !5
  %99 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN12UnorderedMapIPSt6vectorIP8DexClassSaIS2_EESt10unique_ptrIN12_GLOBAL__N_18DexStateESt14default_deleteIS8_EESt4hashIS5_ESt8equal_toIS5_EEixEOS5_(ptr noundef nonnull align 8 dereferenceable(56) %29, ptr noundef nonnull align 8 dereferenceable(8) %40)
          to label %100 unwind label %107

100:                                              ; preds = %97
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  br label %101

101:                                              ; preds = %100
  %102 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt6vectorIP8DexClassSaIS3_EES1_IS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %36) #7
  br label %87

103:                                              ; preds = %94
  %104 = landingpad { ptr, i32 }
          cleanup
  %105 = extractvalue { ptr, i32 } %104, 0
  store ptr %105, ptr %25, align 8
  %106 = extractvalue { ptr, i32 } %104, 1
  store i32 %106, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #7
  br label %111

107:                                              ; preds = %97
  %108 = landingpad { ptr, i32 }
          cleanup
  %109 = extractvalue { ptr, i32 } %108, 0
  store ptr %109, ptr %25, align 8
  %110 = extractvalue { ptr, i32 } %108, 1
  store i32 %110, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  br label %111

111:                                              ; preds = %107, %103
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #7
  br label %112

112:                                              ; preds = %111, %90
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  br label %226

113:                                              ; preds = %89
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  br label %114

114:                                              ; preds = %113
  %115 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIP8DexStoreSt6vectorIS1_SaIS1_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %31) #7
  br label %65

116:                                              ; preds = %67
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #7
  %117 = getelementptr inbounds %class.anon.272, ptr %41, i32 0, i32 0
  %118 = load ptr, ptr %14, align 8, !tbaa !5
  store ptr %118, ptr %117, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %42) #7
  %119 = getelementptr inbounds %class.anon.273, ptr %42, i32 0, i32 0
  store ptr %41, ptr %119, align 8, !tbaa !5
  %120 = getelementptr inbounds %class.anon.273, ptr %42, i32 0, i32 1
  store ptr %18, ptr %120, align 8, !tbaa !5
  %121 = getelementptr inbounds %class.anon.273, ptr %42, i32 0, i32 2
  store ptr %27, ptr %121, align 8, !tbaa !5
  %122 = invoke noundef i64 @_ZN14redex_parallel19default_num_threadsEv()
          to label %123 unwind label %143

123:                                              ; preds = %116
  invoke void @"_ZN4walk8parallel4codeISt6vectorIP8DexClassSaIS4_EEZN21method_splitting_impl23split_methods_in_storesERS2_I8DexStoreSaIS8_EEiRKNS7_6ConfigEbmmPNS7_5StatsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP23InsertOnlyConcurrentSetIPK9DexMethodSt4hashISS_ESt8equal_toISS_ELm83EEP23InsertOnlyConcurrentMapIPSQ_S10_ST_IS10_ESV_IS10_ELm83EEPSZ_IS10_mS11_S12_Lm83EEE3$_1EEvRKT_RKT0_m"(ptr noundef nonnull align 8 dereferenceable(24) %23, ptr noundef nonnull align 8 dereferenceable(24) %42, i64 noundef %122)
          to label %124 unwind label %143

124:                                              ; preds = %123
  call void @llvm.lifetime.end.p0(i64 24, ptr %42) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #7
  store i64 0, ptr %43, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 2664, ptr %44) #7
  call void @_ZN9AtomicMapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmSt4hashIS5_ESt8equal_toIS5_ELm83EEC2Ev(ptr noundef nonnull align 8 dereferenceable(2664) %44) #7
  br label %125

125:                                              ; preds = %211, %124
  %126 = invoke noundef zeroext i1 @_ZNK19ConcurrentContainerISt13unordered_setIP9DexMethodSt4hashIS2_ESt8equal_toIS2_ESaIS2_EELm83EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(2664) %27)
          to label %127 unwind label %147

127:                                              ; preds = %125
  br i1 %126, label %134, label %128

128:                                              ; preds = %127
  %129 = load i64, ptr %43, align 8, !tbaa !13
  %130 = load ptr, ptr %14, align 8, !tbaa !5
  %131 = getelementptr inbounds %"struct.method_splitting_impl::Config", ptr %130, i32 0, i32 13
  %132 = load i64, ptr %131, align 8, !tbaa !17
  %133 = icmp ult i64 %129, %132
  br label %134

134:                                              ; preds = %128, %127
  %135 = phi i1 [ false, %127 ], [ %133, %128 ]
  br i1 %135, label %136, label %215

136:                                              ; preds = %134
  br label %137

137:                                              ; preds = %136
  %138 = invoke noundef zeroext i1 @_Z12traceEnabled11TraceModulei(i32 noundef 81, i32 noundef 2)
          to label %139 unwind label %147

139:                                              ; preds = %137
  br i1 %138, label %140, label %151

140:                                              ; preds = %139
  %141 = load i64, ptr %43, align 8, !tbaa !13
  invoke void (i32, i32, i1, ptr, ...) @_Z5trace11TraceModuleibPKcz(i32 noundef 81, i32 noundef 2, i1 noundef zeroext false, ptr noundef @.str.15, i64 noundef %141)
          to label %142 unwind label %147

142:                                              ; preds = %140
  br label %151

143:                                              ; preds = %123, %116
  %144 = landingpad { ptr, i32 }
          cleanup
  %145 = extractvalue { ptr, i32 } %144, 0
  store ptr %145, ptr %25, align 8
  %146 = extractvalue { ptr, i32 } %144, 1
  store i32 %146, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %42) #7
  br label %225

147:                                              ; preds = %140, %137, %125
  %148 = landingpad { ptr, i32 }
          cleanup
  %149 = extractvalue { ptr, i32 } %148, 0
  store ptr %149, ptr %25, align 8
  %150 = extractvalue { ptr, i32 } %148, 1
  store i32 %150, ptr %26, align 4
  br label %224

151:                                              ; preds = %142, %139
  br label %152

152:                                              ; preds = %151
  br label %153

153:                                              ; preds = %152
  call void @llvm.lifetime.start.p0(i64 48, ptr %45) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %46) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %47) #7
  %154 = load i64, ptr %43, align 8, !tbaa !13
  %155 = add i64 %154, 1
  store i64 %155, ptr %43, align 8, !tbaa !13
  invoke void @_ZNSt7__cxx119to_stringEm(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %47, i64 noundef %154)
          to label %156 unwind label %183

156:                                              ; preds = %153
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %46, ptr noundef @.str.16, ptr noundef nonnull align 8 dereferenceable(32) %47)
          to label %157 unwind label %187

157:                                              ; preds = %156
  invoke void @_ZN5TimerC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(41) %45, ptr noundef nonnull align 8 dereferenceable(32) %46, i1 noundef zeroext true)
          to label %158 unwind label %191

158:                                              ; preds = %157
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %46) #7
  call void @llvm.lifetime.start.p0(i64 5984, ptr %48) #7
  %159 = load ptr, ptr %14, align 8, !tbaa !5
  %160 = load ptr, ptr %20, align 8, !tbaa !5
  %161 = load ptr, ptr %22, align 8, !tbaa !5
  invoke void @_ZN21method_splitting_impl41select_splittable_closures_based_on_costsERK13ConcurrentSetIP9DexMethodSt4hashIS2_ESt8equal_toIS2_ELm83EERKNS_6ConfigEP23InsertOnlyConcurrentSetIPKS1_S3_ISF_ES5_ISF_ELm83EEP23InsertOnlyConcurrentMapIS2_mS4_S6_Lm83EE(ptr dead_on_unwind writable sret(%class.ConcurrentMap) align 8 %48, ptr noundef nonnull align 8 dereferenceable(2664) %27, ptr noundef nonnull align 8 dereferenceable(160) %159, ptr noundef %160, ptr noundef %161)
          to label %162 unwind label %197

162:                                              ; preds = %158
  call void @llvm.lifetime.start.p0(i64 2664, ptr %49) #7
  call void @_ZN13ConcurrentSetIP9DexMethodSt4hashIS1_ESt8equal_toIS1_ELm83EEC2Ev(ptr noundef nonnull align 8 dereferenceable(2664) %49) #7
  call void @llvm.lifetime.start.p0(i64 2664, ptr %50) #7
  %163 = load i32, ptr %13, align 4, !tbaa !9
  %164 = load i64, ptr %17, align 8, !tbaa !13
  %165 = load i64, ptr %16, align 8, !tbaa !13
  %166 = load ptr, ptr %19, align 8, !tbaa !5
  %167 = load ptr, ptr %18, align 8, !tbaa !5
  %168 = load ptr, ptr %20, align 8, !tbaa !5
  %169 = load ptr, ptr %21, align 8, !tbaa !5
  invoke void @_ZN12_GLOBAL__N_125split_splittable_closuresERKSt6vectorIPS0_IP8DexClassSaIS2_EESaIS5_EEiRKN12init_classes26InitClassesWithSideEffectsEmmRK13ConcurrentMapIP7DexTypeS0_IN21method_splitting_impl17SplittableClosureESaISI_EESt4hashISG_ESt8equal_toISG_ELm83EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP9AtomicMapISX_mSL_ISX_ESN_ISX_ELm83EEPNSH_5StatsEP12UnorderedMapIS5_St10unique_ptrINS_8DexStateESt14default_deleteIS19_EESL_IS5_ESN_IS5_EEP13ConcurrentSetIP9DexMethodSL_IS1J_ESN_IS1J_ELm83EEP23InsertOnlyConcurrentSetIPKS1I_SL_IS1Q_ESN_IS1Q_ELm83EEP23InsertOnlyConcurrentMapIS1J_S1J_S1K_S1L_Lm83EE(ptr dead_on_unwind writable sret(%class.ConcurrentSet) align 8 %50, ptr noundef nonnull align 8 dereferenceable(24) %28, i32 noundef %163, ptr noundef nonnull align 8 dereferenceable(2697) %24, i64 noundef %164, i64 noundef %165, ptr noundef nonnull align 8 dereferenceable(5984) %48, ptr noundef nonnull align 8 dereferenceable(32) %166, ptr noundef %44, ptr noundef %167, ptr noundef %29, ptr noundef %49, ptr noundef %168, ptr noundef %169)
          to label %170 unwind label %201

170:                                              ; preds = %162
  %171 = call noundef nonnull align 8 dereferenceable(2664) ptr @_ZN13ConcurrentSetIP9DexMethodSt4hashIS1_ESt8equal_toIS1_ELm83EEaSEOS6_(ptr noundef nonnull align 8 dereferenceable(2664) %27, ptr noundef nonnull align 8 dereferenceable(2664) %50) #7
  call void @_ZN19ConcurrentContainerISt13unordered_setIP9DexMethodSt4hashIS2_ESt8equal_toIS2_ESaIS2_EELm83EED2Ev(ptr noundef nonnull align 8 dereferenceable(2664) %50) #7
  call void @llvm.lifetime.end.p0(i64 2664, ptr %50) #7
  %172 = load ptr, ptr %18, align 8, !tbaa !5
  %173 = getelementptr inbounds %"struct.method_splitting_impl::Stats", ptr %172, i32 0, i32 12
  invoke void @_Z25insert_unordered_iterableI12UnorderedSetIP9DexMethodSt4hashIS2_ESt8equal_toIS2_EE13ConcurrentSetIS2_S4_S6_Lm83EEEvRT_RKT0_(ptr noundef nonnull align 8 dereferenceable(56) %173, ptr noundef nonnull align 8 dereferenceable(2664) %49)
          to label %174 unwind label %205

174:                                              ; preds = %170
  br label %175

175:                                              ; preds = %174
  %176 = invoke noundef zeroext i1 @_Z12traceEnabled11TraceModulei(i32 noundef 81, i32 noundef 1)
          to label %177 unwind label %205

177:                                              ; preds = %175
  br i1 %176, label %178, label %209

178:                                              ; preds = %177
  %179 = load i64, ptr %43, align 8, !tbaa !13
  %180 = invoke noundef i64 @_ZNK19ConcurrentContainerISt13unordered_setIP9DexMethodSt4hashIS2_ESt8equal_toIS2_ESaIS2_EELm83EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(2664) %49)
          to label %181 unwind label %205

181:                                              ; preds = %178
  invoke void (i32, i32, i1, ptr, ...) @_Z5trace11TraceModuleibPKcz(i32 noundef 81, i32 noundef 1, i1 noundef zeroext false, ptr noundef @.str.17, i64 noundef %179, i64 noundef %180)
          to label %182 unwind label %205

182:                                              ; preds = %181
  br label %209

183:                                              ; preds = %153
  %184 = landingpad { ptr, i32 }
          cleanup
  %185 = extractvalue { ptr, i32 } %184, 0
  store ptr %185, ptr %25, align 8
  %186 = extractvalue { ptr, i32 } %184, 1
  store i32 %186, ptr %26, align 4
  br label %196

187:                                              ; preds = %156
  %188 = landingpad { ptr, i32 }
          cleanup
  %189 = extractvalue { ptr, i32 } %188, 0
  store ptr %189, ptr %25, align 8
  %190 = extractvalue { ptr, i32 } %188, 1
  store i32 %190, ptr %26, align 4
  br label %195

191:                                              ; preds = %157
  %192 = landingpad { ptr, i32 }
          cleanup
  %193 = extractvalue { ptr, i32 } %192, 0
  store ptr %193, ptr %25, align 8
  %194 = extractvalue { ptr, i32 } %192, 1
  store i32 %194, ptr %26, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #7
  br label %195

195:                                              ; preds = %191, %187
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #7
  br label %196

196:                                              ; preds = %195, %183
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %46) #7
  br label %214

197:                                              ; preds = %158
  %198 = landingpad { ptr, i32 }
          cleanup
  %199 = extractvalue { ptr, i32 } %198, 0
  store ptr %199, ptr %25, align 8
  %200 = extractvalue { ptr, i32 } %198, 1
  store i32 %200, ptr %26, align 4
  br label %213

201:                                              ; preds = %162
  %202 = landingpad { ptr, i32 }
          cleanup
  %203 = extractvalue { ptr, i32 } %202, 0
  store ptr %203, ptr %25, align 8
  %204 = extractvalue { ptr, i32 } %202, 1
  store i32 %204, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 2664, ptr %50) #7
  br label %212

205:                                              ; preds = %181, %178, %175, %170
  %206 = landingpad { ptr, i32 }
          cleanup
  %207 = extractvalue { ptr, i32 } %206, 0
  store ptr %207, ptr %25, align 8
  %208 = extractvalue { ptr, i32 } %206, 1
  store i32 %208, ptr %26, align 4
  br label %212

209:                                              ; preds = %182, %177
  br label %210

210:                                              ; preds = %209
  br label %211

211:                                              ; preds = %210
  call void @_ZN19ConcurrentContainerISt13unordered_setIP9DexMethodSt4hashIS2_ESt8equal_toIS2_ESaIS2_EELm83EED2Ev(ptr noundef nonnull align 8 dereferenceable(2664) %49) #7
  call void @llvm.lifetime.end.p0(i64 2664, ptr %49) #7
  call void @_ZN19ConcurrentContainerISt13unordered_mapIP7DexTypeSt6vectorIN21method_splitting_impl17SplittableClosureESaIS5_EESt4hashIS2_ESt8equal_toIS2_ESaISt4pairIKS2_S7_EEELm83EED2Ev(ptr noundef nonnull align 8 dereferenceable(5984) %48) #7
  call void @llvm.lifetime.end.p0(i64 5984, ptr %48) #7
  call void @_ZN5TimerD1Ev(ptr noundef nonnull align 8 dereferenceable(41) %45) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %45) #7
  br label %125, !llvm.loop !24

212:                                              ; preds = %205, %201
  call void @_ZN19ConcurrentContainerISt13unordered_setIP9DexMethodSt4hashIS2_ESt8equal_toIS2_ESaIS2_EELm83EED2Ev(ptr noundef nonnull align 8 dereferenceable(2664) %49) #7
  call void @llvm.lifetime.end.p0(i64 2664, ptr %49) #7
  call void @_ZN19ConcurrentContainerISt13unordered_mapIP7DexTypeSt6vectorIN21method_splitting_impl17SplittableClosureESaIS5_EESt4hashIS2_ESt8equal_toIS2_ESaISt4pairIKS2_S7_EEELm83EED2Ev(ptr noundef nonnull align 8 dereferenceable(5984) %48) #7
  br label %213

213:                                              ; preds = %212, %197
  call void @llvm.lifetime.end.p0(i64 5984, ptr %48) #7
  call void @_ZN5TimerD1Ev(ptr noundef nonnull align 8 dereferenceable(41) %45) #7
  br label %214

214:                                              ; preds = %213, %196
  call void @llvm.lifetime.end.p0(i64 48, ptr %45) #7
  br label %224

215:                                              ; preds = %134
  %216 = load i64, ptr %43, align 8, !tbaa !13
  %217 = load ptr, ptr %18, align 8, !tbaa !5
  %218 = getelementptr inbounds %"struct.method_splitting_impl::Stats", ptr %217, i32 0, i32 14
  store i64 %216, ptr %218, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #7
  invoke void @"_ZN4walk4codeISt6vectorIP8DexClassSaIS3_EEZN21method_splitting_impl23split_methods_in_storesERS1_I8DexStoreSaIS7_EEiRKNS6_6ConfigEbmmPNS6_5StatsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP23InsertOnlyConcurrentSetIPK9DexMethodSt4hashISR_ESt8equal_toISR_ELm83EEP23InsertOnlyConcurrentMapIPSP_SZ_SS_ISZ_ESU_ISZ_ELm83EEPSY_ISZ_mS10_S11_Lm83EEE3$_2EEvRKT_RKT0_"(ptr noundef nonnull align 8 dereferenceable(24) %23, ptr noundef nonnull align 1 dereferenceable(1) %51)
          to label %219 unwind label %220

219:                                              ; preds = %215
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #7
  call void @_ZN19ConcurrentContainerISt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6atomicImESt4hashIS6_ESt8equal_toIS6_ESaISt4pairIKS6_S8_EEELm83EED2Ev(ptr noundef nonnull align 8 dereferenceable(2664) %44) #7
  call void @llvm.lifetime.end.p0(i64 2664, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  call void @_ZN12UnorderedMapIPSt6vectorIP8DexClassSaIS2_EESt10unique_ptrIN12_GLOBAL__N_18DexStateESt14default_deleteIS8_EESt4hashIS5_ESt8equal_toIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %29) #7
  call void @llvm.lifetime.end.p0(i64 56, ptr %29) #7
  call void @_ZNSt6vectorIPS_IP8DexClassSaIS1_EESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %28) #7
  call void @_ZN19ConcurrentContainerISt13unordered_setIP9DexMethodSt4hashIS2_ESt8equal_toIS2_ESaIS2_EELm83EED2Ev(ptr noundef nonnull align 8 dereferenceable(2664) %27) #7
  call void @llvm.lifetime.end.p0(i64 2664, ptr %27) #7
  call void @_ZN12init_classes26InitClassesWithSideEffectsD2Ev(ptr noundef nonnull align 8 dereferenceable(2697) %24) #7
  call void @llvm.lifetime.end.p0(i64 2704, ptr %24) #7
  call void @_ZNSt6vectorIP8DexClassSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #7
  ret void

220:                                              ; preds = %215
  %221 = landingpad { ptr, i32 }
          cleanup
  %222 = extractvalue { ptr, i32 } %221, 0
  store ptr %222, ptr %25, align 8
  %223 = extractvalue { ptr, i32 } %221, 1
  store i32 %223, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #7
  br label %224

224:                                              ; preds = %220, %214, %147
  call void @_ZN19ConcurrentContainerISt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6atomicImESt4hashIS6_ESt8equal_toIS6_ESaISt4pairIKS6_S8_EEELm83EED2Ev(ptr noundef nonnull align 8 dereferenceable(2664) %44) #7
  call void @llvm.lifetime.end.p0(i64 2664, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  br label %225

225:                                              ; preds = %224, %143
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  br label %226

226:                                              ; preds = %225, %112
  call void @_ZN12UnorderedMapIPSt6vectorIP8DexClassSaIS2_EESt10unique_ptrIN12_GLOBAL__N_18DexStateESt14default_deleteIS8_EESt4hashIS5_ESt8equal_toIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %29) #7
  br label %227

227:                                              ; preds = %226, %72
  call void @llvm.lifetime.end.p0(i64 56, ptr %29) #7
  call void @_ZNSt6vectorIPS_IP8DexClassSaIS1_EESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %28) #7
  call void @_ZN19ConcurrentContainerISt13unordered_setIP9DexMethodSt4hashIS2_ESt8equal_toIS2_ESaIS2_EELm83EED2Ev(ptr noundef nonnull align 8 dereferenceable(2664) %27) #7
  call void @llvm.lifetime.end.p0(i64 2664, ptr %27) #7
  call void @_ZN12init_classes26InitClassesWithSideEffectsD2Ev(ptr noundef nonnull align 8 dereferenceable(2697) %24) #7
  br label %228

228:                                              ; preds = %227, %68
  call void @llvm.lifetime.end.p0(i64 2704, ptr %24) #7
  call void @_ZNSt6vectorIP8DexClassSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #7
  br label %229

229:                                              ; preds = %228
  %230 = load ptr, ptr %25, align 8
  %231 = load i32, ptr %26, align 4
  %232 = insertvalue { ptr, i32 } poison, ptr %230, 0
  %233 = insertvalue { ptr, i32 } %232, i32 %231, 1
  resume { ptr, i32 } %233
}

declare void @_Z17build_class_scopeRKSt6vectorI8DexStoreSaIS0_EE(ptr dead_on_unwind writable sret(%"class.std::vector.196") align 8, ptr noundef nonnull align 8 dereferenceable(24)) #3

declare void @_ZN12init_classes26InitClassesWithSideEffectsC1ERKSt6vectorIP8DexClassSaIS3_EEbPKN21method_override_graph5GraphE(ptr noundef nonnull align 8 dereferenceable(2697), ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext, ptr noundef) unnamed_addr #3

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

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

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZN8DexStore9get_dexenEv(ptr noundef nonnull align 8 dereferenceable(137)) #3

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZN4walk8parallel4codeISt6vectorIP8DexClassSaIS4_EEZN21method_splitting_impl23split_methods_in_storesERS2_I8DexStoreSaIS8_EEiRKNS7_6ConfigEbmmPNS7_5StatsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP23InsertOnlyConcurrentSetIPK9DexMethodSt4hashISS_ESt8equal_toISS_ELm83EEP23InsertOnlyConcurrentMapIPSQ_S10_ST_IS10_ESV_IS10_ELm83EEPSZ_IS10_mS11_S12_Lm83EEE3$_1EEvRKT_RKT0_m"(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZN14redex_parallel19default_num_threadsEv() #4

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

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

declare noundef zeroext i1 @_Z12traceEnabled11TraceModulei(i32 noundef, i32 noundef) #3

declare void @_Z5trace11TraceModuleibPKcz(i32 noundef, i32 noundef, i1 noundef zeroext, ptr noundef, ...) #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) #5

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

declare void @_ZN5TimerC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(41), ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext) unnamed_addr #3

declare void @_ZN21method_splitting_impl41select_splittable_closures_based_on_costsERK13ConcurrentSetIP9DexMethodSt4hashIS2_ESt8equal_toIS2_ELm83EERKNS_6ConfigEP23InsertOnlyConcurrentSetIPKS1_S3_ISF_ES5_ISF_ELm83EEP23InsertOnlyConcurrentMapIS2_mS4_S6_Lm83EE(ptr dead_on_unwind writable sret(%class.ConcurrentMap) align 8, ptr noundef nonnull align 8 dereferenceable(2664), ptr noundef nonnull align 8 dereferenceable(160), ptr noundef, ptr noundef) #3

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_125split_splittable_closuresERKSt6vectorIPS0_IP8DexClassSaIS2_EESaIS5_EEiRKN12init_classes26InitClassesWithSideEffectsEmmRK13ConcurrentMapIP7DexTypeS0_IN21method_splitting_impl17SplittableClosureESaISI_EESt4hashISG_ESt8equal_toISG_ELm83EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP9AtomicMapISX_mSL_ISX_ESN_ISX_ELm83EEPNSH_5StatsEP12UnorderedMapIS5_St10unique_ptrINS_8DexStateESt14default_deleteIS19_EESL_IS5_ESN_IS5_EEP13ConcurrentSetIP9DexMethodSL_IS1J_ESN_IS1J_ELm83EEP23InsertOnlyConcurrentSetIPKS1I_SL_IS1Q_ESN_IS1Q_ELm83EEP23InsertOnlyConcurrentMapIS1J_S1J_S1K_S1L_Lm83EE(ptr dead_on_unwind noalias writable sret(%class.ConcurrentSet) align 8, ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, ptr noundef nonnull align 8 dereferenceable(2697), i64 noundef, i64 noundef, ptr noundef nonnull align 8 dereferenceable(5984), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

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

; Function Attrs: nounwind
declare void @_ZN5TimerD1Ev(ptr noundef nonnull align 8 dereferenceable(41)) unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZN4walk4codeISt6vectorIP8DexClassSaIS3_EEZN21method_splitting_impl23split_methods_in_storesERS1_I8DexStoreSaIS7_EEiRKNS6_6ConfigEbmmPNS6_5StatsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP23InsertOnlyConcurrentSetIPK9DexMethodSt4hashISR_ESt8equal_toISR_ELm83EEP23InsertOnlyConcurrentMapIPSP_SZ_SS_ISZ_ESU_ISZ_ELm83EEPSY_ISZ_mS10_S11_Lm83EEE3$_2EEvRKT_RKT0_"(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 1 dereferenceable(1)) #2 align 2

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"bool", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"long", !7, i64 0}
!15 = !{i8 0, i8 2}
!16 = !{}
!17 = !{!18, !14, i64 96}
!18 = !{!"_ZTSN21method_splitting_impl6ConfigE", !12, i64 0, !14, i64 8, !14, i64 16, !14, i64 24, !14, i64 32, !14, i64 40, !14, i64 48, !14, i64 56, !14, i64 64, !19, i64 72, !19, i64 76, !19, i64 80, !14, i64 88, !14, i64 96, !14, i64 104, !14, i64 112, !14, i64 120, !14, i64 128, !20, i64 136}
!19 = !{!"float", !7, i64 0}
!20 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!24 = distinct !{!24, !25}
!25 = !{!"llvm.loop.mustprogress"}
!26 = !{!27, !14, i64 160}
!27 = !{!"_ZTSN21method_splitting_impl5StatsE", !28, i64 0, !28, i64 8, !28, i64 16, !28, i64 24, !28, i64 32, !28, i64 40, !28, i64 48, !28, i64 56, !28, i64 64, !28, i64 72, !28, i64 80, !28, i64 88, !30, i64 96, !28, i64 152, !14, i64 160}
!28 = !{!"_ZTSSt6atomicImE", !29, i64 0}
!29 = !{!"_ZTSSt13__atomic_baseImE", !14, i64 0}
!30 = !{!"_ZTS12UnorderedSetIP9DexMethodSt4hashIS1_ESt8equal_toIS1_EE", !31, i64 0}
!31 = !{!"_ZTSSt13unordered_setIP9DexMethodSt4hashIS1_ESt8equal_toIS1_ESaIS1_EE", !32, i64 0}
!32 = !{!"_ZTSSt10_HashtableIP9DexMethodS1_SaIS1_ENSt8__detail9_IdentityESt8equal_toIS1_ESt4hashIS1_ENS3_18_Mod_range_hashingENS3_20_Default_ranged_hashENS3_20_Prime_rehash_policyENS3_17_Hashtable_traitsILb0ELb1ELb1EEEE", !6, i64 0, !14, i64 8, !33, i64 16, !14, i64 24, !34, i64 32, !6, i64 48}
!33 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!34 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !19, i64 0, !14, i64 8}


; 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.std::vector.196" = type { %"struct.std::_Vector_base.197" }
%"struct.std::_Vector_base.197" = type { %"struct.std::_Vector_base<DexClass *, std::allocator<DexClass *>>::_Vector_impl" }
%"struct.std::_Vector_base<DexClass *, std::allocator<DexClass *>>::_Vector_impl" = type { %"struct.std::_Vector_base<DexClass *, std::allocator<DexClass *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<DexClass *, std::allocator<DexClass *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.init_classes::InitClassesWithSideEffects" = type <{ %class.InsertOnlyConcurrentMap, %"struct.std::atomic.208", %"class.std::vector.215", i8, [7 x i8] }>
%class.InsertOnlyConcurrentMap = type { %class.ConcurrentContainer }
%class.ConcurrentContainer = type { ptr, [83 x %"class.cc_impl::ConcurrentHashtable"] }
%"class.cc_impl::ConcurrentHashtable" = type { %"struct.std::atomic.206", %"struct.std::atomic.208", %"struct.std::atomic.210", %"struct.std::atomic.212" }
%"struct.std::atomic.206" = type { %"struct.std::__atomic_base.207" }
%"struct.std::__atomic_base.207" = type { ptr }
%"struct.std::atomic.210" = type { %"struct.std::__atomic_base.211" }
%"struct.std::__atomic_base.211" = type { i8 }
%"struct.std::atomic.212" = type { %"struct.std::__atomic_base.213" }
%"struct.std::__atomic_base.213" = type { ptr }
%"struct.std::atomic.208" = type { %"struct.std::__atomic_base.209" }
%"struct.std::__atomic_base.209" = type { i64 }
%"class.std::vector.215" = type { %"struct.std::_Vector_base.216" }
%"struct.std::_Vector_base.216" = type { %"struct.std::_Vector_base<const DexClass *, std::allocator<const DexClass *>>::_Vector_impl" }
%"struct.std::_Vector_base<const DexClass *, std::allocator<const DexClass *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const DexClass *, std::allocator<const DexClass *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const DexClass *, std::allocator<const DexClass *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.ConcurrentSet = type { %class.ConcurrentContainer.220 }
%class.ConcurrentContainer.220 = type { ptr, [83 x %"class.cc_impl::ConcurrentHashtable.221"] }
%"class.cc_impl::ConcurrentHashtable.221" = type { %"struct.std::atomic.222", %"struct.std::atomic.208", %"struct.std::atomic.210", %"struct.std::atomic.224" }
%"struct.std::atomic.222" = type { %"struct.std::__atomic_base.223" }
%"struct.std::__atomic_base.223" = type { ptr }
%"struct.std::atomic.224" = type { %"struct.std::__atomic_base.225" }
%"struct.std::__atomic_base.225" = type { ptr }
%"class.std::vector.227" = type { %"struct.std::_Vector_base.228" }
%"struct.std::_Vector_base.228" = type { %"struct.std::_Vector_base<std::vector<DexClass *> *, std::allocator<std::vector<DexClass *> *>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<DexClass *> *, std::allocator<std::vector<DexClass *> *>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<DexClass *> *, std::allocator<std::vector<DexClass *> *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<DexClass *> *, std::allocator<std::vector<DexClass *> *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.UnorderedMap = type { %"class.std::unordered_map" }
%"class.std::unordered_map" = type { %"class.std::_Hashtable.233" }
%"class.std::_Hashtable.233" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"class.__gnu_cxx::__normal_iterator.252" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.263" = type { ptr }
%class.anon.272 = type { ptr }
%class.anon.273 = type { ptr, ptr, ptr }
%class.AtomicMap = type { %class.ConcurrentContainer.274 }
%class.ConcurrentContainer.274 = type { ptr, [83 x %"class.cc_impl::ConcurrentHashtable.275"] }
%"class.cc_impl::ConcurrentHashtable.275" = type { %"struct.std::atomic.276", %"struct.std::atomic.208", %"struct.std::atomic.210", %"struct.std::atomic.278" }
%"struct.std::atomic.276" = type { %"struct.std::__atomic_base.277" }
%"struct.std::__atomic_base.277" = type { ptr }
%"struct.std::atomic.278" = type { %"struct.std::__atomic_base.279" }
%"struct.std::__atomic_base.279" = type { ptr }
%struct.Timer = type <{ %"class.std::__cxx11::basic_string", %"class.std::chrono::time_point", i8, [7 x i8] }>
%"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::chrono::time_point" = type { %"class.std::chrono::duration" }
%"class.std::chrono::duration" = type { i64 }
%class.ConcurrentMap = type { %class.ConcurrentContainer.281, [83 x %"class.std::mutex"] }
%class.ConcurrentContainer.281 = type { ptr, [83 x %"class.cc_impl::ConcurrentHashtable.282"] }
%"class.cc_impl::ConcurrentHashtable.282" = type { %"struct.std::atomic.283", %"struct.std::atomic.208", %"struct.std::atomic.210", %"struct.std::atomic.285" }
%"struct.std::atomic.283" = type { %"struct.std::__atomic_base.284" }
%"struct.std::__atomic_base.284" = type { ptr }
%"struct.std::atomic.285" = type { %"struct.std::__atomic_base.286" }
%"struct.std::__atomic_base.286" = type { ptr }
%"class.std::mutex" = type { %"class.std::__mutex_base" }
%"class.std::__mutex_base" = type { %union.pthread_mutex_t }
%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }
%class.anon.310 = type { i8 }

@.str.15 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [28 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN21method_splitting_impl23split_methods_in_storesERSt6vectorI8DexStoreSaIS1_EEiRKNS_6ConfigEbmmPNS_5StatsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP23InsertOnlyConcurrentSetIPK9DexMethodSt4hashISL_ESt8equal_toISL_ELm83EEP23InsertOnlyConcurrentMapIPSJ_ST_SM_IST_ESO_IST_ELm83EEPSS_IST_mSU_SV_Lm83EE(ptr noundef nonnull align 8 dereferenceable(24) %0, i32 noundef %1, ptr noundef nonnull align 8 dereferenceable(160) %2, i1 noundef zeroext %3, i64 noundef %4, i64 noundef %5, ptr noundef %6, ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef %8, ptr noundef %9, ptr noundef %10) local_unnamed_addr #2 personality ptr @__gxx_personality_v0 {
  %12 = alloca ptr, align 8
  %13 = alloca %"class.std::vector.196", align 8
  %14 = alloca %"class.init_classes::InitClassesWithSideEffects", align 8
  %15 = alloca %class.ConcurrentSet, align 8
  %16 = alloca %"class.std::vector.227", align 8
  %17 = alloca %class.UnorderedMap, align 8
  %18 = alloca %"class.__gnu_cxx::__normal_iterator.252", align 8
  %19 = alloca %"class.__gnu_cxx::__normal_iterator.252", align 8
  %20 = alloca %"class.__gnu_cxx::__normal_iterator.263", align 8
  %21 = alloca %"class.__gnu_cxx::__normal_iterator.263", align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca %class.anon.272, align 8
  %25 = alloca %class.anon.273, align 8
  %26 = alloca %class.AtomicMap, align 8
  %27 = alloca %struct.Timer, align 8
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca %class.ConcurrentMap, align 8
  %31 = alloca %class.ConcurrentSet, align 8
  %32 = alloca %class.ConcurrentSet, align 8
  %33 = alloca %class.anon.310, align 1
  store ptr %6, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13) #7
  call void @_Z17build_class_scopeRKSt6vectorI8DexStoreSaIS0_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.196") align 8 %13, ptr noundef nonnull align 8 dereferenceable(24) %0)
  call void @llvm.lifetime.start.p0(i64 2704, ptr nonnull %14) #7
  invoke void @_ZN12init_classes26InitClassesWithSideEffectsC1ERKSt6vectorIP8DexClassSaIS3_EEbPKN21method_override_graph5GraphE(ptr noundef nonnull align 8 dereferenceable(2697) %14, ptr noundef nonnull align 8 dereferenceable(24) %13, i1 noundef zeroext %3, ptr noundef null)
          to label %34 unwind label %41

34:                                               ; preds = %11
  call void @llvm.lifetime.start.p0(i64 2664, ptr nonnull %15) #7
  call void @_ZN13ConcurrentSetIP9DexMethodSt4hashIS1_ESt8equal_toIS1_ELm83EEC2Ev(ptr noundef nonnull align 8 dereferenceable(2664) %15) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %16) #7
  call void @_ZNSt6vectorIPS_IP8DexClassSaIS1_EESaIS4_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #7
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %17) #7
  call void @_ZN12UnorderedMapIPSt6vectorIP8DexClassSaIS2_EESt10unique_ptrIN12_GLOBAL__N_18DexStateESt14default_deleteIS8_EESt4hashIS5_ESt8equal_toIS5_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %17)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #7
  %35 = call ptr @_ZNSt6vectorI8DexStoreSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #7
  store ptr %35, ptr %18, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #7
  %36 = call ptr @_ZNSt6vectorI8DexStoreSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #7
  store ptr %36, ptr %19, align 8
  %37 = call noundef zeroext i1 @_ZN9__gnu_cxxneIP8DexStoreSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %19) #7
  br i1 %37, label %.lr.ph64, label %._crit_edge65

._crit_edge65:                                    ; preds = %._crit_edge, %34
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #7
  store ptr %2, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %25) #7
  store ptr %24, ptr %25, align 8, !tbaa !5
  %38 = getelementptr inbounds i8, ptr %25, i64 8
  store ptr %12, ptr %38, align 8, !tbaa !5
  %39 = getelementptr inbounds i8, ptr %25, i64 16
  store ptr %15, ptr %39, align 8, !tbaa !5
  %40 = call noundef i64 @_ZN14redex_parallel19default_num_threadsEv()
  invoke void @"_ZN4walk8parallel4codeISt6vectorIP8DexClassSaIS4_EEZN21method_splitting_impl23split_methods_in_storesERS2_I8DexStoreSaIS8_EEiRKNS7_6ConfigEbmmPNS7_5StatsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP23InsertOnlyConcurrentSetIPK9DexMethodSt4hashISS_ESt8equal_toISS_ELm83EEP23InsertOnlyConcurrentMapIPSQ_S10_ST_IS10_ESV_IS10_ELm83EEPSZ_IS10_mS11_S12_Lm83EEE3$_1EEvRKT_RKT0_m"(ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull align 8 dereferenceable(24) %25, i64 noundef %40)
          to label %65 unwind label %76

41:                                               ; preds = %11
  %42 = landingpad { ptr, i32 }
          cleanup
  br label %122

.lr.ph64:                                         ; preds = %34, %._crit_edge
  %43 = call noundef nonnull align 8 dereferenceable(137) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP8DexStoreSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #7
  %44 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN8DexStore9get_dexenEv(ptr noundef nonnull align 8 dereferenceable(137) %43)
          to label %45 unwind label %51

45:                                               ; preds = %.lr.ph64
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #7
  %46 = call ptr @_ZNSt6vectorIS_IP8DexClassSaIS1_EESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %44) #7
  store ptr %46, ptr %20, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #7
  %47 = call ptr @_ZNSt6vectorIS_IP8DexClassSaIS1_EESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %44) #7
  store ptr %47, ptr %21, align 8
  %48 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt6vectorIP8DexClassSaIS3_EES1_IS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %21) #7
  br i1 %48, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %56, %45
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #7
  %49 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIP8DexStoreSt6vectorIS1_SaIS1_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #7
  %50 = call noundef zeroext i1 @_ZN9__gnu_cxxneIP8DexStoreSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %19) #7
  br i1 %50, label %.lr.ph64, label %._crit_edge65

51:                                               ; preds = %.lr.ph64
  %52 = landingpad { ptr, i32 }
          cleanup
  br label %64

.lr.ph:                                           ; preds = %45, %56
  %53 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt6vectorIP8DexClassSaIS3_EES1_IS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #7
  store ptr %53, ptr %22, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIPS_IP8DexClassSaIS1_EESaIS4_EE9push_backEOS4_(ptr noundef nonnull align 8 dereferenceable(24) %16, ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %54 unwind label %59

54:                                               ; preds = %.lr.ph
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #7
  store ptr %53, ptr %23, align 8, !tbaa !5
  %55 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN12UnorderedMapIPSt6vectorIP8DexClassSaIS2_EESt10unique_ptrIN12_GLOBAL__N_18DexStateESt14default_deleteIS8_EESt4hashIS5_ESt8equal_toIS5_EEixEOS5_(ptr noundef nonnull align 8 dereferenceable(56) %17, ptr noundef nonnull align 8 dereferenceable(8) %23)
          to label %56 unwind label %61

56:                                               ; preds = %54
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #7
  %57 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt6vectorIP8DexClassSaIS3_EES1_IS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  %58 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt6vectorIP8DexClassSaIS3_EES1_IS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %21) #7
  br i1 %58, label %.lr.ph, label %._crit_edge

59:                                               ; preds = %.lr.ph
  %60 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #7
  br label %63

61:                                               ; preds = %54
  %62 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #7
  br label %63

63:                                               ; preds = %61, %59
  %.pn48 = phi { ptr, i32 } [ %62, %61 ], [ %60, %59 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #7
  br label %64

64:                                               ; preds = %63, %51
  %.pn48.pn = phi { ptr, i32 } [ %.pn48, %63 ], [ %52, %51 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #7
  br label %121

65:                                               ; preds = %._crit_edge65
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #7
  call void @llvm.lifetime.start.p0(i64 2664, ptr nonnull %26) #7
  call void @_ZN9AtomicMapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmSt4hashIS5_ESt8equal_toIS5_ELm83EEC2Ev(ptr noundef nonnull align 8 dereferenceable(2664) %26) #7
  %66 = getelementptr inbounds i8, ptr %2, i64 96
  br label %67

67:                                               ; preds = %110, %65
  %.0 = phi i64 [ 0, %65 ], [ %81, %110 ]
  %68 = invoke noundef zeroext i1 @_ZNK19ConcurrentContainerISt13unordered_setIP9DexMethodSt4hashIS2_ESt8equal_toIS2_ESaIS2_EELm83EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(2664) %15)
          to label %69 unwind label %78

69:                                               ; preds = %67
  %70 = load i64, ptr %66, align 8
  %71 = icmp uge i64 %.0, %70
  %or.cond.not = select i1 %68, i1 true, i1 %71
  br i1 %or.cond.not, label %.critedge, label %72

72:                                               ; preds = %69
  %73 = invoke noundef zeroext i1 @_Z12traceEnabled11TraceModulei(i32 noundef 81, i32 noundef 2)
          to label %74 unwind label %78

74:                                               ; preds = %72
  br i1 %73, label %75, label %80

75:                                               ; preds = %74
  invoke void (i32, i32, i1, ptr, ...) @_Z5trace11TraceModuleibPKcz(i32 noundef 81, i32 noundef 2, i1 noundef zeroext false, ptr noundef nonnull @.str.15, i64 noundef %.0)
          to label %80 unwind label %78

76:                                               ; preds = %._crit_edge65
  %77 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #7
  br label %120

78:                                               ; preds = %75, %72, %67
  %79 = landingpad { ptr, i32 }
          cleanup
  br label %119

80:                                               ; preds = %75, %74
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %27) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %28) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %29) #7
  %81 = add nuw i64 %.0, 1
  invoke void @_ZNSt7__cxx119to_stringEm(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %29, i64 noundef %.0)
          to label %82 unwind label %96

82:                                               ; preds = %80
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %28, ptr noundef nonnull @.str.16, ptr noundef nonnull align 8 dereferenceable(32) %29)
          to label %83 unwind label %98

83:                                               ; preds = %82
  invoke void @_ZN5TimerC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(41) %27, ptr noundef nonnull align 8 dereferenceable(32) %28, i1 noundef zeroext true)
          to label %84 unwind label %100

84:                                               ; preds = %83
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #7
  call void @llvm.lifetime.start.p0(i64 5984, ptr nonnull %30) #7
  invoke void @_ZN21method_splitting_impl41select_splittable_closures_based_on_costsERK13ConcurrentSetIP9DexMethodSt4hashIS2_ESt8equal_toIS2_ELm83EERKNS_6ConfigEP23InsertOnlyConcurrentSetIPKS1_S3_ISF_ES5_ISF_ELm83EEP23InsertOnlyConcurrentMapIS2_mS4_S6_Lm83EE(ptr dead_on_unwind nonnull writable sret(%class.ConcurrentMap) align 8 %30, ptr noundef nonnull align 8 dereferenceable(2664) %15, ptr noundef nonnull align 8 dereferenceable(160) %2, ptr noundef %8, ptr noundef %10)
          to label %85 unwind label %104

85:                                               ; preds = %84
  call void @llvm.lifetime.start.p0(i64 2664, ptr nonnull %31) #7
  call void @_ZN13ConcurrentSetIP9DexMethodSt4hashIS1_ESt8equal_toIS1_ELm83EEC2Ev(ptr noundef nonnull align 8 dereferenceable(2664) %31) #7
  call void @llvm.lifetime.start.p0(i64 2664, ptr nonnull %32) #7
  %86 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN12_GLOBAL__N_125split_splittable_closuresERKSt6vectorIPS0_IP8DexClassSaIS2_EESaIS5_EEiRKN12init_classes26InitClassesWithSideEffectsEmmRK13ConcurrentMapIP7DexTypeS0_IN21method_splitting_impl17SplittableClosureESaISI_EESt4hashISG_ESt8equal_toISG_ELm83EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP9AtomicMapISX_mSL_ISX_ESN_ISX_ELm83EEPNSH_5StatsEP12UnorderedMapIS5_St10unique_ptrINS_8DexStateESt14default_deleteIS19_EESL_IS5_ESN_IS5_EEP13ConcurrentSetIP9DexMethodSL_IS1J_ESN_IS1J_ELm83EEP23InsertOnlyConcurrentSetIPKS1I_SL_IS1Q_ESN_IS1Q_ELm83EEP23InsertOnlyConcurrentMapIS1J_S1J_S1K_S1L_Lm83EE(ptr dead_on_unwind nonnull writable sret(%class.ConcurrentSet) align 8 %32, ptr noundef nonnull align 8 dereferenceable(24) %16, i32 noundef %1, ptr noundef nonnull align 8 dereferenceable(2697) %14, i64 noundef %5, i64 noundef %4, ptr noundef nonnull align 8 dereferenceable(5984) %30, ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull %26, ptr noundef %86, ptr noundef nonnull %17, ptr noundef nonnull %31, ptr noundef %8, ptr noundef %9)
          to label %87 unwind label %106

87:                                               ; preds = %85
  %88 = call noundef nonnull align 8 dereferenceable(2664) ptr @_ZN13ConcurrentSetIP9DexMethodSt4hashIS1_ESt8equal_toIS1_ELm83EEaSEOS6_(ptr noundef nonnull align 8 dereferenceable(2664) %15, ptr noundef nonnull align 8 dereferenceable(2664) %32) #7
  call void @_ZN19ConcurrentContainerISt13unordered_setIP9DexMethodSt4hashIS2_ESt8equal_toIS2_ESaIS2_EELm83EED2Ev(ptr noundef nonnull align 8 dereferenceable(2664) %32) #7
  call void @llvm.lifetime.end.p0(i64 2664, ptr nonnull %32) #7
  %89 = load ptr, ptr %12, align 8, !tbaa !5
  %90 = getelementptr inbounds i8, ptr %89, i64 96
  invoke void @_Z25insert_unordered_iterableI12UnorderedSetIP9DexMethodSt4hashIS2_ESt8equal_toIS2_EE13ConcurrentSetIS2_S4_S6_Lm83EEEvRT_RKT0_(ptr noundef nonnull align 8 dereferenceable(56) %90, ptr noundef nonnull align 8 dereferenceable(2664) %31)
          to label %91 unwind label %108

91:                                               ; preds = %87
  %92 = invoke noundef zeroext i1 @_Z12traceEnabled11TraceModulei(i32 noundef 81, i32 noundef 1)
          to label %93 unwind label %108

93:                                               ; preds = %91
  br i1 %92, label %94, label %110

94:                                               ; preds = %93
  %95 = call noundef i64 @_ZNK19ConcurrentContainerISt13unordered_setIP9DexMethodSt4hashIS2_ESt8equal_toIS2_ESaIS2_EELm83EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(2664) %31)
  invoke void (i32, i32, i1, ptr, ...) @_Z5trace11TraceModuleibPKcz(i32 noundef 81, i32 noundef 1, i1 noundef zeroext false, ptr noundef nonnull @.str.17, i64 noundef %81, i64 noundef %95)
          to label %110 unwind label %108

96:                                               ; preds = %80
  %97 = landingpad { ptr, i32 }
          cleanup
  br label %103

98:                                               ; preds = %82
  %99 = landingpad { ptr, i32 }
          cleanup
  br label %102

100:                                              ; preds = %83
  %101 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  br label %102

102:                                              ; preds = %100, %98
  %.pn = phi { ptr, i32 } [ %101, %100 ], [ %99, %98 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #7
  br label %103

103:                                              ; preds = %102, %96
  %.pn.pn = phi { ptr, i32 } [ %.pn, %102 ], [ %97, %96 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #7
  br label %113

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

106:                                              ; preds = %85
  %107 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 2664, ptr nonnull %32) #7
  br label %111

108:                                              ; preds = %94, %91, %87
  %109 = landingpad { ptr, i32 }
          cleanup
  br label %111

110:                                              ; preds = %94, %93
  call void @_ZN19ConcurrentContainerISt13unordered_setIP9DexMethodSt4hashIS2_ESt8equal_toIS2_ESaIS2_EELm83EED2Ev(ptr noundef nonnull align 8 dereferenceable(2664) %31) #7
  call void @llvm.lifetime.end.p0(i64 2664, ptr nonnull %31) #7
  call void @_ZN19ConcurrentContainerISt13unordered_mapIP7DexTypeSt6vectorIN21method_splitting_impl17SplittableClosureESaIS5_EESt4hashIS2_ESt8equal_toIS2_ESaISt4pairIKS2_S7_EEELm83EED2Ev(ptr noundef nonnull align 8 dereferenceable(5984) %30) #7
  call void @llvm.lifetime.end.p0(i64 5984, ptr nonnull %30) #7
  call void @_ZN5TimerD1Ev(ptr noundef nonnull align 8 dereferenceable(41) %27) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %27) #7
  br label %67, !llvm.loop !9

111:                                              ; preds = %108, %106
  %.pn41 = phi { ptr, i32 } [ %109, %108 ], [ %107, %106 ]
  call void @_ZN19ConcurrentContainerISt13unordered_setIP9DexMethodSt4hashIS2_ESt8equal_toIS2_ESaIS2_EELm83EED2Ev(ptr noundef nonnull align 8 dereferenceable(2664) %31) #7
  call void @llvm.lifetime.end.p0(i64 2664, ptr nonnull %31) #7
  call void @_ZN19ConcurrentContainerISt13unordered_mapIP7DexTypeSt6vectorIN21method_splitting_impl17SplittableClosureESaIS5_EESt4hashIS2_ESt8equal_toIS2_ESaISt4pairIKS2_S7_EEELm83EED2Ev(ptr noundef nonnull align 8 dereferenceable(5984) %30) #7
  br label %112

112:                                              ; preds = %111, %104
  %.pn41.pn = phi { ptr, i32 } [ %.pn41, %111 ], [ %105, %104 ]
  call void @llvm.lifetime.end.p0(i64 5984, ptr nonnull %30) #7
  call void @_ZN5TimerD1Ev(ptr noundef nonnull align 8 dereferenceable(41) %27) #7
  br label %113

113:                                              ; preds = %112, %103
  %.pn41.pn.pn = phi { ptr, i32 } [ %.pn41.pn, %112 ], [ %.pn.pn, %103 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %27) #7
  br label %119

.critedge:                                        ; preds = %69
  %114 = load ptr, ptr %12, align 8, !tbaa !5
  %115 = getelementptr inbounds i8, ptr %114, i64 160
  store i64 %.0, ptr %115, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %33) #7
  invoke void @"_ZN4walk4codeISt6vectorIP8DexClassSaIS3_EEZN21method_splitting_impl23split_methods_in_storesERS1_I8DexStoreSaIS7_EEiRKNS6_6ConfigEbmmPNS6_5StatsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP23InsertOnlyConcurrentSetIPK9DexMethodSt4hashISR_ESt8equal_toISR_ELm83EEP23InsertOnlyConcurrentMapIPSP_SZ_SS_ISZ_ESU_ISZ_ELm83EEPSY_ISZ_mS10_S11_Lm83EEE3$_2EEvRKT_RKT0_"(ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull align 1 dereferenceable(1) %33)
          to label %116 unwind label %117

116:                                              ; preds = %.critedge
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %33) #7
  call void @_ZN19ConcurrentContainerISt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6atomicImESt4hashIS6_ESt8equal_toIS6_ESaISt4pairIKS6_S8_EEELm83EED2Ev(ptr noundef nonnull align 8 dereferenceable(2664) %26) #7
  call void @llvm.lifetime.end.p0(i64 2664, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #7
  call void @_ZN12UnorderedMapIPSt6vectorIP8DexClassSaIS2_EESt10unique_ptrIN12_GLOBAL__N_18DexStateESt14default_deleteIS8_EESt4hashIS5_ESt8equal_toIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %17) #7
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %17) #7
  call void @_ZNSt6vectorIPS_IP8DexClassSaIS1_EESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #7
  call void @_ZN19ConcurrentContainerISt13unordered_setIP9DexMethodSt4hashIS2_ESt8equal_toIS2_ESaIS2_EELm83EED2Ev(ptr noundef nonnull align 8 dereferenceable(2664) %15) #7
  call void @llvm.lifetime.end.p0(i64 2664, ptr nonnull %15) #7
  call void @_ZN12init_classes26InitClassesWithSideEffectsD2Ev(ptr noundef nonnull align 8 dereferenceable(2697) %14) #7
  call void @llvm.lifetime.end.p0(i64 2704, ptr nonnull %14) #7
  call void @_ZNSt6vectorIP8DexClassSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #7
  ret void

117:                                              ; preds = %.critedge
  %118 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %33) #7
  br label %119

119:                                              ; preds = %117, %113, %78
  %.pn45 = phi { ptr, i32 } [ %118, %117 ], [ %.pn41.pn.pn, %113 ], [ %79, %78 ]
  call void @_ZN19ConcurrentContainerISt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6atomicImESt4hashIS6_ESt8equal_toIS6_ESaISt4pairIKS6_S8_EEELm83EED2Ev(ptr noundef nonnull align 8 dereferenceable(2664) %26) #7
  call void @llvm.lifetime.end.p0(i64 2664, ptr nonnull %26) #7
  br label %120

120:                                              ; preds = %119, %76
  %.pn45.pn = phi { ptr, i32 } [ %.pn45, %119 ], [ %77, %76 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #7
  br label %121

121:                                              ; preds = %120, %64
  %.pn48.pn.pn = phi { ptr, i32 } [ %.pn48.pn, %64 ], [ %.pn45.pn, %120 ]
  call void @_ZN12UnorderedMapIPSt6vectorIP8DexClassSaIS2_EESt10unique_ptrIN12_GLOBAL__N_18DexStateESt14default_deleteIS8_EESt4hashIS5_ESt8equal_toIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %17) #7
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %17) #7
  call void @_ZNSt6vectorIPS_IP8DexClassSaIS1_EESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #7
  call void @_ZN19ConcurrentContainerISt13unordered_setIP9DexMethodSt4hashIS2_ESt8equal_toIS2_ESaIS2_EELm83EED2Ev(ptr noundef nonnull align 8 dereferenceable(2664) %15) #7
  call void @llvm.lifetime.end.p0(i64 2664, ptr nonnull %15) #7
  call void @_ZN12init_classes26InitClassesWithSideEffectsD2Ev(ptr noundef nonnull align 8 dereferenceable(2697) %14) #7
  br label %122

122:                                              ; preds = %121, %41
  %.pn48.pn.pn.pn = phi { ptr, i32 } [ %.pn48.pn.pn, %121 ], [ %42, %41 ]
  call void @llvm.lifetime.end.p0(i64 2704, ptr nonnull %14) #7
  call void @_ZNSt6vectorIP8DexClassSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #7
  resume { ptr, i32 } %.pn48.pn.pn.pn
}

declare void @_Z17build_class_scopeRKSt6vectorI8DexStoreSaIS0_EE(ptr dead_on_unwind writable sret(%"class.std::vector.196") align 8, ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3

declare void @_ZN12init_classes26InitClassesWithSideEffectsC1ERKSt6vectorIP8DexClassSaIS3_EEbPKN21method_override_graph5GraphE(ptr noundef nonnull align 8 dereferenceable(2697), ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext, ptr noundef) unnamed_addr #3

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

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZN8DexStore9get_dexenEv(ptr noundef nonnull align 8 dereferenceable(137)) local_unnamed_addr #3

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZN4walk8parallel4codeISt6vectorIP8DexClassSaIS4_EEZN21method_splitting_impl23split_methods_in_storesERS2_I8DexStoreSaIS8_EEiRKNS7_6ConfigEbmmPNS7_5StatsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP23InsertOnlyConcurrentSetIPK9DexMethodSt4hashISS_ESt8equal_toISS_ELm83EEP23InsertOnlyConcurrentMapIPSQ_S10_ST_IS10_ESV_IS10_ELm83EEPSZ_IS10_mS11_S12_Lm83EEE3$_1EEvRKT_RKT0_m"(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZN14redex_parallel19default_num_threadsEv() local_unnamed_addr #4

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

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

declare noundef zeroext i1 @_Z12traceEnabled11TraceModulei(i32 noundef, i32 noundef) local_unnamed_addr #3

declare void @_Z5trace11TraceModuleibPKcz(i32 noundef, i32 noundef, i1 noundef zeroext, ptr noundef, ...) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #5

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

declare void @_ZN5TimerC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(41), ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext) unnamed_addr #3

declare void @_ZN21method_splitting_impl41select_splittable_closures_based_on_costsERK13ConcurrentSetIP9DexMethodSt4hashIS2_ESt8equal_toIS2_ELm83EERKNS_6ConfigEP23InsertOnlyConcurrentSetIPKS1_S3_ISF_ES5_ISF_ELm83EEP23InsertOnlyConcurrentMapIS2_mS4_S6_Lm83EE(ptr dead_on_unwind writable sret(%class.ConcurrentMap) align 8, ptr noundef nonnull align 8 dereferenceable(2664), ptr noundef nonnull align 8 dereferenceable(160), ptr noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_125split_splittable_closuresERKSt6vectorIPS0_IP8DexClassSaIS2_EESaIS5_EEiRKN12init_classes26InitClassesWithSideEffectsEmmRK13ConcurrentMapIP7DexTypeS0_IN21method_splitting_impl17SplittableClosureESaISI_EESt4hashISG_ESt8equal_toISG_ELm83EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP9AtomicMapISX_mSL_ISX_ESN_ISX_ELm83EEPNSH_5StatsEP12UnorderedMapIS5_St10unique_ptrINS_8DexStateESt14default_deleteIS19_EESL_IS5_ESN_IS5_EEP13ConcurrentSetIP9DexMethodSL_IS1J_ESN_IS1J_ELm83EEP23InsertOnlyConcurrentSetIPKS1I_SL_IS1Q_ESN_IS1Q_ELm83EEP23InsertOnlyConcurrentMapIS1J_S1J_S1K_S1L_Lm83EE(ptr dead_on_unwind noalias writable sret(%class.ConcurrentSet) align 8, ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, ptr noundef nonnull align 8 dereferenceable(2697), i64 noundef, i64 noundef, ptr noundef nonnull align 8 dereferenceable(5984), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

; Function Attrs: nounwind
declare void @_ZN5TimerD1Ev(ptr noundef nonnull align 8 dereferenceable(41)) unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZN4walk4codeISt6vectorIP8DexClassSaIS3_EEZN21method_splitting_impl23split_methods_in_storesERS1_I8DexStoreSaIS7_EEiRKNS6_6ConfigEbmmPNS6_5StatsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP23InsertOnlyConcurrentSetIPK9DexMethodSt4hashISR_ESt8equal_toISR_ELm83EEP23InsertOnlyConcurrentMapIPSP_SZ_SS_ISZ_ESU_ISZ_ELm83EEPSY_ISZ_mS10_S11_Lm83EEE3$_2EEvRKT_RKT0_"(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #2 align 2

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}
!11 = !{!12, !15, i64 160}
!12 = !{!"_ZTSN21method_splitting_impl5StatsE", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !13, i64 40, !13, i64 48, !13, i64 56, !13, i64 64, !13, i64 72, !13, i64 80, !13, i64 88, !16, i64 96, !13, i64 152, !15, i64 160}
!13 = !{!"_ZTSSt6atomicImE", !14, i64 0}
!14 = !{!"_ZTSSt13__atomic_baseImE", !15, i64 0}
!15 = !{!"long", !7, i64 0}
!16 = !{!"_ZTS12UnorderedSetIP9DexMethodSt4hashIS1_ESt8equal_toIS1_EE", !17, i64 0}
!17 = !{!"_ZTSSt13unordered_setIP9DexMethodSt4hashIS1_ESt8equal_toIS1_ESaIS1_EE", !18, i64 0}
!18 = !{!"_ZTSSt10_HashtableIP9DexMethodS1_SaIS1_ENSt8__detail9_IdentityESt8equal_toIS1_ESt4hashIS1_ENS3_18_Mod_range_hashingENS3_20_Default_ranged_hashENS3_20_Prime_rehash_policyENS3_17_Hashtable_traitsILb0ELb1ELb1EEEE", !6, i64 0, !15, i64 8, !19, i64 16, !15, i64 24, !20, i64 32, !6, i64 48}
!19 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!20 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !21, i64 0, !15, i64 8}
!21 = !{!"float", !7, i64 0}


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