; LLVM IR from NVIDIA/DALI :: third_party/opencv/exif/exif.ll (ZN4dali2cv10ExifReader14parseExifEntryEm)

; 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.dali::cv::ExifEntry_t" = type { %"class.std::vector", %"class.std::__cxx11::basic_string", float, double, i32, i32, i16, i16, i16, i8, i8 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl_data" = type { ptr, ptr, 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] }

; 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: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4dali2cv10ExifReader14parseExifEntryEm(ptr dead_on_unwind noalias writable sret(%"struct.dali::cv::ExifEntry_t") align 8 %0, ptr noundef nonnull align 8 dereferenceable(76) %1, i64 noundef %2) #2 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i64, align 8
  %7 = alloca i1, align 1
  %8 = alloca i16, align 2
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %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::vector", align 8
  %15 = alloca %"class.std::vector", align 8
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::vector", align 8
  %19 = alloca %"class.std::vector", align 8
  %20 = alloca %"class.std::vector", align 8
  %21 = alloca %"class.std::vector", align 8
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  store ptr %0, ptr %4, align 8
  store ptr %1, ptr %5, align 8, !tbaa !5
  store i64 %2, ptr %6, align 8, !tbaa !9
  %23 = load ptr, ptr %5, align 8
  store i1 false, ptr %7, align 1
  call void @_ZN4dali2cv11ExifEntry_tC1Ev(ptr noundef nonnull align 8 dereferenceable(88) %0)
  call void @llvm.lifetime.start.p0(i64 2, ptr %8) #4
  %24 = load i64, ptr %6, align 8, !tbaa !9
  %25 = invoke noundef zeroext i16 @_ZNK4dali2cv10ExifReader10getExifTagEm(ptr noundef nonnull align 8 dereferenceable(76) %23, i64 noundef %24)
          to label %26 unwind label %31

26:                                               ; preds = %3
  store i16 %25, ptr %8, align 2, !tbaa !11
  %27 = load i16, ptr %8, align 2, !tbaa !11
  %28 = getelementptr inbounds %"struct.dali::cv::ExifEntry_t", ptr %0, i32 0, i32 6
  store i16 %27, ptr %28, align 8, !tbaa !13
  %29 = load i16, ptr %8, align 2, !tbaa !11
  %30 = zext i16 %29 to i32
  switch i32 %30, label %158 [
    i32 270, label %35
    i32 271, label %44
    i32 272, label %53
    i32 274, label %62
    i32 282, label %67
    i32 283, label %76
    i32 296, label %85
    i32 305, label %90
    i32 306, label %99
    i32 318, label %108
    i32 319, label %117
    i32 529, label %126
    i32 531, label %135
    i32 532, label %140
    i32 33432, label %149
    i32 34665, label %160
  ]

31:                                               ; preds = %135, %85, %62, %3
  %32 = landingpad { ptr, i32 }
          cleanup
  %33 = extractvalue { ptr, i32 } %32, 0
  store ptr %33, ptr %9, align 8
  %34 = extractvalue { ptr, i32 } %32, 1
  store i32 %34, ptr %10, align 4
  br label %162

35:                                               ; preds = %26
  call void @llvm.lifetime.start.p0(i64 32, ptr %11) #4
  %36 = load i64, ptr %6, align 8, !tbaa !9
  invoke void @_ZNK4dali2cv10ExifReader9getStringB5cxx11Em(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %11, ptr noundef nonnull align 8 dereferenceable(76) %23, i64 noundef %36)
          to label %37 unwind label %40

37:                                               ; preds = %35
  %38 = getelementptr inbounds %"struct.dali::cv::ExifEntry_t", ptr %0, i32 0, i32 1
  %39 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull align 8 dereferenceable(32) %11) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #4
  br label %160

40:                                               ; preds = %35
  %41 = landingpad { ptr, i32 }
          cleanup
  %42 = extractvalue { ptr, i32 } %41, 0
  store ptr %42, ptr %9, align 8
  %43 = extractvalue { ptr, i32 } %41, 1
  store i32 %43, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #4
  br label %162

44:                                               ; preds = %26
  call void @llvm.lifetime.start.p0(i64 32, ptr %12) #4
  %45 = load i64, ptr %6, align 8, !tbaa !9
  invoke void @_ZNK4dali2cv10ExifReader9getStringB5cxx11Em(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %12, ptr noundef nonnull align 8 dereferenceable(76) %23, i64 noundef %45)
          to label %46 unwind label %49

46:                                               ; preds = %44
  %47 = getelementptr inbounds %"struct.dali::cv::ExifEntry_t", ptr %0, i32 0, i32 1
  %48 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull align 8 dereferenceable(32) %12) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #4
  br label %160

49:                                               ; preds = %44
  %50 = landingpad { ptr, i32 }
          cleanup
  %51 = extractvalue { ptr, i32 } %50, 0
  store ptr %51, ptr %9, align 8
  %52 = extractvalue { ptr, i32 } %50, 1
  store i32 %52, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #4
  br label %162

53:                                               ; preds = %26
  call void @llvm.lifetime.start.p0(i64 32, ptr %13) #4
  %54 = load i64, ptr %6, align 8, !tbaa !9
  invoke void @_ZNK4dali2cv10ExifReader9getStringB5cxx11Em(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %13, ptr noundef nonnull align 8 dereferenceable(76) %23, i64 noundef %54)
          to label %55 unwind label %58

55:                                               ; preds = %53
  %56 = getelementptr inbounds %"struct.dali::cv::ExifEntry_t", ptr %0, i32 0, i32 1
  %57 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %56, ptr noundef nonnull align 8 dereferenceable(32) %13) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %13) #4
  br label %160

58:                                               ; preds = %53
  %59 = landingpad { ptr, i32 }
          cleanup
  %60 = extractvalue { ptr, i32 } %59, 0
  store ptr %60, ptr %9, align 8
  %61 = extractvalue { ptr, i32 } %59, 1
  store i32 %61, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %13) #4
  br label %162

62:                                               ; preds = %26
  %63 = load i64, ptr %6, align 8, !tbaa !9
  %64 = invoke noundef zeroext i16 @_ZNK4dali2cv10ExifReader14getOrientationEm(ptr noundef nonnull align 8 dereferenceable(76) %23, i64 noundef %63)
          to label %65 unwind label %31

65:                                               ; preds = %62
  %66 = getelementptr inbounds %"struct.dali::cv::ExifEntry_t", ptr %0, i32 0, i32 7
  store i16 %64, ptr %66, align 2, !tbaa !24
  br label %160

67:                                               ; preds = %26
  call void @llvm.lifetime.start.p0(i64 24, ptr %14) #4
  %68 = load i64, ptr %6, align 8, !tbaa !9
  invoke void @_ZNK4dali2cv10ExifReader13getResolutionEm(ptr dead_on_unwind writable sret(%"class.std::vector") align 8 %14, ptr noundef nonnull align 8 dereferenceable(76) %23, i64 noundef %68)
          to label %69 unwind label %72

69:                                               ; preds = %67
  %70 = getelementptr inbounds %"struct.dali::cv::ExifEntry_t", ptr %0, i32 0, i32 0
  %71 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %70, ptr noundef nonnull align 8 dereferenceable(24) %14) #4
  call void @_ZNSt6vectorISt4pairIjjESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %14) #4
  br label %160

72:                                               ; preds = %67
  %73 = landingpad { ptr, i32 }
          cleanup
  %74 = extractvalue { ptr, i32 } %73, 0
  store ptr %74, ptr %9, align 8
  %75 = extractvalue { ptr, i32 } %73, 1
  store i32 %75, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %14) #4
  br label %162

76:                                               ; preds = %26
  call void @llvm.lifetime.start.p0(i64 24, ptr %15) #4
  %77 = load i64, ptr %6, align 8, !tbaa !9
  invoke void @_ZNK4dali2cv10ExifReader13getResolutionEm(ptr dead_on_unwind writable sret(%"class.std::vector") align 8 %15, ptr noundef nonnull align 8 dereferenceable(76) %23, i64 noundef %77)
          to label %78 unwind label %81

78:                                               ; preds = %76
  %79 = getelementptr inbounds %"struct.dali::cv::ExifEntry_t", ptr %0, i32 0, i32 0
  %80 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %79, ptr noundef nonnull align 8 dereferenceable(24) %15) #4
  call void @_ZNSt6vectorISt4pairIjjESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %15) #4
  br label %160

81:                                               ; preds = %76
  %82 = landingpad { ptr, i32 }
          cleanup
  %83 = extractvalue { ptr, i32 } %82, 0
  store ptr %83, ptr %9, align 8
  %84 = extractvalue { ptr, i32 } %82, 1
  store i32 %84, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %15) #4
  br label %162

85:                                               ; preds = %26
  %86 = load i64, ptr %6, align 8, !tbaa !9
  %87 = invoke noundef zeroext i16 @_ZNK4dali2cv10ExifReader17getResolutionUnitEm(ptr noundef nonnull align 8 dereferenceable(76) %23, i64 noundef %86)
          to label %88 unwind label %31

88:                                               ; preds = %85
  %89 = getelementptr inbounds %"struct.dali::cv::ExifEntry_t", ptr %0, i32 0, i32 7
  store i16 %87, ptr %89, align 2, !tbaa !24
  br label %160

90:                                               ; preds = %26
  call void @llvm.lifetime.start.p0(i64 32, ptr %16) #4
  %91 = load i64, ptr %6, align 8, !tbaa !9
  invoke void @_ZNK4dali2cv10ExifReader9getStringB5cxx11Em(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %16, ptr noundef nonnull align 8 dereferenceable(76) %23, i64 noundef %91)
          to label %92 unwind label %95

92:                                               ; preds = %90
  %93 = getelementptr inbounds %"struct.dali::cv::ExifEntry_t", ptr %0, i32 0, i32 1
  %94 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %93, ptr noundef nonnull align 8 dereferenceable(32) %16) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #4
  br label %160

95:                                               ; preds = %90
  %96 = landingpad { ptr, i32 }
          cleanup
  %97 = extractvalue { ptr, i32 } %96, 0
  store ptr %97, ptr %9, align 8
  %98 = extractvalue { ptr, i32 } %96, 1
  store i32 %98, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #4
  br label %162

99:                                               ; preds = %26
  call void @llvm.lifetime.start.p0(i64 32, ptr %17) #4
  %100 = load i64, ptr %6, align 8, !tbaa !9
  invoke void @_ZNK4dali2cv10ExifReader9getStringB5cxx11Em(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %17, ptr noundef nonnull align 8 dereferenceable(76) %23, i64 noundef %100)
          to label %101 unwind label %104

101:                                              ; preds = %99
  %102 = getelementptr inbounds %"struct.dali::cv::ExifEntry_t", ptr %0, i32 0, i32 1
  %103 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %102, ptr noundef nonnull align 8 dereferenceable(32) %17) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #4
  br label %160

104:                                              ; preds = %99
  %105 = landingpad { ptr, i32 }
          cleanup
  %106 = extractvalue { ptr, i32 } %105, 0
  store ptr %106, ptr %9, align 8
  %107 = extractvalue { ptr, i32 } %105, 1
  store i32 %107, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #4
  br label %162

108:                                              ; preds = %26
  call void @llvm.lifetime.start.p0(i64 24, ptr %18) #4
  %109 = load i64, ptr %6, align 8, !tbaa !9
  invoke void @_ZNK4dali2cv10ExifReader13getWhitePointEm(ptr dead_on_unwind writable sret(%"class.std::vector") align 8 %18, ptr noundef nonnull align 8 dereferenceable(76) %23, i64 noundef %109)
          to label %110 unwind label %113

110:                                              ; preds = %108
  %111 = getelementptr inbounds %"struct.dali::cv::ExifEntry_t", ptr %0, i32 0, i32 0
  %112 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %111, ptr noundef nonnull align 8 dereferenceable(24) %18) #4
  call void @_ZNSt6vectorISt4pairIjjESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #4
  br label %160

113:                                              ; preds = %108
  %114 = landingpad { ptr, i32 }
          cleanup
  %115 = extractvalue { ptr, i32 } %114, 0
  store ptr %115, ptr %9, align 8
  %116 = extractvalue { ptr, i32 } %114, 1
  store i32 %116, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #4
  br label %162

117:                                              ; preds = %26
  call void @llvm.lifetime.start.p0(i64 24, ptr %19) #4
  %118 = load i64, ptr %6, align 8, !tbaa !9
  invoke void @_ZNK4dali2cv10ExifReader22getPrimaryChromaticiesEm(ptr dead_on_unwind writable sret(%"class.std::vector") align 8 %19, ptr noundef nonnull align 8 dereferenceable(76) %23, i64 noundef %118)
          to label %119 unwind label %122

119:                                              ; preds = %117
  %120 = getelementptr inbounds %"struct.dali::cv::ExifEntry_t", ptr %0, i32 0, i32 0
  %121 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %120, ptr noundef nonnull align 8 dereferenceable(24) %19) #4
  call void @_ZNSt6vectorISt4pairIjjESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #4
  br label %160

122:                                              ; preds = %117
  %123 = landingpad { ptr, i32 }
          cleanup
  %124 = extractvalue { ptr, i32 } %123, 0
  store ptr %124, ptr %9, align 8
  %125 = extractvalue { ptr, i32 } %123, 1
  store i32 %125, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #4
  br label %162

126:                                              ; preds = %26
  call void @llvm.lifetime.start.p0(i64 24, ptr %20) #4
  %127 = load i64, ptr %6, align 8, !tbaa !9
  invoke void @_ZNK4dali2cv10ExifReader14getYCbCrCoeffsEm(ptr dead_on_unwind writable sret(%"class.std::vector") align 8 %20, ptr noundef nonnull align 8 dereferenceable(76) %23, i64 noundef %127)
          to label %128 unwind label %131

128:                                              ; preds = %126
  %129 = getelementptr inbounds %"struct.dali::cv::ExifEntry_t", ptr %0, i32 0, i32 0
  %130 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %129, ptr noundef nonnull align 8 dereferenceable(24) %20) #4
  call void @_ZNSt6vectorISt4pairIjjESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #4
  br label %160

131:                                              ; preds = %126
  %132 = landingpad { ptr, i32 }
          cleanup
  %133 = extractvalue { ptr, i32 } %132, 0
  store ptr %133, ptr %9, align 8
  %134 = extractvalue { ptr, i32 } %132, 1
  store i32 %134, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #4
  br label %162

135:                                              ; preds = %26
  %136 = load i64, ptr %6, align 8, !tbaa !9
  %137 = invoke noundef zeroext i16 @_ZNK4dali2cv10ExifReader11getYCbCrPosEm(ptr noundef nonnull align 8 dereferenceable(76) %23, i64 noundef %136)
          to label %138 unwind label %31

138:                                              ; preds = %135
  %139 = getelementptr inbounds %"struct.dali::cv::ExifEntry_t", ptr %0, i32 0, i32 7
  store i16 %137, ptr %139, align 2, !tbaa !24
  br label %160

140:                                              ; preds = %26
  call void @llvm.lifetime.start.p0(i64 24, ptr %21) #4
  %141 = load i64, ptr %6, align 8, !tbaa !9
  invoke void @_ZNK4dali2cv10ExifReader8getRefBWEm(ptr dead_on_unwind writable sret(%"class.std::vector") align 8 %21, ptr noundef nonnull align 8 dereferenceable(76) %23, i64 noundef %141)
          to label %142 unwind label %145

142:                                              ; preds = %140
  %143 = getelementptr inbounds %"struct.dali::cv::ExifEntry_t", ptr %0, i32 0, i32 0
  %144 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %143, ptr noundef nonnull align 8 dereferenceable(24) %21) #4
  call void @_ZNSt6vectorISt4pairIjjESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #4
  br label %160

145:                                              ; preds = %140
  %146 = landingpad { ptr, i32 }
          cleanup
  %147 = extractvalue { ptr, i32 } %146, 0
  store ptr %147, ptr %9, align 8
  %148 = extractvalue { ptr, i32 } %146, 1
  store i32 %148, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #4
  br label %162

149:                                              ; preds = %26
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #4
  %150 = load i64, ptr %6, align 8, !tbaa !9
  invoke void @_ZNK4dali2cv10ExifReader9getStringB5cxx11Em(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %22, ptr noundef nonnull align 8 dereferenceable(76) %23, i64 noundef %150)
          to label %151 unwind label %154

151:                                              ; preds = %149
  %152 = getelementptr inbounds %"struct.dali::cv::ExifEntry_t", ptr %0, i32 0, i32 1
  %153 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %152, ptr noundef nonnull align 8 dereferenceable(32) %22) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #4
  br label %160

154:                                              ; preds = %149
  %155 = landingpad { ptr, i32 }
          cleanup
  %156 = extractvalue { ptr, i32 } %155, 0
  store ptr %156, ptr %9, align 8
  %157 = extractvalue { ptr, i32 } %155, 1
  store i32 %157, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #4
  br label %162

158:                                              ; preds = %26
  %159 = getelementptr inbounds %"struct.dali::cv::ExifEntry_t", ptr %0, i32 0, i32 6
  store i16 -1, ptr %159, align 8, !tbaa !13
  br label %160

160:                                              ; preds = %158, %151, %142, %138, %128, %119, %110, %101, %92, %88, %78, %69, %65, %55, %46, %37, %26
  store i1 true, ptr %7, align 1
  call void @llvm.lifetime.end.p0(i64 2, ptr %8) #4
  %161 = load i1, ptr %7, align 1
  br i1 %161, label %164, label %163

162:                                              ; preds = %154, %145, %131, %122, %113, %104, %95, %81, %72, %58, %49, %40, %31
  call void @llvm.lifetime.end.p0(i64 2, ptr %8) #4
  call void @_ZN4dali2cv11ExifEntry_tD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %0) #4
  br label %165

163:                                              ; preds = %160
  call void @_ZN4dali2cv11ExifEntry_tD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %0) #4
  br label %164

164:                                              ; preds = %163, %160
  ret void

165:                                              ; preds = %162
  %166 = load ptr, ptr %9, align 8
  %167 = load i32, ptr %10, align 4
  %168 = insertvalue { ptr, i32 } poison, ptr %166, 0
  %169 = insertvalue { ptr, i32 } %168, i32 %167, 1
  resume { ptr, i32 } %169
}

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i16 @_ZNK4dali2cv10ExifReader10getExifTagEm(ptr noundef nonnull align 8 dereferenceable(76), i64 noundef) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK4dali2cv10ExifReader9getStringB5cxx11Em(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(76), i64 noundef) #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i16 @_ZNK4dali2cv10ExifReader14getOrientationEm(ptr noundef nonnull align 8 dereferenceable(76), i64 noundef) #2 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i16 @_ZNK4dali2cv10ExifReader17getResolutionUnitEm(ptr noundef nonnull align 8 dereferenceable(76), i64 noundef) #2 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i16 @_ZNK4dali2cv10ExifReader11getYCbCrPosEm(ptr noundef nonnull align 8 dereferenceable(76), i64 noundef) #2 align 2

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

declare void @_ZN4dali2cv11ExifEntry_tC1Ev(ptr)

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"short", !7, i64 0}
!13 = !{!14, !12, i64 80}
!14 = !{!"_ZTSN4dali2cv11ExifEntry_tE", !15, i64 0, !19, i64 24, !21, i64 56, !22, i64 64, !23, i64 72, !23, i64 76, !12, i64 80, !12, i64 82, !12, i64 84, !7, i64 86, !7, i64 87}
!15 = !{!"_ZTSSt6vectorISt4pairIjjESaIS1_EE", !16, i64 0}
!16 = !{!"_ZTSSt12_Vector_baseISt4pairIjjESaIS1_EE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseISt4pairIjjESaIS1_EE12_Vector_implE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseISt4pairIjjESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!19 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !20, i64 0, !10, i64 8, !7, i64 16}
!20 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!21 = !{!"float", !7, i64 0}
!22 = !{!"double", !7, i64 0}
!23 = !{!"int", !7, i64 0}
!24 = !{!14, !12, i64 82}


; 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.dali::cv::ExifEntry_t" = type { %"class.std::vector", %"class.std::__cxx11::basic_string", float, double, i32, i32, i16, i16, i16, i8, i8 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>, std::allocator<std::pair<unsigned int, unsigned int>>>::_Vector_impl_data" = type { ptr, ptr, 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] }

; 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: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4dali2cv10ExifReader14parseExifEntryEm(ptr dead_on_unwind noalias writable sret(%"struct.dali::cv::ExifEntry_t") align 8 %0, ptr noundef nonnull align 8 dereferenceable(76) %1, i64 noundef %2) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"class.std::__cxx11::basic_string", align 8
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"class.std::vector", align 8
  %8 = alloca %"class.std::vector", align 8
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::vector", align 8
  %12 = alloca %"class.std::vector", align 8
  %13 = alloca %"class.std::vector", align 8
  %14 = alloca %"class.std::vector", align 8
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  tail call void @_ZN4dali2cv11ExifEntry_tC1Ev(ptr noundef nonnull align 8 dereferenceable(88) %0)
  %16 = invoke noundef zeroext i16 @_ZNK4dali2cv10ExifReader10getExifTagEm(ptr noundef nonnull align 8 dereferenceable(76) %1, i64 noundef %2)
          to label %17 unwind label %19

17:                                               ; preds = %3
  %18 = getelementptr inbounds i8, ptr %0, i64 80
  store i16 %16, ptr %18, align 8, !tbaa !5
  switch i16 %16, label %99 [
    i16 270, label %21
    i16 271, label %27
    i16 272, label %33
    i16 274, label %39
    i16 282, label %43
    i16 283, label %48
    i16 296, label %53
    i16 305, label %57
    i16 306, label %63
    i16 318, label %69
    i16 319, label %74
    i16 529, label %79
    i16 531, label %84
    i16 532, label %88
    i16 -32104, label %93
    i16 -30871, label %101
  ]

19:                                               ; preds = %84, %53, %39, %3
  %20 = landingpad { ptr, i32 }
          cleanup
  br label %100

21:                                               ; preds = %17
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #4
  invoke void @_ZNK4dali2cv10ExifReader9getStringB5cxx11Em(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %4, ptr noundef nonnull align 8 dereferenceable(76) %1, i64 noundef %2)
          to label %22 unwind label %25

22:                                               ; preds = %21
  %23 = getelementptr inbounds i8, ptr %0, i64 24
  %24 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 8 dereferenceable(32) %4) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #4
  br label %101

25:                                               ; preds = %21
  %26 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #4
  br label %100

27:                                               ; preds = %17
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #4
  invoke void @_ZNK4dali2cv10ExifReader9getStringB5cxx11Em(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %5, ptr noundef nonnull align 8 dereferenceable(76) %1, i64 noundef %2)
          to label %28 unwind label %31

28:                                               ; preds = %27
  %29 = getelementptr inbounds i8, ptr %0, i64 24
  %30 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull align 8 dereferenceable(32) %5) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #4
  br label %101

31:                                               ; preds = %27
  %32 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #4
  br label %100

33:                                               ; preds = %17
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #4
  invoke void @_ZNK4dali2cv10ExifReader9getStringB5cxx11Em(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %6, ptr noundef nonnull align 8 dereferenceable(76) %1, i64 noundef %2)
          to label %34 unwind label %37

34:                                               ; preds = %33
  %35 = getelementptr inbounds i8, ptr %0, i64 24
  %36 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef nonnull align 8 dereferenceable(32) %6) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #4
  br label %101

37:                                               ; preds = %33
  %38 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #4
  br label %100

39:                                               ; preds = %17
  %40 = invoke noundef zeroext i16 @_ZNK4dali2cv10ExifReader14getOrientationEm(ptr noundef nonnull align 8 dereferenceable(76) %1, i64 noundef %2)
          to label %41 unwind label %19

41:                                               ; preds = %39
  %42 = getelementptr inbounds i8, ptr %0, i64 82
  store i16 %40, ptr %42, align 2, !tbaa !21
  br label %101

43:                                               ; preds = %17
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #4
  invoke void @_ZNK4dali2cv10ExifReader13getResolutionEm(ptr dead_on_unwind nonnull writable sret(%"class.std::vector") align 8 %7, ptr noundef nonnull align 8 dereferenceable(76) %1, i64 noundef %2)
          to label %44 unwind label %46

44:                                               ; preds = %43
  %45 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %7) #4
  call void @_ZNSt6vectorISt4pairIjjESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #4
  br label %101

46:                                               ; preds = %43
  %47 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #4
  br label %100

48:                                               ; preds = %17
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) #4
  invoke void @_ZNK4dali2cv10ExifReader13getResolutionEm(ptr dead_on_unwind nonnull writable sret(%"class.std::vector") align 8 %8, ptr noundef nonnull align 8 dereferenceable(76) %1, i64 noundef %2)
          to label %49 unwind label %51

49:                                               ; preds = %48
  %50 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %8) #4
  call void @_ZNSt6vectorISt4pairIjjESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #4
  br label %101

51:                                               ; preds = %48
  %52 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #4
  br label %100

53:                                               ; preds = %17
  %54 = invoke noundef zeroext i16 @_ZNK4dali2cv10ExifReader17getResolutionUnitEm(ptr noundef nonnull align 8 dereferenceable(76) %1, i64 noundef %2)
          to label %55 unwind label %19

55:                                               ; preds = %53
  %56 = getelementptr inbounds i8, ptr %0, i64 82
  store i16 %54, ptr %56, align 2, !tbaa !21
  br label %101

57:                                               ; preds = %17
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #4
  invoke void @_ZNK4dali2cv10ExifReader9getStringB5cxx11Em(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %9, ptr noundef nonnull align 8 dereferenceable(76) %1, i64 noundef %2)
          to label %58 unwind label %61

58:                                               ; preds = %57
  %59 = getelementptr inbounds i8, ptr %0, i64 24
  %60 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %59, ptr noundef nonnull align 8 dereferenceable(32) %9) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #4
  br label %101

61:                                               ; preds = %57
  %62 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #4
  br label %100

63:                                               ; preds = %17
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #4
  invoke void @_ZNK4dali2cv10ExifReader9getStringB5cxx11Em(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %10, ptr noundef nonnull align 8 dereferenceable(76) %1, i64 noundef %2)
          to label %64 unwind label %67

64:                                               ; preds = %63
  %65 = getelementptr inbounds i8, ptr %0, i64 24
  %66 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef nonnull align 8 dereferenceable(32) %10) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #4
  br label %101

67:                                               ; preds = %63
  %68 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #4
  br label %100

69:                                               ; preds = %17
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) #4
  invoke void @_ZNK4dali2cv10ExifReader13getWhitePointEm(ptr dead_on_unwind nonnull writable sret(%"class.std::vector") align 8 %11, ptr noundef nonnull align 8 dereferenceable(76) %1, i64 noundef %2)
          to label %70 unwind label %72

70:                                               ; preds = %69
  %71 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %11) #4
  call void @_ZNSt6vectorISt4pairIjjESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #4
  br label %101

72:                                               ; preds = %69
  %73 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #4
  br label %100

74:                                               ; preds = %17
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %12) #4
  invoke void @_ZNK4dali2cv10ExifReader22getPrimaryChromaticiesEm(ptr dead_on_unwind nonnull writable sret(%"class.std::vector") align 8 %12, ptr noundef nonnull align 8 dereferenceable(76) %1, i64 noundef %2)
          to label %75 unwind label %77

75:                                               ; preds = %74
  %76 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %12) #4
  call void @_ZNSt6vectorISt4pairIjjESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #4
  br label %101

77:                                               ; preds = %74
  %78 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #4
  br label %100

79:                                               ; preds = %17
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13) #4
  invoke void @_ZNK4dali2cv10ExifReader14getYCbCrCoeffsEm(ptr dead_on_unwind nonnull writable sret(%"class.std::vector") align 8 %13, ptr noundef nonnull align 8 dereferenceable(76) %1, i64 noundef %2)
          to label %80 unwind label %82

80:                                               ; preds = %79
  %81 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %13) #4
  call void @_ZNSt6vectorISt4pairIjjESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #4
  br label %101

82:                                               ; preds = %79
  %83 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #4
  br label %100

84:                                               ; preds = %17
  %85 = invoke noundef zeroext i16 @_ZNK4dali2cv10ExifReader11getYCbCrPosEm(ptr noundef nonnull align 8 dereferenceable(76) %1, i64 noundef %2)
          to label %86 unwind label %19

86:                                               ; preds = %84
  %87 = getelementptr inbounds i8, ptr %0, i64 82
  store i16 %85, ptr %87, align 2, !tbaa !21
  br label %101

88:                                               ; preds = %17
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14) #4
  invoke void @_ZNK4dali2cv10ExifReader8getRefBWEm(ptr dead_on_unwind nonnull writable sret(%"class.std::vector") align 8 %14, ptr noundef nonnull align 8 dereferenceable(76) %1, i64 noundef %2)
          to label %89 unwind label %91

89:                                               ; preds = %88
  %90 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorISt4pairIjjESaIS1_EEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %14) #4
  call void @_ZNSt6vectorISt4pairIjjESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #4
  br label %101

91:                                               ; preds = %88
  %92 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #4
  br label %100

93:                                               ; preds = %17
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #4
  invoke void @_ZNK4dali2cv10ExifReader9getStringB5cxx11Em(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %15, ptr noundef nonnull align 8 dereferenceable(76) %1, i64 noundef %2)
          to label %94 unwind label %97

94:                                               ; preds = %93
  %95 = getelementptr inbounds i8, ptr %0, i64 24
  %96 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %95, ptr noundef nonnull align 8 dereferenceable(32) %15) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #4
  br label %101

97:                                               ; preds = %93
  %98 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #4
  br label %100

99:                                               ; preds = %17
  store i16 -1, ptr %18, align 8, !tbaa !5
  br label %101

100:                                              ; preds = %97, %91, %82, %77, %72, %67, %61, %51, %46, %37, %31, %25, %19
  %.pn = phi { ptr, i32 } [ %98, %97 ], [ %92, %91 ], [ %20, %19 ], [ %83, %82 ], [ %78, %77 ], [ %73, %72 ], [ %68, %67 ], [ %62, %61 ], [ %52, %51 ], [ %47, %46 ], [ %38, %37 ], [ %32, %31 ], [ %26, %25 ]
  call void @_ZN4dali2cv11ExifEntry_tD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %0) #4
  resume { ptr, i32 } %.pn

101:                                              ; preds = %17, %22, %28, %34, %41, %44, %49, %55, %58, %64, %70, %75, %80, %86, %89, %94, %99
  ret void
}

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i16 @_ZNK4dali2cv10ExifReader10getExifTagEm(ptr noundef nonnull align 8 dereferenceable(76), i64 noundef) local_unnamed_addr #2 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i16 @_ZNK4dali2cv10ExifReader14getOrientationEm(ptr noundef nonnull align 8 dereferenceable(76), i64 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK4dali2cv10ExifReader13getResolutionEm(ptr dead_on_unwind noalias writable sret(%"class.std::vector") align 8, ptr noundef nonnull align 8 dereferenceable(76), i64 noundef) local_unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i16 @_ZNK4dali2cv10ExifReader17getResolutionUnitEm(ptr noundef nonnull align 8 dereferenceable(76), i64 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK4dali2cv10ExifReader13getWhitePointEm(ptr dead_on_unwind noalias writable sret(%"class.std::vector") align 8, ptr noundef nonnull align 8 dereferenceable(76), i64 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK4dali2cv10ExifReader22getPrimaryChromaticiesEm(ptr dead_on_unwind noalias writable sret(%"class.std::vector") align 8, ptr noundef nonnull align 8 dereferenceable(76), i64 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK4dali2cv10ExifReader14getYCbCrCoeffsEm(ptr dead_on_unwind noalias writable sret(%"class.std::vector") align 8, ptr noundef nonnull align 8 dereferenceable(76), i64 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i16 @_ZNK4dali2cv10ExifReader11getYCbCrPosEm(ptr noundef nonnull align 8 dereferenceable(76), i64 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK4dali2cv10ExifReader8getRefBWEm(ptr dead_on_unwind noalias writable sret(%"class.std::vector") align 8, ptr noundef nonnull align 8 dereferenceable(76), i64 noundef) local_unnamed_addr #2 align 2

declare void @_ZN4dali2cv11ExifEntry_tC1Ev(ptr) local_unnamed_addr

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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, !20, i64 80}
!6 = !{!"_ZTSN4dali2cv11ExifEntry_tE", !7, i64 0, !14, i64 24, !17, i64 56, !18, i64 64, !19, i64 72, !19, i64 76, !20, i64 80, !20, i64 82, !20, i64 84, !12, i64 86, !12, i64 87}
!7 = !{!"_ZTSSt6vectorISt4pairIjjESaIS1_EE", !8, i64 0}
!8 = !{!"_ZTSSt12_Vector_baseISt4pairIjjESaIS1_EE", !9, i64 0}
!9 = !{!"_ZTSNSt12_Vector_baseISt4pairIjjESaIS1_EE12_Vector_implE", !10, i64 0}
!10 = !{!"_ZTSNSt12_Vector_baseISt4pairIjjESaIS1_EE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!11 = !{!"any pointer", !12, i64 0}
!12 = !{!"omnipotent char", !13, i64 0}
!13 = !{!"Simple C++ TBAA"}
!14 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !15, i64 0, !16, i64 8, !12, i64 16}
!15 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !11, i64 0}
!16 = !{!"long", !12, i64 0}
!17 = !{!"float", !12, i64 0}
!18 = !{!"double", !12, i64 0}
!19 = !{!"int", !12, i64 0}
!20 = !{!"short", !12, i64 0}
!21 = !{!6, !20, i64 82}


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