; LLVM IR from Trusted-eSign/trusted-crypto :: deps/wrapper/src/store (provider_system)

; 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"

%struct.stat = type { i64, i64, i64, i32, i32, i32, i32, i64, i64, i64, i64, %struct.timespec, %struct.timespec, %struct.timespec, [3 x i64] }
%struct.timespec = type { i64, i64 }
%class.Handle.4 = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator" = type { i8 }
%class.Handle.5 = type { ptr }
%class.Handle = type { ptr }
%struct.dirent = type { i64, i64, i16, i8, [256 x i8] }
%class.Provider = type { ptr, %class.Handle, %class.Handle, %class.Handle.0 }
%class.Handle.0 = type { ptr }

@logger = external global ptr, align 8
@__FUNCTION__._ZN15Provider_SystemC2E6HandleINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE = external hidden unnamed_addr constant [16 x i8], align 1
@_ZTI6HandleI9ExceptionE = external dso_local constant { ptr, ptr }, align 8
@.str.2 = external hidden unnamed_addr constant [105 x i8], align 1
@__FUNCTION__._ZN15Provider_System4initE6HandleINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE = external hidden unnamed_addr constant [5 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [9 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 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 #3 align 2

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

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

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

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

declare void @_ZN6Logger5errorEPKcS1_z(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef, ptr noundef, ...) #5

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

declare void @_ZN9ExceptionC1EbPKciiS1_S1_6HandleIS_ES1_z(ptr noundef nonnull align 8 dereferenceable(176), i1 noundef zeroext, ptr noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ...) unnamed_addr #5

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

declare ptr @__cxa_allocate_exception(i64)

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

declare void @__cxa_free_exception(ptr)

declare void @__cxa_throw(ptr, ptr, ptr)

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN15Provider_System4initE6HandleINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %1) #3 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca %struct.stat, align 8
  %8 = alloca ptr, align 8
  %9 = alloca %class.Handle.4, align 8
  %10 = alloca %class.Handle.4, align 8
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca i1, align 1
  %14 = alloca [4 x %"class.std::__cxx11::basic_string"], align 16
  %15 = alloca ptr, align 8
  %16 = alloca %"class.std::allocator", align 1
  %17 = alloca %"class.std::allocator", align 1
  %18 = alloca %"class.std::allocator", align 1
  %19 = alloca %"class.std::allocator", align 1
  %20 = alloca i1, align 1
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.std::allocator", align 1
  %28 = alloca %class.Handle.4, align 8
  %29 = alloca %class.Handle.4, align 8
  %30 = alloca i1, align 1
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::allocator", align 1
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca i8, align 1
  %36 = alloca %class.Handle.5, align 8
  %37 = alloca %class.Handle.5, align 8
  %38 = alloca %class.Handle, align 8
  %39 = alloca %class.Handle.5, align 8
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  %40 = load ptr, ptr %3, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #8
  call void @llvm.lifetime.start.p0(i64 144, ptr %7) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #8
  %41 = call noundef ptr @_ZNK6HandleINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1)
  %42 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %41) #8
  %43 = call ptr @opendir(ptr noundef %42)
  store ptr %43, ptr %5, align 8, !tbaa !5
  %44 = icmp eq ptr %43, null
  br i1 %44, label %45, label %81

45:                                               ; preds = %2
  %46 = call noundef ptr @_ZNK6HandleINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1)
  %47 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %46) #8
  %48 = call i32 @mkdir(ptr noundef %47, i32 noundef 448) #8
  %49 = icmp ne i32 %48, 0
  br i1 %49, label %50, label %80

50:                                               ; preds = %45
  %51 = load ptr, ptr @logger, align 8, !tbaa !5
  call void (ptr, ptr, ptr, ...) @_ZN6Logger5errorEPKcS1_z(ptr noundef nonnull align 8 dereferenceable(24) %51, ptr noundef @__FUNCTION__._ZN15Provider_System4initE6HandleINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE, ptr noundef @.str.4)
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #8
  %52 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 176) #9
  store i1 true, ptr %13, align 1
  invoke void @_ZN6HandleI9ExceptionEC2EPS0_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef null)
          to label %53 unwind label %58

53:                                               ; preds = %50
  invoke void (ptr, i1, ptr, i32, i32, ptr, ptr, ptr, ptr, ...) @_ZN9ExceptionC1EbPKciiS1_S1_6HandleIS_ES1_z(ptr noundef nonnull align 8 dereferenceable(176) %52, i1 noundef zeroext false, ptr noundef @.str.2, i32 noundef 34, i32 noundef 0, ptr noundef @__FUNCTION__._ZN15Provider_SystemC2E6HandleINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE, ptr noundef @__FUNCTION__._ZN15Provider_System4initE6HandleINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE, ptr noundef %10, ptr noundef @.str.4)
          to label %54 unwind label %62

54:                                               ; preds = %53
  store i1 false, ptr %13, align 1
  invoke void @_ZN6HandleI9ExceptionEC2EPS0_(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef %52)
          to label %55 unwind label %62

55:                                               ; preds = %54
  call void @_ZN6HandleI9ExceptionED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #8
  %56 = call ptr @__cxa_allocate_exception(i64 8) #8
  invoke void @_ZN6HandleI9ExceptionEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(8) %56, ptr noundef nonnull align 8 dereferenceable(8) %9)
          to label %57 unwind label %70

57:                                               ; preds = %55
  invoke void @__cxa_throw(ptr %56, ptr @_ZTI6HandleI9ExceptionE, ptr @_ZN6HandleI9ExceptionED2Ev) #10
          to label %375 unwind label %74

58:                                               ; preds = %50
  %59 = landingpad { ptr, i32 }
          cleanup
  %60 = extractvalue { ptr, i32 } %59, 0
  store ptr %60, ptr %11, align 8
  %61 = extractvalue { ptr, i32 } %59, 1
  store i32 %61, ptr %12, align 4
  br label %66

62:                                               ; preds = %54, %53
  %63 = landingpad { ptr, i32 }
          cleanup
  %64 = extractvalue { ptr, i32 } %63, 0
  store ptr %64, ptr %11, align 8
  %65 = extractvalue { ptr, i32 } %63, 1
  store i32 %65, ptr %12, align 4
  call void @_ZN6HandleI9ExceptionED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #8
  br label %66

66:                                               ; preds = %62, %58
  %67 = load i1, ptr %13, align 1
  br i1 %67, label %68, label %69

68:                                               ; preds = %66
  call void @_ZdlPvm(ptr noundef %52, i64 noundef 176) #11
  br label %69

69:                                               ; preds = %68, %66
  br label %79

70:                                               ; preds = %55
  %71 = landingpad { ptr, i32 }
          cleanup
  %72 = extractvalue { ptr, i32 } %71, 0
  store ptr %72, ptr %11, align 8
  %73 = extractvalue { ptr, i32 } %71, 1
  store i32 %73, ptr %12, align 4
  call void @__cxa_free_exception(ptr %56) #8
  br label %78

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

78:                                               ; preds = %74, %70
  call void @_ZN6HandleI9ExceptionED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #8
  br label %79

79:                                               ; preds = %78, %69
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #8
  br label %369

80:                                               ; preds = %45
  br label %84

81:                                               ; preds = %2
  %82 = load ptr, ptr %5, align 8, !tbaa !5
  %83 = call i32 @closedir(ptr noundef %82)
  br label %84

84:                                               ; preds = %81, %80
  call void @llvm.lifetime.start.p0(i64 128, ptr %14) #8
  store i1 true, ptr %20, align 1
  store ptr %14, ptr %15, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %85 unwind label %97

85:                                               ; preds = %84
  %86 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %14, i64 1
  store ptr %86, ptr %15, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %86, ptr noundef @.str.6, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %87 unwind label %101

87:                                               ; preds = %85
  %88 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %14, i64 2
  store ptr %88, ptr %15, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %88, ptr noundef @.str.7, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %89 unwind label %105

89:                                               ; preds = %87
  %90 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %14, i64 3
  store ptr %90, ptr %15, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %90, ptr noundef @.str.8, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %91 unwind label %109

91:                                               ; preds = %89
  store i1 false, ptr %20, align 1
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #8
  store i32 0, ptr %21, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #8
  store i32 4, ptr %22, align 4, !tbaa !9
  br label %92

92:                                               ; preds = %348, %91
  %93 = load i32, ptr %21, align 4, !tbaa !9
  %94 = load i32, ptr %22, align 4, !tbaa !9
  %95 = icmp slt i32 %93, %94
  br i1 %95, label %126, label %96

96:                                               ; preds = %92
  store i32 2, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  br label %355

97:                                               ; preds = %84
  %98 = landingpad { ptr, i32 }
          cleanup
  %99 = extractvalue { ptr, i32 } %98, 0
  store ptr %99, ptr %11, align 8
  %100 = extractvalue { ptr, i32 } %98, 1
  store i32 %100, ptr %12, align 4
  br label %115

101:                                              ; preds = %85
  %102 = landingpad { ptr, i32 }
          cleanup
  %103 = extractvalue { ptr, i32 } %102, 0
  store ptr %103, ptr %11, align 8
  %104 = extractvalue { ptr, i32 } %102, 1
  store i32 %104, ptr %12, align 4
  br label %114

105:                                              ; preds = %87
  %106 = landingpad { ptr, i32 }
          cleanup
  %107 = extractvalue { ptr, i32 } %106, 0
  store ptr %107, ptr %11, align 8
  %108 = extractvalue { ptr, i32 } %106, 1
  store i32 %108, ptr %12, align 4
  br label %113

109:                                              ; preds = %89
  %110 = landingpad { ptr, i32 }
          cleanup
  %111 = extractvalue { ptr, i32 } %110, 0
  store ptr %111, ptr %11, align 8
  %112 = extractvalue { ptr, i32 } %110, 1
  store i32 %112, ptr %12, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #8
  br label %113

113:                                              ; preds = %109, %105
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #8
  br label %114

114:                                              ; preds = %113, %101
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #8
  br label %115

115:                                              ; preds = %114, %97
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #8
  %116 = load i1, ptr %20, align 1
  br i1 %116, label %117, label %125

117:                                              ; preds = %115
  %118 = load ptr, ptr %15, align 8
  %119 = icmp eq ptr %14, %118
  br i1 %119, label %124, label %120

120:                                              ; preds = %120, %117
  %121 = phi ptr [ %118, %117 ], [ %122, %120 ]
  %122 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %121, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %122) #8
  %123 = icmp eq ptr %122, %14
  br i1 %123, label %124, label %120

124:                                              ; preds = %120, %117
  br label %125

125:                                              ; preds = %124, %115
  br label %368

126:                                              ; preds = %92
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %26) #8
  %127 = invoke noundef ptr @_ZNK6HandleINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %128 unwind label %156

128:                                              ; preds = %126
  %129 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %127) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef %129, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %130 unwind label %160

130:                                              ; preds = %128
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %25, ptr noundef nonnull align 8 dereferenceable(32) %26, i8 noundef signext 47)
          to label %131 unwind label %164

131:                                              ; preds = %130
  %132 = load i32, ptr %21, align 4, !tbaa !9
  %133 = sext i32 %132 to i64
  %134 = getelementptr inbounds [4 x %"class.std::__cxx11::basic_string"], ptr %14, i64 0, i64 %133
  %135 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %134) #8
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %24, ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef %135)
          to label %136 unwind label %168

136:                                              ; preds = %131
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #8
  %137 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  %138 = invoke ptr @opendir(ptr noundef %137)
          to label %139 unwind label %175

139:                                              ; preds = %136
  store ptr %138, ptr %5, align 8, !tbaa !5
  %140 = load ptr, ptr %5, align 8, !tbaa !5
  %141 = icmp eq ptr %140, null
  br i1 %141, label %142, label %206

142:                                              ; preds = %139
  %143 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  %144 = call i32 @mkdir(ptr noundef %143, i32 noundef 448) #8
  %145 = icmp ne i32 %144, 0
  br i1 %145, label %146, label %205

146:                                              ; preds = %142
  %147 = load ptr, ptr @logger, align 8, !tbaa !5
  invoke void (ptr, ptr, ptr, ...) @_ZN6Logger5errorEPKcS1_z(ptr noundef nonnull align 8 dereferenceable(24) %147, ptr noundef @__FUNCTION__._ZN15Provider_System4initE6HandleINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE, ptr noundef @.str.4)
          to label %148 unwind label %175

148:                                              ; preds = %146
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #8
  %149 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 176) #9
          to label %150 unwind label %179

150:                                              ; preds = %148
  store i1 true, ptr %30, align 1
  invoke void @_ZN6HandleI9ExceptionEC2EPS0_(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef null)
          to label %151 unwind label %183

151:                                              ; preds = %150
  invoke void (ptr, i1, ptr, i32, i32, ptr, ptr, ptr, ptr, ...) @_ZN9ExceptionC1EbPKciiS1_S1_6HandleIS_ES1_z(ptr noundef nonnull align 8 dereferenceable(176) %149, i1 noundef zeroext false, ptr noundef @.str.2, i32 noundef 53, i32 noundef 0, ptr noundef @__FUNCTION__._ZN15Provider_SystemC2E6HandleINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE, ptr noundef @__FUNCTION__._ZN15Provider_System4initE6HandleINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE, ptr noundef %29, ptr noundef @.str.4)
          to label %152 unwind label %187

152:                                              ; preds = %151
  store i1 false, ptr %30, align 1
  invoke void @_ZN6HandleI9ExceptionEC2EPS0_(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef %149)
          to label %153 unwind label %187

153:                                              ; preds = %152
  call void @_ZN6HandleI9ExceptionED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #8
  %154 = call ptr @__cxa_allocate_exception(i64 8) #8
  invoke void @_ZN6HandleI9ExceptionEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(8) %154, ptr noundef nonnull align 8 dereferenceable(8) %28)
          to label %155 unwind label %195

155:                                              ; preds = %153
  invoke void @__cxa_throw(ptr %154, ptr @_ZTI6HandleI9ExceptionE, ptr @_ZN6HandleI9ExceptionED2Ev) #10
          to label %375 unwind label %199

156:                                              ; preds = %126
  %157 = landingpad { ptr, i32 }
          cleanup
  %158 = extractvalue { ptr, i32 } %157, 0
  store ptr %158, ptr %11, align 8
  %159 = extractvalue { ptr, i32 } %157, 1
  store i32 %159, ptr %12, align 4
  br label %174

160:                                              ; preds = %128
  %161 = landingpad { ptr, i32 }
          cleanup
  %162 = extractvalue { ptr, i32 } %161, 0
  store ptr %162, ptr %11, align 8
  %163 = extractvalue { ptr, i32 } %161, 1
  store i32 %163, ptr %12, align 4
  br label %173

164:                                              ; preds = %130
  %165 = landingpad { ptr, i32 }
          cleanup
  %166 = extractvalue { ptr, i32 } %165, 0
  store ptr %166, ptr %11, align 8
  %167 = extractvalue { ptr, i32 } %165, 1
  store i32 %167, ptr %12, align 4
  br label %172

168:                                              ; preds = %131
  %169 = landingpad { ptr, i32 }
          cleanup
  %170 = extractvalue { ptr, i32 } %169, 0
  store ptr %170, ptr %11, align 8
  %171 = extractvalue { ptr, i32 } %169, 1
  store i32 %171, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #8
  br label %172

172:                                              ; preds = %168, %164
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #8
  br label %173

173:                                              ; preds = %172, %160
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #8
  br label %174

174:                                              ; preds = %173, %156
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #8
  br label %352

175:                                              ; preds = %341, %207, %146, %136
  %176 = landingpad { ptr, i32 }
          cleanup
  %177 = extractvalue { ptr, i32 } %176, 0
  store ptr %177, ptr %11, align 8
  %178 = extractvalue { ptr, i32 } %176, 1
  store i32 %178, ptr %12, align 4
  br label %351

179:                                              ; preds = %148
  %180 = landingpad { ptr, i32 }
          cleanup
  %181 = extractvalue { ptr, i32 } %180, 0
  store ptr %181, ptr %11, align 8
  %182 = extractvalue { ptr, i32 } %180, 1
  store i32 %182, ptr %12, align 4
  br label %204

183:                                              ; preds = %150
  %184 = landingpad { ptr, i32 }
          cleanup
  %185 = extractvalue { ptr, i32 } %184, 0
  store ptr %185, ptr %11, align 8
  %186 = extractvalue { ptr, i32 } %184, 1
  store i32 %186, ptr %12, align 4
  br label %191

187:                                              ; preds = %152, %151
  %188 = landingpad { ptr, i32 }
          cleanup
  %189 = extractvalue { ptr, i32 } %188, 0
  store ptr %189, ptr %11, align 8
  %190 = extractvalue { ptr, i32 } %188, 1
  store i32 %190, ptr %12, align 4
  call void @_ZN6HandleI9ExceptionED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #8
  br label %191

191:                                              ; preds = %187, %183
  %192 = load i1, ptr %30, align 1
  br i1 %192, label %193, label %194

193:                                              ; preds = %191
  call void @_ZdlPvm(ptr noundef %149, i64 noundef 176) #11
  br label %194

194:                                              ; preds = %193, %191
  br label %204

195:                                              ; preds = %153
  %196 = landingpad { ptr, i32 }
          cleanup
  %197 = extractvalue { ptr, i32 } %196, 0
  store ptr %197, ptr %11, align 8
  %198 = extractvalue { ptr, i32 } %196, 1
  store i32 %198, ptr %12, align 4
  call void @__cxa_free_exception(ptr %154) #8
  br label %203

199:                                              ; preds = %155
  %200 = landingpad { ptr, i32 }
          cleanup
  %201 = extractvalue { ptr, i32 } %200, 0
  store ptr %201, ptr %11, align 8
  %202 = extractvalue { ptr, i32 } %200, 1
  store i32 %202, ptr %12, align 4
  br label %203

203:                                              ; preds = %199, %195
  call void @_ZN6HandleI9ExceptionED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #8
  br label %204

204:                                              ; preds = %203, %194, %179
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  br label %351

205:                                              ; preds = %142
  store i32 4, ptr %23, align 4
  br label %345

206:                                              ; preds = %139
  br label %207

207:                                              ; preds = %337, %335, %206
  %208 = load ptr, ptr %5, align 8, !tbaa !5
  %209 = invoke ptr @readdir(ptr noundef %208)
          to label %210 unwind label %175

210:                                              ; preds = %207
  store ptr %209, ptr %6, align 8, !tbaa !5
  %211 = icmp ne ptr %209, null
  br i1 %211, label %212, label %341

212:                                              ; preds = %210
  call void @llvm.lifetime.start.p0(i64 32, ptr %31) #8
  %213 = load ptr, ptr %6, align 8, !tbaa !5
  %214 = getelementptr inbounds %struct.dirent, ptr %213, i32 0, i32 4
  %215 = getelementptr inbounds [256 x i8], ptr %214, i64 0, i64 0
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef %215, ptr noundef nonnull align 1 dereferenceable(1) %32)
          to label %216 unwind label %224

216:                                              ; preds = %212
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %33) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %34) #8
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_S5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %34, ptr noundef nonnull align 8 dereferenceable(32) %24, i8 noundef signext 47)
          to label %217 unwind label %228

217:                                              ; preds = %216
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %33, ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull align 8 dereferenceable(32) %31)
          to label %218 unwind label %232

218:                                              ; preds = %217
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #8
  %219 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %31, i64 noundef 0) #8
  %220 = load i8, ptr %219, align 1, !tbaa !11
  %221 = sext i8 %220 to i32
  %222 = icmp eq i32 %221, 46
  br i1 %222, label %223, label %237

223:                                              ; preds = %218
  store i32 5, ptr %23, align 4
  br label %335, !llvm.loop !12

224:                                              ; preds = %212
  %225 = landingpad { ptr, i32 }
          cleanup
  %226 = extractvalue { ptr, i32 } %225, 0
  store ptr %226, ptr %11, align 8
  %227 = extractvalue { ptr, i32 } %225, 1
  store i32 %227, ptr %12, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #8
  br label %340

228:                                              ; preds = %216
  %229 = landingpad { ptr, i32 }
          cleanup
  %230 = extractvalue { ptr, i32 } %229, 0
  store ptr %230, ptr %11, align 8
  %231 = extractvalue { ptr, i32 } %229, 1
  store i32 %231, ptr %12, align 4
  br label %236

232:                                              ; preds = %217
  %233 = landingpad { ptr, i32 }
          cleanup
  %234 = extractvalue { ptr, i32 } %233, 0
  store ptr %234, ptr %11, align 8
  %235 = extractvalue { ptr, i32 } %233, 1
  store i32 %235, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #8
  br label %236

236:                                              ; preds = %232, %228
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #8
  br label %339

237:                                              ; preds = %218
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #8
  %238 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %33) #8
  %239 = call i32 @stat(ptr noundef %238, ptr noundef %7) #8
  %240 = icmp eq i32 %239, 0
  br i1 %240, label %241, label %246

241:                                              ; preds = %237
  %242 = getelementptr inbounds %struct.stat, ptr %7, i32 0, i32 3
  %243 = load i32, ptr %242, align 8, !tbaa !14
  %244 = and i32 %243, 61440
  %245 = icmp eq i32 %244, 16384
  br label %246

246:                                              ; preds = %241, %237
  %247 = phi i1 [ false, %237 ], [ %245, %241 ]
  %248 = zext i1 %247 to i8
  store i8 %248, ptr %35, align 1, !tbaa !18
  %249 = load i8, ptr %35, align 1, !tbaa !18, !range !20, !noundef !21
  %250 = trunc i8 %249 to i1
  br i1 %250, label %251, label %252

251:                                              ; preds = %246
  store i32 5, ptr %23, align 4
  br label %334, !llvm.loop !12

252:                                              ; preds = %246
  %253 = load ptr, ptr @logger, align 8, !tbaa !5
  invoke void (ptr, i32, ptr, ptr, ...) @_ZN6Logger5writeEN11LoggerLevel12LOGGER_LEVELEPKcS3_z(ptr noundef nonnull align 8 dereferenceable(24) %253, i32 noundef 32, ptr noundef @__FUNCTION__._ZN15Provider_System4initE6HandleINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE, ptr noundef @.str.9)
          to label %254 unwind label %287

254:                                              ; preds = %252
  %255 = invoke ptr @BIO_s_file()
          to label %256 unwind label %287

256:                                              ; preds = %254
  %257 = invoke ptr @BIO_new(ptr noundef %255)
          to label %258 unwind label %287

258:                                              ; preds = %256
  store ptr %257, ptr %8, align 8, !tbaa !5
  %259 = load ptr, ptr @logger, align 8, !tbaa !5
  invoke void (ptr, i32, ptr, ptr, ...) @_ZN6Logger5writeEN11LoggerLevel12LOGGER_LEVELEPKcS3_z(ptr noundef nonnull align 8 dereferenceable(24) %259, i32 noundef 32, ptr noundef @__FUNCTION__._ZN15Provider_System4initE6HandleINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE, ptr noundef @.str.10)
          to label %260 unwind label %287

260:                                              ; preds = %258
  %261 = load ptr, ptr %8, align 8, !tbaa !5
  %262 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %33) #8
  %263 = invoke i64 @BIO_ctrl(ptr noundef %261, i32 noundef 108, i64 noundef 3, ptr noundef %262)
          to label %264 unwind label %287

264:                                              ; preds = %260
  %265 = trunc i64 %263 to i32
  %266 = icmp sgt i32 %265, 0
  br i1 %266, label %267, label %328

267:                                              ; preds = %264
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #8
  %268 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 304) #9
          to label %269 unwind label %291

269:                                              ; preds = %267
  invoke void @_ZN7PkiItemC1Ev(ptr noundef nonnull align 8 dereferenceable(304) %268)
          to label %270 unwind label %295

270:                                              ; preds = %269
  invoke void @_ZN6HandleI7PkiItemEC2EPS0_(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef %268)
          to label %271 unwind label %291

271:                                              ; preds = %270
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #8
  %272 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 32) #9
          to label %273 unwind label %299

273:                                              ; preds = %271
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %272, ptr noundef nonnull align 8 dereferenceable(32) %33)
          to label %274 unwind label %303

274:                                              ; preds = %273
  invoke void @_ZN6HandleINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2EPS5_(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef %272)
          to label %275 unwind label %299

275:                                              ; preds = %274
  invoke void @_ZN15Provider_System15objectToPKIItemE6HandleINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE(ptr dead_on_unwind writable sret(%class.Handle.5) align 8 %37, ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef %38)
          to label %276 unwind label %307

276:                                              ; preds = %275
  %277 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6HandleI7PkiItemEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(8) %37)
          to label %278 unwind label %311

278:                                              ; preds = %276
  call void @_ZN6HandleI7PkiItemED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #8
  call void @_ZN6HandleINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  %279 = invoke noundef zeroext i1 @_ZNK6HandleI7PkiItemE7isEmptyEv(ptr noundef nonnull align 8 dereferenceable(8) %36)
          to label %280 unwind label %317

280:                                              ; preds = %278
  br i1 %279, label %325, label %281

281:                                              ; preds = %280
  %282 = getelementptr inbounds %class.Provider, ptr %40, i32 0, i32 3
  %283 = invoke noundef ptr @_ZNK6HandleI17PkiItemCollectionEptEv(ptr noundef nonnull align 8 dereferenceable(8) %282)
          to label %284 unwind label %317

284:                                              ; preds = %281
  invoke void @_ZN6HandleI7PkiItemEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull align 8 dereferenceable(8) %36)
          to label %285 unwind label %317

285:                                              ; preds = %284
  invoke void @_ZN17PkiItemCollection4pushE6HandleI7PkiItemE(ptr noundef nonnull align 8 dereferenceable(24) %283, ptr noundef %39)
          to label %286 unwind label %321

286:                                              ; preds = %285
  call void @_ZN6HandleI7PkiItemED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #8
  br label %325

287:                                              ; preds = %330, %328, %260, %258, %256, %254, %252
  %288 = landingpad { ptr, i32 }
          cleanup
  %289 = extractvalue { ptr, i32 } %288, 0
  store ptr %289, ptr %11, align 8
  %290 = extractvalue { ptr, i32 } %288, 1
  store i32 %290, ptr %12, align 4
  br label %338

291:                                              ; preds = %270, %267
  %292 = landingpad { ptr, i32 }
          cleanup
  %293 = extractvalue { ptr, i32 } %292, 0
  store ptr %293, ptr %11, align 8
  %294 = extractvalue { ptr, i32 } %292, 1
  store i32 %294, ptr %12, align 4
  br label %327

295:                                              ; preds = %269
  %296 = landingpad { ptr, i32 }
          cleanup
  %297 = extractvalue { ptr, i32 } %296, 0
  store ptr %297, ptr %11, align 8
  %298 = extractvalue { ptr, i32 } %296, 1
  store i32 %298, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %268, i64 noundef 304) #11
  br label %327

299:                                              ; preds = %274, %271
  %300 = landingpad { ptr, i32 }
          cleanup
  %301 = extractvalue { ptr, i32 } %300, 0
  store ptr %301, ptr %11, align 8
  %302 = extractvalue { ptr, i32 } %300, 1
  store i32 %302, ptr %12, align 4
  br label %316

303:                                              ; preds = %273
  %304 = landingpad { ptr, i32 }
          cleanup
  %305 = extractvalue { ptr, i32 } %304, 0
  store ptr %305, ptr %11, align 8
  %306 = extractvalue { ptr, i32 } %304, 1
  store i32 %306, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %272, i64 noundef 32) #11
  br label %316

307:                                              ; preds = %275
  %308 = landingpad { ptr, i32 }
          cleanup
  %309 = extractvalue { ptr, i32 } %308, 0
  store ptr %309, ptr %11, align 8
  %310 = extractvalue { ptr, i32 } %308, 1
  store i32 %310, ptr %12, align 4
  br label %315

311:                                              ; preds = %276
  %312 = landingpad { ptr, i32 }
          cleanup
  %313 = extractvalue { ptr, i32 } %312, 0
  store ptr %313, ptr %11, align 8
  %314 = extractvalue { ptr, i32 } %312, 1
  store i32 %314, ptr %12, align 4
  call void @_ZN6HandleI7PkiItemED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #8
  br label %315

315:                                              ; preds = %311, %307
  call void @_ZN6HandleINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #8
  br label %316

316:                                              ; preds = %315, %303, %299
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  br label %326

317:                                              ; preds = %284, %281, %278
  %318 = landingpad { ptr, i32 }
          cleanup
  %319 = extractvalue { ptr, i32 } %318, 0
  store ptr %319, ptr %11, align 8
  %320 = extractvalue { ptr, i32 } %318, 1
  store i32 %320, ptr %12, align 4
  br label %326

321:                                              ; preds = %285
  %322 = landingpad { ptr, i32 }
          cleanup
  %323 = extractvalue { ptr, i32 } %322, 0
  store ptr %323, ptr %11, align 8
  %324 = extractvalue { ptr, i32 } %322, 1
  store i32 %324, ptr %12, align 4
  call void @_ZN6HandleI7PkiItemED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #8
  br label %326

325:                                              ; preds = %286, %280
  call void @_ZN6HandleI7PkiItemED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #8
  br label %328

326:                                              ; preds = %321, %317, %316
  call void @_ZN6HandleI7PkiItemED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #8
  br label %327

327:                                              ; preds = %326, %295, %291
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #8
  br label %338

328:                                              ; preds = %325, %264
  %329 = load ptr, ptr @logger, align 8, !tbaa !5
  invoke void (ptr, i32, ptr, ptr, ...) @_ZN6Logger5writeEN11LoggerLevel12LOGGER_LEVELEPKcS3_z(ptr noundef nonnull align 8 dereferenceable(24) %329, i32 noundef 32, ptr noundef @__FUNCTION__._ZN15Provider_System4initE6HandleINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE, ptr noundef @.str.11)
          to label %330 unwind label %287

330:                                              ; preds = %328
  %331 = load ptr, ptr %8, align 8, !tbaa !5
  %332 = invoke i32 @BIO_free(ptr noundef %331)
          to label %333 unwind label %287

333:                                              ; preds = %330
  store i32 0, ptr %23, align 4
  br label %334

334:                                              ; preds = %333, %251
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #8
  br label %335

335:                                              ; preds = %334, %223
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #8
  %336 = load i32, ptr %23, align 4
  switch i32 %336, label %375 [
    i32 0, label %337
    i32 5, label %207
  ]

337:                                              ; preds = %335
  br label %207, !llvm.loop !12

338:                                              ; preds = %327, %287
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #8
  br label %339

339:                                              ; preds = %338, %236
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #8
  br label %340

340:                                              ; preds = %339, %224
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #8
  br label %351

341:                                              ; preds = %210
  %342 = load ptr, ptr %5, align 8, !tbaa !5
  %343 = invoke i32 @closedir(ptr noundef %342)
          to label %344 unwind label %175

344:                                              ; preds = %341
  store i32 0, ptr %23, align 4
  br label %345

345:                                              ; preds = %344, %205
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #8
  %346 = load i32, ptr %23, align 4
  switch i32 %346, label %375 [
    i32 0, label %347
    i32 4, label %348
  ]

347:                                              ; preds = %345
  br label %348

348:                                              ; preds = %347, %345
  %349 = load i32, ptr %21, align 4, !tbaa !9
  %350 = add nsw i32 %349, 1
  store i32 %350, ptr %21, align 4, !tbaa !9
  br label %92, !llvm.loop !22

351:                                              ; preds = %340, %204, %175
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  br label %352

352:                                              ; preds = %351, %174
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  %353 = getelementptr inbounds [4 x %"class.std::__cxx11::basic_string"], ptr %14, i32 0, i32 0
  %354 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %353, i64 4
  br label %363

355:                                              ; preds = %96
  %356 = getelementptr inbounds [4 x %"class.std::__cxx11::basic_string"], ptr %14, i32 0, i32 0
  %357 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %356, i64 4
  br label %358

358:                                              ; preds = %358, %355
  %359 = phi ptr [ %357, %355 ], [ %360, %358 ]
  %360 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %359, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %360) #8
  %361 = icmp eq ptr %360, %356
  br i1 %361, label %362, label %358

362:                                              ; preds = %358
  call void @llvm.lifetime.end.p0(i64 128, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 144, ptr %7) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #8
  ret void

363:                                              ; preds = %363, %352
  %364 = phi ptr [ %354, %352 ], [ %365, %363 ]
  %365 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %364, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %365) #8
  %366 = icmp eq ptr %365, %353
  br i1 %366, label %367, label %363

367:                                              ; preds = %363
  br label %368

368:                                              ; preds = %367, %125
  call void @llvm.lifetime.end.p0(i64 128, ptr %14) #8
  br label %369

369:                                              ; preds = %368, %79
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 144, ptr %7) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #8
  br label %370

370:                                              ; preds = %369
  %371 = load ptr, ptr %11, align 8
  %372 = load i32, ptr %12, align 4
  %373 = insertvalue { ptr, i32 } poison, ptr %371, 0
  %374 = insertvalue { ptr, i32 } %373, i32 %372, 1
  resume { ptr, i32 } %374

375:                                              ; preds = %345, %335, %155, %57
  unreachable
}

declare ptr @opendir(ptr noundef) #5

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

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

; Function Attrs: nounwind
declare i32 @mkdir(ptr noundef, i32 noundef) #6

declare i32 @closedir(ptr noundef) #5

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #7

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), i8 noundef signext) #7

declare ptr @readdir(ptr noundef) #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #7

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_S5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), i8 noundef signext) #7

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

; Function Attrs: nounwind
declare i32 @stat(ptr noundef, ptr noundef) #6

declare void @_ZN6Logger5writeEN11LoggerLevel12LOGGER_LEVELEPKcS3_z(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, ptr noundef, ptr noundef, ...) #5

declare ptr @BIO_new(ptr noundef) #5

declare ptr @BIO_s_file() #5

declare i64 @BIO_ctrl(ptr noundef, i32 noundef, i64 noundef, ptr noundef) #5

declare void @_ZN7PkiItemC1Ev(ptr noundef nonnull align 8 dereferenceable(304)) unnamed_addr #5

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN15Provider_System15objectToPKIItemE6HandleINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE(ptr dead_on_unwind noalias writable sret(%class.Handle.5) align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #3 align 2

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

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

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

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

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

declare void @_ZN17PkiItemCollection4pushE6HandleI7PkiItemE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) #5

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

declare i32 @BIO_free(ptr noundef) #5

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = !{!15, !10, i64 24}
!15 = !{!"_ZTS4stat", !16, i64 0, !16, i64 8, !16, i64 16, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !16, i64 40, !16, i64 48, !16, i64 56, !16, i64 64, !17, i64 72, !17, i64 88, !17, i64 104, !7, i64 120}
!16 = !{!"long", !7, i64 0}
!17 = !{!"_ZTS8timespec", !16, i64 0, !16, i64 8}
!18 = !{!19, !19, i64 0}
!19 = !{!"bool", !7, i64 0}
!20 = !{i8 0, i8 2}
!21 = !{}
!22 = distinct !{!22, !13}


; 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"

%struct.stat = type { i64, i64, i64, i32, i32, i32, i32, i64, i64, i64, i64, %struct.timespec, %struct.timespec, %struct.timespec, [3 x i64] }
%struct.timespec = type { i64, i64 }
%class.Handle.4 = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator" = type { i8 }
%class.Handle.5 = type { ptr }
%class.Handle = type { ptr }

@logger = external local_unnamed_addr global ptr, align 8
@__FUNCTION__._ZN15Provider_SystemC2E6HandleINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE = external hidden unnamed_addr constant [16 x i8], align 1
@_ZTI6HandleI9ExceptionE = external dso_local constant { ptr, ptr }, align 8
@.str.2 = external hidden unnamed_addr constant [105 x i8], align 1
@__FUNCTION__._ZN15Provider_System4initE6HandleINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE = external hidden unnamed_addr constant [5 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [9 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 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 #3 align 2

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

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

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

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

declare void @_ZN6Logger5errorEPKcS1_z(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef, ptr noundef, ...) local_unnamed_addr #5

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

declare void @_ZN9ExceptionC1EbPKciiS1_S1_6HandleIS_ES1_z(ptr noundef nonnull align 8 dereferenceable(176), i1 noundef zeroext, ptr noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ...) unnamed_addr #5

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

declare void @__cxa_throw(ptr, ptr, ptr) local_unnamed_addr

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN15Provider_System4initE6HandleINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %1) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %struct.stat, align 8
  %4 = alloca %class.Handle.4, align 8
  %5 = alloca %class.Handle.4, align 8
  %6 = alloca [4 x %"class.std::__cxx11::basic_string"], align 16
  %7 = alloca %"class.std::allocator", align 1
  %8 = alloca %"class.std::allocator", align 1
  %9 = alloca %"class.std::allocator", align 1
  %10 = alloca %"class.std::allocator", align 1
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::allocator", align 1
  %15 = alloca %class.Handle.4, align 8
  %16 = alloca %class.Handle.4, align 8
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::allocator", align 1
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %class.Handle.5, align 8
  %22 = alloca %class.Handle.5, align 8
  %23 = alloca %class.Handle, align 8
  %24 = alloca %class.Handle.5, align 8
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %3) #8
  %25 = tail call noundef ptr @_ZNK6HandleINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1)
  %26 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %25) #8
  %27 = tail call ptr @opendir(ptr noundef %26)
  %28 = icmp eq ptr %27, null
  br i1 %28, label %29, label %48

29:                                               ; preds = %2
  %30 = tail call noundef ptr @_ZNK6HandleINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1)
  %31 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %30) #8
  %32 = tail call i32 @mkdir(ptr noundef %31, i32 noundef 448) #8
  %.not = icmp eq i32 %32, 0
  br i1 %.not, label %50, label %33

33:                                               ; preds = %29
  %34 = load ptr, ptr @logger, align 8, !tbaa !5
  tail call void (ptr, ptr, ptr, ...) @_ZN6Logger5errorEPKcS1_z(ptr noundef nonnull align 8 dereferenceable(24) %34, ptr noundef nonnull @__FUNCTION__._ZN15Provider_System4initE6HandleINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE, ptr noundef nonnull @.str.4)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #8
  %35 = tail call noalias noundef nonnull dereferenceable(176) ptr @_Znwm(i64 noundef 176) #9
  invoke void @_ZN6HandleI9ExceptionEC2EPS0_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef null)
          to label %36 unwind label %.thread

36:                                               ; preds = %33
  invoke void (ptr, i1, ptr, i32, i32, ptr, ptr, ptr, ptr, ...) @_ZN9ExceptionC1EbPKciiS1_S1_6HandleIS_ES1_z(ptr noundef nonnull align 8 dereferenceable(176) %35, i1 noundef zeroext false, ptr noundef nonnull @.str.2, i32 noundef 34, i32 noundef 0, ptr noundef nonnull @__FUNCTION__._ZN15Provider_SystemC2E6HandleINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE, ptr noundef nonnull @__FUNCTION__._ZN15Provider_System4initE6HandleINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE, ptr noundef nonnull %5, ptr noundef nonnull @.str.4)
          to label %38 unwind label %.thread86

.thread86:                                        ; preds = %36
  %37 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6HandleI9ExceptionED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #8
  br label %44

38:                                               ; preds = %36
  invoke void @_ZN6HandleI9ExceptionEC2EPS0_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull %35)
          to label %39 unwind label %42

39:                                               ; preds = %38
  call void @_ZN6HandleI9ExceptionED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #8
  %40 = call ptr @__cxa_allocate_exception(i64 8) #8
  call void @_ZN6HandleI9ExceptionEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull align 8 dereferenceable(8) %4)
  invoke void @__cxa_throw(ptr nonnull %40, ptr nonnull @_ZTI6HandleI9ExceptionE, ptr nonnull @_ZN6HandleI9ExceptionED2Ev) #10
          to label %213 unwind label %45

.thread:                                          ; preds = %33
  %41 = landingpad { ptr, i32 }
          cleanup
  br label %44

42:                                               ; preds = %38
  %43 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6HandleI9ExceptionED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #8
  br label %47

44:                                               ; preds = %.thread86, %.thread
  %.pn7885 = phi { ptr, i32 } [ %41, %.thread ], [ %37, %.thread86 ]
  call void @_ZdlPvm(ptr noundef nonnull %35, i64 noundef 176) #11
  br label %47

45:                                               ; preds = %39
  %46 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6HandleI9ExceptionED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #8
  br label %47

47:                                               ; preds = %42, %44, %45
  %.pn80 = phi { ptr, i32 } [ %46, %45 ], [ %.pn7885, %44 ], [ %43, %42 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #8
  br label %212

48:                                               ; preds = %2
  %49 = tail call i32 @closedir(ptr noundef nonnull %27)
  br label %50

50:                                               ; preds = %29, %48
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %6) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %7) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %7)
          to label %51 unwind label %.thread88

51:                                               ; preds = %50
  %52 = getelementptr inbounds i8, ptr %6, i64 32
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %52, ptr noundef nonnull @.str.6, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %53 unwind label %65

53:                                               ; preds = %51
  %54 = getelementptr inbounds i8, ptr %6, i64 64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %9) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %54, ptr noundef nonnull @.str.7, ptr noundef nonnull align 1 dereferenceable(1) %9)
          to label %55 unwind label %67

55:                                               ; preds = %53
  %56 = getelementptr inbounds i8, ptr %6, i64 96
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %56, ptr noundef nonnull @.str.8, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %57 unwind label %69

57:                                               ; preds = %55
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #8
  %58 = getelementptr inbounds i8, ptr %3, i64 24
  %59 = getelementptr inbounds i8, ptr %0, i64 24
  br label %77

60:                                               ; preds = %207
  %61 = getelementptr inbounds i8, ptr %6, i64 96
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #8
  %62 = getelementptr inbounds i8, ptr %6, i64 64
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #8
  %63 = getelementptr inbounds i8, ptr %6, i64 32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #8
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %6) #8
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %3) #8
  ret void

.thread88:                                        ; preds = %50
  %64 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #8
  br label %.loopexit

65:                                               ; preds = %51
  %66 = landingpad { ptr, i32 }
          cleanup
  br label %72

67:                                               ; preds = %53
  %68 = landingpad { ptr, i32 }
          cleanup
  br label %71

69:                                               ; preds = %55
  %70 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #8
  br label %71

71:                                               ; preds = %69, %67
  %.pn = phi { ptr, i32 } [ %70, %69 ], [ %68, %67 ]
  %.022 = phi ptr [ %56, %69 ], [ %54, %67 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #8
  br label %72

72:                                               ; preds = %65, %71
  %.pn.pn = phi { ptr, i32 } [ %.pn, %71 ], [ %66, %65 ]
  %.123 = phi ptr [ %.022, %71 ], [ %52, %65 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #8
  br label %73

73:                                               ; preds = %72, %73
  %74 = phi ptr [ %75, %73 ], [ %.123, %72 ]
  %75 = getelementptr inbounds i8, ptr %74, i64 -32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #8
  %76 = icmp eq ptr %75, %6
  br i1 %76, label %.loopexit, label %73

77:                                               ; preds = %57, %207
  %indvars.iv = phi i64 [ 0, %57 ], [ %indvars.iv.next, %207 ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #8
  %78 = invoke noundef ptr @_ZNK6HandleINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %79 unwind label %102

79:                                               ; preds = %77
  %80 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %78) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %14) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef %80, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %81 unwind label %104

81:                                               ; preds = %79
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %12, ptr noundef nonnull align 8 dereferenceable(32) %13, i8 noundef signext 47)
          to label %82 unwind label %106

82:                                               ; preds = %81
  %83 = getelementptr inbounds [4 x %"class.std::__cxx11::basic_string"], ptr %6, i64 0, i64 %indvars.iv
  %84 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %83) #8
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %11, ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef %84)
          to label %85 unwind label %108

85:                                               ; preds = %82
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #8
  %86 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %11) #8
  %87 = call ptr @opendir(ptr noundef %86)
  %88 = icmp eq ptr %87, null
  br i1 %88, label %89, label %.preheader

89:                                               ; preds = %85
  %90 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %11) #8
  %91 = call i32 @mkdir(ptr noundef %90, i32 noundef 448) #8
  %.not70 = icmp eq i32 %91, 0
  br i1 %.not70, label %207, label %92

92:                                               ; preds = %89
  %93 = load ptr, ptr @logger, align 8, !tbaa !5
  invoke void (ptr, ptr, ptr, ...) @_ZN6Logger5errorEPKcS1_z(ptr noundef nonnull align 8 dereferenceable(24) %93, ptr noundef nonnull @__FUNCTION__._ZN15Provider_System4initE6HandleINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE, ptr noundef nonnull @.str.4)
          to label %94 unwind label %.loopexit.split-lp

94:                                               ; preds = %92
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #8
  %95 = invoke noalias noundef nonnull dereferenceable(176) ptr @_Znwm(i64 noundef 176) #9
          to label %96 unwind label %113

96:                                               ; preds = %94
  invoke void @_ZN6HandleI9ExceptionEC2EPS0_(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef null)
          to label %97 unwind label %.thread91

97:                                               ; preds = %96
  invoke void (ptr, i1, ptr, i32, i32, ptr, ptr, ptr, ptr, ...) @_ZN9ExceptionC1EbPKciiS1_S1_6HandleIS_ES1_z(ptr noundef nonnull align 8 dereferenceable(176) %95, i1 noundef zeroext false, ptr noundef nonnull @.str.2, i32 noundef 53, i32 noundef 0, ptr noundef nonnull @__FUNCTION__._ZN15Provider_SystemC2E6HandleINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE, ptr noundef nonnull @__FUNCTION__._ZN15Provider_System4initE6HandleINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE, ptr noundef nonnull %16, ptr noundef nonnull @.str.4)
          to label %99 unwind label %.thread95

.thread95:                                        ; preds = %97
  %98 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6HandleI9ExceptionED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  br label %118

99:                                               ; preds = %97
  invoke void @_ZN6HandleI9ExceptionEC2EPS0_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull %95)
          to label %100 unwind label %116

100:                                              ; preds = %99
  call void @_ZN6HandleI9ExceptionED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  %101 = call ptr @__cxa_allocate_exception(i64 8) #8
  call void @_ZN6HandleI9ExceptionEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(8) %101, ptr noundef nonnull align 8 dereferenceable(8) %15)
  invoke void @__cxa_throw(ptr nonnull %101, ptr nonnull @_ZTI6HandleI9ExceptionE, ptr nonnull @_ZN6HandleI9ExceptionED2Ev) #10
          to label %213 unwind label %119

102:                                              ; preds = %77
  %103 = landingpad { ptr, i32 }
          cleanup
  br label %112

104:                                              ; preds = %79
  %105 = landingpad { ptr, i32 }
          cleanup
  br label %111

106:                                              ; preds = %81
  %107 = landingpad { ptr, i32 }
          cleanup
  br label %110

108:                                              ; preds = %82
  %109 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  br label %110

110:                                              ; preds = %108, %106
  %.pn54 = phi { ptr, i32 } [ %109, %108 ], [ %107, %106 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #8
  br label %111

111:                                              ; preds = %110, %104
  %.pn54.pn = phi { ptr, i32 } [ %.pn54, %110 ], [ %105, %104 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #8
  br label %112

112:                                              ; preds = %111, %102
  %.pn54.pn.pn = phi { ptr, i32 } [ %.pn54.pn, %111 ], [ %103, %102 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #8
  br label %.loopexit.loopexit

.loopexit97:                                      ; preds = %.preheader
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %208

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

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

.thread91:                                        ; preds = %96
  %115 = landingpad { ptr, i32 }
          cleanup
  br label %118

116:                                              ; preds = %99
  %117 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6HandleI9ExceptionED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  br label %121

118:                                              ; preds = %.thread95, %.thread91
  %.pn7194 = phi { ptr, i32 } [ %115, %.thread91 ], [ %98, %.thread95 ]
  call void @_ZdlPvm(ptr noundef nonnull %95, i64 noundef 176) #11
  br label %121

119:                                              ; preds = %100
  %120 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6HandleI9ExceptionED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #8
  br label %121

121:                                              ; preds = %116, %118, %119, %113
  %.pn73 = phi { ptr, i32 } [ %120, %119 ], [ %.pn7194, %118 ], [ %117, %116 ], [ %114, %113 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #8
  br label %208

.preheader:                                       ; preds = %85, %201
  %122 = invoke ptr @readdir(ptr noundef nonnull %87)
          to label %123 unwind label %.loopexit97

123:                                              ; preds = %.preheader
  %.not58 = icmp eq ptr %122, null
  br i1 %.not58, label %205, label %124

124:                                              ; preds = %123
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #8
  %125 = getelementptr inbounds i8, ptr %122, i64 19
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %18) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull %125, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %126 unwind label %132

126:                                              ; preds = %124
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #8
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_S5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %20, ptr noundef nonnull align 8 dereferenceable(32) %11, i8 noundef signext 47)
          to label %127 unwind label %134

127:                                              ; preds = %126
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %19, ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull align 8 dereferenceable(32) %17)
          to label %128 unwind label %136

128:                                              ; preds = %127
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #8
  %129 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %17, i64 noundef 0) #8
  %130 = load i8, ptr %129, align 1, !tbaa !9
  %131 = icmp eq i8 %130, 46
  br i1 %131, label %201, label %139, !llvm.loop !10

132:                                              ; preds = %124
  %133 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #8
  br label %204

134:                                              ; preds = %126
  %135 = landingpad { ptr, i32 }
          cleanup
  br label %138

136:                                              ; preds = %127
  %137 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #8
  br label %138

138:                                              ; preds = %136, %134
  %.pn59 = phi { ptr, i32 } [ %137, %136 ], [ %135, %134 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #8
  br label %203

139:                                              ; preds = %128
  %140 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  %141 = call i32 @stat(ptr noundef %140, ptr noundef nonnull %3) #8
  %142 = icmp eq i32 %141, 0
  %143 = load i32, ptr %58, align 8
  %144 = and i32 %143, 61440
  %145 = icmp eq i32 %144, 16384
  %146 = select i1 %142, i1 %145, i1 false
  br i1 %146, label %201, label %147, !llvm.loop !10

147:                                              ; preds = %139
  %148 = load ptr, ptr @logger, align 8, !tbaa !5
  invoke void (ptr, i32, ptr, ptr, ...) @_ZN6Logger5writeEN11LoggerLevel12LOGGER_LEVELEPKcS3_z(ptr noundef nonnull align 8 dereferenceable(24) %148, i32 noundef 32, ptr noundef nonnull @__FUNCTION__._ZN15Provider_System4initE6HandleINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE, ptr noundef nonnull @.str.9)
          to label %149 unwind label %177

149:                                              ; preds = %147
  %150 = invoke ptr @BIO_s_file()
          to label %151 unwind label %177

151:                                              ; preds = %149
  %152 = invoke ptr @BIO_new(ptr noundef %150)
          to label %153 unwind label %177

153:                                              ; preds = %151
  %154 = load ptr, ptr @logger, align 8, !tbaa !5
  invoke void (ptr, i32, ptr, ptr, ...) @_ZN6Logger5writeEN11LoggerLevel12LOGGER_LEVELEPKcS3_z(ptr noundef nonnull align 8 dereferenceable(24) %154, i32 noundef 32, ptr noundef nonnull @__FUNCTION__._ZN15Provider_System4initE6HandleINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE, ptr noundef nonnull @.str.10)
          to label %155 unwind label %177

155:                                              ; preds = %153
  %156 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  %157 = invoke i64 @BIO_ctrl(ptr noundef %152, i32 noundef 108, i64 noundef 3, ptr noundef %156)
          to label %158 unwind label %177

158:                                              ; preds = %155
  %159 = trunc i64 %157 to i32
  %160 = icmp sgt i32 %159, 0
  br i1 %160, label %161, label %197

161:                                              ; preds = %158
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #8
  %162 = invoke noalias noundef nonnull dereferenceable(304) ptr @_Znwm(i64 noundef 304) #9
          to label %163 unwind label %179

163:                                              ; preds = %161
  invoke void @_ZN7PkiItemC1Ev(ptr noundef nonnull align 8 dereferenceable(304) %162)
          to label %164 unwind label %181

164:                                              ; preds = %163
  invoke void @_ZN6HandleI7PkiItemEC2EPS0_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull %162)
          to label %165 unwind label %179

165:                                              ; preds = %164
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #8
  %166 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #9
          to label %167 unwind label %183

167:                                              ; preds = %165
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %166, ptr noundef nonnull align 8 dereferenceable(32) %19)
          to label %168 unwind label %185

168:                                              ; preds = %167
  invoke void @_ZN6HandleINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2EPS5_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull %166)
          to label %169 unwind label %183

169:                                              ; preds = %168
  invoke void @_ZN15Provider_System15objectToPKIItemE6HandleINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE(ptr dead_on_unwind nonnull writable sret(%class.Handle.5) align 8 %22, ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %23)
          to label %170 unwind label %187

170:                                              ; preds = %169
  %171 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6HandleI7PkiItemEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %22)
  call void @_ZN6HandleI7PkiItemED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #8
  call void @_ZN6HandleINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #8
  %172 = call noundef zeroext i1 @_ZNK6HandleI7PkiItemE7isEmptyEv(ptr noundef nonnull align 8 dereferenceable(8) %21)
  br i1 %172, label %194, label %173

173:                                              ; preds = %170
  %174 = invoke noundef ptr @_ZNK6HandleI17PkiItemCollectionEptEv(ptr noundef nonnull align 8 dereferenceable(8) %59)
          to label %175 unwind label %190

175:                                              ; preds = %173
  call void @_ZN6HandleI7PkiItemEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %21)
  invoke void @_ZN17PkiItemCollection4pushE6HandleI7PkiItemE(ptr noundef nonnull align 8 dereferenceable(24) %174, ptr noundef nonnull %24)
          to label %176 unwind label %192

176:                                              ; preds = %175
  call void @_ZN6HandleI7PkiItemED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #8
  br label %194

177:                                              ; preds = %199, %197, %155, %153, %151, %149, %147
  %178 = landingpad { ptr, i32 }
          cleanup
  br label %202

179:                                              ; preds = %164, %161
  %180 = landingpad { ptr, i32 }
          cleanup
  br label %196

181:                                              ; preds = %163
  %182 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %162, i64 noundef 304) #11
  br label %196

183:                                              ; preds = %168, %165
  %184 = landingpad { ptr, i32 }
          cleanup
  br label %189

185:                                              ; preds = %167
  %186 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %166, i64 noundef 32) #11
  br label %189

187:                                              ; preds = %169
  %188 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6HandleINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #8
  br label %189

189:                                              ; preds = %187, %185, %183
  %.pn61 = phi { ptr, i32 } [ %188, %187 ], [ %184, %183 ], [ %186, %185 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #8
  br label %195

190:                                              ; preds = %173
  %191 = landingpad { ptr, i32 }
          cleanup
  br label %195

192:                                              ; preds = %175
  %193 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6HandleI7PkiItemED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #8
  br label %195

194:                                              ; preds = %176, %170
  call void @_ZN6HandleI7PkiItemED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #8
  br label %197

195:                                              ; preds = %192, %190, %189
  %.pn63 = phi { ptr, i32 } [ %193, %192 ], [ %191, %190 ], [ %.pn61, %189 ]
  call void @_ZN6HandleI7PkiItemED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #8
  br label %196

196:                                              ; preds = %195, %181, %179
  %.pn63.pn = phi { ptr, i32 } [ %.pn63, %195 ], [ %180, %179 ], [ %182, %181 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #8
  br label %202

197:                                              ; preds = %194, %158
  %198 = load ptr, ptr @logger, align 8, !tbaa !5
  invoke void (ptr, i32, ptr, ptr, ...) @_ZN6Logger5writeEN11LoggerLevel12LOGGER_LEVELEPKcS3_z(ptr noundef nonnull align 8 dereferenceable(24) %198, i32 noundef 32, ptr noundef nonnull @__FUNCTION__._ZN15Provider_System4initE6HandleINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE, ptr noundef nonnull @.str.11)
          to label %199 unwind label %177

199:                                              ; preds = %197
  %200 = invoke i32 @BIO_free(ptr noundef %152)
          to label %201 unwind label %177

201:                                              ; preds = %139, %199, %128
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #8
  br label %.preheader

202:                                              ; preds = %196, %177
  %.pn66 = phi { ptr, i32 } [ %178, %177 ], [ %.pn63.pn, %196 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  br label %203

203:                                              ; preds = %202, %138
  %.pn66.pn = phi { ptr, i32 } [ %.pn66, %202 ], [ %.pn59, %138 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  br label %204

204:                                              ; preds = %203, %132
  %.pn66.pn.pn = phi { ptr, i32 } [ %.pn66.pn, %203 ], [ %133, %132 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #8
  br label %208

205:                                              ; preds = %123
  %206 = call i32 @closedir(ptr noundef nonnull %87)
  br label %207

207:                                              ; preds = %89, %205
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #8
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, 4
  br i1 %exitcond.not, label %60, label %77, !llvm.loop !12

208:                                              ; preds = %.loopexit97, %.loopexit.split-lp, %204, %121
  %.pn73.pn = phi { ptr, i32 } [ %.pn73, %121 ], [ %.pn66.pn.pn, %204 ], [ %lpad.loopexit, %.loopexit97 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #8
  br label %.loopexit.loopexit

.loopexit.loopexit:                               ; preds = %208, %112
  %.pn73.pn.pn = phi { ptr, i32 } [ %.pn73.pn, %208 ], [ %.pn54.pn.pn, %112 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #8
  %209 = getelementptr inbounds i8, ptr %6, i64 96
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %209) #8
  %210 = getelementptr inbounds i8, ptr %6, i64 64
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %210) #8
  %211 = getelementptr inbounds i8, ptr %6, i64 32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %211) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #8
  br label %.loopexit

.loopexit:                                        ; preds = %73, %.loopexit.loopexit, %.thread88
  %.pn73.pn.pn.pn = phi { ptr, i32 } [ %64, %.thread88 ], [ %.pn73.pn.pn, %.loopexit.loopexit ], [ %.pn.pn, %73 ]
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %6) #8
  br label %212

212:                                              ; preds = %.loopexit, %47
  %.pn80.pn = phi { ptr, i32 } [ %.pn80, %47 ], [ %.pn73.pn.pn.pn, %.loopexit ]
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %3) #8
  resume { ptr, i32 } %.pn80.pn

213:                                              ; preds = %100, %39
  unreachable
}

; Function Attrs: nofree nounwind
declare noalias noundef ptr @opendir(ptr nocapture noundef readonly) local_unnamed_addr #6

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

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

; Function Attrs: nofree nounwind
declare noundef i32 @mkdir(ptr nocapture noundef readonly, i32 noundef) local_unnamed_addr #6

; Function Attrs: nofree nounwind
declare noundef i32 @closedir(ptr nocapture noundef) local_unnamed_addr #6

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #7

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), i8 noundef signext) local_unnamed_addr #7

declare ptr @readdir(ptr noundef) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #7

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_S5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), i8 noundef signext) local_unnamed_addr #7

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

; Function Attrs: nofree nounwind
declare noundef i32 @stat(ptr nocapture noundef readonly, ptr nocapture noundef) local_unnamed_addr #6

declare void @_ZN6Logger5writeEN11LoggerLevel12LOGGER_LEVELEPKcS3_z(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, ptr noundef, ptr noundef, ...) local_unnamed_addr #5

declare ptr @BIO_new(ptr noundef) local_unnamed_addr #5

declare ptr @BIO_s_file() local_unnamed_addr #5

declare i64 @BIO_ctrl(ptr noundef, i32 noundef, i64 noundef, ptr noundef) local_unnamed_addr #5

declare void @_ZN7PkiItemC1Ev(ptr noundef nonnull align 8 dereferenceable(304)) unnamed_addr #5

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN15Provider_System15objectToPKIItemE6HandleINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE(ptr dead_on_unwind noalias writable sret(%class.Handle.5) align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #3 align 2

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

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

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

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

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

declare void @_ZN17PkiItemCollection4pushE6HandleI7PkiItemE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) local_unnamed_addr #5

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

declare i32 @BIO_free(ptr noundef) local_unnamed_addr #5

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!7, !7, i64 0}
!10 = distinct !{!10, !11}
!11 = !{!"llvm.loop.mustprogress"}
!12 = distinct !{!12, !11}


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