; LLVM IR from sfu-dis/mosaicdb :: third-party/sparsehash/src/sparsetable_unittest.ll (Z13TestAllocatorv)

; 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.instrumented_allocator.37 = type { i8 }
%"class.google::sparsetable" = type { %"class.std::vector", %"class.google::sparsetable<int>::Settings" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<google::sparsegroup<int, 48, google::libc_allocator_with_realloc<int>>, google::libc_allocator_with_realloc<google::sparsegroup<int, 48, google::libc_allocator_with_realloc<int>>>>::_Vector_impl" }
%"struct.std::_Vector_base<google::sparsegroup<int, 48, google::libc_allocator_with_realloc<int>>, google::libc_allocator_with_realloc<google::sparsegroup<int, 48, google::libc_allocator_with_realloc<int>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<google::sparsegroup<int, 48, google::libc_allocator_with_realloc<int>>, google::libc_allocator_with_realloc<google::sparsegroup<int, 48, google::libc_allocator_with_realloc<int>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<google::sparsegroup<int, 48, google::libc_allocator_with_realloc<int>>, google::libc_allocator_with_realloc<google::sparsegroup<int, 48, google::libc_allocator_with_realloc<int>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.google::sparsetable<int>::Settings" = type { i64, i64 }
%"class.google::libc_allocator_with_realloc.0" = type { i8 }
%"class.google::table_element_adaptor" = type { ptr, i64 }
%"class.google::sparsetable.39" = type { %"class.std::vector.40", %"class.google::sparsetable<int, 48, std::allocator<int>>::Settings" }
%"class.std::vector.40" = type { %"struct.std::_Vector_base.41" }
%"struct.std::_Vector_base.41" = type { %"struct.std::_Vector_base<google::sparsegroup<int, 48, std::allocator<int>>, std::allocator<google::sparsegroup<int, 48, std::allocator<int>>>>::_Vector_impl" }
%"struct.std::_Vector_base<google::sparsegroup<int, 48, std::allocator<int>>, std::allocator<google::sparsegroup<int, 48, std::allocator<int>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<google::sparsegroup<int, 48, std::allocator<int>>, std::allocator<google::sparsegroup<int, 48, std::allocator<int>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<google::sparsegroup<int, 48, std::allocator<int>>, std::allocator<google::sparsegroup<int, 48, std::allocator<int>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.google::sparsetable<int, 48, std::allocator<int>>::Settings" = type { i64, i64 }
%"class.std::allocator.45" = type { i8 }
%"class.google::table_element_adaptor.48" = type { ptr, i64 }
%"class.google::sparsetable.20" = type { %"class.std::vector.21", %"class.google::sparsetable<std::__cxx11::basic_string<char>>::Settings" }
%"class.std::vector.21" = type { %"struct.std::_Vector_base.22" }
%"struct.std::_Vector_base.22" = type { %"struct.std::_Vector_base<google::sparsegroup<std::__cxx11::basic_string<char>, 48, google::libc_allocator_with_realloc<std::__cxx11::basic_string<char>>>, google::libc_allocator_with_realloc<google::sparsegroup<std::__cxx11::basic_string<char>, 48, google::libc_allocator_with_realloc<std::__cxx11::basic_string<char>>>>>::_Vector_impl" }
%"struct.std::_Vector_base<google::sparsegroup<std::__cxx11::basic_string<char>, 48, google::libc_allocator_with_realloc<std::__cxx11::basic_string<char>>>, google::libc_allocator_with_realloc<google::sparsegroup<std::__cxx11::basic_string<char>, 48, google::libc_allocator_with_realloc<std::__cxx11::basic_string<char>>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<google::sparsegroup<std::__cxx11::basic_string<char>, 48, google::libc_allocator_with_realloc<std::__cxx11::basic_string<char>>>, google::libc_allocator_with_realloc<google::sparsegroup<std::__cxx11::basic_string<char>, 48, google::libc_allocator_with_realloc<std::__cxx11::basic_string<char>>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<google::sparsegroup<std::__cxx11::basic_string<char>, 48, google::libc_allocator_with_realloc<std::__cxx11::basic_string<char>>>, google::libc_allocator_with_realloc<google::sparsegroup<std::__cxx11::basic_string<char>, 48, google::libc_allocator_with_realloc<std::__cxx11::basic_string<char>>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.google::sparsetable<std::__cxx11::basic_string<char>>::Settings" = type { i64, i64 }
%"class.google::libc_allocator_with_realloc.25" = type { i8 }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator" = type { i8 }

@_ZL3out = external hidden global ptr, align 8
@_ZL6outbuf = external hidden global [10240 x i8], align 16
@.str.9 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [3 x i8], align 1
@_ZL18sum_allocate_bytes = external hidden global i64, align 8
@_ZL20sum_deallocate_bytes = external hidden global i64, align 8
@.str.84 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [14 x i8], align 1

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6google11sparsetableIiLt48ENS_27libc_allocator_with_reallocIiEEEC2EmS2_(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef, ptr noundef) unnamed_addr #2 align 2

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6google11sparsetableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELt48ENS_27libc_allocator_with_reallocIS6_EEEC2EmS8_(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef, ptr noundef) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZN6google11sparsetableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELt48ENS_27libc_allocator_with_reallocIS6_EEE3setEmRKS6_(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef, ptr noundef nonnull align 8 dereferenceable(32)) #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6google11sparsetableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELt48ENS_27libc_allocator_with_reallocIS6_EEE3getEm(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef) #2 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_Z22ResetAllocatorCountersv() #1

; Function Attrs: mustprogress uwtable
define dso_local void @_Z13TestAllocatorv() #2 personality ptr @__gxx_personality_v0 {
  %1 = alloca ptr, align 8
  %2 = alloca %class.instrumented_allocator.37, align 1
  %3 = alloca ptr, align 8
  %4 = alloca i32, align 4
  %5 = alloca i1, align 1
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = alloca %class.instrumented_allocator.37, align 1
  %10 = alloca i1, align 1
  %11 = alloca ptr, align 8
  %12 = alloca %class.instrumented_allocator.37, align 1
  %13 = alloca i1, align 1
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca %"class.google::sparsetable", align 8
  %19 = alloca %"class.google::libc_allocator_with_realloc.0", align 1
  %20 = alloca %"class.google::sparsetable", align 8
  %21 = alloca %"class.google::libc_allocator_with_realloc.0", align 1
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca %"class.google::table_element_adaptor", align 8
  %28 = alloca %"class.google::table_element_adaptor", align 8
  %29 = alloca %"class.google::sparsetable.39", align 8
  %30 = alloca %"class.std::allocator.45", align 1
  %31 = alloca %"class.google::sparsetable.39", align 8
  %32 = alloca %"class.std::allocator.45", align 1
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca %"class.google::table_element_adaptor.48", align 8
  %38 = alloca %"class.google::table_element_adaptor.48", align 8
  %39 = alloca %"class.google::sparsetable.20", align 8
  %40 = alloca %"class.google::libc_allocator_with_realloc.25", align 1
  %41 = alloca %"class.google::sparsetable.20", align 8
  %42 = alloca %"class.google::libc_allocator_with_realloc.25", align 1
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca %"class.std::__cxx11::basic_string", align 8
  %46 = alloca %"class.std::allocator", align 1
  %47 = alloca i32, align 4
  %48 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %49 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %50 = ptrtoint ptr %49 to i64
  %51 = sub i64 ptrtoint (ptr getelementptr inbounds (i8, ptr @_ZL6outbuf, i64 10240) to i64), %50
  %52 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %48, i64 noundef %51, ptr noundef @.str.84) #8
  %53 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %54 = sext i32 %52 to i64
  %55 = getelementptr inbounds i8, ptr %53, i64 %54
  store ptr %55, ptr @_ZL3out, align 8, !tbaa !5
  call void @_Z22ResetAllocatorCountersv()
  call void @llvm.lifetime.start.p0(i64 8, ptr %1) #8
  %56 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 32) #9
  store i1 true, ptr %5, align 1
  invoke void @_ZN22instrumented_allocatorIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %2)
          to label %57 unwind label %75

57:                                               ; preds = %0
  invoke void @_ZN6google11sparsetableIiLt48E22instrumented_allocatorIiEEC2EtS2_(ptr noundef nonnull align 8 dereferenceable(28) %56, i16 noundef zeroext 10000, ptr noundef %2)
          to label %58 unwind label %79

58:                                               ; preds = %57
  store i1 false, ptr %5, align 1
  call void @_ZN22instrumented_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %2) #8
  store ptr %56, ptr %1, align 8, !tbaa !5
  %59 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %60 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %61 = ptrtoint ptr %60 to i64
  %62 = sub i64 ptrtoint (ptr getelementptr inbounds (i8, ptr @_ZL6outbuf, i64 10240) to i64), %61
  %63 = load i64, ptr @_ZL18sum_allocate_bytes, align 8, !tbaa !9
  %64 = icmp ugt i64 %63, 0
  %65 = zext i1 %64 to i64
  %66 = select i1 %64, ptr @.str.9, ptr @.str.10
  %67 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %59, i64 noundef %62, ptr noundef @.str.85, ptr noundef %66) #8
  %68 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %69 = sext i32 %67 to i64
  %70 = getelementptr inbounds i8, ptr %68, i64 %69
  store ptr %70, ptr @_ZL3out, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #8
  store i32 0, ptr %6, align 4, !tbaa !11
  br label %71

71:                                               ; preds = %92, %58
  %72 = load i32, ptr %6, align 4, !tbaa !11
  %73 = icmp slt i32 %72, 10000
  br i1 %73, label %87, label %74

74:                                               ; preds = %71
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #8
  br label %95

75:                                               ; preds = %0
  %76 = landingpad { ptr, i32 }
          cleanup
  %77 = extractvalue { ptr, i32 } %76, 0
  store ptr %77, ptr %3, align 8
  %78 = extractvalue { ptr, i32 } %76, 1
  store i32 %78, ptr %4, align 4
  br label %83

79:                                               ; preds = %57
  %80 = landingpad { ptr, i32 }
          cleanup
  %81 = extractvalue { ptr, i32 } %80, 0
  store ptr %81, ptr %3, align 8
  %82 = extractvalue { ptr, i32 } %80, 1
  store i32 %82, ptr %4, align 4
  call void @_ZN22instrumented_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %2) #8
  br label %83

83:                                               ; preds = %79, %75
  %84 = load i1, ptr %5, align 1
  br i1 %84, label %85, label %86

85:                                               ; preds = %83
  call void @_ZdlPvm(ptr noundef %56, i64 noundef 32) #10
  br label %86

86:                                               ; preds = %85, %83
  br label %633

87:                                               ; preds = %71
  %88 = load ptr, ptr %1, align 8, !tbaa !5
  %89 = load i32, ptr %6, align 4, !tbaa !11
  %90 = trunc i32 %89 to i16
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #8
  store i32 0, ptr %7, align 4, !tbaa !11
  %91 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6google11sparsetableIiLt48E22instrumented_allocatorIiEE3setEtRKi(ptr noundef nonnull align 8 dereferenceable(28) %88, i16 noundef zeroext %90, ptr noundef nonnull align 4 dereferenceable(4) %7)
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #8
  br label %92

92:                                               ; preds = %87
  %93 = load i32, ptr %6, align 4, !tbaa !11
  %94 = add nsw i32 %93, 1
  store i32 %94, ptr %6, align 4, !tbaa !11
  br label %71, !llvm.loop !13

95:                                               ; preds = %74
  %96 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %97 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %98 = ptrtoint ptr %97 to i64
  %99 = sub i64 ptrtoint (ptr getelementptr inbounds (i8, ptr @_ZL6outbuf, i64 10240) to i64), %98
  %100 = load i64, ptr @_ZL18sum_allocate_bytes, align 8, !tbaa !9
  %101 = icmp uge i64 %100, 40000
  %102 = zext i1 %101 to i64
  %103 = select i1 %101, ptr @.str.9, ptr @.str.10
  %104 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %96, i64 noundef %99, ptr noundef @.str.86, ptr noundef %103) #8
  %105 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %106 = sext i32 %104 to i64
  %107 = getelementptr inbounds i8, ptr %105, i64 %106
  store ptr %107, ptr @_ZL3out, align 8, !tbaa !5
  call void @_Z22ResetAllocatorCountersv()
  %108 = load ptr, ptr %1, align 8, !tbaa !5
  %109 = icmp eq ptr %108, null
  br i1 %109, label %111, label %110

110:                                              ; preds = %95
  call void @_ZN6google11sparsetableIiLt48E22instrumented_allocatorIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %108) #8
  call void @_ZdlPvm(ptr noundef %108, i64 noundef 32) #10
  br label %111

111:                                              ; preds = %110, %95
  %112 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %113 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %114 = ptrtoint ptr %113 to i64
  %115 = sub i64 ptrtoint (ptr getelementptr inbounds (i8, ptr @_ZL6outbuf, i64 10240) to i64), %114
  %116 = load i64, ptr @_ZL20sum_deallocate_bytes, align 8, !tbaa !9
  %117 = icmp uge i64 %116, 40000
  %118 = zext i1 %117 to i64
  %119 = select i1 %117, ptr @.str.9, ptr @.str.10
  %120 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %112, i64 noundef %115, ptr noundef @.str.87, ptr noundef %119) #8
  %121 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %122 = sext i32 %120 to i64
  %123 = getelementptr inbounds i8, ptr %121, i64 %122
  store ptr %123, ptr @_ZL3out, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #8
  %124 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 32) #9
  store i1 true, ptr %10, align 1
  invoke void @_ZN22instrumented_allocatorIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9)
          to label %125 unwind label %134

125:                                              ; preds = %111
  invoke void @_ZN6google11sparsetableIiLt48E22instrumented_allocatorIiEEC2EtS2_(ptr noundef nonnull align 8 dereferenceable(28) %124, i16 noundef zeroext 1000, ptr noundef %9)
          to label %126 unwind label %138

126:                                              ; preds = %125
  store i1 false, ptr %10, align 1
  call void @_ZN22instrumented_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #8
  store ptr %124, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #8
  %127 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 32) #9
  store i1 true, ptr %13, align 1
  invoke void @_ZN22instrumented_allocatorIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %128 unwind label %146

128:                                              ; preds = %126
  invoke void @_ZN6google11sparsetableIiLt48E22instrumented_allocatorIiEEC2EtS2_(ptr noundef nonnull align 8 dereferenceable(28) %127, i16 noundef zeroext 1000, ptr noundef %12)
          to label %129 unwind label %150

129:                                              ; preds = %128
  store i1 false, ptr %13, align 1
  call void @_ZN22instrumented_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #8
  store ptr %127, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #8
  store i32 0, ptr %14, align 4, !tbaa !11
  br label %130

130:                                              ; preds = %167, %129
  %131 = load i32, ptr %14, align 4, !tbaa !11
  %132 = icmp slt i32 %131, 1000
  br i1 %132, label %158, label %133

133:                                              ; preds = %130
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #8
  br label %170

134:                                              ; preds = %111
  %135 = landingpad { ptr, i32 }
          cleanup
  %136 = extractvalue { ptr, i32 } %135, 0
  store ptr %136, ptr %3, align 8
  %137 = extractvalue { ptr, i32 } %135, 1
  store i32 %137, ptr %4, align 4
  br label %142

138:                                              ; preds = %125
  %139 = landingpad { ptr, i32 }
          cleanup
  %140 = extractvalue { ptr, i32 } %139, 0
  store ptr %140, ptr %3, align 8
  %141 = extractvalue { ptr, i32 } %139, 1
  store i32 %141, ptr %4, align 4
  call void @_ZN22instrumented_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #8
  br label %142

142:                                              ; preds = %138, %134
  %143 = load i1, ptr %10, align 1
  br i1 %143, label %144, label %145

144:                                              ; preds = %142
  call void @_ZdlPvm(ptr noundef %124, i64 noundef 32) #10
  br label %145

145:                                              ; preds = %144, %142
  br label %632

146:                                              ; preds = %126
  %147 = landingpad { ptr, i32 }
          cleanup
  %148 = extractvalue { ptr, i32 } %147, 0
  store ptr %148, ptr %3, align 8
  %149 = extractvalue { ptr, i32 } %147, 1
  store i32 %149, ptr %4, align 4
  br label %154

150:                                              ; preds = %128
  %151 = landingpad { ptr, i32 }
          cleanup
  %152 = extractvalue { ptr, i32 } %151, 0
  store ptr %152, ptr %3, align 8
  %153 = extractvalue { ptr, i32 } %151, 1
  store i32 %153, ptr %4, align 4
  call void @_ZN22instrumented_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #8
  br label %154

154:                                              ; preds = %150, %146
  %155 = load i1, ptr %13, align 1
  br i1 %155, label %156, label %157

156:                                              ; preds = %154
  call void @_ZdlPvm(ptr noundef %127, i64 noundef 32) #10
  br label %157

157:                                              ; preds = %156, %154
  br label %631

158:                                              ; preds = %130
  %159 = load ptr, ptr %8, align 8, !tbaa !5
  %160 = load i32, ptr %14, align 4, !tbaa !11
  %161 = trunc i32 %160 to i16
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #8
  store i32 0, ptr %15, align 4, !tbaa !11
  %162 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6google11sparsetableIiLt48E22instrumented_allocatorIiEE3setEtRKi(ptr noundef nonnull align 8 dereferenceable(28) %159, i16 noundef zeroext %161, ptr noundef nonnull align 4 dereferenceable(4) %15)
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #8
  %163 = load ptr, ptr %11, align 8, !tbaa !5
  %164 = load i32, ptr %14, align 4, !tbaa !11
  %165 = trunc i32 %164 to i16
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #8
  store i32 0, ptr %16, align 4, !tbaa !11
  %166 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6google11sparsetableIiLt48E22instrumented_allocatorIiEE3setEtRKi(ptr noundef nonnull align 8 dereferenceable(28) %163, i16 noundef zeroext %165, ptr noundef nonnull align 4 dereferenceable(4) %16)
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #8
  br label %167

167:                                              ; preds = %158
  %168 = load i32, ptr %14, align 4, !tbaa !11
  %169 = add nsw i32 %168, 1
  store i32 %169, ptr %14, align 4, !tbaa !11
  br label %130, !llvm.loop !15

170:                                              ; preds = %133
  %171 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %172 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %173 = ptrtoint ptr %172 to i64
  %174 = sub i64 ptrtoint (ptr getelementptr inbounds (i8, ptr @_ZL6outbuf, i64 10240) to i64), %173
  %175 = load i64, ptr @_ZL18sum_allocate_bytes, align 8, !tbaa !9
  %176 = icmp uge i64 %175, 8000
  %177 = zext i1 %176 to i64
  %178 = select i1 %176, ptr @.str.9, ptr @.str.10
  %179 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %171, i64 noundef %174, ptr noundef @.str.88, ptr noundef %178) #8
  %180 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %181 = sext i32 %179 to i64
  %182 = getelementptr inbounds i8, ptr %180, i64 %181
  store ptr %182, ptr @_ZL3out, align 8, !tbaa !5
  call void @_Z22ResetAllocatorCountersv()
  %183 = load ptr, ptr %11, align 8, !tbaa !5
  call void @_ZN6google11sparsetableIiLt48E22instrumented_allocatorIiEE5clearEv(ptr noundef nonnull align 8 dereferenceable(28) %183)
  %184 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %185 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %186 = ptrtoint ptr %185 to i64
  %187 = sub i64 ptrtoint (ptr getelementptr inbounds (i8, ptr @_ZL6outbuf, i64 10240) to i64), %186
  %188 = load i64, ptr @_ZL20sum_deallocate_bytes, align 8, !tbaa !9
  %189 = icmp uge i64 %188, 4000
  %190 = zext i1 %189 to i64
  %191 = select i1 %189, ptr @.str.9, ptr @.str.10
  %192 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %184, i64 noundef %187, ptr noundef @.str.89, ptr noundef %191) #8
  %193 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %194 = sext i32 %192 to i64
  %195 = getelementptr inbounds i8, ptr %193, i64 %194
  store ptr %195, ptr @_ZL3out, align 8, !tbaa !5
  call void @_Z22ResetAllocatorCountersv()
  %196 = load ptr, ptr %8, align 8, !tbaa !5
  %197 = load ptr, ptr %11, align 8, !tbaa !5
  call void @_ZN6google11sparsetableIiLt48E22instrumented_allocatorIiEE4swapERS3_(ptr noundef nonnull align 8 dereferenceable(28) %196, ptr noundef nonnull align 8 dereferenceable(28) %197)
  %198 = load ptr, ptr %8, align 8, !tbaa !5
  call void @_ZN6google11sparsetableIiLt48E22instrumented_allocatorIiEE5clearEv(ptr noundef nonnull align 8 dereferenceable(28) %198)
  %199 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %200 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %201 = ptrtoint ptr %200 to i64
  %202 = sub i64 ptrtoint (ptr getelementptr inbounds (i8, ptr @_ZL6outbuf, i64 10240) to i64), %201
  %203 = load i64, ptr @_ZL20sum_deallocate_bytes, align 8, !tbaa !9
  %204 = icmp ult i64 %203, 4000
  %205 = zext i1 %204 to i64
  %206 = select i1 %204, ptr @.str.9, ptr @.str.10
  %207 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %199, i64 noundef %202, ptr noundef @.str.90, ptr noundef %206) #8
  %208 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %209 = sext i32 %207 to i64
  %210 = getelementptr inbounds i8, ptr %208, i64 %209
  store ptr %210, ptr @_ZL3out, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #8
  store i32 0, ptr %17, align 4, !tbaa !11
  br label %211

211:                                              ; preds = %222, %170
  %212 = load i32, ptr %17, align 4, !tbaa !11
  %213 = load ptr, ptr %11, align 8, !tbaa !5
  %214 = call noundef zeroext i16 @_ZNK6google11sparsetableIiLt48E22instrumented_allocatorIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(28) %213)
  %215 = zext i16 %214 to i32
  %216 = icmp slt i32 %212, %215
  br i1 %216, label %218, label %217

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

218:                                              ; preds = %211
  %219 = load ptr, ptr %11, align 8, !tbaa !5
  %220 = load i32, ptr %17, align 4, !tbaa !11
  %221 = trunc i32 %220 to i16
  call void @_ZN6google11sparsetableIiLt48E22instrumented_allocatorIiEE5eraseEt(ptr noundef nonnull align 8 dereferenceable(28) %219, i16 noundef zeroext %221)
  br label %222

222:                                              ; preds = %218
  %223 = load i32, ptr %17, align 4, !tbaa !11
  %224 = add nsw i32 %223, 1
  store i32 %224, ptr %17, align 4, !tbaa !11
  br label %211, !llvm.loop !16

225:                                              ; preds = %217
  %226 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %227 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %228 = ptrtoint ptr %227 to i64
  %229 = sub i64 ptrtoint (ptr getelementptr inbounds (i8, ptr @_ZL6outbuf, i64 10240) to i64), %228
  %230 = load i64, ptr @_ZL20sum_deallocate_bytes, align 8, !tbaa !9
  %231 = icmp uge i64 %230, 4000
  %232 = zext i1 %231 to i64
  %233 = select i1 %231, ptr @.str.9, ptr @.str.10
  %234 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %226, i64 noundef %229, ptr noundef @.str.89, ptr noundef %233) #8
  %235 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %236 = sext i32 %234 to i64
  %237 = getelementptr inbounds i8, ptr %235, i64 %236
  store ptr %237, ptr @_ZL3out, align 8, !tbaa !5
  %238 = load ptr, ptr %8, align 8, !tbaa !5
  %239 = icmp eq ptr %238, null
  br i1 %239, label %241, label %240

240:                                              ; preds = %225
  call void @_ZN6google11sparsetableIiLt48E22instrumented_allocatorIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %238) #8
  call void @_ZdlPvm(ptr noundef %238, i64 noundef 32) #10
  br label %241

241:                                              ; preds = %240, %225
  %242 = load ptr, ptr %11, align 8, !tbaa !5
  %243 = icmp eq ptr %242, null
  br i1 %243, label %245, label %244

244:                                              ; preds = %241
  call void @_ZN6google11sparsetableIiLt48E22instrumented_allocatorIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %242) #8
  call void @_ZdlPvm(ptr noundef %242, i64 noundef 32) #10
  br label %245

245:                                              ; preds = %244, %241
  call void @llvm.lifetime.start.p0(i64 40, ptr %18) #8
  call void @_ZN6google27libc_allocator_with_reallocIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19)
  invoke void @_ZN6google11sparsetableIiLt48ENS_27libc_allocator_with_reallocIiEEEC2EmS2_(ptr noundef nonnull align 8 dereferenceable(40) %18, i64 noundef 0, ptr noundef %19)
          to label %246 unwind label %253

246:                                              ; preds = %245
  call void @_ZN6google27libc_allocator_with_reallocIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #8
  call void @llvm.lifetime.start.p0(i64 40, ptr %20) #8
  invoke void @_ZN6google27libc_allocator_with_reallocIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %247 unwind label %257

247:                                              ; preds = %246
  invoke void @_ZN6google11sparsetableIiLt48ENS_27libc_allocator_with_reallocIiEEEC2EmS2_(ptr noundef nonnull align 8 dereferenceable(40) %20, i64 noundef 0, ptr noundef %21)
          to label %248 unwind label %261

248:                                              ; preds = %247
  call void @_ZN6google27libc_allocator_with_reallocIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #8
  store i32 1000, ptr %22, align 4, !tbaa !11
  br label %249

249:                                              ; preds = %313, %248
  %250 = load i32, ptr %22, align 4, !tbaa !11
  %251 = icmp sle i32 %250, 40000
  br i1 %251, label %265, label %252

252:                                              ; preds = %249
  store i32 11, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  br label %317

253:                                              ; preds = %245
  %254 = landingpad { ptr, i32 }
          cleanup
  %255 = extractvalue { ptr, i32 } %254, 0
  store ptr %255, ptr %3, align 8
  %256 = extractvalue { ptr, i32 } %254, 1
  store i32 %256, ptr %4, align 4
  call void @_ZN6google27libc_allocator_with_reallocIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #8
  br label %630

257:                                              ; preds = %246
  %258 = landingpad { ptr, i32 }
          cleanup
  %259 = extractvalue { ptr, i32 } %258, 0
  store ptr %259, ptr %3, align 8
  %260 = extractvalue { ptr, i32 } %258, 1
  store i32 %260, ptr %4, align 4
  br label %629

261:                                              ; preds = %247
  %262 = landingpad { ptr, i32 }
          cleanup
  %263 = extractvalue { ptr, i32 } %262, 0
  store ptr %263, ptr %3, align 8
  %264 = extractvalue { ptr, i32 } %262, 1
  store i32 %264, ptr %4, align 4
  call void @_ZN6google27libc_allocator_with_reallocIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #8
  br label %629

265:                                              ; preds = %249
  %266 = load i32, ptr %22, align 4, !tbaa !11
  %267 = sext i32 %266 to i64
  invoke void @_ZN6google11sparsetableIiLt48ENS_27libc_allocator_with_reallocIiEEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(40) %18, i64 noundef %267)
          to label %268 unwind label %274

268:                                              ; preds = %265
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #8
  store i32 0, ptr %24, align 4, !tbaa !11
  br label %269

269:                                              ; preds = %285, %268
  %270 = load i32, ptr %24, align 4, !tbaa !11
  %271 = load i32, ptr %22, align 4, !tbaa !11
  %272 = icmp slt i32 %270, %271
  br i1 %272, label %278, label %273

273:                                              ; preds = %269
  store i32 14, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #8
  br label %292

274:                                              ; preds = %311, %292, %265
  %275 = landingpad { ptr, i32 }
          cleanup
  %276 = extractvalue { ptr, i32 } %275, 0
  store ptr %276, ptr %3, align 8
  %277 = extractvalue { ptr, i32 } %275, 1
  store i32 %277, ptr %4, align 4
  br label %316

278:                                              ; preds = %269
  %279 = load i32, ptr %24, align 4, !tbaa !11
  %280 = sext i32 %279 to i64
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #8
  %281 = load i32, ptr %24, align 4, !tbaa !11
  %282 = add nsw i32 %281, 1
  store i32 %282, ptr %25, align 4, !tbaa !11
  %283 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6google11sparsetableIiLt48ENS_27libc_allocator_with_reallocIiEEE3setEmRKi(ptr noundef nonnull align 8 dereferenceable(40) %18, i64 noundef %280, ptr noundef nonnull align 4 dereferenceable(4) %25)
          to label %284 unwind label %288

284:                                              ; preds = %278
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #8
  br label %285

285:                                              ; preds = %284
  %286 = load i32, ptr %24, align 4, !tbaa !11
  %287 = add nsw i32 %286, 1
  store i32 %287, ptr %24, align 4, !tbaa !11
  br label %269, !llvm.loop !17

288:                                              ; preds = %278
  %289 = landingpad { ptr, i32 }
          cleanup
  %290 = extractvalue { ptr, i32 } %289, 0
  store ptr %290, ptr %3, align 8
  %291 = extractvalue { ptr, i32 } %289, 1
  store i32 %291, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #8
  br label %316

292:                                              ; preds = %273
  %293 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN6google11sparsetableIiLt48ENS_27libc_allocator_with_reallocIiEEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(40) %20, ptr noundef nonnull align 8 dereferenceable(40) %18)
          to label %294 unwind label %274

294:                                              ; preds = %292
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #8
  store i32 0, ptr %26, align 4, !tbaa !11
  br label %295

295:                                              ; preds = %304, %294
  %296 = load i32, ptr %26, align 4, !tbaa !11
  %297 = load i32, ptr %22, align 4, !tbaa !11
  %298 = icmp slt i32 %296, %297
  br i1 %298, label %300, label %299

299:                                              ; preds = %295
  store i32 17, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #8
  br label %311

300:                                              ; preds = %295
  %301 = load i32, ptr %26, align 4, !tbaa !11
  %302 = sext i32 %301 to i64
  invoke void @_ZN6google11sparsetableIiLt48ENS_27libc_allocator_with_reallocIiEEE5eraseEm(ptr noundef nonnull align 8 dereferenceable(40) %20, i64 noundef %302)
          to label %303 unwind label %307

303:                                              ; preds = %300
  br label %304

304:                                              ; preds = %303
  %305 = load i32, ptr %26, align 4, !tbaa !11
  %306 = add nsw i32 %305, 1
  store i32 %306, ptr %26, align 4, !tbaa !11
  br label %295, !llvm.loop !18

307:                                              ; preds = %300
  %308 = landingpad { ptr, i32 }
          cleanup
  %309 = extractvalue { ptr, i32 } %308, 0
  store ptr %309, ptr %3, align 8
  %310 = extractvalue { ptr, i32 } %308, 1
  store i32 %310, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #8
  br label %316

311:                                              ; preds = %299
  invoke void @_ZN6google11sparsetableIiLt48ENS_27libc_allocator_with_reallocIiEEE4swapERS3_(ptr noundef nonnull align 8 dereferenceable(40) %20, ptr noundef nonnull align 8 dereferenceable(40) %18)
          to label %312 unwind label %274

312:                                              ; preds = %311
  br label %313

313:                                              ; preds = %312
  %314 = load i32, ptr %22, align 4, !tbaa !11
  %315 = add nsw i32 %314, 1000
  store i32 %315, ptr %22, align 4, !tbaa !11
  br label %249, !llvm.loop !19

316:                                              ; preds = %307, %288, %274
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  br label %628

317:                                              ; preds = %252
  %318 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %319 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %320 = ptrtoint ptr %319 to i64
  %321 = sub i64 ptrtoint (ptr getelementptr inbounds (i8, ptr @_ZL6outbuf, i64 10240) to i64), %320
  %322 = invoke noundef i64 @_ZNK6google11sparsetableIiLt48ENS_27libc_allocator_with_reallocIiEEE12num_nonemptyEv(ptr noundef nonnull align 8 dereferenceable(40) %18)
          to label %323 unwind label %370

323:                                              ; preds = %317
  %324 = icmp eq i64 %322, 0
  %325 = zext i1 %324 to i64
  %326 = select i1 %324, ptr @.str.9, ptr @.str.10
  %327 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %318, i64 noundef %321, ptr noundef @.str.91, ptr noundef %326) #8
  %328 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %329 = sext i32 %327 to i64
  %330 = getelementptr inbounds i8, ptr %328, i64 %329
  store ptr %330, ptr @_ZL3out, align 8, !tbaa !5
  %331 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %332 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %333 = ptrtoint ptr %332 to i64
  %334 = sub i64 ptrtoint (ptr getelementptr inbounds (i8, ptr @_ZL6outbuf, i64 10240) to i64), %333
  call void @llvm.lifetime.start.p0(i64 16, ptr %27) #8
  %335 = invoke { ptr, i64 } @_ZN6google11sparsetableIiLt48ENS_27libc_allocator_with_reallocIiEEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %20, i64 noundef 0)
          to label %336 unwind label %374

336:                                              ; preds = %323
  %337 = getelementptr inbounds { ptr, i64 }, ptr %27, i32 0, i32 0
  %338 = extractvalue { ptr, i64 } %335, 0
  store ptr %338, ptr %337, align 8
  %339 = getelementptr inbounds { ptr, i64 }, ptr %27, i32 0, i32 1
  %340 = extractvalue { ptr, i64 } %335, 1
  store i64 %340, ptr %339, align 8
  %341 = invoke noundef i32 @_ZN6google21table_element_adaptorINS_11sparsetableIiLt48ENS_27libc_allocator_with_reallocIiEEEEEcviEv(ptr noundef nonnull align 8 dereferenceable(16) %27)
          to label %342 unwind label %374

342:                                              ; preds = %336
  %343 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %331, i64 noundef %334, ptr noundef @.str.92, i32 noundef %341) #8
  %344 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %345 = sext i32 %343 to i64
  %346 = getelementptr inbounds i8, ptr %344, i64 %345
  store ptr %346, ptr @_ZL3out, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #8
  %347 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %348 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %349 = ptrtoint ptr %348 to i64
  %350 = sub i64 ptrtoint (ptr getelementptr inbounds (i8, ptr @_ZL6outbuf, i64 10240) to i64), %349
  call void @llvm.lifetime.start.p0(i64 16, ptr %28) #8
  %351 = invoke { ptr, i64 } @_ZN6google11sparsetableIiLt48ENS_27libc_allocator_with_reallocIiEEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %20, i64 noundef 39999)
          to label %352 unwind label %378

352:                                              ; preds = %342
  %353 = getelementptr inbounds { ptr, i64 }, ptr %28, i32 0, i32 0
  %354 = extractvalue { ptr, i64 } %351, 0
  store ptr %354, ptr %353, align 8
  %355 = getelementptr inbounds { ptr, i64 }, ptr %28, i32 0, i32 1
  %356 = extractvalue { ptr, i64 } %351, 1
  store i64 %356, ptr %355, align 8
  %357 = invoke noundef i32 @_ZN6google21table_element_adaptorINS_11sparsetableIiLt48ENS_27libc_allocator_with_reallocIiEEEEEcviEv(ptr noundef nonnull align 8 dereferenceable(16) %28)
          to label %358 unwind label %378

358:                                              ; preds = %352
  %359 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %347, i64 noundef %350, ptr noundef @.str.93, i32 noundef %357) #8
  %360 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %361 = sext i32 %359 to i64
  %362 = getelementptr inbounds i8, ptr %360, i64 %361
  store ptr %362, ptr @_ZL3out, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #8
  invoke void @_ZN6google11sparsetableIiLt48ENS_27libc_allocator_with_reallocIiEEE5clearEv(ptr noundef nonnull align 8 dereferenceable(40) %20)
          to label %363 unwind label %370

363:                                              ; preds = %358
  call void @llvm.lifetime.start.p0(i64 40, ptr %29) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #8
  invoke void @_ZN6google11sparsetableIiLt48ESaIiEEC2EmS1_(ptr noundef nonnull align 8 dereferenceable(40) %29, i64 noundef 0, ptr noundef %30)
          to label %364 unwind label %382

364:                                              ; preds = %363
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #8
  call void @llvm.lifetime.start.p0(i64 40, ptr %31) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #8
  invoke void @_ZN6google11sparsetableIiLt48ESaIiEEC2EmS1_(ptr noundef nonnull align 8 dereferenceable(40) %31, i64 noundef 0, ptr noundef %32)
          to label %365 unwind label %386

365:                                              ; preds = %364
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #8
  store i32 1000, ptr %33, align 4, !tbaa !11
  br label %366

366:                                              ; preds = %438, %365
  %367 = load i32, ptr %33, align 4, !tbaa !11
  %368 = icmp sle i32 %367, 40000
  br i1 %368, label %390, label %369

369:                                              ; preds = %366
  store i32 20, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #8
  br label %442

370:                                              ; preds = %358, %317
  %371 = landingpad { ptr, i32 }
          cleanup
  %372 = extractvalue { ptr, i32 } %371, 0
  store ptr %372, ptr %3, align 8
  %373 = extractvalue { ptr, i32 } %371, 1
  store i32 %373, ptr %4, align 4
  br label %628

374:                                              ; preds = %336, %323
  %375 = landingpad { ptr, i32 }
          cleanup
  %376 = extractvalue { ptr, i32 } %375, 0
  store ptr %376, ptr %3, align 8
  %377 = extractvalue { ptr, i32 } %375, 1
  store i32 %377, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #8
  br label %628

378:                                              ; preds = %352, %342
  %379 = landingpad { ptr, i32 }
          cleanup
  %380 = extractvalue { ptr, i32 } %379, 0
  store ptr %380, ptr %3, align 8
  %381 = extractvalue { ptr, i32 } %379, 1
  store i32 %381, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #8
  br label %628

382:                                              ; preds = %363
  %383 = landingpad { ptr, i32 }
          cleanup
  %384 = extractvalue { ptr, i32 } %383, 0
  store ptr %384, ptr %3, align 8
  %385 = extractvalue { ptr, i32 } %383, 1
  store i32 %385, ptr %4, align 4
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #8
  br label %627

386:                                              ; preds = %364
  %387 = landingpad { ptr, i32 }
          cleanup
  %388 = extractvalue { ptr, i32 } %387, 0
  store ptr %388, ptr %3, align 8
  %389 = extractvalue { ptr, i32 } %387, 1
  store i32 %389, ptr %4, align 4
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #8
  br label %626

390:                                              ; preds = %366
  %391 = load i32, ptr %33, align 4, !tbaa !11
  %392 = sext i32 %391 to i64
  invoke void @_ZN6google11sparsetableIiLt48ESaIiEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(40) %29, i64 noundef %392)
          to label %393 unwind label %399

393:                                              ; preds = %390
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #8
  store i32 0, ptr %34, align 4, !tbaa !11
  br label %394

394:                                              ; preds = %410, %393
  %395 = load i32, ptr %34, align 4, !tbaa !11
  %396 = load i32, ptr %33, align 4, !tbaa !11
  %397 = icmp slt i32 %395, %396
  br i1 %397, label %403, label %398

398:                                              ; preds = %394
  store i32 23, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #8
  br label %417

399:                                              ; preds = %436, %417, %390
  %400 = landingpad { ptr, i32 }
          cleanup
  %401 = extractvalue { ptr, i32 } %400, 0
  store ptr %401, ptr %3, align 8
  %402 = extractvalue { ptr, i32 } %400, 1
  store i32 %402, ptr %4, align 4
  br label %441

403:                                              ; preds = %394
  %404 = load i32, ptr %34, align 4, !tbaa !11
  %405 = sext i32 %404 to i64
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #8
  %406 = load i32, ptr %34, align 4, !tbaa !11
  %407 = add nsw i32 %406, 1
  store i32 %407, ptr %35, align 4, !tbaa !11
  %408 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6google11sparsetableIiLt48ESaIiEE3setEmRKi(ptr noundef nonnull align 8 dereferenceable(40) %29, i64 noundef %405, ptr noundef nonnull align 4 dereferenceable(4) %35)
          to label %409 unwind label %413

409:                                              ; preds = %403
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #8
  br label %410

410:                                              ; preds = %409
  %411 = load i32, ptr %34, align 4, !tbaa !11
  %412 = add nsw i32 %411, 1
  store i32 %412, ptr %34, align 4, !tbaa !11
  br label %394, !llvm.loop !20

413:                                              ; preds = %403
  %414 = landingpad { ptr, i32 }
          cleanup
  %415 = extractvalue { ptr, i32 } %414, 0
  store ptr %415, ptr %3, align 8
  %416 = extractvalue { ptr, i32 } %414, 1
  store i32 %416, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #8
  br label %441

417:                                              ; preds = %398
  %418 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN6google11sparsetableIiLt48ESaIiEEaSERKS2_(ptr noundef nonnull align 8 dereferenceable(40) %31, ptr noundef nonnull align 8 dereferenceable(40) %29)
          to label %419 unwind label %399

419:                                              ; preds = %417
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #8
  store i32 0, ptr %36, align 4, !tbaa !11
  br label %420

420:                                              ; preds = %429, %419
  %421 = load i32, ptr %36, align 4, !tbaa !11
  %422 = load i32, ptr %33, align 4, !tbaa !11
  %423 = icmp slt i32 %421, %422
  br i1 %423, label %425, label %424

424:                                              ; preds = %420
  store i32 26, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #8
  br label %436

425:                                              ; preds = %420
  %426 = load i32, ptr %36, align 4, !tbaa !11
  %427 = sext i32 %426 to i64
  invoke void @_ZN6google11sparsetableIiLt48ESaIiEE5eraseEm(ptr noundef nonnull align 8 dereferenceable(40) %31, i64 noundef %427)
          to label %428 unwind label %432

428:                                              ; preds = %425
  br label %429

429:                                              ; preds = %428
  %430 = load i32, ptr %36, align 4, !tbaa !11
  %431 = add nsw i32 %430, 1
  store i32 %431, ptr %36, align 4, !tbaa !11
  br label %420, !llvm.loop !21

432:                                              ; preds = %425
  %433 = landingpad { ptr, i32 }
          cleanup
  %434 = extractvalue { ptr, i32 } %433, 0
  store ptr %434, ptr %3, align 8
  %435 = extractvalue { ptr, i32 } %433, 1
  store i32 %435, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #8
  br label %441

436:                                              ; preds = %424
  invoke void @_ZN6google11sparsetableIiLt48ESaIiEE4swapERS2_(ptr noundef nonnull align 8 dereferenceable(40) %31, ptr noundef nonnull align 8 dereferenceable(40) %29)
          to label %437 unwind label %399

437:                                              ; preds = %436
  br label %438

438:                                              ; preds = %437
  %439 = load i32, ptr %33, align 4, !tbaa !11
  %440 = add nsw i32 %439, 1000
  store i32 %440, ptr %33, align 4, !tbaa !11
  br label %366, !llvm.loop !22

441:                                              ; preds = %432, %413, %399
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #8
  br label %625

442:                                              ; preds = %369
  %443 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %444 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %445 = ptrtoint ptr %444 to i64
  %446 = sub i64 ptrtoint (ptr getelementptr inbounds (i8, ptr @_ZL6outbuf, i64 10240) to i64), %445
  %447 = invoke noundef i64 @_ZNK6google11sparsetableIiLt48ESaIiEE12num_nonemptyEv(ptr noundef nonnull align 8 dereferenceable(40) %29)
          to label %448 unwind label %497

448:                                              ; preds = %442
  %449 = icmp eq i64 %447, 0
  %450 = zext i1 %449 to i64
  %451 = select i1 %449, ptr @.str.9, ptr @.str.10
  %452 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %443, i64 noundef %446, ptr noundef @.str.94, ptr noundef %451) #8
  %453 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %454 = sext i32 %452 to i64
  %455 = getelementptr inbounds i8, ptr %453, i64 %454
  store ptr %455, ptr @_ZL3out, align 8, !tbaa !5
  %456 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %457 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %458 = ptrtoint ptr %457 to i64
  %459 = sub i64 ptrtoint (ptr getelementptr inbounds (i8, ptr @_ZL6outbuf, i64 10240) to i64), %458
  call void @llvm.lifetime.start.p0(i64 16, ptr %37) #8
  %460 = invoke { ptr, i64 } @_ZN6google11sparsetableIiLt48ESaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %31, i64 noundef 0)
          to label %461 unwind label %501

461:                                              ; preds = %448
  %462 = getelementptr inbounds { ptr, i64 }, ptr %37, i32 0, i32 0
  %463 = extractvalue { ptr, i64 } %460, 0
  store ptr %463, ptr %462, align 8
  %464 = getelementptr inbounds { ptr, i64 }, ptr %37, i32 0, i32 1
  %465 = extractvalue { ptr, i64 } %460, 1
  store i64 %465, ptr %464, align 8
  %466 = invoke noundef i32 @_ZN6google21table_element_adaptorINS_11sparsetableIiLt48ESaIiEEEEcviEv(ptr noundef nonnull align 8 dereferenceable(16) %37)
          to label %467 unwind label %501

467:                                              ; preds = %461
  %468 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %456, i64 noundef %459, ptr noundef @.str.95, i32 noundef %466) #8
  %469 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %470 = sext i32 %468 to i64
  %471 = getelementptr inbounds i8, ptr %469, i64 %470
  store ptr %471, ptr @_ZL3out, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #8
  %472 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %473 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %474 = ptrtoint ptr %473 to i64
  %475 = sub i64 ptrtoint (ptr getelementptr inbounds (i8, ptr @_ZL6outbuf, i64 10240) to i64), %474
  call void @llvm.lifetime.start.p0(i64 16, ptr %38) #8
  %476 = invoke { ptr, i64 } @_ZN6google11sparsetableIiLt48ESaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %31, i64 noundef 39999)
          to label %477 unwind label %505

477:                                              ; preds = %467
  %478 = getelementptr inbounds { ptr, i64 }, ptr %38, i32 0, i32 0
  %479 = extractvalue { ptr, i64 } %476, 0
  store ptr %479, ptr %478, align 8
  %480 = getelementptr inbounds { ptr, i64 }, ptr %38, i32 0, i32 1
  %481 = extractvalue { ptr, i64 } %476, 1
  store i64 %481, ptr %480, align 8
  %482 = invoke noundef i32 @_ZN6google21table_element_adaptorINS_11sparsetableIiLt48ESaIiEEEEcviEv(ptr noundef nonnull align 8 dereferenceable(16) %38)
          to label %483 unwind label %505

483:                                              ; preds = %477
  %484 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %472, i64 noundef %475, ptr noundef @.str.96, i32 noundef %482) #8
  %485 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %486 = sext i32 %484 to i64
  %487 = getelementptr inbounds i8, ptr %485, i64 %486
  store ptr %487, ptr @_ZL3out, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 16, ptr %38) #8
  invoke void @_ZN6google11sparsetableIiLt48ESaIiEE5clearEv(ptr noundef nonnull align 8 dereferenceable(40) %31)
          to label %488 unwind label %497

488:                                              ; preds = %483
  call void @llvm.lifetime.start.p0(i64 40, ptr %39) #8
  invoke void @_ZN6google27libc_allocator_with_reallocINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40)
          to label %489 unwind label %509

489:                                              ; preds = %488
  invoke void @_ZN6google11sparsetableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELt48ENS_27libc_allocator_with_reallocIS6_EEEC2EmS8_(ptr noundef nonnull align 8 dereferenceable(40) %39, i64 noundef 0, ptr noundef %40)
          to label %490 unwind label %513

490:                                              ; preds = %489
  call void @_ZN6google27libc_allocator_with_reallocINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #8
  call void @llvm.lifetime.start.p0(i64 40, ptr %41) #8
  invoke void @_ZN6google27libc_allocator_with_reallocINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42)
          to label %491 unwind label %517

491:                                              ; preds = %490
  invoke void @_ZN6google11sparsetableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELt48ENS_27libc_allocator_with_reallocIS6_EEEC2EmS8_(ptr noundef nonnull align 8 dereferenceable(40) %41, i64 noundef 0, ptr noundef %42)
          to label %492 unwind label %521

492:                                              ; preds = %491
  call void @_ZN6google27libc_allocator_with_reallocINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #8
  store i32 1000, ptr %43, align 4, !tbaa !11
  br label %493

493:                                              ; preds = %577, %492
  %494 = load i32, ptr %43, align 4, !tbaa !11
  %495 = icmp sle i32 %494, 40000
  br i1 %495, label %525, label %496

496:                                              ; preds = %493
  store i32 29, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #8
  br label %581

497:                                              ; preds = %483, %442
  %498 = landingpad { ptr, i32 }
          cleanup
  %499 = extractvalue { ptr, i32 } %498, 0
  store ptr %499, ptr %3, align 8
  %500 = extractvalue { ptr, i32 } %498, 1
  store i32 %500, ptr %4, align 4
  br label %625

501:                                              ; preds = %461, %448
  %502 = landingpad { ptr, i32 }
          cleanup
  %503 = extractvalue { ptr, i32 } %502, 0
  store ptr %503, ptr %3, align 8
  %504 = extractvalue { ptr, i32 } %502, 1
  store i32 %504, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #8
  br label %625

505:                                              ; preds = %477, %467
  %506 = landingpad { ptr, i32 }
          cleanup
  %507 = extractvalue { ptr, i32 } %506, 0
  store ptr %507, ptr %3, align 8
  %508 = extractvalue { ptr, i32 } %506, 1
  store i32 %508, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %38) #8
  br label %625

509:                                              ; preds = %488
  %510 = landingpad { ptr, i32 }
          cleanup
  %511 = extractvalue { ptr, i32 } %510, 0
  store ptr %511, ptr %3, align 8
  %512 = extractvalue { ptr, i32 } %510, 1
  store i32 %512, ptr %4, align 4
  br label %624

513:                                              ; preds = %489
  %514 = landingpad { ptr, i32 }
          cleanup
  %515 = extractvalue { ptr, i32 } %514, 0
  store ptr %515, ptr %3, align 8
  %516 = extractvalue { ptr, i32 } %514, 1
  store i32 %516, ptr %4, align 4
  call void @_ZN6google27libc_allocator_with_reallocINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #8
  br label %624

517:                                              ; preds = %490
  %518 = landingpad { ptr, i32 }
          cleanup
  %519 = extractvalue { ptr, i32 } %518, 0
  store ptr %519, ptr %3, align 8
  %520 = extractvalue { ptr, i32 } %518, 1
  store i32 %520, ptr %4, align 4
  br label %623

521:                                              ; preds = %491
  %522 = landingpad { ptr, i32 }
          cleanup
  %523 = extractvalue { ptr, i32 } %522, 0
  store ptr %523, ptr %3, align 8
  %524 = extractvalue { ptr, i32 } %522, 1
  store i32 %524, ptr %4, align 4
  call void @_ZN6google27libc_allocator_with_reallocINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #8
  br label %623

525:                                              ; preds = %493
  %526 = load i32, ptr %43, align 4, !tbaa !11
  %527 = sext i32 %526 to i64
  invoke void @_ZN6google11sparsetableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELt48ENS_27libc_allocator_with_reallocIS6_EEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(40) %39, i64 noundef %527)
          to label %528 unwind label %534

528:                                              ; preds = %525
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #8
  store i32 0, ptr %44, align 4, !tbaa !11
  br label %529

529:                                              ; preds = %544, %528
  %530 = load i32, ptr %44, align 4, !tbaa !11
  %531 = load i32, ptr %43, align 4, !tbaa !11
  %532 = icmp slt i32 %530, %531
  br i1 %532, label %538, label %533

533:                                              ; preds = %529
  store i32 32, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #8
  br label %556

534:                                              ; preds = %575, %556, %525
  %535 = landingpad { ptr, i32 }
          cleanup
  %536 = extractvalue { ptr, i32 } %535, 0
  store ptr %536, ptr %3, align 8
  %537 = extractvalue { ptr, i32 } %535, 1
  store i32 %537, ptr %4, align 4
  br label %580

538:                                              ; preds = %529
  %539 = load i32, ptr %44, align 4, !tbaa !11
  %540 = sext i32 %539 to i64
  call void @llvm.lifetime.start.p0(i64 32, ptr %45) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %46) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef @.str.97, ptr noundef nonnull align 1 dereferenceable(1) %46)
          to label %541 unwind label %547

541:                                              ; preds = %538
  %542 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN6google11sparsetableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELt48ENS_27libc_allocator_with_reallocIS6_EEE3setEmRKS6_(ptr noundef nonnull align 8 dereferenceable(40) %39, i64 noundef %540, ptr noundef nonnull align 8 dereferenceable(32) %45)
          to label %543 unwind label %551

543:                                              ; preds = %541
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %45) #8
  br label %544

544:                                              ; preds = %543
  %545 = load i32, ptr %44, align 4, !tbaa !11
  %546 = add nsw i32 %545, 1
  store i32 %546, ptr %44, align 4, !tbaa !11
  br label %529, !llvm.loop !23

547:                                              ; preds = %538
  %548 = landingpad { ptr, i32 }
          cleanup
  %549 = extractvalue { ptr, i32 } %548, 0
  store ptr %549, ptr %3, align 8
  %550 = extractvalue { ptr, i32 } %548, 1
  store i32 %550, ptr %4, align 4
  br label %555

551:                                              ; preds = %541
  %552 = landingpad { ptr, i32 }
          cleanup
  %553 = extractvalue { ptr, i32 } %552, 0
  store ptr %553, ptr %3, align 8
  %554 = extractvalue { ptr, i32 } %552, 1
  store i32 %554, ptr %4, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #8
  br label %555

555:                                              ; preds = %551, %547
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %45) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #8
  br label %580

556:                                              ; preds = %533
  %557 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN6google11sparsetableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELt48ENS_27libc_allocator_with_reallocIS6_EEEaSERKS9_(ptr noundef nonnull align 8 dereferenceable(40) %41, ptr noundef nonnull align 8 dereferenceable(40) %39)
          to label %558 unwind label %534

558:                                              ; preds = %556
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #8
  store i32 0, ptr %47, align 4, !tbaa !11
  br label %559

559:                                              ; preds = %568, %558
  %560 = load i32, ptr %47, align 4, !tbaa !11
  %561 = load i32, ptr %43, align 4, !tbaa !11
  %562 = icmp slt i32 %560, %561
  br i1 %562, label %564, label %563

563:                                              ; preds = %559
  store i32 35, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #8
  br label %575

564:                                              ; preds = %559
  %565 = load i32, ptr %47, align 4, !tbaa !11
  %566 = sext i32 %565 to i64
  invoke void @_ZN6google11sparsetableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELt48ENS_27libc_allocator_with_reallocIS6_EEE5eraseEm(ptr noundef nonnull align 8 dereferenceable(40) %41, i64 noundef %566)
          to label %567 unwind label %571

567:                                              ; preds = %564
  br label %568

568:                                              ; preds = %567
  %569 = load i32, ptr %47, align 4, !tbaa !11
  %570 = add nsw i32 %569, 1
  store i32 %570, ptr %47, align 4, !tbaa !11
  br label %559, !llvm.loop !24

571:                                              ; preds = %564
  %572 = landingpad { ptr, i32 }
          cleanup
  %573 = extractvalue { ptr, i32 } %572, 0
  store ptr %573, ptr %3, align 8
  %574 = extractvalue { ptr, i32 } %572, 1
  store i32 %574, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #8
  br label %580

575:                                              ; preds = %563
  invoke void @_ZN6google11sparsetableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELt48ENS_27libc_allocator_with_reallocIS6_EEE4swapERS9_(ptr noundef nonnull align 8 dereferenceable(40) %41, ptr noundef nonnull align 8 dereferenceable(40) %39)
          to label %576 unwind label %534

576:                                              ; preds = %575
  br label %577

577:                                              ; preds = %576
  %578 = load i32, ptr %43, align 4, !tbaa !11
  %579 = add nsw i32 %578, 1000
  store i32 %579, ptr %43, align 4, !tbaa !11
  br label %493, !llvm.loop !25

580:                                              ; preds = %571, %555, %534
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #8
  br label %622

581:                                              ; preds = %496
  %582 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %583 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %584 = ptrtoint ptr %583 to i64
  %585 = sub i64 ptrtoint (ptr getelementptr inbounds (i8, ptr @_ZL6outbuf, i64 10240) to i64), %584
  %586 = invoke noundef i64 @_ZNK6google11sparsetableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELt48ENS_27libc_allocator_with_reallocIS6_EEE12num_nonemptyEv(ptr noundef nonnull align 8 dereferenceable(40) %39)
          to label %587 unwind label %618

587:                                              ; preds = %581
  %588 = icmp eq i64 %586, 0
  %589 = zext i1 %588 to i64
  %590 = select i1 %588, ptr @.str.9, ptr @.str.10
  %591 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %582, i64 noundef %585, ptr noundef @.str.98, ptr noundef %590) #8
  %592 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %593 = sext i32 %591 to i64
  %594 = getelementptr inbounds i8, ptr %592, i64 %593
  store ptr %594, ptr @_ZL3out, align 8, !tbaa !5
  %595 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %596 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %597 = ptrtoint ptr %596 to i64
  %598 = sub i64 ptrtoint (ptr getelementptr inbounds (i8, ptr @_ZL6outbuf, i64 10240) to i64), %597
  %599 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6google11sparsetableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELt48ENS_27libc_allocator_with_reallocIS6_EEE3getEm(ptr noundef nonnull align 8 dereferenceable(40) %41, i64 noundef 0)
          to label %600 unwind label %618

600:                                              ; preds = %587
  %601 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %599) #8
  %602 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %595, i64 noundef %598, ptr noundef @.str.99, ptr noundef %601) #8
  %603 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %604 = sext i32 %602 to i64
  %605 = getelementptr inbounds i8, ptr %603, i64 %604
  store ptr %605, ptr @_ZL3out, align 8, !tbaa !5
  %606 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %607 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %608 = ptrtoint ptr %607 to i64
  %609 = sub i64 ptrtoint (ptr getelementptr inbounds (i8, ptr @_ZL6outbuf, i64 10240) to i64), %608
  %610 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6google11sparsetableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELt48ENS_27libc_allocator_with_reallocIS6_EEE3getEm(ptr noundef nonnull align 8 dereferenceable(40) %41, i64 noundef 39999)
          to label %611 unwind label %618

611:                                              ; preds = %600
  %612 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %610) #8
  %613 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %606, i64 noundef %609, ptr noundef @.str.100, ptr noundef %612) #8
  %614 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %615 = sext i32 %613 to i64
  %616 = getelementptr inbounds i8, ptr %614, i64 %615
  store ptr %616, ptr @_ZL3out, align 8, !tbaa !5
  invoke void @_ZN6google11sparsetableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELt48ENS_27libc_allocator_with_reallocIS6_EEE5clearEv(ptr noundef nonnull align 8 dereferenceable(40) %41)
          to label %617 unwind label %618

617:                                              ; preds = %611
  call void @_ZN6google11sparsetableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELt48ENS_27libc_allocator_with_reallocIS6_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %41) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %41) #8
  call void @_ZN6google11sparsetableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELt48ENS_27libc_allocator_with_reallocIS6_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %39) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %39) #8
  call void @_ZN6google11sparsetableIiLt48ESaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %31) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %31) #8
  call void @_ZN6google11sparsetableIiLt48ESaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %29) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %29) #8
  call void @_ZN6google11sparsetableIiLt48ENS_27libc_allocator_with_reallocIiEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %20) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %20) #8
  call void @_ZN6google11sparsetableIiLt48ENS_27libc_allocator_with_reallocIiEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %18) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %1) #8
  ret void

618:                                              ; preds = %611, %600, %587, %581
  %619 = landingpad { ptr, i32 }
          cleanup
  %620 = extractvalue { ptr, i32 } %619, 0
  store ptr %620, ptr %3, align 8
  %621 = extractvalue { ptr, i32 } %619, 1
  store i32 %621, ptr %4, align 4
  br label %622

622:                                              ; preds = %618, %580
  call void @_ZN6google11sparsetableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELt48ENS_27libc_allocator_with_reallocIS6_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %41) #8
  br label %623

623:                                              ; preds = %622, %521, %517
  call void @llvm.lifetime.end.p0(i64 40, ptr %41) #8
  call void @_ZN6google11sparsetableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELt48ENS_27libc_allocator_with_reallocIS6_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %39) #8
  br label %624

624:                                              ; preds = %623, %513, %509
  call void @llvm.lifetime.end.p0(i64 40, ptr %39) #8
  br label %625

625:                                              ; preds = %624, %505, %501, %497, %441
  call void @_ZN6google11sparsetableIiLt48ESaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %31) #8
  br label %626

626:                                              ; preds = %625, %386
  call void @llvm.lifetime.end.p0(i64 40, ptr %31) #8
  call void @_ZN6google11sparsetableIiLt48ESaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %29) #8
  br label %627

627:                                              ; preds = %626, %382
  call void @llvm.lifetime.end.p0(i64 40, ptr %29) #8
  br label %628

628:                                              ; preds = %627, %378, %374, %370, %316
  call void @_ZN6google11sparsetableIiLt48ENS_27libc_allocator_with_reallocIiEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %20) #8
  br label %629

629:                                              ; preds = %628, %261, %257
  call void @llvm.lifetime.end.p0(i64 40, ptr %20) #8
  call void @_ZN6google11sparsetableIiLt48ENS_27libc_allocator_with_reallocIiEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %18) #8
  br label %630

630:                                              ; preds = %629, %253
  call void @llvm.lifetime.end.p0(i64 40, ptr %18) #8
  br label %631

631:                                              ; preds = %630, %157
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  br label %632

632:                                              ; preds = %631, %145
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #8
  br label %633

633:                                              ; preds = %632, %86
  call void @llvm.lifetime.end.p0(i64 8, ptr %1) #8
  br label %634

634:                                              ; preds = %633
  %635 = load ptr, ptr %3, align 8
  %636 = load i32, ptr %4, align 4
  %637 = insertvalue { ptr, i32 } poison, ptr %635, 0
  %638 = insertvalue { ptr, i32 } %637, i32 %636, 1
  resume { ptr, i32 } %638
}

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6google11sparsetableIiLt48E22instrumented_allocatorIiEEC2EtS2_(ptr noundef nonnull align 8 dereferenceable(28), i16 noundef zeroext, ptr noundef) unnamed_addr #2 align 2

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN6google11sparsetableIiLt48E22instrumented_allocatorIiEE3setEtRKi(ptr noundef nonnull align 8 dereferenceable(28), i16 noundef zeroext, ptr noundef nonnull align 4 dereferenceable(4)) #2 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6google11sparsetableIiLt48E22instrumented_allocatorIiEE5eraseEt(ptr noundef nonnull align 8 dereferenceable(28), i16 noundef zeroext) #2 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6google11sparsetableIiLt48ESaIiEEC2EmS1_(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef, ptr noundef) unnamed_addr #2 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


; 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.instrumented_allocator.37 = type { i8 }
%"class.google::sparsetable" = type { %"class.std::vector", %"class.google::sparsetable<int>::Settings" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<google::sparsegroup<int, 48, google::libc_allocator_with_realloc<int>>, google::libc_allocator_with_realloc<google::sparsegroup<int, 48, google::libc_allocator_with_realloc<int>>>>::_Vector_impl" }
%"struct.std::_Vector_base<google::sparsegroup<int, 48, google::libc_allocator_with_realloc<int>>, google::libc_allocator_with_realloc<google::sparsegroup<int, 48, google::libc_allocator_with_realloc<int>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<google::sparsegroup<int, 48, google::libc_allocator_with_realloc<int>>, google::libc_allocator_with_realloc<google::sparsegroup<int, 48, google::libc_allocator_with_realloc<int>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<google::sparsegroup<int, 48, google::libc_allocator_with_realloc<int>>, google::libc_allocator_with_realloc<google::sparsegroup<int, 48, google::libc_allocator_with_realloc<int>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.google::sparsetable<int>::Settings" = type { i64, i64 }
%"class.google::libc_allocator_with_realloc.0" = type { i8 }
%"class.google::table_element_adaptor" = type { ptr, i64 }
%"class.google::sparsetable.39" = type { %"class.std::vector.40", %"class.google::sparsetable<int, 48, std::allocator<int>>::Settings" }
%"class.std::vector.40" = type { %"struct.std::_Vector_base.41" }
%"struct.std::_Vector_base.41" = type { %"struct.std::_Vector_base<google::sparsegroup<int, 48, std::allocator<int>>, std::allocator<google::sparsegroup<int, 48, std::allocator<int>>>>::_Vector_impl" }
%"struct.std::_Vector_base<google::sparsegroup<int, 48, std::allocator<int>>, std::allocator<google::sparsegroup<int, 48, std::allocator<int>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<google::sparsegroup<int, 48, std::allocator<int>>, std::allocator<google::sparsegroup<int, 48, std::allocator<int>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<google::sparsegroup<int, 48, std::allocator<int>>, std::allocator<google::sparsegroup<int, 48, std::allocator<int>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.google::sparsetable<int, 48, std::allocator<int>>::Settings" = type { i64, i64 }
%"class.std::allocator.45" = type { i8 }
%"class.google::table_element_adaptor.48" = type { ptr, i64 }
%"class.google::sparsetable.20" = type { %"class.std::vector.21", %"class.google::sparsetable<std::__cxx11::basic_string<char>>::Settings" }
%"class.std::vector.21" = type { %"struct.std::_Vector_base.22" }
%"struct.std::_Vector_base.22" = type { %"struct.std::_Vector_base<google::sparsegroup<std::__cxx11::basic_string<char>, 48, google::libc_allocator_with_realloc<std::__cxx11::basic_string<char>>>, google::libc_allocator_with_realloc<google::sparsegroup<std::__cxx11::basic_string<char>, 48, google::libc_allocator_with_realloc<std::__cxx11::basic_string<char>>>>>::_Vector_impl" }
%"struct.std::_Vector_base<google::sparsegroup<std::__cxx11::basic_string<char>, 48, google::libc_allocator_with_realloc<std::__cxx11::basic_string<char>>>, google::libc_allocator_with_realloc<google::sparsegroup<std::__cxx11::basic_string<char>, 48, google::libc_allocator_with_realloc<std::__cxx11::basic_string<char>>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<google::sparsegroup<std::__cxx11::basic_string<char>, 48, google::libc_allocator_with_realloc<std::__cxx11::basic_string<char>>>, google::libc_allocator_with_realloc<google::sparsegroup<std::__cxx11::basic_string<char>, 48, google::libc_allocator_with_realloc<std::__cxx11::basic_string<char>>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<google::sparsegroup<std::__cxx11::basic_string<char>, 48, google::libc_allocator_with_realloc<std::__cxx11::basic_string<char>>>, google::libc_allocator_with_realloc<google::sparsegroup<std::__cxx11::basic_string<char>, 48, google::libc_allocator_with_realloc<std::__cxx11::basic_string<char>>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.google::sparsetable<std::__cxx11::basic_string<char>>::Settings" = type { i64, i64 }
%"class.google::libc_allocator_with_realloc.25" = type { i8 }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator" = type { i8 }

@_ZL3out = external hidden local_unnamed_addr global ptr, align 8
@_ZL6outbuf = external hidden global [10240 x i8], align 16
@.str.9 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [3 x i8], align 1
@_ZL18sum_allocate_bytes = external hidden local_unnamed_addr global i64, align 8
@_ZL20sum_deallocate_bytes = external hidden local_unnamed_addr global i64, align 8
@.str.84 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [14 x i8], align 1

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6google11sparsetableIiLt48ENS_27libc_allocator_with_reallocIiEEEC2EmS2_(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef, ptr noundef) unnamed_addr #2 align 2

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6google11sparsetableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELt48ENS_27libc_allocator_with_reallocIS6_EEEC2EmS8_(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef, ptr noundef) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZN6google11sparsetableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELt48ENS_27libc_allocator_with_reallocIS6_EEE3setEmRKS6_(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6google11sparsetableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELt48ENS_27libc_allocator_with_reallocIS6_EEE3getEm(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef) local_unnamed_addr #2 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_Z22ResetAllocatorCountersv() local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
define dso_local void @_Z13TestAllocatorv() local_unnamed_addr #2 personality ptr @__gxx_personality_v0 {
  %1 = alloca %class.instrumented_allocator.37, align 1
  %2 = alloca i32, align 4
  %3 = alloca %class.instrumented_allocator.37, align 1
  %4 = alloca %class.instrumented_allocator.37, align 1
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca %"class.google::sparsetable", align 8
  %8 = alloca %"class.google::libc_allocator_with_realloc.0", align 1
  %9 = alloca %"class.google::sparsetable", align 8
  %10 = alloca %"class.google::libc_allocator_with_realloc.0", align 1
  %11 = alloca i32, align 4
  %12 = alloca %"class.google::table_element_adaptor", align 8
  %13 = alloca %"class.google::table_element_adaptor", align 8
  %14 = alloca %"class.google::sparsetable.39", align 8
  %15 = alloca %"class.std::allocator.45", align 1
  %16 = alloca %"class.google::sparsetable.39", align 8
  %17 = alloca %"class.std::allocator.45", align 1
  %18 = alloca i32, align 4
  %19 = alloca %"class.google::table_element_adaptor.48", align 8
  %20 = alloca %"class.google::table_element_adaptor.48", align 8
  %21 = alloca %"class.google::sparsetable.20", align 8
  %22 = alloca %"class.google::libc_allocator_with_realloc.25", align 1
  %23 = alloca %"class.google::sparsetable.20", align 8
  %24 = alloca %"class.google::libc_allocator_with_realloc.25", align 1
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::allocator", align 1
  %27 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %28 = ptrtoint ptr %27 to i64
  %29 = sub i64 ptrtoint (ptr getelementptr inbounds (i8, ptr @_ZL6outbuf, i64 10240) to i64), %28
  %30 = tail call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %27, i64 noundef %29, ptr noundef nonnull @.str.84) #8
  %31 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %32 = sext i32 %30 to i64
  %33 = getelementptr inbounds i8, ptr %31, i64 %32
  store ptr %33, ptr @_ZL3out, align 8, !tbaa !5
  tail call void @_Z22ResetAllocatorCountersv()
  %34 = tail call noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #9
  call void @_ZN22instrumented_allocatorIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %1)
  invoke void @_ZN6google11sparsetableIiLt48E22instrumented_allocatorIiEEC2EtS2_(ptr noundef nonnull align 8 dereferenceable(28) %34, i16 noundef zeroext 10000, ptr noundef nonnull %1)
          to label %35 unwind label %67

35:                                               ; preds = %0
  call void @_ZN22instrumented_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %1) #8
  %36 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %37 = ptrtoint ptr %36 to i64
  %38 = sub i64 ptrtoint (ptr getelementptr inbounds (i8, ptr @_ZL6outbuf, i64 10240) to i64), %37
  %39 = load i64, ptr @_ZL18sum_allocate_bytes, align 8, !tbaa !9
  %.not = icmp eq i64 %39, 0
  %40 = select i1 %.not, ptr @.str.10, ptr @.str.9
  %41 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %36, i64 noundef %38, ptr noundef nonnull @.str.85, ptr noundef nonnull %40) #8
  %42 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %43 = sext i32 %41 to i64
  %44 = getelementptr inbounds i8, ptr %42, i64 %43
  store ptr %44, ptr @_ZL3out, align 8, !tbaa !5
  br label %69

45:                                               ; preds = %69
  %46 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %47 = ptrtoint ptr %46 to i64
  %48 = sub i64 ptrtoint (ptr getelementptr inbounds (i8, ptr @_ZL6outbuf, i64 10240) to i64), %47
  %49 = load i64, ptr @_ZL18sum_allocate_bytes, align 8, !tbaa !9
  %50 = icmp ugt i64 %49, 39999
  %51 = select i1 %50, ptr @.str.9, ptr @.str.10
  %52 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %46, i64 noundef %48, ptr noundef nonnull @.str.86, ptr noundef nonnull %51) #8
  %53 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %54 = sext i32 %52 to i64
  %55 = getelementptr inbounds i8, ptr %53, i64 %54
  store ptr %55, ptr @_ZL3out, align 8, !tbaa !5
  call void @_Z22ResetAllocatorCountersv()
  call void @_ZN6google11sparsetableIiLt48E22instrumented_allocatorIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %34) #8
  call void @_ZdlPvm(ptr noundef nonnull %34, i64 noundef 32) #10
  %56 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %57 = ptrtoint ptr %56 to i64
  %58 = sub i64 ptrtoint (ptr getelementptr inbounds (i8, ptr @_ZL6outbuf, i64 10240) to i64), %57
  %59 = load i64, ptr @_ZL20sum_deallocate_bytes, align 8, !tbaa !9
  %60 = icmp ugt i64 %59, 39999
  %61 = select i1 %60, ptr @.str.9, ptr @.str.10
  %62 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %56, i64 noundef %58, ptr noundef nonnull @.str.87, ptr noundef nonnull %61) #8
  %63 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %64 = sext i32 %62 to i64
  %65 = getelementptr inbounds i8, ptr %63, i64 %64
  store ptr %65, ptr @_ZL3out, align 8, !tbaa !5
  %66 = call noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #9
  call void @_ZN22instrumented_allocatorIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %3)
  invoke void @_ZN6google11sparsetableIiLt48E22instrumented_allocatorIiEEC2EtS2_(ptr noundef nonnull align 8 dereferenceable(28) %66, i16 noundef zeroext 1000, ptr noundef nonnull %3)
          to label %73 unwind label %108

67:                                               ; preds = %0
  %68 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN22instrumented_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %1) #8
  call void @_ZdlPvm(ptr noundef nonnull %34, i64 noundef 32) #10
  br label %327

69:                                               ; preds = %35, %69
  %.088112 = phi i32 [ 0, %35 ], [ %72, %69 ]
  %70 = trunc nuw i32 %.088112 to i16
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %2) #8
  store i32 0, ptr %2, align 4, !tbaa !11
  %71 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6google11sparsetableIiLt48E22instrumented_allocatorIiEE3setEtRKi(ptr noundef nonnull align 8 dereferenceable(28) %34, i16 noundef zeroext %70, ptr noundef nonnull align 4 dereferenceable(4) %2)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2) #8
  %72 = add nuw nsw i32 %.088112, 1
  %exitcond.not = icmp eq i32 %72, 10000
  br i1 %exitcond.not, label %45, label %69, !llvm.loop !13

73:                                               ; preds = %45
  call void @_ZN22instrumented_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %3) #8
  %74 = call noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #9
  call void @_ZN22instrumented_allocatorIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4)
  invoke void @_ZN6google11sparsetableIiLt48E22instrumented_allocatorIiEEC2EtS2_(ptr noundef nonnull align 8 dereferenceable(28) %74, i16 noundef zeroext 1000, ptr noundef nonnull %4)
          to label %75 unwind label %110

75:                                               ; preds = %73
  call void @_ZN22instrumented_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #8
  br label %112

76:                                               ; preds = %112
  %77 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %78 = ptrtoint ptr %77 to i64
  %79 = sub i64 ptrtoint (ptr getelementptr inbounds (i8, ptr @_ZL6outbuf, i64 10240) to i64), %78
  %80 = load i64, ptr @_ZL18sum_allocate_bytes, align 8, !tbaa !9
  %81 = icmp ugt i64 %80, 7999
  %82 = select i1 %81, ptr @.str.9, ptr @.str.10
  %83 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %77, i64 noundef %79, ptr noundef nonnull @.str.88, ptr noundef nonnull %82) #8
  %84 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %85 = sext i32 %83 to i64
  %86 = getelementptr inbounds i8, ptr %84, i64 %85
  store ptr %86, ptr @_ZL3out, align 8, !tbaa !5
  call void @_Z22ResetAllocatorCountersv()
  call void @_ZN6google11sparsetableIiLt48E22instrumented_allocatorIiEE5clearEv(ptr noundef nonnull align 8 dereferenceable(28) %74)
  %87 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %88 = ptrtoint ptr %87 to i64
  %89 = sub i64 ptrtoint (ptr getelementptr inbounds (i8, ptr @_ZL6outbuf, i64 10240) to i64), %88
  %90 = load i64, ptr @_ZL20sum_deallocate_bytes, align 8, !tbaa !9
  %91 = icmp ugt i64 %90, 3999
  %92 = select i1 %91, ptr @.str.9, ptr @.str.10
  %93 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %87, i64 noundef %89, ptr noundef nonnull @.str.89, ptr noundef nonnull %92) #8
  %94 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %95 = sext i32 %93 to i64
  %96 = getelementptr inbounds i8, ptr %94, i64 %95
  store ptr %96, ptr @_ZL3out, align 8, !tbaa !5
  call void @_Z22ResetAllocatorCountersv()
  call void @_ZN6google11sparsetableIiLt48E22instrumented_allocatorIiEE4swapERS3_(ptr noundef nonnull align 8 dereferenceable(28) %66, ptr noundef nonnull align 8 dereferenceable(28) %74)
  call void @_ZN6google11sparsetableIiLt48E22instrumented_allocatorIiEE5clearEv(ptr noundef nonnull align 8 dereferenceable(28) %66)
  %97 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %98 = ptrtoint ptr %97 to i64
  %99 = sub i64 ptrtoint (ptr getelementptr inbounds (i8, ptr @_ZL6outbuf, i64 10240) to i64), %98
  %100 = load i64, ptr @_ZL20sum_deallocate_bytes, align 8, !tbaa !9
  %101 = icmp ult i64 %100, 4000
  %102 = select i1 %101, ptr @.str.9, ptr @.str.10
  %103 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %97, i64 noundef %99, ptr noundef nonnull @.str.90, ptr noundef nonnull %102) #8
  %104 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %105 = sext i32 %103 to i64
  %106 = getelementptr inbounds i8, ptr %104, i64 %105
  store ptr %106, ptr @_ZL3out, align 8, !tbaa !5
  %107 = call noundef zeroext i16 @_ZNK6google11sparsetableIiLt48E22instrumented_allocatorIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(28) %74)
  %.not124 = icmp eq i16 %107, 0
  br i1 %.not124, label %._crit_edge, label %.lr.ph

108:                                              ; preds = %45
  %109 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN22instrumented_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %3) #8
  call void @_ZdlPvm(ptr noundef nonnull %66, i64 noundef 32) #10
  br label %327

110:                                              ; preds = %73
  %111 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN22instrumented_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #8
  call void @_ZdlPvm(ptr noundef nonnull %74, i64 noundef 32) #10
  br label %327

112:                                              ; preds = %75, %112
  %.070113 = phi i32 [ 0, %75 ], [ %116, %112 ]
  %113 = trunc nuw i32 %.070113 to i16
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #8
  store i32 0, ptr %5, align 4, !tbaa !11
  %114 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6google11sparsetableIiLt48E22instrumented_allocatorIiEE3setEtRKi(ptr noundef nonnull align 8 dereferenceable(28) %66, i16 noundef zeroext %113, ptr noundef nonnull align 4 dereferenceable(4) %5)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #8
  store i32 0, ptr %6, align 4, !tbaa !11
  %115 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6google11sparsetableIiLt48E22instrumented_allocatorIiEE3setEtRKi(ptr noundef nonnull align 8 dereferenceable(28) %74, i16 noundef zeroext %113, ptr noundef nonnull align 4 dereferenceable(4) %6)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #8
  %116 = add nuw nsw i32 %.070113, 1
  %exitcond125.not = icmp eq i32 %116, 1000
  br i1 %exitcond125.not, label %76, label %112, !llvm.loop !15

._crit_edge:                                      ; preds = %.lr.ph, %76
  %117 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %118 = ptrtoint ptr %117 to i64
  %119 = sub i64 ptrtoint (ptr getelementptr inbounds (i8, ptr @_ZL6outbuf, i64 10240) to i64), %118
  %120 = load i64, ptr @_ZL20sum_deallocate_bytes, align 8, !tbaa !9
  %121 = icmp ugt i64 %120, 3999
  %122 = select i1 %121, ptr @.str.9, ptr @.str.10
  %123 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %117, i64 noundef %119, ptr noundef nonnull @.str.89, ptr noundef nonnull %122) #8
  %124 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %125 = sext i32 %123 to i64
  %126 = getelementptr inbounds i8, ptr %124, i64 %125
  store ptr %126, ptr @_ZL3out, align 8, !tbaa !5
  call void @_ZN6google11sparsetableIiLt48E22instrumented_allocatorIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %66) #8
  call void @_ZdlPvm(ptr noundef nonnull %66, i64 noundef 32) #10
  call void @_ZN6google11sparsetableIiLt48E22instrumented_allocatorIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(28) %74) #8
  call void @_ZdlPvm(ptr noundef nonnull %74, i64 noundef 32) #10
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %7) #8
  call void @_ZN6google27libc_allocator_with_reallocIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8)
  invoke void @_ZN6google11sparsetableIiLt48ENS_27libc_allocator_with_reallocIiEEEC2EmS2_(ptr noundef nonnull align 8 dereferenceable(40) %7, i64 noundef 0, ptr noundef nonnull %8)
          to label %132 unwind label %148

.lr.ph:                                           ; preds = %76, %.lr.ph
  %.069114 = phi i32 [ %128, %.lr.ph ], [ 0, %76 ]
  %127 = trunc i32 %.069114 to i16
  call void @_ZN6google11sparsetableIiLt48E22instrumented_allocatorIiEE5eraseEt(ptr noundef nonnull align 8 dereferenceable(28) %74, i16 noundef zeroext %127)
  %128 = add nuw nsw i32 %.069114, 1
  %129 = call noundef zeroext i16 @_ZNK6google11sparsetableIiLt48E22instrumented_allocatorIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(28) %74)
  %130 = zext i16 %129 to i32
  %131 = icmp ult i32 %128, %130
  br i1 %131, label %.lr.ph, label %._crit_edge, !llvm.loop !16

132:                                              ; preds = %._crit_edge
  call void @_ZN6google27libc_allocator_with_reallocIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #8
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %9) #8
  call void @_ZN6google27libc_allocator_with_reallocIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10)
  invoke void @_ZN6google11sparsetableIiLt48ENS_27libc_allocator_with_reallocIiEEEC2EmS2_(ptr noundef nonnull align 8 dereferenceable(40) %9, i64 noundef 0, ptr noundef nonnull %10)
          to label %133 unwind label %150

133:                                              ; preds = %132
  call void @_ZN6google27libc_allocator_with_reallocIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #8
  br label %152

134:                                              ; preds = %162
  %135 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %136 = ptrtoint ptr %135 to i64
  %137 = sub i64 ptrtoint (ptr getelementptr inbounds (i8, ptr @_ZL6outbuf, i64 10240) to i64), %136
  %138 = call noundef i64 @_ZNK6google11sparsetableIiLt48ENS_27libc_allocator_with_reallocIiEEE12num_nonemptyEv(ptr noundef nonnull align 8 dereferenceable(40) %7)
  %139 = icmp eq i64 %138, 0
  %140 = select i1 %139, ptr @.str.9, ptr @.str.10
  %141 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %135, i64 noundef %137, ptr noundef nonnull @.str.91, ptr noundef nonnull %140) #8
  %142 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %143 = sext i32 %141 to i64
  %144 = getelementptr inbounds i8, ptr %142, i64 %143
  store ptr %144, ptr @_ZL3out, align 8, !tbaa !5
  %145 = ptrtoint ptr %144 to i64
  %146 = sub i64 ptrtoint (ptr getelementptr inbounds (i8, ptr @_ZL6outbuf, i64 10240) to i64), %145
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #8
  %147 = invoke { ptr, i64 } @_ZN6google11sparsetableIiLt48ENS_27libc_allocator_with_reallocIiEEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %9, i64 noundef 0)
          to label %167 unwind label %209

148:                                              ; preds = %._crit_edge
  %149 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6google27libc_allocator_with_reallocIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #8
  br label %326

150:                                              ; preds = %132
  %151 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6google27libc_allocator_with_reallocIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #8
  br label %325

152:                                              ; preds = %133, %162
  %indvars.iv133 = phi i64 [ 1000, %133 ], [ %indvars.iv.next134, %162 ]
  invoke void @_ZN6google11sparsetableIiLt48ENS_27libc_allocator_with_reallocIiEEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(40) %7, i64 noundef %indvars.iv133)
          to label %.preheader111 unwind label %155

153:                                              ; preds = %159
  %154 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN6google11sparsetableIiLt48ENS_27libc_allocator_with_reallocIiEEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(40) %9, ptr noundef nonnull align 8 dereferenceable(40) %7)
          to label %.preheader110 unwind label %155

155:                                              ; preds = %153, %152
  %156 = landingpad { ptr, i32 }
          cleanup
  br label %324

.preheader111:                                    ; preds = %152, %159
  %indvars.iv = phi i64 [ %indvars.iv.next, %159 ], [ 0, %152 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #8
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %157 = trunc nuw nsw i64 %indvars.iv.next to i32
  store i32 %157, ptr %11, align 4, !tbaa !11
  %158 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6google11sparsetableIiLt48ENS_27libc_allocator_with_reallocIiEEE3setEmRKi(ptr noundef nonnull align 8 dereferenceable(40) %7, i64 noundef %indvars.iv, ptr noundef nonnull align 4 dereferenceable(4) %11)
          to label %159 unwind label %160

159:                                              ; preds = %.preheader111
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #8
  %exitcond127.not = icmp eq i64 %indvars.iv.next, %indvars.iv133
  br i1 %exitcond127.not, label %153, label %.preheader111, !llvm.loop !17

160:                                              ; preds = %.preheader111
  %161 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #8
  br label %324

162:                                              ; preds = %164
  call void @_ZN6google11sparsetableIiLt48ENS_27libc_allocator_with_reallocIiEEE4swapERS3_(ptr noundef nonnull align 8 dereferenceable(40) %9, ptr noundef nonnull align 8 dereferenceable(40) %7)
  %indvars.iv.next134 = add nuw nsw i64 %indvars.iv133, 1000
  %163 = icmp ult i64 %indvars.iv133, 39001
  br i1 %163, label %152, label %134, !llvm.loop !18

.preheader110:                                    ; preds = %153, %164
  %indvars.iv128 = phi i64 [ %indvars.iv.next129, %164 ], [ 0, %153 ]
  invoke void @_ZN6google11sparsetableIiLt48ENS_27libc_allocator_with_reallocIiEEE5eraseEm(ptr noundef nonnull align 8 dereferenceable(40) %9, i64 noundef %indvars.iv128)
          to label %164 unwind label %165

164:                                              ; preds = %.preheader110
  %indvars.iv.next129 = add nuw nsw i64 %indvars.iv128, 1
  %exitcond132.not = icmp eq i64 %indvars.iv.next129, %indvars.iv133
  br i1 %exitcond132.not, label %162, label %.preheader110, !llvm.loop !19

165:                                              ; preds = %.preheader110
  %166 = landingpad { ptr, i32 }
          cleanup
  br label %324

167:                                              ; preds = %134
  %168 = extractvalue { ptr, i64 } %147, 0
  store ptr %168, ptr %12, align 8
  %169 = getelementptr inbounds i8, ptr %12, i64 8
  %170 = extractvalue { ptr, i64 } %147, 1
  store i64 %170, ptr %169, align 8
  %171 = invoke noundef i32 @_ZN6google21table_element_adaptorINS_11sparsetableIiLt48ENS_27libc_allocator_with_reallocIiEEEEEcviEv(ptr noundef nonnull align 8 dereferenceable(16) %12)
          to label %172 unwind label %209

172:                                              ; preds = %167
  %173 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %144, i64 noundef %146, ptr noundef nonnull @.str.92, i32 noundef %171) #8
  %174 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %175 = sext i32 %173 to i64
  %176 = getelementptr inbounds i8, ptr %174, i64 %175
  store ptr %176, ptr @_ZL3out, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #8
  %177 = ptrtoint ptr %176 to i64
  %178 = sub i64 ptrtoint (ptr getelementptr inbounds (i8, ptr @_ZL6outbuf, i64 10240) to i64), %177
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #8
  %179 = invoke { ptr, i64 } @_ZN6google11sparsetableIiLt48ENS_27libc_allocator_with_reallocIiEEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %9, i64 noundef 39999)
          to label %180 unwind label %211

180:                                              ; preds = %172
  %181 = extractvalue { ptr, i64 } %179, 0
  store ptr %181, ptr %13, align 8
  %182 = getelementptr inbounds i8, ptr %13, i64 8
  %183 = extractvalue { ptr, i64 } %179, 1
  store i64 %183, ptr %182, align 8
  %184 = invoke noundef i32 @_ZN6google21table_element_adaptorINS_11sparsetableIiLt48ENS_27libc_allocator_with_reallocIiEEEEEcviEv(ptr noundef nonnull align 8 dereferenceable(16) %13)
          to label %185 unwind label %211

185:                                              ; preds = %180
  %186 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %176, i64 noundef %178, ptr noundef nonnull @.str.93, i32 noundef %184) #8
  %187 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %188 = sext i32 %186 to i64
  %189 = getelementptr inbounds i8, ptr %187, i64 %188
  store ptr %189, ptr @_ZL3out, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #8
  invoke void @_ZN6google11sparsetableIiLt48ENS_27libc_allocator_with_reallocIiEEE5clearEv(ptr noundef nonnull align 8 dereferenceable(40) %9)
          to label %190 unwind label %207

190:                                              ; preds = %185
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %14) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #8
  invoke void @_ZN6google11sparsetableIiLt48ESaIiEEC2EmS1_(ptr noundef nonnull align 8 dereferenceable(40) %14, i64 noundef 0, ptr noundef nonnull %15)
          to label %191 unwind label %213

191:                                              ; preds = %190
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #8
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %16) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #8
  invoke void @_ZN6google11sparsetableIiLt48ESaIiEEC2EmS1_(ptr noundef nonnull align 8 dereferenceable(40) %16, i64 noundef 0, ptr noundef nonnull %17)
          to label %192 unwind label %215

192:                                              ; preds = %191
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #8
  br label %217

193:                                              ; preds = %227
  %194 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %195 = ptrtoint ptr %194 to i64
  %196 = sub i64 ptrtoint (ptr getelementptr inbounds (i8, ptr @_ZL6outbuf, i64 10240) to i64), %195
  %197 = call noundef i64 @_ZNK6google11sparsetableIiLt48ESaIiEE12num_nonemptyEv(ptr noundef nonnull align 8 dereferenceable(40) %14)
  %198 = icmp eq i64 %197, 0
  %199 = select i1 %198, ptr @.str.9, ptr @.str.10
  %200 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %194, i64 noundef %196, ptr noundef nonnull @.str.94, ptr noundef nonnull %199) #8
  %201 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %202 = sext i32 %200 to i64
  %203 = getelementptr inbounds i8, ptr %201, i64 %202
  store ptr %203, ptr @_ZL3out, align 8, !tbaa !5
  %204 = ptrtoint ptr %203 to i64
  %205 = sub i64 ptrtoint (ptr getelementptr inbounds (i8, ptr @_ZL6outbuf, i64 10240) to i64), %204
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #8
  %206 = invoke { ptr, i64 } @_ZN6google11sparsetableIiLt48ESaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %16, i64 noundef 0)
          to label %232 unwind label %272

207:                                              ; preds = %185
  %208 = landingpad { ptr, i32 }
          cleanup
  br label %324

209:                                              ; preds = %167, %134
  %210 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #8
  br label %324

211:                                              ; preds = %180, %172
  %212 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #8
  br label %324

213:                                              ; preds = %190
  %214 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #8
  br label %323

215:                                              ; preds = %191
  %216 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #8
  br label %322

217:                                              ; preds = %192, %227
  %indvars.iv145 = phi i64 [ 1000, %192 ], [ %indvars.iv.next146, %227 ]
  invoke void @_ZN6google11sparsetableIiLt48ESaIiEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(40) %14, i64 noundef %indvars.iv145)
          to label %.preheader109 unwind label %220

218:                                              ; preds = %224
  %219 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN6google11sparsetableIiLt48ESaIiEEaSERKS2_(ptr noundef nonnull align 8 dereferenceable(40) %16, ptr noundef nonnull align 8 dereferenceable(40) %14)
          to label %.preheader108 unwind label %220

220:                                              ; preds = %218, %217
  %221 = landingpad { ptr, i32 }
          cleanup
  br label %321

.preheader109:                                    ; preds = %217, %224
  %indvars.iv136 = phi i64 [ %indvars.iv.next137, %224 ], [ 0, %217 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #8
  %indvars.iv.next137 = add nuw nsw i64 %indvars.iv136, 1
  %222 = trunc nuw nsw i64 %indvars.iv.next137 to i32
  store i32 %222, ptr %18, align 4, !tbaa !11
  %223 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6google11sparsetableIiLt48ESaIiEE3setEmRKi(ptr noundef nonnull align 8 dereferenceable(40) %14, i64 noundef %indvars.iv136, ptr noundef nonnull align 4 dereferenceable(4) %18)
          to label %224 unwind label %225

224:                                              ; preds = %.preheader109
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #8
  %exitcond139.not = icmp eq i64 %indvars.iv.next137, %indvars.iv145
  br i1 %exitcond139.not, label %218, label %.preheader109, !llvm.loop !20

225:                                              ; preds = %.preheader109
  %226 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #8
  br label %321

227:                                              ; preds = %229
  call void @_ZN6google11sparsetableIiLt48ESaIiEE4swapERS2_(ptr noundef nonnull align 8 dereferenceable(40) %16, ptr noundef nonnull align 8 dereferenceable(40) %14)
  %indvars.iv.next146 = add nuw nsw i64 %indvars.iv145, 1000
  %228 = icmp ult i64 %indvars.iv145, 39001
  br i1 %228, label %217, label %193, !llvm.loop !21

.preheader108:                                    ; preds = %218, %229
  %indvars.iv140 = phi i64 [ %indvars.iv.next141, %229 ], [ 0, %218 ]
  invoke void @_ZN6google11sparsetableIiLt48ESaIiEE5eraseEm(ptr noundef nonnull align 8 dereferenceable(40) %16, i64 noundef %indvars.iv140)
          to label %229 unwind label %230

229:                                              ; preds = %.preheader108
  %indvars.iv.next141 = add nuw nsw i64 %indvars.iv140, 1
  %exitcond144.not = icmp eq i64 %indvars.iv.next141, %indvars.iv145
  br i1 %exitcond144.not, label %227, label %.preheader108, !llvm.loop !22

230:                                              ; preds = %.preheader108
  %231 = landingpad { ptr, i32 }
          cleanup
  br label %321

232:                                              ; preds = %193
  %233 = extractvalue { ptr, i64 } %206, 0
  store ptr %233, ptr %19, align 8
  %234 = getelementptr inbounds i8, ptr %19, i64 8
  %235 = extractvalue { ptr, i64 } %206, 1
  store i64 %235, ptr %234, align 8
  %236 = invoke noundef i32 @_ZN6google21table_element_adaptorINS_11sparsetableIiLt48ESaIiEEEEcviEv(ptr noundef nonnull align 8 dereferenceable(16) %19)
          to label %237 unwind label %272

237:                                              ; preds = %232
  %238 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %203, i64 noundef %205, ptr noundef nonnull @.str.95, i32 noundef %236) #8
  %239 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %240 = sext i32 %238 to i64
  %241 = getelementptr inbounds i8, ptr %239, i64 %240
  store ptr %241, ptr @_ZL3out, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #8
  %242 = ptrtoint ptr %241 to i64
  %243 = sub i64 ptrtoint (ptr getelementptr inbounds (i8, ptr @_ZL6outbuf, i64 10240) to i64), %242
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) #8
  %244 = invoke { ptr, i64 } @_ZN6google11sparsetableIiLt48ESaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %16, i64 noundef 39999)
          to label %245 unwind label %274

245:                                              ; preds = %237
  %246 = extractvalue { ptr, i64 } %244, 0
  store ptr %246, ptr %20, align 8
  %247 = getelementptr inbounds i8, ptr %20, i64 8
  %248 = extractvalue { ptr, i64 } %244, 1
  store i64 %248, ptr %247, align 8
  %249 = invoke noundef i32 @_ZN6google21table_element_adaptorINS_11sparsetableIiLt48ESaIiEEEEcviEv(ptr noundef nonnull align 8 dereferenceable(16) %20)
          to label %250 unwind label %274

250:                                              ; preds = %245
  %251 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %241, i64 noundef %243, ptr noundef nonnull @.str.96, i32 noundef %249) #8
  %252 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %253 = sext i32 %251 to i64
  %254 = getelementptr inbounds i8, ptr %252, i64 %253
  store ptr %254, ptr @_ZL3out, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #8
  invoke void @_ZN6google11sparsetableIiLt48ESaIiEE5clearEv(ptr noundef nonnull align 8 dereferenceable(40) %16)
          to label %255 unwind label %270

255:                                              ; preds = %250
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %21) #8
  call void @_ZN6google27libc_allocator_with_reallocINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22)
  invoke void @_ZN6google11sparsetableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELt48ENS_27libc_allocator_with_reallocIS6_EEEC2EmS8_(ptr noundef nonnull align 8 dereferenceable(40) %21, i64 noundef 0, ptr noundef nonnull %22)
          to label %256 unwind label %276

256:                                              ; preds = %255
  call void @_ZN6google27libc_allocator_with_reallocINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #8
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %23) #8
  call void @_ZN6google27libc_allocator_with_reallocINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24)
  invoke void @_ZN6google11sparsetableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELt48ENS_27libc_allocator_with_reallocIS6_EEEC2EmS8_(ptr noundef nonnull align 8 dereferenceable(40) %23, i64 noundef 0, ptr noundef nonnull %24)
          to label %257 unwind label %278

257:                                              ; preds = %256
  call void @_ZN6google27libc_allocator_with_reallocINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #8
  br label %280

258:                                              ; preds = %293
  %259 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %260 = ptrtoint ptr %259 to i64
  %261 = sub i64 ptrtoint (ptr getelementptr inbounds (i8, ptr @_ZL6outbuf, i64 10240) to i64), %260
  %262 = call noundef i64 @_ZNK6google11sparsetableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELt48ENS_27libc_allocator_with_reallocIS6_EEE12num_nonemptyEv(ptr noundef nonnull align 8 dereferenceable(40) %21)
  %263 = icmp eq i64 %262, 0
  %264 = select i1 %263, ptr @.str.9, ptr @.str.10
  %265 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %259, i64 noundef %261, ptr noundef nonnull @.str.98, ptr noundef nonnull %264) #8
  %266 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %267 = sext i32 %265 to i64
  %268 = getelementptr inbounds i8, ptr %266, i64 %267
  store ptr %268, ptr @_ZL3out, align 8, !tbaa !5
  %269 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6google11sparsetableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELt48ENS_27libc_allocator_with_reallocIS6_EEE3getEm(ptr noundef nonnull align 8 dereferenceable(40) %23, i64 noundef 0)
          to label %298 unwind label %316

270:                                              ; preds = %250
  %271 = landingpad { ptr, i32 }
          cleanup
  br label %321

272:                                              ; preds = %232, %193
  %273 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #8
  br label %321

274:                                              ; preds = %245, %237
  %275 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #8
  br label %321

276:                                              ; preds = %255
  %277 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6google27libc_allocator_with_reallocINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #8
  br label %320

278:                                              ; preds = %256
  %279 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6google27libc_allocator_with_reallocINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #8
  br label %319

280:                                              ; preds = %257, %293
  %indvars.iv157 = phi i64 [ 1000, %257 ], [ %indvars.iv.next158, %293 ]
  invoke void @_ZN6google11sparsetableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELt48ENS_27libc_allocator_with_reallocIS6_EEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(40) %21, i64 noundef %indvars.iv157)
          to label %.preheader107 unwind label %283

281:                                              ; preds = %287
  %282 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN6google11sparsetableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELt48ENS_27libc_allocator_with_reallocIS6_EEEaSERKS9_(ptr noundef nonnull align 8 dereferenceable(40) %23, ptr noundef nonnull align 8 dereferenceable(40) %21)
          to label %.preheader unwind label %283

283:                                              ; preds = %281, %280
  %284 = landingpad { ptr, i32 }
          cleanup
  br label %318

.preheader107:                                    ; preds = %280, %287
  %indvars.iv148 = phi i64 [ %indvars.iv.next149, %287 ], [ 0, %280 ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %26) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull @.str.97, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %285 unwind label %288

285:                                              ; preds = %.preheader107
  %286 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN6google11sparsetableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELt48ENS_27libc_allocator_with_reallocIS6_EEE3setEmRKS6_(ptr noundef nonnull align 8 dereferenceable(40) %21, i64 noundef %indvars.iv148, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %287 unwind label %290

287:                                              ; preds = %285
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #8
  %indvars.iv.next149 = add nuw nsw i64 %indvars.iv148, 1
  %exitcond151.not = icmp eq i64 %indvars.iv.next149, %indvars.iv157
  br i1 %exitcond151.not, label %281, label %.preheader107, !llvm.loop !23

288:                                              ; preds = %.preheader107
  %289 = landingpad { ptr, i32 }
          cleanup
  br label %292

290:                                              ; preds = %285
  %291 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #8
  br label %292

292:                                              ; preds = %290, %288
  %.pn = phi { ptr, i32 } [ %291, %290 ], [ %289, %288 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #8
  br label %318

293:                                              ; preds = %295
  call void @_ZN6google11sparsetableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELt48ENS_27libc_allocator_with_reallocIS6_EEE4swapERS9_(ptr noundef nonnull align 8 dereferenceable(40) %23, ptr noundef nonnull align 8 dereferenceable(40) %21)
  %indvars.iv.next158 = add nuw nsw i64 %indvars.iv157, 1000
  %294 = icmp ult i64 %indvars.iv157, 39001
  br i1 %294, label %280, label %258, !llvm.loop !24

.preheader:                                       ; preds = %281, %295
  %indvars.iv152 = phi i64 [ %indvars.iv.next153, %295 ], [ 0, %281 ]
  invoke void @_ZN6google11sparsetableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELt48ENS_27libc_allocator_with_reallocIS6_EEE5eraseEm(ptr noundef nonnull align 8 dereferenceable(40) %23, i64 noundef %indvars.iv152)
          to label %295 unwind label %296

295:                                              ; preds = %.preheader
  %indvars.iv.next153 = add nuw nsw i64 %indvars.iv152, 1
  %exitcond156.not = icmp eq i64 %indvars.iv.next153, %indvars.iv157
  br i1 %exitcond156.not, label %293, label %.preheader, !llvm.loop !25

296:                                              ; preds = %.preheader
  %297 = landingpad { ptr, i32 }
          cleanup
  br label %318

298:                                              ; preds = %258
  %299 = ptrtoint ptr %268 to i64
  %300 = sub i64 ptrtoint (ptr getelementptr inbounds (i8, ptr @_ZL6outbuf, i64 10240) to i64), %299
  %301 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %269) #8
  %302 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %268, i64 noundef %300, ptr noundef nonnull @.str.99, ptr noundef %301) #8
  %303 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %304 = sext i32 %302 to i64
  %305 = getelementptr inbounds i8, ptr %303, i64 %304
  store ptr %305, ptr @_ZL3out, align 8, !tbaa !5
  %306 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6google11sparsetableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELt48ENS_27libc_allocator_with_reallocIS6_EEE3getEm(ptr noundef nonnull align 8 dereferenceable(40) %23, i64 noundef 39999)
          to label %307 unwind label %316

307:                                              ; preds = %298
  %308 = ptrtoint ptr %305 to i64
  %309 = sub i64 ptrtoint (ptr getelementptr inbounds (i8, ptr @_ZL6outbuf, i64 10240) to i64), %308
  %310 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %306) #8
  %311 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %305, i64 noundef %309, ptr noundef nonnull @.str.100, ptr noundef %310) #8
  %312 = load ptr, ptr @_ZL3out, align 8, !tbaa !5
  %313 = sext i32 %311 to i64
  %314 = getelementptr inbounds i8, ptr %312, i64 %313
  store ptr %314, ptr @_ZL3out, align 8, !tbaa !5
  invoke void @_ZN6google11sparsetableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELt48ENS_27libc_allocator_with_reallocIS6_EEE5clearEv(ptr noundef nonnull align 8 dereferenceable(40) %23)
          to label %315 unwind label %316

315:                                              ; preds = %307
  call void @_ZN6google11sparsetableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELt48ENS_27libc_allocator_with_reallocIS6_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %23) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %23) #8
  call void @_ZN6google11sparsetableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELt48ENS_27libc_allocator_with_reallocIS6_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %21) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %21) #8
  call void @_ZN6google11sparsetableIiLt48ESaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %16) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %16) #8
  call void @_ZN6google11sparsetableIiLt48ESaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %14) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %14) #8
  call void @_ZN6google11sparsetableIiLt48ENS_27libc_allocator_with_reallocIiEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %9) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %9) #8
  call void @_ZN6google11sparsetableIiLt48ENS_27libc_allocator_with_reallocIiEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %7) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %7) #8
  ret void

316:                                              ; preds = %307, %298, %258
  %317 = landingpad { ptr, i32 }
          cleanup
  br label %318

318:                                              ; preds = %283, %292, %296, %316
  %.pn.pn.pn = phi { ptr, i32 } [ %317, %316 ], [ %.pn, %292 ], [ %297, %296 ], [ %284, %283 ]
  call void @_ZN6google11sparsetableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELt48ENS_27libc_allocator_with_reallocIS6_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %23) #8
  br label %319

319:                                              ; preds = %318, %278
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %318 ], [ %279, %278 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %23) #8
  call void @_ZN6google11sparsetableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELt48ENS_27libc_allocator_with_reallocIS6_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %21) #8
  br label %320

320:                                              ; preds = %319, %276
  %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %319 ], [ %277, %276 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %21) #8
  br label %321

321:                                              ; preds = %220, %225, %230, %320, %274, %272, %270
  %.pn94.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn, %320 ], [ %271, %270 ], [ %275, %274 ], [ %273, %272 ], [ %226, %225 ], [ %231, %230 ], [ %221, %220 ]
  call void @_ZN6google11sparsetableIiLt48ESaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %16) #8
  br label %322

322:                                              ; preds = %321, %215
  %.pn94.pn.pn = phi { ptr, i32 } [ %.pn94.pn, %321 ], [ %216, %215 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %16) #8
  call void @_ZN6google11sparsetableIiLt48ESaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %14) #8
  br label %323

323:                                              ; preds = %322, %213
  %.pn94.pn.pn.pn = phi { ptr, i32 } [ %.pn94.pn.pn, %322 ], [ %214, %213 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %14) #8
  br label %324

324:                                              ; preds = %155, %160, %165, %323, %211, %209, %207
  %.pn99.pn = phi { ptr, i32 } [ %.pn94.pn.pn.pn, %323 ], [ %208, %207 ], [ %212, %211 ], [ %210, %209 ], [ %161, %160 ], [ %166, %165 ], [ %156, %155 ]
  call void @_ZN6google11sparsetableIiLt48ENS_27libc_allocator_with_reallocIiEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %9) #8
  br label %325

325:                                              ; preds = %324, %150
  %.pn99.pn.pn = phi { ptr, i32 } [ %.pn99.pn, %324 ], [ %151, %150 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %9) #8
  call void @_ZN6google11sparsetableIiLt48ENS_27libc_allocator_with_reallocIiEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %7) #8
  br label %326

326:                                              ; preds = %325, %148
  %.pn99.pn.pn.pn = phi { ptr, i32 } [ %.pn99.pn.pn, %325 ], [ %149, %148 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %7) #8
  br label %327

327:                                              ; preds = %108, %110, %326, %67
  %.pn99.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %68, %67 ], [ %109, %108 ], [ %.pn99.pn.pn.pn, %326 ], [ %111, %110 ]
  resume { ptr, i32 } %.pn99.pn.pn.pn.pn.pn.pn
}

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6google11sparsetableIiLt48E22instrumented_allocatorIiEEC2EtS2_(ptr noundef nonnull align 8 dereferenceable(28), i16 noundef zeroext, ptr noundef) unnamed_addr #2 align 2

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN6google11sparsetableIiLt48E22instrumented_allocatorIiEE3setEtRKi(ptr noundef nonnull align 8 dereferenceable(28), i16 noundef zeroext, ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #2 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6google11sparsetableIiLt48E22instrumented_allocatorIiEE5eraseEt(ptr noundef nonnull align 8 dereferenceable(28), i16 noundef zeroext) local_unnamed_addr #2 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6google11sparsetableIiLt48ESaIiEEC2EmS1_(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef, ptr noundef) unnamed_addr #2 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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