; LLVM IR from facebook/redex :: libresource (Serialize)

; 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"

%"struct.android::TypeVariant" = type { ptr, i64 }
%"class.android::TypeVariant::iterator" = type <{ ptr, i32, [4 x i8] }>
%"class.android::Vector" = type { %"class.android::VectorImpl" }
%"class.android::VectorImpl" = type { ptr, ptr, i64, i32, i64 }
%"class.std::vector.32" = type { %"struct.std::_Vector_base.33" }
%"struct.std::_Vector_base.33" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.arsc::CanonicalEntries" = type { %"class.std::unordered_map" }
%"class.std::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = 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 }
%"struct.android::key_value_pair_t" = type { ptr, i64 }
%"struct.android::ResTable_type" = type { %"struct.android::ResChunk_header", i8, i8, i16, i32, i32, %"struct.android::ResTable_config" }
%"struct.android::ResChunk_header" = type { i16, i16, i32 }
%"struct.android::ResTable_config" = type { i32, %union.anon, %union.anon.0, %union.anon.2, %union.anon.4, %union.anon.6, %union.anon.8, %union.anon.10, %union.anon.12, [4 x i8], [8 x i8], %union.anon.14, i8, [8 x i8] }
%union.anon = type { i32 }
%union.anon.0 = type { i32 }
%union.anon.2 = type { i32 }
%union.anon.4 = type { i32 }
%union.anon.6 = type { i32 }
%union.anon.8 = type { i32 }
%union.anon.10 = type { i32 }
%union.anon.12 = type { i32 }
%union.anon.14 = type { i32 }
%"class.arsc::ResTableTypeProjector" = type <{ %"class.arsc::ResTableTypeBuilder.base", i8, ptr, %"class.std::vector.40", %"class.std::unordered_set", i8, [7 x i8] }>
%"class.arsc::ResTableTypeBuilder.base" = type <{ ptr, i32, i8, i8, i8 }>
%"class.std::vector.40" = type { %"struct.std::_Vector_base.41" }
%"struct.std::_Vector_base.41" = type { %"struct.std::_Vector_base<android::ResTable_type *, std::allocator<android::ResTable_type *>>::_Vector_impl" }
%"struct.std::_Vector_base<android::ResTable_type *, std::allocator<android::ResTable_type *>>::_Vector_impl" = type { %"struct.std::_Vector_base<android::ResTable_type *, std::allocator<android::ResTable_type *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<android::ResTable_type *, std::allocator<android::ResTable_type *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unordered_set" = type { %"class.std::_Hashtable.45" }
%"class.std::_Hashtable.45" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.arsc::ResTableTypeBuilder" = type <{ ptr, i32, i8, i8, i8, i8 }>

@stderr = external global ptr, align 8
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [36 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4arsc10push_shortEtPN7android6VectorIcEE(i16 noundef zeroext, ptr noundef) #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4arsc9push_longEjPN7android6VectorIcEE(i32 noundef, ptr noundef) #2

; Function Attrs: nounwind
declare i32 @fprintf(ptr noundef, ptr noundef, ...) #3

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #5

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN4arsc19ResTableTypeBuilder31should_encode_offsets_as_sparseERKSt6vectorIjSaIjEEm(ptr noundef nonnull align 8 dereferenceable(15), ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #4 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN4arsc21ResTableTypeProjector14serialize_typeEPN7android13ResTable_typeEmPNS1_6VectorIcEE(ptr noundef nonnull align 8 dereferenceable(105) %0, ptr noundef %1, i64 noundef %2, ptr noundef %3) #2 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca i1, align 1
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i64, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i64, align 8
  %11 = alloca %"struct.android::TypeVariant", align 8
  %12 = alloca i16, align 2
  %13 = alloca %"class.android::TypeVariant::iterator", align 8
  %14 = alloca { ptr, i32 }, align 8
  %15 = alloca %"class.android::TypeVariant::iterator", align 8
  %16 = alloca { ptr, i32 }, align 8
  %17 = alloca ptr, align 8
  %18 = alloca i32, align 4
  %19 = alloca i8, align 1
  %20 = alloca i32, align 4
  %21 = alloca %"class.android::Vector", align 8
  %22 = alloca %"class.std::vector.32", align 8
  %23 = alloca %"class.arsc::CanonicalEntries", align 8
  %24 = alloca ptr, align 8
  %25 = alloca i32, align 4
  %26 = alloca %"struct.android::TypeVariant", align 8
  %27 = alloca i16, align 2
  %28 = alloca %"class.android::TypeVariant::iterator", align 8
  %29 = alloca { ptr, i32 }, align 8
  %30 = alloca %"class.android::TypeVariant::iterator", align 8
  %31 = alloca { ptr, i32 }, align 8
  %32 = alloca ptr, align 8
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca %"struct.android::key_value_pair_t", align 8
  %38 = alloca ptr, align 8
  %39 = alloca i64, align 8
  %40 = alloca i64, align 8
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca %"struct.android::key_value_pair_t", align 8
  %44 = alloca i32, align 4
  %45 = alloca i8, align 1
  %46 = alloca i32, align 4
  %47 = alloca i64, align 8
  %48 = alloca i64, align 8
  %49 = alloca i64, align 8
  %50 = alloca i64, align 8
  %51 = alloca i8, align 1
  %52 = alloca i8, align 1
  %53 = alloca i8, align 1
  %54 = alloca i8, align 1
  %55 = alloca ptr, align 8
  %56 = alloca i64, align 8
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store i64 %2, ptr %8, align 8, !tbaa !9
  store ptr %3, ptr %9, align 8, !tbaa !5
  %57 = load ptr, ptr %6, align 8
  %58 = load ptr, ptr %7, align 8, !tbaa !5
  %59 = getelementptr inbounds %"struct.android::ResTable_type", ptr %58, i32 0, i32 4
  %60 = load i32, ptr %59, align 4, !tbaa !11
  %61 = icmp eq i32 %60, 0
  br i1 %61, label %67, label %62

62:                                               ; preds = %4
  %63 = load ptr, ptr %7, align 8, !tbaa !5
  %64 = getelementptr inbounds %"struct.android::ResTable_type", ptr %63, i32 0, i32 5
  %65 = load i32, ptr %64, align 4, !tbaa !18
  %66 = icmp eq i32 %65, 0
  br i1 %66, label %67, label %80

67:                                               ; preds = %62, %4
  br label %68

68:                                               ; preds = %67
  %69 = load ptr, ptr @stderr, align 8, !tbaa !5
  %70 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %69, ptr noundef @.str.7) #8
  %71 = load ptr, ptr @stderr, align 8, !tbaa !5
  %72 = load ptr, ptr %7, align 8, !tbaa !5
  %73 = getelementptr inbounds %"struct.android::ResTable_type", ptr %72, i32 0, i32 1
  %74 = load i8, ptr %73, align 4, !tbaa !19
  %75 = zext i8 %74 to i32
  %76 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %71, ptr noundef @.str.8, i32 noundef %75) #8
  %77 = load ptr, ptr @stderr, align 8, !tbaa !5
  %78 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %77, ptr noundef @.str.5) #8
  br label %79

79:                                               ; preds = %68
  store i1 false, ptr %5, align 1
  br label %384

80:                                               ; preds = %62
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #8
  store i64 0, ptr %10, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %11) #8
  %81 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN7android11TypeVariantC1EPKNS_13ResTable_typeE(ptr noundef nonnull align 8 dereferenceable(16) %11, ptr noundef %81)
  call void @llvm.lifetime.start.p0(i64 2, ptr %12) #8
  store i16 0, ptr %12, align 2, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 16, ptr %13) #8
  %82 = call { ptr, i32 } @_ZNK7android11TypeVariant12beginEntriesEv(ptr noundef nonnull align 8 dereferenceable(16) %11)
  store { ptr, i32 } %82, ptr %14, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %13, ptr align 8 %14, i64 12, i1 false)
  br label %83

83:                                               ; preds = %105, %80
  call void @llvm.lifetime.start.p0(i64 16, ptr %15) #8
  %84 = call { ptr, i32 } @_ZNK7android11TypeVariant10endEntriesEv(ptr noundef nonnull align 8 dereferenceable(16) %11)
  store { ptr, i32 } %84, ptr %16, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %15, ptr align 8 %16, i64 12, i1 false)
  %85 = call noundef zeroext i1 @_ZNK7android11TypeVariant8iteratorneERKS1_(ptr noundef nonnull align 8 dereferenceable(12) %13, ptr noundef nonnull align 8 dereferenceable(12) %15)
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #8
  br i1 %85, label %87, label %86

86:                                               ; preds = %83
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #8
  br label %109

87:                                               ; preds = %83
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #8
  %88 = call noundef ptr @_ZNK7android11TypeVariant8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %13)
  store ptr %88, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #8
  %89 = load i16, ptr %12, align 2, !tbaa !20
  %90 = zext i16 %89 to i64
  %91 = call noundef i32 @_ZN4arsc19ResTableTypeBuilder7make_idEm(ptr noundef nonnull align 8 dereferenceable(15) %57, i64 noundef %90)
  store i32 %91, ptr %18, align 4, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #8
  %92 = getelementptr inbounds %"class.arsc::ResTableTypeProjector", ptr %57, i32 0, i32 4
  %93 = call noundef i64 @_ZNKSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE5countERKj(ptr noundef nonnull align 8 dereferenceable(56) %92, ptr noundef nonnull align 4 dereferenceable(4) %18)
  %94 = icmp ne i64 %93, 0
  %95 = zext i1 %94 to i8
  store i8 %95, ptr %19, align 1, !tbaa !22
  %96 = load i8, ptr %19, align 1, !tbaa !22, !range !23, !noundef !24
  %97 = trunc i8 %96 to i1
  br i1 %97, label %104, label %98

98:                                               ; preds = %87
  %99 = load ptr, ptr %17, align 8, !tbaa !5
  %100 = icmp ne ptr %99, null
  br i1 %100, label %101, label %104

101:                                              ; preds = %98
  %102 = load i64, ptr %10, align 8, !tbaa !9
  %103 = add i64 %102, 1
  store i64 %103, ptr %10, align 8, !tbaa !9
  br label %104

104:                                              ; preds = %101, %98, %87
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  br label %105

105:                                              ; preds = %104
  %106 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7android11TypeVariant8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(12) %13)
  %107 = load i16, ptr %12, align 2, !tbaa !20
  %108 = add i16 %107, 1
  store i16 %108, ptr %12, align 2, !tbaa !20
  br label %83, !llvm.loop !25

109:                                              ; preds = %86
  %110 = load i64, ptr %10, align 8, !tbaa !9
  %111 = icmp eq i64 %110, 0
  br i1 %111, label %112, label %113

112:                                              ; preds = %109
  store i1 false, ptr %5, align 1
  store i32 1, ptr %20, align 4
  br label %114

113:                                              ; preds = %109
  store i32 0, ptr %20, align 4
  br label %114

114:                                              ; preds = %113, %112
  call void @llvm.lifetime.end.p0(i64 2, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  %115 = load i32, ptr %20, align 4
  switch i32 %115, label %391 [
    i32 0, label %116
    i32 1, label %384
  ]

116:                                              ; preds = %114
  call void @llvm.lifetime.start.p0(i64 40, ptr %21) #8
  call void @_ZN7android6VectorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %21)
  call void @llvm.lifetime.start.p0(i64 24, ptr %22) #8
  call void @_ZNSt6vectorIjSaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #8
  call void @llvm.lifetime.start.p0(i64 56, ptr %23) #8
  invoke void @_ZN4arsc16CanonicalEntriesC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %23)
          to label %117 unwind label %128

117:                                              ; preds = %116
  call void @llvm.lifetime.start.p0(i64 16, ptr %26) #8
  %118 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN7android11TypeVariantC1EPKNS_13ResTable_typeE(ptr noundef nonnull align 8 dereferenceable(16) %26, ptr noundef %118)
          to label %119 unwind label %132

119:                                              ; preds = %117
  call void @llvm.lifetime.start.p0(i64 2, ptr %27) #8
  store i16 0, ptr %27, align 2, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 16, ptr %28) #8
  %120 = invoke { ptr, i32 } @_ZNK7android11TypeVariant12beginEntriesEv(ptr noundef nonnull align 8 dereferenceable(16) %26)
          to label %121 unwind label %136

121:                                              ; preds = %119
  store { ptr, i32 } %120, ptr %29, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %28, ptr align 8 %29, i64 12, i1 false)
  br label %122

122:                                              ; preds = %255, %121
  call void @llvm.lifetime.start.p0(i64 16, ptr %30) #8
  %123 = invoke { ptr, i32 } @_ZNK7android11TypeVariant10endEntriesEv(ptr noundef nonnull align 8 dereferenceable(16) %26)
          to label %124 unwind label %140

124:                                              ; preds = %122
  store { ptr, i32 } %123, ptr %31, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %30, ptr align 8 %31, i64 12, i1 false)
  %125 = invoke noundef zeroext i1 @_ZNK7android11TypeVariant8iteratorneERKS1_(ptr noundef nonnull align 8 dereferenceable(12) %28, ptr noundef nonnull align 8 dereferenceable(12) %30)
          to label %126 unwind label %140

126:                                              ; preds = %124
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #8
  br i1 %125, label %144, label %127

127:                                              ; preds = %126
  store i32 7, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #8
  br label %261

128:                                              ; preds = %116
  %129 = landingpad { ptr, i32 }
          cleanup
  %130 = extractvalue { ptr, i32 } %129, 0
  store ptr %130, ptr %24, align 8
  %131 = extractvalue { ptr, i32 } %129, 1
  store i32 %131, ptr %25, align 4
  br label %383

132:                                              ; preds = %117
  %133 = landingpad { ptr, i32 }
          cleanup
  %134 = extractvalue { ptr, i32 } %133, 0
  store ptr %134, ptr %24, align 8
  %135 = extractvalue { ptr, i32 } %133, 1
  store i32 %135, ptr %25, align 4
  br label %382

136:                                              ; preds = %253, %119
  %137 = landingpad { ptr, i32 }
          cleanup
  %138 = extractvalue { ptr, i32 } %137, 0
  store ptr %138, ptr %24, align 8
  %139 = extractvalue { ptr, i32 } %137, 1
  store i32 %139, ptr %25, align 4
  br label %260

140:                                              ; preds = %124, %122
  %141 = landingpad { ptr, i32 }
          cleanup
  %142 = extractvalue { ptr, i32 } %141, 0
  store ptr %142, ptr %24, align 8
  %143 = extractvalue { ptr, i32 } %141, 1
  store i32 %143, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #8
  br label %260

144:                                              ; preds = %126
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #8
  %145 = invoke noundef ptr @_ZNK7android11TypeVariant8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %28)
          to label %146 unwind label %160

146:                                              ; preds = %144
  store ptr %145, ptr %32, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #8
  %147 = load i16, ptr %27, align 2, !tbaa !20
  %148 = zext i16 %147 to i64
  %149 = invoke noundef i32 @_ZN4arsc19ResTableTypeBuilder7make_idEm(ptr noundef nonnull align 8 dereferenceable(15) %57, i64 noundef %148)
          to label %150 unwind label %164

150:                                              ; preds = %146
  store i32 %149, ptr %33, align 4, !tbaa !21
  %151 = getelementptr inbounds %"class.arsc::ResTableTypeProjector", ptr %57, i32 0, i32 4
  %152 = invoke noundef i64 @_ZNKSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE5countERKj(ptr noundef nonnull align 8 dereferenceable(56) %151, ptr noundef nonnull align 4 dereferenceable(4) %33)
          to label %153 unwind label %164

153:                                              ; preds = %150
  %154 = icmp eq i64 %152, 0
  br i1 %154, label %155, label %236

155:                                              ; preds = %153
  %156 = load ptr, ptr %32, align 8, !tbaa !5
  %157 = icmp eq ptr %156, null
  br i1 %157, label %158, label %172

158:                                              ; preds = %155
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #8
  store i32 -1, ptr %34, align 4, !tbaa !21
  invoke void @_ZNSt6vectorIjSaIjEE9push_backEOj(ptr noundef nonnull align 8 dereferenceable(24) %22, ptr noundef nonnull align 4 dereferenceable(4) %34)
          to label %159 unwind label %168

159:                                              ; preds = %158
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #8
  br label %235

160:                                              ; preds = %144
  %161 = landingpad { ptr, i32 }
          cleanup
  %162 = extractvalue { ptr, i32 } %161, 0
  store ptr %162, ptr %24, align 8
  %163 = extractvalue { ptr, i32 } %161, 1
  store i32 %163, ptr %25, align 4
  br label %259

164:                                              ; preds = %150, %146
  %165 = landingpad { ptr, i32 }
          cleanup
  %166 = extractvalue { ptr, i32 } %165, 0
  store ptr %166, ptr %24, align 8
  %167 = extractvalue { ptr, i32 } %165, 1
  store i32 %167, ptr %25, align 4
  br label %258

168:                                              ; preds = %158
  %169 = landingpad { ptr, i32 }
          cleanup
  %170 = extractvalue { ptr, i32 } %169, 0
  store ptr %170, ptr %24, align 8
  %171 = extractvalue { ptr, i32 } %169, 1
  store i32 %171, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #8
  br label %258

172:                                              ; preds = %155
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #8
  %173 = load ptr, ptr %32, align 8, !tbaa !5
  %174 = call noundef i64 @_ZN4arsc26compute_entry_value_lengthEPN7android14ResTable_entryE(ptr noundef %173)
  %175 = trunc i64 %174 to i32
  store i32 %175, ptr %35, align 4, !tbaa !21
  %176 = getelementptr inbounds %"class.arsc::ResTableTypeBuilder", ptr %57, i32 0, i32 3
  %177 = load i8, ptr %176, align 1, !tbaa !27, !range !23, !noundef !24
  %178 = trunc i8 %177 to i1
  br i1 %178, label %196, label %179

179:                                              ; preds = %172
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #8
  %180 = invoke noundef i64 @_ZNK7android6VectorIcE4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %21)
          to label %181 unwind label %188

181:                                              ; preds = %179
  %182 = trunc i64 %180 to i32
  store i32 %182, ptr %36, align 4, !tbaa !21
  invoke void @_ZNSt6vectorIjSaIjEE9push_backEOj(ptr noundef nonnull align 8 dereferenceable(24) %22, ptr noundef nonnull align 4 dereferenceable(4) %36)
          to label %183 unwind label %188

183:                                              ; preds = %181
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #8
  %184 = load ptr, ptr %32, align 8, !tbaa !5
  %185 = load i32, ptr %35, align 4, !tbaa !21
  %186 = zext i32 %185 to i64
  invoke void @_ZN4arsc12_GLOBAL__N_117push_data_no_swapEPvmPN7android6VectorIcEE(ptr noundef %184, i64 noundef %186, ptr noundef %21)
          to label %187 unwind label %192

187:                                              ; preds = %183
  br label %233

188:                                              ; preds = %181, %179
  %189 = landingpad { ptr, i32 }
          cleanup
  %190 = extractvalue { ptr, i32 } %189, 0
  store ptr %190, ptr %24, align 8
  %191 = extractvalue { ptr, i32 } %189, 1
  store i32 %191, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #8
  br label %234

192:                                              ; preds = %183
  %193 = landingpad { ptr, i32 }
          cleanup
  %194 = extractvalue { ptr, i32 } %193, 0
  store ptr %194, ptr %24, align 8
  %195 = extractvalue { ptr, i32 } %193, 1
  store i32 %195, ptr %25, align 4
  br label %234

196:                                              ; preds = %172
  call void @llvm.lifetime.start.p0(i64 16, ptr %37) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #8
  %197 = load ptr, ptr %32, align 8, !tbaa !5
  store ptr %197, ptr %38, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #8
  %198 = load i32, ptr %35, align 4, !tbaa !21
  %199 = zext i32 %198 to i64
  store i64 %199, ptr %39, align 8, !tbaa !9
  invoke void @_ZN7android16key_value_pair_tIPhmEC2ERKS1_RKm(ptr noundef nonnull align 8 dereferenceable(16) %37, ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef nonnull align 8 dereferenceable(8) %39)
          to label %200 unwind label %205

200:                                              ; preds = %196
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #8
  %201 = invoke noundef zeroext i1 @_ZN4arsc16CanonicalEntries4findERKN7android16key_value_pair_tIPhmEEPmPj(ptr noundef nonnull align 8 dereferenceable(56) %23, ptr noundef nonnull align 8 dereferenceable(16) %37, ptr noundef %40, ptr noundef %41)
          to label %202 unwind label %209

202:                                              ; preds = %200
  br i1 %201, label %203, label %213

203:                                              ; preds = %202
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %22, ptr noundef nonnull align 4 dereferenceable(4) %41)
          to label %204 unwind label %209

204:                                              ; preds = %203
  br label %230

205:                                              ; preds = %196
  %206 = landingpad { ptr, i32 }
          cleanup
  %207 = extractvalue { ptr, i32 } %206, 0
  store ptr %207, ptr %24, align 8
  %208 = extractvalue { ptr, i32 } %206, 1
  store i32 %208, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  br label %232

209:                                              ; preds = %203, %200
  %210 = landingpad { ptr, i32 }
          cleanup
  %211 = extractvalue { ptr, i32 } %210, 0
  store ptr %211, ptr %24, align 8
  %212 = extractvalue { ptr, i32 } %210, 1
  store i32 %212, ptr %25, align 4
  br label %231

213:                                              ; preds = %202
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #8
  %214 = invoke noundef i64 @_ZNK7android6VectorIcE4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %21)
          to label %215 unwind label %226

215:                                              ; preds = %213
  %216 = trunc i64 %214 to i32
  store i32 %216, ptr %42, align 4, !tbaa !21
  invoke void @_ZN7android16key_value_pair_tIPhmEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %43, ptr noundef nonnull align 8 dereferenceable(16) %37)
          to label %217 unwind label %226

217:                                              ; preds = %215
  %218 = load i64, ptr %40, align 8, !tbaa !9
  %219 = load i32, ptr %42, align 4, !tbaa !21
  invoke void @_ZN4arsc16CanonicalEntries6recordEN7android16key_value_pair_tIPhmEEmj(ptr noundef nonnull align 8 dereferenceable(56) %23, ptr noundef %43, i64 noundef %218, i32 noundef %219)
          to label %220 unwind label %226

220:                                              ; preds = %217
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %22, ptr noundef nonnull align 4 dereferenceable(4) %42)
          to label %221 unwind label %226

221:                                              ; preds = %220
  %222 = load ptr, ptr %32, align 8, !tbaa !5
  %223 = load i32, ptr %35, align 4, !tbaa !21
  %224 = zext i32 %223 to i64
  invoke void @_ZN4arsc12_GLOBAL__N_117push_data_no_swapEPvmPN7android6VectorIcEE(ptr noundef %222, i64 noundef %224, ptr noundef %21)
          to label %225 unwind label %226

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

226:                                              ; preds = %221, %220, %217, %215, %213
  %227 = landingpad { ptr, i32 }
          cleanup
  %228 = extractvalue { ptr, i32 } %227, 0
  store ptr %228, ptr %24, align 8
  %229 = extractvalue { ptr, i32 } %227, 1
  store i32 %229, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #8
  br label %231

230:                                              ; preds = %225, %204
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #8
  br label %233

231:                                              ; preds = %226, %209
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  br label %232

232:                                              ; preds = %231, %205
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #8
  br label %234

233:                                              ; preds = %230, %187
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #8
  br label %235

234:                                              ; preds = %232, %192, %188
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #8
  br label %258

235:                                              ; preds = %233, %159
  br label %252

236:                                              ; preds = %153
  %237 = getelementptr inbounds %"class.arsc::ResTableTypeProjector", ptr %57, i32 0, i32 5
  %238 = load i8, ptr %237, align 8, !tbaa !29, !range !23, !noundef !24
  %239 = trunc i8 %238 to i1
  br i1 %239, label %240, label %251

240:                                              ; preds = %236
  %241 = load i16, ptr %27, align 2, !tbaa !20
  %242 = zext i16 %241 to i64
  %243 = load i64, ptr %8, align 8, !tbaa !9
  %244 = icmp ule i64 %242, %243
  br i1 %244, label %245, label %251

245:                                              ; preds = %240
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #8
  store i32 -1, ptr %44, align 4, !tbaa !21
  invoke void @_ZNSt6vectorIjSaIjEE9push_backEOj(ptr noundef nonnull align 8 dereferenceable(24) %22, ptr noundef nonnull align 4 dereferenceable(4) %44)
          to label %246 unwind label %247

246:                                              ; preds = %245
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #8
  br label %251

247:                                              ; preds = %245
  %248 = landingpad { ptr, i32 }
          cleanup
  %249 = extractvalue { ptr, i32 } %248, 0
  store ptr %249, ptr %24, align 8
  %250 = extractvalue { ptr, i32 } %248, 1
  store i32 %250, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #8
  br label %258

251:                                              ; preds = %246, %240, %236
  br label %252

252:                                              ; preds = %251, %235
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  br label %253

253:                                              ; preds = %252
  %254 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7android11TypeVariant8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(12) %28)
          to label %255 unwind label %136

255:                                              ; preds = %253
  %256 = load i16, ptr %27, align 2, !tbaa !20
  %257 = add i16 %256, 1
  store i16 %257, ptr %27, align 2, !tbaa !20
  br label %122, !llvm.loop !40

258:                                              ; preds = %247, %234, %168, %164
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #8
  br label %259

259:                                              ; preds = %258, %160
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  br label %260

260:                                              ; preds = %259, %140, %136
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #8
  br label %381

261:                                              ; preds = %127
  call void @llvm.lifetime.start.p0(i64 1, ptr %45) #8
  store i8 0, ptr %45, align 1, !tbaa !41
  %262 = invoke noundef i64 @_ZNK7android6VectorIcE4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %21)
          to label %263 unwind label %271

263:                                              ; preds = %261
  %264 = call noundef zeroext i1 @_ZN4arsc19ResTableTypeBuilder31should_encode_offsets_as_sparseERKSt6vectorIjSaIjEEm(ptr noundef nonnull align 8 dereferenceable(15) %57, ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef %262)
  br i1 %264, label %265, label %275

265:                                              ; preds = %263
  invoke void @_ZN4arsc19ResTableTypeBuilder24encode_offsets_as_sparseEPSt6vectorIjSaIjEE(ptr noundef nonnull align 8 dereferenceable(15) %57, ptr noundef %22)
          to label %266 unwind label %271

266:                                              ; preds = %265
  %267 = load i8, ptr %45, align 1, !tbaa !41
  %268 = zext i8 %267 to i32
  %269 = or i32 %268, 1
  %270 = trunc i32 %269 to i8
  store i8 %270, ptr %45, align 1, !tbaa !41
  br label %275

271:                                              ; preds = %275, %265, %261
  %272 = landingpad { ptr, i32 }
          cleanup
  %273 = extractvalue { ptr, i32 } %272, 0
  store ptr %273, ptr %24, align 8
  %274 = extractvalue { ptr, i32 } %272, 1
  store i32 %274, ptr %25, align 4
  br label %380

275:                                              ; preds = %266, %263
  %276 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZN4arsc10push_shortEtPN7android6VectorIcEE(i16 noundef zeroext 513, ptr noundef %276)
          to label %277 unwind label %271

277:                                              ; preds = %275
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #8
  %278 = load ptr, ptr %7, align 8, !tbaa !5
  %279 = getelementptr inbounds %"struct.android::ResTable_type", ptr %278, i32 0, i32 6
  %280 = getelementptr inbounds %"struct.android::ResTable_config", ptr %279, i32 0, i32 0
  %281 = load i32, ptr %280, align 4, !tbaa !42
  store i32 %281, ptr %46, align 4, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #8
  %282 = load i32, ptr %46, align 4, !tbaa !21
  %283 = zext i32 %282 to i64
  %284 = add i64 20, %283
  store i64 %284, ptr %47, align 8, !tbaa !9
  %285 = load i64, ptr %47, align 8, !tbaa !9
  %286 = trunc i64 %285 to i16
  %287 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZN4arsc10push_shortEtPN7android6VectorIcEE(i16 noundef zeroext %286, ptr noundef %287)
          to label %288 unwind label %333

288:                                              ; preds = %277
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #8
  %289 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %22) #8
  store i64 %289, ptr %48, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #8
  %290 = load i64, ptr %47, align 8, !tbaa !9
  %291 = load i64, ptr %48, align 8, !tbaa !9
  %292 = mul i64 %291, 4
  %293 = add i64 %290, %292
  store i64 %293, ptr %49, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #8
  %294 = load i64, ptr %49, align 8, !tbaa !9
  %295 = invoke noundef i64 @_ZNK7android6VectorIcE4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %21)
          to label %296 unwind label %337

296:                                              ; preds = %288
  %297 = add i64 %294, %295
  store i64 %297, ptr %50, align 8, !tbaa !9
  %298 = load i64, ptr %50, align 8, !tbaa !9
  %299 = trunc i64 %298 to i32
  %300 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZN4arsc9push_longEjPN7android6VectorIcEE(i32 noundef %299, ptr noundef %300)
          to label %301 unwind label %337

301:                                              ; preds = %296
  %302 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #8
  %303 = getelementptr inbounds %"class.arsc::ResTableTypeBuilder", ptr %57, i32 0, i32 2
  %304 = load i8, ptr %303, align 4, !tbaa !43
  store i8 %304, ptr %51, align 1, !tbaa !41
  invoke void @_ZN7android6VectorIcE9push_backERKc(ptr noundef nonnull align 8 dereferenceable(40) %302, ptr noundef nonnull align 1 dereferenceable(1) %51)
          to label %305 unwind label %341

305:                                              ; preds = %301
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #8
  %306 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %52) #8
  %307 = load i8, ptr %45, align 1, !tbaa !41
  store i8 %307, ptr %52, align 1, !tbaa !41
  invoke void @_ZN7android6VectorIcE9push_backERKc(ptr noundef nonnull align 8 dereferenceable(40) %306, ptr noundef nonnull align 1 dereferenceable(1) %52)
          to label %308 unwind label %345

308:                                              ; preds = %305
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #8
  %309 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %53) #8
  store i8 0, ptr %53, align 1, !tbaa !41
  invoke void @_ZN7android6VectorIcE9push_backERKc(ptr noundef nonnull align 8 dereferenceable(40) %309, ptr noundef nonnull align 1 dereferenceable(1) %53)
          to label %310 unwind label %349

310:                                              ; preds = %308
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #8
  %311 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %54) #8
  store i8 0, ptr %54, align 1, !tbaa !41
  invoke void @_ZN7android6VectorIcE9push_backERKc(ptr noundef nonnull align 8 dereferenceable(40) %311, ptr noundef nonnull align 1 dereferenceable(1) %54)
          to label %312 unwind label %353

312:                                              ; preds = %310
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #8
  %313 = load i64, ptr %48, align 8, !tbaa !9
  %314 = trunc i64 %313 to i32
  %315 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZN4arsc9push_longEjPN7android6VectorIcEE(i32 noundef %314, ptr noundef %315)
          to label %316 unwind label %337

316:                                              ; preds = %312
  %317 = load i64, ptr %49, align 8, !tbaa !9
  %318 = trunc i64 %317 to i32
  %319 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZN4arsc9push_longEjPN7android6VectorIcEE(i32 noundef %318, ptr noundef %319)
          to label %320 unwind label %337

320:                                              ; preds = %316
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #8
  %321 = load ptr, ptr %7, align 8, !tbaa !5
  %322 = getelementptr inbounds %"struct.android::ResTable_type", ptr %321, i32 0, i32 6
  store ptr %322, ptr %55, align 8, !tbaa !5
  %323 = load ptr, ptr %55, align 8, !tbaa !5
  %324 = load i32, ptr %46, align 4, !tbaa !21
  %325 = zext i32 %324 to i64
  %326 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZN4arsc12_GLOBAL__N_117push_data_no_swapEPvmPN7android6VectorIcEE(ptr noundef %323, i64 noundef %325, ptr noundef %326)
          to label %327 unwind label %357

327:                                              ; preds = %320
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #8
  store i64 0, ptr %56, align 8, !tbaa !9
  br label %328

328:                                              ; preds = %367, %327
  %329 = load i64, ptr %56, align 8, !tbaa !9
  %330 = load i64, ptr %48, align 8, !tbaa !9
  %331 = icmp ult i64 %329, %330
  br i1 %331, label %361, label %332

332:                                              ; preds = %328
  store i32 10, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #8
  br label %374

333:                                              ; preds = %277
  %334 = landingpad { ptr, i32 }
          cleanup
  %335 = extractvalue { ptr, i32 } %334, 0
  store ptr %335, ptr %24, align 8
  %336 = extractvalue { ptr, i32 } %334, 1
  store i32 %336, ptr %25, align 4
  br label %379

337:                                              ; preds = %316, %312, %296, %288
  %338 = landingpad { ptr, i32 }
          cleanup
  %339 = extractvalue { ptr, i32 } %338, 0
  store ptr %339, ptr %24, align 8
  %340 = extractvalue { ptr, i32 } %338, 1
  store i32 %340, ptr %25, align 4
  br label %378

341:                                              ; preds = %301
  %342 = landingpad { ptr, i32 }
          cleanup
  %343 = extractvalue { ptr, i32 } %342, 0
  store ptr %343, ptr %24, align 8
  %344 = extractvalue { ptr, i32 } %342, 1
  store i32 %344, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #8
  br label %378

345:                                              ; preds = %305
  %346 = landingpad { ptr, i32 }
          cleanup
  %347 = extractvalue { ptr, i32 } %346, 0
  store ptr %347, ptr %24, align 8
  %348 = extractvalue { ptr, i32 } %346, 1
  store i32 %348, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #8
  br label %378

349:                                              ; preds = %308
  %350 = landingpad { ptr, i32 }
          cleanup
  %351 = extractvalue { ptr, i32 } %350, 0
  store ptr %351, ptr %24, align 8
  %352 = extractvalue { ptr, i32 } %350, 1
  store i32 %352, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #8
  br label %378

353:                                              ; preds = %310
  %354 = landingpad { ptr, i32 }
          cleanup
  %355 = extractvalue { ptr, i32 } %354, 0
  store ptr %355, ptr %24, align 8
  %356 = extractvalue { ptr, i32 } %354, 1
  store i32 %356, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #8
  br label %378

357:                                              ; preds = %374, %320
  %358 = landingpad { ptr, i32 }
          cleanup
  %359 = extractvalue { ptr, i32 } %358, 0
  store ptr %359, ptr %24, align 8
  %360 = extractvalue { ptr, i32 } %358, 1
  store i32 %360, ptr %25, align 4
  br label %377

361:                                              ; preds = %328
  %362 = load i64, ptr %56, align 8, !tbaa !9
  %363 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef %362) #8
  %364 = load i32, ptr %363, align 4, !tbaa !21
  %365 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZN4arsc9push_longEjPN7android6VectorIcEE(i32 noundef %364, ptr noundef %365)
          to label %366 unwind label %370

366:                                              ; preds = %361
  br label %367

367:                                              ; preds = %366
  %368 = load i64, ptr %56, align 8, !tbaa !9
  %369 = add i64 %368, 1
  store i64 %369, ptr %56, align 8, !tbaa !9
  br label %328, !llvm.loop !44

370:                                              ; preds = %361
  %371 = landingpad { ptr, i32 }
          cleanup
  %372 = extractvalue { ptr, i32 } %371, 0
  store ptr %372, ptr %24, align 8
  %373 = extractvalue { ptr, i32 } %371, 1
  store i32 %373, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #8
  br label %377

374:                                              ; preds = %332
  %375 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZN4arsc12_GLOBAL__N_18push_vecERN7android6VectorIcEEPS3_(ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef %375)
          to label %376 unwind label %357

376:                                              ; preds = %374
  store i1 true, ptr %5, align 1
  store i32 1, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #8
  call void @llvm.lifetime.end.p0(i64 2, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #8
  call void @_ZN4arsc16CanonicalEntriesD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %23) #8
  call void @llvm.lifetime.end.p0(i64 56, ptr %23) #8
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #8
  call void @_ZN7android6VectorIcED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %21) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %21) #8
  br label %384

377:                                              ; preds = %370, %357
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #8
  br label %378

378:                                              ; preds = %377, %353, %349, %345, %341, %337
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #8
  br label %379

379:                                              ; preds = %378, %333
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #8
  br label %380

380:                                              ; preds = %379, %271
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #8
  br label %381

381:                                              ; preds = %380, %260
  call void @llvm.lifetime.end.p0(i64 2, ptr %27) #8
  br label %382

382:                                              ; preds = %381, %132
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #8
  call void @_ZN4arsc16CanonicalEntriesD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %23) #8
  br label %383

383:                                              ; preds = %382, %128
  call void @llvm.lifetime.end.p0(i64 56, ptr %23) #8
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #8
  call void @_ZN7android6VectorIcED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %21) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %21) #8
  br label %386

384:                                              ; preds = %376, %114, %79
  %385 = load i1, ptr %5, align 1
  ret i1 %385

386:                                              ; preds = %383
  %387 = load ptr, ptr %24, align 8
  %388 = load i32, ptr %25, align 4
  %389 = insertvalue { ptr, i32 } poison, ptr %387, 0
  %390 = insertvalue { ptr, i32 } %389, i32 %388, 1
  resume { ptr, i32 } %390

391:                                              ; preds = %114
  unreachable
}

declare void @_ZN7android11TypeVariantC1EPKNS_13ResTable_typeE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #6

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

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

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

declare noundef ptr @_ZNK7android11TypeVariant8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(12)) #6

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN4arsc19ResTableTypeBuilder7make_idEm(ptr noundef nonnull align 8 dereferenceable(15), i64 noundef) #4 align 2

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

declare noundef nonnull align 8 dereferenceable(12) ptr @_ZN7android11TypeVariant8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(12)) #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN7android6VectorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #1 align 2

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN4arsc12_GLOBAL__N_117push_data_no_swapEPvmPN7android6VectorIcEE(ptr noundef, i64 noundef, ptr noundef) #2

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN4arsc16CanonicalEntriesD2Ev(ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #7 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN7android6VectorIcED2Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #7 align 2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !15, i64 12}
!12 = !{!"_ZTSN7android13ResTable_typeE", !13, i64 0, !7, i64 8, !7, i64 9, !14, i64 10, !15, i64 12, !15, i64 16, !16, i64 20}
!13 = !{!"_ZTSN7android15ResChunk_headerE", !14, i64 0, !14, i64 2, !15, i64 4}
!14 = !{!"short", !7, i64 0}
!15 = !{!"int", !7, i64 0}
!16 = !{!"_ZTSN7android15ResTable_configE", !15, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !7, i64 40, !7, i64 48, !17, i64 52, !7, i64 53}
!17 = !{!"bool", !7, i64 0}
!18 = !{!12, !15, i64 16}
!19 = !{!12, !7, i64 8}
!20 = !{!14, !14, i64 0}
!21 = !{!15, !15, i64 0}
!22 = !{!17, !17, i64 0}
!23 = !{i8 0, i8 2}
!24 = !{}
!25 = distinct !{!25, !26}
!26 = !{!"llvm.loop.mustprogress"}
!27 = !{!28, !17, i64 13}
!28 = !{!"_ZTSN4arsc19ResTableTypeBuilderE", !15, i64 8, !7, i64 12, !17, i64 13, !17, i64 14}
!29 = !{!30, !17, i64 104}
!30 = !{!"_ZTSN4arsc21ResTableTypeProjectorE", !28, i64 0, !6, i64 16, !31, i64 24, !35, i64 48, !17, i64 104}
!31 = !{!"_ZTSSt6vectorIPN7android13ResTable_typeESaIS2_EE", !32, i64 0}
!32 = !{!"_ZTSSt12_Vector_baseIPN7android13ResTable_typeESaIS2_EE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIPN7android13ResTable_typeESaIS2_EE12_Vector_implE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIPN7android13ResTable_typeESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!35 = !{!"_ZTSSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE", !36, i64 0}
!36 = !{!"_ZTSSt10_HashtableIjjSaIjENSt8__detail9_IdentityESt8equal_toIjESt4hashIjENS1_18_Mod_range_hashingENS1_20_Default_ranged_hashENS1_20_Prime_rehash_policyENS1_17_Hashtable_traitsILb0ELb1ELb1EEEE", !6, i64 0, !10, i64 8, !37, i64 16, !10, i64 24, !38, i64 32, !6, i64 48}
!37 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!38 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !39, i64 0, !10, i64 8}
!39 = !{!"float", !7, i64 0}
!40 = distinct !{!40, !26}
!41 = !{!7, !7, i64 0}
!42 = !{!12, !15, i64 20}
!43 = !{!28, !7, i64 12}
!44 = distinct !{!44, !26}


; 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"

%"struct.android::TypeVariant" = type { ptr, i64 }
%"class.android::TypeVariant::iterator" = type <{ ptr, i32, [4 x i8] }>
%"class.android::Vector" = type { %"class.android::VectorImpl" }
%"class.android::VectorImpl" = type { ptr, ptr, i64, i32, i64 }
%"class.std::vector.32" = type { %"struct.std::_Vector_base.33" }
%"struct.std::_Vector_base.33" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.arsc::CanonicalEntries" = type { %"class.std::unordered_map" }
%"class.std::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = 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 }
%"struct.android::key_value_pair_t" = type { ptr, i64 }

@stderr = external local_unnamed_addr global ptr, align 8
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [36 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4arsc10push_shortEtPN7android6VectorIcEE(i16 noundef zeroext, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4arsc9push_longEjPN7android6VectorIcEE(i32 noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: nofree nounwind
declare noundef i32 @fprintf(ptr nocapture noundef, ptr nocapture noundef readonly, ...) local_unnamed_addr #3

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN4arsc19ResTableTypeBuilder31should_encode_offsets_as_sparseERKSt6vectorIjSaIjEEm(ptr noundef nonnull align 8 dereferenceable(15), ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #4 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN4arsc21ResTableTypeProjector14serialize_typeEPN7android13ResTable_typeEmPNS1_6VectorIcEE(ptr noundef nonnull align 8 dereferenceable(105) %0, ptr noundef %1, i64 noundef %2, ptr noundef %3) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca %"struct.android::TypeVariant", align 8
  %6 = alloca %"class.android::TypeVariant::iterator", align 8
  %7 = alloca %"class.android::TypeVariant::iterator", align 8
  %8 = alloca i32, align 4
  %9 = alloca %"class.android::Vector", align 8
  %10 = alloca %"class.std::vector.32", align 8
  %11 = alloca %"class.arsc::CanonicalEntries", align 8
  %12 = alloca %"struct.android::TypeVariant", align 8
  %13 = alloca %"class.android::TypeVariant::iterator", align 8
  %14 = alloca %"class.android::TypeVariant::iterator", align 8
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca %"struct.android::key_value_pair_t", align 8
  %19 = alloca ptr, align 8
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca %"struct.android::key_value_pair_t", align 8
  %25 = alloca i32, align 4
  %26 = alloca i8, align 1
  %27 = alloca i8, align 1
  %28 = alloca i8, align 1
  %29 = alloca i8, align 1
  %30 = getelementptr inbounds i8, ptr %1, i64 12
  %31 = load i32, ptr %30, align 4, !tbaa !5
  %32 = icmp eq i32 %31, 0
  br i1 %32, label %37, label %33

33:                                               ; preds = %4
  %34 = getelementptr inbounds i8, ptr %1, i64 16
  %35 = load i32, ptr %34, align 4, !tbaa !14
  %36 = icmp eq i32 %35, 0
  br i1 %36, label %37, label %47

37:                                               ; preds = %4, %33
  %38 = load ptr, ptr @stderr, align 8, !tbaa !15
  %39 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %38, ptr noundef nonnull @.str.7) #7
  %40 = load ptr, ptr @stderr, align 8, !tbaa !15
  %41 = getelementptr inbounds i8, ptr %1, i64 8
  %42 = load i8, ptr %41, align 4, !tbaa !17
  %43 = zext i8 %42 to i32
  %44 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %40, ptr noundef nonnull @.str.8, i32 noundef %43) #7
  %45 = load ptr, ptr @stderr, align 8, !tbaa !15
  %46 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %45, ptr noundef nonnull @.str.5) #7
  br label %198

47:                                               ; preds = %33
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #8
  call void @_ZN7android11TypeVariantC1EPKNS_13ResTable_typeE(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull %1)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #8
  %48 = call { ptr, i32 } @_ZNK7android11TypeVariant12beginEntriesEv(ptr noundef nonnull align 8 dereferenceable(16) %5)
  %.fca.0.extract40 = extractvalue { ptr, i32 } %48, 0
  %.fca.1.extract41 = extractvalue { ptr, i32 } %48, 1
  store ptr %.fca.0.extract40, ptr %6, align 8
  %.sroa.243.0..sroa_idx = getelementptr inbounds i8, ptr %6, i64 8
  store i32 %.fca.1.extract41, ptr %.sroa.243.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #8
  %49 = call { ptr, i32 } @_ZNK7android11TypeVariant10endEntriesEv(ptr noundef nonnull align 8 dereferenceable(16) %5)
  %.fca.0.extract36109 = extractvalue { ptr, i32 } %49, 0
  %.fca.1.extract37110 = extractvalue { ptr, i32 } %49, 1
  store ptr %.fca.0.extract36109, ptr %7, align 8
  %.sroa.239.0..sroa_idx = getelementptr inbounds i8, ptr %7, i64 8
  store i32 %.fca.1.extract37110, ptr %.sroa.239.0..sroa_idx, align 8
  %50 = call noundef zeroext i1 @_ZNK7android11TypeVariant8iteratorneERKS1_(ptr noundef nonnull align 8 dereferenceable(12) %6, ptr noundef nonnull align 8 dereferenceable(12) %7)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #8
  br i1 %50, label %.lr.ph, label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %47
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #8
  br label %198

.lr.ph:                                           ; preds = %47
  %51 = getelementptr inbounds i8, ptr %0, i64 48
  br label %52

._crit_edge:                                      ; preds = %52
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #8
  %.not108 = icmp eq i64 %spec.select, 0
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #8
  br i1 %.not108, label %198, label %63

52:                                               ; preds = %.lr.ph, %52
  %.071112 = phi i64 [ 0, %.lr.ph ], [ %spec.select, %52 ]
  %.073111 = phi i16 [ 0, %.lr.ph ], [ %60, %52 ]
  %53 = call noundef ptr @_ZNK7android11TypeVariant8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %6)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #8
  %54 = zext i16 %.073111 to i64
  %55 = call noundef i32 @_ZN4arsc19ResTableTypeBuilder7make_idEm(ptr noundef nonnull align 8 dereferenceable(15) %0, i64 noundef %54)
  store i32 %55, ptr %8, align 4, !tbaa !18
  %56 = call noundef i64 @_ZNKSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE5countERKj(ptr noundef nonnull align 8 dereferenceable(56) %51, ptr noundef nonnull align 4 dereferenceable(4) %8)
  %.not106 = icmp eq i64 %56, 0
  %57 = icmp ne ptr %53, null
  %or.cond = and i1 %57, %.not106
  %58 = zext i1 %or.cond to i64
  %spec.select = add i64 %.071112, %58
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #8
  %59 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7android11TypeVariant8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(12) %6)
  %60 = add i16 %.073111, 1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #8
  %61 = call { ptr, i32 } @_ZNK7android11TypeVariant10endEntriesEv(ptr noundef nonnull align 8 dereferenceable(16) %5)
  %.fca.0.extract36 = extractvalue { ptr, i32 } %61, 0
  %.fca.1.extract37 = extractvalue { ptr, i32 } %61, 1
  store ptr %.fca.0.extract36, ptr %7, align 8
  store i32 %.fca.1.extract37, ptr %.sroa.239.0..sroa_idx, align 8
  %62 = call noundef zeroext i1 @_ZNK7android11TypeVariant8iteratorneERKS1_(ptr noundef nonnull align 8 dereferenceable(12) %6, ptr noundef nonnull align 8 dereferenceable(12) %7)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #8
  br i1 %62, label %52, label %._crit_edge, !llvm.loop !19

63:                                               ; preds = %._crit_edge
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %9) #8
  call void @_ZN7android6VectorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %9)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #8
  call void @_ZNSt6vectorIjSaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #8
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %11) #8
  call void @_ZN4arsc16CanonicalEntriesC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %11)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #8
  invoke void @_ZN7android11TypeVariantC1EPKNS_13ResTable_typeE(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef %1)
          to label %64 unwind label %76

64:                                               ; preds = %63
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #8
  %65 = invoke { ptr, i32 } @_ZNK7android11TypeVariant12beginEntriesEv(ptr noundef nonnull align 8 dereferenceable(16) %12)
          to label %66 unwind label %.loopexit.split-lp

66:                                               ; preds = %64
  %.fca.0.extract24 = extractvalue { ptr, i32 } %65, 0
  %.fca.1.extract25 = extractvalue { ptr, i32 } %65, 1
  store ptr %.fca.0.extract24, ptr %13, align 8
  %.sroa.227.0..sroa_idx = getelementptr inbounds i8, ptr %13, i64 8
  store i32 %.fca.1.extract25, ptr %.sroa.227.0..sroa_idx, align 8
  %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %14, i64 8
  %67 = getelementptr inbounds i8, ptr %0, i64 48
  %68 = getelementptr inbounds i8, ptr %0, i64 104
  %69 = getelementptr inbounds i8, ptr %0, i64 13
  br label %70

70:                                               ; preds = %141, %66
  %.089 = phi i16 [ 0, %66 ], [ %142, %141 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #8
  %71 = invoke { ptr, i32 } @_ZNK7android11TypeVariant10endEntriesEv(ptr noundef nonnull align 8 dereferenceable(16) %12)
          to label %72 unwind label %78

72:                                               ; preds = %70
  %.fca.0.extract = extractvalue { ptr, i32 } %71, 0
  %.fca.1.extract = extractvalue { ptr, i32 } %71, 1
  store ptr %.fca.0.extract, ptr %14, align 8
  store i32 %.fca.1.extract, ptr %.sroa.2.0..sroa_idx, align 8
  %73 = call noundef zeroext i1 @_ZNK7android11TypeVariant8iteratorneERKS1_(ptr noundef nonnull align 8 dereferenceable(12) %13, ptr noundef nonnull align 8 dereferenceable(12) %14)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #8
  br i1 %73, label %80, label %74

74:                                               ; preds = %72
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #8
  %75 = invoke noundef i64 @_ZNK7android6VectorIcE4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %9)
          to label %145 unwind label %148

76:                                               ; preds = %63
  %77 = landingpad { ptr, i32 }
          cleanup
  br label %197

.loopexit:                                        ; preds = %139
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %144

.loopexit.split-lp:                               ; preds = %64
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %144

78:                                               ; preds = %70
  %79 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #8
  br label %144

80:                                               ; preds = %72
  %81 = invoke noundef ptr @_ZNK7android11TypeVariant8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %13)
          to label %82 unwind label %92

82:                                               ; preds = %80
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #8
  %83 = zext i16 %.089 to i64
  %84 = call noundef i32 @_ZN4arsc19ResTableTypeBuilder7make_idEm(ptr noundef nonnull align 8 dereferenceable(15) %0, i64 noundef %83)
  store i32 %84, ptr %15, align 4, !tbaa !18
  %85 = invoke noundef i64 @_ZNKSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE5countERKj(ptr noundef nonnull align 8 dereferenceable(56) %67, ptr noundef nonnull align 4 dereferenceable(4) %15)
          to label %86 unwind label %94

86:                                               ; preds = %82
  %87 = icmp eq i64 %85, 0
  br i1 %87, label %88, label %132

88:                                               ; preds = %86
  %89 = icmp eq ptr %81, null
  br i1 %89, label %90, label %98

90:                                               ; preds = %88
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #8
  store i32 -1, ptr %16, align 4, !tbaa !18
  invoke void @_ZNSt6vectorIjSaIjEE9push_backEOj(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 4 dereferenceable(4) %16)
          to label %91 unwind label %96

91:                                               ; preds = %90
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #8
  br label %139

92:                                               ; preds = %80
  %93 = landingpad { ptr, i32 }
          cleanup
  br label %144

94:                                               ; preds = %82
  %95 = landingpad { ptr, i32 }
          cleanup
  br label %143

96:                                               ; preds = %90
  %97 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #8
  br label %143

98:                                               ; preds = %88
  %99 = call noundef i64 @_ZN4arsc26compute_entry_value_lengthEPN7android14ResTable_entryE(ptr noundef nonnull %81)
  %100 = load i8, ptr %69, align 1, !tbaa !21, !range !23, !noundef !24
  %101 = trunc nuw i8 %100 to i1
  br i1 %101, label %112, label %102

102:                                              ; preds = %98
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #8
  %103 = invoke noundef i64 @_ZNK7android6VectorIcE4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %9)
          to label %104 unwind label %108

104:                                              ; preds = %102
  %105 = trunc i64 %103 to i32
  store i32 %105, ptr %17, align 4, !tbaa !18
  invoke void @_ZNSt6vectorIjSaIjEE9push_backEOj(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 4 dereferenceable(4) %17)
          to label %106 unwind label %108

106:                                              ; preds = %104
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #8
  %107 = and i64 %99, 4294967295
  invoke void @_ZN4arsc12_GLOBAL__N_117push_data_no_swapEPvmPN7android6VectorIcEE(ptr noundef nonnull %81, i64 noundef %107, ptr noundef nonnull %9)
          to label %139 unwind label %110

108:                                              ; preds = %104, %102
  %109 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #8
  br label %143

110:                                              ; preds = %106
  %111 = landingpad { ptr, i32 }
          cleanup
  br label %143

112:                                              ; preds = %98
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %18) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #8
  store ptr %81, ptr %19, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #8
  %113 = and i64 %99, 4294967295
  store i64 %113, ptr %20, align 8, !tbaa !25
  call void @_ZN7android16key_value_pair_tIPhmEC2ERKS1_RKm(ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %20)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #8
  %114 = invoke noundef zeroext i1 @_ZN4arsc16CanonicalEntries4findERKN7android16key_value_pair_tIPhmEEPmPj(ptr noundef nonnull align 8 dereferenceable(56) %11, ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef nonnull %21, ptr noundef nonnull %22)
          to label %115 unwind label %117

115:                                              ; preds = %112
  br i1 %114, label %116, label %119

116:                                              ; preds = %115
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 4 dereferenceable(4) %22)
          to label %130 unwind label %117

117:                                              ; preds = %116, %112
  %118 = landingpad { ptr, i32 }
          cleanup
  br label %131

119:                                              ; preds = %115
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #8
  %120 = invoke noundef i64 @_ZNK7android6VectorIcE4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %9)
          to label %121 unwind label %128

121:                                              ; preds = %119
  %122 = trunc i64 %120 to i32
  store i32 %122, ptr %23, align 4, !tbaa !18
  call void @_ZN7android16key_value_pair_tIPhmEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %24, ptr noundef nonnull align 8 dereferenceable(16) %18)
  %123 = load i64, ptr %21, align 8, !tbaa !25
  %124 = load i32, ptr %23, align 4, !tbaa !18
  invoke void @_ZN4arsc16CanonicalEntries6recordEN7android16key_value_pair_tIPhmEEmj(ptr noundef nonnull align 8 dereferenceable(56) %11, ptr noundef nonnull %24, i64 noundef %123, i32 noundef %124)
          to label %125 unwind label %128

125:                                              ; preds = %121
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 4 dereferenceable(4) %23)
          to label %126 unwind label %128

126:                                              ; preds = %125
  invoke void @_ZN4arsc12_GLOBAL__N_117push_data_no_swapEPvmPN7android6VectorIcEE(ptr noundef nonnull %81, i64 noundef %113, ptr noundef nonnull %9)
          to label %127 unwind label %128

127:                                              ; preds = %126
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #8
  br label %130

128:                                              ; preds = %126, %125, %121, %119
  %129 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #8
  br label %131

130:                                              ; preds = %116, %127
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #8
  br label %139

131:                                              ; preds = %128, %117
  %.pn96 = phi { ptr, i32 } [ %118, %117 ], [ %129, %128 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #8
  br label %143

132:                                              ; preds = %86
  %133 = load i8, ptr %68, align 8, !tbaa !27, !range !23, !noundef !24
  %134 = trunc nuw i8 %133 to i1
  %.not95 = icmp ule i64 %83, %2
  %or.cond107.not = and i1 %.not95, %134
  br i1 %or.cond107.not, label %135, label %139

135:                                              ; preds = %132
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #8
  store i32 -1, ptr %25, align 4, !tbaa !18
  invoke void @_ZNSt6vectorIjSaIjEE9push_backEOj(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 4 dereferenceable(4) %25)
          to label %136 unwind label %137

136:                                              ; preds = %135
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #8
  br label %139

137:                                              ; preds = %135
  %138 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #8
  br label %143

139:                                              ; preds = %130, %106, %132, %136, %91
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #8
  %140 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7android11TypeVariant8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(12) %13)
          to label %141 unwind label %.loopexit

141:                                              ; preds = %139
  %142 = add i16 %.089, 1
  br label %70, !llvm.loop !38

143:                                              ; preds = %108, %110, %131, %137, %96, %94
  %.pn99 = phi { ptr, i32 } [ %97, %96 ], [ %138, %137 ], [ %95, %94 ], [ %.pn96, %131 ], [ %111, %110 ], [ %109, %108 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #8
  br label %144

144:                                              ; preds = %.loopexit, %.loopexit.split-lp, %92, %143, %78
  %.pn102 = phi { ptr, i32 } [ %79, %78 ], [ %.pn99, %143 ], [ %93, %92 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #8
  br label %197

145:                                              ; preds = %74
  %146 = call noundef zeroext i1 @_ZN4arsc19ResTableTypeBuilder31should_encode_offsets_as_sparseERKSt6vectorIjSaIjEEm(ptr noundef nonnull align 8 dereferenceable(15) %0, ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %75)
  br i1 %146, label %147, label %150

147:                                              ; preds = %145
  invoke void @_ZN4arsc19ResTableTypeBuilder24encode_offsets_as_sparseEPSt6vectorIjSaIjEE(ptr noundef nonnull align 8 dereferenceable(15) %0, ptr noundef nonnull %10)
          to label %150 unwind label %148

148:                                              ; preds = %150, %147, %74
  %149 = landingpad { ptr, i32 }
          cleanup
  br label %197

150:                                              ; preds = %147, %145
  %.088 = phi i8 [ 0, %145 ], [ 1, %147 ]
  invoke void @_ZN4arsc10push_shortEtPN7android6VectorIcEE(i16 noundef zeroext 513, ptr noundef %3)
          to label %151 unwind label %148

151:                                              ; preds = %150
  %152 = getelementptr inbounds i8, ptr %1, i64 20
  %153 = load i32, ptr %152, align 4, !tbaa !39
  %154 = zext i32 %153 to i64
  %155 = add nuw nsw i64 %154, 20
  %156 = trunc i64 %155 to i16
  invoke void @_ZN4arsc10push_shortEtPN7android6VectorIcEE(i16 noundef zeroext %156, ptr noundef %3)
          to label %157 unwind label %176

157:                                              ; preds = %151
  %158 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #8
  %159 = shl i64 %158, 2
  %160 = add i64 %159, %155
  %161 = invoke noundef i64 @_ZNK7android6VectorIcE4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %9)
          to label %162 unwind label %178

162:                                              ; preds = %157
  %163 = add i64 %160, %161
  %164 = trunc i64 %163 to i32
  invoke void @_ZN4arsc9push_longEjPN7android6VectorIcEE(i32 noundef %164, ptr noundef %3)
          to label %165 unwind label %178

165:                                              ; preds = %162
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %26) #8
  %166 = getelementptr inbounds i8, ptr %0, i64 12
  %167 = load i8, ptr %166, align 4, !tbaa !40
  store i8 %167, ptr %26, align 1, !tbaa !41
  invoke void @_ZN7android6VectorIcE9push_backERKc(ptr noundef nonnull align 8 dereferenceable(40) %3, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %168 unwind label %180

168:                                              ; preds = %165
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %27) #8
  store i8 %.088, ptr %27, align 1, !tbaa !41
  invoke void @_ZN7android6VectorIcE9push_backERKc(ptr noundef nonnull align 8 dereferenceable(40) %3, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %169 unwind label %182

169:                                              ; preds = %168
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %28) #8
  store i8 0, ptr %28, align 1, !tbaa !41
  invoke void @_ZN7android6VectorIcE9push_backERKc(ptr noundef nonnull align 8 dereferenceable(40) %3, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %170 unwind label %184

170:                                              ; preds = %169
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %29) #8
  store i8 0, ptr %29, align 1, !tbaa !41
  invoke void @_ZN7android6VectorIcE9push_backERKc(ptr noundef nonnull align 8 dereferenceable(40) %3, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %171 unwind label %186

171:                                              ; preds = %170
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #8
  %172 = trunc i64 %158 to i32
  invoke void @_ZN4arsc9push_longEjPN7android6VectorIcEE(i32 noundef %172, ptr noundef nonnull %3)
          to label %173 unwind label %178

173:                                              ; preds = %171
  %174 = trunc i64 %160 to i32
  invoke void @_ZN4arsc9push_longEjPN7android6VectorIcEE(i32 noundef %174, ptr noundef nonnull %3)
          to label %175 unwind label %178

175:                                              ; preds = %173
  invoke void @_ZN4arsc12_GLOBAL__N_117push_data_no_swapEPvmPN7android6VectorIcEE(ptr noundef nonnull %152, i64 noundef %154, ptr noundef nonnull %3)
          to label %.preheader unwind label %188

.preheader:                                       ; preds = %175
  %.not = icmp eq i64 %158, 0
  br i1 %.not, label %._crit_edge115, label %.lr.ph114

._crit_edge115:                                   ; preds = %192, %.preheader
  invoke void @_ZN4arsc12_GLOBAL__N_18push_vecERN7android6VectorIcEEPS3_(ptr noundef nonnull align 8 dereferenceable(40) %9, ptr noundef nonnull %3)
          to label %196 unwind label %188

176:                                              ; preds = %151
  %177 = landingpad { ptr, i32 }
          cleanup
  br label %197

178:                                              ; preds = %173, %171, %162, %157
  %179 = landingpad { ptr, i32 }
          cleanup
  br label %197

180:                                              ; preds = %165
  %181 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #8
  br label %197

182:                                              ; preds = %168
  %183 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #8
  br label %197

184:                                              ; preds = %169
  %185 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #8
  br label %197

186:                                              ; preds = %170
  %187 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #8
  br label %197

188:                                              ; preds = %._crit_edge115, %175
  %189 = landingpad { ptr, i32 }
          cleanup
  br label %197

.lr.ph114:                                        ; preds = %.preheader, %192
  %.0113 = phi i64 [ %193, %192 ], [ 0, %.preheader ]
  %190 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %.0113) #8
  %191 = load i32, ptr %190, align 4, !tbaa !18
  invoke void @_ZN4arsc9push_longEjPN7android6VectorIcEE(i32 noundef %191, ptr noundef nonnull %3)
          to label %192 unwind label %194

192:                                              ; preds = %.lr.ph114
  %193 = add nuw i64 %.0113, 1
  %exitcond.not = icmp eq i64 %193, %158
  br i1 %exitcond.not, label %._crit_edge115, label %.lr.ph114, !llvm.loop !42

194:                                              ; preds = %.lr.ph114
  %195 = landingpad { ptr, i32 }
          cleanup
  br label %197

196:                                              ; preds = %._crit_edge115
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #8
  call void @_ZN4arsc16CanonicalEntriesD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %11) #8
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %11) #8
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #8
  call void @_ZN7android6VectorIcED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %9) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %9) #8
  br label %198

197:                                              ; preds = %144, %176, %188, %194, %186, %184, %182, %180, %178, %148, %76
  %.pn102.pn.pn = phi { ptr, i32 } [ %77, %76 ], [ %.pn102, %144 ], [ %149, %148 ], [ %177, %176 ], [ %179, %178 ], [ %187, %186 ], [ %185, %184 ], [ %183, %182 ], [ %181, %180 ], [ %195, %194 ], [ %189, %188 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #8
  call void @_ZN4arsc16CanonicalEntriesD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %11) #8
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %11) #8
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #8
  call void @_ZN7android6VectorIcED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %9) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %9) #8
  resume { ptr, i32 } %.pn102.pn.pn

198:                                              ; preds = %._crit_edge.thread, %._crit_edge, %196, %37
  %.1 = phi i1 [ false, %37 ], [ false, %._crit_edge ], [ true, %196 ], [ false, %._crit_edge.thread ]
  ret i1 %.1
}

declare void @_ZN7android11TypeVariantC1EPKNS_13ResTable_typeE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #5

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

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

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

declare noundef ptr @_ZNK7android11TypeVariant8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN4arsc19ResTableTypeBuilder7make_idEm(ptr noundef nonnull align 8 dereferenceable(15), i64 noundef) local_unnamed_addr #4 align 2

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

declare noundef nonnull align 8 dereferenceable(12) ptr @_ZN7android11TypeVariant8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN7android6VectorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #1 align 2

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN4arsc12_GLOBAL__N_117push_data_no_swapEPvmPN7android6VectorIcEE(ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN4arsc16CanonicalEntriesD2Ev(ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN7android6VectorIcED2Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #6 align 2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !11, i64 12}
!6 = !{!"_ZTSN7android13ResTable_typeE", !7, i64 0, !9, i64 8, !9, i64 9, !8, i64 10, !11, i64 12, !11, i64 16, !12, i64 20}
!7 = !{!"_ZTSN7android15ResChunk_headerE", !8, i64 0, !8, i64 2, !11, i64 4}
!8 = !{!"short", !9, i64 0}
!9 = !{!"omnipotent char", !10, i64 0}
!10 = !{!"Simple C++ TBAA"}
!11 = !{!"int", !9, i64 0}
!12 = !{!"_ZTSN7android15ResTable_configE", !11, i64 0, !9, i64 4, !9, i64 8, !9, i64 12, !9, i64 16, !9, i64 20, !9, i64 24, !9, i64 28, !9, i64 32, !9, i64 36, !9, i64 40, !9, i64 48, !13, i64 52, !9, i64 53}
!13 = !{!"bool", !9, i64 0}
!14 = !{!6, !11, i64 16}
!15 = !{!16, !16, i64 0}
!16 = !{!"any pointer", !9, i64 0}
!17 = !{!6, !9, i64 8}
!18 = !{!11, !11, i64 0}
!19 = distinct !{!19, !20}
!20 = !{!"llvm.loop.mustprogress"}
!21 = !{!22, !13, i64 13}
!22 = !{!"_ZTSN4arsc19ResTableTypeBuilderE", !11, i64 8, !9, i64 12, !13, i64 13, !13, i64 14}
!23 = !{i8 0, i8 2}
!24 = !{}
!25 = !{!26, !26, i64 0}
!26 = !{!"long", !9, i64 0}
!27 = !{!28, !13, i64 104}
!28 = !{!"_ZTSN4arsc21ResTableTypeProjectorE", !22, i64 0, !16, i64 16, !29, i64 24, !33, i64 48, !13, i64 104}
!29 = !{!"_ZTSSt6vectorIPN7android13ResTable_typeESaIS2_EE", !30, i64 0}
!30 = !{!"_ZTSSt12_Vector_baseIPN7android13ResTable_typeESaIS2_EE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIPN7android13ResTable_typeESaIS2_EE12_Vector_implE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseIPN7android13ResTable_typeESaIS2_EE17_Vector_impl_dataE", !16, i64 0, !16, i64 8, !16, i64 16}
!33 = !{!"_ZTSSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE", !34, i64 0}
!34 = !{!"_ZTSSt10_HashtableIjjSaIjENSt8__detail9_IdentityESt8equal_toIjESt4hashIjENS1_18_Mod_range_hashingENS1_20_Default_ranged_hashENS1_20_Prime_rehash_policyENS1_17_Hashtable_traitsILb0ELb1ELb1EEEE", !16, i64 0, !26, i64 8, !35, i64 16, !26, i64 24, !36, i64 32, !16, i64 48}
!35 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !16, i64 0}
!36 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !37, i64 0, !26, i64 8}
!37 = !{!"float", !9, i64 0}
!38 = distinct !{!38, !20}
!39 = !{!6, !11, i64 20}
!40 = !{!22, !9, i64 12}
!41 = !{!9, !9, i64 0}
!42 = distinct !{!42, !20}


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