; LLVM IR from nsccgz-storage/nvlsm :: table_nvm (table_cache_nvm)

; 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.leveldb::Status" = type { ptr }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<leveldb::SegmentMeta *, std::allocator<leveldb::SegmentMeta *>>::_Vector_impl" }
%"struct.std::_Vector_base<leveldb::SegmentMeta *, std::allocator<leveldb::SegmentMeta *>>::_Vector_impl" = type { %"struct.std::_Vector_base<leveldb::SegmentMeta *, std::allocator<leveldb::SegmentMeta *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<leveldb::SegmentMeta *, std::allocator<leveldb::SegmentMeta *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.leveldb::InternalKey" = type { %"class.std::__cxx11::basic_string" }
%"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.leveldb::Slice" = type { ptr, i64 }
%"class.leveldb::TableCacheNVM" = type { ptr, %"class.std::__cxx11::basic_string", ptr, ptr, ptr, ptr, %"class.std::__cxx11::basic_string" }
%"struct.leveldb::TableAndSegHandles" = type { ptr, ptr, %"class.std::vector" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<leveldb::Cache::Handle *, std::allocator<leveldb::Cache::Handle *>>::_Vector_impl" }
%"struct.std::_Vector_base<leveldb::Cache::Handle *, std::allocator<leveldb::Cache::Handle *>>::_Vector_impl" = type { %"struct.std::_Vector_base<leveldb::Cache::Handle *, std::allocator<leveldb::Cache::Handle *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<leveldb::Cache::Handle *, std::allocator<leveldb::Cache::Handle *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.leveldb::Options" = type { ptr, i8, i8, i8, ptr, ptr, i64, i32, ptr, i64, i32, i64, i32, i8, ptr, i64 }
%"struct.leveldb::FileMetaData" = type { i32, i32, i64, i64, %"class.leveldb::InternalKey", %"class.leveldb::InternalKey", i8, %"class.std::vector.8" }
%"struct.leveldb::SegmentMeta" = type { i32, i64, i64, i64, i64, i64, i64, i64, %"class.leveldb::InternalKey", %"class.leveldb::InternalKey" }
%"struct.leveldb::SegmentAndFileHandle" = type { ptr, ptr, ptr }

@.str = external hidden unnamed_addr constant [37 x i8], align 1

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN7leveldb13TableCacheNVM3GetERKNS_11ReadOptionsEPKNS_12FileMetaDataERKNS_5SliceEPvPFvSA_S9_S9_E(ptr dead_on_unwind noalias writable sret(%"class.leveldb::Status") align 8 %0, ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef %3, ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef %5, ptr noundef %6) #0 align 2 personality ptr @__gxx_personality_v0 {
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca i1, align 1
  %17 = alloca ptr, align 8
  %18 = alloca i32, align 4
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca %"class.leveldb::Status", align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca %"class.std::vector.8", align 8
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca %"class.leveldb::InternalKey", align 8
  %28 = alloca %"class.leveldb::Slice", align 8
  %29 = alloca %"class.leveldb::Slice", align 8
  %30 = alloca %"class.leveldb::Slice", align 8
  %31 = alloca ptr, align 8
  %32 = alloca %"class.leveldb::Status", align 8
  %33 = alloca ptr, align 8
  %34 = alloca %"class.leveldb::Status", align 8
  store ptr %0, ptr %8, align 8
  store ptr %1, ptr %9, align 8, !tbaa !5
  store ptr %2, ptr %10, align 8, !tbaa !5
  store ptr %3, ptr %11, align 8, !tbaa !5
  store ptr %4, ptr %12, align 8, !tbaa !5
  store ptr %5, ptr %13, align 8, !tbaa !5
  store ptr %6, ptr %14, align 8, !tbaa !5
  %35 = load ptr, ptr %9, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #5
  store ptr null, ptr %15, align 8, !tbaa !5
  store i1 false, ptr %16, align 1
  %36 = load ptr, ptr %11, align 8, !tbaa !5
  call void @_ZN7leveldb13TableCacheNVM12FindTableNVMEPKNS_12FileMetaDataEPPNS_5Cache6HandleE(ptr dead_on_unwind writable sret(%"class.leveldb::Status") align 8 %0, ptr noundef nonnull align 8 dereferenceable(104) %35, ptr noundef %36, ptr noundef %15)
  %37 = invoke noundef zeroext i1 @_ZNK7leveldb6Status2okEv(ptr noundef nonnull align 8 dereferenceable(8) %0)
          to label %38 unwind label %85

38:                                               ; preds = %7
  br i1 %37, label %39, label %268

39:                                               ; preds = %38
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #5
  %40 = getelementptr inbounds %"class.leveldb::TableCacheNVM", ptr %35, i32 0, i32 3
  %41 = load ptr, ptr %40, align 8, !tbaa !9
  %42 = load ptr, ptr %15, align 8, !tbaa !5
  %43 = load ptr, ptr %41, align 8, !tbaa !14
  %44 = getelementptr inbounds ptr, ptr %43, i64 5
  %45 = load ptr, ptr %44, align 8
  %46 = invoke noundef ptr %45(ptr noundef nonnull align 8 dereferenceable(16) %41, ptr noundef %42)
          to label %47 unwind label %89

47:                                               ; preds = %39
  store ptr %46, ptr %19, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #5
  %48 = load ptr, ptr %19, align 8, !tbaa !5
  %49 = getelementptr inbounds %"struct.leveldb::TableAndSegHandles", ptr %48, i32 0, i32 1
  %50 = load ptr, ptr %49, align 8, !tbaa !16
  store ptr %50, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #5
  %51 = load ptr, ptr %20, align 8, !tbaa !5
  %52 = load ptr, ptr %10, align 8, !tbaa !5
  %53 = load ptr, ptr %12, align 8, !tbaa !5
  %54 = load ptr, ptr %13, align 8, !tbaa !5
  %55 = load ptr, ptr %14, align 8, !tbaa !5
  invoke void @_ZN7leveldb8TableNVM11InternalGetERKNS_11ReadOptionsERKNS_5SliceEPvPFvS7_S6_S6_E(ptr dead_on_unwind writable sret(%"class.leveldb::Status") align 8 %21, ptr noundef nonnull align 8 dereferenceable(128) %51, ptr noundef nonnull align 8 dereferenceable(16) %52, ptr noundef nonnull align 8 dereferenceable(16) %53, ptr noundef %54, ptr noundef %55)
          to label %56 unwind label %93

56:                                               ; preds = %47
  %57 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7leveldb6StatusaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %21) #5
  call void @_ZN7leveldb6StatusD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #5
  %58 = getelementptr inbounds %"class.leveldb::TableCacheNVM", ptr %35, i32 0, i32 3
  %59 = load ptr, ptr %58, align 8, !tbaa !9
  %60 = load ptr, ptr %15, align 8, !tbaa !5
  %61 = load ptr, ptr %59, align 8, !tbaa !14
  %62 = getelementptr inbounds ptr, ptr %61, i64 4
  %63 = load ptr, ptr %62, align 8
  invoke void %63(ptr noundef nonnull align 8 dereferenceable(16) %59, ptr noundef %60)
          to label %64 unwind label %97

64:                                               ; preds = %56
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #5
  %65 = getelementptr inbounds %"class.leveldb::TableCacheNVM", ptr %35, i32 0, i32 2
  %66 = load ptr, ptr %65, align 8, !tbaa !22
  %67 = getelementptr inbounds %"struct.leveldb::Options", ptr %66, i32 0, i32 0
  %68 = load ptr, ptr %67, align 8, !tbaa !23
  store ptr %68, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #5
  %69 = load ptr, ptr %22, align 8, !tbaa !5
  %70 = invoke noundef ptr @_ZNK7leveldb21InternalKeyComparator15user_comparatorEv(ptr noundef nonnull align 8 dereferenceable(16) %69)
          to label %71 unwind label %101

71:                                               ; preds = %64
  store ptr %70, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %24) #5
  call void @_ZNSt6vectorIPN7leveldb11SegmentMetaESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #5
  %72 = load ptr, ptr %11, align 8, !tbaa !5
  %73 = getelementptr inbounds %"struct.leveldb::FileMetaData", ptr %72, i32 0, i32 7
  %74 = call noundef i64 @_ZNKSt6vectorIPN7leveldb11SegmentMetaESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %73) #5
  invoke void @_ZNSt6vectorIPN7leveldb11SegmentMetaESaIS2_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %24, i64 noundef %74)
          to label %75 unwind label %105

75:                                               ; preds = %71
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #5
  %76 = load ptr, ptr %11, align 8, !tbaa !5
  %77 = getelementptr inbounds %"struct.leveldb::FileMetaData", ptr %76, i32 0, i32 7
  %78 = call noundef i64 @_ZNKSt6vectorIPN7leveldb11SegmentMetaESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %77) #5
  %79 = sub i64 %78, 1
  %80 = trunc i64 %79 to i32
  store i32 %80, ptr %25, align 4, !tbaa !28
  br label %81

81:                                               ; preds = %252, %75
  %82 = load i32, ptr %25, align 4, !tbaa !28
  %83 = icmp sge i32 %82, 0
  br i1 %83, label %109, label %84

84:                                               ; preds = %81
  store i32 2, ptr %26, align 4
  br label %258

85:                                               ; preds = %7
  %86 = landingpad { ptr, i32 }
          cleanup
  %87 = extractvalue { ptr, i32 } %86, 0
  store ptr %87, ptr %17, align 8
  %88 = extractvalue { ptr, i32 } %86, 1
  store i32 %88, ptr %18, align 4
  br label %274

89:                                               ; preds = %39
  %90 = landingpad { ptr, i32 }
          cleanup
  %91 = extractvalue { ptr, i32 } %90, 0
  store ptr %91, ptr %17, align 8
  %92 = extractvalue { ptr, i32 } %90, 1
  store i32 %92, ptr %18, align 4
  br label %267

93:                                               ; preds = %47
  %94 = landingpad { ptr, i32 }
          cleanup
  %95 = extractvalue { ptr, i32 } %94, 0
  store ptr %95, ptr %17, align 8
  %96 = extractvalue { ptr, i32 } %94, 1
  store i32 %96, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #5
  br label %266

97:                                               ; preds = %56
  %98 = landingpad { ptr, i32 }
          cleanup
  %99 = extractvalue { ptr, i32 } %98, 0
  store ptr %99, ptr %17, align 8
  %100 = extractvalue { ptr, i32 } %98, 1
  store i32 %100, ptr %18, align 4
  br label %266

101:                                              ; preds = %64
  %102 = landingpad { ptr, i32 }
          cleanup
  %103 = extractvalue { ptr, i32 } %102, 0
  store ptr %103, ptr %17, align 8
  %104 = extractvalue { ptr, i32 } %102, 1
  store i32 %104, ptr %18, align 4
  br label %265

105:                                              ; preds = %71
  %106 = landingpad { ptr, i32 }
          cleanup
  %107 = extractvalue { ptr, i32 } %106, 0
  store ptr %107, ptr %17, align 8
  %108 = extractvalue { ptr, i32 } %106, 1
  store i32 %108, ptr %18, align 4
  br label %264

109:                                              ; preds = %81
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #5
  invoke void @_ZN7leveldb11InternalKeyC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %110 unwind label %177

110:                                              ; preds = %109
  %111 = load ptr, ptr %12, align 8, !tbaa !5
  %112 = invoke noundef zeroext i1 @_ZN7leveldb11InternalKey10DecodeFromERKNS_5SliceE(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull align 8 dereferenceable(16) %111)
          to label %113 unwind label %181

113:                                              ; preds = %110
  call void @llvm.lifetime.start.p0(i64 16, ptr %28) #5
  %114 = invoke { ptr, i64 } @_ZNK7leveldb11InternalKey8user_keyEv(ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %115 unwind label %185

115:                                              ; preds = %113
  %116 = getelementptr inbounds { ptr, i64 }, ptr %28, i32 0, i32 0
  %117 = extractvalue { ptr, i64 } %114, 0
  store ptr %117, ptr %116, align 8
  %118 = getelementptr inbounds { ptr, i64 }, ptr %28, i32 0, i32 1
  %119 = extractvalue { ptr, i64 } %114, 1
  store i64 %119, ptr %118, align 8
  %120 = load ptr, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %29) #5
  %121 = load ptr, ptr %11, align 8, !tbaa !5
  %122 = getelementptr inbounds %"struct.leveldb::FileMetaData", ptr %121, i32 0, i32 7
  %123 = load i32, ptr %25, align 4, !tbaa !28
  %124 = sext i32 %123 to i64
  %125 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIPN7leveldb11SegmentMetaESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %122, i64 noundef %124) #5
  %126 = load ptr, ptr %125, align 8, !tbaa !5
  %127 = getelementptr inbounds %"struct.leveldb::SegmentMeta", ptr %126, i32 0, i32 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %30) #5
  %128 = invoke { ptr, i64 } @_ZNK7leveldb11InternalKey8user_keyEv(ptr noundef nonnull align 8 dereferenceable(32) %127)
          to label %129 unwind label %189

129:                                              ; preds = %115
  %130 = getelementptr inbounds { ptr, i64 }, ptr %29, i32 0, i32 0
  %131 = extractvalue { ptr, i64 } %128, 0
  store ptr %131, ptr %130, align 8
  %132 = getelementptr inbounds { ptr, i64 }, ptr %29, i32 0, i32 1
  %133 = extractvalue { ptr, i64 } %128, 1
  store i64 %133, ptr %132, align 8
  %134 = load ptr, ptr %120, align 8, !tbaa !14
  %135 = getelementptr inbounds ptr, ptr %134, i64 2
  %136 = load ptr, ptr %135, align 8
  %137 = invoke noundef i32 %136(ptr noundef nonnull align 8 dereferenceable(8) %120, ptr noundef nonnull align 8 dereferenceable(16) %28, ptr noundef nonnull align 8 dereferenceable(16) %29)
          to label %138 unwind label %189

138:                                              ; preds = %129
  %139 = icmp sge i32 %137, 0
  br i1 %139, label %140, label %161

140:                                              ; preds = %138
  %141 = load ptr, ptr %23, align 8, !tbaa !5
  %142 = load ptr, ptr %11, align 8, !tbaa !5
  %143 = getelementptr inbounds %"struct.leveldb::FileMetaData", ptr %142, i32 0, i32 7
  %144 = load i32, ptr %25, align 4, !tbaa !28
  %145 = sext i32 %144 to i64
  %146 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIPN7leveldb11SegmentMetaESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %143, i64 noundef %145) #5
  %147 = load ptr, ptr %146, align 8, !tbaa !5
  %148 = getelementptr inbounds %"struct.leveldb::SegmentMeta", ptr %147, i32 0, i32 9
  %149 = invoke { ptr, i64 } @_ZNK7leveldb11InternalKey8user_keyEv(ptr noundef nonnull align 8 dereferenceable(32) %148)
          to label %150 unwind label %193

150:                                              ; preds = %140
  %151 = getelementptr inbounds { ptr, i64 }, ptr %30, i32 0, i32 0
  %152 = extractvalue { ptr, i64 } %149, 0
  store ptr %152, ptr %151, align 8
  %153 = getelementptr inbounds { ptr, i64 }, ptr %30, i32 0, i32 1
  %154 = extractvalue { ptr, i64 } %149, 1
  store i64 %154, ptr %153, align 8
  %155 = load ptr, ptr %141, align 8, !tbaa !14
  %156 = getelementptr inbounds ptr, ptr %155, i64 2
  %157 = load ptr, ptr %156, align 8
  %158 = invoke noundef i32 %157(ptr noundef nonnull align 8 dereferenceable(8) %141, ptr noundef nonnull align 8 dereferenceable(16) %28, ptr noundef nonnull align 8 dereferenceable(16) %30)
          to label %159 unwind label %193

159:                                              ; preds = %150
  %160 = icmp sle i32 %158, 0
  br label %161

161:                                              ; preds = %159, %138
  %162 = phi i1 [ false, %138 ], [ %160, %159 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %29) #5
  br i1 %162, label %163, label %248

163:                                              ; preds = %161
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #5
  store ptr null, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #5
  %164 = load ptr, ptr %11, align 8, !tbaa !5
  %165 = getelementptr inbounds %"struct.leveldb::FileMetaData", ptr %164, i32 0, i32 7
  %166 = load i32, ptr %25, align 4, !tbaa !28
  %167 = sext i32 %166 to i64
  %168 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIPN7leveldb11SegmentMetaESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %165, i64 noundef %167) #5
  %169 = load ptr, ptr %168, align 8, !tbaa !5
  invoke void @_ZN7leveldb13TableCacheNVM11FindSegmentEPKNS_11SegmentMetaEPPNS_5Cache6HandleE(ptr dead_on_unwind writable sret(%"class.leveldb::Status") align 8 %32, ptr noundef nonnull align 8 dereferenceable(104) %35, ptr noundef %169, ptr noundef %31)
          to label %170 unwind label %198

170:                                              ; preds = %163
  %171 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7leveldb6StatusaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %32) #5
  call void @_ZN7leveldb6StatusD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #5
  %172 = invoke noundef zeroext i1 @_ZNK7leveldb6Status2okEv(ptr noundef nonnull align 8 dereferenceable(8) %0)
          to label %173 unwind label %202

173:                                              ; preds = %170
  br i1 %172, label %206, label %174

174:                                              ; preds = %173
  %175 = invoke i32 (ptr, ...) @printf(ptr noundef @.str)
          to label %176 unwind label %202

176:                                              ; preds = %174
  br label %206

177:                                              ; preds = %109
  %178 = landingpad { ptr, i32 }
          cleanup
  %179 = extractvalue { ptr, i32 } %178, 0
  store ptr %179, ptr %17, align 8
  %180 = extractvalue { ptr, i32 } %178, 1
  store i32 %180, ptr %18, align 4
  br label %257

181:                                              ; preds = %110
  %182 = landingpad { ptr, i32 }
          cleanup
  %183 = extractvalue { ptr, i32 } %182, 0
  store ptr %183, ptr %17, align 8
  %184 = extractvalue { ptr, i32 } %182, 1
  store i32 %184, ptr %18, align 4
  br label %256

185:                                              ; preds = %113
  %186 = landingpad { ptr, i32 }
          cleanup
  %187 = extractvalue { ptr, i32 } %186, 0
  store ptr %187, ptr %17, align 8
  %188 = extractvalue { ptr, i32 } %186, 1
  store i32 %188, ptr %18, align 4
  br label %255

189:                                              ; preds = %129, %115
  %190 = landingpad { ptr, i32 }
          cleanup
  %191 = extractvalue { ptr, i32 } %190, 0
  store ptr %191, ptr %17, align 8
  %192 = extractvalue { ptr, i32 } %190, 1
  store i32 %192, ptr %18, align 4
  br label %197

193:                                              ; preds = %150, %140
  %194 = landingpad { ptr, i32 }
          cleanup
  %195 = extractvalue { ptr, i32 } %194, 0
  store ptr %195, ptr %17, align 8
  %196 = extractvalue { ptr, i32 } %194, 1
  store i32 %196, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #5
  br label %197

197:                                              ; preds = %193, %189
  call void @llvm.lifetime.end.p0(i64 16, ptr %29) #5
  br label %255

198:                                              ; preds = %163
  %199 = landingpad { ptr, i32 }
          cleanup
  %200 = extractvalue { ptr, i32 } %199, 0
  store ptr %200, ptr %17, align 8
  %201 = extractvalue { ptr, i32 } %199, 1
  store i32 %201, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #5
  br label %247

202:                                              ; preds = %174, %170
  %203 = landingpad { ptr, i32 }
          cleanup
  %204 = extractvalue { ptr, i32 } %203, 0
  store ptr %204, ptr %17, align 8
  %205 = extractvalue { ptr, i32 } %203, 1
  store i32 %205, ptr %18, align 4
  br label %247

206:                                              ; preds = %176, %173
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #5
  %207 = getelementptr inbounds %"class.leveldb::TableCacheNVM", ptr %35, i32 0, i32 4
  %208 = load ptr, ptr %207, align 8, !tbaa !29
  %209 = load ptr, ptr %31, align 8, !tbaa !5
  %210 = load ptr, ptr %208, align 8, !tbaa !14
  %211 = getelementptr inbounds ptr, ptr %210, i64 5
  %212 = load ptr, ptr %211, align 8
  %213 = invoke noundef ptr %212(ptr noundef nonnull align 8 dereferenceable(16) %208, ptr noundef %209)
          to label %214 unwind label %234

214:                                              ; preds = %206
  %215 = getelementptr inbounds %"struct.leveldb::SegmentAndFileHandle", ptr %213, i32 0, i32 1
  %216 = load ptr, ptr %215, align 8, !tbaa !30
  store ptr %216, ptr %33, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #5
  %217 = load ptr, ptr %33, align 8, !tbaa !5
  %218 = load ptr, ptr %10, align 8, !tbaa !5
  %219 = load ptr, ptr %12, align 8, !tbaa !5
  %220 = load ptr, ptr %13, align 8, !tbaa !5
  %221 = load ptr, ptr %14, align 8, !tbaa !5
  invoke void @_ZN7leveldb7Segment11InternalGetERKNS_11ReadOptionsERKNS_5SliceEPvPFvS7_S6_S6_E(ptr dead_on_unwind writable sret(%"class.leveldb::Status") align 8 %34, ptr noundef nonnull align 8 dereferenceable(8) %217, ptr noundef nonnull align 8 dereferenceable(16) %218, ptr noundef nonnull align 8 dereferenceable(16) %219, ptr noundef %220, ptr noundef %221)
          to label %222 unwind label %238

222:                                              ; preds = %214
  %223 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7leveldb6StatusaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %34) #5
  call void @_ZN7leveldb6StatusD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #5
  %224 = getelementptr inbounds %"class.leveldb::TableCacheNVM", ptr %35, i32 0, i32 4
  %225 = load ptr, ptr %224, align 8, !tbaa !29
  %226 = load ptr, ptr %31, align 8, !tbaa !5
  %227 = load ptr, ptr %225, align 8, !tbaa !14
  %228 = getelementptr inbounds ptr, ptr %227, i64 4
  %229 = load ptr, ptr %228, align 8
  invoke void %229(ptr noundef nonnull align 8 dereferenceable(16) %225, ptr noundef %226)
          to label %230 unwind label %234

230:                                              ; preds = %222
  %231 = invoke noundef zeroext i1 @_ZNK7leveldb6Status2okEv(ptr noundef nonnull align 8 dereferenceable(8) %0)
          to label %232 unwind label %234

232:                                              ; preds = %230
  br i1 %231, label %233, label %242

233:                                              ; preds = %232
  store i1 true, ptr %16, align 1
  store i32 1, ptr %26, align 4
  br label %243

234:                                              ; preds = %230, %222, %206
  %235 = landingpad { ptr, i32 }
          cleanup
  %236 = extractvalue { ptr, i32 } %235, 0
  store ptr %236, ptr %17, align 8
  %237 = extractvalue { ptr, i32 } %235, 1
  store i32 %237, ptr %18, align 4
  br label %246

238:                                              ; preds = %214
  %239 = landingpad { ptr, i32 }
          cleanup
  %240 = extractvalue { ptr, i32 } %239, 0
  store ptr %240, ptr %17, align 8
  %241 = extractvalue { ptr, i32 } %239, 1
  store i32 %241, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #5
  br label %246

242:                                              ; preds = %232
  store i32 0, ptr %26, align 4
  br label %243

243:                                              ; preds = %242, %233
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #5
  %244 = load i32, ptr %26, align 4
  switch i32 %244, label %249 [
    i32 0, label %245
  ]

245:                                              ; preds = %243
  br label %248

246:                                              ; preds = %238, %234
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #5
  br label %247

247:                                              ; preds = %246, %202, %198
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #5
  br label %255

248:                                              ; preds = %245, %161
  store i32 0, ptr %26, align 4
  br label %249

249:                                              ; preds = %248, %243
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #5
  call void @_ZN7leveldb11InternalKeyD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #5
  %250 = load i32, ptr %26, align 4
  switch i32 %250, label %258 [
    i32 0, label %251
  ]

251:                                              ; preds = %249
  br label %252

252:                                              ; preds = %251
  %253 = load i32, ptr %25, align 4, !tbaa !28
  %254 = add nsw i32 %253, -1
  store i32 %254, ptr %25, align 4, !tbaa !28
  br label %81, !llvm.loop !32

255:                                              ; preds = %247, %197, %185
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #5
  br label %256

256:                                              ; preds = %255, %181
  call void @_ZN7leveldb11InternalKeyD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #5
  br label %257

257:                                              ; preds = %256, %177
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #5
  br label %264

258:                                              ; preds = %249, %84
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #5
  %259 = load i32, ptr %26, align 4
  switch i32 %259, label %261 [
    i32 2, label %260
  ]

260:                                              ; preds = %258
  store i32 0, ptr %26, align 4
  br label %261

261:                                              ; preds = %260, %258
  call void @_ZNSt6vectorIPN7leveldb11SegmentMetaESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #5
  %262 = load i32, ptr %26, align 4
  switch i32 %262, label %270 [
    i32 0, label %263
  ]

263:                                              ; preds = %261
  br label %269

264:                                              ; preds = %257, %105
  call void @_ZNSt6vectorIPN7leveldb11SegmentMetaESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %24) #5
  br label %265

265:                                              ; preds = %264, %101
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  br label %266

266:                                              ; preds = %265, %97, %93
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  br label %267

267:                                              ; preds = %266, %89
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #5
  br label %274

268:                                              ; preds = %38
  br label %269

269:                                              ; preds = %268, %263
  store i1 true, ptr %16, align 1
  store i32 1, ptr %26, align 4
  br label %270

270:                                              ; preds = %269, %261
  %271 = load i1, ptr %16, align 1
  br i1 %271, label %273, label %272

272:                                              ; preds = %270
  call void @_ZN7leveldb6StatusD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %0) #5
  br label %273

273:                                              ; preds = %272, %270
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #5
  ret void

274:                                              ; preds = %267, %85
  call void @_ZN7leveldb6StatusD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %0) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #5
  br label %275

275:                                              ; preds = %274
  %276 = load ptr, ptr %17, align 8
  %277 = load i32, ptr %18, align 4
  %278 = insertvalue { ptr, i32 } poison, ptr %276, 0
  %279 = insertvalue { ptr, i32 } %278, i32 %277, 1
  resume { ptr, i32 } %279
}

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7leveldb13TableCacheNVM12FindTableNVMEPKNS_12FileMetaDataEPPNS_5Cache6HandleE(ptr dead_on_unwind noalias writable sret(%"class.leveldb::Status") align 8, ptr noundef nonnull align 8 dereferenceable(104), ptr noundef, ptr noundef) #0 align 2

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

declare void @_ZN7leveldb8TableNVM11InternalGetERKNS_11ReadOptionsERKNS_5SliceEPvPFvS7_S6_S6_E(ptr dead_on_unwind writable sret(%"class.leveldb::Status") align 8, ptr noundef nonnull align 8 dereferenceable(128), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, ptr noundef) #3

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

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

; 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 noundef ptr @_ZNK7leveldb21InternalKeyComparator15user_comparatorEv(ptr noundef nonnull align 8 dereferenceable(16)) #2 align 2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i64 } @_ZNK7leveldb11InternalKey8user_keyEv(ptr noundef nonnull align 8 dereferenceable(32)) #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7leveldb13TableCacheNVM11FindSegmentEPKNS_11SegmentMetaEPPNS_5Cache6HandleE(ptr dead_on_unwind noalias writable sret(%"class.leveldb::Status") align 8, ptr noundef nonnull align 8 dereferenceable(104), ptr noundef, ptr noundef) #0 align 2

declare i32 @printf(ptr noundef, ...) #3

declare void @_ZN7leveldb7Segment11InternalGetERKNS_11ReadOptionsERKNS_5SliceEPvPFvS7_S6_S6_E(ptr dead_on_unwind writable sret(%"class.leveldb::Status") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, ptr noundef) #3

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIPN7leveldb11SegmentMetaESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2 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 = { 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 #3 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 48}
!10 = !{!"_ZTSN7leveldb13TableCacheNVME", !6, i64 0, !11, i64 8, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !11, i64 72}
!11 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !12, i64 0, !13, i64 8, !7, i64 16}
!12 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!13 = !{!"long", !7, i64 0}
!14 = !{!15, !15, i64 0}
!15 = !{!"vtable pointer", !8, i64 0}
!16 = !{!17, !6, i64 8}
!17 = !{!"_ZTSN7leveldb18TableAndSegHandlesE", !6, i64 0, !6, i64 8, !18, i64 16}
!18 = !{!"_ZTSSt6vectorIPN7leveldb5Cache6HandleESaIS3_EE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseIPN7leveldb5Cache6HandleESaIS3_EE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIPN7leveldb5Cache6HandleESaIS3_EE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIPN7leveldb5Cache6HandleESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!22 = !{!10, !6, i64 40}
!23 = !{!24, !6, i64 0}
!24 = !{!"_ZTSN7leveldb7OptionsE", !6, i64 0, !25, i64 8, !25, i64 9, !25, i64 10, !6, i64 16, !6, i64 24, !13, i64 32, !26, i64 40, !6, i64 48, !13, i64 56, !26, i64 64, !13, i64 72, !27, i64 80, !25, i64 84, !6, i64 88, !13, i64 96}
!25 = !{!"bool", !7, i64 0}
!26 = !{!"int", !7, i64 0}
!27 = !{!"_ZTSN7leveldb15CompressionTypeE", !7, i64 0}
!28 = !{!26, !26, i64 0}
!29 = !{!10, !6, i64 56}
!30 = !{!31, !6, i64 8}
!31 = !{!"_ZTSN7leveldb20SegmentAndFileHandleE", !6, i64 0, !6, i64 8, !6, i64 16}
!32 = distinct !{!32, !33}
!33 = !{!"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.leveldb::Status" = type { ptr }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<leveldb::SegmentMeta *, std::allocator<leveldb::SegmentMeta *>>::_Vector_impl" }
%"struct.std::_Vector_base<leveldb::SegmentMeta *, std::allocator<leveldb::SegmentMeta *>>::_Vector_impl" = type { %"struct.std::_Vector_base<leveldb::SegmentMeta *, std::allocator<leveldb::SegmentMeta *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<leveldb::SegmentMeta *, std::allocator<leveldb::SegmentMeta *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.leveldb::InternalKey" = type { %"class.std::__cxx11::basic_string" }
%"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.leveldb::Slice" = type { ptr, i64 }

@.str = external hidden unnamed_addr constant [37 x i8], align 1

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN7leveldb13TableCacheNVM3GetERKNS_11ReadOptionsEPKNS_12FileMetaDataERKNS_5SliceEPvPFvSA_S9_S9_E(ptr dead_on_unwind noalias writable sret(%"class.leveldb::Status") align 8 %0, ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef %3, ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef %5, ptr noundef %6) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %8 = alloca ptr, align 8
  %9 = alloca %"class.leveldb::Status", align 8
  %10 = alloca %"class.std::vector.8", align 8
  %11 = alloca %"class.leveldb::InternalKey", align 8
  %12 = alloca %"class.leveldb::Slice", align 8
  %13 = alloca %"class.leveldb::Slice", align 8
  %14 = alloca %"class.leveldb::Slice", align 8
  %15 = alloca ptr, align 8
  %16 = alloca %"class.leveldb::Status", align 8
  %17 = alloca %"class.leveldb::Status", align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #6
  store ptr null, ptr %8, align 8, !tbaa !5
  call void @_ZN7leveldb13TableCacheNVM12FindTableNVMEPKNS_12FileMetaDataEPPNS_5Cache6HandleE(ptr dead_on_unwind writable sret(%"class.leveldb::Status") align 8 %0, ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef %3, ptr noundef nonnull %8)
  %18 = call noundef zeroext i1 @_ZNK7leveldb6Status2okEv(ptr noundef nonnull align 8 dereferenceable(8) %0)
  br i1 %18, label %19, label %.critedge64

19:                                               ; preds = %7
  %20 = getelementptr inbounds i8, ptr %1, i64 48
  %21 = load ptr, ptr %20, align 8, !tbaa !9
  %22 = load ptr, ptr %8, align 8, !tbaa !5
  %23 = load ptr, ptr %21, align 8, !tbaa !14
  %24 = getelementptr inbounds i8, ptr %23, i64 40
  %25 = load ptr, ptr %24, align 8
  %26 = invoke noundef ptr %25(ptr noundef nonnull align 8 dereferenceable(16) %21, ptr noundef %22)
          to label %27 unwind label %52

27:                                               ; preds = %19
  %28 = getelementptr inbounds i8, ptr %26, i64 8
  %29 = load ptr, ptr %28, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #6
  invoke void @_ZN7leveldb8TableNVM11InternalGetERKNS_11ReadOptionsERKNS_5SliceEPvPFvS7_S6_S6_E(ptr dead_on_unwind nonnull writable sret(%"class.leveldb::Status") align 8 %9, ptr noundef nonnull align 8 dereferenceable(128) %29, ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef %5, ptr noundef %6)
          to label %30 unwind label %54

30:                                               ; preds = %27
  %31 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7leveldb6StatusaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %9) #6
  call void @_ZN7leveldb6StatusD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #6
  %32 = load ptr, ptr %20, align 8, !tbaa !9
  %33 = load ptr, ptr %8, align 8, !tbaa !5
  %34 = load ptr, ptr %32, align 8, !tbaa !14
  %35 = getelementptr inbounds i8, ptr %34, i64 32
  %36 = load ptr, ptr %35, align 8
  invoke void %36(ptr noundef nonnull align 8 dereferenceable(16) %32, ptr noundef %33)
          to label %37 unwind label %56

37:                                               ; preds = %30
  %38 = getelementptr inbounds i8, ptr %1, i64 40
  %39 = load ptr, ptr %38, align 8, !tbaa !22
  %40 = load ptr, ptr %39, align 8, !tbaa !23
  %41 = call noundef ptr @_ZNK7leveldb21InternalKeyComparator15user_comparatorEv(ptr noundef nonnull align 8 dereferenceable(16) %40)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #6
  call void @_ZNSt6vectorIPN7leveldb11SegmentMetaESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #6
  %42 = getelementptr inbounds i8, ptr %3, i64 96
  %43 = call noundef i64 @_ZNKSt6vectorIPN7leveldb11SegmentMetaESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %42) #6
  invoke void @_ZNSt6vectorIPN7leveldb11SegmentMetaESaIS2_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %43)
          to label %44 unwind label %58

44:                                               ; preds = %37
  %45 = call noundef i64 @_ZNKSt6vectorIPN7leveldb11SegmentMetaESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %42) #6
  %46 = getelementptr inbounds i8, ptr %12, i64 8
  %47 = getelementptr inbounds i8, ptr %13, i64 8
  %48 = getelementptr inbounds i8, ptr %14, i64 8
  %49 = getelementptr inbounds i8, ptr %1, i64 56
  br label %.outer

.outer:                                           ; preds = %129, %44
  %.039.in.ph.in = phi i64 [ %indvars.iv, %129 ], [ %45, %44 ]
  %.039.in.ph = trunc i64 %.039.in.ph.in to i32
  %.03974 = add i32 %.039.in.ph, -1
  %50 = icmp slt i32 %.03974, 0
  br i1 %50, label %.thread, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %.outer
  %51 = zext nneg i32 %.03974 to i64
  br label %.lr.ph

.thread:                                          ; preds = %.outer, %.backedge
  call void @_ZNSt6vectorIPN7leveldb11SegmentMetaESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #6
  br label %.critedge64

52:                                               ; preds = %19
  %53 = landingpad { ptr, i32 }
          cleanup
  br label %142

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

56:                                               ; preds = %30
  %57 = landingpad { ptr, i32 }
          cleanup
  br label %142

58:                                               ; preds = %37
  %59 = landingpad { ptr, i32 }
          cleanup
  br label %141

.lr.ph:                                           ; preds = %.lr.ph.preheader, %.backedge
  %indvars.iv = phi i64 [ %51, %.lr.ph.preheader ], [ %indvars.iv.next, %.backedge ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #6
  call void @_ZN7leveldb11InternalKeyC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11)
  %60 = invoke noundef zeroext i1 @_ZN7leveldb11InternalKey10DecodeFromERKNS_5SliceE(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(16) %4)
          to label %61 unwind label %101

61:                                               ; preds = %.lr.ph
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #6
  %62 = invoke { ptr, i64 } @_ZNK7leveldb11InternalKey8user_keyEv(ptr noundef nonnull align 8 dereferenceable(32) %11)
          to label %63 unwind label %103

63:                                               ; preds = %61
  %64 = extractvalue { ptr, i64 } %62, 0
  store ptr %64, ptr %12, align 8
  %65 = extractvalue { ptr, i64 } %62, 1
  store i64 %65, ptr %46, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #6
  %66 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIPN7leveldb11SegmentMetaESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %42, i64 noundef %indvars.iv) #6
  %67 = load ptr, ptr %66, align 8, !tbaa !5
  %68 = getelementptr inbounds i8, ptr %67, i64 64
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #6
  %69 = invoke { ptr, i64 } @_ZNK7leveldb11InternalKey8user_keyEv(ptr noundef nonnull align 8 dereferenceable(32) %68)
          to label %70 unwind label %105

70:                                               ; preds = %63
  %71 = extractvalue { ptr, i64 } %69, 0
  store ptr %71, ptr %13, align 8
  %72 = extractvalue { ptr, i64 } %69, 1
  store i64 %72, ptr %47, align 8
  %73 = load ptr, ptr %41, align 8, !tbaa !14
  %74 = getelementptr inbounds i8, ptr %73, i64 16
  %75 = load ptr, ptr %74, align 8
  %76 = invoke noundef i32 %75(ptr noundef nonnull align 8 dereferenceable(8) %41, ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 8 dereferenceable(16) %13)
          to label %77 unwind label %105

77:                                               ; preds = %70
  %78 = icmp sgt i32 %76, -1
  br i1 %78, label %79, label %.critedge

79:                                               ; preds = %77
  %80 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIPN7leveldb11SegmentMetaESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %42, i64 noundef %indvars.iv) #6
  %81 = load ptr, ptr %80, align 8, !tbaa !5
  %82 = getelementptr inbounds i8, ptr %81, i64 96
  %83 = invoke { ptr, i64 } @_ZNK7leveldb11InternalKey8user_keyEv(ptr noundef nonnull align 8 dereferenceable(32) %82)
          to label %84 unwind label %107

84:                                               ; preds = %79
  %85 = extractvalue { ptr, i64 } %83, 0
  store ptr %85, ptr %14, align 8
  %86 = extractvalue { ptr, i64 } %83, 1
  store i64 %86, ptr %48, align 8
  %87 = load ptr, ptr %41, align 8, !tbaa !14
  %88 = getelementptr inbounds i8, ptr %87, i64 16
  %89 = load ptr, ptr %88, align 8
  %90 = invoke noundef i32 %89(ptr noundef nonnull align 8 dereferenceable(8) %41, ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 8 dereferenceable(16) %14)
          to label %91 unwind label %107

91:                                               ; preds = %84
  %92 = icmp slt i32 %90, 1
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #6
  br i1 %92, label %93, label %136

93:                                               ; preds = %91
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #6
  store ptr null, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #6
  %94 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIPN7leveldb11SegmentMetaESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %42, i64 noundef %indvars.iv) #6
  %95 = load ptr, ptr %94, align 8, !tbaa !5
  invoke void @_ZN7leveldb13TableCacheNVM11FindSegmentEPKNS_11SegmentMetaEPPNS_5Cache6HandleE(ptr dead_on_unwind nonnull writable sret(%"class.leveldb::Status") align 8 %16, ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef %95, ptr noundef nonnull %15)
          to label %96 unwind label %110

96:                                               ; preds = %93
  %97 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7leveldb6StatusaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %16) #6
  call void @_ZN7leveldb6StatusD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #6
  %98 = call noundef zeroext i1 @_ZNK7leveldb6Status2okEv(ptr noundef nonnull align 8 dereferenceable(8) %0)
  br i1 %98, label %112, label %99

99:                                               ; preds = %96
  %100 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str)
  br label %112

101:                                              ; preds = %.lr.ph
  %102 = landingpad { ptr, i32 }
          cleanup
  br label %139

103:                                              ; preds = %61
  %104 = landingpad { ptr, i32 }
          cleanup
  br label %138

105:                                              ; preds = %70, %63
  %106 = landingpad { ptr, i32 }
          cleanup
  br label %109

107:                                              ; preds = %84, %79
  %108 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #6
  br label %109

109:                                              ; preds = %107, %105
  %.pn = phi { ptr, i32 } [ %108, %107 ], [ %106, %105 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #6
  br label %138

110:                                              ; preds = %93
  %111 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #6
  br label %135

112:                                              ; preds = %99, %96
  %113 = load ptr, ptr %49, align 8, !tbaa !28
  %114 = load ptr, ptr %15, align 8, !tbaa !5
  %115 = load ptr, ptr %113, align 8, !tbaa !14
  %116 = getelementptr inbounds i8, ptr %115, i64 40
  %117 = load ptr, ptr %116, align 8
  %118 = invoke noundef ptr %117(ptr noundef nonnull align 8 dereferenceable(16) %113, ptr noundef %114)
          to label %119 unwind label %131

119:                                              ; preds = %112
  %120 = getelementptr inbounds i8, ptr %118, i64 8
  %121 = load ptr, ptr %120, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #6
  invoke void @_ZN7leveldb7Segment11InternalGetERKNS_11ReadOptionsERKNS_5SliceEPvPFvS7_S6_S6_E(ptr dead_on_unwind nonnull writable sret(%"class.leveldb::Status") align 8 %17, ptr noundef nonnull align 8 dereferenceable(8) %121, ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef %5, ptr noundef %6)
          to label %122 unwind label %133

122:                                              ; preds = %119
  %123 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7leveldb6StatusaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %17) #6
  call void @_ZN7leveldb6StatusD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #6
  %124 = load ptr, ptr %49, align 8, !tbaa !28
  %125 = load ptr, ptr %15, align 8, !tbaa !5
  %126 = load ptr, ptr %124, align 8, !tbaa !14
  %127 = getelementptr inbounds i8, ptr %126, i64 32
  %128 = load ptr, ptr %127, align 8
  invoke void %128(ptr noundef nonnull align 8 dereferenceable(16) %124, ptr noundef %125)
          to label %129 unwind label %131

129:                                              ; preds = %122
  %130 = call noundef zeroext i1 @_ZNK7leveldb6Status2okEv(ptr noundef nonnull align 8 dereferenceable(8) %0)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #6
  call void @_ZN7leveldb11InternalKeyD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #6
  br i1 %130, label %140, label %.outer, !llvm.loop !31

131:                                              ; preds = %122, %112
  %132 = landingpad { ptr, i32 }
          cleanup
  br label %135

133:                                              ; preds = %119
  %134 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #6
  br label %135

135:                                              ; preds = %131, %133, %110
  %.pn55.pn = phi { ptr, i32 } [ %111, %110 ], [ %132, %131 ], [ %134, %133 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #6
  br label %138

.critedge:                                        ; preds = %77
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #6
  call void @_ZN7leveldb11InternalKeyD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #6
  br label %.backedge

136:                                              ; preds = %91
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #6
  call void @_ZN7leveldb11InternalKeyD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #6
  br label %.backedge

.backedge:                                        ; preds = %136, %.critedge
  %indvars.iv.next = add nsw i64 %indvars.iv, -1
  %137 = icmp slt i64 %indvars.iv, 1
  br i1 %137, label %.thread, label %.lr.ph, !llvm.loop !31

138:                                              ; preds = %135, %109, %103
  %.pn55.pn.pn = phi { ptr, i32 } [ %.pn55.pn, %135 ], [ %.pn, %109 ], [ %104, %103 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #6
  br label %139

139:                                              ; preds = %138, %101
  %.pn55.pn.pn.pn = phi { ptr, i32 } [ %.pn55.pn.pn, %138 ], [ %102, %101 ]
  call void @_ZN7leveldb11InternalKeyD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #6
  br label %141

140:                                              ; preds = %129
  call void @_ZNSt6vectorIPN7leveldb11SegmentMetaESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #6
  br label %.critedge64

141:                                              ; preds = %139, %58
  %.pn55.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn55.pn.pn.pn, %139 ], [ %59, %58 ]
  call void @_ZNSt6vectorIPN7leveldb11SegmentMetaESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #6
  br label %142

142:                                              ; preds = %54, %56, %141, %52
  %.pn55.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %53, %52 ], [ %.pn55.pn.pn.pn.pn, %141 ], [ %57, %56 ], [ %55, %54 ]
  call void @_ZN7leveldb6StatusD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %0) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #6
  resume { ptr, i32 } %.pn55.pn.pn.pn.pn.pn.pn

.critedge64:                                      ; preds = %140, %.thread, %7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #6
  ret void
}

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7leveldb13TableCacheNVM12FindTableNVMEPKNS_12FileMetaDataEPPNS_5Cache6HandleE(ptr dead_on_unwind noalias writable sret(%"class.leveldb::Status") align 8, ptr noundef nonnull align 8 dereferenceable(104), ptr noundef, ptr noundef) local_unnamed_addr #0 align 2

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

declare void @_ZN7leveldb8TableNVM11InternalGetERKNS_11ReadOptionsERKNS_5SliceEPvPFvS7_S6_S6_E(ptr dead_on_unwind writable sret(%"class.leveldb::Status") align 8, ptr noundef nonnull align 8 dereferenceable(128), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, ptr noundef) local_unnamed_addr #3

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7leveldb6StatusD2Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #2 align 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 noundef ptr @_ZNK7leveldb21InternalKeyComparator15user_comparatorEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #2 align 2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i64 } @_ZNK7leveldb11InternalKey8user_keyEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7leveldb13TableCacheNVM11FindSegmentEPKNS_11SegmentMetaEPPNS_5Cache6HandleE(ptr dead_on_unwind noalias writable sret(%"class.leveldb::Status") align 8, ptr noundef nonnull align 8 dereferenceable(104), ptr noundef, ptr noundef) local_unnamed_addr #0 align 2

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

declare void @_ZN7leveldb7Segment11InternalGetERKNS_11ReadOptionsERKNS_5SliceEPvPFvS7_S6_S6_E(ptr dead_on_unwind writable sret(%"class.leveldb::Status") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, ptr noundef) local_unnamed_addr #3

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIPN7leveldb11SegmentMetaESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2 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 = { 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 #3 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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 #6 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 48}
!10 = !{!"_ZTSN7leveldb13TableCacheNVME", !6, i64 0, !11, i64 8, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !11, i64 72}
!11 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !12, i64 0, !13, i64 8, !7, i64 16}
!12 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!13 = !{!"long", !7, i64 0}
!14 = !{!15, !15, i64 0}
!15 = !{!"vtable pointer", !8, i64 0}
!16 = !{!17, !6, i64 8}
!17 = !{!"_ZTSN7leveldb18TableAndSegHandlesE", !6, i64 0, !6, i64 8, !18, i64 16}
!18 = !{!"_ZTSSt6vectorIPN7leveldb5Cache6HandleESaIS3_EE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseIPN7leveldb5Cache6HandleESaIS3_EE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIPN7leveldb5Cache6HandleESaIS3_EE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIPN7leveldb5Cache6HandleESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!22 = !{!10, !6, i64 40}
!23 = !{!24, !6, i64 0}
!24 = !{!"_ZTSN7leveldb7OptionsE", !6, i64 0, !25, i64 8, !25, i64 9, !25, i64 10, !6, i64 16, !6, i64 24, !13, i64 32, !26, i64 40, !6, i64 48, !13, i64 56, !26, i64 64, !13, i64 72, !27, i64 80, !25, i64 84, !6, i64 88, !13, i64 96}
!25 = !{!"bool", !7, i64 0}
!26 = !{!"int", !7, i64 0}
!27 = !{!"_ZTSN7leveldb15CompressionTypeE", !7, i64 0}
!28 = !{!10, !6, i64 56}
!29 = !{!30, !6, i64 8}
!30 = !{!"_ZTSN7leveldb20SegmentAndFileHandleE", !6, i64 0, !6, i64 8, !6, i64 16}
!31 = distinct !{!31, !32}
!32 = !{!"llvm.loop.mustprogress"}


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