; LLVM IR from specinfo-ua/UAPKI :: library/uapki/src/api (sign)

; 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::CertValidator::CertValidator" = type { ptr, ptr, ptr, %"class.std::vector", %"class.std::vector.0", %"class.UapkiNS::SmartBA", %"class.UapkiNS::SmartBA" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<UapkiNS::CertValidator::ExpectedCertItem *, std::allocator<UapkiNS::CertValidator::ExpectedCertItem *>>::_Vector_impl" }
%"struct.std::_Vector_base<UapkiNS::CertValidator::ExpectedCertItem *, std::allocator<UapkiNS::CertValidator::ExpectedCertItem *>>::_Vector_impl" = type { %"struct.std::_Vector_base<UapkiNS::CertValidator::ExpectedCertItem *, std::allocator<UapkiNS::CertValidator::ExpectedCertItem *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<UapkiNS::CertValidator::ExpectedCertItem *, std::allocator<UapkiNS::CertValidator::ExpectedCertItem *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<UapkiNS::CertValidator::ExpectedCrlItem *, std::allocator<UapkiNS::CertValidator::ExpectedCrlItem *>>::_Vector_impl" }
%"struct.std::_Vector_base<UapkiNS::CertValidator::ExpectedCrlItem *, std::allocator<UapkiNS::CertValidator::ExpectedCrlItem *>>::_Vector_impl" = type { %"struct.std::_Vector_base<UapkiNS::CertValidator::ExpectedCrlItem *, std::allocator<UapkiNS::CertValidator::ExpectedCrlItem *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<UapkiNS::CertValidator::ExpectedCrlItem *, std::allocator<UapkiNS::CertValidator::ExpectedCrlItem *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.UapkiNS::SmartBA" = type { ptr }
%struct.SignOptions = type { i8 }
%"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams" = type { i32, i8, i8, i32, i32, %"struct.UapkiNS::AlgorithmIdentifier", %"struct.UapkiNS::AlgorithmIdentifier", %"struct.UapkiNS::Doc::Sign::SigningDoc::CerDataItem", %"class.UapkiNS::SmartBA", i8, i8, i8, i8, i8, i8, %"struct.UapkiNS::LibraryConfig::OcspParams", %"struct.UapkiNS::LibraryConfig::TspParams", %"struct.UapkiNS::Attribute", %"struct.UapkiNS::Attribute", %"class.std::vector.18" }
%"struct.UapkiNS::AlgorithmIdentifier" = type { %"class.std::__cxx11::basic_string", ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"struct.UapkiNS::Doc::Sign::SigningDoc::CerDataItem" = type { ptr, ptr, i8, %"class.UapkiNS::SmartBA", %"class.UapkiNS::SmartBA", %"class.UapkiNS::SmartBA", ptr, ptr }
%"struct.UapkiNS::LibraryConfig::OcspParams" = type { i64 }
%"struct.UapkiNS::LibraryConfig::TspParams" = type { i8, i8, i64, %"class.std::__cxx11::basic_string", %"class.std::vector.8" }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = 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.UapkiNS::Attribute" = type { %"class.std::__cxx11::basic_string", ptr }
%"class.std::vector.18" = type { %"struct.std::_Vector_base.19" }
%"struct.std::_Vector_base.19" = type { %"struct.std::_Vector_base<UapkiNS::Doc::Sign::SigningDoc::CerDataItem *, std::allocator<UapkiNS::Doc::Sign::SigningDoc::CerDataItem *>>::_Vector_impl" }
%"struct.std::_Vector_base<UapkiNS::Doc::Sign::SigningDoc::CerDataItem *, std::allocator<UapkiNS::Doc::Sign::SigningDoc::CerDataItem *>>::_Vector_impl" = type { %"struct.std::_Vector_base<UapkiNS::Doc::Sign::SigningDoc::CerDataItem *, std::allocator<UapkiNS::Doc::Sign::SigningDoc::CerDataItem *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<UapkiNS::Doc::Sign::SigningDoc::CerDataItem *, std::allocator<UapkiNS::Doc::Sign::SigningDoc::CerDataItem *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.23" = type { %"struct.std::_Vector_base.24" }
%"struct.std::_Vector_base.24" = type { %"struct.std::_Vector_base<UapkiNS::Doc::Sign::SigningDoc, std::allocator<UapkiNS::Doc::Sign::SigningDoc>>::_Vector_impl" }
%"struct.std::_Vector_base<UapkiNS::Doc::Sign::SigningDoc, std::allocator<UapkiNS::Doc::Sign::SigningDoc>>::_Vector_impl" = type { %"struct.std::_Vector_base<UapkiNS::Doc::Sign::SigningDoc, std::allocator<UapkiNS::Doc::Sign::SigningDoc>>::_Vector_impl_data" }
%"struct.std::_Vector_base<UapkiNS::Doc::Sign::SigningDoc, std::allocator<UapkiNS::Doc::Sign::SigningDoc>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.28" = type { %"struct.std::_Vector_base.29" }
%"struct.std::_Vector_base.29" = type { %"struct.std::_Vector_base<ByteArray_st *, std::allocator<ByteArray_st *>>::_Vector_impl" }
%"struct.std::_Vector_base<ByteArray_st *, std::allocator<ByteArray_st *>>::_Vector_impl" = type { %"struct.std::_Vector_base<ByteArray_st *, std::allocator<ByteArray_st *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ByteArray_st *, std::allocator<ByteArray_st *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.UapkiNS::VectorBA" = type { %"class.std::vector.28" }
%"class.std::allocator.5" = type { i8 }
%"class.std::vector.13" = type { %"struct.std::_Vector_base.14" }
%"struct.std::_Vector_base.14" = type { %"struct.std::_Vector_base<UapkiNS::Cert::CerItem *, std::allocator<UapkiNS::Cert::CerItem *>>::_Vector_impl" }
%"struct.std::_Vector_base<UapkiNS::Cert::CerItem *, std::allocator<UapkiNS::Cert::CerItem *>>::_Vector_impl" = type { %"struct.std::_Vector_base<UapkiNS::Cert::CerItem *, std::allocator<UapkiNS::Cert::CerItem *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<UapkiNS::Cert::CerItem *, std::allocator<UapkiNS::Cert::CerItem *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.38" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.49" = type { ptr }
%"struct.UapkiNS::Cert::CerItem::Uris" = type { %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8" }
%"class.UapkiNS::Doc::Sign::SigningDoc" = type { ptr, %"class.UapkiNS::Pkcs7::SignedDataBuilder", ptr, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i8, %"class.UapkiNS::ContentHasher", %"class.UapkiNS::SmartBA", %"class.UapkiNS::SmartBA", %"class.UapkiNS::SmartBA", %"class.std::__cxx11::basic_string", %"class.UapkiNS::Pkcs7::ArchiveTs3Helper", %"class.std::vector.18", %"class.std::vector.44", %"class.std::vector.44" }
%"class.UapkiNS::Pkcs7::SignedDataBuilder" = type { ptr, %"class.std::vector.39", ptr }
%"class.std::vector.39" = type { %"struct.std::_Vector_base.40" }
%"struct.std::_Vector_base.40" = type { %"struct.std::_Vector_base<UapkiNS::Pkcs7::SignedDataBuilder::SignerInfo *, std::allocator<UapkiNS::Pkcs7::SignedDataBuilder::SignerInfo *>>::_Vector_impl" }
%"struct.std::_Vector_base<UapkiNS::Pkcs7::SignedDataBuilder::SignerInfo *, std::allocator<UapkiNS::Pkcs7::SignedDataBuilder::SignerInfo *>>::_Vector_impl" = type { %"struct.std::_Vector_base<UapkiNS::Pkcs7::SignedDataBuilder::SignerInfo *, std::allocator<UapkiNS::Pkcs7::SignedDataBuilder::SignerInfo *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<UapkiNS::Pkcs7::SignedDataBuilder::SignerInfo *, std::allocator<UapkiNS::Pkcs7::SignedDataBuilder::SignerInfo *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.UapkiNS::ContentHasher" = type { i32, i32, ptr, i8, %"class.std::__cxx11::basic_string", ptr, i64, %"class.UapkiNS::SmartBA" }
%"class.UapkiNS::Pkcs7::ArchiveTs3Helper" = type { ptr, i32, %"struct.UapkiNS::Pkcs7::ArchiveTs3Helper::ATSHashIndex", %struct.anon, %"class.UapkiNS::SmartBA" }
%"struct.UapkiNS::Pkcs7::ArchiveTs3Helper::ATSHashIndex" = type { %"class.UapkiNS::VectorBA", %"class.UapkiNS::VectorBA", %"class.UapkiNS::VectorBA" }
%struct.anon = type { %"class.UapkiNS::SmartBA", %"class.UapkiNS::SmartBA", %"class.UapkiNS::SmartBA", %"class.UapkiNS::SmartBA" }
%"class.std::vector.44" = type { %"struct.std::_Vector_base.45" }
%"struct.std::_Vector_base.45" = type { %"struct.std::_Vector_base<UapkiNS::Attribute *, std::allocator<UapkiNS::Attribute *>>::_Vector_impl" }
%"struct.std::_Vector_base<UapkiNS::Attribute *, std::allocator<UapkiNS::Attribute *>>::_Vector_impl" = type { %"struct.std::_Vector_base<UapkiNS::Attribute *, std::allocator<UapkiNS::Attribute *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<UapkiNS::Attribute *, std::allocator<UapkiNS::Attribute *>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@.str = external hidden unnamed_addr constant [11 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [13 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local i32 @uapki_sign(ptr noundef %0, ptr noundef %1) #0 personality ptr @__gxx_personality_v0 {
  %3 = alloca i32, align 4
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca %"class.UapkiNS::CertValidator::CertValidator", align 8
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca %struct.SignOptions, align 1
  %15 = alloca %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", align 8
  %16 = alloca i64, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca %"class.std::vector.23", align 8
  %20 = alloca %"class.std::vector.28", align 8
  %21 = alloca %"class.UapkiNS::VectorBA", align 8
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::allocator.5", align 1
  %24 = alloca ptr, align 8
  %25 = alloca %"class.std::vector.13", align 8
  %26 = alloca ptr, align 8
  %27 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %28 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca %"class.__gnu_cxx::__normal_iterator.38", align 8
  %32 = alloca %"class.__gnu_cxx::__normal_iterator.38", align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca i64, align 8
  %37 = alloca ptr, align 8
  %38 = alloca i64, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca i64, align 8
  %42 = alloca ptr, align 8
  %43 = alloca %"class.std::vector.13", align 8
  %44 = alloca ptr, align 8
  %45 = alloca %"class.std::vector.18", align 8
  %46 = alloca %"class.__gnu_cxx::__normal_iterator.38", align 8
  %47 = alloca %"class.__gnu_cxx::__normal_iterator.38", align 8
  %48 = alloca ptr, align 8
  %49 = alloca ptr, align 8
  %50 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %51 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %52 = alloca ptr, align 8
  %53 = alloca %"class.std::vector.18", align 8
  %54 = alloca ptr, align 8
  %55 = alloca %"class.__gnu_cxx::__normal_iterator.49", align 8
  %56 = alloca %"class.__gnu_cxx::__normal_iterator.49", align 8
  %57 = alloca ptr, align 8
  %58 = alloca i64, align 8
  %59 = alloca ptr, align 8
  %60 = alloca ptr, align 8
  %61 = alloca i64, align 8
  %62 = alloca i64, align 8
  %63 = alloca ptr, align 8
  %64 = alloca ptr, align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 88, ptr %6) #7
  call void @_ZN7UapkiNS13CertValidator13CertValidatorC1Ev(ptr noundef nonnull align 8 dereferenceable(88) %6)
  %65 = invoke noundef ptr @_ZN7UapkiNS10get_configEv()
          to label %66 unwind label %74

66:                                               ; preds = %2
  %67 = invoke noundef ptr @_ZN7UapkiNS12get_cerstoreEv()
          to label %68 unwind label %74

68:                                               ; preds = %66
  %69 = invoke noundef ptr @_ZN7UapkiNS12get_crlstoreEv()
          to label %70 unwind label %74

70:                                               ; preds = %68
  %71 = invoke noundef zeroext i1 @_ZN7UapkiNS13CertValidator13CertValidator4initEPNS_13LibraryConfigEPNS_4Cert8CerStoreEPNS_3Crl8CrlStoreE(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef %65, ptr noundef %67, ptr noundef %69)
          to label %72 unwind label %74

72:                                               ; preds = %70
  br i1 %71, label %78, label %73

73:                                               ; preds = %72
  store i32 4097, ptr %3, align 4
  store i32 1, ptr %9, align 4
  br label %1250

74:                                               ; preds = %80, %78, %70, %68, %66, %2
  %75 = landingpad { ptr, i32 }
          cleanup
  %76 = extractvalue { ptr, i32 } %75, 0
  store ptr %76, ptr %7, align 8
  %77 = extractvalue { ptr, i32 } %75, 1
  store i32 %77, ptr %8, align 4
  br label %1252

78:                                               ; preds = %72
  %79 = invoke noundef ptr @_ZNK7UapkiNS13CertValidator13CertValidator12getLibConfigEv(ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %80 unwind label %74

80:                                               ; preds = %78
  %81 = invoke noundef zeroext i1 @_ZNK7UapkiNS13LibraryConfig13isInitializedEv(ptr noundef nonnull align 8 dereferenceable(97) %79)
          to label %82 unwind label %74

82:                                               ; preds = %80
  br i1 %81, label %84, label %83

83:                                               ; preds = %82
  store i32 4105, ptr %3, align 4
  store i32 1, ptr %9, align 4
  br label %1250

84:                                               ; preds = %82
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #7
  %85 = invoke noundef ptr @_ZN11CmProviders13openedStorageEv()
          to label %86 unwind label %90

86:                                               ; preds = %84
  store ptr %85, ptr %10, align 8, !tbaa !5
  %87 = load ptr, ptr %10, align 8, !tbaa !5
  %88 = icmp ne ptr %87, null
  br i1 %88, label %94, label %89

89:                                               ; preds = %86
  store i32 4121, ptr %3, align 4
  store i32 1, ptr %9, align 4
  br label %1248

90:                                               ; preds = %94, %84
  %91 = landingpad { ptr, i32 }
          cleanup
  %92 = extractvalue { ptr, i32 } %91, 0
  store ptr %92, ptr %7, align 8
  %93 = extractvalue { ptr, i32 } %91, 1
  store i32 %93, ptr %8, align 4
  br label %1249

94:                                               ; preds = %86
  %95 = load ptr, ptr %10, align 8, !tbaa !5
  %96 = invoke noundef zeroext i1 @_ZNK14CmStorageProxy13keyIsSelectedEv(ptr noundef nonnull align 8 dereferenceable(168) %95)
          to label %97 unwind label %90

97:                                               ; preds = %94
  br i1 %96, label %99, label %98

98:                                               ; preds = %97
  store i32 4108, ptr %3, align 4
  store i32 1, ptr %9, align 4
  br label %1248

99:                                               ; preds = %97
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #7
  store i32 0, ptr %11, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #7
  %100 = invoke noundef ptr @_ZNK7UapkiNS13CertValidator13CertValidator11getCerStoreEv(ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %101 unwind label %118

101:                                              ; preds = %99
  store ptr %100, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #7
  %102 = invoke noundef ptr @_ZNK7UapkiNS13CertValidator13CertValidator12getLibConfigEv(ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %103 unwind label %122

103:                                              ; preds = %101
  store ptr %102, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #7
  invoke void @_ZN11SignOptionsC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %104 unwind label %126

104:                                              ; preds = %103
  call void @llvm.lifetime.start.p0(i64 360, ptr %15) #7
  invoke void @_ZN7UapkiNS3Doc4Sign10SigningDoc10SignParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(360) %15)
          to label %105 unwind label %130

105:                                              ; preds = %104
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #7
  store i64 0, ptr %16, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #7
  store ptr null, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #7
  store ptr null, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %19) #7
  call void @_ZNSt6vectorIN7UapkiNS3Doc4Sign10SigningDocESaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %20) #7
  call void @_ZNSt6vectorIP12ByteArray_stSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %21) #7
  invoke void @_ZN7UapkiNS8VectorBAC2Em(ptr noundef nonnull align 8 dereferenceable(24) %21, i64 noundef 0)
          to label %106 unwind label %134

106:                                              ; preds = %105
  br label %107

107:                                              ; preds = %106
  %108 = load ptr, ptr %4, align 8, !tbaa !5
  %109 = invoke ptr @json_object_get_object(ptr noundef %108, ptr noundef @.str)
          to label %110 unwind label %138

110:                                              ; preds = %107
  %111 = invoke noundef i32 @_ZL17parse_sign_paramsP13json_object_tRN7UapkiNS3Doc4Sign10SigningDoc10SignParamsE(ptr noundef %109, ptr noundef nonnull align 8 dereferenceable(360) %15)
          to label %112 unwind label %138

112:                                              ; preds = %110
  store i32 %111, ptr %11, align 4, !tbaa !9
  %113 = load i32, ptr %11, align 4, !tbaa !9
  %114 = icmp ne i32 %113, 0
  br i1 %114, label %115, label %142

115:                                              ; preds = %112
  %116 = load i32, ptr %11, align 4, !tbaa !9
  invoke void @stacktrace_add(ptr noundef @.str.1, i64 noundef 518, i32 noundef %116)
          to label %117 unwind label %138

117:                                              ; preds = %115
  br label %1229

118:                                              ; preds = %99
  %119 = landingpad { ptr, i32 }
          cleanup
  %120 = extractvalue { ptr, i32 } %119, 0
  store ptr %120, ptr %7, align 8
  %121 = extractvalue { ptr, i32 } %119, 1
  store i32 %121, ptr %8, align 4
  br label %1247

122:                                              ; preds = %101
  %123 = landingpad { ptr, i32 }
          cleanup
  %124 = extractvalue { ptr, i32 } %123, 0
  store ptr %124, ptr %7, align 8
  %125 = extractvalue { ptr, i32 } %123, 1
  store i32 %125, ptr %8, align 4
  br label %1246

126:                                              ; preds = %103
  %127 = landingpad { ptr, i32 }
          cleanup
  %128 = extractvalue { ptr, i32 } %127, 0
  store ptr %128, ptr %7, align 8
  %129 = extractvalue { ptr, i32 } %127, 1
  store i32 %129, ptr %8, align 4
  br label %1245

130:                                              ; preds = %104
  %131 = landingpad { ptr, i32 }
          cleanup
  %132 = extractvalue { ptr, i32 } %131, 0
  store ptr %132, ptr %7, align 8
  %133 = extractvalue { ptr, i32 } %131, 1
  store i32 %133, ptr %8, align 4
  br label %1244

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

138:                                              ; preds = %1235, %1232, %1166, %1161, %1158, %1128, %1120, %795, %787, %617, %337, %331, %324, %318, %313, %292, %285, %281, %263, %251, %217, %206, %201, %196, %190, %184, %174, %171, %165, %160, %148, %147, %144, %115, %110, %107
  %139 = landingpad { ptr, i32 }
          cleanup
  %140 = extractvalue { ptr, i32 } %139, 0
  store ptr %140, ptr %7, align 8
  %141 = extractvalue { ptr, i32 } %139, 1
  store i32 %141, ptr %8, align 4
  br label %1242

142:                                              ; preds = %112
  br label %143

143:                                              ; preds = %142
  br label %144

144:                                              ; preds = %143
  %145 = load ptr, ptr %4, align 8, !tbaa !5
  %146 = invoke ptr @json_object_get_object(ptr noundef %145, ptr noundef @.str.2)
          to label %147 unwind label %138

147:                                              ; preds = %144
  invoke void @_ZL18parse_sign_optionsP13json_object_tRN7UapkiNS3Doc4Sign10SigningDoc10SignParamsER11SignOptions(ptr noundef %146, ptr noundef nonnull align 8 dereferenceable(360) %15, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %148 unwind label %138

148:                                              ; preds = %147
  %149 = load ptr, ptr %13, align 8, !tbaa !5
  %150 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7UapkiNS13LibraryConfig7getOcspEv(ptr noundef nonnull align 8 dereferenceable(97) %149)
          to label %151 unwind label %138

151:                                              ; preds = %148
  %152 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 15
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %152, ptr align 8 %150, i64 8, i1 false), !tbaa.struct !13
  %153 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 12
  %154 = load i8, ptr %153, align 1, !tbaa !14, !range !35, !noundef !36
  %155 = trunc i8 %154 to i1
  br i1 %155, label %160, label %156

156:                                              ; preds = %151
  %157 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 13
  %158 = load i8, ptr %157, align 4, !tbaa !37, !range !35, !noundef !36
  %159 = trunc i8 %158 to i1
  br i1 %159, label %160, label %171

160:                                              ; preds = %156, %151
  %161 = load ptr, ptr %13, align 8, !tbaa !5
  %162 = invoke noundef zeroext i1 @_ZNK7UapkiNS13LibraryConfig10getOfflineEv(ptr noundef nonnull align 8 dereferenceable(97) %161)
          to label %163 unwind label %138

163:                                              ; preds = %160
  br i1 %162, label %164, label %170

164:                                              ; preds = %163
  br label %165

165:                                              ; preds = %164
  store i32 4120, ptr %11, align 4, !tbaa !9
  %166 = load i32, ptr %11, align 4, !tbaa !9
  invoke void @stacktrace_create(ptr noundef @.str.1, i64 noundef 524, i32 noundef %166, ptr noundef null)
          to label %167 unwind label %138

167:                                              ; preds = %165
  br label %1229

168:                                              ; No predecessors!
  br label %169

169:                                              ; preds = %168
  br label %170

170:                                              ; preds = %169, %163
  br label %171

171:                                              ; preds = %170, %156
  %172 = load ptr, ptr %4, align 8, !tbaa !5
  %173 = invoke ptr @json_object_get_array(ptr noundef %172, ptr noundef @.str.3)
          to label %174 unwind label %138

174:                                              ; preds = %171
  store ptr %173, ptr %18, align 8, !tbaa !5
  %175 = load ptr, ptr %18, align 8, !tbaa !5
  %176 = invoke i64 @json_array_get_count(ptr noundef %175)
          to label %177 unwind label %138

177:                                              ; preds = %174
  store i64 %176, ptr %16, align 8, !tbaa !11
  %178 = load i64, ptr %16, align 8, !tbaa !11
  %179 = icmp eq i64 %178, 0
  br i1 %179, label %183, label %180

180:                                              ; preds = %177
  %181 = load i64, ptr %16, align 8, !tbaa !11
  %182 = icmp ugt i64 %181, 100
  br i1 %182, label %183, label %189

183:                                              ; preds = %180, %177
  br label %184

184:                                              ; preds = %183
  store i32 4101, ptr %11, align 4, !tbaa !9
  %185 = load i32, ptr %11, align 4, !tbaa !9
  invoke void @stacktrace_create(ptr noundef @.str.1, i64 noundef 531, i32 noundef %185, ptr noundef null)
          to label %186 unwind label %138

186:                                              ; preds = %184
  br label %1229

187:                                              ; No predecessors!
  br label %188

188:                                              ; preds = %187
  br label %189

189:                                              ; preds = %188, %180
  br label %190

190:                                              ; preds = %189
  %191 = load ptr, ptr %10, align 8, !tbaa !5
  %192 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 6
  %193 = getelementptr inbounds %"struct.UapkiNS::AlgorithmIdentifier", ptr %192, i32 0, i32 0
  %194 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 8
  %195 = invoke noundef ptr @_ZN7UapkiNS7SmartBAadEv(ptr noundef nonnull align 8 dereferenceable(8) %194)
          to label %196 unwind label %138

196:                                              ; preds = %190
  %197 = invoke noundef i32 @_ZL27get_info_signalgo_and_keyidR14CmStorageProxyRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPP12ByteArray_st(ptr noundef nonnull align 8 dereferenceable(168) %191, ptr noundef nonnull align 8 dereferenceable(32) %193, ptr noundef %195)
          to label %198 unwind label %138

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

201:                                              ; preds = %198
  %202 = load i32, ptr %11, align 4, !tbaa !9
  invoke void @stacktrace_add(ptr noundef @.str.1, i64 noundef 534, i32 noundef %202)
          to label %203 unwind label %138

203:                                              ; preds = %201
  br label %1229

204:                                              ; preds = %198
  br label %205

205:                                              ; preds = %204
  br label %206

206:                                              ; preds = %205
  %207 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 6
  %208 = getelementptr inbounds %"struct.UapkiNS::AlgorithmIdentifier", ptr %207, i32 0, i32 0
  %209 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %208) #7
  %210 = invoke i32 @hash_from_oid(ptr noundef %209)
          to label %211 unwind label %138

211:                                              ; preds = %206
  %212 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 4
  store i32 %210, ptr %212, align 4, !tbaa !38
  %213 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 4
  %214 = load i32, ptr %213, align 4, !tbaa !38
  %215 = icmp eq i32 %214, 0
  br i1 %215, label %216, label %222

216:                                              ; preds = %211
  br label %217

217:                                              ; preds = %216
  store i32 4110, ptr %11, align 4, !tbaa !9
  %218 = load i32, ptr %11, align 4, !tbaa !9
  invoke void @stacktrace_create(ptr noundef @.str.1, i64 noundef 537, i32 noundef %218, ptr noundef null)
          to label %219 unwind label %138

219:                                              ; preds = %217
  br label %1229

220:                                              ; No predecessors!
  br label %221

221:                                              ; preds = %220
  br label %222

222:                                              ; preds = %221, %211
  %223 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 5
  %224 = getelementptr inbounds %"struct.UapkiNS::AlgorithmIdentifier", ptr %223, i32 0, i32 0
  %225 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %224) #7
  br i1 %225, label %230, label %226

226:                                              ; preds = %222
  %227 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 0
  %228 = load i32, ptr %227, align 8, !tbaa !39
  %229 = icmp eq i32 %228, 1
  br i1 %229, label %230, label %251

230:                                              ; preds = %226, %222
  %231 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 4
  %232 = load i32, ptr %231, align 4, !tbaa !38
  %233 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 3
  store i32 %232, ptr %233, align 8, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #7
  %234 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 3
  %235 = load i32, ptr %234, align 8, !tbaa !40
  %236 = invoke ptr @hash_to_oid(i32 noundef %235)
          to label %237 unwind label %242

237:                                              ; preds = %230
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef %236, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %238 unwind label %246

238:                                              ; preds = %237
  %239 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 5
  %240 = getelementptr inbounds %"struct.UapkiNS::AlgorithmIdentifier", ptr %239, i32 0, i32 0
  %241 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %240, ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #7
  br label %258

242:                                              ; preds = %230
  %243 = landingpad { ptr, i32 }
          cleanup
  %244 = extractvalue { ptr, i32 } %243, 0
  store ptr %244, ptr %7, align 8
  %245 = extractvalue { ptr, i32 } %243, 1
  store i32 %245, ptr %8, align 4
  br label %250

246:                                              ; preds = %237
  %247 = landingpad { ptr, i32 }
          cleanup
  %248 = extractvalue { ptr, i32 } %247, 0
  store ptr %248, ptr %7, align 8
  %249 = extractvalue { ptr, i32 } %247, 1
  store i32 %249, ptr %8, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #7
  br label %250

250:                                              ; preds = %246, %242
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #7
  br label %1242

251:                                              ; preds = %226
  %252 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 5
  %253 = getelementptr inbounds %"struct.UapkiNS::AlgorithmIdentifier", ptr %252, i32 0, i32 0
  %254 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %253) #7
  %255 = invoke i32 @hash_from_oid(ptr noundef %254)
          to label %256 unwind label %138

256:                                              ; preds = %251
  %257 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 3
  store i32 %255, ptr %257, align 8, !tbaa !40
  br label %258

258:                                              ; preds = %256, %238
  %259 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 3
  %260 = load i32, ptr %259, align 8, !tbaa !40
  %261 = icmp eq i32 %260, 0
  br i1 %261, label %262, label %268

262:                                              ; preds = %258
  br label %263

263:                                              ; preds = %262
  store i32 4110, ptr %11, align 4, !tbaa !9
  %264 = load i32, ptr %11, align 4, !tbaa !9
  invoke void @stacktrace_create(ptr noundef @.str.1, i64 noundef 548, i32 noundef %264, ptr noundef null)
          to label %265 unwind label %138

265:                                              ; preds = %263
  br label %1229

266:                                              ; No predecessors!
  br label %267

267:                                              ; preds = %266
  br label %268

268:                                              ; preds = %267, %258
  %269 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 0
  %270 = load i32, ptr %269, align 8, !tbaa !39
  %271 = icmp ne i32 %270, 1
  br i1 %271, label %272, label %513

272:                                              ; preds = %268
  %273 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 14
  %274 = load i8, ptr %273, align 1, !tbaa !41, !range !35, !noundef !36
  %275 = trunc i8 %274 to i1
  br i1 %275, label %276, label %280

276:                                              ; preds = %272
  %277 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 10
  %278 = load i8, ptr %277, align 1, !tbaa !42, !range !35, !noundef !36
  %279 = trunc i8 %278 to i1
  br i1 %279, label %280, label %513

280:                                              ; preds = %276, %272
  br label %281

281:                                              ; preds = %280
  %282 = load ptr, ptr %12, align 8, !tbaa !5
  %283 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 8
  %284 = invoke noundef ptr @_ZNK7UapkiNS7SmartBA3getEv(ptr noundef nonnull align 8 dereferenceable(8) %283)
          to label %285 unwind label %138

285:                                              ; preds = %281
  %286 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 7
  %287 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::CerDataItem", ptr %286, i32 0, i32 0
  %288 = invoke noundef i32 @_ZN7UapkiNS4Cert8CerStore14getCertByKeyIdEPK12ByteArray_stPPNS0_7CerItemE(ptr noundef nonnull align 8 dereferenceable(96) %282, ptr noundef %284, ptr noundef %287)
          to label %289 unwind label %138

289:                                              ; preds = %285
  store i32 %288, ptr %11, align 4, !tbaa !9
  %290 = load i32, ptr %11, align 4, !tbaa !9
  %291 = icmp ne i32 %290, 0
  br i1 %291, label %292, label %295

292:                                              ; preds = %289
  %293 = load i32, ptr %11, align 4, !tbaa !9
  invoke void @stacktrace_add(ptr noundef @.str.1, i64 noundef 552, i32 noundef %293)
          to label %294 unwind label %138

294:                                              ; preds = %292
  br label %1229

295:                                              ; preds = %289
  br label %296

296:                                              ; preds = %295
  br label %297

297:                                              ; preds = %296
  %298 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 2
  %299 = load i8, ptr %298, align 1, !tbaa !43, !range !35, !noundef !36
  %300 = trunc i8 %299 to i1
  br i1 %300, label %301, label %512

301:                                              ; preds = %297
  %302 = getelementptr inbounds %struct.SignOptions, ptr %14, i32 0, i32 0
  %303 = load i8, ptr %302, align 1, !tbaa !44, !range !35, !noundef !36
  %304 = trunc i8 %303 to i1
  br i1 %304, label %344, label %305

305:                                              ; preds = %301
  %306 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 0
  %307 = load i32, ptr %306, align 8, !tbaa !39
  %308 = icmp eq i32 %307, 5
  br i1 %308, label %317, label %309

309:                                              ; preds = %305
  %310 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 0
  %311 = load i32, ptr %310, align 8, !tbaa !39
  %312 = icmp eq i32 %311, 3
  br i1 %312, label %313, label %330

313:                                              ; preds = %309
  %314 = load ptr, ptr %13, align 8, !tbaa !5
  %315 = invoke noundef zeroext i1 @_ZNK7UapkiNS13LibraryConfig10getOfflineEv(ptr noundef nonnull align 8 dereferenceable(97) %314)
          to label %316 unwind label %138

316:                                              ; preds = %313
  br i1 %315, label %317, label %330

317:                                              ; preds = %316, %305
  br label %318

318:                                              ; preds = %317
  %319 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 7
  %320 = invoke noundef i32 @_ZL22get_cert_status_by_crlRN7UapkiNS13CertValidator13CertValidatorERNS_3Doc4Sign10SigningDoc11CerDataItemE(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull align 8 dereferenceable(64) %319)
          to label %321 unwind label %138

321:                                              ; preds = %318
  store i32 %320, ptr %11, align 4, !tbaa !9
  %322 = load i32, ptr %11, align 4, !tbaa !9
  %323 = icmp ne i32 %322, 0
  br i1 %323, label %324, label %327

324:                                              ; preds = %321
  %325 = load i32, ptr %11, align 4, !tbaa !9
  invoke void @stacktrace_add(ptr noundef @.str.1, i64 noundef 559, i32 noundef %325)
          to label %326 unwind label %138

326:                                              ; preds = %324
  br label %1229

327:                                              ; preds = %321
  br label %328

328:                                              ; preds = %327
  br label %329

329:                                              ; preds = %328
  br label %343

330:                                              ; preds = %316, %309
  br label %331

331:                                              ; preds = %330
  %332 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 7
  %333 = invoke noundef i32 @_ZL23get_cert_status_by_ocspRN7UapkiNS13CertValidator13CertValidatorERNS_3Doc4Sign10SigningDoc10SignParamsERNS5_11CerDataItemE(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull align 8 dereferenceable(360) %15, ptr noundef nonnull align 8 dereferenceable(64) %332)
          to label %334 unwind label %138

334:                                              ; preds = %331
  store i32 %333, ptr %11, align 4, !tbaa !9
  %335 = load i32, ptr %11, align 4, !tbaa !9
  %336 = icmp ne i32 %335, 0
  br i1 %336, label %337, label %340

337:                                              ; preds = %334
  %338 = load i32, ptr %11, align 4, !tbaa !9
  invoke void @stacktrace_add(ptr noundef @.str.1, i64 noundef 562, i32 noundef %338)
          to label %339 unwind label %138

339:                                              ; preds = %337
  br label %1229

340:                                              ; preds = %334
  br label %341

341:                                              ; preds = %340
  br label %342

342:                                              ; preds = %341
  br label %343

343:                                              ; preds = %342, %329
  br label %344

344:                                              ; preds = %343, %301
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #7
  br label %345

345:                                              ; preds = %344
  %346 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 7
  %347 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::CerDataItem", ptr %346, i32 0, i32 0
  %348 = load ptr, ptr %347, align 8, !tbaa !46
  %349 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 5
  %350 = invoke noundef i32 @_ZN7UapkiNS4Cert7CerItem17generateEssCertIdERKNS_19AlgorithmIdentifierEPPKNS_10AttrCertIdE(ptr noundef nonnull align 8 dereferenceable(401) %348, ptr noundef nonnull align 8 dereferenceable(40) %349, ptr noundef %24)
          to label %351 unwind label %357

351:                                              ; preds = %345
  store i32 %350, ptr %11, align 4, !tbaa !9
  %352 = load i32, ptr %11, align 4, !tbaa !9
  %353 = icmp ne i32 %352, 0
  br i1 %353, label %354, label %361

354:                                              ; preds = %351
  %355 = load i32, ptr %11, align 4, !tbaa !9
  invoke void @stacktrace_add(ptr noundef @.str.1, i64 noundef 567, i32 noundef %355)
          to label %356 unwind label %357

356:                                              ; preds = %354
  store i32 4, ptr %9, align 4
  br label %508

357:                                              ; preds = %371, %364, %354, %345
  %358 = landingpad { ptr, i32 }
          cleanup
  %359 = extractvalue { ptr, i32 } %358, 0
  store ptr %359, ptr %7, align 8
  %360 = extractvalue { ptr, i32 } %358, 1
  store i32 %360, ptr %8, align 4
  br label %511

361:                                              ; preds = %351
  br label %362

362:                                              ; preds = %361
  br label %363

363:                                              ; preds = %362
  br label %364

364:                                              ; preds = %363
  %365 = load ptr, ptr %24, align 8, !tbaa !5
  %366 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 17
  %367 = invoke noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc24encodeSigningCertificateERKNS_10AttrCertIdERNS_9AttributeE(ptr noundef nonnull align 8 dereferenceable(64) %365, ptr noundef nonnull align 8 dereferenceable(40) %366)
          to label %368 unwind label %357

368:                                              ; preds = %364
  store i32 %367, ptr %11, align 4, !tbaa !9
  %369 = load i32, ptr %11, align 4, !tbaa !9
  %370 = icmp ne i32 %369, 0
  br i1 %370, label %371, label %374

371:                                              ; preds = %368
  %372 = load i32, ptr %11, align 4, !tbaa !9
  invoke void @stacktrace_add(ptr noundef @.str.1, i64 noundef 568, i32 noundef %372)
          to label %373 unwind label %357

373:                                              ; preds = %371
  store i32 4, ptr %9, align 4
  br label %508

374:                                              ; preds = %368
  br label %375

375:                                              ; preds = %374
  br label %376

376:                                              ; preds = %375
  %377 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 1
  %378 = load i8, ptr %377, align 4, !tbaa !47, !range !35, !noundef !36
  %379 = trunc i8 %378 to i1
  br i1 %379, label %380, label %507

380:                                              ; preds = %376
  call void @llvm.lifetime.start.p0(i64 24, ptr %25) #7
  call void @_ZNSt6vectorIPN7UapkiNS4Cert7CerItemESaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #7
  br label %381

381:                                              ; preds = %380
  %382 = load ptr, ptr %12, align 8, !tbaa !5
  %383 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 7
  %384 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::CerDataItem", ptr %383, i32 0, i32 0
  %385 = load ptr, ptr %384, align 8, !tbaa !46
  %386 = invoke noundef i32 @_ZN7UapkiNS4Cert8CerStore13getChainCertsEPKNS0_7CerItemERSt6vectorIPS2_SaIS6_EE(ptr noundef nonnull align 8 dereferenceable(96) %382, ptr noundef %385, ptr noundef nonnull align 8 dereferenceable(24) %25)
          to label %387 unwind label %393

387:                                              ; preds = %381
  store i32 %386, ptr %11, align 4, !tbaa !9
  %388 = load i32, ptr %11, align 4, !tbaa !9
  %389 = icmp ne i32 %388, 0
  br i1 %389, label %390, label %397

390:                                              ; preds = %387
  %391 = load i32, ptr %11, align 4, !tbaa !9
  invoke void @stacktrace_add(ptr noundef @.str.1, i64 noundef 571, i32 noundef %391)
          to label %392 unwind label %393

392:                                              ; preds = %390
  store i32 4, ptr %9, align 4
  br label %503

393:                                              ; preds = %496, %390, %381
  %394 = landingpad { ptr, i32 }
          cleanup
  %395 = extractvalue { ptr, i32 } %394, 0
  store ptr %395, ptr %7, align 8
  %396 = extractvalue { ptr, i32 } %394, 1
  store i32 %396, ptr %8, align 4
  br label %506

397:                                              ; preds = %387
  br label %398

398:                                              ; preds = %397
  br label %399

399:                                              ; preds = %398
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #7
  store ptr %25, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #7
  %400 = load ptr, ptr %26, align 8, !tbaa !5
  %401 = call ptr @_ZNSt6vectorIPN7UapkiNS4Cert7CerItemESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %400) #7
  %402 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %27, i32 0, i32 0
  store ptr %401, ptr %402, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #7
  %403 = load ptr, ptr %26, align 8, !tbaa !5
  %404 = call ptr @_ZNSt6vectorIPN7UapkiNS4Cert7CerItemESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %403) #7
  %405 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %28, i32 0, i32 0
  store ptr %404, ptr %405, align 8
  br label %406

406:                                              ; preds = %431, %399
  %407 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN7UapkiNS4Cert7CerItemESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(8) %28) #7
  br i1 %407, label %409, label %408

408:                                              ; preds = %406
  store i32 27, ptr %9, align 4
  br label %433

409:                                              ; preds = %406
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #7
  %410 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPN7UapkiNS4Cert7CerItemESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %27) #7
  store ptr %410, ptr %29, align 8, !tbaa !5
  br label %411

411:                                              ; preds = %409
  %412 = load ptr, ptr %29, align 8, !tbaa !5
  %413 = load ptr, ptr %412, align 8, !tbaa !5
  %414 = invoke noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc10SignParams7addCertEPNS_4Cert7CerItemE(ptr noundef nonnull align 8 dereferenceable(360) %15, ptr noundef %413)
          to label %415 unwind label %421

415:                                              ; preds = %411
  store i32 %414, ptr %11, align 4, !tbaa !9
  %416 = load i32, ptr %11, align 4, !tbaa !9
  %417 = icmp ne i32 %416, 0
  br i1 %417, label %418, label %425

418:                                              ; preds = %415
  %419 = load i32, ptr %11, align 4, !tbaa !9
  invoke void @stacktrace_add(ptr noundef @.str.1, i64 noundef 573, i32 noundef %419)
          to label %420 unwind label %421

420:                                              ; preds = %418
  store i32 4, ptr %9, align 4
  br label %428

421:                                              ; preds = %418, %411
  %422 = landingpad { ptr, i32 }
          cleanup
  %423 = extractvalue { ptr, i32 } %422, 0
  store ptr %423, ptr %7, align 8
  %424 = extractvalue { ptr, i32 } %422, 1
  store i32 %424, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  br label %506

425:                                              ; preds = %415
  br label %426

426:                                              ; preds = %425
  br label %427

427:                                              ; preds = %426
  store i32 0, ptr %9, align 4
  br label %428

428:                                              ; preds = %427, %420
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  %429 = load i32, ptr %9, align 4
  switch i32 %429, label %433 [
    i32 0, label %430
  ]

430:                                              ; preds = %428
  br label %431

431:                                              ; preds = %430
  %432 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPPN7UapkiNS4Cert7CerItemESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %27) #7
  br label %406

433:                                              ; preds = %428, %408
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  %434 = load i32, ptr %9, align 4
  switch i32 %434, label %503 [
    i32 27, label %435
  ]

435:                                              ; preds = %433
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #7
  %436 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 19
  store ptr %436, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #7
  %437 = load ptr, ptr %30, align 8, !tbaa !5
  %438 = call ptr @_ZNSt6vectorIPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %437) #7
  %439 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.38", ptr %31, i32 0, i32 0
  store ptr %438, ptr %439, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #7
  %440 = load ptr, ptr %30, align 8, !tbaa !5
  %441 = call ptr @_ZNSt6vectorIPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %440) #7
  %442 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.38", ptr %32, i32 0, i32 0
  store ptr %441, ptr %442, align 8
  br label %443

443:                                              ; preds = %487, %435
  %444 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef nonnull align 8 dereferenceable(8) %32) #7
  br i1 %444, label %446, label %445

445:                                              ; preds = %443
  store i32 31, ptr %9, align 4
  br label %489

446:                                              ; preds = %443
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #7
  %447 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %31) #7
  store ptr %447, ptr %33, align 8, !tbaa !5
  %448 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 0
  %449 = load i32, ptr %448, align 8, !tbaa !39
  %450 = icmp ne i32 %449, 5
  br i1 %450, label %451, label %469

451:                                              ; preds = %446
  br label %452

452:                                              ; preds = %451
  %453 = load ptr, ptr %33, align 8, !tbaa !5
  %454 = load ptr, ptr %453, align 8, !tbaa !5
  %455 = invoke noundef i32 @_ZL23get_cert_status_by_ocspRN7UapkiNS13CertValidator13CertValidatorERNS_3Doc4Sign10SigningDoc10SignParamsERNS5_11CerDataItemE(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull align 8 dereferenceable(360) %15, ptr noundef nonnull align 8 dereferenceable(64) %454)
          to label %456 unwind label %462

456:                                              ; preds = %452
  store i32 %455, ptr %11, align 4, !tbaa !9
  %457 = load i32, ptr %11, align 4, !tbaa !9
  %458 = icmp ne i32 %457, 0
  br i1 %458, label %459, label %466

459:                                              ; preds = %456
  %460 = load i32, ptr %11, align 4, !tbaa !9
  invoke void @stacktrace_add(ptr noundef @.str.1, i64 noundef 577, i32 noundef %460)
          to label %461 unwind label %462

461:                                              ; preds = %459
  store i32 4, ptr %9, align 4
  br label %484

462:                                              ; preds = %477, %470, %459, %452
  %463 = landingpad { ptr, i32 }
          cleanup
  %464 = extractvalue { ptr, i32 } %463, 0
  store ptr %464, ptr %7, align 8
  %465 = extractvalue { ptr, i32 } %463, 1
  store i32 %465, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  br label %506

466:                                              ; preds = %456
  br label %467

467:                                              ; preds = %466
  br label %468

468:                                              ; preds = %467
  br label %483

469:                                              ; preds = %446
  br label %470

470:                                              ; preds = %469
  %471 = load ptr, ptr %33, align 8, !tbaa !5
  %472 = load ptr, ptr %471, align 8, !tbaa !5
  %473 = invoke noundef i32 @_ZL22get_cert_status_by_crlRN7UapkiNS13CertValidator13CertValidatorERNS_3Doc4Sign10SigningDoc11CerDataItemE(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull align 8 dereferenceable(64) %472)
          to label %474 unwind label %462

474:                                              ; preds = %470
  store i32 %473, ptr %11, align 4, !tbaa !9
  %475 = load i32, ptr %11, align 4, !tbaa !9
  %476 = icmp ne i32 %475, 0
  br i1 %476, label %477, label %480

477:                                              ; preds = %474
  %478 = load i32, ptr %11, align 4, !tbaa !9
  invoke void @stacktrace_add(ptr noundef @.str.1, i64 noundef 580, i32 noundef %478)
          to label %479 unwind label %462

479:                                              ; preds = %477
  store i32 4, ptr %9, align 4
  br label %484

480:                                              ; preds = %474
  br label %481

481:                                              ; preds = %480
  br label %482

482:                                              ; preds = %481
  br label %483

483:                                              ; preds = %482, %468
  store i32 0, ptr %9, align 4
  br label %484

484:                                              ; preds = %483, %479, %461
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #7
  %485 = load i32, ptr %9, align 4
  switch i32 %485, label %489 [
    i32 0, label %486
  ]

486:                                              ; preds = %484
  br label %487

487:                                              ; preds = %486
  %488 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %31) #7
  br label %443

489:                                              ; preds = %484, %445
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  %490 = load i32, ptr %9, align 4
  switch i32 %490, label %503 [
    i32 31, label %491
  ]

491:                                              ; preds = %489
  %492 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 7
  %493 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::CerDataItem", ptr %492, i32 0, i32 7
  %494 = load ptr, ptr %493, align 8, !tbaa !48
  %495 = icmp ne ptr %494, null
  br i1 %495, label %496, label %502

496:                                              ; preds = %491
  %497 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 7
  %498 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::CerDataItem", ptr %497, i32 0, i32 7
  %499 = load ptr, ptr %498, align 8, !tbaa !48
  %500 = invoke noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc10SignParams7addCertEPNS_4Cert7CerItemE(ptr noundef nonnull align 8 dereferenceable(360) %15, ptr noundef %499)
          to label %501 unwind label %393

501:                                              ; preds = %496
  br label %502

502:                                              ; preds = %501, %491
  store i32 0, ptr %9, align 4
  br label %503

503:                                              ; preds = %502, %489, %433, %392
  call void @_ZNSt6vectorIPN7UapkiNS4Cert7CerItemESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %25) #7
  %504 = load i32, ptr %9, align 4
  switch i32 %504, label %508 [
    i32 0, label %505
  ]

505:                                              ; preds = %503
  br label %507

506:                                              ; preds = %462, %421, %393
  call void @_ZNSt6vectorIPN7UapkiNS4Cert7CerItemESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %25) #7
  br label %511

507:                                              ; preds = %505, %376
  store i32 0, ptr %9, align 4
  br label %508

508:                                              ; preds = %507, %503, %373, %356
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  %509 = load i32, ptr %9, align 4
  switch i32 %509, label %1241 [
    i32 0, label %510
    i32 4, label %1229
  ]

510:                                              ; preds = %508
  br label %512

511:                                              ; preds = %506, %357
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  br label %1242

512:                                              ; preds = %510, %297
  br label %513

513:                                              ; preds = %512, %276, %268
  %514 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 12
  %515 = load i8, ptr %514, align 1, !tbaa !14, !range !35, !noundef !36
  %516 = trunc i8 %515 to i1
  br i1 %516, label %521, label %517

517:                                              ; preds = %513
  %518 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 13
  %519 = load i8, ptr %518, align 4, !tbaa !37, !range !35, !noundef !36
  %520 = trunc i8 %519 to i1
  br i1 %520, label %521, label %617

521:                                              ; preds = %517, %513
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #7
  %522 = load ptr, ptr %13, align 8, !tbaa !5
  %523 = invoke noundef nonnull align 8 dereferenceable(72) ptr @_ZNK7UapkiNS13LibraryConfig6getTspEv(ptr noundef nonnull align 8 dereferenceable(97) %522)
          to label %524 unwind label %564

524:                                              ; preds = %521
  store ptr %523, ptr %34, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #7
  %525 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 16
  store ptr %525, ptr %35, align 8, !tbaa !5
  %526 = load ptr, ptr %34, align 8, !tbaa !5
  %527 = getelementptr inbounds %"struct.UapkiNS::LibraryConfig::TspParams", ptr %526, i32 0, i32 0
  %528 = load i8, ptr %527, align 8, !tbaa !49, !range !35, !noundef !36
  %529 = trunc i8 %528 to i1
  %530 = load ptr, ptr %35, align 8, !tbaa !5
  %531 = getelementptr inbounds %"struct.UapkiNS::LibraryConfig::TspParams", ptr %530, i32 0, i32 0
  %532 = zext i1 %529 to i8
  store i8 %532, ptr %531, align 8, !tbaa !49
  %533 = load ptr, ptr %34, align 8, !tbaa !5
  %534 = getelementptr inbounds %"struct.UapkiNS::LibraryConfig::TspParams", ptr %533, i32 0, i32 2
  %535 = load i64, ptr %534, align 8, !tbaa !50
  %536 = load ptr, ptr %35, align 8, !tbaa !5
  %537 = getelementptr inbounds %"struct.UapkiNS::LibraryConfig::TspParams", ptr %536, i32 0, i32 2
  store i64 %535, ptr %537, align 8, !tbaa !50
  %538 = load ptr, ptr %34, align 8, !tbaa !5
  %539 = getelementptr inbounds %"struct.UapkiNS::LibraryConfig::TspParams", ptr %538, i32 0, i32 3
  %540 = load ptr, ptr %35, align 8, !tbaa !5
  %541 = getelementptr inbounds %"struct.UapkiNS::LibraryConfig::TspParams", ptr %540, i32 0, i32 3
  %542 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %541, ptr noundef nonnull align 8 dereferenceable(32) %539)
          to label %543 unwind label %568

543:                                              ; preds = %524
  %544 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 7
  %545 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::CerDataItem", ptr %544, i32 0, i32 0
  %546 = load ptr, ptr %545, align 8, !tbaa !46
  %547 = icmp ne ptr %546, null
  br i1 %547, label %548, label %595

548:                                              ; preds = %543
  %549 = load ptr, ptr %34, align 8, !tbaa !5
  %550 = getelementptr inbounds %"struct.UapkiNS::LibraryConfig::TspParams", ptr %549, i32 0, i32 1
  %551 = load i8, ptr %550, align 1, !tbaa !51, !range !35, !noundef !36
  %552 = trunc i8 %551 to i1
  br i1 %552, label %553, label %572

553:                                              ; preds = %548
  %554 = load ptr, ptr %34, align 8, !tbaa !5
  %555 = getelementptr inbounds %"struct.UapkiNS::LibraryConfig::TspParams", ptr %554, i32 0, i32 4
  %556 = call noundef zeroext i1 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %555) #7
  br i1 %556, label %572, label %557

557:                                              ; preds = %553
  %558 = load ptr, ptr %34, align 8, !tbaa !5
  %559 = getelementptr inbounds %"struct.UapkiNS::LibraryConfig::TspParams", ptr %558, i32 0, i32 4
  %560 = load ptr, ptr %35, align 8, !tbaa !5
  %561 = getelementptr inbounds %"struct.UapkiNS::LibraryConfig::TspParams", ptr %560, i32 0, i32 4
  %562 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEaSERKS7_(ptr noundef nonnull align 8 dereferenceable(24) %561, ptr noundef nonnull align 8 dereferenceable(24) %559)
          to label %563 unwind label %568

563:                                              ; preds = %557
  br label %594

564:                                              ; preds = %521
  %565 = landingpad { ptr, i32 }
          cleanup
  %566 = extractvalue { ptr, i32 } %565, 0
  store ptr %566, ptr %7, align 8
  %567 = extractvalue { ptr, i32 } %565, 1
  store i32 %567, ptr %8, align 4
  br label %616

568:                                              ; preds = %607, %595, %586, %577, %572, %557, %524
  %569 = landingpad { ptr, i32 }
          cleanup
  %570 = extractvalue { ptr, i32 } %569, 0
  store ptr %570, ptr %7, align 8
  %571 = extractvalue { ptr, i32 } %569, 1
  store i32 %571, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  br label %616

572:                                              ; preds = %553, %548
  %573 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 7
  %574 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::CerDataItem", ptr %573, i32 0, i32 0
  %575 = load ptr, ptr %574, align 8, !tbaa !46
  %576 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZNK7UapkiNS4Cert7CerItem7getUrisEv(ptr noundef nonnull align 8 dereferenceable(401) %575)
          to label %577 unwind label %568

577:                                              ; preds = %572
  %578 = getelementptr inbounds %"struct.UapkiNS::Cert::CerItem::Uris", ptr %576, i32 0, i32 3
  %579 = load ptr, ptr %35, align 8, !tbaa !5
  %580 = getelementptr inbounds %"struct.UapkiNS::LibraryConfig::TspParams", ptr %579, i32 0, i32 4
  %581 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEaSERKS7_(ptr noundef nonnull align 8 dereferenceable(24) %580, ptr noundef nonnull align 8 dereferenceable(24) %578)
          to label %582 unwind label %568

582:                                              ; preds = %577
  %583 = load ptr, ptr %35, align 8, !tbaa !5
  %584 = getelementptr inbounds %"struct.UapkiNS::LibraryConfig::TspParams", ptr %583, i32 0, i32 4
  %585 = call noundef zeroext i1 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %584) #7
  br i1 %585, label %586, label %593

586:                                              ; preds = %582
  %587 = load ptr, ptr %34, align 8, !tbaa !5
  %588 = getelementptr inbounds %"struct.UapkiNS::LibraryConfig::TspParams", ptr %587, i32 0, i32 4
  %589 = load ptr, ptr %35, align 8, !tbaa !5
  %590 = getelementptr inbounds %"struct.UapkiNS::LibraryConfig::TspParams", ptr %589, i32 0, i32 4
  %591 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEaSERKS7_(ptr noundef nonnull align 8 dereferenceable(24) %590, ptr noundef nonnull align 8 dereferenceable(24) %588)
          to label %592 unwind label %568

592:                                              ; preds = %586
  br label %593

593:                                              ; preds = %592, %582
  br label %594

594:                                              ; preds = %593, %563
  br label %602

595:                                              ; preds = %543
  %596 = load ptr, ptr %34, align 8, !tbaa !5
  %597 = getelementptr inbounds %"struct.UapkiNS::LibraryConfig::TspParams", ptr %596, i32 0, i32 4
  %598 = load ptr, ptr %35, align 8, !tbaa !5
  %599 = getelementptr inbounds %"struct.UapkiNS::LibraryConfig::TspParams", ptr %598, i32 0, i32 4
  %600 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEaSERKS7_(ptr noundef nonnull align 8 dereferenceable(24) %599, ptr noundef nonnull align 8 dereferenceable(24) %597)
          to label %601 unwind label %568

601:                                              ; preds = %595
  br label %602

602:                                              ; preds = %601, %594
  %603 = load ptr, ptr %35, align 8, !tbaa !5
  %604 = getelementptr inbounds %"struct.UapkiNS::LibraryConfig::TspParams", ptr %603, i32 0, i32 4
  %605 = call noundef zeroext i1 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %604) #7
  br i1 %605, label %606, label %612

606:                                              ; preds = %602
  br label %607

607:                                              ; preds = %606
  store i32 4208, ptr %11, align 4, !tbaa !9
  %608 = load i32, ptr %11, align 4, !tbaa !9
  invoke void @stacktrace_create(ptr noundef @.str.1, i64 noundef 613, i32 noundef %608, ptr noundef null)
          to label %609 unwind label %568

609:                                              ; preds = %607
  store i32 4, ptr %9, align 4
  br label %613

610:                                              ; No predecessors!
  br label %611

611:                                              ; preds = %610
  br label %612

612:                                              ; preds = %611, %602
  store i32 0, ptr %9, align 4
  br label %613

613:                                              ; preds = %612, %609
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  %614 = load i32, ptr %9, align 4
  switch i32 %614, label %1241 [
    i32 0, label %615
    i32 4, label %1229
  ]

615:                                              ; preds = %613
  br label %617

616:                                              ; preds = %568, %564
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  br label %1242

617:                                              ; preds = %615, %517
  %618 = load i64, ptr %16, align 8, !tbaa !11
  invoke void @_ZNSt6vectorIN7UapkiNS3Doc4Sign10SigningDocESaIS3_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %618)
          to label %619 unwind label %138

619:                                              ; preds = %617
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #7
  store i64 0, ptr %36, align 8, !tbaa !11
  br label %620

620:                                              ; preds = %681, %619
  %621 = load i64, ptr %36, align 8, !tbaa !11
  %622 = call noundef i64 @_ZNKSt6vectorIN7UapkiNS3Doc4Sign10SigningDocESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  %623 = icmp ult i64 %621, %622
  br i1 %623, label %625, label %624

624:                                              ; preds = %620
  store i32 39, ptr %9, align 4
  br label %684

625:                                              ; preds = %620
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #7
  %626 = load i64, ptr %36, align 8, !tbaa !11
  %627 = call noundef nonnull align 8 dereferenceable(464) ptr @_ZNSt6vectorIN7UapkiNS3Doc4Sign10SigningDocESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %626) #7
  store ptr %627, ptr %37, align 8, !tbaa !5
  br label %628

628:                                              ; preds = %625
  %629 = load ptr, ptr %37, align 8, !tbaa !5
  %630 = invoke noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc4initEPKNS2_10SignParamsE(ptr noundef nonnull align 8 dereferenceable(464) %629, ptr noundef %15)
          to label %631 unwind label %637

631:                                              ; preds = %628
  store i32 %630, ptr %11, align 4, !tbaa !9
  %632 = load i32, ptr %11, align 4, !tbaa !9
  %633 = icmp ne i32 %632, 0
  br i1 %633, label %634, label %641

634:                                              ; preds = %631
  %635 = load i32, ptr %11, align 4, !tbaa !9
  invoke void @stacktrace_add(ptr noundef @.str.1, i64 noundef 621, i32 noundef %635)
          to label %636 unwind label %637

636:                                              ; preds = %634
  store i32 4, ptr %9, align 4
  br label %678

637:                                              ; preds = %672, %659, %654, %649, %644, %634, %628
  %638 = landingpad { ptr, i32 }
          cleanup
  %639 = extractvalue { ptr, i32 } %638, 0
  store ptr %639, ptr %7, align 8
  %640 = extractvalue { ptr, i32 } %638, 1
  store i32 %640, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #7
  br label %1242

641:                                              ; preds = %631
  br label %642

642:                                              ; preds = %641
  br label %643

643:                                              ; preds = %642
  br label %644

644:                                              ; preds = %643
  %645 = load ptr, ptr %37, align 8, !tbaa !5
  %646 = load ptr, ptr %18, align 8, !tbaa !5
  %647 = load i64, ptr %36, align 8, !tbaa !11
  %648 = invoke ptr @json_array_get_object(ptr noundef %646, i64 noundef %647)
          to label %649 unwind label %637

649:                                              ; preds = %644
  %650 = invoke noundef i32 @_ZL19parse_doc_from_jsonRN7UapkiNS3Doc4Sign10SigningDocEP13json_object_t(ptr noundef nonnull align 8 dereferenceable(464) %645, ptr noundef %648)
          to label %651 unwind label %637

651:                                              ; preds = %649
  store i32 %650, ptr %11, align 4, !tbaa !9
  %652 = load i32, ptr %11, align 4, !tbaa !9
  %653 = icmp ne i32 %652, 0
  br i1 %653, label %654, label %657

654:                                              ; preds = %651
  %655 = load i32, ptr %11, align 4, !tbaa !9
  invoke void @stacktrace_add(ptr noundef @.str.1, i64 noundef 622, i32 noundef %655)
          to label %656 unwind label %637

656:                                              ; preds = %654
  store i32 4, ptr %9, align 4
  br label %678

657:                                              ; preds = %651
  br label %658

658:                                              ; preds = %657
  br label %659

659:                                              ; preds = %658
  %660 = load ptr, ptr %37, align 8, !tbaa !5
  %661 = getelementptr inbounds %"class.UapkiNS::Doc::Sign::SigningDoc", ptr %660, i32 0, i32 6
  %662 = invoke noundef i32 @_ZNK7UapkiNS13ContentHasher13getSourceTypeEv(ptr noundef nonnull align 8 dereferenceable(80) %661)
          to label %663 unwind label %637

663:                                              ; preds = %659
  %664 = icmp ne i32 %662, 1
  br i1 %664, label %665, label %677

665:                                              ; preds = %663
  %666 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 9
  %667 = load i8, ptr %666, align 8, !tbaa !52, !range !35, !noundef !36
  %668 = trunc i8 %667 to i1
  %669 = zext i1 %668 to i32
  %670 = icmp eq i32 %669, 0
  br i1 %670, label %671, label %677

671:                                              ; preds = %665
  br label %672

672:                                              ; preds = %671
  store i32 4101, ptr %11, align 4, !tbaa !9
  %673 = load i32, ptr %11, align 4, !tbaa !9
  invoke void @stacktrace_create(ptr noundef @.str.1, i64 noundef 627, i32 noundef %673, ptr noundef null)
          to label %674 unwind label %637

674:                                              ; preds = %672
  store i32 4, ptr %9, align 4
  br label %678

675:                                              ; No predecessors!
  br label %676

676:                                              ; preds = %675
  br label %677

677:                                              ; preds = %676, %665, %663
  store i32 0, ptr %9, align 4
  br label %678

678:                                              ; preds = %677, %674, %656, %636
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  %679 = load i32, ptr %9, align 4
  switch i32 %679, label %684 [
    i32 0, label %680
  ]

680:                                              ; preds = %678
  br label %681

681:                                              ; preds = %680
  %682 = load i64, ptr %36, align 8, !tbaa !11
  %683 = add i64 %682, 1
  store i64 %683, ptr %36, align 8, !tbaa !11
  br label %620, !llvm.loop !53

684:                                              ; preds = %678, %624
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #7
  %685 = load i32, ptr %9, align 4
  switch i32 %685, label %1241 [
    i32 39, label %686
    i32 4, label %1229
  ]

686:                                              ; preds = %684
  %687 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 0
  %688 = load i32, ptr %687, align 8, !tbaa !39
  %689 = icmp ne i32 %688, 1
  br i1 %689, label %690, label %1076

690:                                              ; preds = %686
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #7
  store i64 0, ptr %38, align 8, !tbaa !11
  br label %691

691:                                              ; preds = %776, %690
  %692 = load i64, ptr %38, align 8, !tbaa !11
  %693 = call noundef i64 @_ZNKSt6vectorIN7UapkiNS3Doc4Sign10SigningDocESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  %694 = icmp ult i64 %692, %693
  br i1 %694, label %696, label %695

695:                                              ; preds = %691
  store i32 48, ptr %9, align 4
  br label %784

696:                                              ; preds = %691
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #7
  %697 = load i64, ptr %38, align 8, !tbaa !11
  %698 = call noundef nonnull align 8 dereferenceable(464) ptr @_ZNSt6vectorIN7UapkiNS3Doc4Sign10SigningDocESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %697) #7
  store ptr %698, ptr %39, align 8, !tbaa !5
  br label %699

699:                                              ; preds = %696
  %700 = load ptr, ptr %39, align 8, !tbaa !5
  %701 = invoke noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc21setupSignerIdentifierEv(ptr noundef nonnull align 8 dereferenceable(464) %700)
          to label %702 unwind label %708

702:                                              ; preds = %699
  store i32 %701, ptr %11, align 4, !tbaa !9
  %703 = load i32, ptr %11, align 4, !tbaa !9
  %704 = icmp ne i32 %703, 0
  br i1 %704, label %705, label %712

705:                                              ; preds = %702
  %706 = load i32, ptr %11, align 4, !tbaa !9
  invoke void @stacktrace_add(ptr noundef @.str.1, i64 noundef 635, i32 noundef %706)
          to label %707 unwind label %708

707:                                              ; preds = %705
  store i32 4, ptr %9, align 4
  br label %773

708:                                              ; preds = %762, %756, %750, %744, %737, %731, %721, %715, %705, %699
  %709 = landingpad { ptr, i32 }
          cleanup
  %710 = extractvalue { ptr, i32 } %709, 0
  store ptr %710, ptr %7, align 8
  %711 = extractvalue { ptr, i32 } %709, 1
  store i32 %711, ptr %8, align 4
  br label %783

712:                                              ; preds = %702
  br label %713

713:                                              ; preds = %712
  br label %714

714:                                              ; preds = %713
  br label %715

715:                                              ; preds = %714
  %716 = load ptr, ptr %39, align 8, !tbaa !5
  %717 = invoke noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc13digestMessageEv(ptr noundef nonnull align 8 dereferenceable(464) %716)
          to label %718 unwind label %708

718:                                              ; preds = %715
  store i32 %717, ptr %11, align 4, !tbaa !9
  %719 = load i32, ptr %11, align 4, !tbaa !9
  %720 = icmp ne i32 %719, 0
  br i1 %720, label %721, label %724

721:                                              ; preds = %718
  %722 = load i32, ptr %11, align 4, !tbaa !9
  invoke void @stacktrace_add(ptr noundef @.str.1, i64 noundef 637, i32 noundef %722)
          to label %723 unwind label %708

723:                                              ; preds = %721
  store i32 4, ptr %9, align 4
  br label %773

724:                                              ; preds = %718
  br label %725

725:                                              ; preds = %724
  br label %726

726:                                              ; preds = %725
  %727 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 12
  %728 = load i8, ptr %727, align 1, !tbaa !14, !range !35, !noundef !36
  %729 = trunc i8 %728 to i1
  br i1 %729, label %730, label %743

730:                                              ; preds = %726
  br label %731

731:                                              ; preds = %730
  %732 = load ptr, ptr %39, align 8, !tbaa !5
  %733 = invoke noundef i32 @_ZL22add_timestamp_to_attrsRN7UapkiNS13CertValidator13CertValidatorE10TsAttrTypeRNS_3Doc4Sign10SigningDocE(ptr noundef nonnull align 8 dereferenceable(88) %6, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(464) %732)
          to label %734 unwind label %708

734:                                              ; preds = %731
  store i32 %733, ptr %11, align 4, !tbaa !9
  %735 = load i32, ptr %11, align 4, !tbaa !9
  %736 = icmp ne i32 %735, 0
  br i1 %736, label %737, label %740

737:                                              ; preds = %734
  %738 = load i32, ptr %11, align 4, !tbaa !9
  invoke void @stacktrace_add(ptr noundef @.str.1, i64 noundef 640, i32 noundef %738)
          to label %739 unwind label %708

739:                                              ; preds = %737
  store i32 4, ptr %9, align 4
  br label %773

740:                                              ; preds = %734
  br label %741

741:                                              ; preds = %740
  br label %742

742:                                              ; preds = %741
  br label %743

743:                                              ; preds = %742, %726
  br label %744

744:                                              ; preds = %743
  %745 = load ptr, ptr %39, align 8, !tbaa !5
  %746 = invoke noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc21buildSignedAttributesEv(ptr noundef nonnull align 8 dereferenceable(464) %745)
          to label %747 unwind label %708

747:                                              ; preds = %744
  store i32 %746, ptr %11, align 4, !tbaa !9
  %748 = load i32, ptr %11, align 4, !tbaa !9
  %749 = icmp ne i32 %748, 0
  br i1 %749, label %750, label %753

750:                                              ; preds = %747
  %751 = load i32, ptr %11, align 4, !tbaa !9
  invoke void @stacktrace_add(ptr noundef @.str.1, i64 noundef 643, i32 noundef %751)
          to label %752 unwind label %708

752:                                              ; preds = %750
  store i32 4, ptr %9, align 4
  br label %773

753:                                              ; preds = %747
  br label %754

754:                                              ; preds = %753
  br label %755

755:                                              ; preds = %754
  br label %756

756:                                              ; preds = %755
  %757 = load ptr, ptr %39, align 8, !tbaa !5
  %758 = invoke noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc22digestSignedAttributesEv(ptr noundef nonnull align 8 dereferenceable(464) %757)
          to label %759 unwind label %708

759:                                              ; preds = %756
  store i32 %758, ptr %11, align 4, !tbaa !9
  %760 = load i32, ptr %11, align 4, !tbaa !9
  %761 = icmp ne i32 %760, 0
  br i1 %761, label %762, label %765

762:                                              ; preds = %759
  %763 = load i32, ptr %11, align 4, !tbaa !9
  invoke void @stacktrace_add(ptr noundef @.str.1, i64 noundef 644, i32 noundef %763)
          to label %764 unwind label %708

764:                                              ; preds = %762
  store i32 4, ptr %9, align 4
  br label %773

765:                                              ; preds = %759
  br label %766

766:                                              ; preds = %765
  br label %767

767:                                              ; preds = %766
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #7
  %768 = load ptr, ptr %39, align 8, !tbaa !5
  %769 = getelementptr inbounds %"class.UapkiNS::Doc::Sign::SigningDoc", ptr %768, i32 0, i32 8
  %770 = invoke noundef ptr @_ZNK7UapkiNS7SmartBA3getEv(ptr noundef nonnull align 8 dereferenceable(8) %769)
          to label %771 unwind label %779

771:                                              ; preds = %767
  store ptr %770, ptr %40, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIP12ByteArray_stSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 8 dereferenceable(8) %40)
          to label %772 unwind label %779

772:                                              ; preds = %771
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  store i32 0, ptr %9, align 4
  br label %773

773:                                              ; preds = %772, %764, %752, %739, %723, %707
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #7
  %774 = load i32, ptr %9, align 4
  switch i32 %774, label %784 [
    i32 0, label %775
  ]

775:                                              ; preds = %773
  br label %776

776:                                              ; preds = %775
  %777 = load i64, ptr %38, align 8, !tbaa !11
  %778 = add i64 %777, 1
  store i64 %778, ptr %38, align 8, !tbaa !11
  br label %691, !llvm.loop !55

779:                                              ; preds = %771, %767
  %780 = landingpad { ptr, i32 }
          cleanup
  %781 = extractvalue { ptr, i32 } %780, 0
  store ptr %781, ptr %7, align 8
  %782 = extractvalue { ptr, i32 } %780, 1
  store i32 %782, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  br label %783

783:                                              ; preds = %779, %708
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  br label %1242

784:                                              ; preds = %773, %695
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  %785 = load i32, ptr %9, align 4
  switch i32 %785, label %1241 [
    i32 48, label %786
    i32 4, label %1229
  ]

786:                                              ; preds = %784
  br label %787

787:                                              ; preds = %786
  %788 = load ptr, ptr %10, align 8, !tbaa !5
  %789 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 6
  %790 = getelementptr inbounds %"struct.UapkiNS::AlgorithmIdentifier", ptr %789, i32 0, i32 0
  %791 = invoke noundef i32 @_ZN14CmStorageProxy7keySignERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPK12ByteArray_stRKSt6vectorIPS8_SaISC_EERSE_(ptr noundef nonnull align 8 dereferenceable(168) %788, ptr noundef nonnull align 8 dereferenceable(32) %790, ptr noundef null, ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 8 dereferenceable(24) %21)
          to label %792 unwind label %138

792:                                              ; preds = %787
  store i32 %791, ptr %11, align 4, !tbaa !9
  %793 = load i32, ptr %11, align 4, !tbaa !9
  %794 = icmp ne i32 %793, 0
  br i1 %794, label %795, label %798

795:                                              ; preds = %792
  %796 = load i32, ptr %11, align 4, !tbaa !9
  invoke void @stacktrace_add(ptr noundef @.str.1, i64 noundef 653, i32 noundef %796)
          to label %797 unwind label %138

797:                                              ; preds = %795
  br label %1229

798:                                              ; preds = %792
  br label %799

799:                                              ; preds = %798
  br label %800

800:                                              ; preds = %799
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #7
  store i64 0, ptr %41, align 8, !tbaa !11
  br label %801

801:                                              ; preds = %1069, %800
  %802 = load i64, ptr %41, align 8, !tbaa !11
  %803 = call noundef i64 @_ZNKSt6vectorIN7UapkiNS3Doc4Sign10SigningDocESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  %804 = icmp ult i64 %802, %803
  br i1 %804, label %806, label %805

805:                                              ; preds = %801
  store i32 63, ptr %9, align 4
  br label %1073

806:                                              ; preds = %801
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #7
  %807 = load i64, ptr %41, align 8, !tbaa !11
  %808 = call noundef nonnull align 8 dereferenceable(464) ptr @_ZNSt6vectorIN7UapkiNS3Doc4Sign10SigningDocESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %807) #7
  store ptr %808, ptr %42, align 8, !tbaa !5
  br label %809

809:                                              ; preds = %806
  %810 = load ptr, ptr %42, align 8, !tbaa !5
  %811 = load i64, ptr %41, align 8, !tbaa !11
  %812 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP12ByteArray_stSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %21, i64 noundef %811) #7
  %813 = load ptr, ptr %812, align 8, !tbaa !5
  %814 = invoke noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc12setSignatureEPK12ByteArray_st(ptr noundef nonnull align 8 dereferenceable(464) %810, ptr noundef %813)
          to label %815 unwind label %821

815:                                              ; preds = %809
  store i32 %814, ptr %11, align 4, !tbaa !9
  %816 = load i32, ptr %11, align 4, !tbaa !9
  %817 = icmp ne i32 %816, 0
  br i1 %817, label %818, label %825

818:                                              ; preds = %815
  %819 = load i32, ptr %11, align 4, !tbaa !9
  invoke void @stacktrace_add(ptr noundef @.str.1, i64 noundef 657, i32 noundef %819)
          to label %820 unwind label %821

820:                                              ; preds = %818
  store i32 4, ptr %9, align 4
  br label %1066

821:                                              ; preds = %1060, %1054, %1047, %1041, %1031, %1025, %840, %834, %818, %809
  %822 = landingpad { ptr, i32 }
          cleanup
  %823 = extractvalue { ptr, i32 } %822, 0
  store ptr %823, ptr %7, align 8
  %824 = extractvalue { ptr, i32 } %822, 1
  store i32 %824, ptr %8, align 4
  br label %1072

825:                                              ; preds = %815
  br label %826

826:                                              ; preds = %825
  br label %827

827:                                              ; preds = %826
  %828 = load i64, ptr %41, align 8, !tbaa !11
  %829 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP12ByteArray_stSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %21, i64 noundef %828) #7
  store ptr null, ptr %829, align 8, !tbaa !5
  %830 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 13
  %831 = load i8, ptr %830, align 4, !tbaa !37, !range !35, !noundef !36
  %832 = trunc i8 %831 to i1
  br i1 %832, label %833, label %846

833:                                              ; preds = %827
  br label %834

834:                                              ; preds = %833
  %835 = load ptr, ptr %42, align 8, !tbaa !5
  %836 = invoke noundef i32 @_ZL22add_timestamp_to_attrsRN7UapkiNS13CertValidator13CertValidatorE10TsAttrTypeRNS_3Doc4Sign10SigningDocE(ptr noundef nonnull align 8 dereferenceable(88) %6, i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(464) %835)
          to label %837 unwind label %821

837:                                              ; preds = %834
  store i32 %836, ptr %11, align 4, !tbaa !9
  %838 = load i32, ptr %11, align 4, !tbaa !9
  %839 = icmp ne i32 %838, 0
  br i1 %839, label %840, label %843

840:                                              ; preds = %837
  %841 = load i32, ptr %11, align 4, !tbaa !9
  invoke void @stacktrace_add(ptr noundef @.str.1, i64 noundef 661, i32 noundef %841)
          to label %842 unwind label %821

842:                                              ; preds = %840
  store i32 4, ptr %9, align 4
  br label %1066

843:                                              ; preds = %837
  br label %844

844:                                              ; preds = %843
  br label %845

845:                                              ; preds = %844
  br label %846

846:                                              ; preds = %845, %827
  %847 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 1
  %848 = load i8, ptr %847, align 4, !tbaa !47, !range !35, !noundef !36
  %849 = trunc i8 %848 to i1
  br i1 %849, label %850, label %1024

850:                                              ; preds = %846
  call void @llvm.lifetime.start.p0(i64 24, ptr %43) #7
  call void @_ZNSt6vectorIPN7UapkiNS4Cert7CerItemESaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %45) #7
  %851 = load ptr, ptr %42, align 8, !tbaa !5
  invoke void @_ZN7UapkiNS3Doc4Sign10SigningDoc8getCertsEv(ptr dead_on_unwind writable sret(%"class.std::vector.18") align 8 %45, ptr noundef nonnull align 8 dereferenceable(464) %851)
          to label %852 unwind label %862

852:                                              ; preds = %850
  store ptr %45, ptr %44, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #7
  %853 = load ptr, ptr %44, align 8, !tbaa !5
  %854 = call ptr @_ZNSt6vectorIPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %853) #7
  %855 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.38", ptr %46, i32 0, i32 0
  store ptr %854, ptr %855, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #7
  %856 = load ptr, ptr %44, align 8, !tbaa !5
  %857 = call ptr @_ZNSt6vectorIPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %856) #7
  %858 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.38", ptr %47, i32 0, i32 0
  store ptr %857, ptr %858, align 8
  br label %859

859:                                              ; preds = %891, %852
  %860 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %46, ptr noundef nonnull align 8 dereferenceable(8) %47) #7
  br i1 %860, label %866, label %861

861:                                              ; preds = %859
  store i32 70, ptr %9, align 4
  br label %893

862:                                              ; preds = %850
  %863 = landingpad { ptr, i32 }
          cleanup
  %864 = extractvalue { ptr, i32 } %863, 0
  store ptr %864, ptr %7, align 8
  %865 = extractvalue { ptr, i32 } %863, 1
  store i32 %865, ptr %8, align 4
  br label %895

866:                                              ; preds = %859
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #7
  %867 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %46) #7
  store ptr %867, ptr %48, align 8, !tbaa !5
  br label %868

868:                                              ; preds = %866
  %869 = load ptr, ptr %12, align 8, !tbaa !5
  %870 = load ptr, ptr %48, align 8, !tbaa !5
  %871 = load ptr, ptr %870, align 8, !tbaa !5
  %872 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::CerDataItem", ptr %871, i32 0, i32 0
  %873 = load ptr, ptr %872, align 8, !tbaa !56
  %874 = invoke noundef i32 @_ZN7UapkiNS4Cert8CerStore13getChainCertsEPKNS0_7CerItemERSt6vectorIPS2_SaIS6_EE(ptr noundef nonnull align 8 dereferenceable(96) %869, ptr noundef %873, ptr noundef nonnull align 8 dereferenceable(24) %43)
          to label %875 unwind label %881

875:                                              ; preds = %868
  store i32 %874, ptr %11, align 4, !tbaa !9
  %876 = load i32, ptr %11, align 4, !tbaa !9
  %877 = icmp ne i32 %876, 0
  br i1 %877, label %878, label %885

878:                                              ; preds = %875
  %879 = load i32, ptr %11, align 4, !tbaa !9
  invoke void @stacktrace_add(ptr noundef @.str.1, i64 noundef 667, i32 noundef %879)
          to label %880 unwind label %881

880:                                              ; preds = %878
  store i32 4, ptr %9, align 4
  br label %888

881:                                              ; preds = %878, %868
  %882 = landingpad { ptr, i32 }
          cleanup
  %883 = extractvalue { ptr, i32 } %882, 0
  store ptr %883, ptr %7, align 8
  %884 = extractvalue { ptr, i32 } %882, 1
  store i32 %884, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  call void @_ZNSt6vectorIPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %45) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %45) #7
  br label %895

885:                                              ; preds = %875
  br label %886

886:                                              ; preds = %885
  br label %887

887:                                              ; preds = %886
  store i32 0, ptr %9, align 4
  br label %888

888:                                              ; preds = %887, %880
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  %889 = load i32, ptr %9, align 4
  switch i32 %889, label %893 [
    i32 0, label %890
  ]

890:                                              ; preds = %888
  br label %891

891:                                              ; preds = %890
  %892 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %46) #7
  br label %859

893:                                              ; preds = %888, %861
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  call void @_ZNSt6vectorIPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %45) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  %894 = load i32, ptr %9, align 4
  switch i32 %894, label %1019 [
    i32 70, label %896
  ]

895:                                              ; preds = %881, %862
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  br label %1023

896:                                              ; preds = %893
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #7
  store ptr %43, ptr %49, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #7
  %897 = load ptr, ptr %49, align 8, !tbaa !5
  %898 = call ptr @_ZNSt6vectorIPN7UapkiNS4Cert7CerItemESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %897) #7
  %899 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %50, i32 0, i32 0
  store ptr %898, ptr %899, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #7
  %900 = load ptr, ptr %49, align 8, !tbaa !5
  %901 = call ptr @_ZNSt6vectorIPN7UapkiNS4Cert7CerItemESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %900) #7
  %902 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %51, i32 0, i32 0
  store ptr %901, ptr %902, align 8
  br label %903

903:                                              ; preds = %929, %896
  %904 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN7UapkiNS4Cert7CerItemESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %50, ptr noundef nonnull align 8 dereferenceable(8) %51) #7
  br i1 %904, label %906, label %905

905:                                              ; preds = %903
  store i32 74, ptr %9, align 4
  br label %931

906:                                              ; preds = %903
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #7
  %907 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPN7UapkiNS4Cert7CerItemESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %50) #7
  store ptr %907, ptr %52, align 8, !tbaa !5
  br label %908

908:                                              ; preds = %906
  %909 = load ptr, ptr %42, align 8, !tbaa !5
  %910 = load ptr, ptr %52, align 8, !tbaa !5
  %911 = load ptr, ptr %910, align 8, !tbaa !5
  %912 = invoke noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc7addCertEPNS_4Cert7CerItemE(ptr noundef nonnull align 8 dereferenceable(464) %909, ptr noundef %911)
          to label %913 unwind label %919

913:                                              ; preds = %908
  store i32 %912, ptr %11, align 4, !tbaa !9
  %914 = load i32, ptr %11, align 4, !tbaa !9
  %915 = icmp ne i32 %914, 0
  br i1 %915, label %916, label %923

916:                                              ; preds = %913
  %917 = load i32, ptr %11, align 4, !tbaa !9
  invoke void @stacktrace_add(ptr noundef @.str.1, i64 noundef 670, i32 noundef %917)
          to label %918 unwind label %919

918:                                              ; preds = %916
  store i32 4, ptr %9, align 4
  br label %926

919:                                              ; preds = %916, %908
  %920 = landingpad { ptr, i32 }
          cleanup
  %921 = extractvalue { ptr, i32 } %920, 0
  store ptr %921, ptr %7, align 8
  %922 = extractvalue { ptr, i32 } %920, 1
  store i32 %922, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #7
  br label %1023

923:                                              ; preds = %913
  br label %924

924:                                              ; preds = %923
  br label %925

925:                                              ; preds = %924
  store i32 0, ptr %9, align 4
  br label %926

926:                                              ; preds = %925, %918
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #7
  %927 = load i32, ptr %9, align 4
  switch i32 %927, label %931 [
    i32 0, label %928
  ]

928:                                              ; preds = %926
  br label %929

929:                                              ; preds = %928
  %930 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPPN7UapkiNS4Cert7CerItemESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %50) #7
  br label %903

931:                                              ; preds = %926, %905
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #7
  %932 = load i32, ptr %9, align 4
  switch i32 %932, label %1019 [
    i32 74, label %933
  ]

933:                                              ; preds = %931
  call void @llvm.lifetime.start.p0(i64 24, ptr %53) #7
  %934 = load ptr, ptr %42, align 8, !tbaa !5
  invoke void @_ZN7UapkiNS3Doc4Sign10SigningDoc8getCertsEv(ptr dead_on_unwind writable sret(%"class.std::vector.18") align 8 %53, ptr noundef nonnull align 8 dereferenceable(464) %934)
          to label %935 unwind label %945

935:                                              ; preds = %933
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #7
  store ptr %53, ptr %54, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #7
  %936 = load ptr, ptr %54, align 8, !tbaa !5
  %937 = call ptr @_ZNKSt6vectorIPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %936) #7
  %938 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.49", ptr %55, i32 0, i32 0
  store ptr %937, ptr %938, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #7
  %939 = load ptr, ptr %54, align 8, !tbaa !5
  %940 = call ptr @_ZNKSt6vectorIPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %939) #7
  %941 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.49", ptr %56, i32 0, i32 0
  store ptr %940, ptr %941, align 8
  br label %942

942:                                              ; preds = %1013, %935
  %943 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %55, ptr noundef nonnull align 8 dereferenceable(8) %56) #7
  br i1 %943, label %949, label %944

944:                                              ; preds = %942
  store i32 78, ptr %9, align 4
  br label %1015

945:                                              ; preds = %933
  %946 = landingpad { ptr, i32 }
          cleanup
  %947 = extractvalue { ptr, i32 } %946, 0
  store ptr %947, ptr %7, align 8
  %948 = extractvalue { ptr, i32 } %946, 1
  store i32 %948, ptr %8, align 4
  br label %1022

949:                                              ; preds = %942
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #7
  %950 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %55) #7
  store ptr %950, ptr %57, align 8, !tbaa !5
  %951 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 0
  %952 = load i32, ptr %951, align 8, !tbaa !39
  %953 = icmp ne i32 %952, 5
  br i1 %953, label %954, label %995

954:                                              ; preds = %949
  %955 = load ptr, ptr %57, align 8, !tbaa !5
  %956 = load ptr, ptr %955, align 8, !tbaa !5
  %957 = invoke noundef i32 @_ZL23get_cert_status_by_ocspRN7UapkiNS13CertValidator13CertValidatorERNS_3Doc4Sign10SigningDoc10SignParamsERNS5_11CerDataItemE(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull align 8 dereferenceable(360) %15, ptr noundef nonnull align 8 dereferenceable(64) %956)
          to label %958 unwind label %975

958:                                              ; preds = %954
  store i32 %957, ptr %11, align 4, !tbaa !9
  %959 = load i32, ptr %11, align 4, !tbaa !9
  %960 = icmp eq i32 %959, 0
  br i1 %960, label %961, label %982

961:                                              ; preds = %958
  br label %962

962:                                              ; preds = %961
  %963 = load ptr, ptr %42, align 8, !tbaa !5
  %964 = load ptr, ptr %57, align 8, !tbaa !5
  %965 = load ptr, ptr %964, align 8, !tbaa !5
  %966 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::CerDataItem", ptr %965, i32 0, i32 7
  %967 = load ptr, ptr %966, align 8, !tbaa !57
  %968 = invoke noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc7addCertEPNS_4Cert7CerItemE(ptr noundef nonnull align 8 dereferenceable(464) %963, ptr noundef %967)
          to label %969 unwind label %975

969:                                              ; preds = %962
  store i32 %968, ptr %11, align 4, !tbaa !9
  %970 = load i32, ptr %11, align 4, !tbaa !9
  %971 = icmp ne i32 %970, 0
  br i1 %971, label %972, label %979

972:                                              ; preds = %969
  %973 = load i32, ptr %11, align 4, !tbaa !9
  invoke void @stacktrace_add(ptr noundef @.str.1, i64 noundef 678, i32 noundef %973)
          to label %974 unwind label %975

974:                                              ; preds = %972
  store i32 4, ptr %9, align 4
  br label %1010

975:                                              ; preds = %1003, %996, %987, %972, %962, %954
  %976 = landingpad { ptr, i32 }
          cleanup
  %977 = extractvalue { ptr, i32 } %976, 0
  store ptr %977, ptr %7, align 8
  %978 = extractvalue { ptr, i32 } %976, 1
  store i32 %978, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #7
  call void @_ZNSt6vectorIPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #7
  br label %1022

979:                                              ; preds = %969
  br label %980

980:                                              ; preds = %979
  br label %981

981:                                              ; preds = %980
  br label %994

982:                                              ; preds = %958
  %983 = load i32, ptr %11, align 4, !tbaa !9
  %984 = icmp eq i32 %983, 4192
  br i1 %984, label %985, label %986

985:                                              ; preds = %982
  br label %993

986:                                              ; preds = %982
  br label %987

987:                                              ; preds = %986
  %988 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %988, ptr %11, align 4, !tbaa !9
  %989 = load i32, ptr %11, align 4, !tbaa !9
  invoke void @stacktrace_create(ptr noundef @.str.1, i64 noundef 684, i32 noundef %989, ptr noundef null)
          to label %990 unwind label %975

990:                                              ; preds = %987
  store i32 4, ptr %9, align 4
  br label %1010

991:                                              ; No predecessors!
  br label %992

992:                                              ; preds = %991
  br label %993

993:                                              ; preds = %992, %985
  br label %994

994:                                              ; preds = %993, %981
  br label %1009

995:                                              ; preds = %949
  br label %996

996:                                              ; preds = %995
  %997 = load ptr, ptr %57, align 8, !tbaa !5
  %998 = load ptr, ptr %997, align 8, !tbaa !5
  %999 = invoke noundef i32 @_ZL22get_cert_status_by_crlRN7UapkiNS13CertValidator13CertValidatorERNS_3Doc4Sign10SigningDoc11CerDataItemE(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull align 8 dereferenceable(64) %998)
          to label %1000 unwind label %975

1000:                                             ; preds = %996
  store i32 %999, ptr %11, align 4, !tbaa !9
  %1001 = load i32, ptr %11, align 4, !tbaa !9
  %1002 = icmp ne i32 %1001, 0
  br i1 %1002, label %1003, label %1006

1003:                                             ; preds = %1000
  %1004 = load i32, ptr %11, align 4, !tbaa !9
  invoke void @stacktrace_add(ptr noundef @.str.1, i64 noundef 688, i32 noundef %1004)
          to label %1005 unwind label %975

1005:                                             ; preds = %1003
  store i32 4, ptr %9, align 4
  br label %1010

1006:                                             ; preds = %1000
  br label %1007

1007:                                             ; preds = %1006
  br label %1008

1008:                                             ; preds = %1007
  br label %1009

1009:                                             ; preds = %1008, %994
  store i32 0, ptr %9, align 4
  br label %1010

1010:                                             ; preds = %1009, %1005, %990, %974
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #7
  %1011 = load i32, ptr %9, align 4
  switch i32 %1011, label %1015 [
    i32 0, label %1012
  ]

1012:                                             ; preds = %1010
  br label %1013

1013:                                             ; preds = %1012
  %1014 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %55) #7
  br label %942

1015:                                             ; preds = %1010, %944
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #7
  %1016 = load i32, ptr %9, align 4
  switch i32 %1016, label %1018 [
    i32 78, label %1017
  ]

1017:                                             ; preds = %1015
  store i32 0, ptr %9, align 4
  br label %1018

1018:                                             ; preds = %1017, %1015
  call void @_ZNSt6vectorIPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %53) #7
  br label %1019

1019:                                             ; preds = %1018, %931, %893
  call void @_ZNSt6vectorIPN7UapkiNS4Cert7CerItemESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %43) #7
  %1020 = load i32, ptr %9, align 4
  switch i32 %1020, label %1066 [
    i32 0, label %1021
  ]

1021:                                             ; preds = %1019
  br label %1024

1022:                                             ; preds = %975, %945
  call void @llvm.lifetime.end.p0(i64 24, ptr %53) #7
  br label %1023

1023:                                             ; preds = %1022, %919, %895
  call void @_ZNSt6vectorIPN7UapkiNS4Cert7CerItemESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %43) #7
  br label %1072

1024:                                             ; preds = %1021, %846
  br label %1025

1025:                                             ; preds = %1024
  %1026 = load ptr, ptr %42, align 8, !tbaa !5
  %1027 = invoke noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc23buildUnsignedAttributesEv(ptr noundef nonnull align 8 dereferenceable(464) %1026)
          to label %1028 unwind label %821

1028:                                             ; preds = %1025
  store i32 %1027, ptr %11, align 4, !tbaa !9
  %1029 = load i32, ptr %11, align 4, !tbaa !9
  %1030 = icmp ne i32 %1029, 0
  br i1 %1030, label %1031, label %1034

1031:                                             ; preds = %1028
  %1032 = load i32, ptr %11, align 4, !tbaa !9
  invoke void @stacktrace_add(ptr noundef @.str.1, i64 noundef 693, i32 noundef %1032)
          to label %1033 unwind label %821

1033:                                             ; preds = %1031
  store i32 4, ptr %9, align 4
  br label %1066

1034:                                             ; preds = %1028
  br label %1035

1035:                                             ; preds = %1034
  br label %1036

1036:                                             ; preds = %1035
  %1037 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 0
  %1038 = load i32, ptr %1037, align 8, !tbaa !39
  %1039 = icmp eq i32 %1038, 7
  br i1 %1039, label %1040, label %1053

1040:                                             ; preds = %1036
  br label %1041

1041:                                             ; preds = %1040
  %1042 = load ptr, ptr %42, align 8, !tbaa !5
  %1043 = invoke noundef i32 @_ZL22add_timestamp_to_attrsRN7UapkiNS13CertValidator13CertValidatorE10TsAttrTypeRNS_3Doc4Sign10SigningDocE(ptr noundef nonnull align 8 dereferenceable(88) %6, i32 noundef 3, ptr noundef nonnull align 8 dereferenceable(464) %1042)
          to label %1044 unwind label %821

1044:                                             ; preds = %1041
  store i32 %1043, ptr %11, align 4, !tbaa !9
  %1045 = load i32, ptr %11, align 4, !tbaa !9
  %1046 = icmp ne i32 %1045, 0
  br i1 %1046, label %1047, label %1050

1047:                                             ; preds = %1044
  %1048 = load i32, ptr %11, align 4, !tbaa !9
  invoke void @stacktrace_add(ptr noundef @.str.1, i64 noundef 695, i32 noundef %1048)
          to label %1049 unwind label %821

1049:                                             ; preds = %1047
  store i32 4, ptr %9, align 4
  br label %1066

1050:                                             ; preds = %1044
  br label %1051

1051:                                             ; preds = %1050
  br label %1052

1052:                                             ; preds = %1051
  br label %1053

1053:                                             ; preds = %1052, %1036
  br label %1054

1054:                                             ; preds = %1053
  %1055 = load ptr, ptr %42, align 8, !tbaa !5
  %1056 = invoke noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc15buildSignedDataEv(ptr noundef nonnull align 8 dereferenceable(464) %1055)
          to label %1057 unwind label %821

1057:                                             ; preds = %1054
  store i32 %1056, ptr %11, align 4, !tbaa !9
  %1058 = load i32, ptr %11, align 4, !tbaa !9
  %1059 = icmp ne i32 %1058, 0
  br i1 %1059, label %1060, label %1063

1060:                                             ; preds = %1057
  %1061 = load i32, ptr %11, align 4, !tbaa !9
  invoke void @stacktrace_add(ptr noundef @.str.1, i64 noundef 697, i32 noundef %1061)
          to label %1062 unwind label %821

1062:                                             ; preds = %1060
  store i32 4, ptr %9, align 4
  br label %1066

1063:                                             ; preds = %1057
  br label %1064

1064:                                             ; preds = %1063
  br label %1065

1065:                                             ; preds = %1064
  store i32 0, ptr %9, align 4
  br label %1066

1066:                                             ; preds = %1065, %1062, %1049, %1033, %1019, %842, %820
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #7
  %1067 = load i32, ptr %9, align 4
  switch i32 %1067, label %1073 [
    i32 0, label %1068
  ]

1068:                                             ; preds = %1066
  br label %1069

1069:                                             ; preds = %1068
  %1070 = load i64, ptr %41, align 8, !tbaa !11
  %1071 = add i64 %1070, 1
  store i64 %1071, ptr %41, align 8, !tbaa !11
  br label %801, !llvm.loop !58

1072:                                             ; preds = %1023, %821
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  br label %1242

1073:                                             ; preds = %1066, %805
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  %1074 = load i32, ptr %9, align 4
  switch i32 %1074, label %1241 [
    i32 63, label %1075
    i32 4, label %1229
  ]

1075:                                             ; preds = %1073
  br label %1158

1076:                                             ; preds = %686
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #7
  store i64 0, ptr %58, align 8, !tbaa !11
  br label %1077

1077:                                             ; preds = %1109, %1076
  %1078 = load i64, ptr %58, align 8, !tbaa !11
  %1079 = call noundef i64 @_ZNKSt6vectorIN7UapkiNS3Doc4Sign10SigningDocESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  %1080 = icmp ult i64 %1078, %1079
  br i1 %1080, label %1082, label %1081

1081:                                             ; preds = %1077
  store i32 92, ptr %9, align 4
  br label %1117

1082:                                             ; preds = %1077
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #7
  %1083 = load i64, ptr %58, align 8, !tbaa !11
  %1084 = call noundef nonnull align 8 dereferenceable(464) ptr @_ZNSt6vectorIN7UapkiNS3Doc4Sign10SigningDocESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %1083) #7
  store ptr %1084, ptr %59, align 8, !tbaa !5
  br label %1085

1085:                                             ; preds = %1082
  %1086 = load ptr, ptr %59, align 8, !tbaa !5
  %1087 = invoke noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc13digestMessageEv(ptr noundef nonnull align 8 dereferenceable(464) %1086)
          to label %1088 unwind label %1094

1088:                                             ; preds = %1085
  store i32 %1087, ptr %11, align 4, !tbaa !9
  %1089 = load i32, ptr %11, align 4, !tbaa !9
  %1090 = icmp ne i32 %1089, 0
  br i1 %1090, label %1091, label %1098

1091:                                             ; preds = %1088
  %1092 = load i32, ptr %11, align 4, !tbaa !9
  invoke void @stacktrace_add(ptr noundef @.str.1, i64 noundef 703, i32 noundef %1092)
          to label %1093 unwind label %1094

1093:                                             ; preds = %1091
  store i32 4, ptr %9, align 4
  br label %1106

1094:                                             ; preds = %1091, %1085
  %1095 = landingpad { ptr, i32 }
          cleanup
  %1096 = extractvalue { ptr, i32 } %1095, 0
  store ptr %1096, ptr %7, align 8
  %1097 = extractvalue { ptr, i32 } %1095, 1
  store i32 %1097, ptr %8, align 4
  br label %1116

1098:                                             ; preds = %1088
  br label %1099

1099:                                             ; preds = %1098
  br label %1100

1100:                                             ; preds = %1099
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #7
  %1101 = load ptr, ptr %59, align 8, !tbaa !5
  %1102 = getelementptr inbounds %"class.UapkiNS::Doc::Sign::SigningDoc", ptr %1101, i32 0, i32 7
  %1103 = invoke noundef ptr @_ZNK7UapkiNS7SmartBA3getEv(ptr noundef nonnull align 8 dereferenceable(8) %1102)
          to label %1104 unwind label %1112

1104:                                             ; preds = %1100
  store ptr %1103, ptr %60, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIP12ByteArray_stSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 8 dereferenceable(8) %60)
          to label %1105 unwind label %1112

1105:                                             ; preds = %1104
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #7
  store i32 0, ptr %9, align 4
  br label %1106

1106:                                             ; preds = %1105, %1093
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #7
  %1107 = load i32, ptr %9, align 4
  switch i32 %1107, label %1117 [
    i32 0, label %1108
  ]

1108:                                             ; preds = %1106
  br label %1109

1109:                                             ; preds = %1108
  %1110 = load i64, ptr %58, align 8, !tbaa !11
  %1111 = add i64 %1110, 1
  store i64 %1111, ptr %58, align 8, !tbaa !11
  br label %1077, !llvm.loop !59

1112:                                             ; preds = %1104, %1100
  %1113 = landingpad { ptr, i32 }
          cleanup
  %1114 = extractvalue { ptr, i32 } %1113, 0
  store ptr %1114, ptr %7, align 8
  %1115 = extractvalue { ptr, i32 } %1113, 1
  store i32 %1115, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #7
  br label %1116

1116:                                             ; preds = %1112, %1094
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #7
  br label %1242

1117:                                             ; preds = %1106, %1081
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #7
  %1118 = load i32, ptr %9, align 4
  switch i32 %1118, label %1241 [
    i32 92, label %1119
    i32 4, label %1229
  ]

1119:                                             ; preds = %1117
  br label %1120

1120:                                             ; preds = %1119
  %1121 = load ptr, ptr %10, align 8, !tbaa !5
  %1122 = getelementptr inbounds %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", ptr %15, i32 0, i32 6
  %1123 = getelementptr inbounds %"struct.UapkiNS::AlgorithmIdentifier", ptr %1122, i32 0, i32 0
  %1124 = invoke noundef i32 @_ZN14CmStorageProxy7keySignERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPK12ByteArray_stRKSt6vectorIPS8_SaISC_EERSE_(ptr noundef nonnull align 8 dereferenceable(168) %1121, ptr noundef nonnull align 8 dereferenceable(32) %1123, ptr noundef null, ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 8 dereferenceable(24) %21)
          to label %1125 unwind label %138

1125:                                             ; preds = %1120
  store i32 %1124, ptr %11, align 4, !tbaa !9
  %1126 = load i32, ptr %11, align 4, !tbaa !9
  %1127 = icmp ne i32 %1126, 0
  br i1 %1127, label %1128, label %1131

1128:                                             ; preds = %1125
  %1129 = load i32, ptr %11, align 4, !tbaa !9
  invoke void @stacktrace_add(ptr noundef @.str.1, i64 noundef 712, i32 noundef %1129)
          to label %1130 unwind label %138

1130:                                             ; preds = %1128
  br label %1229

1131:                                             ; preds = %1125
  br label %1132

1132:                                             ; preds = %1131
  br label %1133

1133:                                             ; preds = %1132
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #7
  store i64 0, ptr %61, align 8, !tbaa !11
  br label %1134

1134:                                             ; preds = %1150, %1133
  %1135 = load i64, ptr %61, align 8, !tbaa !11
  %1136 = call noundef i64 @_ZNKSt6vectorIN7UapkiNS3Doc4Sign10SigningDocESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  %1137 = icmp ult i64 %1135, %1136
  br i1 %1137, label %1139, label %1138

1138:                                             ; preds = %1134
  store i32 99, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #7
  br label %1157

1139:                                             ; preds = %1134
  %1140 = load i64, ptr %61, align 8, !tbaa !11
  %1141 = call noundef nonnull align 8 dereferenceable(464) ptr @_ZNSt6vectorIN7UapkiNS3Doc4Sign10SigningDocESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %1140) #7
  %1142 = getelementptr inbounds %"class.UapkiNS::Doc::Sign::SigningDoc", ptr %1141, i32 0, i32 9
  %1143 = load i64, ptr %61, align 8, !tbaa !11
  %1144 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP12ByteArray_stSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %21, i64 noundef %1143) #7
  %1145 = load ptr, ptr %1144, align 8, !tbaa !5
  %1146 = invoke noundef zeroext i1 @_ZN7UapkiNS7SmartBA3setEP12ByteArray_st(ptr noundef nonnull align 8 dereferenceable(8) %1142, ptr noundef %1145)
          to label %1147 unwind label %1153

1147:                                             ; preds = %1139
  %1148 = load i64, ptr %61, align 8, !tbaa !11
  %1149 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP12ByteArray_stSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %21, i64 noundef %1148) #7
  store ptr null, ptr %1149, align 8, !tbaa !5
  br label %1150

1150:                                             ; preds = %1147
  %1151 = load i64, ptr %61, align 8, !tbaa !11
  %1152 = add i64 %1151, 1
  store i64 %1152, ptr %61, align 8, !tbaa !11
  br label %1134, !llvm.loop !60

1153:                                             ; preds = %1139
  %1154 = landingpad { ptr, i32 }
          cleanup
  %1155 = extractvalue { ptr, i32 } %1154, 0
  store ptr %1155, ptr %7, align 8
  %1156 = extractvalue { ptr, i32 } %1154, 1
  store i32 %1156, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #7
  br label %1242

1157:                                             ; preds = %1138
  br label %1158

1158:                                             ; preds = %1157, %1075
  %1159 = load ptr, ptr %5, align 8, !tbaa !5
  %1160 = invoke ptr @json_value_init_array()
          to label %1161 unwind label %138

1161:                                             ; preds = %1158
  %1162 = invoke i32 @json_object_set_value(ptr noundef %1159, ptr noundef @.str.4, ptr noundef %1160)
          to label %1163 unwind label %138

1163:                                             ; preds = %1161
  %1164 = icmp ne i32 %1162, 0
  br i1 %1164, label %1165, label %1166

1165:                                             ; preds = %1163
  store i32 4113, ptr %11, align 4, !tbaa !9
  br label %1229

1166:                                             ; preds = %1163
  %1167 = load ptr, ptr %5, align 8, !tbaa !5
  %1168 = invoke ptr @json_object_get_array(ptr noundef %1167, ptr noundef @.str.4)
          to label %1169 unwind label %138

1169:                                             ; preds = %1166
  store ptr %1168, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #7
  store i64 0, ptr %62, align 8, !tbaa !11
  br label %1170

1170:                                             ; preds = %1223, %1169
  %1171 = load i64, ptr %62, align 8, !tbaa !11
  %1172 = call noundef i64 @_ZNKSt6vectorIN7UapkiNS3Doc4Sign10SigningDocESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  %1173 = icmp ult i64 %1171, %1172
  br i1 %1173, label %1175, label %1174

1174:                                             ; preds = %1170
  store i32 102, ptr %9, align 4
  br label %1226

1175:                                             ; preds = %1170
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #7
  store ptr null, ptr %63, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #7
  %1176 = load i64, ptr %62, align 8, !tbaa !11
  %1177 = call noundef nonnull align 8 dereferenceable(464) ptr @_ZNSt6vectorIN7UapkiNS3Doc4Sign10SigningDocESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %1176) #7
  store ptr %1177, ptr %64, align 8, !tbaa !5
  %1178 = load ptr, ptr %17, align 8, !tbaa !5
  %1179 = invoke ptr @json_value_init_object()
          to label %1180 unwind label %1185

1180:                                             ; preds = %1175
  %1181 = invoke i32 @json_array_append_value(ptr noundef %1178, ptr noundef %1179)
          to label %1182 unwind label %1185

1182:                                             ; preds = %1180
  %1183 = icmp ne i32 %1181, 0
  br i1 %1183, label %1184, label %1189

1184:                                             ; preds = %1182
  store i32 4113, ptr %11, align 4, !tbaa !9
  store i32 4, ptr %9, align 4
  br label %1220

1185:                                             ; preds = %1214, %1210, %1201, %1196, %1189, %1180, %1175
  %1186 = landingpad { ptr, i32 }
          cleanup
  %1187 = extractvalue { ptr, i32 } %1186, 0
  store ptr %1187, ptr %7, align 8
  %1188 = extractvalue { ptr, i32 } %1186, 1
  store i32 %1188, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #7
  br label %1242

1189:                                             ; preds = %1182
  %1190 = load ptr, ptr %17, align 8, !tbaa !5
  %1191 = load i64, ptr %62, align 8, !tbaa !11
  %1192 = invoke ptr @json_array_get_object(ptr noundef %1190, i64 noundef %1191)
          to label %1193 unwind label %1185

1193:                                             ; preds = %1189
  store ptr %1192, ptr %63, align 8, !tbaa !5
  %1194 = icmp eq ptr %1192, null
  br i1 %1194, label %1195, label %1201

1195:                                             ; preds = %1193
  br label %1196

1196:                                             ; preds = %1195
  store i32 4097, ptr %11, align 4, !tbaa !9
  %1197 = load i32, ptr %11, align 4, !tbaa !9
  invoke void @stacktrace_create(ptr noundef @.str.1, i64 noundef 727, i32 noundef %1197, ptr noundef null)
          to label %1198 unwind label %1185

1198:                                             ; preds = %1196
  store i32 4, ptr %9, align 4
  br label %1220

1199:                                             ; No predecessors!
  br label %1200

1200:                                             ; preds = %1199
  br label %1201

1201:                                             ; preds = %1200, %1193
  %1202 = load ptr, ptr %63, align 8, !tbaa !5
  %1203 = load ptr, ptr %64, align 8, !tbaa !5
  %1204 = getelementptr inbounds %"class.UapkiNS::Doc::Sign::SigningDoc", ptr %1203, i32 0, i32 3
  %1205 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %1204) #7
  %1206 = invoke i32 @json_object_set_string(ptr noundef %1202, ptr noundef @.str.5, ptr noundef %1205)
          to label %1207 unwind label %1185

1207:                                             ; preds = %1201
  %1208 = icmp ne i32 %1206, 0
  br i1 %1208, label %1209, label %1210

1209:                                             ; preds = %1207
  store i32 4113, ptr %11, align 4, !tbaa !9
  store i32 4, ptr %9, align 4
  br label %1220

1210:                                             ; preds = %1207
  %1211 = load ptr, ptr %63, align 8, !tbaa !5
  %1212 = load ptr, ptr %64, align 8, !tbaa !5
  %1213 = invoke noundef ptr @_ZN7UapkiNS3Doc4Sign10SigningDoc10getEncodedEv(ptr noundef nonnull align 8 dereferenceable(464) %1212)
          to label %1214 unwind label %1185

1214:                                             ; preds = %1210
  %1215 = invoke i32 @json_object_set_base64(ptr noundef %1211, ptr noundef @.str.6, ptr noundef %1213)
          to label %1216 unwind label %1185

1216:                                             ; preds = %1214
  %1217 = icmp ne i32 %1215, 0
  br i1 %1217, label %1218, label %1219

1218:                                             ; preds = %1216
  store i32 4113, ptr %11, align 4, !tbaa !9
  store i32 4, ptr %9, align 4
  br label %1220

1219:                                             ; preds = %1216
  store i32 0, ptr %9, align 4
  br label %1220

1220:                                             ; preds = %1219, %1218, %1209, %1198, %1184
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #7
  %1221 = load i32, ptr %9, align 4
  switch i32 %1221, label %1226 [
    i32 0, label %1222
  ]

1222:                                             ; preds = %1220
  br label %1223

1223:                                             ; preds = %1222
  %1224 = load i64, ptr %62, align 8, !tbaa !11
  %1225 = add i64 %1224, 1
  store i64 %1225, ptr %62, align 8, !tbaa !11
  br label %1170, !llvm.loop !61

1226:                                             ; preds = %1220, %1174
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #7
  %1227 = load i32, ptr %9, align 4
  switch i32 %1227, label %1241 [
    i32 102, label %1228
    i32 4, label %1229
  ]

1228:                                             ; preds = %1226
  br label %1229

1229:                                             ; preds = %1228, %1226, %1165, %1130, %1117, %1073, %797, %784, %684, %613, %508, %339, %326, %294, %265, %219, %203, %186, %167, %117
  %1230 = load i32, ptr %11, align 4, !tbaa !9
  %1231 = icmp ne i32 %1230, 0
  br i1 %1231, label %1232, label %1239

1232:                                             ; preds = %1229
  %1233 = load ptr, ptr %5, align 8, !tbaa !5
  %1234 = invoke noundef i32 @_ZN7UapkiNS13CertValidator13CertValidator23expectedCertItemsToJsonEP13json_object_tPKc(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef %1233, ptr noundef @.str.7)
          to label %1235 unwind label %138

1235:                                             ; preds = %1232
  %1236 = load ptr, ptr %5, align 8, !tbaa !5
  %1237 = invoke noundef i32 @_ZN7UapkiNS13CertValidator13CertValidator22expectedCrlItemsToJsonEP13json_object_tPKc(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef %1236, ptr noundef @.str.8)
          to label %1238 unwind label %138

1238:                                             ; preds = %1235
  br label %1239

1239:                                             ; preds = %1238, %1229
  %1240 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %1240, ptr %3, align 4
  store i32 1, ptr %9, align 4
  br label %1241

1241:                                             ; preds = %1239, %1226, %1117, %1073, %784, %684, %613, %508
  call void @_ZN7UapkiNS8VectorBAD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #7
  call void @_ZNSt6vectorIP12ByteArray_stSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #7
  call void @_ZNSt6vectorIN7UapkiNS3Doc4Sign10SigningDocESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  call void @_ZN7UapkiNS3Doc4Sign10SigningDoc10SignParamsD1Ev(ptr noundef nonnull align 8 dereferenceable(360) %15) #7
  call void @llvm.lifetime.end.p0(i64 360, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #7
  br label %1248

1242:                                             ; preds = %1185, %1153, %1116, %1072, %783, %637, %616, %511, %250, %138
  call void @_ZN7UapkiNS8VectorBAD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #7
  br label %1243

1243:                                             ; preds = %1242, %134
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #7
  call void @_ZNSt6vectorIP12ByteArray_stSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #7
  call void @_ZNSt6vectorIN7UapkiNS3Doc4Sign10SigningDocESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  call void @_ZN7UapkiNS3Doc4Sign10SigningDoc10SignParamsD1Ev(ptr noundef nonnull align 8 dereferenceable(360) %15) #7
  br label %1244

1244:                                             ; preds = %1243, %130
  call void @llvm.lifetime.end.p0(i64 360, ptr %15) #7
  br label %1245

1245:                                             ; preds = %1244, %126
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #7
  br label %1246

1246:                                             ; preds = %1245, %122
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  br label %1247

1247:                                             ; preds = %1246, %118
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #7
  br label %1249

1248:                                             ; preds = %1241, %98, %89
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  br label %1250

1249:                                             ; preds = %1247, %90
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  br label %1252

1250:                                             ; preds = %1248, %83, %73
  call void @_ZN7UapkiNS13CertValidator13CertValidatorD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %6) #7
  call void @llvm.lifetime.end.p0(i64 88, ptr %6) #7
  %1251 = load i32, ptr %3, align 4
  ret i32 %1251

1252:                                             ; preds = %1249, %74
  call void @_ZN7UapkiNS13CertValidator13CertValidatorD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %6) #7
  call void @llvm.lifetime.end.p0(i64 88, ptr %6) #7
  br label %1253

1253:                                             ; preds = %1252
  %1254 = load ptr, ptr %7, align 8
  %1255 = load i32, ptr %8, align 4
  %1256 = insertvalue { ptr, i32 } poison, ptr %1254, 0
  %1257 = insertvalue { ptr, i32 } %1256, i32 %1255, 1
  resume { ptr, i32 } %1257
}

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

declare void @_ZN7UapkiNS13CertValidator13CertValidatorC1Ev(ptr noundef nonnull align 8 dereferenceable(88)) unnamed_addr #2

declare noundef zeroext i1 @_ZN7UapkiNS13CertValidator13CertValidator4initEPNS_13LibraryConfigEPNS_4Cert8CerStoreEPNS_3Crl8CrlStoreE(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef, ptr noundef, ptr noundef) #2

declare noundef ptr @_ZN7UapkiNS10get_configEv() #2

declare i32 @__gxx_personality_v0(...)

declare noundef ptr @_ZN7UapkiNS12get_cerstoreEv() #2

declare noundef ptr @_ZN7UapkiNS12get_crlstoreEv() #2

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

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

declare noundef ptr @_ZN11CmProviders13openedStorageEv() #2

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

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

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

declare void @_ZN7UapkiNS3Doc4Sign10SigningDoc10SignParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(360)) unnamed_addr #2

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL17parse_sign_paramsP13json_object_tRN7UapkiNS3Doc4Sign10SigningDoc10SignParamsE(ptr noundef, ptr noundef nonnull align 8 dereferenceable(360)) #0

declare ptr @json_object_get_object(ptr noundef, ptr noundef) #2

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

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #4

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

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

declare ptr @json_object_get_array(ptr noundef, ptr noundef) #2

declare i64 @json_array_get_count(ptr noundef) #2

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

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

declare i32 @hash_from_oid(ptr noundef) #2

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

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

declare ptr @hash_to_oid(i32 noundef) #2

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL22get_cert_status_by_crlRN7UapkiNS13CertValidator13CertValidatorERNS_3Doc4Sign10SigningDoc11CerDataItemE(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(64)) #0

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL23get_cert_status_by_ocspRN7UapkiNS13CertValidator13CertValidatorERNS_3Doc4Sign10SigningDoc10SignParamsERNS5_11CerDataItemE(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(360), ptr noundef nonnull align 8 dereferenceable(64)) #0

declare noundef i32 @_ZN7UapkiNS4Cert7CerItem17generateEssCertIdERKNS_19AlgorithmIdentifierEPPKNS_10AttrCertIdE(ptr noundef nonnull align 8 dereferenceable(401), ptr noundef nonnull align 8 dereferenceable(40), ptr noundef) #2

declare noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc24encodeSigningCertificateERKNS_10AttrCertIdERNS_9AttributeE(ptr noundef nonnull align 8 dereferenceable(64), ptr noundef nonnull align 8 dereferenceable(40)) #2

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

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

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

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

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

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

declare noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc10SignParams7addCertEPNS_4Cert7CerItemE(ptr noundef nonnull align 8 dereferenceable(360), ptr noundef) #2

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(72) ptr @_ZNK7UapkiNS13LibraryConfig6getTspEv(ptr noundef nonnull align 8 dereferenceable(97)) #3 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)) #0 align 2

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

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

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

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

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

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

declare noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc4initEPKNS2_10SignParamsE(ptr noundef nonnull align 8 dereferenceable(464), ptr noundef) #2

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL19parse_doc_from_jsonRN7UapkiNS3Doc4Sign10SigningDocEP13json_object_t(ptr noundef nonnull align 8 dereferenceable(464), ptr noundef) #0

declare ptr @json_array_get_object(ptr noundef, i64 noundef) #2

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

declare noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc21setupSignerIdentifierEv(ptr noundef nonnull align 8 dereferenceable(464)) #2

declare noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc13digestMessageEv(ptr noundef nonnull align 8 dereferenceable(464)) #2

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL22add_timestamp_to_attrsRN7UapkiNS13CertValidator13CertValidatorE10TsAttrTypeRNS_3Doc4Sign10SigningDocE(ptr noundef nonnull align 8 dereferenceable(88), i32 noundef, ptr noundef nonnull align 8 dereferenceable(464)) #0

declare noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc21buildSignedAttributesEv(ptr noundef nonnull align 8 dereferenceable(464)) #2

declare noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc22digestSignedAttributesEv(ptr noundef nonnull align 8 dereferenceable(464)) #2

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

declare noundef i32 @_ZN14CmStorageProxy7keySignERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPK12ByteArray_stRKSt6vectorIPS8_SaISC_EERSE_(ptr noundef nonnull align 8 dereferenceable(168), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) #2

declare noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc12setSignatureEPK12ByteArray_st(ptr noundef nonnull align 8 dereferenceable(464), ptr noundef) #2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7UapkiNS3Doc4Sign10SigningDoc8getCertsEv(ptr dead_on_unwind noalias writable sret(%"class.std::vector.18") align 8, ptr noundef nonnull align 8 dereferenceable(464)) #0 align 2

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

declare noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc7addCertEPNS_4Cert7CerItemE(ptr noundef nonnull align 8 dereferenceable(464), ptr noundef) #2

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

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

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

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

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

declare noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc23buildUnsignedAttributesEv(ptr noundef nonnull align 8 dereferenceable(464)) #2

declare noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc15buildSignedDataEv(ptr noundef nonnull align 8 dereferenceable(464)) #2

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

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

declare ptr @json_value_init_array() #2

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

declare ptr @json_value_init_object() #2

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

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

declare noundef ptr @_ZN7UapkiNS3Doc4Sign10SigningDoc10getEncodedEv(ptr noundef nonnull align 8 dereferenceable(464)) #2

declare noundef i32 @_ZN7UapkiNS13CertValidator13CertValidator23expectedCertItemsToJsonEP13json_object_tPKc(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef, ptr noundef) #2

declare noundef i32 @_ZN7UapkiNS13CertValidator13CertValidator22expectedCrlItemsToJsonEP13json_object_tPKc(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef, ptr noundef) #2

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

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

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

; Function Attrs: nounwind
declare void @_ZN7UapkiNS3Doc4Sign10SigningDoc10SignParamsD1Ev(ptr noundef nonnull align 8 dereferenceable(360)) unnamed_addr #6

; Function Attrs: nounwind
declare void @_ZN7UapkiNS13CertValidator13CertValidatorD1Ev(ptr noundef nonnull align 8 dereferenceable(88)) unnamed_addr #6

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{i64 0, i64 8, !11}
!14 = !{!15, !17, i64 171}
!15 = !{!"_ZTSN7UapkiNS3Doc4Sign10SigningDoc10SignParamsE", !16, i64 0, !17, i64 4, !17, i64 5, !18, i64 8, !18, i64 12, !19, i64 16, !19, i64 56, !22, i64 96, !23, i64 160, !17, i64 168, !17, i64 169, !17, i64 170, !17, i64 171, !17, i64 172, !17, i64 173, !24, i64 176, !25, i64 184, !30, i64 256, !30, i64 296, !31, i64 336}
!16 = !{!"_ZTSN7UapkiNS15SignatureFormatE", !7, i64 0}
!17 = !{!"bool", !7, i64 0}
!18 = !{!"_ZTS7HashAlg", !7, i64 0}
!19 = !{!"_ZTSN7UapkiNS19AlgorithmIdentifierE", !20, i64 0, !6, i64 32}
!20 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !21, i64 0, !12, i64 8, !7, i64 16}
!21 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!22 = !{!"_ZTSN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemE", !6, i64 0, !6, i64 8, !17, i64 16, !23, i64 24, !23, i64 32, !23, i64 40, !6, i64 48, !6, i64 56}
!23 = !{!"_ZTSN7UapkiNS7SmartBAE", !6, i64 0}
!24 = !{!"_ZTSN7UapkiNS13LibraryConfig10OcspParamsE", !12, i64 0}
!25 = !{!"_ZTSN7UapkiNS13LibraryConfig9TspParamsE", !17, i64 0, !17, i64 1, !12, i64 8, !20, i64 16, !26, i64 48}
!26 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !27, i64 0}
!27 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!30 = !{!"_ZTSN7UapkiNS9AttributeE", !20, i64 0, !6, i64 32}
!31 = !{!"_ZTSSt6vectorIPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESaIS5_EE", !32, i64 0}
!32 = !{!"_ZTSSt12_Vector_baseIPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESaIS5_EE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESaIS5_EE12_Vector_implE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!35 = !{i8 0, i8 2}
!36 = !{}
!37 = !{!15, !17, i64 172}
!38 = !{!15, !18, i64 12}
!39 = !{!15, !16, i64 0}
!40 = !{!15, !18, i64 8}
!41 = !{!15, !17, i64 173}
!42 = !{!15, !17, i64 169}
!43 = !{!15, !17, i64 5}
!44 = !{!45, !17, i64 0}
!45 = !{!"_ZTS11SignOptions", !17, i64 0}
!46 = !{!15, !6, i64 96}
!47 = !{!15, !17, i64 4}
!48 = !{!15, !6, i64 152}
!49 = !{!25, !17, i64 0}
!50 = !{!25, !12, i64 8}
!51 = !{!25, !17, i64 1}
!52 = !{!15, !17, i64 168}
!53 = distinct !{!53, !54}
!54 = !{!"llvm.loop.mustprogress"}
!55 = distinct !{!55, !54}
!56 = !{!22, !6, i64 0}
!57 = !{!22, !6, i64 56}
!58 = distinct !{!58, !54}
!59 = distinct !{!59, !54}
!60 = distinct !{!60, !54}
!61 = distinct !{!61, !54}


; 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::CertValidator::CertValidator" = type { ptr, ptr, ptr, %"class.std::vector", %"class.std::vector.0", %"class.UapkiNS::SmartBA", %"class.UapkiNS::SmartBA" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<UapkiNS::CertValidator::ExpectedCertItem *, std::allocator<UapkiNS::CertValidator::ExpectedCertItem *>>::_Vector_impl" }
%"struct.std::_Vector_base<UapkiNS::CertValidator::ExpectedCertItem *, std::allocator<UapkiNS::CertValidator::ExpectedCertItem *>>::_Vector_impl" = type { %"struct.std::_Vector_base<UapkiNS::CertValidator::ExpectedCertItem *, std::allocator<UapkiNS::CertValidator::ExpectedCertItem *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<UapkiNS::CertValidator::ExpectedCertItem *, std::allocator<UapkiNS::CertValidator::ExpectedCertItem *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<UapkiNS::CertValidator::ExpectedCrlItem *, std::allocator<UapkiNS::CertValidator::ExpectedCrlItem *>>::_Vector_impl" }
%"struct.std::_Vector_base<UapkiNS::CertValidator::ExpectedCrlItem *, std::allocator<UapkiNS::CertValidator::ExpectedCrlItem *>>::_Vector_impl" = type { %"struct.std::_Vector_base<UapkiNS::CertValidator::ExpectedCrlItem *, std::allocator<UapkiNS::CertValidator::ExpectedCrlItem *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<UapkiNS::CertValidator::ExpectedCrlItem *, std::allocator<UapkiNS::CertValidator::ExpectedCrlItem *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.UapkiNS::SmartBA" = type { ptr }
%struct.SignOptions = type { i8 }
%"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams" = type { i32, i8, i8, i32, i32, %"struct.UapkiNS::AlgorithmIdentifier", %"struct.UapkiNS::AlgorithmIdentifier", %"struct.UapkiNS::Doc::Sign::SigningDoc::CerDataItem", %"class.UapkiNS::SmartBA", i8, i8, i8, i8, i8, i8, %"struct.UapkiNS::LibraryConfig::OcspParams", %"struct.UapkiNS::LibraryConfig::TspParams", %"struct.UapkiNS::Attribute", %"struct.UapkiNS::Attribute", %"class.std::vector.18" }
%"struct.UapkiNS::AlgorithmIdentifier" = type { %"class.std::__cxx11::basic_string", ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"struct.UapkiNS::Doc::Sign::SigningDoc::CerDataItem" = type { ptr, ptr, i8, %"class.UapkiNS::SmartBA", %"class.UapkiNS::SmartBA", %"class.UapkiNS::SmartBA", ptr, ptr }
%"struct.UapkiNS::LibraryConfig::OcspParams" = type { i64 }
%"struct.UapkiNS::LibraryConfig::TspParams" = type { i8, i8, i64, %"class.std::__cxx11::basic_string", %"class.std::vector.8" }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = 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.UapkiNS::Attribute" = type { %"class.std::__cxx11::basic_string", ptr }
%"class.std::vector.18" = type { %"struct.std::_Vector_base.19" }
%"struct.std::_Vector_base.19" = type { %"struct.std::_Vector_base<UapkiNS::Doc::Sign::SigningDoc::CerDataItem *, std::allocator<UapkiNS::Doc::Sign::SigningDoc::CerDataItem *>>::_Vector_impl" }
%"struct.std::_Vector_base<UapkiNS::Doc::Sign::SigningDoc::CerDataItem *, std::allocator<UapkiNS::Doc::Sign::SigningDoc::CerDataItem *>>::_Vector_impl" = type { %"struct.std::_Vector_base<UapkiNS::Doc::Sign::SigningDoc::CerDataItem *, std::allocator<UapkiNS::Doc::Sign::SigningDoc::CerDataItem *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<UapkiNS::Doc::Sign::SigningDoc::CerDataItem *, std::allocator<UapkiNS::Doc::Sign::SigningDoc::CerDataItem *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.23" = type { %"struct.std::_Vector_base.24" }
%"struct.std::_Vector_base.24" = type { %"struct.std::_Vector_base<UapkiNS::Doc::Sign::SigningDoc, std::allocator<UapkiNS::Doc::Sign::SigningDoc>>::_Vector_impl" }
%"struct.std::_Vector_base<UapkiNS::Doc::Sign::SigningDoc, std::allocator<UapkiNS::Doc::Sign::SigningDoc>>::_Vector_impl" = type { %"struct.std::_Vector_base<UapkiNS::Doc::Sign::SigningDoc, std::allocator<UapkiNS::Doc::Sign::SigningDoc>>::_Vector_impl_data" }
%"struct.std::_Vector_base<UapkiNS::Doc::Sign::SigningDoc, std::allocator<UapkiNS::Doc::Sign::SigningDoc>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.28" = type { %"struct.std::_Vector_base.29" }
%"struct.std::_Vector_base.29" = type { %"struct.std::_Vector_base<ByteArray_st *, std::allocator<ByteArray_st *>>::_Vector_impl" }
%"struct.std::_Vector_base<ByteArray_st *, std::allocator<ByteArray_st *>>::_Vector_impl" = type { %"struct.std::_Vector_base<ByteArray_st *, std::allocator<ByteArray_st *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ByteArray_st *, std::allocator<ByteArray_st *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.UapkiNS::VectorBA" = type { %"class.std::vector.28" }
%"class.std::allocator.5" = type { i8 }
%"class.std::vector.13" = type { %"struct.std::_Vector_base.14" }
%"struct.std::_Vector_base.14" = type { %"struct.std::_Vector_base<UapkiNS::Cert::CerItem *, std::allocator<UapkiNS::Cert::CerItem *>>::_Vector_impl" }
%"struct.std::_Vector_base<UapkiNS::Cert::CerItem *, std::allocator<UapkiNS::Cert::CerItem *>>::_Vector_impl" = type { %"struct.std::_Vector_base<UapkiNS::Cert::CerItem *, std::allocator<UapkiNS::Cert::CerItem *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<UapkiNS::Cert::CerItem *, std::allocator<UapkiNS::Cert::CerItem *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.38" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.49" = type { ptr }

@.str = external hidden unnamed_addr constant [11 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [13 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local i32 @uapki_sign(ptr noundef %0, ptr noundef %1) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.UapkiNS::CertValidator::CertValidator", align 8
  %4 = alloca %struct.SignOptions, align 1
  %5 = alloca %"struct.UapkiNS::Doc::Sign::SigningDoc::SignParams", align 8
  %6 = alloca %"class.std::vector.23", align 8
  %7 = alloca %"class.std::vector.28", align 8
  %8 = alloca %"class.UapkiNS::VectorBA", align 8
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::allocator.5", align 1
  %11 = alloca ptr, align 8
  %12 = alloca %"class.std::vector.13", align 8
  %13 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %14 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %15 = alloca %"class.__gnu_cxx::__normal_iterator.38", align 8
  %16 = alloca %"class.__gnu_cxx::__normal_iterator.38", align 8
  %17 = alloca ptr, align 8
  %18 = alloca %"class.std::vector.13", align 8
  %19 = alloca %"class.std::vector.18", align 8
  %20 = alloca %"class.__gnu_cxx::__normal_iterator.38", align 8
  %21 = alloca %"class.__gnu_cxx::__normal_iterator.38", align 8
  %22 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %23 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %24 = alloca %"class.std::vector.18", align 8
  %25 = alloca %"class.__gnu_cxx::__normal_iterator.49", align 8
  %26 = alloca %"class.__gnu_cxx::__normal_iterator.49", align 8
  %27 = alloca ptr, align 8
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %3) #6
  call void @_ZN7UapkiNS13CertValidator13CertValidatorC1Ev(ptr noundef nonnull align 8 dereferenceable(88) %3)
  %28 = invoke noundef ptr @_ZN7UapkiNS10get_configEv()
          to label %29 unwind label %36

29:                                               ; preds = %2
  %30 = invoke noundef ptr @_ZN7UapkiNS12get_cerstoreEv()
          to label %31 unwind label %36

31:                                               ; preds = %29
  %32 = invoke noundef ptr @_ZN7UapkiNS12get_crlstoreEv()
          to label %33 unwind label %36

33:                                               ; preds = %31
  %34 = invoke noundef zeroext i1 @_ZN7UapkiNS13CertValidator13CertValidator4initEPNS_13LibraryConfigEPNS_4Cert8CerStoreEPNS_3Crl8CrlStoreE(ptr noundef nonnull align 8 dereferenceable(88) %3, ptr noundef %28, ptr noundef %30, ptr noundef %32)
          to label %35 unwind label %36

35:                                               ; preds = %33
  br i1 %34, label %38, label %503

36:                                               ; preds = %33, %31, %29, %2
  %37 = landingpad { ptr, i32 }
          cleanup
  br label %504

38:                                               ; preds = %35
  %39 = call noundef ptr @_ZNK7UapkiNS13CertValidator13CertValidator12getLibConfigEv(ptr noundef nonnull align 8 dereferenceable(88) %3)
  %40 = call noundef zeroext i1 @_ZNK7UapkiNS13LibraryConfig13isInitializedEv(ptr noundef nonnull align 8 dereferenceable(97) %39)
  br i1 %40, label %41, label %503

41:                                               ; preds = %38
  %42 = invoke noundef ptr @_ZN11CmProviders13openedStorageEv()
          to label %43 unwind label %44

43:                                               ; preds = %41
  %.not = icmp eq ptr %42, null
  br i1 %.not, label %503, label %46

44:                                               ; preds = %41
  %45 = landingpad { ptr, i32 }
          cleanup
  br label %504

46:                                               ; preds = %43
  %47 = call noundef zeroext i1 @_ZNK14CmStorageProxy13keyIsSelectedEv(ptr noundef nonnull align 8 dereferenceable(168) %42)
  br i1 %47, label %48, label %503

48:                                               ; preds = %46
  %49 = call noundef ptr @_ZNK7UapkiNS13CertValidator13CertValidator11getCerStoreEv(ptr noundef nonnull align 8 dereferenceable(88) %3)
  %50 = call noundef ptr @_ZNK7UapkiNS13CertValidator13CertValidator12getLibConfigEv(ptr noundef nonnull align 8 dereferenceable(88) %3)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #6
  call void @_ZN11SignOptionsC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4)
  call void @llvm.lifetime.start.p0(i64 360, ptr nonnull %5) #6
  invoke void @_ZN7UapkiNS3Doc4Sign10SigningDoc10SignParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(360) %5)
          to label %51 unwind label %58

51:                                               ; preds = %48
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) #6
  call void @_ZNSt6vectorIN7UapkiNS3Doc4Sign10SigningDocESaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #6
  call void @_ZNSt6vectorIP12ByteArray_stSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) #6
  invoke void @_ZN7UapkiNS8VectorBAC2Em(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef 0)
          to label %52 unwind label %60

52:                                               ; preds = %51
  %53 = invoke ptr @json_object_get_object(ptr noundef %0, ptr noundef nonnull @.str)
          to label %54 unwind label %62

54:                                               ; preds = %52
  %55 = invoke noundef i32 @_ZL17parse_sign_paramsP13json_object_tRN7UapkiNS3Doc4Sign10SigningDoc10SignParamsE(ptr noundef %53, ptr noundef nonnull align 8 dereferenceable(360) %5)
          to label %56 unwind label %62

56:                                               ; preds = %54
  %.not340 = icmp eq i32 %55, 0
  br i1 %.not340, label %64, label %57

57:                                               ; preds = %56
  invoke void @stacktrace_add(ptr noundef nonnull @.str.1, i64 noundef 518, i32 noundef %55)
          to label %.thread516 unwind label %62

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

60:                                               ; preds = %51
  %61 = landingpad { ptr, i32 }
          cleanup
  br label %501

62:                                               ; preds = %.invoke, %498, %.thread516, %470, %467, %.thread494, %456, %._crit_edge659, %339, %._crit_edge644, %.thread437, %161, %158, %157, %154, %142, %137, %118, %95, %94, %88, %87, %83, %81, %80, %66, %64, %57, %54, %52
  %63 = landingpad { ptr, i32 }
          cleanup
  br label %500

64:                                               ; preds = %56
  %65 = invoke ptr @json_object_get_object(ptr noundef %0, ptr noundef nonnull @.str.2)
          to label %66 unwind label %62

66:                                               ; preds = %64
  invoke void @_ZL18parse_sign_optionsP13json_object_tRN7UapkiNS3Doc4Sign10SigningDoc10SignParamsER11SignOptions(ptr noundef %65, ptr noundef nonnull align 8 dereferenceable(360) %5, ptr noundef nonnull align 1 dereferenceable(1) %4)
          to label %67 unwind label %62

67:                                               ; preds = %66
  %68 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7UapkiNS13LibraryConfig7getOcspEv(ptr noundef nonnull align 8 dereferenceable(97) %50)
  %69 = getelementptr inbounds i8, ptr %5, i64 176
  %70 = load i64, ptr %68, align 8, !tbaa !5
  store i64 %70, ptr %69, align 8, !tbaa !5
  %71 = getelementptr inbounds i8, ptr %5, i64 171
  %72 = load i8, ptr %71, align 1, !tbaa !9, !range !31, !noundef !32
  %73 = trunc nuw i8 %72 to i1
  br i1 %73, label %78, label %74

74:                                               ; preds = %67
  %75 = getelementptr inbounds i8, ptr %5, i64 172
  %76 = load i8, ptr %75, align 4, !tbaa !33, !range !31, !noundef !32
  %77 = trunc nuw i8 %76 to i1
  br i1 %77, label %78, label %81

78:                                               ; preds = %74, %67
  %79 = call noundef zeroext i1 @_ZNK7UapkiNS13LibraryConfig10getOfflineEv(ptr noundef nonnull align 8 dereferenceable(97) %50)
  br i1 %79, label %80, label %81

80:                                               ; preds = %78
  invoke void @stacktrace_create(ptr noundef nonnull @.str.1, i64 noundef 524, i32 noundef 4120, ptr noundef null)
          to label %.thread516 unwind label %62

81:                                               ; preds = %78, %74
  %82 = invoke ptr @json_object_get_array(ptr noundef %0, ptr noundef nonnull @.str.3)
          to label %83 unwind label %62

83:                                               ; preds = %81
  %84 = invoke i64 @json_array_get_count(ptr noundef %82)
          to label %85 unwind label %62

85:                                               ; preds = %83
  %86 = add i64 %84, -101
  %or.cond = icmp ult i64 %86, -100
  br i1 %or.cond, label %87, label %88

87:                                               ; preds = %85
  invoke void @stacktrace_create(ptr noundef nonnull @.str.1, i64 noundef 531, i32 noundef 4101, ptr noundef null)
          to label %.thread516 unwind label %62

88:                                               ; preds = %85
  %89 = getelementptr inbounds i8, ptr %5, i64 56
  %90 = getelementptr inbounds i8, ptr %5, i64 160
  %91 = call noundef ptr @_ZN7UapkiNS7SmartBAadEv(ptr noundef nonnull align 8 dereferenceable(8) %90)
  %92 = invoke noundef i32 @_ZL27get_info_signalgo_and_keyidR14CmStorageProxyRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPP12ByteArray_st(ptr noundef nonnull align 8 dereferenceable(168) %42, ptr noundef nonnull align 8 dereferenceable(32) %89, ptr noundef %91)
          to label %93 unwind label %62

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

94:                                               ; preds = %93
  invoke void @stacktrace_add(ptr noundef nonnull @.str.1, i64 noundef 534, i32 noundef %92)
          to label %.thread516 unwind label %62

95:                                               ; preds = %93
  %96 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %89) #6
  %97 = invoke i32 @hash_from_oid(ptr noundef %96)
          to label %98 unwind label %62

98:                                               ; preds = %95
  %99 = getelementptr inbounds i8, ptr %5, i64 12
  store i32 %97, ptr %99, align 4, !tbaa !34
  %100 = icmp eq i32 %97, 0
  br i1 %100, label %.invoke, label %101

101:                                              ; preds = %98
  %102 = getelementptr inbounds i8, ptr %5, i64 16
  %103 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %102) #6
  %104 = load i32, ptr %5, align 8
  %105 = icmp eq i32 %104, 1
  %or.cond20 = select i1 %103, i1 true, i1 %105
  br i1 %or.cond20, label %106, label %118

106:                                              ; preds = %101
  %107 = load i32, ptr %99, align 4, !tbaa !34
  %108 = getelementptr inbounds i8, ptr %5, i64 8
  store i32 %107, ptr %108, align 8, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #6
  %109 = invoke ptr @hash_to_oid(i32 noundef %107)
          to label %110 unwind label %113

110:                                              ; preds = %106
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef %109, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %111 unwind label %115

111:                                              ; preds = %110
  %112 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %102, ptr noundef nonnull align 8 dereferenceable(32) %9) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #6
  %.pre = load i32, ptr %108, align 8, !tbaa !35
  br label %123

113:                                              ; preds = %106
  %114 = landingpad { ptr, i32 }
          cleanup
  br label %117

115:                                              ; preds = %110
  %116 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #6
  br label %117

117:                                              ; preds = %115, %113
  %.pn = phi { ptr, i32 } [ %116, %115 ], [ %114, %113 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #6
  br label %500

118:                                              ; preds = %101
  %119 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %102) #6
  %120 = invoke i32 @hash_from_oid(ptr noundef %119)
          to label %121 unwind label %62

121:                                              ; preds = %118
  %122 = getelementptr inbounds i8, ptr %5, i64 8
  store i32 %120, ptr %122, align 8, !tbaa !35
  br label %123

123:                                              ; preds = %121, %111
  %124 = phi i32 [ %120, %121 ], [ %.pre, %111 ]
  %125 = icmp eq i32 %124, 0
  br i1 %125, label %.invoke, label %127

.invoke:                                          ; preds = %123, %98
  %126 = phi i64 [ 537, %98 ], [ 548, %123 ]
  invoke void @stacktrace_create(ptr noundef nonnull @.str.1, i64 noundef %126, i32 noundef 4110, ptr noundef null)
          to label %.thread516 unwind label %62

127:                                              ; preds = %123
  %128 = load i32, ptr %5, align 8, !tbaa !36
  %.not343 = icmp eq i32 %128, 1
  br i1 %.not343, label %226, label %129

129:                                              ; preds = %127
  %130 = getelementptr inbounds i8, ptr %5, i64 173
  %131 = load i8, ptr %130, align 1, !tbaa !37, !range !31, !noundef !32
  %132 = trunc nuw i8 %131 to i1
  br i1 %132, label %133, label %137

133:                                              ; preds = %129
  %134 = getelementptr inbounds i8, ptr %5, i64 169
  %135 = load i8, ptr %134, align 1, !tbaa !38, !range !31, !noundef !32
  %136 = trunc nuw i8 %135 to i1
  br i1 %136, label %137, label %226

137:                                              ; preds = %129, %133
  %138 = call noundef ptr @_ZNK7UapkiNS7SmartBA3getEv(ptr noundef nonnull align 8 dereferenceable(8) %90)
  %139 = getelementptr inbounds i8, ptr %5, i64 96
  %140 = invoke noundef i32 @_ZN7UapkiNS4Cert8CerStore14getCertByKeyIdEPK12ByteArray_stPPNS0_7CerItemE(ptr noundef nonnull align 8 dereferenceable(96) %49, ptr noundef %138, ptr noundef nonnull %139)
          to label %141 unwind label %62

141:                                              ; preds = %137
  %.not344 = icmp eq i32 %140, 0
  br i1 %.not344, label %143, label %142

142:                                              ; preds = %141
  invoke void @stacktrace_add(ptr noundef nonnull @.str.1, i64 noundef 552, i32 noundef %140)
          to label %.thread516 unwind label %62

143:                                              ; preds = %141
  %144 = getelementptr inbounds i8, ptr %5, i64 5
  %145 = load i8, ptr %144, align 1, !tbaa !39, !range !31, !noundef !32
  %146 = trunc nuw i8 %145 to i1
  br i1 %146, label %147, label %226

147:                                              ; preds = %143
  %148 = load i8, ptr %4, align 1, !tbaa !40, !range !31, !noundef !32
  %149 = trunc nuw i8 %148 to i1
  br i1 %149, label %162, label %150

150:                                              ; preds = %147
  %151 = load i32, ptr %5, align 8, !tbaa !36
  switch i32 %151, label %158 [
    i32 5, label %154
    i32 3, label %152
  ]

152:                                              ; preds = %150
  %153 = call noundef zeroext i1 @_ZNK7UapkiNS13LibraryConfig10getOfflineEv(ptr noundef nonnull align 8 dereferenceable(97) %50)
  br i1 %153, label %154, label %158

154:                                              ; preds = %150, %152
  %155 = invoke noundef i32 @_ZL22get_cert_status_by_crlRN7UapkiNS13CertValidator13CertValidatorERNS_3Doc4Sign10SigningDoc11CerDataItemE(ptr noundef nonnull align 8 dereferenceable(88) %3, ptr noundef nonnull align 8 dereferenceable(64) %139)
          to label %156 unwind label %62

156:                                              ; preds = %154
  %.not346 = icmp eq i32 %155, 0
  br i1 %.not346, label %162, label %157

157:                                              ; preds = %156
  invoke void @stacktrace_add(ptr noundef nonnull @.str.1, i64 noundef 559, i32 noundef %155)
          to label %.thread516 unwind label %62

158:                                              ; preds = %150, %152
  %159 = invoke noundef i32 @_ZL23get_cert_status_by_ocspRN7UapkiNS13CertValidator13CertValidatorERNS_3Doc4Sign10SigningDoc10SignParamsERNS5_11CerDataItemE(ptr noundef nonnull align 8 dereferenceable(88) %3, ptr noundef nonnull align 8 dereferenceable(360) %5, ptr noundef nonnull align 8 dereferenceable(64) %139)
          to label %160 unwind label %62

160:                                              ; preds = %158
  %.not345 = icmp eq i32 %159, 0
  br i1 %.not345, label %162, label %161

161:                                              ; preds = %160
  invoke void @stacktrace_add(ptr noundef nonnull @.str.1, i64 noundef 562, i32 noundef %159)
          to label %.thread516 unwind label %62

162:                                              ; preds = %156, %160, %147
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #6
  %163 = load ptr, ptr %139, align 8, !tbaa !42
  %164 = invoke noundef i32 @_ZN7UapkiNS4Cert7CerItem17generateEssCertIdERKNS_19AlgorithmIdentifierEPPKNS_10AttrCertIdE(ptr noundef nonnull align 8 dereferenceable(401) %163, ptr noundef nonnull align 8 dereferenceable(40) %102, ptr noundef nonnull %11)
          to label %165 unwind label %167

165:                                              ; preds = %162
  %.not347 = icmp eq i32 %164, 0
  br i1 %.not347, label %169, label %166

166:                                              ; preds = %165
  invoke void @stacktrace_add(ptr noundef nonnull @.str.1, i64 noundef 567, i32 noundef %164)
          to label %.thread426 unwind label %167

167:                                              ; preds = %174, %169, %166, %162
  %168 = landingpad { ptr, i32 }
          cleanup
  br label %225

169:                                              ; preds = %165
  %170 = load ptr, ptr %11, align 8, !tbaa !43
  %171 = getelementptr inbounds i8, ptr %5, i64 256
  %172 = invoke noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc24encodeSigningCertificateERKNS_10AttrCertIdERNS_9AttributeE(ptr noundef nonnull align 8 dereferenceable(64) %170, ptr noundef nonnull align 8 dereferenceable(40) %171)
          to label %173 unwind label %167

173:                                              ; preds = %169
  %.not348 = icmp eq i32 %172, 0
  br i1 %.not348, label %175, label %174

174:                                              ; preds = %173
  invoke void @stacktrace_add(ptr noundef nonnull @.str.1, i64 noundef 568, i32 noundef %172)
          to label %.thread426 unwind label %167

175:                                              ; preds = %173
  %176 = getelementptr inbounds i8, ptr %5, i64 4
  %177 = load i8, ptr %176, align 4, !tbaa !44, !range !31, !noundef !32
  %178 = trunc nuw i8 %177 to i1
  br i1 %178, label %179, label %.thread429

.thread429:                                       ; preds = %175
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #6
  br label %226

179:                                              ; preds = %175
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %12) #6
  call void @_ZNSt6vectorIPN7UapkiNS4Cert7CerItemESaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #6
  %180 = load ptr, ptr %139, align 8, !tbaa !42
  %181 = invoke noundef i32 @_ZN7UapkiNS4Cert8CerStore13getChainCertsEPKNS0_7CerItemERSt6vectorIPS2_SaIS6_EE(ptr noundef nonnull align 8 dereferenceable(96) %49, ptr noundef %180, ptr noundef nonnull align 8 dereferenceable(24) %12)
          to label %182 unwind label %184

182:                                              ; preds = %179
  %.not349 = icmp eq i32 %181, 0
  br i1 %.not349, label %186, label %183

183:                                              ; preds = %182
  invoke void @stacktrace_add(ptr noundef nonnull @.str.1, i64 noundef 571, i32 noundef %181)
          to label %.thread433 unwind label %184

184:                                              ; preds = %221, %183, %179
  %185 = landingpad { ptr, i32 }
          cleanup
  br label %223

186:                                              ; preds = %182
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #6
  %187 = call ptr @_ZNSt6vectorIPN7UapkiNS4Cert7CerItemESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #6
  store ptr %187, ptr %13, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #6
  %188 = call ptr @_ZNSt6vectorIPN7UapkiNS4Cert7CerItemESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #6
  store ptr %188, ptr %14, align 8
  %189 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN7UapkiNS4Cert7CerItemESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %14) #6
  br i1 %189, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %186, %196
  %190 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPN7UapkiNS4Cert7CerItemESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %13) #6
  %191 = load ptr, ptr %190, align 8, !tbaa !43
  %192 = invoke noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc10SignParams7addCertEPNS_4Cert7CerItemE(ptr noundef nonnull align 8 dereferenceable(360) %5, ptr noundef %191)
          to label %193 unwind label %.loopexit570

193:                                              ; preds = %.lr.ph
  %.not350 = icmp eq i32 %192, 0
  br i1 %.not350, label %196, label %194

194:                                              ; preds = %193
  invoke void @stacktrace_add(ptr noundef nonnull @.str.1, i64 noundef 573, i32 noundef %192)
          to label %199 unwind label %.loopexit.split-lp571

.loopexit570:                                     ; preds = %.lr.ph
  %lpad.loopexit572 = landingpad { ptr, i32 }
          cleanup
  br label %195

.loopexit.split-lp571:                            ; preds = %194
  %lpad.loopexit.split-lp573 = landingpad { ptr, i32 }
          cleanup
  br label %195

195:                                              ; preds = %.loopexit.split-lp571, %.loopexit570
  %lpad.phi574 = phi { ptr, i32 } [ %lpad.loopexit572, %.loopexit570 ], [ %lpad.loopexit.split-lp573, %.loopexit.split-lp571 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #6
  br label %223

196:                                              ; preds = %193
  %197 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPPN7UapkiNS4Cert7CerItemESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %13) #6
  %198 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN7UapkiNS4Cert7CerItemESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %14) #6
  br i1 %198, label %.lr.ph, label %._crit_edge

199:                                              ; preds = %194
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #6
  br label %.thread433

._crit_edge:                                      ; preds = %196, %186
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #6
  %200 = getelementptr inbounds i8, ptr %5, i64 336
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #6
  %201 = call ptr @_ZNSt6vectorIPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %200) #6
  store ptr %201, ptr %15, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #6
  %202 = call ptr @_ZNSt6vectorIPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %200) #6
  store ptr %202, ptr %16, align 8
  %203 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %16) #6
  br i1 %203, label %.lr.ph637, label %._crit_edge638

.lr.ph637:                                        ; preds = %._crit_edge, %216
  %204 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #6
  %205 = load i32, ptr %5, align 8, !tbaa !36
  %.not351 = icmp eq i32 %205, 5
  %206 = load ptr, ptr %204, align 8, !tbaa !43
  br i1 %.not351, label %212, label %207

207:                                              ; preds = %.lr.ph637
  %208 = invoke noundef i32 @_ZL23get_cert_status_by_ocspRN7UapkiNS13CertValidator13CertValidatorERNS_3Doc4Sign10SigningDoc10SignParamsERNS5_11CerDataItemE(ptr noundef nonnull align 8 dereferenceable(88) %3, ptr noundef nonnull align 8 dereferenceable(360) %5, ptr noundef nonnull align 8 dereferenceable(64) %206)
          to label %209 unwind label %.loopexit565

209:                                              ; preds = %207
  %.not353 = icmp eq i32 %208, 0
  br i1 %.not353, label %216, label %210

210:                                              ; preds = %209
  invoke void @stacktrace_add(ptr noundef nonnull @.str.1, i64 noundef 577, i32 noundef %208)
          to label %.thread421 unwind label %.loopexit.split-lp566

.loopexit565:                                     ; preds = %207, %212
  %lpad.loopexit567 = landingpad { ptr, i32 }
          cleanup
  br label %211

.loopexit.split-lp566:                            ; preds = %210, %215
  %lpad.loopexit.split-lp568 = landingpad { ptr, i32 }
          cleanup
  br label %211

211:                                              ; preds = %.loopexit.split-lp566, %.loopexit565
  %lpad.phi569 = phi { ptr, i32 } [ %lpad.loopexit567, %.loopexit565 ], [ %lpad.loopexit.split-lp568, %.loopexit.split-lp566 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #6
  br label %223

212:                                              ; preds = %.lr.ph637
  %213 = invoke noundef i32 @_ZL22get_cert_status_by_crlRN7UapkiNS13CertValidator13CertValidatorERNS_3Doc4Sign10SigningDoc11CerDataItemE(ptr noundef nonnull align 8 dereferenceable(88) %3, ptr noundef nonnull align 8 dereferenceable(64) %206)
          to label %214 unwind label %.loopexit565

214:                                              ; preds = %212
  %.not352 = icmp eq i32 %213, 0
  br i1 %.not352, label %216, label %215

215:                                              ; preds = %214
  invoke void @stacktrace_add(ptr noundef nonnull @.str.1, i64 noundef 580, i32 noundef %213)
          to label %.thread421 unwind label %.loopexit.split-lp566

216:                                              ; preds = %214, %209
  %217 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #6
  %218 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %16) #6
  br i1 %218, label %.lr.ph637, label %._crit_edge638

.thread421:                                       ; preds = %210, %215
  %.5267.ph = phi i32 [ %213, %215 ], [ %208, %210 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #6
  br label %.thread433

._crit_edge638:                                   ; preds = %216, %._crit_edge
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #6
  %219 = getelementptr inbounds i8, ptr %5, i64 152
  %220 = load ptr, ptr %219, align 8, !tbaa !45
  %.not354 = icmp eq ptr %220, null
  br i1 %.not354, label %224, label %221

221:                                              ; preds = %._crit_edge638
  %222 = invoke noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc10SignParams7addCertEPNS_4Cert7CerItemE(ptr noundef nonnull align 8 dereferenceable(360) %5, ptr noundef nonnull %220)
          to label %224 unwind label %184

223:                                              ; preds = %211, %195, %184
  %.pn355 = phi { ptr, i32 } [ %185, %184 ], [ %lpad.phi569, %211 ], [ %lpad.phi574, %195 ]
  call void @_ZNSt6vectorIPN7UapkiNS4Cert7CerItemESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #6
  br label %225

.thread426:                                       ; preds = %166, %174
  %.8270.ph = phi i32 [ %172, %174 ], [ %164, %166 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #6
  br label %.thread516

.thread433:                                       ; preds = %199, %183, %.thread421
  %.6268.ph = phi i32 [ %.5267.ph, %.thread421 ], [ %181, %183 ], [ %192, %199 ]
  call void @_ZNSt6vectorIPN7UapkiNS4Cert7CerItemESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #6
  br label %.thread516

224:                                              ; preds = %221, %._crit_edge638
  call void @_ZNSt6vectorIPN7UapkiNS4Cert7CerItemESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #6
  br label %226

225:                                              ; preds = %223, %167
  %.pn357 = phi { ptr, i32 } [ %168, %167 ], [ %.pn355, %223 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #6
  br label %500

226:                                              ; preds = %224, %.thread429, %143, %133, %127
  %227 = load i8, ptr %71, align 1, !tbaa !9, !range !31, !noundef !32
  %228 = trunc nuw i8 %227 to i1
  br i1 %228, label %233, label %229

229:                                              ; preds = %226
  %230 = getelementptr inbounds i8, ptr %5, i64 172
  %231 = load i8, ptr %230, align 4, !tbaa !33, !range !31, !noundef !32
  %232 = trunc nuw i8 %231 to i1
  br i1 %232, label %233, label %.thread437

233:                                              ; preds = %229, %226
  %234 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNK7UapkiNS13LibraryConfig6getTspEv(ptr noundef nonnull align 8 dereferenceable(97) %50)
  %235 = getelementptr inbounds i8, ptr %5, i64 184
  %236 = load i8, ptr %234, align 8, !tbaa !46, !range !31, !noundef !32
  store i8 %236, ptr %235, align 8, !tbaa !46
  %237 = getelementptr inbounds i8, ptr %234, i64 8
  %238 = load i64, ptr %237, align 8, !tbaa !47
  %239 = getelementptr inbounds i8, ptr %5, i64 192
  store i64 %238, ptr %239, align 8, !tbaa !47
  %240 = getelementptr inbounds i8, ptr %234, i64 16
  %241 = getelementptr inbounds i8, ptr %5, i64 200
  %242 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %241, ptr noundef nonnull align 8 dereferenceable(32) %240)
          to label %243 unwind label %255

243:                                              ; preds = %233
  %244 = getelementptr inbounds i8, ptr %5, i64 96
  %245 = load ptr, ptr %244, align 8, !tbaa !42
  %.not359 = icmp eq ptr %245, null
  br i1 %.not359, label %267, label %246

246:                                              ; preds = %243
  %247 = getelementptr inbounds i8, ptr %234, i64 1
  %248 = load i8, ptr %247, align 1, !tbaa !48, !range !31, !noundef !32
  %249 = trunc nuw i8 %248 to i1
  br i1 %249, label %250, label %257

250:                                              ; preds = %246
  %251 = getelementptr inbounds i8, ptr %234, i64 48
  %252 = call noundef zeroext i1 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %251) #6
  br i1 %252, label %._crit_edge746, label %253

._crit_edge746:                                   ; preds = %250
  %.pre747 = load ptr, ptr %244, align 8, !tbaa !42
  br label %257

253:                                              ; preds = %250
  %254 = getelementptr inbounds i8, ptr %5, i64 232
  br label %.invoke819

255:                                              ; preds = %.invoke819, %276, %257, %233
  %256 = landingpad { ptr, i32 }
          cleanup
  br label %500

257:                                              ; preds = %._crit_edge746, %246
  %258 = phi ptr [ %.pre747, %._crit_edge746 ], [ %245, %246 ]
  %259 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNK7UapkiNS4Cert7CerItem7getUrisEv(ptr noundef nonnull align 8 dereferenceable(401) %258)
  %260 = getelementptr inbounds i8, ptr %259, i64 72
  %261 = getelementptr inbounds i8, ptr %5, i64 232
  %262 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEaSERKS7_(ptr noundef nonnull align 8 dereferenceable(24) %261, ptr noundef nonnull align 8 dereferenceable(24) %260)
          to label %263 unwind label %255

263:                                              ; preds = %257
  %264 = call noundef zeroext i1 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %261) #6
  br i1 %264, label %265, label %273

265:                                              ; preds = %263
  %266 = getelementptr inbounds i8, ptr %234, i64 48
  br label %.invoke819

267:                                              ; preds = %243
  %268 = getelementptr inbounds i8, ptr %234, i64 48
  %269 = getelementptr inbounds i8, ptr %5, i64 232
  br label %.invoke819

.invoke819:                                       ; preds = %253, %265, %267
  %270 = phi ptr [ %269, %267 ], [ %261, %265 ], [ %254, %253 ]
  %271 = phi ptr [ %268, %267 ], [ %266, %265 ], [ %251, %253 ]
  %272 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEaSERKS7_(ptr noundef nonnull align 8 dereferenceable(24) %270, ptr noundef nonnull align 8 dereferenceable(24) %271)
          to label %273 unwind label %255

273:                                              ; preds = %.invoke819, %263
  %274 = getelementptr inbounds i8, ptr %5, i64 232
  %275 = call noundef zeroext i1 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %274) #6
  br i1 %275, label %276, label %.thread437

276:                                              ; preds = %273
  invoke void @stacktrace_create(ptr noundef nonnull @.str.1, i64 noundef 613, i32 noundef 4208, ptr noundef null)
          to label %.thread516 unwind label %255

.thread437:                                       ; preds = %273, %229
  invoke void @_ZNSt6vectorIN7UapkiNS3Doc4Sign10SigningDocESaIS3_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %84)
          to label %.preheader559 unwind label %62

.preheader559:                                    ; preds = %.thread437
  %277 = call noundef i64 @_ZNKSt6vectorIN7UapkiNS3Doc4Sign10SigningDocESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #6
  %.not667 = icmp eq i64 %277, 0
  br i1 %.not667, label %._crit_edge641, label %.lr.ph640

.lr.ph640:                                        ; preds = %.preheader559
  %278 = getelementptr inbounds i8, ptr %5, i64 168
  br label %283

279:                                              ; preds = %294
  %280 = add nuw i64 %.0286639, 1
  %281 = call noundef i64 @_ZNKSt6vectorIN7UapkiNS3Doc4Sign10SigningDocESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #6
  %282 = icmp ult i64 %280, %281
  br i1 %282, label %283, label %._crit_edge641, !llvm.loop !49

283:                                              ; preds = %.lr.ph640, %279
  %.0286639 = phi i64 [ 0, %.lr.ph640 ], [ %280, %279 ]
  %284 = call noundef nonnull align 8 dereferenceable(464) ptr @_ZNSt6vectorIN7UapkiNS3Doc4Sign10SigningDocESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %.0286639) #6
  %285 = invoke noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc4initEPKNS2_10SignParamsE(ptr noundef nonnull align 8 dereferenceable(464) %284, ptr noundef nonnull %5)
          to label %286 unwind label %.loopexit560

286:                                              ; preds = %283
  %.not360 = icmp eq i32 %285, 0
  br i1 %.not360, label %288, label %287

287:                                              ; preds = %286
  invoke void @stacktrace_add(ptr noundef nonnull @.str.1, i64 noundef 621, i32 noundef %285)
          to label %.thread516 unwind label %.loopexit.split-lp561

.loopexit560:                                     ; preds = %283, %288, %290
  %lpad.loopexit562 = landingpad { ptr, i32 }
          cleanup
  br label %500

.loopexit.split-lp561:                            ; preds = %287, %293, %299
  %lpad.loopexit.split-lp563 = landingpad { ptr, i32 }
          cleanup
  br label %500

288:                                              ; preds = %286
  %289 = invoke ptr @json_array_get_object(ptr noundef %82, i64 noundef %.0286639)
          to label %290 unwind label %.loopexit560

290:                                              ; preds = %288
  %291 = invoke noundef i32 @_ZL19parse_doc_from_jsonRN7UapkiNS3Doc4Sign10SigningDocEP13json_object_t(ptr noundef nonnull align 8 dereferenceable(464) %284, ptr noundef %289)
          to label %292 unwind label %.loopexit560

292:                                              ; preds = %290
  %.not361 = icmp eq i32 %291, 0
  br i1 %.not361, label %294, label %293

293:                                              ; preds = %292
  invoke void @stacktrace_add(ptr noundef nonnull @.str.1, i64 noundef 622, i32 noundef %291)
          to label %.thread516 unwind label %.loopexit.split-lp561

294:                                              ; preds = %292
  %295 = getelementptr inbounds i8, ptr %284, i64 128
  %296 = call noundef i32 @_ZNK7UapkiNS13ContentHasher13getSourceTypeEv(ptr noundef nonnull align 8 dereferenceable(80) %295)
  %.not362 = icmp ne i32 %296, 1
  %297 = load i8, ptr %278, align 8, !range !31
  %298 = icmp eq i8 %297, 0
  %or.cond407 = select i1 %.not362, i1 %298, i1 false
  br i1 %or.cond407, label %299, label %279

299:                                              ; preds = %294
  invoke void @stacktrace_create(ptr noundef nonnull @.str.1, i64 noundef 627, i32 noundef 4101, ptr noundef null)
          to label %.thread516 unwind label %.loopexit.split-lp561

._crit_edge641:                                   ; preds = %279, %.preheader559
  %300 = load i32, ptr %5, align 8, !tbaa !36
  %.not363 = icmp eq i32 %300, 1
  %301 = call noundef i64 @_ZNKSt6vectorIN7UapkiNS3Doc4Sign10SigningDocESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #6
  %.not670 = icmp eq i64 %301, 0
  br i1 %.not363, label %.preheader524, label %.preheader553

.preheader553:                                    ; preds = %._crit_edge641
  br i1 %.not670, label %._crit_edge644, label %.lr.ph643

.preheader524:                                    ; preds = %._crit_edge641
  br i1 %.not670, label %._crit_edge659, label %.lr.ph658

.lr.ph643:                                        ; preds = %.preheader553, %328
  %.0288642 = phi i64 [ %329, %328 ], [ 0, %.preheader553 ]
  %302 = call noundef nonnull align 8 dereferenceable(464) ptr @_ZNSt6vectorIN7UapkiNS3Doc4Sign10SigningDocESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %.0288642) #6
  %303 = invoke noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc21setupSignerIdentifierEv(ptr noundef nonnull align 8 dereferenceable(464) %302)
          to label %304 unwind label %.loopexit554

304:                                              ; preds = %.lr.ph643
  %.not368 = icmp eq i32 %303, 0
  br i1 %.not368, label %306, label %305

305:                                              ; preds = %304
  invoke void @stacktrace_add(ptr noundef nonnull @.str.1, i64 noundef 635, i32 noundef %303)
          to label %.thread516 unwind label %.loopexit.split-lp555

.loopexit554:                                     ; preds = %.lr.ph643, %306, %313, %317, %321
  %lpad.loopexit556 = landingpad { ptr, i32 }
          cleanup
  br label %500

.loopexit.split-lp555:                            ; preds = %305, %309, %316, %320, %324
  %lpad.loopexit.split-lp557 = landingpad { ptr, i32 }
          cleanup
  br label %500

306:                                              ; preds = %304
  %307 = invoke noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc13digestMessageEv(ptr noundef nonnull align 8 dereferenceable(464) %302)
          to label %308 unwind label %.loopexit554

308:                                              ; preds = %306
  %.not369 = icmp eq i32 %307, 0
  br i1 %.not369, label %310, label %309

309:                                              ; preds = %308
  invoke void @stacktrace_add(ptr noundef nonnull @.str.1, i64 noundef 637, i32 noundef %307)
          to label %.thread516 unwind label %.loopexit.split-lp555

310:                                              ; preds = %308
  %311 = load i8, ptr %71, align 1, !tbaa !9, !range !31, !noundef !32
  %312 = trunc nuw i8 %311 to i1
  br i1 %312, label %313, label %317

313:                                              ; preds = %310
  %314 = invoke noundef i32 @_ZL22add_timestamp_to_attrsRN7UapkiNS13CertValidator13CertValidatorE10TsAttrTypeRNS_3Doc4Sign10SigningDocE(ptr noundef nonnull align 8 dereferenceable(88) %3, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(464) %302)
          to label %315 unwind label %.loopexit554

315:                                              ; preds = %313
  %.not370 = icmp eq i32 %314, 0
  br i1 %.not370, label %317, label %316

316:                                              ; preds = %315
  invoke void @stacktrace_add(ptr noundef nonnull @.str.1, i64 noundef 640, i32 noundef %314)
          to label %.thread516 unwind label %.loopexit.split-lp555

317:                                              ; preds = %310, %315
  %318 = invoke noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc21buildSignedAttributesEv(ptr noundef nonnull align 8 dereferenceable(464) %302)
          to label %319 unwind label %.loopexit554

319:                                              ; preds = %317
  %.not371 = icmp eq i32 %318, 0
  br i1 %.not371, label %321, label %320

320:                                              ; preds = %319
  invoke void @stacktrace_add(ptr noundef nonnull @.str.1, i64 noundef 643, i32 noundef %318)
          to label %.thread516 unwind label %.loopexit.split-lp555

321:                                              ; preds = %319
  %322 = invoke noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc22digestSignedAttributesEv(ptr noundef nonnull align 8 dereferenceable(464) %302)
          to label %323 unwind label %.loopexit554

323:                                              ; preds = %321
  %.not372 = icmp eq i32 %322, 0
  br i1 %.not372, label %325, label %324

324:                                              ; preds = %323
  invoke void @stacktrace_add(ptr noundef nonnull @.str.1, i64 noundef 644, i32 noundef %322)
          to label %.thread516 unwind label %.loopexit.split-lp555

325:                                              ; preds = %323
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #6
  %326 = getelementptr inbounds i8, ptr %302, i64 216
  %327 = call noundef ptr @_ZNK7UapkiNS7SmartBA3getEv(ptr noundef nonnull align 8 dereferenceable(8) %326)
  store ptr %327, ptr %17, align 8, !tbaa !43
  invoke void @_ZNSt6vectorIP12ByteArray_stSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %328 unwind label %332

328:                                              ; preds = %325
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #6
  %329 = add nuw i64 %.0288642, 1
  %330 = call noundef i64 @_ZNKSt6vectorIN7UapkiNS3Doc4Sign10SigningDocESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #6
  %331 = icmp ult i64 %329, %330
  br i1 %331, label %.lr.ph643, label %._crit_edge644, !llvm.loop !51

332:                                              ; preds = %325
  %333 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #6
  br label %500

._crit_edge644:                                   ; preds = %328, %.preheader553
  %334 = invoke noundef i32 @_ZN14CmStorageProxy7keySignERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPK12ByteArray_stRKSt6vectorIPS8_SaISC_EERSE_(ptr noundef nonnull align 8 dereferenceable(168) %42, ptr noundef nonnull align 8 dereferenceable(32) %89, ptr noundef null, ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(24) %8)
          to label %335 unwind label %62

335:                                              ; preds = %._crit_edge644
  %.not375 = icmp eq i32 %334, 0
  br i1 %.not375, label %.preheader545, label %339

.preheader545:                                    ; preds = %335
  %336 = call noundef i64 @_ZNKSt6vectorIN7UapkiNS3Doc4Sign10SigningDocESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #6
  %.not669 = icmp eq i64 %336, 0
  br i1 %.not669, label %.thread494, label %.lr.ph656

.lr.ph656:                                        ; preds = %.preheader545
  %337 = getelementptr inbounds i8, ptr %5, i64 172
  %338 = getelementptr inbounds i8, ptr %5, i64 4
  br label %344

339:                                              ; preds = %335
  invoke void @stacktrace_add(ptr noundef nonnull @.str.1, i64 noundef 653, i32 noundef %334)
          to label %.thread516 unwind label %62

340:                                              ; preds = %438
  %341 = add nuw i64 %.0287655, 1
  %342 = call noundef i64 @_ZNKSt6vectorIN7UapkiNS3Doc4Sign10SigningDocESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #6
  %343 = icmp ult i64 %341, %342
  br i1 %343, label %344, label %.thread494, !llvm.loop !52

344:                                              ; preds = %.lr.ph656, %340
  %.0287655 = phi i64 [ 0, %.lr.ph656 ], [ %341, %340 ]
  %345 = call noundef nonnull align 8 dereferenceable(464) ptr @_ZNSt6vectorIN7UapkiNS3Doc4Sign10SigningDocESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %.0287655) #6
  %346 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP12ByteArray_stSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %.0287655) #6
  %347 = load ptr, ptr %346, align 8, !tbaa !43
  %348 = invoke noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc12setSignatureEPK12ByteArray_st(ptr noundef nonnull align 8 dereferenceable(464) %345, ptr noundef %347)
          to label %349 unwind label %.loopexit547

349:                                              ; preds = %344
  %.not376 = icmp eq i32 %348, 0
  br i1 %.not376, label %351, label %350

350:                                              ; preds = %349
  invoke void @stacktrace_add(ptr noundef nonnull @.str.1, i64 noundef 657, i32 noundef %348)
          to label %.thread516 unwind label %.loopexit.split-lp548

.loopexit547:                                     ; preds = %344, %355, %425, %432, %436
  %lpad.loopexit549 = landingpad { ptr, i32 }
          cleanup
  br label %500

.loopexit.split-lp548:                            ; preds = %350, %358, %428, %435, %439
  %lpad.loopexit.split-lp550 = landingpad { ptr, i32 }
          cleanup
  br label %500

351:                                              ; preds = %349
  %352 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP12ByteArray_stSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %.0287655) #6
  store ptr null, ptr %352, align 8, !tbaa !43
  %353 = load i8, ptr %337, align 4, !tbaa !33, !range !31, !noundef !32
  %354 = trunc nuw i8 %353 to i1
  br i1 %354, label %355, label %359

355:                                              ; preds = %351
  %356 = invoke noundef i32 @_ZL22add_timestamp_to_attrsRN7UapkiNS13CertValidator13CertValidatorE10TsAttrTypeRNS_3Doc4Sign10SigningDocE(ptr noundef nonnull align 8 dereferenceable(88) %3, i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(464) %345)
          to label %357 unwind label %.loopexit547

357:                                              ; preds = %355
  %.not377 = icmp eq i32 %356, 0
  br i1 %.not377, label %359, label %358

358:                                              ; preds = %357
  invoke void @stacktrace_add(ptr noundef nonnull @.str.1, i64 noundef 661, i32 noundef %356)
          to label %.thread516 unwind label %.loopexit.split-lp548

359:                                              ; preds = %357, %351
  %360 = load i8, ptr %338, align 4, !tbaa !44, !range !31, !noundef !32
  %361 = trunc nuw i8 %360 to i1
  br i1 %361, label %362, label %425

362:                                              ; preds = %359
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %18) #6
  call void @_ZNSt6vectorIPN7UapkiNS4Cert7CerItemESaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %19) #6
  invoke void @_ZN7UapkiNS3Doc4Sign10SigningDoc8getCertsEv(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.18") align 8 %19, ptr noundef nonnull align 8 dereferenceable(464) %345)
          to label %363 unwind label %367

363:                                              ; preds = %362
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #6
  %364 = call ptr @_ZNSt6vectorIPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %19) #6
  store ptr %364, ptr %20, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #6
  %365 = call ptr @_ZNSt6vectorIPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %19) #6
  store ptr %365, ptr %21, align 8
  %366 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %21) #6
  br i1 %366, label %.lr.ph646, label %._crit_edge647

367:                                              ; preds = %362
  %368 = landingpad { ptr, i32 }
          cleanup
  br label %424

.lr.ph646:                                        ; preds = %363, %376
  %369 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #6
  %370 = load ptr, ptr %369, align 8, !tbaa !43
  %371 = load ptr, ptr %370, align 8, !tbaa !53
  %372 = invoke noundef i32 @_ZN7UapkiNS4Cert8CerStore13getChainCertsEPKNS0_7CerItemERSt6vectorIPS2_SaIS6_EE(ptr noundef nonnull align 8 dereferenceable(96) %49, ptr noundef %371, ptr noundef nonnull align 8 dereferenceable(24) %18)
          to label %373 unwind label %.loopexit540

373:                                              ; preds = %.lr.ph646
  %.not378 = icmp eq i32 %372, 0
  br i1 %.not378, label %376, label %374

374:                                              ; preds = %373
  invoke void @stacktrace_add(ptr noundef nonnull @.str.1, i64 noundef 667, i32 noundef %372)
          to label %379 unwind label %.loopexit.split-lp541

.loopexit540:                                     ; preds = %.lr.ph646
  %lpad.loopexit542 = landingpad { ptr, i32 }
          cleanup
  br label %375

.loopexit.split-lp541:                            ; preds = %374
  %lpad.loopexit.split-lp543 = landingpad { ptr, i32 }
          cleanup
  br label %375

375:                                              ; preds = %.loopexit.split-lp541, %.loopexit540
  %lpad.phi544 = phi { ptr, i32 } [ %lpad.loopexit542, %.loopexit540 ], [ %lpad.loopexit.split-lp543, %.loopexit.split-lp541 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #6
  call void @_ZNSt6vectorIPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #6
  br label %424

376:                                              ; preds = %373
  %377 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #6
  %378 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %21) #6
  br i1 %378, label %.lr.ph646, label %._crit_edge647

379:                                              ; preds = %374
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #6
  call void @_ZNSt6vectorIPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #6
  br label %.thread485

._crit_edge647:                                   ; preds = %376, %363
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #6
  call void @_ZNSt6vectorIPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #6
  %380 = call ptr @_ZNSt6vectorIPN7UapkiNS4Cert7CerItemESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %18) #6
  store ptr %380, ptr %22, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #6
  %381 = call ptr @_ZNSt6vectorIPN7UapkiNS4Cert7CerItemESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %18) #6
  store ptr %381, ptr %23, align 8
  %382 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN7UapkiNS4Cert7CerItemESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %23) #6
  br i1 %382, label %.lr.ph649, label %._crit_edge650

.lr.ph649:                                        ; preds = %._crit_edge647, %389
  %383 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPN7UapkiNS4Cert7CerItemESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #6
  %384 = load ptr, ptr %383, align 8, !tbaa !43
  %385 = invoke noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc7addCertEPNS_4Cert7CerItemE(ptr noundef nonnull align 8 dereferenceable(464) %345, ptr noundef %384)
          to label %386 unwind label %.loopexit535

386:                                              ; preds = %.lr.ph649
  %.not381 = icmp eq i32 %385, 0
  br i1 %.not381, label %389, label %387

387:                                              ; preds = %386
  invoke void @stacktrace_add(ptr noundef nonnull @.str.1, i64 noundef 670, i32 noundef %385)
          to label %392 unwind label %.loopexit.split-lp536

.loopexit535:                                     ; preds = %.lr.ph649
  %lpad.loopexit537 = landingpad { ptr, i32 }
          cleanup
  br label %388

.loopexit.split-lp536:                            ; preds = %387
  %lpad.loopexit.split-lp538 = landingpad { ptr, i32 }
          cleanup
  br label %388

388:                                              ; preds = %.loopexit.split-lp536, %.loopexit535
  %lpad.phi539 = phi { ptr, i32 } [ %lpad.loopexit537, %.loopexit535 ], [ %lpad.loopexit.split-lp538, %.loopexit.split-lp536 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #6
  br label %424

389:                                              ; preds = %386
  %390 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPPN7UapkiNS4Cert7CerItemESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #6
  %391 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN7UapkiNS4Cert7CerItemESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %23) #6
  br i1 %391, label %.lr.ph649, label %._crit_edge650

392:                                              ; preds = %387
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #6
  br label %.thread485

._crit_edge650:                                   ; preds = %389, %._crit_edge647
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %24) #6
  invoke void @_ZN7UapkiNS3Doc4Sign10SigningDoc8getCertsEv(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.18") align 8 %24, ptr noundef nonnull align 8 dereferenceable(464) %345)
          to label %393 unwind label %397

393:                                              ; preds = %._crit_edge650
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #6
  %394 = call ptr @_ZNKSt6vectorIPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %24) #6
  store ptr %394, ptr %25, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #6
  %395 = call ptr @_ZNKSt6vectorIPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %24) #6
  store ptr %395, ptr %26, align 8
  %396 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %26) #6
  br i1 %396, label %.lr.ph652, label %._crit_edge653

397:                                              ; preds = %._crit_edge650
  %398 = landingpad { ptr, i32 }
          cleanup
  br label %423

.lr.ph652:                                        ; preds = %393, %418
  %399 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %25) #6
  %400 = load i32, ptr %5, align 8, !tbaa !36
  %.not382 = icmp eq i32 %400, 5
  %401 = load ptr, ptr %399, align 8, !tbaa !43
  br i1 %.not382, label %414, label %402

402:                                              ; preds = %.lr.ph652
  %403 = invoke noundef i32 @_ZL23get_cert_status_by_ocspRN7UapkiNS13CertValidator13CertValidatorERNS_3Doc4Sign10SigningDoc10SignParamsERNS5_11CerDataItemE(ptr noundef nonnull align 8 dereferenceable(88) %3, ptr noundef nonnull align 8 dereferenceable(360) %5, ptr noundef nonnull align 8 dereferenceable(64) %401)
          to label %404 unwind label %.loopexit530

404:                                              ; preds = %402
  switch i32 %403, label %413 [
    i32 0, label %405
    i32 4192, label %418
  ]

405:                                              ; preds = %404
  %406 = load ptr, ptr %399, align 8, !tbaa !43
  %407 = getelementptr inbounds i8, ptr %406, i64 56
  %408 = load ptr, ptr %407, align 8, !tbaa !54
  %409 = invoke noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc7addCertEPNS_4Cert7CerItemE(ptr noundef nonnull align 8 dereferenceable(464) %345, ptr noundef %408)
          to label %410 unwind label %.loopexit530

410:                                              ; preds = %405
  %.not384 = icmp eq i32 %409, 0
  br i1 %.not384, label %418, label %411

411:                                              ; preds = %410
  invoke void @stacktrace_add(ptr noundef nonnull @.str.1, i64 noundef 678, i32 noundef %409)
          to label %.thread479 unwind label %.loopexit.split-lp531

.loopexit530:                                     ; preds = %402, %405, %414
  %lpad.loopexit532 = landingpad { ptr, i32 }
          cleanup
  br label %412

.loopexit.split-lp531:                            ; preds = %411, %413, %417
  %lpad.loopexit.split-lp533 = landingpad { ptr, i32 }
          cleanup
  br label %412

412:                                              ; preds = %.loopexit.split-lp531, %.loopexit530
  %lpad.phi534 = phi { ptr, i32 } [ %lpad.loopexit532, %.loopexit530 ], [ %lpad.loopexit.split-lp533, %.loopexit.split-lp531 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #6
  call void @_ZNSt6vectorIPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #6
  br label %423

413:                                              ; preds = %404
  invoke void @stacktrace_create(ptr noundef nonnull @.str.1, i64 noundef 684, i32 noundef %403, ptr noundef null)
          to label %.thread479 unwind label %.loopexit.split-lp531

414:                                              ; preds = %.lr.ph652
  %415 = invoke noundef i32 @_ZL22get_cert_status_by_crlRN7UapkiNS13CertValidator13CertValidatorERNS_3Doc4Sign10SigningDoc11CerDataItemE(ptr noundef nonnull align 8 dereferenceable(88) %3, ptr noundef nonnull align 8 dereferenceable(64) %401)
          to label %416 unwind label %.loopexit530

416:                                              ; preds = %414
  %.not383 = icmp eq i32 %415, 0
  br i1 %.not383, label %418, label %417

417:                                              ; preds = %416
  invoke void @stacktrace_add(ptr noundef nonnull @.str.1, i64 noundef 688, i32 noundef %415)
          to label %.thread479 unwind label %.loopexit.split-lp531

418:                                              ; preds = %404, %416, %410
  %.26.ph = phi i32 [ %403, %404 ], [ 0, %416 ], [ 0, %410 ]
  %419 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %25) #6
  %420 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %26) #6
  br i1 %420, label %.lr.ph652, label %._crit_edge653

.thread479:                                       ; preds = %411, %413, %417
  %.27.ph = phi i32 [ %415, %417 ], [ %403, %413 ], [ %409, %411 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #6
  br label %421

._crit_edge653:                                   ; preds = %418, %393
  %.24.lcssa = phi i32 [ 0, %393 ], [ %.26.ph, %418 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #6
  br label %421

.thread485:                                       ; preds = %392, %379
  %.28.ph = phi i32 [ %372, %379 ], [ %385, %392 ]
  call void @_ZNSt6vectorIPN7UapkiNS4Cert7CerItemESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #6
  br label %.thread516

421:                                              ; preds = %._crit_edge653, %.thread479
  %422 = phi i1 [ false, %._crit_edge653 ], [ true, %.thread479 ]
  %.27483 = phi i32 [ %.24.lcssa, %._crit_edge653 ], [ %.27.ph, %.thread479 ]
  call void @_ZNSt6vectorIPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24) #6
  call void @_ZNSt6vectorIPN7UapkiNS4Cert7CerItemESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #6
  br i1 %422, label %.thread512, label %425

423:                                              ; preds = %412, %397
  %.pn385 = phi { ptr, i32 } [ %lpad.phi534, %412 ], [ %398, %397 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24) #6
  br label %424

424:                                              ; preds = %367, %375, %423, %388
  %.pn385.pn = phi { ptr, i32 } [ %.pn385, %423 ], [ %lpad.phi539, %388 ], [ %lpad.phi544, %375 ], [ %368, %367 ]
  call void @_ZNSt6vectorIPN7UapkiNS4Cert7CerItemESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #6
  br label %500

425:                                              ; preds = %421, %359
  %426 = invoke noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc23buildUnsignedAttributesEv(ptr noundef nonnull align 8 dereferenceable(464) %345)
          to label %427 unwind label %.loopexit547

427:                                              ; preds = %425
  %.not388 = icmp eq i32 %426, 0
  br i1 %.not388, label %429, label %428

428:                                              ; preds = %427
  invoke void @stacktrace_add(ptr noundef nonnull @.str.1, i64 noundef 693, i32 noundef %426)
          to label %.thread516 unwind label %.loopexit.split-lp548

429:                                              ; preds = %427
  %430 = load i32, ptr %5, align 8, !tbaa !36
  %431 = icmp eq i32 %430, 7
  br i1 %431, label %432, label %436

432:                                              ; preds = %429
  %433 = invoke noundef i32 @_ZL22add_timestamp_to_attrsRN7UapkiNS13CertValidator13CertValidatorE10TsAttrTypeRNS_3Doc4Sign10SigningDocE(ptr noundef nonnull align 8 dereferenceable(88) %3, i32 noundef 3, ptr noundef nonnull align 8 dereferenceable(464) %345)
          to label %434 unwind label %.loopexit547

434:                                              ; preds = %432
  %.not389 = icmp eq i32 %433, 0
  br i1 %.not389, label %436, label %435

435:                                              ; preds = %434
  invoke void @stacktrace_add(ptr noundef nonnull @.str.1, i64 noundef 695, i32 noundef %433)
          to label %.thread516 unwind label %.loopexit.split-lp548

436:                                              ; preds = %429, %434
  %437 = invoke noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc15buildSignedDataEv(ptr noundef nonnull align 8 dereferenceable(464) %345)
          to label %438 unwind label %.loopexit547

438:                                              ; preds = %436
  %.not390 = icmp eq i32 %437, 0
  br i1 %.not390, label %340, label %439

439:                                              ; preds = %438
  invoke void @stacktrace_add(ptr noundef nonnull @.str.1, i64 noundef 697, i32 noundef %437)
          to label %.thread516 unwind label %.loopexit.split-lp548

.lr.ph658:                                        ; preds = %.preheader524, %447
  %.0233657 = phi i64 [ %448, %447 ], [ 0, %.preheader524 ]
  %440 = call noundef nonnull align 8 dereferenceable(464) ptr @_ZNSt6vectorIN7UapkiNS3Doc4Sign10SigningDocESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %.0233657) #6
  %441 = invoke noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc13digestMessageEv(ptr noundef nonnull align 8 dereferenceable(464) %440)
          to label %442 unwind label %.loopexit525

442:                                              ; preds = %.lr.ph658
  %.not364 = icmp eq i32 %441, 0
  br i1 %.not364, label %444, label %443

443:                                              ; preds = %442
  invoke void @stacktrace_add(ptr noundef nonnull @.str.1, i64 noundef 703, i32 noundef %441)
          to label %.thread516 unwind label %.loopexit.split-lp526

.loopexit525:                                     ; preds = %.lr.ph658
  %lpad.loopexit527 = landingpad { ptr, i32 }
          cleanup
  br label %500

.loopexit.split-lp526:                            ; preds = %443
  %lpad.loopexit.split-lp528 = landingpad { ptr, i32 }
          cleanup
  br label %500

444:                                              ; preds = %442
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #6
  %445 = getelementptr inbounds i8, ptr %440, i64 208
  %446 = call noundef ptr @_ZNK7UapkiNS7SmartBA3getEv(ptr noundef nonnull align 8 dereferenceable(8) %445)
  store ptr %446, ptr %27, align 8, !tbaa !43
  invoke void @_ZNSt6vectorIP12ByteArray_stSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(8) %27)
          to label %447 unwind label %451

447:                                              ; preds = %444
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #6
  %448 = add nuw i64 %.0233657, 1
  %449 = call noundef i64 @_ZNKSt6vectorIN7UapkiNS3Doc4Sign10SigningDocESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #6
  %450 = icmp ult i64 %448, %449
  br i1 %450, label %.lr.ph658, label %._crit_edge659, !llvm.loop !55

451:                                              ; preds = %444
  %452 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #6
  br label %500

._crit_edge659:                                   ; preds = %447, %.preheader524
  %453 = invoke noundef i32 @_ZN14CmStorageProxy7keySignERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPK12ByteArray_stRKSt6vectorIPS8_SaISC_EERSE_(ptr noundef nonnull align 8 dereferenceable(168) %42, ptr noundef nonnull align 8 dereferenceable(32) %89, ptr noundef null, ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(24) %8)
          to label %454 unwind label %62

454:                                              ; preds = %._crit_edge659
  %.not367 = icmp eq i32 %453, 0
  br i1 %.not367, label %.preheader523, label %456

.preheader523:                                    ; preds = %454
  %455 = call noundef i64 @_ZNKSt6vectorIN7UapkiNS3Doc4Sign10SigningDocESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #6
  %.not671 = icmp eq i64 %455, 0
  br i1 %.not671, label %.thread494, label %.lr.ph661

456:                                              ; preds = %454
  invoke void @stacktrace_add(ptr noundef nonnull @.str.1, i64 noundef 712, i32 noundef %453)
          to label %.thread516 unwind label %62

.lr.ph661:                                        ; preds = %.preheader523, %.lr.ph661
  %.0229660 = phi i64 [ %463, %.lr.ph661 ], [ 0, %.preheader523 ]
  %457 = call noundef nonnull align 8 dereferenceable(464) ptr @_ZNSt6vectorIN7UapkiNS3Doc4Sign10SigningDocESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %.0229660) #6
  %458 = getelementptr inbounds i8, ptr %457, i64 224
  %459 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP12ByteArray_stSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %.0229660) #6
  %460 = load ptr, ptr %459, align 8, !tbaa !43
  %461 = call noundef zeroext i1 @_ZN7UapkiNS7SmartBA3setEP12ByteArray_st(ptr noundef nonnull align 8 dereferenceable(8) %458, ptr noundef %460)
  %462 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP12ByteArray_stSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %.0229660) #6
  store ptr null, ptr %462, align 8, !tbaa !43
  %463 = add nuw i64 %.0229660, 1
  %464 = call noundef i64 @_ZNKSt6vectorIN7UapkiNS3Doc4Sign10SigningDocESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #6
  %465 = icmp ult i64 %463, %464
  br i1 %465, label %.lr.ph661, label %.thread494, !llvm.loop !56

.thread494:                                       ; preds = %340, %.lr.ph661, %.preheader545, %.preheader523
  %466 = invoke ptr @json_value_init_array()
          to label %467 unwind label %62

467:                                              ; preds = %.thread494
  %468 = invoke i32 @json_object_set_value(ptr noundef %1, ptr noundef nonnull @.str.4, ptr noundef %466)
          to label %469 unwind label %62

469:                                              ; preds = %467
  %.not393 = icmp eq i32 %468, 0
  br i1 %.not393, label %470, label %.thread516

470:                                              ; preds = %469
  %471 = invoke ptr @json_object_get_array(ptr noundef %1, ptr noundef nonnull @.str.4)
          to label %.preheader unwind label %62

.preheader:                                       ; preds = %470
  %472 = call noundef i64 @_ZNKSt6vectorIN7UapkiNS3Doc4Sign10SigningDocESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #6
  %.not672 = icmp eq i64 %472, 0
  br i1 %.not672, label %.thread512.thread, label %.lr.ph663

473:                                              ; preds = %496
  %474 = add nuw i64 %.0228662, 1
  %475 = call noundef i64 @_ZNKSt6vectorIN7UapkiNS3Doc4Sign10SigningDocESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #6
  %476 = icmp ult i64 %474, %475
  br i1 %476, label %.lr.ph663, label %.thread512.thread, !llvm.loop !57

.lr.ph663:                                        ; preds = %.preheader, %473
  %.0228662 = phi i64 [ %474, %473 ], [ 0, %.preheader ]
  %477 = call noundef nonnull align 8 dereferenceable(464) ptr @_ZNSt6vectorIN7UapkiNS3Doc4Sign10SigningDocESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %.0228662) #6
  %478 = invoke ptr @json_value_init_object()
          to label %479 unwind label %.loopexit

479:                                              ; preds = %.lr.ph663
  %480 = invoke i32 @json_array_append_value(ptr noundef %471, ptr noundef %478)
          to label %481 unwind label %.loopexit

481:                                              ; preds = %479
  %.not394 = icmp eq i32 %480, 0
  br i1 %.not394, label %482, label %.thread516

.loopexit:                                        ; preds = %.lr.ph663, %479, %482, %487, %492, %494
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %500

.loopexit.split-lp:                               ; preds = %486
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %500

482:                                              ; preds = %481
  %483 = invoke ptr @json_array_get_object(ptr noundef %471, i64 noundef %.0228662)
          to label %484 unwind label %.loopexit

484:                                              ; preds = %482
  %485 = icmp eq ptr %483, null
  br i1 %485, label %486, label %487

486:                                              ; preds = %484
  invoke void @stacktrace_create(ptr noundef nonnull @.str.1, i64 noundef 727, i32 noundef 4097, ptr noundef null)
          to label %.thread516 unwind label %.loopexit.split-lp

487:                                              ; preds = %484
  %488 = getelementptr inbounds i8, ptr %477, i64 56
  %489 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %488) #6
  %490 = invoke i32 @json_object_set_string(ptr noundef nonnull %483, ptr noundef nonnull @.str.5, ptr noundef %489)
          to label %491 unwind label %.loopexit

491:                                              ; preds = %487
  %.not395 = icmp eq i32 %490, 0
  br i1 %.not395, label %492, label %.thread516

492:                                              ; preds = %491
  %493 = invoke noundef ptr @_ZN7UapkiNS3Doc4Sign10SigningDoc10getEncodedEv(ptr noundef nonnull align 8 dereferenceable(464) %477)
          to label %494 unwind label %.loopexit

494:                                              ; preds = %492
  %495 = invoke i32 @json_object_set_base64(ptr noundef nonnull %483, ptr noundef nonnull @.str.6, ptr noundef %493)
          to label %496 unwind label %.loopexit

496:                                              ; preds = %494
  %.not396 = icmp eq i32 %495, 0
  br i1 %.not396, label %473, label %.thread516

.thread512:                                       ; preds = %421
  %.not397 = icmp eq i32 %.27483, 0
  br i1 %.not397, label %.thread512.thread, label %.thread516

.thread516:                                       ; preds = %496, %481, %491, %.invoke, %486, %350, %358, %428, %435, %439, %.thread485, %443, %305, %309, %316, %320, %324, %287, %293, %299, %276, %.thread433, %.thread426, %469, %161, %157, %456, %339, %142, %94, %87, %80, %57, %.thread512
  %.37519 = phi i32 [ %.27483, %.thread512 ], [ %441, %443 ], [ %303, %305 ], [ %307, %309 ], [ %314, %316 ], [ %318, %320 ], [ %322, %324 ], [ %285, %287 ], [ %291, %293 ], [ 4101, %299 ], [ 4208, %276 ], [ %.6268.ph, %.thread433 ], [ %.8270.ph, %.thread426 ], [ 4113, %469 ], [ %159, %161 ], [ %155, %157 ], [ %453, %456 ], [ %334, %339 ], [ %140, %142 ], [ %92, %94 ], [ 4101, %87 ], [ 4120, %80 ], [ %55, %57 ], [ %348, %350 ], [ %356, %358 ], [ %426, %428 ], [ %433, %435 ], [ %437, %439 ], [ %.28.ph, %.thread485 ], [ 4097, %486 ], [ 4110, %.invoke ], [ 4113, %491 ], [ 4113, %481 ], [ 4113, %496 ]
  %497 = invoke noundef i32 @_ZN7UapkiNS13CertValidator13CertValidator23expectedCertItemsToJsonEP13json_object_tPKc(ptr noundef nonnull align 8 dereferenceable(88) %3, ptr noundef %1, ptr noundef nonnull @.str.7)
          to label %498 unwind label %62

498:                                              ; preds = %.thread516
  %499 = invoke noundef i32 @_ZN7UapkiNS13CertValidator13CertValidator22expectedCrlItemsToJsonEP13json_object_tPKc(ptr noundef nonnull align 8 dereferenceable(88) %3, ptr noundef %1, ptr noundef nonnull @.str.8)
          to label %.thread512.thread unwind label %62

.thread512.thread:                                ; preds = %473, %.preheader, %.thread512, %498
  %.0 = phi i32 [ %.37519, %498 ], [ 0, %.thread512 ], [ 0, %.preheader ], [ 0, %473 ]
  call void @_ZN7UapkiNS8VectorBAD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #6
  call void @_ZNSt6vectorIP12ByteArray_stSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #6
  call void @_ZNSt6vectorIN7UapkiNS3Doc4Sign10SigningDocESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #6
  call void @_ZN7UapkiNS3Doc4Sign10SigningDoc10SignParamsD1Ev(ptr noundef nonnull align 8 dereferenceable(360) %5) #6
  call void @llvm.lifetime.end.p0(i64 360, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #6
  br label %503

500:                                              ; preds = %.loopexit, %.loopexit.split-lp, %.loopexit525, %.loopexit.split-lp526, %.loopexit547, %.loopexit.split-lp548, %.loopexit554, %.loopexit.split-lp555, %.loopexit560, %.loopexit.split-lp561, %451, %424, %332, %255, %225, %117, %62
  %.pn398 = phi { ptr, i32 } [ %63, %62 ], [ %256, %255 ], [ %.pn357, %225 ], [ %.pn, %117 ], [ %333, %332 ], [ %.pn385.pn, %424 ], [ %452, %451 ], [ %lpad.loopexit562, %.loopexit560 ], [ %lpad.loopexit.split-lp563, %.loopexit.split-lp561 ], [ %lpad.loopexit556, %.loopexit554 ], [ %lpad.loopexit.split-lp557, %.loopexit.split-lp555 ], [ %lpad.loopexit549, %.loopexit547 ], [ %lpad.loopexit.split-lp550, %.loopexit.split-lp548 ], [ %lpad.loopexit527, %.loopexit525 ], [ %lpad.loopexit.split-lp528, %.loopexit.split-lp526 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @_ZN7UapkiNS8VectorBAD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #6
  br label %501

501:                                              ; preds = %500, %60
  %.pn398.pn = phi { ptr, i32 } [ %.pn398, %500 ], [ %61, %60 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #6
  call void @_ZNSt6vectorIP12ByteArray_stSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #6
  call void @_ZNSt6vectorIN7UapkiNS3Doc4Sign10SigningDocESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #6
  call void @_ZN7UapkiNS3Doc4Sign10SigningDoc10SignParamsD1Ev(ptr noundef nonnull align 8 dereferenceable(360) %5) #6
  br label %502

502:                                              ; preds = %501, %58
  %.pn398.pn.pn = phi { ptr, i32 } [ %.pn398.pn, %501 ], [ %59, %58 ]
  call void @llvm.lifetime.end.p0(i64 360, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #6
  br label %504

503:                                              ; preds = %.thread512.thread, %43, %46, %38, %35
  %.2 = phi i32 [ 4097, %35 ], [ 4105, %38 ], [ %.0, %.thread512.thread ], [ 4121, %43 ], [ 4108, %46 ]
  call void @_ZN7UapkiNS13CertValidator13CertValidatorD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %3) #6
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %3) #6
  ret i32 %.2

504:                                              ; preds = %44, %502, %36
  %.pn398.pn.pn.pn.pn = phi { ptr, i32 } [ %37, %36 ], [ %.pn398.pn.pn, %502 ], [ %45, %44 ]
  call void @_ZN7UapkiNS13CertValidator13CertValidatorD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %3) #6
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %3) #6
  resume { ptr, i32 } %.pn398.pn.pn.pn.pn
}

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

declare void @_ZN7UapkiNS13CertValidator13CertValidatorC1Ev(ptr noundef nonnull align 8 dereferenceable(88)) unnamed_addr #2

declare noundef zeroext i1 @_ZN7UapkiNS13CertValidator13CertValidator4initEPNS_13LibraryConfigEPNS_4Cert8CerStoreEPNS_3Crl8CrlStoreE(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare noundef ptr @_ZN7UapkiNS10get_configEv() local_unnamed_addr #2

declare i32 @__gxx_personality_v0(...)

declare noundef ptr @_ZN7UapkiNS12get_cerstoreEv() local_unnamed_addr #2

declare noundef ptr @_ZN7UapkiNS12get_crlstoreEv() local_unnamed_addr #2

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

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

declare noundef ptr @_ZN11CmProviders13openedStorageEv() local_unnamed_addr #2

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

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

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

declare void @_ZN7UapkiNS3Doc4Sign10SigningDoc10SignParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(360)) unnamed_addr #2

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL17parse_sign_paramsP13json_object_tRN7UapkiNS3Doc4Sign10SigningDoc10SignParamsE(ptr noundef, ptr noundef nonnull align 8 dereferenceable(360)) local_unnamed_addr #0

declare ptr @json_object_get_object(ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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

declare ptr @json_object_get_array(ptr noundef, ptr noundef) local_unnamed_addr #2

declare i64 @json_array_get_count(ptr noundef) local_unnamed_addr #2

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

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

declare i32 @hash_from_oid(ptr noundef) local_unnamed_addr #2

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

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

declare ptr @hash_to_oid(i32 noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL22get_cert_status_by_crlRN7UapkiNS13CertValidator13CertValidatorERNS_3Doc4Sign10SigningDoc11CerDataItemE(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(64)) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL23get_cert_status_by_ocspRN7UapkiNS13CertValidator13CertValidatorERNS_3Doc4Sign10SigningDoc10SignParamsERNS5_11CerDataItemE(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(360), ptr noundef nonnull align 8 dereferenceable(64)) local_unnamed_addr #0

declare noundef i32 @_ZN7UapkiNS4Cert7CerItem17generateEssCertIdERKNS_19AlgorithmIdentifierEPPKNS_10AttrCertIdE(ptr noundef nonnull align 8 dereferenceable(401), ptr noundef nonnull align 8 dereferenceable(40), ptr noundef) local_unnamed_addr #2

declare noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc24encodeSigningCertificateERKNS_10AttrCertIdERNS_9AttributeE(ptr noundef nonnull align 8 dereferenceable(64), ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #2

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

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

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

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

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

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

declare noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc10SignParams7addCertEPNS_4Cert7CerItemE(ptr noundef nonnull align 8 dereferenceable(360), ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(72) ptr @_ZNK7UapkiNS13LibraryConfig6getTspEv(ptr noundef nonnull align 8 dereferenceable(97)) local_unnamed_addr #3 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 #0 align 2

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

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

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

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

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

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

declare noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc4initEPKNS2_10SignParamsE(ptr noundef nonnull align 8 dereferenceable(464), ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL19parse_doc_from_jsonRN7UapkiNS3Doc4Sign10SigningDocEP13json_object_t(ptr noundef nonnull align 8 dereferenceable(464), ptr noundef) local_unnamed_addr #0

declare ptr @json_array_get_object(ptr noundef, i64 noundef) local_unnamed_addr #2

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

declare noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc21setupSignerIdentifierEv(ptr noundef nonnull align 8 dereferenceable(464)) local_unnamed_addr #2

declare noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc13digestMessageEv(ptr noundef nonnull align 8 dereferenceable(464)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL22add_timestamp_to_attrsRN7UapkiNS13CertValidator13CertValidatorE10TsAttrTypeRNS_3Doc4Sign10SigningDocE(ptr noundef nonnull align 8 dereferenceable(88), i32 noundef, ptr noundef nonnull align 8 dereferenceable(464)) local_unnamed_addr #0

declare noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc21buildSignedAttributesEv(ptr noundef nonnull align 8 dereferenceable(464)) local_unnamed_addr #2

declare noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc22digestSignedAttributesEv(ptr noundef nonnull align 8 dereferenceable(464)) local_unnamed_addr #2

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

declare noundef i32 @_ZN14CmStorageProxy7keySignERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPK12ByteArray_stRKSt6vectorIPS8_SaISC_EERSE_(ptr noundef nonnull align 8 dereferenceable(168), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2

declare noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc12setSignatureEPK12ByteArray_st(ptr noundef nonnull align 8 dereferenceable(464), ptr noundef) local_unnamed_addr #2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7UapkiNS3Doc4Sign10SigningDoc8getCertsEv(ptr dead_on_unwind noalias writable sret(%"class.std::vector.18") align 8, ptr noundef nonnull align 8 dereferenceable(464)) local_unnamed_addr #0 align 2

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

declare noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc7addCertEPNS_4Cert7CerItemE(ptr noundef nonnull align 8 dereferenceable(464), ptr noundef) local_unnamed_addr #2

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

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

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

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

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

declare noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc23buildUnsignedAttributesEv(ptr noundef nonnull align 8 dereferenceable(464)) local_unnamed_addr #2

declare noundef i32 @_ZN7UapkiNS3Doc4Sign10SigningDoc15buildSignedDataEv(ptr noundef nonnull align 8 dereferenceable(464)) local_unnamed_addr #2

; 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 #3 align 2

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

declare ptr @json_value_init_array() local_unnamed_addr #2

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

declare ptr @json_value_init_object() local_unnamed_addr #2

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

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

declare noundef ptr @_ZN7UapkiNS3Doc4Sign10SigningDoc10getEncodedEv(ptr noundef nonnull align 8 dereferenceable(464)) local_unnamed_addr #2

declare noundef i32 @_ZN7UapkiNS13CertValidator13CertValidator23expectedCertItemsToJsonEP13json_object_tPKc(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef, ptr noundef) local_unnamed_addr #2

declare noundef i32 @_ZN7UapkiNS13CertValidator13CertValidator22expectedCrlItemsToJsonEP13json_object_tPKc(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

; Function Attrs: nounwind
declare void @_ZN7UapkiNS3Doc4Sign10SigningDoc10SignParamsD1Ev(ptr noundef nonnull align 8 dereferenceable(360)) unnamed_addr #5

; Function Attrs: nounwind
declare void @_ZN7UapkiNS13CertValidator13CertValidatorD1Ev(ptr noundef nonnull align 8 dereferenceable(88)) unnamed_addr #5

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !12, i64 171}
!10 = !{!"_ZTSN7UapkiNS3Doc4Sign10SigningDoc10SignParamsE", !11, i64 0, !12, i64 4, !12, i64 5, !13, i64 8, !13, i64 12, !14, i64 16, !14, i64 56, !18, i64 96, !19, i64 160, !12, i64 168, !12, i64 169, !12, i64 170, !12, i64 171, !12, i64 172, !12, i64 173, !20, i64 176, !21, i64 184, !26, i64 256, !26, i64 296, !27, i64 336}
!11 = !{!"_ZTSN7UapkiNS15SignatureFormatE", !7, i64 0}
!12 = !{!"bool", !7, i64 0}
!13 = !{!"_ZTS7HashAlg", !7, i64 0}
!14 = !{!"_ZTSN7UapkiNS19AlgorithmIdentifierE", !15, i64 0, !17, i64 32}
!15 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !16, i64 0, !6, i64 8, !7, i64 16}
!16 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !17, i64 0}
!17 = !{!"any pointer", !7, i64 0}
!18 = !{!"_ZTSN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemE", !17, i64 0, !17, i64 8, !12, i64 16, !19, i64 24, !19, i64 32, !19, i64 40, !17, i64 48, !17, i64 56}
!19 = !{!"_ZTSN7UapkiNS7SmartBAE", !17, i64 0}
!20 = !{!"_ZTSN7UapkiNS13LibraryConfig10OcspParamsE", !6, i64 0}
!21 = !{!"_ZTSN7UapkiNS13LibraryConfig9TspParamsE", !12, i64 0, !12, i64 1, !6, i64 8, !15, i64 16, !22, i64 48}
!22 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!26 = !{!"_ZTSN7UapkiNS9AttributeE", !15, i64 0, !17, i64 32}
!27 = !{!"_ZTSSt6vectorIPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESaIS5_EE", !28, i64 0}
!28 = !{!"_ZTSSt12_Vector_baseIPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESaIS5_EE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESaIS5_EE12_Vector_implE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIPN7UapkiNS3Doc4Sign10SigningDoc11CerDataItemESaIS5_EE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!31 = !{i8 0, i8 2}
!32 = !{}
!33 = !{!10, !12, i64 172}
!34 = !{!10, !13, i64 12}
!35 = !{!10, !13, i64 8}
!36 = !{!10, !11, i64 0}
!37 = !{!10, !12, i64 173}
!38 = !{!10, !12, i64 169}
!39 = !{!10, !12, i64 5}
!40 = !{!41, !12, i64 0}
!41 = !{!"_ZTS11SignOptions", !12, i64 0}
!42 = !{!10, !17, i64 96}
!43 = !{!17, !17, i64 0}
!44 = !{!10, !12, i64 4}
!45 = !{!10, !17, i64 152}
!46 = !{!21, !12, i64 0}
!47 = !{!21, !6, i64 8}
!48 = !{!21, !12, i64 1}
!49 = distinct !{!49, !50}
!50 = !{!"llvm.loop.mustprogress"}
!51 = distinct !{!51, !50}
!52 = distinct !{!52, !50}
!53 = !{!18, !17, i64 0}
!54 = !{!18, !17, i64 56}
!55 = distinct !{!55, !50}
!56 = distinct !{!56, !50}
!57 = distinct !{!57, !50}


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