; LLVM IR from specinfo-ua/UAPKI :: library/uapki/src/cer-item.ll (ZN7UapkiNS4Cert9parseCertEPK12ByteArray_stPPNS0_7CerItemE)

; 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.UapkiNS::SmartBA" = type { 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] }
%"struct.UapkiNS::Cert::CerItem::Uris" = type { %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.Certificate = type { %struct.TBSCertificate, %struct.AlgorithmIdentifier, %struct.BIT_STRING_s, %struct.asn_struct_ctx_s }
%struct.TBSCertificate = type { ptr, %struct.ASN__PRIMITIVE_TYPE_s, %struct.AlgorithmIdentifier, %struct.Name, %struct.Validity, %struct.Name, %struct.SubjectPublicKeyInfo, ptr, ptr, ptr, %struct.asn_struct_ctx_s }
%struct.ASN__PRIMITIVE_TYPE_s = type { ptr, i32 }
%struct.Validity = type { %struct.PKIXTime, %struct.PKIXTime, %struct.asn_struct_ctx_s }
%struct.PKIXTime = type { i32, %"union.PKIXTime::PKIXTime_u", %struct.asn_struct_ctx_s }
%"union.PKIXTime::PKIXTime_u" = type { %struct.OCTET_STRING }
%struct.OCTET_STRING = type { ptr, i32, %struct.asn_struct_ctx_s }
%struct.Name = type { i32, %"union.Name::Name_u", %struct.asn_struct_ctx_s }
%"union.Name::Name_u" = type { %struct.RDNSequence }
%struct.RDNSequence = type { %struct.anon, %struct.asn_struct_ctx_s }
%struct.anon = type { ptr, i32, i32, ptr }
%struct.SubjectPublicKeyInfo = type { %struct.AlgorithmIdentifier, %struct.BIT_STRING_s, %struct.asn_struct_ctx_s }
%struct.AlgorithmIdentifier = type { %struct.ASN__PRIMITIVE_TYPE_s, ptr, %struct.asn_struct_ctx_s }
%struct.BIT_STRING_s = type { ptr, i32, i32, %struct.asn_struct_ctx_s }
%struct.asn_struct_ctx_s = type { i16, i16, i32, ptr, i64 }
%"class.UapkiNS::Cert::CerItem" = type <{ %"class.std::mutex", %"class.std::__cxx11::basic_string", ptr, ptr, ptr, ptr, %"class.std::__cxx11::basic_string", ptr, ptr, ptr, ptr, ptr, i32, [4 x i8], i64, i64, i32, %"struct.std::atomic", [3 x i8], %"struct.UapkiNS::Cert::CerItem::Uris", i32, [4 x i8], %"class.std::vector.3", %"struct.UapkiNS::Cert::CertStatusInfo", %"struct.UapkiNS::Cert::CertStatusInfo", %"struct.std::atomic", [7 x i8] }>
%"class.std::mutex" = type { %"class.std::__mutex_base" }
%"class.std::__mutex_base" = type { %union.pthread_mutex_t }
%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = 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 }
%"struct.UapkiNS::Cert::CertStatusInfo" = type { i32, %"struct.std::atomic", ptr, i32, i64 }
%"struct.std::atomic" = type { %"struct.std::__atomic_base" }
%"struct.std::__atomic_base" = type { i8 }

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

declare i32 @__gxx_personality_v0(...)

declare ptr @ba_copy_with_alloc(ptr noundef, i64 noundef, i64 noundef) #0

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

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

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

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

declare void @asn_free(ptr noundef, ptr noundef) #0

declare ptr @get_Certificate_desc() #0

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

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

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

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

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

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

declare void @stacktrace_create(ptr noundef, i64 noundef, i32 noundef, ptr noundef) #0

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

declare void @stacktrace_add(ptr noundef, i64 noundef, i32 noundef) #0

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

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

declare ptr @asn_decode_ba_with_alloc(ptr noundef, ptr noundef) #0

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

declare noundef i32 @_ZN7UapkiNS4Util11oidFromAsn1EPK21ASN__PRIMITIVE_TYPE_sRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) #0

declare noundef i32 @_ZN7UapkiNS4Util27bitStringEncapOctetFromAsn1EPK12BIT_STRING_sPP12ByteArray_st(ptr noundef, ptr noundef) #0

declare i32 @asn_BITSTRING2ba(ptr noundef, ptr noundef) #0

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

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZN7UapkiNS4CertL20encode_issuer_and_snEPK14TBSCertificatePP12ByteArray_st(ptr noundef, ptr noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN7UapkiNS4Cert9calcKeyIdE7HashAlgPK12ByteArray_stPPS2_(i32 noundef, ptr noundef, ptr noundef) #6

declare ptr @get_Name_desc() #0

declare i32 @asn_encode_ba(ptr noundef, ptr noundef, ptr noundef) #0

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN7UapkiNS4Cert9parseCertEPK12ByteArray_stPPNS0_7CerItemE(ptr noundef %0, ptr noundef %1) #6 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 i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca %"class.UapkiNS::SmartBA", align 8
  %12 = alloca %"class.UapkiNS::SmartBA", align 8
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca %"class.UapkiNS::SmartBA", align 8
  %16 = alloca %"class.UapkiNS::SmartBA", align 8
  %17 = alloca %"class.UapkiNS::SmartBA", align 8
  %18 = alloca %"class.UapkiNS::SmartBA", align 8
  %19 = alloca %"class.UapkiNS::SmartBA", align 8
  %20 = alloca %"class.UapkiNS::SmartBA", align 8
  %21 = alloca %"class.UapkiNS::SmartBA", align 8
  %22 = alloca ptr, align 8
  %23 = alloca i32, align 4
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca i64, align 8
  %26 = alloca i64, align 8
  %27 = alloca i32, align 4
  %28 = alloca %"struct.UapkiNS::Cert::CerItem::Uris", align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  %29 = load ptr, ptr %4, align 8, !tbaa !5
  %30 = icmp ne ptr %29, null
  br i1 %30, label %31, label %34

31:                                               ; preds = %2
  %32 = load ptr, ptr %5, align 8, !tbaa !5
  %33 = icmp ne ptr %32, null
  br i1 %33, label %35, label %34

34:                                               ; preds = %31, %2
  store i32 4101, ptr %3, align 4
  br label %416

35:                                               ; preds = %31
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #8
  %36 = call ptr @get_Certificate_desc()
  %37 = load ptr, ptr %4, align 8, !tbaa !5
  %38 = call ptr @asn_decode_ba_with_alloc(ptr noundef %36, ptr noundef %37)
  store ptr %38, ptr %6, align 8, !tbaa !5
  %39 = load ptr, ptr %6, align 8, !tbaa !5
  %40 = icmp ne ptr %39, null
  br i1 %40, label %41, label %47

41:                                               ; preds = %35
  %42 = load ptr, ptr %6, align 8, !tbaa !5
  %43 = getelementptr inbounds %struct.Certificate, ptr %42, i32 0, i32 0
  %44 = getelementptr inbounds %struct.TBSCertificate, ptr %43, i32 0, i32 9
  %45 = load ptr, ptr %44, align 8, !tbaa !9
  %46 = icmp ne ptr %45, null
  br i1 %46, label %48, label %47

47:                                               ; preds = %41, %35
  store i32 4145, ptr %3, align 4
  store i32 1, ptr %7, align 4
  br label %415

48:                                               ; preds = %41
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #8
  store i32 0, ptr %8, align 4, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #8
  %49 = load ptr, ptr %6, align 8, !tbaa !5
  %50 = getelementptr inbounds %struct.Certificate, ptr %49, i32 0, i32 0
  store ptr %50, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #8
  %51 = load ptr, ptr %9, align 8, !tbaa !5
  %52 = getelementptr inbounds %struct.TBSCertificate, ptr %51, i32 0, i32 9
  %53 = load ptr, ptr %52, align 8, !tbaa !26
  store ptr %53, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #8
  call void @_ZN7UapkiNS7SmartBAC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %11)
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #8
  invoke void @_ZN7UapkiNS7SmartBAC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %54 unwind label %74

54:                                               ; preds = %48
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #8
  invoke void @_ZN7UapkiNS7SmartBAC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %15)
          to label %55 unwind label %78

55:                                               ; preds = %54
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #8
  invoke void @_ZN7UapkiNS7SmartBAC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16)
          to label %56 unwind label %82

56:                                               ; preds = %55
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #8
  invoke void @_ZN7UapkiNS7SmartBAC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %57 unwind label %86

57:                                               ; preds = %56
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #8
  invoke void @_ZN7UapkiNS7SmartBAC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %18)
          to label %58 unwind label %90

58:                                               ; preds = %57
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #8
  invoke void @_ZN7UapkiNS7SmartBAC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19)
          to label %59 unwind label %94

59:                                               ; preds = %58
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #8
  invoke void @_ZN7UapkiNS7SmartBAC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20)
          to label %60 unwind label %98

60:                                               ; preds = %59
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #8
  invoke void @_ZN7UapkiNS7SmartBAC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %21)
          to label %61 unwind label %102

61:                                               ; preds = %60
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #8
  store ptr null, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #8
  store i32 5, ptr %23, align 4, !tbaa !27
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #8
  store i64 0, ptr %25, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #8
  store i64 0, ptr %26, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #8
  store i32 0, ptr %27, align 4, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 96, ptr %28) #8
  call void @_ZN7UapkiNS4Cert7CerItem4UrisC2Ev(ptr noundef nonnull align 8 dereferenceable(96) %28) #8
  br label %62

62:                                               ; preds = %61
  %63 = load ptr, ptr %9, align 8, !tbaa !5
  %64 = getelementptr inbounds %struct.TBSCertificate, ptr %63, i32 0, i32 1
  %65 = invoke noundef ptr @_ZN7UapkiNS7SmartBAadEv(ptr noundef nonnull align 8 dereferenceable(8) %19)
          to label %66 unwind label %106

66:                                               ; preds = %62
  %67 = invoke i32 @asn_INTEGER2ba(ptr noundef %64, ptr noundef %65)
          to label %68 unwind label %106

68:                                               ; preds = %66
  store i32 %67, ptr %8, align 4, !tbaa !25
  %69 = load i32, ptr %8, align 4, !tbaa !25
  %70 = icmp ne i32 %69, 0
  br i1 %70, label %71, label %110

71:                                               ; preds = %68
  %72 = load i32, ptr %8, align 4, !tbaa !25
  invoke void @stacktrace_add(ptr noundef @.str, i64 noundef 623, i32 noundef %72)
          to label %73 unwind label %106

73:                                               ; preds = %71
  br label %396

74:                                               ; preds = %48
  %75 = landingpad { ptr, i32 }
          cleanup
  %76 = extractvalue { ptr, i32 } %75, 0
  store ptr %76, ptr %13, align 8
  %77 = extractvalue { ptr, i32 } %75, 1
  store i32 %77, ptr %14, align 4
  br label %414

78:                                               ; preds = %54
  %79 = landingpad { ptr, i32 }
          cleanup
  %80 = extractvalue { ptr, i32 } %79, 0
  store ptr %80, ptr %13, align 8
  %81 = extractvalue { ptr, i32 } %79, 1
  store i32 %81, ptr %14, align 4
  br label %413

82:                                               ; preds = %55
  %83 = landingpad { ptr, i32 }
          cleanup
  %84 = extractvalue { ptr, i32 } %83, 0
  store ptr %84, ptr %13, align 8
  %85 = extractvalue { ptr, i32 } %83, 1
  store i32 %85, ptr %14, align 4
  br label %412

86:                                               ; preds = %56
  %87 = landingpad { ptr, i32 }
          cleanup
  %88 = extractvalue { ptr, i32 } %87, 0
  store ptr %88, ptr %13, align 8
  %89 = extractvalue { ptr, i32 } %87, 1
  store i32 %89, ptr %14, align 4
  br label %411

90:                                               ; preds = %57
  %91 = landingpad { ptr, i32 }
          cleanup
  %92 = extractvalue { ptr, i32 } %91, 0
  store ptr %92, ptr %13, align 8
  %93 = extractvalue { ptr, i32 } %91, 1
  store i32 %93, ptr %14, align 4
  br label %410

94:                                               ; preds = %58
  %95 = landingpad { ptr, i32 }
          cleanup
  %96 = extractvalue { ptr, i32 } %95, 0
  store ptr %96, ptr %13, align 8
  %97 = extractvalue { ptr, i32 } %95, 1
  store i32 %97, ptr %14, align 4
  br label %409

98:                                               ; preds = %59
  %99 = landingpad { ptr, i32 }
          cleanup
  %100 = extractvalue { ptr, i32 } %99, 0
  store ptr %100, ptr %13, align 8
  %101 = extractvalue { ptr, i32 } %99, 1
  store i32 %101, ptr %14, align 4
  br label %408

102:                                              ; preds = %60
  %103 = landingpad { ptr, i32 }
          cleanup
  %104 = extractvalue { ptr, i32 } %103, 0
  store ptr %104, ptr %13, align 8
  %105 = extractvalue { ptr, i32 } %103, 1
  store i32 %105, ptr %14, align 4
  br label %407

106:                                              ; preds = %398, %396, %375, %371, %367, %363, %359, %357, %351, %347, %340, %338, %329, %322, %317, %313, %310, %305, %299, %293, %288, %285, %273, %268, %263, %260, %254, %249, %247, %244, %237, %232, %227, %220, %215, %210, %206, %201, %192, %186, %181, %177, %175, %169, %164, %160, %158, %152, %144, %138, %130, %124, %119, %115, %113, %71, %66, %62
  %107 = landingpad { ptr, i32 }
          cleanup
  %108 = extractvalue { ptr, i32 } %107, 0
  store ptr %108, ptr %13, align 8
  %109 = extractvalue { ptr, i32 } %107, 1
  store i32 %109, ptr %14, align 4
  br label %406

110:                                              ; preds = %68
  br label %111

111:                                              ; preds = %110
  br label %112

112:                                              ; preds = %111
  br label %113

113:                                              ; preds = %112
  %114 = invoke ptr @get_Name_desc()
          to label %115 unwind label %106

115:                                              ; preds = %113
  %116 = load ptr, ptr %9, align 8, !tbaa !5
  %117 = getelementptr inbounds %struct.TBSCertificate, ptr %116, i32 0, i32 3
  %118 = invoke noundef ptr @_ZN7UapkiNS7SmartBAadEv(ptr noundef nonnull align 8 dereferenceable(8) %16)
          to label %119 unwind label %106

119:                                              ; preds = %115
  %120 = invoke i32 @asn_encode_ba(ptr noundef %114, ptr noundef %117, ptr noundef %118)
          to label %121 unwind label %106

121:                                              ; preds = %119
  store i32 %120, ptr %8, align 4, !tbaa !25
  %122 = load i32, ptr %8, align 4, !tbaa !25
  %123 = icmp ne i32 %122, 0
  br i1 %123, label %124, label %127

124:                                              ; preds = %121
  %125 = load i32, ptr %8, align 4, !tbaa !25
  invoke void @stacktrace_add(ptr noundef @.str, i64 noundef 624, i32 noundef %125)
          to label %126 unwind label %106

126:                                              ; preds = %124
  br label %396

127:                                              ; preds = %121
  br label %128

128:                                              ; preds = %127
  br label %129

129:                                              ; preds = %128
  br label %130

130:                                              ; preds = %129
  %131 = load ptr, ptr %9, align 8, !tbaa !5
  %132 = getelementptr inbounds %struct.TBSCertificate, ptr %131, i32 0, i32 4
  %133 = getelementptr inbounds %struct.Validity, ptr %132, i32 0, i32 0
  %134 = invoke noundef i32 @_ZN7UapkiNS4Util16pkixTimeFromAsn1EPK8PKIXTimeRm(ptr noundef %133, ptr noundef nonnull align 8 dereferenceable(8) %26)
          to label %135 unwind label %106

135:                                              ; preds = %130
  store i32 %134, ptr %8, align 4, !tbaa !25
  %136 = load i32, ptr %8, align 4, !tbaa !25
  %137 = icmp ne i32 %136, 0
  br i1 %137, label %138, label %141

138:                                              ; preds = %135
  %139 = load i32, ptr %8, align 4, !tbaa !25
  invoke void @stacktrace_add(ptr noundef @.str, i64 noundef 625, i32 noundef %139)
          to label %140 unwind label %106

140:                                              ; preds = %138
  br label %396

141:                                              ; preds = %135
  br label %142

142:                                              ; preds = %141
  br label %143

143:                                              ; preds = %142
  br label %144

144:                                              ; preds = %143
  %145 = load ptr, ptr %9, align 8, !tbaa !5
  %146 = getelementptr inbounds %struct.TBSCertificate, ptr %145, i32 0, i32 4
  %147 = getelementptr inbounds %struct.Validity, ptr %146, i32 0, i32 1
  %148 = invoke noundef i32 @_ZN7UapkiNS4Util16pkixTimeFromAsn1EPK8PKIXTimeRm(ptr noundef %147, ptr noundef nonnull align 8 dereferenceable(8) %25)
          to label %149 unwind label %106

149:                                              ; preds = %144
  store i32 %148, ptr %8, align 4, !tbaa !25
  %150 = load i32, ptr %8, align 4, !tbaa !25
  %151 = icmp ne i32 %150, 0
  br i1 %151, label %152, label %155

152:                                              ; preds = %149
  %153 = load i32, ptr %8, align 4, !tbaa !25
  invoke void @stacktrace_add(ptr noundef @.str, i64 noundef 626, i32 noundef %153)
          to label %154 unwind label %106

154:                                              ; preds = %152
  br label %396

155:                                              ; preds = %149
  br label %156

156:                                              ; preds = %155
  br label %157

157:                                              ; preds = %156
  br label %158

158:                                              ; preds = %157
  %159 = invoke ptr @get_Name_desc()
          to label %160 unwind label %106

160:                                              ; preds = %158
  %161 = load ptr, ptr %9, align 8, !tbaa !5
  %162 = getelementptr inbounds %struct.TBSCertificate, ptr %161, i32 0, i32 5
  %163 = invoke noundef ptr @_ZN7UapkiNS7SmartBAadEv(ptr noundef nonnull align 8 dereferenceable(8) %21)
          to label %164 unwind label %106

164:                                              ; preds = %160
  %165 = invoke i32 @asn_encode_ba(ptr noundef %159, ptr noundef %162, ptr noundef %163)
          to label %166 unwind label %106

166:                                              ; preds = %164
  store i32 %165, ptr %8, align 4, !tbaa !25
  %167 = load i32, ptr %8, align 4, !tbaa !25
  %168 = icmp ne i32 %167, 0
  br i1 %168, label %169, label %172

169:                                              ; preds = %166
  %170 = load i32, ptr %8, align 4, !tbaa !25
  invoke void @stacktrace_add(ptr noundef @.str, i64 noundef 627, i32 noundef %170)
          to label %171 unwind label %106

171:                                              ; preds = %169
  br label %396

172:                                              ; preds = %166
  br label %173

173:                                              ; preds = %172
  br label %174

174:                                              ; preds = %173
  br label %175

175:                                              ; preds = %174
  %176 = invoke ptr @get_SubjectPublicKeyInfo_desc()
          to label %177 unwind label %106

177:                                              ; preds = %175
  %178 = load ptr, ptr %9, align 8, !tbaa !5
  %179 = getelementptr inbounds %struct.TBSCertificate, ptr %178, i32 0, i32 6
  %180 = invoke noundef ptr @_ZN7UapkiNS7SmartBAadEv(ptr noundef nonnull align 8 dereferenceable(8) %20)
          to label %181 unwind label %106

181:                                              ; preds = %177
  %182 = invoke i32 @asn_encode_ba(ptr noundef %176, ptr noundef %179, ptr noundef %180)
          to label %183 unwind label %106

183:                                              ; preds = %181
  store i32 %182, ptr %8, align 4, !tbaa !25
  %184 = load i32, ptr %8, align 4, !tbaa !25
  %185 = icmp ne i32 %184, 0
  br i1 %185, label %186, label %189

186:                                              ; preds = %183
  %187 = load i32, ptr %8, align 4, !tbaa !25
  invoke void @stacktrace_add(ptr noundef @.str, i64 noundef 628, i32 noundef %187)
          to label %188 unwind label %106

188:                                              ; preds = %186
  br label %396

189:                                              ; preds = %183
  br label %190

190:                                              ; preds = %189
  br label %191

191:                                              ; preds = %190
  br label %192

192:                                              ; preds = %191
  %193 = load ptr, ptr %9, align 8, !tbaa !5
  %194 = getelementptr inbounds %struct.TBSCertificate, ptr %193, i32 0, i32 6
  %195 = getelementptr inbounds %struct.SubjectPublicKeyInfo, ptr %194, i32 0, i32 0
  %196 = getelementptr inbounds %struct.AlgorithmIdentifier, ptr %195, i32 0, i32 0
  %197 = invoke noundef i32 @_ZN7UapkiNS4Util11oidFromAsn1EPK21ASN__PRIMITIVE_TYPE_sRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef %196, ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %198 unwind label %106

198:                                              ; preds = %192
  store i32 %197, ptr %8, align 4, !tbaa !25
  %199 = load i32, ptr %8, align 4, !tbaa !25
  %200 = icmp ne i32 %199, 0
  br i1 %200, label %201, label %204

201:                                              ; preds = %198
  %202 = load i32, ptr %8, align 4, !tbaa !25
  invoke void @stacktrace_add(ptr noundef @.str, i64 noundef 629, i32 noundef %202)
          to label %203 unwind label %106

203:                                              ; preds = %201
  br label %396

204:                                              ; preds = %198
  br label %205

205:                                              ; preds = %204
  br label %206

206:                                              ; preds = %205
  %207 = invoke noundef zeroext i1 @_ZN6DstuNS16isDstu4145familyERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %208 unwind label %106

208:                                              ; preds = %206
  br i1 %207, label %209, label %226

209:                                              ; preds = %208
  store i32 4, ptr %23, align 4, !tbaa !27
  br label %210

210:                                              ; preds = %209
  %211 = load ptr, ptr %9, align 8, !tbaa !5
  %212 = getelementptr inbounds %struct.TBSCertificate, ptr %211, i32 0, i32 6
  %213 = getelementptr inbounds %struct.SubjectPublicKeyInfo, ptr %212, i32 0, i32 1
  %214 = invoke noundef ptr @_ZN7UapkiNS7SmartBAadEv(ptr noundef nonnull align 8 dereferenceable(8) %18)
          to label %215 unwind label %106

215:                                              ; preds = %210
  %216 = invoke noundef i32 @_ZN7UapkiNS4Util27bitStringEncapOctetFromAsn1EPK12BIT_STRING_sPP12ByteArray_st(ptr noundef %213, ptr noundef %214)
          to label %217 unwind label %106

217:                                              ; preds = %215
  store i32 %216, ptr %8, align 4, !tbaa !25
  %218 = load i32, ptr %8, align 4, !tbaa !25
  %219 = icmp ne i32 %218, 0
  br i1 %219, label %220, label %223

220:                                              ; preds = %217
  %221 = load i32, ptr %8, align 4, !tbaa !25
  invoke void @stacktrace_add(ptr noundef @.str, i64 noundef 633, i32 noundef %221)
          to label %222 unwind label %106

222:                                              ; preds = %220
  br label %396

223:                                              ; preds = %217
  br label %224

224:                                              ; preds = %223
  br label %225

225:                                              ; preds = %224
  br label %243

226:                                              ; preds = %208
  br label %227

227:                                              ; preds = %226
  %228 = load ptr, ptr %9, align 8, !tbaa !5
  %229 = getelementptr inbounds %struct.TBSCertificate, ptr %228, i32 0, i32 6
  %230 = getelementptr inbounds %struct.SubjectPublicKeyInfo, ptr %229, i32 0, i32 1
  %231 = invoke noundef ptr @_ZN7UapkiNS7SmartBAadEv(ptr noundef nonnull align 8 dereferenceable(8) %18)
          to label %232 unwind label %106

232:                                              ; preds = %227
  %233 = invoke i32 @asn_BITSTRING2ba(ptr noundef %230, ptr noundef %231)
          to label %234 unwind label %106

234:                                              ; preds = %232
  store i32 %233, ptr %8, align 4, !tbaa !25
  %235 = load i32, ptr %8, align 4, !tbaa !25
  %236 = icmp ne i32 %235, 0
  br i1 %236, label %237, label %240

237:                                              ; preds = %234
  %238 = load i32, ptr %8, align 4, !tbaa !25
  invoke void @stacktrace_add(ptr noundef @.str, i64 noundef 636, i32 noundef %238)
          to label %239 unwind label %106

239:                                              ; preds = %237
  br label %396

240:                                              ; preds = %234
  br label %241

241:                                              ; preds = %240
  br label %242

242:                                              ; preds = %241
  br label %243

243:                                              ; preds = %242, %225
  br label %244

244:                                              ; preds = %243
  %245 = load i32, ptr %23, align 4, !tbaa !27
  %246 = invoke noundef ptr @_ZNK7UapkiNS7SmartBA3getEv(ptr noundef nonnull align 8 dereferenceable(8) %18)
          to label %247 unwind label %106

247:                                              ; preds = %244
  %248 = invoke noundef ptr @_ZN7UapkiNS7SmartBAadEv(ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %249 unwind label %106

249:                                              ; preds = %247
  %250 = invoke noundef i32 @_ZN7UapkiNS4Cert9calcKeyIdE7HashAlgPK12ByteArray_stPPS2_(i32 noundef %245, ptr noundef %246, ptr noundef %248)
          to label %251 unwind label %106

251:                                              ; preds = %249
  store i32 %250, ptr %8, align 4, !tbaa !25
  %252 = load i32, ptr %8, align 4, !tbaa !25
  %253 = icmp ne i32 %252, 0
  br i1 %253, label %254, label %257

254:                                              ; preds = %251
  %255 = load i32, ptr %8, align 4, !tbaa !25
  invoke void @stacktrace_add(ptr noundef @.str, i64 noundef 639, i32 noundef %255)
          to label %256 unwind label %106

256:                                              ; preds = %254
  br label %396

257:                                              ; preds = %251
  br label %258

258:                                              ; preds = %257
  br label %259

259:                                              ; preds = %258
  br label %260

260:                                              ; preds = %259
  %261 = load ptr, ptr %9, align 8, !tbaa !5
  %262 = invoke noundef ptr @_ZN7UapkiNS7SmartBAadEv(ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %263 unwind label %106

263:                                              ; preds = %260
  %264 = invoke noundef i32 @_ZN7UapkiNS4CertL20encode_issuer_and_snEPK14TBSCertificatePP12ByteArray_st(ptr noundef %261, ptr noundef %262)
          to label %265 unwind label %106

265:                                              ; preds = %263
  store i32 %264, ptr %8, align 4, !tbaa !25
  %266 = load i32, ptr %8, align 4, !tbaa !25
  %267 = icmp ne i32 %266, 0
  br i1 %267, label %268, label %271

268:                                              ; preds = %265
  %269 = load i32, ptr %8, align 4, !tbaa !25
  invoke void @stacktrace_add(ptr noundef @.str, i64 noundef 640, i32 noundef %269)
          to label %270 unwind label %106

270:                                              ; preds = %268
  br label %396

271:                                              ; preds = %265
  br label %272

272:                                              ; preds = %271
  br label %273

273:                                              ; preds = %272
  %274 = load ptr, ptr %10, align 8, !tbaa !5
  %275 = invoke noundef i32 @_ZN7UapkiNS15ExtensionHelper11getKeyUsageEPK10ExtensionsRj(ptr noundef %274, ptr noundef nonnull align 4 dereferenceable(4) %27)
          to label %276 unwind label %106

276:                                              ; preds = %273
  store i32 %275, ptr %8, align 4, !tbaa !25
  %277 = load i32, ptr %8, align 4, !tbaa !25
  %278 = icmp ne i32 %277, 0
  br i1 %278, label %279, label %284

279:                                              ; preds = %276
  %280 = load i32, ptr %8, align 4, !tbaa !25
  %281 = icmp eq i32 %280, 4150
  br i1 %281, label %282, label %283

282:                                              ; preds = %279
  store i32 0, ptr %27, align 4, !tbaa !25
  store i32 0, ptr %8, align 4, !tbaa !25
  br label %283

283:                                              ; preds = %282, %279
  br label %284

284:                                              ; preds = %283, %276
  br label %285

285:                                              ; preds = %284
  %286 = load ptr, ptr %10, align 8, !tbaa !5
  %287 = invoke noundef ptr @_ZN7UapkiNS7SmartBAadEv(ptr noundef nonnull align 8 dereferenceable(8) %11)
          to label %288 unwind label %106

288:                                              ; preds = %285
  %289 = invoke noundef i32 @_ZN7UapkiNS15ExtensionHelper17getAuthorityKeyIdEPK10ExtensionsPP12ByteArray_st(ptr noundef %286, ptr noundef %287)
          to label %290 unwind label %106

290:                                              ; preds = %288
  store i32 %289, ptr %8, align 4, !tbaa !25
  %291 = load i32, ptr %8, align 4, !tbaa !25
  %292 = icmp ne i32 %291, 0
  br i1 %292, label %293, label %296

293:                                              ; preds = %290
  %294 = load i32, ptr %8, align 4, !tbaa !25
  invoke void @stacktrace_add(ptr noundef @.str, i64 noundef 650, i32 noundef %294)
          to label %295 unwind label %106

295:                                              ; preds = %293
  br label %396

296:                                              ; preds = %290
  br label %297

297:                                              ; preds = %296
  br label %298

298:                                              ; preds = %297
  br label %299

299:                                              ; preds = %298
  %300 = load ptr, ptr %10, align 8, !tbaa !5
  %301 = invoke noundef i32 @_ZN7UapkiNS4CertL19scan_and_parse_urisERK10ExtensionsRNS0_7CerItem4UrisE(ptr noundef nonnull align 8 dereferenceable(48) %300, ptr noundef nonnull align 8 dereferenceable(96) %28)
          to label %302 unwind label %106

302:                                              ; preds = %299
  store i32 %301, ptr %8, align 4, !tbaa !25
  %303 = load i32, ptr %8, align 4, !tbaa !25
  %304 = icmp ne i32 %303, 0
  br i1 %304, label %305, label %308

305:                                              ; preds = %302
  %306 = load i32, ptr %8, align 4, !tbaa !25
  invoke void @stacktrace_add(ptr noundef @.str, i64 noundef 652, i32 noundef %306)
          to label %307 unwind label %106

307:                                              ; preds = %305
  br label %396

308:                                              ; preds = %302
  br label %309

309:                                              ; preds = %308
  br label %310

310:                                              ; preds = %309
  %311 = load ptr, ptr %4, align 8, !tbaa !5
  %312 = invoke ptr @ba_copy_with_alloc(ptr noundef %311, i64 noundef 0, i64 noundef 0)
          to label %313 unwind label %106

313:                                              ; preds = %310
  %314 = invoke noundef zeroext i1 @_ZN7UapkiNS7SmartBA3setEP12ByteArray_st(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef %312)
          to label %315 unwind label %106

315:                                              ; preds = %313
  br i1 %314, label %322, label %316

316:                                              ; preds = %315
  br label %317

317:                                              ; preds = %316
  store i32 4097, ptr %8, align 4, !tbaa !25
  %318 = load i32, ptr %8, align 4, !tbaa !25
  invoke void @stacktrace_create(ptr noundef @.str, i64 noundef 655, i32 noundef %318, ptr noundef null)
          to label %319 unwind label %106

319:                                              ; preds = %317
  br label %396

320:                                              ; No predecessors!
  br label %321

321:                                              ; preds = %320
  br label %322

322:                                              ; preds = %321, %315
  %323 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 408) #9
          to label %324 unwind label %106

324:                                              ; preds = %322
  invoke void @_ZN7UapkiNS4Cert7CerItemC1Ev(ptr noundef nonnull align 8 dereferenceable(401) %323)
          to label %325 unwind label %332

325:                                              ; preds = %324
  store ptr %323, ptr %22, align 8, !tbaa !5
  %326 = load ptr, ptr %22, align 8, !tbaa !5
  %327 = icmp ne ptr %326, null
  br i1 %327, label %338, label %328

328:                                              ; preds = %325
  br label %329

329:                                              ; preds = %328
  store i32 4097, ptr %8, align 4, !tbaa !25
  %330 = load i32, ptr %8, align 4, !tbaa !25
  invoke void @stacktrace_create(ptr noundef @.str, i64 noundef 660, i32 noundef %330, ptr noundef null)
          to label %331 unwind label %106

331:                                              ; preds = %329
  br label %396

332:                                              ; preds = %324
  %333 = landingpad { ptr, i32 }
          cleanup
  %334 = extractvalue { ptr, i32 } %333, 0
  store ptr %334, ptr %13, align 8
  %335 = extractvalue { ptr, i32 } %333, 1
  store i32 %335, ptr %14, align 4
  call void @_ZdlPvm(ptr noundef %323, i64 noundef 408) #10
  br label %406

336:                                              ; No predecessors!
  br label %337

337:                                              ; preds = %336
  br label %338

338:                                              ; preds = %337, %325
  %339 = invoke noundef ptr @_ZN7UapkiNS7SmartBA3popEv(ptr noundef nonnull align 8 dereferenceable(8) %15)
          to label %340 unwind label %106

340:                                              ; preds = %338
  %341 = load ptr, ptr %22, align 8, !tbaa !5
  %342 = getelementptr inbounds %"class.UapkiNS::Cert::CerItem", ptr %341, i32 0, i32 2
  store ptr %339, ptr %342, align 8, !tbaa !30
  %343 = load ptr, ptr %6, align 8, !tbaa !5
  %344 = load ptr, ptr %22, align 8, !tbaa !5
  %345 = getelementptr inbounds %"class.UapkiNS::Cert::CerItem", ptr %344, i32 0, i32 3
  store ptr %343, ptr %345, align 8, !tbaa !52
  %346 = invoke noundef ptr @_ZN7UapkiNS7SmartBA3popEv(ptr noundef nonnull align 8 dereferenceable(8) %11)
          to label %347 unwind label %106

347:                                              ; preds = %340
  %348 = load ptr, ptr %22, align 8, !tbaa !5
  %349 = getelementptr inbounds %"class.UapkiNS::Cert::CerItem", ptr %348, i32 0, i32 4
  store ptr %346, ptr %349, align 8, !tbaa !53
  %350 = invoke noundef ptr @_ZN7UapkiNS7SmartBA3popEv(ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %351 unwind label %106

351:                                              ; preds = %347
  %352 = load ptr, ptr %22, align 8, !tbaa !5
  %353 = getelementptr inbounds %"class.UapkiNS::Cert::CerItem", ptr %352, i32 0, i32 5
  store ptr %350, ptr %353, align 8, !tbaa !54
  %354 = load ptr, ptr %22, align 8, !tbaa !5
  %355 = getelementptr inbounds %"class.UapkiNS::Cert::CerItem", ptr %354, i32 0, i32 6
  %356 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %355, ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %357 unwind label %106

357:                                              ; preds = %351
  %358 = invoke noundef ptr @_ZN7UapkiNS7SmartBA3popEv(ptr noundef nonnull align 8 dereferenceable(8) %19)
          to label %359 unwind label %106

359:                                              ; preds = %357
  %360 = load ptr, ptr %22, align 8, !tbaa !5
  %361 = getelementptr inbounds %"class.UapkiNS::Cert::CerItem", ptr %360, i32 0, i32 7
  store ptr %358, ptr %361, align 8, !tbaa !55
  %362 = invoke noundef ptr @_ZN7UapkiNS7SmartBA3popEv(ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %363 unwind label %106

363:                                              ; preds = %359
  %364 = load ptr, ptr %22, align 8, !tbaa !5
  %365 = getelementptr inbounds %"class.UapkiNS::Cert::CerItem", ptr %364, i32 0, i32 8
  store ptr %362, ptr %365, align 8, !tbaa !56
  %366 = invoke noundef ptr @_ZN7UapkiNS7SmartBA3popEv(ptr noundef nonnull align 8 dereferenceable(8) %16)
          to label %367 unwind label %106

367:                                              ; preds = %363
  %368 = load ptr, ptr %22, align 8, !tbaa !5
  %369 = getelementptr inbounds %"class.UapkiNS::Cert::CerItem", ptr %368, i32 0, i32 9
  store ptr %366, ptr %369, align 8, !tbaa !57
  %370 = invoke noundef ptr @_ZN7UapkiNS7SmartBA3popEv(ptr noundef nonnull align 8 dereferenceable(8) %21)
          to label %371 unwind label %106

371:                                              ; preds = %367
  %372 = load ptr, ptr %22, align 8, !tbaa !5
  %373 = getelementptr inbounds %"class.UapkiNS::Cert::CerItem", ptr %372, i32 0, i32 10
  store ptr %370, ptr %373, align 8, !tbaa !58
  %374 = invoke noundef ptr @_ZN7UapkiNS7SmartBA3popEv(ptr noundef nonnull align 8 dereferenceable(8) %20)
          to label %375 unwind label %106

375:                                              ; preds = %371
  %376 = load ptr, ptr %22, align 8, !tbaa !5
  %377 = getelementptr inbounds %"class.UapkiNS::Cert::CerItem", ptr %376, i32 0, i32 11
  store ptr %374, ptr %377, align 8, !tbaa !59
  %378 = load i32, ptr %23, align 4, !tbaa !27
  %379 = load ptr, ptr %22, align 8, !tbaa !5
  %380 = getelementptr inbounds %"class.UapkiNS::Cert::CerItem", ptr %379, i32 0, i32 12
  store i32 %378, ptr %380, align 8, !tbaa !60
  %381 = load i64, ptr %26, align 8, !tbaa !29
  %382 = load ptr, ptr %22, align 8, !tbaa !5
  %383 = getelementptr inbounds %"class.UapkiNS::Cert::CerItem", ptr %382, i32 0, i32 14
  store i64 %381, ptr %383, align 8, !tbaa !61
  %384 = load i64, ptr %25, align 8, !tbaa !29
  %385 = load ptr, ptr %22, align 8, !tbaa !5
  %386 = getelementptr inbounds %"class.UapkiNS::Cert::CerItem", ptr %385, i32 0, i32 15
  store i64 %384, ptr %386, align 8, !tbaa !62
  %387 = load i32, ptr %27, align 4, !tbaa !25
  %388 = load ptr, ptr %22, align 8, !tbaa !5
  %389 = getelementptr inbounds %"class.UapkiNS::Cert::CerItem", ptr %388, i32 0, i32 16
  store i32 %387, ptr %389, align 8, !tbaa !63
  %390 = load ptr, ptr %22, align 8, !tbaa !5
  %391 = getelementptr inbounds %"class.UapkiNS::Cert::CerItem", ptr %390, i32 0, i32 19
  %392 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN7UapkiNS4Cert7CerItem4UrisaSERKS2_(ptr noundef nonnull align 8 dereferenceable(96) %391, ptr noundef nonnull align 8 dereferenceable(96) %28)
          to label %393 unwind label %106

393:                                              ; preds = %375
  store ptr null, ptr %6, align 8, !tbaa !5
  %394 = load ptr, ptr %22, align 8, !tbaa !5
  %395 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %394, ptr %395, align 8, !tbaa !5
  store ptr null, ptr %22, align 8, !tbaa !5
  br label %396

396:                                              ; preds = %393, %331, %319, %307, %295, %270, %256, %239, %222, %203, %188, %171, %154, %140, %126, %73
  %397 = invoke ptr @get_Certificate_desc()
          to label %398 unwind label %106

398:                                              ; preds = %396
  %399 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @asn_free(ptr noundef %397, ptr noundef %399)
          to label %400 unwind label %106

400:                                              ; preds = %398
  %401 = load ptr, ptr %22, align 8, !tbaa !5
  %402 = icmp eq ptr %401, null
  br i1 %402, label %404, label %403

403:                                              ; preds = %400
  call void @_ZN7UapkiNS4Cert7CerItemD1Ev(ptr noundef nonnull align 8 dereferenceable(401) %401) #8
  call void @_ZdlPvm(ptr noundef %401, i64 noundef 408) #10
  br label %404

404:                                              ; preds = %403, %400
  %405 = load i32, ptr %8, align 4, !tbaa !25
  store i32 %405, ptr %3, align 4
  store i32 1, ptr %7, align 4
  call void @_ZN7UapkiNS4Cert7CerItem4UrisD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %28) #8
  call void @llvm.lifetime.end.p0(i64 96, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #8
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #8
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #8
  br label %415

406:                                              ; preds = %332, %106
  call void @_ZN7UapkiNS4Cert7CerItem4UrisD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %28) #8
  call void @llvm.lifetime.end.p0(i64 96, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #8
  br label %407

407:                                              ; preds = %406, %102
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #8
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #8
  br label %408

408:                                              ; preds = %407, %98
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #8
  br label %409

409:                                              ; preds = %408, %94
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #8
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #8
  br label %410

410:                                              ; preds = %409, %90
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #8
  br label %411

411:                                              ; preds = %410, %86
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  br label %412

412:                                              ; preds = %411, %82
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #8
  br label %413

413:                                              ; preds = %412, %78
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #8
  br label %414

414:                                              ; preds = %413, %74
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #8
  br label %418

415:                                              ; preds = %404, %47
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #8
  br label %416

416:                                              ; preds = %415, %34
  %417 = load i32, ptr %3, align 4
  ret i32 %417

418:                                              ; preds = %414
  %419 = load ptr, ptr %13, align 8
  %420 = load i32, ptr %14, align 4
  %421 = insertvalue { ptr, i32 } poison, ptr %419, 0
  %422 = insertvalue { ptr, i32 } %421, i32 %420, 1
  resume { ptr, i32 } %422
}

declare i32 @asn_INTEGER2ba(ptr noundef, ptr noundef) #0

declare noundef i32 @_ZN7UapkiNS4Util16pkixTimeFromAsn1EPK8PKIXTimeRm(ptr noundef, ptr noundef nonnull align 8 dereferenceable(8)) #0

declare ptr @get_SubjectPublicKeyInfo_desc() #0

declare noundef zeroext i1 @_ZN6DstuNS16isDstu4145familyERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32)) #0

declare noundef i32 @_ZN7UapkiNS15ExtensionHelper11getKeyUsageEPK10ExtensionsRj(ptr noundef, ptr noundef nonnull align 4 dereferenceable(4)) #0

declare noundef i32 @_ZN7UapkiNS15ExtensionHelper17getAuthorityKeyIdEPK10ExtensionsPP12ByteArray_st(ptr noundef, ptr noundef) #0

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZN7UapkiNS4CertL19scan_and_parse_urisERK10ExtensionsRNS0_7CerItem4UrisE(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(96)) #6

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

declare void @_ZN7UapkiNS4Cert7CerItemC1Ev(ptr)

declare void @_ZN7UapkiNS4Cert7CerItemD1Ev(ptr)

attributes #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 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 = { 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 #3 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { 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 #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 = { 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 #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, !6, i64 528}
!10 = !{!"_ZTS11Certificate", !11, i64 0, !14, i64 560, !24, i64 608, !15, i64 648}
!11 = !{!"_ZTS14TBSCertificate", !6, i64 0, !12, i64 8, !14, i64 24, !18, i64 72, !20, i64 152, !18, i64 320, !23, i64 400, !6, i64 512, !6, i64 520, !6, i64 528, !15, i64 536}
!12 = !{!"_ZTS21ASN__PRIMITIVE_TYPE_s", !6, i64 0, !13, i64 8}
!13 = !{!"int", !7, i64 0}
!14 = !{!"_ZTS19AlgorithmIdentifier", !12, i64 0, !6, i64 16, !15, i64 24}
!15 = !{!"_ZTS16asn_struct_ctx_s", !16, i64 0, !16, i64 2, !13, i64 4, !6, i64 8, !17, i64 16}
!16 = !{!"short", !7, i64 0}
!17 = !{!"long", !7, i64 0}
!18 = !{!"_ZTS4Name", !19, i64 0, !7, i64 8, !15, i64 56}
!19 = !{!"_ZTS7Name_PR", !7, i64 0}
!20 = !{!"_ZTS8Validity", !21, i64 0, !21, i64 72, !15, i64 144}
!21 = !{!"_ZTS8PKIXTime", !22, i64 0, !7, i64 8, !15, i64 48}
!22 = !{!"_ZTS11PKIXTime_PR", !7, i64 0}
!23 = !{!"_ZTS20SubjectPublicKeyInfo", !14, i64 0, !24, i64 48, !15, i64 88}
!24 = !{!"_ZTS12BIT_STRING_s", !6, i64 0, !13, i64 8, !13, i64 12, !15, i64 16}
!25 = !{!13, !13, i64 0}
!26 = !{!11, !6, i64 528}
!27 = !{!28, !28, i64 0}
!28 = !{!"_ZTS7HashAlg", !7, i64 0}
!29 = !{!17, !17, i64 0}
!30 = !{!31, !6, i64 72}
!31 = !{!"_ZTSN7UapkiNS4Cert7CerItemE", !32, i64 0, !34, i64 40, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !34, i64 104, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !28, i64 176, !17, i64 184, !17, i64 192, !13, i64 200, !36, i64 204, !39, i64 208, !44, i64 304, !45, i64 312, !49, i64 336, !49, i64 368, !36, i64 400}
!32 = !{!"_ZTSSt5mutex", !33, i64 0}
!33 = !{!"_ZTSSt12__mutex_base", !7, i64 0}
!34 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !35, i64 0, !17, i64 8, !7, i64 16}
!35 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!36 = !{!"_ZTSSt6atomicIbE", !37, i64 0}
!37 = !{!"_ZTSSt13__atomic_baseIbE", !38, i64 0}
!38 = !{!"bool", !7, i64 0}
!39 = !{!"_ZTSN7UapkiNS4Cert7CerItem4UrisE", !40, i64 0, !40, i64 24, !40, i64 48, !40, i64 72}
!40 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !41, i64 0}
!41 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !42, i64 0}
!42 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !43, i64 0}
!43 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!44 = !{!"_ZTSN7UapkiNS4Cert12VerifyStatusE", !7, i64 0}
!45 = !{!"_ZTSSt6vectorIPN7UapkiNS10AttrCertIdESaIS2_EE", !46, i64 0}
!46 = !{!"_ZTSSt12_Vector_baseIPN7UapkiNS10AttrCertIdESaIS2_EE", !47, i64 0}
!47 = !{!"_ZTSNSt12_Vector_baseIPN7UapkiNS10AttrCertIdESaIS2_EE12_Vector_implE", !48, i64 0}
!48 = !{!"_ZTSNSt12_Vector_baseIPN7UapkiNS10AttrCertIdESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!49 = !{!"_ZTSN7UapkiNS4Cert14CertStatusInfoE", !50, i64 0, !36, i64 4, !6, i64 8, !51, i64 16, !17, i64 24}
!50 = !{!"_ZTSN7UapkiNS4Cert14ValidationTypeE", !7, i64 0}
!51 = !{!"_ZTSN7UapkiNS10CertStatusE", !7, i64 0}
!52 = !{!31, !6, i64 80}
!53 = !{!31, !6, i64 88}
!54 = !{!31, !6, i64 96}
!55 = !{!31, !6, i64 136}
!56 = !{!31, !6, i64 144}
!57 = !{!31, !6, i64 152}
!58 = !{!31, !6, i64 160}
!59 = !{!31, !6, i64 168}
!60 = !{!31, !28, i64 176}
!61 = !{!31, !17, i64 184}
!62 = !{!31, !17, i64 192}
!63 = !{!31, !13, i64 200}


; 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.UapkiNS::SmartBA" = type { 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] }
%"struct.UapkiNS::Cert::CerItem::Uris" = type { %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }

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

declare i32 @__gxx_personality_v0(...)

declare ptr @ba_copy_with_alloc(ptr noundef, i64 noundef, i64 noundef) local_unnamed_addr #0

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

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

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

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

declare void @asn_free(ptr noundef, ptr noundef) local_unnamed_addr #0

declare ptr @get_Certificate_desc() local_unnamed_addr #0

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

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

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

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

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

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

declare void @stacktrace_create(ptr noundef, i64 noundef, i32 noundef, ptr noundef) local_unnamed_addr #0

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

declare void @stacktrace_add(ptr noundef, i64 noundef, i32 noundef) local_unnamed_addr #0

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

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

declare ptr @asn_decode_ba_with_alloc(ptr noundef, ptr noundef) local_unnamed_addr #0

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

declare noundef i32 @_ZN7UapkiNS4Util11oidFromAsn1EPK21ASN__PRIMITIVE_TYPE_sRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0

declare noundef i32 @_ZN7UapkiNS4Util27bitStringEncapOctetFromAsn1EPK12BIT_STRING_sPP12ByteArray_st(ptr noundef, ptr noundef) local_unnamed_addr #0

declare i32 @asn_BITSTRING2ba(ptr noundef, ptr noundef) local_unnamed_addr #0

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

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZN7UapkiNS4CertL20encode_issuer_and_snEPK14TBSCertificatePP12ByteArray_st(ptr noundef, ptr noundef) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN7UapkiNS4Cert9calcKeyIdE7HashAlgPK12ByteArray_stPPS2_(i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #6

declare ptr @get_Name_desc() local_unnamed_addr #0

declare i32 @asn_encode_ba(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN7UapkiNS4Cert9parseCertEPK12ByteArray_stPPNS0_7CerItemE(ptr noundef %0, ptr noundef writeonly %1) local_unnamed_addr #6 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.UapkiNS::SmartBA", align 8
  %4 = alloca %"class.UapkiNS::SmartBA", align 8
  %5 = alloca %"class.UapkiNS::SmartBA", align 8
  %6 = alloca %"class.UapkiNS::SmartBA", align 8
  %7 = alloca %"class.UapkiNS::SmartBA", align 8
  %8 = alloca %"class.UapkiNS::SmartBA", align 8
  %9 = alloca %"class.UapkiNS::SmartBA", align 8
  %10 = alloca %"class.UapkiNS::SmartBA", align 8
  %11 = alloca %"class.UapkiNS::SmartBA", align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca i64, align 8
  %14 = alloca i64, align 8
  %15 = alloca i32, align 4
  %16 = alloca %"struct.UapkiNS::Cert::CerItem::Uris", align 8
  %17 = icmp ne ptr %0, null
  %18 = icmp ne ptr %1, null
  %or.cond = and i1 %17, %18
  br i1 %or.cond, label %19, label %155

19:                                               ; preds = %2
  %20 = tail call ptr @get_Certificate_desc()
  %21 = tail call ptr @asn_decode_ba_with_alloc(ptr noundef %20, ptr noundef nonnull %0)
  %.not = icmp eq ptr %21, null
  br i1 %.not, label %155, label %22

22:                                               ; preds = %19
  %23 = getelementptr inbounds i8, ptr %21, i64 528
  %24 = load ptr, ptr %23, align 8, !tbaa !5
  %.not104 = icmp eq ptr %24, null
  br i1 %.not104, label %155, label %25

25:                                               ; preds = %22
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #8
  call void @_ZN7UapkiNS7SmartBAC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #8
  call void @_ZN7UapkiNS7SmartBAC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #8
  call void @_ZN7UapkiNS7SmartBAC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #8
  call void @_ZN7UapkiNS7SmartBAC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %6)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #8
  call void @_ZN7UapkiNS7SmartBAC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %7)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #8
  call void @_ZN7UapkiNS7SmartBAC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #8
  call void @_ZN7UapkiNS7SmartBAC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #8
  call void @_ZN7UapkiNS7SmartBAC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #8
  call void @_ZN7UapkiNS7SmartBAC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %11)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #8
  store i64 0, ptr %13, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #8
  store i64 0, ptr %14, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #8
  store i32 0, ptr %15, align 4, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %16) #8
  call void @_ZN7UapkiNS4Cert7CerItem4UrisC2Ev(ptr noundef nonnull align 8 dereferenceable(96) %16) #8
  %26 = getelementptr inbounds i8, ptr %21, i64 8
  %27 = call noundef ptr @_ZN7UapkiNS7SmartBAadEv(ptr noundef nonnull align 8 dereferenceable(8) %9)
  %28 = invoke i32 @asn_INTEGER2ba(ptr noundef nonnull %26, ptr noundef %27)
          to label %29 unwind label %31

29:                                               ; preds = %25
  %.not105 = icmp eq i32 %28, 0
  br i1 %.not105, label %33, label %30

30:                                               ; preds = %29
  invoke void @stacktrace_add(ptr noundef nonnull @.str, i64 noundef 623, i32 noundef %28)
          to label %150 unwind label %31

31:                                               ; preds = %152, %150, %129, %119, %114, %113, %109, %108, %105, %104, %100, %95, %94, %90, %89, %84, %83, %80, %79, %76, %71, %70, %67, %66, %61, %59, %58, %53, %51, %50, %46, %45, %41, %40, %35, %33, %30, %25
  %32 = landingpad { ptr, i32 }
          cleanup
  br label %154

33:                                               ; preds = %29
  %34 = invoke ptr @get_Name_desc()
          to label %35 unwind label %31

35:                                               ; preds = %33
  %36 = getelementptr inbounds i8, ptr %21, i64 72
  %37 = call noundef ptr @_ZN7UapkiNS7SmartBAadEv(ptr noundef nonnull align 8 dereferenceable(8) %6)
  %38 = invoke i32 @asn_encode_ba(ptr noundef %34, ptr noundef nonnull %36, ptr noundef %37)
          to label %39 unwind label %31

39:                                               ; preds = %35
  %.not106 = icmp eq i32 %38, 0
  br i1 %.not106, label %41, label %40

40:                                               ; preds = %39
  invoke void @stacktrace_add(ptr noundef nonnull @.str, i64 noundef 624, i32 noundef %38)
          to label %150 unwind label %31

41:                                               ; preds = %39
  %42 = getelementptr inbounds i8, ptr %21, i64 152
  %43 = invoke noundef i32 @_ZN7UapkiNS4Util16pkixTimeFromAsn1EPK8PKIXTimeRm(ptr noundef nonnull %42, ptr noundef nonnull align 8 dereferenceable(8) %14)
          to label %44 unwind label %31

44:                                               ; preds = %41
  %.not107 = icmp eq i32 %43, 0
  br i1 %.not107, label %46, label %45

45:                                               ; preds = %44
  invoke void @stacktrace_add(ptr noundef nonnull @.str, i64 noundef 625, i32 noundef %43)
          to label %150 unwind label %31

46:                                               ; preds = %44
  %47 = getelementptr inbounds i8, ptr %21, i64 224
  %48 = invoke noundef i32 @_ZN7UapkiNS4Util16pkixTimeFromAsn1EPK8PKIXTimeRm(ptr noundef nonnull %47, ptr noundef nonnull align 8 dereferenceable(8) %13)
          to label %49 unwind label %31

49:                                               ; preds = %46
  %.not108 = icmp eq i32 %48, 0
  br i1 %.not108, label %51, label %50

50:                                               ; preds = %49
  invoke void @stacktrace_add(ptr noundef nonnull @.str, i64 noundef 626, i32 noundef %48)
          to label %150 unwind label %31

51:                                               ; preds = %49
  %52 = invoke ptr @get_Name_desc()
          to label %53 unwind label %31

53:                                               ; preds = %51
  %54 = getelementptr inbounds i8, ptr %21, i64 320
  %55 = call noundef ptr @_ZN7UapkiNS7SmartBAadEv(ptr noundef nonnull align 8 dereferenceable(8) %11)
  %56 = invoke i32 @asn_encode_ba(ptr noundef %52, ptr noundef nonnull %54, ptr noundef %55)
          to label %57 unwind label %31

57:                                               ; preds = %53
  %.not109 = icmp eq i32 %56, 0
  br i1 %.not109, label %59, label %58

58:                                               ; preds = %57
  invoke void @stacktrace_add(ptr noundef nonnull @.str, i64 noundef 627, i32 noundef %56)
          to label %150 unwind label %31

59:                                               ; preds = %57
  %60 = invoke ptr @get_SubjectPublicKeyInfo_desc()
          to label %61 unwind label %31

61:                                               ; preds = %59
  %62 = getelementptr inbounds i8, ptr %21, i64 400
  %63 = call noundef ptr @_ZN7UapkiNS7SmartBAadEv(ptr noundef nonnull align 8 dereferenceable(8) %10)
  %64 = invoke i32 @asn_encode_ba(ptr noundef %60, ptr noundef nonnull %62, ptr noundef %63)
          to label %65 unwind label %31

65:                                               ; preds = %61
  %.not110 = icmp eq i32 %64, 0
  br i1 %.not110, label %67, label %66

66:                                               ; preds = %65
  invoke void @stacktrace_add(ptr noundef nonnull @.str, i64 noundef 628, i32 noundef %64)
          to label %150 unwind label %31

67:                                               ; preds = %65
  %68 = invoke noundef i32 @_ZN7UapkiNS4Util11oidFromAsn1EPK21ASN__PRIMITIVE_TYPE_sRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull %62, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %69 unwind label %31

69:                                               ; preds = %67
  %.not111 = icmp eq i32 %68, 0
  br i1 %.not111, label %71, label %70

70:                                               ; preds = %69
  invoke void @stacktrace_add(ptr noundef nonnull @.str, i64 noundef 629, i32 noundef %68)
          to label %150 unwind label %31

71:                                               ; preds = %69
  %72 = invoke noundef zeroext i1 @_ZN6DstuNS16isDstu4145familyERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %73 unwind label %31

73:                                               ; preds = %71
  %74 = getelementptr inbounds i8, ptr %21, i64 448
  %75 = call noundef ptr @_ZN7UapkiNS7SmartBAadEv(ptr noundef nonnull align 8 dereferenceable(8) %8)
  br i1 %72, label %76, label %80

76:                                               ; preds = %73
  %77 = invoke noundef i32 @_ZN7UapkiNS4Util27bitStringEncapOctetFromAsn1EPK12BIT_STRING_sPP12ByteArray_st(ptr noundef nonnull %74, ptr noundef %75)
          to label %78 unwind label %31

78:                                               ; preds = %76
  %.not113 = icmp eq i32 %77, 0
  br i1 %.not113, label %84, label %79

79:                                               ; preds = %78
  invoke void @stacktrace_add(ptr noundef nonnull @.str, i64 noundef 633, i32 noundef %77)
          to label %150 unwind label %31

80:                                               ; preds = %73
  %81 = invoke i32 @asn_BITSTRING2ba(ptr noundef nonnull %74, ptr noundef %75)
          to label %82 unwind label %31

82:                                               ; preds = %80
  %.not112 = icmp eq i32 %81, 0
  br i1 %.not112, label %84, label %83

83:                                               ; preds = %82
  invoke void @stacktrace_add(ptr noundef nonnull @.str, i64 noundef 636, i32 noundef %81)
          to label %150 unwind label %31

84:                                               ; preds = %78, %82
  %.0 = phi i32 [ 4, %78 ], [ 5, %82 ]
  %85 = call noundef ptr @_ZNK7UapkiNS7SmartBA3getEv(ptr noundef nonnull align 8 dereferenceable(8) %8)
  %86 = call noundef ptr @_ZN7UapkiNS7SmartBAadEv(ptr noundef nonnull align 8 dereferenceable(8) %7)
  %87 = invoke noundef i32 @_ZN7UapkiNS4Cert9calcKeyIdE7HashAlgPK12ByteArray_stPPS2_(i32 noundef %.0, ptr noundef %85, ptr noundef %86)
          to label %88 unwind label %31

88:                                               ; preds = %84
  %.not114 = icmp eq i32 %87, 0
  br i1 %.not114, label %90, label %89

89:                                               ; preds = %88
  invoke void @stacktrace_add(ptr noundef nonnull @.str, i64 noundef 639, i32 noundef %87)
          to label %150 unwind label %31

90:                                               ; preds = %88
  %91 = call noundef ptr @_ZN7UapkiNS7SmartBAadEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %92 = invoke noundef i32 @_ZN7UapkiNS4CertL20encode_issuer_and_snEPK14TBSCertificatePP12ByteArray_st(ptr noundef nonnull %21, ptr noundef %91)
          to label %93 unwind label %31

93:                                               ; preds = %90
  %.not115 = icmp eq i32 %92, 0
  br i1 %.not115, label %95, label %94

94:                                               ; preds = %93
  invoke void @stacktrace_add(ptr noundef nonnull @.str, i64 noundef 640, i32 noundef %92)
          to label %150 unwind label %31

95:                                               ; preds = %93
  %96 = invoke noundef i32 @_ZN7UapkiNS15ExtensionHelper11getKeyUsageEPK10ExtensionsRj(ptr noundef nonnull %24, ptr noundef nonnull align 4 dereferenceable(4) %15)
          to label %97 unwind label %31

97:                                               ; preds = %95
  %98 = icmp eq i32 %96, 4150
  br i1 %98, label %99, label %100

99:                                               ; preds = %97
  store i32 0, ptr %15, align 4, !tbaa !24
  br label %100

100:                                              ; preds = %97, %99
  %101 = call noundef ptr @_ZN7UapkiNS7SmartBAadEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %102 = invoke noundef i32 @_ZN7UapkiNS15ExtensionHelper17getAuthorityKeyIdEPK10ExtensionsPP12ByteArray_st(ptr noundef nonnull %24, ptr noundef %101)
          to label %103 unwind label %31

103:                                              ; preds = %100
  %.not116 = icmp eq i32 %102, 0
  br i1 %.not116, label %105, label %104

104:                                              ; preds = %103
  invoke void @stacktrace_add(ptr noundef nonnull @.str, i64 noundef 650, i32 noundef %102)
          to label %150 unwind label %31

105:                                              ; preds = %103
  %106 = invoke noundef i32 @_ZN7UapkiNS4CertL19scan_and_parse_urisERK10ExtensionsRNS0_7CerItem4UrisE(ptr noundef nonnull align 8 dereferenceable(48) %24, ptr noundef nonnull align 8 dereferenceable(96) %16)
          to label %107 unwind label %31

107:                                              ; preds = %105
  %.not117 = icmp eq i32 %106, 0
  br i1 %.not117, label %109, label %108

108:                                              ; preds = %107
  invoke void @stacktrace_add(ptr noundef nonnull @.str, i64 noundef 652, i32 noundef %106)
          to label %150 unwind label %31

109:                                              ; preds = %107
  %110 = invoke ptr @ba_copy_with_alloc(ptr noundef nonnull %0, i64 noundef 0, i64 noundef 0)
          to label %111 unwind label %31

111:                                              ; preds = %109
  %112 = call noundef zeroext i1 @_ZN7UapkiNS7SmartBA3setEP12ByteArray_st(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef %110)
  br i1 %112, label %114, label %113

113:                                              ; preds = %111
  invoke void @stacktrace_create(ptr noundef nonnull @.str, i64 noundef 655, i32 noundef 4097, ptr noundef null)
          to label %150 unwind label %31

114:                                              ; preds = %111
  %115 = invoke noalias noundef nonnull dereferenceable(408) ptr @_Znwm(i64 noundef 408) #9
          to label %116 unwind label %31

116:                                              ; preds = %114
  invoke void @_ZN7UapkiNS4Cert7CerItemC1Ev(ptr noundef nonnull align 8 dereferenceable(401) %115)
          to label %119 unwind label %117

117:                                              ; preds = %116
  %118 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %115, i64 noundef 408) #10
  br label %154

119:                                              ; preds = %116
  %120 = call noundef ptr @_ZN7UapkiNS7SmartBA3popEv(ptr noundef nonnull align 8 dereferenceable(8) %5)
  %121 = getelementptr inbounds i8, ptr %115, i64 72
  store ptr %120, ptr %121, align 8, !tbaa !25
  %122 = getelementptr inbounds i8, ptr %115, i64 80
  store ptr %21, ptr %122, align 8, !tbaa !48
  %123 = call noundef ptr @_ZN7UapkiNS7SmartBA3popEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %124 = getelementptr inbounds i8, ptr %115, i64 88
  store ptr %123, ptr %124, align 8, !tbaa !49
  %125 = call noundef ptr @_ZN7UapkiNS7SmartBA3popEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %126 = getelementptr inbounds i8, ptr %115, i64 96
  store ptr %125, ptr %126, align 8, !tbaa !50
  %127 = getelementptr inbounds i8, ptr %115, i64 104
  %128 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %127, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %129 unwind label %31

129:                                              ; preds = %119
  %130 = call noundef ptr @_ZN7UapkiNS7SmartBA3popEv(ptr noundef nonnull align 8 dereferenceable(8) %9)
  %131 = getelementptr inbounds i8, ptr %115, i64 136
  store ptr %130, ptr %131, align 8, !tbaa !51
  %132 = call noundef ptr @_ZN7UapkiNS7SmartBA3popEv(ptr noundef nonnull align 8 dereferenceable(8) %7)
  %133 = getelementptr inbounds i8, ptr %115, i64 144
  store ptr %132, ptr %133, align 8, !tbaa !52
  %134 = call noundef ptr @_ZN7UapkiNS7SmartBA3popEv(ptr noundef nonnull align 8 dereferenceable(8) %6)
  %135 = getelementptr inbounds i8, ptr %115, i64 152
  store ptr %134, ptr %135, align 8, !tbaa !53
  %136 = call noundef ptr @_ZN7UapkiNS7SmartBA3popEv(ptr noundef nonnull align 8 dereferenceable(8) %11)
  %137 = getelementptr inbounds i8, ptr %115, i64 160
  store ptr %136, ptr %137, align 8, !tbaa !54
  %138 = call noundef ptr @_ZN7UapkiNS7SmartBA3popEv(ptr noundef nonnull align 8 dereferenceable(8) %10)
  %139 = getelementptr inbounds i8, ptr %115, i64 168
  store ptr %138, ptr %139, align 8, !tbaa !55
  %140 = getelementptr inbounds i8, ptr %115, i64 176
  store i32 %.0, ptr %140, align 8, !tbaa !56
  %141 = load i64, ptr %14, align 8, !tbaa !23
  %142 = getelementptr inbounds i8, ptr %115, i64 184
  store i64 %141, ptr %142, align 8, !tbaa !57
  %143 = load i64, ptr %13, align 8, !tbaa !23
  %144 = getelementptr inbounds i8, ptr %115, i64 192
  store i64 %143, ptr %144, align 8, !tbaa !58
  %145 = load i32, ptr %15, align 4, !tbaa !24
  %146 = getelementptr inbounds i8, ptr %115, i64 200
  store i32 %145, ptr %146, align 8, !tbaa !59
  %147 = getelementptr inbounds i8, ptr %115, i64 208
  %148 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN7UapkiNS4Cert7CerItem4UrisaSERKS2_(ptr noundef nonnull align 8 dereferenceable(96) %147, ptr noundef nonnull align 8 dereferenceable(96) %16)
          to label %149 unwind label %31

149:                                              ; preds = %129
  store ptr %115, ptr %1, align 8, !tbaa !60
  br label %150

150:                                              ; preds = %113, %108, %104, %94, %89, %83, %79, %70, %66, %58, %50, %45, %40, %30, %149
  %.085 = phi i32 [ %28, %30 ], [ %38, %40 ], [ %43, %45 ], [ %48, %50 ], [ %56, %58 ], [ %64, %66 ], [ %68, %70 ], [ %77, %79 ], [ %87, %89 ], [ %92, %94 ], [ %102, %104 ], [ %106, %108 ], [ 0, %149 ], [ 4097, %113 ], [ %81, %83 ]
  %.084 = phi ptr [ %21, %30 ], [ %21, %40 ], [ %21, %45 ], [ %21, %50 ], [ %21, %58 ], [ %21, %66 ], [ %21, %70 ], [ %21, %79 ], [ %21, %89 ], [ %21, %94 ], [ %21, %104 ], [ %21, %108 ], [ null, %149 ], [ %21, %113 ], [ %21, %83 ]
  %151 = invoke ptr @get_Certificate_desc()
          to label %152 unwind label %31

152:                                              ; preds = %150
  invoke void @asn_free(ptr noundef %151, ptr noundef %.084)
          to label %153 unwind label %31

153:                                              ; preds = %152
  call void @_ZN7UapkiNS4Cert7CerItem4UrisD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %16) #8
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %16) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #8
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #8
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #8
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #8
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %6) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #8
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #8
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #8
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #8
  br label %155

154:                                              ; preds = %117, %31
  %.pn = phi { ptr, i32 } [ %32, %31 ], [ %118, %117 ]
  call void @_ZN7UapkiNS4Cert7CerItem4UrisD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %16) #8
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %16) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #8
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #8
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #8
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #8
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %6) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #8
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #8
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #8
  call void @_ZN7UapkiNS7SmartBAD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #8
  resume { ptr, i32 } %.pn

155:                                              ; preds = %153, %22, %19, %2
  %.1 = phi i32 [ 4101, %2 ], [ %.085, %153 ], [ 4145, %22 ], [ 4145, %19 ]
  ret i32 %.1
}

declare i32 @asn_INTEGER2ba(ptr noundef, ptr noundef) local_unnamed_addr #0

declare noundef i32 @_ZN7UapkiNS4Util16pkixTimeFromAsn1EPK8PKIXTimeRm(ptr noundef, ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #0

declare ptr @get_SubjectPublicKeyInfo_desc() local_unnamed_addr #0

declare noundef zeroext i1 @_ZN6DstuNS16isDstu4145familyERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0

declare noundef i32 @_ZN7UapkiNS15ExtensionHelper11getKeyUsageEPK10ExtensionsRj(ptr noundef, ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #0

declare noundef i32 @_ZN7UapkiNS15ExtensionHelper17getAuthorityKeyIdEPK10ExtensionsPP12ByteArray_st(ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZN7UapkiNS4CertL19scan_and_parse_urisERK10ExtensionsRNS0_7CerItem4UrisE(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(96)) local_unnamed_addr #6

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

declare void @_ZN7UapkiNS4Cert7CerItemC1Ev(ptr) local_unnamed_addr

attributes #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 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 = { 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 #3 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { 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 #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 = { 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 #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, !7, i64 528}
!6 = !{!"_ZTS14TBSCertificate", !7, i64 0, !10, i64 8, !12, i64 24, !16, i64 72, !18, i64 152, !16, i64 320, !21, i64 400, !7, i64 512, !7, i64 520, !7, i64 528, !13, i64 536}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTS21ASN__PRIMITIVE_TYPE_s", !7, i64 0, !11, i64 8}
!11 = !{!"int", !8, i64 0}
!12 = !{!"_ZTS19AlgorithmIdentifier", !10, i64 0, !7, i64 16, !13, i64 24}
!13 = !{!"_ZTS16asn_struct_ctx_s", !14, i64 0, !14, i64 2, !11, i64 4, !7, i64 8, !15, i64 16}
!14 = !{!"short", !8, i64 0}
!15 = !{!"long", !8, i64 0}
!16 = !{!"_ZTS4Name", !17, i64 0, !8, i64 8, !13, i64 56}
!17 = !{!"_ZTS7Name_PR", !8, i64 0}
!18 = !{!"_ZTS8Validity", !19, i64 0, !19, i64 72, !13, i64 144}
!19 = !{!"_ZTS8PKIXTime", !20, i64 0, !8, i64 8, !13, i64 48}
!20 = !{!"_ZTS11PKIXTime_PR", !8, i64 0}
!21 = !{!"_ZTS20SubjectPublicKeyInfo", !12, i64 0, !22, i64 48, !13, i64 88}
!22 = !{!"_ZTS12BIT_STRING_s", !7, i64 0, !11, i64 8, !11, i64 12, !13, i64 16}
!23 = !{!15, !15, i64 0}
!24 = !{!11, !11, i64 0}
!25 = !{!26, !7, i64 72}
!26 = !{!"_ZTSN7UapkiNS4Cert7CerItemE", !27, i64 0, !29, i64 40, !7, i64 72, !7, i64 80, !7, i64 88, !7, i64 96, !29, i64 104, !7, i64 136, !7, i64 144, !7, i64 152, !7, i64 160, !7, i64 168, !31, i64 176, !15, i64 184, !15, i64 192, !11, i64 200, !32, i64 204, !35, i64 208, !40, i64 304, !41, i64 312, !45, i64 336, !45, i64 368, !32, i64 400}
!27 = !{!"_ZTSSt5mutex", !28, i64 0}
!28 = !{!"_ZTSSt12__mutex_base", !8, i64 0}
!29 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !30, i64 0, !15, i64 8, !8, i64 16}
!30 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !7, i64 0}
!31 = !{!"_ZTS7HashAlg", !8, i64 0}
!32 = !{!"_ZTSSt6atomicIbE", !33, i64 0}
!33 = !{!"_ZTSSt13__atomic_baseIbE", !34, i64 0}
!34 = !{!"bool", !8, i64 0}
!35 = !{!"_ZTSN7UapkiNS4Cert7CerItem4UrisE", !36, i64 0, !36, i64 24, !36, i64 48, !36, i64 72}
!36 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !37, i64 0}
!37 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!40 = !{!"_ZTSN7UapkiNS4Cert12VerifyStatusE", !8, i64 0}
!41 = !{!"_ZTSSt6vectorIPN7UapkiNS10AttrCertIdESaIS2_EE", !42, i64 0}
!42 = !{!"_ZTSSt12_Vector_baseIPN7UapkiNS10AttrCertIdESaIS2_EE", !43, i64 0}
!43 = !{!"_ZTSNSt12_Vector_baseIPN7UapkiNS10AttrCertIdESaIS2_EE12_Vector_implE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseIPN7UapkiNS10AttrCertIdESaIS2_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!45 = !{!"_ZTSN7UapkiNS4Cert14CertStatusInfoE", !46, i64 0, !32, i64 4, !7, i64 8, !47, i64 16, !15, i64 24}
!46 = !{!"_ZTSN7UapkiNS4Cert14ValidationTypeE", !8, i64 0}
!47 = !{!"_ZTSN7UapkiNS10CertStatusE", !8, i64 0}
!48 = !{!26, !7, i64 80}
!49 = !{!26, !7, i64 88}
!50 = !{!26, !7, i64 96}
!51 = !{!26, !7, i64 136}
!52 = !{!26, !7, i64 144}
!53 = !{!26, !7, i64 152}
!54 = !{!26, !7, i64 160}
!55 = !{!26, !7, i64 168}
!56 = !{!26, !31, i64 176}
!57 = !{!26, !15, i64 184}
!58 = !{!26, !15, i64 192}
!59 = !{!26, !11, i64 200}
!60 = !{!7, !7, i64 0}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass,TailCallElimPass