; LLVM IR from specinfo-ua/UAPKI :: library/uapki/src (doc-verify)

; 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.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.23" = type { ptr }
%"class.UapkiNS::SmartBA" = type { ptr }
%"struct.UapkiNS::Doc::Verify::CadesXlInfo" = type { i8, i8, i8, i8, %"class.std::vector.13", %"class.UapkiNS::VectorBA", %"class.UapkiNS::AttributeHelper::RevocationRefsParser", %"class.UapkiNS::AttributeHelper::RevocationValuesParser", %"class.UapkiNS::VectorBA", i32, %"class.std::vector.18" }
%"class.std::vector.13" = type { %"struct.std::_Vector_base.14" }
%"struct.std::_Vector_base.14" = type { %"struct.std::_Vector_base<UapkiNS::AttrCertId, std::allocator<UapkiNS::AttrCertId>>::_Vector_impl" }
%"struct.std::_Vector_base<UapkiNS::AttrCertId, std::allocator<UapkiNS::AttrCertId>>::_Vector_impl" = type { %"struct.std::_Vector_base<UapkiNS::AttrCertId, std::allocator<UapkiNS::AttrCertId>>::_Vector_impl_data" }
%"struct.std::_Vector_base<UapkiNS::AttrCertId, std::allocator<UapkiNS::AttrCertId>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.UapkiNS::AttributeHelper::RevocationRefsParser" = type { ptr, i64 }
%"class.UapkiNS::AttributeHelper::RevocationValuesParser" = type { %"class.UapkiNS::VectorBA", %"class.UapkiNS::VectorBA", %"struct.UapkiNS::Attribute" }
%"struct.UapkiNS::Attribute" = type { %"class.std::__cxx11::basic_string", ptr }
%"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.UapkiNS::VectorBA" = type { %"class.std::vector.3" }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<ByteArray_st *, std::allocator<ByteArray_st *>>::_Vector_impl" }
%"struct.std::_Vector_base<ByteArray_st *, std::allocator<ByteArray_st *>>::_Vector_impl" = type { %"struct.std::_Vector_base<ByteArray_st *, std::allocator<ByteArray_st *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ByteArray_st *, std::allocator<ByteArray_st *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.18" = type { %"struct.std::_Vector_base.19" }
%"struct.std::_Vector_base.19" = type { %"struct.std::_Vector_base<UapkiNS::VerifyStatus, std::allocator<UapkiNS::VerifyStatus>>::_Vector_impl" }
%"struct.std::_Vector_base<UapkiNS::VerifyStatus, std::allocator<UapkiNS::VerifyStatus>>::_Vector_impl" = type { %"struct.std::_Vector_base<UapkiNS::VerifyStatus, std::allocator<UapkiNS::VerifyStatus>>::_Vector_impl_data" }
%"struct.std::_Vector_base<UapkiNS::VerifyStatus, std::allocator<UapkiNS::VerifyStatus>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.UapkiNS::OtherHash" = type { %"struct.UapkiNS::AlgorithmIdentifier", ptr }
%"struct.UapkiNS::AlgorithmIdentifier" = type { %"class.std::__cxx11::basic_string", ptr }
%"struct.UapkiNS::AttrCertId" = type { %"struct.UapkiNS::OtherHash", %"struct.UapkiNS::AttrCertId::IssuerSerial" }
%"struct.UapkiNS::AttrCertId::IssuerSerial" = type { ptr, ptr }

declare i32 @__gxx_personality_v0(...)

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

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

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

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

declare i32 @hash_from_oid(ptr noundef) #2

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

declare i32 @hash(i32 noundef, ptr noundef, ptr noundef) #2

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

declare i32 @ba_cmp(ptr noundef, ptr noundef) #2

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN7UapkiNS3Doc6Verify11CadesXlInfo14verifyCertRefsEPNS_4Cert8CerStoreE(ptr noundef nonnull align 8 dereferenceable(216) %0, ptr noundef %1) #3 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca i32, align 4
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %8 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %9 = alloca ptr, align 8
  %10 = alloca i64, align 8
  %11 = alloca i64, align 8
  %12 = alloca ptr, align 8
  %13 = alloca %"class.__gnu_cxx::__normal_iterator.23", align 8
  %14 = alloca %"class.__gnu_cxx::__normal_iterator.23", align 8
  %15 = alloca i32, align 4
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca %"class.UapkiNS::SmartBA", align 8
  %23 = alloca ptr, align 8
  %24 = alloca i32, align 4
  %25 = alloca ptr, align 8
  %26 = alloca %"class.UapkiNS::SmartBA", align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  %27 = load ptr, ptr %4, align 8
  %28 = getelementptr inbounds %"struct.UapkiNS::Doc::Verify::CadesXlInfo", ptr %27, i32 0, i32 0
  %29 = load i8, ptr %28, align 8, !tbaa !9, !range !32, !noundef !33
  %30 = trunc i8 %29 to i1
  br i1 %30, label %32, label %31

31:                                               ; preds = %2
  store i32 0, ptr %3, align 4
  br label %228

32:                                               ; preds = %2
  %33 = getelementptr inbounds %"struct.UapkiNS::Doc::Verify::CadesXlInfo", ptr %27, i32 0, i32 2
  %34 = load i8, ptr %33, align 2, !tbaa !34, !range !32, !noundef !33
  %35 = trunc i8 %34 to i1
  br i1 %35, label %36, label %45

36:                                               ; preds = %32
  %37 = getelementptr inbounds %"struct.UapkiNS::Doc::Verify::CadesXlInfo", ptr %27, i32 0, i32 5
  %38 = call noundef i64 @_ZNKSt6vectorIP12ByteArray_stSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %37) #5
  %39 = getelementptr inbounds %"struct.UapkiNS::Doc::Verify::CadesXlInfo", ptr %27, i32 0, i32 4
  %40 = call noundef i64 @_ZNKSt6vectorIN7UapkiNS10AttrCertIdESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %39) #5
  %41 = icmp ne i64 %38, %40
  br i1 %41, label %42, label %44

42:                                               ; preds = %36
  %43 = getelementptr inbounds %"struct.UapkiNS::Doc::Verify::CadesXlInfo", ptr %27, i32 0, i32 9
  store i32 4, ptr %43, align 8, !tbaa !35
  store i32 4152, ptr %3, align 4
  br label %228

44:                                               ; preds = %36
  br label %45

45:                                               ; preds = %44, %32
  %46 = getelementptr inbounds %"struct.UapkiNS::Doc::Verify::CadesXlInfo", ptr %27, i32 0, i32 10
  %47 = getelementptr inbounds %"struct.UapkiNS::Doc::Verify::CadesXlInfo", ptr %27, i32 0, i32 4
  %48 = call noundef i64 @_ZNKSt6vectorIN7UapkiNS10AttrCertIdESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %47) #5
  call void @_ZNSt6vectorIN7UapkiNS12VerifyStatusESaIS1_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %46, i64 noundef %48)
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #5
  %49 = getelementptr inbounds %"struct.UapkiNS::Doc::Verify::CadesXlInfo", ptr %27, i32 0, i32 10
  store ptr %49, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #5
  %50 = load ptr, ptr %6, align 8, !tbaa !5
  %51 = call ptr @_ZNSt6vectorIN7UapkiNS12VerifyStatusESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %50) #5
  %52 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %7, i32 0, i32 0
  store ptr %51, ptr %52, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #5
  %53 = load ptr, ptr %6, align 8, !tbaa !5
  %54 = call ptr @_ZNSt6vectorIN7UapkiNS12VerifyStatusESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %53) #5
  %55 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %8, i32 0, i32 0
  store ptr %54, ptr %55, align 8
  br label %56

56:                                               ; preds = %62, %45
  %57 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN7UapkiNS12VerifyStatusESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %8) #5
  br i1 %57, label %59, label %58

58:                                               ; preds = %56
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #5
  br label %64

59:                                               ; preds = %56
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #5
  %60 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN7UapkiNS12VerifyStatusESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %7) #5
  store ptr %60, ptr %9, align 8, !tbaa !5
  %61 = load ptr, ptr %9, align 8, !tbaa !5
  store i32 0, ptr %61, align 4, !tbaa !36
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #5
  br label %62

62:                                               ; preds = %59
  %63 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN7UapkiNS12VerifyStatusESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %7) #5
  br label %56

64:                                               ; preds = %58
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #5
  store i64 0, ptr %10, align 8, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #5
  store i64 0, ptr %11, align 8, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #5
  %65 = getelementptr inbounds %"struct.UapkiNS::Doc::Verify::CadesXlInfo", ptr %27, i32 0, i32 4
  store ptr %65, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #5
  %66 = load ptr, ptr %12, align 8, !tbaa !5
  %67 = call ptr @_ZNSt6vectorIN7UapkiNS10AttrCertIdESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %66) #5
  %68 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.23", ptr %13, i32 0, i32 0
  store ptr %67, ptr %68, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #5
  %69 = load ptr, ptr %12, align 8, !tbaa !5
  %70 = call ptr @_ZNSt6vectorIN7UapkiNS10AttrCertIdESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %69) #5
  %71 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.23", ptr %14, i32 0, i32 0
  store ptr %70, ptr %71, align 8
  br label %72

72:                                               ; preds = %214, %64
  %73 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN7UapkiNS10AttrCertIdESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %14) #5
  br i1 %73, label %75, label %74

74:                                               ; preds = %72
  store i32 4, ptr %15, align 4
  br label %217

75:                                               ; preds = %72
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #5
  %76 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN7UapkiNS10AttrCertIdESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %13) #5
  store ptr %76, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #5
  %77 = getelementptr inbounds %"struct.UapkiNS::Doc::Verify::CadesXlInfo", ptr %27, i32 0, i32 10
  %78 = load i64, ptr %11, align 8, !tbaa !37
  %79 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN7UapkiNS12VerifyStatusESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %77, i64 noundef %78) #5
  store ptr %79, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #5
  %80 = load ptr, ptr %16, align 8, !tbaa !5
  %81 = getelementptr inbounds %"struct.UapkiNS::OtherHash", ptr %80, i32 0, i32 0
  %82 = getelementptr inbounds %"struct.UapkiNS::AlgorithmIdentifier", ptr %81, i32 0, i32 0
  %83 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %82) #5
  %84 = call i32 @hash_from_oid(ptr noundef %83)
  store i32 %84, ptr %18, align 4, !tbaa !38
  %85 = load i32, ptr %18, align 4, !tbaa !38
  %86 = icmp eq i32 %85, 0
  br i1 %86, label %87, label %90

87:                                               ; preds = %75
  %88 = load ptr, ptr %17, align 8, !tbaa !5
  store i32 3, ptr %88, align 4, !tbaa !36
  %89 = getelementptr inbounds %"struct.UapkiNS::Doc::Verify::CadesXlInfo", ptr %27, i32 0, i32 9
  store i32 3, ptr %89, align 8, !tbaa !35
  store i32 4110, ptr %3, align 4
  store i32 1, ptr %15, align 4
  br label %208

90:                                               ; preds = %75
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #5
  store i32 0, ptr %19, align 4, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #5
  store ptr null, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #5
  store ptr null, ptr %21, align 8, !tbaa !5
  %91 = getelementptr inbounds %"struct.UapkiNS::Doc::Verify::CadesXlInfo", ptr %27, i32 0, i32 2
  %92 = load i8, ptr %91, align 2, !tbaa !34, !range !32, !noundef !33
  %93 = trunc i8 %92 to i1
  br i1 %93, label %94, label %99

94:                                               ; preds = %90
  %95 = getelementptr inbounds %"struct.UapkiNS::Doc::Verify::CadesXlInfo", ptr %27, i32 0, i32 5
  %96 = load i64, ptr %11, align 8, !tbaa !37
  %97 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP12ByteArray_stSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %95, i64 noundef %96) #5
  %98 = load ptr, ptr %97, align 8, !tbaa !5
  store ptr %98, ptr %20, align 8, !tbaa !5
  br label %170

99:                                               ; preds = %90
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #5
  call void @_ZN7UapkiNS7SmartBAC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22)
  %100 = load ptr, ptr %16, align 8, !tbaa !5
  %101 = getelementptr inbounds %"struct.UapkiNS::AttrCertId", ptr %100, i32 0, i32 1
  %102 = getelementptr inbounds %"struct.UapkiNS::AttrCertId::IssuerSerial", ptr %101, i32 0, i32 0
  %103 = load ptr, ptr %102, align 8, !tbaa !42
  %104 = invoke noundef ptr @_ZN7UapkiNS7SmartBAadEv(ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %105 unwind label %114

105:                                              ; preds = %99
  %106 = invoke noundef i32 @_ZN7UapkiNS4Cert22issuerFromGeneralNamesEPK12ByteArray_stPPS1_(ptr noundef %103, ptr noundef %104)
          to label %107 unwind label %114

107:                                              ; preds = %105
  store i32 %106, ptr %19, align 4, !tbaa !40
  %108 = load i32, ptr %19, align 4, !tbaa !40
  %109 = icmp ne i32 %108, 0
  br i1 %109, label %110, label %118

110:                                              ; preds = %107
  %111 = load ptr, ptr %17, align 8, !tbaa !5
  store i32 3, ptr %111, align 4, !tbaa !36
  %112 = getelementptr inbounds %"struct.UapkiNS::Doc::Verify::CadesXlInfo", ptr %27, i32 0, i32 9
  store i32 3, ptr %112, align 8, !tbaa !35
  %113 = load i32, ptr %19, align 4, !tbaa !40
  store i32 %113, ptr %3, align 4
  store i32 1, ptr %15, align 4
  br label %166

114:                                              ; preds = %130, %121, %118, %105, %99
  %115 = landingpad { ptr, i32 }
          cleanup
  %116 = extractvalue { ptr, i32 } %115, 0
  store ptr %116, ptr %23, align 8
  %117 = extractvalue { ptr, i32 } %115, 1
  store i32 %117, ptr %24, align 4
  br label %169

118:                                              ; preds = %107
  %119 = load ptr, ptr %5, align 8, !tbaa !5
  %120 = invoke noundef ptr @_ZNK7UapkiNS7SmartBA3getEv(ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %121 unwind label %114

121:                                              ; preds = %118
  %122 = load ptr, ptr %16, align 8, !tbaa !5
  %123 = getelementptr inbounds %"struct.UapkiNS::AttrCertId", ptr %122, i32 0, i32 1
  %124 = getelementptr inbounds %"struct.UapkiNS::AttrCertId::IssuerSerial", ptr %123, i32 0, i32 1
  %125 = load ptr, ptr %124, align 8, !tbaa !47
  %126 = invoke noundef i32 @_ZN7UapkiNS4Cert8CerStore20getCertByIssuerAndSNEPK12ByteArray_stS4_PPNS0_7CerItemE(ptr noundef nonnull align 8 dereferenceable(96) %119, ptr noundef %120, ptr noundef %125, ptr noundef %21)
          to label %127 unwind label %114

127:                                              ; preds = %121
  store i32 %126, ptr %19, align 4, !tbaa !40
  %128 = load i32, ptr %19, align 4, !tbaa !40
  %129 = icmp eq i32 %128, 0
  br i1 %129, label %130, label %134

130:                                              ; preds = %127
  %131 = load ptr, ptr %21, align 8, !tbaa !5
  %132 = invoke noundef ptr @_ZNK7UapkiNS4Cert7CerItem10getEncodedEv(ptr noundef nonnull align 8 dereferenceable(401) %131)
          to label %133 unwind label %114

133:                                              ; preds = %130
  store ptr %132, ptr %20, align 8, !tbaa !5
  br label %165

134:                                              ; preds = %127
  %135 = load i32, ptr %19, align 4, !tbaa !40
  %136 = icmp eq i32 %135, 4161
  br i1 %136, label %137, label %161

137:                                              ; preds = %134
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #5
  store ptr null, ptr %25, align 8, !tbaa !5
  %138 = invoke noundef ptr @_ZNK7UapkiNS7SmartBA3getEv(ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %139 unwind label %152

139:                                              ; preds = %137
  %140 = load ptr, ptr %16, align 8, !tbaa !5
  %141 = getelementptr inbounds %"struct.UapkiNS::AttrCertId", ptr %140, i32 0, i32 1
  %142 = getelementptr inbounds %"struct.UapkiNS::AttrCertId::IssuerSerial", ptr %141, i32 0, i32 1
  %143 = load ptr, ptr %142, align 8, !tbaa !47
  %144 = invoke noundef i32 @_ZN7UapkiNS4Cert17encodeIssuerAndSNEPK12ByteArray_stS3_PPS1_(ptr noundef %138, ptr noundef %143, ptr noundef %25)
          to label %145 unwind label %152

145:                                              ; preds = %139
  store i32 %144, ptr %19, align 4, !tbaa !40
  %146 = load i32, ptr %19, align 4, !tbaa !40
  %147 = icmp ne i32 %146, 0
  br i1 %147, label %148, label %156

148:                                              ; preds = %145
  %149 = load ptr, ptr %17, align 8, !tbaa !5
  store i32 3, ptr %149, align 4, !tbaa !36
  %150 = getelementptr inbounds %"struct.UapkiNS::Doc::Verify::CadesXlInfo", ptr %27, i32 0, i32 9
  store i32 3, ptr %150, align 8, !tbaa !35
  %151 = load i32, ptr %19, align 4, !tbaa !40
  store i32 %151, ptr %3, align 4
  store i32 1, ptr %15, align 4
  br label %160

152:                                              ; preds = %156, %139, %137
  %153 = landingpad { ptr, i32 }
          cleanup
  %154 = extractvalue { ptr, i32 } %153, 0
  store ptr %154, ptr %23, align 8
  %155 = extractvalue { ptr, i32 } %153, 1
  store i32 %155, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #5
  br label %169

156:                                              ; preds = %145
  %157 = load ptr, ptr %17, align 8, !tbaa !5
  store i32 2, ptr %157, align 4, !tbaa !36
  %158 = getelementptr inbounds %"struct.UapkiNS::Doc::Verify::CadesXlInfo", ptr %27, i32 0, i32 8
  invoke void @_ZNSt6vectorIP12ByteArray_stSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %158, ptr noundef nonnull align 8 dereferenceable(8) %25)
          to label %159 unwind label %152

159:                                              ; preds = %156
  store i32 5, ptr %15, align 4
  br label %160

160:                                              ; preds = %159, %148
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #5
  br label %166

161:                                              ; preds = %134
  %162 = load ptr, ptr %17, align 8, !tbaa !5
  store i32 3, ptr %162, align 4, !tbaa !36
  %163 = getelementptr inbounds %"struct.UapkiNS::Doc::Verify::CadesXlInfo", ptr %27, i32 0, i32 9
  store i32 3, ptr %163, align 8, !tbaa !35
  %164 = load i32, ptr %19, align 4, !tbaa !40
  store i32 %164, ptr %3, align 4
  store i32 1, ptr %15, align 4
  br label %166

165:                                              ; preds = %133
  store i32 0, ptr %15, align 4
  br label %166

166:                                              ; preds = %165, %161, %160, %110
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  %167 = load i32, ptr %15, align 4
  switch i32 %167, label %207 [
    i32 0, label %168
  ]

168:                                              ; preds = %166
  br label %170

169:                                              ; preds = %152, %114
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  br label %216

170:                                              ; preds = %168, %94
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #5
  call void @_ZN7UapkiNS7SmartBAC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26)
  %171 = load i32, ptr %18, align 4, !tbaa !38
  %172 = load ptr, ptr %20, align 8, !tbaa !5
  %173 = invoke noundef ptr @_ZN7UapkiNS7SmartBAadEv(ptr noundef nonnull align 8 dereferenceable(8) %26)
          to label %174 unwind label %183

174:                                              ; preds = %170
  %175 = invoke i32 @hash(i32 noundef %171, ptr noundef %172, ptr noundef %173)
          to label %176 unwind label %183

176:                                              ; preds = %174
  store i32 %175, ptr %19, align 4, !tbaa !40
  %177 = load i32, ptr %19, align 4, !tbaa !40
  %178 = icmp ne i32 %177, 0
  br i1 %178, label %179, label %187

179:                                              ; preds = %176
  %180 = load ptr, ptr %17, align 8, !tbaa !5
  store i32 3, ptr %180, align 4, !tbaa !36
  %181 = getelementptr inbounds %"struct.UapkiNS::Doc::Verify::CadesXlInfo", ptr %27, i32 0, i32 9
  store i32 3, ptr %181, align 8, !tbaa !35
  %182 = load i32, ptr %19, align 4, !tbaa !40
  store i32 %182, ptr %3, align 4
  store i32 1, ptr %15, align 4
  br label %206

183:                                              ; preds = %192, %187, %174, %170
  %184 = landingpad { ptr, i32 }
          cleanup
  %185 = extractvalue { ptr, i32 } %184, 0
  store ptr %185, ptr %23, align 8
  %186 = extractvalue { ptr, i32 } %184, 1
  store i32 %186, ptr %24, align 4
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #5
  br label %216

187:                                              ; preds = %176
  %188 = load ptr, ptr %16, align 8, !tbaa !5
  %189 = getelementptr inbounds %"struct.UapkiNS::OtherHash", ptr %188, i32 0, i32 1
  %190 = load ptr, ptr %189, align 8, !tbaa !48
  %191 = invoke noundef ptr @_ZNK7UapkiNS7SmartBA3getEv(ptr noundef nonnull align 8 dereferenceable(8) %26)
          to label %192 unwind label %183

192:                                              ; preds = %187
  %193 = invoke i32 @ba_cmp(ptr noundef %190, ptr noundef %191)
          to label %194 unwind label %183

194:                                              ; preds = %192
  %195 = icmp eq i32 %193, 0
  br i1 %195, label %196, label %200

196:                                              ; preds = %194
  %197 = load ptr, ptr %17, align 8, !tbaa !5
  store i32 5, ptr %197, align 4, !tbaa !36
  %198 = load i64, ptr %10, align 8, !tbaa !37
  %199 = add i64 %198, 1
  store i64 %199, ptr %10, align 8, !tbaa !37
  br label %203

200:                                              ; preds = %194
  %201 = load ptr, ptr %17, align 8, !tbaa !5
  store i32 4, ptr %201, align 4, !tbaa !36
  %202 = getelementptr inbounds %"struct.UapkiNS::Doc::Verify::CadesXlInfo", ptr %27, i32 0, i32 9
  store i32 4, ptr %202, align 8, !tbaa !35
  br label %203

203:                                              ; preds = %200, %196
  %204 = load i64, ptr %11, align 8, !tbaa !37
  %205 = add i64 %204, 1
  store i64 %205, ptr %11, align 8, !tbaa !37
  store i32 0, ptr %15, align 4
  br label %206

206:                                              ; preds = %203, %179
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #5
  br label %207

207:                                              ; preds = %206, %166
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #5
  br label %208

208:                                              ; preds = %207, %87
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #5
  %209 = load i32, ptr %15, align 4
  switch i32 %209, label %211 [
    i32 0, label %210
  ]

210:                                              ; preds = %208
  store i32 0, ptr %15, align 4
  br label %211

211:                                              ; preds = %210, %208
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  %212 = load i32, ptr %15, align 4
  switch i32 %212, label %217 [
    i32 0, label %213
    i32 5, label %214
  ]

213:                                              ; preds = %211
  br label %214

214:                                              ; preds = %213, %211
  %215 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN7UapkiNS10AttrCertIdESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %13) #5
  br label %72

216:                                              ; preds = %183, %169
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #5
  br label %230

217:                                              ; preds = %211, %74
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #5
  %218 = load i32, ptr %15, align 4
  switch i32 %218, label %227 [
    i32 4, label %219
  ]

219:                                              ; preds = %217
  %220 = getelementptr inbounds %"struct.UapkiNS::Doc::Verify::CadesXlInfo", ptr %27, i32 0, i32 4
  %221 = call noundef i64 @_ZNKSt6vectorIN7UapkiNS10AttrCertIdESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %220) #5
  %222 = load i64, ptr %10, align 8, !tbaa !37
  %223 = icmp eq i64 %221, %222
  br i1 %223, label %224, label %226

224:                                              ; preds = %219
  %225 = getelementptr inbounds %"struct.UapkiNS::Doc::Verify::CadesXlInfo", ptr %27, i32 0, i32 9
  store i32 5, ptr %225, align 8, !tbaa !35
  br label %226

226:                                              ; preds = %224, %219
  store i32 0, ptr %3, align 4
  store i32 1, ptr %15, align 4
  br label %227

227:                                              ; preds = %226, %217
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #5
  br label %228

228:                                              ; preds = %227, %42, %31
  %229 = load i32, ptr %3, align 4
  ret i32 %229

230:                                              ; preds = %216
  %231 = load ptr, ptr %23, align 8
  %232 = load i32, ptr %24, align 4
  %233 = insertvalue { ptr, i32 } poison, ptr %231, 0
  %234 = insertvalue { ptr, i32 } %233, i32 %232, 1
  resume { ptr, i32 } %234
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare noundef i32 @_ZN7UapkiNS4Cert22issuerFromGeneralNamesEPK12ByteArray_stPPS1_(ptr noundef, ptr noundef) #2

declare noundef i32 @_ZN7UapkiNS4Cert8CerStore20getCertByIssuerAndSNEPK12ByteArray_stS4_PPNS0_7CerItemE(ptr noundef nonnull align 8 dereferenceable(96), ptr noundef, ptr noundef, ptr noundef) #2

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

declare noundef i32 @_ZN7UapkiNS4Cert17encodeIssuerAndSNEPK12ByteArray_stS3_PPS1_(ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !11, i64 0}
!10 = !{!"_ZTSN7UapkiNS3Doc6Verify11CadesXlInfoE", !11, i64 0, !11, i64 1, !11, i64 2, !11, i64 3, !12, i64 8, !16, i64 32, !21, i64 56, !23, i64 72, !16, i64 160, !27, i64 184, !28, i64 192}
!11 = !{!"bool", !7, i64 0}
!12 = !{!"_ZTSSt6vectorIN7UapkiNS10AttrCertIdESaIS1_EE", !13, i64 0}
!13 = !{!"_ZTSSt12_Vector_baseIN7UapkiNS10AttrCertIdESaIS1_EE", !14, i64 0}
!14 = !{!"_ZTSNSt12_Vector_baseIN7UapkiNS10AttrCertIdESaIS1_EE12_Vector_implE", !15, i64 0}
!15 = !{!"_ZTSNSt12_Vector_baseIN7UapkiNS10AttrCertIdESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!16 = !{!"_ZTSN7UapkiNS8VectorBAE", !17, i64 0}
!17 = !{!"_ZTSSt6vectorIP12ByteArray_stSaIS1_EE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseIP12ByteArray_stSaIS1_EE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIP12ByteArray_stSaIS1_EE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIP12ByteArray_stSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!21 = !{!"_ZTSN7UapkiNS15AttributeHelper20RevocationRefsParserE", !6, i64 0, !22, i64 8}
!22 = !{!"long", !7, i64 0}
!23 = !{!"_ZTSN7UapkiNS15AttributeHelper22RevocationValuesParserE", !16, i64 0, !16, i64 24, !24, i64 48}
!24 = !{!"_ZTSN7UapkiNS9AttributeE", !25, i64 0, !6, i64 32}
!25 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !26, i64 0, !22, i64 8, !7, i64 16}
!26 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!27 = !{!"_ZTSN7UapkiNS12VerifyStatusE", !7, i64 0}
!28 = !{!"_ZTSSt6vectorIN7UapkiNS12VerifyStatusESaIS1_EE", !29, i64 0}
!29 = !{!"_ZTSSt12_Vector_baseIN7UapkiNS12VerifyStatusESaIS1_EE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIN7UapkiNS12VerifyStatusESaIS1_EE12_Vector_implE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIN7UapkiNS12VerifyStatusESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!32 = !{i8 0, i8 2}
!33 = !{}
!34 = !{!10, !11, i64 2}
!35 = !{!10, !27, i64 184}
!36 = !{!27, !27, i64 0}
!37 = !{!22, !22, i64 0}
!38 = !{!39, !39, i64 0}
!39 = !{!"_ZTS7HashAlg", !7, i64 0}
!40 = !{!41, !41, i64 0}
!41 = !{!"int", !7, i64 0}
!42 = !{!43, !6, i64 48}
!43 = !{!"_ZTSN7UapkiNS10AttrCertIdE", !44, i64 0, !46, i64 48}
!44 = !{!"_ZTSN7UapkiNS9OtherHashE", !45, i64 0, !6, i64 40}
!45 = !{!"_ZTSN7UapkiNS19AlgorithmIdentifierE", !25, i64 0, !6, i64 32}
!46 = !{!"_ZTSN7UapkiNS10AttrCertId12IssuerSerialE", !6, i64 0, !6, i64 8}
!47 = !{!43, !6, i64 56}
!48 = !{!44, !6, i64 40}


; 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.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.23" = type { ptr }
%"class.UapkiNS::SmartBA" = type { ptr }

declare i32 @__gxx_personality_v0(...)

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

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

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

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

declare i32 @hash_from_oid(ptr noundef) local_unnamed_addr #2

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

declare i32 @hash(i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare i32 @ba_cmp(ptr noundef, ptr noundef) local_unnamed_addr #2

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN7UapkiNS3Doc6Verify11CadesXlInfo14verifyCertRefsEPNS_4Cert8CerStoreE(ptr noundef nonnull align 8 dereferenceable(216) %0, ptr noundef %1) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %4 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %5 = alloca %"class.__gnu_cxx::__normal_iterator.23", align 8
  %6 = alloca %"class.__gnu_cxx::__normal_iterator.23", align 8
  %7 = alloca ptr, align 8
  %8 = alloca %"class.UapkiNS::SmartBA", align 8
  %9 = alloca ptr, align 8
  %10 = alloca %"class.UapkiNS::SmartBA", align 8
  %11 = load i8, ptr %0, align 8, !tbaa !5, !range !31, !noundef !32
  %12 = trunc nuw i8 %11 to i1
  br i1 %12, label %13, label %111

13:                                               ; preds = %2
  %14 = getelementptr inbounds i8, ptr %0, i64 2
  %15 = load i8, ptr %14, align 2, !tbaa !33, !range !31, !noundef !32
  %16 = trunc nuw i8 %15 to i1
  br i1 %16, label %17, label %24

17:                                               ; preds = %13
  %18 = getelementptr inbounds i8, ptr %0, i64 32
  %19 = tail call noundef i64 @_ZNKSt6vectorIP12ByteArray_stSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %18) #5
  %20 = getelementptr inbounds i8, ptr %0, i64 8
  %21 = tail call noundef i64 @_ZNKSt6vectorIN7UapkiNS10AttrCertIdESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %20) #5
  %.not = icmp eq i64 %19, %21
  br i1 %.not, label %24, label %22

22:                                               ; preds = %17
  %23 = getelementptr inbounds i8, ptr %0, i64 184
  store i32 4, ptr %23, align 8, !tbaa !34
  br label %111

24:                                               ; preds = %17, %13
  %25 = getelementptr inbounds i8, ptr %0, i64 192
  %26 = getelementptr inbounds i8, ptr %0, i64 8
  %27 = tail call noundef i64 @_ZNKSt6vectorIN7UapkiNS10AttrCertIdESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %26) #5
  tail call void @_ZNSt6vectorIN7UapkiNS12VerifyStatusESaIS1_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %25, i64 noundef %27)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #5
  %28 = tail call ptr @_ZNSt6vectorIN7UapkiNS12VerifyStatusESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %25) #5
  store ptr %28, ptr %3, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #5
  %29 = tail call ptr @_ZNSt6vectorIN7UapkiNS12VerifyStatusESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %25) #5
  store ptr %29, ptr %4, align 8
  %30 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN7UapkiNS12VerifyStatusESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(8) %4) #5
  br i1 %30, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph, %24
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #5
  %31 = call ptr @_ZNSt6vectorIN7UapkiNS10AttrCertIdESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %26) #5
  store ptr %31, ptr %5, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #5
  %32 = call ptr @_ZNSt6vectorIN7UapkiNS10AttrCertIdESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %26) #5
  store ptr %32, ptr %6, align 8
  %33 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN7UapkiNS10AttrCertIdESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %6) #5
  br i1 %33, label %.lr.ph104, label %._crit_edge105

.lr.ph104:                                        ; preds = %._crit_edge
  %34 = getelementptr inbounds i8, ptr %0, i64 184
  %35 = getelementptr inbounds i8, ptr %0, i64 160
  %36 = getelementptr inbounds i8, ptr %0, i64 32
  br label %40

.lr.ph:                                           ; preds = %24, %.lr.ph
  %37 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN7UapkiNS12VerifyStatusESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #5
  store i32 0, ptr %37, align 4, !tbaa !35
  %38 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN7UapkiNS12VerifyStatusESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #5
  %39 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN7UapkiNS12VerifyStatusESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(8) %4) #5
  br i1 %39, label %.lr.ph, label %._crit_edge

40:                                               ; preds = %.lr.ph104, %103
  %.049102 = phi i32 [ undef, %.lr.ph104 ], [ %.5, %103 ]
  %.051101 = phi i64 [ 0, %.lr.ph104 ], [ %.354, %103 ]
  %.057100 = phi i64 [ 0, %.lr.ph104 ], [ %.259, %103 ]
  %41 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN7UapkiNS10AttrCertIdESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #5
  %42 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN7UapkiNS12VerifyStatusESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %25, i64 noundef %.057100) #5
  %43 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %41) #5
  %44 = call i32 @hash_from_oid(ptr noundef %43)
  %45 = icmp eq i32 %44, 0
  br i1 %45, label %.thread82, label %46

.thread82:                                        ; preds = %40
  store i32 3, ptr %42, align 4, !tbaa !35
  store i32 3, ptr %34, align 8, !tbaa !34
  br label %.thread88

46:                                               ; preds = %40
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #5
  store ptr null, ptr %7, align 8, !tbaa !36
  %47 = load i8, ptr %14, align 2, !tbaa !33, !range !31, !noundef !32
  %48 = trunc nuw i8 %47 to i1
  br i1 %48, label %49, label %52

49:                                               ; preds = %46
  %50 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP12ByteArray_stSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %36, i64 noundef %.057100) #5
  %51 = load ptr, ptr %50, align 8, !tbaa !36
  br label %82

52:                                               ; preds = %46
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #5
  call void @_ZN7UapkiNS7SmartBAC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8)
  %53 = getelementptr inbounds i8, ptr %41, i64 48
  %54 = load ptr, ptr %53, align 8, !tbaa !37
  %55 = call noundef ptr @_ZN7UapkiNS7SmartBAadEv(ptr noundef nonnull align 8 dereferenceable(8) %8)
  %56 = invoke noundef i32 @_ZN7UapkiNS4Cert22issuerFromGeneralNamesEPK12ByteArray_stPPS1_(ptr noundef %54, ptr noundef %55)
          to label %57 unwind label %59

57:                                               ; preds = %52
  %.not72 = icmp eq i32 %56, 0
  br i1 %.not72, label %61, label %58

58:                                               ; preds = %57
  store i32 3, ptr %42, align 4, !tbaa !35
  store i32 3, ptr %34, align 8, !tbaa !34
  br label %.thread

59:                                               ; preds = %61, %52
  %60 = landingpad { ptr, i32 }
          cleanup
  br label %81

61:                                               ; preds = %57
  %62 = call noundef ptr @_ZNK7UapkiNS7SmartBA3getEv(ptr noundef nonnull align 8 dereferenceable(8) %8)
  %63 = getelementptr inbounds i8, ptr %41, i64 56
  %64 = load ptr, ptr %63, align 8, !tbaa !42
  %65 = invoke noundef i32 @_ZN7UapkiNS4Cert8CerStore20getCertByIssuerAndSNEPK12ByteArray_stS4_PPNS0_7CerItemE(ptr noundef nonnull align 8 dereferenceable(96) %1, ptr noundef %62, ptr noundef %64, ptr noundef nonnull %7)
          to label %66 unwind label %59

66:                                               ; preds = %61
  switch i32 %65, label %77 [
    i32 0, label %78
    i32 4161, label %67
  ]

67:                                               ; preds = %66
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #5
  store ptr null, ptr %9, align 8, !tbaa !36
  %68 = call noundef ptr @_ZNK7UapkiNS7SmartBA3getEv(ptr noundef nonnull align 8 dereferenceable(8) %8)
  %69 = load ptr, ptr %63, align 8, !tbaa !42
  %70 = invoke noundef i32 @_ZN7UapkiNS4Cert17encodeIssuerAndSNEPK12ByteArray_stS3_PPS1_(ptr noundef %68, ptr noundef %69, ptr noundef nonnull %9)
          to label %71 unwind label %73

71:                                               ; preds = %67
  %.not73 = icmp eq i32 %70, 0
  br i1 %.not73, label %75, label %72

72:                                               ; preds = %71
  store i32 3, ptr %42, align 4, !tbaa !35
  store i32 3, ptr %34, align 8, !tbaa !34
  br label %76

73:                                               ; preds = %75, %67
  %74 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #5
  br label %81

75:                                               ; preds = %71
  store i32 2, ptr %42, align 4, !tbaa !35
  invoke void @_ZNSt6vectorIP12ByteArray_stSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %35, ptr noundef nonnull align 8 dereferenceable(8) %9)
          to label %76 unwind label %73

76:                                               ; preds = %75, %72
  %.061 = phi i32 [ 1, %72 ], [ 5, %75 ]
  %.150 = phi i32 [ %70, %72 ], [ %.049102, %75 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #5
  br label %.thread

77:                                               ; preds = %66
  store i32 3, ptr %42, align 4, !tbaa !35
  store i32 3, ptr %34, align 8, !tbaa !34
  br label %.thread

.thread:                                          ; preds = %58, %76, %77
  %.162.ph = phi i32 [ 1, %77 ], [ %.061, %76 ], [ 1, %58 ]
  %.2.ph = phi i32 [ %65, %77 ], [ %.150, %76 ], [ %56, %58 ]
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #5
  br label %102

78:                                               ; preds = %66
  %79 = load ptr, ptr %7, align 8, !tbaa !36
  %80 = call noundef ptr @_ZNK7UapkiNS4Cert7CerItem10getEncodedEv(ptr noundef nonnull align 8 dereferenceable(401) %79)
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #5
  br label %82

81:                                               ; preds = %73, %59
  %.pn = phi { ptr, i32 } [ %74, %73 ], [ %60, %59 ]
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #5
  br label %106

82:                                               ; preds = %78, %49
  %.148 = phi ptr [ %51, %49 ], [ %80, %78 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #5
  call void @_ZN7UapkiNS7SmartBAC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10)
  %83 = call noundef ptr @_ZN7UapkiNS7SmartBAadEv(ptr noundef nonnull align 8 dereferenceable(8) %10)
  %84 = invoke i32 @hash(i32 noundef %44, ptr noundef %.148, ptr noundef %83)
          to label %85 unwind label %87

85:                                               ; preds = %82
  %.not75 = icmp eq i32 %84, 0
  br i1 %.not75, label %89, label %86

86:                                               ; preds = %85
  store i32 3, ptr %42, align 4, !tbaa !35
  store i32 3, ptr %34, align 8, !tbaa !34
  br label %101

87:                                               ; preds = %89, %82
  %88 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #5
  br label %106

89:                                               ; preds = %85
  %90 = getelementptr inbounds i8, ptr %41, i64 40
  %91 = load ptr, ptr %90, align 8, !tbaa !43
  %92 = call noundef ptr @_ZNK7UapkiNS7SmartBA3getEv(ptr noundef nonnull align 8 dereferenceable(8) %10)
  %93 = invoke i32 @ba_cmp(ptr noundef %91, ptr noundef %92)
          to label %94 unwind label %87

94:                                               ; preds = %89
  %95 = icmp eq i32 %93, 0
  br i1 %95, label %96, label %98

96:                                               ; preds = %94
  store i32 5, ptr %42, align 4, !tbaa !35
  %97 = add i64 %.051101, 1
  br label %99

98:                                               ; preds = %94
  store i32 4, ptr %42, align 4, !tbaa !35
  store i32 4, ptr %34, align 8, !tbaa !34
  br label %99

99:                                               ; preds = %98, %96
  %.152 = phi i64 [ %97, %96 ], [ %.051101, %98 ]
  %100 = add i64 %.057100, 1
  br label %101

101:                                              ; preds = %99, %86
  %.263 = phi i32 [ 1, %86 ], [ 0, %99 ]
  %.158 = phi i64 [ %.057100, %86 ], [ %100, %99 ]
  %.253 = phi i64 [ %.051101, %86 ], [ %.152, %99 ]
  %.4 = phi i32 [ %84, %86 ], [ %.049102, %99 ]
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #5
  br label %102

102:                                              ; preds = %101, %.thread
  %.364 = phi i32 [ %.263, %101 ], [ %.162.ph, %.thread ]
  %.259 = phi i64 [ %.158, %101 ], [ %.057100, %.thread ]
  %.354 = phi i64 [ %.253, %101 ], [ %.051101, %.thread ]
  %.5 = phi i32 [ %.4, %101 ], [ %.2.ph, %.thread ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #5
  switch i32 %.364, label %.thread88 [
    i32 0, label %103
    i32 5, label %103
  ]

103:                                              ; preds = %102, %102
  %104 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN7UapkiNS10AttrCertIdESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #5
  %105 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN7UapkiNS10AttrCertIdESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %6) #5
  br i1 %105, label %40, label %._crit_edge105

106:                                              ; preds = %87, %81
  %.pn76 = phi { ptr, i32 } [ %88, %87 ], [ %.pn, %81 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #5
  resume { ptr, i32 } %.pn76

.thread88:                                        ; preds = %102, %.thread82
  %.7.ph = phi i32 [ 4110, %.thread82 ], [ %.5, %102 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #5
  br label %111

._crit_edge105:                                   ; preds = %103, %._crit_edge
  %.051.lcssa = phi i64 [ 0, %._crit_edge ], [ %.354, %103 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #5
  %107 = call noundef i64 @_ZNKSt6vectorIN7UapkiNS10AttrCertIdESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %26) #5
  %108 = icmp eq i64 %107, %.051.lcssa
  br i1 %108, label %109, label %111

109:                                              ; preds = %._crit_edge105
  %110 = getelementptr inbounds i8, ptr %0, i64 184
  store i32 5, ptr %110, align 8, !tbaa !34
  br label %111

111:                                              ; preds = %.thread88, %109, %._crit_edge105, %2, %22
  %.9 = phi i32 [ 4152, %22 ], [ 0, %2 ], [ 0, %109 ], [ 0, %._crit_edge105 ], [ %.7.ph, %.thread88 ]
  ret i32 %.9
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare noundef i32 @_ZN7UapkiNS4Cert22issuerFromGeneralNamesEPK12ByteArray_stPPS1_(ptr noundef, ptr noundef) local_unnamed_addr #2

declare noundef i32 @_ZN7UapkiNS4Cert8CerStore20getCertByIssuerAndSNEPK12ByteArray_stS4_PPNS0_7CerItemE(ptr noundef nonnull align 8 dereferenceable(96), ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare noundef i32 @_ZN7UapkiNS4Cert17encodeIssuerAndSNEPK12ByteArray_stS3_PPS1_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 0}
!6 = !{!"_ZTSN7UapkiNS3Doc6Verify11CadesXlInfoE", !7, i64 0, !7, i64 1, !7, i64 2, !7, i64 3, !10, i64 8, !15, i64 32, !20, i64 56, !22, i64 72, !15, i64 160, !26, i64 184, !27, i64 192}
!7 = !{!"bool", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTSSt6vectorIN7UapkiNS10AttrCertIdESaIS1_EE", !11, i64 0}
!11 = !{!"_ZTSSt12_Vector_baseIN7UapkiNS10AttrCertIdESaIS1_EE", !12, i64 0}
!12 = !{!"_ZTSNSt12_Vector_baseIN7UapkiNS10AttrCertIdESaIS1_EE12_Vector_implE", !13, i64 0}
!13 = !{!"_ZTSNSt12_Vector_baseIN7UapkiNS10AttrCertIdESaIS1_EE17_Vector_impl_dataE", !14, i64 0, !14, i64 8, !14, i64 16}
!14 = !{!"any pointer", !8, i64 0}
!15 = !{!"_ZTSN7UapkiNS8VectorBAE", !16, i64 0}
!16 = !{!"_ZTSSt6vectorIP12ByteArray_stSaIS1_EE", !17, i64 0}
!17 = !{!"_ZTSSt12_Vector_baseIP12ByteArray_stSaIS1_EE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIP12ByteArray_stSaIS1_EE12_Vector_implE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIP12ByteArray_stSaIS1_EE17_Vector_impl_dataE", !14, i64 0, !14, i64 8, !14, i64 16}
!20 = !{!"_ZTSN7UapkiNS15AttributeHelper20RevocationRefsParserE", !14, i64 0, !21, i64 8}
!21 = !{!"long", !8, i64 0}
!22 = !{!"_ZTSN7UapkiNS15AttributeHelper22RevocationValuesParserE", !15, i64 0, !15, i64 24, !23, i64 48}
!23 = !{!"_ZTSN7UapkiNS9AttributeE", !24, i64 0, !14, i64 32}
!24 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !25, i64 0, !21, i64 8, !8, i64 16}
!25 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !14, i64 0}
!26 = !{!"_ZTSN7UapkiNS12VerifyStatusE", !8, i64 0}
!27 = !{!"_ZTSSt6vectorIN7UapkiNS12VerifyStatusESaIS1_EE", !28, i64 0}
!28 = !{!"_ZTSSt12_Vector_baseIN7UapkiNS12VerifyStatusESaIS1_EE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIN7UapkiNS12VerifyStatusESaIS1_EE12_Vector_implE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIN7UapkiNS12VerifyStatusESaIS1_EE17_Vector_impl_dataE", !14, i64 0, !14, i64 8, !14, i64 16}
!31 = !{i8 0, i8 2}
!32 = !{}
!33 = !{!6, !7, i64 2}
!34 = !{!6, !26, i64 184}
!35 = !{!26, !26, i64 0}
!36 = !{!14, !14, i64 0}
!37 = !{!38, !14, i64 48}
!38 = !{!"_ZTSN7UapkiNS10AttrCertIdE", !39, i64 0, !41, i64 48}
!39 = !{!"_ZTSN7UapkiNS9OtherHashE", !40, i64 0, !14, i64 40}
!40 = !{!"_ZTSN7UapkiNS19AlgorithmIdentifierE", !24, i64 0, !14, i64 32}
!41 = !{!"_ZTSN7UapkiNS10AttrCertId12IssuerSerialE", !14, i64 0, !14, i64 8}
!42 = !{!38, !14, i64 56}
!43 = !{!39, !14, i64 40}


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