; LLVM IR from glaretechnologies/substrata :: rtaudio/RtAudio.ll (ZN5RtApi15clearStreamInfoEv)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%class.RtApi = type { ptr, %"class.std::__cxx11::basic_ostringstream", %"class.std::__cxx11::basic_string", %"class.std::function", i8, %"class.std::vector.3", i32, %"struct.RtApi::RtApiStream" }
%"class.std::__cxx11::basic_ostringstream" = type { %"class.std::basic_ostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"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::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<RtAudio::DeviceInfo, std::allocator<RtAudio::DeviceInfo>>::_Vector_impl" }
%"struct.std::_Vector_base<RtAudio::DeviceInfo, std::allocator<RtAudio::DeviceInfo>>::_Vector_impl" = type { %"struct.std::_Vector_base<RtAudio::DeviceInfo, std::allocator<RtAudio::DeviceInfo>>::_Vector_impl_data" }
%"struct.std::_Vector_base<RtAudio::DeviceInfo, std::allocator<RtAudio::DeviceInfo>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.RtApi::RtApiStream" = type { [2 x i32], ptr, i32, i32, [2 x ptr], ptr, [2 x i8], i8, [2 x i8], [2 x i8], i32, i32, i32, [2 x i32], [2 x i32], [2 x i32], [2 x i64], i64, [2 x i64], %union.pthread_mutex_t, %struct.CallbackInfo, [2 x %"struct.RtApi::ConvertInfo"], double }
%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }
%struct.CallbackInfo = type <{ ptr, i64, ptr, ptr, ptr, i8, i8, [2 x i8], i32, i8, [7 x i8] }>
%"struct.RtApi::ConvertInfo" = type { i32, i32, i32, i64, i64, %"class.std::vector.8", %"class.std::vector.8" }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }

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

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

; Function Attrs: mustprogress nounwind uwtable
define dso_local void @_ZN5RtApi15clearStreamInfoEv(ptr noundef nonnull align 8 dereferenceable(888) %0) #1 align 2 {
  %2 = alloca ptr, align 8
  %3 = alloca i32, align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  %4 = load ptr, ptr %2, align 8
  %5 = getelementptr inbounds %class.RtApi, ptr %4, i32 0, i32 7
  %6 = getelementptr inbounds %"struct.RtApi::RtApiStream", ptr %5, i32 0, i32 2
  store i32 -75, ptr %6, align 8, !tbaa !9
  %7 = getelementptr inbounds %class.RtApi, ptr %4, i32 0, i32 7
  %8 = getelementptr inbounds %"struct.RtApi::RtApiStream", ptr %7, i32 0, i32 3
  store i32 -50, ptr %8, align 4, !tbaa !33
  %9 = getelementptr inbounds %class.RtApi, ptr %4, i32 0, i32 7
  %10 = getelementptr inbounds %"struct.RtApi::RtApiStream", ptr %9, i32 0, i32 10
  store i32 0, ptr %10, align 8, !tbaa !34
  %11 = getelementptr inbounds %class.RtApi, ptr %4, i32 0, i32 7
  %12 = getelementptr inbounds %"struct.RtApi::RtApiStream", ptr %11, i32 0, i32 11
  store i32 0, ptr %12, align 4, !tbaa !35
  %13 = getelementptr inbounds %class.RtApi, ptr %4, i32 0, i32 7
  %14 = getelementptr inbounds %"struct.RtApi::RtApiStream", ptr %13, i32 0, i32 12
  store i32 0, ptr %14, align 8, !tbaa !36
  %15 = getelementptr inbounds %class.RtApi, ptr %4, i32 0, i32 7
  %16 = getelementptr inbounds %"struct.RtApi::RtApiStream", ptr %15, i32 0, i32 17
  store i64 0, ptr %16, align 8, !tbaa !37
  %17 = getelementptr inbounds %class.RtApi, ptr %4, i32 0, i32 7
  %18 = getelementptr inbounds %"struct.RtApi::RtApiStream", ptr %17, i32 0, i32 7
  store i8 1, ptr %18, align 2, !tbaa !38
  %19 = getelementptr inbounds %class.RtApi, ptr %4, i32 0, i32 7
  %20 = getelementptr inbounds %"struct.RtApi::RtApiStream", ptr %19, i32 0, i32 22
  store double 0.000000e+00, ptr %20, align 8, !tbaa !39
  %21 = getelementptr inbounds %class.RtApi, ptr %4, i32 0, i32 7
  %22 = getelementptr inbounds %"struct.RtApi::RtApiStream", ptr %21, i32 0, i32 1
  store ptr null, ptr %22, align 8, !tbaa !40
  %23 = getelementptr inbounds %class.RtApi, ptr %4, i32 0, i32 7
  %24 = getelementptr inbounds %"struct.RtApi::RtApiStream", ptr %23, i32 0, i32 5
  store ptr null, ptr %24, align 8, !tbaa !41
  %25 = getelementptr inbounds %class.RtApi, ptr %4, i32 0, i32 7
  %26 = getelementptr inbounds %"struct.RtApi::RtApiStream", ptr %25, i32 0, i32 20
  %27 = getelementptr inbounds %struct.CallbackInfo, ptr %26, i32 0, i32 2
  store ptr null, ptr %27, align 8, !tbaa !42
  %28 = getelementptr inbounds %class.RtApi, ptr %4, i32 0, i32 7
  %29 = getelementptr inbounds %"struct.RtApi::RtApiStream", ptr %28, i32 0, i32 20
  %30 = getelementptr inbounds %struct.CallbackInfo, ptr %29, i32 0, i32 3
  store ptr null, ptr %30, align 8, !tbaa !43
  %31 = getelementptr inbounds %class.RtApi, ptr %4, i32 0, i32 7
  %32 = getelementptr inbounds %"struct.RtApi::RtApiStream", ptr %31, i32 0, i32 20
  %33 = getelementptr inbounds %struct.CallbackInfo, ptr %32, i32 0, i32 5
  store i8 0, ptr %33, align 8, !tbaa !44
  %34 = getelementptr inbounds %class.RtApi, ptr %4, i32 0, i32 7
  %35 = getelementptr inbounds %"struct.RtApi::RtApiStream", ptr %34, i32 0, i32 20
  %36 = getelementptr inbounds %struct.CallbackInfo, ptr %35, i32 0, i32 9
  store i8 0, ptr %36, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #2
  store i32 0, ptr %3, align 4, !tbaa !46
  br label %37

37:                                               ; preds = %134, %1
  %38 = load i32, ptr %3, align 4, !tbaa !46
  %39 = icmp slt i32 %38, 2
  br i1 %39, label %41, label %40

40:                                               ; preds = %37
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #2
  br label %137

41:                                               ; preds = %37
  %42 = getelementptr inbounds %class.RtApi, ptr %4, i32 0, i32 7
  %43 = getelementptr inbounds %"struct.RtApi::RtApiStream", ptr %42, i32 0, i32 0
  %44 = load i32, ptr %3, align 4, !tbaa !46
  %45 = sext i32 %44 to i64
  %46 = getelementptr inbounds [2 x i32], ptr %43, i64 0, i64 %45
  store i32 11111, ptr %46, align 4, !tbaa !46
  %47 = getelementptr inbounds %class.RtApi, ptr %4, i32 0, i32 7
  %48 = getelementptr inbounds %"struct.RtApi::RtApiStream", ptr %47, i32 0, i32 6
  %49 = load i32, ptr %3, align 4, !tbaa !46
  %50 = sext i32 %49 to i64
  %51 = getelementptr inbounds [2 x i8], ptr %48, i64 0, i64 %50
  store i8 0, ptr %51, align 1, !tbaa !47
  %52 = getelementptr inbounds %class.RtApi, ptr %4, i32 0, i32 7
  %53 = getelementptr inbounds %"struct.RtApi::RtApiStream", ptr %52, i32 0, i32 8
  %54 = load i32, ptr %3, align 4, !tbaa !46
  %55 = sext i32 %54 to i64
  %56 = getelementptr inbounds [2 x i8], ptr %53, i64 0, i64 %55
  store i8 1, ptr %56, align 1, !tbaa !47
  %57 = getelementptr inbounds %class.RtApi, ptr %4, i32 0, i32 7
  %58 = getelementptr inbounds %"struct.RtApi::RtApiStream", ptr %57, i32 0, i32 9
  %59 = load i32, ptr %3, align 4, !tbaa !46
  %60 = sext i32 %59 to i64
  %61 = getelementptr inbounds [2 x i8], ptr %58, i64 0, i64 %60
  store i8 0, ptr %61, align 1, !tbaa !47
  %62 = getelementptr inbounds %class.RtApi, ptr %4, i32 0, i32 7
  %63 = getelementptr inbounds %"struct.RtApi::RtApiStream", ptr %62, i32 0, i32 13
  %64 = load i32, ptr %3, align 4, !tbaa !46
  %65 = sext i32 %64 to i64
  %66 = getelementptr inbounds [2 x i32], ptr %63, i64 0, i64 %65
  store i32 0, ptr %66, align 4, !tbaa !46
  %67 = getelementptr inbounds %class.RtApi, ptr %4, i32 0, i32 7
  %68 = getelementptr inbounds %"struct.RtApi::RtApiStream", ptr %67, i32 0, i32 14
  %69 = load i32, ptr %3, align 4, !tbaa !46
  %70 = sext i32 %69 to i64
  %71 = getelementptr inbounds [2 x i32], ptr %68, i64 0, i64 %70
  store i32 0, ptr %71, align 4, !tbaa !46
  %72 = getelementptr inbounds %class.RtApi, ptr %4, i32 0, i32 7
  %73 = getelementptr inbounds %"struct.RtApi::RtApiStream", ptr %72, i32 0, i32 15
  %74 = load i32, ptr %3, align 4, !tbaa !46
  %75 = sext i32 %74 to i64
  %76 = getelementptr inbounds [2 x i32], ptr %73, i64 0, i64 %75
  store i32 0, ptr %76, align 4, !tbaa !46
  %77 = getelementptr inbounds %class.RtApi, ptr %4, i32 0, i32 7
  %78 = getelementptr inbounds %"struct.RtApi::RtApiStream", ptr %77, i32 0, i32 18
  %79 = load i32, ptr %3, align 4, !tbaa !46
  %80 = sext i32 %79 to i64
  %81 = getelementptr inbounds [2 x i64], ptr %78, i64 0, i64 %80
  store i64 0, ptr %81, align 8, !tbaa !48
  %82 = getelementptr inbounds %class.RtApi, ptr %4, i32 0, i32 7
  %83 = getelementptr inbounds %"struct.RtApi::RtApiStream", ptr %82, i32 0, i32 16
  %84 = load i32, ptr %3, align 4, !tbaa !46
  %85 = sext i32 %84 to i64
  %86 = getelementptr inbounds [2 x i64], ptr %83, i64 0, i64 %85
  store i64 0, ptr %86, align 8, !tbaa !48
  %87 = getelementptr inbounds %class.RtApi, ptr %4, i32 0, i32 7
  %88 = getelementptr inbounds %"struct.RtApi::RtApiStream", ptr %87, i32 0, i32 4
  %89 = load i32, ptr %3, align 4, !tbaa !46
  %90 = sext i32 %89 to i64
  %91 = getelementptr inbounds [2 x ptr], ptr %88, i64 0, i64 %90
  store ptr null, ptr %91, align 8, !tbaa !5
  %92 = getelementptr inbounds %class.RtApi, ptr %4, i32 0, i32 7
  %93 = getelementptr inbounds %"struct.RtApi::RtApiStream", ptr %92, i32 0, i32 21
  %94 = load i32, ptr %3, align 4, !tbaa !46
  %95 = sext i32 %94 to i64
  %96 = getelementptr inbounds [2 x %"struct.RtApi::ConvertInfo"], ptr %93, i64 0, i64 %95
  %97 = getelementptr inbounds %"struct.RtApi::ConvertInfo", ptr %96, i32 0, i32 0
  store i32 0, ptr %97, align 8, !tbaa !49
  %98 = getelementptr inbounds %class.RtApi, ptr %4, i32 0, i32 7
  %99 = getelementptr inbounds %"struct.RtApi::RtApiStream", ptr %98, i32 0, i32 21
  %100 = load i32, ptr %3, align 4, !tbaa !46
  %101 = sext i32 %100 to i64
  %102 = getelementptr inbounds [2 x %"struct.RtApi::ConvertInfo"], ptr %99, i64 0, i64 %101
  %103 = getelementptr inbounds %"struct.RtApi::ConvertInfo", ptr %102, i32 0, i32 1
  store i32 0, ptr %103, align 4, !tbaa !55
  %104 = getelementptr inbounds %class.RtApi, ptr %4, i32 0, i32 7
  %105 = getelementptr inbounds %"struct.RtApi::RtApiStream", ptr %104, i32 0, i32 21
  %106 = load i32, ptr %3, align 4, !tbaa !46
  %107 = sext i32 %106 to i64
  %108 = getelementptr inbounds [2 x %"struct.RtApi::ConvertInfo"], ptr %105, i64 0, i64 %107
  %109 = getelementptr inbounds %"struct.RtApi::ConvertInfo", ptr %108, i32 0, i32 2
  store i32 0, ptr %109, align 8, !tbaa !56
  %110 = getelementptr inbounds %class.RtApi, ptr %4, i32 0, i32 7
  %111 = getelementptr inbounds %"struct.RtApi::RtApiStream", ptr %110, i32 0, i32 21
  %112 = load i32, ptr %3, align 4, !tbaa !46
  %113 = sext i32 %112 to i64
  %114 = getelementptr inbounds [2 x %"struct.RtApi::ConvertInfo"], ptr %111, i64 0, i64 %113
  %115 = getelementptr inbounds %"struct.RtApi::ConvertInfo", ptr %114, i32 0, i32 3
  store i64 0, ptr %115, align 8, !tbaa !57
  %116 = getelementptr inbounds %class.RtApi, ptr %4, i32 0, i32 7
  %117 = getelementptr inbounds %"struct.RtApi::RtApiStream", ptr %116, i32 0, i32 21
  %118 = load i32, ptr %3, align 4, !tbaa !46
  %119 = sext i32 %118 to i64
  %120 = getelementptr inbounds [2 x %"struct.RtApi::ConvertInfo"], ptr %117, i64 0, i64 %119
  %121 = getelementptr inbounds %"struct.RtApi::ConvertInfo", ptr %120, i32 0, i32 4
  store i64 0, ptr %121, align 8, !tbaa !58
  %122 = getelementptr inbounds %class.RtApi, ptr %4, i32 0, i32 7
  %123 = getelementptr inbounds %"struct.RtApi::RtApiStream", ptr %122, i32 0, i32 21
  %124 = load i32, ptr %3, align 4, !tbaa !46
  %125 = sext i32 %124 to i64
  %126 = getelementptr inbounds [2 x %"struct.RtApi::ConvertInfo"], ptr %123, i64 0, i64 %125
  %127 = getelementptr inbounds %"struct.RtApi::ConvertInfo", ptr %126, i32 0, i32 5
  call void @_ZNSt6vectorIiSaIiEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %127) #2
  %128 = getelementptr inbounds %class.RtApi, ptr %4, i32 0, i32 7
  %129 = getelementptr inbounds %"struct.RtApi::RtApiStream", ptr %128, i32 0, i32 21
  %130 = load i32, ptr %3, align 4, !tbaa !46
  %131 = sext i32 %130 to i64
  %132 = getelementptr inbounds [2 x %"struct.RtApi::ConvertInfo"], ptr %129, i64 0, i64 %131
  %133 = getelementptr inbounds %"struct.RtApi::ConvertInfo", ptr %132, i32 0, i32 6
  call void @_ZNSt6vectorIiSaIiEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %133) #2
  br label %134

134:                                              ; preds = %41
  %135 = load i32, ptr %3, align 4, !tbaa !46
  %136 = add nsw i32 %135, 1
  store i32 %136, ptr %3, align 4, !tbaa !46
  br label %37, !llvm.loop !59

137:                                              ; preds = %40
  ret void
}

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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, !29, i64 504}
!10 = !{!"_ZTS5RtApi", !11, i64 8, !17, i64 384, !20, i64 416, !22, i64 448, !23, i64 456, !27, i64 480, !28, i64 488}
!11 = !{!"_ZTSNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE", !12, i64 0, !13, i64 8}
!12 = !{!"_ZTSSo"}
!13 = !{!"_ZTSNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEE", !14, i64 0, !16, i64 64, !17, i64 72}
!14 = !{!"_ZTSSt15basic_streambufIcSt11char_traitsIcEE", !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !15, i64 56}
!15 = !{!"_ZTSSt6locale", !6, i64 0}
!16 = !{!"_ZTSSt13_Ios_Openmode", !7, i64 0}
!17 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !18, i64 0, !19, i64 8, !7, i64 16}
!18 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!19 = !{!"long", !7, i64 0}
!20 = !{!"_ZTSSt8functionIFv16RtAudioErrorTypeRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !21, i64 0, !6, i64 24}
!21 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!22 = !{!"bool", !7, i64 0}
!23 = !{!"_ZTSSt6vectorIN7RtAudio10DeviceInfoESaIS1_EE", !24, i64 0}
!24 = !{!"_ZTSSt12_Vector_baseIN7RtAudio10DeviceInfoESaIS1_EE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIN7RtAudio10DeviceInfoESaIS1_EE12_Vector_implE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIN7RtAudio10DeviceInfoESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!27 = !{!"int", !7, i64 0}
!28 = !{!"_ZTSN5RtApi11RtApiStreamE", !7, i64 0, !6, i64 8, !29, i64 16, !30, i64 20, !7, i64 24, !6, i64 40, !7, i64 48, !22, i64 50, !7, i64 51, !7, i64 53, !27, i64 56, !27, i64 60, !27, i64 64, !7, i64 68, !7, i64 76, !7, i64 84, !7, i64 96, !19, i64 112, !7, i64 120, !7, i64 136, !31, i64 176, !7, i64 232, !32, i64 392}
!29 = !{!"_ZTSN5RtApi10StreamModeE", !7, i64 0}
!30 = !{!"_ZTSN5RtApi11StreamStateE", !7, i64 0}
!31 = !{!"_ZTS12CallbackInfo", !6, i64 0, !19, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !22, i64 40, !22, i64 41, !27, i64 44, !22, i64 48}
!32 = !{!"double", !7, i64 0}
!33 = !{!10, !30, i64 508}
!34 = !{!10, !27, i64 544}
!35 = !{!10, !27, i64 548}
!36 = !{!10, !27, i64 552}
!37 = !{!10, !19, i64 600}
!38 = !{!10, !22, i64 538}
!39 = !{!10, !32, i64 880}
!40 = !{!10, !6, i64 496}
!41 = !{!10, !6, i64 528}
!42 = !{!10, !6, i64 680}
!43 = !{!10, !6, i64 688}
!44 = !{!10, !22, i64 704}
!45 = !{!10, !22, i64 712}
!46 = !{!27, !27, i64 0}
!47 = !{!22, !22, i64 0}
!48 = !{!19, !19, i64 0}
!49 = !{!50, !27, i64 0}
!50 = !{!"_ZTSN5RtApi11ConvertInfoE", !27, i64 0, !27, i64 4, !27, i64 8, !19, i64 16, !19, i64 24, !51, i64 32, !51, i64 56}
!51 = !{!"_ZTSSt6vectorIiSaIiEE", !52, i64 0}
!52 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !53, i64 0}
!53 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !54, i64 0}
!54 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!55 = !{!50, !27, i64 4}
!56 = !{!50, !27, i64 8}
!57 = !{!50, !19, i64 16}
!58 = !{!50, !19, i64 24}
!59 = distinct !{!59, !60}
!60 = !{!"llvm.loop.mustprogress"}


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

; Function Attrs: mustprogress nounwind uwtable
define dso_local void @_ZN5RtApi15clearStreamInfoEv(ptr noundef nonnull align 8 dereferenceable(888) %0) local_unnamed_addr #0 align 2 {
  %2 = getelementptr inbounds i8, ptr %0, i64 488
  %3 = getelementptr inbounds i8, ptr %0, i64 504
  store i32 -75, ptr %3, align 8, !tbaa !5
  %4 = getelementptr inbounds i8, ptr %0, i64 508
  store i32 -50, ptr %4, align 4, !tbaa !32
  %5 = getelementptr inbounds i8, ptr %0, i64 544
  store i32 0, ptr %5, align 8, !tbaa !33
  %6 = getelementptr inbounds i8, ptr %0, i64 548
  store i32 0, ptr %6, align 4, !tbaa !34
  %7 = getelementptr inbounds i8, ptr %0, i64 552
  store i32 0, ptr %7, align 8, !tbaa !35
  %8 = getelementptr inbounds i8, ptr %0, i64 600
  store i64 0, ptr %8, align 8, !tbaa !36
  %9 = getelementptr inbounds i8, ptr %0, i64 538
  store i8 1, ptr %9, align 2, !tbaa !37
  %10 = getelementptr inbounds i8, ptr %0, i64 880
  store double 0.000000e+00, ptr %10, align 8, !tbaa !38
  %11 = getelementptr inbounds i8, ptr %0, i64 496
  store ptr null, ptr %11, align 8, !tbaa !39
  %12 = getelementptr inbounds i8, ptr %0, i64 528
  store ptr null, ptr %12, align 8, !tbaa !40
  %13 = getelementptr inbounds i8, ptr %0, i64 680
  %14 = getelementptr inbounds i8, ptr %0, i64 704
  store i8 0, ptr %14, align 8, !tbaa !41
  %15 = getelementptr inbounds i8, ptr %0, i64 712
  store i8 0, ptr %15, align 8, !tbaa !42
  %16 = getelementptr inbounds i8, ptr %0, i64 536
  %17 = getelementptr inbounds i8, ptr %0, i64 539
  %18 = getelementptr inbounds i8, ptr %0, i64 541
  %19 = getelementptr inbounds i8, ptr %0, i64 556
  %20 = getelementptr inbounds i8, ptr %0, i64 564
  %21 = getelementptr inbounds i8, ptr %0, i64 572
  %22 = getelementptr inbounds i8, ptr %0, i64 608
  %23 = getelementptr inbounds i8, ptr %0, i64 584
  %24 = getelementptr inbounds i8, ptr %0, i64 512
  %25 = getelementptr inbounds i8, ptr %0, i64 720
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %13, i8 0, i64 16, i1 false)
  store i32 11111, ptr %2, align 8, !tbaa !43
  store i8 0, ptr %16, align 8, !tbaa !44
  store i8 1, ptr %17, align 1, !tbaa !44
  store i8 0, ptr %18, align 1, !tbaa !44
  store i32 0, ptr %19, align 4, !tbaa !43
  store i32 0, ptr %20, align 4, !tbaa !43
  store i32 0, ptr %21, align 4, !tbaa !43
  store i64 0, ptr %22, align 8, !tbaa !45
  store i64 0, ptr %23, align 8, !tbaa !45
  store ptr null, ptr %24, align 8, !tbaa !46
  store i32 0, ptr %25, align 8, !tbaa !47
  %26 = getelementptr inbounds i8, ptr %0, i64 724
  store i32 0, ptr %26, align 4, !tbaa !53
  %27 = getelementptr inbounds i8, ptr %0, i64 728
  store i32 0, ptr %27, align 8, !tbaa !54
  %28 = getelementptr inbounds i8, ptr %0, i64 736
  %29 = getelementptr inbounds i8, ptr %0, i64 752
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %28, i8 0, i64 16, i1 false)
  tail call void @_ZNSt6vectorIiSaIiEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %29) #2
  %30 = getelementptr inbounds i8, ptr %0, i64 776
  tail call void @_ZNSt6vectorIiSaIiEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %30) #2
  %31 = getelementptr inbounds i8, ptr %0, i64 492
  store i32 11111, ptr %31, align 4, !tbaa !43
  %32 = getelementptr inbounds i8, ptr %0, i64 537
  store i8 0, ptr %32, align 1, !tbaa !44
  %33 = getelementptr inbounds i8, ptr %0, i64 540
  store i8 1, ptr %33, align 4, !tbaa !44
  %34 = getelementptr inbounds i8, ptr %0, i64 542
  store i8 0, ptr %34, align 2, !tbaa !44
  %35 = getelementptr inbounds i8, ptr %0, i64 560
  store i32 0, ptr %35, align 8, !tbaa !43
  %36 = getelementptr inbounds i8, ptr %0, i64 568
  store i32 0, ptr %36, align 8, !tbaa !43
  %37 = getelementptr inbounds i8, ptr %0, i64 576
  store i32 0, ptr %37, align 8, !tbaa !43
  %38 = getelementptr inbounds i8, ptr %0, i64 616
  store i64 0, ptr %38, align 8, !tbaa !45
  %39 = getelementptr inbounds i8, ptr %0, i64 592
  store i64 0, ptr %39, align 8, !tbaa !45
  %40 = getelementptr inbounds i8, ptr %0, i64 520
  store ptr null, ptr %40, align 8, !tbaa !46
  %41 = getelementptr inbounds i8, ptr %0, i64 800
  store i32 0, ptr %41, align 8, !tbaa !47
  %42 = getelementptr inbounds i8, ptr %0, i64 804
  store i32 0, ptr %42, align 4, !tbaa !53
  %43 = getelementptr inbounds i8, ptr %0, i64 808
  store i32 0, ptr %43, align 8, !tbaa !54
  %44 = getelementptr inbounds i8, ptr %0, i64 816
  %45 = getelementptr inbounds i8, ptr %0, i64 832
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %44, i8 0, i64 16, i1 false)
  tail call void @_ZNSt6vectorIiSaIiEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %45) #2
  %46 = getelementptr inbounds i8, ptr %0, i64 856
  tail call void @_ZNSt6vectorIiSaIiEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %46) #2
  ret void
}

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #1

attributes #0 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #2 = { 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, !28, i64 504}
!6 = !{!"_ZTS5RtApi", !7, i64 8, !16, i64 384, !19, i64 416, !21, i64 448, !22, i64 456, !26, i64 480, !27, i64 488}
!7 = !{!"_ZTSNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE", !8, i64 0, !9, i64 8}
!8 = !{!"_ZTSSo"}
!9 = !{!"_ZTSNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEE", !10, i64 0, !15, i64 64, !16, i64 72}
!10 = !{!"_ZTSSt15basic_streambufIcSt11char_traitsIcEE", !11, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !11, i64 48, !14, i64 56}
!11 = !{!"any pointer", !12, i64 0}
!12 = !{!"omnipotent char", !13, i64 0}
!13 = !{!"Simple C++ TBAA"}
!14 = !{!"_ZTSSt6locale", !11, i64 0}
!15 = !{!"_ZTSSt13_Ios_Openmode", !12, i64 0}
!16 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !17, i64 0, !18, i64 8, !12, i64 16}
!17 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !11, i64 0}
!18 = !{!"long", !12, i64 0}
!19 = !{!"_ZTSSt8functionIFv16RtAudioErrorTypeRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !20, i64 0, !11, i64 24}
!20 = !{!"_ZTSSt14_Function_base", !12, i64 0, !11, i64 16}
!21 = !{!"bool", !12, i64 0}
!22 = !{!"_ZTSSt6vectorIN7RtAudio10DeviceInfoESaIS1_EE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseIN7RtAudio10DeviceInfoESaIS1_EE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIN7RtAudio10DeviceInfoESaIS1_EE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIN7RtAudio10DeviceInfoESaIS1_EE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!26 = !{!"int", !12, i64 0}
!27 = !{!"_ZTSN5RtApi11RtApiStreamE", !12, i64 0, !11, i64 8, !28, i64 16, !29, i64 20, !12, i64 24, !11, i64 40, !12, i64 48, !21, i64 50, !12, i64 51, !12, i64 53, !26, i64 56, !26, i64 60, !26, i64 64, !12, i64 68, !12, i64 76, !12, i64 84, !12, i64 96, !18, i64 112, !12, i64 120, !12, i64 136, !30, i64 176, !12, i64 232, !31, i64 392}
!28 = !{!"_ZTSN5RtApi10StreamModeE", !12, i64 0}
!29 = !{!"_ZTSN5RtApi11StreamStateE", !12, i64 0}
!30 = !{!"_ZTS12CallbackInfo", !11, i64 0, !18, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !21, i64 40, !21, i64 41, !26, i64 44, !21, i64 48}
!31 = !{!"double", !12, i64 0}
!32 = !{!6, !29, i64 508}
!33 = !{!6, !26, i64 544}
!34 = !{!6, !26, i64 548}
!35 = !{!6, !26, i64 552}
!36 = !{!6, !18, i64 600}
!37 = !{!6, !21, i64 538}
!38 = !{!6, !31, i64 880}
!39 = !{!6, !11, i64 496}
!40 = !{!6, !11, i64 528}
!41 = !{!6, !21, i64 704}
!42 = !{!6, !21, i64 712}
!43 = !{!26, !26, i64 0}
!44 = !{!21, !21, i64 0}
!45 = !{!18, !18, i64 0}
!46 = !{!11, !11, i64 0}
!47 = !{!48, !26, i64 0}
!48 = !{!"_ZTSN5RtApi11ConvertInfoE", !26, i64 0, !26, i64 4, !26, i64 8, !18, i64 16, !18, i64 24, !49, i64 32, !49, i64 56}
!49 = !{!"_ZTSSt6vectorIiSaIiEE", !50, i64 0}
!50 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !51, i64 0}
!51 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !52, i64 0}
!52 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!53 = !{!48, !26, i64 4}
!54 = !{!48, !26, i64 8}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,LICMPass,LoopRotatePass,MemCpyOptPass,SROAPass,SimplifyCFGPass,TailCallElimPass