; LLVM IR from kacperks/Fractal_Engine :: Engine/Thirdparty/cmake/Engine/Thirdparty/cmake/openal-soft/alc (panning)

; 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.al::optional" = type { %"struct.al::optional_storage" }
%"struct.al::optional_storage" = type { %"struct.al::optstore_helper" }
%"struct.al::optstore_helper" = type { %"struct.al::optstore_base" }
%"struct.al::optstore_base" = type { i8, %union.anon }
%union.anon = type { i8 }
%"class.al::intrusive_ptr" = type { ptr }
%"class.std::unique_ptr.79" = type { %"struct.std::__uniq_ptr_data.80" }
%"struct.std::__uniq_ptr_data.80" = type { %"class.std::__uniq_ptr_impl.81" }
%"class.std::__uniq_ptr_impl.81" = type { %"class.std::tuple.82" }
%"class.std::tuple.82" = type { %"struct.std::_Tuple_impl.83" }
%"struct.std::_Tuple_impl.83" = type { %"struct.std::_Head_base.86" }
%"struct.std::_Head_base.86" = type { ptr }
%"struct.(anonymous namespace)::DecoderConfig" = type { i8, i8, %"class.al::span.87", i8, %"class.al::span.88", %"class.al::span.89", %"class.al::span.88", %"class.al::span.89" }
%"class.al::span.87" = type { ptr, ptr }
%"class.al::span.88" = type { ptr, ptr }
%"class.al::span.89" = type { ptr, ptr }
%class.anon = type { ptr, ptr, ptr, ptr }
%"class.al::optional.90" = type { %"struct.al::optional_storage.91" }
%"struct.al::optional_storage.91" = type { %"struct.al::optstore_helper.92" }
%"struct.al::optstore_helper.92" = type { %"struct.al::optstore_base.93" }
%"struct.al::optstore_base.93" = type { i8, %union.anon.94 }
%union.anon.94 = type { %"class.std::__cxx11::basic_string" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon.2 }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon.2 = type { i64, [8 x i8] }
%"class.al::span.95" = type { ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.al::optional.107" = type { %"struct.al::optional_storage.108" }
%"struct.al::optional_storage.108" = type { %"struct.al::optstore_helper.109" }
%"struct.al::optstore_helper.109" = type { %"struct.al::optstore_base.110" }
%"struct.al::optstore_base.110" = type { i8, %union.anon.111 }
%union.anon.111 = type { i32 }
%"class.al::optional.112" = type { %"struct.al::optional_storage.113" }
%"struct.al::optional_storage.113" = type { %"struct.al::optstore_helper.114" }
%"struct.al::optstore_helper.114" = type { %"struct.al::optstore_base.115" }
%"struct.al::optstore_base.115" = type { i8, %union.anon.116 }
%union.anon.116 = type { i32 }
%"class.std::unique_ptr.27" = type { %"struct.std::__uniq_ptr_data.28" }
%"struct.std::__uniq_ptr_data.28" = type { %"class.std::__uniq_ptr_impl.29" }
%"class.std::__uniq_ptr_impl.29" = type { %"class.std::tuple.30" }
%"class.std::tuple.30" = type { %"struct.std::_Tuple_impl.31" }
%"struct.std::_Tuple_impl.31" = type { %"struct.std::_Head_base.34" }
%"struct.std::_Head_base.34" = type { ptr }
%"class.std::unique_ptr.11" = type { %"struct.std::__uniq_ptr_data.12" }
%"struct.std::__uniq_ptr_data.12" = type { %"class.std::__uniq_ptr_impl.13" }
%"class.std::__uniq_ptr_impl.13" = type { %"class.std::tuple.14" }
%"class.std::tuple.14" = type { %"struct.std::_Tuple_impl.15" }
%"struct.std::_Tuple_impl.15" = type { %"struct.std::_Head_base.18" }
%"struct.std::_Head_base.18" = type { ptr }
%struct.DeviceBase = type { %"struct.std::atomic.0", i8, i32, i32, i32, i8, i8, i8, i32, float, i8, i8, %"class.std::__cxx11::basic_string", %"class.std::bitset", i32, i8, float, i32, %"class.std::chrono::duration", %"class.std::chrono::duration", [8 x i8], %"struct.std::array", [1024 x float], [1024 x float], %union.anon.4, [1408 x %"struct.std::array.5"], %"class.std::vector", %struct.MixParams, [4 x i32], %struct.RealMixParams, %"class.std::unique_ptr", %"class.al::intrusive_ptr", i32, %"class.std::unique_ptr.11", %"class.std::unique_ptr.19", %"class.std::unique_ptr.27", { i64, i64 }, %"class.std::unique_ptr.35", %"class.std::unique_ptr.43", float, i32, %"struct.std::atomic", %"struct.std::atomic.51", %"class.std::mutex", %"class.std::unique_ptr.53" }
%"struct.std::atomic.0" = type { %"struct.std::__atomic_base.1" }
%"struct.std::__atomic_base.1" = type { i8 }
%"class.std::bitset" = type { %"struct.std::_Base_bitset" }
%"struct.std::_Base_bitset" = type { i64 }
%"class.std::chrono::duration" = type { i64 }
%"struct.std::array" = type { [16 x %"struct.std::array.3"] }
%"struct.std::array.3" = type { [1200 x float] }
%union.anon.4 = type { [1088 x float] }
%"struct.std::array.5" = type { [2 x float] }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::array<float, 1024>, al::allocator<std::array<float, 1024>, 16>>::_Vector_impl" }
%"struct.std::_Vector_base<std::array<float, 1024>, al::allocator<std::array<float, 1024>, 16>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::array<float, 1024>, al::allocator<std::array<float, 1024>, 16>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::array<float, 1024>, al::allocator<std::array<float, 1024>, 16>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.MixParams = type { %"struct.std::array.6", %"class.al::span" }
%"struct.std::array.6" = type { [16 x %struct.BFChannelConfig] }
%struct.BFChannelConfig = type { float, i32 }
%"class.al::span" = type { ptr, ptr }
%struct.RealMixParams = type { %"class.al::span.7", %"struct.std::array.8", %"class.al::span" }
%"class.al::span.7" = type { ptr, ptr }
%"struct.std::array.8" = type { [16 x i32] }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.10" }
%"struct.std::_Head_base.10" = type { ptr }
%"class.std::unique_ptr.19" = type { %"struct.std::__uniq_ptr_data.20" }
%"struct.std::__uniq_ptr_data.20" = type { %"class.std::__uniq_ptr_impl.21" }
%"class.std::__uniq_ptr_impl.21" = type { %"class.std::tuple.22" }
%"class.std::tuple.22" = type { %"struct.std::_Tuple_impl.23" }
%"struct.std::_Tuple_impl.23" = type { %"struct.std::_Head_base.26" }
%"struct.std::_Head_base.26" = type { ptr }
%"class.std::unique_ptr.35" = type { %"struct.std::__uniq_ptr_data.36" }
%"struct.std::__uniq_ptr_data.36" = type { %"class.std::__uniq_ptr_impl.37" }
%"class.std::__uniq_ptr_impl.37" = type { %"class.std::tuple.38" }
%"class.std::tuple.38" = type { %"struct.std::_Tuple_impl.39" }
%"struct.std::_Tuple_impl.39" = type { %"struct.std::_Head_base.42" }
%"struct.std::_Head_base.42" = type { ptr }
%"class.std::unique_ptr.43" = type { %"struct.std::__uniq_ptr_data.44" }
%"struct.std::__uniq_ptr_data.44" = type { %"class.std::__uniq_ptr_impl.45" }
%"class.std::__uniq_ptr_impl.45" = type { %"class.std::tuple.46" }
%"class.std::tuple.46" = type { %"struct.std::_Tuple_impl.47" }
%"struct.std::_Tuple_impl.47" = type { %"struct.std::_Head_base.50" }
%"struct.std::_Head_base.50" = type { ptr }
%"struct.std::atomic" = type { %"struct.std::__atomic_base" }
%"struct.std::__atomic_base" = type { i32 }
%"struct.std::atomic.51" = type { %"struct.std::__atomic_base.52" }
%"struct.std::__atomic_base.52" = type { ptr }
%"class.std::mutex" = type { %"class.std::__mutex_base" }
%"class.std::__mutex_base" = type { %union.pthread_mutex_t }
%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }
%"class.std::unique_ptr.53" = type { %"struct.std::__uniq_ptr_data.54" }
%"struct.std::__uniq_ptr_data.54" = type { %"class.std::__uniq_ptr_impl.55" }
%"class.std::__uniq_ptr_impl.55" = type { %"class.std::tuple.56" }
%"class.std::tuple.56" = type { %"struct.std::_Tuple_impl.57" }
%"struct.std::_Tuple_impl.57" = type { %"struct.std::_Head_base.60" }
%"struct.std::_Head_base.60" = type { ptr }
%struct.ALCdevice = type { %"class.al::intrusive_ref", [12 x i8], %struct.DeviceBase, i32, i32, i32, i32, %"class.std::__cxx11::basic_string", %"class.std::vector.61", i32, i32, %"struct.std::atomic.65", %"class.std::mutex", %"class.std::vector.67", %"class.std::mutex", %"class.std::vector.71", %"class.std::mutex", %"class.std::vector.75", [8 x i8] }
%"class.al::intrusive_ref" = type { %"struct.std::atomic" }
%"class.std::vector.61" = type { %"struct.std::_Vector_base.62" }
%"struct.std::_Vector_base.62" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, al::allocator<std::__cxx11::basic_string<char>, 8>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, al::allocator<std::__cxx11::basic_string<char>, 8>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, al::allocator<std::__cxx11::basic_string<char>, 8>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, al::allocator<std::__cxx11::basic_string<char>, 8>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::atomic.65" = type { %"struct.std::__atomic_base.66" }
%"struct.std::__atomic_base.66" = type { i32 }
%"class.std::vector.67" = type { %"struct.std::_Vector_base.68" }
%"struct.std::_Vector_base.68" = type { %"struct.std::_Vector_base<BufferSubList, al::allocator<BufferSubList, 8>>::_Vector_impl" }
%"struct.std::_Vector_base<BufferSubList, al::allocator<BufferSubList, 8>>::_Vector_impl" = type { %"struct.std::_Vector_base<BufferSubList, al::allocator<BufferSubList, 8>>::_Vector_impl_data" }
%"struct.std::_Vector_base<BufferSubList, al::allocator<BufferSubList, 8>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.71" = type { %"struct.std::_Vector_base.72" }
%"struct.std::_Vector_base.72" = type { %"struct.std::_Vector_base<EffectSubList, al::allocator<EffectSubList, 8>>::_Vector_impl" }
%"struct.std::_Vector_base<EffectSubList, al::allocator<EffectSubList, 8>>::_Vector_impl" = type { %"struct.std::_Vector_base<EffectSubList, al::allocator<EffectSubList, 8>>::_Vector_impl_data" }
%"struct.std::_Vector_base<EffectSubList, al::allocator<EffectSubList, 8>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.75" = type { %"struct.std::_Vector_base.76" }
%"struct.std::_Vector_base.76" = type { %"struct.std::_Vector_base<FilterSubList, al::allocator<FilterSubList, 8>>::_Vector_impl" }
%"struct.std::_Vector_base<FilterSubList, al::allocator<FilterSubList, 8>>::_Vector_impl" = type { %"struct.std::_Vector_base<FilterSubList, al::allocator<FilterSubList, 8>>::_Vector_impl_data" }
%"struct.std::_Vector_base<FilterSubList, al::allocator<FilterSubList, 8>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.HrtfStore = type { %"struct.std::atomic", i32, i32, i32, ptr, ptr, ptr, ptr }

@.str = external hidden unnamed_addr constant [5 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [5 x i8], align 1
@gLogLevel = external global i32, align 4
@gLogFile = external global ptr, align 8
@.str.11 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [32 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_Z15aluInitRendererP9ALCdeviceiN2al8optionalIbEE(ptr noundef %0, i32 noundef %1, i16 %2) #0 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"class.al::optional", align 1
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca %"class.al::intrusive_ptr", align 8
  %8 = alloca %"class.al::intrusive_ptr", align 8
  %9 = alloca %"class.al::intrusive_ptr", align 8
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca ptr, align 8
  %13 = alloca %"class.std::unique_ptr.79", align 8
  %14 = alloca %"struct.(anonymous namespace)::DecoderConfig", align 8
  %15 = alloca [16 x float], align 16
  %16 = alloca %class.anon, align 8
  %17 = alloca %"class.al::optional.90", align 8
  %18 = alloca i8, align 1
  %19 = alloca i8, align 1
  %20 = alloca %"struct.(anonymous namespace)::DecoderConfig", align 8
  %21 = alloca float, align 4
  %22 = alloca float, align 4
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca float, align 4
  %27 = alloca %"struct.(anonymous namespace)::DecoderConfig", align 8
  %28 = alloca %"class.al::span.95", align 8
  %29 = alloca ptr, align 8
  %30 = alloca i32, align 4
  %31 = alloca i8, align 1
  %32 = alloca %"class.al::optional.90", align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca %"class.al::intrusive_ptr", align 8
  %36 = alloca ptr, align 8
  %37 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %38 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %39 = alloca ptr, align 8
  %40 = alloca %"class.al::intrusive_ptr", align 8
  %41 = alloca %"class.al::intrusive_ptr", align 8
  %42 = alloca ptr, align 8
  %43 = alloca %"class.al::optional.107", align 4
  %44 = alloca %"class.al::intrusive_ptr", align 8
  %45 = alloca %"class.al::optional.112", align 4
  %46 = alloca %"class.std::unique_ptr.27", align 8
  %47 = alloca %"struct.(anonymous namespace)::DecoderConfig", align 8
  %48 = alloca %"class.al::optional.90", align 8
  %49 = alloca ptr, align 8
  %50 = alloca %"class.std::unique_ptr.11", align 8
  %51 = alloca %"struct.(anonymous namespace)::DecoderConfig", align 8
  %52 = getelementptr inbounds %"class.al::optional", ptr %4, i32 0, i32 0
  %53 = getelementptr inbounds %"struct.al::optional_storage", ptr %52, i32 0, i32 0
  %54 = getelementptr inbounds %"struct.al::optstore_helper", ptr %53, i32 0, i32 0
  store i16 %2, ptr %54, align 1
  store ptr %0, ptr %5, align 8, !tbaa !5
  store i32 %1, ptr %6, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #10
  %55 = load ptr, ptr %5, align 8, !tbaa !5
  %56 = getelementptr inbounds i8, ptr %55, i64 16
  %57 = getelementptr inbounds %struct.DeviceBase, ptr %56, i32 0, i32 31
  call void @_ZN2al13intrusive_ptrI9HrtfStoreEC2EOS2_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %57) #10
  %58 = load ptr, ptr %5, align 8, !tbaa !5
  %59 = getelementptr inbounds i8, ptr %58, i64 16
  %60 = getelementptr inbounds %struct.DeviceBase, ptr %59, i32 0, i32 30
  %61 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt10unique_ptrI15DirectHrtfStateSt14default_deleteIS0_EEaSEDn(ptr noundef nonnull align 8 dereferenceable(8) %60, ptr null) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #10
  call void @_ZN2al13intrusive_ptrI9HrtfStoreEC2EDn(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr null) #10
  %62 = load ptr, ptr %5, align 8, !tbaa !5
  %63 = getelementptr inbounds i8, ptr %62, i64 16
  %64 = getelementptr inbounds %struct.DeviceBase, ptr %63, i32 0, i32 31
  %65 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN2al13intrusive_ptrI9HrtfStoreEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(8) %64, ptr noundef nonnull align 8 dereferenceable(8) %8) #10
  call void @_ZN2al13intrusive_ptrI9HrtfStoreED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #10
  %66 = load ptr, ptr %5, align 8, !tbaa !5
  %67 = getelementptr inbounds i8, ptr %66, i64 16
  %68 = getelementptr inbounds %struct.DeviceBase, ptr %67, i32 0, i32 32
  store i32 0, ptr %68, align 8, !tbaa !11
  %69 = load ptr, ptr %5, align 8, !tbaa !5
  %70 = getelementptr inbounds %struct.ALCdevice, ptr %69, i32 0, i32 7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5clearEv(ptr noundef nonnull align 8 dereferenceable(32) %70) #10
  %71 = load ptr, ptr %5, align 8, !tbaa !5
  %72 = getelementptr inbounds i8, ptr %71, i64 16
  %73 = getelementptr inbounds %struct.DeviceBase, ptr %72, i32 0, i32 9
  store float 4.000000e+02, ptr %73, align 8, !tbaa !89
  %74 = load ptr, ptr %5, align 8, !tbaa !5
  %75 = getelementptr inbounds i8, ptr %74, i64 16
  %76 = getelementptr inbounds %struct.DeviceBase, ptr %75, i32 0, i32 15
  store i8 0, ptr %76, align 4, !tbaa !90
  %77 = load ptr, ptr %5, align 8, !tbaa !5
  %78 = getelementptr inbounds i8, ptr %77, i64 16
  %79 = getelementptr inbounds %struct.DeviceBase, ptr %78, i32 0, i32 5
  %80 = load i8, ptr %79, align 16, !tbaa !91
  %81 = zext i8 %80 to i32
  %82 = icmp ne i32 %81, 1
  br i1 %82, label %83, label %271

83:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #10
  call void @_ZN2al13intrusive_ptrI9HrtfStoreEC2EDn(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr null) #10
  %84 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN2al13intrusive_ptrI9HrtfStoreEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %9) #10
  call void @_ZN2al13intrusive_ptrI9HrtfStoreED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #10
  %85 = call noundef zeroext i1 @_ZNK2al8optionalIbEcvbEv(ptr noundef nonnull align 1 dereferenceable(2) %4) #10
  br i1 %85, label %86, label %98

86:                                               ; preds = %83
  %87 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNR2al8optionalIbE5valueEv(ptr noundef nonnull align 1 dereferenceable(2) %4)
          to label %88 unwind label %94

88:                                               ; preds = %86
  %89 = load i8, ptr %87, align 1, !tbaa !92, !range !93, !noundef !94
  %90 = trunc i8 %89 to i1
  br i1 %90, label %91, label %98

91:                                               ; preds = %88
  %92 = load ptr, ptr %5, align 8, !tbaa !5
  %93 = getelementptr inbounds %struct.ALCdevice, ptr %92, i32 0, i32 9
  store i32 5, ptr %93, align 8, !tbaa !95
  br label %98

94:                                               ; preds = %86
  %95 = landingpad { ptr, i32 }
          cleanup
  %96 = extractvalue { ptr, i32 } %95, 0
  store ptr %96, ptr %10, align 8
  %97 = extractvalue { ptr, i32 } %95, 1
  store i32 %97, ptr %11, align 4
  br label %721

98:                                               ; preds = %91, %88, %83
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #10
  store ptr null, ptr %12, align 8, !tbaa !5
  %99 = load ptr, ptr %5, align 8, !tbaa !5
  %100 = getelementptr inbounds i8, ptr %99, i64 16
  %101 = getelementptr inbounds %struct.DeviceBase, ptr %100, i32 0, i32 5
  %102 = load i8, ptr %101, align 16, !tbaa !91
  %103 = zext i8 %102 to i32
  switch i32 %103, label %109 [
    i32 2, label %104
    i32 3, label %105
    i32 4, label %106
    i32 5, label %107
    i32 0, label %108
    i32 1, label %108
    i32 6, label %108
  ]

104:                                              ; preds = %98
  store ptr @.str, ptr %12, align 8, !tbaa !5
  br label %109

105:                                              ; preds = %98
  store ptr @.str.1, ptr %12, align 8, !tbaa !5
  br label %109

106:                                              ; preds = %98
  store ptr @.str.2, ptr %12, align 8, !tbaa !5
  br label %109

107:                                              ; preds = %98
  store ptr @.str.3, ptr %12, align 8, !tbaa !5
  br label %109

108:                                              ; preds = %98, %98, %98
  br label %109

109:                                              ; preds = %108, %107, %106, %105, %104, %98
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #10
  call void @_ZNSt10unique_ptrIN12_GLOBAL__N_113DecoderConfigILNS0_11DecoderModeE1ELm16EEESt14default_deleteIS3_EEC2IS5_vEEv(ptr noundef nonnull align 8 dereferenceable(8) %13) #10
  call void @llvm.lifetime.start.p0(i64 96, ptr %14) #10
  %110 = getelementptr inbounds %"struct.(anonymous namespace)::DecoderConfig", ptr %14, i32 0, i32 0
  store i8 0, ptr %110, align 8, !tbaa !116
  %111 = getelementptr inbounds %"struct.(anonymous namespace)::DecoderConfig", ptr %14, i32 0, i32 1
  store i8 0, ptr %111, align 1, !tbaa !121
  %112 = getelementptr inbounds %"struct.(anonymous namespace)::DecoderConfig", ptr %14, i32 0, i32 2
  call void @llvm.memset.p0.i64(ptr align 8 %112, i8 0, i64 16, i1 false)
  call void @_ZN2al4spanIK7ChannelLm18446744073709551615EEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %112) #10
  %113 = getelementptr inbounds %"struct.(anonymous namespace)::DecoderConfig", ptr %14, i32 0, i32 3
  store i8 0, ptr %113, align 8, !tbaa !122
  %114 = getelementptr inbounds %"struct.(anonymous namespace)::DecoderConfig", ptr %14, i32 0, i32 4
  call void @llvm.memset.p0.i64(ptr align 8 %114, i8 0, i64 16, i1 false)
  call void @_ZN2al4spanIKfLm18446744073709551615EEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %114) #10
  %115 = getelementptr inbounds %"struct.(anonymous namespace)::DecoderConfig", ptr %14, i32 0, i32 5
  call void @llvm.memset.p0.i64(ptr align 8 %115, i8 0, i64 16, i1 false)
  call void @_ZN2al4spanIKSt5arrayIfLm16EELm18446744073709551615EEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %115) #10
  %116 = getelementptr inbounds %"struct.(anonymous namespace)::DecoderConfig", ptr %14, i32 0, i32 6
  call void @llvm.memset.p0.i64(ptr align 8 %116, i8 0, i64 16, i1 false)
  call void @_ZN2al4spanIKfLm18446744073709551615EEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %116) #10
  %117 = getelementptr inbounds %"struct.(anonymous namespace)::DecoderConfig", ptr %14, i32 0, i32 7
  call void @llvm.memset.p0.i64(ptr align 8 %117, i8 0, i64 16, i1 false)
  call void @_ZN2al4spanIKSt5arrayIfLm16EELm18446744073709551615EEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %117) #10
  call void @llvm.lifetime.start.p0(i64 64, ptr %15) #10
  call void @llvm.memset.p0.i64(ptr align 16 %15, i8 0, i64 64, i1 false)
  call void @llvm.lifetime.start.p0(i64 32, ptr %16) #10
  %118 = getelementptr inbounds %class.anon, ptr %16, i32 0, i32 0
  %119 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %119, ptr %118, align 8, !tbaa !123
  %120 = getelementptr inbounds %class.anon, ptr %16, i32 0, i32 1
  store ptr %13, ptr %120, align 8, !tbaa !5
  %121 = getelementptr inbounds %class.anon, ptr %16, i32 0, i32 2
  store ptr %14, ptr %121, align 8, !tbaa !5
  %122 = getelementptr inbounds %class.anon, ptr %16, i32 0, i32 3
  store ptr %15, ptr %122, align 8, !tbaa !5
  %123 = load ptr, ptr %12, align 8, !tbaa !5
  %124 = icmp ne ptr %123, null
  br i1 %124, label %125, label %145

125:                                              ; preds = %109
  call void @llvm.lifetime.start.p0(i64 40, ptr %17) #10
  %126 = load ptr, ptr %5, align 8, !tbaa !5
  %127 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN9ALCdevice11configValueINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEN2al8optionalIT_EEPKcSC_(ptr dead_on_unwind writable sret(%"class.al::optional.90") align 8 %17, ptr noundef nonnull align 16 dereferenceable(101448) %126, ptr noundef @.str.4, ptr noundef %127)
          to label %128 unwind label %135

128:                                              ; preds = %125
  %129 = call noundef zeroext i1 @_ZNK2al8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEcvbEv(ptr noundef nonnull align 8 dereferenceable(40) %17) #10
  br i1 %129, label %130, label %143

130:                                              ; preds = %128
  %131 = invoke noundef ptr @_ZN2al8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEptEv(ptr noundef nonnull align 8 dereferenceable(40) %17)
          to label %132 unwind label %139

132:                                              ; preds = %130
  %133 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %131) #10
  invoke void @"_ZZ15aluInitRendererP9ALCdeviceiN2al8optionalIbEEENK3$_0clEPKc"(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef %133)
          to label %134 unwind label %139

134:                                              ; preds = %132
  br label %143

135:                                              ; preds = %125
  %136 = landingpad { ptr, i32 }
          cleanup
  %137 = extractvalue { ptr, i32 } %136, 0
  store ptr %137, ptr %10, align 8
  %138 = extractvalue { ptr, i32 } %136, 1
  store i32 %138, ptr %11, align 4
  br label %144

139:                                              ; preds = %132, %130
  %140 = landingpad { ptr, i32 }
          cleanup
  %141 = extractvalue { ptr, i32 } %140, 0
  store ptr %141, ptr %10, align 8
  %142 = extractvalue { ptr, i32 } %140, 1
  store i32 %142, ptr %11, align 4
  call void @_ZN2al8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %17) #10
  br label %144

143:                                              ; preds = %134, %128
  call void @_ZN2al8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %17) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr %17) #10
  br label %145

144:                                              ; preds = %139, %135
  call void @llvm.lifetime.end.p0(i64 40, ptr %17) #10
  br label %270

145:                                              ; preds = %143, %109
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #10
  %146 = load ptr, ptr %5, align 8, !tbaa !5
  %147 = getelementptr inbounds i8, ptr %146, i64 16
  %148 = getelementptr inbounds %struct.DeviceBase, ptr %147, i32 0, i32 29
  %149 = getelementptr inbounds %struct.RealMixParams, ptr %148, i32 0, i32 1
  %150 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIjLm16EEixEm(ptr noundef nonnull align 4 dereferenceable(64) %149, i64 noundef 2) #10
  %151 = load i32, ptr %150, align 4, !tbaa !9
  %152 = icmp ne i32 %151, -1
  br i1 %152, label %153, label %175

153:                                              ; preds = %145
  %154 = load ptr, ptr %5, align 8, !tbaa !5
  %155 = getelementptr inbounds i8, ptr %154, i64 16
  %156 = getelementptr inbounds %struct.DeviceBase, ptr %155, i32 0, i32 29
  %157 = getelementptr inbounds %struct.RealMixParams, ptr %156, i32 0, i32 1
  %158 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIjLm16EEixEm(ptr noundef nonnull align 4 dereferenceable(64) %157, i64 noundef 0) #10
  %159 = load i32, ptr %158, align 4, !tbaa !9
  %160 = icmp ne i32 %159, -1
  br i1 %160, label %161, label %175

161:                                              ; preds = %153
  %162 = load ptr, ptr %5, align 8, !tbaa !5
  %163 = getelementptr inbounds i8, ptr %162, i64 16
  %164 = getelementptr inbounds %struct.DeviceBase, ptr %163, i32 0, i32 29
  %165 = getelementptr inbounds %struct.RealMixParams, ptr %164, i32 0, i32 1
  %166 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIjLm16EEixEm(ptr noundef nonnull align 4 dereferenceable(64) %165, i64 noundef 1) #10
  %167 = load i32, ptr %166, align 4, !tbaa !9
  %168 = icmp ne i32 %167, -1
  br i1 %168, label %169, label %175

169:                                              ; preds = %161
  %170 = load ptr, ptr %5, align 8, !tbaa !5
  %171 = invoke noundef zeroext i1 @_ZN9ALCdevice18getConfigValueBoolEPKcS1_i(ptr noundef nonnull align 16 dereferenceable(101448) %170, ptr noundef null, ptr noundef @.str.5, i32 noundef 0)
          to label %172 unwind label %205

172:                                              ; preds = %169
  %173 = zext i1 %171 to i32
  %174 = icmp ne i32 %173, 0
  br label %175

175:                                              ; preds = %172, %161, %153, %145
  %176 = phi i1 [ false, %161 ], [ false, %153 ], [ false, %145 ], [ %174, %172 ]
  %177 = zext i1 %176 to i8
  store i8 %177, ptr %18, align 1, !tbaa !92
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #10
  %178 = load ptr, ptr %5, align 8, !tbaa !5
  %179 = invoke noundef zeroext i1 @_ZN9ALCdevice18getConfigValueBoolEPKcS1_i(ptr noundef nonnull align 16 dereferenceable(101448) %178, ptr noundef @.str.4, ptr noundef @.str.6, i32 noundef 1)
          to label %180 unwind label %209

180:                                              ; preds = %175
  %181 = zext i1 %179 to i32
  %182 = icmp ne i32 %181, 0
  %183 = zext i1 %182 to i8
  store i8 %183, ptr %19, align 1, !tbaa !92
  %184 = load ptr, ptr %5, align 8, !tbaa !5
  %185 = load i8, ptr %19, align 1, !tbaa !92, !range !93, !noundef !94
  %186 = trunc i8 %185 to i1
  %187 = load i8, ptr %18, align 1, !tbaa !92, !range !93, !noundef !94
  %188 = trunc i8 %187 to i1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %20, ptr align 8 %14, i64 96, i1 false), !tbaa.struct !125
  invoke void @_ZN12_GLOBAL__N_111InitPanningEP9ALCdevicebbNS_13DecoderConfigILNS_11DecoderModeE1ELm0EEE(ptr noundef %184, i1 noundef zeroext %186, i1 noundef zeroext %188, ptr noundef byval(%"struct.(anonymous namespace)::DecoderConfig") align 8 %20)
          to label %189 unwind label %209

189:                                              ; preds = %180
  %190 = getelementptr inbounds %"struct.(anonymous namespace)::DecoderConfig", ptr %14, i32 0, i32 0
  %191 = load i8, ptr %190, align 8, !tbaa !116
  %192 = zext i8 %191 to i32
  %193 = icmp sgt i32 %192, 0
  br i1 %193, label %194, label %252

194:                                              ; preds = %189
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #10
  store float 0.000000e+00, ptr %21, align 4, !tbaa !128
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #10
  store float 0.000000e+00, ptr %22, align 4, !tbaa !128
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #10
  store ptr %15, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #10
  %195 = load ptr, ptr %23, align 8, !tbaa !5
  %196 = getelementptr inbounds [16 x float], ptr %195, i64 0, i64 0
  store ptr %196, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #10
  %197 = load ptr, ptr %23, align 8, !tbaa !5
  %198 = getelementptr inbounds [16 x float], ptr %197, i64 0, i64 0
  %199 = getelementptr inbounds float, ptr %198, i64 16
  store ptr %199, ptr %25, align 8, !tbaa !5
  br label %200

200:                                              ; preds = %225, %194
  %201 = load ptr, ptr %24, align 8, !tbaa !5
  %202 = load ptr, ptr %25, align 8, !tbaa !5
  %203 = icmp ne ptr %201, %202
  br i1 %203, label %213, label %204

204:                                              ; preds = %200
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #10
  br label %228

205:                                              ; preds = %169
  %206 = landingpad { ptr, i32 }
          cleanup
  %207 = extractvalue { ptr, i32 } %206, 0
  store ptr %207, ptr %10, align 8
  %208 = extractvalue { ptr, i32 } %206, 1
  store i32 %208, ptr %11, align 4
  br label %269

209:                                              ; preds = %180, %175
  %210 = landingpad { ptr, i32 }
          cleanup
  %211 = extractvalue { ptr, i32 } %210, 0
  store ptr %211, ptr %10, align 8
  %212 = extractvalue { ptr, i32 } %210, 1
  store i32 %212, ptr %11, align 4
  br label %268

213:                                              ; preds = %200
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #10
  %214 = load ptr, ptr %24, align 8, !tbaa !5
  %215 = load float, ptr %214, align 4, !tbaa !128
  store float %215, ptr %26, align 4, !tbaa !128
  %216 = load float, ptr %26, align 4, !tbaa !128
  %217 = fcmp ogt float %216, 0.000000e+00
  br i1 %217, label %218, label %224

218:                                              ; preds = %213
  %219 = load float, ptr %26, align 4, !tbaa !128
  %220 = load float, ptr %21, align 4, !tbaa !128
  %221 = fadd float %220, %219
  store float %221, ptr %21, align 4, !tbaa !128
  %222 = load float, ptr %22, align 4, !tbaa !128
  %223 = fadd float %222, 1.000000e+00
  store float %223, ptr %22, align 4, !tbaa !128
  br label %224

224:                                              ; preds = %218, %213
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #10
  br label %225

225:                                              ; preds = %224
  %226 = load ptr, ptr %24, align 8, !tbaa !5
  %227 = getelementptr inbounds float, ptr %226, i32 1
  store ptr %227, ptr %24, align 8, !tbaa !5
  br label %200

228:                                              ; preds = %204
  %229 = load float, ptr %22, align 4, !tbaa !128
  %230 = fcmp ogt float %229, 0.000000e+00
  br i1 %230, label %231, label %251

231:                                              ; preds = %228
  %232 = load ptr, ptr %5, align 8, !tbaa !5
  %233 = load float, ptr %21, align 4, !tbaa !128
  %234 = load float, ptr %22, align 4, !tbaa !128
  %235 = fdiv float %233, %234
  %236 = getelementptr inbounds %"struct.(anonymous namespace)::DecoderConfig", ptr %14, i32 0, i32 0
  %237 = load i8, ptr %236, align 8, !tbaa !116
  %238 = zext i8 %237 to i32
  %239 = getelementptr inbounds %"struct.(anonymous namespace)::DecoderConfig", ptr %14, i32 0, i32 1
  %240 = load i8, ptr %239, align 1, !tbaa !121, !range !93, !noundef !94
  %241 = trunc i8 %240 to i1
  invoke void @_ZN12_GLOBAL__N_117InitNearFieldCtrlEP9ALCdevicefjb(ptr noundef %232, float noundef %235, i32 noundef %238, i1 noundef zeroext %241)
          to label %242 unwind label %247

242:                                              ; preds = %231
  %243 = load ptr, ptr %5, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %27, ptr align 8 %14, i64 96, i1 false), !tbaa.struct !125
  call void @_ZN2al4spanIKfLm16EEC2ERA16_S1_(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 4 dereferenceable(64) %15) #10
  %244 = getelementptr inbounds %"class.al::span.95", ptr %28, i32 0, i32 0
  %245 = load ptr, ptr %244, align 8
  invoke void @_ZN12_GLOBAL__N_116InitDistanceCompEP9ALCdeviceNS_13DecoderConfigILNS_11DecoderModeE1ELm0EEEN2al4spanIKfLm16EEE(ptr noundef %243, ptr noundef byval(%"struct.(anonymous namespace)::DecoderConfig") align 8 %27, ptr %245)
          to label %246 unwind label %247

246:                                              ; preds = %242
  br label %251

247:                                              ; preds = %242, %231
  %248 = landingpad { ptr, i32 }
          cleanup
  %249 = extractvalue { ptr, i32 } %248, 0
  store ptr %249, ptr %10, align 8
  %250 = extractvalue { ptr, i32 } %248, 1
  store i32 %250, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #10
  br label %268

251:                                              ; preds = %246, %228
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #10
  br label %252

252:                                              ; preds = %251, %189
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #10
  %253 = load ptr, ptr %5, align 8, !tbaa !5
  %254 = getelementptr inbounds i8, ptr %253, i64 16
  %255 = getelementptr inbounds %struct.DeviceBase, ptr %254, i32 0, i32 34
  %256 = call noundef ptr @_ZNKSt10unique_ptrI10BFormatDecSt14default_deleteIS0_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %255) #10
  store ptr %256, ptr %29, align 8, !tbaa !5
  %257 = load ptr, ptr %29, align 8, !tbaa !5
  %258 = icmp ne ptr %257, null
  br i1 %258, label %259, label %267

259:                                              ; preds = %252
  %260 = load ptr, ptr %29, align 8, !tbaa !5
  %261 = call noundef zeroext i1 @_ZNK10BFormatDec12hasStablizerEv(ptr noundef nonnull align 16 dereferenceable(8360) %260) #10
  %262 = zext i1 %261 to i64
  %263 = select i1 %261, { i64, i64 } { i64 ptrtoint (ptr @_ZN10DeviceBase23ProcessAmbiDecStablizedEm to i64), i64 0 }, { i64, i64 } { i64 ptrtoint (ptr @_ZN10DeviceBase14ProcessAmbiDecEm to i64), i64 0 }
  %264 = load ptr, ptr %5, align 8, !tbaa !5
  %265 = getelementptr inbounds i8, ptr %264, i64 16
  %266 = getelementptr inbounds %struct.DeviceBase, ptr %265, i32 0, i32 36
  store { i64, i64 } %263, ptr %266, align 8, !tbaa !129
  br label %267

267:                                              ; preds = %259, %252
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  store i32 1, ptr %30, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #10
  call void @llvm.lifetime.end.p0(i64 64, ptr %15) #10
  call void @llvm.lifetime.end.p0(i64 96, ptr %14) #10
  call void @_ZNSt10unique_ptrIN12_GLOBAL__N_113DecoderConfigILNS0_11DecoderModeE1ELm16EEESt14default_deleteIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #10
  br label %717

268:                                              ; preds = %247, %209
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #10
  br label %269

269:                                              ; preds = %268, %205
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #10
  br label %270

270:                                              ; preds = %269, %144
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #10
  call void @llvm.lifetime.end.p0(i64 64, ptr %15) #10
  call void @llvm.lifetime.end.p0(i64 96, ptr %14) #10
  call void @_ZNSt10unique_ptrIN12_GLOBAL__N_113DecoderConfigILNS0_11DecoderModeE1ELm16EEESt14default_deleteIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #10
  br label %721

271:                                              ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr %31) #10
  %272 = load ptr, ptr %5, align 8, !tbaa !5
  %273 = getelementptr inbounds i8, ptr %272, i64 16
  %274 = getelementptr inbounds %struct.DeviceBase, ptr %273, i32 0, i32 7
  %275 = load i8, ptr %274, align 2, !tbaa !130, !range !93, !noundef !94
  %276 = trunc i8 %275 to i1
  %277 = zext i1 %276 to i8
  store i8 %277, ptr %31, align 1, !tbaa !92
  %278 = load ptr, ptr %5, align 8, !tbaa !5
  %279 = getelementptr inbounds i8, ptr %278, i64 16
  %280 = getelementptr inbounds %struct.DeviceBase, ptr %279, i32 0, i32 1
  %281 = load i8, ptr %280, align 1, !tbaa !131
  %282 = icmp ne i8 %281, 2
  br i1 %282, label %283, label %333

283:                                              ; preds = %271
  call void @llvm.lifetime.start.p0(i64 40, ptr %32) #10
  %284 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN9ALCdevice11configValueINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEN2al8optionalIT_EEPKcSC_(ptr dead_on_unwind writable sret(%"class.al::optional.90") align 8 %32, ptr noundef nonnull align 16 dereferenceable(101448) %284, ptr noundef null, ptr noundef @.str.7)
          to label %285 unwind label %295

285:                                              ; preds = %283
  %286 = call noundef zeroext i1 @_ZNK2al8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEcvbEv(ptr noundef nonnull align 8 dereferenceable(40) %32) #10
  br i1 %286, label %287, label %331

287:                                              ; preds = %285
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #10
  %288 = invoke noundef ptr @_ZN2al8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEptEv(ptr noundef nonnull align 8 dereferenceable(40) %32)
          to label %289 unwind label %299

289:                                              ; preds = %287
  %290 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %288) #10
  store ptr %290, ptr %33, align 8, !tbaa !5
  %291 = load ptr, ptr %33, align 8, !tbaa !5
  %292 = call noundef i32 @_ZN2al10strcasecmpEPKcS1_(ptr noundef %291, ptr noundef @.str.8) #10
  %293 = icmp eq i32 %292, 0
  br i1 %293, label %294, label %303

294:                                              ; preds = %289
  store i8 1, ptr %31, align 1, !tbaa !92
  br label %330

295:                                              ; preds = %283
  %296 = landingpad { ptr, i32 }
          cleanup
  %297 = extractvalue { ptr, i32 } %296, 0
  store ptr %297, ptr %10, align 8
  %298 = extractvalue { ptr, i32 } %296, 1
  store i32 %298, ptr %11, align 4
  br label %332

299:                                              ; preds = %287
  %300 = landingpad { ptr, i32 }
          cleanup
  %301 = extractvalue { ptr, i32 } %300, 0
  store ptr %301, ptr %10, align 8
  %302 = extractvalue { ptr, i32 } %300, 1
  store i32 %302, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #10
  call void @_ZN2al8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %32) #10
  br label %332

303:                                              ; preds = %289
  %304 = load ptr, ptr %33, align 8, !tbaa !5
  %305 = call noundef i32 @_ZN2al10strcasecmpEPKcS1_(ptr noundef %304, ptr noundef @.str.9) #10
  %306 = icmp eq i32 %305, 0
  br i1 %306, label %307, label %308

307:                                              ; preds = %303
  store i8 0, ptr %31, align 1, !tbaa !92
  br label %329

308:                                              ; preds = %303
  %309 = load ptr, ptr %33, align 8, !tbaa !5
  %310 = call noundef i32 @_ZN2al10strcasecmpEPKcS1_(ptr noundef %309, ptr noundef @.str.10) #10
  %311 = icmp ne i32 %310, 0
  br i1 %311, label %312, label %328

312:                                              ; preds = %308
  br label %313

313:                                              ; preds = %312
  %314 = load i32, ptr @gLogLevel, align 4, !tbaa !132
  %315 = icmp sge i32 %314, 1
  %316 = xor i1 %315, true
  %317 = xor i1 %316, true
  %318 = zext i1 %317 to i64
  %319 = call i64 @llvm.expect.i64(i64 %318, i64 0)
  %320 = icmp ne i64 %319, 0
  br i1 %320, label %321, label %325

321:                                              ; preds = %313
  %322 = load ptr, ptr @gLogFile, align 8, !tbaa !5
  %323 = load ptr, ptr %33, align 8, !tbaa !5
  %324 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %322, ptr noundef @.str.11, ptr noundef %323) #10
  br label %325

325:                                              ; preds = %321, %313
  br label %326

326:                                              ; preds = %325
  br label %327

327:                                              ; preds = %326
  br label %328

328:                                              ; preds = %327, %308
  br label %329

329:                                              ; preds = %328, %307
  br label %330

330:                                              ; preds = %329, %294
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #10
  br label %331

331:                                              ; preds = %330, %285
  call void @_ZN2al8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %32) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr %32) #10
  br label %333

332:                                              ; preds = %299, %295
  call void @llvm.lifetime.end.p0(i64 40, ptr %32) #10
  br label %720

333:                                              ; preds = %331, %271
  %334 = call noundef zeroext i1 @_ZNK2al8optionalIbEcvbEv(ptr noundef nonnull align 1 dereferenceable(2) %4) #10
  br i1 %334, label %338, label %335

335:                                              ; preds = %333
  %336 = load i8, ptr %31, align 1, !tbaa !92, !range !93, !noundef !94
  %337 = trunc i8 %336 to i1
  br i1 %337, label %345, label %338

338:                                              ; preds = %335, %333
  %339 = call noundef zeroext i1 @_ZNK2al8optionalIbEcvbEv(ptr noundef nonnull align 1 dereferenceable(2) %4) #10
  br i1 %339, label %340, label %520

340:                                              ; preds = %338
  %341 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNR2al8optionalIbE5valueEv(ptr noundef nonnull align 1 dereferenceable(2) %4)
          to label %342 unwind label %352

342:                                              ; preds = %340
  %343 = load i8, ptr %341, align 1, !tbaa !92, !range !93, !noundef !94
  %344 = trunc i8 %343 to i1
  br i1 %344, label %345, label %520

345:                                              ; preds = %342, %335
  %346 = load ptr, ptr %5, align 8, !tbaa !5
  %347 = getelementptr inbounds %struct.ALCdevice, ptr %346, i32 0, i32 8
  %348 = call noundef zeroext i1 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN2al9allocatorIS5_Lm8EEEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %347) #10
  br i1 %348, label %349, label %356

349:                                              ; preds = %345
  %350 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN9ALCdevice14enumerateHrtfsEv(ptr noundef nonnull align 16 dereferenceable(101448) %350)
          to label %351 unwind label %352

351:                                              ; preds = %349
  br label %356

352:                                              ; preds = %702, %682, %349, %340
  %353 = landingpad { ptr, i32 }
          cleanup
  %354 = extractvalue { ptr, i32 } %353, 0
  store ptr %354, ptr %10, align 8
  %355 = extractvalue { ptr, i32 } %353, 1
  store i32 %355, ptr %11, align 4
  br label %720

356:                                              ; preds = %351, %345
  %357 = load i32, ptr %6, align 4, !tbaa !9
  %358 = icmp sge i32 %357, 0
  br i1 %358, label %359, label %399

359:                                              ; preds = %356
  %360 = load i32, ptr %6, align 4, !tbaa !9
  %361 = zext i32 %360 to i64
  %362 = load ptr, ptr %5, align 8, !tbaa !5
  %363 = getelementptr inbounds %struct.ALCdevice, ptr %362, i32 0, i32 8
  %364 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN2al9allocatorIS5_Lm8EEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %363) #10
  %365 = icmp ult i64 %361, %364
  br i1 %365, label %366, label %399

366:                                              ; preds = %359
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #10
  %367 = load ptr, ptr %5, align 8, !tbaa !5
  %368 = getelementptr inbounds %struct.ALCdevice, ptr %367, i32 0, i32 8
  %369 = load i32, ptr %6, align 4, !tbaa !9
  %370 = zext i32 %369 to i64
  %371 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN2al9allocatorIS5_Lm8EEEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %368, i64 noundef %370) #10
  store ptr %371, ptr %34, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #10
  %372 = load ptr, ptr %34, align 8, !tbaa !5
  %373 = load ptr, ptr %5, align 8, !tbaa !5
  %374 = getelementptr inbounds i8, ptr %373, i64 16
  %375 = getelementptr inbounds %struct.DeviceBase, ptr %374, i32 0, i32 2
  %376 = load i32, ptr %375, align 4, !tbaa !134
  invoke void @_Z13GetLoadedHrtfRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj(ptr dead_on_unwind writable sret(%"class.al::intrusive_ptr") align 8 %35, ptr noundef nonnull align 8 dereferenceable(32) %372, i32 noundef %376)
          to label %377 unwind label %389

377:                                              ; preds = %366
  %378 = call noundef zeroext i1 @_ZNK2al13intrusive_ptrI9HrtfStoreEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %35) #10
  br i1 %378, label %379, label %397

379:                                              ; preds = %377
  %380 = load ptr, ptr %5, align 8, !tbaa !5
  %381 = getelementptr inbounds i8, ptr %380, i64 16
  %382 = getelementptr inbounds %struct.DeviceBase, ptr %381, i32 0, i32 31
  %383 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN2al13intrusive_ptrI9HrtfStoreEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(8) %382, ptr noundef nonnull align 8 dereferenceable(8) %35) #10
  %384 = load ptr, ptr %34, align 8, !tbaa !5
  %385 = load ptr, ptr %5, align 8, !tbaa !5
  %386 = getelementptr inbounds %struct.ALCdevice, ptr %385, i32 0, i32 7
  %387 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %386, ptr noundef nonnull align 8 dereferenceable(32) %384)
          to label %388 unwind label %393

388:                                              ; preds = %379
  br label %397

389:                                              ; preds = %366
  %390 = landingpad { ptr, i32 }
          cleanup
  %391 = extractvalue { ptr, i32 } %390, 0
  store ptr %391, ptr %10, align 8
  %392 = extractvalue { ptr, i32 } %390, 1
  store i32 %392, ptr %11, align 4
  br label %398

393:                                              ; preds = %379
  %394 = landingpad { ptr, i32 }
          cleanup
  %395 = extractvalue { ptr, i32 } %394, 0
  store ptr %395, ptr %10, align 8
  %396 = extractvalue { ptr, i32 } %394, 1
  store i32 %396, ptr %11, align 4
  call void @_ZN2al13intrusive_ptrI9HrtfStoreED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #10
  br label %398

397:                                              ; preds = %388, %377
  call void @_ZN2al13intrusive_ptrI9HrtfStoreED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #10
  br label %399

398:                                              ; preds = %393, %389
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #10
  br label %720

399:                                              ; preds = %397, %359, %356
  %400 = load ptr, ptr %5, align 8, !tbaa !5
  %401 = getelementptr inbounds i8, ptr %400, i64 16
  %402 = getelementptr inbounds %struct.DeviceBase, ptr %401, i32 0, i32 31
  %403 = call noundef zeroext i1 @_ZNK2al13intrusive_ptrI9HrtfStoreEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %402) #10
  br i1 %403, label %455, label %404

404:                                              ; preds = %399
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #10
  %405 = load ptr, ptr %5, align 8, !tbaa !5
  %406 = getelementptr inbounds %struct.ALCdevice, ptr %405, i32 0, i32 8
  store ptr %406, ptr %36, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #10
  %407 = load ptr, ptr %36, align 8, !tbaa !5
  %408 = call ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN2al9allocatorIS5_Lm8EEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %407) #10
  %409 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %37, i32 0, i32 0
  store ptr %408, ptr %409, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #10
  %410 = load ptr, ptr %36, align 8, !tbaa !5
  %411 = call ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN2al9allocatorIS5_Lm8EEEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %410) #10
  %412 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %38, i32 0, i32 0
  store ptr %411, ptr %412, align 8
  br label %413

413:                                              ; preds = %450, %404
  %414 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_N2al9allocatorIS6_Lm8EEEEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %37, ptr noundef nonnull align 8 dereferenceable(8) %38) #10
  br i1 %414, label %416, label %415

415:                                              ; preds = %413
  store i32 7, ptr %30, align 4
  br label %453

416:                                              ; preds = %413
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #10
  %417 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_N2al9allocatorIS6_Lm8EEEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %37) #10
  store ptr %417, ptr %39, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #10
  %418 = load ptr, ptr %39, align 8, !tbaa !5
  %419 = load ptr, ptr %5, align 8, !tbaa !5
  %420 = getelementptr inbounds i8, ptr %419, i64 16
  %421 = getelementptr inbounds %struct.DeviceBase, ptr %420, i32 0, i32 2
  %422 = load i32, ptr %421, align 4, !tbaa !134
  invoke void @_Z13GetLoadedHrtfRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj(ptr dead_on_unwind writable sret(%"class.al::intrusive_ptr") align 8 %40, ptr noundef nonnull align 8 dereferenceable(32) %418, i32 noundef %422)
          to label %423 unwind label %435

423:                                              ; preds = %416
  %424 = call noundef zeroext i1 @_ZNK2al13intrusive_ptrI9HrtfStoreEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %40) #10
  br i1 %424, label %425, label %443

425:                                              ; preds = %423
  %426 = load ptr, ptr %5, align 8, !tbaa !5
  %427 = getelementptr inbounds i8, ptr %426, i64 16
  %428 = getelementptr inbounds %struct.DeviceBase, ptr %427, i32 0, i32 31
  %429 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN2al13intrusive_ptrI9HrtfStoreEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(8) %428, ptr noundef nonnull align 8 dereferenceable(8) %40) #10
  %430 = load ptr, ptr %39, align 8, !tbaa !5
  %431 = load ptr, ptr %5, align 8, !tbaa !5
  %432 = getelementptr inbounds %struct.ALCdevice, ptr %431, i32 0, i32 7
  %433 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %432, ptr noundef nonnull align 8 dereferenceable(32) %430)
          to label %434 unwind label %439

434:                                              ; preds = %425
  store i32 7, ptr %30, align 4
  br label %444

435:                                              ; preds = %416
  %436 = landingpad { ptr, i32 }
          cleanup
  %437 = extractvalue { ptr, i32 } %436, 0
  store ptr %437, ptr %10, align 8
  %438 = extractvalue { ptr, i32 } %436, 1
  store i32 %438, ptr %11, align 4
  br label %452

439:                                              ; preds = %425
  %440 = landingpad { ptr, i32 }
          cleanup
  %441 = extractvalue { ptr, i32 } %440, 0
  store ptr %441, ptr %10, align 8
  %442 = extractvalue { ptr, i32 } %440, 1
  store i32 %442, ptr %11, align 4
  call void @_ZN2al13intrusive_ptrI9HrtfStoreED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #10
  br label %452

443:                                              ; preds = %423
  store i32 0, ptr %30, align 4
  br label %444

444:                                              ; preds = %443, %434
  call void @_ZN2al13intrusive_ptrI9HrtfStoreED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #10
  %445 = load i32, ptr %30, align 4
  switch i32 %445, label %447 [
    i32 0, label %446
  ]

446:                                              ; preds = %444
  store i32 0, ptr %30, align 4
  br label %447

447:                                              ; preds = %446, %444
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #10
  %448 = load i32, ptr %30, align 4
  switch i32 %448, label %453 [
    i32 0, label %449
  ]

449:                                              ; preds = %447
  br label %450

450:                                              ; preds = %449
  %451 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_N2al9allocatorIS6_Lm8EEEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %37) #10
  br label %413

452:                                              ; preds = %439, %435
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #10
  br label %720

453:                                              ; preds = %447, %415
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #10
  br label %454

454:                                              ; preds = %453
  br label %455

455:                                              ; preds = %454, %399
  %456 = load ptr, ptr %5, align 8, !tbaa !5
  %457 = getelementptr inbounds i8, ptr %456, i64 16
  %458 = getelementptr inbounds %struct.DeviceBase, ptr %457, i32 0, i32 31
  %459 = call noundef zeroext i1 @_ZNK2al13intrusive_ptrI9HrtfStoreEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %458) #10
  br i1 %459, label %460, label %519

460:                                              ; preds = %455
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #10
  call void @_ZN2al13intrusive_ptrI9HrtfStoreEC2EDn(ptr noundef nonnull align 8 dereferenceable(8) %41, ptr null) #10
  %461 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN2al13intrusive_ptrI9HrtfStoreEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %41) #10
  call void @_ZN2al13intrusive_ptrI9HrtfStoreED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #10
  %462 = load ptr, ptr %5, align 8, !tbaa !5
  %463 = getelementptr inbounds i8, ptr %462, i64 16
  %464 = getelementptr inbounds %struct.DeviceBase, ptr %463, i32 0, i32 31
  %465 = call noundef ptr @_ZNK2al13intrusive_ptrI9HrtfStoreE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %464) #10
  store ptr %465, ptr %42, align 8, !tbaa !5
  %466 = load ptr, ptr %42, align 8, !tbaa !5
  %467 = getelementptr inbounds %struct.HrtfStore, ptr %466, i32 0, i32 2
  %468 = load i32, ptr %467, align 8, !tbaa !135
  %469 = load ptr, ptr %5, align 8, !tbaa !5
  %470 = getelementptr inbounds i8, ptr %469, i64 16
  %471 = getelementptr inbounds %struct.DeviceBase, ptr %470, i32 0, i32 32
  store i32 %468, ptr %471, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #10
  %472 = load ptr, ptr %5, align 8, !tbaa !5
  %473 = invoke i64 @_ZN9ALCdevice11configValueIjEEN2al8optionalIT_EEPKcS6_(ptr noundef nonnull align 16 dereferenceable(101448) %472, ptr noundef null, ptr noundef @.str.12)
          to label %474 unwind label %501

474:                                              ; preds = %460
  %475 = getelementptr inbounds %"class.al::optional.107", ptr %43, i32 0, i32 0
  %476 = getelementptr inbounds %"struct.al::optional_storage.108", ptr %475, i32 0, i32 0
  %477 = getelementptr inbounds %"struct.al::optstore_helper.109", ptr %476, i32 0, i32 0
  store i64 %473, ptr %477, align 4
  %478 = call noundef zeroext i1 @_ZNK2al8optionalIjEcvbEv(ptr noundef nonnull align 4 dereferenceable(8) %43) #10
  br i1 %478, label %479, label %506

479:                                              ; preds = %474
  %480 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNR2al8optionalIjEdeEv(ptr noundef nonnull align 4 dereferenceable(8) %43)
          to label %481 unwind label %501

481:                                              ; preds = %479
  %482 = load i32, ptr %480, align 4, !tbaa !9
  %483 = icmp ugt i32 %482, 0
  br i1 %483, label %484, label %505

484:                                              ; preds = %481
  %485 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNR2al8optionalIjEdeEv(ptr noundef nonnull align 4 dereferenceable(8) %43)
          to label %486 unwind label %501

486:                                              ; preds = %484
  %487 = load i32, ptr %485, align 4, !tbaa !9
  %488 = load ptr, ptr %5, align 8, !tbaa !5
  %489 = getelementptr inbounds i8, ptr %488, i64 16
  %490 = getelementptr inbounds %struct.DeviceBase, ptr %489, i32 0, i32 32
  %491 = load i32, ptr %490, align 8, !tbaa !11
  %492 = icmp ult i32 %487, %491
  br i1 %492, label %493, label %505

493:                                              ; preds = %486
  %494 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNR2al8optionalIjEdeEv(ptr noundef nonnull align 4 dereferenceable(8) %43)
          to label %495 unwind label %501

495:                                              ; preds = %493
  %496 = load i32, ptr %494, align 4, !tbaa !9
  %497 = call noundef i32 @_Z4maxujj(i32 noundef %496, i32 noundef 8) #10
  %498 = load ptr, ptr %5, align 8, !tbaa !5
  %499 = getelementptr inbounds i8, ptr %498, i64 16
  %500 = getelementptr inbounds %struct.DeviceBase, ptr %499, i32 0, i32 32
  store i32 %497, ptr %500, align 8, !tbaa !11
  br label %505

501:                                              ; preds = %493, %484, %479, %460
  %502 = landingpad { ptr, i32 }
          cleanup
  %503 = extractvalue { ptr, i32 } %502, 0
  store ptr %503, ptr %10, align 8
  %504 = extractvalue { ptr, i32 } %502, 1
  store i32 %504, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #10
  br label %518

505:                                              ; preds = %495, %486, %481
  br label %506

506:                                              ; preds = %505, %474
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #10
  %507 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN12_GLOBAL__N_115InitHrtfPanningEP9ALCdevice(ptr noundef %507)
          to label %508 unwind label %514

508:                                              ; preds = %506
  %509 = load ptr, ptr %5, align 8, !tbaa !5
  %510 = getelementptr inbounds i8, ptr %509, i64 16
  %511 = getelementptr inbounds %struct.DeviceBase, ptr %510, i32 0, i32 36
  store { i64, i64 } { i64 ptrtoint (ptr @_ZN10DeviceBase11ProcessHrtfEm to i64), i64 0 }, ptr %511, align 8, !tbaa !129
  %512 = load ptr, ptr %5, align 8, !tbaa !5
  %513 = getelementptr inbounds %struct.ALCdevice, ptr %512, i32 0, i32 9
  store i32 1, ptr %513, align 8, !tbaa !95
  store i32 1, ptr %30, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #10
  br label %716

514:                                              ; preds = %506
  %515 = landingpad { ptr, i32 }
          cleanup
  %516 = extractvalue { ptr, i32 } %515, 0
  store ptr %516, ptr %10, align 8
  %517 = extractvalue { ptr, i32 } %515, 1
  store i32 %517, ptr %11, align 4
  br label %518

518:                                              ; preds = %514, %501
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #10
  br label %720

519:                                              ; preds = %455
  br label %520

520:                                              ; preds = %519, %342, %338
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #10
  call void @_ZN2al13intrusive_ptrI9HrtfStoreEC2EDn(ptr noundef nonnull align 8 dereferenceable(8) %44, ptr null) #10
  %521 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN2al13intrusive_ptrI9HrtfStoreEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %44) #10
  call void @_ZN2al13intrusive_ptrI9HrtfStoreED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %44) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #10
  %522 = load ptr, ptr %5, align 8, !tbaa !5
  %523 = getelementptr inbounds i8, ptr %522, i64 16
  %524 = getelementptr inbounds %struct.DeviceBase, ptr %523, i32 0, i32 15
  store i8 1, ptr %524, align 4, !tbaa !90
  %525 = load ptr, ptr %5, align 8, !tbaa !5
  %526 = getelementptr inbounds i8, ptr %525, i64 16
  %527 = getelementptr inbounds %struct.DeviceBase, ptr %526, i32 0, i32 1
  %528 = load i8, ptr %527, align 1, !tbaa !131
  %529 = icmp ne i8 %528, 2
  br i1 %529, label %530, label %607

530:                                              ; preds = %520
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #10
  %531 = load ptr, ptr %5, align 8, !tbaa !5
  %532 = invoke i64 @_ZN9ALCdevice11configValueIiEEN2al8optionalIT_EEPKcS6_(ptr noundef nonnull align 16 dereferenceable(101448) %531, ptr noundef null, ptr noundef @.str.13)
          to label %533 unwind label %577

533:                                              ; preds = %530
  %534 = getelementptr inbounds %"class.al::optional.112", ptr %45, i32 0, i32 0
  %535 = getelementptr inbounds %"struct.al::optional_storage.113", ptr %534, i32 0, i32 0
  %536 = getelementptr inbounds %"struct.al::optstore_helper.114", ptr %535, i32 0, i32 0
  store i64 %532, ptr %536, align 4
  %537 = call noundef zeroext i1 @_ZNK2al8optionalIiEcvbEv(ptr noundef nonnull align 4 dereferenceable(8) %45) #10
  br i1 %537, label %538, label %602

538:                                              ; preds = %533
  %539 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNR2al8optionalIiEdeEv(ptr noundef nonnull align 4 dereferenceable(8) %45)
          to label %540 unwind label %577

540:                                              ; preds = %538
  %541 = load i32, ptr %539, align 4, !tbaa !9
  %542 = icmp sgt i32 %541, 0
  br i1 %542, label %543, label %601

543:                                              ; preds = %540
  %544 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNR2al8optionalIiEdeEv(ptr noundef nonnull align 4 dereferenceable(8) %45)
          to label %545 unwind label %577

545:                                              ; preds = %543
  %546 = load i32, ptr %544, align 4, !tbaa !9
  %547 = icmp sle i32 %546, 6
  br i1 %547, label %548, label %601

548:                                              ; preds = %545
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #10
  invoke void @_ZSt11make_uniqueI4bs2bJEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind writable sret(%"class.std::unique_ptr.27") align 8 %46)
          to label %549 unwind label %581

549:                                              ; preds = %548
  %550 = load ptr, ptr %5, align 8, !tbaa !5
  %551 = getelementptr inbounds i8, ptr %550, i64 16
  %552 = getelementptr inbounds %struct.DeviceBase, ptr %551, i32 0, i32 35
  %553 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt10unique_ptrI4bs2bSt14default_deleteIS0_EEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(8) %552, ptr noundef nonnull align 8 dereferenceable(8) %46) #10
  call void @_ZNSt10unique_ptrI4bs2bSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #10
  %554 = load ptr, ptr %5, align 8, !tbaa !5
  %555 = getelementptr inbounds i8, ptr %554, i64 16
  %556 = getelementptr inbounds %struct.DeviceBase, ptr %555, i32 0, i32 35
  %557 = call noundef ptr @_ZNKSt10unique_ptrI4bs2bSt14default_deleteIS0_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %556) #10
  %558 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNR2al8optionalIiEdeEv(ptr noundef nonnull align 4 dereferenceable(8) %45)
          to label %559 unwind label %577

559:                                              ; preds = %549
  %560 = load i32, ptr %558, align 4, !tbaa !9
  %561 = load ptr, ptr %5, align 8, !tbaa !5
  %562 = getelementptr inbounds i8, ptr %561, i64 16
  %563 = getelementptr inbounds %struct.DeviceBase, ptr %562, i32 0, i32 2
  %564 = load i32, ptr %563, align 4, !tbaa !134
  invoke void @_Z15bs2b_set_paramsP4bs2bii(ptr noundef %557, i32 noundef %560, i32 noundef %564)
          to label %565 unwind label %577

565:                                              ; preds = %559
  br label %566

566:                                              ; preds = %565
  %567 = load i32, ptr @gLogLevel, align 4, !tbaa !132
  %568 = icmp sge i32 %567, 3
  %569 = xor i1 %568, true
  %570 = xor i1 %569, true
  %571 = zext i1 %570 to i64
  %572 = call i64 @llvm.expect.i64(i64 %571, i64 0)
  %573 = icmp ne i64 %572, 0
  br i1 %573, label %574, label %585

574:                                              ; preds = %566
  %575 = load ptr, ptr @gLogFile, align 8, !tbaa !5
  %576 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %575, ptr noundef @.str.14) #10
  br label %585

577:                                              ; preds = %587, %559, %549, %543, %538, %530
  %578 = landingpad { ptr, i32 }
          cleanup
  %579 = extractvalue { ptr, i32 } %578, 0
  store ptr %579, ptr %10, align 8
  %580 = extractvalue { ptr, i32 } %578, 1
  store i32 %580, ptr %11, align 4
  br label %606

581:                                              ; preds = %548
  %582 = landingpad { ptr, i32 }
          cleanup
  %583 = extractvalue { ptr, i32 } %582, 0
  store ptr %583, ptr %10, align 8
  %584 = extractvalue { ptr, i32 } %582, 1
  store i32 %584, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #10
  br label %606

585:                                              ; preds = %574, %566
  br label %586

586:                                              ; preds = %585
  br label %587

587:                                              ; preds = %586
  %588 = load ptr, ptr %5, align 8, !tbaa !5
  %589 = getelementptr inbounds %"struct.(anonymous namespace)::DecoderConfig", ptr %47, i32 0, i32 0
  store i8 0, ptr %589, align 8, !tbaa !116
  %590 = getelementptr inbounds %"struct.(anonymous namespace)::DecoderConfig", ptr %47, i32 0, i32 1
  store i8 0, ptr %590, align 1, !tbaa !121
  %591 = getelementptr inbounds %"struct.(anonymous namespace)::DecoderConfig", ptr %47, i32 0, i32 2
  call void @llvm.memset.p0.i64(ptr align 8 %591, i8 0, i64 16, i1 false)
  call void @_ZN2al4spanIK7ChannelLm18446744073709551615EEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %591) #10
  %592 = getelementptr inbounds %"struct.(anonymous namespace)::DecoderConfig", ptr %47, i32 0, i32 3
  store i8 0, ptr %592, align 8, !tbaa !122
  %593 = getelementptr inbounds %"struct.(anonymous namespace)::DecoderConfig", ptr %47, i32 0, i32 4
  call void @llvm.memset.p0.i64(ptr align 8 %593, i8 0, i64 16, i1 false)
  call void @_ZN2al4spanIKfLm18446744073709551615EEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %593) #10
  %594 = getelementptr inbounds %"struct.(anonymous namespace)::DecoderConfig", ptr %47, i32 0, i32 5
  call void @llvm.memset.p0.i64(ptr align 8 %594, i8 0, i64 16, i1 false)
  call void @_ZN2al4spanIKSt5arrayIfLm16EELm18446744073709551615EEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %594) #10
  %595 = getelementptr inbounds %"struct.(anonymous namespace)::DecoderConfig", ptr %47, i32 0, i32 6
  call void @llvm.memset.p0.i64(ptr align 8 %595, i8 0, i64 16, i1 false)
  call void @_ZN2al4spanIKfLm18446744073709551615EEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %595) #10
  %596 = getelementptr inbounds %"struct.(anonymous namespace)::DecoderConfig", ptr %47, i32 0, i32 7
  call void @llvm.memset.p0.i64(ptr align 8 %596, i8 0, i64 16, i1 false)
  call void @_ZN2al4spanIKSt5arrayIfLm16EELm18446744073709551615EEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %596) #10
  invoke void @_ZN12_GLOBAL__N_111InitPanningEP9ALCdevicebbNS_13DecoderConfigILNS_11DecoderModeE1ELm0EEE(ptr noundef %588, i1 noundef zeroext false, i1 noundef zeroext false, ptr noundef byval(%"struct.(anonymous namespace)::DecoderConfig") align 8 %47)
          to label %597 unwind label %577

597:                                              ; preds = %587
  %598 = load ptr, ptr %5, align 8, !tbaa !5
  %599 = getelementptr inbounds i8, ptr %598, i64 16
  %600 = getelementptr inbounds %struct.DeviceBase, ptr %599, i32 0, i32 36
  store { i64, i64 } { i64 ptrtoint (ptr @_ZN10DeviceBase11ProcessBs2bEm to i64), i64 0 }, ptr %600, align 8, !tbaa !129
  store i32 1, ptr %30, align 4
  br label %603

601:                                              ; preds = %545, %540
  br label %602

602:                                              ; preds = %601, %533
  store i32 0, ptr %30, align 4
  br label %603

603:                                              ; preds = %602, %597
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #10
  %604 = load i32, ptr %30, align 4
  switch i32 %604, label %716 [
    i32 0, label %605
  ]

605:                                              ; preds = %603
  br label %607

606:                                              ; preds = %581, %577
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #10
  br label %720

607:                                              ; preds = %605, %520
  call void @llvm.lifetime.start.p0(i64 40, ptr %48) #10
  %608 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN9ALCdevice11configValueINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEN2al8optionalIT_EEPKcSC_(ptr dead_on_unwind writable sret(%"class.al::optional.90") align 8 %48, ptr noundef nonnull align 16 dereferenceable(101448) %608, ptr noundef null, ptr noundef @.str.15)
          to label %609 unwind label %622

609:                                              ; preds = %607
  %610 = call noundef zeroext i1 @_ZNK2al8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEcvbEv(ptr noundef nonnull align 8 dereferenceable(40) %48) #10
  br i1 %610, label %611, label %652

611:                                              ; preds = %609
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #10
  %612 = invoke noundef ptr @_ZN2al8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEptEv(ptr noundef nonnull align 8 dereferenceable(40) %48)
          to label %613 unwind label %626

613:                                              ; preds = %611
  %614 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %612) #10
  store ptr %614, ptr %49, align 8, !tbaa !5
  %615 = load ptr, ptr %49, align 8, !tbaa !5
  %616 = call noundef i32 @_ZN2al10strcasecmpEPKcS1_(ptr noundef %615, ptr noundef @.str.16) #10
  %617 = icmp eq i32 %616, 0
  br i1 %617, label %618, label %630

618:                                              ; preds = %613
  %619 = load ptr, ptr %5, align 8, !tbaa !5
  %620 = getelementptr inbounds i8, ptr %619, i64 16
  %621 = getelementptr inbounds %struct.DeviceBase, ptr %620, i32 0, i32 15
  store i8 0, ptr %621, align 4, !tbaa !90
  br label %651

622:                                              ; preds = %607
  %623 = landingpad { ptr, i32 }
          cleanup
  %624 = extractvalue { ptr, i32 } %623, 0
  store ptr %624, ptr %10, align 8
  %625 = extractvalue { ptr, i32 } %623, 1
  store i32 %625, ptr %11, align 4
  br label %675

626:                                              ; preds = %611
  %627 = landingpad { ptr, i32 }
          cleanup
  %628 = extractvalue { ptr, i32 } %627, 0
  store ptr %628, ptr %10, align 8
  %629 = extractvalue { ptr, i32 } %627, 1
  store i32 %629, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #10
  call void @_ZN2al8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %48) #10
  br label %675

630:                                              ; preds = %613
  %631 = load ptr, ptr %49, align 8, !tbaa !5
  %632 = call noundef i32 @_ZN2al10strcasecmpEPKcS1_(ptr noundef %631, ptr noundef @.str.17) #10
  %633 = icmp ne i32 %632, 0
  br i1 %633, label %634, label %650

634:                                              ; preds = %630
  br label %635

635:                                              ; preds = %634
  %636 = load i32, ptr @gLogLevel, align 4, !tbaa !132
  %637 = icmp sge i32 %636, 1
  %638 = xor i1 %637, true
  %639 = xor i1 %638, true
  %640 = zext i1 %639 to i64
  %641 = call i64 @llvm.expect.i64(i64 %640, i64 0)
  %642 = icmp ne i64 %641, 0
  br i1 %642, label %643, label %647

643:                                              ; preds = %635
  %644 = load ptr, ptr @gLogFile, align 8, !tbaa !5
  %645 = load ptr, ptr %49, align 8, !tbaa !5
  %646 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %644, ptr noundef @.str.18, ptr noundef %645) #10
  br label %647

647:                                              ; preds = %643, %635
  br label %648

648:                                              ; preds = %647
  br label %649

649:                                              ; preds = %648
  br label %650

650:                                              ; preds = %649, %630
  br label %651

651:                                              ; preds = %650, %618
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #10
  br label %652

652:                                              ; preds = %651, %609
  call void @_ZN2al8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %48) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr %48) #10
  %653 = load ptr, ptr %5, align 8, !tbaa !5
  %654 = getelementptr inbounds i8, ptr %653, i64 16
  %655 = getelementptr inbounds %struct.DeviceBase, ptr %654, i32 0, i32 15
  %656 = load i8, ptr %655, align 4, !tbaa !90
  %657 = icmp eq i8 %656, 0
  br i1 %657, label %658, label %688

658:                                              ; preds = %652
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #10
  invoke void @_ZSt11make_uniqueI10UhjEncoderJEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind writable sret(%"class.std::unique_ptr.11") align 8 %50)
          to label %659 unwind label %676

659:                                              ; preds = %658
  %660 = load ptr, ptr %5, align 8, !tbaa !5
  %661 = getelementptr inbounds i8, ptr %660, i64 16
  %662 = getelementptr inbounds %struct.DeviceBase, ptr %661, i32 0, i32 33
  %663 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt10unique_ptrI10UhjEncoderSt14default_deleteIS0_EEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(8) %662, ptr noundef nonnull align 8 dereferenceable(8) %50) #10
  call void @_ZNSt10unique_ptrI10UhjEncoderSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %50) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #10
  br label %664

664:                                              ; preds = %659
  %665 = load i32, ptr @gLogLevel, align 4, !tbaa !132
  %666 = icmp sge i32 %665, 3
  %667 = xor i1 %666, true
  %668 = xor i1 %667, true
  %669 = zext i1 %668 to i64
  %670 = call i64 @llvm.expect.i64(i64 %669, i64 0)
  %671 = icmp ne i64 %670, 0
  br i1 %671, label %672, label %680

672:                                              ; preds = %664
  %673 = load ptr, ptr @gLogFile, align 8, !tbaa !5
  %674 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %673, ptr noundef @.str.19) #10
  br label %680

675:                                              ; preds = %626, %622
  call void @llvm.lifetime.end.p0(i64 40, ptr %48) #10
  br label %720

676:                                              ; preds = %658
  %677 = landingpad { ptr, i32 }
          cleanup
  %678 = extractvalue { ptr, i32 } %677, 0
  store ptr %678, ptr %10, align 8
  %679 = extractvalue { ptr, i32 } %677, 1
  store i32 %679, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #10
  br label %720

680:                                              ; preds = %672, %664
  br label %681

681:                                              ; preds = %680
  br label %682

682:                                              ; preds = %681
  %683 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN12_GLOBAL__N_114InitUhjPanningEP9ALCdevice(ptr noundef %683)
          to label %684 unwind label %352

684:                                              ; preds = %682
  %685 = load ptr, ptr %5, align 8, !tbaa !5
  %686 = getelementptr inbounds i8, ptr %685, i64 16
  %687 = getelementptr inbounds %struct.DeviceBase, ptr %686, i32 0, i32 36
  store { i64, i64 } { i64 ptrtoint (ptr @_ZN10DeviceBase10ProcessUhjEm to i64), i64 0 }, ptr %687, align 8, !tbaa !129
  store i32 1, ptr %30, align 4
  br label %716

688:                                              ; preds = %652
  br label %689

689:                                              ; preds = %688
  %690 = load i32, ptr @gLogLevel, align 4, !tbaa !132
  %691 = icmp sge i32 %690, 3
  %692 = xor i1 %691, true
  %693 = xor i1 %692, true
  %694 = zext i1 %693 to i64
  %695 = call i64 @llvm.expect.i64(i64 %694, i64 0)
  %696 = icmp ne i64 %695, 0
  br i1 %696, label %697, label %700

697:                                              ; preds = %689
  %698 = load ptr, ptr @gLogFile, align 8, !tbaa !5
  %699 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %698, ptr noundef @.str.20) #10
  br label %700

700:                                              ; preds = %697, %689
  br label %701

701:                                              ; preds = %700
  br label %702

702:                                              ; preds = %701
  %703 = load ptr, ptr %5, align 8, !tbaa !5
  %704 = getelementptr inbounds %"struct.(anonymous namespace)::DecoderConfig", ptr %51, i32 0, i32 0
  store i8 0, ptr %704, align 8, !tbaa !116
  %705 = getelementptr inbounds %"struct.(anonymous namespace)::DecoderConfig", ptr %51, i32 0, i32 1
  store i8 0, ptr %705, align 1, !tbaa !121
  %706 = getelementptr inbounds %"struct.(anonymous namespace)::DecoderConfig", ptr %51, i32 0, i32 2
  call void @llvm.memset.p0.i64(ptr align 8 %706, i8 0, i64 16, i1 false)
  call void @_ZN2al4spanIK7ChannelLm18446744073709551615EEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %706) #10
  %707 = getelementptr inbounds %"struct.(anonymous namespace)::DecoderConfig", ptr %51, i32 0, i32 3
  store i8 0, ptr %707, align 8, !tbaa !122
  %708 = getelementptr inbounds %"struct.(anonymous namespace)::DecoderConfig", ptr %51, i32 0, i32 4
  call void @llvm.memset.p0.i64(ptr align 8 %708, i8 0, i64 16, i1 false)
  call void @_ZN2al4spanIKfLm18446744073709551615EEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %708) #10
  %709 = getelementptr inbounds %"struct.(anonymous namespace)::DecoderConfig", ptr %51, i32 0, i32 5
  call void @llvm.memset.p0.i64(ptr align 8 %709, i8 0, i64 16, i1 false)
  call void @_ZN2al4spanIKSt5arrayIfLm16EELm18446744073709551615EEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %709) #10
  %710 = getelementptr inbounds %"struct.(anonymous namespace)::DecoderConfig", ptr %51, i32 0, i32 6
  call void @llvm.memset.p0.i64(ptr align 8 %710, i8 0, i64 16, i1 false)
  call void @_ZN2al4spanIKfLm18446744073709551615EEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %710) #10
  %711 = getelementptr inbounds %"struct.(anonymous namespace)::DecoderConfig", ptr %51, i32 0, i32 7
  call void @llvm.memset.p0.i64(ptr align 8 %711, i8 0, i64 16, i1 false)
  call void @_ZN2al4spanIKSt5arrayIfLm16EELm18446744073709551615EEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %711) #10
  invoke void @_ZN12_GLOBAL__N_111InitPanningEP9ALCdevicebbNS_13DecoderConfigILNS_11DecoderModeE1ELm0EEE(ptr noundef %703, i1 noundef zeroext false, i1 noundef zeroext false, ptr noundef byval(%"struct.(anonymous namespace)::DecoderConfig") align 8 %51)
          to label %712 unwind label %352

712:                                              ; preds = %702
  %713 = load ptr, ptr %5, align 8, !tbaa !5
  %714 = getelementptr inbounds i8, ptr %713, i64 16
  %715 = getelementptr inbounds %struct.DeviceBase, ptr %714, i32 0, i32 36
  store { i64, i64 } { i64 ptrtoint (ptr @_ZN10DeviceBase14ProcessAmbiDecEm to i64), i64 0 }, ptr %715, align 8, !tbaa !129
  store i32 0, ptr %30, align 4
  br label %716

716:                                              ; preds = %712, %684, %603, %508
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #10
  br label %717

717:                                              ; preds = %716, %267
  call void @_ZN2al13intrusive_ptrI9HrtfStoreED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #10
  %718 = load i32, ptr %30, align 4
  switch i32 %718, label %727 [
    i32 0, label %719
    i32 1, label %719
  ]

719:                                              ; preds = %717, %717
  ret void

720:                                              ; preds = %676, %675, %606, %518, %452, %398, %352, %332
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #10
  br label %721

721:                                              ; preds = %720, %270, %94
  call void @_ZN2al13intrusive_ptrI9HrtfStoreED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #10
  br label %722

722:                                              ; preds = %721
  %723 = load ptr, ptr %10, align 8
  %724 = load i32, ptr %11, align 4
  %725 = insertvalue { ptr, i32 } poison, ptr %723, 0
  %726 = insertvalue { ptr, i32 } %725, i32 %724, 1
  resume { ptr, i32 } %726

727:                                              ; preds = %717
  unreachable
}

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN2al13intrusive_ptrI9HrtfStoreEaSEOS2_(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 @_ZN2al13intrusive_ptrI9HrtfStoreED2Ev(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) #1

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN9ALCdevice11configValueINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEN2al8optionalIT_EEPKcSC_(ptr dead_on_unwind noalias writable sret(%"class.al::optional.90") align 8, ptr noundef nonnull align 16 dereferenceable(101448), ptr noundef, ptr noundef) #4 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZZ15aluInitRendererP9ALCdeviceiN2al8optionalIbEEENK3$_0clEPKc"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN2al8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEptEv(ptr noundef nonnull align 8 dereferenceable(40)) #2 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: mustprogress nounwind uwtable
declare dso_local void @_ZN2al8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIjLm16EEixEm(ptr noundef nonnull align 4 dereferenceable(64), i64 noundef) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN9ALCdevice18getConfigValueBoolEPKcS1_i(ptr noundef nonnull align 16 dereferenceable(101448), ptr noundef, ptr noundef, i32 noundef) #0 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_111InitPanningEP9ALCdevicebbNS_13DecoderConfigILNS_11DecoderModeE1ELm0EEE(ptr noundef, i1 noundef zeroext, i1 noundef zeroext, ptr noundef byval(%"struct.(anonymous namespace)::DecoderConfig") align 8) #0

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_117InitNearFieldCtrlEP9ALCdevicefjb(ptr noundef, float noundef, i32 noundef, i1 noundef zeroext) #0

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_116InitDistanceCompEP9ALCdeviceNS_13DecoderConfigILNS_11DecoderModeE1ELm0EEEN2al4spanIKfLm16EEE(ptr noundef, ptr noundef byval(%"struct.(anonymous namespace)::DecoderConfig") align 8, ptr) #0

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

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

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

declare void @_ZN10DeviceBase23ProcessAmbiDecStablizedEm(ptr noundef nonnull align 16 dereferenceable(101152), i64 noundef) #6

declare void @_ZN10DeviceBase14ProcessAmbiDecEm(ptr noundef nonnull align 16 dereferenceable(101152), i64 noundef) #6

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

; Function Attrs: nounwind
declare noundef i32 @_ZN2al10strcasecmpEPKcS1_(ptr noundef, ptr noundef) #7

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(none)
declare i64 @llvm.expect.i64(i64, i64) #8

; Function Attrs: nounwind
declare i32 @fprintf(ptr noundef, ptr noundef, ...) #7

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

declare void @_ZN9ALCdevice14enumerateHrtfsEv(ptr noundef nonnull align 16 dereferenceable(101448)) #6

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

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

declare void @_Z13GetLoadedHrtfRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj(ptr dead_on_unwind writable sret(%"class.al::intrusive_ptr") align 8, ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) #6

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local i64 @_ZN9ALCdevice11configValueIjEEN2al8optionalIT_EEPKcS6_(ptr noundef nonnull align 16 dereferenceable(101448), ptr noundef, ptr noundef) #4 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z4maxujj(i32 noundef, i32 noundef) #9

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_115InitHrtfPanningEP9ALCdevice(ptr noundef) #0

declare void @_ZN10DeviceBase11ProcessHrtfEm(ptr noundef nonnull align 16 dereferenceable(101152), i64 noundef) #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local i64 @_ZN9ALCdevice11configValueIiEEN2al8optionalIT_EEPKcS6_(ptr noundef nonnull align 16 dereferenceable(101448), ptr noundef, ptr noundef) #4 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt11make_uniqueI4bs2bJEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr.27") align 8) #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt10unique_ptrI4bs2bSt14default_deleteIS0_EEaSEOS3_(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 @_ZNSt10unique_ptrI4bs2bSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #2 align 2

declare void @_Z15bs2b_set_paramsP4bs2bii(ptr noundef, i32 noundef, i32 noundef) #6

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

declare void @_ZN10DeviceBase11ProcessBs2bEm(ptr noundef nonnull align 16 dereferenceable(101152), i64 noundef) #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt11make_uniqueI10UhjEncoderJEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr.11") align 8) #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt10unique_ptrI10UhjEncoderSt14default_deleteIS0_EEaSEOS3_(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 @_ZNSt10unique_ptrI10UhjEncoderSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_114InitUhjPanningEP9ALCdevice(ptr noundef) #0

declare void @_ZN10DeviceBase10ProcessUhjEm(ptr noundef nonnull align 16 dereferenceable(101152), i64 noundef) #6

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !10, i64 101016}
!12 = !{!"_ZTS10DeviceBase", !13, i64 0, !16, i64 1, !10, i64 4, !10, i64 8, !10, i64 12, !17, i64 16, !18, i64 17, !15, i64 18, !10, i64 20, !19, i64 24, !20, i64 28, !21, i64 29, !22, i64 32, !25, i64 64, !10, i64 72, !27, i64 76, !19, i64 80, !10, i64 84, !28, i64 88, !28, i64 96, !29, i64 112, !7, i64 76912, !7, i64 81008, !7, i64 85104, !7, i64 89456, !30, i64 100720, !34, i64 100744, !7, i64 100888, !37, i64 100904, !40, i64 101000, !46, i64 101008, !10, i64 101016, !47, i64 101024, !53, i64 101032, !59, i64 101040, !7, i64 101048, !65, i64 101064, !71, i64 101072, !19, i64 101080, !10, i64 101084, !77, i64 101088, !79, i64 101096, !81, i64 101104, !83, i64 101144}
!13 = !{!"_ZTSSt6atomicIbE", !14, i64 0}
!14 = !{!"_ZTSSt13__atomic_baseIbE", !15, i64 0}
!15 = !{!"bool", !7, i64 0}
!16 = !{!"_ZTS10DeviceType", !7, i64 0}
!17 = !{!"_ZTS14DevFmtChannels", !7, i64 0}
!18 = !{!"_ZTS10DevFmtType", !7, i64 0}
!19 = !{!"float", !7, i64 0}
!20 = !{!"_ZTS13DevAmbiLayout", !7, i64 0}
!21 = !{!"_ZTS14DevAmbiScaling", !7, i64 0}
!22 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !23, i64 0, !24, i64 8, !7, i64 16}
!23 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!24 = !{!"long", !7, i64 0}
!25 = !{!"_ZTSSt6bitsetILm5EE", !26, i64 0}
!26 = !{!"_ZTSSt12_Base_bitsetILm1EE", !24, i64 0}
!27 = !{!"_ZTS10RenderMode", !7, i64 0}
!28 = !{!"_ZTSNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEE", !24, i64 0}
!29 = !{!"_ZTSSt5arrayIS_IfLm1200EELm16EE", !7, i64 0}
!30 = !{!"_ZTSSt6vectorISt5arrayIfLm1024EEN2al9allocatorIS1_Lm16EEEE", !31, i64 0}
!31 = !{!"_ZTSSt12_Vector_baseISt5arrayIfLm1024EEN2al9allocatorIS1_Lm16EEEE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseISt5arrayIfLm1024EEN2al9allocatorIS1_Lm16EEEE12_Vector_implE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseISt5arrayIfLm1024EEN2al9allocatorIS1_Lm16EEEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!34 = !{!"_ZTS9MixParams", !35, i64 0, !36, i64 128}
!35 = !{!"_ZTSSt5arrayI15BFChannelConfigLm16EE", !7, i64 0}
!36 = !{!"_ZTSN2al4spanISt5arrayIfLm1024EELm18446744073709551615EEE", !6, i64 0, !6, i64 8}
!37 = !{!"_ZTS13RealMixParams", !38, i64 0, !39, i64 16, !36, i64 80}
!38 = !{!"_ZTSN2al4spanIK13InputRemixMapLm18446744073709551615EEE", !6, i64 0, !6, i64 8}
!39 = !{!"_ZTSSt5arrayIjLm16EE", !7, i64 0}
!40 = !{!"_ZTSSt10unique_ptrI15DirectHrtfStateSt14default_deleteIS0_EE", !41, i64 0}
!41 = !{!"_ZTSSt15__uniq_ptr_dataI15DirectHrtfStateSt14default_deleteIS0_ELb1ELb1EE", !42, i64 0}
!42 = !{!"_ZTSSt15__uniq_ptr_implI15DirectHrtfStateSt14default_deleteIS0_EE", !43, i64 0}
!43 = !{!"_ZTSSt5tupleIJP15DirectHrtfStateSt14default_deleteIS0_EEE", !44, i64 0}
!44 = !{!"_ZTSSt11_Tuple_implILm0EJP15DirectHrtfStateSt14default_deleteIS0_EEE", !45, i64 0}
!45 = !{!"_ZTSSt10_Head_baseILm0EP15DirectHrtfStateLb0EE", !6, i64 0}
!46 = !{!"_ZTSN2al13intrusive_ptrI9HrtfStoreEE", !6, i64 0}
!47 = !{!"_ZTSSt10unique_ptrI10UhjEncoderSt14default_deleteIS0_EE", !48, i64 0}
!48 = !{!"_ZTSSt15__uniq_ptr_dataI10UhjEncoderSt14default_deleteIS0_ELb1ELb1EE", !49, i64 0}
!49 = !{!"_ZTSSt15__uniq_ptr_implI10UhjEncoderSt14default_deleteIS0_EE", !50, i64 0}
!50 = !{!"_ZTSSt5tupleIJP10UhjEncoderSt14default_deleteIS0_EEE", !51, i64 0}
!51 = !{!"_ZTSSt11_Tuple_implILm0EJP10UhjEncoderSt14default_deleteIS0_EEE", !52, i64 0}
!52 = !{!"_ZTSSt10_Head_baseILm0EP10UhjEncoderLb0EE", !6, i64 0}
!53 = !{!"_ZTSSt10unique_ptrI10BFormatDecSt14default_deleteIS0_EE", !54, i64 0}
!54 = !{!"_ZTSSt15__uniq_ptr_dataI10BFormatDecSt14default_deleteIS0_ELb1ELb1EE", !55, i64 0}
!55 = !{!"_ZTSSt15__uniq_ptr_implI10BFormatDecSt14default_deleteIS0_EE", !56, i64 0}
!56 = !{!"_ZTSSt5tupleIJP10BFormatDecSt14default_deleteIS0_EEE", !57, i64 0}
!57 = !{!"_ZTSSt11_Tuple_implILm0EJP10BFormatDecSt14default_deleteIS0_EEE", !58, i64 0}
!58 = !{!"_ZTSSt10_Head_baseILm0EP10BFormatDecLb0EE", !6, i64 0}
!59 = !{!"_ZTSSt10unique_ptrI4bs2bSt14default_deleteIS0_EE", !60, i64 0}
!60 = !{!"_ZTSSt15__uniq_ptr_dataI4bs2bSt14default_deleteIS0_ELb1ELb1EE", !61, i64 0}
!61 = !{!"_ZTSSt15__uniq_ptr_implI4bs2bSt14default_deleteIS0_EE", !62, i64 0}
!62 = !{!"_ZTSSt5tupleIJP4bs2bSt14default_deleteIS0_EEE", !63, i64 0}
!63 = !{!"_ZTSSt11_Tuple_implILm0EJP4bs2bSt14default_deleteIS0_EEE", !64, i64 0}
!64 = !{!"_ZTSSt10_Head_baseILm0EP4bs2bLb0EE", !6, i64 0}
!65 = !{!"_ZTSSt10unique_ptrI10CompressorSt14default_deleteIS0_EE", !66, i64 0}
!66 = !{!"_ZTSSt15__uniq_ptr_dataI10CompressorSt14default_deleteIS0_ELb1ELb1EE", !67, i64 0}
!67 = !{!"_ZTSSt15__uniq_ptr_implI10CompressorSt14default_deleteIS0_EE", !68, i64 0}
!68 = !{!"_ZTSSt5tupleIJP10CompressorSt14default_deleteIS0_EEE", !69, i64 0}
!69 = !{!"_ZTSSt11_Tuple_implILm0EJP10CompressorSt14default_deleteIS0_EEE", !70, i64 0}
!70 = !{!"_ZTSSt10_Head_baseILm0EP10CompressorLb0EE", !6, i64 0}
!71 = !{!"_ZTSSt10unique_ptrI12DistanceCompSt14default_deleteIS0_EE", !72, i64 0}
!72 = !{!"_ZTSSt15__uniq_ptr_dataI12DistanceCompSt14default_deleteIS0_ELb1ELb1EE", !73, i64 0}
!73 = !{!"_ZTSSt15__uniq_ptr_implI12DistanceCompSt14default_deleteIS0_EE", !74, i64 0}
!74 = !{!"_ZTSSt5tupleIJP12DistanceCompSt14default_deleteIS0_EEE", !75, i64 0}
!75 = !{!"_ZTSSt11_Tuple_implILm0EJP12DistanceCompSt14default_deleteIS0_EEE", !76, i64 0}
!76 = !{!"_ZTSSt10_Head_baseILm0EP12DistanceCompLb0EE", !6, i64 0}
!77 = !{!"_ZTSSt6atomicIjE", !78, i64 0}
!78 = !{!"_ZTSSt13__atomic_baseIjE", !10, i64 0}
!79 = !{!"_ZTSSt6atomicIPN2al9FlexArrayIP11ContextBaseLm8EEEE", !80, i64 0}
!80 = !{!"_ZTSSt13__atomic_baseIPN2al9FlexArrayIP11ContextBaseLm8EEEE", !6, i64 0}
!81 = !{!"_ZTSSt5mutex", !82, i64 0}
!82 = !{!"_ZTSSt12__mutex_base", !7, i64 0}
!83 = !{!"_ZTSSt10unique_ptrI11BackendBaseSt14default_deleteIS0_EE", !84, i64 0}
!84 = !{!"_ZTSSt15__uniq_ptr_dataI11BackendBaseSt14default_deleteIS0_ELb1ELb1EE", !85, i64 0}
!85 = !{!"_ZTSSt15__uniq_ptr_implI11BackendBaseSt14default_deleteIS0_EE", !86, i64 0}
!86 = !{!"_ZTSSt5tupleIJP11BackendBaseSt14default_deleteIS0_EEE", !87, i64 0}
!87 = !{!"_ZTSSt11_Tuple_implILm0EJP11BackendBaseSt14default_deleteIS0_EEE", !88, i64 0}
!88 = !{!"_ZTSSt10_Head_baseILm0EP11BackendBaseLb0EE", !6, i64 0}
!89 = !{!12, !19, i64 24}
!90 = !{!12, !27, i64 76}
!91 = !{!12, !17, i64 16}
!92 = !{!15, !15, i64 0}
!93 = !{i8 0, i8 2}
!94 = !{}
!95 = !{!96, !10, i64 101240}
!96 = !{!"_ZTS9ALCdevice", !97, i64 0, !12, i64 16, !10, i64 101168, !10, i64 101172, !10, i64 101176, !10, i64 101180, !22, i64 101184, !98, i64 101216, !10, i64 101240, !10, i64 101244, !102, i64 101248, !81, i64 101256, !104, i64 101296, !81, i64 101320, !108, i64 101360, !81, i64 101384, !112, i64 101424}
!97 = !{!"_ZTSN2al13intrusive_refI9ALCdeviceEE", !77, i64 0}
!98 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN2al9allocatorIS5_Lm8EEEE", !99, i64 0}
!99 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN2al9allocatorIS5_Lm8EEEE", !100, i64 0}
!100 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN2al9allocatorIS5_Lm8EEEE12_Vector_implE", !101, i64 0}
!101 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN2al9allocatorIS5_Lm8EEEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!102 = !{!"_ZTSSt6atomicIiE", !103, i64 0}
!103 = !{!"_ZTSSt13__atomic_baseIiE", !10, i64 0}
!104 = !{!"_ZTSSt6vectorI13BufferSubListN2al9allocatorIS0_Lm8EEEE", !105, i64 0}
!105 = !{!"_ZTSSt12_Vector_baseI13BufferSubListN2al9allocatorIS0_Lm8EEEE", !106, i64 0}
!106 = !{!"_ZTSNSt12_Vector_baseI13BufferSubListN2al9allocatorIS0_Lm8EEEE12_Vector_implE", !107, i64 0}
!107 = !{!"_ZTSNSt12_Vector_baseI13BufferSubListN2al9allocatorIS0_Lm8EEEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!108 = !{!"_ZTSSt6vectorI13EffectSubListN2al9allocatorIS0_Lm8EEEE", !109, i64 0}
!109 = !{!"_ZTSSt12_Vector_baseI13EffectSubListN2al9allocatorIS0_Lm8EEEE", !110, i64 0}
!110 = !{!"_ZTSNSt12_Vector_baseI13EffectSubListN2al9allocatorIS0_Lm8EEEE12_Vector_implE", !111, i64 0}
!111 = !{!"_ZTSNSt12_Vector_baseI13EffectSubListN2al9allocatorIS0_Lm8EEEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!112 = !{!"_ZTSSt6vectorI13FilterSubListN2al9allocatorIS0_Lm8EEEE", !113, i64 0}
!113 = !{!"_ZTSSt12_Vector_baseI13FilterSubListN2al9allocatorIS0_Lm8EEEE", !114, i64 0}
!114 = !{!"_ZTSNSt12_Vector_baseI13FilterSubListN2al9allocatorIS0_Lm8EEEE12_Vector_implE", !115, i64 0}
!115 = !{!"_ZTSNSt12_Vector_baseI13FilterSubListN2al9allocatorIS0_Lm8EEEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!116 = !{!117, !7, i64 0}
!117 = !{!"_ZTSN12_GLOBAL__N_113DecoderConfigILNS_11DecoderModeE1ELm0EEE", !7, i64 0, !15, i64 1, !118, i64 8, !21, i64 24, !119, i64 32, !120, i64 48, !119, i64 64, !120, i64 80}
!118 = !{!"_ZTSN2al4spanIK7ChannelLm18446744073709551615EEE", !6, i64 0, !6, i64 8}
!119 = !{!"_ZTSN2al4spanIKfLm18446744073709551615EEE", !6, i64 0, !6, i64 8}
!120 = !{!"_ZTSN2al4spanIKSt5arrayIfLm16EELm18446744073709551615EEE", !6, i64 0, !6, i64 8}
!121 = !{!117, !15, i64 1}
!122 = !{!117, !21, i64 24}
!123 = !{!124, !6, i64 0}
!124 = !{!"_ZTSZ15aluInitRendererP9ALCdeviceiN2al8optionalIbEEE3$_0", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!125 = !{i64 0, i64 1, !126, i64 1, i64 1, !92, i64 8, i64 8, !5, i64 16, i64 8, !5, i64 24, i64 1, !127, i64 32, i64 8, !5, i64 40, i64 8, !5, i64 48, i64 8, !5, i64 56, i64 8, !5, i64 64, i64 8, !5, i64 72, i64 8, !5, i64 80, i64 8, !5, i64 88, i64 8, !5}
!126 = !{!7, !7, i64 0}
!127 = !{!21, !21, i64 0}
!128 = !{!19, !19, i64 0}
!129 = !{!12, !7, i64 101048}
!130 = !{!12, !15, i64 18}
!131 = !{!12, !16, i64 1}
!132 = !{!133, !133, i64 0}
!133 = !{!"_ZTS8LogLevel", !7, i64 0}
!134 = !{!12, !10, i64 4}
!135 = !{!136, !10, i64 8}
!136 = !{!"_ZTS9HrtfStore", !77, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.al::optional" = type { %"struct.al::optional_storage" }
%"struct.al::optional_storage" = type { %"struct.al::optstore_helper" }
%"struct.al::optstore_helper" = type { %"struct.al::optstore_base" }
%"struct.al::optstore_base" = type { i8, %union.anon }
%union.anon = type { i8 }
%"class.al::intrusive_ptr" = type { ptr }
%"class.std::unique_ptr.79" = type { %"struct.std::__uniq_ptr_data.80" }
%"struct.std::__uniq_ptr_data.80" = type { %"class.std::__uniq_ptr_impl.81" }
%"class.std::__uniq_ptr_impl.81" = type { %"class.std::tuple.82" }
%"class.std::tuple.82" = type { %"struct.std::_Tuple_impl.83" }
%"struct.std::_Tuple_impl.83" = type { %"struct.std::_Head_base.86" }
%"struct.std::_Head_base.86" = type { ptr }
%"struct.(anonymous namespace)::DecoderConfig" = type { i8, i8, %"class.al::span.87", i8, %"class.al::span.88", %"class.al::span.89", %"class.al::span.88", %"class.al::span.89" }
%"class.al::span.87" = type { ptr, ptr }
%"class.al::span.88" = type { ptr, ptr }
%"class.al::span.89" = type { ptr, ptr }
%class.anon = type { ptr, ptr, ptr, ptr }
%"class.al::optional.90" = type { %"struct.al::optional_storage.91" }
%"struct.al::optional_storage.91" = type { %"struct.al::optstore_helper.92" }
%"struct.al::optstore_helper.92" = type { %"struct.al::optstore_base.93" }
%"struct.al::optstore_base.93" = type { i8, %union.anon.94 }
%union.anon.94 = type { %"class.std::__cxx11::basic_string" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon.2 }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon.2 = type { i64, [8 x i8] }
%"class.al::span.95" = type { ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.al::optional.107" = type { %"struct.al::optional_storage.108" }
%"struct.al::optional_storage.108" = type { %"struct.al::optstore_helper.109" }
%"struct.al::optstore_helper.109" = type { %"struct.al::optstore_base.110" }
%"struct.al::optstore_base.110" = type { i8, %union.anon.111 }
%union.anon.111 = type { i32 }
%"class.al::optional.112" = type { %"struct.al::optional_storage.113" }
%"struct.al::optional_storage.113" = type { %"struct.al::optstore_helper.114" }
%"struct.al::optstore_helper.114" = type { %"struct.al::optstore_base.115" }
%"struct.al::optstore_base.115" = type { i8, %union.anon.116 }
%union.anon.116 = type { i32 }
%"class.std::unique_ptr.27" = type { %"struct.std::__uniq_ptr_data.28" }
%"struct.std::__uniq_ptr_data.28" = type { %"class.std::__uniq_ptr_impl.29" }
%"class.std::__uniq_ptr_impl.29" = type { %"class.std::tuple.30" }
%"class.std::tuple.30" = type { %"struct.std::_Tuple_impl.31" }
%"struct.std::_Tuple_impl.31" = type { %"struct.std::_Head_base.34" }
%"struct.std::_Head_base.34" = type { ptr }
%"class.std::unique_ptr.11" = type { %"struct.std::__uniq_ptr_data.12" }
%"struct.std::__uniq_ptr_data.12" = type { %"class.std::__uniq_ptr_impl.13" }
%"class.std::__uniq_ptr_impl.13" = type { %"class.std::tuple.14" }
%"class.std::tuple.14" = type { %"struct.std::_Tuple_impl.15" }
%"struct.std::_Tuple_impl.15" = type { %"struct.std::_Head_base.18" }
%"struct.std::_Head_base.18" = type { ptr }

@.str = external hidden unnamed_addr constant [5 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [5 x i8], align 1
@gLogLevel = external local_unnamed_addr global i32, align 4
@gLogFile = external local_unnamed_addr global ptr, align 8
@.str.11 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [32 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_Z15aluInitRendererP9ALCdeviceiN2al8optionalIbEE(ptr noundef %0, i32 noundef %1, i16 %2) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"class.al::optional", align 2
  %5 = alloca %"class.al::intrusive_ptr", align 8
  %6 = alloca %"class.al::intrusive_ptr", align 8
  %7 = alloca %"class.al::intrusive_ptr", align 8
  %8 = alloca %"class.std::unique_ptr.79", align 8
  %9 = alloca %"struct.(anonymous namespace)::DecoderConfig", align 8
  %10 = alloca [16 x float], align 16
  %11 = alloca %class.anon, align 8
  %12 = alloca %"class.al::optional.90", align 8
  %13 = alloca %"struct.(anonymous namespace)::DecoderConfig", align 8
  %14 = alloca %"class.al::span.95", align 8
  %15 = alloca %"class.al::optional.90", align 8
  %16 = alloca %"class.al::intrusive_ptr", align 8
  %17 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %18 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %19 = alloca %"class.al::intrusive_ptr", align 8
  %20 = alloca %"class.al::intrusive_ptr", align 8
  %21 = alloca %"class.al::optional.107", align 8
  %22 = alloca %"class.al::intrusive_ptr", align 8
  %23 = alloca %"class.al::optional.112", align 8
  %24 = alloca %"class.std::unique_ptr.27", align 8
  %25 = alloca %"struct.(anonymous namespace)::DecoderConfig", align 8
  %26 = alloca %"class.al::optional.90", align 8
  %27 = alloca %"class.std::unique_ptr.11", align 8
  %28 = alloca %"struct.(anonymous namespace)::DecoderConfig", align 8
  store i16 %2, ptr %4, align 2
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #10
  %29 = getelementptr inbounds i8, ptr %0, i64 101024
  call void @_ZN2al13intrusive_ptrI9HrtfStoreEC2EOS2_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %29) #10
  %30 = getelementptr inbounds i8, ptr %0, i64 101016
  %31 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt10unique_ptrI15DirectHrtfStateSt14default_deleteIS0_EEaSEDn(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr null) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #10
  call void @_ZN2al13intrusive_ptrI9HrtfStoreEC2EDn(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr null) #10
  %32 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN2al13intrusive_ptrI9HrtfStoreEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %6) #10
  call void @_ZN2al13intrusive_ptrI9HrtfStoreED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %6) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #10
  %33 = getelementptr inbounds i8, ptr %0, i64 101032
  store i32 0, ptr %33, align 8, !tbaa !5
  %34 = getelementptr inbounds i8, ptr %0, i64 101184
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5clearEv(ptr noundef nonnull align 8 dereferenceable(32) %34) #10
  %35 = getelementptr inbounds i8, ptr %0, i64 40
  store float 4.000000e+02, ptr %35, align 8, !tbaa !87
  %36 = getelementptr inbounds i8, ptr %0, i64 92
  store i8 0, ptr %36, align 4, !tbaa !88
  %37 = getelementptr inbounds i8, ptr %0, i64 32
  %38 = load i8, ptr %37, align 16, !tbaa !89
  %.not = icmp eq i8 %38, 1
  br i1 %.not, label %180, label %39

39:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #10
  call void @_ZN2al13intrusive_ptrI9HrtfStoreEC2EDn(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr null) #10
  %40 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN2al13intrusive_ptrI9HrtfStoreEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %7) #10
  call void @_ZN2al13intrusive_ptrI9HrtfStoreED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #10
  %41 = call noundef zeroext i1 @_ZNK2al8optionalIbEcvbEv(ptr noundef nonnull align 1 dereferenceable(2) %4) #10
  br i1 %41, label %42, label %48

42:                                               ; preds = %39
  %43 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNR2al8optionalIbE5valueEv(ptr noundef nonnull align 1 dereferenceable(2) %4)
  %44 = load i8, ptr %43, align 1, !tbaa !90, !range !91, !noundef !92
  %45 = trunc nuw i8 %44 to i1
  br i1 %45, label %46, label %48

46:                                               ; preds = %42
  %47 = getelementptr inbounds i8, ptr %0, i64 101240
  store i32 5, ptr %47, align 8, !tbaa !93
  br label %48

48:                                               ; preds = %46, %42, %39
  %49 = load i8, ptr %37, align 16, !tbaa !89
  switch i8 %49, label %54 [
    i8 2, label %50
    i8 3, label %51
    i8 4, label %52
    i8 5, label %53
  ]

50:                                               ; preds = %48
  br label %54

51:                                               ; preds = %48
  br label %54

52:                                               ; preds = %48
  br label %54

53:                                               ; preds = %48
  br label %54

54:                                               ; preds = %53, %52, %51, %50, %48
  %.not147 = phi i1 [ true, %48 ], [ false, %53 ], [ false, %52 ], [ false, %51 ], [ false, %50 ]
  %.0115 = phi ptr [ null, %48 ], [ @.str.3, %53 ], [ @.str.2, %52 ], [ @.str.1, %51 ], [ @.str, %50 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #10
  call void @_ZNSt10unique_ptrIN12_GLOBAL__N_113DecoderConfigILNS0_11DecoderModeE1ELm16EEESt14default_deleteIS3_EEC2IS5_vEEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #10
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %9) #10
  store i8 0, ptr %9, align 8, !tbaa !114
  %55 = getelementptr inbounds i8, ptr %9, i64 1
  store i8 0, ptr %55, align 1, !tbaa !119
  %56 = getelementptr inbounds i8, ptr %9, i64 8
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %56, i8 0, i64 16, i1 false)
  call void @_ZN2al4spanIK7ChannelLm18446744073709551615EEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %56) #10
  %57 = getelementptr inbounds i8, ptr %9, i64 24
  store i8 0, ptr %57, align 8, !tbaa !120
  %58 = getelementptr inbounds i8, ptr %9, i64 32
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %58, i8 0, i64 16, i1 false)
  call void @_ZN2al4spanIKfLm18446744073709551615EEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %58) #10
  %59 = getelementptr inbounds i8, ptr %9, i64 48
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %59, i8 0, i64 16, i1 false)
  call void @_ZN2al4spanIKSt5arrayIfLm16EELm18446744073709551615EEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %59) #10
  %60 = getelementptr inbounds i8, ptr %9, i64 64
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %60, i8 0, i64 16, i1 false)
  call void @_ZN2al4spanIKfLm18446744073709551615EEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %60) #10
  %61 = getelementptr inbounds i8, ptr %9, i64 80
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %61, i8 0, i64 16, i1 false)
  call void @_ZN2al4spanIKSt5arrayIfLm16EELm18446744073709551615EEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %61) #10
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %10) #10
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %10, i8 0, i64 64, i1 false)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #10
  store ptr %0, ptr %11, align 8, !tbaa !121
  %62 = getelementptr inbounds i8, ptr %11, i64 8
  store ptr %8, ptr %62, align 8, !tbaa !123
  %63 = getelementptr inbounds i8, ptr %11, i64 16
  store ptr %9, ptr %63, align 8, !tbaa !123
  %64 = getelementptr inbounds i8, ptr %11, i64 24
  store ptr %10, ptr %64, align 8, !tbaa !123
  br i1 %.not147, label %77, label %65

65:                                               ; preds = %54
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %12) #10
  invoke void @_ZN9ALCdevice11configValueINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEN2al8optionalIT_EEPKcSC_(ptr dead_on_unwind nonnull writable sret(%"class.al::optional.90") align 8 %12, ptr noundef nonnull align 16 dereferenceable(101448) %0, ptr noundef nonnull @.str.4, ptr noundef %.0115)
          to label %66 unwind label %71

66:                                               ; preds = %65
  %67 = call noundef zeroext i1 @_ZNK2al8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEcvbEv(ptr noundef nonnull align 8 dereferenceable(40) %12) #10
  br i1 %67, label %68, label %75

68:                                               ; preds = %66
  %69 = call noundef ptr @_ZN2al8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEptEv(ptr noundef nonnull align 8 dereferenceable(40) %12)
  %70 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %69) #10
  invoke void @"_ZZ15aluInitRendererP9ALCdeviceiN2al8optionalIbEEENK3$_0clEPKc"(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef %70)
          to label %75 unwind label %73

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

73:                                               ; preds = %68
  %74 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN2al8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %12) #10
  br label %76

75:                                               ; preds = %68, %66
  call void @_ZN2al8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %12) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %12) #10
  br label %77

76:                                               ; preds = %73, %71
  %.pn148 = phi { ptr, i32 } [ %74, %73 ], [ %72, %71 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %12) #10
  br label %179

77:                                               ; preds = %75, %54
  %78 = getelementptr inbounds i8, ptr %0, i64 100936
  %79 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIjLm16EEixEm(ptr noundef nonnull align 4 dereferenceable(64) %78, i64 noundef 2) #10
  %80 = load i32, ptr %79, align 4, !tbaa !124
  %.not150 = icmp eq i32 %80, -1
  br i1 %.not150, label %89, label %81

81:                                               ; preds = %77
  %82 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIjLm16EEixEm(ptr noundef nonnull align 4 dereferenceable(64) %78, i64 noundef 0) #10
  %83 = load i32, ptr %82, align 4, !tbaa !124
  %.not151 = icmp eq i32 %83, -1
  br i1 %.not151, label %89, label %84

84:                                               ; preds = %81
  %85 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIjLm16EEixEm(ptr noundef nonnull align 4 dereferenceable(64) %78, i64 noundef 1) #10
  %86 = load i32, ptr %85, align 4, !tbaa !124
  %.not152 = icmp eq i32 %86, -1
  br i1 %.not152, label %89, label %87

87:                                               ; preds = %84
  %88 = invoke noundef zeroext i1 @_ZN9ALCdevice18getConfigValueBoolEPKcS1_i(ptr noundef nonnull align 16 dereferenceable(101448) %0, ptr noundef null, ptr noundef nonnull @.str.5, i32 noundef 0)
          to label %89 unwind label %143

89:                                               ; preds = %87, %84, %81, %77
  %90 = phi i1 [ false, %84 ], [ false, %81 ], [ false, %77 ], [ %88, %87 ]
  %91 = invoke noundef zeroext i1 @_ZN9ALCdevice18getConfigValueBoolEPKcS1_i(ptr noundef nonnull align 16 dereferenceable(101448) %0, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.6, i32 noundef 1)
          to label %92 unwind label %145

92:                                               ; preds = %89
  invoke void @_ZN12_GLOBAL__N_111InitPanningEP9ALCdevicebbNS_13DecoderConfigILNS_11DecoderModeE1ELm0EEE(ptr noundef nonnull %0, i1 noundef zeroext %91, i1 noundef zeroext %90, ptr noundef nonnull byval(%"struct.(anonymous namespace)::DecoderConfig") align 8 %9)
          to label %93 unwind label %145

93:                                               ; preds = %92
  %94 = load i8, ptr %9, align 8, !tbaa !114
  %.not153 = icmp eq i8 %94, 0
  br i1 %.not153, label %172, label %.preheader.preheader

.preheader.preheader:                             ; preds = %93
  %95 = load float, ptr %10, align 16, !tbaa !125
  %96 = fcmp ogt float %95, 0.000000e+00
  %.1119 = select i1 %96, float 1.000000e+00, float 0.000000e+00
  %.0120.ptr.1 = getelementptr inbounds i8, ptr %10, i64 4
  %97 = load float, ptr %.0120.ptr.1, align 4, !tbaa !125
  %98 = fcmp ogt float %97, 0.000000e+00
  %99 = fadd float %.1119, 1.000000e+00
  %.1119.1 = select i1 %98, float %99, float %.1119
  %.0120.ptr.2 = getelementptr inbounds i8, ptr %10, i64 8
  %100 = load float, ptr %.0120.ptr.2, align 8, !tbaa !125
  %101 = fcmp ogt float %100, 0.000000e+00
  %102 = fadd float %.1119.1, 1.000000e+00
  %.1119.2 = select i1 %101, float %102, float %.1119.1
  %.0120.ptr.3 = getelementptr inbounds i8, ptr %10, i64 12
  %103 = load float, ptr %.0120.ptr.3, align 4, !tbaa !125
  %104 = fcmp ogt float %103, 0.000000e+00
  %105 = fadd float %.1119.2, 1.000000e+00
  %.1119.3 = select i1 %104, float %105, float %.1119.2
  %.0120.ptr.4 = getelementptr inbounds i8, ptr %10, i64 16
  %106 = load float, ptr %.0120.ptr.4, align 16, !tbaa !125
  %107 = fcmp ogt float %106, 0.000000e+00
  %108 = fadd float %.1119.3, 1.000000e+00
  %.1119.4 = select i1 %107, float %108, float %.1119.3
  %.0120.ptr.5 = getelementptr inbounds i8, ptr %10, i64 20
  %109 = load float, ptr %.0120.ptr.5, align 4, !tbaa !125
  %110 = fcmp ogt float %109, 0.000000e+00
  %111 = fadd float %.1119.4, 1.000000e+00
  %.1119.5 = select i1 %110, float %111, float %.1119.4
  %.0120.ptr.6 = getelementptr inbounds i8, ptr %10, i64 24
  %112 = load float, ptr %.0120.ptr.6, align 8, !tbaa !125
  %113 = fcmp ogt float %112, 0.000000e+00
  %114 = fadd float %.1119.5, 1.000000e+00
  %.1119.6 = select i1 %113, float %114, float %.1119.5
  %.0120.ptr.7 = getelementptr inbounds i8, ptr %10, i64 28
  %115 = load float, ptr %.0120.ptr.7, align 4, !tbaa !125
  %116 = fcmp ogt float %115, 0.000000e+00
  %117 = fadd float %.1119.6, 1.000000e+00
  %.1119.7 = select i1 %116, float %117, float %.1119.6
  %.0120.ptr.8 = getelementptr inbounds i8, ptr %10, i64 32
  %118 = load float, ptr %.0120.ptr.8, align 16, !tbaa !125
  %119 = fcmp ogt float %118, 0.000000e+00
  %120 = fadd float %.1119.7, 1.000000e+00
  %.1119.8 = select i1 %119, float %120, float %.1119.7
  %.0120.ptr.9 = getelementptr inbounds i8, ptr %10, i64 36
  %121 = load float, ptr %.0120.ptr.9, align 4, !tbaa !125
  %122 = fcmp ogt float %121, 0.000000e+00
  %123 = fadd float %.1119.8, 1.000000e+00
  %.1119.9 = select i1 %122, float %123, float %.1119.8
  %.0120.ptr.10 = getelementptr inbounds i8, ptr %10, i64 40
  %124 = load float, ptr %.0120.ptr.10, align 8, !tbaa !125
  %125 = fcmp ogt float %124, 0.000000e+00
  %126 = fadd float %.1119.9, 1.000000e+00
  %.1119.10 = select i1 %125, float %126, float %.1119.9
  %.0120.ptr.11 = getelementptr inbounds i8, ptr %10, i64 44
  %127 = load float, ptr %.0120.ptr.11, align 4, !tbaa !125
  %128 = fcmp ogt float %127, 0.000000e+00
  %129 = fadd float %.1119.10, 1.000000e+00
  %.1119.11 = select i1 %128, float %129, float %.1119.10
  %.0120.ptr.12 = getelementptr inbounds i8, ptr %10, i64 48
  %130 = load float, ptr %.0120.ptr.12, align 16, !tbaa !125
  %131 = fcmp ogt float %130, 0.000000e+00
  %132 = fadd float %.1119.11, 1.000000e+00
  %.1119.12 = select i1 %131, float %132, float %.1119.11
  %.0120.ptr.13 = getelementptr inbounds i8, ptr %10, i64 52
  %133 = load float, ptr %.0120.ptr.13, align 4, !tbaa !125
  %134 = fcmp ogt float %133, 0.000000e+00
  %135 = fadd float %.1119.12, 1.000000e+00
  %.1119.13 = select i1 %134, float %135, float %.1119.12
  %.0120.ptr.14 = getelementptr inbounds i8, ptr %10, i64 56
  %136 = load float, ptr %.0120.ptr.14, align 8, !tbaa !125
  %137 = fcmp ogt float %136, 0.000000e+00
  %138 = fadd float %.1119.13, 1.000000e+00
  %.1119.14 = select i1 %137, float %138, float %.1119.13
  %.0120.ptr.15 = getelementptr inbounds i8, ptr %10, i64 60
  %139 = load float, ptr %.0120.ptr.15, align 4, !tbaa !125
  %140 = fcmp ogt float %139, 0.000000e+00
  %141 = fadd float %.1119.14, 1.000000e+00
  %.1119.15 = select i1 %140, float %141, float %.1119.14
  %142 = fcmp ogt float %.1119.15, 0.000000e+00
  br i1 %142, label %147, label %172

143:                                              ; preds = %87
  %144 = landingpad { ptr, i32 }
          cleanup
  br label %179

145:                                              ; preds = %92, %89
  %146 = landingpad { ptr, i32 }
          cleanup
  br label %179

147:                                              ; preds = %.preheader.preheader
  %148 = fadd float %95, 0.000000e+00
  %.1117 = select i1 %96, float %148, float 0.000000e+00
  %149 = fadd float %.1117, %97
  %.1117.1 = select i1 %98, float %149, float %.1117
  %150 = fadd float %.1117.1, %100
  %.1117.2 = select i1 %101, float %150, float %.1117.1
  %151 = fadd float %.1117.2, %103
  %.1117.3 = select i1 %104, float %151, float %.1117.2
  %152 = fadd float %.1117.3, %106
  %.1117.4 = select i1 %107, float %152, float %.1117.3
  %153 = fadd float %.1117.4, %109
  %.1117.5 = select i1 %110, float %153, float %.1117.4
  %154 = fadd float %.1117.5, %112
  %.1117.6 = select i1 %113, float %154, float %.1117.5
  %155 = fadd float %.1117.6, %115
  %.1117.7 = select i1 %116, float %155, float %.1117.6
  %156 = fadd float %.1117.7, %118
  %.1117.8 = select i1 %119, float %156, float %.1117.7
  %157 = fadd float %.1117.8, %121
  %.1117.9 = select i1 %122, float %157, float %.1117.8
  %158 = fadd float %.1117.9, %124
  %.1117.10 = select i1 %125, float %158, float %.1117.9
  %159 = fadd float %.1117.10, %127
  %.1117.11 = select i1 %128, float %159, float %.1117.10
  %160 = fadd float %.1117.11, %130
  %.1117.12 = select i1 %131, float %160, float %.1117.11
  %161 = fadd float %.1117.12, %133
  %.1117.13 = select i1 %134, float %161, float %.1117.12
  %162 = fadd float %.1117.13, %136
  %.1117.14 = select i1 %137, float %162, float %.1117.13
  %163 = fadd float %.1117.14, %139
  %.1117.15 = select i1 %140, float %163, float %.1117.14
  %164 = fdiv float %.1117.15, %.1119.15
  %165 = zext i8 %94 to i32
  %166 = load i8, ptr %55, align 1, !tbaa !119, !range !91, !noundef !92
  %167 = trunc nuw i8 %166 to i1
  invoke void @_ZN12_GLOBAL__N_117InitNearFieldCtrlEP9ALCdevicefjb(ptr noundef nonnull %0, float noundef %164, i32 noundef %165, i1 noundef zeroext %167)
          to label %168 unwind label %170

168:                                              ; preds = %147
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(96) %13, ptr noundef nonnull align 8 dereferenceable(96) %9, i64 96, i1 false), !tbaa.struct !126
  call void @_ZN2al4spanIKfLm16EEC2ERA16_S1_(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 4 dereferenceable(64) %10) #10
  %169 = load ptr, ptr %14, align 8
  invoke void @_ZN12_GLOBAL__N_116InitDistanceCompEP9ALCdeviceNS_13DecoderConfigILNS_11DecoderModeE1ELm0EEEN2al4spanIKfLm16EEE(ptr noundef nonnull %0, ptr noundef nonnull byval(%"struct.(anonymous namespace)::DecoderConfig") align 8 %13, ptr %169)
          to label %172 unwind label %170

170:                                              ; preds = %168, %147
  %171 = landingpad { ptr, i32 }
          cleanup
  br label %179

172:                                              ; preds = %.preheader.preheader, %168, %93
  %173 = getelementptr inbounds i8, ptr %0, i64 101048
  %174 = call noundef ptr @_ZNKSt10unique_ptrI10BFormatDecSt14default_deleteIS0_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %173) #10
  %.not160 = icmp eq ptr %174, null
  br i1 %.not160, label %178, label %175

175:                                              ; preds = %172
  %176 = call noundef zeroext i1 @_ZNK10BFormatDec12hasStablizerEv(ptr noundef nonnull align 16 dereferenceable(8360) %174) #10
  %177 = getelementptr inbounds i8, ptr %0, i64 101064
  %.elt = select i1 %176, i64 ptrtoint (ptr @_ZN10DeviceBase23ProcessAmbiDecStablizedEm to i64), i64 ptrtoint (ptr @_ZN10DeviceBase14ProcessAmbiDecEm to i64)
  store i64 %.elt, ptr %177, align 8, !tbaa !129
  %.repack161 = getelementptr inbounds i8, ptr %0, i64 101072
  store i64 0, ptr %.repack161, align 8, !tbaa !129
  br label %178

178:                                              ; preds = %175, %172
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #10
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %10) #10
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %9) #10
  call void @_ZNSt10unique_ptrIN12_GLOBAL__N_113DecoderConfigILNS0_11DecoderModeE1ELm16EEESt14default_deleteIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #10
  br label %393

179:                                              ; preds = %143, %170, %145, %76
  %.pn155.pn.pn = phi { ptr, i32 } [ %.pn148, %76 ], [ %144, %143 ], [ %171, %170 ], [ %146, %145 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #10
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %10) #10
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %9) #10
  call void @_ZNSt10unique_ptrIN12_GLOBAL__N_113DecoderConfigILNS0_11DecoderModeE1ELm16EEESt14default_deleteIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #10
  br label %394

180:                                              ; preds = %3
  %181 = getelementptr inbounds i8, ptr %0, i64 34
  %182 = load i8, ptr %181, align 2, !tbaa !130, !range !91, !noundef !92
  %183 = getelementptr inbounds i8, ptr %0, i64 17
  %184 = load i8, ptr %183, align 1, !tbaa !131
  %.not130 = icmp eq i8 %184, 2
  br i1 %.not130, label %206, label %185

185:                                              ; preds = %180
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %15) #10
  invoke void @_ZN9ALCdevice11configValueINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEN2al8optionalIT_EEPKcSC_(ptr dead_on_unwind nonnull writable sret(%"class.al::optional.90") align 8 %15, ptr noundef nonnull align 16 dereferenceable(101448) %0, ptr noundef null, ptr noundef nonnull @.str.7)
          to label %186 unwind label %193

186:                                              ; preds = %185
  %187 = call noundef zeroext i1 @_ZNK2al8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEcvbEv(ptr noundef nonnull align 8 dereferenceable(40) %15) #10
  br i1 %187, label %188, label %205

188:                                              ; preds = %186
  %189 = call noundef ptr @_ZN2al8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEptEv(ptr noundef nonnull align 8 dereferenceable(40) %15)
  %190 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %189) #10
  %191 = call noundef i32 @_ZN2al10strcasecmpEPKcS1_(ptr noundef %190, ptr noundef nonnull @.str.8) #10
  %192 = icmp eq i32 %191, 0
  br i1 %192, label %205, label %195

193:                                              ; preds = %185
  %194 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %15) #10
  br label %394

195:                                              ; preds = %188
  %196 = call noundef i32 @_ZN2al10strcasecmpEPKcS1_(ptr noundef %190, ptr noundef nonnull @.str.9) #10
  %197 = icmp eq i32 %196, 0
  br i1 %197, label %205, label %198

198:                                              ; preds = %195
  %199 = call noundef i32 @_ZN2al10strcasecmpEPKcS1_(ptr noundef %190, ptr noundef nonnull @.str.10) #10
  %.not131 = icmp ne i32 %199, 0
  %200 = load i32, ptr @gLogLevel, align 4
  %201 = icmp sgt i32 %200, 0
  %or.cond = select i1 %.not131, i1 %201, i1 false
  br i1 %or.cond, label %202, label %205, !prof !132

202:                                              ; preds = %198
  %203 = load ptr, ptr @gLogFile, align 8, !tbaa !123
  %204 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %203, ptr noundef nonnull @.str.11, ptr noundef %190) #10
  br label %205

205:                                              ; preds = %198, %202, %188, %195, %186
  %.1122 = phi i8 [ %182, %186 ], [ %182, %202 ], [ %182, %198 ], [ 1, %188 ], [ 0, %195 ]
  call void @_ZN2al8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %15) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %15) #10
  br label %206

206:                                              ; preds = %205, %180
  %.2123 = phi i8 [ %.1122, %205 ], [ %182, %180 ]
  %207 = call noundef zeroext i1 @_ZNK2al8optionalIbEcvbEv(ptr noundef nonnull align 1 dereferenceable(2) %4) #10
  br i1 %207, label %210, label %208

208:                                              ; preds = %206
  %209 = trunc nuw i8 %.2123 to i1
  br i1 %209, label %216, label %210

210:                                              ; preds = %208, %206
  %211 = call noundef zeroext i1 @_ZNK2al8optionalIbEcvbEv(ptr noundef nonnull align 1 dereferenceable(2) %4) #10
  br i1 %211, label %212, label %297

212:                                              ; preds = %210
  %213 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNR2al8optionalIbE5valueEv(ptr noundef nonnull align 1 dereferenceable(2) %4)
  %214 = load i8, ptr %213, align 1, !tbaa !90, !range !91, !noundef !92
  %215 = trunc nuw i8 %214 to i1
  br i1 %215, label %216, label %297

216:                                              ; preds = %212, %208
  %217 = getelementptr inbounds i8, ptr %0, i64 101216
  %218 = call noundef zeroext i1 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN2al9allocatorIS5_Lm8EEEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %217) #10
  br i1 %218, label %219, label %222

219:                                              ; preds = %216
  invoke void @_ZN9ALCdevice14enumerateHrtfsEv(ptr noundef nonnull align 16 dereferenceable(101448) %0)
          to label %222 unwind label %220

220:                                              ; preds = %383, %374, %219
  %221 = landingpad { ptr, i32 }
          cleanup
  br label %394

222:                                              ; preds = %219, %216
  %223 = icmp sgt i32 %1, -1
  br i1 %223, label %224, label %243

224:                                              ; preds = %222
  %225 = zext nneg i32 %1 to i64
  %226 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN2al9allocatorIS5_Lm8EEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %217) #10
  %227 = icmp ugt i64 %226, %225
  br i1 %227, label %228, label %243

228:                                              ; preds = %224
  %229 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN2al9allocatorIS5_Lm8EEEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %217, i64 noundef %225) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #10
  %230 = getelementptr inbounds i8, ptr %0, i64 20
  %231 = load i32, ptr %230, align 4, !tbaa !133
  invoke void @_Z13GetLoadedHrtfRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj(ptr dead_on_unwind nonnull writable sret(%"class.al::intrusive_ptr") align 8 %16, ptr noundef nonnull align 8 dereferenceable(32) %229, i32 noundef %231)
          to label %232 unwind label %237

232:                                              ; preds = %228
  %233 = call noundef zeroext i1 @_ZNK2al13intrusive_ptrI9HrtfStoreEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #10
  br i1 %233, label %234, label %241

234:                                              ; preds = %232
  %235 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN2al13intrusive_ptrI9HrtfStoreEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %16) #10
  %236 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull align 8 dereferenceable(32) %229)
          to label %241 unwind label %239

237:                                              ; preds = %228
  %238 = landingpad { ptr, i32 }
          cleanup
  br label %242

239:                                              ; preds = %234
  %240 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN2al13intrusive_ptrI9HrtfStoreED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #10
  br label %242

241:                                              ; preds = %234, %232
  call void @_ZN2al13intrusive_ptrI9HrtfStoreED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #10
  br label %243

242:                                              ; preds = %239, %237
  %.pn = phi { ptr, i32 } [ %240, %239 ], [ %238, %237 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #10
  br label %394

243:                                              ; preds = %241, %224, %222
  %244 = call noundef zeroext i1 @_ZNK2al13intrusive_ptrI9HrtfStoreEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %29) #10
  br i1 %244, label %267, label %245

245:                                              ; preds = %243
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #10
  %246 = call ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN2al9allocatorIS5_Lm8EEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %217) #10
  store ptr %246, ptr %17, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #10
  %247 = call ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN2al9allocatorIS5_Lm8EEEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %217) #10
  store ptr %247, ptr %18, align 8
  %248 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_N2al9allocatorIS6_Lm8EEEEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %18) #10
  br i1 %248, label %.lr.ph, label %.loopexit

.lr.ph:                                           ; preds = %245
  %249 = getelementptr inbounds i8, ptr %0, i64 20
  br label %250

250:                                              ; preds = %.lr.ph, %263
  %251 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_N2al9allocatorIS6_Lm8EEEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %17) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #10
  %252 = load i32, ptr %249, align 4, !tbaa !133
  invoke void @_Z13GetLoadedHrtfRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj(ptr dead_on_unwind nonnull writable sret(%"class.al::intrusive_ptr") align 8 %19, ptr noundef nonnull align 8 dereferenceable(32) %251, i32 noundef %252)
          to label %253 unwind label %258

253:                                              ; preds = %250
  %254 = call noundef zeroext i1 @_ZNK2al13intrusive_ptrI9HrtfStoreEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #10
  br i1 %254, label %255, label %263

255:                                              ; preds = %253
  %256 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN2al13intrusive_ptrI9HrtfStoreEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %19) #10
  %257 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull align 8 dereferenceable(32) %251)
          to label %262 unwind label %260

258:                                              ; preds = %250
  %259 = landingpad { ptr, i32 }
          cleanup
  br label %266

260:                                              ; preds = %255
  %261 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN2al13intrusive_ptrI9HrtfStoreED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #10
  br label %266

262:                                              ; preds = %255
  call void @_ZN2al13intrusive_ptrI9HrtfStoreED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #10
  br label %.loopexit

263:                                              ; preds = %253
  call void @_ZN2al13intrusive_ptrI9HrtfStoreED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #10
  %264 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_N2al9allocatorIS6_Lm8EEEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %17) #10
  %265 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_N2al9allocatorIS6_Lm8EEEEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %18) #10
  br i1 %265, label %250, label %.loopexit

266:                                              ; preds = %260, %258
  %.pn133 = phi { ptr, i32 } [ %261, %260 ], [ %259, %258 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #10
  br label %394

.loopexit:                                        ; preds = %263, %245, %262
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #10
  br label %267

267:                                              ; preds = %.loopexit, %243
  %268 = call noundef zeroext i1 @_ZNK2al13intrusive_ptrI9HrtfStoreEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %29) #10
  br i1 %268, label %269, label %297

269:                                              ; preds = %267
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #10
  call void @_ZN2al13intrusive_ptrI9HrtfStoreEC2EDn(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr null) #10
  %270 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN2al13intrusive_ptrI9HrtfStoreEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %20) #10
  call void @_ZN2al13intrusive_ptrI9HrtfStoreED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #10
  %271 = call noundef ptr @_ZNK2al13intrusive_ptrI9HrtfStoreE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %29) #10
  %272 = getelementptr inbounds i8, ptr %271, i64 8
  %273 = load i32, ptr %272, align 8, !tbaa !134
  store i32 %273, ptr %33, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #10
  %274 = invoke i64 @_ZN9ALCdevice11configValueIjEEN2al8optionalIT_EEPKcS6_(ptr noundef nonnull align 16 dereferenceable(101448) %0, ptr noundef null, ptr noundef nonnull @.str.12)
          to label %275 unwind label %289

275:                                              ; preds = %269
  store i64 %274, ptr %21, align 8
  %276 = call noundef zeroext i1 @_ZNK2al8optionalIjEcvbEv(ptr noundef nonnull align 4 dereferenceable(8) %21) #10
  br i1 %276, label %277, label %291

277:                                              ; preds = %275
  %278 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNR2al8optionalIjEdeEv(ptr noundef nonnull align 4 dereferenceable(8) %21)
  %279 = load i32, ptr %278, align 4, !tbaa !124
  %.not142 = icmp eq i32 %279, 0
  br i1 %.not142, label %291, label %280

280:                                              ; preds = %277
  %281 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNR2al8optionalIjEdeEv(ptr noundef nonnull align 4 dereferenceable(8) %21)
  %282 = load i32, ptr %281, align 4, !tbaa !124
  %283 = load i32, ptr %33, align 8, !tbaa !5
  %284 = icmp ult i32 %282, %283
  br i1 %284, label %285, label %291

285:                                              ; preds = %280
  %286 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNR2al8optionalIjEdeEv(ptr noundef nonnull align 4 dereferenceable(8) %21)
  %287 = load i32, ptr %286, align 4, !tbaa !124
  %288 = call noundef i32 @_Z4maxujj(i32 noundef %287, i32 noundef 8) #10
  store i32 %288, ptr %33, align 8, !tbaa !5
  br label %291

289:                                              ; preds = %269
  %290 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #10
  br label %394

291:                                              ; preds = %277, %280, %285, %275
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #10
  invoke void @_ZN12_GLOBAL__N_115InitHrtfPanningEP9ALCdevice(ptr noundef nonnull %0)
          to label %292 unwind label %295

292:                                              ; preds = %291
  %293 = getelementptr inbounds i8, ptr %0, i64 101064
  store i64 ptrtoint (ptr @_ZN10DeviceBase11ProcessHrtfEm to i64), ptr %293, align 8, !tbaa !129
  %.repack146 = getelementptr inbounds i8, ptr %0, i64 101072
  store i64 0, ptr %.repack146, align 8, !tbaa !129
  %294 = getelementptr inbounds i8, ptr %0, i64 101240
  store i32 1, ptr %294, align 8, !tbaa !93
  br label %393

295:                                              ; preds = %291
  %296 = landingpad { ptr, i32 }
          cleanup
  br label %394

297:                                              ; preds = %267, %212, %210
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #10
  call void @_ZN2al13intrusive_ptrI9HrtfStoreEC2EDn(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr null) #10
  %298 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN2al13intrusive_ptrI9HrtfStoreEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %22) #10
  call void @_ZN2al13intrusive_ptrI9HrtfStoreED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #10
  store i8 1, ptr %36, align 4, !tbaa !88
  %299 = load i8, ptr %183, align 1, !tbaa !131
  %.not135 = icmp eq i8 %299, 2
  br i1 %.not135, label %342, label %300

300:                                              ; preds = %297
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #10
  %301 = invoke i64 @_ZN9ALCdevice11configValueIiEEN2al8optionalIT_EEPKcS6_(ptr noundef nonnull align 16 dereferenceable(101448) %0, ptr noundef null, ptr noundef nonnull @.str.13)
          to label %302 unwind label %327

302:                                              ; preds = %300
  store i64 %301, ptr %23, align 8
  %303 = call noundef zeroext i1 @_ZNK2al8optionalIiEcvbEv(ptr noundef nonnull align 4 dereferenceable(8) %23) #10
  br i1 %303, label %304, label %340

304:                                              ; preds = %302
  %305 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNR2al8optionalIiEdeEv(ptr noundef nonnull align 4 dereferenceable(8) %23)
  %306 = load i32, ptr %305, align 4, !tbaa !124
  %307 = icmp sgt i32 %306, 0
  br i1 %307, label %308, label %340

308:                                              ; preds = %304
  %309 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNR2al8optionalIiEdeEv(ptr noundef nonnull align 4 dereferenceable(8) %23)
  %310 = load i32, ptr %309, align 4, !tbaa !124
  %311 = icmp slt i32 %310, 7
  br i1 %311, label %312, label %340

312:                                              ; preds = %308
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #10
  invoke void @_ZSt11make_uniqueI4bs2bJEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.27") align 8 %24)
          to label %313 unwind label %329

313:                                              ; preds = %312
  %314 = getelementptr inbounds i8, ptr %0, i64 101056
  %315 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt10unique_ptrI4bs2bSt14default_deleteIS0_EEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(8) %314, ptr noundef nonnull align 8 dereferenceable(8) %24) #10
  call void @_ZNSt10unique_ptrI4bs2bSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #10
  %316 = call noundef ptr @_ZNKSt10unique_ptrI4bs2bSt14default_deleteIS0_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %314) #10
  %317 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNR2al8optionalIiEdeEv(ptr noundef nonnull align 4 dereferenceable(8) %23)
  %318 = load i32, ptr %317, align 4, !tbaa !124
  %319 = getelementptr inbounds i8, ptr %0, i64 20
  %320 = load i32, ptr %319, align 4, !tbaa !133
  invoke void @_Z15bs2b_set_paramsP4bs2bii(ptr noundef %316, i32 noundef %318, i32 noundef %320)
          to label %321 unwind label %327

321:                                              ; preds = %313
  %322 = load i32, ptr @gLogLevel, align 4, !tbaa !136
  %323 = icmp sgt i32 %322, 2
  br i1 %323, label %324, label %331, !prof !138

324:                                              ; preds = %321
  %325 = load ptr, ptr @gLogFile, align 8, !tbaa !123
  %326 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %325, ptr noundef nonnull @.str.14) #10
  br label %331

327:                                              ; preds = %331, %313, %300
  %328 = landingpad { ptr, i32 }
          cleanup
  br label %341

329:                                              ; preds = %312
  %330 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #10
  br label %341

331:                                              ; preds = %324, %321
  store i8 0, ptr %25, align 8, !tbaa !114
  %332 = getelementptr inbounds i8, ptr %25, i64 1
  store i8 0, ptr %332, align 1, !tbaa !119
  %333 = getelementptr inbounds i8, ptr %25, i64 8
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %333, i8 0, i64 16, i1 false)
  call void @_ZN2al4spanIK7ChannelLm18446744073709551615EEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %333) #10
  %334 = getelementptr inbounds i8, ptr %25, i64 24
  store i8 0, ptr %334, align 8, !tbaa !120
  %335 = getelementptr inbounds i8, ptr %25, i64 32
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %335, i8 0, i64 16, i1 false)
  call void @_ZN2al4spanIKfLm18446744073709551615EEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %335) #10
  %336 = getelementptr inbounds i8, ptr %25, i64 48
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %336, i8 0, i64 16, i1 false)
  call void @_ZN2al4spanIKSt5arrayIfLm16EELm18446744073709551615EEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %336) #10
  %337 = getelementptr inbounds i8, ptr %25, i64 64
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %337, i8 0, i64 16, i1 false)
  call void @_ZN2al4spanIKfLm18446744073709551615EEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %337) #10
  %338 = getelementptr inbounds i8, ptr %25, i64 80
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %338, i8 0, i64 16, i1 false)
  call void @_ZN2al4spanIKSt5arrayIfLm16EELm18446744073709551615EEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %338) #10
  invoke void @_ZN12_GLOBAL__N_111InitPanningEP9ALCdevicebbNS_13DecoderConfigILNS_11DecoderModeE1ELm0EEE(ptr noundef nonnull %0, i1 noundef zeroext false, i1 noundef zeroext false, ptr noundef nonnull byval(%"struct.(anonymous namespace)::DecoderConfig") align 8 %25)
          to label %.critedge165 unwind label %327

.critedge165:                                     ; preds = %331
  %339 = getelementptr inbounds i8, ptr %0, i64 101064
  store i64 ptrtoint (ptr @_ZN10DeviceBase11ProcessBs2bEm to i64), ptr %339, align 8, !tbaa !129
  %.repack138 = getelementptr inbounds i8, ptr %0, i64 101072
  store i64 0, ptr %.repack138, align 8, !tbaa !129
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #10
  br label %393

340:                                              ; preds = %302, %308, %304
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #10
  br label %342

341:                                              ; preds = %329, %327
  %.pn136 = phi { ptr, i32 } [ %328, %327 ], [ %330, %329 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #10
  br label %394

342:                                              ; preds = %340, %297
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %26) #10
  invoke void @_ZN9ALCdevice11configValueINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEN2al8optionalIT_EEPKcSC_(ptr dead_on_unwind nonnull writable sret(%"class.al::optional.90") align 8 %26, ptr noundef nonnull align 16 dereferenceable(101448) %0, ptr noundef null, ptr noundef nonnull @.str.15)
          to label %343 unwind label %351

343:                                              ; preds = %342
  %344 = call noundef zeroext i1 @_ZNK2al8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEcvbEv(ptr noundef nonnull align 8 dereferenceable(40) %26) #10
  br i1 %344, label %345, label %360

345:                                              ; preds = %343
  %346 = call noundef ptr @_ZN2al8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEptEv(ptr noundef nonnull align 8 dereferenceable(40) %26)
  %347 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %346) #10
  %348 = call noundef i32 @_ZN2al10strcasecmpEPKcS1_(ptr noundef %347, ptr noundef nonnull @.str.16) #10
  %349 = icmp eq i32 %348, 0
  br i1 %349, label %350, label %353

350:                                              ; preds = %345
  store i8 0, ptr %36, align 4, !tbaa !88
  br label %360

351:                                              ; preds = %342
  %352 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %26) #10
  br label %394

353:                                              ; preds = %345
  %354 = call noundef i32 @_ZN2al10strcasecmpEPKcS1_(ptr noundef %347, ptr noundef nonnull @.str.17) #10
  %.not139 = icmp ne i32 %354, 0
  %355 = load i32, ptr @gLogLevel, align 4
  %356 = icmp sgt i32 %355, 0
  %or.cond167 = select i1 %.not139, i1 %356, i1 false
  br i1 %or.cond167, label %357, label %360, !prof !132

357:                                              ; preds = %353
  %358 = load ptr, ptr @gLogFile, align 8, !tbaa !123
  %359 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %358, ptr noundef nonnull @.str.18, ptr noundef %347) #10
  br label %360

360:                                              ; preds = %350, %357, %353, %343
  call void @_ZN2al8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %26) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %26) #10
  %361 = load i8, ptr %36, align 4, !tbaa !88
  %362 = icmp eq i8 %361, 0
  br i1 %362, label %363, label %377

363:                                              ; preds = %360
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #10
  invoke void @_ZSt11make_uniqueI10UhjEncoderJEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.11") align 8 %27)
          to label %364 unwind label %372

364:                                              ; preds = %363
  %365 = getelementptr inbounds i8, ptr %0, i64 101040
  %366 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt10unique_ptrI10UhjEncoderSt14default_deleteIS0_EEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(8) %365, ptr noundef nonnull align 8 dereferenceable(8) %27) #10
  call void @_ZNSt10unique_ptrI10UhjEncoderSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #10
  %367 = load i32, ptr @gLogLevel, align 4, !tbaa !136
  %368 = icmp sgt i32 %367, 2
  br i1 %368, label %369, label %374, !prof !138

369:                                              ; preds = %364
  %370 = load ptr, ptr @gLogFile, align 8, !tbaa !123
  %371 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %370, ptr noundef nonnull @.str.19) #10
  br label %374

372:                                              ; preds = %363
  %373 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #10
  br label %394

374:                                              ; preds = %369, %364
  invoke void @_ZN12_GLOBAL__N_114InitUhjPanningEP9ALCdevice(ptr noundef nonnull %0)
          to label %375 unwind label %220

375:                                              ; preds = %374
  %376 = getelementptr inbounds i8, ptr %0, i64 101064
  store i64 ptrtoint (ptr @_ZN10DeviceBase10ProcessUhjEm to i64), ptr %376, align 8, !tbaa !129
  %.repack141 = getelementptr inbounds i8, ptr %0, i64 101072
  store i64 0, ptr %.repack141, align 8, !tbaa !129
  br label %393

377:                                              ; preds = %360
  %378 = load i32, ptr @gLogLevel, align 4, !tbaa !136
  %379 = icmp sgt i32 %378, 2
  br i1 %379, label %380, label %383, !prof !138

380:                                              ; preds = %377
  %381 = load ptr, ptr @gLogFile, align 8, !tbaa !123
  %382 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %381, ptr noundef nonnull @.str.20) #10
  br label %383

383:                                              ; preds = %380, %377
  store i8 0, ptr %28, align 8, !tbaa !114
  %384 = getelementptr inbounds i8, ptr %28, i64 1
  store i8 0, ptr %384, align 1, !tbaa !119
  %385 = getelementptr inbounds i8, ptr %28, i64 8
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %385, i8 0, i64 16, i1 false)
  call void @_ZN2al4spanIK7ChannelLm18446744073709551615EEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %385) #10
  %386 = getelementptr inbounds i8, ptr %28, i64 24
  store i8 0, ptr %386, align 8, !tbaa !120
  %387 = getelementptr inbounds i8, ptr %28, i64 32
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %387, i8 0, i64 16, i1 false)
  call void @_ZN2al4spanIKfLm18446744073709551615EEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %387) #10
  %388 = getelementptr inbounds i8, ptr %28, i64 48
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %388, i8 0, i64 16, i1 false)
  call void @_ZN2al4spanIKSt5arrayIfLm16EELm18446744073709551615EEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %388) #10
  %389 = getelementptr inbounds i8, ptr %28, i64 64
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %389, i8 0, i64 16, i1 false)
  call void @_ZN2al4spanIKfLm18446744073709551615EEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %389) #10
  %390 = getelementptr inbounds i8, ptr %28, i64 80
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %390, i8 0, i64 16, i1 false)
  call void @_ZN2al4spanIKSt5arrayIfLm16EELm18446744073709551615EEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %390) #10
  invoke void @_ZN12_GLOBAL__N_111InitPanningEP9ALCdevicebbNS_13DecoderConfigILNS_11DecoderModeE1ELm0EEE(ptr noundef nonnull %0, i1 noundef zeroext false, i1 noundef zeroext false, ptr noundef nonnull byval(%"struct.(anonymous namespace)::DecoderConfig") align 8 %28)
          to label %391 unwind label %220

391:                                              ; preds = %383
  %392 = getelementptr inbounds i8, ptr %0, i64 101064
  store i64 ptrtoint (ptr @_ZN10DeviceBase14ProcessAmbiDecEm to i64), ptr %392, align 8, !tbaa !129
  %.repack140 = getelementptr inbounds i8, ptr %0, i64 101072
  store i64 0, ptr %.repack140, align 8, !tbaa !129
  br label %393

393:                                              ; preds = %292, %375, %391, %.critedge165, %178
  call void @_ZN2al13intrusive_ptrI9HrtfStoreED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #10
  ret void

394:                                              ; preds = %193, %220, %242, %266, %341, %351, %372, %295, %289, %179
  %.pn155.pn.pn.pn = phi { ptr, i32 } [ %.pn155.pn.pn, %179 ], [ %221, %220 ], [ %373, %372 ], [ %352, %351 ], [ %.pn136, %341 ], [ %.pn133, %266 ], [ %.pn, %242 ], [ %194, %193 ], [ %296, %295 ], [ %290, %289 ]
  call void @_ZN2al13intrusive_ptrI9HrtfStoreED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #10
  resume { ptr, i32 } %.pn155.pn.pn.pn
}

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN2al13intrusive_ptrI9HrtfStoreEaSEOS2_(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 @_ZN2al13intrusive_ptrI9HrtfStoreED2Ev(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) #1

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN9ALCdevice11configValueINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEN2al8optionalIT_EEPKcSC_(ptr dead_on_unwind noalias writable sret(%"class.al::optional.90") align 8, ptr noundef nonnull align 16 dereferenceable(101448), ptr noundef, ptr noundef) local_unnamed_addr #4 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZZ15aluInitRendererP9ALCdeviceiN2al8optionalIbEEENK3$_0clEPKc"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN2al8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEptEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #2 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: mustprogress nounwind uwtable
declare dso_local void @_ZN2al8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5arrayIjLm16EEixEm(ptr noundef nonnull align 4 dereferenceable(64), i64 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN9ALCdevice18getConfigValueBoolEPKcS1_i(ptr noundef nonnull align 16 dereferenceable(101448), ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_111InitPanningEP9ALCdevicebbNS_13DecoderConfigILNS_11DecoderModeE1ELm0EEE(ptr noundef, i1 noundef zeroext, i1 noundef zeroext, ptr noundef byval(%"struct.(anonymous namespace)::DecoderConfig") align 8) local_unnamed_addr #0

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_117InitNearFieldCtrlEP9ALCdevicefjb(ptr noundef, float noundef, i32 noundef, i1 noundef zeroext) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_116InitDistanceCompEP9ALCdeviceNS_13DecoderConfigILNS_11DecoderModeE1ELm0EEEN2al4spanIKfLm16EEE(ptr noundef, ptr noundef byval(%"struct.(anonymous namespace)::DecoderConfig") align 8, ptr) local_unnamed_addr #0

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

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

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

declare void @_ZN10DeviceBase23ProcessAmbiDecStablizedEm(ptr noundef nonnull align 16 dereferenceable(101152), i64 noundef) #6

declare void @_ZN10DeviceBase14ProcessAmbiDecEm(ptr noundef nonnull align 16 dereferenceable(101152), i64 noundef) #6

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

; Function Attrs: nounwind
declare noundef i32 @_ZN2al10strcasecmpEPKcS1_(ptr noundef, ptr noundef) local_unnamed_addr #7

; Function Attrs: nofree nounwind
declare noundef i32 @fprintf(ptr nocapture noundef, ptr nocapture noundef readonly, ...) local_unnamed_addr #8

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

declare void @_ZN9ALCdevice14enumerateHrtfsEv(ptr noundef nonnull align 16 dereferenceable(101448)) local_unnamed_addr #6

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

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

declare void @_Z13GetLoadedHrtfRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj(ptr dead_on_unwind writable sret(%"class.al::intrusive_ptr") align 8, ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) local_unnamed_addr #6

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local i64 @_ZN9ALCdevice11configValueIjEEN2al8optionalIT_EEPKcS6_(ptr noundef nonnull align 16 dereferenceable(101448), ptr noundef, ptr noundef) local_unnamed_addr #4 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z4maxujj(i32 noundef, i32 noundef) local_unnamed_addr #9

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_115InitHrtfPanningEP9ALCdevice(ptr noundef) local_unnamed_addr #0

declare void @_ZN10DeviceBase11ProcessHrtfEm(ptr noundef nonnull align 16 dereferenceable(101152), i64 noundef) #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local i64 @_ZN9ALCdevice11configValueIiEEN2al8optionalIT_EEPKcS6_(ptr noundef nonnull align 16 dereferenceable(101448), ptr noundef, ptr noundef) local_unnamed_addr #4 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt11make_uniqueI4bs2bJEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr.27") align 8) local_unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt10unique_ptrI4bs2bSt14default_deleteIS0_EEaSEOS3_(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 @_ZNSt10unique_ptrI4bs2bSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #2 align 2

declare void @_Z15bs2b_set_paramsP4bs2bii(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #6

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

declare void @_ZN10DeviceBase11ProcessBs2bEm(ptr noundef nonnull align 16 dereferenceable(101152), i64 noundef) #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt11make_uniqueI10UhjEncoderJEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr.11") align 8) local_unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt10unique_ptrI10UhjEncoderSt14default_deleteIS0_EEaSEOS3_(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 @_ZNSt10unique_ptrI10UhjEncoderSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_114InitUhjPanningEP9ALCdevice(ptr noundef) local_unnamed_addr #0

declare void @_ZN10DeviceBase10ProcessUhjEm(ptr noundef nonnull align 16 dereferenceable(101152), i64 noundef) #6

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #4 = { 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 #5 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #6 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind "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 = { 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 #9 = { 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 #10 = { 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, !13, i64 101016}
!6 = !{!"_ZTS10DeviceBase", !7, i64 0, !12, i64 1, !13, i64 4, !13, i64 8, !13, i64 12, !14, i64 16, !15, i64 17, !9, i64 18, !13, i64 20, !16, i64 24, !17, i64 28, !18, i64 29, !19, i64 32, !23, i64 64, !13, i64 72, !25, i64 76, !16, i64 80, !13, i64 84, !26, i64 88, !26, i64 96, !27, i64 112, !10, i64 76912, !10, i64 81008, !10, i64 85104, !10, i64 89456, !28, i64 100720, !32, i64 100744, !10, i64 100888, !35, i64 100904, !38, i64 101000, !44, i64 101008, !13, i64 101016, !45, i64 101024, !51, i64 101032, !57, i64 101040, !10, i64 101048, !63, i64 101064, !69, i64 101072, !16, i64 101080, !13, i64 101084, !75, i64 101088, !77, i64 101096, !79, i64 101104, !81, i64 101144}
!7 = !{!"_ZTSSt6atomicIbE", !8, i64 0}
!8 = !{!"_ZTSSt13__atomic_baseIbE", !9, i64 0}
!9 = !{!"bool", !10, i64 0}
!10 = !{!"omnipotent char", !11, i64 0}
!11 = !{!"Simple C++ TBAA"}
!12 = !{!"_ZTS10DeviceType", !10, i64 0}
!13 = !{!"int", !10, i64 0}
!14 = !{!"_ZTS14DevFmtChannels", !10, i64 0}
!15 = !{!"_ZTS10DevFmtType", !10, i64 0}
!16 = !{!"float", !10, i64 0}
!17 = !{!"_ZTS13DevAmbiLayout", !10, i64 0}
!18 = !{!"_ZTS14DevAmbiScaling", !10, i64 0}
!19 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !20, i64 0, !22, i64 8, !10, i64 16}
!20 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !21, i64 0}
!21 = !{!"any pointer", !10, i64 0}
!22 = !{!"long", !10, i64 0}
!23 = !{!"_ZTSSt6bitsetILm5EE", !24, i64 0}
!24 = !{!"_ZTSSt12_Base_bitsetILm1EE", !22, i64 0}
!25 = !{!"_ZTS10RenderMode", !10, i64 0}
!26 = !{!"_ZTSNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEE", !22, i64 0}
!27 = !{!"_ZTSSt5arrayIS_IfLm1200EELm16EE", !10, i64 0}
!28 = !{!"_ZTSSt6vectorISt5arrayIfLm1024EEN2al9allocatorIS1_Lm16EEEE", !29, i64 0}
!29 = !{!"_ZTSSt12_Vector_baseISt5arrayIfLm1024EEN2al9allocatorIS1_Lm16EEEE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseISt5arrayIfLm1024EEN2al9allocatorIS1_Lm16EEEE12_Vector_implE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseISt5arrayIfLm1024EEN2al9allocatorIS1_Lm16EEEE17_Vector_impl_dataE", !21, i64 0, !21, i64 8, !21, i64 16}
!32 = !{!"_ZTS9MixParams", !33, i64 0, !34, i64 128}
!33 = !{!"_ZTSSt5arrayI15BFChannelConfigLm16EE", !10, i64 0}
!34 = !{!"_ZTSN2al4spanISt5arrayIfLm1024EELm18446744073709551615EEE", !21, i64 0, !21, i64 8}
!35 = !{!"_ZTS13RealMixParams", !36, i64 0, !37, i64 16, !34, i64 80}
!36 = !{!"_ZTSN2al4spanIK13InputRemixMapLm18446744073709551615EEE", !21, i64 0, !21, i64 8}
!37 = !{!"_ZTSSt5arrayIjLm16EE", !10, i64 0}
!38 = !{!"_ZTSSt10unique_ptrI15DirectHrtfStateSt14default_deleteIS0_EE", !39, i64 0}
!39 = !{!"_ZTSSt15__uniq_ptr_dataI15DirectHrtfStateSt14default_deleteIS0_ELb1ELb1EE", !40, i64 0}
!40 = !{!"_ZTSSt15__uniq_ptr_implI15DirectHrtfStateSt14default_deleteIS0_EE", !41, i64 0}
!41 = !{!"_ZTSSt5tupleIJP15DirectHrtfStateSt14default_deleteIS0_EEE", !42, i64 0}
!42 = !{!"_ZTSSt11_Tuple_implILm0EJP15DirectHrtfStateSt14default_deleteIS0_EEE", !43, i64 0}
!43 = !{!"_ZTSSt10_Head_baseILm0EP15DirectHrtfStateLb0EE", !21, i64 0}
!44 = !{!"_ZTSN2al13intrusive_ptrI9HrtfStoreEE", !21, i64 0}
!45 = !{!"_ZTSSt10unique_ptrI10UhjEncoderSt14default_deleteIS0_EE", !46, i64 0}
!46 = !{!"_ZTSSt15__uniq_ptr_dataI10UhjEncoderSt14default_deleteIS0_ELb1ELb1EE", !47, i64 0}
!47 = !{!"_ZTSSt15__uniq_ptr_implI10UhjEncoderSt14default_deleteIS0_EE", !48, i64 0}
!48 = !{!"_ZTSSt5tupleIJP10UhjEncoderSt14default_deleteIS0_EEE", !49, i64 0}
!49 = !{!"_ZTSSt11_Tuple_implILm0EJP10UhjEncoderSt14default_deleteIS0_EEE", !50, i64 0}
!50 = !{!"_ZTSSt10_Head_baseILm0EP10UhjEncoderLb0EE", !21, i64 0}
!51 = !{!"_ZTSSt10unique_ptrI10BFormatDecSt14default_deleteIS0_EE", !52, i64 0}
!52 = !{!"_ZTSSt15__uniq_ptr_dataI10BFormatDecSt14default_deleteIS0_ELb1ELb1EE", !53, i64 0}
!53 = !{!"_ZTSSt15__uniq_ptr_implI10BFormatDecSt14default_deleteIS0_EE", !54, i64 0}
!54 = !{!"_ZTSSt5tupleIJP10BFormatDecSt14default_deleteIS0_EEE", !55, i64 0}
!55 = !{!"_ZTSSt11_Tuple_implILm0EJP10BFormatDecSt14default_deleteIS0_EEE", !56, i64 0}
!56 = !{!"_ZTSSt10_Head_baseILm0EP10BFormatDecLb0EE", !21, i64 0}
!57 = !{!"_ZTSSt10unique_ptrI4bs2bSt14default_deleteIS0_EE", !58, i64 0}
!58 = !{!"_ZTSSt15__uniq_ptr_dataI4bs2bSt14default_deleteIS0_ELb1ELb1EE", !59, i64 0}
!59 = !{!"_ZTSSt15__uniq_ptr_implI4bs2bSt14default_deleteIS0_EE", !60, i64 0}
!60 = !{!"_ZTSSt5tupleIJP4bs2bSt14default_deleteIS0_EEE", !61, i64 0}
!61 = !{!"_ZTSSt11_Tuple_implILm0EJP4bs2bSt14default_deleteIS0_EEE", !62, i64 0}
!62 = !{!"_ZTSSt10_Head_baseILm0EP4bs2bLb0EE", !21, i64 0}
!63 = !{!"_ZTSSt10unique_ptrI10CompressorSt14default_deleteIS0_EE", !64, i64 0}
!64 = !{!"_ZTSSt15__uniq_ptr_dataI10CompressorSt14default_deleteIS0_ELb1ELb1EE", !65, i64 0}
!65 = !{!"_ZTSSt15__uniq_ptr_implI10CompressorSt14default_deleteIS0_EE", !66, i64 0}
!66 = !{!"_ZTSSt5tupleIJP10CompressorSt14default_deleteIS0_EEE", !67, i64 0}
!67 = !{!"_ZTSSt11_Tuple_implILm0EJP10CompressorSt14default_deleteIS0_EEE", !68, i64 0}
!68 = !{!"_ZTSSt10_Head_baseILm0EP10CompressorLb0EE", !21, i64 0}
!69 = !{!"_ZTSSt10unique_ptrI12DistanceCompSt14default_deleteIS0_EE", !70, i64 0}
!70 = !{!"_ZTSSt15__uniq_ptr_dataI12DistanceCompSt14default_deleteIS0_ELb1ELb1EE", !71, i64 0}
!71 = !{!"_ZTSSt15__uniq_ptr_implI12DistanceCompSt14default_deleteIS0_EE", !72, i64 0}
!72 = !{!"_ZTSSt5tupleIJP12DistanceCompSt14default_deleteIS0_EEE", !73, i64 0}
!73 = !{!"_ZTSSt11_Tuple_implILm0EJP12DistanceCompSt14default_deleteIS0_EEE", !74, i64 0}
!74 = !{!"_ZTSSt10_Head_baseILm0EP12DistanceCompLb0EE", !21, i64 0}
!75 = !{!"_ZTSSt6atomicIjE", !76, i64 0}
!76 = !{!"_ZTSSt13__atomic_baseIjE", !13, i64 0}
!77 = !{!"_ZTSSt6atomicIPN2al9FlexArrayIP11ContextBaseLm8EEEE", !78, i64 0}
!78 = !{!"_ZTSSt13__atomic_baseIPN2al9FlexArrayIP11ContextBaseLm8EEEE", !21, i64 0}
!79 = !{!"_ZTSSt5mutex", !80, i64 0}
!80 = !{!"_ZTSSt12__mutex_base", !10, i64 0}
!81 = !{!"_ZTSSt10unique_ptrI11BackendBaseSt14default_deleteIS0_EE", !82, i64 0}
!82 = !{!"_ZTSSt15__uniq_ptr_dataI11BackendBaseSt14default_deleteIS0_ELb1ELb1EE", !83, i64 0}
!83 = !{!"_ZTSSt15__uniq_ptr_implI11BackendBaseSt14default_deleteIS0_EE", !84, i64 0}
!84 = !{!"_ZTSSt5tupleIJP11BackendBaseSt14default_deleteIS0_EEE", !85, i64 0}
!85 = !{!"_ZTSSt11_Tuple_implILm0EJP11BackendBaseSt14default_deleteIS0_EEE", !86, i64 0}
!86 = !{!"_ZTSSt10_Head_baseILm0EP11BackendBaseLb0EE", !21, i64 0}
!87 = !{!6, !16, i64 24}
!88 = !{!6, !25, i64 76}
!89 = !{!6, !14, i64 16}
!90 = !{!9, !9, i64 0}
!91 = !{i8 0, i8 2}
!92 = !{}
!93 = !{!94, !13, i64 101240}
!94 = !{!"_ZTS9ALCdevice", !95, i64 0, !6, i64 16, !13, i64 101168, !13, i64 101172, !13, i64 101176, !13, i64 101180, !19, i64 101184, !96, i64 101216, !13, i64 101240, !13, i64 101244, !100, i64 101248, !79, i64 101256, !102, i64 101296, !79, i64 101320, !106, i64 101360, !79, i64 101384, !110, i64 101424}
!95 = !{!"_ZTSN2al13intrusive_refI9ALCdeviceEE", !75, i64 0}
!96 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN2al9allocatorIS5_Lm8EEEE", !97, i64 0}
!97 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN2al9allocatorIS5_Lm8EEEE", !98, i64 0}
!98 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN2al9allocatorIS5_Lm8EEEE12_Vector_implE", !99, i64 0}
!99 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN2al9allocatorIS5_Lm8EEEE17_Vector_impl_dataE", !21, i64 0, !21, i64 8, !21, i64 16}
!100 = !{!"_ZTSSt6atomicIiE", !101, i64 0}
!101 = !{!"_ZTSSt13__atomic_baseIiE", !13, i64 0}
!102 = !{!"_ZTSSt6vectorI13BufferSubListN2al9allocatorIS0_Lm8EEEE", !103, i64 0}
!103 = !{!"_ZTSSt12_Vector_baseI13BufferSubListN2al9allocatorIS0_Lm8EEEE", !104, i64 0}
!104 = !{!"_ZTSNSt12_Vector_baseI13BufferSubListN2al9allocatorIS0_Lm8EEEE12_Vector_implE", !105, i64 0}
!105 = !{!"_ZTSNSt12_Vector_baseI13BufferSubListN2al9allocatorIS0_Lm8EEEE17_Vector_impl_dataE", !21, i64 0, !21, i64 8, !21, i64 16}
!106 = !{!"_ZTSSt6vectorI13EffectSubListN2al9allocatorIS0_Lm8EEEE", !107, i64 0}
!107 = !{!"_ZTSSt12_Vector_baseI13EffectSubListN2al9allocatorIS0_Lm8EEEE", !108, i64 0}
!108 = !{!"_ZTSNSt12_Vector_baseI13EffectSubListN2al9allocatorIS0_Lm8EEEE12_Vector_implE", !109, i64 0}
!109 = !{!"_ZTSNSt12_Vector_baseI13EffectSubListN2al9allocatorIS0_Lm8EEEE17_Vector_impl_dataE", !21, i64 0, !21, i64 8, !21, i64 16}
!110 = !{!"_ZTSSt6vectorI13FilterSubListN2al9allocatorIS0_Lm8EEEE", !111, i64 0}
!111 = !{!"_ZTSSt12_Vector_baseI13FilterSubListN2al9allocatorIS0_Lm8EEEE", !112, i64 0}
!112 = !{!"_ZTSNSt12_Vector_baseI13FilterSubListN2al9allocatorIS0_Lm8EEEE12_Vector_implE", !113, i64 0}
!113 = !{!"_ZTSNSt12_Vector_baseI13FilterSubListN2al9allocatorIS0_Lm8EEEE17_Vector_impl_dataE", !21, i64 0, !21, i64 8, !21, i64 16}
!114 = !{!115, !10, i64 0}
!115 = !{!"_ZTSN12_GLOBAL__N_113DecoderConfigILNS_11DecoderModeE1ELm0EEE", !10, i64 0, !9, i64 1, !116, i64 8, !18, i64 24, !117, i64 32, !118, i64 48, !117, i64 64, !118, i64 80}
!116 = !{!"_ZTSN2al4spanIK7ChannelLm18446744073709551615EEE", !21, i64 0, !21, i64 8}
!117 = !{!"_ZTSN2al4spanIKfLm18446744073709551615EEE", !21, i64 0, !21, i64 8}
!118 = !{!"_ZTSN2al4spanIKSt5arrayIfLm16EELm18446744073709551615EEE", !21, i64 0, !21, i64 8}
!119 = !{!115, !9, i64 1}
!120 = !{!115, !18, i64 24}
!121 = !{!122, !21, i64 0}
!122 = !{!"_ZTSZ15aluInitRendererP9ALCdeviceiN2al8optionalIbEEE3$_0", !21, i64 0, !21, i64 8, !21, i64 16, !21, i64 24}
!123 = !{!21, !21, i64 0}
!124 = !{!13, !13, i64 0}
!125 = !{!16, !16, i64 0}
!126 = !{i64 0, i64 1, !127, i64 1, i64 1, !90, i64 8, i64 8, !123, i64 16, i64 8, !123, i64 24, i64 1, !128, i64 32, i64 8, !123, i64 40, i64 8, !123, i64 48, i64 8, !123, i64 56, i64 8, !123, i64 64, i64 8, !123, i64 72, i64 8, !123, i64 80, i64 8, !123, i64 88, i64 8, !123}
!127 = !{!10, !10, i64 0}
!128 = !{!18, !18, i64 0}
!129 = !{!6, !10, i64 101048}
!130 = !{!6, !9, i64 18}
!131 = !{!6, !12, i64 1}
!132 = !{!"branch_weights", i32 1, i32 4001}
!133 = !{!6, !13, i64 4}
!134 = !{!135, !13, i64 8}
!135 = !{!"_ZTS9HrtfStore", !75, i64 0, !13, i64 4, !13, i64 8, !13, i64 12, !21, i64 16, !21, i64 24, !21, i64 32, !21, i64 40}
!136 = !{!137, !137, i64 0}
!137 = !{!"_ZTS8LogLevel", !10, i64 0}
!138 = !{!"branch_weights", !"expected", i32 1, i32 2000}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LowerExpectIntrinsicPass,MemCpyOptPass,SROAPass,SimplifyCFGPass