; LLVM IR from facebook/redex :: tools/oatmeal/dex.ll (Z11quicken_dexPKcPK9QuickDataR10FileHandle)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.1" }
%"struct.std::_Head_base.1" = type { ptr }
%struct.stat = type { i64, i64, i64, i32, i32, i32, i32, i64, i64, i64, i64, %struct.timespec, %struct.timespec, %struct.timespec, [3 x i64] }
%struct.timespec = type { i64, i64 }
%"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 }
%"class.std::unique_ptr.7" = type { %"struct.std::__uniq_ptr_data.8" }
%"struct.std::__uniq_ptr_data.8" = type { %"class.std::__uniq_ptr_impl.9" }
%"class.std::__uniq_ptr_impl.9" = type { %"class.std::tuple.10" }
%"class.std::tuple.10" = type { %"struct.std::_Tuple_impl.11" }
%"struct.std::_Tuple_impl.11" = type { %"struct.std::_Head_base.14" }
%"struct.std::_Head_base.14" = type { ptr }
%struct.WritableBuffer = type { ptr, ptr, i64, i64 }
%struct.dex_header = type { [8 x i8], i32, [20 x i8], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%struct.dex_class_def = type { i32, i32, i32, i32, i32, i32, i32, i32 }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@stderr = external global ptr, align 8
@.str.1 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [7 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_Z11quicken_dexPKcPK9QuickDataR10FileHandle(ptr noundef %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(32) %2) #0 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca i8, align 1
  %10 = alloca %"class.std::unique_ptr", align 8
  %11 = alloca %struct.stat, align 8
  %12 = alloca i64, align 8
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca i8, align 1
  %16 = alloca i32, align 4
  %17 = alloca ptr, align 8
  %18 = alloca i32, align 4
  %19 = alloca %"class.std::unordered_map", align 8
  %20 = alloca %"class.std::unordered_map", align 8
  %21 = alloca i32, align 4
  %22 = alloca %"class.std::unique_ptr.7", align 8
  %23 = alloca %struct.WritableBuffer, align 8
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca i64, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca i64, align 8
  %31 = alloca i32, align 4
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  store ptr %2, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #9
  %32 = load ptr, ptr %4, align 8, !tbaa !5
  %33 = call noalias ptr @fopen(ptr noundef %32, ptr noundef @.str)
  store ptr %33, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %8) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #9
  br label %34

34:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr %9) #9
  %35 = load ptr, ptr %4, align 8, !tbaa !5
  %36 = icmp ne ptr %35, null
  %37 = zext i1 %36 to i8
  store i8 %37, ptr %9, align 1, !tbaa !9
  %38 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %39 = trunc i8 %38 to i1
  br i1 %39, label %47, label %40

40:                                               ; preds = %34
  %41 = load ptr, ptr @stderr, align 8, !tbaa !5
  %42 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %41, ptr noundef @.str.1, ptr noundef @.str.2, i32 noundef 578, ptr noundef @.str.3) #9
  %43 = load ptr, ptr @stderr, align 8, !tbaa !5
  %44 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %43, ptr noundef @.str.4) #9
  %45 = load ptr, ptr @stderr, align 8, !tbaa !5
  %46 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %45, ptr noundef @.str.5) #9
  br label %47

47:                                               ; preds = %40, %34
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #9
  br label %48

48:                                               ; preds = %47
  br label %49

49:                                               ; preds = %48
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #9
  call void @_ZNSt10unique_ptrI10MappedFileSt14default_deleteIS0_EEC2IS2_vEEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #9
  br label %50

50:                                               ; preds = %49
  br label %51

51:                                               ; preds = %50
  br label %52

52:                                               ; preds = %51
  call void @llvm.lifetime.start.p0(i64 144, ptr %11) #9
  call void @llvm.memset.p0.i64(ptr align 8 %11, i8 0, i64 144, i1 false)
  %53 = load ptr, ptr %7, align 8, !tbaa !5
  %54 = call i32 @fileno(ptr noundef %53) #9
  %55 = call i32 @fstat(i32 noundef %54, ptr noundef %11) #9
  %56 = icmp eq i32 %55, -1
  br i1 %56, label %57, label %61

57:                                               ; preds = %52
  %58 = load ptr, ptr @stderr, align 8, !tbaa !5
  %59 = load ptr, ptr %4, align 8, !tbaa !5
  %60 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %58, ptr noundef @.str.6, ptr noundef %59) #9
  call void @exit(i32 noundef 1) #10
  unreachable

61:                                               ; preds = %52
  %62 = getelementptr inbounds %struct.stat, ptr %11, i32 0, i32 3
  %63 = load i32, ptr %62, align 8, !tbaa !13
  %64 = and i32 %63, 61440
  %65 = icmp eq i32 %64, 16384
  br i1 %65, label %66, label %70

66:                                               ; preds = %61
  %67 = load ptr, ptr @stderr, align 8, !tbaa !5
  %68 = load ptr, ptr %4, align 8, !tbaa !5
  %69 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %67, ptr noundef @.str.7, ptr noundef %68) #9
  call void @exit(i32 noundef 1) #10
  unreachable

70:                                               ; preds = %61
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #9
  %71 = getelementptr inbounds %struct.stat, ptr %11, i32 0, i32 8
  %72 = load i64, ptr %71, align 8, !tbaa !18
  store i64 %72, ptr %12, align 8, !tbaa !19
  %73 = load i64, ptr %12, align 8, !tbaa !19
  %74 = load ptr, ptr %7, align 8, !tbaa !5
  %75 = call i32 @fileno(ptr noundef %74) #9
  %76 = load ptr, ptr %4, align 8, !tbaa !5
  %77 = invoke noundef ptr @_ZN10MappedFile9mmap_fileEmiiiPKcPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(i64 noundef %73, i32 noundef 1, i32 noundef 2, i32 noundef %75, ptr noundef %76, ptr noundef %8)
          to label %78 unwind label %94

78:                                               ; preds = %70
  call void @_ZNSt10unique_ptrI10MappedFileSt14default_deleteIS0_EE5resetEPS0_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef %77) #9
  %79 = call noundef zeroext i1 @_ZSteqI10MappedFileSt14default_deleteIS0_EEbRKSt10unique_ptrIT_T0_EDn(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr null) #9
  br i1 %79, label %80, label %101

80:                                               ; preds = %78
  br label %81

81:                                               ; preds = %80
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #9
  %82 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %8) #9
  %83 = xor i1 %82, true
  %84 = zext i1 %83 to i8
  store i8 %84, ptr %15, align 1, !tbaa !9
  %85 = load i8, ptr %15, align 1, !tbaa !9, !range !11, !noundef !12
  %86 = trunc i8 %85 to i1
  br i1 %86, label %98, label %87

87:                                               ; preds = %81
  %88 = load ptr, ptr @stderr, align 8, !tbaa !5
  %89 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %88, ptr noundef @.str.1, ptr noundef @.str.2, i32 noundef 596, ptr noundef @.str.8) #9
  %90 = load ptr, ptr @stderr, align 8, !tbaa !5
  %91 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %90, ptr noundef @.str.4) #9
  %92 = load ptr, ptr @stderr, align 8, !tbaa !5
  %93 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %92, ptr noundef @.str.5) #9
  br label %98

94:                                               ; preds = %70
  %95 = landingpad { ptr, i32 }
          cleanup
  %96 = extractvalue { ptr, i32 } %95, 0
  store ptr %96, ptr %13, align 8
  %97 = extractvalue { ptr, i32 } %95, 1
  store i32 %97, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #9
  call void @llvm.lifetime.end.p0(i64 144, ptr %11) #9
  br label %301

98:                                               ; preds = %87, %81
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #9
  br label %99

99:                                               ; preds = %98
  br label %100

100:                                              ; preds = %99
  store i32 1, ptr %16, align 4
  br label %105

101:                                              ; preds = %78
  br label %102

102:                                              ; preds = %101
  br label %103

103:                                              ; preds = %102
  br label %104

104:                                              ; preds = %103
  store i32 0, ptr %16, align 4
  br label %105

105:                                              ; preds = %104, %100
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #9
  call void @llvm.lifetime.end.p0(i64 144, ptr %11) #9
  %106 = load i32, ptr %16, align 4
  switch i32 %106, label %295 [
    i32 0, label %107
  ]

107:                                              ; preds = %105
  %108 = call noundef ptr @_ZNKSt10unique_ptrI10MappedFileSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #9
  %109 = invoke noundef i64 @_ZNK10MappedFile4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %108)
          to label %110 unwind label %116

110:                                              ; preds = %107
  %111 = icmp ult i64 %109, 112
  br i1 %111, label %112, label %120

112:                                              ; preds = %110
  %113 = load ptr, ptr @stderr, align 8, !tbaa !5
  %114 = load ptr, ptr %4, align 8, !tbaa !5
  %115 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %113, ptr noundef @.str.9, ptr noundef %114) #9
  call void @exit(i32 noundef 1) #10
  unreachable

116:                                              ; preds = %107
  %117 = landingpad { ptr, i32 }
          cleanup
  %118 = extractvalue { ptr, i32 } %117, 0
  store ptr %118, ptr %13, align 8
  %119 = extractvalue { ptr, i32 } %117, 1
  store i32 %119, ptr %14, align 4
  br label %301

120:                                              ; preds = %110
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #9
  %121 = call noundef ptr @_ZNKSt10unique_ptrI10MappedFileSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #9
  %122 = invoke noundef ptr @_ZNK10MappedFile5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %121)
          to label %123 unwind label %139

123:                                              ; preds = %120
  store ptr %122, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #9
  %124 = load ptr, ptr %17, align 8, !tbaa !5
  %125 = getelementptr inbounds %struct.dex_header, ptr %124, i32 0, i32 20
  %126 = load i32, ptr %125, align 1, !tbaa !20
  store i32 %126, ptr %18, align 4, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 56, ptr %19) #9
  call void @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %19) #9
  call void @llvm.lifetime.start.p0(i64 56, ptr %20) #9
  call void @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %20) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #9
  store i32 524288, ptr %21, align 4, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #9
  %127 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef 524288) #11
          to label %128 unwind label %143

128:                                              ; preds = %123
  call void @_ZNSt10unique_ptrIA_cSt14default_deleteIS0_EEC2IPcS2_vbEET_(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef %127) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %23) #9
  %129 = load ptr, ptr %6, align 8, !tbaa !5
  %130 = call noundef ptr @_ZNKSt10unique_ptrIA_cSt14default_deleteIS0_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #9
  invoke void @_ZN14WritableBufferC2ER10FileHandlePcm(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 8 dereferenceable(32) %129, ptr noundef %130, i64 noundef 524288)
          to label %131 unwind label %147

131:                                              ; preds = %128
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #9
  store i64 0, ptr %25, align 8, !tbaa !19
  br label %132

132:                                              ; preds = %290, %131
  %133 = load i64, ptr %25, align 8, !tbaa !19
  %134 = call noundef ptr @_ZNKSt10unique_ptrI10MappedFileSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #9
  %135 = invoke noundef i64 @_ZNK10MappedFile4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %134)
          to label %136 unwind label %151

136:                                              ; preds = %132
  %137 = icmp ult i64 %133, %135
  br i1 %137, label %155, label %138

138:                                              ; preds = %136
  store i32 10, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #9
  br label %294

139:                                              ; preds = %120
  %140 = landingpad { ptr, i32 }
          cleanup
  %141 = extractvalue { ptr, i32 } %140, 0
  store ptr %141, ptr %13, align 8
  %142 = extractvalue { ptr, i32 } %140, 1
  store i32 %142, ptr %14, align 4
  br label %300

143:                                              ; preds = %123
  %144 = landingpad { ptr, i32 }
          cleanup
  %145 = extractvalue { ptr, i32 } %144, 0
  store ptr %145, ptr %13, align 8
  %146 = extractvalue { ptr, i32 } %144, 1
  store i32 %146, ptr %14, align 4
  br label %299

147:                                              ; preds = %128
  %148 = landingpad { ptr, i32 }
          cleanup
  %149 = extractvalue { ptr, i32 } %148, 0
  store ptr %149, ptr %13, align 8
  %150 = extractvalue { ptr, i32 } %148, 1
  store i32 %150, ptr %14, align 4
  br label %298

151:                                              ; preds = %285, %282, %273, %270, %132
  %152 = landingpad { ptr, i32 }
          cleanup
  %153 = extractvalue { ptr, i32 } %152, 0
  store ptr %153, ptr %13, align 8
  %154 = extractvalue { ptr, i32 } %152, 1
  store i32 %154, ptr %14, align 4
  br label %293

155:                                              ; preds = %136
  %156 = load i64, ptr %25, align 8, !tbaa !19
  %157 = load i32, ptr %18, align 4, !tbaa !22
  %158 = zext i32 %157 to i64
  %159 = icmp uge i64 %156, %158
  br i1 %159, label %160, label %264

160:                                              ; preds = %155
  %161 = load i64, ptr %25, align 8, !tbaa !19
  %162 = load i32, ptr %18, align 4, !tbaa !22
  %163 = zext i32 %162 to i64
  %164 = load ptr, ptr %17, align 8, !tbaa !5
  %165 = getelementptr inbounds %struct.dex_header, ptr %164, i32 0, i32 19
  %166 = load i32, ptr %165, align 1, !tbaa !23
  %167 = zext i32 %166 to i64
  %168 = mul i64 %167, 32
  %169 = add i64 %163, %168
  %170 = icmp ult i64 %161, %169
  br i1 %170, label %171, label %264

171:                                              ; preds = %160
  %172 = load i64, ptr %25, align 8, !tbaa !19
  %173 = load i32, ptr %18, align 4, !tbaa !22
  %174 = zext i32 %173 to i64
  %175 = sub i64 %172, %174
  %176 = urem i64 %175, 32
  %177 = icmp eq i64 %176, 0
  br i1 %177, label %178, label %264

178:                                              ; preds = %171
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #9
  %179 = call noundef ptr @_ZNKSt10unique_ptrI10MappedFileSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #9
  %180 = invoke noundef ptr @_ZNK10MappedFile5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %179)
          to label %181 unwind label %224

181:                                              ; preds = %178
  %182 = load i64, ptr %25, align 8, !tbaa !19
  %183 = getelementptr inbounds i8, ptr %180, i64 %182
  store ptr %183, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #9
  %184 = call noundef ptr @_ZNKSt10unique_ptrI10MappedFileSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #9
  %185 = invoke noundef ptr @_ZNK10MappedFile5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %184)
          to label %186 unwind label %228

186:                                              ; preds = %181
  %187 = load ptr, ptr %17, align 8, !tbaa !5
  %188 = getelementptr inbounds %struct.dex_header, ptr %187, i32 0, i32 12
  %189 = load i32, ptr %188, align 1, !tbaa !24
  %190 = zext i32 %189 to i64
  %191 = getelementptr inbounds i8, ptr %185, i64 %190
  %192 = load ptr, ptr %26, align 8, !tbaa !5
  %193 = getelementptr inbounds %struct.dex_class_def, ptr %192, i32 0, i32 0
  %194 = load i32, ptr %193, align 1, !tbaa !25
  %195 = zext i32 %194 to i64
  %196 = mul i64 %195, 4
  %197 = getelementptr inbounds i8, ptr %191, i64 %196
  store ptr %197, ptr %27, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #9
  %198 = call noundef ptr @_ZNKSt10unique_ptrI10MappedFileSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #9
  %199 = invoke noundef ptr @_ZNK10MappedFile5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %198)
          to label %200 unwind label %232

200:                                              ; preds = %186
  %201 = load ptr, ptr %17, align 8, !tbaa !5
  %202 = getelementptr inbounds %struct.dex_header, ptr %201, i32 0, i32 10
  %203 = load i32, ptr %202, align 1, !tbaa !27
  %204 = zext i32 %203 to i64
  %205 = getelementptr inbounds i8, ptr %199, i64 %204
  %206 = load ptr, ptr %27, align 8, !tbaa !5
  %207 = load i32, ptr %206, align 4, !tbaa !22
  %208 = zext i32 %207 to i64
  %209 = mul i64 %208, 4
  %210 = getelementptr inbounds i8, ptr %205, i64 %209
  store ptr %210, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %29) #9
  %211 = call noundef ptr @_ZNKSt10unique_ptrI10MappedFileSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #9
  %212 = invoke noundef ptr @_ZNK10MappedFile5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %211)
          to label %213 unwind label %236

213:                                              ; preds = %200
  %214 = load ptr, ptr %28, align 8, !tbaa !5
  %215 = load i32, ptr %214, align 4, !tbaa !22
  %216 = zext i32 %215 to i64
  %217 = getelementptr inbounds i8, ptr %212, i64 %216
  invoke void @_Z11read_stringB5cxx11PKh(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %29, ptr noundef %217)
          to label %218 unwind label %236

218:                                              ; preds = %213
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #9
  %219 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef @.str.10, i64 noundef 0) #9
  store i64 %219, ptr %30, align 8, !tbaa !19
  %220 = load i64, ptr %30, align 8, !tbaa !19
  %221 = icmp ne i64 %220, -1
  br i1 %221, label %222, label %240

222:                                              ; preds = %218
  %223 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull align 8 dereferenceable(32) %29) #9
  br label %240

224:                                              ; preds = %178
  %225 = landingpad { ptr, i32 }
          cleanup
  %226 = extractvalue { ptr, i32 } %225, 0
  store ptr %226, ptr %13, align 8
  %227 = extractvalue { ptr, i32 } %225, 1
  store i32 %227, ptr %14, align 4
  br label %263

228:                                              ; preds = %181
  %229 = landingpad { ptr, i32 }
          cleanup
  %230 = extractvalue { ptr, i32 } %229, 0
  store ptr %230, ptr %13, align 8
  %231 = extractvalue { ptr, i32 } %229, 1
  store i32 %231, ptr %14, align 4
  br label %262

232:                                              ; preds = %186
  %233 = landingpad { ptr, i32 }
          cleanup
  %234 = extractvalue { ptr, i32 } %233, 0
  store ptr %234, ptr %13, align 8
  %235 = extractvalue { ptr, i32 } %233, 1
  store i32 %235, ptr %14, align 4
  br label %261

236:                                              ; preds = %213, %200
  %237 = landingpad { ptr, i32 }
          cleanup
  %238 = extractvalue { ptr, i32 } %237, 0
  store ptr %238, ptr %13, align 8
  %239 = extractvalue { ptr, i32 } %237, 1
  store i32 %239, ptr %14, align 4
  br label %260

240:                                              ; preds = %222, %218
  %241 = load ptr, ptr %26, align 8, !tbaa !5
  %242 = getelementptr inbounds %struct.dex_class_def, ptr %241, i32 0, i32 6
  %243 = load i32, ptr %242, align 1, !tbaa !28
  %244 = icmp ne i32 %243, 0
  br i1 %244, label %245, label %259

245:                                              ; preds = %240
  %246 = call noundef ptr @_ZNKSt10unique_ptrI10MappedFileSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #9
  %247 = invoke noundef ptr @_ZNK10MappedFile5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %246)
          to label %248 unwind label %255

248:                                              ; preds = %245
  %249 = load ptr, ptr %26, align 8, !tbaa !5
  %250 = getelementptr inbounds %struct.dex_class_def, ptr %249, i32 0, i32 6
  %251 = load i32, ptr %250, align 1, !tbaa !28
  %252 = zext i32 %251 to i64
  %253 = getelementptr inbounds i8, ptr %247, i64 %252
  invoke void @_ZN12_GLOBAL__N_120load_class_data_itemEPKhRSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEE(ptr noundef %253, ptr noundef nonnull align 8 dereferenceable(56) %20)
          to label %254 unwind label %255

254:                                              ; preds = %248
  br label %259

255:                                              ; preds = %248, %245
  %256 = landingpad { ptr, i32 }
          cleanup
  %257 = extractvalue { ptr, i32 } %256, 0
  store ptr %257, ptr %13, align 8
  %258 = extractvalue { ptr, i32 } %256, 1
  store i32 %258, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #9
  br label %260

259:                                              ; preds = %254, %240
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #9
  br label %264

260:                                              ; preds = %255, %236
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #9
  br label %261

261:                                              ; preds = %260, %232
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #9
  br label %262

262:                                              ; preds = %261, %228
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #9
  br label %263

263:                                              ; preds = %262, %224
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #9
  br label %293

264:                                              ; preds = %259, %171, %160, %155
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #9
  %265 = load i64, ptr %25, align 8, !tbaa !19
  %266 = trunc i64 %265 to i32
  store i32 %266, ptr %31, align 4, !tbaa !22
  %267 = invoke noundef i64 @_ZNKSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEE5countERS5_(ptr noundef nonnull align 8 dereferenceable(56) %20, ptr noundef nonnull align 4 dereferenceable(4) %31)
          to label %268 unwind label %278

268:                                              ; preds = %264
  %269 = icmp ne i64 %267, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #9
  br i1 %269, label %270, label %282

270:                                              ; preds = %268
  %271 = call noundef ptr @_ZNKSt10unique_ptrI10MappedFileSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #9
  %272 = invoke noundef ptr @_ZNK10MappedFile5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %271)
          to label %273 unwind label %151

273:                                              ; preds = %270
  %274 = load i64, ptr %25, align 8, !tbaa !19
  %275 = getelementptr inbounds i8, ptr %272, i64 %274
  %276 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN12_GLOBAL__N_114load_code_itemEPhPK9QuickDataPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERmR14WritableBuffer(ptr noundef %275, ptr noundef %276, ptr noundef %24, ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(32) %23)
          to label %277 unwind label %151

277:                                              ; preds = %273
  br label %289

278:                                              ; preds = %264
  %279 = landingpad { ptr, i32 }
          cleanup
  %280 = extractvalue { ptr, i32 } %279, 0
  store ptr %280, ptr %13, align 8
  %281 = extractvalue { ptr, i32 } %279, 1
  store i32 %281, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #9
  br label %293

282:                                              ; preds = %268
  %283 = call noundef ptr @_ZNKSt10unique_ptrI10MappedFileSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #9
  %284 = invoke noundef ptr @_ZNK10MappedFile5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %283)
          to label %285 unwind label %151

285:                                              ; preds = %282
  %286 = load i64, ptr %25, align 8, !tbaa !19
  %287 = getelementptr inbounds i8, ptr %284, i64 %286
  invoke void @_ZN14WritableBufferlsEPc(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef %287)
          to label %288 unwind label %151

288:                                              ; preds = %285
  br label %289

289:                                              ; preds = %288, %277
  br label %290

290:                                              ; preds = %289
  %291 = load i64, ptr %25, align 8, !tbaa !19
  %292 = add i64 %291, 1
  store i64 %292, ptr %25, align 8, !tbaa !19
  br label %132, !llvm.loop !29

293:                                              ; preds = %278, %263, %151
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #9
  call void @_ZN14WritableBufferD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #9
  br label %298

294:                                              ; preds = %138
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #9
  call void @_ZN14WritableBufferD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #9
  call void @_ZNSt10unique_ptrIA_cSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #9
  call void @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %20) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr %20) #9
  call void @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %19) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr %19) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #9
  store i32 0, ptr %16, align 4
  br label %295

295:                                              ; preds = %294, %105
  call void @_ZNSt10unique_ptrI10MappedFileSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %8) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #9
  %296 = load i32, ptr %16, align 4
  switch i32 %296, label %307 [
    i32 0, label %297
    i32 1, label %297
  ]

297:                                              ; preds = %295, %295
  ret void

298:                                              ; preds = %293, %147
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #9
  call void @_ZNSt10unique_ptrIA_cSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #9
  br label %299

299:                                              ; preds = %298, %143
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #9
  call void @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %20) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr %20) #9
  call void @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %19) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr %19) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #9
  br label %300

300:                                              ; preds = %299, %139
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #9
  br label %301

301:                                              ; preds = %300, %116, %94
  call void @_ZNSt10unique_ptrI10MappedFileSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %8) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #9
  br label %302

302:                                              ; preds = %301
  %303 = load ptr, ptr %13, align 8
  %304 = load i32, ptr %14, align 4
  %305 = insertvalue { ptr, i32 } poison, ptr %303, 0
  %306 = insertvalue { ptr, i32 } %305, i32 %304, 1
  resume { ptr, i32 } %306

307:                                              ; preds = %295
  unreachable
}

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

declare noalias ptr @fopen(ptr noundef, ptr noundef) #2

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

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

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5

; Function Attrs: nounwind
declare i32 @fstat(i32 noundef, ptr noundef) #4

; Function Attrs: nounwind
declare i32 @fileno(ptr noundef) #4

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) #6

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

declare noundef ptr @_ZN10MappedFile9mmap_fileEmiiiPKcPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(i64 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef) #2

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress nounwind uwtable
declare noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32)) #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK10MappedFile4sizeEv(ptr noundef nonnull align 8 dereferenceable(48)) #3 align 2

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

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

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znam(i64 noundef) #8

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN14WritableBufferC2ER10FileHandlePcm(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, i64 noundef) unnamed_addr #3 align 2

declare void @_Z11read_stringB5cxx11PKh(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef) #2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_114load_code_itemEPhPK9QuickDataPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERmR14WritableBuffer(ptr noundef, ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) #0

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

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

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

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

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

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

!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 = !{!"bool", !7, i64 0}
!11 = !{i8 0, i8 2}
!12 = !{}
!13 = !{!14, !16, i64 24}
!14 = !{!"_ZTS4stat", !15, i64 0, !15, i64 8, !15, i64 16, !16, i64 24, !16, i64 28, !16, i64 32, !16, i64 36, !15, i64 40, !15, i64 48, !15, i64 56, !15, i64 64, !17, i64 72, !17, i64 88, !17, i64 104, !7, i64 120}
!15 = !{!"long", !7, i64 0}
!16 = !{!"int", !7, i64 0}
!17 = !{!"_ZTS8timespec", !15, i64 0, !15, i64 8}
!18 = !{!14, !15, i64 48}
!19 = !{!15, !15, i64 0}
!20 = !{!21, !16, i64 100}
!21 = !{!"_ZTS10dex_header", !7, i64 0, !16, i64 8, !7, i64 12, !16, i64 32, !16, i64 36, !16, i64 40, !16, i64 44, !16, i64 48, !16, i64 52, !16, i64 56, !16, i64 60, !16, i64 64, !16, i64 68, !16, i64 72, !16, i64 76, !16, i64 80, !16, i64 84, !16, i64 88, !16, i64 92, !16, i64 96, !16, i64 100, !16, i64 104, !16, i64 108}
!22 = !{!16, !16, i64 0}
!23 = !{!21, !16, i64 96}
!24 = !{!21, !16, i64 68}
!25 = !{!26, !16, i64 0}
!26 = !{!"_ZTS13dex_class_def", !16, i64 0, !16, i64 4, !16, i64 8, !16, i64 12, !16, i64 16, !16, i64 20, !16, i64 24, !16, i64 28}
!27 = !{!21, !16, i64 60}
!28 = !{!26, !16, i64 24}
!29 = distinct !{!29, !30}
!30 = !{!"llvm.loop.mustprogress"}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.1" }
%"struct.std::_Head_base.1" = type { ptr }
%struct.stat = type { i64, i64, i64, i32, i32, i32, i32, i64, i64, i64, i64, %struct.timespec, %struct.timespec, %struct.timespec, [3 x i64] }
%struct.timespec = type { i64, i64 }
%"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 }
%"class.std::unique_ptr.7" = type { %"struct.std::__uniq_ptr_data.8" }
%"struct.std::__uniq_ptr_data.8" = type { %"class.std::__uniq_ptr_impl.9" }
%"class.std::__uniq_ptr_impl.9" = type { %"class.std::tuple.10" }
%"class.std::tuple.10" = type { %"struct.std::_Tuple_impl.11" }
%"struct.std::_Tuple_impl.11" = type { %"struct.std::_Head_base.14" }
%"struct.std::_Head_base.14" = type { ptr }
%struct.WritableBuffer = type { ptr, ptr, i64, i64 }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@stderr = external local_unnamed_addr global ptr, align 8
@.str.1 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [7 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_Z11quicken_dexPKcPK9QuickDataR10FileHandle(ptr noundef %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(32) %2) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"class.std::__cxx11::basic_string", align 8
  %5 = alloca %"class.std::unique_ptr", align 8
  %6 = alloca %struct.stat, align 8
  %7 = alloca %"class.std::unordered_map", align 8
  %8 = alloca %"class.std::unordered_map", align 8
  %9 = alloca %"class.std::unique_ptr.7", align 8
  %10 = alloca %struct.WritableBuffer, align 8
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca i64, align 8
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca i32, align 4
  %15 = tail call noalias ptr @fopen(ptr noundef %0, ptr noundef nonnull @.str)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #9
  %.not = icmp eq ptr %0, null
  br i1 %.not, label %16, label %23

16:                                               ; preds = %3
  %17 = load ptr, ptr @stderr, align 8, !tbaa !5
  %18 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %17, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, i32 noundef 578, ptr noundef nonnull @.str.3) #10
  %19 = load ptr, ptr @stderr, align 8, !tbaa !5
  %20 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %19, ptr noundef nonnull @.str.4) #10
  %21 = load ptr, ptr @stderr, align 8, !tbaa !5
  %22 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %21, ptr noundef nonnull @.str.5) #10
  br label %23

23:                                               ; preds = %16, %3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #9
  call void @_ZNSt10unique_ptrI10MappedFileSt14default_deleteIS0_EEC2IS2_vEEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #9
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %6) #9
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(144) %6, i8 0, i64 144, i1 false)
  %24 = call i32 @fileno(ptr noundef %15) #9
  %25 = call i32 @fstat(i32 noundef %24, ptr noundef nonnull %6) #9
  %26 = icmp eq i32 %25, -1
  br i1 %26, label %27, label %30

27:                                               ; preds = %23
  %28 = load ptr, ptr @stderr, align 8, !tbaa !5
  %29 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %28, ptr noundef nonnull @.str.6, ptr noundef %0) #10
  call void @exit(i32 noundef 1) #11
  unreachable

30:                                               ; preds = %23
  %31 = getelementptr inbounds i8, ptr %6, i64 24
  %32 = load i32, ptr %31, align 8, !tbaa !9
  %33 = and i32 %32, 61440
  %34 = icmp eq i32 %33, 16384
  br i1 %34, label %35, label %38

35:                                               ; preds = %30
  %36 = load ptr, ptr @stderr, align 8, !tbaa !5
  %37 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %36, ptr noundef nonnull @.str.7, ptr noundef %0) #10
  call void @exit(i32 noundef 1) #11
  unreachable

38:                                               ; preds = %30
  %39 = getelementptr inbounds i8, ptr %6, i64 48
  %40 = load i64, ptr %39, align 8, !tbaa !14
  %41 = call i32 @fileno(ptr noundef %15) #9
  %42 = invoke noundef ptr @_ZN10MappedFile9mmap_fileEmiiiPKcPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(i64 noundef %40, i32 noundef 1, i32 noundef 2, i32 noundef %41, ptr noundef %0, ptr noundef nonnull %4)
          to label %43 unwind label %54

43:                                               ; preds = %38
  call void @_ZNSt10unique_ptrI10MappedFileSt14default_deleteIS0_EE5resetEPS0_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef %42) #9
  %44 = call noundef zeroext i1 @_ZSteqI10MappedFileSt14default_deleteIS0_EEbRKSt10unique_ptrIT_T0_EDn(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr null) #9
  br i1 %44, label %45, label %57

45:                                               ; preds = %43
  %46 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %4) #9
  br i1 %46, label %47, label %56

47:                                               ; preds = %45
  %48 = load ptr, ptr @stderr, align 8, !tbaa !5
  %49 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %48, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, i32 noundef 596, ptr noundef nonnull @.str.8) #10
  %50 = load ptr, ptr @stderr, align 8, !tbaa !5
  %51 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %50, ptr noundef nonnull @.str.4) #10
  %52 = load ptr, ptr @stderr, align 8, !tbaa !5
  %53 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %52, ptr noundef nonnull @.str.5) #10
  br label %56

54:                                               ; preds = %38
  %55 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %6) #9
  br label %163

56:                                               ; preds = %45, %47
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %6) #9
  br label %161

57:                                               ; preds = %43
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %6) #9
  %58 = call noundef ptr @_ZNKSt10unique_ptrI10MappedFileSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #9
  %59 = call noundef i64 @_ZNK10MappedFile4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %58)
  %60 = icmp ult i64 %59, 112
  br i1 %60, label %61, label %64

61:                                               ; preds = %57
  %62 = load ptr, ptr @stderr, align 8, !tbaa !5
  %63 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %62, ptr noundef nonnull @.str.9, ptr noundef %0) #10
  call void @exit(i32 noundef 1) #11
  unreachable

64:                                               ; preds = %57
  %65 = call noundef ptr @_ZNKSt10unique_ptrI10MappedFileSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #9
  %66 = call noundef ptr @_ZNK10MappedFile5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %65)
  %67 = getelementptr inbounds i8, ptr %66, i64 100
  %68 = load i32, ptr %67, align 1, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %7) #9
  call void @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %7) #9
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %8) #9
  call void @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %8) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #9
  %69 = invoke noalias noundef nonnull dereferenceable(524288) ptr @_Znam(i64 noundef 524288) #12
          to label %70 unwind label %78

70:                                               ; preds = %64
  call void @_ZNSt10unique_ptrIA_cSt14default_deleteIS0_EEC2IPcS2_vbEET_(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull %69) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #9
  %71 = call noundef ptr @_ZNKSt10unique_ptrIA_cSt14default_deleteIS0_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %9) #9
  call void @_ZN14WritableBufferC2ER10FileHandlePcm(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef %71, i64 noundef 524288)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #9
  store i64 0, ptr %12, align 8, !tbaa !17
  %72 = call noundef ptr @_ZNKSt10unique_ptrI10MappedFileSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #9
  %73 = call noundef i64 @_ZNK10MappedFile4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %72)
  %.not44 = icmp eq i64 %73, 0
  br i1 %.not44, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %70
  %74 = zext i32 %68 to i64
  %75 = getelementptr inbounds i8, ptr %66, i64 96
  %76 = getelementptr inbounds i8, ptr %66, i64 68
  %77 = getelementptr inbounds i8, ptr %66, i64 60
  br label %82

._crit_edge:                                      ; preds = %154, %70
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #9
  call void @_ZN14WritableBufferD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #9
  call void @_ZNSt10unique_ptrIA_cSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #9
  call void @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %8) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %8) #9
  call void @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %7) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %7) #9
  br label %161

78:                                               ; preds = %64
  %79 = landingpad { ptr, i32 }
          cleanup
  br label %162

80:                                               ; preds = %153, %150
  %81 = landingpad { ptr, i32 }
          cleanup
  br label %160

82:                                               ; preds = %.lr.ph, %154
  %83 = load i64, ptr %12, align 8, !tbaa !17
  %.not35 = icmp ult i64 %83, %74
  br i1 %.not35, label %141, label %84

84:                                               ; preds = %82
  %85 = load i32, ptr %75, align 1, !tbaa !18
  %86 = zext i32 %85 to i64
  %87 = shl nuw nsw i64 %86, 5
  %88 = add nuw nsw i64 %87, %74
  %89 = icmp ult i64 %83, %88
  br i1 %89, label %90, label %141

90:                                               ; preds = %84
  %91 = sub nsw i64 %83, %74
  %92 = and i64 %91, 31
  %93 = icmp eq i64 %92, 0
  br i1 %93, label %94, label %141

94:                                               ; preds = %90
  %95 = call noundef ptr @_ZNKSt10unique_ptrI10MappedFileSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #9
  %96 = call noundef ptr @_ZNK10MappedFile5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %95)
  %97 = load i64, ptr %12, align 8, !tbaa !17
  %98 = getelementptr inbounds i8, ptr %96, i64 %97
  %99 = call noundef ptr @_ZNKSt10unique_ptrI10MappedFileSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #9
  %100 = call noundef ptr @_ZNK10MappedFile5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %99)
  %101 = load i32, ptr %76, align 1, !tbaa !19
  %102 = zext i32 %101 to i64
  %103 = getelementptr inbounds i8, ptr %100, i64 %102
  %104 = load i32, ptr %98, align 1, !tbaa !20
  %105 = zext i32 %104 to i64
  %106 = shl nuw nsw i64 %105, 2
  %107 = getelementptr inbounds i8, ptr %103, i64 %106
  %108 = call noundef ptr @_ZNKSt10unique_ptrI10MappedFileSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #9
  %109 = call noundef ptr @_ZNK10MappedFile5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %108)
  %110 = load i32, ptr %77, align 1, !tbaa !22
  %111 = zext i32 %110 to i64
  %112 = getelementptr inbounds i8, ptr %109, i64 %111
  %113 = load i32, ptr %107, align 4, !tbaa !23
  %114 = zext i32 %113 to i64
  %115 = shl nuw nsw i64 %114, 2
  %116 = getelementptr inbounds i8, ptr %112, i64 %115
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #9
  %117 = call noundef ptr @_ZNKSt10unique_ptrI10MappedFileSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #9
  %118 = call noundef ptr @_ZNK10MappedFile5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %117)
  %119 = load i32, ptr %116, align 4, !tbaa !23
  %120 = zext i32 %119 to i64
  %121 = getelementptr inbounds i8, ptr %118, i64 %120
  invoke void @_Z11read_stringB5cxx11PKh(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %13, ptr noundef %121)
          to label %122 unwind label %126

122:                                              ; preds = %94
  %123 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull @.str.10, i64 noundef 0) #9
  %.not36 = icmp eq i64 %123, -1
  br i1 %.not36, label %128, label %124

124:                                              ; preds = %122
  %125 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(32) %13) #9
  br label %128

126:                                              ; preds = %94
  %127 = landingpad { ptr, i32 }
          cleanup
  br label %140

128:                                              ; preds = %124, %122
  %129 = getelementptr inbounds i8, ptr %98, i64 24
  %130 = load i32, ptr %129, align 1, !tbaa !24
  %.not37 = icmp eq i32 %130, 0
  br i1 %.not37, label %139, label %131

131:                                              ; preds = %128
  %132 = call noundef ptr @_ZNKSt10unique_ptrI10MappedFileSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #9
  %133 = call noundef ptr @_ZNK10MappedFile5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %132)
  %134 = load i32, ptr %129, align 1, !tbaa !24
  %135 = zext i32 %134 to i64
  %136 = getelementptr inbounds i8, ptr %133, i64 %135
  invoke void @_ZN12_GLOBAL__N_120load_class_data_itemEPKhRSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEE(ptr noundef %136, ptr noundef nonnull align 8 dereferenceable(56) %8)
          to label %139 unwind label %137

137:                                              ; preds = %131
  %138 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #9
  br label %140

139:                                              ; preds = %131, %128
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #9
  %.pre = load i64, ptr %12, align 8, !tbaa !17
  br label %141

140:                                              ; preds = %137, %126
  %.pn = phi { ptr, i32 } [ %138, %137 ], [ %127, %126 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #9
  br label %160

141:                                              ; preds = %139, %90, %84, %82
  %142 = phi i64 [ %.pre, %139 ], [ %83, %90 ], [ %83, %84 ], [ %83, %82 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #9
  %143 = trunc i64 %142 to i32
  store i32 %143, ptr %14, align 4, !tbaa !23
  %144 = invoke noundef i64 @_ZNKSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEE5countERS5_(ptr noundef nonnull align 8 dereferenceable(56) %8, ptr noundef nonnull align 4 dereferenceable(4) %14)
          to label %145 unwind label %151

145:                                              ; preds = %141
  %.not39 = icmp eq i64 %144, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #9
  %146 = call noundef ptr @_ZNKSt10unique_ptrI10MappedFileSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #9
  %147 = call noundef ptr @_ZNK10MappedFile5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %146)
  %148 = load i64, ptr %12, align 8, !tbaa !17
  %149 = getelementptr inbounds i8, ptr %147, i64 %148
  br i1 %.not39, label %153, label %150

150:                                              ; preds = %145
  invoke void @_ZN12_GLOBAL__N_114load_code_itemEPhPK9QuickDataPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERmR14WritableBuffer(ptr noundef %149, ptr noundef %1, ptr noundef nonnull %11, ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(32) %10)
          to label %154 unwind label %80

151:                                              ; preds = %141
  %152 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #9
  br label %160

153:                                              ; preds = %145
  invoke void @_ZN14WritableBufferlsEPc(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef %149)
          to label %154 unwind label %80

154:                                              ; preds = %150, %153
  %155 = load i64, ptr %12, align 8, !tbaa !17
  %156 = add i64 %155, 1
  store i64 %156, ptr %12, align 8, !tbaa !17
  %157 = call noundef ptr @_ZNKSt10unique_ptrI10MappedFileSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #9
  %158 = call noundef i64 @_ZNK10MappedFile4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %157)
  %159 = icmp ult i64 %156, %158
  br i1 %159, label %82, label %._crit_edge, !llvm.loop !25

160:                                              ; preds = %151, %140, %80
  %.pn40 = phi { ptr, i32 } [ %81, %80 ], [ %152, %151 ], [ %.pn, %140 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #9
  call void @_ZN14WritableBufferD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #9
  call void @_ZNSt10unique_ptrIA_cSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #9
  br label %162

161:                                              ; preds = %56, %._crit_edge
  call void @_ZNSt10unique_ptrI10MappedFileSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #9
  ret void

162:                                              ; preds = %160, %78
  %.pn40.pn = phi { ptr, i32 } [ %.pn40, %160 ], [ %79, %78 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #9
  call void @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %8) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %8) #9
  call void @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %7) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %7) #9
  br label %163

163:                                              ; preds = %162, %54
  %.pn40.pn.pn = phi { ptr, i32 } [ %.pn40.pn, %162 ], [ %55, %54 ]
  call void @_ZNSt10unique_ptrI10MappedFileSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #9
  resume { ptr, i32 } %.pn40.pn.pn
}

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

; Function Attrs: nofree nounwind
declare noalias noundef ptr @fopen(ptr nocapture noundef readonly, ptr nocapture noundef readonly) local_unnamed_addr #2

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

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

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

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

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #4

; Function Attrs: nofree nounwind
declare noundef i32 @fstat(i32 noundef, ptr nocapture noundef) local_unnamed_addr #2

; Function Attrs: nofree nounwind
declare noundef i32 @fileno(ptr nocapture noundef) local_unnamed_addr #2

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) local_unnamed_addr #5

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

declare noundef ptr @_ZN10MappedFile9mmap_fileEmiiiPKcPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(i64 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #6

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress nounwind uwtable
declare noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK10MappedFile4sizeEv(ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #3 align 2

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

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

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znam(i64 noundef) local_unnamed_addr #8

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN14WritableBufferC2ER10FileHandlePcm(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, i64 noundef) unnamed_addr #3 align 2

declare void @_Z11read_stringB5cxx11PKh(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef) local_unnamed_addr #6

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_114load_code_itemEPhPK9QuickDataPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERmR14WritableBuffer(ptr noundef, ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0

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

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

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

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

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

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

!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, !12, i64 24}
!10 = !{!"_ZTS4stat", !11, i64 0, !11, i64 8, !11, i64 16, !12, i64 24, !12, i64 28, !12, i64 32, !12, i64 36, !11, i64 40, !11, i64 48, !11, i64 56, !11, i64 64, !13, i64 72, !13, i64 88, !13, i64 104, !7, i64 120}
!11 = !{!"long", !7, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!"_ZTS8timespec", !11, i64 0, !11, i64 8}
!14 = !{!10, !11, i64 48}
!15 = !{!16, !12, i64 100}
!16 = !{!"_ZTS10dex_header", !7, i64 0, !12, i64 8, !7, i64 12, !12, i64 32, !12, i64 36, !12, i64 40, !12, i64 44, !12, i64 48, !12, i64 52, !12, i64 56, !12, i64 60, !12, i64 64, !12, i64 68, !12, i64 72, !12, i64 76, !12, i64 80, !12, i64 84, !12, i64 88, !12, i64 92, !12, i64 96, !12, i64 100, !12, i64 104, !12, i64 108}
!17 = !{!11, !11, i64 0}
!18 = !{!16, !12, i64 96}
!19 = !{!16, !12, i64 68}
!20 = !{!21, !12, i64 0}
!21 = !{!"_ZTS13dex_class_def", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !12, i64 16, !12, i64 20, !12, i64 24, !12, i64 28}
!22 = !{!16, !12, i64 60}
!23 = !{!12, !12, i64 0}
!24 = !{!21, !12, i64 24}
!25 = distinct !{!25, !26}
!26 = !{!"llvm.loop.mustprogress"}


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