; LLVM IR from Try/Tempest :: Engine/thirdparty/openal-soft/core (converter)

; 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::span.15" = type { ptr, i64 }
%"class.al::span.16" = type { ptr, i64 }
%class.FPUCtl = type <{ i32, i8, [3 x i8] }>
%"class.al::span.10" = type { ptr, i64 }
%"class.al::span.12" = type { ptr, i64 }
%"class.al::span.13" = type { ptr }
%"class.al::span.17" = type { ptr }
%"class.al::ptr_wrapper.14" = type { ptr }
%"class.al::span.6" = type { ptr, i64 }
%"class.al::span.11" = type { ptr, i64 }
%"class.al::ptr_wrapper.19" = type { ptr }
%class.anon.18 = type { ptr, i32, i32 }
%struct.SampleConverter = type { i8, i8, i32, i32, i32, i32, i32, %"class.std::variant", ptr, [8 x i8], %"struct.std::array", %"struct.std::array", %"struct.al::FlexArray" }
%"class.std::variant" = type { %"struct.std::__detail::__variant::_Variant_base.base", [7 x i8] }
%"struct.std::__detail::__variant::_Variant_base.base" = type { %"struct.std::__detail::__variant::_Move_assign_base.base" }
%"struct.std::__detail::__variant::_Move_assign_base.base" = type { %"struct.std::__detail::__variant::_Copy_assign_base.base" }
%"struct.std::__detail::__variant::_Copy_assign_base.base" = type { %"struct.std::__detail::__variant::_Move_ctor_base.base" }
%"struct.std::__detail::__variant::_Move_ctor_base.base" = type { %"struct.std::__detail::__variant::_Copy_ctor_base.base" }
%"struct.std::__detail::__variant::_Copy_ctor_base.base" = type { %"struct.std::__detail::__variant::_Variant_storage.base" }
%"struct.std::__detail::__variant::_Variant_storage.base" = type <{ %"union.std::__detail::__variant::_Variadic_union", i8 }>
%"union.std::__detail::__variant::_Variadic_union" = type { %"union.std::__detail::__variant::_Variadic_union.2" }
%"union.std::__detail::__variant::_Variadic_union.2" = type { %"union.std::__detail::__variant::_Variadic_union.4" }
%"union.std::__detail::__variant::_Variadic_union.4" = type { %"struct.std::__detail::__variant::_Uninitialized.5" }
%"struct.std::__detail::__variant::_Uninitialized.5" = type { %struct.BsincState }
%struct.BsincState = type { float, i32, i32, %"class.al::span.6" }
%"struct.std::array" = type { [1024 x float] }
%"struct.al::FlexArray" = type { %"struct.al::FlexArrayStorage" }
%"struct.al::FlexArrayStorage" = type { %"class.al::span.8" }
%"class.al::span.8" = type { ptr, i64 }
%"struct.SampleConverter::ChanSamples" = type { %"struct.std::array.9" }
%"struct.std::array.9" = type { [48 x float] }

@.str = external hidden unnamed_addr constant [33 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [94 x i8], align 1
@_ZL19MaxResamplerPadding = external hidden constant i32, align 4
@__PRETTY_FUNCTION__._ZN15SampleConverter13convertPlanarEPPKvPjPKPvj = external hidden unnamed_addr constant [80 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_Zli4_u64y(i64 noundef) #1

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #3

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZN12_GLOBAL__N_111LoadSamplesEN2al4spanIfLm18446744073709551615EEEPKvmm10DevFmtType(ptr, i64, ptr noundef, i64 noundef, i64 noundef, i8 noundef zeroext) #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 16 dereferenceable(192) ptr @_ZN2al9FlexArrayIN15SampleConverter11ChanSamplesELm16EEixEm(ptr noundef nonnull align 16 dereferenceable(16), i64 noundef) #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { ptr, i64 } @_ZNK2al4spanIfLm48EE7subspanEmm(ptr noundef nonnull align 8 dereferenceable(8), i64 noundef, i64 noundef) #1 align 2

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local ptr @_ZSt6copy_nIPKfjN2al11ptr_wrapperIPfEEET1_T_T0_S6_(ptr noundef, i32 noundef, ptr) #5

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZSt6copy_nIN2al11ptr_wrapperIPfEEjS2_ET1_T_T0_S4_(ptr, i32 noundef, ptr noundef) #5

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

; Function Attrs: mustprogress nounwind willreturn memory(none) uwtable
declare dso_local noundef ptr @_ZNSt5arrayIfLm48EE5beginEv(ptr noundef nonnull align 4 dereferenceable(192)) #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4fillIPffEvT_S1_RKT0_(ptr noundef, ptr noundef, ptr noundef nonnull align 4 dereferenceable(4)) #5

; Function Attrs: mustprogress nounwind willreturn memory(none) uwtable
declare dso_local noundef ptr @_ZNSt5arrayIfLm48EE3endEv(ptr noundef nonnull align 4 dereferenceable(192)) #6 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZN12_GLOBAL__N_112StoreSamplesEPvN2al4spanIKfLm18446744073709551615EEEmm10DevFmtType(ptr noundef, ptr, i64, i64 noundef, i64 noundef, i8 noundef zeroext) #1

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { ptr, i64 } @_ZNK2al4spanIKSt4byteLm18446744073709551615EE7subspanEmm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef, i64 noundef) #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { ptr, i64 } @_ZNK2al4spanISt4byteLm18446744073709551615EE7subspanEmm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef, i64 noundef) #1 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN15SampleConverter13convertPlanarEPPKvPjPKPvj(ptr noundef nonnull align 16 dereferenceable(8288) %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4) #2 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca %"class.al::span.15", align 8
  %12 = alloca %"class.al::span.16", align 8
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca %class.FPUCtl, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca ptr, align 8
  %21 = alloca i32, align 4
  %22 = alloca i64, align 8
  %23 = alloca %"class.al::span.10", align 8
  %24 = alloca %"class.al::span.12", align 8
  %25 = alloca %"class.al::span.13", align 8
  %26 = alloca %"class.al::span.10", align 8
  %27 = alloca i32, align 4
  %28 = alloca %"class.al::span.17", align 8
  %29 = alloca %"class.al::span.17", align 8
  %30 = alloca i32, align 4
  %31 = alloca i64, align 8
  %32 = alloca i32, align 4
  %33 = alloca i64, align 8
  %34 = alloca i64, align 8
  %35 = alloca i64, align 8
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i64, align 8
  %42 = alloca %"class.al::ptr_wrapper.14", align 8
  %43 = alloca %"class.al::ptr_wrapper.14", align 8
  %44 = alloca %"class.al::span.12", align 8
  %45 = alloca %"class.al::ptr_wrapper.14", align 8
  %46 = alloca ptr, align 8
  %47 = alloca %"class.al::ptr_wrapper.14", align 8
  %48 = alloca %"class.al::ptr_wrapper.14", align 8
  %49 = alloca float, align 4
  %50 = alloca %"class.al::span.6", align 8
  %51 = alloca %"class.al::span.12", align 8
  %52 = alloca %"class.al::span.11", align 8
  %53 = alloca %"class.al::span.11", align 8
  %54 = alloca %"class.al::span.6", align 8
  %55 = alloca %"class.al::span.12", align 8
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca %"class.al::ptr_wrapper.19", align 8
  %59 = alloca %"class.al::ptr_wrapper.19", align 8
  %60 = alloca %class.anon.18, align 8
  %61 = alloca %class.anon.18, align 8
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  store ptr %3, ptr %9, align 8, !tbaa !5
  store i32 %4, ptr %10, align 4, !tbaa !9
  %62 = load ptr, ptr %6, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %11) #8
  %63 = load ptr, ptr %7, align 8, !tbaa !5
  %64 = getelementptr inbounds %struct.SampleConverter, ptr %62, i32 0, i32 12
  %65 = call noundef i64 @_ZNK2al9FlexArrayIN15SampleConverter11ChanSamplesELm16EE4sizeEv(ptr noundef nonnull align 16 dereferenceable(16) %64) #8
  call void @_ZN2al4spanIPKvLm18446744073709551615EEC2IPS2_EET_m(ptr noundef nonnull align 8 dereferenceable(16) %11, ptr noundef %63, i64 noundef %65)
  call void @llvm.lifetime.start.p0(i64 16, ptr %12) #8
  %66 = load ptr, ptr %9, align 8, !tbaa !5
  %67 = getelementptr inbounds %struct.SampleConverter, ptr %62, i32 0, i32 12
  %68 = call noundef i64 @_ZNK2al9FlexArrayIN15SampleConverter11ChanSamplesELm16EE4sizeEv(ptr noundef nonnull align 16 dereferenceable(16) %67) #8
  call void @_ZN2al4spanIKPvLm18446744073709551615EEC2IPS2_EET_m(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef %66, i64 noundef %68)
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #8
  %69 = getelementptr inbounds %struct.SampleConverter, ptr %62, i32 0, i32 6
  %70 = load i32, ptr %69, align 4, !tbaa !11
  store i32 %70, ptr %13, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #8
  %71 = load ptr, ptr %8, align 8, !tbaa !5
  %72 = load i32, ptr %71, align 4, !tbaa !9
  store i32 %72, ptr %14, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #8
  call void @_ZN6FPUCtlC2Ev(ptr noundef nonnull align 4 dereferenceable(5) %15) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #8
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %73

73:                                               ; preds = %428, %5
  %74 = load i32, ptr %16, align 4, !tbaa !9
  %75 = load i32, ptr %10, align 4, !tbaa !9
  %76 = icmp ult i32 %74, %75
  br i1 %76, label %77, label %80

77:                                               ; preds = %73
  %78 = load i32, ptr %14, align 4, !tbaa !9
  %79 = icmp ugt i32 %78, 0
  br label %80

80:                                               ; preds = %77, %73
  %81 = phi i1 [ false, %73 ], [ %79, %77 ]
  br i1 %81, label %82, label %441

82:                                               ; preds = %80
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #8
  %83 = getelementptr inbounds %struct.SampleConverter, ptr %62, i32 0, i32 4
  %84 = load i32, ptr %83, align 4, !tbaa !26
  store i32 %84, ptr %17, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #8
  %85 = load i32, ptr %17, align 4, !tbaa !9
  %86 = sub i32 1024, %85
  store i32 %86, ptr %19, align 4, !tbaa !9
  %87 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %14, ptr noundef nonnull align 4 dereferenceable(4) %19)
          to label %88 unwind label %104

88:                                               ; preds = %82
  %89 = load i32, ptr %87, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #8
  store i32 %89, ptr %18, align 4, !tbaa !9
  %90 = load i32, ptr %17, align 4, !tbaa !9
  %91 = icmp ult i32 %90, 48
  br i1 %91, label %92, label %172

92:                                               ; preds = %88
  %93 = load i32, ptr %17, align 4, !tbaa !9
  %94 = sub i32 48, %93
  %95 = load i32, ptr %18, align 4, !tbaa !9
  %96 = icmp uge i32 %94, %95
  br i1 %96, label %97, label %172

97:                                               ; preds = %92
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #8
  store i64 0, ptr %22, align 8, !tbaa !27
  br label %98

98:                                               ; preds = %155, %97
  %99 = load i64, ptr %22, align 8, !tbaa !27
  %100 = getelementptr inbounds %struct.SampleConverter, ptr %62, i32 0, i32 12
  %101 = call noundef i64 @_ZNK2al9FlexArrayIN15SampleConverter11ChanSamplesELm16EE4sizeEv(ptr noundef nonnull align 16 dereferenceable(16) %100) #8
  %102 = icmp ult i64 %99, %101
  br i1 %102, label %108, label %103

103:                                              ; preds = %98
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  br label %167

104:                                              ; preds = %82
  %105 = landingpad { ptr, i32 }
          cleanup
  %106 = extractvalue { ptr, i32 } %105, 0
  store ptr %106, ptr %20, align 8
  %107 = extractvalue { ptr, i32 } %105, 1
  store i32 %107, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #8
  br label %440

108:                                              ; preds = %98
  call void @llvm.lifetime.start.p0(i64 16, ptr %23) #8
  %109 = load i64, ptr %22, align 8, !tbaa !27
  %110 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK2al4spanIPKvLm18446744073709551615EEixEm(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 noundef %109)
          to label %111 unwind label %158

111:                                              ; preds = %108
  %112 = load ptr, ptr %110, align 8, !tbaa !5
  %113 = load i32, ptr %14, align 4, !tbaa !9
  %114 = zext i32 %113 to i64
  %115 = getelementptr inbounds %struct.SampleConverter, ptr %62, i32 0, i32 2
  %116 = load i32, ptr %115, align 4, !tbaa !28
  %117 = zext i32 %116 to i64
  %118 = mul i64 %114, %117
  invoke void @_ZN2al4spanIKSt4byteLm18446744073709551615EEC2IPS2_EET_m(ptr noundef nonnull align 8 dereferenceable(16) %23, ptr noundef %112, i64 noundef %118)
          to label %119 unwind label %158

119:                                              ; preds = %111
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #8
  %120 = getelementptr inbounds %struct.SampleConverter, ptr %62, i32 0, i32 12
  %121 = load i64, ptr %22, align 8, !tbaa !27
  %122 = call noundef nonnull align 16 dereferenceable(192) ptr @_ZN2al9FlexArrayIN15SampleConverter11ChanSamplesELm16EEixEm(ptr noundef nonnull align 16 dereferenceable(16) %120, i64 noundef %121) #8
  %123 = getelementptr inbounds %"struct.SampleConverter::ChanSamples", ptr %122, i32 0, i32 0
  call void @_ZN2al4spanIfLm48EEC2ILm48EEERSt5arrayIfXT_EE(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 4 dereferenceable(192) %123) #8
  %124 = load i32, ptr %17, align 4, !tbaa !9
  %125 = zext i32 %124 to i64
  %126 = load i32, ptr %18, align 4, !tbaa !9
  %127 = zext i32 %126 to i64
  %128 = call { ptr, i64 } @_ZNK2al4spanIfLm48EE7subspanEmm(ptr noundef nonnull align 8 dereferenceable(8) %25, i64 noundef %125, i64 noundef %127) #8
  %129 = getelementptr inbounds { ptr, i64 }, ptr %24, i32 0, i32 0
  %130 = extractvalue { ptr, i64 } %128, 0
  store ptr %130, ptr %129, align 8
  %131 = getelementptr inbounds { ptr, i64 }, ptr %24, i32 0, i32 1
  %132 = extractvalue { ptr, i64 } %128, 1
  store i64 %132, ptr %131, align 8
  %133 = call noundef ptr @_ZNK2al4spanIKSt4byteLm18446744073709551615EE4dataEv(ptr noundef nonnull align 8 dereferenceable(16) %23) #8
  %134 = getelementptr inbounds %struct.SampleConverter, ptr %62, i32 0, i32 0
  %135 = load i8, ptr %134, align 16, !tbaa !29
  %136 = getelementptr inbounds { ptr, i64 }, ptr %24, i32 0, i32 0
  %137 = load ptr, ptr %136, align 8
  %138 = getelementptr inbounds { ptr, i64 }, ptr %24, i32 0, i32 1
  %139 = load i64, ptr %138, align 8
  call void @_ZN12_GLOBAL__N_111LoadSamplesEN2al4spanIfLm18446744073709551615EEEPKvmm10DevFmtType(ptr %137, i64 %139, ptr noundef %133, i64 noundef 0, i64 noundef 1, i8 noundef zeroext %135) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %26) #8
  %140 = getelementptr inbounds %struct.SampleConverter, ptr %62, i32 0, i32 2
  %141 = load i32, ptr %140, align 4, !tbaa !28
  %142 = zext i32 %141 to i64
  %143 = load i32, ptr %18, align 4, !tbaa !9
  %144 = zext i32 %143 to i64
  %145 = mul i64 %142, %144
  %146 = call { ptr, i64 } @_ZNK2al4spanIKSt4byteLm18446744073709551615EE7subspanEmm(ptr noundef nonnull align 8 dereferenceable(16) %23, i64 noundef %145, i64 noundef -1) #8
  %147 = getelementptr inbounds { ptr, i64 }, ptr %26, i32 0, i32 0
  %148 = extractvalue { ptr, i64 } %146, 0
  store ptr %148, ptr %147, align 8
  %149 = getelementptr inbounds { ptr, i64 }, ptr %26, i32 0, i32 1
  %150 = extractvalue { ptr, i64 } %146, 1
  store i64 %150, ptr %149, align 8
  %151 = call noundef ptr @_ZNK2al4spanIKSt4byteLm18446744073709551615EE4dataEv(ptr noundef nonnull align 8 dereferenceable(16) %26) #8
  %152 = load i64, ptr %22, align 8, !tbaa !27
  %153 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK2al4spanIPKvLm18446744073709551615EEixEm(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 noundef %152)
          to label %154 unwind label %162

154:                                              ; preds = %119
  store ptr %151, ptr %153, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #8
  br label %155

155:                                              ; preds = %154
  %156 = load i64, ptr %22, align 8, !tbaa !27
  %157 = add i64 %156, 1
  store i64 %157, ptr %22, align 8, !tbaa !27
  br label %98, !llvm.loop !30

158:                                              ; preds = %111, %108
  %159 = landingpad { ptr, i32 }
          cleanup
  %160 = extractvalue { ptr, i32 } %159, 0
  store ptr %160, ptr %20, align 8
  %161 = extractvalue { ptr, i32 } %159, 1
  store i32 %161, ptr %21, align 4
  br label %166

162:                                              ; preds = %119
  %163 = landingpad { ptr, i32 }
          cleanup
  %164 = extractvalue { ptr, i32 } %163, 0
  store ptr %164, ptr %20, align 8
  %165 = extractvalue { ptr, i32 } %163, 1
  store i32 %165, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #8
  br label %166

166:                                              ; preds = %162, %158
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  br label %440

167:                                              ; preds = %103
  %168 = load i32, ptr %17, align 4, !tbaa !9
  %169 = load i32, ptr %18, align 4, !tbaa !9
  %170 = add i32 %168, %169
  %171 = getelementptr inbounds %struct.SampleConverter, ptr %62, i32 0, i32 4
  store i32 %170, ptr %171, align 4, !tbaa !26
  store i32 0, ptr %14, align 4, !tbaa !9
  store i32 3, ptr %27, align 4
  br label %426

172:                                              ; preds = %92, %88
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #8
  %173 = getelementptr inbounds %struct.SampleConverter, ptr %62, i32 0, i32 10
  call void @_ZN2al4spanIfLm1024EEC2ILm1024EEERSt5arrayIfXT_EE(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 4 dereferenceable(4096) %173) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #8
  %174 = getelementptr inbounds %struct.SampleConverter, ptr %62, i32 0, i32 11
  call void @_ZN2al4spanIfLm1024EEC2ILm1024EEERSt5arrayIfXT_EE(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 4 dereferenceable(4096) %174) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #8
  %175 = getelementptr inbounds %struct.SampleConverter, ptr %62, i32 0, i32 5
  %176 = load i32, ptr %175, align 16, !tbaa !32
  store i32 %176, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #8
  %177 = load i32, ptr %17, align 4, !tbaa !9
  %178 = zext i32 %177 to i64
  store i64 %178, ptr %31, align 8, !tbaa !27
  %179 = load i32, ptr %18, align 4, !tbaa !9
  %180 = zext i32 %179 to i64
  %181 = load i64, ptr %31, align 8, !tbaa !27
  %182 = add i64 %181, %180
  store i64 %182, ptr %31, align 8, !tbaa !27
  %183 = load i64, ptr %31, align 8, !tbaa !27
  %184 = sub i64 %183, 48
  store i64 %184, ptr %31, align 8, !tbaa !27
  %185 = load i64, ptr %31, align 8, !tbaa !27
  %186 = shl i64 %185, 16
  store i64 %186, ptr %31, align 8, !tbaa !27
  %187 = load i32, ptr %30, align 4, !tbaa !9
  %188 = zext i32 %187 to i64
  %189 = load i64, ptr %31, align 8, !tbaa !27
  %190 = sub i64 %189, %188
  store i64 %190, ptr %31, align 8, !tbaa !27
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #8
  %191 = load i64, ptr %31, align 8, !tbaa !27
  %192 = load i32, ptr %13, align 4, !tbaa !9
  %193 = zext i32 %192 to i64
  %194 = add i64 %191, %193
  %195 = sub i64 %194, 1
  %196 = load i32, ptr %13, align 4, !tbaa !9
  %197 = zext i32 %196 to i64
  %198 = udiv i64 %195, %197
  store i64 %198, ptr %33, align 8, !tbaa !27
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #8
  %199 = call noundef i64 @_Zli4_u64y(i64 noundef 1) #8
  store i64 %199, ptr %34, align 8, !tbaa !27
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #8
  store i64 1024, ptr %35, align 8, !tbaa !27
  %200 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt5clampImERKT_S2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 8 dereferenceable(8) %35)
          to label %201 unwind label %224

201:                                              ; preds = %172
  %202 = load i64, ptr %200, align 8, !tbaa !27
  %203 = trunc i64 %202 to i32
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  store i32 %203, ptr %32, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #8
  %204 = load i32, ptr %10, align 4, !tbaa !9
  %205 = load i32, ptr %16, align 4, !tbaa !9
  %206 = sub i32 %204, %205
  store i32 %206, ptr %36, align 4, !tbaa !9
  %207 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %32, ptr noundef nonnull align 4 dereferenceable(4) %36)
          to label %208 unwind label %228

208:                                              ; preds = %201
  %209 = load i32, ptr %207, align 4, !tbaa !9
  store i32 %209, ptr %32, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #8
  %210 = load i32, ptr %32, align 4, !tbaa !9
  %211 = load i32, ptr %13, align 4, !tbaa !9
  %212 = mul i32 %210, %211
  %213 = load i32, ptr %30, align 4, !tbaa !9
  %214 = add i32 %212, %213
  store i32 %214, ptr %37, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #8
  %215 = load i32, ptr %37, align 4, !tbaa !9
  %216 = lshr i32 %215, 16
  store i32 %216, ptr %38, align 4, !tbaa !9
  %217 = load i32, ptr %17, align 4, !tbaa !9
  %218 = load i32, ptr %18, align 4, !tbaa !9
  %219 = add i32 %217, %218
  %220 = load i32, ptr %38, align 4, !tbaa !9
  %221 = icmp uge i32 %219, %220
  br i1 %221, label %222, label %223

222:                                              ; preds = %208
  br label %233

223:                                              ; preds = %208
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 373, ptr noundef @__PRETTY_FUNCTION__._ZN15SampleConverter13convertPlanarEPPKvPjPKPvj) #9
  unreachable

224:                                              ; preds = %172
  %225 = landingpad { ptr, i32 }
          cleanup
  %226 = extractvalue { ptr, i32 } %225, 0
  store ptr %226, ptr %20, align 8
  %227 = extractvalue { ptr, i32 } %225, 1
  store i32 %227, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  br label %439

228:                                              ; preds = %201
  %229 = landingpad { ptr, i32 }
          cleanup
  %230 = extractvalue { ptr, i32 } %229, 0
  store ptr %230, ptr %20, align 8
  %231 = extractvalue { ptr, i32 } %229, 1
  store i32 %231, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #8
  br label %439

232:                                              ; No predecessors!
  br label %233

233:                                              ; preds = %232, %222
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #8
  %234 = load i32, ptr %17, align 4, !tbaa !9
  %235 = load i32, ptr %18, align 4, !tbaa !9
  %236 = add i32 %234, %235
  %237 = load i32, ptr %38, align 4, !tbaa !9
  %238 = sub i32 %236, %237
  store i32 %238, ptr %40, align 4, !tbaa !9
  %239 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %40, ptr noundef nonnull align 4 dereferenceable(4) @_ZL19MaxResamplerPadding)
          to label %240 unwind label %248

240:                                              ; preds = %233
  %241 = load i32, ptr %239, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #8
  store i32 %241, ptr %39, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #8
  store i64 0, ptr %41, align 8, !tbaa !27
  br label %242

242:                                              ; preds = %357, %240
  %243 = load i64, ptr %41, align 8, !tbaa !27
  %244 = getelementptr inbounds %struct.SampleConverter, ptr %62, i32 0, i32 12
  %245 = call noundef i64 @_ZNK2al9FlexArrayIN15SampleConverter11ChanSamplesELm16EE4sizeEv(ptr noundef nonnull align 16 dereferenceable(16) %244) #8
  %246 = icmp ult i64 %243, %245
  br i1 %246, label %252, label %247

247:                                              ; preds = %242
  store i32 7, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #8
  br label %382

248:                                              ; preds = %233
  %249 = landingpad { ptr, i32 }
          cleanup
  %250 = extractvalue { ptr, i32 } %249, 0
  store ptr %250, ptr %20, align 8
  %251 = extractvalue { ptr, i32 } %249, 1
  store i32 %251, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #8
  br label %438

252:                                              ; preds = %242
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #8
  %253 = getelementptr inbounds %struct.SampleConverter, ptr %62, i32 0, i32 12
  %254 = load i64, ptr %41, align 8, !tbaa !27
  %255 = call noundef nonnull align 16 dereferenceable(192) ptr @_ZN2al9FlexArrayIN15SampleConverter11ChanSamplesELm16EEixEm(ptr noundef nonnull align 16 dereferenceable(16) %253, i64 noundef %254) #8
  %256 = getelementptr inbounds %"struct.SampleConverter::ChanSamples", ptr %255, i32 0, i32 0
  %257 = call noundef ptr @_ZNKSt5arrayIfLm48EE6cbeginEv(ptr noundef nonnull align 4 dereferenceable(192) %256) #8
  %258 = load i32, ptr %17, align 4, !tbaa !9
  %259 = call ptr @_ZNK2al4spanIfLm1024EE5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %28) #8
  %260 = getelementptr inbounds %"class.al::ptr_wrapper.14", ptr %43, i32 0, i32 0
  store ptr %259, ptr %260, align 8
  %261 = getelementptr inbounds %"class.al::ptr_wrapper.14", ptr %43, i32 0, i32 0
  %262 = load ptr, ptr %261, align 8
  %263 = invoke ptr @_ZSt6copy_nIPKfjN2al11ptr_wrapperIPfEEET1_T_T0_S6_(ptr noundef %257, i32 noundef %258, ptr %262)
          to label %264 unwind label %360

264:                                              ; preds = %252
  %265 = getelementptr inbounds %"class.al::ptr_wrapper.14", ptr %42, i32 0, i32 0
  store ptr %263, ptr %265, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %45, ptr align 8 %42, i64 8, i1 false), !tbaa.struct !33
  %266 = load i32, ptr %18, align 4, !tbaa !9
  %267 = zext i32 %266 to i64
  %268 = getelementptr inbounds %"class.al::ptr_wrapper.14", ptr %45, i32 0, i32 0
  %269 = load ptr, ptr %268, align 8
  invoke void @_ZN2al4spanIfLm18446744073709551615EEC2INS_11ptr_wrapperIPfEEEET_m(ptr noundef nonnull align 8 dereferenceable(16) %44, ptr %269, i64 noundef %267)
          to label %270 unwind label %360

270:                                              ; preds = %264
  %271 = load i64, ptr %41, align 8, !tbaa !27
  %272 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK2al4spanIPKvLm18446744073709551615EEixEm(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 noundef %271)
          to label %273 unwind label %360

273:                                              ; preds = %270
  %274 = load ptr, ptr %272, align 8, !tbaa !5
  %275 = getelementptr inbounds %struct.SampleConverter, ptr %62, i32 0, i32 0
  %276 = load i8, ptr %275, align 16, !tbaa !29
  %277 = getelementptr inbounds { ptr, i64 }, ptr %44, i32 0, i32 0
  %278 = load ptr, ptr %277, align 8
  %279 = getelementptr inbounds { ptr, i64 }, ptr %44, i32 0, i32 1
  %280 = load i64, ptr %279, align 8
  call void @_ZN12_GLOBAL__N_111LoadSamplesEN2al4spanIfLm18446744073709551615EEEPKvmm10DevFmtType(ptr %278, i64 %280, ptr noundef %274, i64 noundef 0, i64 noundef 1, i8 noundef zeroext %276) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #8
  %281 = call ptr @_ZNK2al4spanIfLm1024EE5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %28) #8
  %282 = getelementptr inbounds %"class.al::ptr_wrapper.14", ptr %48, i32 0, i32 0
  store ptr %281, ptr %282, align 8
  %283 = load i32, ptr %38, align 4, !tbaa !9
  %284 = zext i32 %283 to i64
  %285 = call ptr @_ZN2alplERKNS_11ptr_wrapperIPfEEl(ptr noundef nonnull align 8 dereferenceable(8) %48, i64 noundef %284) #8
  %286 = getelementptr inbounds %"class.al::ptr_wrapper.14", ptr %47, i32 0, i32 0
  store ptr %285, ptr %286, align 8
  %287 = load i32, ptr %39, align 4, !tbaa !9
  %288 = getelementptr inbounds %struct.SampleConverter, ptr %62, i32 0, i32 12
  %289 = load i64, ptr %41, align 8, !tbaa !27
  %290 = call noundef nonnull align 16 dereferenceable(192) ptr @_ZN2al9FlexArrayIN15SampleConverter11ChanSamplesELm16EEixEm(ptr noundef nonnull align 16 dereferenceable(16) %288, i64 noundef %289) #8
  %291 = getelementptr inbounds %"struct.SampleConverter::ChanSamples", ptr %290, i32 0, i32 0
  %292 = call noundef ptr @_ZNSt5arrayIfLm48EE5beginEv(ptr noundef nonnull align 4 dereferenceable(192) %291) #10
  %293 = getelementptr inbounds %"class.al::ptr_wrapper.14", ptr %47, i32 0, i32 0
  %294 = load ptr, ptr %293, align 8
  %295 = invoke noundef ptr @_ZSt6copy_nIN2al11ptr_wrapperIPfEEjS2_ET1_T_T0_S4_(ptr %294, i32 noundef %287, ptr noundef %292)
          to label %296 unwind label %364

296:                                              ; preds = %273
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #8
  store ptr %295, ptr %46, align 8, !tbaa !5
  %297 = load ptr, ptr %46, align 8, !tbaa !5
  %298 = getelementptr inbounds %struct.SampleConverter, ptr %62, i32 0, i32 12
  %299 = load i64, ptr %41, align 8, !tbaa !27
  %300 = call noundef nonnull align 16 dereferenceable(192) ptr @_ZN2al9FlexArrayIN15SampleConverter11ChanSamplesELm16EEixEm(ptr noundef nonnull align 16 dereferenceable(16) %298, i64 noundef %299) #8
  %301 = getelementptr inbounds %"struct.SampleConverter::ChanSamples", ptr %300, i32 0, i32 0
  %302 = call noundef ptr @_ZNSt5arrayIfLm48EE3endEv(ptr noundef nonnull align 4 dereferenceable(192) %301) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #8
  store float 0.000000e+00, ptr %49, align 4, !tbaa !34
  invoke void @_ZSt4fillIPffEvT_S1_RKT0_(ptr noundef %297, ptr noundef %302, ptr noundef nonnull align 4 dereferenceable(4) %49)
          to label %303 unwind label %368

303:                                              ; preds = %296
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #8
  %304 = getelementptr inbounds %struct.SampleConverter, ptr %62, i32 0, i32 8
  %305 = load ptr, ptr %304, align 16, !tbaa !36
  %306 = getelementptr inbounds %struct.SampleConverter, ptr %62, i32 0, i32 7
  call void @_ZN2al4spanIKfLm18446744073709551615EEC2IfLm1024ETnNSt9enable_ifIXaasr7detail_E19is_array_compatibleIT_S1_Eoontsr3std7is_sameIS1_S5_EE5valueneL_ZNS2_6extentEET0_EbE4typeELb1EEERKNS0_IS5_XT0_EEE(ptr noundef nonnull align 8 dereferenceable(16) %50, ptr noundef nonnull align 8 dereferenceable(8) %28) #8
  %307 = load i32, ptr %30, align 4, !tbaa !9
  %308 = load i32, ptr %13, align 4, !tbaa !9
  %309 = load i32, ptr %32, align 4, !tbaa !9
  %310 = zext i32 %309 to i64
  %311 = call { ptr, i64 } @_ZNK2al4spanIfLm1024EE5firstEm(ptr noundef nonnull align 8 dereferenceable(8) %29, i64 noundef %310) #8
  %312 = getelementptr inbounds { ptr, i64 }, ptr %51, i32 0, i32 0
  %313 = extractvalue { ptr, i64 } %311, 0
  store ptr %313, ptr %312, align 8
  %314 = getelementptr inbounds { ptr, i64 }, ptr %51, i32 0, i32 1
  %315 = extractvalue { ptr, i64 } %311, 1
  store i64 %315, ptr %314, align 8
  %316 = getelementptr inbounds { ptr, i64 }, ptr %50, i32 0, i32 0
  %317 = load ptr, ptr %316, align 8
  %318 = getelementptr inbounds { ptr, i64 }, ptr %50, i32 0, i32 1
  %319 = load i64, ptr %318, align 8
  invoke void %305(ptr noundef %306, ptr %317, i64 %319, i32 noundef %307, i32 noundef %308, ptr noundef byval(%"class.al::span.12") align 8 %51)
          to label %320 unwind label %372

320:                                              ; preds = %303
  call void @llvm.lifetime.start.p0(i64 16, ptr %52) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %53) #8
  %321 = load i64, ptr %41, align 8, !tbaa !27
  %322 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK2al4spanIKPvLm18446744073709551615EEixEm(ptr noundef nonnull align 8 dereferenceable(16) %12, i64 noundef %321)
          to label %323 unwind label %376

323:                                              ; preds = %320
  %324 = load ptr, ptr %322, align 8, !tbaa !5
  %325 = getelementptr inbounds %struct.SampleConverter, ptr %62, i32 0, i32 3
  %326 = load i32, ptr %325, align 8, !tbaa !37
  %327 = zext i32 %326 to i64
  %328 = load i32, ptr %10, align 4, !tbaa !9
  %329 = zext i32 %328 to i64
  %330 = mul i64 %327, %329
  invoke void @_ZN2al4spanISt4byteLm18446744073709551615EEC2IPS1_EET_m(ptr noundef nonnull align 8 dereferenceable(16) %53, ptr noundef %324, i64 noundef %330)
          to label %331 unwind label %376

331:                                              ; preds = %323
  %332 = load i32, ptr %16, align 4, !tbaa !9
  %333 = zext i32 %332 to i64
  %334 = getelementptr inbounds %struct.SampleConverter, ptr %62, i32 0, i32 3
  %335 = load i32, ptr %334, align 8, !tbaa !37
  %336 = zext i32 %335 to i64
  %337 = mul i64 %333, %336
  %338 = call { ptr, i64 } @_ZNK2al4spanISt4byteLm18446744073709551615EE7subspanEmm(ptr noundef nonnull align 8 dereferenceable(16) %53, i64 noundef %337, i64 noundef -1) #8
  %339 = getelementptr inbounds { ptr, i64 }, ptr %52, i32 0, i32 0
  %340 = extractvalue { ptr, i64 } %338, 0
  store ptr %340, ptr %339, align 8
  %341 = getelementptr inbounds { ptr, i64 }, ptr %52, i32 0, i32 1
  %342 = extractvalue { ptr, i64 } %338, 1
  store i64 %342, ptr %341, align 8
  call void @llvm.lifetime.end.p0(i64 16, ptr %53) #8
  %343 = call noundef ptr @_ZNK2al4spanISt4byteLm18446744073709551615EE4dataEv(ptr noundef nonnull align 8 dereferenceable(16) %52) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %55) #8
  %344 = load i32, ptr %32, align 4, !tbaa !9
  %345 = zext i32 %344 to i64
  %346 = call { ptr, i64 } @_ZNK2al4spanIfLm1024EE5firstEm(ptr noundef nonnull align 8 dereferenceable(8) %29, i64 noundef %345) #8
  %347 = getelementptr inbounds { ptr, i64 }, ptr %55, i32 0, i32 0
  %348 = extractvalue { ptr, i64 } %346, 0
  store ptr %348, ptr %347, align 8
  %349 = getelementptr inbounds { ptr, i64 }, ptr %55, i32 0, i32 1
  %350 = extractvalue { ptr, i64 } %346, 1
  store i64 %350, ptr %349, align 8
  call void @_ZN2al4spanIKfLm18446744073709551615EEC2IfLm18446744073709551615ETnNSt9enable_ifIXaasr7detail_E19is_array_compatibleIT_S1_Eoontsr3std7is_sameIS1_S5_EE5valueneL_ZNS2_6extentEET0_EbE4typeELb1EEERKNS0_IS5_XT0_EEE(ptr noundef nonnull align 8 dereferenceable(16) %54, ptr noundef nonnull align 8 dereferenceable(16) %55) #8
  %351 = getelementptr inbounds %struct.SampleConverter, ptr %62, i32 0, i32 1
  %352 = load i8, ptr %351, align 1, !tbaa !38
  %353 = getelementptr inbounds { ptr, i64 }, ptr %54, i32 0, i32 0
  %354 = load ptr, ptr %353, align 8
  %355 = getelementptr inbounds { ptr, i64 }, ptr %54, i32 0, i32 1
  %356 = load i64, ptr %355, align 8
  call void @_ZN12_GLOBAL__N_112StoreSamplesEPvN2al4spanIKfLm18446744073709551615EEEmm10DevFmtType(ptr noundef %343, ptr %354, i64 %356, i64 noundef 0, i64 noundef 1, i8 noundef zeroext %352) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  br label %357

357:                                              ; preds = %331
  %358 = load i64, ptr %41, align 8, !tbaa !27
  %359 = add i64 %358, 1
  store i64 %359, ptr %41, align 8, !tbaa !27
  br label %242, !llvm.loop !39

360:                                              ; preds = %270, %264, %252
  %361 = landingpad { ptr, i32 }
          cleanup
  %362 = extractvalue { ptr, i32 } %361, 0
  store ptr %362, ptr %20, align 8
  %363 = extractvalue { ptr, i32 } %361, 1
  store i32 %363, ptr %21, align 4
  br label %381

364:                                              ; preds = %273
  %365 = landingpad { ptr, i32 }
          cleanup
  %366 = extractvalue { ptr, i32 } %365, 0
  store ptr %366, ptr %20, align 8
  %367 = extractvalue { ptr, i32 } %365, 1
  store i32 %367, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #8
  br label %380

368:                                              ; preds = %296
  %369 = landingpad { ptr, i32 }
          cleanup
  %370 = extractvalue { ptr, i32 } %369, 0
  store ptr %370, ptr %20, align 8
  %371 = extractvalue { ptr, i32 } %369, 1
  store i32 %371, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #8
  br label %380

372:                                              ; preds = %303
  %373 = landingpad { ptr, i32 }
          cleanup
  %374 = extractvalue { ptr, i32 } %373, 0
  store ptr %374, ptr %20, align 8
  %375 = extractvalue { ptr, i32 } %373, 1
  store i32 %375, ptr %21, align 4
  br label %380

376:                                              ; preds = %323, %320
  %377 = landingpad { ptr, i32 }
          cleanup
  %378 = extractvalue { ptr, i32 } %377, 0
  store ptr %378, ptr %20, align 8
  %379 = extractvalue { ptr, i32 } %377, 1
  store i32 %379, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %53) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #8
  br label %380

380:                                              ; preds = %376, %372, %368, %364
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  br label %381

381:                                              ; preds = %380, %360
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #8
  br label %438

382:                                              ; preds = %247
  %383 = load i32, ptr %39, align 4, !tbaa !9
  %384 = getelementptr inbounds %struct.SampleConverter, ptr %62, i32 0, i32 4
  store i32 %383, ptr %384, align 4, !tbaa !26
  %385 = load i32, ptr %37, align 4, !tbaa !9
  %386 = and i32 %385, 65535
  %387 = getelementptr inbounds %struct.SampleConverter, ptr %62, i32 0, i32 5
  store i32 %386, ptr %387, align 16, !tbaa !32
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #8
  %388 = load i32, ptr %38, align 4, !tbaa !9
  %389 = getelementptr inbounds %struct.SampleConverter, ptr %62, i32 0, i32 4
  %390 = load i32, ptr %389, align 4, !tbaa !26
  %391 = add i32 %388, %390
  %392 = load i32, ptr %17, align 4, !tbaa !9
  %393 = sub i32 %391, %392
  store i32 %393, ptr %57, align 4, !tbaa !9
  %394 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %14, ptr noundef nonnull align 4 dereferenceable(4) %57)
          to label %395 unwind label %429

395:                                              ; preds = %382
  %396 = load i32, ptr %394, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #8
  store i32 %396, ptr %56, align 4, !tbaa !9
  %397 = call ptr @_ZNK2al4spanIPKvLm18446744073709551615EE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %11) #8
  %398 = getelementptr inbounds %"class.al::ptr_wrapper.19", ptr %58, i32 0, i32 0
  store ptr %397, ptr %398, align 8
  %399 = call ptr @_ZNK2al4spanIPKvLm18446744073709551615EE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %11) #8
  %400 = getelementptr inbounds %"class.al::ptr_wrapper.19", ptr %59, i32 0, i32 0
  store ptr %399, ptr %400, align 8
  %401 = getelementptr inbounds %class.anon.18, ptr %60, i32 0, i32 0
  store ptr %62, ptr %401, align 8, !tbaa !40
  %402 = getelementptr inbounds %class.anon.18, ptr %60, i32 0, i32 1
  %403 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %403, ptr %402, align 8, !tbaa !42
  %404 = getelementptr inbounds %class.anon.18, ptr %60, i32 0, i32 2
  %405 = load i32, ptr %56, align 4, !tbaa !9
  store i32 %405, ptr %404, align 4, !tbaa !43
  %406 = getelementptr inbounds %"class.al::ptr_wrapper.19", ptr %58, i32 0, i32 0
  %407 = load ptr, ptr %406, align 8
  %408 = getelementptr inbounds %"class.al::ptr_wrapper.19", ptr %59, i32 0, i32 0
  %409 = load ptr, ptr %408, align 8
  %410 = getelementptr inbounds { ptr, i64 }, ptr %60, i32 0, i32 0
  %411 = load ptr, ptr %410, align 8
  %412 = getelementptr inbounds { ptr, i64 }, ptr %60, i32 0, i32 1
  %413 = load i64, ptr %412, align 8
  %414 = invoke { ptr, i64 } @"_ZSt8for_eachIN2al11ptr_wrapperIPPKvEEZN15SampleConverter13convertPlanarES4_PjPKPvjE3$_0ET0_T_SD_SC_"(ptr %407, ptr %409, ptr %411, i64 %413)
          to label %415 unwind label %433

415:                                              ; preds = %395
  %416 = getelementptr inbounds { ptr, i64 }, ptr %61, i32 0, i32 0
  %417 = extractvalue { ptr, i64 } %414, 0
  store ptr %417, ptr %416, align 8
  %418 = getelementptr inbounds { ptr, i64 }, ptr %61, i32 0, i32 1
  %419 = extractvalue { ptr, i64 } %414, 1
  store i64 %419, ptr %418, align 8
  %420 = load i32, ptr %56, align 4, !tbaa !9
  %421 = load i32, ptr %14, align 4, !tbaa !9
  %422 = sub i32 %421, %420
  store i32 %422, ptr %14, align 4, !tbaa !9
  %423 = load i32, ptr %32, align 4, !tbaa !9
  %424 = load i32, ptr %16, align 4, !tbaa !9
  %425 = add i32 %424, %423
  store i32 %425, ptr %16, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  store i32 0, ptr %27, align 4
  br label %426

426:                                              ; preds = %415, %167
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  %427 = load i32, ptr %27, align 4
  switch i32 %427, label %450 [
    i32 0, label %428
    i32 3, label %441
  ]

428:                                              ; preds = %426
  br label %73, !llvm.loop !44

429:                                              ; preds = %382
  %430 = landingpad { ptr, i32 }
          cleanup
  %431 = extractvalue { ptr, i32 } %430, 0
  store ptr %431, ptr %20, align 8
  %432 = extractvalue { ptr, i32 } %430, 1
  store i32 %432, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #8
  br label %437

433:                                              ; preds = %395
  %434 = landingpad { ptr, i32 }
          cleanup
  %435 = extractvalue { ptr, i32 } %434, 0
  store ptr %435, ptr %20, align 8
  %436 = extractvalue { ptr, i32 } %434, 1
  store i32 %436, ptr %21, align 4
  br label %437

437:                                              ; preds = %433, %429
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #8
  br label %438

438:                                              ; preds = %437, %381, %248
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #8
  br label %439

439:                                              ; preds = %438, %228, %224
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  br label %440

440:                                              ; preds = %439, %166, %104
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #8
  call void @_ZN6FPUCtlD2Ev(ptr noundef nonnull align 4 dereferenceable(5) %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %11) #8
  br label %445

441:                                              ; preds = %426, %80
  %442 = load i32, ptr %14, align 4, !tbaa !9
  %443 = load ptr, ptr %8, align 8, !tbaa !5
  store i32 %442, ptr %443, align 4, !tbaa !9
  %444 = load i32, ptr %16, align 4, !tbaa !9
  store i32 1, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #8
  call void @_ZN6FPUCtlD2Ev(ptr noundef nonnull align 4 dereferenceable(5) %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %11) #8
  ret i32 %444

445:                                              ; preds = %440
  %446 = load ptr, ptr %20, align 8
  %447 = load i32, ptr %21, align 4
  %448 = insertvalue { ptr, i32 } poison, ptr %446, 0
  %449 = insertvalue { ptr, i32 } %448, i32 %447, 1
  resume { ptr, i32 } %449

450:                                              ; preds = %426
  unreachable
}

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { ptr, i64 } @_ZNK2al4spanIfLm1024EE5firstEm(ptr noundef nonnull align 8 dereferenceable(8), i64 noundef) #1 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden { ptr, i64 } @"_ZSt8for_eachIN2al11ptr_wrapperIPPKvEEZN15SampleConverter13convertPlanarES4_PjPKPvjE3$_0ET0_T_SD_SC_"(ptr, ptr, ptr, i64) #2

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

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

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

!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 20}
!12 = !{!"_ZTS15SampleConverter", !13, i64 0, !13, i64 1, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !14, i64 24, !6, i64 64, !21, i64 80, !21, i64 4176, !22, i64 8272}
!13 = !{!"_ZTS10DevFmtType", !7, i64 0}
!14 = !{!"_ZTSSt7variantIJSt9monostate10CubicState10BsincStateEE", !15, i64 0}
!15 = !{!"_ZTSNSt8__detail9__variant13_Variant_baseIJSt9monostate10CubicState10BsincStateEEE", !16, i64 0}
!16 = !{!"_ZTSNSt8__detail9__variant17_Move_assign_baseILb1EJSt9monostate10CubicState10BsincStateEEE", !17, i64 0}
!17 = !{!"_ZTSNSt8__detail9__variant17_Copy_assign_baseILb1EJSt9monostate10CubicState10BsincStateEEE", !18, i64 0}
!18 = !{!"_ZTSNSt8__detail9__variant15_Move_ctor_baseILb1EJSt9monostate10CubicState10BsincStateEEE", !19, i64 0}
!19 = !{!"_ZTSNSt8__detail9__variant15_Copy_ctor_baseILb1EJSt9monostate10CubicState10BsincStateEEE", !20, i64 0}
!20 = !{!"_ZTSNSt8__detail9__variant16_Variant_storageILb1EJSt9monostate10CubicState10BsincStateEEE", !7, i64 0, !7, i64 32}
!21 = !{!"_ZTSSt5arrayIfLm1024EE", !7, i64 0}
!22 = !{!"_ZTSN2al9FlexArrayIN15SampleConverter11ChanSamplesELm16EEE", !23, i64 0}
!23 = !{!"_ZTSN2al16FlexArrayStorageIN15SampleConverter11ChanSamplesELm16ELb1EEE", !24, i64 0}
!24 = !{!"_ZTSN2al4spanIN15SampleConverter11ChanSamplesELm18446744073709551615EEE", !6, i64 0, !25, i64 8}
!25 = !{!"long", !7, i64 0}
!26 = !{!12, !10, i64 12}
!27 = !{!25, !25, i64 0}
!28 = !{!12, !10, i64 4}
!29 = !{!12, !13, i64 0}
!30 = distinct !{!30, !31}
!31 = !{!"llvm.loop.mustprogress"}
!32 = !{!12, !10, i64 16}
!33 = !{i64 0, i64 8, !5}
!34 = !{!35, !35, i64 0}
!35 = !{!"float", !7, i64 0}
!36 = !{!12, !6, i64 64}
!37 = !{!12, !10, i64 8}
!38 = !{!12, !13, i64 1}
!39 = distinct !{!39, !31}
!40 = !{!41, !6, i64 0}
!41 = !{!"_ZTSZN15SampleConverter13convertPlanarEPPKvPjPKPvjE3$_0", !6, i64 0, !10, i64 8, !10, i64 12}
!42 = !{!41, !10, i64 8}
!43 = !{!41, !10, i64 12}
!44 = distinct !{!44, !31}


; 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::span.15" = type { ptr, i64 }
%"class.al::span.16" = type { ptr, i64 }
%class.FPUCtl = type <{ i32, i8, [3 x i8] }>
%"class.al::span.10" = type { ptr, i64 }
%"class.al::span.13" = type { ptr }
%"class.al::span.17" = type { ptr }
%"class.al::span.12" = type { ptr, i64 }
%"class.al::ptr_wrapper.14" = type { ptr }
%"class.al::span.6" = type { ptr, i64 }
%"class.al::span.11" = type { ptr, i64 }

@.str = external hidden unnamed_addr constant [33 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [94 x i8], align 1
@_ZL19MaxResamplerPadding = external hidden constant i32, align 4
@__PRETTY_FUNCTION__._ZN15SampleConverter13convertPlanarEPPKvPjPKPvj = external hidden unnamed_addr constant [80 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_Zli4_u64y(i64 noundef) local_unnamed_addr #1

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZN12_GLOBAL__N_111LoadSamplesEN2al4spanIfLm18446744073709551615EEEPKvmm10DevFmtType(ptr, i64, ptr noundef, i64 noundef, i64 noundef, i8 noundef zeroext) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 16 dereferenceable(192) ptr @_ZN2al9FlexArrayIN15SampleConverter11ChanSamplesELm16EEixEm(ptr noundef nonnull align 16 dereferenceable(16), i64 noundef) local_unnamed_addr #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { ptr, i64 } @_ZNK2al4spanIfLm48EE7subspanEmm(ptr noundef nonnull align 8 dereferenceable(8), i64 noundef, i64 noundef) local_unnamed_addr #1 align 2

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local ptr @_ZSt6copy_nIPKfjN2al11ptr_wrapperIPfEEET1_T_T0_S6_(ptr noundef, i32 noundef, ptr) local_unnamed_addr #5

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZSt6copy_nIN2al11ptr_wrapperIPfEEjS2_ET1_T_T0_S4_(ptr, i32 noundef, ptr noundef) local_unnamed_addr #5

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

; Function Attrs: mustprogress nofree nosync nounwind willreturn memory(none) uwtable
declare dso_local noundef ptr @_ZNSt5arrayIfLm48EE5beginEv(ptr noundef nonnull align 4 dereferenceable(192)) local_unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4fillIPffEvT_S1_RKT0_(ptr noundef, ptr noundef, ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #5

; Function Attrs: mustprogress nofree nosync nounwind willreturn memory(none) uwtable
declare dso_local noundef ptr @_ZNSt5arrayIfLm48EE3endEv(ptr noundef nonnull align 4 dereferenceable(192)) local_unnamed_addr #6 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZN12_GLOBAL__N_112StoreSamplesEPvN2al4spanIKfLm18446744073709551615EEEmm10DevFmtType(ptr noundef, ptr, i64, i64 noundef, i64 noundef, i8 noundef zeroext) local_unnamed_addr #1

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { ptr, i64 } @_ZNK2al4spanIKSt4byteLm18446744073709551615EE7subspanEmm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef, i64 noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { ptr, i64 } @_ZNK2al4spanISt4byteLm18446744073709551615EE7subspanEmm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef, i64 noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN15SampleConverter13convertPlanarEPPKvPjPKPvj(ptr noundef nonnull align 16 dereferenceable(8288) %0, ptr noundef %1, ptr nocapture noundef %2, ptr noundef %3, i32 noundef %4) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca %"class.al::span.15", align 8
  %7 = alloca %"class.al::span.16", align 8
  %8 = alloca i32, align 4
  %9 = alloca %class.FPUCtl, align 4
  %10 = alloca i32, align 4
  %11 = alloca %"class.al::span.10", align 8
  %12 = alloca %"class.al::span.13", align 8
  %13 = alloca %"class.al::span.10", align 8
  %14 = alloca %"class.al::span.17", align 8
  %15 = alloca %"class.al::span.17", align 8
  %16 = alloca i32, align 4
  %17 = alloca i64, align 8
  %18 = alloca i64, align 8
  %19 = alloca i64, align 8
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca %"class.al::span.12", align 8
  %23 = alloca %"class.al::ptr_wrapper.14", align 8
  %24 = alloca float, align 4
  %25 = alloca %"class.al::span.6", align 8
  %26 = alloca %"class.al::span.12", align 8
  %27 = alloca %"class.al::span.11", align 8
  %28 = alloca %"class.al::span.11", align 8
  %29 = alloca %"class.al::span.6", align 8
  %30 = alloca %"class.al::span.12", align 8
  %31 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #7
  %32 = getelementptr inbounds i8, ptr %0, i64 8272
  %33 = tail call noundef i64 @_ZNK2al9FlexArrayIN15SampleConverter11ChanSamplesELm16EE4sizeEv(ptr noundef nonnull align 16 dereferenceable(16) %32) #7
  call void @_ZN2al4spanIPKvLm18446744073709551615EEC2IPS2_EET_m(ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef %1, i64 noundef %33)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #7
  %34 = call noundef i64 @_ZNK2al9FlexArrayIN15SampleConverter11ChanSamplesELm16EE4sizeEv(ptr noundef nonnull align 16 dereferenceable(16) %32) #7
  call void @_ZN2al4spanIKPvLm18446744073709551615EEC2IPS2_EET_m(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef %3, i64 noundef %34)
  %35 = getelementptr inbounds i8, ptr %0, i64 20
  %36 = load i32, ptr %35, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #7
  %37 = load i32, ptr %2, align 4, !tbaa !24
  store i32 %37, ptr %8, align 4, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #7
  call void @_ZN6FPUCtlC2Ev(ptr noundef nonnull align 4 dereferenceable(5) %9) #7
  %38 = icmp ne i32 %4, 0
  %39 = icmp ne i32 %37, 0
  %40 = select i1 %38, i1 %39, i1 false
  br i1 %40, label %.lr.ph136, label %.loopexit

.lr.ph136:                                        ; preds = %5
  %41 = getelementptr inbounds i8, ptr %0, i64 12
  %42 = getelementptr inbounds i8, ptr %0, i64 80
  %43 = getelementptr inbounds i8, ptr %0, i64 4176
  %44 = getelementptr inbounds i8, ptr %0, i64 16
  %45 = zext i32 %36 to i64
  %46 = add nsw i64 %45, -3145729
  %47 = getelementptr inbounds i8, ptr %22, i64 8
  %48 = getelementptr inbounds i8, ptr %0, i64 64
  %49 = getelementptr inbounds i8, ptr %0, i64 24
  %50 = getelementptr inbounds i8, ptr %26, i64 8
  %51 = getelementptr inbounds i8, ptr %25, i64 8
  %52 = getelementptr inbounds i8, ptr %0, i64 8
  %53 = zext i32 %4 to i64
  %54 = getelementptr inbounds i8, ptr %27, i64 8
  %55 = getelementptr inbounds i8, ptr %30, i64 8
  %56 = getelementptr inbounds i8, ptr %0, i64 1
  %57 = getelementptr inbounds i8, ptr %29, i64 8
  br label %58

58:                                               ; preds = %.lr.ph136, %197
  %.0134 = phi i32 [ 0, %.lr.ph136 ], [ %201, %197 ]
  %59 = load i32, ptr %41, align 4, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #7
  %60 = sub i32 1024, %59
  store i32 %60, ptr %10, align 4, !tbaa !24
  %61 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %8, ptr noundef nonnull align 4 dereferenceable(4) %10)
  %62 = load i32, ptr %61, align 4, !tbaa !24
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #7
  %63 = icmp ugt i32 %59, 47
  %64 = sub nuw nsw i32 48, %59
  %.not = icmp ult i32 %64, %62
  %or.cond = select i1 %63, i1 true, i1 %.not
  br i1 %or.cond, label %96, label %.preheader

.preheader:                                       ; preds = %58
  %65 = call noundef i64 @_ZNK2al9FlexArrayIN15SampleConverter11ChanSamplesELm16EE4sizeEv(ptr noundef nonnull align 16 dereferenceable(16) %32) #7
  %.not139 = icmp eq i64 %65, 0
  br i1 %.not139, label %.thread, label %.lr.ph138

.lr.ph138:                                        ; preds = %.preheader
  %66 = getelementptr inbounds i8, ptr %0, i64 4
  %67 = zext nneg i32 %59 to i64
  %68 = zext nneg i32 %62 to i64
  %69 = getelementptr inbounds i8, ptr %13, i64 8
  br label %71

.thread:                                          ; preds = %71, %.preheader
  %70 = add nuw nsw i32 %62, %59
  store i32 %70, ptr %41, align 4, !tbaa !25
  store i32 0, ptr %8, align 4, !tbaa !24
  br label %.loopexit

71:                                               ; preds = %.lr.ph138, %71
  %.084137 = phi i64 [ 0, %.lr.ph138 ], [ %93, %71 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #7
  %72 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK2al4spanIPKvLm18446744073709551615EEixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %.084137)
  %73 = load ptr, ptr %72, align 8, !tbaa !26
  %74 = load i32, ptr %8, align 4, !tbaa !24
  %75 = zext i32 %74 to i64
  %76 = load i32, ptr %66, align 4, !tbaa !27
  %77 = zext i32 %76 to i64
  %78 = mul nuw i64 %77, %75
  call void @_ZN2al4spanIKSt4byteLm18446744073709551615EEC2IPS2_EET_m(ptr noundef nonnull align 8 dereferenceable(16) %11, ptr noundef %73, i64 noundef %78)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #7
  %79 = call noundef nonnull align 16 dereferenceable(192) ptr @_ZN2al9FlexArrayIN15SampleConverter11ChanSamplesELm16EEixEm(ptr noundef nonnull align 16 dereferenceable(16) %32, i64 noundef %.084137) #7
  call void @_ZN2al4spanIfLm48EEC2ILm48EEERSt5arrayIfXT_EE(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 4 dereferenceable(192) %79) #7
  %80 = call { ptr, i64 } @_ZNK2al4spanIfLm48EE7subspanEmm(ptr noundef nonnull align 8 dereferenceable(8) %12, i64 noundef %67, i64 noundef %68) #7
  %81 = extractvalue { ptr, i64 } %80, 0
  %82 = extractvalue { ptr, i64 } %80, 1
  %83 = call noundef ptr @_ZNK2al4spanIKSt4byteLm18446744073709551615EE4dataEv(ptr noundef nonnull align 8 dereferenceable(16) %11) #7
  %84 = load i8, ptr %0, align 16, !tbaa !28
  call void @_ZN12_GLOBAL__N_111LoadSamplesEN2al4spanIfLm18446744073709551615EEEPKvmm10DevFmtType(ptr %81, i64 %82, ptr noundef %83, i64 noundef 0, i64 noundef 1, i8 noundef zeroext %84) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #7
  %85 = load i32, ptr %66, align 4, !tbaa !27
  %86 = zext i32 %85 to i64
  %87 = mul nuw nsw i64 %86, %68
  %88 = call { ptr, i64 } @_ZNK2al4spanIKSt4byteLm18446744073709551615EE7subspanEmm(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 noundef %87, i64 noundef -1) #7
  %89 = extractvalue { ptr, i64 } %88, 0
  store ptr %89, ptr %13, align 8
  %90 = extractvalue { ptr, i64 } %88, 1
  store i64 %90, ptr %69, align 8
  %91 = call noundef ptr @_ZNK2al4spanIKSt4byteLm18446744073709551615EE4dataEv(ptr noundef nonnull align 8 dereferenceable(16) %13) #7
  %92 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK2al4spanIPKvLm18446744073709551615EEixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %.084137)
  store ptr %91, ptr %92, align 8, !tbaa !26
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #7
  %93 = add nuw i64 %.084137, 1
  %94 = call noundef i64 @_ZNK2al9FlexArrayIN15SampleConverter11ChanSamplesELm16EE4sizeEv(ptr noundef nonnull align 16 dereferenceable(16) %32) #7
  %95 = icmp ult i64 %93, %94
  br i1 %95, label %71, label %.thread, !llvm.loop !29

96:                                               ; preds = %58
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #7
  call void @_ZN2al4spanIfLm1024EEC2ILm1024EEERSt5arrayIfXT_EE(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 4 dereferenceable(4096) %42) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #7
  call void @_ZN2al4spanIfLm1024EEC2ILm1024EEERSt5arrayIfXT_EE(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 4 dereferenceable(4096) %43) #7
  %97 = load i32, ptr %44, align 16, !tbaa !31
  %98 = zext i32 %59 to i64
  %99 = zext i32 %62 to i64
  %100 = add nuw nsw i64 %99, %98
  %101 = shl nuw nsw i64 %100, 16
  %102 = zext i32 %97 to i64
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #7
  %103 = add nsw i64 %46, %101
  %104 = sub nsw i64 %103, %102
  %105 = udiv i64 %104, %45
  store i64 %105, ptr %17, align 8, !tbaa !32
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #7
  %106 = call noundef i64 @_Zli4_u64y(i64 noundef 1) #7
  store i64 %106, ptr %18, align 8, !tbaa !32
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #7
  store i64 1024, ptr %19, align 8, !tbaa !32
  %107 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt5clampImERKT_S2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %19)
          to label %108 unwind label %119

108:                                              ; preds = %96
  %109 = load i64, ptr %107, align 8, !tbaa !32
  %110 = trunc i64 %109 to i32
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #7
  store i32 %110, ptr %16, align 4, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #7
  %111 = sub i32 %4, %.0134
  store i32 %111, ptr %20, align 4, !tbaa !24
  %112 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %16, ptr noundef nonnull align 4 dereferenceable(4) %20)
  %113 = load i32, ptr %112, align 4, !tbaa !24
  store i32 %113, ptr %16, align 4, !tbaa !24
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #7
  %114 = mul i32 %113, %36
  %115 = add i32 %114, %97
  %116 = lshr i32 %115, 16
  %117 = add i32 %62, %59
  %.not92 = icmp ult i32 %117, %116
  br i1 %.not92, label %118, label %121

118:                                              ; preds = %108
  call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 373, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN15SampleConverter13convertPlanarEPPKvPjPKPvj) #8
  unreachable

119:                                              ; preds = %96
  %120 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #7
  br label %207

121:                                              ; preds = %108
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #7
  %122 = sub i32 %117, %116
  store i32 %122, ptr %21, align 4, !tbaa !24
  %123 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %21, ptr noundef nonnull align 4 dereferenceable(4) @_ZL19MaxResamplerPadding)
  %124 = load i32, ptr %123, align 4, !tbaa !24
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #7
  %125 = call noundef i64 @_ZNK2al9FlexArrayIN15SampleConverter11ChanSamplesELm16EE4sizeEv(ptr noundef nonnull align 16 dereferenceable(16) %32) #7
  %.not140 = icmp eq i64 %125, 0
  br i1 %.not140, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %121
  %126 = zext nneg i32 %116 to i64
  %127 = zext i32 %.0134 to i64
  br label %137

._crit_edge:                                      ; preds = %165, %121
  store i32 %124, ptr %41, align 4, !tbaa !25
  %128 = and i32 %115, 65535
  store i32 %128, ptr %44, align 16, !tbaa !31
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %31) #7
  %129 = sub i32 %116, %59
  %130 = add i32 %129, %124
  store i32 %130, ptr %31, align 4, !tbaa !24
  %131 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %8, ptr noundef nonnull align 4 dereferenceable(4) %31)
  %132 = load i32, ptr %131, align 4, !tbaa !24
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #7
  %133 = call ptr @_ZNK2al4spanIPKvLm18446744073709551615EE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %6) #7
  %134 = call ptr @_ZNK2al4spanIPKvLm18446744073709551615EE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %6) #7
  %135 = load i32, ptr %8, align 4, !tbaa !24
  %.sroa.4.8.insert.ext = zext i32 %132 to i64
  %.sroa.4.8.insert.shift = shl nuw i64 %.sroa.4.8.insert.ext, 32
  %.sroa.2.8.insert.ext = zext i32 %135 to i64
  %.sroa.2.8.insert.insert = or disjoint i64 %.sroa.4.8.insert.shift, %.sroa.2.8.insert.ext
  %136 = invoke { ptr, i64 } @"_ZSt8for_eachIN2al11ptr_wrapperIPPKvEEZN15SampleConverter13convertPlanarES4_PjPKPvjE3$_0ET0_T_SD_SC_"(ptr %133, ptr %134, ptr nonnull %0, i64 %.sroa.2.8.insert.insert)
          to label %197 unwind label %205

137:                                              ; preds = %.lr.ph, %165
  %.086133 = phi i64 [ 0, %.lr.ph ], [ %186, %165 ]
  %138 = call noundef nonnull align 16 dereferenceable(192) ptr @_ZN2al9FlexArrayIN15SampleConverter11ChanSamplesELm16EEixEm(ptr noundef nonnull align 16 dereferenceable(16) %32, i64 noundef %.086133) #7
  %139 = call noundef ptr @_ZNKSt5arrayIfLm48EE6cbeginEv(ptr noundef nonnull align 4 dereferenceable(192) %138) #7
  %140 = call ptr @_ZNK2al4spanIfLm1024EE5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %14) #7
  %141 = invoke ptr @_ZSt6copy_nIPKfjN2al11ptr_wrapperIPfEEET1_T_T0_S6_(ptr noundef %139, i32 noundef %59, ptr %140)
          to label %142 unwind label %189

142:                                              ; preds = %137
  call void @_ZN2al4spanIfLm18446744073709551615EEC2INS_11ptr_wrapperIPfEEEET_m(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr %141, i64 noundef %99)
  %143 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK2al4spanIPKvLm18446744073709551615EEixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %.086133)
  %144 = load ptr, ptr %143, align 8, !tbaa !26
  %145 = load i8, ptr %0, align 16, !tbaa !28
  %146 = load ptr, ptr %22, align 8
  %147 = load i64, ptr %47, align 8
  call void @_ZN12_GLOBAL__N_111LoadSamplesEN2al4spanIfLm18446744073709551615EEEPKvmm10DevFmtType(ptr %146, i64 %147, ptr noundef %144, i64 noundef 0, i64 noundef 1, i8 noundef zeroext %145) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #7
  %148 = call ptr @_ZNK2al4spanIfLm1024EE5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %14) #7
  store ptr %148, ptr %23, align 8
  %149 = call ptr @_ZN2alplERKNS_11ptr_wrapperIPfEEl(ptr noundef nonnull align 8 dereferenceable(8) %23, i64 noundef %126) #7
  %150 = call noundef nonnull align 16 dereferenceable(192) ptr @_ZN2al9FlexArrayIN15SampleConverter11ChanSamplesELm16EEixEm(ptr noundef nonnull align 16 dereferenceable(16) %32, i64 noundef %.086133) #7
  %151 = call noundef ptr @_ZNSt5arrayIfLm48EE5beginEv(ptr noundef nonnull align 4 dereferenceable(192) %150) #9
  %152 = invoke noundef ptr @_ZSt6copy_nIN2al11ptr_wrapperIPfEEjS2_ET1_T_T0_S4_(ptr %149, i32 noundef %124, ptr noundef %151)
          to label %153 unwind label %191

153:                                              ; preds = %142
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #7
  %154 = call noundef nonnull align 16 dereferenceable(192) ptr @_ZN2al9FlexArrayIN15SampleConverter11ChanSamplesELm16EEixEm(ptr noundef nonnull align 16 dereferenceable(16) %32, i64 noundef %.086133) #7
  %155 = call noundef ptr @_ZNSt5arrayIfLm48EE3endEv(ptr noundef nonnull align 4 dereferenceable(192) %154) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #7
  store float 0.000000e+00, ptr %24, align 4, !tbaa !33
  invoke void @_ZSt4fillIPffEvT_S1_RKT0_(ptr noundef %152, ptr noundef %155, ptr noundef nonnull align 4 dereferenceable(4) %24)
          to label %156 unwind label %193

156:                                              ; preds = %153
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #7
  %157 = load ptr, ptr %48, align 16, !tbaa !35
  call void @_ZN2al4spanIKfLm18446744073709551615EEC2IfLm1024ETnNSt9enable_ifIXaasr7detail_E19is_array_compatibleIT_S1_Eoontsr3std7is_sameIS1_S5_EE5valueneL_ZNS2_6extentEET0_EbE4typeELb1EEERKNS0_IS5_XT0_EEE(ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef nonnull align 8 dereferenceable(8) %14) #7
  %158 = load i32, ptr %16, align 4, !tbaa !24
  %159 = zext i32 %158 to i64
  %160 = call { ptr, i64 } @_ZNK2al4spanIfLm1024EE5firstEm(ptr noundef nonnull align 8 dereferenceable(8) %15, i64 noundef %159) #7
  %161 = extractvalue { ptr, i64 } %160, 0
  store ptr %161, ptr %26, align 8
  %162 = extractvalue { ptr, i64 } %160, 1
  store i64 %162, ptr %50, align 8
  %163 = load ptr, ptr %25, align 8
  %164 = load i64, ptr %51, align 8
  invoke void %157(ptr noundef nonnull %49, ptr %163, i64 %164, i32 noundef %97, i32 noundef %36, ptr noundef nonnull byval(%"class.al::span.12") align 8 %26)
          to label %165 unwind label %195

165:                                              ; preds = %156
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %27) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %28) #7
  %166 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK2al4spanIKPvLm18446744073709551615EEixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %.086133)
  %167 = load ptr, ptr %166, align 8, !tbaa !26
  %168 = load i32, ptr %52, align 8, !tbaa !36
  %169 = zext i32 %168 to i64
  %170 = mul nuw i64 %169, %53
  call void @_ZN2al4spanISt4byteLm18446744073709551615EEC2IPS1_EET_m(ptr noundef nonnull align 8 dereferenceable(16) %28, ptr noundef %167, i64 noundef %170)
  %171 = load i32, ptr %52, align 8, !tbaa !36
  %172 = zext i32 %171 to i64
  %173 = mul nuw i64 %172, %127
  %174 = call { ptr, i64 } @_ZNK2al4spanISt4byteLm18446744073709551615EE7subspanEmm(ptr noundef nonnull align 8 dereferenceable(16) %28, i64 noundef %173, i64 noundef -1) #7
  %175 = extractvalue { ptr, i64 } %174, 0
  store ptr %175, ptr %27, align 8
  %176 = extractvalue { ptr, i64 } %174, 1
  store i64 %176, ptr %54, align 8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #7
  %177 = call noundef ptr @_ZNK2al4spanISt4byteLm18446744073709551615EE4dataEv(ptr noundef nonnull align 8 dereferenceable(16) %27) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %30) #7
  %178 = load i32, ptr %16, align 4, !tbaa !24
  %179 = zext i32 %178 to i64
  %180 = call { ptr, i64 } @_ZNK2al4spanIfLm1024EE5firstEm(ptr noundef nonnull align 8 dereferenceable(8) %15, i64 noundef %179) #7
  %181 = extractvalue { ptr, i64 } %180, 0
  store ptr %181, ptr %30, align 8
  %182 = extractvalue { ptr, i64 } %180, 1
  store i64 %182, ptr %55, align 8
  call void @_ZN2al4spanIKfLm18446744073709551615EEC2IfLm18446744073709551615ETnNSt9enable_ifIXaasr7detail_E19is_array_compatibleIT_S1_Eoontsr3std7is_sameIS1_S5_EE5valueneL_ZNS2_6extentEET0_EbE4typeELb1EEERKNS0_IS5_XT0_EEE(ptr noundef nonnull align 8 dereferenceable(16) %29, ptr noundef nonnull align 8 dereferenceable(16) %30) #7
  %183 = load i8, ptr %56, align 1, !tbaa !37
  %184 = load ptr, ptr %29, align 8
  %185 = load i64, ptr %57, align 8
  call void @_ZN12_GLOBAL__N_112StoreSamplesEPvN2al4spanIKfLm18446744073709551615EEEmm10DevFmtType(ptr noundef %177, ptr %184, i64 %185, i64 noundef 0, i64 noundef 1, i8 noundef zeroext %183) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %30) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #7
  %186 = add nuw i64 %.086133, 1
  %187 = call noundef i64 @_ZNK2al9FlexArrayIN15SampleConverter11ChanSamplesELm16EE4sizeEv(ptr noundef nonnull align 16 dereferenceable(16) %32) #7
  %188 = icmp ult i64 %186, %187
  br i1 %188, label %137, label %._crit_edge, !llvm.loop !38

189:                                              ; preds = %137
  %190 = landingpad { ptr, i32 }
          cleanup
  br label %207

191:                                              ; preds = %142
  %192 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #7
  br label %207

193:                                              ; preds = %153
  %194 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #7
  br label %207

195:                                              ; preds = %156
  %196 = landingpad { ptr, i32 }
          cleanup
  br label %207

197:                                              ; preds = %._crit_edge
  %198 = load i32, ptr %8, align 4, !tbaa !24
  %199 = sub i32 %198, %132
  store i32 %199, ptr %8, align 4, !tbaa !24
  %200 = load i32, ptr %16, align 4, !tbaa !24
  %201 = add i32 %200, %.0134
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #7
  %202 = icmp ult i32 %201, %4
  %203 = icmp ne i32 %199, 0
  %204 = select i1 %202, i1 %203, i1 false
  br i1 %204, label %58, label %.loopexit

205:                                              ; preds = %._crit_edge
  %206 = landingpad { ptr, i32 }
          cleanup
  br label %207

207:                                              ; preds = %205, %191, %193, %195, %189, %119
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %120, %119 ], [ %206, %205 ], [ %190, %189 ], [ %196, %195 ], [ %194, %193 ], [ %192, %191 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #7
  call void @_ZN6FPUCtlD2Ev(ptr noundef nonnull align 4 dereferenceable(5) %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #7
  resume { ptr, i32 } %.pn.pn.pn.pn

.loopexit:                                        ; preds = %197, %5, %.thread
  %208 = phi i32 [ 0, %.thread ], [ %37, %5 ], [ %199, %197 ]
  %.0109 = phi i32 [ %.0134, %.thread ], [ 0, %5 ], [ %201, %197 ]
  store i32 %208, ptr %2, align 4, !tbaa !24
  call void @_ZN6FPUCtlD2Ev(ptr noundef nonnull align 4 dereferenceable(5) %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #7
  ret i32 %.0109
}

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { ptr, i64 } @_ZNK2al4spanIfLm1024EE5firstEm(ptr noundef nonnull align 8 dereferenceable(8), i64 noundef) local_unnamed_addr #1 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden { ptr, i64 } @"_ZSt8for_eachIN2al11ptr_wrapperIPPKvEEZN15SampleConverter13convertPlanarES4_PjPKPvjE3$_0ET0_T_SD_SC_"(ptr, ptr, ptr, i64) local_unnamed_addr #2

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

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

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

!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, !10, i64 20}
!6 = !{!"_ZTS15SampleConverter", !7, i64 0, !7, i64 1, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !11, i64 24, !18, i64 64, !19, i64 80, !19, i64 4176, !20, i64 8272}
!7 = !{!"_ZTS10DevFmtType", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"_ZTSSt7variantIJSt9monostate10CubicState10BsincStateEE", !12, i64 0}
!12 = !{!"_ZTSNSt8__detail9__variant13_Variant_baseIJSt9monostate10CubicState10BsincStateEEE", !13, i64 0}
!13 = !{!"_ZTSNSt8__detail9__variant17_Move_assign_baseILb1EJSt9monostate10CubicState10BsincStateEEE", !14, i64 0}
!14 = !{!"_ZTSNSt8__detail9__variant17_Copy_assign_baseILb1EJSt9monostate10CubicState10BsincStateEEE", !15, i64 0}
!15 = !{!"_ZTSNSt8__detail9__variant15_Move_ctor_baseILb1EJSt9monostate10CubicState10BsincStateEEE", !16, i64 0}
!16 = !{!"_ZTSNSt8__detail9__variant15_Copy_ctor_baseILb1EJSt9monostate10CubicState10BsincStateEEE", !17, i64 0}
!17 = !{!"_ZTSNSt8__detail9__variant16_Variant_storageILb1EJSt9monostate10CubicState10BsincStateEEE", !8, i64 0, !8, i64 32}
!18 = !{!"any pointer", !8, i64 0}
!19 = !{!"_ZTSSt5arrayIfLm1024EE", !8, i64 0}
!20 = !{!"_ZTSN2al9FlexArrayIN15SampleConverter11ChanSamplesELm16EEE", !21, i64 0}
!21 = !{!"_ZTSN2al16FlexArrayStorageIN15SampleConverter11ChanSamplesELm16ELb1EEE", !22, i64 0}
!22 = !{!"_ZTSN2al4spanIN15SampleConverter11ChanSamplesELm18446744073709551615EEE", !18, i64 0, !23, i64 8}
!23 = !{!"long", !8, i64 0}
!24 = !{!10, !10, i64 0}
!25 = !{!6, !10, i64 12}
!26 = !{!18, !18, i64 0}
!27 = !{!6, !10, i64 4}
!28 = !{!6, !7, i64 0}
!29 = distinct !{!29, !30}
!30 = !{!"llvm.loop.mustprogress"}
!31 = !{!6, !10, i64 16}
!32 = !{!23, !23, i64 0}
!33 = !{!34, !34, i64 0}
!34 = !{!"float", !8, i64 0}
!35 = !{!6, !18, i64 64}
!36 = !{!6, !10, i64 8}
!37 = !{!6, !7, i64 1}
!38 = distinct !{!38, !30}


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